From b2762feb57bccc256b0ac2e2014e02f006975cb6 Mon Sep 17 00:00:00 2001 From: Superminaren Date: Sat, 16 May 2026 18:51:12 +0200 Subject: [PATCH] Current test suit --- hardware_test/.pio/build/project.checksum | 1 + .../.pio/build/rp2040_usb/.sconsign314.dblite | Bin 0 -> 309787 bytes .../FrameworkArduino/BluetoothDebug.cpp.o | Bin 0 -> 680 bytes .../rp2040_usb/FrameworkArduino/Bootsel.cpp.o | Bin 0 -> 1628 bytes .../FrameworkArduino/CoreMutex.cpp.o | Bin 0 -> 1304 bytes .../rp2040_usb/FrameworkArduino/FS.cpp.o | Bin 0 -> 19028 bytes .../FrameworkArduino/PIOProgram.cpp.o | Bin 0 -> 4976 bytes .../FrameworkArduino/RP2040Support.cpp.o | Bin 0 -> 992 bytes .../FrameworkArduino/Semihosting.cpp.o | Bin 0 -> 24936 bytes .../FrameworkArduino/SerialPIO.cpp.o | Bin 0 -> 11328 bytes .../FrameworkArduino/SerialUART.cpp.o | Bin 0 -> 11736 bytes .../FrameworkArduino/SerialUSB.cpp.o | Bin 0 -> 9372 bytes .../FrameworkArduino/StackThunk.cpp.o | Bin 0 -> 3260 bytes .../rp2040_usb/FrameworkArduino/Tone.cpp.o | Bin 0 -> 5544 bytes .../rp2040_usb/FrameworkArduino/USB.cpp.o | Bin 0 -> 13404 bytes .../rp2040_usb/FrameworkArduino/WMath.cpp.o | Bin 0 -> 1324 bytes .../FrameworkArduino/_freertos.cpp.o | Bin 0 -> 672 bytes .../FrameworkArduino/api/Common.cpp.o | Bin 0 -> 1148 bytes .../FrameworkArduino/api/IPAddress.cpp.o | Bin 0 -> 5892 bytes .../FrameworkArduino/api/PluggableUSB.cpp.o | Bin 0 -> 2640 bytes .../FrameworkArduino/api/Print.cpp.o | Bin 0 -> 11056 bytes .../FrameworkArduino/api/Stream.cpp.o | Bin 0 -> 5668 bytes .../FrameworkArduino/api/String.cpp.o | Bin 0 -> 22472 bytes .../FrameworkArduino/cyw43_wrappers.cpp.o | Bin 0 -> 680 bytes .../rp2040_usb/FrameworkArduino/delay.cpp.o | Bin 0 -> 1636 bytes .../FrameworkArduino/freertos/croutine.c.o | Bin 0 -> 672 bytes .../freertos/event_groups.c.o | Bin 0 -> 676 bytes .../freertos/freertos-lwip.cpp.o | Bin 0 -> 676 bytes .../freertos/freertos-main.cpp.o | Bin 0 -> 676 bytes .../FrameworkArduino/freertos/heap_3a.c.o | Bin 0 -> 668 bytes .../FrameworkArduino/freertos/list.c.o | Bin 0 -> 668 bytes .../freertos/lwip_freertos.c.o | Bin 0 -> 676 bytes .../freertos/mpu_wrappers_v2_asm.c.o | Bin 0 -> 680 bytes .../FrameworkArduino/freertos/port.c.o | Bin 0 -> 668 bytes .../FrameworkArduino/freertos/portASM.S.o | Bin 0 -> 544 bytes .../FrameworkArduino/freertos/portasm.c.o | Bin 0 -> 668 bytes .../FrameworkArduino/freertos/queue.c.o | Bin 0 -> 668 bytes .../freertos/stream_buffer.c.o | Bin 0 -> 676 bytes .../FrameworkArduino/freertos/tasks.c.o | Bin 0 -> 668 bytes .../FrameworkArduino/freertos/timers.c.o | Bin 0 -> 668 bytes .../freertos/variantHooks.cpp.o | Bin 0 -> 676 bytes .../FrameworkArduino/gprof_gmon.c.o | Bin 0 -> 4456 bytes .../FrameworkArduino/gprof_shim.S.o | Bin 0 -> 788 bytes .../FrameworkArduino/libb64/cdecode.cpp.o | Bin 0 -> 2280 bytes .../FrameworkArduino/libb64/cencode.cpp.o | Bin 0 -> 2104 bytes .../rp2040_usb/FrameworkArduino/lock.cpp.o | Bin 0 -> 3456 bytes .../FrameworkArduino/lwip/src/api/api_lib.c.o | Bin 0 -> 668 bytes .../FrameworkArduino/lwip/src/api/api_msg.c.o | Bin 0 -> 668 bytes .../FrameworkArduino/lwip/src/api/err.c.o | Bin 0 -> 664 bytes .../FrameworkArduino/lwip/src/api/if_api.c.o | Bin 0 -> 668 bytes .../FrameworkArduino/lwip/src/api/netbuf.c.o | Bin 0 -> 668 bytes .../FrameworkArduino/lwip/src/api/netdb.c.o | Bin 0 -> 668 bytes .../lwip/src/api/netifapi.c.o | Bin 0 -> 672 bytes .../FrameworkArduino/lwip/src/api/sockets.c.o | Bin 0 -> 668 bytes .../FrameworkArduino/lwip/src/api/tcpip.c.o | Bin 0 -> 668 bytes .../src/apps/altcp_tls/altcp_tls_mbedtls.c.o | Bin 0 -> 680 bytes .../apps/altcp_tls/altcp_tls_mbedtls_mem.c.o | Bin 0 -> 684 bytes .../lwip/src/apps/lwiperf/lwiperf.c.o | Bin 0 -> 9560 bytes .../lwip/src/apps/mdns/mdns.c.o | Bin 0 -> 20740 bytes .../lwip/src/apps/mdns/mdns_domain.c.o | Bin 0 -> 6540 bytes .../lwip/src/apps/mdns/mdns_out.c.o | Bin 0 -> 8892 bytes .../lwip/src/apps/mqtt/mqtt.c.o | Bin 0 -> 10420 bytes .../lwip/src/apps/netbiosns/netbiosns.c.o | Bin 0 -> 2864 bytes .../lwip/src/apps/smtp/smtp.c.o | Bin 0 -> 11256 bytes .../lwip/src/apps/snmp/snmp_asn1.c.o | Bin 0 -> 672 bytes .../lwip/src/apps/snmp/snmp_core.c.o | Bin 0 -> 672 bytes .../lwip/src/apps/snmp/snmp_mib2.c.o | Bin 0 -> 672 bytes .../lwip/src/apps/snmp/snmp_mib2_icmp.c.o | Bin 0 -> 676 bytes .../src/apps/snmp/snmp_mib2_interfaces.c.o | Bin 0 -> 684 bytes .../lwip/src/apps/snmp/snmp_mib2_ip.c.o | Bin 0 -> 676 bytes .../lwip/src/apps/snmp/snmp_mib2_snmp.c.o | Bin 0 -> 676 bytes .../lwip/src/apps/snmp/snmp_mib2_system.c.o | Bin 0 -> 680 bytes .../lwip/src/apps/snmp/snmp_mib2_tcp.c.o | Bin 0 -> 676 bytes .../lwip/src/apps/snmp/snmp_mib2_udp.c.o | Bin 0 -> 676 bytes .../lwip/src/apps/snmp/snmp_msg.c.o | Bin 0 -> 672 bytes .../lwip/src/apps/snmp/snmp_netconn.c.o | Bin 0 -> 676 bytes .../lwip/src/apps/snmp/snmp_pbuf_stream.c.o | Bin 0 -> 680 bytes .../lwip/src/apps/snmp/snmp_raw.c.o | Bin 0 -> 672 bytes .../lwip/src/apps/snmp/snmp_scalar.c.o | Bin 0 -> 672 bytes .../src/apps/snmp/snmp_snmpv2_framework.c.o | Bin 0 -> 684 bytes .../lwip/src/apps/snmp/snmp_snmpv2_usm.c.o | Bin 0 -> 676 bytes .../lwip/src/apps/snmp/snmp_table.c.o | Bin 0 -> 672 bytes .../lwip/src/apps/snmp/snmp_threadsync.c.o | Bin 0 -> 676 bytes .../lwip/src/apps/snmp/snmp_traps.c.o | Bin 0 -> 672 bytes .../lwip/src/apps/snmp/snmpv3.c.o | Bin 0 -> 668 bytes .../lwip/src/apps/snmp/snmpv3_mbedtls.c.o | Bin 0 -> 676 bytes .../lwip/src/apps/sntp/sntp.c.o | Bin 0 -> 6764 bytes .../lwip/src/apps/tftp/tftp.c.o | Bin 0 -> 7032 bytes .../FrameworkArduino/lwip/src/core/altcp.c.o | Bin 0 -> 668 bytes .../lwip/src/core/altcp_alloc.c.o | Bin 0 -> 672 bytes .../lwip/src/core/altcp_tcp.c.o | Bin 0 -> 672 bytes .../FrameworkArduino/lwip/src/core/def.c.o | Bin 0 -> 2344 bytes .../FrameworkArduino/lwip/src/core/dns.c.o | Bin 0 -> 7104 bytes .../lwip/src/core/inet_chksum.c.o | Bin 0 -> 2488 bytes .../FrameworkArduino/lwip/src/core/init.c.o | Bin 0 -> 1144 bytes .../FrameworkArduino/lwip/src/core/ip.c.o | Bin 0 -> 776 bytes .../lwip/src/core/ipv4/acd.c.o | Bin 0 -> 664 bytes .../lwip/src/core/ipv4/autoip.c.o | Bin 0 -> 668 bytes .../lwip/src/core/ipv4/dhcp.c.o | Bin 0 -> 13512 bytes .../lwip/src/core/ipv4/etharp.c.o | Bin 0 -> 6072 bytes .../lwip/src/core/ipv4/icmp.c.o | Bin 0 -> 2764 bytes .../lwip/src/core/ipv4/igmp.c.o | Bin 0 -> 5376 bytes .../lwip/src/core/ipv4/ip4.c.o | Bin 0 -> 5076 bytes .../lwip/src/core/ipv4/ip4_addr.c.o | Bin 0 -> 3044 bytes .../lwip/src/core/ipv4/ip4_frag.c.o | Bin 0 -> 5212 bytes .../lwip/src/core/ipv6/dhcp6.c.o | Bin 0 -> 668 bytes .../lwip/src/core/ipv6/ethip6.c.o | Bin 0 -> 668 bytes .../lwip/src/core/ipv6/icmp6.c.o | Bin 0 -> 668 bytes .../lwip/src/core/ipv6/inet6.c.o | Bin 0 -> 668 bytes .../lwip/src/core/ipv6/ip6.c.o | Bin 0 -> 664 bytes .../lwip/src/core/ipv6/ip6_addr.c.o | Bin 0 -> 672 bytes .../lwip/src/core/ipv6/ip6_frag.c.o | Bin 0 -> 672 bytes .../lwip/src/core/ipv6/mld6.c.o | Bin 0 -> 668 bytes .../lwip/src/core/ipv6/nd6.c.o | Bin 0 -> 664 bytes .../FrameworkArduino/lwip/src/core/mem.c.o | Bin 0 -> 3340 bytes .../FrameworkArduino/lwip/src/core/memp.c.o | Bin 0 -> 7516 bytes .../FrameworkArduino/lwip/src/core/netif.c.o | Bin 0 -> 7544 bytes .../FrameworkArduino/lwip/src/core/pbuf.c.o | Bin 0 -> 9392 bytes .../FrameworkArduino/lwip/src/core/raw.c.o | Bin 0 -> 4288 bytes .../FrameworkArduino/lwip/src/core/stats.c.o | Bin 0 -> 668 bytes .../FrameworkArduino/lwip/src/core/sys.c.o | Bin 0 -> 664 bytes .../FrameworkArduino/lwip/src/core/tcp.c.o | Bin 0 -> 18096 bytes .../FrameworkArduino/lwip/src/core/tcp_in.c.o | Bin 0 -> 13064 bytes .../lwip/src/core/tcp_out.c.o | Bin 0 -> 10872 bytes .../lwip/src/core/timeouts.c.o | Bin 0 -> 4772 bytes .../FrameworkArduino/lwip/src/core/udp.c.o | Bin 0 -> 5956 bytes .../lwip/src/netif/bridgeif.c.o | Bin 0 -> 4316 bytes .../lwip/src/netif/bridgeif_fdb.c.o | Bin 0 -> 2232 bytes .../lwip/src/netif/ethernet.c.o | Bin 0 -> 1992 bytes .../lwip/src/netif/lowpan6.c.o | Bin 0 -> 668 bytes .../lwip/src/netif/lowpan6_ble.c.o | Bin 0 -> 672 bytes .../lwip/src/netif/lowpan6_common.c.o | Bin 0 -> 676 bytes .../lwip/src/netif/ppp/auth.c.o | Bin 0 -> 668 bytes .../lwip/src/netif/ppp/ccp.c.o | Bin 0 -> 664 bytes .../lwip/src/netif/ppp/chap-md5.c.o | Bin 0 -> 672 bytes .../lwip/src/netif/ppp/chap-new.c.o | Bin 0 -> 672 bytes .../lwip/src/netif/ppp/chap_ms.c.o | Bin 0 -> 668 bytes .../lwip/src/netif/ppp/demand.c.o | Bin 0 -> 668 bytes .../lwip/src/netif/ppp/eap.c.o | Bin 0 -> 664 bytes .../lwip/src/netif/ppp/ecp.c.o | Bin 0 -> 664 bytes .../lwip/src/netif/ppp/eui64.c.o | Bin 0 -> 668 bytes .../lwip/src/netif/ppp/fsm.c.o | Bin 0 -> 664 bytes .../lwip/src/netif/ppp/ipcp.c.o | Bin 0 -> 668 bytes .../lwip/src/netif/ppp/ipv6cp.c.o | Bin 0 -> 668 bytes .../lwip/src/netif/ppp/lcp.c.o | Bin 0 -> 664 bytes .../lwip/src/netif/ppp/magic.c.o | Bin 0 -> 668 bytes .../lwip/src/netif/ppp/mppe.c.o | Bin 0 -> 668 bytes .../lwip/src/netif/ppp/multilink.c.o | Bin 0 -> 672 bytes .../lwip/src/netif/ppp/polarssl/arc4.c.o | Bin 0 -> 668 bytes .../lwip/src/netif/ppp/polarssl/des.c.o | Bin 0 -> 664 bytes .../lwip/src/netif/ppp/polarssl/md4.c.o | Bin 0 -> 664 bytes .../lwip/src/netif/ppp/polarssl/md5.c.o | Bin 0 -> 664 bytes .../lwip/src/netif/ppp/polarssl/sha1.c.o | Bin 0 -> 668 bytes .../lwip/src/netif/ppp/ppp.c.o | Bin 0 -> 664 bytes .../lwip/src/netif/ppp/pppapi.c.o | Bin 0 -> 668 bytes .../lwip/src/netif/ppp/pppcrypt.c.o | Bin 0 -> 672 bytes .../lwip/src/netif/ppp/pppoe.c.o | Bin 0 -> 668 bytes .../lwip/src/netif/ppp/pppol2tp.c.o | Bin 0 -> 672 bytes .../lwip/src/netif/ppp/pppos.c.o | Bin 0 -> 668 bytes .../lwip/src/netif/ppp/upap.c.o | Bin 0 -> 668 bytes .../lwip/src/netif/ppp/utils.c.o | Bin 0 -> 668 bytes .../lwip/src/netif/ppp/vj.c.o | Bin 0 -> 664 bytes .../lwip/src/netif/slipif.c.o | Bin 0 -> 2288 bytes .../FrameworkArduino/lwip/src/netif/zepif.c.o | Bin 0 -> 668 bytes .../FrameworkArduino/lwip_wrap.cpp.o | Bin 0 -> 21460 bytes .../rp2040_usb/FrameworkArduino/main.cpp.o | Bin 0 -> 7960 bytes .../FrameworkArduino/malloc-lock.cpp.o | Bin 0 -> 2328 bytes .../rp2040_usb/FrameworkArduino/posix.cpp.o | Bin 0 -> 5204 bytes .../rp2040_usb/FrameworkArduino/psram.cpp.o | Bin 0 -> 668 bytes .../FrameworkArduino/rp2350-memcpy.S.o | Bin 0 -> 544 bytes .../sdkoverride/async_context_freertos.c.o | Bin 0 -> 684 bytes .../async_context_threadsafe_background.c.o | Bin 0 -> 11148 bytes .../sdkoverride/btstack_flash_bank.cpp.o | Bin 0 -> 684 bytes .../btstack_run_loop_async_context.cpp.o | Bin 0 -> 696 bytes .../sdkoverride/cyw43_arch_freertos.c.o | Bin 0 -> 680 bytes .../cyw43_arch_threadsafe_background.c.o | Bin 0 -> 2068 bytes .../sdkoverride/cyw43_driver_freertos.cpp.o | Bin 0 -> 684 bytes .../sdkoverride/hid_device.c.o | Bin 0 -> 1412 bytes .../sdkoverride/inet_chksum.cpp.o | Bin 0 -> 1036 bytes .../sdkoverride/midi_device.c.o | Bin 0 -> 1428 bytes .../sdkoverride/msc_device.c.o | Bin 0 -> 1412 bytes .../sdkoverride/ncm_device.c.o | Bin 0 -> 1412 bytes .../sdkoverride/newlib_interface.c.o | Bin 0 -> 1540 bytes .../pico_bootsel_via_double_reset.c.o | Bin 0 -> 1220 bytes .../FrameworkArduino/stdlib_noniso.cpp.o | Bin 0 -> 2976 bytes .../FrameworkArduino/wiring_analog.cpp.o | Bin 0 -> 6092 bytes .../FrameworkArduino/wiring_digital.cpp.o | Bin 0 -> 1992 bytes .../FrameworkArduino/wiring_private.cpp.o | Bin 0 -> 4364 bytes .../FrameworkArduino/wiring_pulse.cpp.o | Bin 0 -> 1300 bytes .../FrameworkArduino/wiring_shift.cpp.o | Bin 0 -> 1252 bytes .../boot2_w25q080_2_padded_checksum.S.o | Bin 0 -> 888 bytes .../.pio/build/rp2040_usb/firmware.elf | Bin 0 -> 859528 bytes .../.pio/build/rp2040_usb/firmware.uf2 | Bin 0 -> 163840 bytes .../Adafruit_BusIO_Register.cpp.o | Bin 0 -> 7212 bytes .../Adafruit_GenericDevice.cpp.o | Bin 0 -> 2236 bytes .../Adafruit BusIO/Adafruit_I2CDevice.cpp.o | Bin 0 -> 3000 bytes .../Adafruit BusIO/Adafruit_SPIDevice.cpp.o | Bin 0 -> 5864 bytes .../rp2040_usb/lib0fd/libAdafruit BusIO.a | Bin 0 -> 22016 bytes .../build/rp2040_usb/lib153/SPI/SPI.cpp.o | Bin 0 -> 17760 bytes .../.pio/build/rp2040_usb/lib153/libSPI.a | Bin 0 -> 19260 bytes .../build/rp2040_usb/lib8d1/Wire/Wire.cpp.o | Bin 0 -> 17124 bytes .../.pio/build/rp2040_usb/lib8d1/libWire.a | Bin 0 -> 18532 bytes .../Adafruit GFX Library/Adafruit_GFX.cpp.o | Bin 0 -> 34768 bytes .../Adafruit_GrayOLED.cpp.o | Bin 0 -> 7836 bytes .../Adafruit_SPITFT.cpp.o | Bin 0 -> 18072 bytes .../lib903/Adafruit GFX Library/glcdfont.c.o | Bin 0 -> 672 bytes .../lib903/libAdafruit GFX Library.a | Bin 0 -> 68858 bytes .../build/rp2040_usb/libFrameworkArduino.a | Bin 0 -> 600918 bytes .../Adafruit_IS31FL3731.cpp.o | Bin 0 -> 7264 bytes .../libcd5/libAdafruit IS31FL3731 Library.a | Bin 0 -> 8248 bytes .../.pio/build/rp2040_usb/memmap_default.ld | 304 ++ .../.pio/build/rp2040_usb/src/main.cpp.o | Bin 0 -> 8056 bytes .../rp2040_swd/Adafruit BusIO/.clang-format | 243 ++ .../Adafruit BusIO/.github/ISSUE_TEMPLATE.md | 46 + .../.github/PULL_REQUEST_TEMPLATE.md | 26 + .../.github/workflows/githubci.yml | 33 + .../libdeps/rp2040_swd/Adafruit BusIO/.piopm | 1 + .../Adafruit_BusIO_Register.cpp | 384 +++ .../Adafruit BusIO/Adafruit_BusIO_Register.h | 117 + .../Adafruit BusIO/Adafruit_GenericDevice.cpp | 90 + .../Adafruit BusIO/Adafruit_GenericDevice.h | 56 + .../Adafruit BusIO/Adafruit_I2CDevice.cpp | 320 ++ .../Adafruit BusIO/Adafruit_I2CDevice.h | 36 + .../Adafruit BusIO/Adafruit_I2CRegister.h | 10 + .../Adafruit BusIO/Adafruit_SPIDevice.cpp | 512 +++ .../Adafruit BusIO/Adafruit_SPIDevice.h | 149 + .../rp2040_swd/Adafruit BusIO/CMakeLists.txt | 11 + .../libdeps/rp2040_swd/Adafruit BusIO/LICENSE | 21 + .../rp2040_swd/Adafruit BusIO/README.md | 8 + .../rp2040_swd/Adafruit BusIO/component.mk | 1 + .../genericdevice_uartregtest/.uno.test.skip | 0 .../genericdevice_uartregtest.ino | 219 ++ .../genericdevice_uarttest/.uno.test.skip | 0 .../genericdevice_uarttest.ino | 98 + .../i2c_address_detect/i2c_address_detect.ino | 22 + .../examples/i2c_readwrite/i2c_readwrite.ino | 45 + .../examples/i2c_registers/i2c_registers.ino | 43 + .../i2corspi_register/i2corspi_register.ino | 40 + .../examples/spi_modetest/spi_modetest.ino | 35 + .../examples/spi_readwrite/spi_readwrite.ino | 43 + .../spi_register_bits/spi_register_bits.ino | 268 ++ .../examples/spi_registers/spi_registers.ino | 40 + .../Adafruit BusIO/library.properties | 9 + .../Adafruit GFX Library/.clang-format | 239 ++ .../.github/ISSUE_TEMPLATE.md | 46 + .../.github/PULL_REQUEST_TEMPLATE.md | 26 + .../.github/workflows/githubci.yml | 36 + .../Adafruit GFX Library/.gitignore | 6 + .../rp2040_swd/Adafruit GFX Library/.piopm | 1 + .../Adafruit GFX Library/Adafruit_GFX.cpp | 2952 +++++++++++++++++ .../Adafruit GFX Library/Adafruit_GFX.h | 406 +++ .../Adafruit_GrayOLED.cpp | 422 +++ .../Adafruit GFX Library/Adafruit_GrayOLED.h | 101 + .../Adafruit GFX Library/Adafruit_SPITFT.cpp | 2621 +++++++++++++++ .../Adafruit GFX Library/Adafruit_SPITFT.h | 541 +++ .../Adafruit_SPITFT_Macros.h | 6 + .../Adafruit GFX Library/CMakeLists.txt | 11 + .../Fonts/FreeMono12pt7b.h | 229 ++ .../Fonts/FreeMono18pt7b.h | 365 ++ .../Fonts/FreeMono24pt7b.h | 579 ++++ .../Fonts/FreeMono9pt7b.h | 178 + .../Fonts/FreeMonoBold12pt7b.h | 252 ++ .../Fonts/FreeMonoBold18pt7b.h | 425 +++ .../Fonts/FreeMonoBold24pt7b.h | 674 ++++ .../Fonts/FreeMonoBold9pt7b.h | 191 ++ .../Fonts/FreeMonoBoldOblique12pt7b.h | 271 ++ .../Fonts/FreeMonoBoldOblique18pt7b.h | 462 +++ .../Fonts/FreeMonoBoldOblique24pt7b.h | 744 +++++ .../Fonts/FreeMonoBoldOblique9pt7b.h | 205 ++ .../Fonts/FreeMonoOblique12pt7b.h | 250 ++ .../Fonts/FreeMonoOblique18pt7b.h | 400 +++ .../Fonts/FreeMonoOblique24pt7b.h | 645 ++++ .../Fonts/FreeMonoOblique9pt7b.h | 189 ++ .../Fonts/FreeSans12pt7b.h | 272 ++ .../Fonts/FreeSans18pt7b.h | 454 +++ .../Fonts/FreeSans24pt7b.h | 729 ++++ .../Fonts/FreeSans9pt7b.h | 203 ++ .../Fonts/FreeSansBold12pt7b.h | 290 ++ .../Fonts/FreeSansBold18pt7b.h | 483 +++ .../Fonts/FreeSansBold24pt7b.h | 786 +++++ .../Fonts/FreeSansBold9pt7b.h | 210 ++ .../Fonts/FreeSansBoldOblique12pt7b.h | 319 ++ .../Fonts/FreeSansBoldOblique18pt7b.h | 547 +++ .../Fonts/FreeSansBoldOblique24pt7b.h | 895 +++++ .../Fonts/FreeSansBoldOblique9pt7b.h | 229 ++ .../Fonts/FreeSansOblique12pt7b.h | 304 ++ .../Fonts/FreeSansOblique18pt7b.h | 520 +++ .../Fonts/FreeSansOblique24pt7b.h | 842 +++++ .../Fonts/FreeSansOblique9pt7b.h | 222 ++ .../Fonts/FreeSerif12pt7b.h | 261 ++ .../Fonts/FreeSerif18pt7b.h | 431 +++ .../Fonts/FreeSerif24pt7b.h | 692 ++++ .../Fonts/FreeSerif9pt7b.h | 197 ++ .../Fonts/FreeSerifBold12pt7b.h | 273 ++ .../Fonts/FreeSerifBold18pt7b.h | 464 +++ .../Fonts/FreeSerifBold24pt7b.h | 761 +++++ .../Fonts/FreeSerifBold9pt7b.h | 204 ++ .../Fonts/FreeSerifBoldItalic12pt7b.h | 294 ++ .../Fonts/FreeSerifBoldItalic18pt7b.h | 502 +++ .../Fonts/FreeSerifBoldItalic24pt7b.h | 795 +++++ .../Fonts/FreeSerifBoldItalic9pt7b.h | 217 ++ .../Fonts/FreeSerifItalic12pt7b.h | 273 ++ .../Fonts/FreeSerifItalic18pt7b.h | 452 +++ .../Fonts/FreeSerifItalic24pt7b.h | 739 +++++ .../Fonts/FreeSerifItalic9pt7b.h | 204 ++ .../Adafruit GFX Library/Fonts/Org_01.h | 131 + .../Adafruit GFX Library/Fonts/Picopixel.h | 123 + .../Fonts/Tiny3x3a2pt7b.h | 133 + .../Adafruit GFX Library/Fonts/TomThumb.h | 477 +++ .../rp2040_swd/Adafruit GFX Library/README.md | 47 + .../Adafruit GFX Library/component.mk | 1 + .../examples/GFXcanvas/GFXcanvas.ino | 113 + .../GFXcanvas/GFXcanvasSerialDemo.cpp | 92 + .../examples/GFXcanvas/GFXcanvasSerialDemo.h | 65 + .../examples/mock_ili9341/mock_ili9341.ino | 365 ++ .../Adafruit GFX Library/fontconvert/Makefile | 12 + .../fontconvert/bdf2adafruit.py | 135 + .../fontconvert/fontconvert.c | 291 ++ .../fontconvert/fontconvert_win.md | 88 + .../fontconvert/makefonts.sh | 38 + .../rp2040_swd/Adafruit GFX Library/gfxfont.h | 29 + .../Adafruit GFX Library/glcdfont.c | 143 + .../Adafruit GFX Library/library.properties | 10 + .../Adafruit GFX Library/license.txt | 24 + .../.github/ISSUE_TEMPLATE.md | 46 + .../.github/PULL_REQUEST_TEMPLATE.md | 26 + .../.github/workflows/githubci.yml | 32 + .../Adafruit IS31FL3731 Library/.piopm | 1 + .../Adafruit_IS31FL3731.cpp | 273 ++ .../Adafruit_IS31FL3731.h | 65 + .../CODE_OF_CONDUCT.md | 137 + .../Adafruit IS31FL3731 Library/LICENSE | 21 + .../Adafruit IS31FL3731 Library/README.md | 1 + .../examples/gfxdemo/gfxdemo.ino | 107 + .../examples/manualanim/manualanim.ino | 43 + .../examples/swirldemo/swirldemo.ino | 32 + .../library.properties | 10 + .../.pio/libdeps/rp2040_swd/integrity.dat | 2 + .../rp2040_usb/Adafruit BusIO/.clang-format | 243 ++ .../Adafruit BusIO/.github/ISSUE_TEMPLATE.md | 46 + .../.github/PULL_REQUEST_TEMPLATE.md | 26 + .../.github/workflows/githubci.yml | 33 + .../libdeps/rp2040_usb/Adafruit BusIO/.piopm | 1 + .../Adafruit_BusIO_Register.cpp | 384 +++ .../Adafruit BusIO/Adafruit_BusIO_Register.h | 117 + .../Adafruit BusIO/Adafruit_GenericDevice.cpp | 90 + .../Adafruit BusIO/Adafruit_GenericDevice.h | 56 + .../Adafruit BusIO/Adafruit_I2CDevice.cpp | 320 ++ .../Adafruit BusIO/Adafruit_I2CDevice.h | 36 + .../Adafruit BusIO/Adafruit_I2CRegister.h | 10 + .../Adafruit BusIO/Adafruit_SPIDevice.cpp | 512 +++ .../Adafruit BusIO/Adafruit_SPIDevice.h | 149 + .../rp2040_usb/Adafruit BusIO/CMakeLists.txt | 11 + .../libdeps/rp2040_usb/Adafruit BusIO/LICENSE | 21 + .../rp2040_usb/Adafruit BusIO/README.md | 8 + .../rp2040_usb/Adafruit BusIO/component.mk | 1 + .../genericdevice_uartregtest/.uno.test.skip | 0 .../genericdevice_uartregtest.ino | 219 ++ .../genericdevice_uarttest/.uno.test.skip | 0 .../genericdevice_uarttest.ino | 98 + .../i2c_address_detect/i2c_address_detect.ino | 22 + .../examples/i2c_readwrite/i2c_readwrite.ino | 45 + .../examples/i2c_registers/i2c_registers.ino | 43 + .../i2corspi_register/i2corspi_register.ino | 40 + .../examples/spi_modetest/spi_modetest.ino | 35 + .../examples/spi_readwrite/spi_readwrite.ino | 43 + .../spi_register_bits/spi_register_bits.ino | 268 ++ .../examples/spi_registers/spi_registers.ino | 40 + .../Adafruit BusIO/library.properties | 9 + .../Adafruit GFX Library/.clang-format | 239 ++ .../.github/ISSUE_TEMPLATE.md | 46 + .../.github/PULL_REQUEST_TEMPLATE.md | 26 + .../.github/workflows/githubci.yml | 36 + .../Adafruit GFX Library/.gitignore | 6 + .../rp2040_usb/Adafruit GFX Library/.piopm | 1 + .../Adafruit GFX Library/Adafruit_GFX.cpp | 2952 +++++++++++++++++ .../Adafruit GFX Library/Adafruit_GFX.h | 406 +++ .../Adafruit_GrayOLED.cpp | 422 +++ .../Adafruit GFX Library/Adafruit_GrayOLED.h | 101 + .../Adafruit GFX Library/Adafruit_SPITFT.cpp | 2621 +++++++++++++++ .../Adafruit GFX Library/Adafruit_SPITFT.h | 541 +++ .../Adafruit_SPITFT_Macros.h | 6 + .../Adafruit GFX Library/CMakeLists.txt | 11 + .../Fonts/FreeMono12pt7b.h | 229 ++ .../Fonts/FreeMono18pt7b.h | 365 ++ .../Fonts/FreeMono24pt7b.h | 579 ++++ .../Fonts/FreeMono9pt7b.h | 178 + .../Fonts/FreeMonoBold12pt7b.h | 252 ++ .../Fonts/FreeMonoBold18pt7b.h | 425 +++ .../Fonts/FreeMonoBold24pt7b.h | 674 ++++ .../Fonts/FreeMonoBold9pt7b.h | 191 ++ .../Fonts/FreeMonoBoldOblique12pt7b.h | 271 ++ .../Fonts/FreeMonoBoldOblique18pt7b.h | 462 +++ .../Fonts/FreeMonoBoldOblique24pt7b.h | 744 +++++ .../Fonts/FreeMonoBoldOblique9pt7b.h | 205 ++ .../Fonts/FreeMonoOblique12pt7b.h | 250 ++ .../Fonts/FreeMonoOblique18pt7b.h | 400 +++ .../Fonts/FreeMonoOblique24pt7b.h | 645 ++++ .../Fonts/FreeMonoOblique9pt7b.h | 189 ++ .../Fonts/FreeSans12pt7b.h | 272 ++ .../Fonts/FreeSans18pt7b.h | 454 +++ .../Fonts/FreeSans24pt7b.h | 729 ++++ .../Fonts/FreeSans9pt7b.h | 203 ++ .../Fonts/FreeSansBold12pt7b.h | 290 ++ .../Fonts/FreeSansBold18pt7b.h | 483 +++ .../Fonts/FreeSansBold24pt7b.h | 786 +++++ .../Fonts/FreeSansBold9pt7b.h | 210 ++ .../Fonts/FreeSansBoldOblique12pt7b.h | 319 ++ .../Fonts/FreeSansBoldOblique18pt7b.h | 547 +++ .../Fonts/FreeSansBoldOblique24pt7b.h | 895 +++++ .../Fonts/FreeSansBoldOblique9pt7b.h | 229 ++ .../Fonts/FreeSansOblique12pt7b.h | 304 ++ .../Fonts/FreeSansOblique18pt7b.h | 520 +++ .../Fonts/FreeSansOblique24pt7b.h | 842 +++++ .../Fonts/FreeSansOblique9pt7b.h | 222 ++ .../Fonts/FreeSerif12pt7b.h | 261 ++ .../Fonts/FreeSerif18pt7b.h | 431 +++ .../Fonts/FreeSerif24pt7b.h | 692 ++++ .../Fonts/FreeSerif9pt7b.h | 197 ++ .../Fonts/FreeSerifBold12pt7b.h | 273 ++ .../Fonts/FreeSerifBold18pt7b.h | 464 +++ .../Fonts/FreeSerifBold24pt7b.h | 761 +++++ .../Fonts/FreeSerifBold9pt7b.h | 204 ++ .../Fonts/FreeSerifBoldItalic12pt7b.h | 294 ++ .../Fonts/FreeSerifBoldItalic18pt7b.h | 502 +++ .../Fonts/FreeSerifBoldItalic24pt7b.h | 795 +++++ .../Fonts/FreeSerifBoldItalic9pt7b.h | 217 ++ .../Fonts/FreeSerifItalic12pt7b.h | 273 ++ .../Fonts/FreeSerifItalic18pt7b.h | 452 +++ .../Fonts/FreeSerifItalic24pt7b.h | 739 +++++ .../Fonts/FreeSerifItalic9pt7b.h | 204 ++ .../Adafruit GFX Library/Fonts/Org_01.h | 131 + .../Adafruit GFX Library/Fonts/Picopixel.h | 123 + .../Fonts/Tiny3x3a2pt7b.h | 133 + .../Adafruit GFX Library/Fonts/TomThumb.h | 477 +++ .../rp2040_usb/Adafruit GFX Library/README.md | 47 + .../Adafruit GFX Library/component.mk | 1 + .../examples/GFXcanvas/GFXcanvas.ino | 113 + .../GFXcanvas/GFXcanvasSerialDemo.cpp | 92 + .../examples/GFXcanvas/GFXcanvasSerialDemo.h | 65 + .../examples/mock_ili9341/mock_ili9341.ino | 365 ++ .../Adafruit GFX Library/fontconvert/Makefile | 12 + .../fontconvert/bdf2adafruit.py | 135 + .../fontconvert/fontconvert.c | 291 ++ .../fontconvert/fontconvert_win.md | 88 + .../fontconvert/makefonts.sh | 38 + .../rp2040_usb/Adafruit GFX Library/gfxfont.h | 29 + .../Adafruit GFX Library/glcdfont.c | 143 + .../Adafruit GFX Library/library.properties | 10 + .../Adafruit GFX Library/license.txt | 24 + .../.github/ISSUE_TEMPLATE.md | 46 + .../.github/PULL_REQUEST_TEMPLATE.md | 26 + .../.github/workflows/githubci.yml | 32 + .../Adafruit IS31FL3731 Library/.piopm | 1 + .../Adafruit_IS31FL3731.cpp | 273 ++ .../Adafruit_IS31FL3731.h | 65 + .../CODE_OF_CONDUCT.md | 137 + .../Adafruit IS31FL3731 Library/LICENSE | 21 + .../Adafruit IS31FL3731 Library/README.md | 1 + .../examples/gfxdemo/gfxdemo.ino | 107 + .../examples/manualanim/manualanim.ino | 43 + .../examples/swirldemo/swirldemo.ino | 32 + .../library.properties | 10 + .../.pio/libdeps/rp2040_usb/integrity.dat | 2 + hardware_test/pioold/build/project.checksum | 1 + .../build/rp2040_swd/.sconsign314.dblite | Bin 0 -> 38459 bytes .../build/rp2040_swd/cpp.linker_script.ld | 160 + .../Adafruit GFX Library/Adafruit_GFX.cpp.o | Bin 0 -> 34784 bytes .../Adafruit_GrayOLED.cpp.o | Bin 0 -> 8012 bytes .../Adafruit_SPITFT.cpp.o | Bin 0 -> 16776 bytes .../build/rp2040_swd/lib52c/SPI/SPI.cpp.o | Bin 0 -> 5180 bytes .../build/rp2040_swd/lib6f7/Wire/Wire.cpp.o | Bin 0 -> 14040 bytes .../Adafruit_BusIO_Register.cpp.o | Bin 0 -> 7312 bytes .../Adafruit_GenericDevice.cpp.o | Bin 0 -> 2320 bytes .../Adafruit BusIO/Adafruit_I2CDevice.cpp.o | Bin 0 -> 3128 bytes .../Adafruit BusIO/Adafruit_SPIDevice.cpp.o | Bin 0 -> 5964 bytes .../rp2040_swd/Adafruit BusIO/.clang-format | 243 ++ .../Adafruit BusIO/.github/ISSUE_TEMPLATE.md | 46 + .../.github/PULL_REQUEST_TEMPLATE.md | 26 + .../.github/workflows/githubci.yml | 33 + .../libdeps/rp2040_swd/Adafruit BusIO/.piopm | 1 + .../Adafruit_BusIO_Register.cpp | 384 +++ .../Adafruit BusIO/Adafruit_BusIO_Register.h | 117 + .../Adafruit BusIO/Adafruit_GenericDevice.cpp | 90 + .../Adafruit BusIO/Adafruit_GenericDevice.h | 56 + .../Adafruit BusIO/Adafruit_I2CDevice.cpp | 320 ++ .../Adafruit BusIO/Adafruit_I2CDevice.h | 36 + .../Adafruit BusIO/Adafruit_I2CRegister.h | 10 + .../Adafruit BusIO/Adafruit_SPIDevice.cpp | 512 +++ .../Adafruit BusIO/Adafruit_SPIDevice.h | 149 + .../rp2040_swd/Adafruit BusIO/CMakeLists.txt | 11 + .../libdeps/rp2040_swd/Adafruit BusIO/LICENSE | 21 + .../rp2040_swd/Adafruit BusIO/README.md | 8 + .../rp2040_swd/Adafruit BusIO/component.mk | 1 + .../genericdevice_uartregtest/.uno.test.skip | 0 .../genericdevice_uartregtest.ino | 219 ++ .../genericdevice_uarttest/.uno.test.skip | 0 .../genericdevice_uarttest.ino | 98 + .../i2c_address_detect/i2c_address_detect.ino | 22 + .../examples/i2c_readwrite/i2c_readwrite.ino | 45 + .../examples/i2c_registers/i2c_registers.ino | 43 + .../i2corspi_register/i2corspi_register.ino | 40 + .../examples/spi_modetest/spi_modetest.ino | 35 + .../examples/spi_readwrite/spi_readwrite.ino | 43 + .../spi_register_bits/spi_register_bits.ino | 268 ++ .../examples/spi_registers/spi_registers.ino | 40 + .../Adafruit BusIO/library.properties | 9 + .../Adafruit GFX Library/.clang-format | 239 ++ .../.github/ISSUE_TEMPLATE.md | 46 + .../.github/PULL_REQUEST_TEMPLATE.md | 26 + .../.github/workflows/githubci.yml | 36 + .../Adafruit GFX Library/.gitignore | 6 + .../rp2040_swd/Adafruit GFX Library/.piopm | 1 + .../Adafruit GFX Library/Adafruit_GFX.cpp | 2952 +++++++++++++++++ .../Adafruit GFX Library/Adafruit_GFX.h | 406 +++ .../Adafruit_GrayOLED.cpp | 422 +++ .../Adafruit GFX Library/Adafruit_GrayOLED.h | 101 + .../Adafruit GFX Library/Adafruit_SPITFT.cpp | 2621 +++++++++++++++ .../Adafruit GFX Library/Adafruit_SPITFT.h | 541 +++ .../Adafruit_SPITFT_Macros.h | 6 + .../Adafruit GFX Library/CMakeLists.txt | 11 + .../Fonts/FreeMono12pt7b.h | 229 ++ .../Fonts/FreeMono18pt7b.h | 365 ++ .../Fonts/FreeMono24pt7b.h | 579 ++++ .../Fonts/FreeMono9pt7b.h | 178 + .../Fonts/FreeMonoBold12pt7b.h | 252 ++ .../Fonts/FreeMonoBold18pt7b.h | 425 +++ .../Fonts/FreeMonoBold24pt7b.h | 674 ++++ .../Fonts/FreeMonoBold9pt7b.h | 191 ++ .../Fonts/FreeMonoBoldOblique12pt7b.h | 271 ++ .../Fonts/FreeMonoBoldOblique18pt7b.h | 462 +++ .../Fonts/FreeMonoBoldOblique24pt7b.h | 744 +++++ .../Fonts/FreeMonoBoldOblique9pt7b.h | 205 ++ .../Fonts/FreeMonoOblique12pt7b.h | 250 ++ .../Fonts/FreeMonoOblique18pt7b.h | 400 +++ .../Fonts/FreeMonoOblique24pt7b.h | 645 ++++ .../Fonts/FreeMonoOblique9pt7b.h | 189 ++ .../Fonts/FreeSans12pt7b.h | 272 ++ .../Fonts/FreeSans18pt7b.h | 454 +++ .../Fonts/FreeSans24pt7b.h | 729 ++++ .../Fonts/FreeSans9pt7b.h | 203 ++ .../Fonts/FreeSansBold12pt7b.h | 290 ++ .../Fonts/FreeSansBold18pt7b.h | 483 +++ .../Fonts/FreeSansBold24pt7b.h | 786 +++++ .../Fonts/FreeSansBold9pt7b.h | 210 ++ .../Fonts/FreeSansBoldOblique12pt7b.h | 319 ++ .../Fonts/FreeSansBoldOblique18pt7b.h | 547 +++ .../Fonts/FreeSansBoldOblique24pt7b.h | 895 +++++ .../Fonts/FreeSansBoldOblique9pt7b.h | 229 ++ .../Fonts/FreeSansOblique12pt7b.h | 304 ++ .../Fonts/FreeSansOblique18pt7b.h | 520 +++ .../Fonts/FreeSansOblique24pt7b.h | 842 +++++ .../Fonts/FreeSansOblique9pt7b.h | 222 ++ .../Fonts/FreeSerif12pt7b.h | 261 ++ .../Fonts/FreeSerif18pt7b.h | 431 +++ .../Fonts/FreeSerif24pt7b.h | 692 ++++ .../Fonts/FreeSerif9pt7b.h | 197 ++ .../Fonts/FreeSerifBold12pt7b.h | 273 ++ .../Fonts/FreeSerifBold18pt7b.h | 464 +++ .../Fonts/FreeSerifBold24pt7b.h | 761 +++++ .../Fonts/FreeSerifBold9pt7b.h | 204 ++ .../Fonts/FreeSerifBoldItalic12pt7b.h | 294 ++ .../Fonts/FreeSerifBoldItalic18pt7b.h | 502 +++ .../Fonts/FreeSerifBoldItalic24pt7b.h | 795 +++++ .../Fonts/FreeSerifBoldItalic9pt7b.h | 217 ++ .../Fonts/FreeSerifItalic12pt7b.h | 273 ++ .../Fonts/FreeSerifItalic18pt7b.h | 452 +++ .../Fonts/FreeSerifItalic24pt7b.h | 739 +++++ .../Fonts/FreeSerifItalic9pt7b.h | 204 ++ .../Adafruit GFX Library/Fonts/Org_01.h | 131 + .../Adafruit GFX Library/Fonts/Picopixel.h | 123 + .../Fonts/Tiny3x3a2pt7b.h | 133 + .../Adafruit GFX Library/Fonts/TomThumb.h | 477 +++ .../rp2040_swd/Adafruit GFX Library/README.md | 47 + .../Adafruit GFX Library/component.mk | 1 + .../examples/GFXcanvas/GFXcanvas.ino | 113 + .../GFXcanvas/GFXcanvasSerialDemo.cpp | 92 + .../examples/GFXcanvas/GFXcanvasSerialDemo.h | 65 + .../examples/mock_ili9341/mock_ili9341.ino | 365 ++ .../Adafruit GFX Library/fontconvert/Makefile | 12 + .../fontconvert/bdf2adafruit.py | 135 + .../fontconvert/fontconvert.c | 291 ++ .../fontconvert/fontconvert_win.md | 88 + .../fontconvert/makefonts.sh | 38 + .../rp2040_swd/Adafruit GFX Library/gfxfont.h | 29 + .../Adafruit GFX Library/glcdfont.c | 143 + .../Adafruit GFX Library/library.properties | 10 + .../Adafruit GFX Library/license.txt | 24 + .../.github/ISSUE_TEMPLATE.md | 46 + .../.github/PULL_REQUEST_TEMPLATE.md | 26 + .../.github/workflows/githubci.yml | 32 + .../Adafruit IS31FL3731 Library/.piopm | 1 + .../Adafruit_IS31FL3731.cpp | 273 ++ .../Adafruit_IS31FL3731.h | 65 + .../CODE_OF_CONDUCT.md | 137 + .../Adafruit IS31FL3731 Library/LICENSE | 21 + .../Adafruit IS31FL3731 Library/README.md | 1 + .../examples/gfxdemo/gfxdemo.ino | 107 + .../examples/manualanim/manualanim.ino | 43 + .../examples/swirldemo/swirldemo.ino | 32 + .../library.properties | 10 + .../pioold/libdeps/rp2040_swd/integrity.dat | 2 + hardware_test/platformio.ini | 16 + hardware_test/src/main.cpp | 329 ++ 604 files changed, 101539 insertions(+) create mode 100644 hardware_test/.pio/build/project.checksum create mode 100644 hardware_test/.pio/build/rp2040_usb/.sconsign314.dblite create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/BluetoothDebug.cpp.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/Bootsel.cpp.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/CoreMutex.cpp.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/FS.cpp.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/PIOProgram.cpp.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/RP2040Support.cpp.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/Semihosting.cpp.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/SerialPIO.cpp.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/SerialUART.cpp.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/SerialUSB.cpp.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/StackThunk.cpp.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/Tone.cpp.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/USB.cpp.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/WMath.cpp.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/_freertos.cpp.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/api/Common.cpp.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/api/IPAddress.cpp.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/api/PluggableUSB.cpp.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/api/Print.cpp.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/api/Stream.cpp.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/api/String.cpp.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/cyw43_wrappers.cpp.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/delay.cpp.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/freertos/croutine.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/freertos/event_groups.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/freertos/freertos-lwip.cpp.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/freertos/freertos-main.cpp.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/freertos/heap_3a.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/freertos/list.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/freertos/lwip_freertos.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/freertos/mpu_wrappers_v2_asm.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/freertos/port.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/freertos/portASM.S.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/freertos/portasm.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/freertos/queue.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/freertos/stream_buffer.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/freertos/tasks.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/freertos/timers.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/freertos/variantHooks.cpp.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/gprof_gmon.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/gprof_shim.S.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/libb64/cdecode.cpp.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/libb64/cencode.cpp.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lock.cpp.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/api/api_lib.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/api/api_msg.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/api/err.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/api/if_api.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/api/netbuf.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/api/netdb.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/api/netifapi.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/api/sockets.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/api/tcpip.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/altcp_tls/altcp_tls_mbedtls.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/altcp_tls/altcp_tls_mbedtls_mem.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/lwiperf/lwiperf.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/mdns/mdns.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/mdns/mdns_domain.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/mdns/mdns_out.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/mqtt/mqtt.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/netbiosns/netbiosns.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/smtp/smtp.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/snmp/snmp_asn1.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/snmp/snmp_core.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/snmp/snmp_mib2.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/snmp/snmp_mib2_icmp.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/snmp/snmp_mib2_interfaces.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/snmp/snmp_mib2_ip.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/snmp/snmp_mib2_snmp.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/snmp/snmp_mib2_system.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/snmp/snmp_mib2_tcp.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/snmp/snmp_mib2_udp.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/snmp/snmp_msg.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/snmp/snmp_netconn.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/snmp/snmp_pbuf_stream.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/snmp/snmp_raw.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/snmp/snmp_scalar.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/snmp/snmp_snmpv2_framework.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/snmp/snmp_snmpv2_usm.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/snmp/snmp_table.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/snmp/snmp_threadsync.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/snmp/snmp_traps.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/snmp/snmpv3.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/snmp/snmpv3_mbedtls.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/sntp/sntp.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/tftp/tftp.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/altcp.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/altcp_alloc.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/altcp_tcp.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/def.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/dns.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/inet_chksum.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/init.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/ip.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/ipv4/acd.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/ipv4/autoip.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/ipv4/dhcp.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/ipv4/etharp.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/ipv4/icmp.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/ipv4/igmp.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/ipv4/ip4.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/ipv4/ip4_addr.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/ipv4/ip4_frag.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/ipv6/dhcp6.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/ipv6/ethip6.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/ipv6/icmp6.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/ipv6/inet6.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/ipv6/ip6.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/ipv6/ip6_addr.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/ipv6/ip6_frag.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/ipv6/mld6.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/ipv6/nd6.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/mem.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/memp.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/netif.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/pbuf.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/raw.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/stats.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/sys.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/tcp.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/tcp_in.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/tcp_out.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/timeouts.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/udp.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/bridgeif.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/bridgeif_fdb.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ethernet.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/lowpan6.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/lowpan6_ble.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/lowpan6_common.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/auth.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/ccp.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/chap-md5.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/chap-new.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/chap_ms.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/demand.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/eap.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/ecp.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/eui64.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/fsm.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/ipcp.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/ipv6cp.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/lcp.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/magic.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/mppe.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/multilink.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/polarssl/arc4.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/polarssl/des.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/polarssl/md4.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/polarssl/md5.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/polarssl/sha1.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/ppp.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/pppapi.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/pppcrypt.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/pppoe.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/pppol2tp.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/pppos.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/upap.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/utils.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/vj.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/slipif.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/zepif.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip_wrap.cpp.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/main.cpp.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/malloc-lock.cpp.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/posix.cpp.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/psram.cpp.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/rp2350-memcpy.S.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/sdkoverride/async_context_freertos.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/sdkoverride/async_context_threadsafe_background.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/sdkoverride/btstack_flash_bank.cpp.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/sdkoverride/btstack_run_loop_async_context.cpp.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/sdkoverride/cyw43_arch_freertos.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/sdkoverride/cyw43_arch_threadsafe_background.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/sdkoverride/cyw43_driver_freertos.cpp.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/sdkoverride/hid_device.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/sdkoverride/inet_chksum.cpp.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/sdkoverride/midi_device.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/sdkoverride/msc_device.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/sdkoverride/ncm_device.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/sdkoverride/newlib_interface.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/sdkoverride/pico_bootsel_via_double_reset.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/stdlib_noniso.cpp.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/wiring_analog.cpp.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/wiring_digital.cpp.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/wiring_private.cpp.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/wiring_pulse.cpp.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduino/wiring_shift.cpp.o create mode 100644 hardware_test/.pio/build/rp2040_usb/FrameworkArduinoBootloader/boot2_w25q080_2_padded_checksum.S.o create mode 100755 hardware_test/.pio/build/rp2040_usb/firmware.elf create mode 100644 hardware_test/.pio/build/rp2040_usb/firmware.uf2 create mode 100644 hardware_test/.pio/build/rp2040_usb/lib0fd/Adafruit BusIO/Adafruit_BusIO_Register.cpp.o create mode 100644 hardware_test/.pio/build/rp2040_usb/lib0fd/Adafruit BusIO/Adafruit_GenericDevice.cpp.o create mode 100644 hardware_test/.pio/build/rp2040_usb/lib0fd/Adafruit BusIO/Adafruit_I2CDevice.cpp.o create mode 100644 hardware_test/.pio/build/rp2040_usb/lib0fd/Adafruit BusIO/Adafruit_SPIDevice.cpp.o create mode 100644 hardware_test/.pio/build/rp2040_usb/lib0fd/libAdafruit BusIO.a create mode 100644 hardware_test/.pio/build/rp2040_usb/lib153/SPI/SPI.cpp.o create mode 100644 hardware_test/.pio/build/rp2040_usb/lib153/libSPI.a create mode 100644 hardware_test/.pio/build/rp2040_usb/lib8d1/Wire/Wire.cpp.o create mode 100644 hardware_test/.pio/build/rp2040_usb/lib8d1/libWire.a create mode 100644 hardware_test/.pio/build/rp2040_usb/lib903/Adafruit GFX Library/Adafruit_GFX.cpp.o create mode 100644 hardware_test/.pio/build/rp2040_usb/lib903/Adafruit GFX Library/Adafruit_GrayOLED.cpp.o create mode 100644 hardware_test/.pio/build/rp2040_usb/lib903/Adafruit GFX Library/Adafruit_SPITFT.cpp.o create mode 100644 hardware_test/.pio/build/rp2040_usb/lib903/Adafruit GFX Library/glcdfont.c.o create mode 100644 hardware_test/.pio/build/rp2040_usb/lib903/libAdafruit GFX Library.a create mode 100644 hardware_test/.pio/build/rp2040_usb/libFrameworkArduino.a create mode 100644 hardware_test/.pio/build/rp2040_usb/libcd5/Adafruit IS31FL3731 Library/Adafruit_IS31FL3731.cpp.o create mode 100644 hardware_test/.pio/build/rp2040_usb/libcd5/libAdafruit IS31FL3731 Library.a create mode 100644 hardware_test/.pio/build/rp2040_usb/memmap_default.ld create mode 100644 hardware_test/.pio/build/rp2040_usb/src/main.cpp.o create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/.clang-format create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/.github/ISSUE_TEMPLATE.md create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/.github/PULL_REQUEST_TEMPLATE.md create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/.github/workflows/githubci.yml create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/.piopm create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_BusIO_Register.cpp create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_BusIO_Register.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_GenericDevice.cpp create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_GenericDevice.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_I2CDevice.cpp create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_I2CDevice.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_I2CRegister.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_SPIDevice.cpp create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_SPIDevice.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/CMakeLists.txt create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/LICENSE create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/README.md create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/component.mk create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/examples/genericdevice_uartregtest/.uno.test.skip create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/examples/genericdevice_uartregtest/genericdevice_uartregtest.ino create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/examples/genericdevice_uarttest/.uno.test.skip create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/examples/genericdevice_uarttest/genericdevice_uarttest.ino create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/examples/i2c_address_detect/i2c_address_detect.ino create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/examples/i2c_readwrite/i2c_readwrite.ino create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/examples/i2c_registers/i2c_registers.ino create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/examples/i2corspi_register/i2corspi_register.ino create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/examples/spi_modetest/spi_modetest.ino create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/examples/spi_readwrite/spi_readwrite.ino create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/examples/spi_register_bits/spi_register_bits.ino create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/examples/spi_registers/spi_registers.ino create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/library.properties create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/.clang-format create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/.github/ISSUE_TEMPLATE.md create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/.github/PULL_REQUEST_TEMPLATE.md create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/.github/workflows/githubci.yml create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/.gitignore create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/.piopm create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Adafruit_GFX.cpp create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Adafruit_GFX.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Adafruit_GrayOLED.cpp create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Adafruit_GrayOLED.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Adafruit_SPITFT.cpp create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Adafruit_SPITFT.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Adafruit_SPITFT_Macros.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/CMakeLists.txt create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMono12pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMono18pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMono24pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMono9pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBold12pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBold18pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBold24pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBold9pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBoldOblique12pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBoldOblique18pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBoldOblique24pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBoldOblique9pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoOblique12pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoOblique18pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoOblique24pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoOblique9pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSans12pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSans18pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSans24pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSans9pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBold12pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBold18pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBold24pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBold9pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBoldOblique12pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBoldOblique18pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBoldOblique24pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBoldOblique9pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansOblique12pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansOblique18pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansOblique24pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansOblique9pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerif12pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerif18pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerif24pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerif9pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBold12pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBold18pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBold24pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBold9pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBoldItalic12pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBoldItalic18pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBoldItalic24pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBoldItalic9pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifItalic12pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifItalic18pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifItalic24pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifItalic9pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/Org_01.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/Picopixel.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/Tiny3x3a2pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/TomThumb.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/README.md create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/component.mk create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/examples/GFXcanvas/GFXcanvas.ino create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/examples/GFXcanvas/GFXcanvasSerialDemo.cpp create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/examples/GFXcanvas/GFXcanvasSerialDemo.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/examples/mock_ili9341/mock_ili9341.ino create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/fontconvert/Makefile create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/fontconvert/bdf2adafruit.py create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/fontconvert/fontconvert.c create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/fontconvert/fontconvert_win.md create mode 100755 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/fontconvert/makefonts.sh create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/gfxfont.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/glcdfont.c create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/library.properties create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/license.txt create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/.github/ISSUE_TEMPLATE.md create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/.github/PULL_REQUEST_TEMPLATE.md create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/.github/workflows/githubci.yml create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/.piopm create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/Adafruit_IS31FL3731.cpp create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/Adafruit_IS31FL3731.h create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/CODE_OF_CONDUCT.md create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/LICENSE create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/README.md create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/examples/gfxdemo/gfxdemo.ino create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/examples/manualanim/manualanim.ino create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/examples/swirldemo/swirldemo.ino create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/library.properties create mode 100644 hardware_test/.pio/libdeps/rp2040_swd/integrity.dat create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/.clang-format create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/.github/ISSUE_TEMPLATE.md create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/.github/PULL_REQUEST_TEMPLATE.md create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/.github/workflows/githubci.yml create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/.piopm create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/Adafruit_BusIO_Register.cpp create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/Adafruit_BusIO_Register.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/Adafruit_GenericDevice.cpp create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/Adafruit_GenericDevice.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/Adafruit_I2CDevice.cpp create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/Adafruit_I2CDevice.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/Adafruit_I2CRegister.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/Adafruit_SPIDevice.cpp create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/Adafruit_SPIDevice.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/CMakeLists.txt create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/LICENSE create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/README.md create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/component.mk create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/examples/genericdevice_uartregtest/.uno.test.skip create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/examples/genericdevice_uartregtest/genericdevice_uartregtest.ino create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/examples/genericdevice_uarttest/.uno.test.skip create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/examples/genericdevice_uarttest/genericdevice_uarttest.ino create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/examples/i2c_address_detect/i2c_address_detect.ino create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/examples/i2c_readwrite/i2c_readwrite.ino create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/examples/i2c_registers/i2c_registers.ino create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/examples/i2corspi_register/i2corspi_register.ino create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/examples/spi_modetest/spi_modetest.ino create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/examples/spi_readwrite/spi_readwrite.ino create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/examples/spi_register_bits/spi_register_bits.ino create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/examples/spi_registers/spi_registers.ino create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/library.properties create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/.clang-format create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/.github/ISSUE_TEMPLATE.md create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/.github/PULL_REQUEST_TEMPLATE.md create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/.github/workflows/githubci.yml create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/.gitignore create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/.piopm create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Adafruit_GFX.cpp create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Adafruit_GFX.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Adafruit_GrayOLED.cpp create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Adafruit_GrayOLED.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Adafruit_SPITFT.cpp create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Adafruit_SPITFT.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Adafruit_SPITFT_Macros.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/CMakeLists.txt create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMono12pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMono18pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMono24pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMono9pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMonoBold12pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMonoBold18pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMonoBold24pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMonoBold9pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMonoBoldOblique12pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMonoBoldOblique18pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMonoBoldOblique24pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMonoBoldOblique9pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMonoOblique12pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMonoOblique18pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMonoOblique24pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMonoOblique9pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSans12pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSans18pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSans24pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSans9pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSansBold12pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSansBold18pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSansBold24pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSansBold9pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSansBoldOblique12pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSansBoldOblique18pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSansBoldOblique24pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSansBoldOblique9pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSansOblique12pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSansOblique18pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSansOblique24pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSansOblique9pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerif12pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerif18pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerif24pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerif9pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerifBold12pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerifBold18pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerifBold24pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerifBold9pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerifBoldItalic12pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerifBoldItalic18pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerifBoldItalic24pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerifBoldItalic9pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerifItalic12pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerifItalic18pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerifItalic24pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerifItalic9pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/Org_01.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/Picopixel.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/Tiny3x3a2pt7b.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/TomThumb.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/README.md create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/component.mk create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/examples/GFXcanvas/GFXcanvas.ino create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/examples/GFXcanvas/GFXcanvasSerialDemo.cpp create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/examples/GFXcanvas/GFXcanvasSerialDemo.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/examples/mock_ili9341/mock_ili9341.ino create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/fontconvert/Makefile create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/fontconvert/bdf2adafruit.py create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/fontconvert/fontconvert.c create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/fontconvert/fontconvert_win.md create mode 100755 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/fontconvert/makefonts.sh create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/gfxfont.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/glcdfont.c create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/library.properties create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/license.txt create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit IS31FL3731 Library/.github/ISSUE_TEMPLATE.md create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit IS31FL3731 Library/.github/PULL_REQUEST_TEMPLATE.md create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit IS31FL3731 Library/.github/workflows/githubci.yml create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit IS31FL3731 Library/.piopm create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit IS31FL3731 Library/Adafruit_IS31FL3731.cpp create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit IS31FL3731 Library/Adafruit_IS31FL3731.h create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit IS31FL3731 Library/CODE_OF_CONDUCT.md create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit IS31FL3731 Library/LICENSE create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit IS31FL3731 Library/README.md create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit IS31FL3731 Library/examples/gfxdemo/gfxdemo.ino create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit IS31FL3731 Library/examples/manualanim/manualanim.ino create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit IS31FL3731 Library/examples/swirldemo/swirldemo.ino create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/Adafruit IS31FL3731 Library/library.properties create mode 100644 hardware_test/.pio/libdeps/rp2040_usb/integrity.dat create mode 100644 hardware_test/pioold/build/project.checksum create mode 100644 hardware_test/pioold/build/rp2040_swd/.sconsign314.dblite create mode 100644 hardware_test/pioold/build/rp2040_swd/cpp.linker_script.ld create mode 100644 hardware_test/pioold/build/rp2040_swd/lib23c/Adafruit GFX Library/Adafruit_GFX.cpp.o create mode 100644 hardware_test/pioold/build/rp2040_swd/lib23c/Adafruit GFX Library/Adafruit_GrayOLED.cpp.o create mode 100644 hardware_test/pioold/build/rp2040_swd/lib23c/Adafruit GFX Library/Adafruit_SPITFT.cpp.o create mode 100644 hardware_test/pioold/build/rp2040_swd/lib52c/SPI/SPI.cpp.o create mode 100644 hardware_test/pioold/build/rp2040_swd/lib6f7/Wire/Wire.cpp.o create mode 100644 hardware_test/pioold/build/rp2040_swd/libe40/Adafruit BusIO/Adafruit_BusIO_Register.cpp.o create mode 100644 hardware_test/pioold/build/rp2040_swd/libe40/Adafruit BusIO/Adafruit_GenericDevice.cpp.o create mode 100644 hardware_test/pioold/build/rp2040_swd/libe40/Adafruit BusIO/Adafruit_I2CDevice.cpp.o create mode 100644 hardware_test/pioold/build/rp2040_swd/libe40/Adafruit BusIO/Adafruit_SPIDevice.cpp.o create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/.clang-format create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/.github/ISSUE_TEMPLATE.md create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/.github/PULL_REQUEST_TEMPLATE.md create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/.github/workflows/githubci.yml create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/.piopm create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_BusIO_Register.cpp create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_BusIO_Register.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_GenericDevice.cpp create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_GenericDevice.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_I2CDevice.cpp create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_I2CDevice.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_I2CRegister.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_SPIDevice.cpp create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_SPIDevice.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/CMakeLists.txt create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/LICENSE create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/README.md create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/component.mk create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/examples/genericdevice_uartregtest/.uno.test.skip create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/examples/genericdevice_uartregtest/genericdevice_uartregtest.ino create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/examples/genericdevice_uarttest/.uno.test.skip create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/examples/genericdevice_uarttest/genericdevice_uarttest.ino create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/examples/i2c_address_detect/i2c_address_detect.ino create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/examples/i2c_readwrite/i2c_readwrite.ino create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/examples/i2c_registers/i2c_registers.ino create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/examples/i2corspi_register/i2corspi_register.ino create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/examples/spi_modetest/spi_modetest.ino create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/examples/spi_readwrite/spi_readwrite.ino create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/examples/spi_register_bits/spi_register_bits.ino create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/examples/spi_registers/spi_registers.ino create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/library.properties create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/.clang-format create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/.github/ISSUE_TEMPLATE.md create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/.github/PULL_REQUEST_TEMPLATE.md create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/.github/workflows/githubci.yml create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/.gitignore create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/.piopm create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Adafruit_GFX.cpp create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Adafruit_GFX.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Adafruit_GrayOLED.cpp create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Adafruit_GrayOLED.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Adafruit_SPITFT.cpp create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Adafruit_SPITFT.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Adafruit_SPITFT_Macros.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/CMakeLists.txt create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMono12pt7b.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMono18pt7b.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMono24pt7b.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMono9pt7b.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBold12pt7b.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBold18pt7b.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBold24pt7b.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBold9pt7b.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBoldOblique12pt7b.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBoldOblique18pt7b.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBoldOblique24pt7b.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBoldOblique9pt7b.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoOblique12pt7b.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoOblique18pt7b.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoOblique24pt7b.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoOblique9pt7b.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSans12pt7b.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSans18pt7b.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSans24pt7b.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSans9pt7b.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBold12pt7b.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBold18pt7b.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBold24pt7b.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBold9pt7b.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBoldOblique12pt7b.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBoldOblique18pt7b.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBoldOblique24pt7b.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBoldOblique9pt7b.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansOblique12pt7b.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansOblique18pt7b.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansOblique24pt7b.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansOblique9pt7b.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerif12pt7b.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerif18pt7b.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerif24pt7b.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerif9pt7b.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBold12pt7b.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBold18pt7b.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBold24pt7b.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBold9pt7b.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBoldItalic12pt7b.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBoldItalic18pt7b.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBoldItalic24pt7b.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBoldItalic9pt7b.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifItalic12pt7b.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifItalic18pt7b.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifItalic24pt7b.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifItalic9pt7b.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/Org_01.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/Picopixel.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/Tiny3x3a2pt7b.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/TomThumb.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/README.md create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/component.mk create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/examples/GFXcanvas/GFXcanvas.ino create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/examples/GFXcanvas/GFXcanvasSerialDemo.cpp create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/examples/GFXcanvas/GFXcanvasSerialDemo.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/examples/mock_ili9341/mock_ili9341.ino create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/fontconvert/Makefile create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/fontconvert/bdf2adafruit.py create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/fontconvert/fontconvert.c create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/fontconvert/fontconvert_win.md create mode 100755 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/fontconvert/makefonts.sh create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/gfxfont.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/glcdfont.c create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/library.properties create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/license.txt create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/.github/ISSUE_TEMPLATE.md create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/.github/PULL_REQUEST_TEMPLATE.md create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/.github/workflows/githubci.yml create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/.piopm create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/Adafruit_IS31FL3731.cpp create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/Adafruit_IS31FL3731.h create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/CODE_OF_CONDUCT.md create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/LICENSE create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/README.md create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/examples/gfxdemo/gfxdemo.ino create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/examples/manualanim/manualanim.ino create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/examples/swirldemo/swirldemo.ino create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/library.properties create mode 100644 hardware_test/pioold/libdeps/rp2040_swd/integrity.dat create mode 100644 hardware_test/platformio.ini create mode 100644 hardware_test/src/main.cpp diff --git a/hardware_test/.pio/build/project.checksum b/hardware_test/.pio/build/project.checksum new file mode 100644 index 0000000..41c2f60 --- /dev/null +++ b/hardware_test/.pio/build/project.checksum @@ -0,0 +1 @@ +056f33491200fe49f765382dadb8eeb6e2923e0e \ No newline at end of file diff --git a/hardware_test/.pio/build/rp2040_usb/.sconsign314.dblite b/hardware_test/.pio/build/rp2040_usb/.sconsign314.dblite new file mode 100644 index 0000000000000000000000000000000000000000..835b81cc0217c1fb7c6fa47619e0e5a20fef53cc GIT binary patch literal 309787 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 D&SWs= literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/Bootsel.cpp.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/Bootsel.cpp.o new file mode 100644 index 0000000000000000000000000000000000000000..fe1a98ab66aaad617ed510ae015d630f6b61ee31 GIT binary patch literal 1628 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 literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/PIOProgram.cpp.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/PIOProgram.cpp.o new file mode 100644 index 0000000000000000000000000000000000000000..086a085f6a5572d892b3ddfcec654d047f79287c GIT binary patch literal 4976 zcmd5->20x%IE02K}3W|L`g_nSokw!=2Kcf+x* z6<|T=aKSU_CTNEH($KwY1-iuI@6uPo?qUGe?tQ%GRNn}<-4Z&5MJT)$b``tTm%~3F zekv?1di|yyn)?KBzw3Up3!ospNNq_~=u67?mVN4_u?gIzCAMb2R|B zSG5~1fPJu{E&nFHcJCi+KS=w*+fIG=!QWP)b0jW&L5M#S*T$O>Ih2NgqxfA!e!S*~ z=H+%t($w5=CX-9bhLUv${NY_^_rcnyf1U1WM_1lF`+*&#z_; z`>)xs7kWfG&kQmv=W_b#{j#2# zSF<@yP3C%%IUQ}f)*I{(_EbU;lbVL}efP!-*WKT$S$HHuGu`y+hD931mdmi`xg#fz zK0I;%f^X@>RARJwv38+uQH0L4nufg{D?bbeioNP$c-MQig&o};ciw>JYlV|uaGCuf z(DtFL;95$?-Gx`;zIaW+8=qG<6t=~MT}`i&hXAx*zq?$oE`=TMHNiL2w^!dz-&%cY ztM`Dg$I<=H3he$83``Urhwknoc?jJ3F?x9UWP5tRTz3fUC_;Ow?s^^q-Vd3jGwr$R zS@d>37(KZ+JW)-;;*mfw~FBC{>93cg5w2Y(N}1^28;gm z#@8CI65hT2YO&!;T><=8!a`B-d!||@e2+nwyLhI(WuoP1>w|<6I(!e6JZ>xug(u?P zPVZ2I<*~8gUQ*C!YrJM@E7glc`DV>2}6u=+FJys^tX6Jd(Ja_;o@XFL6-ct%OCvJvixqf}(lF+=I=_%umT~{*I4~9QFsskDb`- z5A}!K z1kNfepzg4nQFn5>3(vP*TtIU{IpP9-4yg9;gc=TC16M8lb`xKNzZG%91`fZWV#Jyg z>NtBHXKMh@QyyD(Ud0yd=)0#=eh##gKYtlgN}x=2VsElnq?*kM9**Aw&mx|>c=2lI zyIp_O(rKg~+%Gw<{{_yzVCmmR5)ZO2bNKf;{g0gf5vMoXjts@?=kzagI&hhOrvcKb zV=-eunodZDt|*b{L?}eJk5;;pVn)9vt9oQ2)+?!FF(VX|VoF9y8lk)qi5-xzsXwFS z^AWU<#bmQ-EObzslGH3-P=++0RnN>TrS@2#6hVqZ%$cMbiY^;D-83i0jz1)cYF?Ky z3w;hz4Pa2{F0YJ5F^Il$5ZPR+6d&`wGllLa2kEw+nm3g5qz#yt_mr%W66&wM%0U{R zJRTmNl%)K8LW)Qjd?;9%>5<+sZdR*1jIO7{DU7+iN>WNm>dKswHE1Z6W*Ul=z#(Fk z*>g|eZ_MZ&ERWP$5;>cabR{8YC{4#CWJqPAXNjqLNTE*-sTwibJ9ZXm zBjx9C4(cYh7iILAF^IRW6|gUdjv&Q+&HRA(7_RWwwQ}Df)N~;qvc7PZcGp8 zX+E!{&}TK+^h9(?IV;Jj6x-cqPhKxE&ER36*lDtC2nk%W11ygW8;@o^Pk<&&cLnYmd z$=nbTxrlCvP5sb^UBX6dpJ8EKvtM_Eo~J^mc3|9J{i49N9?r;79Mr z&%y-}!~3OoGZW^Q-j4LL9kL9!@to7kisE)zANecdXXpD7>XZVQFuq@6gPrfs$VdH& zkMap|l0J=Oc0S^#cNP=IcY(v*K>+0;CJgsA#M%A+-R76tnco*JzFv#qE|%9A8I}|i zeeYX1ikajk)al*Eg!o8qVVm9WN9gxiY^U+kc$nV?43xSvz923j%{>#wSBp41-$neJ z!PbLb^o;Kq;z(!v;4!Q)4&tObeMdRImynOGN3(??{i|GjapWVvOc?hmj_>=n_~>3E z9Pxbzad_pF<2(N;@hx$DKeNS0>&*DBS@E&)K8+Rf!-U26I^w9E;VxnYo65qLu=pQv z!7{4km(<@{ewmH<=zk~^;-l|Rh(nXc+ApDEUti{zN_#wSA?`YU^uN6eKN<(E3+(}H ZE{lQpyku)&eD`y>w{ZUcWpluA{{~1?!0`Y8 literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/RP2040Support.cpp.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/RP2040Support.cpp.o new file mode 100644 index 0000000000000000000000000000000000000000..ce3f058824024f08313123e1e02811e6ab5e94e6 GIT binary patch literal 992 zcma)4&rcIU6n^8D-yA9;f+hwN5=+oYg$5H(Kt)Kj#FThY4rR8Tq>U}R*_{$OdG!zR z=#`_1|AJ@#3Qpdv-?wF8;R0Xs&3kX&H*enVo3GpN-YBKSLrF<4BazabEHhHcOi89> zQi8X|(?4xlQNIU&{|$;iMbw7uRI9HROFMfXmKR@C^qMZq<_gXjYr>AGCvZpB_n+5f zbb72dp=JuR>b`mq%&P_UP(3bW)$>cfhk~39^10wjha!OtoAjChJ9z|BkbC(J#B+#? z7kgLl4`lQrLnn|iS%76vv)~NQS7AM}I`#Lf^;5_3k3h>wX|{;zh7t F_a77yWvu`J literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/Semihosting.cpp.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/Semihosting.cpp.o new file mode 100644 index 0000000000000000000000000000000000000000..41f2a155c72d064368f99a0abcfee6d5745dd35d GIT binary patch literal 24936 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 literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/SerialPIO.cpp.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/SerialPIO.cpp.o new file mode 100644 index 0000000000000000000000000000000000000000..55a24cec9350ecfaae815a98ea07f4f06c1c3e47 GIT binary patch literal 11328 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 literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/SerialUART.cpp.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/SerialUART.cpp.o new file mode 100644 index 0000000000000000000000000000000000000000..6cbac78611be405be6238465b0f3cb89fc024d8a GIT binary patch literal 11736 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 CORuK@ literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/SerialUSB.cpp.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/SerialUSB.cpp.o new file mode 100644 index 0000000000000000000000000000000000000000..c7334875ff22bbb15aa62c476466ce174a03740c GIT binary patch literal 9372 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 Rma)vc$LIWwNODee{|A_qnb-gT literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/Tone.cpp.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/Tone.cpp.o new file mode 100644 index 0000000000000000000000000000000000000000..f646027c75603c468c458c3235f4721bd0b9a6ba GIT binary patch literal 5544 zcmcIoZ%kX)6+h4a00WH^NN`ACw#f*A#KM>+B-tOZp+F79!eg0a=iKLK zKkk~XAG(`9&OPV+?(dv??tS+@_xYi*M+89tqY2Of6%F8ui+Sw5Omu(;z5uS3IsmU{ z-Yac zrFg9eEVqxIhA!KBACPXpc5k(1VjpxfZCAtwLSZpVh z7olrp9Xh|Z_ObF>$iAj$WnH)$+J19yd%wUwc;3cj4*DWJ>nQ`e(K`XovEGD3CXoeexuReqUKt$MHcbh zxW8d#qg<<%csc^Wu|aY6zBRo3A`D-9$uI*9hr>ra9m5k}-{%SR`h)&%80bQ;BumpO z2wv>k55^9RgQKo$yhhk&YZSH%O;)$CQ)m`ijSMPuLZu5f_yD6;nsw6&0$>G8#fd#D z{xdf`CBSJmpk9wU#puMxg1Wg`!NK7j_&(_P{S5Cg!!cSFhp&QXO88cWuj24E9KHtr zjEKcDss{dA>Q|!_pcy_X>29WPFKN24;x5@dzgos;E0?7fYDxvglNI@PaO3N_@%7Mz zcp9S5x1RCsE|02*K#5P!uc_>zjuo~re8sq>(q;awT)eF?Sc*q6EU=Z0Z!C}6TJBND z3Jn~81Lxn)`T2V7;QV|&nmB(GJXxBrUca4Oyqz4L_cwF?W^Vj0PTvjBmEw_uuE=FGPQa?hoF+=? zM5PYX4;UNk7O4W7nv%u2ym+v;JpW{BE@`g5lt}2M7p4EG1g&f&5TH4i_txfGu_dNE z(ix!h3S|$lThJK0e0qCxF9@OtVCxQn_KLqe7$v%K-l7|7(Byrp+l1Bg*O8Qxn z$ctZnEDqi0mIDBko+n@f+X_O zw}rDG;AN7S$2pRi_eGMJ?=ndw`whtffOklS0Pd3v<2>--cH-pdjv@YUlN`cvByl|5 z9Zvkxe2e5Tz`GDNUM2spWL37(INuHSi}SO#=UP zJ`et!ob;2?|EY(x;rjm^)#l)zM}*IOXqy9<4@0xDd@NUtc}>b`b6Nj`k8p;i6GD`7 zIq9^iw(`7+1va1kn~rlf5HB*-7>FxF>ruHyXsyU%x=PrfT!xmCtsQrH_$#jedR6$@ ziEjjsXHs;Mfq!6f+%IWbPMyXJA+PVP&+?bP)bMp+dzSF}|F@u?-tZM*&5M5tXM8sB zIPy{3i%&H^{|iTF1Ru8(ZALTV?ngrnKK&)fIee+;`=lnkI^VcYCZ&+`7R@07VX4G zcESq8<}QMWuNEJJFUs*P;KG>eV(?KMbAJCozK#+fcFTMV zh@<<(Sl=tyF*wl7`lQcue7kWF&5!b#Z5AN`s# z_*M`{{6>Die?WfMIle(tehntR8;GO44Ze4neUItXO3%ZodYGDF^{_sh#1l z6Gj}mXbZFUF)HSLMHp)4+(_@h#INB)?;L)*uzAq?Omjtwa=VR1`IX6F@X=bE%y1m* L5;G==J_Gk}ub2+X literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/USB.cpp.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/USB.cpp.o new file mode 100644 index 0000000000000000000000000000000000000000..53c4eeef33b86445871d24e980e9195f4915592c GIT binary patch literal 13404 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 literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/WMath.cpp.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/WMath.cpp.o new file mode 100644 index 0000000000000000000000000000000000000000..1957952a65392f684245aa2e5a22806c3af26e03 GIT binary patch literal 1324 zcma)4!EVz)5S_(Nnx=trWKjBW+xb>mW~{Zu80~Cr-E4Y05BDxN*Vgq7 z?bGHJsD@G4?UPzTTH4sX)}eB3rZcM++(mU(op+Yh1+}ait~r1DVbAH(kBQxNrfxyx zP<9dFI6!Q3$fY?OKy8~tt(1bNYyLPq><#1HDC)(OZ~=590|yiY=2ry$UjJ1* zv|9th?TM-w*hCD+GgnW;InLvulQ(f1b`jHY77rv#qt_|vUYLfYyGcTN91S#sx;T^F z`7_twzyay~VH`(?5Z-*$(P5g7``wpmlwg$qwTmF~4#}U)cKrBl*%)3;=E=qsd9sJA z;P7An7thc2>~r~hipjZG0nEbNdBa14^_k1t$-lK#p0OU! zB6rZeW;7LSwK9}#sv&p|eO5ee`&q;2ghc%w!-G%r^At4IyH#lW|Q~&?~ literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/_freertos.cpp.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/_freertos.cpp.o new file mode 100644 index 0000000000000000000000000000000000000000..6a2452a8e9a46249123427acff2057b722168384 GIT binary patch literal 672 zcmah`O-sW-5S?j~)_~wQeu31J5p}6pMZA?#b1@zi&$6j2_7Gc=74+nv^$&XXYb}35kU+gfGGpG%!$_?3j*+A0U+#lubM%4`*7GiZL2fYg3b}; zwbAhaaGyf&;{GIp`eGyUan)VN4cv6La2t1U&y`jaU+(9^_wOV@fm68+^IADg+?nCk z`VM#ikI$(wsU2pjKN?5%{CU4W+zer@wy9M>6tp*im8L0j+Nz5z#>)b_3TbmBz zH*2y=&;Q6SC3(JjAb1zTalN&1lz+G$M$P5(17h#Em!ld2`@v`oRcuz#+MfV5DKra9Q literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/api/Common.cpp.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/api/Common.cpp.o new file mode 100644 index 0000000000000000000000000000000000000000..427898ee857a8bf657509e814e04e7b1b7a785fb GIT binary patch literal 1148 zcma)4-D(p-6#gcgCQWTM#^0tQEeNKlL#0*3E9;^GX#^`p@g{7Vg)Hqh%Vre45_|?P zd;nj;OW(&!z4FfZo!y;uvNw9*%=!D~{LGn;PxhWFrC>>+gHsDIl`OKblZg&iu#D!n zYw+8ZFE83yd+kqu|CwU7`90~Pvgq^d`u@Z9PWSo2=K9?oy{)&fdyBV&Fc?Ho8&ntW zzr52!ZMoiSs8;o&x}>gnSJkR&tLxRQ&ivu_Q^l{T8};V81w7;pTZ~7KOCGA6z@_<$ z9%`j{%>^@Cy%evP;)^A_fphf84426*)?afFP3j%8#HI5V>)$JEsoY{c_~SSppXkFR z!3~4{o9#GAj)ll>>_-dRE1vN89Bj7A^Ey>C{3Enk=0E2 z-aron6F?6p6X-NN*5cG|N$Z)V=bZvHbFrd6WYggZgS-1Z9T<~FgSRG}u!a96c_(=n zyMg=MelqaMf+#KSFL6(0&;S4c literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/api/IPAddress.cpp.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/api/IPAddress.cpp.o new file mode 100644 index 0000000000000000000000000000000000000000..d811a6970ff9ad5e0a042043bb785a514bc0af35 GIT binary patch literal 5892 zcmb7IU2GiH6+W}GcCz-$aW=Si;<#S_#B36GwCmVTOCoA}y>`snj;mEW1p8I|GJNNhOj(?Mw98(m9geerEvPab2Xd*TJW)Y!YI!eBzI-ktM=X2v% z$98i&d|$HFY=I9`JL4G&D<@`0{xmW)eDz9hoG7}XzN=1kmulvf{7C-!{Iz^^6Z~OT zs$q@#lA2GJ;`!f~p3i??`Xn#(sWZ2+kNi}3Xm^Ps{u}BM<;Ly263uPaQuI+J7SMLx zd@de6(c1FoEBBAy{X2#4-O(cdW!`_T&m4TSWnZ4UKE876PUFV?e}8|!akJhWDWcYA zhB8+V#7CaAMi`lx39qjf)5c*sv_zEK2-1s}Yp8ibxrm-&!Y4(3biJo-cmJ_cV@K#Q zzll)Sug3hBl#9yXSHA}5?U9BXypESpS8qiqFoBw-5~1CfbDLU+<$ZnU>KN85$Pd=N zontCwVag>dqTlwzN#oX^*GHPa*cPZkBoDt5hrT zYbAcI=xCNIuZUOQyFw}jBs^g1J>;kaoEj=B)l2+(2@gtm(9~;jSml{ndJPi4!C_kX z9tro(My0(HzE|oWl5nhU*;Lvm;rq%U*HkL61OSzqBz}`Qzl_tX$*EcVW{KY{;rk_g zzl66+c&miBNqCz%p7JiYN&I$+-_A3#?r1lcK5Cctt6l2fVdCXRT%WS3)Ft6vWsqws z9g^@v65b=>Jre$~qkb$-AX z_+M=wCnv=B>89=DOo#aX{7dpf+!_6Gb3=SzVzz(K^n)}d`B~dPW#SF=vh8CJae64>jm$`V$q4|;nC6A z)bR8#J%fnFY+(BIbRuEici#!?-lIhB@jYtgRrtuCD3LDe_}3!xL)|2D1eZg^H=oNX zqCu3?Wajm{(?m=$d9x^Ih~`l~PL$!&$6r^=cA2wF{8r-&;`@O)>j zyj}NmdwlF8Z~LAk3Zvxl!g@3-Klv~St$1O@&=Yga&#)3DkrJzEM%q^M{8?-D(8`%wU9Nok=mL&c97hXMYa*QbIJCM zmGbZ^teTxyw89#83|mxzR7sd!ALyf%S@`{eJOS&s3g=V&-09#J@a&%}TX?`=_yvnxvlB1M964?yw+X}V zKUgn6cuO1N2lfKLl0pA4Kj7ej&ne8KH_ASK;|ddcXSl(w_XpNPT9%vVFuW{Y2_kv4s5|akjGYo(-bv=U`6cUjW=Cu8C) zLR09yB=NqpHNb%h-g^@7d&b;v-GX<+=JlDq`TLoD_uDtS)_QOU)Ww(%vSZkNP>6N* zG0#2U_j$fJGl%)XJE)j%pQMNPp-#qyF>IP9=>>VSaIT<-w``&JtfY5^^{}tPgx;d0 z*UcpC8}#s2F7#fL^!`>w?~jsRuS*X(Md*Dd>3t#Tfd~6k((8BW;Vob2-IMfgvR=2T zV0{R^Zza8xtQTeq=8Ly}p%>*uh4Ufu)&E#eXmGPxhu_PD0GC7jz@B!EuY-M|H^e-a zaLywtOm$3XpOo~LTzXy17J54Kuuoi=7Gyp5eG_`WeL&t{n1}Hp|H7c>{;v=)Jnt}% z|8n5K+L_mDRn1RuU?>@KY?7UqYlx0;%Om_?e8{g@JJxgTn_WZ~T@6AH|KV~q(=xBi Jhpq;}`#(uJp?3fP literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/api/PluggableUSB.cpp.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/api/PluggableUSB.cpp.o new file mode 100644 index 0000000000000000000000000000000000000000..ee2991a00881bc56422512378dcb24dea699e442 GIT binary patch literal 2640 zcma)7&u<$=6n>NSkHk0y(iYrSDw`$&mo%$74khB0IyIrFj-psaRgiGj>q*v?9dFj_ z$l(A;aO)ocQp$lVIUp6~f{4UFfWRk^(qkn{NR=o^v=S2Gz4cBrnI?9hynge|_q{i> z@9oZhn!WKZV+@2bNWuXExE1x8@RaY8a1w^V**O6)cFl%Mtd#_3cf?MC4jF zM@FBMqMz(!ns+t_fqlG{2m$DKGAHg^_UD;+i!a0LBhB0Ee{7DgZzV>Y?al8q(chW= zWcLi_hw*<~KQBLQZ`=1^x%u0z{m1|9N0+T8yTa0z^Uu9@8}J^Zxg-!1xdF-Wuev|( z%+S4vdcoZ6>^pjLZvN&)JvC*djmvO#97&U##WJvA9EPvtCvp&pM{@&gD0GUQX0K`q zc7~m0=W*AH$+Zu`qkWmy4s`}VgFcx?tSLBz-IDF_dK!ckJ}iqdTSVa_3LjPY&ch-^ z8uTlCzo2}tK}_Lea2gr?sVWAEU`#t_5QoVC$9+5)ppMg!r}zUS)q!a+sPJk$KG%|I z@FKjAn0oRiUPBOqjR5OD4#Rf=KJViQ>;+i&aTH#_V2WSzaX(}U1ojg8#eh%ZcnIrJ zQuwBVzf>?RR2r+RX0gI=<}-%nI56tLXbB2Sa~~|FCS`Ubo30gaBXivR{M)8mYLwS% zsk9tdNKLMC@A{g@-4)Z~*##SO9IH*E_8PBSZrSl_Zgz1#UzoZ`J*5&z*b9!6IcBa4V^4`Ob2+Qlr9YSJT|dG*(u)OZ8F828DvvGz+T@ ztWLqS)*EG)ciG%*D!Xwg#N`!k);Yj?*yGr1fNvH0Vd^*f3*bNFv60Sm-**aN6zBV1 z!9SzES@p~!de7~6TZ}y3^uQ>Yo(V>=UI&9Fj4pk7riVQvx_7c?_%r?N6>)S|4J==; z$X@-GbEwUw>S5iEds_lpeI`1ul3~@VRlbIexVo4#OwV)6#fHc0*t+Mnb10-&TAZw% z@9aUeIN|Ye@pa;aS9Ri8cms8G%J$M-3i8S8(itaAtosp8$onI#3lVyu`x?ix?i0jx zCJGa}UvNU!-9@Ym5qhB;K#{Eb5ji?Tg$Z34MFTiF6A%^rgwg%e*-Del1}9#|@maiRUAiZ#owx@a!cPdcMH0kfNO7|6 MF4pA-K}x#+0mJ3LzW@LL literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/api/Print.cpp.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/api/Print.cpp.o new file mode 100644 index 0000000000000000000000000000000000000000..07e8e13f430c91430bf208d86e767b3011b48457 GIT binary patch literal 11056 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 E4^oHeR{#J2 literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/api/Stream.cpp.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/api/Stream.cpp.o new file mode 100644 index 0000000000000000000000000000000000000000..d93efd34490b12aedeaddd3344685a5dc06bd231 GIT binary patch literal 5668 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 CjWE^# literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/delay.cpp.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/delay.cpp.o new file mode 100644 index 0000000000000000000000000000000000000000..1646a1858e948f3556b80aa7c2ecdeaa5a66ffa8 GIT binary patch literal 1636 zcma)6O=}ZT6uqyL)F!POqop5$B(-3QI#dl^sEd?hBWQ|P3hu%rGtiNlCS)dJpdh#t z7lJFn-_c!#{)GGs*RIqqtmn++HIv!sg**42ch9>YZ{EziC(pN)QldpkMaD?v*oY$8 zYGf*MMG8_ll8PFh{rq!Q_(p$fDCHP+>xCnFvX&j5uE@>L60e_@KSbW|@9No?*WLQb zw$!pUsc&sPELG||duye8Rr7(lE}OSe$8xNeE2<1PyRmz>A=7gg8aY+WTvPLE!B|vF zYFXXLL>(m`$-Xo4<1867CZ-ZGWGWd3jtA9?hGb+`gUC+SGh{jypPpbFGLwqWq~f_$ zJeP{krsA`535;=;$?go9OYOgicO}u(jI3aug#@DjzXau(F>ev`+=tb|_#-IeJgF5_ z-W=f)Y*BLZ6jlrQyBfd}+bP@wWt9Fbf@EoVx^n(~S+;*=M zIPK1X9gIT#KnAYk+2XsN=LQnGzSHan&5f!wo6+TI_C4Eu<9F=wf{O)gU^2GFx0Syd zpJ#qPo-w}|_nlu7S!SFMGZ^@x)q)LsvEA2R=)4WZw5`w*vlRql_8iaTq8SaA#uJmo zym*Z9zR^H&aMY~X?)biQfJ&P$8>SV8J-5{looEX5_aAZ{9G<(rq4Bpo-l)HX@`$Iu zgfx#iD7T=zhyUWOgOjeCyrsJC9q@SjYf#EB1el-ql3yK_xCTw;BPK_S&i5D#$$V^7 z=i?dZe6Qdq^X&lZ9B|M5{S@y7a0#kK@8Nw<)}29JT&bu>uIsve_{q9m;N-cGM|lq= zkLO4^gyPDc3uDxeP?TbtNIv1oGu1*4g;w`Ud<;Fo;$_$(lywVG_Nw14Tsg$10iBWP ReEh#8c_o0angpwPe*sf@rzrpc literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/freertos/croutine.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/freertos/croutine.c.o new file mode 100644 index 0000000000000000000000000000000000000000..e9118c027f004c0596e2363762aaf798381882a2 GIT binary patch literal 672 zcmah`OHRW;47Ewp5~&Nm;wPc9A_y22Q4nHRRizuk0>l9(Are`nMafhuD=y0c-~?cI z;x_4~mK?tqzp=-jufgL3B7zt~01F0iXNlLH2?Fq89bnk+-?xL|)9YFLs;jP52YTm} z*NKi&z!QSr?aO5djaD=Cam(GoUEFi_@c<9;*p*iESncP+@83K@z^UDa`C2ti+*#uF z`VM#iaXy}ybd;zVKoy^v(Gf+H+xRZXBvS+GO&bj=Dhg2XILnd|{p&r4N*j}>(ZnQ0 zt>FrCM0uXCQR?g-7l&jTUK;CUnq{5r=#(_{0xNYFWxWnXHmkN3!2_b-wWuV(`U)6)|-Q!XHtf|j+1Fd6< zo7hBsr~`7n%ZJktm6dAft97@gHr1B1t#;I|+IOYZ)E4`>`1zX#$Z<-qVZ2lf6L#is zxxNDrh~MKk`}8szjEAZ20XqFmtcl3lQD$Gov+;+8em2%XM`;S(8zc#3L$~fjZLA&j zqp^+CQqu)skK#OICFfXXV0u@??t5E8eJ55zl1wNA}hRqEA}sb literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/freertos/freertos-lwip.cpp.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/freertos/freertos-lwip.cpp.o new file mode 100644 index 0000000000000000000000000000000000000000..82adca1d9d9ba2f1aa66d4872780f8d0db0d973f GIT binary patch literal 676 zcmah`Jx{|x4E2$uB@zQ4t@x5qnFxZOiYN?-rK(C6!T{n2T*@IL5gH|jfT@3$KfuHY zb`!Tr2C(#Ezw`X`3S3(G26X3yu0bJ(9>CXfnxUdZ14~G{W&%e1p?40!FsqDev z2=hv-FaoiUp>uxM4WO~o3|z5pw?tcPT3cdU?1(*^Tg`pBpABC>^8^M~~a&dzvqQ#MpC#vgsPY0;Mzwoc_xTx1dPe%1NW>Nm3 zdW16s_Qb8^=A)y#Y}}VTzm;+ZL6@2ZX!ENG7r`@N2%m_0Upikyly%?8N0cax`~Cv8 CU@(>d literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/freertos/freertos-main.cpp.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/freertos/freertos-main.cpp.o new file mode 100644 index 0000000000000000000000000000000000000000..9fb8491057223c93f7ab29a36f12730dd02d5528 GIT binary patch literal 676 zcmah`Jx{|x47Ewp5{ZFN@g<=$5d=LIQ5X0+=&^>wT=Zbuv=J$pk><@2S->d7BmfMIvk7ET|`KHK;hxK@G=gYDRR{yN{H% zHcR4HYx0G@f02Dk@{EmARP1toLnh+Iu}&tc>ts(yq@lm?ukN(0*CEfw^){wa@!@)m z3j+0|trQlL^lq+|QY5A*pgAK7bK-?lK|nq&6ZN~@t47ejeK={Hhq|p>)Hy}o zBqkn_Izs4O-Zvwvt=1!7ZMa)%TkSZzYESK}LsweOe7T=X-#@bi0;lpC=1b)?xU;~k z^&RqvhKU(Jwv8ST>FhnVCWg0@+z%zP$(tqpWUL__XBp|iOPVInIP2U++E_ao#jiHW zD*gT<2T1a4wL+BdaDGE3;f1kICRxz uw<6%XV$zqryp?kn;7j!ayzw=_2V@3>^a-qRP?*$P2QTZsz&3v_=OTT}!1Olh_8s;n2G`O?C z>-8P-h+fm&>LHQNKQn7$csnZmi$pe=SklkN8q#r|lODcjS@MRn?n9)FwWBm1+a#|w zTS5+y=h+&iuGr!Hl1#!2W1UR0sFVF1Lxb%v)t!~~I`C{wpi)3<&8P;P;A2y$u{xbwA*J5y6Y@AI?%N0RR91 literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/freertos/lwip_freertos.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/freertos/lwip_freertos.c.o new file mode 100644 index 0000000000000000000000000000000000000000..129e5c83339bfcf8724d159d641acd3f726ef5d2 GIT binary patch literal 676 zcmah`Jx{|x47Ewp5{ZG2BEBS4CW3%d5rqM;>$riNxa~@-i7)qa;p=CTAmUX1hU2+%nqp@r zuGV+J19*CkM|TgYF{vG9Y5<_J_r&UmyiIfeD9oBS3+i554JyhqP=jHTm}ffcT!%_q zo5sSRy5q@h>%S9egp?7|F6hdvO9{OU{ZHRTzbT-7M*b+M~x0=RsKNr4!rU?X2XCR^RBImG1@GTkBn^cWc z?rkWQwb>{h+r(6Q|3$VjNpsc;QNGXF37(3UM>?KrUdOxILk+&fzq-SsUK=AB)mxjO z{6qD~&(N`Fn*YToMnGrTxGzP%E9ERY9jX^j+h0ca(Rl`h@QL0eP#D)+L0;BUD9iA0CcDmf&W__K^G{RQyc z#BI{0mR{_4erKPZ@BYKRQi{YB1+-v9VL`lbCJ4xri)eo4Oas zo5aK;Ql|*L+vlr@8XL{XSKIEc+Ee?^fjU%2>co{+b6@S}()4ehK;YC~!+fop26vWt zy}m;p(PW%iJtWfkS87cRZ?nR`No12xOZwGVLpsiL(!+6@Chs`wK1JGCn~mZRo8+}- zE66eOJX@pG6+2v9l1X@BtdmKWb+Vr`Xt4d2y34X&8=j5p?aZR$!}S<90D4Y}Q~Xv0 sd{<2RvX{4V&H{X?S%Npd3HX4_fRKIwey^C++rmLr_Y2+^5xnUB0o}bU3IG5A literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/freertos/portASM.S.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/freertos/portASM.S.o new file mode 100644 index 0000000000000000000000000000000000000000..1079e672c12227b9ef504819b88ade1bb36759ab GIT binary patch literal 544 zcmah`F%E)25S$ZHh>f;dS!tnH87mtKtt2u2;D{trm>4({t^A7q%%`}^u>ow{WN&t| zv&(Sz-0pWuDM%>HQ8VD<8vd%pIRf+%jft4lBpK9@N`JkK(Hr#RusP`lo2S>>40z}? z+r+&e-X*S!$Hkh2(B=-$QrYxwp-;vd=%gs1qhqX%wRx7@Y+AII{UH%q!KSm*}+`u P5!FrIoA`zWRfz5j@zWlk literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/freertos/portasm.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/freertos/portasm.c.o new file mode 100644 index 0000000000000000000000000000000000000000..05b7d64621a7ba4bda068fb43d20a09bcf61437e GIT binary patch literal 668 zcmah`Jx{|x4E2$uC4zxZ@g<=$5d=LI5g6F2s&pX?Ab!B5M504z)f^H`{j=;9zW|<_ zxJ^2Mr5F31-`Qtp(!IY^N|BhNfEJ7>%!wDy1OfT9O4RFgZW}@G;rXm_8R{$DqV_rR zCNc4V)CofG=BXJ`ZM`1(YRlbGyK2wbR|o1)9lO$M?#umL`u>?G5IB|BFkdOB!JQ>u zt?!UWG#ZYr$x_`X(%ENfO$={w#{N|zn|xT(FUA_uah8$p57RVx!&&<=(#G2HAbz(= zR_XT_IYN?Ws}-Vrhl?9B2``LwGRd+|_Hzmiw*Rm0qNvw`XXAR?vnc;?J;pVFo}>H} uzZC)B6_dW~<*l5v0AH#X;EitpJ|Ht7q%UBNgTkcVCU{vl1@DRoUUa{>j4e?B literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/freertos/queue.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/freertos/queue.c.o new file mode 100644 index 0000000000000000000000000000000000000000..2c535628a8256466b09082809328a93404232807 GIT binary patch literal 668 zcmah`Jx{|x41GtEmPibIiZ2P3i6G!qL||a6s?vopfcOEIauOZFM{|*2;?J@&@C(3h z;x_F7mK?u#erKPZkKXl_QVL=U5vB}?OA^FmL4**CK)>6)Y(@Q>`@`00tj}~Cog>N{ zYtkXqKEdGP?j%8DshNao)n8W|YSY_N+iFMc`O<0<>-~Iu|4b4DyqVW9U#O>vdvkoY zzJ~yKEo@=+0MPk+=1fY_jmr2a$k{gs{a~DdPV*dk@SJ7#iOxE=i8juShH2q!KGW@Q zvP)^6tx?I!9Zv7aB)l-z$t3eS+0OxKX#4-_j;nfYifmkOZH&qf*JD2?r=Bn6Dg9Og td{<2Ra+J4n&XMz_X63x`W%7_*W*~^q>Wnd))LS83*L@N1v7j>1{Q_yiENlP( literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/freertos/stream_buffer.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/freertos/stream_buffer.c.o new file mode 100644 index 0000000000000000000000000000000000000000..e6ce8dd130cdcb87c9a81a654f4b336bd0c8710f GIT binary patch literal 676 zcmah`Jx{|x47Ewp5{ZFN@g<=$5d@ryC=7_Ds!A8a0AfaW{6O%tQE3+m$N%E5igE)GSR$F_H;lRdWC;=$3?v+c{Z-MHevaP>oLv= z)N_=d((@AGyJFIpz5FZZ9Dy&@3-IQb2_ZpdAPS#^6()sAJw7YzzA5gCh`i{20f;d# A!~g&Q literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/freertos/tasks.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/freertos/tasks.c.o new file mode 100644 index 0000000000000000000000000000000000000000..a2ccdacceb8c69431dacdcaa133e14b3d9bcfae1 GIT binary patch literal 668 zcmah`Jx{|x41GtEmPibIiZ2P3i6G!qL||a6s?vopfcOEI5{U{0Q16h+#Ghql;1_`1 z#BI_6EIEGf{LVf*AHC}N7bJ)$f(RiNfqu7p*^2r%_lK?1SfA-OI!BZ@ znMsFG`vilFyORWsrDhVURexP=s7-H6ZL1x%=S!<;toHNq{WDDv@M^DNzEDjQ_vU!L zzJ~yC#y(j+0JMG2ok=OWQ4t>nxoqs9AB;25skP99mpsp&>8x{`Xye>yn7+Bp*1G*o zb}7xXHA-2r!`U5~gcrs-nPgrk`#B&DZU0~0aapfTk&WxEO;GXSdhF-q)bq7CrQb?` s?}|xZj`CK{IdZ<#ES)#LOdgWU3Hwj4ao3HgwcL(;wdQW9O||80s~xqg_FZW;_4R%(eg8}o2%N@im@m}R;LaRx z)_2GwvT2s&g&q^>;ytq_hPQd?A0@KMn)%G&SevKut4)eV zyFbYuvOHU>Qk6TLU6Dz6VXTu$=5?~4Luj!5e|0BSy&gOp*IS=N<%jDr&H?m%DNpfR t5%66x>C0Z;$~g=0rFI40_zK_yG6O>T1eQ3cOzN$I*L7duLlMD??iUWcEZqPA literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/freertos/variantHooks.cpp.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/freertos/variantHooks.cpp.o new file mode 100644 index 0000000000000000000000000000000000000000..783a4177dbdbf9868937d48f3607b4955ffa63ca GIT binary patch literal 676 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 DD41f# literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/libb64/cencode.cpp.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/libb64/cencode.cpp.o new file mode 100644 index 0000000000000000000000000000000000000000..b7d5c531a83380156b2ee720692fd10a928491a7 GIT binary patch literal 2104 zcma)7PiPcp6o22$ZZ>Odjj7g6GA*OK=(c00TQ;OpW87q`8?5O;>$RKN&A_hNY(93! zc1xiZtWXLC>s-VE8|b055gL?$m(Wvh3fWsOg~ zMP;~k1KXTTG281c!u?T_b0gD5qP{EWaX~Y03d@Dq!G&@9D$d*BHca85DoF(0TWGR z=n3&Xf^w}4u@D~%@$nEJ5Al5=zAwagk6wnCp&v77jdr6BKm>0{5J%wyA0Kx49w_>F z!^JUZ`gqjEarnl^Z@L)!FPru9!mO#6Ifs-5C8KGMjufl)s#Wxure#>>PVr)Wp>BR! ztJck?Nby<~KQU^T{%hvPO0|XZTqw_tnf2LFxLh$BH1=`SUHbtn-`@7^J>Sy$5U=|7 zRkHYT@c{&S^Rs!&D513)o~;PaGFuktvxa4WUTQW$r+~iG3Ott$u0vO1*J|huv-T|3 zTbJjuv_d;2cx$DX7v|^9I?ia~+_Y|3R-;AVXO{hq-pr<J^Z_O<;`LNS&+yH_g|NvQTPA= literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lock.cpp.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lock.cpp.o new file mode 100644 index 0000000000000000000000000000000000000000..b5b2359a180a6ac83bb9123d24c68f2922816feb GIT binary patch literal 3456 zcma)8&u<%55T0e-G>Jmxx+YCqs2nMPDRdP?get@#RYOw=QleH!fDo%^dugot7wb*c zpbC26zyS#){s_2mEC(bw^}>Y<5^&%T;EFhKBYd;F6VHx+&?i05eD9n0&HFLl-A`V7 zf@kf?cC2Hi!NM+pzx;}=ec@nf0>_6;u4Vqv71&!;)V&lRG5nm7Es;TH^_ zU6=&E{?DA} zo2cM?H&nqfUjpW#j4#s#!*At$mcK%u8UDQjU!{)?|5c88{z+Pt|@#92US;i9e7>gUEoU!cY!w*rcS?kJ7^9Dw3g6Xi^4FD5*Oc!l8~9O-D@Wk z2NBoYkB99$5gmD9cRz{lPM*{3^oP-yQaY-nYWi^yI_P#m$Y_^;-RIcCbj4Gp$y* z=Z1TBIQhtqM7=wsbe8P84)mt;E(vk^C<0!Vo$PSa7&XT}TH^47!3>hiYK%r{(&Bka zpX!UX+^*&J8GavtN3o~&LO%XNZUd0P@SvNx25b^%c27L4Hld*95=TK}IHUlV5%6GO zOD?VW+4N}TG+84n_8FX3n7R_F&*_U9{~Jt?RaHG>_bTd<)+n_;J@0tc2iar7#j!h} zpxN(s@js&A@{OIqB}v?F;3+c1bv|l4hd?|Q@ixy|_Pvw?7_KXBtLPjjUkNsjId0FQ z^Yi!r;`ljh^YT1tk{2aP{AIA26XoNX{uyAdW$rxhO?0jIYCaB=Hqm<>Nb9XAJw5}` zOW#M2t@q1O)_lMEjouc=<(W@&x{$din zd2Cki_ib>TPnztV-|>2V>q?KmutYB~dJS-s^!OV=>s?ZMWu^DN(d&Slbbjv|y-lUZ zUvRR%`$muNdy?Kgqjyc|Rh8a1xt`ShJ#c)-(l{@-2YDRVKevbIr&2Hb0iE8%k8q$h z5b8HL{9lm9aopI--7x0+xsQow;XlO~ozIcaSk?xYJ_Yf)nkafFP24W_`?HYX#QhI) C<{FFu literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/api/api_lib.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/api/api_lib.c.o new file mode 100644 index 0000000000000000000000000000000000000000..7298476ddc65997b1bfbf951f510460d0f2335be GIT binary patch literal 668 zcmah`O-sW-5S=wiYtVzA_ytl=M%1NZ^x&JXLcqZy{k*56p1McXv&Dff_ULr5RgyvME!2}q80S7?+#igp+41Z>Kr0( z5)-GS_7HmKx5p7R7Mqc;R@^nUt~Q)awWYSzt}Cr3zS_^F@1IEmfm3@8^SNpo+?nC^ z`VM(`*f70+N@G1B()oL4O$={Gg@2UDCU2JXgRzEmoadwmFIkp6@7?fk!=8$0G&$1(a0X#Qx zn{)t6FZMgXv(L^)@9I)1MPiBqnlhrWAYM2Y1mx2^QNP>0Xa)W2yMxwAs84m9I)})c z#KbA7J%rx*?Qukn#b)HI6?aXos|{yUZK-Xw>q@JMul954`)86s;M88je6E@XcV>9K zzC#`!Hcaoc{80~xbpD=M6T{n4;h!Y3$(tqpV5}h>=Q-)YOO_?iIP2U*+E_bE<5!#H zwSIq*9VB_SMky+GIK3g0@WNOplg#R5Kl{*N`~T{W%6e^hHm`2g^2qFq;k!aZOUv{G5&HZ8Lw5!i_OuZxI zO=i+DseOdO#ob9lt)+Gns#SkoZKzFeOKqziwdYH#sjv6*>HBAzK;SiA!+fEh2KVN8 zv%W_GQC1XsM5N32+?o{L7S2CPWV1I*`oUO3IxS1mqvt%&o^aN?O|-GL7^kl`D;vH3 zBD+ZPT&+sv_BXpBQ}D7_CsWMpWH$%UVDta#j;nexJR8?rn?&xz^%&;>dcL?*{89vb qS4{e{m$!1x0(_}mfw#R3gn-O|kUjy{h)KN_9MpAR-~$oCi|!YJ{ws(8 literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/api/if_api.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/api/if_api.c.o new file mode 100644 index 0000000000000000000000000000000000000000..5ec4d9e97f418afc7dfc8461db15b252edebc375 GIT binary patch literal 668 zcmah`Jx{|x41GtEmLLW`#g~N2L=bQ)A~3L3Rp~+)K+Nb;g2)i4nnQw#Kg*27F95rV z+oS_nda>X6oqcvbdRLc9DTpZqm@*(Nh!>6p0es8@{ciW774)y~4q7LnKGkh>4k>RE z6Q@vn6nf{k#}OKf&B#|P?wVRx8_uTMQrl|Rl~xm9?dRhAXOf`6slA5zTs2MHnc?;N z4m==zyf?#C4*;FNXV%2z?Wpii64~UW<2KZSrhfZ*?3MAFjtZBT&y_aZ10H u0=_FIec8)fIcEucsab+IzC`c|G6RM9BrI@Hn$%k+Ue$dO?}>=K=zamio-DBd literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/api/netbuf.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/api/netbuf.c.o new file mode 100644 index 0000000000000000000000000000000000000000..2be2134fc197f5e92eb4c4e29d4aee96a8ff1e67 GIT binary patch literal 668 zcmah`Jx{|x4E2$uC5VAf@g<=$5d@rC5g6F2s&pX?Ab!B51koV{HCG8H{%mI?egQl; zahr4iOE302zq8NIXZQ9-DMez60-7_TFehF(6$IqdGEuM7xo!l#yT_A8E7TXdN$peQ zO=98!sUw8m)x&v2wbgp$s||NcZL1w;SM8~Nb?8c~nJ@Qq>HBAvK;Tqf!+fcn26q;C zwZ20h(J-;`_*wUfboP;26T{n4?q4Lb$-5=}WUL__XBp}KYnmoQoVD*GZLA#);;~J# zO1nSF0kS+>tx)AVoL`YicwwxQNfvdopJQmS{eN|5MZG3G8`s;MM)`;9F)ji0e9KSq uTM_VGG3m=*-pV-(@TGbI-uN2e12O|bngA;t6eji7!OOZY@UDp9MfVHyaV*UM literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/api/netdb.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/api/netdb.c.o new file mode 100644 index 0000000000000000000000000000000000000000..32c1cfe65ed175786120b2a21070e54b5d9c9f96 GIT binary patch literal 668 zcmah`Jx{|x41GtEmPibIiZ2P3i6G!qL||a6s?vopfcOD-Z6rFRpyrTZ;?J@&@C(3h z;x_33mK?u#erKPZkKXN#QVL=U5#|ht3lhXrL4**?K)>6)ZbkjO$K%#{tS@vMofFEN z)YuW!A;IA4;VeO8rJ00k-QQGOYTMgUyJ}Az_|j??tNna@|I88uyxMD+FICgTy#-#c z?;!xjsT*270CfJIIb$ihNfDm}x%ACJ4~;X>HqW64&smm^>8x{~Xye>uWM5sH*Sh^p z_9@M?HA-2r!}%SVgcrs-nPgEX`#B;FZU0~0X<4sLk&WwZOi}USdhD0v)bph{rQb?` s?}|xZj`CK{IdZ<#ES)#LN*Cw`U>fG>b? z6Sqk(wd8mvp0(HBuipKgQi{YB1vFl+e|SD=UbOY4Zc*nH zc@vu`A$0`kT|b?NRBO~jUv0QsYFq6%yJ}DEt3y{>&0@KqOTT}!1b|by4fB<98r)gn z)%p&3M8nu7uV$3!0g=u=Q)?nbJI>>qARB*J(l5pu(ovR?9=xY%JjB1wW2lX_<0P8c zIIA>VLJpAU`D%qO-{bs{Ov6iKolLW+lN}vHgBMt;J1gq75ZSoi<`m^0uE%}_N6%6I w7f%boXT_v1N4YEKESwM33+Jt`!F{;Q07&2P27|(+-a2?$_XFM&5u)h+0mYszp#T5? literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/api/sockets.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/api/sockets.c.o new file mode 100644 index 0000000000000000000000000000000000000000..7c6edd8b7a77020543c2baa533a9703ed457188f GIT binary patch literal 668 zcmah`Jx{|x47Ewp62ZWy_>xeW2!fu92n=jhRk{!c5I^7&PNG7gsCP&(@n_i)zX0qe zZj%mR>BWBMclO!&=wDwUB8VYGFk=95L4tT9h#-VTfI+W!*@^}?_eZVMSe>a3bdM>o zjZTMv2NVVuckKik%grRjHGcy)am(Ar9o)rzUs_FlwVw~)Khp#SUhOr^7piIE-W;#j z_aFeUqwL8zt1(@@$P#RP1neLnh&cu}&tL*U5ekNkiNJS9em@>yT&Tdh3&@_;5YOIe~h<6sPoC uDd4+e(wDuwm2-~3mzpJb<12)aATv-1pM)h2N|So4#H+e5;(Za37u_$XW-Uhm literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/api/tcpip.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/api/tcpip.c.o new file mode 100644 index 0000000000000000000000000000000000000000..1aebb2c2171494b6d22c2bb0a4162e8d451fc791 GIT binary patch literal 668 zcmah`Jx{|x41GtEmPibIiZ2P3i6G!qL||a6s?vopfcOEI5{V3fsJTio@n=~X_yu4$ zahr4iOOD?=zq8NI$KduxDFrcw0CNU}CGoU%X*{t>(dhO! z*{3wm)~aOX4(E4d5?&bVWRgXl?B|FywEcf|r&YZ!MK-RtF-7Hv>#<*wQ_s9SrQb?` s?}|xZj`CK{S#rMAuADc%O74@(3UtuFGX8-^I literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/altcp_tls/altcp_tls_mbedtls.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/altcp_tls/altcp_tls_mbedtls.c.o new file mode 100644 index 0000000000000000000000000000000000000000..44040a326f75577c73865665432c202b5589d49b GIT binary patch literal 680 zcmah`Jx{|x4E2$ur4j>Q6<-o66G6bKh{C``Rh2G;0mNKg(nwTlplS{YCjKmcfRPEF zo48FnfTb7v#qaF1@1uKrqm&{sMLx|L(RD_=)>PnAjh2aeoz7Lm@7+BfHO^Z4TsNtG zjJ%0WI3#s|(7Sv%4XCnG4QguL-Bfk82`kxt(eYeINC$^4T z^%xfbdXBTdcwz*6R!sV`m%DP#0(_{NgSWp5)Bu?QA$@S^(# DvxPBx literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/altcp_tls/altcp_tls_mbedtls_mem.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/altcp_tls/altcp_tls_mbedtls_mem.c.o new file mode 100644 index 0000000000000000000000000000000000000000..c65f7d2e45b457ed95f97df0a2d31d350a51faed GIT binary patch literal 684 zcmah`O;5ux40UL`QHcYef`Np_i6S5xVsPL#jj;>m0OCBQT_h&0Fs(*{6MvRJzz;xR zxAoTU0G3|t7r)qX^3l7!QA&ZBf&k_W;5sK>I}-%p!!kg>+r4TA{kzAb=2=^x>lSp5 zDQ~QaMxYKT^e!JxL#VCPLtm}Cn`%pKJ3FeOcGbQst!BR5&xNm_S%LzmavSDL3mAp}|36Qg4lTS@%u6CnEBq F`vuSxGbI23 literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/lwiperf/lwiperf.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/lwiperf/lwiperf.c.o new file mode 100644 index 0000000000000000000000000000000000000000..23a586cd79b7297d8cd80bf6c2c2a7397e028ce5 GIT binary patch literal 9560 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 literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/mdns/mdns.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/mdns/mdns.c.o new file mode 100644 index 0000000000000000000000000000000000000000..8f776c30bc1013de2295a0f24118e6030136b98f GIT binary patch literal 20740 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 literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/mdns/mdns_domain.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/mdns/mdns_domain.c.o new file mode 100644 index 0000000000000000000000000000000000000000..ff9253394116c7934b9183b1be39dd8d760d242d GIT binary patch literal 6540 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 literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/mdns/mdns_out.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/mdns/mdns_out.c.o new file mode 100644 index 0000000000000000000000000000000000000000..ffb2a088f3378be26a5cd8014547a0a8aa59bdaf GIT binary patch literal 8892 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 literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/netbiosns/netbiosns.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/netbiosns/netbiosns.c.o new file mode 100644 index 0000000000000000000000000000000000000000..cc6ce55b8abc160159fd6cf1a5bf5d181a33cc12 GIT binary patch literal 2864 zcma)8TWl0n82;z7+ja}Iwk6Q6)afplh1N;C+hD20wB1suu$Tz?fR$x-cbeT~FSD~# z*aZ`tzym}RmA+^T@k(L>iGZo`g`~degURlj3MMK+3{e6v+6N>4|ID22FlnNHa^}B% z=R4>8=d%0yo&ysc#{m-#La^civ^JU<&!DM7&;jl6VDYW1-nov;{^OYPtI0#>@NtY3Tj4$}JpCF9)xceb6=1Id;D`+f%CaSN!}W2+=pj zeyv4dZKM_b1g-Ib0r3`}y{0Q1kne+Nq!fuZ(@Hy%yo$yQ6I>s>Msi z+r=%qs$bIY=skh8{nRsZY8M1c!a`SBT=18vcL3yYJ2D*7A~3MCKhjl>*ztZl9t1HE zjvUd7!}D4!{DZbNyh+6gv#LYp zd}DW)CTJ_z911#Yx`m*?Pm=Li>|Fk?Y|l~xcwKy6vwvS5<%MT#n^wlT&;nQ&jll(Iav_>bz99y{ zyi){dcHx^%d`BJBT(`&&5KZe_k;khcz&cmnz226Uu4oBZy*-Wy)#wG6|EkMRyZnO7 zKk4$%y8O4%r|qGdv|;_;R$g4&oQz+$2auPNhD{fp@lgD9m$`Q#Hl1et7S8}Q&s3jAiC1$4M)4Hkx zUDBWKPf0NO~*k>XU7$C zoH03B$mP^LE@kw^n5-Cvo=MCYY6%zr{{*+mJo{c7Zv8)4>C0YUEU$@Uudf@2TWiWT z{5E3yFC6VL^>L0%?==%TBP4Vt=!G1?Mv}q~`%piDjWE<`yh&_Mz9n?%Jz>K5=xuZI zT|qvY3-Qrh7~fH}i7$+eWEmZgWtv~gQ9EO6whq98jhhJT!^WLO*E#Mj?0`qw9GBv3 z+z-(vUdA_$eDp3cVSE=c;N%nWp3qxG>!4o<#`gu<&i$A|KE{Emy8X>6IO1bMb0WEo zjclqJ3GuaCrun5DwcoMf8PLoiehP?N`3T&^{C2VaNp|eSIrFqa=*_lEU Yrf@SFsIx81r1d*-9atCVd(LqG0y0XwCIA2c literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/smtp/smtp.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/smtp/smtp.c.o new file mode 100644 index 0000000000000000000000000000000000000000..c2686331a3d76f35531e37035d92af709933859f GIT binary patch literal 11256 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 literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/snmp/snmp_asn1.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/snmp/snmp_asn1.c.o new file mode 100644 index 0000000000000000000000000000000000000000..62e3a4d7f1a31c19c5b319388c0d20335c888ef8 GIT binary patch literal 672 zcmah`O-sW-5S=keYe2zI`~s;bBkIy(74cR|?ZtRdJj>;sqSJ0Dx)<4i+pflY} zoAjUqlX)-mc4lYxt9N&ch#-a#!JGkHI})^~f(Sxb2IzOYH;t%&|8&x5wbg}cLg$q7 zI@QS#@Q7e=^>`jbZKWQExZ!W%Htu-4xQF|A=u4|vEcf$a@-s^i@G7@qzEn;V_ZE1y zz6Sw-$+OY3HhD`80F?R6tWGG}v5T*QZ2DnAy=bdJCB}dnyk%LM)4$F`thBY`Ve)QM zQ|b6OIiNJpS1V+0kMlD!4KIy#GR>k+c63Y{dVzm+XGOgxMK-RtIYsWn_1G`TsprW3 xrKcspXT_v1N4YEKEIA*l7tUK>BM-@C27>TSzRI95skctNteX(;iHM@;egPYmE#m+H literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/snmp/snmp_core.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/snmp/snmp_core.c.o new file mode 100644 index 0000000000000000000000000000000000000000..ebb8420f82fa59d4c5101b3ef687b32c10ceba3b GIT binary patch literal 672 zcmah`O-sW-5PfTs)_{Va_ytl=M%1NZ74cR|?ZtRdJj*5q>>+JwR?w4w)<4i+pfgRT zO?uFQ$-I|&JF_$U)xEz{N#1iK(EueZ3MlC=aa@oOJC|H+NYE^ ziHZ79M+Cj=r}GfCm3ru_4R=dzs~u-o?Wuir=t`?uEcbIU`I#jMIF;KlUn-}GI}5y8 z-+>2YgLL!~566j)0iAuO)^soIGYGduVAHCZo zt91OE98j9)s}-_*kMlD!4KIy#GR>k+c63Y{dVzm+XGOgxMK-RtIYs%0>#<*vQ_oTU xm!6gYpB0n79ObT@v*diJUN~=kjoc@f83^K=e3e0AQg5AjSvMix6%j?z{Q`GcE*Ss- literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/snmp/snmp_mib2.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/snmp/snmp_mib2.c.o new file mode 100644 index 0000000000000000000000000000000000000000..586e889b69636714e5bb4d5699dc9ca348b9723d GIT binary patch literal 672 zcmah`O-sW-5S=wiYe2zI`~s;bBkEGMig+uf_F_CJo@G-5=8#&N74+nv^$+wH=$j_f zCOzoDWZuiXo!OcF>fYTdrASOsKr=>kofEG$5d`GZB2ll?xoHHw`=_JESxaB&Cbf@| zH?fHlQU`$E)#GVMwWWIKt2K8+ZK^G2TkWV_weL!+X)O11Y5X%y063M~FkdLA!JRo? zt?!UWlnv71bDBiwx=*CD&(xX-(T?)?D#*qkmh_9UhIEu=r2B7a8V~TV{Sazn?I?-f zZJbp){!R9f=J{%cEZ^hoj7-BzW1UPhuag}eLW39hS9em>Ya+67z4ZyoKU|Of5{{n3 x{4bssfX|9aUygED&RIAgsu#{%UxE8@nE{Z#;mZsPlX|P*W!)IOD`^AR>q%1TbR&*9Gx96F~qzECURBy{lF*xO+Toop#i@YD4#k z@;cE`3b;?uyL>nap|(;FeQdZ*+`vs|3%79x_grZ;jn#fGeEm!l1f03sFkh;si8~8? zzP=IVc3i|~K{k1_pq{kVprSkn6~7phjObtYK2+M; zaT>kaB%f>hC)uSe&sZx}#V%(@WFlT1>tv!uo$Tp=H1rDp>W<5LZHjDMZ+(J_57%SA zAg7*L@t2;L0G}0;z8vMQoU`P7s9rj6ewExOml+7cCwYTGX;N>EcvbgJye}e(qWcB5 C_Al@N literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/snmp/snmp_mib2_interfaces.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/snmp/snmp_mib2_interfaces.c.o new file mode 100644 index 0000000000000000000000000000000000000000..2c5febdf1cff3080711660a834ce5f0b0cd6bb28 GIT binary patch literal 684 zcmah`Jx{|h5IvKmB@zRlqJV_TL=a#VC=6^>DP0Hyh`Dlt5g8Jy*hnz(XZZu{NO0HW z+N4WQI^TP~=R2SMHMqMKLI9h90A>u}rXXH-A_%~TWq@J7f87p-_fJRdv#z|59q1in zUTGC2APx|ESC6M5G*+6SFV@{nu_d;hme>)yV&COf(^&22!q49{fxxNVhWJu7jog{z z_4*EY047Vvqcn-mM@eRN{-R=SWDFq9XKGc1(dI>bWn}e-1^KM30vQ9Zxo|Uz#LLTvx1)dv;G0WyMEJT z+N75bd^@jiXLe@4diQrqDH2iS)665f%^j~jA^6mwWukt!d(-s$56{QV^R~X!E$W;g zZz2=Mqz++v*H32w)mG|3L#?};YD;Z9J8D<$sRLJ9O?A1SOFw_p1PrJ08upjUY52~Z zU#;(uN0g0{bdbd1#UM`gkVt2ri8Ud#9q0O0EE|1T(l5pu(qWd79=;_>G(xQN7-(bd zI1b-!lvSE8aQ2bs8EXYE-{tI*OvH<0o=h~)lRX`QgI`$4J1y$9pjo)y#>C1GuE)3n y&@;`W_+A)%S48@`Ts;YD$3?Sy}QXIIXPs>ETPUor-^zI%H8>cOOuA9_8 zLf*tC8j{)v^e!JxLaMA(LtoY0y4p~i&X(F%J8I9BR%0g+DM6Kf(wJIUg+ARE6~(oe=3(ovd{9=s$;Ji@>BeW;DK zlVS8~tv!uo$ToV8oa{4y5qcF6OoPUtxr+*;d<;B zaP%B!fAPEkd{#{Qa+JGr&cgXnHFw_pD%^+541n|ruQA9?>aBqnb>HA!5h0517uv)y A1poj5 literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/snmp/snmp_mib2_system.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/snmp/snmp_mib2_system.c.o new file mode 100644 index 0000000000000000000000000000000000000000..4bfa726cc075054827ece66747bd69670a3f670a GIT binary patch literal 680 zcmah`Jx{|x47Ewp5{ZG2BEBS4CW3%dfx^HnT>+ zxlxvUxYU*!FChn%=Q%5dF5lU986X3IA(wC#$m2-}q4^<22?XQ!E2DA6MOV+`vs|3%79x_grZ;_0@hZeEm!lM4Z~+aJ*1WQ|!#e z_4*EY0QtydLz6~lLmOu*22lCCu{t7e$Ay0uW|KDy>PcG-D#~+E@ryCZh|aqAq0-il z)9BSEd9CZ;!7inF#zrYCb~(Ev6Y=6$Clk%hW1s_f2tMMC3*H3n(2g Ai~s-t literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/snmp/snmp_mib2_udp.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/snmp/snmp_mib2_udp.c.o new file mode 100644 index 0000000000000000000000000000000000000000..8b13b9e9adc2bd9c660ae8f590b5fc4f271b31c7 GIT binary patch literal 676 zcmah`Jx{|x47Ewp5{ZFN@g<=$5d@qH6b8gnRiz7I05MmWHWC@GM9o!#i9gF9U|oVV1aYC`*j z@;cU00(eN&yM8(gp|(;FeOz}paSOMd9o)q|JaDDe%$NJQ@bxoG5OFGh!|_r%O|i2O zSL-|A0c0bS_DvF9^e4kq4FFX3Zmf>T+i~t+gxUDbf*NY8K}A^xYVc}IJfgGqW2m&X z<0P8cIIDF1JJ_c*&sZyD`7Y;oWFlT1>tv!uo$Tp|H1rDp>Q0M#P4aA9Z)3{x57%Q{ z5vXUHpVIRZ;k#nem%aQe=PZFQ)eG?ER|!5rW*`cmgf%9GNj*L*>%J-Oiio`EegP|n BFOC2J literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/snmp/snmp_msg.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/snmp/snmp_msg.c.o new file mode 100644 index 0000000000000000000000000000000000000000..f0225989043d8f37afa98a72c7d439425f8b252a GIT binary patch literal 672 zcmah`O-sW-5PfTs)<6$_;ulCgSy7jYRm58XSNHZtDFrcw24)Pn%1F?f2pR~n4D>pk>w2Si_jpu4Yw2^{MEjWX zCNc2<>VRNy`EVMcQmaOxTJty5rrPqh)sEU#`@XcA#$rDozkkyN0k3o$=1aviac_>7 z>w5?QJ4{DUseRFXK-z_G53JG-0|8|f{zAPfqu7p+w}X7FQ?7Rw!YFWbj~Pm zViOLaj>+_Ho-YE_*6Kk+ZMxfPN9{U$YF{0wBUf6@bh)34pTAjx45#uM_E*Yj@|^|0 zTHk>OWN9*bO=BAk(^N-*&OQ@sLeh4e>vyqi{9&Qrj5W|a|F-aJ{Xml^aZR9} yqdZFAO9tN+k-n_ut(>z2zEm&3n_nk12r>hi_$F{%MCxr&pv?Ovzb7Qp!utmjpD%9! literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/snmp/snmp_pbuf_stream.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/snmp/snmp_pbuf_stream.c.o new file mode 100644 index 0000000000000000000000000000000000000000..a966d8b0e90b4804bd0c366019329b0a1eb817c1 GIT binary patch literal 680 zcmah`Jx{|x47Ewp5{ZG2BEBS4CW3%d5ru(?sw!Ow1Bki0lps2!M7gU36MvRJz{Uo4 z6Sqm1T5|ke{LVi6zIyj}hzMc`0n8b|ZBD%QR1kmoOd5KLrMk1CUW+0d*V~$+{KNIw zugIxqn*XIICctOKq%TLgE9WdZAF3D5+g~U5$z=wD@J-%eP?*%)AYRt}67PwKqUins DF+?#Q literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/snmp/snmp_raw.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/snmp/snmp_raw.c.o new file mode 100644 index 0000000000000000000000000000000000000000..371c7c87bb9245ad94983dabd265c4b2264f8d3c GIT binary patch literal 672 zcmah`O-sW-5PfTs)<6$_;ulCg8Bv#tRm58a^kfof&f02fqu7p-32kjayxBvhE literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/snmp/snmp_scalar.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/snmp/snmp_scalar.c.o new file mode 100644 index 0000000000000000000000000000000000000000..9b19436644951150e45e4a0bf65bdbbd67fe56ef GIT binary patch literal 672 zcmah`O-sW-5S=keYe4WDzd-8Ah`Lm)BHl`=y%-OQXW7Jn1yf6Qh4$p1^$&EQ0<-}`E1OfQ42+-?vt{Xw`?(wK`)>7xH3GHLb z>qJL=zypHb<-=(RwWWIK(@_e;Il<#qNLZ;!Ru}-F$*U63!NkcF2ukNI%*QChC_0}gS|8PC_3v%i? z%>UBU65z99(wC#$m2;My57i6jt*?;#ko2QrhnKh0&Qq+Ta5RWtR2M)c?~%~~MH8p-S&#|G2GpZA8dQ)Zpt^%73j4Iz zxbu}ZChi5VCQJ(5|0X+>=2=UbEPd128JUb9kaaTIyiVS0pEUFv|LTsidNqn{TyJfH z(uM1>pOaJ1VY*A-On}ddNneg~SI!x7K2*+}e_)y1C6^fp!Y6r!L1t2Kg?L`~O}r%{ HilX}k)59us z;x@?umcFxn{%oIpADz2fL~I`nc|H;udZ@JGhH`c;HH_xz6`<;p=A}Aj2uVhW({{n0%+? z7wbFV0hnPj>hbZ`=uJ$b`T)vI6RRWAcAV-Lv26TqK|O1$K}E)Z>c1vQJfyqUL#VX1 z<3TjBu_^TZ%h{(O&sfPw=`I%;G7&G1c`{L%Cwn>~4*kNvywj{+oiq#A+n8DD!SxuI z1nN0TZ|Qr<;9L>u%Ua&bF-zd2Y6jl?D#0hn3}nJ5q1>16*9dvuH~Ae7WFmck0lmX8 Ang9R* literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/snmp/snmp_table.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/snmp/snmp_table.c.o new file mode 100644 index 0000000000000000000000000000000000000000..44e88b6b2fa746c958b46fee3a2a5de0ebdee200 GIT binary patch literal 672 zcmah`O-sW-5S=wiYe2+L`~s;bBkEGIig+uf_F_CJo@G-57ECS83hl{1>mSfRpl_N? zoAjUqlX)-mc4lYxqkVg$lp--j0nHfERYttVL=ccqi$tAP>$(>(o3( z-oz&AkvahME+0-qsw`DQU#+F!&S#C`m0-iO*)JM2a8 zHcm?||0H|J@_dzCmF;nMM5f`Tu}-F$*U63!p}`CMt2@c-)e+ga-ueV(AFjuK0Y}e4 x_7_hJz-PszFGsm6=PaBLRdeU9ufTn{%m7HA@MQ+MNxfC@qV5~KEh0qG{Q?0{E_wg} literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/snmp/snmp_threadsync.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/snmp/snmp_threadsync.c.o new file mode 100644 index 0000000000000000000000000000000000000000..97267023578bd4b00edc00c94de4ed50531105b7 GIT binary patch literal 676 zcmah`Jx{|x47Ewp5{ZFN@g<=$5d@ryC=7_Ds!A8a0Afa$G*UYxRJp4}C;lvdfQb?8 zUan0tfTb7P=XZXw@1y^4kBDFmA%JBDaAy*)GbaS#!z#d_*Sl>6gU6TC)@4Uri8gf4 zs4f#3jRB7-^lqLnLTIctLmxNYZQQ|KXAk%B0FPWNweV#<7ruTL1qz(X-*CQCE>rH* z@@jtvJOGuYlUF^;6FF3~EEX|+;3|hnGg44 zToXuhVovFKDd4--tS)=|uUyjvzSJzhn_nmR1UmzT@JXoa^7#g#%=@Oi&xOLQ?l0@c BFtq>x literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/snmp/snmp_traps.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/snmp/snmp_traps.c.o new file mode 100644 index 0000000000000000000000000000000000000000..9e4cbff9391babc492d9a9b16cee3a1373650213 GIT binary patch literal 672 zcmah`O-sW-5S=keYe2-0ieDi0WJJ5PSVg>*QhPBT6wk7$0eeUd*%kEUpY;#uAJCa5 z(1@)w@1{E0tYV?vM@r3^M?n0%l&BoEI zjZLNHpJbo1JYTI)<$IhTk!g5otdnULb+V%)($EY1t2-^~wJEZ3z0E1gKU|OfoSb^5 y`Cock0(@3X`f`-Ja?Xj)NS2D=alj$ zG4T-Uh(ho3z8RsmT916S;clsIwd3rnJ+-e6U1>G*<$f-{e`W~^oXTsMFO}28odsU4 z@4y4HQ96EY>j9v%_tcu0yq)C!Ng|uPS?EV&4RoAk(1YhRO-6Lqxr?;1b~21#Y?4*l z{Yefe%d^!ARldXd6`6z=#yXi~Q78L3CJk->U)@upY>{KNGa7X<1#&QIyL uQowh`q%V7UE9WeMFVze1#@7fwL1v&3pM(_-3X^*4#LK!b;yn?O7u_$yj4ZGK literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/snmp/snmpv3_mbedtls.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/snmp/snmpv3_mbedtls.c.o new file mode 100644 index 0000000000000000000000000000000000000000..8c558d44404f2184638a30530507ebfb53fd87cd GIT binary patch literal 676 zcmah`Jx{|x47Ewp5{Usy5nmE26G6bKs4W9xsjAY2Fo2lRrHw=-QmWp8VB*j62fDC= z-NbFu0W3LwFMemAeV^T%YeWPwga8%{;3_3vb0!GDhgE=Hr*l~gdbbb9wezNGs5-Py zD6eB34FL}cdKdR+A(Yn2p^p`}id(qt?BFi$;ejiy<}u&Th3U^cLBJ{8hWSc9P25@H z#rh6-0A`eo-x`le6c6mPQGEbqJ`$@ViguF5CqXuTx1a{vYEY3ep!zRK5|8L#`z}=4 z+Q~3_wXrF*{gdodmS-$ws&to&BQg;$j&(B8vQGANL>hX9e|4u>y*foUuD3Zu>4)pF zx5%mIIQ>h{OMuUcNneg~SI${-K2*+}H@{BqlgkVQ;fuV&ATz1AK|HVfCf*ehMbZ5N D@UJiu literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/sntp/sntp.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/sntp/sntp.c.o new file mode 100644 index 0000000000000000000000000000000000000000..eb734995160dd1cd06a4b2308feb106de31e3697 GIT binary patch literal 6764 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 T*3(h)@fqU9y@t-!O>qAOXrSyH literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/tftp/tftp.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/apps/tftp/tftp.c.o new file mode 100644 index 0000000000000000000000000000000000000000..1d4ee7aa58b9ca02816026323d0550974e72c94a GIT binary patch literal 7032 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 literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/altcp.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/altcp.c.o new file mode 100644 index 0000000000000000000000000000000000000000..62f7c4664019210798608acb5f201045300df493 GIT binary patch literal 668 zcmah`Jx{|x47Ewp5{ZGYiZ2P3i6G!qL||a6s?vopfcOEI5Q$0zs^*Yj;?J@&@C%CF zJGV&(u;lo?^E>s+TpzypH8<^5>_jg@8+;<~?yE!^_9aR+yC-Wk%fAMBtN0i$uLn=c?}aZXb^7r!9S^o76r= z-b5xCkU9W#FYX(CsxH;~o?5GHs7Y8s3ED)jX;O#nEh+b~}!roo*# zUas$ui;KlJ96g#i9)>z3(&>9*O@L^}S$q~`qc=O9UVf07x-6qlGke@vT?oj3CccPkNq5u zo}=t9o)&=5ib-FNa#zk-I3KFz&RbuBdvKWnkUrtd404lttKdc5H+WY>h@$%if9@{T literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/altcp_tcp.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/altcp_tcp.c.o new file mode 100644 index 0000000000000000000000000000000000000000..89a1feb57c3f63fe72ccd1868437f55f71266b5d GIT binary patch literal 672 zcmah`O-sW-5S=wiYe2zI`~s;bBkEGIig+uf_F_CJo@EmQ7K|;;3VQO-`Um<8^i7j# zlOA;7W#(nx&g{&7b#HH!QY5A*pcx~&%8A#S2moG0>^c?1Y v@w5o|teEs=FL&jf1^7_C0B?N-@Bx_tA$8}n;6%~K*2eC|s{aFx^WGWOv7=mO@Haj-fA+mbTd%5k++dvQ8ch2X0 z&OP_s^X|PTpL=mi2mvVqDQqF2H{>$GjH^=Ei5-}{aOz7thYNP@_HqEd*oE!bSiiGj z#Y2fmOULb%iNz%|)Or+8KzA9WZZt(ExrhUS=7;fj&1)Aie5Jh?m)mR0NCu!kcq#u~ z{ zUZq<9q}2luZ;Sofs%RmZwAWX9fRSy#j3#q?HCvo}HSy!%&#_k~k^Cf{wlUh@Ja1mP zm_pwWcSjr^8&6@}_D~Sl+G*;C)*4GcX}@W&w#B(|{1$s0@9g2|X4|IKpldi|qGhlA zp8p{)(#I!L*;{Sove^kel{@;V8gIY9rXXcbFkh#@kAj~yGGMkvxV9Tw5R zPO(c2YB3QPyG4Ss`b7QT0bJiuX|3xt02;QbG-1t$1E8)b(!HLBppU1&sfdP%jA@hk$w3`{-jd-l#go5@~0_)AQ1DtVIXLT+u1QC^Z@|*kLHW@Hr|l7OaZm z(?-#87RsgLj@6*u{%@fc zZk}bHq@GR2@^zqAx^eP#@W=6aVtJSb-{Aj>J4i7+N4^G}PugT|uKP6EY8?Mx^#zjk z&G_OD6XyFPMaCT^2frYb9pVxt<2!Oc4PKvfbN%v;$(l})kME}xnQxICYJFc2zSp{^ zeQ|4q`94dL`S`A?^{pxO@!6O4eMYvr?m+@InT)i|_c7UOK6;)IBOmXVUqYGhYqHgR zO9c3RkRtQ_L=KJ{>kwZN*dc>D9P_`@pfg}g>RWR1KbOKWEUaa2#y80^NscJlgEY9l g0UEpqd8WujhKSGE=!ne6`%>d#wBM^Th_sCR7aX%%3IG5A literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/dns.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/dns.c.o new file mode 100644 index 0000000000000000000000000000000000000000..287c3a036cd688ed638634e0d18f252bb8c6f900 GIT binary patch literal 7104 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 literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/init.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/init.c.o new file mode 100644 index 0000000000000000000000000000000000000000..91b7fa9e6bdd1328ccc4a697ffe286d06c289d11 GIT binary patch literal 1144 zcma)4O-md>5Ph9lHIACBUojex6&75HX%r=g;6V{1LN)H%b{Soq2t^#m_aINTLlb?@lHFFGGtC@C zU*a6K+DRr#u9FiJ#o>9^HA1;#pgv3!XE{mNgR{=U?h1V@i{Ojk(VNO;*ayA zlk3<74Mx++;#Z4Icx9klfeD}+Ndnyo&$J|U|5&-yux~=`X4vgtUjjjn3R{n2$ zMWxJ;ec5cD`@h?Xk--$5otUD|&fy|8GDH8;t>pFGzA{7BY~N)jhUuI6LX``GrH4$X zxZq8?>_O^^$y`jPDEr8o_#T~myU4P@Hv;Kl&7MOdTix4tq6(9;7jfy!r%bUuD=B_b Vb1EP=TThfI^Q^7Ub&ER3 z;Daa#V^Vtvor{N4pDHVhepRj6b+w^3t%llC+iKUAQd2C}v+3)5N+7UGui<>5NF%rA za+@lpopL>koDyq6jgC@lV674K@ksY+e*kM|8+QwULff7d>t4wj>9(-C3(Srzz#G#AL%LkhuJ}y1`nNeGL3m1b8Lt3CHP;u zlV5Z^A2FHgB{ul(R!(r;^*m-^j{O>rnj=7J9#*a)ChudEo|rT6PdLAs|B36a=CSmE XlUD98i@`8)LbQ)__J(G{RQyc z#BI_6EWOz8{LVf*pZ&XAr4)%N3TVNI!h(36nIIsaR*43^-c2hQ+&`VRE<3udL+YL( zZ&DMFNF5{et{*QVYOFOQUv0YEYDeuldum@Ds3TWe&3(0>OVgiu0)bO|4fB<18r)gp z_4*EZcvv#j36ah}GHYUZJ1+dQL^gf5q=&{D(s7=XPF}MteZg7xA=1X$@hG0yG_Upg ziyR`!b2Um)vA@L)nSz(aI+we+ zo5aK^sUw8m_2YR&jn!u4s||NcZL1w;SM8~Nb?8c~nXmS9>HBAvK;YC~!+fcl26q;C zy}m;p9yYPVbfgDFI)BfsiQ(f~Hr9^Qcw&>h z*6vSofGp3}C{@J{=T~GBUKs0Sl0}{D=NKAn|6ko%S+5Px#`QL*QSsq=j4J>=N5v_A uD+0bNCVknB?W>6W$KvcK=X z_a-k7dTj6E<-6aX`@7%0_q+FgH_@+tX~P;xl1MKSxoMIkI`+8H(QC`(Px>>Z@aq)L3W+&7;+~$m2z8ul?cA*V=5}yQG$9GE46|p1FGJ z)itVJEy>>MN()VATaRuVthx2BbVhFZ-Iiko+vpfu&7}^vJgx}DM&KRGLu(5K|0gnJYDsX_sPmb86HFQl(cwy^k_zE{vaP6n{$VEkUX`y*&AG8^2pg) zqEEK7ZzK1-tlj0?bJNCI9gAqSvm?gx4(B4Whq*@1(sf$R?j4l8-YBr`?Y=+e#q^qf zEFCMVy)*l84>f!lvwf^5xWA*OEIZ+*=VOQP8)V z^yy4+==_jz@ZVJ@+FS|Wu*c@Gla%5f9n`bN zO*PHZ3FelbvUQ%ymv;UlU($ItU*qWd$~BkstF-9CTkUNrUwYLwXN6@}yR<%Cc{YFT z8c}qtbfX9JDCbJV{51?pD=uUjqSRo?SvI=GY&C3)o-$6!9}o+3YNf~LX0dkY(^@+- zyK3Re>X&>sjn5D$UnDzyk|}daPqN-Z&)+=eE6&;J&!?`rKhh%dgS?&U2UQDciG@B; z=iaq+tYM=P=m=aMv=FaredpQmfq*ATo|V~!oz;=^fgPx?$kugkjktoHdu@BGNuTO_Y=?2#MmPz zi?H{kqjHMeN{$w`QqjqYQ?%%RvmXT15iCL4<3f3W> zR6HfQ7m^JdcvaXN`!-kDyKTg|H%yK@F|+EJT+v|ELw9}x%bo-8KC(Iotw;gWxlu52d7*(&&=+BMnLVfn;F%QB~f&K#0mJenh@t8-#;Ek>PX z@{tL#N)D1q9%hNfwN%r6zEe(pzEerbX$MsevQF)%a-W>$G03TuZzAWQJ-w`}$DA{r zwU(afa4n*W^(1D?Eu=3buOTKR@7c@?1En6@c-h)d9aoyJHLat4;?!vxD#rSKYTrk9 zckIhdXlsqwER^zvsJbS`9>vJ5WOcOCAG;=fT1Jvnor|K{wi}GyOY6N=2UQOp6cZj# zjLZ-fIcKeuqVMo1XHOaBj|-#x@jwwqIo&kMRxwJ+`Kf)ReIISYNPj2R z)HqHa@V56j#;x?|NpdH%kMz(jyR(u*ok?{K7GbT`@fO$q{b!8VxZ0PlTkYElk#PJv zogN8x%#Zyu=SQE{mGvD_~K7^CURh*je7NwMb zDN56=OR{?orF?Ct_k?Xn<&l(6Ic*!s-gnKtJooVWSvdPCJMEof-p|?ccQ%9nTvkax zwC=ueXZUQU2-11)Skkg{Yw~7#yhB<zV^X7$Vd3bK^mF%72xq~0&OWZc0>+VVHDJ?DCcYwUDuVqT=KOUFnQ{7Hq z$vI2oPjW3}ov)lz8ebkSo^PqUWBn(UDc_54Qv>A=pCi}w)Y{I=l_jatv^7I zCGVa?Y0+DGVWxSWQ$G4tYkp;zZl$c0_rm{ax#?nUB&W6W-n*=w|4NrOm8L(b{7t^> zL}l`m!Wqu{{Qr;}h~n^c&Wu)vC7kwi^RlNX$FbFm6SlqWmlqX8$2%7#NG^Lz@_fJ0 z_@6I+c+u*ao3o_1Cf}-+>*aAsv!7g)(q#@cX6CJvhNqED>?cWhbm5{bkhqN%wYM*( zI4*N%(CT3Ldp*Tz&k)b`@vh)rr?~H*-YX6BjelO;_?N|b`;&{4_i%Kqh{}lEa&DSf zWopnfoD)5qRj65U3-*tCpUSTD1J4E2Jg0ojQY+_*MZ04?NH5w={ z3=+2W=*6*}Tv@2x)gaL-Xn;Z~Ox?DpM!jv8*xwb;3>rS|vPM0jaic49x`R}}XzJ8J~U+^YYX#!(=9OtiBXrQ^dDv!=`Ky zE50#H3q~UsyPoY@5ZE4A5WE<8HgIuhLD#eUi$u0B(MjJIvdvl+XcO6$gNmK1=hj+# z_IA#$mfq%EMt2{wi0n!^QY3cSGGtQf>AaYhiILtUR=k-gT=WATxq5Hg*11XFpB#mX zh%-Wz@~G9Q_;^ardr#-1CqEaaTcjLYJcpOk%xoY@^)s?h9i~Oov%$lX7w?|^PvRAz zdaC}sC43?8fJH3ZS?k&_E$YkJ>aUzx)A_6RY3*k-#gOk{g37K-0{8qJBMfy;0=ZC@~z7}fIW~oZ5HI9yZ0j5gCPYZpd-%f&8 zrf7*2#JRC3kQj?X7Ai3cz)u6ueU#(F4xOS^sK~@yP3^5z1q*KP#wU{%i$GL|Pc2rx zBB+AaQ~NK$C9SsSb~3a~8A~lwtrgszQzbT>_G)`Os0=-~ufeAln_dxA!Ob|eeHm?l zhW&5FCqvKe)!#Lt!Z)d*D0tsaZ9jwVhkmmC41+bVN4d$qoCY-eUQii&?(gnGt8#i& zt23rVE9gm$=arG@3-q+0M0>HcGC4J^N))Ov^;bd9Y4&e}%FuIvXH;|itSHpDqR?zp z``Pp&UO?b5w)$rbjUWT6W-e6-< zYW0es3fWEV?evJ&-VG{4&+W@mSBqV*2&y2SrjExc>{|==D!;|VpDY|ZYWtrWc=y|8Nvj2gma4tmWY1ACSrlYMQ^#8`@CFMe^@SQ& z6lkZ~HwgRof)$T;vMAJOvTqdjlk3+wX^fgeO(y#$lfK!cZx(nj7p#!c7>Yt(lf75i zhYRcHHCS{1OHB4lggx(lwW#`borOJ*Sp4!`$d(i|Tv2GL32&)Mzs#gxX41C_{7IpC z|E)0TS4^6srr^Asx*}gN>CO9ZrOAG!$-dpBS9#v^YEk3A-N1AI_ZxVQpMNm$T0=n; zT4iM6zmJ9sw(1@I&nEtaiGRVwzii@vX5w=u{?{h{vWfrH#1|Fzy6Rt)%3fC z-c28v^j9_gKB2EC3(iKyUoH3sa%eo?85KA`8Z@5IxC)#PK8^pW;G5}gjXwyG3hehV zc)f5=7uWO&)GM%GhfMk>G(F#+71*!OXgtSh1ztxn^=W)IJ=jKpJINYZ(j{%}`ccW=nw72GjJ92@kj zt>XR%BD+I0{#7oDUjWfc(8wWD25RZ>=l5$NXJ=N%H%}v&6qE(jD1NeW65TyI5d0&|2(-mlRLLdNFMNJF7pO=JE0rP0jrA zSP%^!=-cH_gm>)>H2Yx_^6wgmsDQ!#Xwo0;iX|dg3Sf12CA!qPR0B4)3v(dWIM^HN z>f04%=lsGAAw@_dfLXRv9fy!c`nLDScB<_#I}i59cKCw`k_STF{@zI64nJ^&VJyTG zuOjV=MtdVL;7JU{LC-kdO!1frGj(dX2Z`2#w}JL*bcAU!(Q&4S)E5`~V`u)b z<~Q*99%WqiLquom?ZcLTuUqjhuY5t+zCgvYg{b9;E9#agJY~LXI zCygK0_?JNC2Z=bhl9QVMFluEz`V)BHRL5yMLbQkFz`M%!=AJ4Z9>Ca-O z@N)%IJigaxyzm$8?`D1;Q9zSpsA3%Gf^4@C4KuCQ=Ie2y=b1lB^h>5G^{pY}^0@?_ z>HACpGQsp)T71ACJ9zfzHm3T#!JqZaqn|CBd^=OjqnIc3`yJ-LP4r!+==Wu&==Tj! z?(d97-)4&SKgSgPUto&K8m(jse`}bc6FXD*`xUl_A7Q3g zgmX-hW?y7FU&8}#3+!#*f&UtPn&}YHYfPUYdY371z9p-a-%Ro_5$78mXD=~DoW05v z@iQCuFwc{nDfYzzrmKkVU<#aGre9LuR@`n7Jo{h9excvF8g**4fhqiN1!a8v6LytM z)05|gu=}1CpRjLdJvNz`2l&JL+J^ror26Se#1;3BZ@Jdr=17r z=P>i=NA!n&zRNt;^I4`C_Yau@?`2RP|Eo+N)y~_ewf%`k+aPDVC{y(NHKynnkYc<7 z7rZzRFy7Z$j`6<16n^mjV?W+wibggGAI8hSkFXts|Df_Sz-NldN@#SDDg4^Y^jn%= zaNfr_tF--!I27>#fA3>CoDu80LiLw%WtKy)Q)-MScP6?5poy4D!+I?d8ca~5xWXF) zxIr6P(5T+7h4iyA*3TBI*qDYgU~^+LHO4}{hL%Q?8|!W?Ra4g+gNY>e#wtCXHEFL) zY)yKRx0z(u<*_FHU&v@pR@djYCIdt6YSK*2UrkDLu4+IYaEk%{kq54NTdcNpHyWOqxQPXObg!IbSq~q(~ikPc*8} z3sDstW6IlTiWnG%ouV(-bq|lpHrG9OZm8lnPh+ru=gttGXN{}w+}PNaNW>z6U5QW} zd;PC1IGPAY3;uGTmKKfbgwG2u4t#8fYfcoi9qYI(#K(8rXW8+2Ztk}nGQH^iu7ZH= z7Hf*tpha4p3G4XVu2Fp)8^F8q>BXW|0-&Y%+BJUD=hd9713b57JNAD+KE~DYa0H7x z2t*VekMA=h-Zlds|=<9yVJS8kug zn{B{rH{m@8Jid$dqT{VF;kDY;JDvTTi%<7&y9uvEQF9YBUciJG23|Xi7_Snaj`yeu z?`Oah6AHpb_wRrS@3>u!1IDY;?0CJOGUEY&V@5AJ-uFy+=j>`O#&|XObpKv4;k}AY z&M~AH9q&gbyr_d{AB-4}b5+HnN)qTG8>wAv3P;goEfLY#7guPsiim zyW(E~?+xUF{5L?o=y?AFBO~51=OiAg1-u!E4ji32+Dv#yfY$^K<8l8w-WC&H z0}h{k(CbC_Z<7h{Rp8wXBgU)8r{ndQ@SX$SY8_0oV|KdVZv(#UKDc1yB|1PiQ;V`4uOm}PEP`_ z6-JE5f0fel_+4#``TG26l#N7Gq@l`)^>UV;J#vz>eGN{+j#Mu^%_#;eUmg zGJm?=b2qSabB9{defTe}-zH7Yc(ZgPP{!l$m$1XXsIEE>JKjHf(fehpkAZdNGjZNy nfmfqGgpd10Q?a(dE0kkMM4vYZbUZXKtOXli#k&3G26q1spNchU literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/ipv4/etharp.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/ipv4/etharp.c.o new file mode 100644 index 0000000000000000000000000000000000000000..5442696f39563cd1d38457085d8ae9d0c48e9968 GIT binary patch literal 6072 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 literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/ipv4/icmp.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/ipv4/icmp.c.o new file mode 100644 index 0000000000000000000000000000000000000000..ef98d4fc407a6c855f70ebf152b27a4359ad05db GIT binary patch literal 2764 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 NO}Mo0iy&e`{SWhfbzcAg literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/ipv4/ip4.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/ipv4/ip4.c.o new file mode 100644 index 0000000000000000000000000000000000000000..98496fc815fc302ec694c15b64ad110c029692b0 GIT binary patch literal 5076 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 literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/ipv6/inet6.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/ipv6/inet6.c.o new file mode 100644 index 0000000000000000000000000000000000000000..3dd47052d483a628dfca50a3ba4fd013709c9882 GIT binary patch literal 668 zcmah`Jx{|x41GtEmPibIiZ2P3i6G!q)X;&gs!A8a0OAK+N+dF*pyrTZ;?J@&^cR5L z#BI_6EIEGf{LVf*pM%>Qr4+;z0xTF17Q_o@f&e~NfnmRY-3o?xkEgB6P29kXwd?GueRZIYTxm6r)qXCfKl20ur}i4=E7de{XNlMA zJMe&XoY<}&0XqN4tcfYwNfDm~+2q|qKN)MF<2;8Ry<}N3rnBCCq>Z(cG=8&5UhDQZ zIixht)+lAg4i|T15?&bVWRhi_?B|3uwEcf|=ViS%MK-RtHABUR>#<*vQ_t7plzuA# tzAGkuIm%l(XUX|evvl70I=N3SGZ4gAdB&Jc>TM9N>b{8&SWueiegXb)EG+;4 literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/ipv6/ip6.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/ipv6/ip6.c.o new file mode 100644 index 0000000000000000000000000000000000000000..cd018ca28409b5b18ce024139bc4e2ecfe660cdc GIT binary patch literal 664 zcmah`Jx{|x4E2$uB@zRl;!8qhA_zDIwRB*ss?vopfcOEI5{V3fsyQT>__J(G{RQyc z#BI_6EWOz8{LVf*pM%>Qr4)%N3TVNI!h(36nIIsaR*8oF{&g!D-aVeSE<3udL+YI& zZxR!yq>d4K-G_^a8f(qSSDWs(+EKgCp4wLj>d2K=b6@S}()4GZK;YC~!+fQh26vWt zy}m;pQ9ADG5s}V6GHYUZJ1P9LL^gT1q@Rp6q~km%J$lWutu>$o$TfW8f^Yw-FaCrglFS=TeGP6a6QHqfS%*x6u%S! r-xZU-?B%VTvjAUemf&r#13n-#AfzvVHDXe40|!;zH~2tA@S^(#AL=Vk literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/ipv6/ip6_addr.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/ipv6/ip6_addr.c.o new file mode 100644 index 0000000000000000000000000000000000000000..0c30a826f0a6dcb6efa8608673e6365ae633999f GIT binary patch literal 672 zcmah`Jx{|x47Ewp5~%~9;!8qhA_zDYQ7Xh%Riz7I05PLW6NwCgDmf&W__O=~_yu71 z;x_40OOD@*-`Qv1*YNHZ5kU+gfH?!Ww#4gB1p)Z53NRWBZrZ`<{^_KB(N&kK1N~FV z>qJK>;1NNu_jn#cqty(3+;F#W8+V*t+{1l5bfwiSR{Oc|`!`DvaB8<Q{clO!$)xWt$L=Zy=V8#G0E%DkDK>$810}Oh-t7b5`eK=~Kwbi+5LHC&Q zI@VDFctFtW+@FR}Yt%y@*W3-<#4TqVcW@W?U1>Fq<$f;w{!J4EoXTyOFO}28ojG2u z?|=u8j609dnSN120F{5HMn@D)X5*_M6Mq;`PugfuQJ#Yuj?y%KqkrAIP-$bbBziY- zUTL_1>`|WQs}(xC$Jrs7hL^@VnPy%mJ31r{y}&}N&Q5 w>1he@SuyF$QSQn)L(Yflh4a=|$bE8|fgpU7Hy9Kq^;U_Obw9-WBBCg|e^d%BUjP6A literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/ipv6/mld6.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/ipv6/mld6.c.o new file mode 100644 index 0000000000000000000000000000000000000000..c6c2bb7201b57ae83a084c9a72e8de40007b16ba GIT binary patch literal 668 zcmah`Jx{|x41GtEmPibIiZ2P3i6G!q)X;&gs!A8a0OAK++DKF)fSRiW6MvSm3%>yD zCT^21we(`Y^E>o)zWR+$s z$T8)4wpyXfceuDDlkmb=CzCAeWIt!5q3y5KT^9A4pq?N3Dg9Oo s_^z1rWiM~#oF(w3dI8?}Cc!7j3>4yr!0#24dRuf*)=i1`L_}V6|55lWxBvhE literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/ipv6/nd6.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/ipv6/nd6.c.o new file mode 100644 index 0000000000000000000000000000000000000000..bce7b19ef9ceff7c78701c88b500b00972706352 GIT binary patch literal 664 zcmah`Jx{|x4E2$uB@zRl;!8qhA_zF8qI6)Zs?vopfcOEIHWD3DP;-@F;?H(t;upYk z6SqkRu=HZT^E>8@RNJUWzS?$o)t=gS4%DGKQYWsoTKIB5m%e`%2?S2%HO$w_X>ezS zSL-|E5sim!Js{HAM`}$BZzs8bk;o?Rmh{kALpshf(u3DDO~yFuJVx4BI~m1On`D(< zf01J(d9GR^%J;XtAye?OSSM4g>SQ-(&|vfb>Mo0VAv_z`+nGoChwCwJ0Q7vzPw`6; r@Le(K%U<5fIScTmdI8?{Cg1}y145bstPzuXTR14|zQB7Tf*0K{6cH;& literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/mem.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/mem.c.o new file mode 100644 index 0000000000000000000000000000000000000000..3e005c8fcd220efed867037fa79c1643d825ab7c GIT binary patch literal 3340 zcma)7eQZ-z6hF7G+uE(j+5vm*2=-&Z#_(lhl@NwH-ok*f@nuxPh_q}qZ)V>sA4^al zm}rCk0UHvwE<`enM*cC4@P|qyk@%7DN4u#hVpNo*nwTI_12G0X=l0$1wZVkb+@6nn z?(f`t>nZ8`@hLV<3n@4a{i(?RLIX6y&T1WT*tmZ{MPO$6IV|msv#!{GOqbHn;2y z6}QPD&vxc79V%+82n}wO1Ss)l{2=un>=`6}_X5<|lCPGOB-d`bf9KwPvF={7!s-s& zx;kxIy`6r%%~9{vj;O!S`bS~KZ%N(1EH=YVsW;Q1*m3nn`e)Br;;3p#%Da!N-=*U2 z36wiysH*cyM4Cll4}zAekODs4i39q;Z7g<5TT z4M4SRjbmu5ZqaqGJ$9KLQNKub%DeR|nM#iGPR0)lR*fYl)sNGJbW_#?=MvdC^SQ?( zo0~M7=5Zg#dX$F1=Ny6wd+b@=sl$Xr&*t@*I+cved-RD1H zoZ4N7ozRhj_@ACmd0O2xOK%uggR{#3;3E=t;h62 zH*_<@PCGTwmW+bJl5eOi)fD<6Qx*G6{yPIF&OIO(dSHFa;Dt`hJgm!vYMY5As0XY| zq~r zmvsSK$SNh7xtWJ8v6@?z%jUUYh1>Vd4pQFK0Fc09-bOud8lYx{k~|M9l%kHkW{?%| zeVphf44n8e>*e6i)8`vnmPt@tpqCWHE8+3}%6aAAMgn_*zn%Lp&Ltr`7{zf3$_o6; zxc|Sx0r$-$;p_4viq~enB$&_7&z&iJUwOfP`J5|C5@w6?IY%OUS&Ia&f_>MVD@qbn z6zB`!QMAzW*Wq$u{Y0%QngOG^puyO;qLT|>w-$9lbh~DuASb<}K;MNr;jiT9?GQF} z2iMD>*U<6ziTLy2AaX(c^?i{(r3BmLdb`@(P}0=T=kr@tr4%~~Wp z$Sr(pFx=nM1^ok?`=gQJ;r)Zr5$Kr{>0orYr;q#hg?oDky13Yt6GtLZya?sP;>Y_F zuL7tij!n9TcqM=Xd1-a_?WIcr7LbmQIbhh28hp&))SDJ;o4dpjk9vvlC`p7DM3L}X zi6dScam3RN`{xG#)!@{-gySWSIMu`vzsA5jZ1{ataQ>>H^Z0mP#HTvbd7FVp9aM@* zSV9~}5hx?0ebMkf{bFaI>JRldonTE5Y!AH`R)Ey6|7HA3MRRLIJkM(G;p>x=Z`?bq+@P{L7+wr_tl zGJ@}YNHS8Gn^06oGl|LRLnEd(H#rOaXpd+)E*mZ}VgJvM`jO5Q<02wI`Yj8hIZH(S zOVh0x7g0M7DlhVdxX6bV#d``D;jO|&G>EH+OW7~lqt$6}5%&=4)H{Mi+~?3>j@yfI zx1){X(ySD5`%$Lj0`D*?G&2MVycf}6#{0yCM|OdC1Z6YcdsqOPIf4YwIg0R+6a&S4Ful1D4Xm1J>rQw;Z{ygJfz>J z59#;i1N>;#3lb^%77Zj*e-Y9B%>N#=N9#vixJ7Nk=@u%~Yk~wGagih1Ta1tW01b;! k_Ti$pQ=TYy2$7?!*bp!0v}{aL>7UQ+w+EAX>j8fM0mI263;+NC literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/memp.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/memp.c.o new file mode 100644 index 0000000000000000000000000000000000000000..9c40ab23780067891ddd75625c40cf1eb089aa61 GIT binary patch literal 7516 zcma)AU2Ggz6+XMOj-8F0+Nr5s+f6o(m24Wb*~BKXQd(kf9Fr2)+pMh`fmqwgmNoLv z*51$rTAH>9B6uK3RaM|6!VxNv2Y9eVks>Mqq5>q0@=`<|`he6vKt-fh(1Hl(yK~RZ zowKvhBhAh|=X~e8-@P+)=gvMmcKT#279+73r77@;hVC($rXh1m(+C}>#itf3aN9N# zbmt%cxwBsGEz`i3&AxK??0R#2)B7Z%I8xMhk6m6NmH;Ck-FoBhmv@4ZD-*+`sDOvHYV>g%H){IO!|(|&(D6Pw5+2+T3l&-+|O zZ&2zsLg5L<+NLB?G!cD+HE`o zVkrtR*Bnfmngv3=l&H07JeNC`N{>G}y+3tmC^MMJ(#QeM&Xwlo7bv!yn@vXwADy5r zt<4i#V>=QZv5&+$y{_1OvF_MThsQFy_e+9q-w8Uxb#b%s<8GRLPx)bfkH-^?4$vmr z#=l@4;3LldE~k9L@REzQ1b9(AaE2lZJ1u1t*X zb>Yl+ufpqmr^sI(~h1dBWmG4pYy(-^Jxln&Q6@I6}>-;X2$K4p1 zM=6z0(Tq*|^C`3I2R)wcFoVwTQTaVVXWa6rU*-F0G1T8)h2N|2I=@fl_o@1{%BShs zP=607`~wQF^9NKOD^p+|KlS1H8K5gR?ayZ>0CUTujKb^uL6twK>a!}JrB_1z9ai|m z3a|5nDnF>|hg5!uUJdnkMB$Gpyv`q0`J<|SSmlT5x1s)yDf}^o*ZBuk{y|m$apgZm ze|92Rt=?AtJIa5beXReuQ+Hr}X9s?-@mpvI9JVwc?To;R8RV06e+b`7`>j9BIG~3^ zejAOVm<=m+I}Ouh$RDE5hWsoog!}<|Cgi8-8zH}+z7z6O^uv(fOFs|!UG%Gv-$6I6 zzy2-g>!f$A@A0{vdMIIExi^jeU9{W!FBpFhJ!JiLwA1|rvvn)_=fKwecSp+ zJ>&=JN7nB#`J?np>#rF;zWz(4rAp>3^;hZKN)b+RX>M_G(j36RV|?gNN%Uq)$T=QiOrkr~nquCK7y!B60wlPnQo z7m|E}2)l#i=l!)O&RbFJ9+PF_T@~+Dzd(e2BFrd{a{~+et-uL)HP??28DuF+eyI?nsN z@h=jkQ2!M1E`!e(EYC&D!%56X{7cs7t%C8tY<(7O{HLwY8$IJcV|{)#82>BQ&sm>0 z6g(vqf5iHitpAwxpR@jq^`EzXk&7~G7ngWt;d6D>KbNIdEnTQm=Ge*bBH0O#SH4AK;&m?kGcO82PL(HLt|p@YN+6LWl+&zjfhD2>~<`M-(P7A z)C~uZGlrir(C{K0#5o!9tVdFs$qchOA(zNJb9Eff^5E1#SailRI!XW0tRoJV7R4Kx zu(Uz00c&khQlwFF%UMe`pp@l0n0}1DK5FSgYhT@{kqs6=C9+}Cp$>}whg`gV>g9%` ziZlA^%Zn{cRv)!wp;fwW?DEPClhsEpS!iX?oLyO3DlPL0F>+=iGgqyyF3g{=mawV$ zkk-RE-V&L$9wk_VU9;OH+RZ`WcspfG^T2DmE!Zme1I1?=vv|fyuw%J_Fg{3WV~PFfQ!4r zKHghm(l0OLp?+t%U%cngFZz>yzsqfx?>hTYd@pg_9mfTSFX`}YD8APl@cmTrU12`F zzo8G`3Zn0K+;;W-h5cbZ#ALj`;ee~}D)Xf|20nbl2p{TQzFu~s_}*lk%lEp&2c5$A zPs=CQXNvjIubAk2mjf=}-4mizuP`@#WEX+Io+!#9x_r;W{X18va zH_#S+;EU4tFOIwVDvrJs*NeVRCUW&%=Q`1Z4yB!qz`X!~HE4oOGY)Oh2fiqMk1@d2 zcgfM$&-J2jQT6+?2Kv4lfm??lYohNJ#<}{y7p3o-(s#wtmu61UcSH4y{|98w(6zL0 zM&R&`FDCllPe41D+aP4kN! zjvV7yVntHTd_Us869Wc@vvZr%5Ib2G{0WZpr?MFb-aEJ!%vZB>yeYWl6bfIv!oA7! KQeZ7&g8MJm2e4uQ literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/netif.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/netif.c.o new file mode 100644 index 0000000000000000000000000000000000000000..d4ffbfd99417da890007903ec417571088a88718 GIT binary patch literal 7544 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 CW2CbH literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/pbuf.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/pbuf.c.o new file mode 100644 index 0000000000000000000000000000000000000000..c3b663b8728f124fad7b3a94cd20d49a04e4a40d GIT binary patch literal 9392 zcma)AdvH@%djGB@KQY0`5G>g^vSp0?K-d@pg|L__URg*co2G3V!dkKrk%J$KEwV5$ zU7XEkqD-2ZVA>{Dc1xRNW;+ROs;t@Rq;6@Frrqgudj)?K*4c)#%qnfk1M#so3{$(y z;+g8Hv&qi{mhnBo)Z`K>rG+#RG1^>Kx$vSqAXq}>76skW$f(i1BU&=HeatiZ)>vxF zwnI%eTlJ(-9LfiJKRxq%tk;((eWV<^b5L_P>T!QDnq>nR` ze-|u6wn}L)O_)oqstb!Lvgzig=OadIWxkb2aC#^JZ%zfXz-+YI1w+jx3V5hYTBXp! zJo{uct&n$$I$V}*lbYWvxP#a0CnC4)&ieiJ+1x88U2LnT#wUE^IU`zgySvLA^L_o9 z2;Y@AqtsDqZHQ9K2maH!N%NocXA2&>QE<1sRsWRl^++y~#ZIcF>dxcHzjgjG^CuVB zvZvuy+}(fhxuZ4f%Xa@LvQymQx1xVi+#6R*h#td^K8|Z<(nGfpg`^lkLP9(S@oo+p-Qm7c+}{AQS1wQzu5N~r$g+; z6yjZocz^=P)>d^uxZSWv4om3 zaaeX)9)US%?%O(OhI={@t?l=X$r7rfTj@5U)?LC4db({=ay$FZ+!$QXYez43>XO(tVWW8$pu$F=OCF=1p+?zmY?*)#t5HePoo_lD^@ z*C1@iGc+*{sm>vlUZ7xelEz;!jr{k`^8CTf8|E!}TDdAYWme|@#`IX#fgaO;sWkBG z0(I~iTXKmy$}Nr+QRO+0ALnURsr7KCUCgv&rjV!bOZiUvQpU&?!Gpb9nX&W8oWCyI zz#UtJ$V(bL*1`stMaXMKK7>_>w!O@nFiS3E{mscN_ULE%>xFav#q}q0IYi!7|5PrP zJdCJ~6C&7XMdDS zCO1+SofY>VPnWtAxyMYm6-r+7ab{+wvi?=b;LpI>W8MJk0zAo<(&CI?*!47&S*>Ek zaoQ(}vo(9Bg2{5?>bwHa%GA`U#wN-Ld`ZJ+vicztp$d^B*SSdY{s&ctK9M%1DM&XLHq4;^~HrGWvo0X3?Ba8aGb3GXGS|aZi|@pDxOY6!P%nFXIT4E?jzJNUW*!bH=oWsewfHI}(+4WHpR8c;p8W;kRIU1JNy=0?qTHaEGPBDwL;+1y;6 z9nDQ8ggfnMCD_2=fdOVf92`fkBD8&$W4 zU#H>MY5Mh=e!ZsOpy@Yg`i+`?qo&`a={ITjcaw(Stl>8c{H)c@8h(q0-=g8SX!xx{ zKRdZ~c8HOiOihm9Rc*FaV~AfDqJHA}L0;6y-&1(!oMZVLnm#IJ1N~y!N{2Q5 zlaN`*F?&%jzo+T{OzJCzegXZ}9C;!Aiw_EG~4N|~Qg zUJB5oQfA-0s4ru4^v(2)l)1)wsfAvKtQxO*RqE}0gy@WvAArt_*TH|3@*W{~(7RIh z3pq@`kaASWtLbAY-z(%U`fn+7rSKBYD<0XH!kYxk>*!V~b7l3?dTNof9nS_@BjsA5 z-$-ARvK{{>`nr_)8Rw};`#JQ|DcT(fje!*2NFZdsRQ;P9+Rn# zCu99mxj*3$;=`#Uy{Xtpx<5A1%K@=#@zfEy9NO8D!r3zqCDOg|;h}W@Lx+YB$()WJ z#K$a=mUQf(Oc0NHi*5`I56SuXaBLtks?wMqInv9F3g{fC4$aQ9cZ1Rf#s~U`uxI$T zkETcPN4Pi(s1>*>_uB81F1$+eR;=7dc-uz*O~PqL-)o-*SCoj)h%3hX*j~qbzA{e4 zwSm`rST3LK6+iEN)=2k<>X;&d6`N`yax7k=>D1pC*?J^bNXUHLH4e(nzv4M=?& zJ@YrQ+(&e~oZrSh{M*Al_ml>| z0MDnm2hTC|yk6uBGUtioEae_{MZBM>I=0psH=-5TBmgQ zWtT&3<=n!kDP`H3cUBflO(%+_HfL8wZBi9WZQ5Ba9eEQqQ-k7}pa;u!R72TCRGU<_ zRh#~5m7NFh6$6gatn0Mm>j+4cV2xcA<9X(|+G^8rQK0onRjM6!90glL%hK(@$^x$8 zWGVmZtSIW*GT310cYUi z+Qx0I-4*}mv(Bv%7vtP4py@c)aa)Otp9B9Fj%yIF;ab6s`B0jQjdgt8Cwt}J9gy$G zr5e{%Zd@}faP{Eg_B39txlV7x#k`DTzc@3@tN2c0+=)vy#fQhk9KIL8$Mul;_^XTJ z`+ba^d~ZYEfJ-&Sm%)V7zqi51b(Q&eUh%z(v6Jr$$XuUQQ}^Qsm~isF3qFpI`S>f2 z;(G^UCtoRq`S{)h&dGPh!N*^H6yGm2zH0FGU`{p0al4Gm$#)fe>V7POPVu?1-s#^x z5N>4x*;KszVb00-g@cd3A}Kzf#&_U<;aiG%CtuZ)S^q#?w$DdnH~{iXKbr&u=wy=sbYyTUjiTRQ|9BZT8i(G#y5b2yjGE+SNG!)jqhFXsr$<{Me#kY@tp#ncOJe|8t#X{ z@p)5C#qok>_bTiL0OB|ra4Ea5Ykcp5?>^{NQ+$7+@m1kw1ps0`?iJrV8eb2BTP|WAwziNDUIQ(mN@LkvVPJ-`>a!%q{{7~b2(81Rtaa>1g z5D=ineRUW`biQ-B2sr1yItD&fhxq=%4I!`8_?`hD|K?W>YSDrk-{TIxHXsyVMB{rO ze0wAZcZzR|#`m;?kDoz`Z=c4u76+8y&s9@=k7&4ifQu>+dgkLcsM$T~$n$FGmEG@Z ze6NA;Ucq4hr|gbtd_M%A+E@IQQt`c@@pd{-R)t#k1Gy~cMx`1starug2|aE}5v-+7zX?0yQnYX5P4Q*m6=_?`e?tul&U z*)2nzaPIq4z|D6q-M~5b{TB|qn;dqRYkZ%AkKbWbQ}@HC@p*9AR2-WDR&lJ=_&NdV zQDhRwVyDJe1wOT3_^Yhq+W{QgK_^-Y0>`hK8poyGPN`rVKPOdV9AEsrz+Xzue+M|{ y{!@J1tDH0THQ<%bD9?NDJ@)mb z2;S)AydTeb&U?;z&$<5U)1P=oQ52G*P>OmM(Y2t6_+~|yq6B?_&YZ8-+1%NhTKM{= zkM`-GtJ3;|_x|-j{T3w#Xi0xzRau`{7}aU&h&kR;Hr8`T+sRd$95Ct13;OAq{TGy( z8?SHV(rtBPT&Kw~lhOy4 zn)E@Rc}u@vcw`}_j~3o8C<))@&Nik0U=BR{JVstOAE(>;&pS)H2XlK&-$~BSlepUv z%fP>|R8l^Z4yk5PR|}M=&-)YE-2F~4u9~N(gCa|{QOBG^Kn(zuYt0pu@#x%~(L>X? zlAJ53jk(r3{Pp=0#jh1H2K)1kO+STb5Bb(9wP@001?w!Cp(~Wmo4J-}d^a7)#&ThE z;c_&6`Z^_jR}xrh=(Q**YqZ8W`{^(ZU~PfR2NyPSp6klQx!k?Z@K}O4N~tOHYVr^z z6Klfu#s6-OU#7Ij9253V@+tl0Ry2F(*rU0mc{81CFMTOC_fqq2%eRpt&)Shz=rv{S z^;KFsCh&gxUhdasO6b4n&T^0_b=~xfJ$$osGyNy??&=>q{)wMd_-$_QZH`A&;^Pf9c zTh_?8+xI%L1Dy_^%3nL)#Qjcq%X5HZ;ccSevkFD^@YbcAul-9siu1E0>G#bT-Owq0 z&-`ZY{q}G5w+cJRl{2kx`N+a~<3V#YNnp!&9j4{r^MEP1~0 z7Nvrw3f@6fgCEsE$l1TJA3e3h+oQTie>JDH1A44*L;r_WYx8q+#}cXePk!c5VtO_+ zlQ~Q$(#WHz6-!l8#-RF+e(H%+Q} zh)T{VkxHJvu_`=HQK_F_B_9nq0k8wGf7JE)=n-4zkqX7S5mr=;?jPT8sWj+{54y$= zx#B~vc)%6s?0TY7&=t2HFNsib7yB~`iS^x<0K}c5qN4lpyPRRHH|&acUloBpwDLLOZ)&xQv68PY=9>*>oz1VDH84LsR4<)fS9CFEUlp}ubk855MG!y1&O@!FKR}y*0MVvqtqq|(_QSYXw}`Bn;1Tdnzi8$4qCY5zx+L7~Km|&lWY-Z`zgCbIJni zc^p;ObBfyQpRKC`0M?@a9le) z<_H=K^Px1m!ZB_iw|ki%%2a$)&6qNtuWF_&t++VURibcEHE= zB1Q6r0CMsTgO7h5G2bwnfw0%d=+tDsazX nV!k7jXq*F|5AQKTUD?48?3X18yi$D>x)XOC>%Am{4&1*1Yx1M! literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/stats.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/stats.c.o new file mode 100644 index 0000000000000000000000000000000000000000..97d4c59ac42193ff26f0ed5b567134da1c23e8b6 GIT binary patch literal 668 zcmah`Jx{|x47Ewp5{ZGYiZ2P3i6G!qL||a6s?vopfcOEI5{V80)H70<__M4G`~t9> zxJ^2MCCBfb-`Qv9qknUah@gfL!JGla1qtG*Ac7E<0S3L^RXZBoJ{+~rVsmaf&^_k7 z&1^aXJYX1H-k&DWSZO99uKSzV!YywbcW@W?eQh<1)qXyF|I88$yxMDoFICgby#-#c z??C|I$dWTd0OQ_svMEOz7x76EWfKDPXvu;}odYv`$@A=)&$@Ssu|(rh`bL?nb^Dv_ zaav|;l(J%n^E*0;EKGDd$)Zm8bI2Or{=d4DvR;RynAF>tqT(a<#4p&n=WB7wzm;9(NQrq5++Esh%z?W7tU+w4P`)8J*z^lE6`BF7a+*{!F z`W^znPOKgP+D>w3Qu1z8_-Bb+_U@pcj5E-wwa|mtJkMU}taG1eX9Fc}L|F7<}tQV7K<9Zv@sQ7R_#wCGzz7?nRODW*H qV$zqryp?l~z?YgOc-yOlkRUTqh))7*#H8LD9aME+#CswlFS=i+S1XuAsX>sK3=k} zbc1=|q+tX{$G;ykk|)hdm&aFp%U{F_Vl*!|Y20{f+;aofy_YPf+=+iX_-H66X)GNX zC;!EyIdb{L^RYKmjC}2y-E+zDYghhs&D}iWakq?287VIxDLFwWZE4T$t~hIz9Cz>Y zkP&btJ!@FIhFo5zB_~dF>`Kh+gmo9{4!=f*ehrgX~@v;EL0 zO>c_a^|5WwT_Jvdz0AhuqE68#8UM{qfqhlH=U>OrdA)^90JQ zyg-%Z4opdUiESkRR9VU~y<`rFI&aAdC4JXws=AWQhh1#dZ&K;{WPy1pWsmRbaSs(& zQ?hbB&0k=d`zWv=IqMdx%SkettGXcR^7J7IWgMZng|xpv&F%=0VrckMHc>7aHo` z8ycwF>l%1t?=u76-h1ajUCb4xK%Q0AJU#ZEkT3aWYr=wB%c|&lN*boQyR5}A7L)493dX&3^~7|dz$@0vv2TaoPrea*Is6|f50#j=g?^oy zX4352La(O`^NRGR8k4M;F>smGzA{2gok+b77MMq z`=_*&&boK}kxr$zIku!aKBWKqm@S5uhwlD|RtJ*WB$mWf?xB%5Mp_|ieDpC{*vOmEa!8tyn6 zorp%-FSPIXnpE2y4nEdCyLp5vM&^<4y6}FUBa;l@nqYXptHz7^&vbBIPW2Sak2UYT zj=2|7{Bz@w)t#`s@nnP5dV@=2I8VgNJUcl}ub?h3$H?;*=ac*@k#rx(R?3>51 zZ_Z=iyq+ql?G62Vs<8Hhl&ALn)X@d}pYoVZjg}EQxs7K8$v+()D6pu`u#8wK_O)R> zbFgBBypW@Ag{Zq?xeomf=SpMf-BbxY*Vs>fx9|~mdMB?-Pj!u$)9RNBaelIGM;$t2 zoe`YMYNZ?4*AsoF@Q=5jb;*n^j)cd;Cf^?RzQby+k+bSbenyl6@J9vw5x{BVr3+zh zY3?fwlqWCrQDAP;6n)GPy4+udRVvCeC)i7`IlT1Clo2Sh+7F%1d-aUV0S?BB~`?cRHg{L|#xZ4grKKRni{dsY?OjymrwY5a~^E(&VA5F z4=nn0%-5Co;KhR!xG6~s>XKAjPhNP(-rW;@suWJw**H{RXqkt+K*tDj9x6YC{MtQRsbgkKPA<9)}d-%Zt!eIpvaoR*6C)03R1 zyd+AF8#UYu&qc}cDVPa+pW3|^V->JO&J$LUI(O_d%@+&AF2#<7T=L#rOuv==$o=Y{ zVY#uZO0D9SSuyTs3f8k-q6N7Y-+OK=zonAzKb(=XV!qhlB2uY~RfNx_&q(fHBp;)e zP$94iTdu?X=}9Vo#!nRO8$0F>XgnOOG=c%4!J?^6# z+kYm_Z|(?2hbl$_ExEq2_G{*afw8KWzcR1o{8!A#>=u7>Wz1}!+fq3^wtH^NScggZ z!IwL0o9_!&gln5`4Hx*1g!#s7I`os68FE`=O-1$FN5|$rUZW`;UYuxoaYF=v=PrXUlC(vFAv$eVL)p@=HpcI<#(Vc%C;uE0`@_u>WY$ULi7VCARxjXg`h6uaj= zN88IO@>Z@rLI<~%#i*`SMrk$lX*se?giu3vEcJBiO#gQ=GOP1c>>~DFp3pRWxv=#G z87Y28`dL4tm5-V7tzRfk9k*3th7f5s-KBOYM|>aPOwPy5(Y&cR$MdYxdo!LQ#Htkd zK=|Z+5g)#nx`NYsk+r`+j|Trb{|4hQnSboRtMk!Nm1WQ(qOK=a=Tu*pG)6~rOV611 zmo#JVSVqvi=TH4qpKp;_LlxxhI<~rap^+@cZR4juoiMOj7a_3Vp8qpdyyUl5PVGN* zUdCKcN_`TBH|oFbUr;)U_Dr#IgQ=E$f3hH zo0o+=)(@M!6cOwELd-bKD~Bz~U+<-WxCsNp6gZVMzJ4n8TFlbcE}sw_b@+r2XX3t_ zD*R~FuqSCjS#ks?uS?uo-|EE8cY^9Zz$$g0bs-md^Ct4(LA8J15ng-?r^w~wPqf^7 z%yYOh<~d>nr-#4QJRRek9)Fz2XXYHH`MJr*HY|zJ0RK-};O*MbD zBiC$c!byEvo=p4PcyYWx;TiP-Zxnd+(uWg>+)-!V(Jo$N7h~q`BcbuLCe7V_U$7Ua zr{`Tsm#UiJMDqR=XnnuFydr6c4+q$04p&Ncc zV#zHzN0#B-n`eC;H+#^Y&sffp(_varB%_qcPV2c{7e#wA=dLs3-w5R)Vp&RSL&sK| zSRZ7?F6Dgv&?R76)e>`A_zccUZ`Z@CgF@r;mvF3DdoKO-QUI}*%d+D;&uE=kqn884 zFWIL~5O1o&Bwllt{Tg^P77Q0m%%@++Zn}h8`7Pkh*oE*rF}uZIQo|*uPwa0QIbs)| z8=oFOmuH;ev8#7S-z=xLU3TYADPI^KHe7B`PHvu^=w#EnTQ=XklGd%=yyfN%wE3?# zv~Iq6!xmB4)Uu_wiBd;@X_c|G#ykar-{>ZYa}z5dl3J~z+Xu(&>0zmQf0 zP~8@7YwseX2F0AuZeFmSa;N02FEGkHGmK9epLUlUvy2L(+QSH0$#8HU`i=Y|WLLTo z9XOMl(qV(Bc9YvF2InCjM<#iw5DcSiL3TmT<6DDlCl78RJ2A3By^^zun{qY0T+tr4 zq)fT0AgCL$p)`f9b<&D^jm+x{w{ z?@gm-W}2(qRITY(r!{T4SCe}+xlfb(G`XqCO<|8et;MsQNp7mu^lLLhl-x8&lg|-& znNiKr^!=K?U(?T6!VTS2r|H*e`gI!qd`+KEsZ4SsNXnj%1p;q&S_MI*Be@ZlWb0qA z^?yAzOMO1M49CvkYBx1#?Hfe<%zkZW=U--3t;{q= z$xW-Y_N#>cnzYucbcqXY+%(z#TSFtL=l<9;F37n*`}Zp-IBq89+*p0t?VE+ZmjOg- zroWLTt}>`iayD_(I<5UWO};^sZ_wl$HTgz*6dK&u8vJl!^|Aeat`JGBMw@ffCawJ@ zsi)*yG&$eWndGLentZG1FP>J}nl5p{P1`j6ZJPczP5)L+|5i=DU6XGYc#o&UknMC# zw%~a(sGFXZJm0(q-7ea{=+I|>J?oZAv|SYhbz?PV&-V_|U*^2sL6&U6E;p!MYabT+ znaXgch>{!YgZs~8d@6_ZmO&-(aU7Ea0 zlXq+U?Hb>sweQj7y_#H)7yC5*eobFLpTDT-575i9rUbMUQ5oM2JlDJi$`FtK22>^1 z`6DvRy~t&VH*=YhiRDu?ekORX;`65r@n)Um8wFoX|3%YZr}3Yc`gaTcQVMJGFKYZg z$$Ow*N?mlHY|plpAwC?H{BwezK|j>m|G%vEG5WdG=eWKM@!va=-za$ez8QOsoA60e zhIp=2^0NhBMU~(=+4gkeV}h;EkzE<$v!znbI&5P|%FBe@OB*GhFL)nqmptDYWr(J` zwDxh0-;>q8mcA@`uV_Dq4rcLwI-JGV(WvD4tyYGc>K`QU7yJVHUKW2nJq@0dJ>DMr ziIm&(-$1{R{D;sfLwxeO)aN!l{tq>NYWnQ5<>iuRpO;dE7J}#U6y!3*FDoUFZ-U@& zpf5Xy8Pe#>xQ>;kV6_jgF+zp3$0Y5Y$${uPaX z13cU7MK0s$C=rR*M`(6}3$1<8-L3KdfdtL&5WFa}Akx!67;PPl4JA7IclWjK?CKNp zwn!uzPqg+8_4H8J;2=I0u<~G{Edk}kfW%C6?QHFex3+b3475gKZGD~5j@Edjy{Bu? z?)CPro*uiAXprdYjY3g2&+b_$#G?a)XxrM}7P-BD=T1@QEDHczGt%D5-3$t@tFJ3T zt*!hgC#?f*efAJ{4n(6AZ|m!dP;az1-YR$=1ta$KceZv!d)oFyZDmzwk6Ts_M*BL_ z9_b%S#E0x*wRg!b>;d&fqaA3W9MRUd$2Pow2+iRR+eU7LX@JXwl#P$}weIdp#L@=A z^493UfNgGXTTf4a#HpKxnxw7J8;W=E{0u~PwYK#ETUt2~jqH*mN(}e)?-sgkkwn+7 zXvVz3Xs7L=c>B=KjIU5V=;RXdfv$c5zzrh(@jYy91VpqOh}xrT8|V~D+_lv1vwg?o z<4Ld`EsF7eEHbX^iw-ARvDyTa=!)EKm!dm&wu-6f9UOFcFw)=G7mXxH__Vb%ie z6;6&0i}umJFAhbAqOCi7+Byd@Ig48dFojVea|~XsTT$N;Z6E5?RyiBS;KFDu^sc_0 zwgY%Qwf1B8d{MN;?6k&*20HB?m>Y=p_V1D%wqtJl?X5K+H%9_HQZ0_QcHWz|4<^}E zw$Wlez}tgSTa}$_?@+s;J+Zvgu@n<~;&#`Gfv(O@Y`d;LEMM-?-tq!6T_-rPAw?-Z z&>xAy*_h6uLF{QPt2QCn**2I+^x8A1&I}uSqDQp6|B8|4IDYGAjIm{5FMvpJM{9=dU76mx8(+_1=%E zuj2ZDk?sDM{T40!A&GBaT)#=m!=Q}Eu}UEx3Tv3+x9G!M|05#4L)hLCrvF>o_YC0` z1-;{h*9j=>VmY^a3Y7JpW@-|hWD5Lenf}<084CYTW?air&+WNi)+>{I9n=3yc-@1- zZY7^7c`vBzIqA25&G?P))WYX8_#D#|!d@}HpW1g&;lJa3$?YBevA;eEFXjjK&X)T5 zj1OM5_j3K$r2OZZc~$eq^1_$pJp70KjkNHr?eD^KMEhC(3ekN`F&}^ye#H=kA1;Hk ze}BgmemGrkIC=l79e{{iWLZxceaU`C6X9oG zKddkM{{i+L@Y(-tMx-$7g9rE0ZBRsYv?LVuj4RVqQI~zjA+S!$M)SX?Ij<-KjE#vLX$Pn*| zsQV+DcKn@DH9(rf& z;pO>}06e>~BNWdTWPk$5H&7BW|Y~AcFrZux)1KABSFOKZ`N#6_ED(dBsU7LPGXw~vHkzLC%zBs_@ z?Jp91jEO@j^Iajkiqh<44?Y3zINErv*q;>A&D0YuUE#pVfXf3$Jm%7x?U~oV^ZeAm za5!b^OGg^RegfM==3O8@+Nc)JL)bBj%qN<9emaTGzGBn*`nCifg6((!58|%)q^S~$ zxUxk&#%&h!4@ctrk5dgY>)~1yN!Mc;r@6>{*Zny?j$8D8x1dfXj>|aBM=n5aMCMeE z4*2fmF|rP4?r$}+6Yl_czDre7culBq;`tqTxsWNmttd0zB4kdFBj<>c{exwkISzI9 z`(5x}WR+CEeW-BuyA=KMozLUode!eeC_C|91iu_vC5888R5QrJqPXCGQwC^e4aZJQ`rN|2JwNP^}oKgZ+{pLZ*+3y7U zZG@cr<=9R2yF|mw#|9{bTqV_SgNEnDAo8Kacr%d|p88!5uSrfbfVa^uil559%^IE` zcxqiSRd~aieI3A?Y`-Nmyhh-8fy4Ik8(87pui-rfyxEYer0ly_!wUmX?O)!X3h$d5 z-YdZ4{!~)_dsM@VJMj1|s_>rD@ZJMnnF0ezaqnQk^Rl~asB`@0Zy1E`&;qBG%Jh)^g zJMVXCcqQ{P^VZuApv3kCk(GV_L$hx=fTt)hsmJU; zX?VlHV}CK;5@dzr&w-SZ-84d3h;5`JnO037JQo}n2yhhYB9?!GF zTdLv3^N8MpTqT9KSi`#vykRIY9)IIicpEgl?U;$1Mi}Sw-SxkaR)Lf|Glc=O#p8MI&5Dv zvhv^i8r}nilh5z(HN0>jGrzq46}_m8s1w7a($>*$t4RnX?T43a(l+xgskwkYIswp5dN`xCMmp4 z8eTr|)OzOirSSSRyyd`4WZ;Azv-~#$PXBow_VJrT;r*?KcMN!6ngs8D4bKle-bXy% zZ4SJD)bQpbsOSDvQsW)d@U{W31WJr|D>B5wpFh&@?gk$J9fV4($LU`*ycqDjSO<)^ z9a-W1OvBrPpxz6)N(#@?@DAW|R`am~$_nqi#8W0EfTu7RQ}QpfeG8!HTrd1@?YvN8|8*d<9^18A>-WINjCb27)a(6( zdUt+8z5fP1=XlvZTyg27d_Jz}{SEZ6w9-lG{Y2~c>mM`TGZIhDFY76vGpH)RCiPS- z@(t+4(!JWYbKh4q`||Oqz>-cUHE-`i&pB@=F>kyddEWYw)w~rWZeU#Avz!(KZ@OI+ zKUv0kCiF0dxDu__`ehwXOx2i}PeAV&9^8BujU#ivyw2D*_uO;OIrrQ%=ZZYBa_uUHVIbBR$b|_C;CG9pk%T1@$~a&X)Rao06;_iLdq=Qm2>C z_H6Vl6qVWcd=Op%({1^|EOAWSsAsx6+LpB$SdI1NHl_!(dg~W$hD43k80_QHxpxMb zo*wSE1CMdRUQx{3ORN1_(fRY2I9npj2|z(Y7b~7vSROuM-!Odo#@DriLN+ zv#?D6WsncBWf$~D|3_ogqs{$egby$!&kNTs6P?7;-(UAGv-*35xd|1=dJhUPs9oba z&^H$I&Ce46et}Q=OVeyx;C$&k7&$=~uIc22uTS{9aaV(j)ewM&WC$BzF!n`L|T>oQ4-YMTN2nOuzk}dJxT(( zaK%vKpF;i*Y|wLl;wuS&>#Et4gxYE>?4=@! ztH@SVY49<}t|UVL;h{3Hm&_2e0_{zUY%ez%#F>Vv{m%+aw+^RAp07UGz-Sm(QK(T16lE4@0G#$p&Og*C+)fsVuP=tI4y1nniA zf0-1+=|c>^S-3gAukkk0yTKO-Z{OmJPifxaxXuH{BsPLC|#lb8pCCrA1@W)TcLclEKkDf%E-;uWuDmX5@_I<$toB7TCdO zq<4>auGbJei+g%X-X~K@&|oOp>k$ozq26u5XVHJVubOZP+TD(AOixy-&i)tiksVo6 zj_$~srrQzO!NKw_W_eKm7Ov*G+9N>tk>UMoN5uKT*vY54vAAMG1^O3y=lILIo);?m zM#OlY3rV_x5%F<6`vvSwtGwm|7>_jHZ5tNnl;>LaVID}wEKt_P@0~o`pTrLEL8gq~ zYYN&$n)8ozU_$NN4C2T7vaXQ+8G#LdSMowf3s@k+U7akQ;q_?Ql&jxsVM5uW&Bg^Z z-I-ZXxH|l)XlqNB@=l1#oKEqn8V zqNMM2anaZKEJuH?H`~vIJ{1jOYTKyZhU@992ir2WoV1?Kin|(KDCz&b`qzert(OHD z2o04s_2I7ka7b%v?@Sev!w0SH`%0k_BbhDD@Pp}*{VOo;|Mva9^bPu7WxxG2m`dkF zo-WDIH0C#b zwhp7TM_>l&M5Os=52?=r(U|q&_J!NGm%+9oZD0gvoE8c%^#}!n8vm{4z>N;%MhC@@$K;jG(Q}+- zZ^Pbmy#=B#dJ1{&NCo>=Ui9l0(t#w~b)a@ZMCR@Yjui)VV-)NIct&!Ql$9XpAdP>w#^ zzXZRw)VlzVMVV7+_J=!k(mD$y-dyQh(6Q|^y+6xW!v`PeV!J1w3z>rrUCQS*SdzkmO^+GuUg^sUyu&_OI$4?$F0GtbB7352kJiFO zG$m!NJXQg+-*>mbqN(9wabsHso{BW<(Y6$Amh~c@!Zd5!woait%;27J0u%1BvOMh_ zKbB?x-5AW@-Lh#ed+fZB5HU)6`|5RLQ(#zp7$pIlEJD3bq_{{HXB$Y7WE00|)K~v!rRKPO^ES3S zoe+ReL|5BlNrQhwTNvvNNdxv&GMCd|z3MHF$usuLxhiokM1B=zLRlilLK}y3(ycvh zS1>QIRzsrBnjh@bALJ4S-ioVwOi%=c_VZ&VaXvsEgr6F#UiA*f_K9e0@5!PINic9I z`hcXn(N5Yw6&(_p5Zjg|TBYpsq?CQ$L_h1S=D2n2qDiW*iq;p|it!}$={vTCxYDkR z0`xo3YwAd!IY51P&icG~Sv1<>^FGtViy2~R*Q4SFu5DXTAMDMNR^!F&;AF|MIL8@! z{OaIqYF~)t`*{t@9cQr8SERvzM3{(stnJz z4Na;HHK~prnki>@Xr_(q*lIKGSRp2K>+Ln|d^^>VXWNI`ix) zzQVOB>~br6^pC!O_0b!1bbf_-4IDMwOk%kRH-7$Q37%s%VvzQ8hDqK9Z*Z>71lfK| zpa|v|5~MvX5?|=G2Jv3dmp3-kCWv{!*~#N2!BKreXq58=m+VDJVfnn5h{ZtzWs1ns zF}Vs}Jhm}A)SKq-5rTuslj_A87+dKSV0YR0J*4rglE(a=RD6F~d1vtbCF$MV4*AJp zj6m@_C0JEs9ZQwj_MuYI)Va}@?xTCsDZvrB=sW5gK1g}9N7xe4hH6AZLyz!Xd^4lB zdxQ;<5%DbMPPj4r#g8P(bW0i$uiH=CI5FEkj2Rm%$jA@nG4l^?C)aWI#lfxiti8*{ zeAl4;gpH%ef5N8iHuwxlngND)cj&Ah&snL`D!3}&X{Ht>hvlA}tDQCj-XtJ0@2aDV zY?V16=YZ{rb=h`N^xLxSXRzWS|2Nvx@GCqYM#Z714{h6E5zp!hw z;eUkme)g!nVnddF9diVZ8llRTCz56}qgSxTd)#Ia`5MTF$W*KzYOs26?33+Dh>nV# z(R|#ggm6kIwoAH5r;meoP^+Zw>j#s&lR`Rca!-$t6tRejJ(Rod86n>+8d(G%i|x@+ z67&yU+xCRz3Ebg}SFVYBXl?D>l*sc9#MgI?F*C41$Za^e`rT{WpI}P1@AC6PX9#pw z>psd+8oM@RXt3I^AAIx4GLiFb# z{M=^7`y}}@na}s>tc=;>a&&g%uDr0m1mhF>nPK_<4Hiv!+W7tZU!HV2o4P{WpzuLI?eEkf$cscyOWeO7qn<1wA&hG;XY!aqo%QXpzC^bFgcKD# zfce=H&M!;VhS&uLpJ@*Vfw{%yCAiZC!xws)+}=x?yp)K%B2(5a{8Tv)KN-7{cy8bc z+cGgrq?m;Ky0D{>Dd`kyBHOZSYKChZwQqJjImzQ%p1I%Yyr$<{bD?hB`*POXQE3JH zfh_O?Mp<751cZC~_Vt=!KHhzG{<@_WJdmzs{JHSH#f6bs+Y#sx%35*ztQ;Q&6KQ=SkjrWC6@4I6gY;TWQM81A#%nZN_ z#ry%CYj|vZWuh-Lu+Fw2Yo)J%U20`dJmtH9U$R^)bEIMo9FhITgMc|M!2*MG#(*~h ze}H0UHhKs8XN=v4-(^SR73(`fWk27vnOohj<@weT)J~)LvF}<4PYN5kCvJyFTBz@n za7NiD``I>#5 zW3=Pnitba+8-&+KNjiipqlqQE6)(!(c~J6>5i^owANh8dwCu>3wutNtdegU^*2 zn5%rWvkRk*ZSQ-asCU^{Bx7$)30qDp032`mP%7org#*;j1V1e#vC2~ z@*3p?i|g}ikFCqcUy2gK{G2NoE7=j?Ey_8?YB>Dz=!SI`jOhi^H;WB_Q;HpXXSzuP z`C?jmGTvL#r8s#v8jJWpM4lNnLGt4NYJq!9Vd{N(wFah^K;-Bs<@SEaY#`)cED z&uv(gfWO0z*d42`+p}$R@S$%YGjRLn`CIAcY?x7=cwC1byfC`XH{Cb0a@N`c_I_&) zMlgG#%lDQqGb@G7!&)n&LbDc*rem!|tK7cXbt@L5Ux#N3{(gk=x)jSitK5iPt0k`0 zR%@v-clG*j=NT6-DJ&^0f(I=)Q0=U)X#mEAuL<{VELaDLQ8VJQloj}}NMokMayQnr zm}liik{OtT_cXbYrVPxL=24G4J`Zg2FiN6vGIyeBAW^k`B5c56TK_qGSRAMI&*3At zL}*anWO>=K0SPsbtdf@uEjU8*cH_h1ILT|oM{dbdKfTNP8s%=~uLh+}_D?Dt#4(ch z5I!u9l05R2+*09L<&Ah4n5|GUXz*qh-|$?i5}~L_^j#hTM~p#)?W{Qlu5-uS(3aDl|E4B zkB*1cbhx36(RpA{y5v7nR%-HkUnWk_pDC}hJ+mbK?4*ft$$r#TZqs8g5^5krWnYG5 z&sxO>P{spsG|AhY5ECQMr+?#+n>_!>_t!mS75m*A3256 zfKH{aPSSTGD)5UH*EBFw8lUKzIq`~b8knUTpQRd~tr}Oyqh2+xSIy5-jc2LGIn}s2 z{tT*dgKB=ZYFvGu=cvZ#sOHaAjn7q$&r^-hQ;i!{<3`oENi}X#jhj{DwEGiH16Vu9 zH4Ws*2TSRrGm=IJO=(1DspthNx>D6741^dJ5}@n6@5xYpHgBZoV=d=eSzERkhB>>NaO>m7}r6 z;{>rrCFAagPtl{LYj+|Ot@-V>#E$&>c++vhcx1H)F9o|A`70FQSI>J zVpTZonGoFw(tHQ4@2YNYkVUwizNQ9mRb92mE04?aszhgXt7;%#tjkLlH1TjgwW zdE3Z#X|UCW1~{wS=$-23=Bi!IwaPNp@p$(GT3V}r-*Y@VQ9?iPpB<3X>~ zwR&)K#wWSaKAOc!2KUMKu0MOuSLHqzVBt`4^web9tU zG&{Wwb&?=w^Nv<$t1~V?zPJ8l>@c9 zro}BQT!T(;Y^g`zJDe`BGLd4y)#|R7HI%}xxwWwos;cUnTdTZcYg5hQDs-{4$|E+& z^3mNB%6r`n_4R159P}hj4tS|vXTJ$jZO%RdumsO4yAkjfhWK4Nw*aY+1JKttbt^!j zLJJCRBCG;9O=y?vZ+0Ev9Sv!$&GHqbx|is+3R3M(bR#1BZ2%V`>amFWs{x7$Ym~c% z6`-8P9e~$G?5_nVB}BcxL+At$3F`p9M~M0ySLic{EM6?m5uy>#5mo?9LnQv+5Y_`; znC0<)!j%A*2+@xB332`qA^KyKa5bhfOl&mYuiy~{UnE3j{zQoS(Km=NN5Mr3u2;}b zXh-`M`Uiw4_q;+=4wvL$E+sxAA=yocd{j@9ejgGx;JSpU-wndY0RBpdc5_e~WNC&d0i!)?KFHdIf70+^OIpLY)7sLjOj=ON1!z zLxuj55ap&PB4QAj2~qwkLY#kuunFL81>YyclKxK$P4@!Y$K)j0-YJA=XF4I;J%jK; z06n1id^^k%+3VuL{ z`a}s)&MgHqDSnX7CB*Sk1?k>H`aMjDas4eqROV3ywI`DiDdI0tldU0P7NsrSCKBpjyaZ3Gj72HJFigE}sK93QizkaHW zFQT~IiTQ+Z7y6yhhyOnYVH@Ttim!IGmv9E!N7#Y;N4Oj9Al!rTK!{0$?s?=7KcNHl zCB%IV5Ly8!t|^|55MtaNCtL||k`V1ZP51=vBO&_n93lGUIfXt?*nn|C=*LY>#C59? z2y0MZ!a9I0gsAT!!o2`}gs8U^|EM>`JMkG6%qPV2a-0zT@l(Pl0s0B|0Spr&|A&P8 z@xi!EosV`BB7Z=k=^jh^A16e;PZFZtrwP#?QkAQED{HWIGH zI44AVy@VL|K0>s2w}Mk}OUYkQ=xJ;6R@WeU-7<=?H!qgDP$(5Eg*8}*6uO;_h16L{ zwZY#N!;^?AuXh3zrMyL3l3F46dk6}k6yAXmt&ioEVFD+vpb&2A@P_!V=X) zOr=sY;a}p@$fQ)$DX$XH7`27?;PL#2d_~BkUUvod#TuqusZs5Q#}~>a3eO-9V8nMk z?m#^B(0W+rO_GPlTB^$sq!yEBLn>ZgEy|<1l;n{QV)AHyyncElFjbDXm^>^qCdoS; zCy(@s$-^`8Qp*$UHF?nBNN4&fhIr4X& zRi##`+Ddw0nfyaQkC%#zU9`-!{c z`|%z4Vm6Yz*gM@x?#3^#-hnTsQ@nof+<`B)R{Xl}-+}K=@^0KEp9Ux2jUChPz;~y( z;*bxQ9{+bKiWiEfSfep|c;v&FqBJA55#*y>7i+{rjSyMKTl#FdZo=>fEcvDVAU!CS hV=;=a@ZvlG{NKRFTTC9EmAGy=j&WZSw?K^V{{dyNH=6(e literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/tcp_out.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/tcp_out.c.o new file mode 100644 index 0000000000000000000000000000000000000000..a9dc64a1f22140079e9325a301f6ced967bb246c GIT binary patch literal 10872 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 literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/timeouts.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/timeouts.c.o new file mode 100644 index 0000000000000000000000000000000000000000..073395f4de226dc42df1aed3a326f23fac8e9e00 GIT binary patch literal 4772 zcma)9TWDNG82-HFG-598+G@SFVlHZ%n^vtL5!v1Bo_ZFuo8#`r zS`cg>EWXqig%Zek;rLowPuDN~d)?k_ zS6cV7=AELxmWeAopE*d22_H**_k*VlX3}dgYG);02cBN6Y4a-*F)p#rwnxH<$M>T$xS9FOZjZ-}? z4cnElXhX|{exV7!PjIp$b!|oARqHKTw}+Q5^ zbEJ8)&85NU@|1fa)^fJdJ?2JJ;mL6PJGUdnaoV=Byq!MW^YaScmL}1q#_27XUqrBM zacAAbv01mhYc|ERzEV-^qHv88_ng}m`>NI2)in}5WyMFvuF3Zq2KQCT|BLM_s!jds z+keRomo;#-XMFs@_`sgWpBaqr*qOLHv7JVTfk`{*xg1%&P($}Vy={gX)`Vx8toGnK zYrWNJcUj$5%-S53Y_+CtU(+AgYY`&5Zr8IN(8I80^3rQlJ-eJD)lt=0v2n`P=f7Uy`>Uw+Rn5nD8u(5F-)Z2xMZD(h zuBp&$iWzb9{q`7fb3bh~;sI>GbsxFm|?$V*zdsR{lR;v z9sBVEY3~+xGkuO$3G;oU476;YHSF`SnUCK=JF4w>8RvK2hWYSkjpIIl8?~|_h55Q= zd>VQ?_QO^qzT2?(OFY+HJN84a&hDhc63_L}MjPq4(f>We{=~4qFzjy)`v=3OaxU*I zES5`&4E2|(bf}b+o@9EiMEzMRIIonIPkgqMnM0ZRTt@hclvykmokA6n%q}`2LgkE? z^OE@Wfys2HoO{_Z-IRCoUNWDapI^w3moDToB8S4lK|L4lC20zdlXbGf;WH+^3=$Q9 zgPNW%>I9`^u8=FQPQN5Tiv>AnKbr$Z#}WRF>ttROPg=m(y)636(!!+w68&t2>vmAuGb@L~|I#mKnN!|@UB_XrXG#60(Mi^0Tt0MB{z z{7pN^e&o4^TXf=e3rzTV2PS2|DVg`QoaYQciPE8bIX#EAT=ZL4X=PLpC9>&qni6xR z5+#ZYY@kP7v2o8Gi5&<#^9k-_0<;KUpX;`a7Sm`o@2U!_4TF$gsahwEN>)&<7sqOa zQ|~tlr#`rPekmdhmeTYonUJ5#R{%2JdulhKdTlQuP(EY&*QkG z#OPBqiFCPK%*`#9of0;{tqFfo`3P>1aNh5_@P20L#ltvtV>EFbW4QxQBcA`mah-7= zt{)cWL-|&PWBfcJTa_P5Q`|k#2;ur*K?&gN>(?3E@4|?q?Zv~qjN`m=c$io5y$zjf zU5Vmz;L!O_YJ7bESA4HS*ZEGv=D8_Rd`IBW`Oa&6>{op1KB4lvh#1dViQ+pBhtBs8 zi~;y~zRh?P-)GSE{P;e=XP^?r_bD7YUq22aUKi%WF<0eVhOYBvVf4eNMDd-0L+9HM zzApHfk8imuzu%zid~d+G(R_aaPUo8kUlcy(<6E%e3!=ZycN)et;!0G04AS{t)#l5$ zWX0EO@I_G&yv|A#-zJ0aV=X_vMJv7$gYW*E@bNuO&+nwhhtF4)?|I;OU#ogcfluYc zIV%0oE#mlocPo4!0f#^Fz2k9iHtrb%mqmUz+JD~wr_c8c=F7NVJbY_c>$f8LcyF@2 z3qJk78iYk&7olKHJORSbC&1}-$v75n5vt007#A>DA3V6Gh;ezJac*jjq0&hl0zWAd R*h=NSsN;fMjM@MS_aCo>s1X1F literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/udp.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/core/udp.c.o new file mode 100644 index 0000000000000000000000000000000000000000..38cd8df6ede75d6490956ec541d1cc0c5102ebf7 GIT binary patch literal 5956 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 K_Nz&!E$+WK<}zLY literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/bridgeif_fdb.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/bridgeif_fdb.c.o new file mode 100644 index 0000000000000000000000000000000000000000..845ee8902788cf69da8fce029f9691655b3ef4a9 GIT binary patch literal 2232 zcma)6O>7%g5T56?V<#?c<0iokC~^`*P2Da@9aX5|kUIULYJ;GZ6P4_>y^ROrq8FDhADaWKJM*UQ|ZkPzowctpg-Ty*o`#}dvV^1xA zk&XNc|9)bOq8FA3zPX++9}?fizrRZ9aO+~3(!rLPzL=*pwWFpuac}F}a}GU!w%3A0 zPY;s#5S8Q0bdx^)Iy<~c<8P&RNTnFX`*_2U7Y-3OJsiB+Fs*r zC%bEScKP$HvWa{rIdu2+^0@ffVT`pbW<1dH&QGauTO_T8m6?01s7TO*busn(7SYm} zA|e@c?Q$SQE2}rNfsH<=Z=)mqOdrkq7LIH1@W5pNm@412Nm7%;3)K%FWyf_JR{i4abJAO7oYXTFLR9jzReor{TRNybBWwB z@Ly*I{w3BJ@9!fwKI6nu`i!j<;Hl6sO7psLEqAR{P>YnbcSp2&J!e-Nlq`{{)r=z5 z>KAIZ-e@#U+ahDvwHB?MZB+Go(^JiSxu#jtY&~Z+id5CBMRUZJU9cGX9gA|s9$&|SF3uBSA6>N zoT}M&!zeUu-Qqp|PkDlIID?jFW(9i zBzO#bc$p;Md+dAphB&~QrAWSac)-hd$HRwl$+ybBm#@sh8A;~i5Prq#<=bR}6pvwj zche8Vhv4~H75E{=nGk0e*D0<*<&Uemt z&$;*9xx4S2Id@jmG$_%KM}&a2l%Gj0`6iE19E5$N^g$8_FjAQPdAWABqjydvj+O3p zP)K%%@N#jctrhRNdi$5m&~2?S-YvCJNO#|Dzgp0{<<9x%$4eD=z!=^6@%XR!V&&*g z4tozD?M>cI&rQ5Q5BWd31INpq-*yYQAk~U14|Yao0~YeT-4h7?oP8@`%w+D|ju=1n z7!P*2?JIB8ZQ6%7v`+@UOJnN&gTTk^G%}mQGk$mEr@L>}(sNI^C$rkM94wdl^c=2z zd6Zre8?uvhA+eKMBYqYO_@RDv_0g?FZh7S|zYlu=d%j?`RC+F#Up@cQiQM9nQ8X5C zx*%E8GRt*nv*M;sT{yXp^l)Z4)JEVNJh?<9#o_xh9iz8eE{ zB>K~W^%zcKcwZzbw+ejUi|y~PBi+l;(UFO*&-m*v_E?#o7w`xDd=wmvT=8^dV|XZr zhcPA*&fvP}7?R)sm5hqR*(xD^S^=@dXJYup7*>1dNe{_>>SEdNlIWP6cU!Cy)_YF@ zvBaOo@aHl7RfvQ7a(>IJSx(dPj0)yG%vXDX&3e<`@?e*@E^l6TEDH^*QEAvgz_A*w z*R9Q(WmYW*b$cmfOEuH6BT#l)X0>9vUR1WV<*_aw!)DEEHQk`1S*@yaY-Df4HkuEpB^5G%FXt8D+Km?KEJ}&OlyVVAp6L z59%fc1Q_mi!!yfbJtwd=<#|@ygHbg-6Gqu}VK~+mgF!U$87WxP8!_hR2N~_VZnzEJC8|#MYc}~5&H57zWBjk zg*YP2QEQ=9eSa5xNmL2zQL3W-eJ@IaduCt$nvlo7Z;P_7n$tM}sWo5qjWORizig0mKJvN+c@LhnhveiJ#?;_yQO= zahvo2mL~SBXYIA~(Yd)+N|BhNfaZ)S%!n6G1p)cAOw?_+uWCW}_Ti*<9_kC-pw=n! zCNXiJ)Dc3jd0&sHvRaLNwc&25ZMEasBlcN zNlX3yA_qwFY?WM;?QniWCgFv#P9|B@$$pNZ!S?^vo#pi!@N8Ufa~fqIuE)3p&~u!f v;&+MZA?#dodmq&$6ij3r$;^74_tw^$&XNBiblDMez6sx)Inmnre;6G4@HS|sYUT33~7=l0>Ka#q*px<<`o zAQ%CIFnmZJ00Q)8Nh= zFV=U+BkB)dM`qA?4EvGp66xeUwkAZh<1{`CveBC*{bZ~m9VQ9s?l6v{0sb}b0&T1v z_rez&C54`Ukv$}NzEUPi_c%Kt)9}(*C)3R9WJib4;06BGon-ZDh-_SMeS*>t*JHnc zqvt67i>C$PvtrVhquiBq7S4ytne*0H;67Yt0Hja&GK0*d-YR%r_YK|_5u)gR0YO|Y AumAu6 literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/lowpan6_common.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/lowpan6_common.c.o new file mode 100644 index 0000000000000000000000000000000000000000..238e73bddcda80e4846b5c6f5fd6a136de7b207d GIT binary patch literal 676 zcmah`Jx{|x47Ewp5{Usy5nmE26G6bKh|&SER8{Fh7(mSEQX)}_Bvo?=nE12(16^3b zZsIoS0G53AJ3rfJ-&gPU1`$C7!Gi??xXysnnh`v3VHKd??Orv!{@vqo@W7T!dEJ%s?(oNNeomBK0;17kS@=dqN^BykG54 BFc1I$ literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/auth.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/auth.c.o new file mode 100644 index 0000000000000000000000000000000000000000..616c12ce3f53d8fae8e4dedc5962cc43063303cc GIT binary patch literal 668 zcmah`xlY4C5S_(#f+Y%0aY-mt7y+vw38 zN$fNk>3L>$-kkpG-QOvtNJLRYbB`!?P7qHC5rwo$)bDn0TT%bv`LuNz>nq)+&Kcq+ zGwF!bG0foR=^~-VS~CgNroXLr)ULOu_SJzp@}<>GSNr+&`!@@~@M_brzfuju_ZIwm zeUAbRHnBrJAkxKWZcPep$4(E$ve}0v{bH;kofZY@!CRhZuXyV`CfZm#9;FkT6}4td zoI}KUw?@fxH=HNQCVVjF$tH_Dxz7nWxc*Y!d0DRw&BFDzrk49~J;pVFp6~7zzZC}O qib!A9GAqX{z)8&#eDQT41Y`%8^bPR5B2sSy4^`d|{GO1Yh4&A=LM!(G literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/ccp.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/ccp.c.o new file mode 100644 index 0000000000000000000000000000000000000000..26b6d93158fbd6e76bcf833aba70c4d1b0b4e5a0 GIT binary patch literal 664 zcmah`Jx{|x4E2$uB@zRl;!8qhA_zDIwJ@+%Rp~+)K>UD9h(w1#)m$Z*__J(G{RQyc z#BI_6EWOz8{LVf*pZ&XAr4)%N3TVNI!h(36nIIsaR*43^-c2hQ+&`VRE<3udL+YL( zZ&DKvNgX5ft{*QVYOFOQUv0YEYDeuldum@Ds3TWe&3(0>OVgiu0)bO|4fB<18r)gp z_4*EZL`gEz36ah}GHYUZJ1+c-L^gf5q@Rs7q~km%oxEjP`iiseL!^zh<6%6pXB&pY;dmFVHu% z11%ROna+Eiw=+AlU%kf%r4)%N3TVlQ?lR)F=7NBH+9c|CyZ7~=|MYrMzi#Op-K5SX z@+LOXnA91dcl*)^sZy(kzS?p3)V?}!4%Lx5R;RACTEt>Mmwx{i2>_>b8|E9uG`O?E z%k>@dhz27wX(Yq89uVpDGqEN@w9_n(1ljn*k{%jsNJnW(dhnhk@f-eio~wuS)*()qA}hGK`z#V#vib)P2f-@bcuTM&-w%O7w8+> zftCxCOy|AM+nJr&uinGGQi{YB`Ltj}w;A!;Gl5SvS|{pvyLS!0|M+s&xNPey-J;Gp z@+LOnkkkpFck|o~s8X*6HMQmLs9m+^?5hKHsE%D}HIK!9F8%(^697)>Hq6(GX>ezW zm+L#^5k&(tZjR!29TDmDGqEN_w393j1ljn*l72PTkPg$7bo7=a@d*DqPk}bpPKM#s z#%ZbH3UY)z&sWKH*&Y{%WEx%?>tvc`o$Tlo8oaTQA-bwA)e5h051A6%dpF literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/chap_ms.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/chap_ms.c.o new file mode 100644 index 0000000000000000000000000000000000000000..33480fb1d86dd13e7770e4c63937782bec2c1da4 GIT binary patch literal 668 zcmah`Jx{|x4E2$uC4zxZ@g<=$5d@ry2n=jhRk{!c5Hq@jNbL})nnQw#Kg*8z1@PR& zZPEcOz1Z*k&OSRIy_;*L6p1McXvT=bf_ULX5RgxcME!2}sulEaAC6jQp+47b>Kr3) zQWFnJ9U$~B?@uFYEH@)xt+^X&Q*AlhYDev=eOFpdeYKxU-#^m?0;l#G<_py{xHHG= z^&Rqvl7SgLX1Pv?bpD=M6T{na;Rh1g^v#lfGS-le^PF_@l4a>L&N_FIHr9@Z@vBYq zTED-@9+Es;qZAc8oZXN~cwwxQN#=F3pF?P{{eN{QWxX~$8`oQ(M8${eF)je~92KYd utqAz8nDk{YZ{?f?_)@b3Z+r#t0hs|IeF94ylqU67!K=D2@Scd^MfVGD1}!E4 literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/demand.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/demand.c.o new file mode 100644 index 0000000000000000000000000000000000000000..e642c30720f04c6f52a88b62d3c456178b462607 GIT binary patch literal 668 zcmah`Jx{|x41GtEmLLW`#g~N2L=f~;L||a6s?vopfcOEICK4S|P;*Ey@n@Nl_yu4$ zahr4iOE302zq8NINB{OlDFrcw0CNU}1@XeEAb^i$V9@Jbw}Qdl<4Nm0)EByg?kVL> zYT^;p5ry8>LpwrawHf(p!`)KbYRB1Cdum@Dy3%UqtNmPj|I88;IJMU>U#g~wI}5yC z-+>1tX=cWW9s)Xl&#Z~b+ezV{B(mw7g-(n$&~cta51+Fv9n)F&KGMe8$tZrcXtvEeo$TkBG_?JHb!TP04tX}Nw>gc957%Q{5~$}(aZ10H u0=_FIec8)fIcEucsab+IzDDo~G6RM9B&={yn$%k-Ue$dO?~91M=zamkTP(5w literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/eap.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/eap.c.o new file mode 100644 index 0000000000000000000000000000000000000000..9c52748f77e8e37d42f707b59a1900e5ed9c5d88 GIT binary patch literal 664 zcmah`Jx{|x4E2$uB@zRl;!8qhA_zDIQ5e{&s&pX?Ab!B5M505WYOWGY{8=_8egQo9 z;x_33mR{_4erKPZkKXN#Qi{YBMKotbu_HlyDu^hgWukt!d);a?=O>AQt~Hr7DLc@CYtWm)=4XWfTL8*9hIcw*DM*6S~F zNJ*ZnQHqNFEpEsZye!tq6w5l<%?W8}^Z)A3%X%SsHmWiBgs literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/eui64.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/eui64.c.o new file mode 100644 index 0000000000000000000000000000000000000000..5c5a30d6955d1dc78f3d091c7be0c17780e24606 GIT binary patch literal 668 zcmah`Jx{|x41GtEmPibIiZ2P3i6G!q)X;&gs!A8a0OAK+N+dD_P;-@F;?J@&^cR5L z#BI_6EIEGf{LVf*pM%>Qr4+;z0xTF17Q_o@f&e~NfnmRY-3o?xkEgB6P29kXwd?GueRZIYTxm6r)qXCfKl20ur}i4=E7de{XNlMA zJMe&Hl6FHq0(Ab7Srb#V<03u_vdO!JelpfT$9WDtdd;%rh0c2Skv7(j(|BT&yw>e+ za!6^Otx?K~9WL(3B)l-z$t24<+0O}SX#4-_&dYjjifmkOYleys*JHmTr=D-cDg9Og td{<2Ra+J4n&XV(`X6d}~b#k9vW*~^K@{BQ?)Y~9j)qN8mu%I;2{Q{k2EA#*W literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/fsm.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/fsm.c.o new file mode 100644 index 0000000000000000000000000000000000000000..5535200d6a8de83a38b7848a76117f66c8177406 GIT binary patch literal 664 zcmah`Jx{|x41GtEmPibIiZ2P3i6GzK#&<__J(G`~t9> zxJ^2Mr5F31-`Qv9qj!C!l!BN-gc$?kf&}e}AVP>mpx^CYwxa&c{bB30t-ARJRQZotFs=ux_)TXzkw$+Z>^QG0)SNr++{+T8y@M^DNzEDjQ_vU!L zzJ~yKw7DJt+P>$`q~zVG@J|xCZ0w*Pj5E-wwa|l?JkOr#taF=aQ=D*$tV3m&H1nVqPb^IUo&f{$Jg3SuZBf#`V@FQSsq=jB^6@d@WAtmr}rY q#iTELc`N4}fiE>n@V1u;Awg!K5T69rh)KN_I;iTti1$Q9UUa{F?kj}= literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/ipcp.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/ipcp.c.o new file mode 100644 index 0000000000000000000000000000000000000000..02ca82d28a3461cbb5b4cebc64f352f11c3c70be GIT binary patch literal 668 zcmah`Jx{|x41GtEmPibIiZ2P3i6G!qL||a6s?vopfcOEI5Qz+ds<}!q@n;!X_yu4$ zahr6hr5F31-`Qv9YjA(3l!BN-fH?!gl6c`%5WvSOFzoklJHhbb`LuHx>MPwv?~L*$ zHE{-YOrdx4bP=Jo){cC&>29kXwd?GueRZIYTxm7)^?ojX|7HmaoW^UIuhi4Todw>k z@4y4HQ8LmApo`DknwY#Dm;O~En|@g67h?@{TolmBd!DCnbk=)}w6S)a#S@zrjb=;8 zA?10tR;4RxeW2m($;gbr*~Rk{!c5I^7&B9S2wH3x!;Kg*27F95q2 zw@C-E^kTpBJNxW>46m;c5yTJzm@$CR5-*$x0`OrGU^Ez9c7oB({ZZ#EROhM-{bS1O zRL2?M0fk=g?lgkday#;I&E3FF+;X;Y2X}Gbl~z+<@8`nz&on`S(|8T@g?gH}Gsm0t z9q<6M;WCjZ1ld!}=Wm0dIcwP5Jd?+IFqWcA?h%BK1 literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/lcp.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/lcp.c.o new file mode 100644 index 0000000000000000000000000000000000000000..3c1646e85e5947398e50c0c3c5a5bbda9810f78b GIT binary patch literal 664 zcmah`Jx{|x41GtEmPibIReVXPOauX^APNIpRh2G;0mKiugh*5(P&J1H6MvSCiC<9c zCT^1sVCltv=Xdtm`Rw0ZE2SW&5Ma)LupnM%DhS|X85s0>SM6YM`*74g>*#YGqI*nv zlbU!4bwHtad4C$AvC@ouweD`JmfCW*)sEU#`>wQ_`D#BGKa*L40;l#G=1bKyac6pSp(=VYW4K<6KsH8FWRF8q^3Hhs6ykH#A4IM1Pz*DOn4=&XAeX=Ckp7{A#xul4$i z>`{{EYLud4fAbqM1uu(rGR2}!c5_G?+Wfz|ld@h&o{j5mOrzq%^%xff>NzS->6cQ# rcg3VHdwDD8EP*dIOYpW=2|ht)pb%dK)`&^HH9Dy3zKQomL|$~iaT6Qz@9eYlF}S``NEQ5NxX0(2;gH8820;@onUx#f7m$<^_lLXcSL!U znmB{nC+J<=okVCYwIg4xy6b8~Z8}?OTkWVlS6WSDy`PKkpJ{@C(|8T@g?gH}Gsm0t z9e6-)9iJrp(r+ce scg3VHM|msfEID6lSI!$>Cilr@27>sk&KR>vy%oZB-52oz3n~-cFDybVNB{r; literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/mppe.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/mppe.c.o new file mode 100644 index 0000000000000000000000000000000000000000..ed92bb34c5180b71bf330f4cfe4eeab2ad26a002 GIT binary patch literal 668 zcmah`Jx{|x41GtEmPibIiZ2P3i6G!q)WE=2Riz7I0PzDZB@!J1QFE1G;?FX&^cR5L z#BI{0mR{_4erKPZ@BYKRQVL=U0Tv7h3*v<{K>#1?z@XQ=YXyVHm-E(js5`oi?giyd zV&W0hDTUtc^Hqe#Ml>8U#q5xJ4?J? z-+>3DS(fM_p!2WPnwY#D7yeBmn|xa6S7QxyoafNPk2Fo*>8$${X=Ckp6i;lD*P5*$ z$CT&U8l|q-;o_1^!V6=aOtP$#{hX18w!cz$S=MWlXXAQ1v#9uRJ;n`zdS=Bb{Z{Sxnsh`i|j0lio&_W%F@ literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/multilink.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/multilink.c.o new file mode 100644 index 0000000000000000000000000000000000000000..006db04fcb08b4382ab83f7396bc12ccfcc283c8 GIT binary patch literal 672 zcmah`+e*Vg5S=wiYe2y(-azV;6?LgtMSLrz_Qm+1_yL<5Fxa%xY(by=S%08kpl6y) zoAf~kCUZ{a?99&WSLgmtDMez6>NICWHyQDoQ$d}4S|;kY+qboP_u=`ZcG1+AxezO zm+L#^5hdfkjr;N7P4|d&`k7c0BHB?FUj^Cd!;*e6){qXT91J?){f$E zY@@W)@o#c~G|yMbW!WC*XJi^)8tY`5MV;*E7#h65zq+%$UIUSh>upX^_ThT$S8()v x&;H_R0r;$#^yMgb<(!4{p=$2D^)tM{Uery%J0e09-7lBqE-U~5 literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/polarssl/arc4.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/polarssl/arc4.c.o new file mode 100644 index 0000000000000000000000000000000000000000..3cde8929dddea1d29125f1f7e4419a3befb97793 GIT binary patch literal 668 zcmah`yH3MU4D}^ROC$zf6)y>ui6G#rh`_*BRiz7I0Pz7gArc(|D7i>w;%6CI_yRa? z;x_40ODDFkkDvJ(-rXvtNJLRUbB`!29WR^`0`h5O_SC*Qbfwiy*ZaBj`!@@~a2nIFzfupwcNY9+ zeTO^@mM5W3h;;FpSrbFsywopZ*>qw_KO1XE$3;OpdCRi&6>t5ANE>VOar|M^qS0)L zbAUMS)~a~r4d+R+2_KAkvdJP(?sE(duD_IbR@Li4vv9qwsa1Zs9^(o?&-d~bzZC}O qib!A9GAqX{z)9^2eDQU_2V@7B^bPR5B2sSy4|U!T{GpJbh4&9aiz}}H literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/polarssl/des.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/polarssl/des.c.o new file mode 100644 index 0000000000000000000000000000000000000000..bf383329ed60e51db9e89c34c472dd2e7f544a57 GIT binary patch literal 664 zcmah`Jx{|x41GtEmPibIiZ2P3i6Gz6)ZbkjO$K%#{TVLoHofFEN z%%mfzLkfedhqDBYm1YvEb$?TBscmmZ?W#R>;7hBSulDot{WD8Y;MHEke5sly?k(_o zeGdUJ%nCgKbn%{BlajY%=bt39*_(wP8f&1_qJSQ}n@U~Y8Awg!K5T69rh)KOQI;iTti1$Q9UUa`}@+*4) literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/polarssl/md4.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/polarssl/md4.c.o new file mode 100644 index 0000000000000000000000000000000000000000..62804eee26d76e76e5dc943de8cd8052552b4fc3 GIT binary patch literal 664 zcmah`Jx{|x4E2$uB@zRl;!8qhA_zDIH88MMRp~+)K>UD98;K49)LbQ)__J(G{RQyc z#BI_6EWOz8{LVf*pS`^7_ofx}@1IUvmyvGkkUD3` zo75yDQpX6r>&J_j8f(qiSDWs(+EKgCp4wLj>d2K=b6@S}()4GZK;YC~!+fQh26vWt zy}m;pQ8tY9fJo;bnKcQ#9T)ytBAdQj(nDhn=_Jod4_>n@eZg7hA=bv)@hF+tG_Upg ziyR`!b2Um)vA@L)nSz(aI+UD98;K49)Ep8_{8=_8egQo9 z;x_33mR{_4erKPZkN(ZIQi{YBMKotbu_HlyDu^hgWuif^ch!mpw-3jy^R~XwF?COn zH}Nso**q|>4xJ$%md>tu>Wo$Tfa8f^Yw-Dz1bhG*k?8`H>rxE`Yepy!J_#VP4Cyy$)b5Undk literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/polarssl/sha1.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/polarssl/sha1.c.o new file mode 100644 index 0000000000000000000000000000000000000000..3d4ef335c71463b34cfc48e9e746b5ea71668528 GIT binary patch literal 668 zcmah`Jx{|x41GtEmPibIiZ2P3i6G$Aion2DRiz7I0PzDZB~m*CP;*Ey@n;!X_yu71 z;x_40OE302zq8NISO4x-DFrcw2y+I+js)>k5Fx}WFzEGeTG8PC>9o~}^`&m3dq#Pa znRE2IqYwd?JveRZIYd}%fF)qXyH|7HmayxMD+uT;~-y#-#c z?;!w+k?H6mpo`Dknv}eqI6soeW*-*%*;oUe76tV1HP5pbI_o|p+E_aor|&i^YR#6A zL(21PjZ)`!IKL#5@WNOplPv0FKPRN2?Jw1xm-X7@*|^@;G;$xV$G9R;&o_5Uzm)>M rD<*x}%Ud~T34Ezpf;YZS2njL+h4?1$d&Q*Q1|3v&Kg9bYA}_jsN5?C& literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/ppp.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/ppp.c.o new file mode 100644 index 0000000000000000000000000000000000000000..f0bf788851f50fca9261045e4f0ad1e5ce028bfe GIT binary patch literal 664 zcmah`Jx{|x4E2$uB@zRl;!8qhA_zDIwJ@+%Rp~+)K>UD9iA0A$)LbQ)__J(G{RQyc z#BI_6EWOz8{LVf*pZ&XAr4)%N3TVNI!h(36nIIsaR*43^-c2hQ+&`VRE<3udL+YL( zZxR!aNF5{et{*QVYOFOQUv0YEYDeuldum@Ds3TWe&3(0>OVgiu0)bO|4fB<18r)gp z_4*EZL|K;UA(75MQfp#(J1+c-L^gT1q@Rs7q~km%J$y^k+lf2gJ zFLH<^&($bJ#r_sIWC~su>tu>$o$TfW8f^Yw-FaCrglFS=TeGP6a6QHqfSy@#ieHL= r?}|xZ_VQNFS%5D!OYpYW0UwYV5YiXG8ZoK2frF~<8@w+fc+vd=jp-|o literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/pppapi.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/pppapi.c.o new file mode 100644 index 0000000000000000000000000000000000000000..73a0b1c04640bb870e02935f4d2d66a394e55c45 GIT binary patch literal 668 zcmah`Jx{|x41GtEmLLW`#g~N2L=bQ)A~3L3Rp~+)K>UD9iA07#)Ep8_{8?rsegW7` z+$J5s(u@7h@9eYlF}S%_NEQ5NxX0(2;gH8820;DonUzTaMU>q^||h%cT9Pc zm^g(xpwPR#KaJ2@Zb!aab2rqc+H$tlj@niGuC$u^dOsK6Khp#SPUAJq7wT!^&Kz&n zci;heo|`qcq-eDJ zlk8EJXKPiea)+}kG6^q?bu!7kPWE$18ruH9x|6D2mpmKSTc1SbhwCve2-Gt#PwBT( tz<0%@FMD|_=PZFQwJY$(R|q~qW}pzCge49tlX|Pf>$)%E0}+uI-7o#XEYko0 literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/pppcrypt.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/pppcrypt.c.o new file mode 100644 index 0000000000000000000000000000000000000000..b98e7d94ca1da0a67b770a44699b597ae772a79e GIT binary patch literal 672 zcmah`%TB{U44frNOQarnikF1Si6CHAL_vsKRh3={2M`~yDUs+Q5G9L5Py8$&0AB!h z6Sqk(wd8mvp0(HBufhGDQVL=U0p<+2DTvpd3Ih081&00pZ95n~JfE~Ly82Rg&^x8P ziA^+yIwI&@Kb?nYw3?x>Hry?>t#+JUwWs#gp)0LsvD(kY@82vzz^UDa`ARiS+*#oD z`VKrGP18{}Nv$3MI-exgL=&2uoZ4%cuT;~-oh4qc z@4y4HEE^|!2;jQ z$swhAwnix{cDT4Blkmb=CzCAeWIrdQq3!>xJ1^_CDY9|Btr;plT#x;VoO))(Dg9Og td{<2Ra+J4n&XV(`X6d}~b#k9vW*~^K@{BQ?)Y~9j)qNB1v!FE5{Q_tVENcJ& literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/pppol2tp.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/pppol2tp.c.o new file mode 100644 index 0000000000000000000000000000000000000000..0d82ceb00c43f702993f9fbc6eb3bb5825438f7b GIT binary patch literal 672 zcmah`O-sW-5PfTs)<6$_;ulCg8Bv$2Rm58bz=E-%SwTXSMTmtDFrcw05b+$=frDI1Oa?31O0CIrWy3_pN^VmZGE9z=p0kt z#3mX-9T4=c9#2Em8uiduYwm{HR9nur+EKe|-<4L=SnlWI_ivgY;8bqIe5sr!?#%IO zeFq+prs?SQ+@^W}=&2uoZ4%cuT;~-oh4qc z@4y4HEF0%~2;jQ z$swhAwnix{cDT4Blkmb=CzCAeWIrdQq3!>xJ1^_CDY9|Btr;plT#x;VoO))(Dg9Og td{<2Ra+J4n&XV(`X6d}~b#k9vW*~^K@{BQ?)Y~9j)qNB1v!FE5{Q`g1EO`I` literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/upap.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/upap.c.o new file mode 100644 index 0000000000000000000000000000000000000000..86b6b6a1cb623f5db873932d43bb8cbda070c1df GIT binary patch literal 668 zcmah`Jx{|x41GtEmPibIiZ2P3i6G!q)WE=2Riz7I0PzDZB@!J1QFE1G;?FX&^cR5L z#BI{0mR{_4erKPZ@BYKRQVL=U0Tv7h3*v<{K>#1?z@XQ=YXyVHm-E(js5`oi?giyd zV&W0hDTUtc^Hqe#Ml>8U#q5xJ4?J? z-+>2AGLz{cp!2WPnwY#D7yeBmn|xa6S7QxyoafNPk2Fo*>8$${X=Ckp6i;lD*P5*$ z$CT&U8l|q-;o_1^!V6=aOtP$#{hX18w!cz$S=MWlXXAQ1v#9uRJ;n`zdS=Bb{Z{Sxnsh`i|j0mLyY`v3p{ literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/utils.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/utils.c.o new file mode 100644 index 0000000000000000000000000000000000000000..2eb9021dc110e0ab3b403aa40e815a91e17c1c0f GIT binary patch literal 668 zcmah`Jx{|x41GtEmPibIReVXPOauX^q6P-Gsw!Ow1Bf4RDUpao05w+$CjKld1HS<5 zCT^1sV9D`&=Xdtm`50VZDWxE$5Ma)LupnMI6$J3H3=I4I%XTolxj$;3g}SRd=p9qu zBqmOw4hVV|cc&2=E6vDP>+Ys%sV!$)?WkR~?@Fs#toC#9{WD7taB8n%zEn*UcNTcP zz5@@K*z_saBS7cxnKdy*J1*j*Ae+2d=m%pBbe!kVqn9j8p6RT28);+hIE^PZ$!p#I zCVQ0T*&3y+*x~$+Ou`FeolLT*ll>f$hPMB&?xd{Op~%MdHm0cfa6R^Oa_ae7oYHS4 tz<0%@FGqPR=PWs2YL?C$UnTd+Wd?%yEYBFTNxe0~Roxfy0SihK-7kJJEO-C_ literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/vj.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/ppp/vj.c.o new file mode 100644 index 0000000000000000000000000000000000000000..6daf5387b018c716cefe7907a2d7dfc1892e6377 GIT binary patch literal 664 zcmah`Jx{|x41GtEmPibIiZ2P3i6Gzl?SAXHtxt4}&H?33 zX3`_hxv# zzJ~yKeb56y7w@?>DS10`{$3)Ry;9uy-|eNdzoOHiK-tl)zn$gEGnq!QYP0Yyj=RD3X=^UwUdn+<{o&Ys(M zF8^)zt!F3B2!a5d1PDRJ0x;@W#6QeL2!ik+q+iz!GL0|&&53{c6LbzuCnz)ZeSq1k|&Ib!rx~bAZ~^;l>E2%Hs|O1FVU1ShD^^5yaA`8mT+pyN@);2 zTKc9(dhVEbmdzt{$?{Lu4GlsGwj+f2(Hcl}uU?P;uysMZyYj)g-c>~tV!g}vR)pC4 z#=WJ)%6swR7W5p^?k=sxBi8wq>+zFTO8&|&N`U zKamHP?In;tvIZdnVg21PJp9tS9buEaWA9-09b~}lPwis=-}ZL@U-pOc7j{y<=I+nW zxG%IfFn0R%Q(|ar>ZL(3IxNMc2#ki&t*A;;2ca8P{}V5soP@f@`pE{N$=58j2q(O) zLYvSobonrRkgD&X5AN?*N4*DbDBc6`REN>_*4PK@d%+KZ0|-AHMVopqB6~32h4Kor zL$tsOd7-{0znZ7h8hiu82g{3WsKFnpu^WLlkW&zq0dAlqJAzE*4CE%9 z?`f2rC_cswlw`k9W1mNx@;mUS3FlR7;;+`&mA!H5U9E|~U1LKbtsDBRl!89f)u(d{ zrmW)eGt?~e&E{2=1C3ld&9cq> z<-Dq3z2w5|w3EctlwvwQjIvV9%Szxk3<6C6t*-2GJ52V87jHx71nt4ZRTr<^6CP*`iseqI$6hO-7$dH`ls2l;MMx`jm)wD!OhY*KD z>~Ibxu#=EdxlBgQV(ZbflagYZc|Eycss$YO{}C>i-ACu|$Jxv3Opj}HyEy*ho&Tu{ zlI}DSy%*f_@|WSiaC8Qg^B6J_;b@CFQH+@04@o{By|+bVPW+2Afew1zBW}Ql#l}&m z?+w)@9L+V4TwU*Lv<+lVyxv80RM(rpA`$day?SI`ZwdA4dP8W?+vddUy@`(MdRMCE zBR{XVhB~EFFQRcg0KEETq8Rb}$aogz(Jvs5_LLJJfh0deid{ov7oEpY$E(l!22s)s c{A^JL4F{qgoOr#5&{2*17T0l$gHUqZzavzZ(f|Me literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/zepif.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/lwip/src/netif/zepif.c.o new file mode 100644 index 0000000000000000000000000000000000000000..fda99058c96255009f1e3a91199375ece36224aa GIT binary patch literal 668 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 literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/main.cpp.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/main.cpp.o new file mode 100644 index 0000000000000000000000000000000000000000..5e7f4f1b7a9830b6f9fdc86228b548218f135202 GIT binary patch literal 7960 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 RK8NIMS8%^T=QhlP`!D^A>!$z! literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/malloc-lock.cpp.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/malloc-lock.cpp.o new file mode 100644 index 0000000000000000000000000000000000000000..ce763474a8c1741e2780c2fd7453efcb296af6f4 GIT binary patch literal 2328 zcma)7&ubGw6n<;c+AOi8v9+~INwwA%+qGg55d=%sDzqLHJr&|6-P&k=ESoJ>5IlJ8 zMZv3h5ClE z?V5t(NUlW-^Ydp46AM?aPZmzhIwzeOnmdLSyPjLBkTr^F*QsmMOVpj+y_B)?>3(a# z8cYpY`>kPXBptn5@<-o;G=1CF*;HbOh*Gpmr-4%jPE%hZlB}4bZiDYmWT&Xd;Cl={ zWAGV+w+-Gl_^iQa4ZhdldksEk;69uZigsxTV;-mCke0#O#|?bez?Xoz2M6JK?9UB@ zUr{{oWFGrdP2dcL3dhge^blB#>pzCGKCd%RS$c|5jQN*v=EvcA>ZR8h#h8C503+j1 z2L5Vbs=3u_qdX12^C_~2;~sRxN80g(PC-2f9f|YTVB>)CskIMtzc7vwp+po%39^q6 zL6W!*In8^u&@EvMgLqt%S?Fzqsi#&*NO_ghIlZTGEOR zv8WLp(Vd-k%8go$8{*7eU2@zo3@WAd&}-t={?`s5kH1Yl3ep+s{QI#h*nwiHM zY)9eThkxbGAjhoBEfJHtQwZ=ac1{t?Xg23@Z@KU6Tu<%^d5=ZJ_?s6Kz4Hj@dZDJr z&x+nM=KA{96o(-)(Yp<#=kfi+8e)=n9|1kj2maIgHW1g>x2dg}5YYABK;SfD+zL^1 literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/posix.cpp.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/posix.cpp.o new file mode 100644 index 0000000000000000000000000000000000000000..d0e47a111ece262732935f9527be6080b240a7eb GIT binary patch literal 5204 zcmb_fO>9(E6h5!7?X(muo!YdeDV+{u9cvwnG^83#rVwe5Mb4 z&@K!$E@Wkpu&6sE#IRHo5{MGrn2<lAfl1&exzZy9OsAZ#ZDlplVJe8z9Yu&43h=gVnvsY#*v~dgL#}BsBW>ufojZiYd z{J#!Ppb2%{xp8*&?}+n_>mLOh4zlb z_Qi&2?0KGl!cEMj$m-{2!~SD0%uwU@z)Z6htbf|-usZE7tJ~UT?XJh8R+-G1dbidbLB$*BDdrbb6&)L@dfOCG{D9&I6u(*Vn-#xV@mmzX zMe(bj#-<&LzeDkNDE(H&Z&mza4x3IkwJCm^&mS@bj<=QCO_&ti>qxe0F->dk&ir=gF zeTv_w_i-E7WJobQV1e0{MJ;+9Rr^bFT{>)_21=3giR@APp4zG7vA?`1BP zc!1&p2dSARs&ES(5jf1}`Gmkh{(8Jq!Zvm!@_GBRgb@q#dAccZkk8Av0*9%GzOTZ)bf*gU(N87Z$aR?d>26g#Outp( z2;Hl~19V^DAm1T21r8JMKTjU>$9#j>ja;^nT8Yi)auo3>vOvz8(|bo8$4h101vl*_ zoaF*JXY(n~C1*aFJ-bA1KEIS@kj@s^=dQT(XShC{%`ftA!Ap4Lyz6?o6l-w}q3r2} z#44f1YR>)o&t@|2 z5^veq>oYM<{(Nd~+2b63T*FruXCChq7;;aVxdryK6FhSZ)I7vs&vHRNKZ=Jlp~uDf zFlNSml^v2d${6n_W2O(j4Y={eOMx{8n8#i&xM_k1Y`zKRc_-MnmEI)#rQUg=hnuL; zbGR+%cd~}wTT1VO(8D-J?>(iLtf7}tdh0?DH(8_ifzn&4q4&PhyDao@(=~b*mEQRp zdLJvjYeEk8&%Cxdk5VG8e2GZJ_u~#@e6Niey&LS1 zdbfpMJI9RP&)k-JO$x~v5YUm9qy)L1Lo4?UJp!6;FE zdY>!3do}c~D7^`xhi{O{gRhu}^JTtUn~W4t?+~zjR<4Y#Jf=Pj`H*VVSYfGqT=&pFro2f^ zJcc@;(7U`pjnGS^N69B=k_ z-~m~Yn^cdo4A8}UYE4XN^AevVvdNo;el*rV$3+1>dP&pdnf~?fB5kbA$MLI8ipIRZ z$Q~tmw^k)8Z#b)vP55A}lTGGza-T!e(Dnb-omBmLglybzeG-))?#F&XPBZB$rG*4s sD<*Rp<*l5vf;dS!tnH87mtKtt2u2;D{trm>4({t^A7q%%`}^u>ow{WN&t| zv&(Sz-0pWuDM%>HQ8VD<8vd%pIRf+%jft4lBpK9@N`JkK(Hr#RusP`lo2S>>40z}? z+r+&e-X*S!$Hkh2(B=-$QrYxwp-;vd=%gs1qhqX%wRx7@Y+AII{UH%q!KSm*}+`u P5!FrIoA`zWRfz5j@zWlk literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/sdkoverride/async_context_freertos.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/sdkoverride/async_context_freertos.c.o new file mode 100644 index 0000000000000000000000000000000000000000..842b2f6da4065b8b9f9917fcc945b4dd8f53c991 GIT binary patch literal 684 zcmah`O;5ux40UL`QHcYe0)~Xfi6S5xVsPL#jj;>m0OCBQC5Ro`q9#b}#GmC4@CN{U zt+#duu=HZT_{ENskHPJY5CYf)1Tbd+*9GyqQ$YYeECUSt{i}8`yn8%qpLONA>_G1r z^Gd5|4B`Mo@ABa^gvLrU^u@ZnDYnG6vm>09RUji{K*m{;=oI&Q z_n}nQ=HuwiYEx_fC)vX+&Dtnc#hcEL@MQFWq~pmJb^Kn3sKMX(S9em@>!2s2dK=TI zSg0Q10)ahWi(UL?4CpKy_a)DFrJP03p=JsCfmMW$;2AK4PehA?(zxCl@~Z9|`G7^} GS@#RXhBL$f literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/sdkoverride/async_context_threadsafe_background.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/sdkoverride/async_context_threadsafe_background.c.o new file mode 100644 index 0000000000000000000000000000000000000000..105ae15a9361a12de5037fedc021d176412b6688 GIT binary patch literal 11148 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 literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/sdkoverride/btstack_flash_bank.cpp.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/sdkoverride/btstack_flash_bank.cpp.o new file mode 100644 index 0000000000000000000000000000000000000000..0a7aa7780d20065f0450e0f5a771bcbf672a4537 GIT binary patch literal 684 zcmah`Jx{|x4E2$uB@zRlqJV_TL=bQ)qA;*krDP!tAm-{W1hpz@tKK2O#GmC4up@!p z#BI{0mR{@^zq8N2ug?9Q5CYf)1Tbd+w;A!8Q$YYetOA7X_DwwqAD&O@7fpF78_+t% zyh@brgE+#_yM8*4pt4qte6i_niyg7+)Wn|H7l$sln)zZs7k>U`2@IUlZHTWF)5x6# zUas$e2cWI7DjsxS-<0WfwHgj&JRSo`^O;(u(c4MpdmP#1!-9NKR)N&UfQ(0Jnhfz@ z>oJnb+DTu(+r*TbFChn*r&%kxF5Bt+5Kl%6Bppw-sN;PdqXu7NsqQSV*FaB3^|q!_ z_Mv)&D+Kn$#bg$uqqA(>mptE9{V_zJILvd_!t2tNuneh8JPoQJeZbR`}HI1>c z6xZt;U;zX=*DCz*vq|iKCQ0h6d>V&-n8Z5z(lSg_0GUt6S_Q~DEBKu~5`lbET7eAm z9Aub`$5D*``p=$JT4$qRqNBWakrlxa=4tLmsVnxoIK)%ZGD*i%F6(%AXQ;uKS*g1$ z>vfUIsNVL>D?U_@aD%{}xR}CRBs$B+eTn(5l+y@0)GR@-v4OA=JOjG$gE%FpG_JRa OaaGsC#E?bEtosKyr8g7+ literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/sdkoverride/cyw43_arch_freertos.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/sdkoverride/cyw43_arch_freertos.c.o new file mode 100644 index 0000000000000000000000000000000000000000..cad218ef2b9bc7a78a80c04efeb2b309ab2f1be2 GIT binary patch literal 680 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 U;u+tMy&1o57B_#uMHsp608Ybz_5c6? literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/sdkoverride/midi_device.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/sdkoverride/midi_device.c.o new file mode 100644 index 0000000000000000000000000000000000000000..d146192cae7ad53cdd51270be178e86244bfe408 GIT binary patch literal 1428 zcma)5OKTKC5UzIiX?!IrCW^8Ng6pe^7;*>^T%wK#S40UOJS_8QaUi=p%(M~@;?rEKl#x;?N;tbR}y6x>(cgN5<)gAZMO6!8Us4fMo zYE4~M*IHF||Ks=2f?vOVENFBH5Woo^#<*^plL54_Z(o}G1<)3F+b3hSj=(zt?+Uyt z@SebX0`CjFFYuEhUV;_O&>7L>8#v!p7t>@LIL|E?*LVlE8+aE+jkpJ|8!_%b&C+a= znh#lGbOP6Hl}IPqEMqq{UQn3QFfh-}%+Zti%og*5$>Cd5Op@4TIRagNoZ2WxYm3^x zW6zpH3p$N#1UfED(3H^Bm21LJxK{jB-H@ND+VT^!IUnN|buyn$%?w)^y&UVv+9HeJ zTT|k3{kL2}CjBeEHT7FMTF$q3-SPPLN*>i9xq(VI=wG}$$dUW%)syW+nP zUh_imcDx$sF6zaCw~O)L>d_(k{XIN}_f_y79mD(Xc$;WRo}!+wy!u0Xk^Vr%v&-u& zz#DYvtXPOcLY8Nz_zUVcOrAzdb!nz^sPtO-U!V)CxX6&>gzGJ1?DIY$?dA|_@fCa!VmfD#VGg9KqbxFl#ekvN%|ZNnt)&Sa(~c=BpE z@d93b1mDXi(5mUF-JXsFJE^Xp@9XO7pZd1{?m!3uJOuP%<^c@65@~Lgst>ne0Wx3o zGC%VH=c)L6dpo_pe|Y??x49)>$_?0kj%z{{MhS?=Xg0S$tPi1et3B+BJB_>Ip1AL= zhzDX-JZhBL?a8j80l)v)m{+S1z=Js(M&A_8K@S>OwLR+ldC+w5rcK6dEeCHoc-z6- z4&HI_j)Qj{yzAgM9RDUPVTA68PQHfcdsz8&vNb%<)5Bn5h8&vu1eR(g0rd`5s&%ABK?2h0y zhfcm7D+ij>e1XHG{Qt_AI=t6c@GczQn=5!fD&7Wa8gEgSOUq1jej1mDXi(5mUF-JT{v8>;K)`?|XNr_Nr#dn1GZ9s-6i_W(v-g|xRSHH4dR19D#s zazFP0=b89>dpm=nzyIOMU~@}8mm9GA6xW0*j1mx!&}?tNUmru~dUxCxORd}Dj=1Zs zh7=2ST2R&$E)%Ixa=Rw=S+cp`qbsW6o;9Upr zI(W~)dk)@r@VG=41^*J$JM*>tTd67N4f(gaJnjK{OZqYY;*IKj_P)FqLbER6w`blqVs=OH zntdnVj+Fz=S-!yGQT~haWe)G`$@E4b*0jCycB>QS3_g1lc$Le0Ft-ynjX literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/sdkoverride/newlib_interface.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/sdkoverride/newlib_interface.c.o new file mode 100644 index 0000000000000000000000000000000000000000..27a504e6872fb34e4bb71b77953d9437b8eb4022 GIT binary patch literal 1540 zcma)5OKTHR6h1eTN!nU9_CX(lq!KYw9a=0RBGLz%YEu_2uBSK2l@3kPGIL8?H!gG` z=nrrq=nrt~(r(;#p}6rMbSa{sAR50jncGYTK@Xfc=R41P?z!{uX8D#7f(!{NQU?*e zwnC3R6N)08q!UE@zYeo^EXu7@QGCcO=GHQ|-;F+<7oP^#wn`#DJOA_0)MJ@@^ZBd& zh$iVh?YF-FZdv8@(u;Zen0woE@VxY+6I)tXxRx)L?%unQpPq3pJ5w|_iF~PK#Un8R z)xNTNX_+$p+2vj_kRB4lV#FF1V`5yKNpq_%iqDazFRi%K>Y9?sqEy@s+#cK*ElSgn z0io>fXOW%o+cbi>{85fgLVR2g!HB z{m#k~9-6(qvnEdUg_8JP=F#uy|@MPV4p!@(S z?02Q_%RM*H(nqbh2~EPCr0|RjIA01&<#|%WME#I`SX!R(XyhLQaDu&tmK8|tx8=Ig zwA$6=)TEZ=RDysUHaP7e9ADKV9FEh$U9)hW6T1PYy4h%`Cd$sOEIU$b->YnE72qKM zN2d|Sd&)%N?SHqEYhL<96lY#~GLCC7od@@T{}spYDA||anjzEoIt=l+tH7LV$mFn{ zU-fL{_=W;lOSmT+lH>SXWpKP+4VZUo$kbbeAzrT^1DSgKcbR%F^!U8bA|FIZrrstH z_nm5+iQ@(%odx@tcfn}21rgFqeB<+S3=>OpM~n}^uV6e5IRNIq{9o}5W*1PYj-)57 QL}con0*=QO0R9&D2b_zW`2YX_ literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/sdkoverride/pico_bootsel_via_double_reset.c.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/sdkoverride/pico_bootsel_via_double_reset.c.o new file mode 100644 index 0000000000000000000000000000000000000000..b21597f2946e475e17b66a95b700e70406ba9f49 GIT binary patch literal 1220 zcma)4OKTHR6h7lj+9ak;THh5)N@Gn?hls(2D6}cIRT~i>sGv;lBm)^tI$`EUjUeL2 zwF`0M4{+zsofQ}UfuL)DLtVKuerKjPnHE70eD|Kmch5QZp8MkR#;T@iq(q}4jVz*1 z`@%?~9BxILpbT|BW;e3cg=Y3jZasHx>gtC|x&q&Uk^k}X@V0?{@twbw#QyB_{cokaiKvaWm6Z$m;@b5)i}|x< z^PE|tqSZ2JM(x#1r+9BDou7oC!E6V+055+3gP0Wghvmtu?@ z^c#C@>bP~!vOP}*PRn}i3ajCD?UrNtPT)whP6bJY1~EZJr07`nrc-}JzSoX;RyVN2 zBxHAkp7lhy5-u*a0Hh~~_z$Ef*#ln&iy8FVQrOs~AMH)0N$05~vmvA)(+&bMeWzuz z6I|iTZpZw4J0Z{AL~Y^wqDN-kYqyp+_7yhrAIouY_&wFjM}K*A zP)(fY$~-mky*!Sw@O*e`|KgRv*;|)qszm*i({QAKrJXw$BpR#oUGRHK424WKjA$I!HB8N^#{&M)Q1xIdl_pL=Q9?pmScMF%pCe3sI z1_FNPunK(Jv!_)g-8BZLkd8axozxPx`% zWzWH~$F{J4z%|WL*R*|RX&yOoiPo4G8~<#E5B?Cg7Uvb*pPy*0v7KyO1L3EYpPgt$ z8@%6Hk$XS9dx6J?ch>+jbz{5MN3@~cG-;mN`W$>)2PG3{S|+VirfKtq;;cFsxGj7e z1{rTJ?Su_puPYZ_U5BQo@0+pC^XsktUskpBx^gW|wCC%2e`xo6kh{|;cDk>F(4~Ty zoGrlT85EnC>(1<_1+mF;*?MKZ(3ln*Zx-Y%%q_jMH9`DV<3Bt*+9J+|{N{dtn%81o zK&LtX0r?dFXqs7g#jIb0^77qN7Ojq!b^(Fj2Xi)9JYuRL@AA0w z%wQ#4n-|(X+o^5OBk)$(@>6HC+VpwYbR7Y%nr-kxl=kF)UhKG6z~27;ZQkJCXJ6>> zcJ(M5l@R*Y(@2q6WF!vJN=@tLgPlXLx$HwV!fj~~E5#~vqi7P%!c&}+HnH-L{tj4h zZ@CJiOUkJWKoRkj%pL%et?Ws(_AL)@5cbOrEvVP1Y{W>H{hfJzhS`d8t{1o{?LFwGvI3m z{DT2666X0oL+Yj*^M@gR+klZ#qlx&)a59yQXHv>&I*oveKor?TLQO?5Jgn9Ja5fQ* zzcQAJBF^5d7Rz!os-`mP__1 zSJ7@`>jCz#T?0hfdVxu{t-v%}AMgoVKkyY>BLA_3e`ZU0&2%Un?_t{p9A(=MB-pM6 z)KYwctckA8J0-h<`*#%UobA($>0<^Zb7D-5jF45wi}q#NQe&^GP@)kv0%atVfifOT zDC|^9hgxwI4_Sx#NGq^-&dPX-$&}Jj^N3wamo81#K&2z4XuGeBrpCr%Nt#aIfgvTL zs^jsItQyPE0{)-K`z&9w;{S(AU-@FTl8d&i{9+pOIL1O-t=)b3vi?_Ii1N6Peq4To zq{wlfBu5QtZz=FGb>O#!-(gEh8TXOu`M7?1Nu@}>o#fE-&FJ`eF3ib%`$_eD`I4WE zCX#Q6ke=_Vj*odH-%)Do`EC&AxD?69d!XmLrsLzUh2%?6oB6s)S$-$g^Kp#zbjkAC zSZW zNxqM$&3s%BEZ-0T=Sblg>kKK?R9gBMDUWMI3g@t}m2+V1piVR7XrMMdN7}gcWO;6~ cMyZLbR$z%6C6Rpm#nk7eX&u*O5?Pt|FIp_q-T(jq literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/wiring_analog.cpp.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/wiring_analog.cpp.o new file mode 100644 index 0000000000000000000000000000000000000000..d92833287d1fcbc61047b860f187941e640933f1 GIT binary patch literal 6092 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 literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/wiring_digital.cpp.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/wiring_digital.cpp.o new file mode 100644 index 0000000000000000000000000000000000000000..f04c19c53c05d3034dcc4fe145ee856b98ebbb06 GIT binary patch literal 1992 zcma)6&1(};5TBP#Vj8Wj@uRkylB`8rjEkir#naYS3)-q!Mf_ZLlQmgLwrld@7lH>t zJb9^tcoGyuy@|z(LjQms;;n-Bc<`bK){Av!_q}GDiw?ZZ?>F9&qkTiYM@EmGgpAMGu7>(t zPsQgfP&2T}k7bUh&-Ugbp9976N1@DiL1Xtz{a~Dw?=7nK-u&7WS+z%Ivod?b{4BE= zBfZ>h##$5^$bJ_nlKm!-l5IAr4R1aM8}R&{OR+3Hz5aMZJ%5?)O2yyk%8>F2aNfJ}OCVyU5~;-^YXeX4is&J+ zDH8YV=>&a?OW=D25^efKTfW18z7-63dNmN7pUx84+IcCElnLJ}upU%IG{Xg4DeO0g zURpPT!;+vUKGnuAwsE(O4U(3S=REN2Ll`i3SeBA8Zo>I7>4J#)3XH|QPHg%yi~7P!$#h$*+%`E14Yl7 zH5}LB0jk;D@apAq4GRp97)HKqo7J(2@l%dlYAFg;=eljwc-3}`yo8m-{^zO=w_CES zbvMtQS+^xPZJPyb!JlPv8$bqe5di^xQ-8_z^x6 z{I&4!gr{#c(gk>@QHLLjE;wklTNQ3v=y^5pC5gCwlY>?;xe1z8tASRv%Nhl>)-1!Z zHN8ur2>Sg}6-~YmEk9eS*e>occ6wSfIj=fao!d1$*nip%)X_I3Zx78bZ1R?8F-SUj z%iDF7Bin7$1($J#)CUAx8{S+~DzLAbh z#}%%(hzYujRF7sL>zzj&t~ZK=?u|4#mkI{L{hmQx>pvr?LC@UAMfIp}GSY1hp#Mub zTK90_?5IWGiWsCBNFxmyd3grnk1)`UflkC*aZw-C7xgON1wwd%WS)R9S#J~auM Kn3E#(Quh~29UY$l literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/wiring_private.cpp.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/wiring_private.cpp.o new file mode 100644 index 0000000000000000000000000000000000000000..57de88cbdbc5b5a0580eab414751bd5cf10846ab GIT binary patch literal 4364 zcma)8TWnKx82?UBSK6+l-HolAV0Q^_ZXDLJ0mECz*{yUV<+3Vg)1N|z(v zNCi}@o@HqEH|+-UHS5#*ZS`~2_wD1QyF&!wfb1ePIl;_@@@Tmp#oWqBx$0f^#BRW& z33n{0zoAQ!>PS$PmTwMcm&#&4Puv{->(>GXYsLIqZfSHi>h6*25S-{*gm%xeYgFoM zI1-GHyEh+@S{fo3Rs$EimUvF|;DJysuT8%bnmv^?-cHY+1}I?oqSs+^BCzOx(ec1L zLfw1z%}+#NKK}b^V9xmJtu1r?^AjO;K0Y}ibx+0v7A9e@EWW?sxFub7LLEK9=3tZ% zI?h5z+p=@})`!g?g`kOSE~t*d<)7XpImDh)AO`b6eNqpr4%PL|Mx6bm{)Ku0WnWCX z_9;AwhY+z3JTc0l(Z=%17FJ4npguUQEPlA)yydX^X^hHOD3dzsz>eBWI;xFHB^_18 zBwI&*TSpZ!2kXceldpxaGwRDL^tIuC`l9}JEvARca7Ox&hdreh>`8u5cow^sit{6B z)m(GQ;d8qAYh;B@c!}kP`F3gp>#oi2b#5{HkAUY3B|IVhqjG@%eP_7BUL$T zq*|#?u9t#RgS5p-2qk3S^G^8ViQOreoCp9Jcd?yhwAe`oC)C&tsMn!RHD1QyKz%3j z-8c&5gg#TEIZ74&T$oQi+&1+xjto%w#B0+wtehrH+29@px8EOT8Z84PLZ4&(A`qc@3 z+FeDGpQhp#QCq5=rthY;h^(D z&$tTr=SEW>V0t+;lG7x@Z!-OtP_BXs2n+swf<7bY=gj<1SiT>wnmWDbs<1;ioib9H zV~MPhI;G{4%5*jht$9dHj&}DXjwbO9qDM3Nq+y)Q=9!Su(mJ#rrHF8E;#f8{8#PW0 zX0)kvk{L0L8F|t`Dwoyr(|Xc4KEslB@}%)xGOig~!P=cj87B_W3+wP~mg4#>gQbm~ z%qP!)dg%4T>WI?4!;*R-kzn^>BAw2qfyyUx$vgohlDspsQ*|%!`s&_7`4n$82bo!G zvN_0Vnbb6B`I2XV&Ft?}XN@FlMhy?fduOOEea*6o)2Y0knAXziDV$kp?m&3(l!#tv zNOHUh_?fb631Y=?;K%(PU72voq6v| zCJx%!U5!UKV*0C)dtWi@A$~XMdkXPh{2+Rp^j86n6UPfZOZ+te+VhTW0PhlS1vpO} z`o8ob zLuZBRTqTb4pC^v>@W<-a6Gxma#IYDcuzIWytkZ=$;e(PpJCoO@kmrp8*SUmCo(JWq zme)X;%H=>Yl4*sE$}^6R82I0Zr5I`3p^7m}MHTx_rS`%~*w%yHYcq>`xmZE)6!u}! zE$&F(Me!`sLr}z%B^cS0qURHS`VJ_Bu63s3pm_3o)t&?PpnI4 zl#|mGI+1&DL`?k-g45pKjDuomP`x8K?09ru<2X2Rym2(x@qWPMHnb5QJp+#S9?EvS zyQovooH*V&G}!U}M!W#p2#@;Wcyvw)kM0?w6&&_29rDrm(&T(SoM;?C8z)|O0S)%L zK2$%;fy0>+(Tp28om+rQ4Z18c+)J|`}x*BSQ##^JA|KaN3|yuT{~-q$#fwc%o2SBX`>3{so+@e3JkG literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/wiring_pulse.cpp.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/wiring_pulse.cpp.o new file mode 100644 index 0000000000000000000000000000000000000000..0dc330e188235815c2e11dfdd2818226b64c4090 GIT binary patch literal 1300 zcma)5O=uHQ5T2J!wsAl z#=SDx#gdt?S^4Rdbj_`nmz>;igeZ*~EazRh=E_&D{OroFuHPxK-$%w zT$Y+`uGyqLF>Hghf@P6bHCHrtYI3N*JkCto;%cd6mXVvepVbW8t`-Y5+qBT_&~ye! z-i_RH@838`m$y0L;^b}maa@Bb0p>mb4>t*nzc1gPB-!^893gPp4LnBRI`lA@Uk)?( z)4|?)9oG-xkgRtTmbczp1UR4T@eX9Y2hh15&&j01IMGv`lVi*aV0>%EapD+(lV_I1 s7$%l-2Db0Q@e`7t1~d2Nx5~50-9e=!lDxZ?^^W^+?}00Ef=d$j2c`JFCIA2c literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/wiring_shift.cpp.o b/hardware_test/.pio/build/rp2040_usb/FrameworkArduino/wiring_shift.cpp.o new file mode 100644 index 0000000000000000000000000000000000000000..c234b459107e4d5ee5331b18babf9a5f3f6425e8 GIT binary patch literal 1252 zcma)4&rcIk5dNN9x)gz6wNh+q+E~M4byEW&VEob2C`znGjM3=9Z0QPXXl>d@)QkQP zc#-fAcsAk4)jOPO;?abJ#6(W@M4j2)7nZ%~B-5F1=Ii%n=e>`&@81zZK$(DnBLw_7 z;dc6_++bh`gXnJQ7zT1;J#CD3(i4e}ez5?N?R5`(Vsi$_5ASfUUwD!FT#S^FE#T)@ zw|irMH-p1%&c757_PSe9QWWd>ls1y2bhe}C#JJc*KE8tueKM6AD-|$XWd1Bo#t~UB zitGEk-EC}SOTYFoUoKzE81oOFOk}Q3nUiJ#r94e+*;dt|$tdlcete~Z=%8MSiFo9U zNQhA_DaOP(aX#XH+wq^^4k9?{1-sg@4FMXwB`JfsNv%JG zV@ObiXIvnUlU_Q&7@_=92u~Ac{$27oorkwh%V{jXY_B-4q`A~=A}8U3dkxf_Wk*`8 zPg{<(6O7Vwyw>a@l>761R4^;_Rxmt&7h0{^eBP0uuI7AWNo^SnCz?|l0X5X9Ho!Nc+;L$@N1dIr*ViExvD?*aR z$gCm_2k39?%6!c~Ik4n$`NaS1yFo4Rb|HJdCHDd$hlSpgwMy0(T)CUa@P23&-j|jJ zDVc3zSPZi*p}oA@Tw%P7BWW%tzGA%X|a~X+gnCv8QV;}Ikub-=+POCa2dtf}CPr=&{Q~3WW&auEi0U>|F>CZbCMl*PJu1yJ9nJI1sBV(Om-S!X zdR%X2UsEK;Xs}7;o-eeorAQ91b}S}ETXR+o*0`XP_!=VBlg?1nRMP`poRc?w3#Q)H OIo>A%Wt|X<;r#{mn`|8b literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/firmware.elf b/hardware_test/.pio/build/rp2040_usb/firmware.elf new file mode 100755 index 0000000000000000000000000000000000000000..a9ec1f624a65bec5dc35bb44fe5c86104bf47c8d GIT binary patch literal 859528 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≥F;*^Z`(-`>#?;dd8sT5lQt5Jz}d0K*(7!5=# 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�a5Ro}Tc7iM-vJi;0B3a7ncD4~|4OXwhXE?R^Nq= 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�t?QfEkKztoka0i;oo*+)73wqw#Xm3m$ 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 JJ_u6M{Q(%0fM@^! literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/lib0fd/Adafruit BusIO/Adafruit_I2CDevice.cpp.o b/hardware_test/.pio/build/rp2040_usb/lib0fd/Adafruit BusIO/Adafruit_I2CDevice.cpp.o new file mode 100644 index 0000000000000000000000000000000000000000..ce03902423a88f114c5a7cb690ef51fb3154caed GIT binary patch literal 3000 zcma)8PfQ$D82=u#yM^samj!H*SO+1x6q$4v+M)-u46YlaG(<|Oa@arY(^)EXGdrcI zhaS{;ZLJ4N6Ji=PP3@r};oxBt6A~|8pkA!rdMF2Cqh27XDSqGVJo5jV|C1G)*r}ZNO5j1HDtaw_|sCj%sRF=A8$kS&$X@fqU+%q zKxJVr#dO_<-nvyCNKq_rE;lT&t1DJ3eBI`QLojc$d!RoqCw6>;5njt!$ME@AVceQa z-83H}X4f>UeP_l8>-E>6X9FXOqptoM>F$`nuianYS`J|Rhrow3ES`(a-d*}O1zlg7 zb!*?5b-%GL9k$9viXLMd7-Rj5OaH8IE+2qafG)VguHH7;uMFdPWEt%XCfqxU>vOC9 z8*_Y+%@06x0_L0A;_kaZbYpd~?ZJ8p-xu`fA@D=um-bn987^1e6{7xC))|LxsNk70 z%obA#3)j=Sj%&#Da2ZlVL$B%4)akKqJ=SmZ8OLF;2Xm9<*<1lw2X_4@M|+1M5IQj2 zz#_gD*2)fRM_3zsjvd8$6_a!AgTJ?BS_7E{(4bDH5o-$e!I51fyXVuuukij|Y7GJk zA5i#ug|BQ*A<`hI@IgVjtp*1b{-DB#6h5TzjSAnW@L`1yD}0l}Hz|BX!OhT)Ba{W2 zDFXPVDVTeho{Zr7e(vGpE)Kx=9>!gXd_DZ^;f#xe@X*8beMfM8ns73j?{yc4pwGj{ zT-*rU!<5+wgyAa>SK`C>8O&!tv@aB#^jq947XRc1>&7N7R~;k?y+p33I)HZPT`tU-x8qeYHuFopSh39sM_ z;O@yFZjdr zJ8Wbf$1db9IJ|_p-=~Q>B`S91f8oi);^e^X<<=K*a;Q2iC$7DWcdG8Sbg!U>o{{I3 ztFoB)tfDg!%hgusE-AV*h^dwe6S~iEpaHLhNBoON8O2NA4#h(Ck??K2Ah&}#9qcOj39AKI6*AB Q^hY4;x^P_{2~yJi2hM5#asU7T literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/lib0fd/Adafruit BusIO/Adafruit_SPIDevice.cpp.o b/hardware_test/.pio/build/rp2040_usb/lib0fd/Adafruit BusIO/Adafruit_SPIDevice.cpp.o new file mode 100644 index 0000000000000000000000000000000000000000..50fa1485637df7a2bf3d046b92c8ffc6c1429188 GIT binary patch literal 5864 zcmb_fU2q#$6+Ww#CE1A^|HVIXoUCl8wd+K+V&{h>fNWWDTjJEzpy`1z0a`dbSK=Omb&1s#JH*+ z<50d#9M#N!KL-}~y*$7&=7jh**bZNR3p$)RIo_QoPD*mZCbtxUDA@&BhSd! zj%IGeYXhVGBYh*!-dk|Z5aYSy(l?tgIcBDt+%xXEpZ33-gC~z>~(X_J9)Wlua(`IbE3DC zRmM5Qj2l<-tJO+wu}ZS}V)5pB3uU~UPk3(TZyi@|xS@9O-0?rP+&wR~dV%&!$<$|M zJejIRIu%F!<#^p$*PZKwRaw*Lz>|9U>@3<wtx$^f^?PgdFDQ7%=UYhq`AK|&i7X=b+dVr@+jMxv91q1$b0#9@89#O#Y%8O zJv8AH#VTgM`=Jxe4Cb$-q_PhecY^2525{b~gyxJ3;Ht##o)4NRBW#$l8>H76drIp4 z8|HLECFUegp-ibk7z_rFC>?_*Ki8@Fdwo5=Zs_a6XFH-s#x;<J>`hqMcy1wrh+!U_LevBUDZP68l)v^z_$r_m4H_Xc(s6=&6o$t zP%GfI9Aa9=uC;!@whMTJfHw$ulYln~c(Z`hZmo$7Edt)M2I7?ry9InV>_R_nH{B@? z#O)%3VmEQV7xtlt;*a2{!TV*x7D2n2#$m^QWZ6%nuEG21o?w?@FvZs~+znnbEFr#5 z0S{R=<*C8@OBLc1g8d~c{x#G!um!#=;6D`Xp9}UKw8>@GR|yX+yPoCW20L)$2&Y3aSauD=YvKFr?CtQLWd|7E02TO%5}&zWO|aMY$Wo3T3xA%)H-l=~3bXON z`(lw-(o>od9vOaaK)s+vRbMoff_4MiV-OxZ@j`#!iEvn-8V^4g4v(JnAAWp7aDOP0 zINYxpFQj8?IzD{zP$V6j(vp*Y|Fd{?F_Ko1JOts<M&4^5#PHTo*th~cUI+E01 zQPZK}IA#sA#vh*2V%i0WsS}Y)Ls~RFsjJb+WK8FbFRBqdtil_+Mi?&^;y=hLJw=%# zQA3-gqKnY^d(~uYbCEr|Y6Rn2YDAq-qee(8M%m*R)1TIic%QDTX+uk%362!6rpLd& z8k#tuMm96`z(qQS(C}yCXGi?uq6gfY#=WJph(kh6;EIZ^!fz6WjkuZ&o0E{5O)R>V ztb}kR8M7wfiKDdRsK5t$E9qy3=ZI1D}2=VMNAJ8);L=`IVt&4DiJwMg)B0x(>dyI^iRyugKwU zwkeh*5qee0#H?$Tj9TqYB_r4R2Q{SsAv_KnuB~9x*?7j|t*2x;{>Pe7$tjy@N1Gri z-Iz*}h%Kt*1Y5Hz8M{HhDm}NiK<6^gPB$WHV=CqQ|Gql-qLYb)n#4!2@5Lcs#4ys@ z_>`gQ_|R@n=*<_~5$iQHgL;Bp@U@DG7k?>^zeb61gpoXjgZfCRxNeLQ^HN{t!t+v( zqpzKS1$>B~GQ>|kjrt`GvZrv^`I2bkzlv4id_O>sJ#H55y45K2{hiF4IP7`~y!3(tE89duH~&PVUfh1T1SL3X}hA|Kyp`a0x%pB4CihJ5r6&jn2;mxZ|BBS7!nTzK41 zgt&JRC{*9uLVdrn)kj~KyuQB*d>!?zE&KyI5^)kH~~XfpAQe- z*oFAIFwVYzf41?_*DL2U1il@}7eJf~!c0;E--pPjAkvD1zIHj^O^mbGH;R0P?)w`8 zUmYGQ=cBJ<&bK7+T|vI*5$A$1livz_y*57TDV(no=iBT19omXX!G1YkIr{DUcMAFF z{i78JevPg2eOlmqfHvnKLVi7G#ZjLjSw@@Al?&BG;|=uVUyA!>EPO9FtQayWmUENc rjd3*E@VXNRt(Wc}S_AT}${0RG-?BM~hlK7~n;Rx@y+5`&c-(&hgW$AY literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/lib0fd/libAdafruit BusIO.a b/hardware_test/.pio/build/rp2040_usb/lib0fd/libAdafruit BusIO.a new file mode 100644 index 0000000000000000000000000000000000000000..aeeb31ac151f7797595e914b1106dcafc6ba1f85 GIT binary patch literal 22016 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 literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/lib153/libSPI.a b/hardware_test/.pio/build/rp2040_usb/lib153/libSPI.a new file mode 100644 index 0000000000000000000000000000000000000000..36f0df383a48cd9d98e3c3b88c554c40f4020099 GIT binary patch literal 19260 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 literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/lib8d1/libWire.a b/hardware_test/.pio/build/rp2040_usb/lib8d1/libWire.a new file mode 100644 index 0000000000000000000000000000000000000000..65425ec6fa497f7a8c3d91dcb39cca78bf7e7c24 GIT binary patch literal 18532 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 D>gV-u literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/lib903/Adafruit GFX Library/Adafruit_GFX.cpp.o b/hardware_test/.pio/build/rp2040_usb/lib903/Adafruit GFX Library/Adafruit_GFX.cpp.o new file mode 100644 index 0000000000000000000000000000000000000000..e35fc8f044d8d5f43d7e73e423ce1be672d8ddce GIT binary patch literal 34768 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 literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/lib903/Adafruit GFX Library/glcdfont.c.o b/hardware_test/.pio/build/rp2040_usb/lib903/Adafruit GFX Library/glcdfont.c.o new file mode 100644 index 0000000000000000000000000000000000000000..f0cde40c8557e8d9d5503380a07532a194b6edb3 GIT binary patch literal 672 zcmah`%TB{U4D^zuB~lMO#Y;lvL=dnlq9DYrs!A_}1BegUqyZ|?7B!0mCw`U>fG>b? z6Sqk(wd8mvp0(HBug>j_Qi{YB1vFzsR~hk|6G1>eEfaOy?dy8by?Z>WpEdQlZcytO zd6Sr^PwD{ByL>nesZy(kzFKoP)TY{Uw$+Z>Rr{{An#N*3mwx}I2>_>b8|F*JG`KUz z%k>@dh@M~L-qUDkbxfqw&w(`&q8(@PMUYKCEa{%HhIEvsq~p@S`cfX|9aUygED&RIAgs^-pHUxE8@nE{Z#;WY-iNxfC@qV5O0BO*l6{R77QEusJb literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/lib903/libAdafruit GFX Library.a b/hardware_test/.pio/build/rp2040_usb/lib903/libAdafruit GFX Library.a new file mode 100644 index 0000000000000000000000000000000000000000..aca69c27a9a80ef450a88ea3ab4410a0f36aee8a GIT binary patch literal 68858 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 literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/libFrameworkArduino.a b/hardware_test/.pio/build/rp2040_usb/libFrameworkArduino.a new file mode 100644 index 0000000000000000000000000000000000000000..bad27bfb4e266f3d238b9c1b427db21aab747bfc GIT binary patch literal 600918 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≫BtwI&j$GyG@$ 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 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 OK2FN`jYKQD9^x<54Fo9w literal 0 HcmV?d00001 diff --git a/hardware_test/.pio/build/rp2040_usb/libcd5/Adafruit IS31FL3731 Library/Adafruit_IS31FL3731.cpp.o b/hardware_test/.pio/build/rp2040_usb/libcd5/Adafruit IS31FL3731 Library/Adafruit_IS31FL3731.cpp.o new file mode 100644 index 0000000000000000000000000000000000000000..70fafeb842d23f67adc6cfeee5fcb3f7a05da056 GIT binary patch literal 7264 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 FLASH + + .boot2 : { + __boot2_start__ = .; + KEEP (*(.boot2)) + __boot2_end__ = .; + } > FLASH + + ASSERT(__boot2_end__ - __boot2_start__ == 256, + "ERROR: Pico second stage bootloader must be 256 bytes in size") + + .ota : { + /* Start image with OTA */ + KEEP (*(.OTA)) + } > FLASH + + .partition : { + /* Align to the last 16-bytes of the OTA region */ + /* If anyone has a better way of doing this, please submit a PR! */ + . = __flash_binary_start + 0x2ff0; + LONG(270528512) + LONG(270528512) + LONG(270528512) + LONG(2093056) + } > FLASH + + /* The second stage will always enter the image at the start of .text. + The debugger will use the ELF entry point, which is the _entry_point + symbol if present, otherwise defaults to start of .text. + This can be used to transfer control back to the bootrom on debugger + launches only, to perform proper flash setup. + */ + + .text : { + __logical_binary_start = .; + KEEP (*(.vectors)) + KEEP (*(.binary_info_header)) + __binary_info_header_end = .; + KEEP (*(.embedded_block)) + __embedded_block_end = .; + KEEP (*(.reset)) + /* TODO revisit this now memset/memcpy/float in ROM */ + /* bit of a hack right now to exclude all floating point and time critical (e.g. memset, memcpy) code from + * FLASH ... we will include any thing excluded here in .data below by default */ + *(.init) + /* Some of these excludes required for PicoDVI library, won't affect most code */ + *(EXCLUDE_FILE(*libgcc.a: *libc.a:*lib_a-mem*.o *libm.a: *interp.c.obj *divider.S.obj *PicoDVI.cpp.o *dvi.c.o) .text*) + + *(.fini) + /* Pull all c'tors into .text */ + *crtbegin.o(.ctors) + *crtbegin?.o(.ctors) + *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors) + *(SORT(.ctors.*)) + *(.ctors) + /* Followed by destructors */ + *crtbegin.o(.dtors) + *crtbegin?.o(.dtors) + *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors) + *(SORT(.dtors.*)) + *(.dtors) + + . = ALIGN(4); + /* preinit data */ + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP(*(SORT(.preinit_array.*))) + KEEP(*(.preinit_array)) + PROVIDE_HIDDEN (__preinit_array_end = .); + + . = ALIGN(4); + /* init data */ + PROVIDE_HIDDEN (__init_array_start = .); + KEEP(*(SORT(.init_array.*))) + KEEP(*(.init_array)) + PROVIDE_HIDDEN (__init_array_end = .); + + . = ALIGN(4); + /* finit data */ + PROVIDE_HIDDEN (__fini_array_start = .); + *(SORT(.fini_array.*)) + *(.fini_array) + PROVIDE_HIDDEN (__fini_array_end = .); + + *(.eh_frame*) + . = ALIGN(4); + } > FLASH + + .rodata : { + *(EXCLUDE_FILE(*libgcc.a: *libc.a:*lib_a-mem*.o *libm.a:) .rodata* .big_const*) + . = ALIGN(4); + *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.flashdata*))) + . = ALIGN(4); + } > FLASH + + .ARM.extab : + { + *(.ARM.extab* .gnu.linkonce.armextab.*) + } > FLASH + + __exidx_start = .; + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > FLASH + __exidx_end = .; + + . = ALIGN(4); + + .ram_vector_table (NOLOAD): { + *(.ram_vector_table) + } > RAM + + .data : { + __data_start__ = .; + *(vtable) + + *(.time_critical*) + + /* remaining .text and .rodata; i.e. stuff we exclude above because we want it in RAM */ + *(.text*) + . = ALIGN(4); + *(.rodata*) + . = ALIGN(4); + + *(.data*) + + . = ALIGN(4); + *(.after_data.*) + + . = ALIGN(4); + /* preinit data */ + PROVIDE_HIDDEN (__mutex_array_start = .); + KEEP(*(SORT(.mutex_array.*))) + KEEP(*(.mutex_array)) + PROVIDE_HIDDEN (__mutex_array_end = .); + + . = ALIGN(4); + *(.jcr) + . = ALIGN(4); + } > RAM AT> FLASH + + .tdata : { + . = ALIGN(4); + *(.tdata .tdata.* .gnu.linkonce.td.*) + /* All data end */ + __tdata_end = .; + } > RAM AT> FLASH + PROVIDE(__data_end__ = .); + + /* __etext is (for backwards compatibility) the name of the .data init source pointer (...) */ + __etext = LOADADDR(.data); + + .tbss (NOLOAD) : { + . = ALIGN(4); + __bss_start__ = .; + __tls_base = .; + *(.tbss .tbss.* .gnu.linkonce.tb.*) + *(.tcommon) + + __tls_end = .; + } > RAM + + .bss (NOLOAD) : { + . = ALIGN(4); + __tbss_end = .; + + *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.bss*))) + *(COMMON) + . = ALIGN(4); + __bss_end__ = .; + } > RAM + + /* At most one of the following two will be engaged, depending on the SDK version */ + .uninitialized_ram MAX(0x20003000, .) (NOLOAD) : { + *(.uninitialized_ram*) + } > RAM + + .uninitialized_data MAX(0x20003000, .) (NOLOAD) : { + *(.uninitialized_data*) + } > RAM + + .heap (NOLOAD): + { + __end__ = .; + end = __end__; + KEEP(*(.heap*)) + /* historically on GCC sbrk was growing past __HeapLimit to __StackLimit, however + to be more compatible, we now set __HeapLimit explicitly to where the end of the heap is */ + . = ORIGIN(RAM) + LENGTH(RAM); + __HeapLimit = .; + } > RAM + + /* Start and end symbols must be word-aligned */ + .scratch_x : { + __scratch_x_start__ = .; + *(.scratch_x.*) + . = ALIGN(4); + __scratch_x_end__ = .; + } > SCRATCH_X AT > FLASH + __scratch_x_source__ = LOADADDR(.scratch_x); + + .scratch_y : { + __scratch_y_start__ = .; + *(.scratch_y.*) + . = ALIGN(4); + __scratch_y_end__ = .; + } > SCRATCH_Y AT > FLASH + __scratch_y_source__ = LOADADDR(.scratch_y); + + /* .stack*_dummy section doesn't contains any symbols. It is only + * used for linker to calculate size of stack sections, and assign + * values to stack symbols later + * + * stack1 section may be empty/missing if platform_launch_core1 is not used */ + + /* by default we put core 0 stack at the end of scratch Y, so that if core 1 + * stack is not used then all of SCRATCH_X is free. + */ + .stack1_dummy (NOLOAD): + { + *(.stack1*) + } > SCRATCH_X + .stack_dummy (NOLOAD): + { + KEEP(*(.stack*)) + } > SCRATCH_Y + + .flash_end : { + KEEP(*(.embedded_end_block*)) + PROVIDE(__flash_binary_end = .); + } > FLASH + + /* stack limit is poorly named, but historically is maximum heap ptr */ + __StackLimit = ORIGIN(RAM) + LENGTH(RAM); + __StackOneTop = ORIGIN(SCRATCH_X) + LENGTH(SCRATCH_X); + __StackTop = ORIGIN(SCRATCH_Y) + LENGTH(SCRATCH_Y); + __StackOneBottom = __StackOneTop - SIZEOF(.stack1_dummy); + __StackBottom = __StackTop - SIZEOF(.stack_dummy); + PROVIDE(__stack = __StackTop); + + /* picolibc and LLVM */ + PROVIDE (__heap_start = __end__); + PROVIDE (__heap_end = __HeapLimit); + PROVIDE( __tls_align = MAX(ALIGNOF(.tdata), ALIGNOF(.tbss)) ); + PROVIDE( __tls_size_align = (__tls_size + __tls_align - 1) & ~(__tls_align - 1)); + PROVIDE( __arm32_tls_tcb_offset = MAX(8, __tls_align) ); + + /* llvm-libc */ + PROVIDE (_end = __end__); + PROVIDE (__llvm_libc_heap_limit = __HeapLimit); + + /* Check if data + heap + stack exceeds RAM limit */ + ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed") + + ASSERT( __binary_info_header_end - __logical_binary_start <= 256, "Binary info must be in first 256 bytes of the binary") + /* todo assert on extra code */ +} + diff --git a/hardware_test/.pio/build/rp2040_usb/src/main.cpp.o b/hardware_test/.pio/build/rp2040_usb/src/main.cpp.o new file mode 100644 index 0000000000000000000000000000000000000000..170a638e1f2b1ea1ebfa6e2b29e50d62bb268378 GIT binary patch literal 8056 zcmb7IYiwM{bv~C%J-A^^O0p%|F_c+~rk4?UwaYhMOBG2`6eGS$(vW3Up_be$?%K;; zdiPSK+Q1eNBPap`6>7t9<3I?Kv@sGPa8;{zP#YBj7Z6(iFoU#EVWUtAqc+mIp&QpS zj5hA~&7E29t|=59?AdS5W6qp8Gk0e0eR62@sN*aJ^7KD+hX&+6MgUQ@!F+_!qtiCnu<-4)1h8M)Ja z^Sx_F=`uXhKBx-wiLCmU3(qQfK$JS-olDPqD&ecxD%fZ?m-W=y+;TSABJv6PzGv)9 zBU=$CeMSsMWzPtCr%CSbNX6vsMOea{3Uq2<+4pnV)2!dRDoy*wnvVZaZk!B8KR7Vh z|MnH<8Hv`s<-Fi@?q71cwzht-7FLY!*6aIMUPrn>PcZHyJ=VN-YSvn3>W2ZyoazhE%jIH8*3s}$FzsngZ$HQ zm(*X~9^HPUu4U_ux~9ZE;VaG+$5>GxK6vn;n)c?;dIev#$J)EqKq9%|sbh(JawU=X z)C?6c3ft5aPOIU`-nQY%c!!$LWzVJ;mh)axt)%^wT3XIz+Lo6Ja%yzw2nd&E@DZmr3N)e%dQwxg4FE7@wJi z<*cY&7Oo*vs_l?EHZpunMKkGzlwVMZc|U#5YfFJcRC%~+v38>qC$Q+s?J~I)RkX7q zWfFyyHe*~mtPT#YfG}*>Bhwx6qoW-?9dT{5nDF!IRTb@9?Q02w>pU<#*@d2mrluyQ z9#AFr*_C`>Ur@Z;cOeEzVj`9JCsHx>_mWj#b(_Yq3_-W+8M+#ln)dM^g zKhSkr^=C4wSI1PKmuND*7>xf^JJo}^eAde=-I;EsP=e+i)K4KDdJ0;VpIc&bF%N!j zF)-;2Tx6CPv(_r(o%Ly!XZ8cDE^U?a&S7R%B9lYRiL9S)OQsVGxojfC=Ux?=0+Ve* zoXcgGv2HkqWFE7an9F#<(%?{f+7I-`jU}67G^zBG%6kjxf{#JzxOFa9ux31UKDV4# zxw(RuKc}Z#Qk)eA*j5&+-PdrswCi}BLpI{)%Hnno8Q%Sm zwU*=6kp_`x808im7R2CxpXtAG%tr+BZLNup!26fA_q}6PCbE#h;53ov@7DULG-y=j zOiD&VI*PiN){Ex}=W9RzP)>mU5cFfvtDwIDaTBj|@Q2cFFk$(S$RsEWdeX$I+T*+*)(G>)qe1T{ju7`biLRyF7mU8-M?epOuo5MeS+Pc>ar2Fq1)x z$5XM?JB{@EOXI7y`;H%98h8(9CZ$Tw=+@F~a)L-+E{o*4a?DxvL9xwDMVmgfiJ9o@ z5xs3w<8HJ$7PPrvnqzXku}=c8H8>fap85m7S?kv)n2qXC(fXBv>bD+*y;u4+t+c}d1m|m2W|wu;<$0hz90wtC-#r@>T%DzH8)fwsMolmVx3Py zAZ;|3@tSa>6Axs2jm-Je4Oy=QtLVBqtUWv3A78oX{yjf;ghGW8{^8{XW*j zb+azs1O67YtxDu8ph?g>TSUGEd>O>@Yv8A>W9@7KZ3FEEVIObPyEHZ>6JUd_YBq#~*4@ z@lLnHjY&VB!vv0zv^Wt|w{%apjmg&9ZDTdg&gwgzyPQ3t2Ip?)9%pYgJ(LxbdM&G# z4?inahNM)>l$%K~Mj=i@NeM}{9^ZzjT8~l3t%cQ6ZcwrPJ$ zMXPPa8Y>~4;SEs;t@XiD6oqyBXG?fx>dd(#Un*)?31ODX+t*5~wiCG%SOq=j(2gmX zRR~N8$sJm6c>!NqLTFj;zg~u5z^p4!74-CfFDNJ*J&_N|P9qN>gqv`=zg@ch4~o+m z=szmq>HnkRH14YKcUJ|!yJ9@MEA)FR^n5xtN(l2^zUJ*p4{SnsipuqTsy0dp^HZ*` zoUeN;^c$I@myqn;aHjb$%kKl3j#1D~tY1E>wlLdISO!S`DG=?6J7t@^0JMerS1bc0 z{|^=XuPgZ4;#>swyTDU)8MG6#*-)WxGCZG@9kN?~$M|C=cOZXmh5e}Exo&r0x0mtL6YJ+fh5oq;{!#`1(+d6{EBJq_;7hj<=I73mEronv1%If5KT^Sa75vi` zyuPfu^Gi$8bX8!JT;8^C#1*UM8JRp>4c#E|bnarr+*Hy<{PsmSlP%?I$uPcsZA(mr0z5T@Swy z;7h?&&&*2hL^|(H9-oJJya#Wf%js;cYZ4b_ziWyAL!0V)v@Vm~Tx(ix;rue*YX%rystl*IGbNi`?DKwbA$1rR0^r&>)&mS`jYv?icZc@ zq2Now^Ou)s+!yrw(DXpp9NuEGLyLlU-?3a$_qS;ZkjKwur#KR$G@0y1KX?fl;&hDL z^lIVYXt~hze(tsdFb1hf>qai*z_33mnO50N`uxZBu)|0?+&kr`sI$fHKT1gz@AJ&A~m z$g07w8@ynUCsY`l3ik`fahPcRqMt{|Bd(;;=M7IkwEvdjp9NMuDDpfJ7nJW1(f@ae z*u;N8JSg%a5#!np3}dj|1FC)(e<;m&3U)Zi4+rCc?4L(am`|l9r7%!0X^db?-y-dXXy=3^8iI}ff4gZ?KYX;vi z$U8mTziIF-gTEkRa&8#@9U|uSrs3Zu9v6Av@c(Xb-QXuc#>;brxRp2>oFidez?;b< zf3A^#)!0oDF`thZ{*2K-N<_On5$!G*`5zJC|Dxe95n=ZuBJB7+!hT;P!tM>j|C|WB zePO#PhU`R*JZ!*fi;xSk^7xxZ-e z+r)8^?-~71h*;NuW%!>N{_lwJ`*R}Vxk*GkzcO;(4LOgW82oQy8^%!`$g2%*H&|=1 z-e7~ldkrcg)>o6^qXt_I#te2E>@|oUrK(YPtC9N!`C5Z|-vEy-qfBpkW#p{}#Vwp) z^b>PHKObPq)_iZ(7dM&k6XMPl3gYIyj7y=r>51>=bF_tWvtyqA<8Hjn$!2yi2;Ar| zWS?uK5ABUW3VtGwEuHa6hAg5p3?@v*uU+a(O z0iS7GtiP)el={04f7}xks1{`Xy^A{UICkE6j#wWM>pJ`T zzH0cRjV;#qIs~QuZkEKyIIX`Oa7KSN&rR_6XT@Lx9ra%^b~Z0>;yW4N;cT&0-XBW) zT}Qv%%M}b!E%wX%1%AbTw__4kz}rF{X$XJJgAM6P*x49pOBL(T0U+ tV About Arduino menu): **INSERT ARDUINO + VERSION HERE** + +- List the steps to reproduce the problem below (if possible attach a sketch or + copy the sketch code in too): **LIST REPRO STEPS BELOW** diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/.github/PULL_REQUEST_TEMPLATE.md b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..7b641eb --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,26 @@ +Thank you for creating a pull request to contribute to Adafruit's GitHub code! +Before you open the request please review the following guidelines and tips to +help it be more easily integrated: + +- **Describe the scope of your change--i.e. what the change does and what parts + of the code were modified.** This will help us understand any risks of integrating + the code. + +- **Describe any known limitations with your change.** For example if the change + doesn't apply to a supported platform of the library please mention it. + +- **Please run any tests or examples that can exercise your modified code.** We + strive to not break users of the code and running tests/examples helps with this + process. + +Thank you again for contributing! We will try to test and integrate the change +as soon as we can, but be aware we have many GitHub repositories to manage and +can't immediately respond to every request. There is no need to bump or check in +on a pull request (it will clutter the discussion of the request). + +Also don't be worried if the request is closed or not integrated--sometimes the +priorities of Adafruit's GitHub code (education, ease of use) might not match the +priorities of the pull request. Don't fret, the open source community thrives on +forks and GitHub makes it easy to keep your changes in a forked repo. + +After reviewing the guidelines above you can delete this text from the pull request. diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/.github/workflows/githubci.yml b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/.github/workflows/githubci.yml new file mode 100644 index 0000000..8a57d75 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/.github/workflows/githubci.yml @@ -0,0 +1,33 @@ +name: Arduino Library CI + +on: [pull_request, push, repository_dispatch] + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/setup-python@v4 + with: + python-version: '3.x' + - uses: actions/checkout@v3 + - uses: actions/checkout@v3 + with: + repository: adafruit/ci-arduino + path: ci + + - name: Install the prerequisites + run: bash ci/actions_install.sh + + - name: Check for correct code formatting with clang-format + run: python3 ci/run-clang-format.py -e "ci/*" -e "bin/*" -r . + + - name: Check for correct documentation with doxygen + env: + GH_REPO_TOKEN: ${{ secrets.GH_REPO_TOKEN }} + PRETTYNAME : "Adafruit Bus IO Library" + run: bash ci/doxy_gen_and_deploy.sh + + - name: Test the code on supported platforms + run: python3 ci/build_platform.py main_platforms zero feather32u4 + diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/.piopm b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/.piopm new file mode 100644 index 0000000..6bd37c1 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/.piopm @@ -0,0 +1 @@ +{"type": "library", "name": "Adafruit BusIO", "version": "1.17.4", "spec": {"owner": "adafruit", "id": 6214, "name": "Adafruit BusIO", "requirements": null, "uri": null}} \ No newline at end of file diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_BusIO_Register.cpp b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_BusIO_Register.cpp new file mode 100644 index 0000000..f3e8187 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_BusIO_Register.cpp @@ -0,0 +1,384 @@ +#include + +#if !defined(SPI_INTERFACES_COUNT) || \ + (defined(SPI_INTERFACES_COUNT) && (SPI_INTERFACES_COUNT > 0)) + +/*! + * @brief Create a register we access over an I2C Device (which defines the + * bus and address) + * @param i2cdevice The I2CDevice to use for underlying I2C access + * @param reg_addr The address pointer value for the I2C/SMBus register, can + * be 8 or 16 bits + * @param width The width of the register data itself, defaults to 1 byte + * @param byteorder The byte order of the register (used when width is > 1), + * defaults to LSBFIRST + * @param address_width The width of the register address itself, defaults + * to 1 byte + */ +Adafruit_BusIO_Register::Adafruit_BusIO_Register(Adafruit_I2CDevice *i2cdevice, + uint16_t reg_addr, + uint8_t width, + uint8_t byteorder, + uint8_t address_width) { + _i2cdevice = i2cdevice; + _spidevice = nullptr; + _addrwidth = address_width; + _address = reg_addr; + _byteorder = byteorder; + _width = width; +} + +/*! + * @brief Create a register we access over an SPI Device (which defines the + * bus and CS pin) + * @param spidevice The SPIDevice to use for underlying SPI access + * @param reg_addr The address pointer value for the SPI register, can + * be 8 or 16 bits + * @param type The method we use to read/write data to SPI (which is not + * as well defined as I2C) + * @param width The width of the register data itself, defaults to 1 byte + * @param byteorder The byte order of the register (used when width is > 1), + * defaults to LSBFIRST + * @param address_width The width of the register address itself, defaults + * to 1 byte + */ +Adafruit_BusIO_Register::Adafruit_BusIO_Register(Adafruit_SPIDevice *spidevice, + uint16_t reg_addr, + Adafruit_BusIO_SPIRegType type, + uint8_t width, + uint8_t byteorder, + uint8_t address_width) { + _spidevice = spidevice; + _spiregtype = type; + _i2cdevice = nullptr; + _addrwidth = address_width; + _address = reg_addr; + _byteorder = byteorder; + _width = width; +} + +/*! + * @brief Create a register we access over an I2C or SPI Device. This is a + * handy function because we can pass in nullptr for the unused interface, + * allowing libraries to mass-define all the registers + * @param i2cdevice The I2CDevice to use for underlying I2C access, if + * nullptr we use SPI + * @param spidevice The SPIDevice to use for underlying SPI access, if + * nullptr we use I2C + * @param reg_addr The address pointer value for the I2C/SMBus/SPI register, + * can be 8 or 16 bits + * @param type The method we use to read/write data to SPI (which is not + * as well defined as I2C) + * @param width The width of the register data itself, defaults to 1 byte + * @param byteorder The byte order of the register (used when width is > 1), + * defaults to LSBFIRST + * @param address_width The width of the register address itself, defaults + * to 1 byte + */ +Adafruit_BusIO_Register::Adafruit_BusIO_Register( + Adafruit_I2CDevice *i2cdevice, Adafruit_SPIDevice *spidevice, + Adafruit_BusIO_SPIRegType type, uint16_t reg_addr, uint8_t width, + uint8_t byteorder, uint8_t address_width) { + _spidevice = spidevice; + _i2cdevice = i2cdevice; + _spiregtype = type; + _addrwidth = address_width; + _address = reg_addr; + _byteorder = byteorder; + _width = width; +} + +/*! + * @brief Create a register we access over a GenericDevice + * @param genericdevice Generic device to use + * @param reg_addr Register address we will read/write + * @param width Width of the register in bytes (1-4) + * @param byteorder Byte order of register data (LSBFIRST or MSBFIRST) + * @param address_width Width of the register address in bytes (1 or 2) + */ +Adafruit_BusIO_Register::Adafruit_BusIO_Register( + Adafruit_GenericDevice *genericdevice, uint16_t reg_addr, uint8_t width, + uint8_t byteorder, uint8_t address_width) { + _i2cdevice = nullptr; + _spidevice = nullptr; + _genericdevice = genericdevice; + _addrwidth = address_width; + _address = reg_addr; + _byteorder = byteorder; + _width = width; +} + +/*! + * @brief Write a buffer of data to the register location + * @param buffer Pointer to data to write + * @param len Number of bytes to write + * @return True on successful write (only really useful for I2C as SPI is + * uncheckable) + */ +bool Adafruit_BusIO_Register::write(uint8_t *buffer, uint8_t len) { + uint8_t addrbuffer[2] = {(uint8_t)(_address & 0xFF), + (uint8_t)(_address >> 8)}; + if (_i2cdevice) { + return _i2cdevice->write(buffer, len, true, addrbuffer, _addrwidth); + } + if (_spidevice) { + if (_spiregtype == ADDRESSED_OPCODE_BIT0_LOW_TO_WRITE) { + // very special case! + // pass the special opcode address which we set as the high byte of the + // regaddr + addrbuffer[0] = + (uint8_t)(_address >> 8) & ~0x01; // set bottom bit low to write + // the 'actual' reg addr is the second byte then + addrbuffer[1] = (uint8_t)(_address & 0xFF); + // the address appears to be a byte longer + return _spidevice->write(buffer, len, addrbuffer, _addrwidth + 1); + } + if (_spiregtype == ADDRBIT8_HIGH_TOREAD) { + addrbuffer[0] &= ~0x80; + } + if (_spiregtype == ADDRBIT8_HIGH_TOWRITE) { + addrbuffer[0] |= 0x80; + } + if (_spiregtype == AD8_HIGH_TOREAD_AD7_HIGH_TOINC) { + addrbuffer[0] &= ~0x80; + addrbuffer[0] |= 0x40; + } + return _spidevice->write(buffer, len, addrbuffer, _addrwidth); + } + if (_genericdevice) { + return _genericdevice->writeRegister(addrbuffer, _addrwidth, buffer, len); + } + return false; +} + +/*! + * @brief Write up to 4 bytes of data to the register location + * @param value Data to write + * @param numbytes How many bytes from 'value' to write + * @return True on successful write (only really useful for I2C as SPI is + * uncheckable) + */ +bool Adafruit_BusIO_Register::write(uint32_t value, uint8_t numbytes) { + if (numbytes == 0) { + numbytes = _width; + } + if (numbytes > 4) { + return false; + } + + // store a copy + _cached = value; + + for (int i = 0; i < numbytes; i++) { + if (_byteorder == LSBFIRST) { + _buffer[i] = value & 0xFF; + } else { + _buffer[numbytes - i - 1] = value & 0xFF; + } + value >>= 8; + } + return write(_buffer, numbytes); +} + +/*! + * @brief Read data from the register location. This does not do any error + * checking! + * @return Returns 0xFFFFFFFF on failure, value otherwise + */ +uint32_t Adafruit_BusIO_Register::read(void) { + if (!read(_buffer, _width)) { + return -1; + } + + uint32_t value = 0; + + for (int i = 0; i < _width; i++) { + value <<= 8; + if (_byteorder == LSBFIRST) { + value |= _buffer[_width - i - 1]; + } else { + value |= _buffer[i]; + } + } + + return value; +} + +/*! + * @brief Read cached data from last time we wrote to this register + * @return Returns 0xFFFFFFFF on failure, value otherwise + */ +uint32_t Adafruit_BusIO_Register::readCached(void) { return _cached; } + +/*! + @brief Read a number of bytes from a register into a buffer + @param buffer Buffer to read data into + @param len Number of bytes to read into the buffer + @return true on successful read, otherwise false +*/ +bool Adafruit_BusIO_Register::read(uint8_t *buffer, uint8_t len) { + uint8_t addrbuffer[2] = {(uint8_t)(_address & 0xFF), + (uint8_t)(_address >> 8)}; + if (_i2cdevice) { + return _i2cdevice->write_then_read(addrbuffer, _addrwidth, buffer, len); + } + if (_spidevice) { + if (_spiregtype == ADDRESSED_OPCODE_BIT0_LOW_TO_WRITE) { + // very special case! + // pass the special opcode address which we set as the high byte of the + // regaddr + addrbuffer[0] = + (uint8_t)(_address >> 8) | 0x01; // set bottom bit high to read + // the 'actual' reg addr is the second byte then + addrbuffer[1] = (uint8_t)(_address & 0xFF); + // the address appears to be a byte longer + return _spidevice->write_then_read(addrbuffer, _addrwidth + 1, buffer, + len); + } + if (_spiregtype == ADDRBIT8_HIGH_TOREAD) { + addrbuffer[0] |= 0x80; + } + if (_spiregtype == ADDRBIT8_HIGH_TOWRITE) { + addrbuffer[0] &= ~0x80; + } + if (_spiregtype == AD8_HIGH_TOREAD_AD7_HIGH_TOINC) { + addrbuffer[0] |= 0x80 | 0x40; + } + return _spidevice->write_then_read(addrbuffer, _addrwidth, buffer, len); + } + if (_genericdevice) { + return _genericdevice->readRegister(addrbuffer, _addrwidth, buffer, len); + } + return false; +} + +/*! + * @brief Read 2 bytes of data from the register location + * @param value Pointer to uint16_t variable to read into + * @return True on successful write (only really useful for I2C as SPI is + * uncheckable) + */ +bool Adafruit_BusIO_Register::read(uint16_t *value) { + if (!read(_buffer, 2)) { + return false; + } + + if (_byteorder == LSBFIRST) { + *value = _buffer[1]; + *value <<= 8; + *value |= _buffer[0]; + } else { + *value = _buffer[0]; + *value <<= 8; + *value |= _buffer[1]; + } + return true; +} + +/*! + * @brief Read 1 byte of data from the register location + * @param value Pointer to uint8_t variable to read into + * @return True on successful write (only really useful for I2C as SPI is + * uncheckable) + */ +bool Adafruit_BusIO_Register::read(uint8_t *value) { + if (!read(_buffer, 1)) { + return false; + } + + *value = _buffer[0]; + return true; +} + +/*! + * @brief Pretty printer for this register + * @param s The Stream to print to, defaults to &Serial + */ +void Adafruit_BusIO_Register::print(Stream *s) { + uint32_t val = read(); + s->print("0x"); + s->print(val, HEX); +} + +/*! + * @brief Pretty printer for this register + * @param s The Stream to print to, defaults to &Serial + */ +void Adafruit_BusIO_Register::println(Stream *s) { + print(s); + s->println(); +} + +/*! + * @brief Create a slice of the register that we can address without + * touching other bits + * @param reg The Adafruit_BusIO_Register which defines the bus/register + * @param bits The number of bits wide we are slicing + * @param shift The number of bits that our bit-slice is shifted from LSB + */ +Adafruit_BusIO_RegisterBits::Adafruit_BusIO_RegisterBits( + Adafruit_BusIO_Register *reg, uint8_t bits, uint8_t shift) { + _register = reg; + _bits = bits; + _shift = shift; +} + +/*! + * @brief Read 4 bytes of data from the register + * @return data The 4 bytes to read + */ +uint32_t Adafruit_BusIO_RegisterBits::read(void) { + uint32_t val = _register->read(); + val >>= _shift; + return val & ((1 << (_bits)) - 1); +} + +/*! + * @brief Write 4 bytes of data to the register + * @param data The 4 bytes to write + * @return True on successful write (only really useful for I2C as SPI is + * uncheckable) + */ +bool Adafruit_BusIO_RegisterBits::write(uint32_t data) { + uint32_t val = _register->read(); + + // mask off the data before writing + uint32_t mask = (1 << (_bits)) - 1; + data &= mask; + + mask <<= _shift; + val &= ~mask; // remove the current data at that spot + val |= data << _shift; // and add in the new data + + return _register->write(val, _register->width()); +} + +/*! + * @brief The width of the register data, helpful for doing calculations + * @returns The data width used when initializing the register + */ +uint8_t Adafruit_BusIO_Register::width(void) { return _width; } + +/*! + * @brief Set the default width of data + * @param width the default width of data read from register + */ +void Adafruit_BusIO_Register::setWidth(uint8_t width) { _width = width; } + +/*! + * @brief Set register address + * @param address the address from register + */ +void Adafruit_BusIO_Register::setAddress(uint16_t address) { + _address = address; +} + +/*! + * @brief Set the width of register address + * @param address_width the width for register address + */ +void Adafruit_BusIO_Register::setAddressWidth(uint16_t address_width) { + _addrwidth = address_width; +} + +#endif // SPI exists diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_BusIO_Register.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_BusIO_Register.h new file mode 100644 index 0000000..046e04c --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_BusIO_Register.h @@ -0,0 +1,117 @@ +#ifndef Adafruit_BusIO_Register_h +#define Adafruit_BusIO_Register_h + +#include + +#if !defined(SPI_INTERFACES_COUNT) || \ + (defined(SPI_INTERFACES_COUNT) && (SPI_INTERFACES_COUNT > 0)) + +#include +#include +#include + +typedef enum _Adafruit_BusIO_SPIRegType { + ADDRBIT8_HIGH_TOREAD = 0, + /*!< + * ADDRBIT8_HIGH_TOREAD + * When reading a register you must actually send the value 0x80 + register + * address to the device. e.g. To read the register 0x0B the register value + * 0x8B is sent and to write 0x0B is sent. + */ + AD8_HIGH_TOREAD_AD7_HIGH_TOINC = 1, + + /*!< + * ADDRBIT8_HIGH_TOWRITE + * When writing to a register you must actually send the value 0x80 + + * the register address to the device. e.g. To write to the register 0x19 the + * register value 0x99 is sent and to read 0x19 is sent. + */ + ADDRBIT8_HIGH_TOWRITE = 2, + + /*!< + * ADDRESSED_OPCODE_LOWBIT_TO_WRITE + * Used by the MCP23S series, we send 0x40 |'rd with the opcode + * Then set the lowest bit to write + */ + ADDRESSED_OPCODE_BIT0_LOW_TO_WRITE = 3, + +} Adafruit_BusIO_SPIRegType; + +/*! + * @brief The class which defines a device register (a location to read/write + * data from) + */ +class Adafruit_BusIO_Register { +public: + Adafruit_BusIO_Register(Adafruit_I2CDevice *i2cdevice, uint16_t reg_addr, + uint8_t width = 1, uint8_t byteorder = LSBFIRST, + uint8_t address_width = 1); + + Adafruit_BusIO_Register(Adafruit_SPIDevice *spidevice, uint16_t reg_addr, + Adafruit_BusIO_SPIRegType type, uint8_t width = 1, + uint8_t byteorder = LSBFIRST, + uint8_t address_width = 1); + + Adafruit_BusIO_Register(Adafruit_I2CDevice *i2cdevice, + Adafruit_SPIDevice *spidevice, + Adafruit_BusIO_SPIRegType type, uint16_t reg_addr, + uint8_t width = 1, uint8_t byteorder = LSBFIRST, + uint8_t address_width = 1); + + Adafruit_BusIO_Register(Adafruit_GenericDevice *genericdevice, + uint16_t reg_addr, uint8_t width = 1, + uint8_t byteorder = LSBFIRST, + uint8_t address_width = 1); + + bool read(uint8_t *buffer, uint8_t len); + bool read(uint8_t *value); + bool read(uint16_t *value); + uint32_t read(void); + uint32_t readCached(void); + bool write(uint8_t *buffer, uint8_t len); + bool write(uint32_t value, uint8_t numbytes = 0); + + uint8_t width(void); + + void setWidth(uint8_t width); + void setAddress(uint16_t address); + void setAddressWidth(uint16_t address_width); + +#if !defined(NO_GLOBAL_INSTANCES) && !defined(NO_GLOBAL_SERIAL) + void print(Stream *s = &Serial); + void println(Stream *s = &Serial); +#else + void print(Stream *s); + void println(Stream *s); +#endif + +private: + Adafruit_I2CDevice *_i2cdevice; + Adafruit_SPIDevice *_spidevice; + Adafruit_GenericDevice *_genericdevice; + Adafruit_BusIO_SPIRegType _spiregtype; + uint16_t _address; + uint8_t _width, _addrwidth, _byteorder; + uint8_t _buffer[4]; // we won't support anything larger than uint32 for + // non-buffered read + uint32_t _cached = 0; +}; + +/*! + * @brief The class which defines a slice of bits from within a device register + * (a location to read/write data from) + */ +class Adafruit_BusIO_RegisterBits { +public: + Adafruit_BusIO_RegisterBits(Adafruit_BusIO_Register *reg, uint8_t bits, + uint8_t shift); + bool write(uint32_t value); + uint32_t read(void); + +private: + Adafruit_BusIO_Register *_register; + uint8_t _bits, _shift; +}; + +#endif // SPI exists +#endif // BusIO_Register_h diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_GenericDevice.cpp b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_GenericDevice.cpp new file mode 100644 index 0000000..37f9cfd --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_GenericDevice.cpp @@ -0,0 +1,90 @@ +/* + Written with help by Claude! + https://claude.ai/chat/335f50b1-3dd8-435e-9139-57ec7ca26a3c (at this time + chats are not shareable :( +*/ + +#include "Adafruit_GenericDevice.h" + +/*! + * @brief Create a Generic device with the provided read/write functions + * @param obj Pointer to object instance + * @param read_func Function pointer for reading raw data + * @param write_func Function pointer for writing raw data + * @param readreg_func Function pointer for reading registers (optional) + * @param writereg_func Function pointer for writing registers (optional) */ +Adafruit_GenericDevice::Adafruit_GenericDevice( + void *obj, busio_genericdevice_read_t read_func, + busio_genericdevice_write_t write_func, + busio_genericdevice_readreg_t readreg_func, + busio_genericdevice_writereg_t writereg_func) { + _obj = obj; + _read_func = read_func; + _write_func = write_func; + _readreg_func = readreg_func; + _writereg_func = writereg_func; + _begun = false; +} + +/*! @brief Simple begin function (doesn't do much at this time) + @return true always +*/ +bool Adafruit_GenericDevice::begin(void) { + _begun = true; + return true; +} + +/*! +@brief Marks the GenericDevice as no longer in use. +@note: Since this is a GenericDevice, if you are using this with a Serial +object, this does NOT disable serial communication or release the RX/TX pins. +That must be done manually by calling Serial.end(). +*/ +void Adafruit_GenericDevice::end(void) { _begun = false; } + +/*! @brief Write a buffer of data + @param buffer Pointer to buffer of data to write + @param len Number of bytes to write + @return true if write was successful, otherwise false */ +bool Adafruit_GenericDevice::write(const uint8_t *buffer, size_t len) { + if (!_begun) + return false; + return _write_func(_obj, buffer, len); +} + +/*! @brief Read data into a buffer + @param buffer Pointer to buffer to read data into + @param len Number of bytes to read + @return true if read was successful, otherwise false */ +bool Adafruit_GenericDevice::read(uint8_t *buffer, size_t len) { + if (!_begun) + return false; + return _read_func(_obj, buffer, len); +} + +/*! @brief Read from a register location + @param addr_buf Buffer containing register address + @param addrsiz Size of register address in bytes + @param buf Buffer to store read data + @param bufsiz Size of data to read in bytes + @return true if read was successful, otherwise false */ +bool Adafruit_GenericDevice::readRegister(uint8_t *addr_buf, uint8_t addrsiz, + uint8_t *buf, uint16_t bufsiz) { + if (!_begun || !_readreg_func) + return false; + return _readreg_func(_obj, addr_buf, addrsiz, buf, bufsiz); +} + +/*! @brief Write to a register location + @param addr_buf Buffer containing register address + @param addrsiz Size of register address in bytes + @param buf Buffer containing data to write + @param bufsiz Size of data to write in bytes + @return true if write was successful, otherwise false */ +bool Adafruit_GenericDevice::writeRegister(uint8_t *addr_buf, uint8_t addrsiz, + const uint8_t *buf, + uint16_t bufsiz) { + if (!_begun || !_writereg_func) + return false; + return _writereg_func(_obj, addr_buf, addrsiz, buf, bufsiz); +} diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_GenericDevice.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_GenericDevice.h new file mode 100644 index 0000000..d5cb326 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_GenericDevice.h @@ -0,0 +1,56 @@ +#ifndef ADAFRUIT_GENERICDEVICE_H +#define ADAFRUIT_GENERICDEVICE_H + +#include + +typedef bool (*busio_genericdevice_read_t)(void *obj, uint8_t *buffer, + size_t len); +typedef bool (*busio_genericdevice_write_t)(void *obj, const uint8_t *buffer, + size_t len); +typedef bool (*busio_genericdevice_readreg_t)(void *obj, uint8_t *addr_buf, + uint8_t addrsiz, uint8_t *data, + uint16_t datalen); +typedef bool (*busio_genericdevice_writereg_t)(void *obj, uint8_t *addr_buf, + uint8_t addrsiz, + const uint8_t *data, + uint16_t datalen); + +/*! + * @brief Class for communicating with a device via generic read/write functions + */ +class Adafruit_GenericDevice { +public: + Adafruit_GenericDevice( + void *obj, busio_genericdevice_read_t read_func, + busio_genericdevice_write_t write_func, + busio_genericdevice_readreg_t readreg_func = nullptr, + busio_genericdevice_writereg_t writereg_func = nullptr); + + bool begin(void); + void end(void); + + bool read(uint8_t *buffer, size_t len); + bool write(const uint8_t *buffer, size_t len); + bool readRegister(uint8_t *addr_buf, uint8_t addrsiz, uint8_t *buf, + uint16_t bufsiz); + bool writeRegister(uint8_t *addr_buf, uint8_t addrsiz, const uint8_t *buf, + uint16_t bufsiz); + +protected: + /*! @brief Function pointer for reading raw data from the device */ + busio_genericdevice_read_t _read_func; + /*! @brief Function pointer for writing raw data to the device */ + busio_genericdevice_write_t _write_func; + /*! @brief Function pointer for reading a 'register' from the device */ + busio_genericdevice_readreg_t _readreg_func; + /*! @brief Function pointer for writing a 'register' to the device */ + busio_genericdevice_writereg_t _writereg_func; + + bool _begun; ///< whether we have initialized yet (in case the function needs + ///< to do something) + +private: + void *_obj; ///< Pointer to object instance +}; + +#endif // ADAFRUIT_GENERICDEVICE_H diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_I2CDevice.cpp b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_I2CDevice.cpp new file mode 100644 index 0000000..2633cf1 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_I2CDevice.cpp @@ -0,0 +1,320 @@ +#include "Adafruit_I2CDevice.h" + +// #define DEBUG_SERIAL Serial + +/*! + * @brief Create an I2C device at a given address + * @param addr The 7-bit I2C address for the device + * @param theWire The I2C bus to use, defaults to &Wire + */ +Adafruit_I2CDevice::Adafruit_I2CDevice(uint8_t addr, TwoWire *theWire) { + _addr = addr; + _wire = theWire; + _begun = false; +#ifdef ARDUINO_ARCH_SAMD + _maxBufferSize = 250; // as defined in Wire.h's RingBuffer +#elif defined(ESP32) + _maxBufferSize = I2C_BUFFER_LENGTH; +#else + _maxBufferSize = 32; +#endif +} + +/*! + * @brief Initializes and does basic address detection + * @param addr_detect Whether we should attempt to detect the I2C address + * with a scan. 99% of sensors/devices don't mind, but once in a while they + * don't respond well to a scan! + * @return True if I2C initialized and a device with the addr found + */ +bool Adafruit_I2CDevice::begin(bool addr_detect) { + _wire->begin(); + _begun = true; + + if (addr_detect) { + return detected(); + } + return true; +} + +/*! + * @brief De-initialize device, turn off the Wire interface + */ +void Adafruit_I2CDevice::end(void) { + // Not all port implement Wire::end(), such as + // - ESP8266 + // - AVR core without WIRE_HAS_END + // - ESP32: end() is implemented since 2.0.1 which is latest at the moment. + // Temporarily disable for now to give time for user to update. +#if !(defined(ESP8266) || \ + (defined(ARDUINO_ARCH_AVR) && !defined(WIRE_HAS_END)) || \ + defined(ARDUINO_ARCH_ESP32)) + _wire->end(); + _begun = false; +#endif +} + +/*! + * @brief Scans I2C for the address - note will give a false-positive + * if there's no pullups on I2C + * @return True if I2C initialized and a device with the addr found + */ +bool Adafruit_I2CDevice::detected(void) { + // Init I2C if not done yet + if (!_begun && !begin()) { + return false; + } + + // A basic scanner, see if it ACK's + _wire->beginTransmission(_addr); +#ifdef DEBUG_SERIAL + DEBUG_SERIAL.print(F("Address 0x")); + DEBUG_SERIAL.print(_addr, HEX); +#endif +#ifdef ARDUINO_ARCH_MBED + _wire->write(0); // forces a write request instead of a read +#endif + if (_wire->endTransmission() == 0) { +#ifdef DEBUG_SERIAL + DEBUG_SERIAL.println(F(" Detected")); +#endif + return true; + } +#ifdef DEBUG_SERIAL + DEBUG_SERIAL.println(F(" Not detected")); +#endif + return false; +} + +/*! + * @brief Write a buffer or two to the I2C device. Cannot be more than + * maxBufferSize() bytes. + * @param buffer Pointer to buffer of data to write. This is const to + * ensure the content of this buffer doesn't change. + * @param len Number of bytes from buffer to write + * @param prefix_buffer Pointer to optional array of data to write before + * buffer. Cannot be more than maxBufferSize() bytes. This is const to + * ensure the content of this buffer doesn't change. + * @param prefix_len Number of bytes from prefix buffer to write + * @param stop Whether to send an I2C STOP signal on write + * @return True if write was successful, otherwise false. + */ +bool Adafruit_I2CDevice::write(const uint8_t *buffer, size_t len, bool stop, + const uint8_t *prefix_buffer, + size_t prefix_len) { + if ((len + prefix_len) > maxBufferSize()) { + // currently not guaranteed to work if more than 32 bytes! + // we will need to find out if some platforms have larger + // I2C buffer sizes :/ +#ifdef DEBUG_SERIAL + DEBUG_SERIAL.println(F("\tI2CDevice could not write such a large buffer")); +#endif + return false; + } + + _wire->beginTransmission(_addr); + + // Write the prefix data (usually an address) + if ((prefix_len != 0) && (prefix_buffer != nullptr)) { + if (_wire->write(prefix_buffer, prefix_len) != prefix_len) { +#ifdef DEBUG_SERIAL + DEBUG_SERIAL.println(F("\tI2CDevice failed to write")); +#endif + return false; + } + } + + // Write the data itself + if (_wire->write(buffer, len) != len) { +#ifdef DEBUG_SERIAL + DEBUG_SERIAL.println(F("\tI2CDevice failed to write")); +#endif + return false; + } + +#ifdef DEBUG_SERIAL + + DEBUG_SERIAL.print(F("\tI2CWRITE @ 0x")); + DEBUG_SERIAL.print(_addr, HEX); + DEBUG_SERIAL.print(F(" :: ")); + if ((prefix_len != 0) && (prefix_buffer != nullptr)) { + for (uint16_t i = 0; i < prefix_len; i++) { + DEBUG_SERIAL.print(F("0x")); + DEBUG_SERIAL.print(prefix_buffer[i], HEX); + DEBUG_SERIAL.print(F(", ")); + } + } + for (uint16_t i = 0; i < len; i++) { + DEBUG_SERIAL.print(F("0x")); + DEBUG_SERIAL.print(buffer[i], HEX); + DEBUG_SERIAL.print(F(", ")); + if (i % 32 == 31) { + DEBUG_SERIAL.println(); + } + } + + if (stop) { + DEBUG_SERIAL.print("\tSTOP"); + } +#endif + + if (_wire->endTransmission(stop) == 0) { +#ifdef DEBUG_SERIAL + DEBUG_SERIAL.println(); + // DEBUG_SERIAL.println("Sent!"); +#endif + return true; + } else { +#ifdef DEBUG_SERIAL + DEBUG_SERIAL.println("\tFailed to send!"); +#endif + return false; + } +} + +/*! + * @brief Read from I2C into a buffer from the I2C device. + * Cannot be more than maxBufferSize() bytes. + * @param buffer Pointer to buffer of data to read into + * @param len Number of bytes from buffer to read. + * @param stop Whether to send an I2C STOP signal on read + * @return True if read was successful, otherwise false. + */ +bool Adafruit_I2CDevice::read(uint8_t *buffer, size_t len, bool stop) { + size_t pos = 0; + while (pos < len) { + size_t read_len = + ((len - pos) > maxBufferSize()) ? maxBufferSize() : (len - pos); + bool read_stop = (pos < (len - read_len)) ? false : stop; + if (!_read(buffer + pos, read_len, read_stop)) + return false; + pos += read_len; + } + return true; +} + +bool Adafruit_I2CDevice::_read(uint8_t *buffer, size_t len, bool stop) { +#if defined(TinyWireM_h) + size_t recv = _wire->requestFrom((uint8_t)_addr, (uint8_t)len); +#elif defined(ARDUINO_ARCH_MEGAAVR) + size_t recv = _wire->requestFrom(_addr, len, stop); +#else + size_t recv = _wire->requestFrom((uint8_t)_addr, (uint8_t)len, (uint8_t)stop); +#endif + + if (recv != len) { + // Not enough data available to fulfill our obligation! +#ifdef DEBUG_SERIAL + DEBUG_SERIAL.print(F("\tI2CDevice did not receive enough data: ")); + DEBUG_SERIAL.println(recv); +#endif + return false; + } + + for (uint16_t i = 0; i < len; i++) { + buffer[i] = _wire->read(); + } + +#ifdef DEBUG_SERIAL + DEBUG_SERIAL.print(F("\tI2CREAD @ 0x")); + DEBUG_SERIAL.print(_addr, HEX); + DEBUG_SERIAL.print(F(" :: ")); + for (uint16_t i = 0; i < len; i++) { + DEBUG_SERIAL.print(F("0x")); + DEBUG_SERIAL.print(buffer[i], HEX); + DEBUG_SERIAL.print(F(", ")); + if (len % 32 == 31) { + DEBUG_SERIAL.println(); + } + } + DEBUG_SERIAL.println(); +#endif + + return true; +} + +/*! + * @brief Write some data, then read some data from I2C into another buffer. + * Cannot be more than maxBufferSize() bytes. The buffers can point to + * same/overlapping locations. + * @param write_buffer Pointer to buffer of data to write from + * @param write_len Number of bytes from buffer to write. + * @param read_buffer Pointer to buffer of data to read into. + * @param read_len Number of bytes from buffer to read. + * @param stop Whether to send an I2C STOP signal between the write and read + * @return True if write & read was successful, otherwise false. + */ +bool Adafruit_I2CDevice::write_then_read(const uint8_t *write_buffer, + size_t write_len, uint8_t *read_buffer, + size_t read_len, bool stop) { + if (!write(write_buffer, write_len, stop)) { + return false; + } + + return read(read_buffer, read_len); +} + +/*! + * @brief Returns the 7-bit address of this device + * @return The 7-bit address of this device + */ +uint8_t Adafruit_I2CDevice::address(void) { return _addr; } + +/*! + * @brief Change the I2C clock speed to desired (relies on + * underlying Wire support! + * @param desiredclk The desired I2C SCL frequency + * @return True if this platform supports changing I2C speed. + * Not necessarily that the speed was achieved! + */ +bool Adafruit_I2CDevice::setSpeed(uint32_t desiredclk) { +#if defined(__AVR_ATmega328__) || \ + defined(__AVR_ATmega328P__) // fix arduino core set clock + // calculate TWBR correctly + + if ((F_CPU / 18) < desiredclk) { +#ifdef DEBUG_SERIAL + Serial.println(F("I2C.setSpeed too high.")); +#endif + return false; + } + uint32_t atwbr = ((F_CPU / desiredclk) - 16) / 2; + if (atwbr > 16320) { +#ifdef DEBUG_SERIAL + Serial.println(F("I2C.setSpeed too low.")); +#endif + return false; + } + + if (atwbr <= 255) { + atwbr /= 1; + TWSR = 0x0; + } else if (atwbr <= 1020) { + atwbr /= 4; + TWSR = 0x1; + } else if (atwbr <= 4080) { + atwbr /= 16; + TWSR = 0x2; + } else { // if (atwbr <= 16320) + atwbr /= 64; + TWSR = 0x3; + } + TWBR = atwbr; + +#ifdef DEBUG_SERIAL + Serial.print(F("TWSR prescaler = ")); + Serial.println(pow(4, TWSR)); + Serial.print(F("TWBR = ")); + Serial.println(atwbr); +#endif + return true; +#elif (ARDUINO >= 157) && !defined(ARDUINO_STM32_FEATHER) && \ + !defined(TinyWireM_h) + _wire->setClock(desiredclk); + return true; + +#else + (void)desiredclk; + return false; +#endif +} diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_I2CDevice.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_I2CDevice.h new file mode 100644 index 0000000..6bda7ba --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_I2CDevice.h @@ -0,0 +1,36 @@ +#ifndef Adafruit_I2CDevice_h +#define Adafruit_I2CDevice_h + +#include +#include + +///< The class which defines how we will talk to this device over I2C +class Adafruit_I2CDevice { +public: + Adafruit_I2CDevice(uint8_t addr, TwoWire *theWire = &Wire); + uint8_t address(void); + bool begin(bool addr_detect = true); + void end(void); + bool detected(void); + + bool read(uint8_t *buffer, size_t len, bool stop = true); + bool write(const uint8_t *buffer, size_t len, bool stop = true, + const uint8_t *prefix_buffer = nullptr, size_t prefix_len = 0); + bool write_then_read(const uint8_t *write_buffer, size_t write_len, + uint8_t *read_buffer, size_t read_len, + bool stop = false); + bool setSpeed(uint32_t desiredclk); + + /*! @brief How many bytes we can read in a transaction + * @return The size of the Wire receive/transmit buffer */ + size_t maxBufferSize() { return _maxBufferSize; } + +private: + uint8_t _addr; + TwoWire *_wire; + bool _begun; + size_t _maxBufferSize; + bool _read(uint8_t *buffer, size_t len, bool stop); +}; + +#endif // Adafruit_I2CDevice_h diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_I2CRegister.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_I2CRegister.h new file mode 100644 index 0000000..186850f --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_I2CRegister.h @@ -0,0 +1,10 @@ +#ifndef _ADAFRUIT_I2C_REGISTER_H_ +#define _ADAFRUIT_I2C_REGISTER_H_ + +#include +#include + +typedef Adafruit_BusIO_Register Adafruit_I2CRegister; +typedef Adafruit_BusIO_RegisterBits Adafruit_I2CRegisterBits; + +#endif diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_SPIDevice.cpp b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_SPIDevice.cpp new file mode 100644 index 0000000..3283de6 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_SPIDevice.cpp @@ -0,0 +1,512 @@ +#include "Adafruit_SPIDevice.h" + +// #define DEBUG_SERIAL Serial + +#ifdef BUSIO_USE_FAST_PINIO +#define BUSIO_SET_CLOCK_LOW() (*clkPort = *clkPort & ~clkPinMask) +#define BUSIO_SET_CLOCK_HIGH() (*clkPort = *clkPort | clkPinMask) +#define BUSIO_READ_MISO() (*misoPort & misoPinMask) +#define BUSIO_WRITE_MOSI(value) \ + do { \ + if (value) \ + *mosiPort = *mosiPort | mosiPinMask; \ + else \ + *mosiPort = *mosiPort & ~mosiPinMask; \ + } while (0) +#else +#define BUSIO_SET_CLOCK_LOW() digitalWrite(_sck, LOW) +#define BUSIO_SET_CLOCK_HIGH() digitalWrite(_sck, HIGH) +#define BUSIO_READ_MISO() digitalRead(_miso) +#define BUSIO_WRITE_MOSI(value) digitalWrite(_mosi, value) +#endif + +/*! + * @brief Create an SPI device with the given CS pin and settings + * @param cspin The arduino pin number to use for chip select + * @param freq The SPI clock frequency to use, defaults to 1MHz + * @param dataOrder The SPI data order to use for bits within each byte, + * defaults to SPI_BITORDER_MSBFIRST + * @param dataMode The SPI mode to use, defaults to SPI_MODE0 + * @param theSPI The SPI bus to use, defaults to &theSPI + */ +Adafruit_SPIDevice::Adafruit_SPIDevice(int8_t cspin, uint32_t freq, + BusIOBitOrder dataOrder, + uint8_t dataMode, SPIClass *theSPI) { +#ifdef BUSIO_HAS_HW_SPI + _cs = cspin; + _sck = _mosi = _miso = -1; + _spi = theSPI; + _begun = false; + _spiSetting = new SPISettings(freq, dataOrder, dataMode); + _freq = freq; + _dataOrder = dataOrder; + _dataMode = dataMode; +#else + // unused, but needed to suppress compiler warns + (void)cspin; + (void)freq; + (void)dataOrder; + (void)dataMode; + (void)theSPI; +#endif +} + +/*! + * @brief Create an SPI device with the given CS pin and settings + * @param cspin The arduino pin number to use for chip select + * @param sckpin The arduino pin number to use for SCK + * @param misopin The arduino pin number to use for MISO, set to -1 if not + * used + * @param mosipin The arduino pin number to use for MOSI, set to -1 if not + * used + * @param freq The SPI clock frequency to use, defaults to 1MHz + * @param dataOrder The SPI data order to use for bits within each byte, + * defaults to SPI_BITORDER_MSBFIRST + * @param dataMode The SPI mode to use, defaults to SPI_MODE0 + */ +Adafruit_SPIDevice::Adafruit_SPIDevice(int8_t cspin, int8_t sckpin, + int8_t misopin, int8_t mosipin, + uint32_t freq, BusIOBitOrder dataOrder, + uint8_t dataMode) { + _cs = cspin; + _sck = sckpin; + _miso = misopin; + _mosi = mosipin; + +#ifdef BUSIO_USE_FAST_PINIO + csPort = (BusIO_PortReg *)portOutputRegister(digitalPinToPort(cspin)); + csPinMask = digitalPinToBitMask(cspin); + if (mosipin != -1) { + mosiPort = (BusIO_PortReg *)portOutputRegister(digitalPinToPort(mosipin)); + mosiPinMask = digitalPinToBitMask(mosipin); + } + if (misopin != -1) { + misoPort = (BusIO_PortReg *)portInputRegister(digitalPinToPort(misopin)); + misoPinMask = digitalPinToBitMask(misopin); + } + clkPort = (BusIO_PortReg *)portOutputRegister(digitalPinToPort(sckpin)); + clkPinMask = digitalPinToBitMask(sckpin); +#endif + + _freq = freq; + _dataOrder = dataOrder; + _dataMode = dataMode; + _begun = false; +} + +/*! + * @brief Release memory allocated in constructors + */ +Adafruit_SPIDevice::~Adafruit_SPIDevice() { + if (_spiSetting) + delete _spiSetting; +} + +/*! + * @brief Initializes SPI bus and sets CS pin high + * @return Always returns true because there's no way to test success of SPI + * init + */ +bool Adafruit_SPIDevice::begin(void) { + if (_cs != -1) { + pinMode(_cs, OUTPUT); + digitalWrite(_cs, HIGH); + } + + if (_spi) { // hardware SPI +#ifdef BUSIO_HAS_HW_SPI + _spi->begin(); +#endif + } else { + pinMode(_sck, OUTPUT); + + if ((_dataMode == SPI_MODE0) || (_dataMode == SPI_MODE1)) { + // idle low on mode 0 and 1 + digitalWrite(_sck, LOW); + } else { + // idle high on mode 2 or 3 + digitalWrite(_sck, HIGH); + } + if (_mosi != -1) { + pinMode(_mosi, OUTPUT); + digitalWrite(_mosi, HIGH); + } + if (_miso != -1) { + pinMode(_miso, INPUT); + } + } + + _begun = true; + return true; +} + +/*! + * @brief Transfer (send/receive) a buffer over hard/soft SPI, without + * transaction management + * @param buffer The buffer to send and receive at the same time + * @param len The number of bytes to transfer + */ +void Adafruit_SPIDevice::transfer(uint8_t *buffer, size_t len) { + // + // HARDWARE SPI + // + if (_spi) { +#ifdef BUSIO_HAS_HW_SPI +#if defined(SPARK) + _spi->transfer(buffer, buffer, len, nullptr); +#elif defined(STM32) + for (size_t i = 0; i < len; i++) { + _spi->transfer(buffer[i]); + } +#else + _spi->transfer(buffer, len); +#endif + return; +#endif + } + + // + // SOFTWARE SPI + // + uint8_t startbit; + if (_dataOrder == SPI_BITORDER_LSBFIRST) { + startbit = 0x1; + } else { + startbit = 0x80; + } + + bool towrite, lastmosi = !(buffer[0] & startbit); + uint8_t bitdelay_us = (1000000 / _freq) / 2; + + for (size_t i = 0; i < len; i++) { + uint8_t reply = 0; + uint8_t send = buffer[i]; + + /* + Serial.print("\tSending software SPI byte 0x"); + Serial.print(send, HEX); + Serial.print(" -> 0x"); + */ + + // Serial.print(send, HEX); + for (uint8_t b = startbit; b != 0; + b = (_dataOrder == SPI_BITORDER_LSBFIRST) ? b << 1 : b >> 1) { + + if (bitdelay_us) { + delayMicroseconds(bitdelay_us); + } + + if (_dataMode == SPI_MODE0 || _dataMode == SPI_MODE2) { + towrite = send & b; + if ((_mosi != -1) && (lastmosi != towrite)) { + BUSIO_WRITE_MOSI(towrite); + lastmosi = towrite; + } + + BUSIO_SET_CLOCK_HIGH(); + + if (bitdelay_us) { + delayMicroseconds(bitdelay_us); + } + + if (_miso != -1) { + if (BUSIO_READ_MISO()) + reply |= b; + } + + BUSIO_SET_CLOCK_LOW(); + + } else if (_dataMode == SPI_MODE3) { + + if (_mosi != -1) { // transmit on falling edge + BUSIO_WRITE_MOSI(send & b); + } + + BUSIO_SET_CLOCK_LOW(); + + if (bitdelay_us) { + delayMicroseconds(bitdelay_us); + } + + BUSIO_SET_CLOCK_HIGH(); + + if (bitdelay_us) { + delayMicroseconds(bitdelay_us); + } + + if (_miso != -1) { // read on rising edge + if (BUSIO_READ_MISO()) { + reply |= b; + } + } + + } else { // || _dataMode == SPI_MODE1) + + BUSIO_SET_CLOCK_HIGH(); + + if (bitdelay_us) { + delayMicroseconds(bitdelay_us); + } + + if (_mosi != -1) { + BUSIO_WRITE_MOSI(send & b); + } + + BUSIO_SET_CLOCK_LOW(); + + if (_miso != -1) { + if (BUSIO_READ_MISO()) { + reply |= b; + } + } + } + } + if (_miso != -1) { + buffer[i] = reply; + } + } + return; +} + +/*! + * @brief Transfer (send/receive) one byte over hard/soft SPI, without + * transaction management + * @param send The byte to send + * @return The byte received while transmitting + */ +uint8_t Adafruit_SPIDevice::transfer(uint8_t send) { + uint8_t data = send; + transfer(&data, 1); + return data; +} + +/*! + * @brief Manually begin a transaction (calls beginTransaction if hardware + * SPI) + */ +void Adafruit_SPIDevice::beginTransaction(void) { + if (_spi) { +#ifdef BUSIO_HAS_HW_SPI + _spi->beginTransaction(*_spiSetting); +#endif + } +} + +/*! + * @brief Manually end a transaction (calls endTransaction if hardware SPI) + */ +void Adafruit_SPIDevice::endTransaction(void) { + if (_spi) { +#ifdef BUSIO_HAS_HW_SPI + _spi->endTransaction(); +#endif + } +} + +/*! + * @brief Assert/Deassert the CS pin if it is defined + * @param value The state the CS is set to + */ +void Adafruit_SPIDevice::setChipSelect(int value) { + if (_cs != -1) { + digitalWrite(_cs, value); + } +} + +/*! + * @brief Write a buffer or two to the SPI device, with transaction + * management. + * @brief Manually begin a transaction (calls beginTransaction if hardware + * SPI) with asserting the CS pin + */ +void Adafruit_SPIDevice::beginTransactionWithAssertingCS() { + beginTransaction(); + setChipSelect(LOW); +} + +/*! + * @brief Manually end a transaction (calls endTransaction if hardware SPI) + * with deasserting the CS pin + */ +void Adafruit_SPIDevice::endTransactionWithDeassertingCS() { + setChipSelect(HIGH); + endTransaction(); +} + +/*! + * @brief Write a buffer or two to the SPI device, with transaction + * management. + * @param buffer Pointer to buffer of data to write + * @param len Number of bytes from buffer to write + * @param prefix_buffer Pointer to optional array of data to write before + * buffer. + * @param prefix_len Number of bytes from prefix buffer to write + * @return Always returns true because there's no way to test success of SPI + * writes + */ +bool Adafruit_SPIDevice::write(const uint8_t *buffer, size_t len, + const uint8_t *prefix_buffer, + size_t prefix_len) { + beginTransactionWithAssertingCS(); + + // do the writing +#if defined(ARDUINO_ARCH_ESP32) + if (_spi) { + if (prefix_len > 0) { + _spi->transferBytes((uint8_t *)prefix_buffer, nullptr, prefix_len); + } + if (len > 0) { + _spi->transferBytes((uint8_t *)buffer, nullptr, len); + } + } else +#endif + { + for (size_t i = 0; i < prefix_len; i++) { + transfer(prefix_buffer[i]); + } + for (size_t i = 0; i < len; i++) { + transfer(buffer[i]); + } + } + endTransactionWithDeassertingCS(); + +#ifdef DEBUG_SERIAL + DEBUG_SERIAL.print(F("\tSPIDevice Wrote: ")); + if ((prefix_len != 0) && (prefix_buffer != nullptr)) { + for (uint16_t i = 0; i < prefix_len; i++) { + DEBUG_SERIAL.print(F("0x")); + DEBUG_SERIAL.print(prefix_buffer[i], HEX); + DEBUG_SERIAL.print(F(", ")); + } + } + for (uint16_t i = 0; i < len; i++) { + DEBUG_SERIAL.print(F("0x")); + DEBUG_SERIAL.print(buffer[i], HEX); + DEBUG_SERIAL.print(F(", ")); + if (i % 32 == 31) { + DEBUG_SERIAL.println(); + } + } + DEBUG_SERIAL.println(); +#endif + + return true; +} + +/*! + * @brief Read from SPI into a buffer from the SPI device, with transaction + * management. + * @param buffer Pointer to buffer of data to read into + * @param len Number of bytes from buffer to read. + * @param sendvalue The 8-bits of data to write when doing the data read, + * defaults to 0xFF + * @return Always returns true because there's no way to test success of SPI + * writes + */ +bool Adafruit_SPIDevice::read(uint8_t *buffer, size_t len, uint8_t sendvalue) { + memset(buffer, sendvalue, len); // clear out existing buffer + + beginTransactionWithAssertingCS(); + transfer(buffer, len); + endTransactionWithDeassertingCS(); + +#ifdef DEBUG_SERIAL + DEBUG_SERIAL.print(F("\tSPIDevice Read: ")); + for (uint16_t i = 0; i < len; i++) { + DEBUG_SERIAL.print(F("0x")); + DEBUG_SERIAL.print(buffer[i], HEX); + DEBUG_SERIAL.print(F(", ")); + if (len % 32 == 31) { + DEBUG_SERIAL.println(); + } + } + DEBUG_SERIAL.println(); +#endif + + return true; +} + +/*! + * @brief Write some data, then read some data from SPI into another buffer, + * with transaction management. The buffers can point to same/overlapping + * locations. This does not transmit-receive at the same time! + * @param write_buffer Pointer to buffer of data to write from + * @param write_len Number of bytes from buffer to write. + * @param read_buffer Pointer to buffer of data to read into. + * @param read_len Number of bytes from buffer to read. + * @param sendvalue The 8-bits of data to write when doing the data read, + * defaults to 0xFF + * @return Always returns true because there's no way to test success of SPI + * writes + */ +bool Adafruit_SPIDevice::write_then_read(const uint8_t *write_buffer, + size_t write_len, uint8_t *read_buffer, + size_t read_len, uint8_t sendvalue) { + beginTransactionWithAssertingCS(); + // do the writing +#if defined(ARDUINO_ARCH_ESP32) + if (_spi) { + if (write_len > 0) { + _spi->transferBytes((uint8_t *)write_buffer, nullptr, write_len); + } + } else +#endif + { + for (size_t i = 0; i < write_len; i++) { + transfer(write_buffer[i]); + } + } + +#ifdef DEBUG_SERIAL + DEBUG_SERIAL.print(F("\tSPIDevice Wrote: ")); + for (uint16_t i = 0; i < write_len; i++) { + DEBUG_SERIAL.print(F("0x")); + DEBUG_SERIAL.print(write_buffer[i], HEX); + DEBUG_SERIAL.print(F(", ")); + if (write_len % 32 == 31) { + DEBUG_SERIAL.println(); + } + } + DEBUG_SERIAL.println(); +#endif + + // do the reading + for (size_t i = 0; i < read_len; i++) { + read_buffer[i] = transfer(sendvalue); + } + +#ifdef DEBUG_SERIAL + DEBUG_SERIAL.print(F("\tSPIDevice Read: ")); + for (uint16_t i = 0; i < read_len; i++) { + DEBUG_SERIAL.print(F("0x")); + DEBUG_SERIAL.print(read_buffer[i], HEX); + DEBUG_SERIAL.print(F(", ")); + if (read_len % 32 == 31) { + DEBUG_SERIAL.println(); + } + } + DEBUG_SERIAL.println(); +#endif + + endTransactionWithDeassertingCS(); + + return true; +} + +/*! + * @brief Write some data and read some data at the same time from SPI + * into the same buffer, with transaction management. This is basicaly a wrapper + * for transfer() with CS-pin and transaction management. This /does/ + * transmit-receive at the same time! + * @param buffer Pointer to buffer of data to write/read to/from + * @param len Number of bytes from buffer to write/read. + * @return Always returns true because there's no way to test success of SPI + * writes + */ +bool Adafruit_SPIDevice::write_and_read(uint8_t *buffer, size_t len) { + beginTransactionWithAssertingCS(); + transfer(buffer, len); + endTransactionWithDeassertingCS(); + + return true; +} diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_SPIDevice.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_SPIDevice.h new file mode 100644 index 0000000..82a0281 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_SPIDevice.h @@ -0,0 +1,149 @@ +#ifndef Adafruit_SPIDevice_h +#define Adafruit_SPIDevice_h + +#include + +#if !defined(SPI_INTERFACES_COUNT) || \ + (defined(SPI_INTERFACES_COUNT) && (SPI_INTERFACES_COUNT > 0)) +// HW SPI available +#include +#define BUSIO_HAS_HW_SPI +#else +// SW SPI ONLY +enum { SPI_MODE0, SPI_MODE1, SPI_MODE2, SPI_MODE3 }; +typedef uint8_t SPIClass; +#endif + +// some modern SPI definitions don't have BitOrder enum +#if (defined(__AVR__) && !defined(ARDUINO_ARCH_MEGAAVR)) || \ + defined(ESP8266) || defined(TEENSYDUINO) || defined(SPARK) || \ + defined(ARDUINO_ARCH_SPRESENSE) || defined(MEGATINYCORE) || \ + defined(DXCORE) || defined(ARDUINO_AVR_ATmega4809) || \ + defined(ARDUINO_AVR_ATmega4808) || defined(ARDUINO_AVR_ATmega3209) || \ + defined(ARDUINO_AVR_ATmega3208) || defined(ARDUINO_AVR_ATmega1609) || \ + defined(ARDUINO_AVR_ATmega1608) || defined(ARDUINO_AVR_ATmega809) || \ + defined(ARDUINO_AVR_ATmega808) || defined(ARDUINO_ARCH_ARC32) || \ + defined(ARDUINO_ARCH_XMC) + +typedef enum _BitOrder { + SPI_BITORDER_MSBFIRST = MSBFIRST, + SPI_BITORDER_LSBFIRST = LSBFIRST, +} BusIOBitOrder; + +#elif defined(ESP32) || defined(__ASR6501__) || defined(__ASR6502__) + +// some modern SPI definitions don't have BitOrder enum and have different SPI +// mode defines +typedef enum _BitOrder { + SPI_BITORDER_MSBFIRST = SPI_MSBFIRST, + SPI_BITORDER_LSBFIRST = SPI_LSBFIRST, +} BusIOBitOrder; + +#else +// Some platforms have a BitOrder enum but its named MSBFIRST/LSBFIRST +#define SPI_BITORDER_MSBFIRST MSBFIRST +#define SPI_BITORDER_LSBFIRST LSBFIRST +typedef BitOrder BusIOBitOrder; +#endif + +#if defined(__IMXRT1062__) // Teensy 4.x +// *Warning* I disabled the usage of FAST_PINIO as the set/clear operations +// used in the cpp file are not atomic and can effect multiple IO pins +// and if an interrupt happens in between the time the code reads the register +// and writes out the updated value, that changes one or more other IO pins +// on that same IO port, those change will be clobbered when the updated +// values are written back. A fast version can be implemented that uses the +// ports set and clear registers which are atomic. +// typedef volatile uint32_t BusIO_PortReg; +// typedef uint32_t BusIO_PortMask; +// #define BUSIO_USE_FAST_PINIO + +#elif defined(__MBED__) || defined(__ZEPHYR__) +// Boards based on RTOS cores like mbed or Zephyr are not going to expose the +// low level registers needed for fast pin manipulation +#undef BUSIO_USE_FAST_PINIO + +#elif defined(ARDUINO_ARCH_XMC) +#undef BUSIO_USE_FAST_PINIO + +#elif defined(__AVR__) || defined(TEENSYDUINO) +typedef volatile uint8_t BusIO_PortReg; +typedef uint8_t BusIO_PortMask; +#define BUSIO_USE_FAST_PINIO + +#elif defined(ESP8266) || defined(ESP32) || defined(__SAM3X8E__) || \ + defined(ARDUINO_ARCH_SAMD) +typedef volatile uint32_t BusIO_PortReg; +typedef uint32_t BusIO_PortMask; +#define BUSIO_USE_FAST_PINIO + +#elif (defined(__arm__) || defined(ARDUINO_FEATHER52)) && \ + !defined(ARDUINO_ARCH_RP2040) && !defined(ARDUINO_SILABS) && \ + !defined(ARDUINO_UNOR4_MINIMA) && !defined(ARDUINO_UNOR4_WIFI) && \ + !defined(PORTDUINO) +typedef volatile uint32_t BusIO_PortReg; +typedef uint32_t BusIO_PortMask; +#if !defined(__ASR6501__) && !defined(__ASR6502__) +#define BUSIO_USE_FAST_PINIO +#endif + +#else +#undef BUSIO_USE_FAST_PINIO +#endif + +/**! The class which defines how we will talk to this device over SPI **/ +class Adafruit_SPIDevice { +public: +#ifdef BUSIO_HAS_HW_SPI + Adafruit_SPIDevice(int8_t cspin, uint32_t freq = 1000000, + BusIOBitOrder dataOrder = SPI_BITORDER_MSBFIRST, + uint8_t dataMode = SPI_MODE0, SPIClass *theSPI = &SPI); +#else + Adafruit_SPIDevice(int8_t cspin, uint32_t freq = 1000000, + BusIOBitOrder dataOrder = SPI_BITORDER_MSBFIRST, + uint8_t dataMode = SPI_MODE0, SPIClass *theSPI = nullptr); +#endif + Adafruit_SPIDevice(int8_t cspin, int8_t sck, int8_t miso, int8_t mosi, + uint32_t freq = 1000000, + BusIOBitOrder dataOrder = SPI_BITORDER_MSBFIRST, + uint8_t dataMode = SPI_MODE0); + ~Adafruit_SPIDevice(); + + bool begin(void); + bool read(uint8_t *buffer, size_t len, uint8_t sendvalue = 0xFF); + bool write(const uint8_t *buffer, size_t len, + const uint8_t *prefix_buffer = nullptr, size_t prefix_len = 0); + bool write_then_read(const uint8_t *write_buffer, size_t write_len, + uint8_t *read_buffer, size_t read_len, + uint8_t sendvalue = 0xFF); + bool write_and_read(uint8_t *buffer, size_t len); + + uint8_t transfer(uint8_t send); + void transfer(uint8_t *buffer, size_t len); + void beginTransaction(void); + void endTransaction(void); + void beginTransactionWithAssertingCS(); + void endTransactionWithDeassertingCS(); + +private: +#ifdef BUSIO_HAS_HW_SPI + SPIClass *_spi = nullptr; + SPISettings *_spiSetting = nullptr; +#else + uint8_t *_spi = nullptr; + uint8_t *_spiSetting = nullptr; +#endif + uint32_t _freq; + BusIOBitOrder _dataOrder; + uint8_t _dataMode; + void setChipSelect(int value); + + int8_t _cs, _sck, _mosi, _miso; +#ifdef BUSIO_USE_FAST_PINIO + BusIO_PortReg *mosiPort, *clkPort, *misoPort, *csPort; + BusIO_PortMask mosiPinMask, misoPinMask, clkPinMask, csPinMask; +#endif + bool _begun; +}; + +#endif // Adafruit_SPIDevice_h diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/CMakeLists.txt b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/CMakeLists.txt new file mode 100644 index 0000000..3fcb0b8 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/CMakeLists.txt @@ -0,0 +1,11 @@ +# Adafruit Bus IO Library +# https://github.com/adafruit/Adafruit_BusIO +# MIT License + +cmake_minimum_required(VERSION 3.5) + +idf_component_register(SRCS "Adafruit_I2CDevice.cpp" "Adafruit_BusIO_Register.cpp" "Adafruit_SPIDevice.cpp" "Adafruit_GenericDevice.cpp" + INCLUDE_DIRS "." + REQUIRES arduino-esp32) + +project(Adafruit_BusIO) diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/LICENSE b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/LICENSE new file mode 100644 index 0000000..860e3e2 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2017 Adafruit Industries + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/README.md b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/README.md new file mode 100644 index 0000000..59712ff --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/README.md @@ -0,0 +1,8 @@ +# Adafruit Bus IO Library [![Build Status](https://github.com/adafruit/Adafruit_BusIO/workflows/Arduino%20Library%20CI/badge.svg)](https://github.com/adafruit/Adafruit_BusIO/actions) + + +This is a helper library to abstract away I2C, SPI, and 'generic transport' (e.g. UART) transactions and registers + +Adafruit invests time and resources providing this open source code, please support Adafruit and open-source hardware by purchasing products from Adafruit! + +MIT license, all text above must be included in any redistribution diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/component.mk b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/component.mk new file mode 100644 index 0000000..049f190 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/component.mk @@ -0,0 +1 @@ +COMPONENT_ADD_INCLUDEDIRS = . diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/examples/genericdevice_uartregtest/.uno.test.skip b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/examples/genericdevice_uartregtest/.uno.test.skip new file mode 100644 index 0000000..e69de29 diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/examples/genericdevice_uartregtest/genericdevice_uartregtest.ino b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/examples/genericdevice_uartregtest/genericdevice_uartregtest.ino new file mode 100644 index 0000000..59af308 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/examples/genericdevice_uartregtest/genericdevice_uartregtest.ino @@ -0,0 +1,219 @@ +/* + Advanced example of using bstracted transport for reading and writing + register data from a UART-based device such as a TMC2209 + + Written with help by Claude! + https://claude.ai/chat/335f50b1-3dd8-435e-9139-57ec7ca26a3c (at this time + chats are not shareable :( +*/ + +#include "Adafruit_BusIO_Register.h" +#include "Adafruit_GenericDevice.h" + +// Debugging macros +#define DEBUG_SERIAL Serial + +#ifdef DEBUG_SERIAL +#define DEBUG_PRINT(x) DEBUG_SERIAL.print(x) +#define DEBUG_PRINTLN(x) DEBUG_SERIAL.println(x) +#define DEBUG_PRINT_HEX(x) \ + do { \ + if (x < 0x10) \ + DEBUG_SERIAL.print('0'); \ + DEBUG_SERIAL.print(x, HEX); \ + DEBUG_SERIAL.print(' '); \ + } while (0) +#else +#define DEBUG_PRINT(x) +#define DEBUG_PRINTLN(x) +#define DEBUG_PRINT_HEX(x) +#endif + +#define TMC2209_IOIN 0x06 + +class TMC2209_UART { +private: + Stream *_uart_stream; + uint8_t _addr; + + static bool uart_read(void *thiz, uint8_t *buffer, size_t len) { + TMC2209_UART *dev = (TMC2209_UART *)thiz; + uint16_t timeout = 100; + while (dev->_uart_stream->available() < len && timeout--) { + delay(1); + } + if (timeout == 0) { + DEBUG_PRINTLN("Read timeout!"); + return false; + } + + DEBUG_PRINT("Reading: "); + for (size_t i = 0; i < len; i++) { + buffer[i] = dev->_uart_stream->read(); + DEBUG_PRINT_HEX(buffer[i]); + } + DEBUG_PRINTLN(""); + + return true; + } + + static bool uart_write(void *thiz, const uint8_t *buffer, size_t len) { + TMC2209_UART *dev = (TMC2209_UART *)thiz; + DEBUG_PRINT("Writing: "); + for (size_t i = 0; i < len; i++) { + DEBUG_PRINT_HEX(buffer[i]); + } + DEBUG_PRINTLN(""); + + dev->_uart_stream->write(buffer, len); + return true; + } + + static bool uart_readreg(void *thiz, uint8_t *addr_buf, uint8_t addrsiz, + uint8_t *data, uint16_t datalen) { + TMC2209_UART *dev = (TMC2209_UART *)thiz; + while (dev->_uart_stream->available()) + dev->_uart_stream->read(); + + uint8_t packet[4] = {0x05, uint8_t(dev->_addr << 1), addr_buf[0], 0x00}; + + packet[3] = calcCRC(packet, 3); + if (!uart_write(thiz, packet, 4)) + return false; + + // Read back echo + uint8_t echo[4]; + if (!uart_read(thiz, echo, 4)) + return false; + + // Verify echo + for (uint8_t i = 0; i < 4; i++) { + if (echo[i] != packet[i]) { + DEBUG_PRINTLN("Echo mismatch"); + return false; + } + } + + uint8_t response[8]; // sync + 0xFF + reg + 4 data bytes + CRC + if (!uart_read(thiz, response, 8)) + return false; + + // Verify response + if (response[0] != 0x05) { + DEBUG_PRINTLN("Invalid sync byte"); + return false; + } + + if (response[1] != 0xFF) { + DEBUG_PRINTLN("Invalid reply address"); + return false; + } + + if (response[2] != addr_buf[0]) { + DEBUG_PRINTLN("Register mismatch"); + return false; + } + + uint8_t crc = calcCRC(response, 7); + if (crc != response[7]) { + DEBUG_PRINTLN("CRC mismatch"); + return false; + } + + memcpy(data, &response[3], 4); + return true; + } + + static bool uart_writereg(void *thiz, uint8_t *addr_buf, uint8_t addrsiz, + const uint8_t *data, uint16_t datalen) { + TMC2209_UART *dev = (TMC2209_UART *)thiz; + while (dev->_uart_stream->available()) + dev->_uart_stream->read(); + + uint8_t packet[8] = {0x05, + uint8_t(dev->_addr << 1), + uint8_t(addr_buf[0] | 0x80), + data[0], + data[1], + data[2], + data[3], + 0x00}; + + packet[7] = calcCRC(packet, 7); + if (!uart_write(thiz, packet, 8)) + return false; + + uint8_t echo[8]; + if (!uart_read(thiz, echo, 8)) + return false; + + for (uint8_t i = 0; i < 8; i++) { + if (echo[i] != packet[i]) { + DEBUG_PRINTLN("Write echo mismatch"); + return false; + } + } + + return true; + } + + static uint8_t calcCRC(uint8_t *data, uint8_t length) { + uint8_t crc = 0; + for (uint8_t i = 0; i < length; i++) { + uint8_t currentByte = data[i]; + for (uint8_t j = 0; j < 8; j++) { + if ((crc >> 7) ^ (currentByte & 0x01)) { + crc = (crc << 1) ^ 0x07; + } else { + crc = crc << 1; + } + currentByte = currentByte >> 1; + } + } + return crc; + } + +public: + TMC2209_UART(Stream *serial, uint8_t addr) + : _uart_stream(serial), _addr(addr) {} + + Adafruit_GenericDevice *createDevice() { + return new Adafruit_GenericDevice(this, uart_read, uart_write, uart_readreg, + uart_writereg); + } +}; + +void setup() { + Serial.begin(115200); + while (!Serial) + ; + delay(100); + Serial.println("TMC2209 Generic Device register read/write test!"); + + Serial1.begin(115200); + + TMC2209_UART uart(&Serial1, 0); + Adafruit_GenericDevice *device = uart.createDevice(); + device->begin(); + + // Create register object for IOIN + Adafruit_BusIO_Register ioin_reg(device, + TMC2209_IOIN, // device and register address + 4, // width = 4 bytes + MSBFIRST, // byte order + 1); // address width = 1 byte + Serial.print("IOIN = 0x"); + Serial.println(ioin_reg.read(), HEX); + + // Create RegisterBits for VERSION field (bits 31:24) + Adafruit_BusIO_RegisterBits version_bits( + &ioin_reg, 8, 24); // 8 bits wide, starting at bit 24 + + Serial.println("Reading VERSION..."); + uint8_t version = version_bits.read(); + + Serial.print("VERSION = 0x"); + Serial.println(version, HEX); +} + +void loop() { delay(1000); } \ No newline at end of file diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/examples/genericdevice_uarttest/.uno.test.skip b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/examples/genericdevice_uarttest/.uno.test.skip new file mode 100644 index 0000000..e69de29 diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/examples/genericdevice_uarttest/genericdevice_uarttest.ino b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/examples/genericdevice_uarttest/genericdevice_uarttest.ino new file mode 100644 index 0000000..6a11dbf --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/examples/genericdevice_uarttest/genericdevice_uarttest.ino @@ -0,0 +1,98 @@ +/* + Abstracted transport for reading and writing data from a UART-based + device such as a TMC2209 + + Written with help by Claude! + https://claude.ai/chat/335f50b1-3dd8-435e-9139-57ec7ca26a3c (at this time + chats are not shareable :( +*/ + +#include "Adafruit_GenericDevice.h" + +/** + * Basic UART device class that demonstrates using GenericDevice with a Stream + * interface. This example shows how to wrap a Stream (like HardwareSerial or + * SoftwareSerial) with read/write callbacks that can be used by BusIO's + * register functions. + */ +class UARTDevice { +public: + UARTDevice(Stream *serial) : _serial(serial) {} + + // Static callback for writing data to UART + // Called by GenericDevice when data needs to be sent + static bool uart_write(void *thiz, const uint8_t *buffer, size_t len) { + UARTDevice *dev = (UARTDevice *)thiz; + dev->_serial->write(buffer, len); + return true; + } + + // Static callback for reading data from UART + // Includes timeout and will return false if not enough data available + static bool uart_read(void *thiz, uint8_t *buffer, size_t len) { + UARTDevice *dev = (UARTDevice *)thiz; + uint16_t timeout = 100; + while (dev->_serial->available() < len && timeout--) { + delay(1); + } + if (timeout == 0) { + return false; + } + for (size_t i = 0; i < len; i++) { + buffer[i] = dev->_serial->read(); + } + return true; + } + + // Create a GenericDevice instance using our callbacks + Adafruit_GenericDevice *createDevice() { + return new Adafruit_GenericDevice(this, uart_read, uart_write); + } + +private: + Stream *_serial; // Underlying Stream instance (HardwareSerial, etc) +}; + +void setup() { + Serial.begin(115200); + while (!Serial) + ; + delay(100); + + Serial.println("Generic Device test!"); + + // Initialize UART for device communication + Serial1.begin(115200); + + // Create UART wrapper and BusIO device + UARTDevice uart(&Serial1); + Adafruit_GenericDevice *device = uart.createDevice(); + device->begin(); + + // Test write/read cycle + uint8_t write_buf[4] = {0x5, 0x0, 0x0, 0x48}; + uint8_t read_buf[8]; + + Serial.println("Writing data..."); + if (!device->write(write_buf, 4)) { + Serial.println("Write failed!"); + return; + } + + Serial.println("Reading response..."); + if (!device->read(read_buf, 8)) { + Serial.println("Read failed!"); + return; + } + + // Print response bytes + Serial.print("Got response: "); + for (int i = 0; i < 8; i++) { + Serial.print("0x"); + Serial.print(read_buf[i], HEX); + Serial.print(" "); + } + Serial.println(); +} + +void loop() { delay(1000); } \ No newline at end of file diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/examples/i2c_address_detect/i2c_address_detect.ino b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/examples/i2c_address_detect/i2c_address_detect.ino new file mode 100644 index 0000000..f2e6ba7 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/examples/i2c_address_detect/i2c_address_detect.ino @@ -0,0 +1,22 @@ +#include + +Adafruit_I2CDevice i2c_dev = Adafruit_I2CDevice(0x10); + +void setup() { + while (!Serial) { + delay(10); + } + Serial.begin(115200); + Serial.println("I2C address detection test"); + + if (!i2c_dev.begin()) { + Serial.print("Did not find device at 0x"); + Serial.println(i2c_dev.address(), HEX); + while (1) + ; + } + Serial.print("Device found on address 0x"); + Serial.println(i2c_dev.address(), HEX); +} + +void loop() {} diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/examples/i2c_readwrite/i2c_readwrite.ino b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/examples/i2c_readwrite/i2c_readwrite.ino new file mode 100644 index 0000000..4ac2626 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/examples/i2c_readwrite/i2c_readwrite.ino @@ -0,0 +1,45 @@ +#include + +#define I2C_ADDRESS 0x60 +Adafruit_I2CDevice i2c_dev = Adafruit_I2CDevice(I2C_ADDRESS); + +void setup() { + while (!Serial) { + delay(10); + } + Serial.begin(115200); + Serial.println("I2C device read and write test"); + + if (!i2c_dev.begin()) { + Serial.print("Did not find device at 0x"); + Serial.println(i2c_dev.address(), HEX); + while (1) + ; + } + Serial.print("Device found on address 0x"); + Serial.println(i2c_dev.address(), HEX); + + uint8_t buffer[32]; + // Try to read 32 bytes + i2c_dev.read(buffer, 32); + Serial.print("Read: "); + for (uint8_t i = 0; i < 32; i++) { + Serial.print("0x"); + Serial.print(buffer[i], HEX); + Serial.print(", "); + } + Serial.println(); + + // read a register by writing first, then reading + buffer[0] = 0x0C; // we'll reuse the same buffer + i2c_dev.write_then_read(buffer, 1, buffer, 2, false); + Serial.print("Write then Read: "); + for (uint8_t i = 0; i < 2; i++) { + Serial.print("0x"); + Serial.print(buffer[i], HEX); + Serial.print(", "); + } + Serial.println(); +} + +void loop() {} diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/examples/i2c_registers/i2c_registers.ino b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/examples/i2c_registers/i2c_registers.ino new file mode 100644 index 0000000..2d44c83 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/examples/i2c_registers/i2c_registers.ino @@ -0,0 +1,43 @@ +#include +#include + +#define I2C_ADDRESS 0x60 +Adafruit_I2CDevice i2c_dev = Adafruit_I2CDevice(I2C_ADDRESS); + +void setup() { + while (!Serial) { + delay(10); + } + Serial.begin(115200); + Serial.println("I2C device register test"); + + if (!i2c_dev.begin()) { + Serial.print("Did not find device at 0x"); + Serial.println(i2c_dev.address(), HEX); + while (1) + ; + } + Serial.print("Device found on address 0x"); + Serial.println(i2c_dev.address(), HEX); + + Adafruit_BusIO_Register id_reg = + Adafruit_BusIO_Register(&i2c_dev, 0x0C, 2, LSBFIRST); + uint16_t id; + id_reg.read(&id); + Serial.print("ID register = 0x"); + Serial.println(id, HEX); + + Adafruit_BusIO_Register thresh_reg = + Adafruit_BusIO_Register(&i2c_dev, 0x01, 2, LSBFIRST); + uint16_t thresh; + thresh_reg.read(&thresh); + Serial.print("Initial threshold register = 0x"); + Serial.println(thresh, HEX); + + thresh_reg.write(~thresh); + + Serial.print("Post threshold register = 0x"); + Serial.println(thresh_reg.read(), HEX); +} + +void loop() {} \ No newline at end of file diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/examples/i2corspi_register/i2corspi_register.ino b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/examples/i2corspi_register/i2corspi_register.ino new file mode 100644 index 0000000..be04606 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/examples/i2corspi_register/i2corspi_register.ino @@ -0,0 +1,40 @@ +#include + +// Define which interface to use by setting the unused interface to NULL! + +#define SPIDEVICE_CS 10 +Adafruit_SPIDevice *spi_dev = NULL; // new Adafruit_SPIDevice(SPIDEVICE_CS); + +#define I2C_ADDRESS 0x5D +Adafruit_I2CDevice *i2c_dev = new Adafruit_I2CDevice(I2C_ADDRESS); + +void setup() { + while (!Serial) { + delay(10); + } + Serial.begin(115200); + Serial.println("I2C or SPI device register test"); + + if (spi_dev && !spi_dev->begin()) { + Serial.println("Could not initialize SPI device"); + } + + if (i2c_dev) { + if (i2c_dev->begin()) { + Serial.print("Device found on I2C address 0x"); + Serial.println(i2c_dev->address(), HEX); + } else { + Serial.print("Did not find I2C device at 0x"); + Serial.println(i2c_dev->address(), HEX); + } + } + + Adafruit_BusIO_Register id_reg = + Adafruit_BusIO_Register(i2c_dev, spi_dev, ADDRBIT8_HIGH_TOREAD, 0x0F); + uint8_t id = 0; + id_reg.read(&id); + Serial.print("ID register = 0x"); + Serial.println(id, HEX); +} + +void loop() {} diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/examples/spi_modetest/spi_modetest.ino b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/examples/spi_modetest/spi_modetest.ino new file mode 100644 index 0000000..ebf14f9 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/examples/spi_modetest/spi_modetest.ino @@ -0,0 +1,35 @@ +#include + +#define SPIDEVICE_CS 10 +Adafruit_SPIDevice spi_dev = + Adafruit_SPIDevice(SPIDEVICE_CS, 100000, SPI_BITORDER_MSBFIRST, SPI_MODE1); +// Adafruit_SPIDevice spi_dev = Adafruit_SPIDevice(SPIDEVICE_CS, 13, 12, 11, +// 100000, SPI_BITORDER_MSBFIRST, SPI_MODE1); + +void setup() { + while (!Serial) { + delay(10); + } + Serial.begin(115200); + Serial.println("SPI device mode test"); + + if (!spi_dev.begin()) { + Serial.println("Could not initialize SPI device"); + while (1) + ; + } +} + +void loop() { + Serial.println("\n\nTransfer test"); + for (uint16_t x = 0; x <= 0xFF; x++) { + uint8_t i = x; + Serial.print("0x"); + Serial.print(i, HEX); + spi_dev.read(&i, 1, i); + Serial.print("/"); + Serial.print(i, HEX); + Serial.print(", "); + delay(25); + } +} \ No newline at end of file diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/examples/spi_readwrite/spi_readwrite.ino b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/examples/spi_readwrite/spi_readwrite.ino new file mode 100644 index 0000000..4b9ecf1 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/examples/spi_readwrite/spi_readwrite.ino @@ -0,0 +1,43 @@ +#include + +#define SPIDEVICE_CS 10 +Adafruit_SPIDevice spi_dev = Adafruit_SPIDevice(SPIDEVICE_CS); + +void setup() { + while (!Serial) { + delay(10); + } + Serial.begin(115200); + Serial.println("SPI device read and write test"); + + if (!spi_dev.begin()) { + Serial.println("Could not initialize SPI device"); + while (1) + ; + } + + uint8_t buffer[32]; + + // Try to read 32 bytes + spi_dev.read(buffer, 32); + Serial.print("Read: "); + for (uint8_t i = 0; i < 32; i++) { + Serial.print("0x"); + Serial.print(buffer[i], HEX); + Serial.print(", "); + } + Serial.println(); + + // read a register by writing first, then reading + buffer[0] = 0x8F; // we'll reuse the same buffer + spi_dev.write_then_read(buffer, 1, buffer, 2, false); + Serial.print("Write then Read: "); + for (uint8_t i = 0; i < 2; i++) { + Serial.print("0x"); + Serial.print(buffer[i], HEX); + Serial.print(", "); + } + Serial.println(); +} + +void loop() {} diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/examples/spi_register_bits/spi_register_bits.ino b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/examples/spi_register_bits/spi_register_bits.ino new file mode 100644 index 0000000..d11b440 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/examples/spi_register_bits/spi_register_bits.ino @@ -0,0 +1,268 @@ +/*************************************************** + + This is an example for how to use Adafruit_BusIO_RegisterBits from + Adafruit_BusIO library. + + Designed specifically to work with the Adafruit RTD Sensor + ----> https://www.adafruit.com/products/3328 + uisng a MAX31865 RTD-to-Digital Converter + ----> https://datasheets.maximintegrated.com/en/ds/MAX31865.pdf + + This sensor uses SPI to communicate, 4 pins are required to + interface. + A fifth pin helps to detect when a new conversion is ready. + + Adafruit invests time and resources providing this open source code, + please support Adafruit and open-source hardware by purchasing + products from Adafruit! + + Example written (2020/3) by Andreas Hardtung/AnHard. + BSD license, all text above must be included in any redistribution + ****************************************************/ + +#include +#include + +#define MAX31865_SPI_SPEED (5000000) +#define MAX31865_SPI_BITORDER (SPI_BITORDER_MSBFIRST) +#define MAX31865_SPI_MODE (SPI_MODE1) + +#define MAX31865_SPI_CS (10) +#define MAX31865_READY_PIN (2) + +Adafruit_SPIDevice spi_dev = Adafruit_SPIDevice( + MAX31865_SPI_CS, MAX31865_SPI_SPEED, MAX31865_SPI_BITORDER, + MAX31865_SPI_MODE, &SPI); // Hardware SPI +// Adafruit_SPIDevice spi_dev = Adafruit_SPIDevice( MAX31865_SPI_CS, 13, 12, 11, +// MAX31865_SPI_SPEED, MAX31865_SPI_BITORDER, MAX31865_SPI_MODE); // Software +// SPI + +// MAX31865 chip related +// ********************************************************************************************* +Adafruit_BusIO_Register config_reg = + Adafruit_BusIO_Register(&spi_dev, 0x00, ADDRBIT8_HIGH_TOWRITE, 1, MSBFIRST); +Adafruit_BusIO_RegisterBits bias_bit = + Adafruit_BusIO_RegisterBits(&config_reg, 1, 7); +Adafruit_BusIO_RegisterBits auto_bit = + Adafruit_BusIO_RegisterBits(&config_reg, 1, 6); +Adafruit_BusIO_RegisterBits oneS_bit = + Adafruit_BusIO_RegisterBits(&config_reg, 1, 5); +Adafruit_BusIO_RegisterBits wire_bit = + Adafruit_BusIO_RegisterBits(&config_reg, 1, 4); +Adafruit_BusIO_RegisterBits faultT_bits = + Adafruit_BusIO_RegisterBits(&config_reg, 2, 2); +Adafruit_BusIO_RegisterBits faultR_bit = + Adafruit_BusIO_RegisterBits(&config_reg, 1, 1); +Adafruit_BusIO_RegisterBits fi50hz_bit = + Adafruit_BusIO_RegisterBits(&config_reg, 1, 0); + +Adafruit_BusIO_Register rRatio_reg = + Adafruit_BusIO_Register(&spi_dev, 0x01, ADDRBIT8_HIGH_TOWRITE, 2, MSBFIRST); +Adafruit_BusIO_RegisterBits rRatio_bits = + Adafruit_BusIO_RegisterBits(&rRatio_reg, 15, 1); +Adafruit_BusIO_RegisterBits fault_bit = + Adafruit_BusIO_RegisterBits(&rRatio_reg, 1, 0); + +Adafruit_BusIO_Register maxRratio_reg = + Adafruit_BusIO_Register(&spi_dev, 0x03, ADDRBIT8_HIGH_TOWRITE, 2, MSBFIRST); +Adafruit_BusIO_RegisterBits maxRratio_bits = + Adafruit_BusIO_RegisterBits(&maxRratio_reg, 15, 1); + +Adafruit_BusIO_Register minRratio_reg = + Adafruit_BusIO_Register(&spi_dev, 0x05, ADDRBIT8_HIGH_TOWRITE, 2, MSBFIRST); +Adafruit_BusIO_RegisterBits minRratio_bits = + Adafruit_BusIO_RegisterBits(&minRratio_reg, 15, 1); + +Adafruit_BusIO_Register fault_reg = + Adafruit_BusIO_Register(&spi_dev, 0x07, ADDRBIT8_HIGH_TOWRITE, 1, MSBFIRST); +Adafruit_BusIO_RegisterBits range_high_fault_bit = + Adafruit_BusIO_RegisterBits(&fault_reg, 1, 7); +Adafruit_BusIO_RegisterBits range_low_fault_bit = + Adafruit_BusIO_RegisterBits(&fault_reg, 1, 6); +Adafruit_BusIO_RegisterBits refin_high_fault_bit = + Adafruit_BusIO_RegisterBits(&fault_reg, 1, 5); +Adafruit_BusIO_RegisterBits refin_low_fault_bit = + Adafruit_BusIO_RegisterBits(&fault_reg, 1, 4); +Adafruit_BusIO_RegisterBits rtdin_low_fault_bit = + Adafruit_BusIO_RegisterBits(&fault_reg, 1, 3); +Adafruit_BusIO_RegisterBits voltage_fault_bit = + Adafruit_BusIO_RegisterBits(&fault_reg, 1, 2); + +// Print the details of the configuration register. +void printConfig(void) { + Serial.print("BIAS: "); + if (bias_bit.read()) + Serial.print("ON"); + else + Serial.print("OFF"); + Serial.print(", AUTO: "); + if (auto_bit.read()) + Serial.print("ON"); + else + Serial.print("OFF"); + Serial.print(", ONES: "); + if (oneS_bit.read()) + Serial.print("ON"); + else + Serial.print("OFF"); + Serial.print(", WIRE: "); + if (wire_bit.read()) + Serial.print("3"); + else + Serial.print("2/4"); + Serial.print(", FAULTCLEAR: "); + if (faultR_bit.read()) + Serial.print("ON"); + else + Serial.print("OFF"); + Serial.print(", "); + if (fi50hz_bit.read()) + Serial.print("50HZ"); + else + Serial.print("60HZ"); + Serial.println(); +} + +// Check and print faults. Then clear them. +void checkFaults(void) { + if (fault_bit.read()) { + Serial.print("MAX: "); + Serial.println(maxRratio_bits.read()); + Serial.print("VAL: "); + Serial.println(rRatio_bits.read()); + Serial.print("MIN: "); + Serial.println(minRratio_bits.read()); + + if (range_high_fault_bit.read()) + Serial.println("Range high fault"); + if (range_low_fault_bit.read()) + Serial.println("Range low fault"); + if (refin_high_fault_bit.read()) + Serial.println("REFIN high fault"); + if (refin_low_fault_bit.read()) + Serial.println("REFIN low fault"); + if (rtdin_low_fault_bit.read()) + Serial.println("RTDIN low fault"); + if (voltage_fault_bit.read()) + Serial.println("Voltage fault"); + + faultR_bit.write(1); // clear fault + } +} + +void setup() { +#if (MAX31865_1_READY_PIN != -1) + pinMode(MAX31865_READY_PIN, INPUT_PULLUP); +#endif + + while (!Serial) { + delay(10); + } + Serial.begin(115200); + Serial.println("SPI Adafruit_BusIO_RegisterBits test on MAX31865"); + + if (!spi_dev.begin()) { + Serial.println("Could not initialize SPI device"); + while (1) + ; + } + + // Set up for automode 50Hz. We don't care about selfheating. We want the + // highest possible sampling rate. + auto_bit.write(0); // Don't switch filtermode while auto_mode is on. + fi50hz_bit.write(1); // Set filter to 50Hz mode. + faultR_bit.write(1); // Clear faults. + bias_bit.write(1); // In automode we want to have the bias current always on. + delay(5); // Wait until bias current settles down. + // 10.5 time constants of the input RC network is required. + // 10ms worst case for 10kω reference resistor and a 0.1µF capacitor + // across the RTD inputs. Adafruit Module has 0.1µF and only + // 430/4300ω So here 0.43/4.3ms + auto_bit.write( + 1); // Now we can set automode. Automatically starting first conversion. + +// Test the READY_PIN +#if (defined(MAX31865_READY_PIN) && (MAX31865_READY_PIN != -1)) + int i = 0; + while (digitalRead(MAX31865_READY_PIN) && i++ <= 100) { + delay(1); + } + if (i >= 100) { + Serial.print("ERROR: Max31865 Pin detection does not work. PIN:"); + Serial.println(MAX31865_READY_PIN); + } +#else + delay(100); +#endif + + // Set ratio range. + // Setting the temperatures would need some more calculation - not related to + // Adafruit_BusIO_RegisterBits. + uint16_t ratio = rRatio_bits.read(); + maxRratio_bits.write((ratio < 0x8fffu - 1000u) ? ratio + 1000u : 0x8fffu); + minRratio_bits.write((ratio > 1000u) ? ratio - 1000u : 0u); + + printConfig(); + checkFaults(); +} + +void loop() { +#if (defined(MAX31865_READY_PIN) && (MAX31865_1_READY_PIN != -1)) + // Is conversion ready? + if (!digitalRead(MAX31865_READY_PIN)) +#else + // Warant conversion is ready. + delay(21); // 21ms for 50Hz-mode. 19ms in 60Hz-mode. +#endif + { + // Read ratio, calculate temperature, scale, filter and print. + Serial.println(rRatio2C(rRatio_bits.read()) * 100.0f, + 0); // Temperature scaled by 100 + // Check, print, clear faults. + checkFaults(); + } + + // Do something else. + // delay(15000); +} + +// Module/Sensor related. Here Adafruit PT100 module with a 2_Wire PT100 Class C +// ***************************** +float rRatio2C(uint16_t ratio) { + // A simple linear conversion. + const float R0 = 100.0f; + const float Rref = 430.0f; + const float alphaPT = 0.003850f; + const float ADCmax = (1u << 15) - 1.0f; + const float rscale = Rref / ADCmax; + // Measured temperature in boiling water 101.08°C with factor a = 1 and b = 0. + // Rref and MAX at about 22±2°C. Measured temperature in ice/water bath 0.76°C + // with factor a = 1 and b = 0. Rref and MAX at about 22±2°C. + // const float a = 1.0f / (alphaPT * R0); + const float a = (100.0f / 101.08f) / (alphaPT * R0); + // const float b = 0.0f; // 101.08 + const float b = -0.76f; // 100.32 > 101.08 + + return filterRing(((ratio * rscale) - R0) * a + b); +} + +// General purpose +// ********************************************************************************************* +#define RINGLENGTH 250 +float filterRing(float newVal) { + static float ring[RINGLENGTH] = {0.0}; + static uint8_t ringIndex = 0; + static bool ringFull = false; + + if (ringIndex == RINGLENGTH) { + ringFull = true; + ringIndex = 0; + } + ring[ringIndex] = newVal; + uint8_t loopEnd = (ringFull) ? RINGLENGTH : ringIndex + 1; + float ringSum = 0.0f; + for (uint8_t i = 0; i < loopEnd; i++) + ringSum += ring[i]; + ringIndex++; + return ringSum / loopEnd; +} diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/examples/spi_registers/spi_registers.ino b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/examples/spi_registers/spi_registers.ino new file mode 100644 index 0000000..af6069b --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/examples/spi_registers/spi_registers.ino @@ -0,0 +1,40 @@ +#include +#include + +#define SPIDEVICE_CS 10 +Adafruit_SPIDevice spi_dev = Adafruit_SPIDevice(SPIDEVICE_CS); + +void setup() { + while (!Serial) { + delay(10); + } + Serial.begin(115200); + Serial.println("SPI device register test"); + + if (!spi_dev.begin()) { + Serial.println("Could not initialize SPI device"); + while (1) + ; + } + + Adafruit_BusIO_Register id_reg = + Adafruit_BusIO_Register(&spi_dev, 0x0F, ADDRBIT8_HIGH_TOREAD); + uint8_t id = 0; + id_reg.read(&id); + Serial.print("ID register = 0x"); + Serial.println(id, HEX); + + Adafruit_BusIO_Register thresh_reg = Adafruit_BusIO_Register( + &spi_dev, 0x0C, ADDRBIT8_HIGH_TOREAD, 2, LSBFIRST); + uint16_t thresh = 0; + thresh_reg.read(&thresh); + Serial.print("Initial threshold register = 0x"); + Serial.println(thresh, HEX); + + thresh_reg.write(~thresh); + + Serial.print("Post threshold register = 0x"); + Serial.println(thresh_reg.read(), HEX); +} + +void loop() {} diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/library.properties b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/library.properties new file mode 100644 index 0000000..1615468 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit BusIO/library.properties @@ -0,0 +1,9 @@ +name=Adafruit BusIO +version=1.17.4 +author=Adafruit +maintainer=Adafruit +sentence=This is a library for abstracting away UART, I2C and SPI interfacing +paragraph=This is a library for abstracting away UART, I2C and SPI interfacing +category=Signal Input/Output +url=https://github.com/adafruit/Adafruit_BusIO +architectures=* diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/.clang-format b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/.clang-format new file mode 100644 index 0000000..e1b53a0 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/.clang-format @@ -0,0 +1,239 @@ +Language: Cpp +# BasedOnStyle: LLVM +AccessModifierOffset: -2 +AlignAfterOpenBracket: Align +AlignArrayOfStructures: None +AlignConsecutiveAssignments: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + PadOperators: true +AlignConsecutiveBitFields: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + PadOperators: false +AlignConsecutiveDeclarations: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + PadOperators: false +AlignConsecutiveMacros: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + PadOperators: false +AlignConsecutiveShortCaseStatements: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCaseColons: false +AlignEscapedNewlines: Right +AlignOperands: Align +AlignTrailingComments: + Kind: Always + OverEmptyLines: 0 +AllowAllArgumentsOnNextLine: true +AllowAllParametersOfDeclarationOnNextLine: true +AllowBreakBeforeNoexceptSpecifier: Never +AllowShortBlocksOnASingleLine: Never +AllowShortCaseLabelsOnASingleLine: false +AllowShortCompoundRequirementOnASingleLine: true +AllowShortEnumsOnASingleLine: true +AllowShortFunctionsOnASingleLine: All +AllowShortIfStatementsOnASingleLine: Never +AllowShortLambdasOnASingleLine: All +AllowShortLoopsOnASingleLine: false +AlwaysBreakAfterDefinitionReturnType: None +AlwaysBreakAfterReturnType: None +AlwaysBreakBeforeMultilineStrings: false +AlwaysBreakTemplateDeclarations: MultiLine +AttributeMacros: + - __capability +BinPackArguments: true +BinPackParameters: true +BitFieldColonSpacing: Both +BraceWrapping: + AfterCaseLabel: false + AfterClass: false + AfterControlStatement: Never + AfterEnum: false + AfterExternBlock: false + AfterFunction: false + AfterNamespace: false + AfterObjCDeclaration: false + AfterStruct: false + AfterUnion: false + BeforeCatch: false + BeforeElse: false + BeforeLambdaBody: false + BeforeWhile: false + IndentBraces: false + SplitEmptyFunction: true + SplitEmptyRecord: true + SplitEmptyNamespace: true +BreakAdjacentStringLiterals: true +BreakAfterAttributes: Leave +BreakAfterJavaFieldAnnotations: false +BreakArrays: true +BreakBeforeBinaryOperators: None +BreakBeforeConceptDeclarations: Always +BreakBeforeBraces: Attach +BreakBeforeInlineASMColon: OnlyMultiline +BreakBeforeTernaryOperators: true +BreakConstructorInitializers: BeforeColon +BreakInheritanceList: BeforeColon +BreakStringLiterals: true +ColumnLimit: 80 +CommentPragmas: '^ IWYU pragma:' +CompactNamespaces: false +ConstructorInitializerIndentWidth: 4 +ContinuationIndentWidth: 4 +Cpp11BracedListStyle: true +DerivePointerAlignment: false +DisableFormat: false +EmptyLineAfterAccessModifier: Never +EmptyLineBeforeAccessModifier: LogicalBlock +ExperimentalAutoDetectBinPacking: false +FixNamespaceComments: true +ForEachMacros: + - foreach + - Q_FOREACH + - BOOST_FOREACH +IfMacros: + - KJ_IF_MAYBE +IncludeBlocks: Preserve +IncludeCategories: + - Regex: '^"(llvm|llvm-c|clang|clang-c)/' + Priority: 2 + SortPriority: 0 + CaseSensitive: false + - Regex: '^(<|"(gtest|gmock|isl|json)/)' + Priority: 3 + SortPriority: 0 + CaseSensitive: false + - Regex: '.*' + Priority: 1 + SortPriority: 0 + CaseSensitive: false +IncludeIsMainRegex: '(Test)?$' +IncludeIsMainSourceRegex: '' +IndentAccessModifiers: false +IndentCaseBlocks: false +IndentCaseLabels: false +IndentExternBlock: AfterExternBlock +IndentGotoLabels: true +IndentPPDirectives: None +IndentRequiresClause: true +IndentWidth: 2 +IndentWrappedFunctionNames: false +InsertBraces: false +InsertNewlineAtEOF: false +InsertTrailingCommas: None +IntegerLiteralSeparator: + Binary: 0 + BinaryMinDigits: 0 + Decimal: 0 + DecimalMinDigits: 0 + Hex: 0 + HexMinDigits: 0 +JavaScriptQuotes: Leave +JavaScriptWrapImports: true +KeepEmptyLinesAtTheStartOfBlocks: true +KeepEmptyLinesAtEOF: false +LambdaBodyIndentation: Signature +LineEnding: DeriveLF +MacroBlockBegin: '' +MacroBlockEnd: '' +MaxEmptyLinesToKeep: 1 +NamespaceIndentation: None +ObjCBinPackProtocolList: Auto +ObjCBlockIndentWidth: 2 +ObjCBreakBeforeNestedBlockParam: true +ObjCSpaceAfterProperty: false +ObjCSpaceBeforeProtocolList: true +PackConstructorInitializers: BinPack +PenaltyBreakAssignment: 2 +PenaltyBreakBeforeFirstCallParameter: 19 +PenaltyBreakComment: 300 +PenaltyBreakFirstLessLess: 120 +PenaltyBreakOpenParenthesis: 0 +PenaltyBreakScopeResolution: 500 +PenaltyBreakString: 1000 +PenaltyBreakTemplateDeclaration: 10 +PenaltyExcessCharacter: 1000000 +PenaltyIndentedWhitespace: 0 +PenaltyReturnTypeOnItsOwnLine: 60 +PointerAlignment: Right +PPIndentWidth: -1 +QualifierAlignment: Leave +ReferenceAlignment: Pointer +ReflowComments: true +RemoveBracesLLVM: false +RemoveParentheses: Leave +RemoveSemicolon: false +RequiresClausePosition: OwnLine +RequiresExpressionIndentation: OuterScope +SeparateDefinitionBlocks: Leave +ShortNamespaceLines: 1 +SkipMacroDefinitionBody: false +SortIncludes: CaseSensitive +SortJavaStaticImport: Before +SortUsingDeclarations: LexicographicNumeric +SpaceAfterCStyleCast: false +SpaceAfterLogicalNot: false +SpaceAfterTemplateKeyword: true +SpaceAroundPointerQualifiers: Default +SpaceBeforeAssignmentOperators: true +SpaceBeforeCaseColon: false +SpaceBeforeCpp11BracedList: false +SpaceBeforeCtorInitializerColon: true +SpaceBeforeInheritanceColon: true +SpaceBeforeJsonColon: false +SpaceBeforeParens: ControlStatements +SpaceBeforeParensOptions: + AfterControlStatements: true + AfterForeachMacros: true + AfterFunctionDefinitionName: false + AfterFunctionDeclarationName: false + AfterIfMacros: true + AfterOverloadedOperator: false + AfterPlacementOperator: true + AfterRequiresInClause: false + AfterRequiresInExpression: false + BeforeNonEmptyParentheses: false +SpaceBeforeRangeBasedForLoopColon: true +SpaceBeforeSquareBrackets: false +SpaceInEmptyBlock: false +SpacesBeforeTrailingComments: 1 +SpacesInAngles: Never +SpacesInContainerLiterals: true +SpacesInLineCommentPrefix: + Minimum: 1 + Maximum: -1 +SpacesInParens: Never +SpacesInParensOptions: + InCStyleCasts: false + InConditionalStatements: false + InEmptyParentheses: false + Other: false +SpacesInSquareBrackets: false +Standard: Latest +StatementAttributeLikeMacros: + - Q_EMIT +StatementMacros: + - Q_UNUSED + - QT_REQUIRE_VERSION +TabWidth: 8 +UseTab: Never +VerilogBreakBetweenInstancePorts: true +WhitespaceSensitiveMacros: + - BOOST_PP_STRINGIZE + - CF_SWIFT_NAME + - NS_SWIFT_NAME + - PP_STRINGIZE + - STRINGIZE diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/.github/ISSUE_TEMPLATE.md b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/.github/ISSUE_TEMPLATE.md new file mode 100644 index 0000000..f0e2614 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,46 @@ +Thank you for opening an issue on an Adafruit Arduino library repository. To +improve the speed of resolution please review the following guidelines and +common troubleshooting steps below before creating the issue: + +- **Do not use GitHub issues for troubleshooting projects and issues.** Instead use + the forums at http://forums.adafruit.com to ask questions and troubleshoot why + something isn't working as expected. In many cases the problem is a common issue + that you will more quickly receive help from the forum community. GitHub issues + are meant for known defects in the code. If you don't know if there is a defect + in the code then start with troubleshooting on the forum first. + +- **If following a tutorial or guide be sure you didn't miss a step.** Carefully + check all of the steps and commands to run have been followed. Consult the + forum if you're unsure or have questions about steps in a guide/tutorial. + +- **For Arduino projects check these very common issues to ensure they don't apply**: + + - For uploading sketches or communicating with the board make sure you're using + a **USB data cable** and **not** a **USB charge-only cable**. It is sometimes + very hard to tell the difference between a data and charge cable! Try using the + cable with other devices or swapping to another cable to confirm it is not + the problem. + + - **Be sure you are supplying adequate power to the board.** Check the specs of + your board and plug in an external power supply. In many cases just + plugging a board into your computer is not enough to power it and other + peripherals. + + - **Double check all soldering joints and connections.** Flakey connections + cause many mysterious problems. See the [guide to excellent soldering](https://learn.adafruit.com/adafruit-guide-excellent-soldering/tools) for examples of good solder joints. + + - **Ensure you are using an official Arduino or Adafruit board.** We can't + guarantee a clone board will have the same functionality and work as expected + with this code and don't support them. + +If you're sure this issue is a defect in the code and checked the steps above +please fill in the following fields to provide enough troubleshooting information. +You may delete the guideline and text above to just leave the following details: + +- Arduino board: **INSERT ARDUINO BOARD NAME/TYPE HERE** + +- Arduino IDE version (found in Arduino -> About Arduino menu): **INSERT ARDUINO + VERSION HERE** + +- List the steps to reproduce the problem below (if possible attach a sketch or + copy the sketch code in too): **LIST REPRO STEPS BELOW** diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/.github/PULL_REQUEST_TEMPLATE.md b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..7b641eb --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,26 @@ +Thank you for creating a pull request to contribute to Adafruit's GitHub code! +Before you open the request please review the following guidelines and tips to +help it be more easily integrated: + +- **Describe the scope of your change--i.e. what the change does and what parts + of the code were modified.** This will help us understand any risks of integrating + the code. + +- **Describe any known limitations with your change.** For example if the change + doesn't apply to a supported platform of the library please mention it. + +- **Please run any tests or examples that can exercise your modified code.** We + strive to not break users of the code and running tests/examples helps with this + process. + +Thank you again for contributing! We will try to test and integrate the change +as soon as we can, but be aware we have many GitHub repositories to manage and +can't immediately respond to every request. There is no need to bump or check in +on a pull request (it will clutter the discussion of the request). + +Also don't be worried if the request is closed or not integrated--sometimes the +priorities of Adafruit's GitHub code (education, ease of use) might not match the +priorities of the pull request. Don't fret, the open source community thrives on +forks and GitHub makes it easy to keep your changes in a forked repo. + +After reviewing the guidelines above you can delete this text from the pull request. diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/.github/workflows/githubci.yml b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/.github/workflows/githubci.yml new file mode 100644 index 0000000..a04a162 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/.github/workflows/githubci.yml @@ -0,0 +1,36 @@ +name: Arduino Library CI + +on: [pull_request, push, repository_dispatch] + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/setup-python@v4 + with: + python-version: '3.x' + - uses: actions/checkout@v3 + - uses: actions/checkout@v3 + with: + repository: adafruit/ci-arduino + path: ci + + - name: pre-install + run: bash ci/actions_install.sh + + - name: extra libraries + run: | + git clone --quiet https://github.com/adafruit/Adafruit_ILI9341.git /home/runner/Arduino/libraries/Adafruit_ILI9341 + + - name: test platforms + run: python3 ci/build_platform.py main_platforms + + - name: clang + run: python3 ci/run-clang-format.py -e "ci/*" -e "bin/*" -r . + + - name: doxygen + env: + GH_REPO_TOKEN: ${{ secrets.GH_REPO_TOKEN }} + PRETTYNAME : "Adafruit GFX Library" + run: bash ci/doxy_gen_and_deploy.sh diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/.gitignore b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/.gitignore new file mode 100644 index 0000000..469bb73 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/.gitignore @@ -0,0 +1,6 @@ +default.vim +fontconvert/fontconvert +# Our handy .gitignore for automation ease +Doxyfile* +doxygen_sqlite3.db +html \ No newline at end of file diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/.piopm b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/.piopm new file mode 100644 index 0000000..9ed8464 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/.piopm @@ -0,0 +1 @@ +{"type": "library", "name": "Adafruit GFX Library", "version": "1.12.6", "spec": {"owner": "adafruit", "id": 13, "name": "Adafruit GFX Library", "requirements": null, "uri": null}} \ No newline at end of file diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Adafruit_GFX.cpp b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Adafruit_GFX.cpp new file mode 100644 index 0000000..ae26bf1 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Adafruit_GFX.cpp @@ -0,0 +1,2952 @@ +/* +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. + */ + +#include "Adafruit_GFX.h" +#include "glcdfont.c" +#ifdef __AVR__ +#include +#elif defined(ESP8266) || defined(ESP32) +#include +#endif + +// 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 + +inline GFXglyph *pgm_read_glyph_ptr(const GFXfont *gfxFont, uint8_t c) { +#ifdef __AVR__ + return &(((GFXglyph *)pgm_read_pointer(&gfxFont->glyph))[c]); +#else + // expression in __AVR__ section may generate "dereferencing type-punned + // pointer will break strict-aliasing rules" warning In fact, on other + // platforms (such as STM32) there is no need to do this pointer magic as + // program memory may be read in a usual way So expression may be simplified + return gfxFont->glyph + c; +#endif //__AVR__ +} + +inline uint8_t *pgm_read_bitmap_ptr(const GFXfont *gfxFont) { +#ifdef __AVR__ + return (uint8_t *)pgm_read_pointer(&gfxFont->bitmap); +#else + // expression in __AVR__ section generates "dereferencing type-punned pointer + // will break strict-aliasing rules" warning In fact, on other platforms (such + // as STM32) there is no need to do this pointer magic as program memory may + // be read in a usual way So expression may be simplified + return gfxFont->bitmap; +#endif //__AVR__ +} + +#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 + +/**************************************************************************/ +/*! + @brief Instatiate a GFX context for graphics! Can only be done by a + superclass + @param w Display width, in pixels + @param h Display height, in pixels +*/ +/**************************************************************************/ +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_x = textsize_y = 1; + textcolor = textbgcolor = 0xFFFF; + wrap = true; + _cp437 = false; + gfxFont = NULL; +} + +/**************************************************************************/ +/*! + @brief Write a line. Bresenham's algorithm - thx wikpedia + @param x0 Start point x coordinate + @param y0 Start point y coordinate + @param x1 End point x coordinate + @param y1 End point y coordinate + @param color 16-bit 5-6-5 Color to draw with +*/ +/**************************************************************************/ +void Adafruit_GFX::writeLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, + uint16_t color) { +#if defined(ESP8266) + yield(); +#endif + 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) { + writePixel(y0, x0, color); + } else { + writePixel(x0, y0, color); + } + err -= dy; + if (err < 0) { + y0 += ystep; + err += dx; + } + } +} + +/**************************************************************************/ +/*! + @brief Start a display-writing routine, overwrite in subclasses. +*/ +/**************************************************************************/ +void Adafruit_GFX::startWrite() {} + +/**************************************************************************/ +/*! + @brief Write a pixel, overwrite in subclasses if startWrite is defined! + @param x x coordinate + @param y y coordinate + @param color 16-bit 5-6-5 Color to fill with +*/ +/**************************************************************************/ +void Adafruit_GFX::writePixel(int16_t x, int16_t y, uint16_t color) { + drawPixel(x, y, color); +} + +/**************************************************************************/ +/*! + @brief Write a perfectly vertical line, overwrite in subclasses if + startWrite is defined! + @param x Top-most x coordinate + @param y Top-most y coordinate + @param h Height in pixels + @param color 16-bit 5-6-5 Color to fill with +*/ +/**************************************************************************/ +void Adafruit_GFX::writeFastVLine(int16_t x, int16_t y, int16_t h, + uint16_t color) { + // Overwrite in subclasses if startWrite is defined! + // Can be just writeLine(x, y, x, y+h-1, color); + // or writeFillRect(x, y, 1, h, color); + drawFastVLine(x, y, h, color); +} + +/**************************************************************************/ +/*! + @brief Write a perfectly horizontal line, overwrite in subclasses if + startWrite is defined! + @param x Left-most x coordinate + @param y Left-most y coordinate + @param w Width in pixels + @param color 16-bit 5-6-5 Color to fill with +*/ +/**************************************************************************/ +void Adafruit_GFX::writeFastHLine(int16_t x, int16_t y, int16_t w, + uint16_t color) { + // Overwrite in subclasses if startWrite is defined! + // Example: writeLine(x, y, x+w-1, y, color); + // or writeFillRect(x, y, w, 1, color); + drawFastHLine(x, y, w, color); +} + +/**************************************************************************/ +/*! + @brief Write a rectangle completely with one color, overwrite in + subclasses if startWrite is defined! + @param x Top left corner x coordinate + @param y Top left corner y coordinate + @param w Width in pixels + @param h Height in pixels + @param color 16-bit 5-6-5 Color to fill with +*/ +/**************************************************************************/ +void Adafruit_GFX::writeFillRect(int16_t x, int16_t y, int16_t w, int16_t h, + uint16_t color) { + // Overwrite in subclasses if desired! + fillRect(x, y, w, h, color); +} + +/**************************************************************************/ +/*! + @brief End a display-writing routine, overwrite in subclasses if + startWrite is defined! +*/ +/**************************************************************************/ +void Adafruit_GFX::endWrite() {} + +/**************************************************************************/ +/*! + @brief Draw a perfectly vertical line (this is often optimized in a + subclass!) + @param x Top-most x coordinate + @param y Top-most y coordinate + @param h Height in pixels + @param color 16-bit 5-6-5 Color to fill with +*/ +/**************************************************************************/ +void Adafruit_GFX::drawFastVLine(int16_t x, int16_t y, int16_t h, + uint16_t color) { + startWrite(); + writeLine(x, y, x, y + h - 1, color); + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Draw a perfectly horizontal line (this is often optimized in a + subclass!) + @param x Left-most x coordinate + @param y Left-most y coordinate + @param w Width in pixels + @param color 16-bit 5-6-5 Color to fill with +*/ +/**************************************************************************/ +void Adafruit_GFX::drawFastHLine(int16_t x, int16_t y, int16_t w, + uint16_t color) { + startWrite(); + writeLine(x, y, x + w - 1, y, color); + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Fill a rectangle completely with one color. Update in subclasses if + desired! + @param x Top left corner x coordinate + @param y Top left corner y coordinate + @param w Width in pixels + @param h Height in pixels + @param color 16-bit 5-6-5 Color to fill with +*/ +/**************************************************************************/ +void Adafruit_GFX::fillRect(int16_t x, int16_t y, int16_t w, int16_t h, + uint16_t color) { + startWrite(); + for (int16_t i = x; i < x + w; i++) { + writeFastVLine(i, y, h, color); + } + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Fill the screen completely with one color. Update in subclasses if + desired! + @param color 16-bit 5-6-5 Color to fill with +*/ +/**************************************************************************/ +void Adafruit_GFX::fillScreen(uint16_t color) { + fillRect(0, 0, _width, _height, color); +} + +/**************************************************************************/ +/*! + @brief Draw a line + @param x0 Start point x coordinate + @param y0 Start point y coordinate + @param x1 End point x coordinate + @param y1 End point y coordinate + @param color 16-bit 5-6-5 Color to draw with +*/ +/**************************************************************************/ +void Adafruit_GFX::drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, + uint16_t color) { + // Update in subclasses if desired! + if (x0 == x1) { + if (y0 > y1) + _swap_int16_t(y0, y1); + drawFastVLine(x0, y0, y1 - y0 + 1, color); + } else if (y0 == y1) { + if (x0 > x1) + _swap_int16_t(x0, x1); + drawFastHLine(x0, y0, x1 - x0 + 1, color); + } else { + startWrite(); + writeLine(x0, y0, x1, y1, color); + endWrite(); + } +} + +/**************************************************************************/ +/*! + @brief Draw an ellipse outline + @param x0 Center-point x coordinate + @param y0 Center-point y coordinate + @param rw Horizontal radius of ellipse + @param rh Vertical radius of ellipse + @param color 16-bit 5-6-5 Color to draw with +*/ +/**************************************************************************/ +void Adafruit_GFX::drawEllipse(int16_t x0, int16_t y0, int16_t rw, int16_t rh, + uint16_t color) { +#if defined(ESP8266) + yield(); +#endif + // Bresenham's ellipse algorithm + int16_t x = 0, y = rh; + int32_t rw2 = rw * rw, rh2 = rh * rh; + int32_t twoRw2 = 2 * rw2, twoRh2 = 2 * rh2; + + int32_t decision = rh2 - (rw2 * rh) + (rw2 / 4); + + startWrite(); + + // region 1 + while ((twoRh2 * x) < (twoRw2 * y)) { + writePixel(x0 + x, y0 + y, color); + writePixel(x0 - x, y0 + y, color); + writePixel(x0 + x, y0 - y, color); + writePixel(x0 - x, y0 - y, color); + x++; + if (decision < 0) { + decision += rh2 + (twoRh2 * x); + } else { + decision += rh2 + (twoRh2 * x) - (twoRw2 * y); + y--; + } + } + + // region 2 + decision = ((rh2 * (2 * x + 1) * (2 * x + 1)) >> 2) + + (rw2 * (y - 1) * (y - 1)) - (rw2 * rh2); + while (y >= 0) { + writePixel(x0 + x, y0 + y, color); + writePixel(x0 - x, y0 + y, color); + writePixel(x0 + x, y0 - y, color); + writePixel(x0 - x, y0 - y, color); + y--; + if (decision > 0) { + decision += rw2 - (twoRw2 * y); + } else { + decision += rw2 + (twoRh2 * x) - (twoRw2 * y); + x++; + } + } + + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Draw an ellipse with filled colour + @param x0 Center-point x coordinate + @param y0 Center-point y coordinate + @param rw Horizontal radius of ellipse + @param rh Vertical radius of ellipse + @param color 16-bit 5-6-5 Color to draw with +*/ +/**************************************************************************/ +void Adafruit_GFX::fillEllipse(int16_t x0, int16_t y0, int16_t rw, int16_t rh, + uint16_t color) { +#if defined(ESP8266) + yield(); +#endif + // Bresenham's ellipse algorithm + int16_t x = 0, y = rh; + int32_t rw2 = rw * rw, rh2 = rh * rh; + int32_t twoRw2 = 2 * rw2, twoRh2 = 2 * rh2; + + int32_t decision = rh2 - (rw2 * rh) + (rw2 / 4); + + startWrite(); + + // region 1 + while ((twoRh2 * x) < (twoRw2 * y)) { + x++; + if (decision < 0) { + decision += rh2 + (twoRh2 * x); + } else { + decision += rh2 + (twoRh2 * x) - (twoRw2 * y); + drawFastHLine(x0 - (x - 1), y0 + y, 2 * (x - 1) + 1, color); + drawFastHLine(x0 - (x - 1), y0 - y, 2 * (x - 1) + 1, color); + y--; + } + } + + // region 2 + decision = ((rh2 * (2 * x + 1) * (2 * x + 1)) >> 2) + + (rw2 * (y - 1) * (y - 1)) - (rw2 * rh2); + while (y >= 0) { + drawFastHLine(x0 - x, y0 + y, 2 * x + 1, color); + drawFastHLine(x0 - x, y0 - y, 2 * x + 1, color); + + y--; + if (decision > 0) { + decision += rw2 - (twoRw2 * y); + } else { + decision += rw2 + (twoRh2 * x) - (twoRw2 * y); + x++; + } + } + + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Draw a circle outline + @param x0 Center-point x coordinate + @param y0 Center-point y coordinate + @param r Radius of circle + @param color 16-bit 5-6-5 Color to draw with +*/ +/**************************************************************************/ +void Adafruit_GFX::drawCircle(int16_t x0, int16_t y0, int16_t r, + uint16_t color) { +#if defined(ESP8266) + yield(); +#endif + int16_t f = 1 - r; + int16_t ddF_x = 1; + int16_t ddF_y = -2 * r; + int16_t x = 0; + int16_t y = r; + + startWrite(); + writePixel(x0, y0 + r, color); + writePixel(x0, y0 - r, color); + writePixel(x0 + r, y0, color); + writePixel(x0 - r, y0, color); + + while (x < y) { + if (f >= 0) { + y--; + ddF_y += 2; + f += ddF_y; + } + x++; + ddF_x += 2; + f += ddF_x; + + writePixel(x0 + x, y0 + y, color); + writePixel(x0 - x, y0 + y, color); + writePixel(x0 + x, y0 - y, color); + writePixel(x0 - x, y0 - y, color); + writePixel(x0 + y, y0 + x, color); + writePixel(x0 - y, y0 + x, color); + writePixel(x0 + y, y0 - x, color); + writePixel(x0 - y, y0 - x, color); + } + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Quarter-circle drawer, used to do circles and roundrects + @param x0 Center-point x coordinate + @param y0 Center-point y coordinate + @param r Radius of circle + @param cornername Mask bit #1, #2, #4, and #8 to indicate which quarters + of the circle we're doing + @param color 16-bit 5-6-5 Color to draw with +*/ +/**************************************************************************/ +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 < y) { + if (f >= 0) { + y--; + ddF_y += 2; + f += ddF_y; + } + x++; + ddF_x += 2; + f += ddF_x; + if (cornername & 0x4) { + writePixel(x0 + x, y0 + y, color); + writePixel(x0 + y, y0 + x, color); + } + if (cornername & 0x2) { + writePixel(x0 + x, y0 - y, color); + writePixel(x0 + y, y0 - x, color); + } + if (cornername & 0x8) { + writePixel(x0 - y, y0 + x, color); + writePixel(x0 - x, y0 + y, color); + } + if (cornername & 0x1) { + writePixel(x0 - y, y0 - x, color); + writePixel(x0 - x, y0 - y, color); + } + } +} + +/**************************************************************************/ +/*! + @brief Draw a circle with filled color + @param x0 Center-point x coordinate + @param y0 Center-point y coordinate + @param r Radius of circle + @param color 16-bit 5-6-5 Color to fill with +*/ +/**************************************************************************/ +void Adafruit_GFX::fillCircle(int16_t x0, int16_t y0, int16_t r, + uint16_t color) { + startWrite(); + writeFastVLine(x0, y0 - r, 2 * r + 1, color); + fillCircleHelper(x0, y0, r, 3, 0, color); + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Half-circle drawer with fill, used for circles and roundrects + @param x0 Center-point x coordinate + @param y0 Center-point y coordinate + @param r Radius of circle + @param corners Mask bits indicating which sides of the circle we are + doing, left (1) and/or right (2) + @param delta Offset from center-point, used for round-rects + @param color 16-bit 5-6-5 Color to fill with +*/ +/**************************************************************************/ +void Adafruit_GFX::fillCircleHelper(int16_t x0, int16_t y0, int16_t r, + uint8_t corners, 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; + int16_t px = x; + int16_t py = y; + + delta++; // Avoid some +1's in the loop + + while (x < y) { + if (f >= 0) { + y--; + ddF_y += 2; + f += ddF_y; + } + x++; + ddF_x += 2; + f += ddF_x; + // These checks avoid double-drawing certain lines, important + // for the SSD1306 library which has an INVERT drawing mode. + if (x < (y + 1)) { + if (corners & 1) + writeFastVLine(x0 + x, y0 - y, 2 * y + delta, color); + if (corners & 2) + writeFastVLine(x0 - x, y0 - y, 2 * y + delta, color); + } + if (y != py) { + if (corners & 1) + writeFastVLine(x0 + py, y0 - px, 2 * px + delta, color); + if (corners & 2) + writeFastVLine(x0 - py, y0 - px, 2 * px + delta, color); + py = y; + } + px = x; + } +} + +/**************************************************************************/ +/*! + @brief Draw a rectangle with no fill color + @param x Top left corner x coordinate + @param y Top left corner y coordinate + @param w Width in pixels + @param h Height in pixels + @param color 16-bit 5-6-5 Color to draw with +*/ +/**************************************************************************/ +void Adafruit_GFX::drawRect(int16_t x, int16_t y, int16_t w, int16_t h, + uint16_t color) { + startWrite(); + writeFastHLine(x, y, w, color); + writeFastHLine(x, y + h - 1, w, color); + writeFastVLine(x, y, h, color); + writeFastVLine(x + w - 1, y, h, color); + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Draw a rounded rectangle with no fill color + @param x Top left corner x coordinate + @param y Top left corner y coordinate + @param w Width in pixels + @param h Height in pixels + @param r Radius of corner rounding + @param color 16-bit 5-6-5 Color to draw with +*/ +/**************************************************************************/ +void Adafruit_GFX::drawRoundRect(int16_t x, int16_t y, int16_t w, int16_t h, + int16_t r, uint16_t color) { + int16_t max_radius = ((w < h) ? w : h) / 2; // 1/2 minor axis + if (r > max_radius) + r = max_radius; + // smarter version + startWrite(); + writeFastHLine(x + r, y, w - 2 * r, color); // Top + writeFastHLine(x + r, y + h - 1, w - 2 * r, color); // Bottom + writeFastVLine(x, y + r, h - 2 * r, color); // Left + writeFastVLine(x + w - 1, y + r, h - 2 * r, color); // Right + // draw four corners + drawCircleHelper(x + r, y + r, r, 1, color); + drawCircleHelper(x + w - r - 1, y + r, r, 2, color); + drawCircleHelper(x + w - r - 1, y + h - r - 1, r, 4, color); + drawCircleHelper(x + r, y + h - r - 1, r, 8, color); + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Draw a rounded rectangle with fill color + @param x Top left corner x coordinate + @param y Top left corner y coordinate + @param w Width in pixels + @param h Height in pixels + @param r Radius of corner rounding + @param color 16-bit 5-6-5 Color to draw/fill with +*/ +/**************************************************************************/ +void Adafruit_GFX::fillRoundRect(int16_t x, int16_t y, int16_t w, int16_t h, + int16_t r, uint16_t color) { + int16_t max_radius = ((w < h) ? w : h) / 2; // 1/2 minor axis + if (r > max_radius) + r = max_radius; + // smarter version + startWrite(); + writeFillRect(x + r, y, w - 2 * r, h, color); + // draw four corners + fillCircleHelper(x + w - r - 1, y + r, r, 1, h - 2 * r - 1, color); + fillCircleHelper(x + r, y + r, r, 2, h - 2 * r - 1, color); + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Draw a rotated rectangle + @param cenX x coordinate of center of rectangle. + For even width rectangles, this point + represents the pixel to the left of + true center. + @param cenY y coordinate of center of rectangle. + For even height rectangles, this point + represents the pixel above + true center. + @param w width of rectangle + @param h height of rectangle + @param angleDeg angle of rotation of rectangle + @param color 16-bit 5-6-5 Color to fill/draw with +*/ +/**************************************************************************/ +void Adafruit_GFX::drawRotatedRect(int16_t cenX, int16_t cenY, int16_t w, + int16_t h, int16_t angleDeg, + uint16_t color) { + + if (w < 1 || h < 1) + return; // We don't draw zero dimensioned objects + + int16_t W = w - 1; + int16_t H = h - 1; + + int16_t halfW = (W / 2); // Midpoint should always be integer + int16_t halfH = (H / 2); // Midpoint should always be integer + + int16_t x0 = W - halfW; // bottom-right + int16_t y0 = H - halfH; // bottom-right + int16_t x1 = -halfW; // bottom-left + int16_t y1 = H - halfH; // bottom-left + int16_t x2 = -halfW; // top-left + int16_t y2 = -halfH; // top-left + int16_t x3 = W - halfW; // top-right + int16_t y3 = -halfH; // top-right + + rotatePoint(x0, y0, angleDeg); + rotatePoint(x1, y1, angleDeg); + rotatePoint(x2, y2, angleDeg); + rotatePoint(x3, y3, angleDeg); + + x0 += cenX; + x1 += cenX; + x2 += cenX; + x3 += cenX; + + y0 += cenY; + y1 += cenY; + y2 += cenY; + y3 += cenY; + + drawLine(x0, y0, x1, y1, color); // bottom right to bottom left + drawLine(x1, y1, x2, y2, color); // bottom left to top left + drawLine(x2, y2, x3, y3, color); // top left to top right + drawLine(x3, y3, x0, y0, color); // top right to bottom right +} + +/**************************************************************************/ +/*! + @brief Draw a filled rotated rectangle + @param cenX x coordinate of center of rectangle. + For even width rectangles, this point + represents the pixel to the left of + true center. + @param cenY y coordinate of center of rectangle. + For even height rectangles, this point + represents the pixel above + true center. + @param w width of rectangle + @param h height of rectangle + @param angleDeg angle of rotation of rectangle + @param color 16-bit 5-6-5 Color to fill/draw with +*/ +/**************************************************************************/ +void Adafruit_GFX::fillRotatedRect(int16_t cenX, int16_t cenY, int16_t w, + int16_t h, int16_t angleDeg, + uint16_t color) { + + if (w < 1 || h < 1) + return; // We don't draw zero dimensioned objects + + int16_t W = w - 1; + int16_t H = h - 1; + + int16_t halfW = (W / 2); // Midpoint should always be integer + int16_t halfH = (H / 2); // Midpoint should always be integer + + int16_t x0 = W - halfW; // bottom-right + int16_t y0 = H - halfH; // bottom-right + int16_t x1 = -halfW; // bottom-left + int16_t y1 = H - halfH; // bottom-left + int16_t x2 = -halfW; // top-left + int16_t y2 = -halfH; // top-left + int16_t x3 = W - halfW; // top-right + int16_t y3 = -halfH; // top-right + + rotatePoint(x0, y0, angleDeg); + rotatePoint(x1, y1, angleDeg); + rotatePoint(x2, y2, angleDeg); + rotatePoint(x3, y3, angleDeg); + + x0 += cenX; + x1 += cenX; + x2 += cenX; + x3 += cenX; + + y0 += cenY; + y1 += cenY; + y2 += cenY; + y3 += cenY; + + fillTriangle(x0, y0, x1, y1, x2, y2, color); + fillTriangle(x2, y2, x3, y3, x0, y0, color); +} + +/**************************************************************************/ +/*! + @brief Rotate a point in standard position + @param x0 x coordinate of point to rotate. This is passed by reference + and updated upon return + @param y0 y coordinate of point to rotate. This is passed by reference + and updated upon return + @param angleDeg angle to rotate the point by (degrees) +*/ +/**************************************************************************/ +void Adafruit_GFX::rotatePoint(int16_t &x0, int16_t &y0, int16_t angleDeg) { + float angleRad = radians(angleDeg); + float s = sin(angleRad); + float c = cos(angleRad); + + float x = x0; + float y = y0; + + // Rotate point + x0 = (int16_t)((x * c) - (y * s)); + y0 = (int16_t)((x * s) + (y * c)); +} + +/**************************************************************************/ +/*! + @brief Draw a triangle with no fill color + @param x0 Vertex #0 x coordinate + @param y0 Vertex #0 y coordinate + @param x1 Vertex #1 x coordinate + @param y1 Vertex #1 y coordinate + @param x2 Vertex #2 x coordinate + @param y2 Vertex #2 y coordinate + @param color 16-bit 5-6-5 Color to draw with +*/ +/**************************************************************************/ +void Adafruit_GFX::drawTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, + int16_t x2, int16_t y2, uint16_t color) { + drawLine(x0, y0, x1, y1, color); + drawLine(x1, y1, x2, y2, color); + drawLine(x2, y2, x0, y0, color); +} + +/**************************************************************************/ +/*! + @brief Draw a triangle with color-fill + @param x0 Vertex #0 x coordinate + @param y0 Vertex #0 y coordinate + @param x1 Vertex #1 x coordinate + @param y1 Vertex #1 y coordinate + @param x2 Vertex #2 x coordinate + @param y2 Vertex #2 y coordinate + @param color 16-bit 5-6-5 Color to fill/draw with +*/ +/**************************************************************************/ +void Adafruit_GFX::fillTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, + int16_t x2, int16_t y2, uint16_t color) { + + int16_t a, b, y, last; + + // Sort coordinates by Y order (y2 >= 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); + } + + startWrite(); + 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; + writeFastHLine(a, y0, b - a + 1, color); + endWrite(); + 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); + writeFastHLine(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 = (int32_t)dx12 * (y - y1); + sb = (int32_t)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); + writeFastHLine(a, y, b - a + 1, color); + } + endWrite(); +} + +// BITMAP / XBITMAP / GRAYSCALE / RGB BITMAP FUNCTIONS --------------------- + +/**************************************************************************/ +/*! + @brief Draw a PROGMEM-resident 1-bit image at the specified (x,y) + position, using the specified foreground color (unset bits are transparent). + @param x Top left corner x coordinate + @param y Top left corner y coordinate + @param bitmap byte array with monochrome bitmap + @param w Width of bitmap in pixels + @param h Height of bitmap in pixels + @param color 16-bit 5-6-5 Color to draw with +*/ +/**************************************************************************/ +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 byteWidth = (w + 7) / 8; // Bitmap scanline pad = whole byte + uint8_t b = 0; + + startWrite(); + for (int16_t j = 0; j < h; j++, y++) { + for (int16_t i = 0; i < w; i++) { + if (i & 7) + b <<= 1; + else + b = pgm_read_byte(&bitmap[j * byteWidth + i / 8]); + if (b & 0x80) + writePixel(x + i, y, color); + } + } + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Draw a PROGMEM-resident 1-bit image at the specified (x,y) + position, using the specified foreground (for set bits) and background (unset + bits) colors. + @param x Top left corner x coordinate + @param y Top left corner y coordinate + @param bitmap byte array with monochrome bitmap + @param w Width of bitmap in pixels + @param h Height of bitmap in pixels + @param color 16-bit 5-6-5 Color to draw pixels with + @param bg 16-bit 5-6-5 Color to draw background with +*/ +/**************************************************************************/ +void Adafruit_GFX::drawBitmap(int16_t x, int16_t y, const uint8_t bitmap[], + int16_t w, int16_t h, uint16_t color, + uint16_t bg) { + + int16_t byteWidth = (w + 7) / 8; // Bitmap scanline pad = whole byte + uint8_t b = 0; + + startWrite(); + for (int16_t j = 0; j < h; j++, y++) { + for (int16_t i = 0; i < w; i++) { + if (i & 7) + b <<= 1; + else + b = pgm_read_byte(&bitmap[j * byteWidth + i / 8]); + writePixel(x + i, y, (b & 0x80) ? color : bg); + } + } + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Draw a RAM-resident 1-bit image at the specified (x,y) position, + using the specified foreground color (unset bits are transparent). + @param x Top left corner x coordinate + @param y Top left corner y coordinate + @param bitmap byte array with monochrome bitmap + @param w Width of bitmap in pixels + @param h Height of bitmap in pixels + @param color 16-bit 5-6-5 Color to draw with +*/ +/**************************************************************************/ +void Adafruit_GFX::drawBitmap(int16_t x, int16_t y, uint8_t *bitmap, int16_t w, + int16_t h, uint16_t color) { + + int16_t byteWidth = (w + 7) / 8; // Bitmap scanline pad = whole byte + uint8_t b = 0; + + startWrite(); + for (int16_t j = 0; j < h; j++, y++) { + for (int16_t i = 0; i < w; i++) { + if (i & 7) + b <<= 1; + else + b = bitmap[j * byteWidth + i / 8]; + if (b & 0x80) + writePixel(x + i, y, color); + } + } + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Draw a RAM-resident 1-bit image at the specified (x,y) position, + using the specified foreground (for set bits) and background (unset bits) + colors. + @param x Top left corner x coordinate + @param y Top left corner y coordinate + @param bitmap byte array with monochrome bitmap + @param w Width of bitmap in pixels + @param h Height of bitmap in pixels + @param color 16-bit 5-6-5 Color to draw pixels with + @param bg 16-bit 5-6-5 Color to draw background with +*/ +/**************************************************************************/ +void Adafruit_GFX::drawBitmap(int16_t x, int16_t y, uint8_t *bitmap, int16_t w, + int16_t h, uint16_t color, uint16_t bg) { + + int16_t byteWidth = (w + 7) / 8; // Bitmap scanline pad = whole byte + uint8_t b = 0; + + startWrite(); + for (int16_t j = 0; j < h; j++, y++) { + for (int16_t i = 0; i < w; i++) { + if (i & 7) + b <<= 1; + else + b = bitmap[j * byteWidth + i / 8]; + writePixel(x + i, y, (b & 0x80) ? color : bg); + } + } + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Draw PROGMEM-resident XBitMap Files (*.xbm), exported from GIMP. + Usage: Export from GIMP to *.xbm, rename *.xbm to *.c and open in editor. + C Array can be directly used with this function. + There is no RAM-resident version of this function; if generating bitmaps + in RAM, use the format defined by drawBitmap() and call that instead. + @param x Top left corner x coordinate + @param y Top left corner y coordinate + @param bitmap byte array with monochrome bitmap + @param w Width of bitmap in pixels + @param h Height of bitmap in pixels + @param color 16-bit 5-6-5 Color to draw pixels with +*/ +/**************************************************************************/ +void Adafruit_GFX::drawXBitmap(int16_t x, int16_t y, const uint8_t bitmap[], + int16_t w, int16_t h, uint16_t color) { + + int16_t byteWidth = (w + 7) / 8; // Bitmap scanline pad = whole byte + uint8_t b = 0; + + startWrite(); + for (int16_t j = 0; j < h; j++, y++) { + for (int16_t i = 0; i < w; i++) { + if (i & 7) + b >>= 1; + else + b = pgm_read_byte(&bitmap[j * byteWidth + i / 8]); + // Nearly identical to drawBitmap(), only the bit order + // is reversed here (left-to-right = LSB to MSB): + if (b & 0x01) + writePixel(x + i, y, color); + } + } + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Draw a PROGMEM-resident 8-bit image (grayscale) at the specified + (x,y) pos. Specifically for 8-bit display devices such as IS31FL3731; no + color reduction/expansion is performed. + @param x Top left corner x coordinate + @param y Top left corner y coordinate + @param bitmap byte array with grayscale bitmap + @param w Width of bitmap in pixels + @param h Height of bitmap in pixels +*/ +/**************************************************************************/ +void Adafruit_GFX::drawGrayscaleBitmap(int16_t x, int16_t y, + const uint8_t bitmap[], int16_t w, + int16_t h) { + startWrite(); + for (int16_t j = 0; j < h; j++, y++) { + for (int16_t i = 0; i < w; i++) { + writePixel(x + i, y, (uint8_t)pgm_read_byte(&bitmap[j * w + i])); + } + } + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Draw a RAM-resident 8-bit image (grayscale) at the specified (x,y) + pos. Specifically for 8-bit display devices such as IS31FL3731; no color + reduction/expansion is performed. + @param x Top left corner x coordinate + @param y Top left corner y coordinate + @param bitmap byte array with grayscale bitmap + @param w Width of bitmap in pixels + @param h Height of bitmap in pixels +*/ +/**************************************************************************/ +void Adafruit_GFX::drawGrayscaleBitmap(int16_t x, int16_t y, uint8_t *bitmap, + int16_t w, int16_t h) { + startWrite(); + for (int16_t j = 0; j < h; j++, y++) { + for (int16_t i = 0; i < w; i++) { + writePixel(x + i, y, bitmap[j * w + i]); + } + } + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Draw a PROGMEM-resident 8-bit image (grayscale) with a 1-bit mask + (set bits = opaque, unset bits = clear) at the specified (x,y) position. + BOTH buffers (grayscale and mask) must be PROGMEM-resident. + Specifically for 8-bit display devices such as IS31FL3731; no color + reduction/expansion is performed. + @param x Top left corner x coordinate + @param y Top left corner y coordinate + @param bitmap byte array with grayscale bitmap + @param mask byte array with mask bitmap + @param w Width of bitmap in pixels + @param h Height of bitmap in pixels +*/ +/**************************************************************************/ +void Adafruit_GFX::drawGrayscaleBitmap(int16_t x, int16_t y, + const uint8_t bitmap[], + const uint8_t mask[], int16_t w, + int16_t h) { + int16_t bw = (w + 7) / 8; // Bitmask scanline pad = whole byte + uint8_t b = 0; + startWrite(); + for (int16_t j = 0; j < h; j++, y++) { + for (int16_t i = 0; i < w; i++) { + if (i & 7) + b <<= 1; + else + b = pgm_read_byte(&mask[j * bw + i / 8]); + if (b & 0x80) { + writePixel(x + i, y, (uint8_t)pgm_read_byte(&bitmap[j * w + i])); + } + } + } + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Draw a RAM-resident 8-bit image (grayscale) with a 1-bit mask + (set bits = opaque, unset bits = clear) at the specified (x,y) position. + BOTH buffers (grayscale and mask) must be RAM-residentt, no mix-and-match + Specifically for 8-bit display devices such as IS31FL3731; no color + reduction/expansion is performed. + @param x Top left corner x coordinate + @param y Top left corner y coordinate + @param bitmap byte array with grayscale bitmap + @param mask byte array with mask bitmap + @param w Width of bitmap in pixels + @param h Height of bitmap in pixels +*/ +/**************************************************************************/ +void Adafruit_GFX::drawGrayscaleBitmap(int16_t x, int16_t y, uint8_t *bitmap, + uint8_t *mask, int16_t w, int16_t h) { + int16_t bw = (w + 7) / 8; // Bitmask scanline pad = whole byte + uint8_t b = 0; + startWrite(); + for (int16_t j = 0; j < h; j++, y++) { + for (int16_t i = 0; i < w; i++) { + if (i & 7) + b <<= 1; + else + b = mask[j * bw + i / 8]; + if (b & 0x80) { + writePixel(x + i, y, bitmap[j * w + i]); + } + } + } + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Draw a PROGMEM-resident 16-bit image (RGB 5/6/5) at the specified + (x,y) position. For 16-bit display devices; no color reduction performed. + @param x Top left corner x coordinate + @param y Top left corner y coordinate + @param bitmap byte array with 16-bit color bitmap + @param w Width of bitmap in pixels + @param h Height of bitmap in pixels +*/ +/**************************************************************************/ +void Adafruit_GFX::drawRGBBitmap(int16_t x, int16_t y, const uint16_t bitmap[], + int16_t w, int16_t h) { + startWrite(); + for (int16_t j = 0; j < h; j++, y++) { + for (int16_t i = 0; i < w; i++) { + writePixel(x + i, y, pgm_read_word(&bitmap[j * w + i])); + } + } + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Draw a RAM-resident 16-bit image (RGB 5/6/5) at the specified (x,y) + position. For 16-bit display devices; no color reduction performed. + @param x Top left corner x coordinate + @param y Top left corner y coordinate + @param bitmap byte array with 16-bit color bitmap + @param w Width of bitmap in pixels + @param h Height of bitmap in pixels +*/ +/**************************************************************************/ +void Adafruit_GFX::drawRGBBitmap(int16_t x, int16_t y, uint16_t *bitmap, + int16_t w, int16_t h) { + startWrite(); + for (int16_t j = 0; j < h; j++, y++) { + for (int16_t i = 0; i < w; i++) { + writePixel(x + i, y, bitmap[j * w + i]); + } + } + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Draw a PROGMEM-resident 16-bit image (RGB 5/6/5) with a 1-bit mask + (set bits = opaque, unset bits = clear) at the specified (x,y) position. BOTH + buffers (color and mask) must be PROGMEM-resident. For 16-bit display + devices; no color reduction performed. + @param x Top left corner x coordinate + @param y Top left corner y coordinate + @param bitmap byte array with 16-bit color bitmap + @param mask byte array with monochrome mask bitmap + @param w Width of bitmap in pixels + @param h Height of bitmap in pixels +*/ +/**************************************************************************/ +void Adafruit_GFX::drawRGBBitmap(int16_t x, int16_t y, const uint16_t bitmap[], + const uint8_t mask[], int16_t w, int16_t h) { + int16_t bw = (w + 7) / 8; // Bitmask scanline pad = whole byte + uint8_t b = 0; + startWrite(); + for (int16_t j = 0; j < h; j++, y++) { + for (int16_t i = 0; i < w; i++) { + if (i & 7) + b <<= 1; + else + b = pgm_read_byte(&mask[j * bw + i / 8]); + if (b & 0x80) { + writePixel(x + i, y, pgm_read_word(&bitmap[j * w + i])); + } + } + } + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Draw a RAM-resident 16-bit image (RGB 5/6/5) with a 1-bit mask (set + bits = opaque, unset bits = clear) at the specified (x,y) position. BOTH + buffers (color and mask) must be RAM-resident. For 16-bit display devices; no + color reduction performed. + @param x Top left corner x coordinate + @param y Top left corner y coordinate + @param bitmap byte array with 16-bit color bitmap + @param mask byte array with monochrome mask bitmap + @param w Width of bitmap in pixels + @param h Height of bitmap in pixels +*/ +/**************************************************************************/ +void Adafruit_GFX::drawRGBBitmap(int16_t x, int16_t y, uint16_t *bitmap, + uint8_t *mask, int16_t w, int16_t h) { + int16_t bw = (w + 7) / 8; // Bitmask scanline pad = whole byte + uint8_t b = 0; + startWrite(); + for (int16_t j = 0; j < h; j++, y++) { + for (int16_t i = 0; i < w; i++) { + if (i & 7) + b <<= 1; + else + b = mask[j * bw + i / 8]; + if (b & 0x80) { + writePixel(x + i, y, bitmap[j * w + i]); + } + } + } + endWrite(); +} + +// TEXT- AND CHARACTER-HANDLING FUNCTIONS ---------------------------------- + +// Draw a character +/**************************************************************************/ +/*! + @brief Draw a single character + @param x Bottom left corner x coordinate + @param y Bottom left corner y coordinate + @param c The 8-bit font-indexed character (likely ascii) + @param color 16-bit 5-6-5 Color to draw chraracter with + @param bg 16-bit 5-6-5 Color to fill background with (if same as color, + no background) + @param size Font magnification level, 1 is 'original' size +*/ +/**************************************************************************/ +void Adafruit_GFX::drawChar(int16_t x, int16_t y, unsigned char c, + uint16_t color, uint16_t bg, uint8_t size) { + drawChar(x, y, c, color, bg, size, size); +} + +// Draw a character +/**************************************************************************/ +/*! + @brief Draw a single character + @param x Bottom left corner x coordinate + @param y Bottom left corner y coordinate + @param c The 8-bit font-indexed character (likely ascii) + @param color 16-bit 5-6-5 Color to draw chraracter with + @param bg 16-bit 5-6-5 Color to fill background with (if same as color, + no background) + @param size_x Font magnification level in X-axis, 1 is 'original' size + @param size_y Font magnification level in Y-axis, 1 is 'original' size +*/ +/**************************************************************************/ +void Adafruit_GFX::drawChar(int16_t x, int16_t y, unsigned char c, + uint16_t color, uint16_t bg, uint8_t size_x, + uint8_t size_y) { + + if (!gfxFont) { // 'Classic' built-in font + + if ((x >= _width) || // Clip right + (y >= _height) || // Clip bottom + ((x + 6 * size_x - 1) < 0) || // Clip left + ((y + 8 * size_y - 1) < 0)) // Clip top + return; + + if (!_cp437 && (c >= 176)) + c++; // Handle 'classic' charset behavior + + startWrite(); + for (int8_t i = 0; i < 5; i++) { // Char bitmap = 5 columns + uint8_t line = pgm_read_byte(&font[c * 5 + i]); + for (int8_t j = 0; j < 8; j++, line >>= 1) { + if (line & 1) { + if (size_x == 1 && size_y == 1) + writePixel(x + i, y + j, color); + else + writeFillRect(x + i * size_x, y + j * size_y, size_x, size_y, + color); + } else if (bg != color) { + if (size_x == 1 && size_y == 1) + writePixel(x + i, y + j, bg); + else + writeFillRect(x + i * size_x, y + j * size_y, size_x, size_y, bg); + } + } + } + if (bg != color) { // If opaque, draw vertical line for last column + if (size_x == 1 && size_y == 1) + writeFastVLine(x + 5, y, 8, bg); + else + writeFillRect(x + 5 * size_x, y, size_x, 8 * size_y, bg); + } + endWrite(); + + } 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 -= (uint8_t)pgm_read_byte(&gfxFont->first); + GFXglyph *glyph = pgm_read_glyph_ptr(gfxFont, c); + uint8_t *bitmap = pgm_read_bitmap_ptr(gfxFont); + + uint16_t bo = pgm_read_word(&glyph->bitmapOffset); + uint8_t w = pgm_read_byte(&glyph->width), h = pgm_read_byte(&glyph->height); + int8_t xo = pgm_read_byte(&glyph->xOffset), + yo = pgm_read_byte(&glyph->yOffset); + uint8_t xx, yy, bits = 0, bit = 0; + int16_t xo16 = 0, yo16 = 0; + + if (size_x > 1 || size_y > 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. + + startWrite(); + for (yy = 0; yy < h; yy++) { + for (xx = 0; xx < w; xx++) { + if (!(bit++ & 7)) { + bits = pgm_read_byte(&bitmap[bo++]); + } + if (bits & 0x80) { + if (size_x == 1 && size_y == 1) { + writePixel(x + xo + xx, y + yo + yy, color); + } else { + writeFillRect(x + (xo16 + xx) * size_x, y + (yo16 + yy) * size_y, + size_x, size_y, color); + } + } + bits <<= 1; + } + } + endWrite(); + + } // End classic vs custom font +} +/**************************************************************************/ +/*! + @brief Print one byte/character of data, used to support print() + @param c The 8-bit ascii character to write +*/ +/**************************************************************************/ +size_t Adafruit_GFX::write(uint8_t c) { + if (!gfxFont) { // 'Classic' built-in font + + if (c == '\n') { // Newline? + cursor_x = 0; // Reset x to zero, + cursor_y += textsize_y * 8; // advance y one line + } else if (c != '\r') { // Ignore carriage returns + if (wrap && ((cursor_x + textsize_x * 6) > _width)) { // Off right? + cursor_x = 0; // Reset x to zero, + cursor_y += textsize_y * 8; // advance y one line + } + drawChar(cursor_x, cursor_y, c, textcolor, textbgcolor, textsize_x, + textsize_y); + cursor_x += textsize_x * 6; // Advance x one char + } + + } else { // Custom font + + if (c == '\n') { + cursor_x = 0; + cursor_y += + (int16_t)textsize_y * (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))) { + GFXglyph *glyph = pgm_read_glyph_ptr(gfxFont, c - first); + 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_x * (xo + w)) > _width)) { + cursor_x = 0; + cursor_y += (int16_t)textsize_y * + (uint8_t)pgm_read_byte(&gfxFont->yAdvance); + } + drawChar(cursor_x, cursor_y, c, textcolor, textbgcolor, textsize_x, + textsize_y); + } + cursor_x += + (uint8_t)pgm_read_byte(&glyph->xAdvance) * (int16_t)textsize_x; + } + } + } + return 1; +} + +/**************************************************************************/ +/*! + @brief Set text 'magnification' size. Each increase in s makes 1 pixel + that much bigger. + @param s Desired text size. 1 is default 6x8, 2 is 12x16, 3 is 18x24, etc +*/ +/**************************************************************************/ +void Adafruit_GFX::setTextSize(uint8_t s) { setTextSize(s, s); } + +/**************************************************************************/ +/*! + @brief Set text 'magnification' size. Each increase in s makes 1 pixel + that much bigger. + @param s_x Desired text width magnification level in X-axis. 1 is default + @param s_y Desired text width magnification level in Y-axis. 1 is default +*/ +/**************************************************************************/ +void Adafruit_GFX::setTextSize(uint8_t s_x, uint8_t s_y) { + textsize_x = (s_x > 0) ? s_x : 1; + textsize_y = (s_y > 0) ? s_y : 1; +} + +/**************************************************************************/ +/*! + @brief Set rotation setting for display + @param x 0 thru 3 corresponding to 4 cardinal rotations +*/ +/**************************************************************************/ +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; + } +} + +/**************************************************************************/ +/*! + @brief Set the font to display when print()ing, either custom or default + @param f The GFXfont object, if NULL use built in 6x8 font +*/ +/**************************************************************************/ +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; +} + +/**************************************************************************/ +/*! + @brief Helper to determine size of a character with current font/size. + Broke this out as it's used by both the PROGMEM- and RAM-resident + getTextBounds() functions. + @param c The ASCII character in question + @param x Pointer to x location of character. Value is modified by + this function to advance to next character. + @param y Pointer to y location of character. Value is modified by + this function to advance to next character. + @param minx Pointer to minimum X coordinate, passed in to AND returned + by this function -- this is used to incrementally build a + bounding rectangle for a string. + @param miny Pointer to minimum Y coord, passed in AND returned. + @param maxx Pointer to maximum X coord, passed in AND returned. + @param maxy Pointer to maximum Y coord, passed in AND returned. +*/ +/**************************************************************************/ +void Adafruit_GFX::charBounds(unsigned char c, int16_t *x, int16_t *y, + int16_t *minx, int16_t *miny, int16_t *maxx, + int16_t *maxy) { + + if (gfxFont) { + + if (c == '\n') { // Newline? + *x = 0; // Reset x to zero, advance y by one line + *y += textsize_y * (uint8_t)pgm_read_byte(&gfxFont->yAdvance); + } else if (c != '\r') { // Not a carriage return; is normal char + uint8_t first = pgm_read_byte(&gfxFont->first), + last = pgm_read_byte(&gfxFont->last); + if ((c >= first) && (c <= last)) { // Char present in this font? + GFXglyph *glyph = pgm_read_glyph_ptr(gfxFont, c - first); + uint8_t gw = pgm_read_byte(&glyph->width), + gh = 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); + if (wrap && ((*x + (((int16_t)xo + gw) * textsize_x)) > _width)) { + *x = 0; // Reset x to zero, advance y by one line + *y += textsize_y * (uint8_t)pgm_read_byte(&gfxFont->yAdvance); + } + int16_t tsx = (int16_t)textsize_x, tsy = (int16_t)textsize_y, + x1 = *x + xo * tsx, y1 = *y + yo * tsy, x2 = x1 + gw * tsx - 1, + y2 = y1 + gh * tsy - 1; + if (x1 < *minx) + *minx = x1; + if (y1 < *miny) + *miny = y1; + if (x2 > *maxx) + *maxx = x2; + if (y2 > *maxy) + *maxy = y2; + *x += xa * tsx; + } + } + + } else { // Default font + + if (c == '\n') { // Newline? + *x = 0; // Reset x to zero, + *y += textsize_y * 8; // advance y one line + // min/max x/y unchaged -- that waits for next 'normal' character + } else if (c != '\r') { // Normal char; ignore carriage returns + if (wrap && ((*x + textsize_x * 6) > _width)) { // Off right? + *x = 0; // Reset x to zero, + *y += textsize_y * 8; // advance y one line + } + int x2 = *x + textsize_x * 6 - 1, // Lower-right pixel of char + y2 = *y + textsize_y * 8 - 1; + if (x2 > *maxx) + *maxx = x2; // Track max x, y + if (y2 > *maxy) + *maxy = y2; + if (*x < *minx) + *minx = *x; // Track min x, y + if (*y < *miny) + *miny = *y; + *x += textsize_x * 6; // Advance x one char + } + } +} + +/**************************************************************************/ +/*! + @brief Helper to determine size of a string with current font/size. + Pass string and a cursor position, returns UL corner and W,H. + @param str The ASCII string to measure + @param x The current cursor X + @param y The current cursor Y + @param x1 The boundary X coordinate, returned by function + @param y1 The boundary Y coordinate, returned by function + @param w The boundary width, returned by function + @param h The boundary height, returned by function +*/ +/**************************************************************************/ +void Adafruit_GFX::getTextBounds(const 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 + int16_t minx = 0x7FFF, miny = 0x7FFF, maxx = -1, maxy = -1; // Bound rect + // Bound rect is intentionally initialized inverted, so 1st char sets it + + *x1 = x; // Initial position is value passed in + *y1 = y; + *w = *h = 0; // Initial size is zero + + while ((c = *str++)) { + // charBounds() modifies x/y to advance for each character, + // and min/max x/y are updated to incrementally build bounding rect. + charBounds(c, &x, &y, &minx, &miny, &maxx, &maxy); + } + + if (maxx >= minx) { // If legit string bounds were found... + *x1 = minx; // Update x1 to least X coord, + *w = maxx - minx + 1; // And w to bound rect width + } + if (maxy >= miny) { // Same for height + *y1 = miny; + *h = maxy - miny + 1; + } +} + +/**************************************************************************/ +/*! + @brief Helper to determine size of a string with current font/size. Pass + string and a cursor position, returns UL corner and W,H. + @param str The ascii string to measure (as an arduino String() class) + @param x The current cursor X + @param y The current cursor Y + @param x1 The boundary X coordinate, set by function + @param y1 The boundary Y coordinate, set by function + @param w The boundary width, set by function + @param h The boundary height, set by function +*/ +/**************************************************************************/ +void Adafruit_GFX::getTextBounds(const String &str, int16_t x, int16_t y, + int16_t *x1, int16_t *y1, uint16_t *w, + uint16_t *h) { + if (str.length() != 0) { + getTextBounds(const_cast(str.c_str()), x, y, x1, y1, w, h); + } +} + +/**************************************************************************/ +/*! + @brief Helper to determine size of a PROGMEM string with current + font/size. Pass string and a cursor position, returns UL corner and W,H. + @param str The flash-memory ascii string to measure + @param x The current cursor X + @param y The current cursor Y + @param x1 The boundary X coordinate, set by function + @param y1 The boundary Y coordinate, set by function + @param w The boundary width, set by function + @param h The boundary height, set by function +*/ +/**************************************************************************/ +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; + + int16_t minx = _width, miny = _height, maxx = -1, maxy = -1; + + while ((c = pgm_read_byte(s++))) + charBounds(c, &x, &y, &minx, &miny, &maxx, &maxy); + + if (maxx >= minx) { + *x1 = minx; + *w = maxx - minx + 1; + } + if (maxy >= miny) { + *y1 = miny; + *h = maxy - miny + 1; + } +} + +/**************************************************************************/ +/*! + @brief Invert the display (ideally using built-in hardware command) + @param i True if you want to invert, false to make 'normal' +*/ +/**************************************************************************/ +void Adafruit_GFX::invertDisplay(bool i) { + // Do nothing, must be subclassed if supported by hardware + (void)i; // disable -Wunused-parameter warning +} + +/***************************************************************************/ + +/**************************************************************************/ +/*! + @brief Create a simple drawn button UI element +*/ +/**************************************************************************/ +Adafruit_GFX_Button::Adafruit_GFX_Button(void) { _gfx = 0; } + +/**************************************************************************/ +/*! + @brief Initialize button with our desired color/size/settings + @param gfx Pointer to our display so we can draw to it! + @param x The X coordinate of the center of the button + @param y The Y coordinate of the center of the button + @param w Width of the buttton + @param h Height of the buttton + @param outline Color of the outline (16-bit 5-6-5 standard) + @param fill Color of the button fill (16-bit 5-6-5 standard) + @param textcolor Color of the button label (16-bit 5-6-5 standard) + @param label Ascii string of the text inside the button + @param textsize The font magnification of the label text +*/ +/**************************************************************************/ +// Classic initButton() function: pass center & size +void Adafruit_GFX_Button::initButton(Adafruit_GFX *gfx, int16_t x, int16_t y, + uint16_t w, uint16_t h, uint16_t outline, + uint16_t fill, uint16_t textcolor, + char *label, uint8_t textsize) { + // Tweak arguments and pass to the newer initButtonUL() function... + initButtonUL(gfx, x - (w / 2), y - (h / 2), w, h, outline, fill, textcolor, + label, textsize); +} + +/**************************************************************************/ +/*! + @brief Initialize button with our desired color/size/settings + @param gfx Pointer to our display so we can draw to it! + @param x The X coordinate of the center of the button + @param y The Y coordinate of the center of the button + @param w Width of the buttton + @param h Height of the buttton + @param outline Color of the outline (16-bit 5-6-5 standard) + @param fill Color of the button fill (16-bit 5-6-5 standard) + @param textcolor Color of the button label (16-bit 5-6-5 standard) + @param label Ascii string of the text inside the button + @param textsize_x The font magnification in X-axis of the label text + @param textsize_y The font magnification in Y-axis of the label text +*/ +/**************************************************************************/ +// Classic initButton() function: pass center & size +void Adafruit_GFX_Button::initButton(Adafruit_GFX *gfx, int16_t x, int16_t y, + uint16_t w, uint16_t h, uint16_t outline, + uint16_t fill, uint16_t textcolor, + char *label, uint8_t textsize_x, + uint8_t textsize_y) { + // Tweak arguments and pass to the newer initButtonUL() function... + initButtonUL(gfx, x - (w / 2), y - (h / 2), w, h, outline, fill, textcolor, + label, textsize_x, textsize_y); +} + +/**************************************************************************/ +/*! + @brief Initialize button with our desired color/size/settings, with + upper-left coordinates + @param gfx Pointer to our display so we can draw to it! + @param x1 The X coordinate of the Upper-Left corner of the button + @param y1 The Y coordinate of the Upper-Left corner of the button + @param w Width of the buttton + @param h Height of the buttton + @param outline Color of the outline (16-bit 5-6-5 standard) + @param fill Color of the button fill (16-bit 5-6-5 standard) + @param textcolor Color of the button label (16-bit 5-6-5 standard) + @param label Ascii string of the text inside the button + @param textsize The font magnification of the label text +*/ +/**************************************************************************/ +void Adafruit_GFX_Button::initButtonUL(Adafruit_GFX *gfx, int16_t x1, + int16_t y1, uint16_t w, uint16_t h, + uint16_t outline, uint16_t fill, + uint16_t textcolor, char *label, + uint8_t textsize) { + initButtonUL(gfx, x1, y1, w, h, outline, fill, textcolor, label, textsize, + textsize); +} + +/**************************************************************************/ +/*! + @brief Initialize button with our desired color/size/settings, with + upper-left coordinates + @param gfx Pointer to our display so we can draw to it! + @param x1 The X coordinate of the Upper-Left corner of the button + @param y1 The Y coordinate of the Upper-Left corner of the button + @param w Width of the buttton + @param h Height of the buttton + @param outline Color of the outline (16-bit 5-6-5 standard) + @param fill Color of the button fill (16-bit 5-6-5 standard) + @param textcolor Color of the button label (16-bit 5-6-5 standard) + @param label Ascii string of the text inside the button + @param textsize_x The font magnification in X-axis of the label text + @param textsize_y The font magnification in Y-axis of the label text +*/ +/**************************************************************************/ +void Adafruit_GFX_Button::initButtonUL(Adafruit_GFX *gfx, int16_t x1, + int16_t y1, uint16_t w, uint16_t h, + uint16_t outline, uint16_t fill, + uint16_t textcolor, char *label, + uint8_t textsize_x, uint8_t textsize_y) { + _x1 = x1; + _y1 = y1; + _w = w; + _h = h; + _outlinecolor = outline; + _fillcolor = fill; + _textcolor = textcolor; + _textsize_x = textsize_x; + _textsize_y = textsize_y; + _gfx = gfx; + strncpy(_label, label, 9); + _label[9] = 0; // strncpy does not place a null at the end. + // When 'label' is >9 characters, _label is not terminated. +} + +/**************************************************************************/ +/*! + @brief Draw the button on the screen + @param inverted Whether to draw with fill/text swapped to indicate + 'pressed' +*/ +/**************************************************************************/ +void Adafruit_GFX_Button::drawButton(bool inverted) { + uint16_t fill, outline, text; + + if (!inverted) { + fill = _fillcolor; + outline = _outlinecolor; + text = _textcolor; + } else { + fill = _textcolor; + outline = _outlinecolor; + text = _fillcolor; + } + + uint8_t r = min(_w, _h) / 4; // Corner radius + _gfx->fillRoundRect(_x1, _y1, _w, _h, r, fill); + _gfx->drawRoundRect(_x1, _y1, _w, _h, r, outline); + + _gfx->setCursor(_x1 + (_w / 2) - (strlen(_label) * 3 * _textsize_x), + _y1 + (_h / 2) - (4 * _textsize_y)); + _gfx->setTextColor(text); + _gfx->setTextSize(_textsize_x, _textsize_y); + _gfx->print(_label); +} + +/**************************************************************************/ +/*! + @brief Helper to let us know if a coordinate is within the bounds of the + button + @param x The X coordinate to check + @param y The Y coordinate to check + @returns True if within button graphics outline +*/ +/**************************************************************************/ +bool Adafruit_GFX_Button::contains(int16_t x, int16_t y) { + return ((x >= _x1) && (x < (int16_t)(_x1 + _w)) && (y >= _y1) && + (y < (int16_t)(_y1 + _h))); +} + +/**************************************************************************/ +/*! + @brief Query whether the button was pressed since we last checked state + @returns True if was not-pressed before, now is. +*/ +/**************************************************************************/ +bool Adafruit_GFX_Button::justPressed() { return (currstate && !laststate); } + +/**************************************************************************/ +/*! + @brief Query whether the button was released since we last checked state + @returns True if was pressed before, now is not. +*/ +/**************************************************************************/ +bool Adafruit_GFX_Button::justReleased() { return (!currstate && laststate); } + +// ------------------------------------------------------------------------- + +// GFXcanvas1, GFXcanvas8 and GFXcanvas16 (currently a WIP, don't get too +// comfy with the implementation) provide 1-, 8- and 16-bit offscreen +// canvases, the address of which can be passed to drawBitmap() or +// pushColors() (the latter appears only in a couple of GFX-subclassed TFT +// libraries 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 the others are much more likely to +// require at least a Mega or various recent ARM-type boards (recommended, +// as the text+bitmap draw can be pokey). GFXcanvas1 requires 1 bit per +// pixel (rounded up to nearest byte per scanline), GFXcanvas8 is 1 byte +// per pixel (no scanline pad), and GFXcanvas16 uses 2 bytes per pixel (no +// scanline pad). +// NOT EXTENSIVELY TESTED YET. MAY CONTAIN WORST BUGS KNOWN TO HUMANKIND. + +#ifdef __AVR__ +// Bitmask tables of 0x80>>X and ~(0x80>>X), because X>>Y is slow on AVR +const uint8_t PROGMEM GFXcanvas1::GFXsetBit[] = {0x80, 0x40, 0x20, 0x10, + 0x08, 0x04, 0x02, 0x01}; +const uint8_t PROGMEM GFXcanvas1::GFXclrBit[] = {0x7F, 0xBF, 0xDF, 0xEF, + 0xF7, 0xFB, 0xFD, 0xFE}; +#endif + +/**************************************************************************/ +/*! + @brief Instatiate a GFX 1-bit canvas context for graphics + @param w Display width, in pixels + @param h Display height, in pixels + @param allocate_buffer If true, a buffer is allocated with malloc. If + false, the subclass must initialize the buffer before any drawing operation, + and free it in the destructor. If false (the default), the buffer is + allocated and freed by the library. +*/ +/**************************************************************************/ +GFXcanvas1::GFXcanvas1(uint16_t w, uint16_t h, bool allocate_buffer) + : Adafruit_GFX(w, h), buffer_owned(allocate_buffer) { + if (allocate_buffer) { + uint32_t bytes = ((w + 7) / 8) * h; + if ((buffer = (uint8_t *)malloc(bytes))) { + memset(buffer, 0, bytes); + } + } else { + buffer = nullptr; + } +} + +/**************************************************************************/ +/*! + @brief Delete the canvas, free memory +*/ +/**************************************************************************/ +GFXcanvas1::~GFXcanvas1(void) { + if (buffer && buffer_owned) + free(buffer); +} + +/**************************************************************************/ +/*! + @brief Draw a pixel to the canvas framebuffer + @param x x coordinate + @param y y coordinate + @param color Binary (on or off) color to fill with +*/ +/**************************************************************************/ +void GFXcanvas1::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; + } + + uint8_t *ptr = &buffer[(x / 8) + y * ((WIDTH + 7) / 8)]; +#ifdef __AVR__ + if (color) + *ptr |= pgm_read_byte(&GFXsetBit[x & 7]); + else + *ptr &= pgm_read_byte(&GFXclrBit[x & 7]); +#else + if (color) + *ptr |= 0x80 >> (x & 7); + else + *ptr &= ~(0x80 >> (x & 7)); +#endif + } +} + +/**********************************************************************/ +/*! + @brief Get the pixel color value at a given coordinate + @param x x coordinate + @param y y coordinate + @returns The desired pixel's binary color value, either 0x1 (on) or 0x0 + (off) +*/ +/**********************************************************************/ +bool GFXcanvas1::getPixel(int16_t x, int16_t y) const { + 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; + } + return getRawPixel(x, y); +} + +/**********************************************************************/ +/*! + @brief Get the pixel color value at a given, unrotated coordinate. + This method is intended for hardware drivers to get pixel value + in physical coordinates. + @param x x coordinate + @param y y coordinate + @returns The desired pixel's binary color value, either 0x1 (on) or 0x0 + (off) +*/ +/**********************************************************************/ +bool GFXcanvas1::getRawPixel(int16_t x, int16_t y) const { + if ((x < 0) || (y < 0) || (x >= WIDTH) || (y >= HEIGHT)) + return 0; + if (buffer) { + uint8_t *ptr = &buffer[(x / 8) + y * ((WIDTH + 7) / 8)]; + +#ifdef __AVR__ + return ((*ptr) & pgm_read_byte(&GFXsetBit[x & 7])) != 0; +#else + return ((*ptr) & (0x80 >> (x & 7))) != 0; +#endif + } + return 0; +} + +/**************************************************************************/ +/*! + @brief Fill the framebuffer completely with one color + @param color Binary (on or off) color to fill with +*/ +/**************************************************************************/ +void GFXcanvas1::fillScreen(uint16_t color) { + if (buffer) { + uint32_t bytes = ((WIDTH + 7) / 8) * HEIGHT; + memset(buffer, color ? 0xFF : 0x00, bytes); + } +} + +/**************************************************************************/ +/*! + @brief Speed optimized vertical line drawing + @param x Line horizontal start point + @param y Line vertical start point + @param h Length of vertical line to be drawn, including first point + @param color Color to fill with +*/ +/**************************************************************************/ +void GFXcanvas1::drawFastVLine(int16_t x, int16_t y, int16_t h, + uint16_t color) { + + if (h < 0) { // Convert negative heights to positive equivalent + h *= -1; + y -= h - 1; + if (y < 0) { + h += y; + y = 0; + } + } + + // Edge rejection (no-draw if totally off canvas) + if ((x < 0) || (x >= width()) || (y >= height()) || ((y + h - 1) < 0)) { + return; + } + + if (y < 0) { // Clip top + h += y; + y = 0; + } + if (y + h > height()) { // Clip bottom + h = height() - y; + } + + if (getRotation() == 0) { + drawFastRawVLine(x, y, h, color); + } else if (getRotation() == 1) { + int16_t t = x; + x = WIDTH - 1 - y; + y = t; + x -= h - 1; + drawFastRawHLine(x, y, h, color); + } else if (getRotation() == 2) { + x = WIDTH - 1 - x; + y = HEIGHT - 1 - y; + + y -= h - 1; + drawFastRawVLine(x, y, h, color); + } else if (getRotation() == 3) { + int16_t t = x; + x = y; + y = HEIGHT - 1 - t; + drawFastRawHLine(x, y, h, color); + } +} + +/**************************************************************************/ +/*! + @brief Speed optimized horizontal line drawing + @param x Line horizontal start point + @param y Line vertical start point + @param w Length of horizontal line to be drawn, including first point + @param color Color to fill with +*/ +/**************************************************************************/ +void GFXcanvas1::drawFastHLine(int16_t x, int16_t y, int16_t w, + uint16_t color) { + if (w < 0) { // Convert negative widths to positive equivalent + w *= -1; + x -= w - 1; + if (x < 0) { + w += x; + x = 0; + } + } + + // Edge rejection (no-draw if totally off canvas) + if ((y < 0) || (y >= height()) || (x >= width()) || ((x + w - 1) < 0)) { + return; + } + + if (x < 0) { // Clip left + w += x; + x = 0; + } + if (x + w >= width()) { // Clip right + w = width() - x; + } + + if (getRotation() == 0) { + drawFastRawHLine(x, y, w, color); + } else if (getRotation() == 1) { + int16_t t = x; + x = WIDTH - 1 - y; + y = t; + drawFastRawVLine(x, y, w, color); + } else if (getRotation() == 2) { + x = WIDTH - 1 - x; + y = HEIGHT - 1 - y; + + x -= w - 1; + drawFastRawHLine(x, y, w, color); + } else if (getRotation() == 3) { + int16_t t = x; + x = y; + y = HEIGHT - 1 - t; + y -= w - 1; + drawFastRawVLine(x, y, w, color); + } +} + +/**************************************************************************/ +/*! + @brief Speed optimized vertical line drawing into the raw canvas buffer + @param x Line horizontal start point + @param y Line vertical start point + @param h length of vertical line to be drawn, including first point + @param color Binary (on or off) color to fill with +*/ +/**************************************************************************/ +void GFXcanvas1::drawFastRawVLine(int16_t x, int16_t y, int16_t h, + uint16_t color) { + // x & y already in raw (rotation 0) coordinates, no need to transform. + int16_t row_bytes = ((WIDTH + 7) / 8); + uint8_t *ptr = &buffer[(x / 8) + y * row_bytes]; + + if (color > 0) { +#ifdef __AVR__ + uint8_t bit_mask = pgm_read_byte(&GFXsetBit[x & 7]); +#else + uint8_t bit_mask = (0x80 >> (x & 7)); +#endif + for (int16_t i = 0; i < h; i++) { + *ptr |= bit_mask; + ptr += row_bytes; + } + } else { +#ifdef __AVR__ + uint8_t bit_mask = pgm_read_byte(&GFXclrBit[x & 7]); +#else + uint8_t bit_mask = ~(0x80 >> (x & 7)); +#endif + for (int16_t i = 0; i < h; i++) { + *ptr &= bit_mask; + ptr += row_bytes; + } + } +} + +/**************************************************************************/ +/*! + @brief Speed optimized horizontal line drawing into the raw canvas buffer + @param x Line horizontal start point + @param y Line vertical start point + @param w length of horizontal line to be drawn, including first point + @param color Binary (on or off) color to fill with +*/ +/**************************************************************************/ +void GFXcanvas1::drawFastRawHLine(int16_t x, int16_t y, int16_t w, + uint16_t color) { + // x & y already in raw (rotation 0) coordinates, no need to transform. + int16_t rowBytes = ((WIDTH + 7) / 8); + uint8_t *ptr = &buffer[(x / 8) + y * rowBytes]; + size_t remainingWidthBits = w; + + // check to see if first byte needs to be partially filled + if ((x & 7) > 0) { + // create bit mask for first byte + uint8_t startByteBitMask = 0x00; + for (int8_t i = (x & 7); ((i < 8) && (remainingWidthBits > 0)); i++) { +#ifdef __AVR__ + startByteBitMask |= pgm_read_byte(&GFXsetBit[i]); +#else + startByteBitMask |= (0x80 >> i); +#endif + remainingWidthBits--; + } + if (color > 0) { + *ptr |= startByteBitMask; + } else { + *ptr &= ~startByteBitMask; + } + + ptr++; + } + + // do the next remainingWidthBits bits + if (remainingWidthBits > 0) { + size_t remainingWholeBytes = remainingWidthBits / 8; + size_t lastByteBits = remainingWidthBits % 8; + uint8_t wholeByteColor = color > 0 ? 0xFF : 0x00; + + memset(ptr, wholeByteColor, remainingWholeBytes); + + if (lastByteBits > 0) { + uint8_t lastByteBitMask = 0x00; + for (size_t i = 0; i < lastByteBits; i++) { +#ifdef __AVR__ + lastByteBitMask |= pgm_read_byte(&GFXsetBit[i]); +#else + lastByteBitMask |= (0x80 >> i); +#endif + } + ptr += remainingWholeBytes; + + if (color > 0) { + *ptr |= lastByteBitMask; + } else { + *ptr &= ~lastByteBitMask; + } + } + } +} + +/**************************************************************************/ +/*! + @brief Instatiate a GFX 8-bit canvas context for graphics + @param w Display width, in pixels + @param h Display height, in pixels + @param allocate_buffer If true, a buffer is allocated with malloc. If + false, the subclass must initialize the buffer before any drawing operation, + and free it in the destructor. If false (the default), the buffer is + allocated and freed by the library. +*/ +/**************************************************************************/ +GFXcanvas8::GFXcanvas8(uint16_t w, uint16_t h, bool allocate_buffer) + : Adafruit_GFX(w, h), buffer_owned(allocate_buffer) { + if (allocate_buffer) { + uint32_t bytes = w * h; + if ((buffer = (uint8_t *)malloc(bytes))) { + memset(buffer, 0, bytes); + } + } else + buffer = nullptr; +} + +/**************************************************************************/ +/*! + @brief Delete the canvas, free memory +*/ +/**************************************************************************/ +GFXcanvas8::~GFXcanvas8(void) { + if (buffer && buffer_owned) + free(buffer); +} + +/**************************************************************************/ +/*! + @brief Draw a pixel to the canvas framebuffer + @param x x coordinate + @param y y coordinate + @param color 8-bit Color to fill with. Only lower byte of uint16_t is used. +*/ +/**************************************************************************/ +void GFXcanvas8::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; + } +} + +/**********************************************************************/ +/*! + @brief Get the pixel color value at a given coordinate + @param x x coordinate + @param y y coordinate + @returns The desired pixel's 8-bit color value +*/ +/**********************************************************************/ +uint8_t GFXcanvas8::getPixel(int16_t x, int16_t y) const { + 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; + } + return getRawPixel(x, y); +} + +/**********************************************************************/ +/*! + @brief Get the pixel color value at a given, unrotated coordinate. + This method is intended for hardware drivers to get pixel value + in physical coordinates. + @param x x coordinate + @param y y coordinate + @returns The desired pixel's 8-bit color value +*/ +/**********************************************************************/ +uint8_t GFXcanvas8::getRawPixel(int16_t x, int16_t y) const { + if ((x < 0) || (y < 0) || (x >= WIDTH) || (y >= HEIGHT)) + return 0; + if (buffer) { + return buffer[x + y * WIDTH]; + } + return 0; +} + +/**************************************************************************/ +/*! + @brief Fill the framebuffer completely with one color + @param color 8-bit Color to fill with. Only lower byte of uint16_t is used. +*/ +/**************************************************************************/ +void GFXcanvas8::fillScreen(uint16_t color) { + if (buffer) { + memset(buffer, color, WIDTH * HEIGHT); + } +} + +/**************************************************************************/ +/*! + @brief Speed optimized vertical line drawing + @param x Line horizontal start point + @param y Line vertical start point + @param h Length of vertical line to be drawn, including first point + @param color 8-bit Color to fill with. Only lower byte of uint16_t is + used. +*/ +/**************************************************************************/ +void GFXcanvas8::drawFastVLine(int16_t x, int16_t y, int16_t h, + uint16_t color) { + if (h < 0) { // Convert negative heights to positive equivalent + h *= -1; + y -= h - 1; + if (y < 0) { + h += y; + y = 0; + } + } + + // Edge rejection (no-draw if totally off canvas) + if ((x < 0) || (x >= width()) || (y >= height()) || ((y + h - 1) < 0)) { + return; + } + + if (y < 0) { // Clip top + h += y; + y = 0; + } + if (y + h > height()) { // Clip bottom + h = height() - y; + } + + if (getRotation() == 0) { + drawFastRawVLine(x, y, h, color); + } else if (getRotation() == 1) { + int16_t t = x; + x = WIDTH - 1 - y; + y = t; + x -= h - 1; + drawFastRawHLine(x, y, h, color); + } else if (getRotation() == 2) { + x = WIDTH - 1 - x; + y = HEIGHT - 1 - y; + + y -= h - 1; + drawFastRawVLine(x, y, h, color); + } else if (getRotation() == 3) { + int16_t t = x; + x = y; + y = HEIGHT - 1 - t; + drawFastRawHLine(x, y, h, color); + } +} + +/**************************************************************************/ +/*! + @brief Speed optimized horizontal line drawing + @param x Line horizontal start point + @param y Line vertical start point + @param w Length of horizontal line to be drawn, including 1st point + @param color 8-bit Color to fill with. Only lower byte of uint16_t is + used. +*/ +/**************************************************************************/ +void GFXcanvas8::drawFastHLine(int16_t x, int16_t y, int16_t w, + uint16_t color) { + + if (w < 0) { // Convert negative widths to positive equivalent + w *= -1; + x -= w - 1; + if (x < 0) { + w += x; + x = 0; + } + } + + // Edge rejection (no-draw if totally off canvas) + if ((y < 0) || (y >= height()) || (x >= width()) || ((x + w - 1) < 0)) { + return; + } + + if (x < 0) { // Clip left + w += x; + x = 0; + } + if (x + w >= width()) { // Clip right + w = width() - x; + } + + if (getRotation() == 0) { + drawFastRawHLine(x, y, w, color); + } else if (getRotation() == 1) { + int16_t t = x; + x = WIDTH - 1 - y; + y = t; + drawFastRawVLine(x, y, w, color); + } else if (getRotation() == 2) { + x = WIDTH - 1 - x; + y = HEIGHT - 1 - y; + + x -= w - 1; + drawFastRawHLine(x, y, w, color); + } else if (getRotation() == 3) { + int16_t t = x; + x = y; + y = HEIGHT - 1 - t; + y -= w - 1; + drawFastRawVLine(x, y, w, color); + } +} + +/**************************************************************************/ +/*! + @brief Speed optimized vertical line drawing into the raw canvas buffer + @param x Line horizontal start point + @param y Line vertical start point + @param h length of vertical line to be drawn, including first point + @param color 8-bit Color to fill with. Only lower byte of uint16_t is + used. +*/ +/**************************************************************************/ +void GFXcanvas8::drawFastRawVLine(int16_t x, int16_t y, int16_t h, + uint16_t color) { + // x & y already in raw (rotation 0) coordinates, no need to transform. + uint8_t *buffer_ptr = buffer + y * WIDTH + x; + for (int16_t i = 0; i < h; i++) { + (*buffer_ptr) = color; + buffer_ptr += WIDTH; + } +} + +/**************************************************************************/ +/*! + @brief Speed optimized horizontal line drawing into the raw canvas buffer + @param x Line horizontal start point + @param y Line vertical start point + @param w length of horizontal line to be drawn, including first point + @param color 8-bit Color to fill with. Only lower byte of uint16_t is + used. +*/ +/**************************************************************************/ +void GFXcanvas8::drawFastRawHLine(int16_t x, int16_t y, int16_t w, + uint16_t color) { + // x & y already in raw (rotation 0) coordinates, no need to transform. + memset(buffer + y * WIDTH + x, color, w); +} + +/**************************************************************************/ +/*! + @brief Instatiate a GFX 16-bit canvas context for graphics + @param w Display width, in pixels + @param h Display height, in pixels + @param allocate_buffer If true, a buffer is allocated with malloc. If + false, the subclass must initialize the buffer before any drawing operation, + and free it in the destructor. If false (the default), the buffer is + allocated and freed by the library. +*/ +/**************************************************************************/ +GFXcanvas16::GFXcanvas16(uint16_t w, uint16_t h, bool allocate_buffer) + : Adafruit_GFX(w, h), buffer_owned(allocate_buffer) { + if (allocate_buffer) { + uint32_t bytes = w * h * 2; + if ((buffer = (uint16_t *)malloc(bytes))) { + memset(buffer, 0, bytes); + } + } else { + buffer = nullptr; + } +} + +/**************************************************************************/ +/*! + @brief Delete the canvas, free memory +*/ +/**************************************************************************/ +GFXcanvas16::~GFXcanvas16(void) { + if (buffer && buffer_owned) + free(buffer); +} + +/**************************************************************************/ +/*! + @brief Draw a pixel to the canvas framebuffer + @param x x coordinate + @param y y coordinate + @param color 16-bit 5-6-5 Color to fill with +*/ +/**************************************************************************/ +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; + } +} + +/**********************************************************************/ +/*! + @brief Get the pixel color value at a given coordinate + @param x x coordinate + @param y y coordinate + @returns The desired pixel's 16-bit 5-6-5 color value +*/ +/**********************************************************************/ +uint16_t GFXcanvas16::getPixel(int16_t x, int16_t y) const { + 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; + } + return getRawPixel(x, y); +} + +/**********************************************************************/ +/*! + @brief Get the pixel color value at a given, unrotated coordinate. + This method is intended for hardware drivers to get pixel value + in physical coordinates. + @param x x coordinate + @param y y coordinate + @returns The desired pixel's 16-bit 5-6-5 color value +*/ +/**********************************************************************/ +uint16_t GFXcanvas16::getRawPixel(int16_t x, int16_t y) const { + if ((x < 0) || (y < 0) || (x >= WIDTH) || (y >= HEIGHT)) + return 0; + if (buffer) { + return buffer[x + y * WIDTH]; + } + return 0; +} + +/**************************************************************************/ +/*! + @brief Fill the framebuffer completely with one color + @param color 16-bit 5-6-5 Color to fill with +*/ +/**************************************************************************/ +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 { + uint32_t i, pixels = WIDTH * HEIGHT; + for (i = 0; i < pixels; i++) + buffer[i] = color; + } + } +} + +/**************************************************************************/ +/*! + @brief Reverses the "endian-ness" of each 16-bit pixel within the + canvas; little-endian to big-endian, or big-endian to little. + Most microcontrollers (such as SAMD) are little-endian, while + most displays tend toward big-endianness. All the drawing + functions (including RGB bitmap drawing) take care of this + automatically, but some specialized code (usually involving + DMA) can benefit from having pixel data already in the + display-native order. Note that this does NOT convert to a + SPECIFIC endian-ness, it just flips the bytes within each word. +*/ +/**************************************************************************/ +void GFXcanvas16::byteSwap(void) { + if (buffer) { + uint32_t i, pixels = WIDTH * HEIGHT; + for (i = 0; i < pixels; i++) + buffer[i] = __builtin_bswap16(buffer[i]); + } +} + +/**************************************************************************/ +/*! + @brief Speed optimized vertical line drawing + @param x Line horizontal start point + @param y Line vertical start point + @param h length of vertical line to be drawn, including first point + @param color color 16-bit 5-6-5 Color to draw line with +*/ +/**************************************************************************/ +void GFXcanvas16::drawFastVLine(int16_t x, int16_t y, int16_t h, + uint16_t color) { + if (h < 0) { // Convert negative heights to positive equivalent + h *= -1; + y -= h - 1; + if (y < 0) { + h += y; + y = 0; + } + } + + // Edge rejection (no-draw if totally off canvas) + if ((x < 0) || (x >= width()) || (y >= height()) || ((y + h - 1) < 0)) { + return; + } + + if (y < 0) { // Clip top + h += y; + y = 0; + } + if (y + h > height()) { // Clip bottom + h = height() - y; + } + + if (getRotation() == 0) { + drawFastRawVLine(x, y, h, color); + } else if (getRotation() == 1) { + int16_t t = x; + x = WIDTH - 1 - y; + y = t; + x -= h - 1; + drawFastRawHLine(x, y, h, color); + } else if (getRotation() == 2) { + x = WIDTH - 1 - x; + y = HEIGHT - 1 - y; + + y -= h - 1; + drawFastRawVLine(x, y, h, color); + } else if (getRotation() == 3) { + int16_t t = x; + x = y; + y = HEIGHT - 1 - t; + drawFastRawHLine(x, y, h, color); + } +} + +/**************************************************************************/ +/*! + @brief Speed optimized horizontal line drawing + @param x Line horizontal start point + @param y Line vertical start point + @param w Length of horizontal line to be drawn, including 1st point + @param color Color 16-bit 5-6-5 Color to draw line with +*/ +/**************************************************************************/ +void GFXcanvas16::drawFastHLine(int16_t x, int16_t y, int16_t w, + uint16_t color) { + if (w < 0) { // Convert negative widths to positive equivalent + w *= -1; + x -= w - 1; + if (x < 0) { + w += x; + x = 0; + } + } + + // Edge rejection (no-draw if totally off canvas) + if ((y < 0) || (y >= height()) || (x >= width()) || ((x + w - 1) < 0)) { + return; + } + + if (x < 0) { // Clip left + w += x; + x = 0; + } + if (x + w >= width()) { // Clip right + w = width() - x; + } + + if (getRotation() == 0) { + drawFastRawHLine(x, y, w, color); + } else if (getRotation() == 1) { + int16_t t = x; + x = WIDTH - 1 - y; + y = t; + drawFastRawVLine(x, y, w, color); + } else if (getRotation() == 2) { + x = WIDTH - 1 - x; + y = HEIGHT - 1 - y; + + x -= w - 1; + drawFastRawHLine(x, y, w, color); + } else if (getRotation() == 3) { + int16_t t = x; + x = y; + y = HEIGHT - 1 - t; + y -= w - 1; + drawFastRawVLine(x, y, w, color); + } +} + +/**************************************************************************/ +/*! + @brief Speed optimized vertical line drawing into the raw canvas buffer + @param x Line horizontal start point + @param y Line vertical start point + @param h length of vertical line to be drawn, including first point + @param color color 16-bit 5-6-5 Color to draw line with +*/ +/**************************************************************************/ +void GFXcanvas16::drawFastRawVLine(int16_t x, int16_t y, int16_t h, + uint16_t color) { + // x & y already in raw (rotation 0) coordinates, no need to transform. + uint16_t *buffer_ptr = buffer + y * WIDTH + x; + for (int16_t i = 0; i < h; i++) { + (*buffer_ptr) = color; + buffer_ptr += WIDTH; + } +} + +/**************************************************************************/ +/*! + @brief Speed optimized horizontal line drawing into the raw canvas buffer + @param x Line horizontal start point + @param y Line vertical start point + @param w length of horizontal line to be drawn, including first point + @param color color 16-bit 5-6-5 Color to draw line with +*/ +/**************************************************************************/ +void GFXcanvas16::drawFastRawHLine(int16_t x, int16_t y, int16_t w, + uint16_t color) { + // x & y already in raw (rotation 0) coordinates, no need to transform. + uint32_t buffer_index = y * WIDTH + x; + for (uint32_t i = buffer_index; i < buffer_index + w; i++) { + buffer[i] = color; + } +} diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Adafruit_GFX.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Adafruit_GFX.h new file mode 100644 index 0000000..dd9dc0d --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Adafruit_GFX.h @@ -0,0 +1,406 @@ +#ifndef _ADAFRUIT_GFX_H +#define _ADAFRUIT_GFX_H + +#if ARDUINO >= 100 +#include "Arduino.h" +#include "Print.h" +#else +#include "WProgram.h" +#endif +#include "gfxfont.h" + +#include +#include + +/// A generic graphics superclass that can handle all sorts of drawing. At a +/// minimum you can subclass and provide drawPixel(). At a maximum you can do a +/// ton of overriding to optimize. Used for any/all Adafruit displays! +class Adafruit_GFX : public Print { + +public: + Adafruit_GFX(int16_t w, int16_t h); // Constructor + + /**********************************************************************/ + /*! + @brief Draw to the screen/framebuffer/etc. + Must be overridden in subclass. + @param x X coordinate in pixels + @param y Y coordinate in pixels + @param color 16-bit pixel color. + */ + /**********************************************************************/ + virtual void drawPixel(int16_t x, int16_t y, uint16_t color) = 0; + + // TRANSACTION API / CORE DRAW API + // These MAY be overridden by the subclass to provide device-specific + // optimized code. Otherwise 'generic' versions are used. + virtual void startWrite(void); + virtual void writePixel(int16_t x, int16_t y, uint16_t color); + virtual void writeFillRect(int16_t x, int16_t y, int16_t w, int16_t h, + uint16_t color); + virtual void writeFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color); + virtual void writeFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color); + virtual void writeLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, + uint16_t color); + virtual void endWrite(void); + + // CONTROL API + // These MAY be overridden by the subclass to provide device-specific + // optimized code. Otherwise 'generic' versions are used. + virtual void setRotation(uint8_t r); + virtual void invertDisplay(bool i); + + // BASIC DRAW API + // These MAY be overridden by the subclass to provide device-specific + // optimized code. Otherwise 'generic' versions are used. + + // It's good to implement those, even if using transaction API + 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); + virtual void fillRect(int16_t x, int16_t y, int16_t w, int16_t h, + uint16_t color); + virtual void fillScreen(uint16_t color); + // Optional and probably not necessary to change + virtual void drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, + uint16_t color); + virtual void drawRect(int16_t x, int16_t y, int16_t w, int16_t h, + uint16_t color); + + // These exist only with Adafruit_GFX (no subclass overrides) + void drawCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color); + void drawCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername, + uint16_t color); + void fillCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color); + void fillCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername, + int16_t delta, uint16_t color); + void drawEllipse(int16_t x0, int16_t y0, int16_t rw, int16_t rh, + uint16_t color); + void fillEllipse(int16_t x0, int16_t y0, int16_t rw, int16_t rh, + uint16_t color); + void drawTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, + int16_t y2, uint16_t color); + void fillTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, + int16_t y2, uint16_t color); + void drawRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h, + int16_t radius, uint16_t color); + void fillRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h, + int16_t radius, uint16_t color); + void drawRotatedRect(int16_t cenX, int16_t cenY, int16_t w, int16_t h, + int16_t angleDeg, uint16_t color); + void fillRotatedRect(int16_t cenX, int16_t cenY, int16_t w, int16_t h, + int16_t angleDeg, uint16_t color); + void rotatePoint(int16_t &x0, int16_t &y0, int16_t angleDeg); + void drawBitmap(int16_t x, int16_t y, const uint8_t bitmap[], int16_t w, + int16_t h, uint16_t color); + void drawBitmap(int16_t x, int16_t y, const uint8_t bitmap[], int16_t w, + int16_t h, uint16_t color, uint16_t bg); + void drawBitmap(int16_t x, int16_t y, uint8_t *bitmap, int16_t w, int16_t h, + uint16_t color); + void drawBitmap(int16_t x, int16_t y, uint8_t *bitmap, int16_t w, int16_t h, + uint16_t color, uint16_t bg); + void drawXBitmap(int16_t x, int16_t y, const uint8_t bitmap[], int16_t w, + int16_t h, uint16_t color); + void drawGrayscaleBitmap(int16_t x, int16_t y, const uint8_t bitmap[], + int16_t w, int16_t h); + void drawGrayscaleBitmap(int16_t x, int16_t y, uint8_t *bitmap, int16_t w, + int16_t h); + void drawGrayscaleBitmap(int16_t x, int16_t y, const uint8_t bitmap[], + const uint8_t mask[], int16_t w, int16_t h); + void drawGrayscaleBitmap(int16_t x, int16_t y, uint8_t *bitmap, uint8_t *mask, + int16_t w, int16_t h); + void drawRGBBitmap(int16_t x, int16_t y, const uint16_t bitmap[], int16_t w, + int16_t h); + void drawRGBBitmap(int16_t x, int16_t y, uint16_t *bitmap, int16_t w, + int16_t h); + void drawRGBBitmap(int16_t x, int16_t y, const uint16_t bitmap[], + const uint8_t mask[], int16_t w, int16_t h); + void drawRGBBitmap(int16_t x, int16_t y, uint16_t *bitmap, uint8_t *mask, + int16_t w, int16_t h); + void drawChar(int16_t x, int16_t y, unsigned char c, uint16_t color, + uint16_t bg, uint8_t size); + void drawChar(int16_t x, int16_t y, unsigned char c, uint16_t color, + uint16_t bg, uint8_t size_x, uint8_t size_y); + void getTextBounds(const char *string, int16_t x, int16_t y, int16_t *x1, + int16_t *y1, uint16_t *w, uint16_t *h); + void getTextBounds(const __FlashStringHelper *s, int16_t x, int16_t y, + int16_t *x1, int16_t *y1, uint16_t *w, uint16_t *h); + void getTextBounds(const String &str, int16_t x, int16_t y, int16_t *x1, + int16_t *y1, uint16_t *w, uint16_t *h); + void setTextSize(uint8_t s); + void setTextSize(uint8_t sx, uint8_t sy); + void setFont(const GFXfont *f = NULL); + + /**********************************************************************/ + /*! + @brief Set text cursor location + @param x X coordinate in pixels + @param y Y coordinate in pixels + */ + /**********************************************************************/ + void setCursor(int16_t x, int16_t y) { + cursor_x = x; + cursor_y = y; + } + + /**********************************************************************/ + /*! + @brief Set text font color with transparant background + @param c 16-bit 5-6-5 Color to draw text with + @note For 'transparent' background, background and foreground + are set to same color rather than using a separate flag. + */ + /**********************************************************************/ + void setTextColor(uint16_t c) { textcolor = textbgcolor = c; } + + /**********************************************************************/ + /*! + @brief Set text font color with custom background color + @param c 16-bit 5-6-5 Color to draw text with + @param bg 16-bit 5-6-5 Color to draw background/fill with + */ + /**********************************************************************/ + void setTextColor(uint16_t c, uint16_t bg) { + textcolor = c; + textbgcolor = bg; + } + + /**********************************************************************/ + /*! + @brief Set whether text that is too long for the screen width should + automatically wrap around to the next line (else clip right). + @param w true for wrapping, false for clipping + */ + /**********************************************************************/ + void setTextWrap(bool w) { wrap = w; } + + /**********************************************************************/ + /*! + @brief 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. + @param x true = enable (new behavior), false = disable (old behavior) + */ + /**********************************************************************/ + void cp437(bool x = true) { _cp437 = x; } + + using Print::write; +#if ARDUINO >= 100 + virtual size_t write(uint8_t); +#else + virtual void write(uint8_t); +#endif + + /************************************************************************/ + /*! + @brief Get width of the display, accounting for current rotation + @returns Width in pixels + */ + /************************************************************************/ + int16_t width(void) const { return _width; }; + + /************************************************************************/ + /*! + @brief Get height of the display, accounting for current rotation + @returns Height in pixels + */ + /************************************************************************/ + int16_t height(void) const { return _height; } + + /************************************************************************/ + /*! + @brief Get rotation setting for display + @returns 0 thru 3 corresponding to 4 cardinal rotations + */ + /************************************************************************/ + uint8_t getRotation(void) const { return rotation; } + + // get current cursor position (get rotation safe maximum values, + // using: width() for x, height() for y) + /************************************************************************/ + /*! + @brief Get text cursor X location + @returns X coordinate in pixels + */ + /************************************************************************/ + int16_t getCursorX(void) const { return cursor_x; } + + /************************************************************************/ + /*! + @brief Get text cursor Y location + @returns Y coordinate in pixels + */ + /************************************************************************/ + int16_t getCursorY(void) const { return cursor_y; }; + +protected: + void charBounds(unsigned char c, int16_t *x, int16_t *y, int16_t *minx, + int16_t *miny, int16_t *maxx, int16_t *maxy); + int16_t WIDTH; ///< This is the 'raw' display width - never changes + int16_t HEIGHT; ///< This is the 'raw' display height - never changes + int16_t _width; ///< Display width as modified by current rotation + int16_t _height; ///< Display height as modified by current rotation + int16_t cursor_x; ///< x location to start print()ing text + int16_t cursor_y; ///< y location to start print()ing text + uint16_t textcolor; ///< 16-bit background color for print() + uint16_t textbgcolor; ///< 16-bit text color for print() + uint8_t textsize_x; ///< Desired magnification in X-axis of text to print() + uint8_t textsize_y; ///< Desired magnification in Y-axis of text to print() + uint8_t rotation; ///< Display rotation (0 thru 3) + bool wrap; ///< If set, 'wrap' text at right edge of display + bool _cp437; ///< If set, use correct CP437 charset (default is off) + GFXfont *gfxFont; ///< Pointer to special font +}; + +/// A simple drawn button UI element +class Adafruit_GFX_Button { + +public: + Adafruit_GFX_Button(void); + // "Classic" initButton() uses center & size + void initButton(Adafruit_GFX *gfx, int16_t x, int16_t y, uint16_t w, + uint16_t h, uint16_t outline, uint16_t fill, + uint16_t textcolor, char *label, uint8_t textsize); + void initButton(Adafruit_GFX *gfx, int16_t x, int16_t y, uint16_t w, + uint16_t h, uint16_t outline, uint16_t fill, + uint16_t textcolor, char *label, uint8_t textsize_x, + uint8_t textsize_y); + // New/alt initButton() uses upper-left corner & size + void initButtonUL(Adafruit_GFX *gfx, int16_t x1, int16_t y1, uint16_t w, + uint16_t h, uint16_t outline, uint16_t fill, + uint16_t textcolor, char *label, uint8_t textsize); + void initButtonUL(Adafruit_GFX *gfx, int16_t x1, int16_t y1, uint16_t w, + uint16_t h, uint16_t outline, uint16_t fill, + uint16_t textcolor, char *label, uint8_t textsize_x, + uint8_t textsize_y); + void drawButton(bool inverted = false); + bool contains(int16_t x, int16_t y); + + /**********************************************************************/ + /*! + @brief Sets button state, should be done by some touch function + @param p True for pressed, false for not. + */ + /**********************************************************************/ + void press(bool p) { + laststate = currstate; + currstate = p; + } + + bool justPressed(); + bool justReleased(); + + /**********************************************************************/ + /*! + @brief Query whether the button is currently pressed + @returns True if pressed + */ + /**********************************************************************/ + bool isPressed(void) { return currstate; }; + +private: + Adafruit_GFX *_gfx; + int16_t _x1, _y1; // Coordinates of top-left corner + uint16_t _w, _h; + uint8_t _textsize_x; + uint8_t _textsize_y; + uint16_t _outlinecolor, _fillcolor, _textcolor; + char _label[10]; + + bool currstate, laststate; +}; + +/// A GFX 1-bit canvas context for graphics +class GFXcanvas1 : public Adafruit_GFX { +public: + GFXcanvas1(uint16_t w, uint16_t h, bool allocate_buffer = true); + ~GFXcanvas1(void); + void drawPixel(int16_t x, int16_t y, uint16_t color); + void fillScreen(uint16_t color); + void drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color); + void drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color); + bool getPixel(int16_t x, int16_t y) const; + /**********************************************************************/ + /*! + @brief Get a pointer to the internal buffer memory + @returns A pointer to the allocated buffer + */ + /**********************************************************************/ + uint8_t *getBuffer(void) const { return buffer; } + +protected: + bool getRawPixel(int16_t x, int16_t y) const; + void drawFastRawVLine(int16_t x, int16_t y, int16_t h, uint16_t color); + void drawFastRawHLine(int16_t x, int16_t y, int16_t w, uint16_t color); + uint8_t *buffer; ///< Raster data: no longer private, allow subclass access + bool buffer_owned; ///< If true, destructor will free buffer, else it will do + ///< nothing + +private: +#ifdef __AVR__ + // Bitmask tables of 0x80>>X and ~(0x80>>X), because X>>Y is slow on AVR + static const uint8_t PROGMEM GFXsetBit[], GFXclrBit[]; +#endif +}; + +/// A GFX 8-bit canvas context for graphics +class GFXcanvas8 : public Adafruit_GFX { +public: + GFXcanvas8(uint16_t w, uint16_t h, bool allocate_buffer = true); + ~GFXcanvas8(void); + void drawPixel(int16_t x, int16_t y, uint16_t color); + void fillScreen(uint16_t color); + void drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color); + void drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color); + uint8_t getPixel(int16_t x, int16_t y) const; + /**********************************************************************/ + /*! + @brief Get a pointer to the internal buffer memory + @returns A pointer to the allocated buffer + */ + /**********************************************************************/ + uint8_t *getBuffer(void) const { return buffer; } + +protected: + uint8_t getRawPixel(int16_t x, int16_t y) const; + void drawFastRawVLine(int16_t x, int16_t y, int16_t h, uint16_t color); + void drawFastRawHLine(int16_t x, int16_t y, int16_t w, uint16_t color); + uint8_t *buffer; ///< Raster data: no longer private, allow subclass access + bool buffer_owned; ///< If true, destructor will free buffer, else it will do + ///< nothing +}; + +/// A GFX 16-bit canvas context for graphics +class GFXcanvas16 : public Adafruit_GFX { +public: + GFXcanvas16(uint16_t w, uint16_t h, bool allocate_buffer = true); + ~GFXcanvas16(void); + void drawPixel(int16_t x, int16_t y, uint16_t color); + void fillScreen(uint16_t color); + void byteSwap(void); + void drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color); + void drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color); + uint16_t getPixel(int16_t x, int16_t y) const; + /**********************************************************************/ + /*! + @brief Get a pointer to the internal buffer memory + @returns A pointer to the allocated buffer + */ + /**********************************************************************/ + uint16_t *getBuffer(void) const { return buffer; } + +protected: + uint16_t getRawPixel(int16_t x, int16_t y) const; + void drawFastRawVLine(int16_t x, int16_t y, int16_t h, uint16_t color); + void drawFastRawHLine(int16_t x, int16_t y, int16_t w, uint16_t color); + uint16_t *buffer; ///< Raster data: no longer private, allow subclass access + bool buffer_owned; ///< If true, destructor will free buffer, else it will do + ///< nothing +}; + +#endif // _ADAFRUIT_GFX_H diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Adafruit_GrayOLED.cpp b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Adafruit_GrayOLED.cpp new file mode 100644 index 0000000..e3cbc72 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Adafruit_GrayOLED.cpp @@ -0,0 +1,422 @@ +/*! + * @file Adafruit_GrayOLED.cpp + * + * This is documentation for Adafruit's generic library for grayscale + * OLED displays: http://www.adafruit.com/category/63_98 + * + * These displays use I2C or SPI to communicate. I2C requires 2 pins + * (SCL+SDA) and optionally a RESET pin. SPI requires 4 pins (MOSI, SCK, + * select, data/command) and optionally a reset pin. Hardware SPI or + * 'bitbang' software SPI are both supported. + * + * Adafruit invests time and resources providing this open source code, + * please support Adafruit and open-source hardware by purchasing + * products from Adafruit! + * + */ + +// Not for ATtiny, at all +#if !defined(__AVR_ATtiny85__) && !defined(__AVR_ATtiny84__) + +#include "Adafruit_GrayOLED.h" +#include + +// SOME DEFINES AND STATIC VARIABLES USED INTERNALLY ----------------------- + +#define grayoled_swap(a, b) \ + (((a) ^= (b)), ((b) ^= (a)), ((a) ^= (b))) ///< No-temp-var swap operation + +// CONSTRUCTORS, DESTRUCTOR ------------------------------------------------ + +/*! + @brief Constructor for I2C-interfaced OLED displays. + @param bpp Bits per pixel, 1 for monochrome, 4 for 16-gray + @param w + Display width in pixels + @param h + Display height in pixels + @param twi + Pointer to an existing TwoWire instance (e.g. &Wire, the + microcontroller's primary I2C bus). + @param rst_pin + Reset pin (using Arduino pin numbering), or -1 if not used + (some displays might be wired to share the microcontroller's + reset pin). + @param clkDuring + Speed (in Hz) for Wire transmissions in library calls. + Defaults to 400000 (400 KHz), a known 'safe' value for most + microcontrollers, and meets the OLED datasheet spec. + Some systems can operate I2C faster (800 KHz for ESP32, 1 MHz + for many other 32-bit MCUs), and some (perhaps not all) + Many OLED's can work with this -- so it's optionally be specified + here and is not a default behavior. (Ignored if using pre-1.5.7 + Arduino software, which operates I2C at a fixed 100 KHz.) + @param clkAfter + Speed (in Hz) for Wire transmissions following library + calls. Defaults to 100000 (100 KHz), the default Arduino Wire + speed. This is done rather than leaving it at the 'during' speed + because other devices on the I2C bus might not be compatible + with the faster rate. (Ignored if using pre-1.5.7 Arduino + software, which operates I2C at a fixed 100 KHz.) + @note Call the object's begin() function before use -- buffer + allocation is performed there! +*/ +Adafruit_GrayOLED::Adafruit_GrayOLED(uint8_t bpp, uint16_t w, uint16_t h, + TwoWire *twi, int16_t rst_pin, + uint32_t clkDuring, uint32_t clkAfter) + : Adafruit_GFX(w, h), i2c_preclk(clkDuring), i2c_postclk(clkAfter), + buffer(NULL), dcPin(-1), csPin(-1), rstPin(rst_pin), _bpp(bpp) { + i2c_dev = NULL; + _theWire = twi; +} + +/*! + @brief Constructor for SPI GrayOLED displays, using software (bitbang) + SPI. + @param bpp Bits per pixel, 1 for monochrome, 4 for 16-gray + @param w + Display width in pixels + @param h + Display height in pixels + @param mosi_pin + MOSI (master out, slave in) pin (using Arduino pin numbering). + This transfers serial data from microcontroller to display. + @param sclk_pin + SCLK (serial clock) pin (using Arduino pin numbering). + This clocks each bit from MOSI. + @param dc_pin + Data/command pin (using Arduino pin numbering), selects whether + display is receiving commands (low) or data (high). + @param rst_pin + Reset pin (using Arduino pin numbering), or -1 if not used + (some displays might be wired to share the microcontroller's + reset pin). + @param cs_pin + Chip-select pin (using Arduino pin numbering) for sharing the + bus with other devices. Active low. + @note Call the object's begin() function before use -- buffer + allocation is performed there! +*/ +Adafruit_GrayOLED::Adafruit_GrayOLED(uint8_t bpp, uint16_t w, uint16_t h, + int16_t mosi_pin, int16_t sclk_pin, + int16_t dc_pin, int16_t rst_pin, + int16_t cs_pin) + : Adafruit_GFX(w, h), dcPin(dc_pin), csPin(cs_pin), rstPin(rst_pin), + _bpp(bpp) { + + spi_dev = new Adafruit_SPIDevice(cs_pin, sclk_pin, -1, mosi_pin, 1000000); +} + +/*! + @brief Constructor for SPI GrayOLED displays, using native hardware SPI. + @param bpp Bits per pixel, 1 for monochrome, 4 for 16-gray + @param w + Display width in pixels + @param h + Display height in pixels + @param spi + Pointer to an existing SPIClass instance (e.g. &SPI, the + microcontroller's primary SPI bus). + @param dc_pin + Data/command pin (using Arduino pin numbering), selects whether + display is receiving commands (low) or data (high). + @param rst_pin + Reset pin (using Arduino pin numbering), or -1 if not used + (some displays might be wired to share the microcontroller's + reset pin). + @param cs_pin + Chip-select pin (using Arduino pin numbering) for sharing the + bus with other devices. Active low. + @param bitrate + SPI clock rate for transfers to this display. Default if + unspecified is 8000000UL (8 MHz). + @note Call the object's begin() function before use -- buffer + allocation is performed there! +*/ +Adafruit_GrayOLED::Adafruit_GrayOLED(uint8_t bpp, uint16_t w, uint16_t h, + SPIClass *spi, int16_t dc_pin, + int16_t rst_pin, int16_t cs_pin, + uint32_t bitrate) + : Adafruit_GFX(w, h), dcPin(dc_pin), csPin(cs_pin), rstPin(rst_pin), + _bpp(bpp) { + + spi_dev = new Adafruit_SPIDevice(cs_pin, bitrate, SPI_BITORDER_MSBFIRST, + SPI_MODE0, spi); +} + +/*! + @brief Destructor for Adafruit_GrayOLED object. +*/ +Adafruit_GrayOLED::~Adafruit_GrayOLED(void) { + if (buffer) { + free(buffer); + buffer = NULL; + } + if (spi_dev) + delete spi_dev; + if (i2c_dev) + delete i2c_dev; +} + +// LOW-LEVEL UTILS --------------------------------------------------------- + +/*! + @brief Issue single command byte to OLED, using I2C or hard/soft SPI as + needed. + @param c The single byte command +*/ +void Adafruit_GrayOLED::oled_command(uint8_t c) { + if (i2c_dev) { // I2C + uint8_t buf[2] = {0x00, c}; // Co = 0, D/C = 0 + i2c_dev->write(buf, 2); + } else { // SPI (hw or soft) -- transaction started in calling function + digitalWrite(dcPin, LOW); + spi_dev->write(&c, 1); + } +} + +// Issue list of commands to GrayOLED +/*! + @brief Issue multiple bytes of commands OLED, using I2C or hard/soft SPI as + needed. + @param c Pointer to the command array + @param n The number of bytes in the command array + @returns True for success on ability to write the data in I2C. +*/ + +bool Adafruit_GrayOLED::oled_commandList(const uint8_t *c, uint8_t n) { + if (i2c_dev) { // I2C + uint8_t dc_byte = 0x00; // Co = 0, D/C = 0 + if (!i2c_dev->write((uint8_t *)c, n, true, &dc_byte, 1)) { + return false; + } + } else { // SPI -- transaction started in calling function + digitalWrite(dcPin, LOW); + if (!spi_dev->write((uint8_t *)c, n)) { + return false; + } + } + return true; +} + +// ALLOCATE & INIT DISPLAY ------------------------------------------------- + +/*! + @brief Allocate RAM for image buffer, initialize peripherals and pins. + Note that subclasses must call this before other begin() init + @param addr + I2C address of corresponding oled display. + SPI displays (hardware or software) do not use addresses, but + this argument is still required. Default if unspecified is 0x3C. + @param reset + If true, and if the reset pin passed to the constructor is + valid, a hard reset will be performed before initializing the + display. If using multiple oled displays on the same bus, and + if they all share the same reset pin, you should only pass true + on the first display being initialized, false on all others, + else the already-initialized displays would be reset. Default if + unspecified is true. + @return true on successful allocation/init, false otherwise. + Well-behaved code should check the return value before + proceeding. + @note MUST call this function before any drawing or updates! +*/ +bool Adafruit_GrayOLED::_init(uint8_t addr, bool reset) { + + // attempt to malloc the bitmap framebuffer + if ((!buffer) && + !(buffer = (uint8_t *)malloc(_bpp * WIDTH * ((HEIGHT + 7) / 8)))) { + return false; + } + + // Reset OLED if requested and reset pin specified in constructor + if (reset && (rstPin >= 0)) { + pinMode(rstPin, OUTPUT); + digitalWrite(rstPin, HIGH); + delay(10); // VDD goes high at start, pause + digitalWrite(rstPin, LOW); // Bring reset low + delay(10); // Wait 10 ms + digitalWrite(rstPin, HIGH); // Bring out of reset + delay(10); + } + + // Setup pin directions + if (_theWire) { // using I2C + i2c_dev = new Adafruit_I2CDevice(addr, _theWire); + // look for i2c address: + if (!i2c_dev || !i2c_dev->begin()) { + return false; + } + } else { // Using one of the SPI modes, either soft or hardware + if (!spi_dev || !spi_dev->begin()) { + return false; + } + pinMode(dcPin, OUTPUT); // Set data/command pin as output + } + + clearDisplay(); + + // set max dirty window + window_x1 = 0; + window_y1 = 0; + window_x2 = WIDTH - 1; + window_y2 = HEIGHT - 1; + + return true; // Success +} + +// DRAWING FUNCTIONS ------------------------------------------------------- + +/*! + @brief Set/clear/invert a single pixel. This is also invoked by the + Adafruit_GFX library in generating many higher-level graphics + primitives. + @param x + Column of display -- 0 at left to (screen width - 1) at right. + @param y + Row of display -- 0 at top to (screen height -1) at bottom. + @param color + Pixel color, one of: MONOOLED_BLACK, MONOOLED_WHITE or + MONOOLED_INVERT. + @note Changes buffer contents only, no immediate effect on display. + Follow up with a call to display(), or with other graphics + commands as needed by one's own application. +*/ +void Adafruit_GrayOLED::drawPixel(int16_t x, int16_t y, uint16_t color) { + if ((x >= 0) && (x < width()) && (y >= 0) && (y < height())) { + // Pixel is in-bounds. Rotate coordinates if needed. + switch (getRotation()) { + case 1: + grayoled_swap(x, y); + x = WIDTH - x - 1; + break; + case 2: + x = WIDTH - x - 1; + y = HEIGHT - y - 1; + break; + case 3: + grayoled_swap(x, y); + y = HEIGHT - y - 1; + break; + } + + // adjust dirty window + window_x1 = min(window_x1, x); + window_y1 = min(window_y1, y); + window_x2 = max(window_x2, x); + window_y2 = max(window_y2, y); + + if (_bpp == 1) { + switch (color) { + case MONOOLED_WHITE: + buffer[x + (y / 8) * WIDTH] |= (1 << (y & 7)); + break; + case MONOOLED_BLACK: + buffer[x + (y / 8) * WIDTH] &= ~(1 << (y & 7)); + break; + case MONOOLED_INVERSE: + buffer[x + (y / 8) * WIDTH] ^= (1 << (y & 7)); + break; + } + } + if (_bpp == 4) { + uint8_t *pixelptr = &buffer[x / 2 + (y * WIDTH / 2)]; + // Serial.printf("(%d, %d) -> offset %d\n", x, y, x/2 + (y * WIDTH / 2)); + if (x % 2 == 0) { // even, left nibble + uint8_t t = pixelptr[0] & 0x0F; + t |= (color & 0xF) << 4; + pixelptr[0] = t; + } else { // odd, right lower nibble + uint8_t t = pixelptr[0] & 0xF0; + t |= color & 0xF; + pixelptr[0] = t; + } + } + } +} + +/*! + @brief Clear contents of display buffer (set all pixels to off). + @note Changes buffer contents only, no immediate effect on display. + Follow up with a call to display(), or with other graphics + commands as needed by one's own application. +*/ +void Adafruit_GrayOLED::clearDisplay(void) { + memset(buffer, 0, _bpp * WIDTH * ((HEIGHT + 7) / 8)); + // set max dirty window + window_x1 = 0; + window_y1 = 0; + window_x2 = WIDTH - 1; + window_y2 = HEIGHT - 1; +} + +/*! + @brief Return color of a single pixel in display buffer. + @param x + Column of display -- 0 at left to (screen width - 1) at right. + @param y + Row of display -- 0 at top to (screen height -1) at bottom. + @return true if pixel is set (usually MONOOLED_WHITE, unless display invert + mode is enabled), false if clear (MONOOLED_BLACK). + @note Reads from buffer contents; may not reflect current contents of + screen if display() has not been called. +*/ +bool Adafruit_GrayOLED::getPixel(int16_t x, int16_t y) { + if ((x >= 0) && (x < width()) && (y >= 0) && (y < height())) { + // Pixel is in-bounds. Rotate coordinates if needed. + switch (getRotation()) { + case 1: + grayoled_swap(x, y); + x = WIDTH - x - 1; + break; + case 2: + x = WIDTH - x - 1; + y = HEIGHT - y - 1; + break; + case 3: + grayoled_swap(x, y); + y = HEIGHT - y - 1; + break; + } + return (buffer[x + (y / 8) * WIDTH] & (1 << (y & 7))); + } + return false; // Pixel out of bounds +} + +/*! + @brief Get base address of display buffer for direct reading or writing. + @return Pointer to an unsigned 8-bit array, column-major, columns padded + to full byte boundary if needed. +*/ +uint8_t *Adafruit_GrayOLED::getBuffer(void) { return buffer; } + +// OTHER HARDWARE SETTINGS ------------------------------------------------- + +/*! + @brief Enable or disable display invert mode (white-on-black vs + black-on-white). Handy for testing! + @param i + If true, switch to invert mode (black-on-white), else normal + mode (white-on-black). + @note This has an immediate effect on the display, no need to call the + display() function -- buffer contents are not changed, rather a + different pixel mode of the display hardware is used. When + enabled, drawing MONOOLED_BLACK (value 0) pixels will actually draw + white, MONOOLED_WHITE (value 1) will draw black. +*/ +void Adafruit_GrayOLED::invertDisplay(bool i) { + oled_command(i ? GRAYOLED_INVERTDISPLAY : GRAYOLED_NORMALDISPLAY); +} + +/*! + @brief Adjust the display contrast. + @param level The contrast level from 0 to 0x7F + @note This has an immediate effect on the display, no need to call the + display() function -- buffer contents are not changed. +*/ +void Adafruit_GrayOLED::setContrast(uint8_t level) { + uint8_t cmd[] = {GRAYOLED_SETCONTRAST, level}; + oled_commandList(cmd, 2); +} + +#endif /* ATTIN85 not supported */ diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Adafruit_GrayOLED.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Adafruit_GrayOLED.h new file mode 100644 index 0000000..4c836a4 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Adafruit_GrayOLED.h @@ -0,0 +1,101 @@ +/*! + * @file Adafruit_GrayOLED.h + * + * This is part of for Adafruit's GFX library, supplying generic support + * for grayscale OLED displays: http://www.adafruit.com/category/63_98 + * + * These displays use I2C or SPI to communicate. I2C requires 2 pins + * (SCL+SDA) and optionally a RESET pin. SPI requires 4 pins (MOSI, SCK, + * select, data/command) and optionally a reset pin. Hardware SPI or + * 'bitbang' software SPI are both supported. + * + * 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, with + * contributions from the open source community. + * + * BSD license, all text above, and the splash screen header file, + * must be included in any redistribution. + * + */ + +#ifndef _Adafruit_GRAYOLED_H_ +#define _Adafruit_GRAYOLED_H_ + +// Not for ATtiny, at all +#if !defined(__AVR_ATtiny85__) && !defined(__AVR_ATtiny84__) + +#include +#include +#include +#include +#include + +#define GRAYOLED_SETCONTRAST 0x81 ///< Generic contrast for almost all OLEDs +#define GRAYOLED_NORMALDISPLAY 0xA6 ///< Generic non-invert for almost all OLEDs +#define GRAYOLED_INVERTDISPLAY 0xA7 ///< Generic invert for almost all OLEDs + +#define MONOOLED_BLACK 0 ///< Default black 'color' for monochrome OLEDS +#define MONOOLED_WHITE 1 ///< Default white 'color' for monochrome OLEDS +#define MONOOLED_INVERSE 2 ///< Default inversion command for monochrome OLEDS + +/*! + @brief Class that stores state and functions for interacting with + generic grayscale OLED displays. +*/ +class Adafruit_GrayOLED : public Adafruit_GFX { +public: + Adafruit_GrayOLED(uint8_t bpp, uint16_t w, uint16_t h, TwoWire *twi = &Wire, + int16_t rst_pin = -1, uint32_t preclk = 400000, + uint32_t postclk = 100000); + Adafruit_GrayOLED(uint8_t bpp, uint16_t w, uint16_t h, int16_t mosi_pin, + int16_t sclk_pin, int16_t dc_pin, int16_t rst_pin, + int16_t cs_pin); + Adafruit_GrayOLED(uint8_t bpp, uint16_t w, uint16_t h, SPIClass *spi, + int16_t dc_pin, int16_t rst_pin, int16_t cs_pin, + uint32_t bitrate = 8000000UL); + + ~Adafruit_GrayOLED(void); + + /** + @brief The function that sub-classes define that writes out the buffer to + the display over I2C or SPI + **/ + virtual void display(void) = 0; + void clearDisplay(void); + void invertDisplay(bool i); + void setContrast(uint8_t contrastlevel); + void drawPixel(int16_t x, int16_t y, uint16_t color); + bool getPixel(int16_t x, int16_t y); + uint8_t *getBuffer(void); + + void oled_command(uint8_t c); + bool oled_commandList(const uint8_t *c, uint8_t n); + +protected: + bool _init(uint8_t i2caddr = 0x3C, bool reset = true); + + Adafruit_SPIDevice *spi_dev = NULL; ///< The SPI interface BusIO device + Adafruit_I2CDevice *i2c_dev = NULL; ///< The I2C interface BusIO device + int32_t i2c_preclk = 400000, ///< Configurable 'high speed' I2C rate + i2c_postclk = 100000; ///< Configurable 'low speed' I2C rate + uint8_t *buffer = NULL; ///< Internal 1:1 framebuffer of display mem + + int16_t window_x1, ///< Dirty tracking window minimum x + window_y1, ///< Dirty tracking window minimum y + window_x2, ///< Dirty tracking window maximum x + window_y2; ///< Dirty tracking window maximum y + + int dcPin, ///< The Arduino pin connected to D/C (for SPI) + csPin, ///< The Arduino pin connected to CS (for SPI) + rstPin; ///< The Arduino pin connected to reset (-1 if unused) + + uint8_t _bpp = 1; ///< Bits per pixel color for this display +private: + TwoWire *_theWire = NULL; ///< The underlying hardware I2C +}; + +#endif // end __AVR_ATtiny85__ __AVR_ATtiny84__ +#endif // _Adafruit_GrayOLED_H_ diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Adafruit_SPITFT.cpp b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Adafruit_SPITFT.cpp new file mode 100644 index 0000000..870979b --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Adafruit_SPITFT.cpp @@ -0,0 +1,2621 @@ +/*! + * @file Adafruit_SPITFT.cpp + * + * @mainpage Adafruit SPI TFT Displays (and some others) + * + * @section intro_sec Introduction + * + * Part of Adafruit's GFX graphics library. Originally this class was + * written to handle a range of color TFT displays connected via SPI, + * but over time this library and some display-specific subclasses have + * mutated to include some color OLEDs as well as parallel-interfaced + * displays. The name's been kept for the sake of older code. + * + * Adafruit invests time and resources providing this open source code, + * please support Adafruit and open-source hardware by purchasing + * products from Adafruit! + + * @section dependencies Dependencies + * + * This library depends on + * Adafruit_GFX + * being present on your system. Please make sure you have installed the latest + * version before using this library. + * + * @section author Author + * + * Written by Limor "ladyada" Fried for Adafruit Industries, + * with contributions from the open source community. + * + * @section license License + * + * BSD license, all text here must be included in any redistribution. + */ + +// Not for ATtiny, at all +#if !defined(__AVR_ATtiny85__) && !defined(__AVR_ATtiny84__) + +#include "Adafruit_SPITFT.h" + +#if defined(__AVR__) +#if defined(__AVR_XMEGA__) // only tested with __AVR_ATmega4809__ +#define AVR_WRITESPI(x) \ + for (SPI0_DATA = (x); (!(SPI0_INTFLAGS & _BV(SPI_IF_bp)));) +#elif defined(__LGT8F__) +#define AVR_WRITESPI(x) \ + SPDR = (x); \ + asm volatile("nop"); \ + while ((SPFR & _BV(RDEMPT))) \ + ; \ + SPFR = _BV(RDEMPT) | _BV(WREMPT) +#else +#define AVR_WRITESPI(x) for (SPDR = (x); (!(SPSR & _BV(SPIF)));) +#endif +#endif + +#if defined(PORT_IOBUS) +// On SAMD21, redefine digitalPinToPort() to use the slightly-faster +// PORT_IOBUS rather than PORT (not needed on SAMD51). +#undef digitalPinToPort +#define digitalPinToPort(P) (&(PORT_IOBUS->Group[g_APinDescription[P].ulPort])) +#endif // end PORT_IOBUS + +#if defined(USE_SPI_DMA) && (defined(__SAMD51__) || defined(ARDUINO_SAMD_ZERO)) +// #pragma message ("GFX DMA IS ENABLED. HIGHLY EXPERIMENTAL.") +#include "wiring_private.h" // pinPeripheral() function +#include +#include // memalign() function +#define tcNum 2 // Timer/Counter for parallel write strobe PWM +#define wrPeripheral PIO_CCL // Use CCL to invert write strobe + +// DMA transfer-in-progress indicator and callback +static volatile bool dma_busy = false; +static void dma_callback(Adafruit_ZeroDMA *dma) { dma_busy = false; } + +#if defined(__SAMD51__) +// Timer/counter info by index # +static const struct { + Tc *tc; // -> Timer/Counter base address + int gclk; // GCLK ID + int evu; // EVSYS user ID +} tcList[] = {{TC0, TC0_GCLK_ID, EVSYS_ID_USER_TC0_EVU}, + {TC1, TC1_GCLK_ID, EVSYS_ID_USER_TC1_EVU}, + {TC2, TC2_GCLK_ID, EVSYS_ID_USER_TC2_EVU}, + {TC3, TC3_GCLK_ID, EVSYS_ID_USER_TC3_EVU}, +#if defined(TC4) + {TC4, TC4_GCLK_ID, EVSYS_ID_USER_TC4_EVU}, +#endif +#if defined(TC5) + {TC5, TC5_GCLK_ID, EVSYS_ID_USER_TC5_EVU}, +#endif +#if defined(TC6) + {TC6, TC6_GCLK_ID, EVSYS_ID_USER_TC6_EVU}, +#endif +#if defined(TC7) + {TC7, TC7_GCLK_ID, EVSYS_ID_USER_TC7_EVU} +#endif +}; +#define NUM_TIMERS (sizeof tcList / sizeof tcList[0]) ///< # timer/counters +#endif // end __SAMD51__ + +#endif // end USE_SPI_DMA + +// Possible values for Adafruit_SPITFT.connection: +#define TFT_HARD_SPI 0 ///< Display interface = hardware SPI +#define TFT_SOFT_SPI 1 ///< Display interface = software SPI +#define TFT_PARALLEL 2 ///< Display interface = 8- or 16-bit parallel + +// CONSTRUCTORS ------------------------------------------------------------ + +/*! + @brief Adafruit_SPITFT constructor for software (bitbang) SPI. + @param w Display width in pixels at default rotation setting (0). + @param h Display height in pixels at default rotation setting (0). + @param cs Arduino pin # for chip-select (-1 if unused, tie CS low). + @param dc Arduino pin # for data/command select (required). + @param mosi Arduino pin # for bitbang SPI MOSI signal (required). + @param sck Arduino pin # for bitbang SPI SCK signal (required). + @param rst Arduino pin # for display reset (optional, display reset + can be tied to MCU reset, default of -1 means unused). + @param miso Arduino pin # for bitbang SPI MISO signal (optional, + -1 default, many displays don't support SPI read). + @note Output pins are not initialized; application typically will + need to call subclass' begin() function, which in turn calls + this library's initSPI() function to initialize pins. +*/ +Adafruit_SPITFT::Adafruit_SPITFT(uint16_t w, uint16_t h, int8_t cs, int8_t dc, + int8_t mosi, int8_t sck, int8_t rst, + int8_t miso) + : Adafruit_GFX(w, h), connection(TFT_SOFT_SPI), _rst(rst), _cs(cs), + _dc(dc) { + swspi._sck = sck; + swspi._mosi = mosi; + swspi._miso = miso; +#if defined(USE_FAST_PINIO) +#if defined(HAS_PORT_SET_CLR) +#if defined(CORE_TEENSY) +#if !defined(KINETISK) + dcPinMask = digitalPinToBitMask(dc); + swspi.sckPinMask = digitalPinToBitMask(sck); + swspi.mosiPinMask = digitalPinToBitMask(mosi); +#endif + dcPortSet = portSetRegister(dc); + dcPortClr = portClearRegister(dc); + swspi.sckPortSet = portSetRegister(sck); + swspi.sckPortClr = portClearRegister(sck); + swspi.mosiPortSet = portSetRegister(mosi); + swspi.mosiPortClr = portClearRegister(mosi); + if (cs >= 0) { +#if !defined(KINETISK) + csPinMask = digitalPinToBitMask(cs); +#endif + csPortSet = portSetRegister(cs); + csPortClr = portClearRegister(cs); + } else { +#if !defined(KINETISK) + csPinMask = 0; +#endif + csPortSet = dcPortSet; + csPortClr = dcPortClr; + } + if (miso >= 0) { + swspi.misoPort = portInputRegister(miso); +#if !defined(KINETISK) + swspi.misoPinMask = digitalPinToBitMask(miso); +#endif + } else { + swspi.misoPort = portInputRegister(dc); + } +#else // !CORE_TEENSY + dcPinMask = digitalPinToBitMask(dc); + swspi.sckPinMask = digitalPinToBitMask(sck); + swspi.mosiPinMask = digitalPinToBitMask(mosi); + dcPortSet = &(PORT->Group[g_APinDescription[dc].ulPort].OUTSET.reg); + dcPortClr = &(PORT->Group[g_APinDescription[dc].ulPort].OUTCLR.reg); + swspi.sckPortSet = &(PORT->Group[g_APinDescription[sck].ulPort].OUTSET.reg); + swspi.sckPortClr = &(PORT->Group[g_APinDescription[sck].ulPort].OUTCLR.reg); + swspi.mosiPortSet = &(PORT->Group[g_APinDescription[mosi].ulPort].OUTSET.reg); + swspi.mosiPortClr = &(PORT->Group[g_APinDescription[mosi].ulPort].OUTCLR.reg); + if (cs >= 0) { + csPinMask = digitalPinToBitMask(cs); + csPortSet = &(PORT->Group[g_APinDescription[cs].ulPort].OUTSET.reg); + csPortClr = &(PORT->Group[g_APinDescription[cs].ulPort].OUTCLR.reg); + } else { + // No chip-select line defined; might be permanently tied to GND. + // Assign a valid GPIO register (though not used for CS), and an + // empty pin bitmask...the nonsense bit-twiddling might be faster + // than checking _cs and possibly branching. + csPortSet = dcPortSet; + csPortClr = dcPortClr; + csPinMask = 0; + } + if (miso >= 0) { + swspi.misoPinMask = digitalPinToBitMask(miso); + swspi.misoPort = (PORTreg_t)portInputRegister(digitalPinToPort(miso)); + } else { + swspi.misoPinMask = 0; + swspi.misoPort = (PORTreg_t)portInputRegister(digitalPinToPort(dc)); + } +#endif // end !CORE_TEENSY +#else // !HAS_PORT_SET_CLR + dcPort = (PORTreg_t)portOutputRegister(digitalPinToPort(dc)); + dcPinMaskSet = digitalPinToBitMask(dc); + swspi.sckPort = (PORTreg_t)portOutputRegister(digitalPinToPort(sck)); + swspi.sckPinMaskSet = digitalPinToBitMask(sck); + swspi.mosiPort = (PORTreg_t)portOutputRegister(digitalPinToPort(mosi)); + swspi.mosiPinMaskSet = digitalPinToBitMask(mosi); + if (cs >= 0) { + csPort = (PORTreg_t)portOutputRegister(digitalPinToPort(cs)); + csPinMaskSet = digitalPinToBitMask(cs); + } else { + // No chip-select line defined; might be permanently tied to GND. + // Assign a valid GPIO register (though not used for CS), and an + // empty pin bitmask...the nonsense bit-twiddling might be faster + // than checking _cs and possibly branching. + csPort = dcPort; + csPinMaskSet = 0; + } + if (miso >= 0) { + swspi.misoPort = (PORTreg_t)portInputRegister(digitalPinToPort(miso)); + swspi.misoPinMask = digitalPinToBitMask(miso); + } else { + swspi.misoPort = (PORTreg_t)portInputRegister(digitalPinToPort(dc)); + swspi.misoPinMask = 0; + } + csPinMaskClr = ~csPinMaskSet; + dcPinMaskClr = ~dcPinMaskSet; + swspi.sckPinMaskClr = ~swspi.sckPinMaskSet; + swspi.mosiPinMaskClr = ~swspi.mosiPinMaskSet; +#endif // !end HAS_PORT_SET_CLR +#endif // end USE_FAST_PINIO +} + +/*! + @brief Adafruit_SPITFT constructor for hardware SPI using the board's + default SPI peripheral. + @param w Display width in pixels at default rotation setting (0). + @param h Display height in pixels at default rotation setting (0). + @param cs Arduino pin # for chip-select (-1 if unused, tie CS low). + @param dc Arduino pin # for data/command select (required). + @param rst Arduino pin # for display reset (optional, display reset + can be tied to MCU reset, default of -1 means unused). + @note Output pins are not initialized; application typically will + need to call subclass' begin() function, which in turn calls + this library's initSPI() function to initialize pins. +*/ +#if defined(ESP8266) // See notes below +Adafruit_SPITFT::Adafruit_SPITFT(uint16_t w, uint16_t h, int8_t cs, int8_t dc, + int8_t rst) + : Adafruit_GFX(w, h), connection(TFT_HARD_SPI), _rst(rst), _cs(cs), + _dc(dc) { + hwspi._spi = &SPI; +} +#else // !ESP8266 +Adafruit_SPITFT::Adafruit_SPITFT(uint16_t w, uint16_t h, int8_t cs, int8_t dc, + int8_t rst) + : Adafruit_SPITFT(w, h, &SPI, cs, dc, rst) { + // This just invokes the hardware SPI constructor below, + // passing the default SPI device (&SPI). +} +#endif // end !ESP8266 + +#if !defined(ESP8266) +// ESP8266 compiler freaks out at this constructor -- it can't disambiguate +// beteween the SPIClass pointer (argument #3) and a regular integer. +// Solution here it to just not offer this variant on the ESP8266. You can +// use the default hardware SPI peripheral, or you can use software SPI, +// but if there's any library out there that creates a 'virtual' SPIClass +// peripheral and drives it with software bitbanging, that's not supported. +/*! + @brief Adafruit_SPITFT constructor for hardware SPI using a specific + SPI peripheral. + @param w Display width in pixels at default rotation (0). + @param h Display height in pixels at default rotation (0). + @param spiClass Pointer to SPIClass type (e.g. &SPI or &SPI1). + @param cs Arduino pin # for chip-select (-1 if unused, tie CS low). + @param dc Arduino pin # for data/command select (required). + @param rst Arduino pin # for display reset (optional, display reset + can be tied to MCU reset, default of -1 means unused). + @note Output pins are not initialized in constructor; application + typically will need to call subclass' begin() function, which + in turn calls this library's initSPI() function to initialize + pins. EXCEPT...if you have built your own SERCOM SPI peripheral + (calling the SPIClass constructor) rather than one of the + built-in SPI devices (e.g. &SPI, &SPI1 and so forth), you will + need to call the begin() function for your object as well as + pinPeripheral() for the MOSI, MISO and SCK pins to configure + GPIO manually. Do this BEFORE calling the display-specific + begin or init function. Unfortunate but unavoidable. +*/ +Adafruit_SPITFT::Adafruit_SPITFT(uint16_t w, uint16_t h, SPIClass *spiClass, + int8_t cs, int8_t dc, int8_t rst) + : Adafruit_GFX(w, h), connection(TFT_HARD_SPI), _rst(rst), _cs(cs), + _dc(dc) { + hwspi._spi = spiClass; +#if defined(USE_FAST_PINIO) +#if defined(HAS_PORT_SET_CLR) +#if defined(CORE_TEENSY) +#if !defined(KINETISK) + dcPinMask = digitalPinToBitMask(dc); +#endif + dcPortSet = portSetRegister(dc); + dcPortClr = portClearRegister(dc); + if (cs >= 0) { +#if !defined(KINETISK) + csPinMask = digitalPinToBitMask(cs); +#endif + csPortSet = portSetRegister(cs); + csPortClr = portClearRegister(cs); + } else { // see comments below +#if !defined(KINETISK) + csPinMask = 0; +#endif + csPortSet = dcPortSet; + csPortClr = dcPortClr; + } +#else // !CORE_TEENSY + dcPinMask = digitalPinToBitMask(dc); + dcPortSet = &(PORT->Group[g_APinDescription[dc].ulPort].OUTSET.reg); + dcPortClr = &(PORT->Group[g_APinDescription[dc].ulPort].OUTCLR.reg); + if (cs >= 0) { + csPinMask = digitalPinToBitMask(cs); + csPortSet = &(PORT->Group[g_APinDescription[cs].ulPort].OUTSET.reg); + csPortClr = &(PORT->Group[g_APinDescription[cs].ulPort].OUTCLR.reg); + } else { + // No chip-select line defined; might be permanently tied to GND. + // Assign a valid GPIO register (though not used for CS), and an + // empty pin bitmask...the nonsense bit-twiddling might be faster + // than checking _cs and possibly branching. + csPortSet = dcPortSet; + csPortClr = dcPortClr; + csPinMask = 0; + } +#endif // end !CORE_TEENSY +#else // !HAS_PORT_SET_CLR + dcPort = (PORTreg_t)portOutputRegister(digitalPinToPort(dc)); + dcPinMaskSet = digitalPinToBitMask(dc); + if (cs >= 0) { + csPort = (PORTreg_t)portOutputRegister(digitalPinToPort(cs)); + csPinMaskSet = digitalPinToBitMask(cs); + } else { + // No chip-select line defined; might be permanently tied to GND. + // Assign a valid GPIO register (though not used for CS), and an + // empty pin bitmask...the nonsense bit-twiddling might be faster + // than checking _cs and possibly branching. + csPort = dcPort; + csPinMaskSet = 0; + } + csPinMaskClr = ~csPinMaskSet; + dcPinMaskClr = ~dcPinMaskSet; +#endif // end !HAS_PORT_SET_CLR +#endif // end USE_FAST_PINIO +} +#endif // end !ESP8266 + +/*! + @brief Adafruit_SPITFT constructor for parallel display connection. + @param w Display width in pixels at default rotation (0). + @param h Display height in pixels at default rotation (0). + @param busWidth If tft16 (enumeration in header file), is a 16-bit + parallel connection, else 8-bit. + 16-bit isn't fully implemented or tested yet so + applications should pass "tft8bitbus" for now...needed to + stick a required enum argument in there to + disambiguate this constructor from the soft-SPI case. + Argument is ignored on 8-bit architectures (no 'wide' + support there since PORTs are 8 bits anyway). + @param d0 Arduino pin # for data bit 0 (1+ are extrapolated). + The 8 (or 16) data bits MUST be contiguous and byte- + aligned (or word-aligned for wide interface) within + the same PORT register (might not correspond to + Arduino pin sequence). + @param wr Arduino pin # for write strobe (required). + @param dc Arduino pin # for data/command select (required). + @param cs Arduino pin # for chip-select (optional, -1 if unused, + tie CS low). + @param rst Arduino pin # for display reset (optional, display reset + can be tied to MCU reset, default of -1 means unused). + @param rd Arduino pin # for read strobe (optional, -1 if unused). + @note Output pins are not initialized; application typically will need + to call subclass' begin() function, which in turn calls this + library's initSPI() function to initialize pins. + Yes, the name is a misnomer...this library originally handled + only SPI displays, parallel being a recent addition (but not + wanting to break existing code). +*/ +Adafruit_SPITFT::Adafruit_SPITFT(uint16_t w, uint16_t h, tftBusWidth busWidth, + int8_t d0, int8_t wr, int8_t dc, int8_t cs, + int8_t rst, int8_t rd) + : Adafruit_GFX(w, h), connection(TFT_PARALLEL), _rst(rst), _cs(cs), + _dc(dc) { + tft8._d0 = d0; + tft8._wr = wr; + tft8._rd = rd; + tft8.wide = (busWidth == tft16bitbus); +#if defined(USE_FAST_PINIO) +#if defined(HAS_PORT_SET_CLR) +#if defined(CORE_TEENSY) + tft8.wrPortSet = portSetRegister(wr); + tft8.wrPortClr = portClearRegister(wr); +#if !defined(KINETISK) + dcPinMask = digitalPinToBitMask(dc); +#endif + dcPortSet = portSetRegister(dc); + dcPortClr = portClearRegister(dc); + if (cs >= 0) { +#if !defined(KINETISK) + csPinMask = digitalPinToBitMask(cs); +#endif + csPortSet = portSetRegister(cs); + csPortClr = portClearRegister(cs); + } else { // see comments below +#if !defined(KINETISK) + csPinMask = 0; +#endif + csPortSet = dcPortSet; + csPortClr = dcPortClr; + } + if (rd >= 0) { // if read-strobe pin specified... +#if defined(KINETISK) + tft8.rdPinMask = 1; +#else // !KINETISK + tft8.rdPinMask = digitalPinToBitMask(rd); +#endif + tft8.rdPortSet = portSetRegister(rd); + tft8.rdPortClr = portClearRegister(rd); + } else { + tft8.rdPinMask = 0; + tft8.rdPortSet = dcPortSet; + tft8.rdPortClr = dcPortClr; + } + // These are all uint8_t* pointers -- elsewhere they're recast + // as necessary if a 'wide' 16-bit interface is in use. + tft8.writePort = portOutputRegister(d0); + tft8.readPort = portInputRegister(d0); + tft8.dirSet = portModeRegister(d0); + tft8.dirClr = portModeRegister(d0); +#else // !CORE_TEENSY + tft8.wrPinMask = digitalPinToBitMask(wr); + tft8.wrPortSet = &(PORT->Group[g_APinDescription[wr].ulPort].OUTSET.reg); + tft8.wrPortClr = &(PORT->Group[g_APinDescription[wr].ulPort].OUTCLR.reg); + dcPinMask = digitalPinToBitMask(dc); + dcPortSet = &(PORT->Group[g_APinDescription[dc].ulPort].OUTSET.reg); + dcPortClr = &(PORT->Group[g_APinDescription[dc].ulPort].OUTCLR.reg); + if (cs >= 0) { + csPinMask = digitalPinToBitMask(cs); + csPortSet = &(PORT->Group[g_APinDescription[cs].ulPort].OUTSET.reg); + csPortClr = &(PORT->Group[g_APinDescription[cs].ulPort].OUTCLR.reg); + } else { + // No chip-select line defined; might be permanently tied to GND. + // Assign a valid GPIO register (though not used for CS), and an + // empty pin bitmask...the nonsense bit-twiddling might be faster + // than checking _cs and possibly branching. + csPortSet = dcPortSet; + csPortClr = dcPortClr; + csPinMask = 0; + } + if (rd >= 0) { // if read-strobe pin specified... + tft8.rdPinMask = digitalPinToBitMask(rd); + tft8.rdPortSet = &(PORT->Group[g_APinDescription[rd].ulPort].OUTSET.reg); + tft8.rdPortClr = &(PORT->Group[g_APinDescription[rd].ulPort].OUTCLR.reg); + } else { + tft8.rdPinMask = 0; + tft8.rdPortSet = dcPortSet; + tft8.rdPortClr = dcPortClr; + } + // Get pointers to PORT write/read/dir bytes within 32-bit PORT + uint8_t dBit = g_APinDescription[d0].ulPin; // d0 bit # in PORT + PortGroup *p = (&(PORT->Group[g_APinDescription[d0].ulPort])); + uint8_t offset = dBit / 8; // d[7:0] byte # within PORT + if (tft8.wide) + offset &= ~1; // d[15:8] byte # within PORT + // These are all uint8_t* pointers -- elsewhere they're recast + // as necessary if a 'wide' 16-bit interface is in use. + tft8.writePort = (volatile uint8_t *)&(p->OUT.reg) + offset; + tft8.readPort = (volatile uint8_t *)&(p->IN.reg) + offset; + tft8.dirSet = (volatile uint8_t *)&(p->DIRSET.reg) + offset; + tft8.dirClr = (volatile uint8_t *)&(p->DIRCLR.reg) + offset; +#endif // end !CORE_TEENSY +#else // !HAS_PORT_SET_CLR + tft8.wrPort = (PORTreg_t)portOutputRegister(digitalPinToPort(wr)); + tft8.wrPinMaskSet = digitalPinToBitMask(wr); + dcPort = (PORTreg_t)portOutputRegister(digitalPinToPort(dc)); + dcPinMaskSet = digitalPinToBitMask(dc); + if (cs >= 0) { + csPort = (PORTreg_t)portOutputRegister(digitalPinToPort(cs)); + csPinMaskSet = digitalPinToBitMask(cs); + } else { + // No chip-select line defined; might be permanently tied to GND. + // Assign a valid GPIO register (though not used for CS), and an + // empty pin bitmask...the nonsense bit-twiddling might be faster + // than checking _cs and possibly branching. + csPort = dcPort; + csPinMaskSet = 0; + } + if (rd >= 0) { // if read-strobe pin specified... + tft8.rdPort = (PORTreg_t)portOutputRegister(digitalPinToPort(rd)); + tft8.rdPinMaskSet = digitalPinToBitMask(rd); + } else { + tft8.rdPort = dcPort; + tft8.rdPinMaskSet = 0; + } + csPinMaskClr = ~csPinMaskSet; + dcPinMaskClr = ~dcPinMaskSet; + tft8.wrPinMaskClr = ~tft8.wrPinMaskSet; + tft8.rdPinMaskClr = ~tft8.rdPinMaskSet; + tft8.writePort = (PORTreg_t)portOutputRegister(digitalPinToPort(d0)); + tft8.readPort = (PORTreg_t)portInputRegister(digitalPinToPort(d0)); + tft8.portDir = (PORTreg_t)portModeRegister(digitalPinToPort(d0)); +#endif // end !HAS_PORT_SET_CLR +#endif // end USE_FAST_PINIO +} + +// end constructors ------- + +// CLASS MEMBER FUNCTIONS -------------------------------------------------- + +// begin() and setAddrWindow() MUST be declared by any subclass. + +/*! + @brief Configure microcontroller pins for TFT interfacing. Typically + called by a subclass' begin() function. + @param freq SPI frequency when using hardware SPI. If default (0) + is passed, will fall back on a device-specific value. + Value is ignored when using software SPI or parallel + connection. + @param spiMode SPI mode when using hardware SPI. MUST be one of the + values SPI_MODE0, SPI_MODE1, SPI_MODE2 or SPI_MODE3 + defined in SPI.h. Do NOT attempt to pass '0' for + SPI_MODE0 and so forth...the values are NOT the same! + Use ONLY the defines! (Pity it's not an enum.) + @note Another anachronistically-named function; this is called even + when the display connection is parallel (not SPI). Also, this + could probably be made private...quite a few class functions + were generously put in the public section. +*/ +void Adafruit_SPITFT::initSPI(uint32_t freq, uint8_t spiMode) { + + if (!freq) + freq = DEFAULT_SPI_FREQ; // If no freq specified, use default + + // Init basic control pins common to all connection types + if (_cs >= 0) { + pinMode(_cs, OUTPUT); + digitalWrite(_cs, HIGH); // Deselect + } + pinMode(_dc, OUTPUT); + digitalWrite(_dc, HIGH); // Data mode + + if (connection == TFT_HARD_SPI) { + +#if defined(SPI_HAS_TRANSACTION) + hwspi.settings = SPISettings(freq, MSBFIRST, spiMode); +#else + hwspi._freq = freq; // Save freq value for later +#endif + hwspi._mode = spiMode; // Save spiMode value for later + // Call hwspi._spi->begin() ONLY if this is among the 'established' + // SPI interfaces in variant.h. For DIY roll-your-own SERCOM SPIs, + // begin() and pinPeripheral() calls MUST be made in one's calling + // code, BEFORE the screen-specific begin/init function is called. + // Reason for this is that SPI::begin() makes its own calls to + // pinPeripheral() based on g_APinDescription[n].ulPinType, which + // on non-established SPI interface pins will always be PIO_DIGITAL + // or similar, while we need PIO_SERCOM or PIO_SERCOM_ALT...it's + // highly unique between devices and variants for each pin or + // SERCOM so we can't make those calls ourselves here. And the SPI + // device needs to be set up before calling this because it's + // immediately followed with initialization commands. Blargh. + if ( +#if !defined(SPI_INTERFACES_COUNT) + 1 +#else +#if SPI_INTERFACES_COUNT > 0 + (hwspi._spi == &SPI) +#endif +#if SPI_INTERFACES_COUNT > 1 + || (hwspi._spi == &SPI1) +#endif +#if SPI_INTERFACES_COUNT > 2 + || (hwspi._spi == &SPI2) +#endif +#if SPI_INTERFACES_COUNT > 3 + || (hwspi._spi == &SPI3) +#endif +#if SPI_INTERFACES_COUNT > 4 + || (hwspi._spi == &SPI4) +#endif +#if SPI_INTERFACES_COUNT > 5 + || (hwspi._spi == &SPI5) +#endif +#endif // end SPI_INTERFACES_COUNT + ) { + hwspi._spi->begin(); + } + } else if (connection == TFT_SOFT_SPI) { + + pinMode(swspi._mosi, OUTPUT); + digitalWrite(swspi._mosi, LOW); + pinMode(swspi._sck, OUTPUT); + digitalWrite(swspi._sck, LOW); + if (swspi._miso >= 0) { + pinMode(swspi._miso, INPUT); + } + + } else { // TFT_PARALLEL + // Initialize data pins. We were only passed d0, so scan + // the pin description list looking for the other pins. + // They'll be on the same PORT, and within the next 7 (or 15) bits + // (because we need to write to a contiguous PORT byte or word). +#if defined(__AVR__) + // PORT registers are 8 bits wide, so just need a register match... + for (uint8_t i = 0; i < NUM_DIGITAL_PINS; i++) { + if ((PORTreg_t)portOutputRegister(digitalPinToPort(i)) == + tft8.writePort) { + pinMode(i, OUTPUT); + digitalWrite(i, LOW); + } + } +#elif defined(USE_FAST_PINIO) +#if defined(CORE_TEENSY) + if (!tft8.wide) { + *tft8.dirSet = 0xFF; // Set port to output + *tft8.writePort = 0x00; // Write all 0s + } else { + *(volatile uint16_t *)tft8.dirSet = 0xFFFF; + *(volatile uint16_t *)tft8.writePort = 0x0000; + } +#else // !CORE_TEENSY + uint8_t portNum = g_APinDescription[tft8._d0].ulPort, // d0 PORT # + dBit = g_APinDescription[tft8._d0].ulPin, // d0 bit in PORT + lastBit = dBit + (tft8.wide ? 15 : 7); + for (uint8_t i = 0; i < PINS_COUNT; i++) { + if ((g_APinDescription[i].ulPort == portNum) && + (g_APinDescription[i].ulPin >= dBit) && + (g_APinDescription[i].ulPin <= (uint32_t)lastBit)) { + pinMode(i, OUTPUT); + digitalWrite(i, LOW); + } + } +#endif // end !CORE_TEENSY +#endif + pinMode(tft8._wr, OUTPUT); + digitalWrite(tft8._wr, HIGH); + if (tft8._rd >= 0) { + pinMode(tft8._rd, OUTPUT); + digitalWrite(tft8._rd, HIGH); + } + } + + if (_rst >= 0) { + // Toggle _rst low to reset + pinMode(_rst, OUTPUT); + digitalWrite(_rst, HIGH); + delay(100); + digitalWrite(_rst, LOW); + delay(100); + digitalWrite(_rst, HIGH); + delay(200); + } + +#if defined(USE_SPI_DMA) && (defined(__SAMD51__) || defined(ARDUINO_SAMD_ZERO)) + if (((connection == TFT_HARD_SPI) || (connection == TFT_PARALLEL)) && + (dma.allocate() == DMA_STATUS_OK)) { // Allocate channel + // The DMA library needs to alloc at least one valid descriptor, + // so we do that here. It's not used in the usual sense though, + // just before a transfer we copy descriptor[0] to this address. + if (dptr = dma.addDescriptor(NULL, NULL, 42, DMA_BEAT_SIZE_BYTE, false, + false)) { + // Alloc 2 scanlines worth of pixels on display's major axis, + // whichever that is, rounding each up to 2-pixel boundary. + int major = (WIDTH > HEIGHT) ? WIDTH : HEIGHT; + major += (major & 1); // -> next 2-pixel bound, if needed. + maxFillLen = major * 2; // 2 scanlines + // Note to future self: if you decide to make the pixel buffer + // much larger, remember that DMA transfer descriptors can't + // exceed 65,535 bytes (not 65,536), meaning 32,767 pixels max. + // Not that we have that kind of RAM to throw around right now. + if ((pixelBuf[0] = (uint16_t *)malloc(maxFillLen * sizeof(uint16_t)))) { + // Alloc OK. Get pointer to start of second scanline. + pixelBuf[1] = &pixelBuf[0][major]; + // Determine number of DMA descriptors needed to cover + // entire screen when entire 2-line pixelBuf is used + // (round up for fractional last descriptor). + int numDescriptors = (WIDTH * HEIGHT + (maxFillLen - 1)) / maxFillLen; + // DMA descriptors MUST be 128-bit (16 byte) aligned. + // memalign() is considered obsolete but it's replacements + // (aligned_alloc() or posix_memalign()) are not currently + // available in the version of ARM GCC in use, but this + // is, so here we are. + if ((descriptor = (DmacDescriptor *)memalign( + 16, numDescriptors * sizeof(DmacDescriptor)))) { + int dmac_id; + volatile uint32_t *data_reg; + + if (connection == TFT_HARD_SPI) { + // THIS IS AN AFFRONT TO NATURE, but I don't know + // any "clean" way to get the sercom number from the + // the SPIClass pointer (e.g. &SPI or &SPI1), which + // is all we have to work with. SPIClass does contain + // a SERCOM pointer but it is a PRIVATE member! + // Doing an UNSPEAKABLY HORRIBLE THING here, directly + // accessing the first 32-bit value in the SPIClass + // structure, knowing that's (currently) where the + // SERCOM pointer lives, but this ENTIRELY DEPENDS on + // that structure not changing nor the compiler + // rearranging things. Oh the humanity! + + if (*(SERCOM **)hwspi._spi == &sercom0) { + dmac_id = SERCOM0_DMAC_ID_TX; + data_reg = &SERCOM0->SPI.DATA.reg; +#if defined SERCOM1 + } else if (*(SERCOM **)hwspi._spi == &sercom1) { + dmac_id = SERCOM1_DMAC_ID_TX; + data_reg = &SERCOM1->SPI.DATA.reg; +#endif +#if defined SERCOM2 + } else if (*(SERCOM **)hwspi._spi == &sercom2) { + dmac_id = SERCOM2_DMAC_ID_TX; + data_reg = &SERCOM2->SPI.DATA.reg; +#endif +#if defined SERCOM3 + } else if (*(SERCOM **)hwspi._spi == &sercom3) { + dmac_id = SERCOM3_DMAC_ID_TX; + data_reg = &SERCOM3->SPI.DATA.reg; +#endif +#if defined SERCOM4 + } else if (*(SERCOM **)hwspi._spi == &sercom4) { + dmac_id = SERCOM4_DMAC_ID_TX; + data_reg = &SERCOM4->SPI.DATA.reg; +#endif +#if defined SERCOM5 + } else if (*(SERCOM **)hwspi._spi == &sercom5) { + dmac_id = SERCOM5_DMAC_ID_TX; + data_reg = &SERCOM5->SPI.DATA.reg; +#endif +#if defined SERCOM6 + } else if (*(SERCOM **)hwspi._spi == &sercom6) { + dmac_id = SERCOM6_DMAC_ID_TX; + data_reg = &SERCOM6->SPI.DATA.reg; +#endif +#if defined SERCOM7 + } else if (*(SERCOM **)hwspi._spi == &sercom7) { + dmac_id = SERCOM7_DMAC_ID_TX; + data_reg = &SERCOM7->SPI.DATA.reg; +#endif + } + dma.setPriority(DMA_PRIORITY_3); + dma.setTrigger(dmac_id); + dma.setAction(DMA_TRIGGER_ACTON_BEAT); + + // Initialize descriptor list. + for (int d = 0; d < numDescriptors; d++) { + // No need to set SRCADDR, DESCADDR or BTCNT -- + // those are done in the pixel-writing functions. + descriptor[d].BTCTRL.bit.VALID = true; + descriptor[d].BTCTRL.bit.EVOSEL = DMA_EVENT_OUTPUT_DISABLE; + descriptor[d].BTCTRL.bit.BLOCKACT = DMA_BLOCK_ACTION_NOACT; + descriptor[d].BTCTRL.bit.BEATSIZE = DMA_BEAT_SIZE_BYTE; + descriptor[d].BTCTRL.bit.DSTINC = 0; + descriptor[d].BTCTRL.bit.STEPSEL = DMA_STEPSEL_SRC; + descriptor[d].BTCTRL.bit.STEPSIZE = + DMA_ADDRESS_INCREMENT_STEP_SIZE_1; + descriptor[d].DSTADDR.reg = (uint32_t)data_reg; + } + + } else { // Parallel connection + +#if defined(__SAMD51__) + int dmaChannel = dma.getChannel(); + // Enable event output, use EVOSEL output + DMAC->Channel[dmaChannel].CHEVCTRL.bit.EVOE = 1; + DMAC->Channel[dmaChannel].CHEVCTRL.bit.EVOMODE = 0; + + // CONFIGURE TIMER/COUNTER (for write strobe) + + Tc *timer = tcList[tcNum].tc; // -> Timer struct + int id = tcList[tcNum].gclk; // Timer GCLK ID + GCLK_PCHCTRL_Type pchctrl; + + // Set up timer clock source from GCLK + GCLK->PCHCTRL[id].bit.CHEN = 0; // Stop timer + while (GCLK->PCHCTRL[id].bit.CHEN) + ; // Wait for it + pchctrl.bit.GEN = GCLK_PCHCTRL_GEN_GCLK0_Val; + pchctrl.bit.CHEN = 1; // Enable + GCLK->PCHCTRL[id].reg = pchctrl.reg; + while (!GCLK->PCHCTRL[id].bit.CHEN) + ; // Wait for it + + // Disable timer/counter before configuring it + timer->COUNT8.CTRLA.bit.ENABLE = 0; + while (timer->COUNT8.SYNCBUSY.bit.STATUS) + ; + + timer->COUNT8.WAVE.bit.WAVEGEN = 2; // NPWM + timer->COUNT8.CTRLA.bit.MODE = 1; // 8-bit + timer->COUNT8.CTRLA.bit.PRESCALER = 0; // 1:1 + while (timer->COUNT8.SYNCBUSY.bit.STATUS) + ; + + timer->COUNT8.CTRLBCLR.bit.DIR = 1; // Count UP + while (timer->COUNT8.SYNCBUSY.bit.CTRLB) + ; + timer->COUNT8.CTRLBSET.bit.ONESHOT = 1; // One-shot + while (timer->COUNT8.SYNCBUSY.bit.CTRLB) + ; + timer->COUNT8.PER.reg = 6; // PWM top + while (timer->COUNT8.SYNCBUSY.bit.PER) + ; + timer->COUNT8.CC[0].reg = 2; // Compare + while (timer->COUNT8.SYNCBUSY.bit.CC0) + ; + // Enable async input events, + // event action = restart. + timer->COUNT8.EVCTRL.bit.TCEI = 1; + timer->COUNT8.EVCTRL.bit.EVACT = 1; + + // Enable timer + timer->COUNT8.CTRLA.reg |= TC_CTRLA_ENABLE; + while (timer->COUNT8.SYNCBUSY.bit.STATUS) + ; + +#if (wrPeripheral == PIO_CCL) + // CONFIGURE CCL (inverts timer/counter output) + + MCLK->APBCMASK.bit.CCL_ = 1; // Enable CCL clock + CCL->CTRL.bit.ENABLE = 0; // Disable to config + CCL->CTRL.bit.SWRST = 1; // Reset CCL registers + CCL->LUTCTRL[tcNum].bit.ENABLE = 0; // Disable LUT + CCL->LUTCTRL[tcNum].bit.FILTSEL = 0; // No filter + CCL->LUTCTRL[tcNum].bit.INSEL0 = 6; // TC input + CCL->LUTCTRL[tcNum].bit.INSEL1 = 0; // MASK + CCL->LUTCTRL[tcNum].bit.INSEL2 = 0; // MASK + CCL->LUTCTRL[tcNum].bit.TRUTH = 1; // Invert in 0 + CCL->LUTCTRL[tcNum].bit.ENABLE = 1; // Enable LUT + CCL->CTRL.bit.ENABLE = 1; // Enable CCL +#endif + + // CONFIGURE EVENT SYSTEM + + // Set up event system clock source from GCLK... + // Disable EVSYS, wait for disable + GCLK->PCHCTRL[EVSYS_GCLK_ID_0].bit.CHEN = 0; + while (GCLK->PCHCTRL[EVSYS_GCLK_ID_0].bit.CHEN) + ; + pchctrl.bit.GEN = GCLK_PCHCTRL_GEN_GCLK0_Val; + pchctrl.bit.CHEN = 1; // Re-enable + GCLK->PCHCTRL[EVSYS_GCLK_ID_0].reg = pchctrl.reg; + // Wait for it, then enable EVSYS clock + while (!GCLK->PCHCTRL[EVSYS_GCLK_ID_0].bit.CHEN) + ; + MCLK->APBBMASK.bit.EVSYS_ = 1; + + // Connect Timer EVU to ch 0 + EVSYS->USER[tcList[tcNum].evu].reg = 1; + // Datasheet recommends single write operation; + // reg instead of bit. Also datasheet: PATH bits + // must be zero when using async! + EVSYS_CHANNEL_Type ev; + ev.reg = 0; + ev.bit.PATH = 2; // Asynchronous + ev.bit.EVGEN = 0x22 + dmaChannel; // DMA channel 0+ + EVSYS->Channel[0].CHANNEL.reg = ev.reg; + + // Initialize descriptor list. + for (int d = 0; d < numDescriptors; d++) { + // No need to set SRCADDR, DESCADDR or BTCNT -- + // those are done in the pixel-writing functions. + descriptor[d].BTCTRL.bit.VALID = true; + // Event strobe on beat xfer: + descriptor[d].BTCTRL.bit.EVOSEL = 0x3; + descriptor[d].BTCTRL.bit.BLOCKACT = DMA_BLOCK_ACTION_NOACT; + descriptor[d].BTCTRL.bit.BEATSIZE = + tft8.wide ? DMA_BEAT_SIZE_HWORD : DMA_BEAT_SIZE_BYTE; + descriptor[d].BTCTRL.bit.SRCINC = 1; + descriptor[d].BTCTRL.bit.DSTINC = 0; + descriptor[d].BTCTRL.bit.STEPSEL = DMA_STEPSEL_SRC; + descriptor[d].BTCTRL.bit.STEPSIZE = + DMA_ADDRESS_INCREMENT_STEP_SIZE_1; + descriptor[d].DSTADDR.reg = (uint32_t)tft8.writePort; + } +#endif // __SAMD51 + } // end parallel-specific DMA setup + + lastFillColor = 0x0000; + lastFillLen = 0; + dma.setCallback(dma_callback); + return; // Success! + // else clean up any partial allocation... + } // end descriptor memalign() + free(pixelBuf[0]); + pixelBuf[0] = pixelBuf[1] = NULL; + } // end pixelBuf malloc() + // Don't currently have a descriptor delete function in + // ZeroDMA lib, but if we did, it would be called here. + } // end addDescriptor() + dma.free(); // Deallocate DMA channel + } +#endif // end USE_SPI_DMA +} + +/*! + @brief Allow changing the SPI clock speed after initialization + @param freq Desired frequency of SPI clock, may not be the + end frequency you get based on what the chip can do! +*/ +void Adafruit_SPITFT::setSPISpeed(uint32_t freq) { +#if defined(SPI_HAS_TRANSACTION) + hwspi.settings = SPISettings(freq, MSBFIRST, hwspi._mode); +#else + hwspi._freq = freq; // Save freq value for later +#endif +} + +/*! + @brief Call before issuing command(s) or data to display. Performs + chip-select (if required) and starts an SPI transaction (if + using hardware SPI and transactions are supported). Required + for all display types; not an SPI-specific function. +*/ +void Adafruit_SPITFT::startWrite(void) { + SPI_BEGIN_TRANSACTION(); + if (_cs >= 0) + SPI_CS_LOW(); +} + +/*! + @brief Call after issuing command(s) or data to display. Performs + chip-deselect (if required) and ends an SPI transaction (if + using hardware SPI and transactions are supported). Required + for all display types; not an SPI-specific function. +*/ +void Adafruit_SPITFT::endWrite(void) { + if (_cs >= 0) + SPI_CS_HIGH(); + SPI_END_TRANSACTION(); +} + +// ------------------------------------------------------------------------- +// Lower-level graphics operations. These functions require a chip-select +// and/or SPI transaction around them (via startWrite(), endWrite() above). +// Higher-level graphics primitives might start a single transaction and +// then make multiple calls to these functions (e.g. circle or text +// rendering might make repeated lines or rects) before ending the +// transaction. It's more efficient than starting a transaction every time. + +/*! + @brief Draw a single pixel to the display at requested coordinates. + Not self-contained; should follow a startWrite() call. + @param x Horizontal position (0 = left). + @param y Vertical position (0 = top). + @param color 16-bit pixel color in '565' RGB format. +*/ +void Adafruit_SPITFT::writePixel(int16_t x, int16_t y, uint16_t color) { + if ((x >= 0) && (x < _width) && (y >= 0) && (y < _height)) { + setAddrWindow(x, y, 1, 1); + SPI_WRITE16(color); + } +} + +/*! + @brief Swap bytes in an array of pixels; converts little-to-big or + big-to-little endian. Used by writePixels() below in some + situations, but may also be helpful for user code occasionally. + @param src Source address of 16-bit pixels buffer. + @param len Number of pixels to byte-swap. + @param dest Optional destination address if different than src -- + otherwise, if NULL (default) or same address is passed, + pixel buffer is overwritten in-place. +*/ +void Adafruit_SPITFT::swapBytes(uint16_t *src, uint32_t len, uint16_t *dest) { + if (!dest) + dest = src; // NULL -> overwrite src buffer + for (uint32_t i = 0; i < len; i++) { + dest[i] = __builtin_bswap16(src[i]); + } +} + +/*! + @brief Issue a series of pixels from memory to the display. Not self- + contained; should follow startWrite() and setAddrWindow() calls. + @param colors Pointer to array of 16-bit pixel values in '565' RGB + format. + @param len Number of elements in 'colors' array. + @param block If true (default case if unspecified), function blocks + until DMA transfer is complete. This is simply IGNORED + if DMA is not enabled. If false, the function returns + immediately after the last DMA transfer is started, + and one should use the dmaWait() function before + doing ANY other display-related activities (or even + any SPI-related activities, if using an SPI display + that shares the bus with other devices). + @param bigEndian If true, bitmap in memory is in big-endian order (most + significant byte first). By default this is false, as + most microcontrollers seem to be little-endian and + 16-bit pixel values must be byte-swapped before + issuing to the display (which tend toward big-endian + when using SPI or 8-bit parallel). If an application + can optimize around this -- for example, a bitmap in a + uint16_t array having the byte values already ordered + big-endian, this can save time here, ESPECIALLY if + using this function's non-blocking DMA mode. +*/ +void Adafruit_SPITFT::writePixels(uint16_t *colors, uint32_t len, bool block, + bool bigEndian) { + + if (!len) + return; // Avoid 0-byte transfers + + // avoid paramater-not-used complaints + (void)block; + (void)bigEndian; + +#if defined(ESP32) + if (connection == TFT_HARD_SPI) { + if (!bigEndian) { + hwspi._spi->writePixels(colors, len * 2); // Inbuilt endian-swap + } else { + hwspi._spi->writeBytes((uint8_t *)colors, len * 2); // Issue bytes direct + } + return; + } +#elif defined(ARDUINO_NRF52_ADAFRUIT) && \ + defined(NRF52840_XXAA) // Adafruit nRF52 use SPIM3 DMA at 32Mhz + if (!bigEndian) { + swapBytes(colors, len); // convert little-to-big endian for display + } + hwspi._spi->transfer(colors, NULL, 2 * len); // NULL RX to avoid overwrite + if (!bigEndian) { + swapBytes(colors, len); // big-to-little endian to restore pixel buffer + } + + return; +#elif defined(ARDUINO_ARCH_RP2040) + spi_inst_t *pi_spi = hwspi._spi == &SPI ? __SPI0_DEVICE : __SPI1_DEVICE; + + if (!bigEndian) { + // switch to 16-bit writes + hw_write_masked(&spi_get_hw(pi_spi)->cr0, 15 << SPI_SSPCR0_DSS_LSB, + SPI_SSPCR0_DSS_BITS); + spi_write16_blocking(pi_spi, colors, len); + // switch back to 8-bit + hw_write_masked(&spi_get_hw(pi_spi)->cr0, 7 << SPI_SSPCR0_DSS_LSB, + SPI_SSPCR0_DSS_BITS); + } else { + spi_write_blocking(pi_spi, (uint8_t *)colors, len * 2); + } + return; +#elif defined(ARDUINO_ARCH_RTTHREAD) + if (!bigEndian) { + swapBytes(colors, len); // convert little-to-big endian for display + } + hwspi._spi->transfer(colors, 2 * len); + if (!bigEndian) { + swapBytes(colors, len); // big-to-little endian to restore pixel buffer + } + return; +#elif defined(USE_SPI_DMA) && \ + (defined(__SAMD51__) || defined(ARDUINO_SAMD_ZERO)) + if ((connection == TFT_HARD_SPI) || (connection == TFT_PARALLEL)) { + int maxSpan = maxFillLen / 2; // One scanline max + uint8_t pixelBufIdx = 0; // Active pixel buffer number +#if defined(__SAMD51__) + if (connection == TFT_PARALLEL) { + // Switch WR pin to PWM or CCL + pinPeripheral(tft8._wr, wrPeripheral); + } +#endif // end __SAMD51__ + if (!bigEndian) { // Normal little-endian situation... + while (len) { + int count = (len < maxSpan) ? len : maxSpan; + + // Because TFT and SAMD endianisms are different, must swap + // bytes from the 'colors' array passed into a DMA working + // buffer. This can take place while the prior DMA transfer + // is in progress, hence the need for two pixelBufs. + swapBytes(colors, count, pixelBuf[pixelBufIdx]); + colors += count; + + // The transfers themselves are relatively small, so we don't + // need a long descriptor list. We just alternate between the + // first two, sharing pixelBufIdx for that purpose. + descriptor[pixelBufIdx].SRCADDR.reg = + (uint32_t)pixelBuf[pixelBufIdx] + count * 2; + descriptor[pixelBufIdx].BTCTRL.bit.SRCINC = 1; + descriptor[pixelBufIdx].BTCNT.reg = count * 2; + descriptor[pixelBufIdx].DESCADDR.reg = 0; + + while (dma_busy) + ; // Wait for prior line to finish + + // Move new descriptor into place... + memcpy(dptr, &descriptor[pixelBufIdx], sizeof(DmacDescriptor)); + dma_busy = true; + dma.startJob(); // Trigger SPI DMA transfer + if (connection == TFT_PARALLEL) + dma.trigger(); + pixelBufIdx = 1 - pixelBufIdx; // Swap DMA pixel buffers + + len -= count; + } + } else { // bigEndian == true + // With big-endian pixel data, this can be handled as a single + // DMA transfer using chained descriptors. Even full screen, this + // needs only a relatively short descriptor list, each + // transferring a max of 32,767 (not 32,768) pixels. The list + // was allocated large enough to accommodate a full screen's + // worth of data, so this won't run past the end of the list. + int d, numDescriptors = (len + 32766) / 32767; + for (d = 0; d < numDescriptors; d++) { + int count = (len < 32767) ? len : 32767; + descriptor[d].SRCADDR.reg = (uint32_t)colors + count * 2; + descriptor[d].BTCTRL.bit.SRCINC = 1; + descriptor[d].BTCNT.reg = count * 2; + descriptor[d].DESCADDR.reg = (uint32_t)&descriptor[d + 1]; + len -= count; + colors += count; + } + descriptor[d - 1].DESCADDR.reg = 0; + + while (dma_busy) + ; // Wait for prior transfer (if any) to finish + + // Move first descriptor into place and start transfer... + memcpy(dptr, &descriptor[0], sizeof(DmacDescriptor)); + dma_busy = true; + dma.startJob(); // Trigger SPI DMA transfer + if (connection == TFT_PARALLEL) + dma.trigger(); + } // end bigEndian + + lastFillColor = 0x0000; // pixelBuf has been sullied + lastFillLen = 0; + if (block) { + while (dma_busy) + ; // Wait for last line to complete +#if defined(__SAMD51__) || defined(ARDUINO_SAMD_ZERO) + if (connection == TFT_HARD_SPI) { + // See SAMD51/21 note in writeColor() + hwspi._spi->setDataMode(hwspi._mode); + } else { + pinPeripheral(tft8._wr, PIO_OUTPUT); // Switch WR back to GPIO + } +#endif // end __SAMD51__ || ARDUINO_SAMD_ZERO + } + return; + } +#endif // end USE_SPI_DMA + + // All other cases (bitbang SPI or non-DMA hard SPI or parallel), + // use a loop with the normal 16-bit data write function: + + if (!bigEndian) { + while (len--) { + SPI_WRITE16(*colors++); + } + } else { + // Well this is awkward. SPI_WRITE16() was designed for little-endian + // hosts and big-endian displays as that's nearly always the typical + // case. If the bigEndian flag was set, data is already in display's + // order...so each pixel needs byte-swapping before being issued. + // Rather than having a separate big-endian SPI_WRITE16 (adding more + // bloat), it's preferred if calling function is smart and only uses + // bigEndian where DMA is supported. But we gotta handle this... + while (len--) { + SPI_WRITE16(__builtin_bswap16(*colors++)); + } + } +} + +/*! + @brief Wait for the last DMA transfer in a prior non-blocking + writePixels() call to complete. This does nothing if DMA + is not enabled, and is not needed if blocking writePixels() + was used (as is the default case). +*/ +void Adafruit_SPITFT::dmaWait(void) { +#if defined(USE_SPI_DMA) && (defined(__SAMD51__) || defined(ARDUINO_SAMD_ZERO)) + while (dma_busy) + ; +#if defined(__SAMD51__) || defined(ARDUINO_SAMD_ZERO) + if (connection == TFT_HARD_SPI) { + // See SAMD51/21 note in writeColor() + hwspi._spi->setDataMode(hwspi._mode); + } else { + pinPeripheral(tft8._wr, PIO_OUTPUT); // Switch WR back to GPIO + } +#endif // end __SAMD51__ || ARDUINO_SAMD_ZERO +#endif +} + +/*! + @brief Check if DMA transfer is active. Always returts false if DMA + is not enabled. + @return true if DMA is enabled and transmitting data, false otherwise. +*/ +bool Adafruit_SPITFT::dmaBusy(void) const { +#if defined(USE_SPI_DMA) && (defined(__SAMD51__) || defined(ARDUINO_SAMD_ZERO)) + return dma_busy; +#else + return false; +#endif +} + +/*! + @brief Issue a series of pixels, all the same color. Not self- + contained; should follow startWrite() and setAddrWindow() calls. + @param color 16-bit pixel color in '565' RGB format. + @param len Number of pixels to draw. +*/ +void Adafruit_SPITFT::writeColor(uint16_t color, uint32_t len) { + + if (!len) + return; // Avoid 0-byte transfers + + uint8_t hi = color >> 8, lo = color; + +#if defined(ESP32) // ESP32 has a special SPI pixel-writing function... + if (connection == TFT_HARD_SPI) { +#define SPI_MAX_PIXELS_AT_ONCE 32 +#define TMPBUF_LONGWORDS (SPI_MAX_PIXELS_AT_ONCE + 1) / 2 +#define TMPBUF_PIXELS (TMPBUF_LONGWORDS * 2) + static uint32_t temp[TMPBUF_LONGWORDS]; + uint32_t c32 = color * 0x00010001; + uint16_t bufLen = (len < TMPBUF_PIXELS) ? len : TMPBUF_PIXELS, xferLen, + fillLen; + // Fill temp buffer 32 bits at a time + fillLen = (bufLen + 1) / 2; // Round up to next 32-bit boundary + for (uint32_t t = 0; t < fillLen; t++) { + temp[t] = c32; + } + // Issue pixels in blocks from temp buffer + while (len) { // While pixels remain + xferLen = (bufLen < len) ? bufLen : len; // How many this pass? + writePixels((uint16_t *)temp, xferLen); + len -= xferLen; + } + return; + } +#elif defined(ARDUINO_NRF52_ADAFRUIT) && \ + defined(NRF52840_XXAA) // Adafruit nRF52840 use SPIM3 DMA at 32Mhz + // at most 2 scan lines + uint32_t const pixbufcount = min(len, ((uint32_t)2 * width())); + uint16_t *pixbuf = (uint16_t *)rtos_malloc(2 * pixbufcount); + + // use SPI3 DMA if we could allocate buffer, else fall back to writing each + // pixel loop below + if (pixbuf) { + uint16_t const swap_color = __builtin_bswap16(color); + + // fill buffer with color + for (uint32_t i = 0; i < pixbufcount; i++) { + pixbuf[i] = swap_color; + } + + while (len) { + uint32_t const count = min(len, pixbufcount); + writePixels(pixbuf, count, true, true); + len -= count; + } + + rtos_free(pixbuf); + return; + } +#elif defined(ARDUINO_ARCH_RTTHREAD) + uint16_t pixbufcount; + uint16_t *pixbuf; + int16_t lines = height() / 4; +#define QUICKPATH_MAX_LEN 16 + uint16_t quickpath_buffer[QUICKPATH_MAX_LEN]; + + do { + pixbufcount = min(len, (lines * width())); + if (pixbufcount > QUICKPATH_MAX_LEN) { + pixbuf = (uint16_t *)rt_malloc(2 * pixbufcount); + } else { + pixbuf = quickpath_buffer; + } + lines -= 2; + } while (!pixbuf && lines > 0); + + if (pixbuf) { + uint16_t const swap_color = __builtin_bswap16(color); + + while (len) { + uint16_t count = min(len, pixbufcount); + // fill buffer with color + for (uint16_t i = 0; i < count; i++) { + pixbuf[i] = swap_color; + } + // Don't need to swap color inside the function + // It has been done outside this function + writePixels(pixbuf, count, true, true); + len -= count; + } + if (pixbufcount > QUICKPATH_MAX_LEN) { + rt_free(pixbuf); + } +#undef QUICKPATH_MAX_LEN + return; + } +#else // !ESP32 +#if defined(USE_SPI_DMA) && (defined(__SAMD51__) || defined(ARDUINO_SAMD_ZERO)) + if (((connection == TFT_HARD_SPI) || (connection == TFT_PARALLEL)) && + (len >= 16)) { // Don't bother with DMA on short pixel runs + int i, d, numDescriptors; + if (hi == lo) { // If high & low bytes are same... + onePixelBuf = color; + // Can do this with a relatively short descriptor list, + // each transferring a max of 32,767 (not 32,768) pixels. + // This won't run off the end of the allocated descriptor list, + // since we're using much larger chunks per descriptor here. + numDescriptors = (len + 32766) / 32767; + for (d = 0; d < numDescriptors; d++) { + int count = (len < 32767) ? len : 32767; + descriptor[d].SRCADDR.reg = (uint32_t)&onePixelBuf; + descriptor[d].BTCTRL.bit.SRCINC = 0; + descriptor[d].BTCNT.reg = count * 2; + descriptor[d].DESCADDR.reg = (uint32_t)&descriptor[d + 1]; + len -= count; + } + descriptor[d - 1].DESCADDR.reg = 0; + } else { + // If high and low bytes are distinct, it's necessary to fill + // a buffer with pixel data (swapping high and low bytes because + // TFT and SAMD are different endianisms) and create a longer + // descriptor list pointing repeatedly to this data. We can do + // this slightly faster working 2 pixels (32 bits) at a time. + uint32_t *pixelPtr = (uint32_t *)pixelBuf[0], + twoPixels = __builtin_bswap16(color) * 0x00010001; + // We can avoid some or all of the buffer-filling if the color + // is the same as last time... + if (color == lastFillColor) { + // If length is longer than prior instance, fill only the + // additional pixels in the buffer and update lastFillLen. + if (len > lastFillLen) { + int fillStart = lastFillLen / 2, + fillEnd = (((len < maxFillLen) ? len : maxFillLen) + 1) / 2; + for (i = fillStart; i < fillEnd; i++) + pixelPtr[i] = twoPixels; + lastFillLen = fillEnd * 2; + } // else do nothing, don't set pixels or change lastFillLen + } else { + int fillEnd = (((len < maxFillLen) ? len : maxFillLen) + 1) / 2; + for (i = 0; i < fillEnd; i++) + pixelPtr[i] = twoPixels; + lastFillLen = fillEnd * 2; + lastFillColor = color; + } + + numDescriptors = (len + maxFillLen - 1) / maxFillLen; + for (d = 0; d < numDescriptors; d++) { + int pixels = (len < maxFillLen) ? len : maxFillLen, bytes = pixels * 2; + descriptor[d].SRCADDR.reg = (uint32_t)pixelPtr + bytes; + descriptor[d].BTCTRL.bit.SRCINC = 1; + descriptor[d].BTCNT.reg = bytes; + descriptor[d].DESCADDR.reg = (uint32_t)&descriptor[d + 1]; + len -= pixels; + } + descriptor[d - 1].DESCADDR.reg = 0; + } + memcpy(dptr, &descriptor[0], sizeof(DmacDescriptor)); +#if defined(__SAMD51__) + if (connection == TFT_PARALLEL) { + // Switch WR pin to PWM or CCL + pinPeripheral(tft8._wr, wrPeripheral); + } +#endif // end __SAMD51__ + + dma_busy = true; + dma.startJob(); + if (connection == TFT_PARALLEL) + dma.trigger(); + while (dma_busy) + ; // Wait for completion + // Unfortunately blocking is necessary. An earlier version returned + // immediately and checked dma_busy on startWrite() instead, but it + // turns out to be MUCH slower on many graphics operations (as when + // drawing lines, pixel-by-pixel), perhaps because it's a volatile + // type and doesn't cache. Working on this. +#if defined(__SAMD51__) || defined(ARDUINO_SAMD_ZERO) + if (connection == TFT_HARD_SPI) { + // SAMD51: SPI DMA seems to leave the SPI peripheral in a freaky + // state on completion. Workaround is to explicitly set it back... + // (5/17/2019: apparently SAMD21 too, in certain cases, observed + // with ST7789 display.) + hwspi._spi->setDataMode(hwspi._mode); + } else { + pinPeripheral(tft8._wr, PIO_OUTPUT); // Switch WR back to GPIO + } +#endif // end __SAMD51__ + return; + } +#endif // end USE_SPI_DMA +#endif // end !ESP32 + + // All other cases (non-DMA hard SPI, bitbang SPI, parallel)... + + if (connection == TFT_HARD_SPI) { +#if defined(ESP8266) + do { + uint32_t pixelsThisPass = len; + if (pixelsThisPass > 50000) + pixelsThisPass = 50000; + len -= pixelsThisPass; + delay(1); // Periodic delay on long fills + while (pixelsThisPass--) { + hwspi._spi->write(hi); + hwspi._spi->write(lo); + } + } while (len); +#elif defined(ARDUINO_ARCH_RP2040) + spi_inst_t *pi_spi = hwspi._spi == &SPI ? __SPI0_DEVICE : __SPI1_DEVICE; + color = __builtin_bswap16(color); + + while (len--) + spi_write_blocking(pi_spi, (uint8_t *)&color, 2); +#else // !ESP8266 && !ARDUINO_ARCH_RP2040 + while (len--) { +#if defined(__AVR__) + AVR_WRITESPI(hi); + AVR_WRITESPI(lo); +#elif defined(ESP32) + hwspi._spi->write(hi); + hwspi._spi->write(lo); +#else + hwspi._spi->transfer(hi); + hwspi._spi->transfer(lo); +#endif + } +#endif // end !ESP8266 + } else if (connection == TFT_SOFT_SPI) { +#if defined(ESP8266) + do { + uint32_t pixelsThisPass = len; + if (pixelsThisPass > 20000) + pixelsThisPass = 20000; + len -= pixelsThisPass; + yield(); // Periodic yield() on long fills + while (pixelsThisPass--) { + for (uint16_t bit = 0, x = color; bit < 16; bit++) { + if (x & 0x8000) + SPI_MOSI_HIGH(); + else + SPI_MOSI_LOW(); + SPI_SCK_HIGH(); + SPI_SCK_LOW(); + x <<= 1; + } + } + } while (len); +#else // !ESP8266 + while (len--) { +#if defined(__AVR__) + for (uint8_t bit = 0, x = hi; bit < 8; bit++) { + if (x & 0x80) + SPI_MOSI_HIGH(); + else + SPI_MOSI_LOW(); + SPI_SCK_HIGH(); + SPI_SCK_LOW(); + x <<= 1; + } + for (uint8_t bit = 0, x = lo; bit < 8; bit++) { + if (x & 0x80) + SPI_MOSI_HIGH(); + else + SPI_MOSI_LOW(); + SPI_SCK_HIGH(); + SPI_SCK_LOW(); + x <<= 1; + } +#else // !__AVR__ + for (uint16_t bit = 0, x = color; bit < 16; bit++) { + if (x & 0x8000) + SPI_MOSI_HIGH(); + else + SPI_MOSI_LOW(); + SPI_SCK_HIGH(); + x <<= 1; + SPI_SCK_LOW(); + } +#endif // end !__AVR__ + } +#endif // end !ESP8266 + } else { // PARALLEL + if (hi == lo) { +#if defined(__AVR__) + len *= 2; + *tft8.writePort = hi; + while (len--) { + TFT_WR_STROBE(); + } +#elif defined(USE_FAST_PINIO) + if (!tft8.wide) { + len *= 2; + *tft8.writePort = hi; + } else { + *(volatile uint16_t *)tft8.writePort = color; + } + while (len--) { + TFT_WR_STROBE(); + } +#endif + } else { + while (len--) { +#if defined(__AVR__) + *tft8.writePort = hi; + TFT_WR_STROBE(); + *tft8.writePort = lo; +#elif defined(USE_FAST_PINIO) + if (!tft8.wide) { + *tft8.writePort = hi; + TFT_WR_STROBE(); + *tft8.writePort = lo; + } else { + *(volatile uint16_t *)tft8.writePort = color; + } +#endif + TFT_WR_STROBE(); + } + } + } +} + +/*! + @brief Draw a filled rectangle to the display. Not self-contained; + should follow startWrite(). Typically used by higher-level + graphics primitives; user code shouldn't need to call this and + is likely to use the self-contained fillRect() instead. + writeFillRect() performs its own edge clipping and rejection; + see writeFillRectPreclipped() for a more 'raw' implementation. + @param x Horizontal position of first corner. + @param y Vertical position of first corner. + @param w Rectangle width in pixels (positive = right of first + corner, negative = left of first corner). + @param h Rectangle height in pixels (positive = below first + corner, negative = above first corner). + @param color 16-bit fill color in '565' RGB format. + @note Written in this deep-nested way because C by definition will + optimize for the 'if' case, not the 'else' -- avoids branches + and rejects clipped rectangles at the least-work possibility. +*/ +void Adafruit_SPITFT::writeFillRect(int16_t x, int16_t y, int16_t w, int16_t h, + uint16_t color) { + if (w && h) { // Nonzero width and height? + if (w < 0) { // If negative width... + x += w + 1; // Move X to left edge + w = -w; // Use positive width + } + if (x < _width) { // Not off right + if (h < 0) { // If negative height... + y += h + 1; // Move Y to top edge + h = -h; // Use positive height + } + if (y < _height) { // Not off bottom + int16_t x2 = x + w - 1; + if (x2 >= 0) { // Not off left + int16_t y2 = y + h - 1; + if (y2 >= 0) { // Not off top + // Rectangle partly or fully overlaps screen + if (x < 0) { + x = 0; + w = x2 + 1; + } // Clip left + if (y < 0) { + y = 0; + h = y2 + 1; + } // Clip top + if (x2 >= _width) { + w = _width - x; + } // Clip right + if (y2 >= _height) { + h = _height - y; + } // Clip bottom + writeFillRectPreclipped(x, y, w, h, color); + } + } + } + } + } +} + +/*! + @brief Draw a horizontal line on the display. Performs edge clipping + and rejection. Not self-contained; should follow startWrite(). + Typically used by higher-level graphics primitives; user code + shouldn't need to call this and is likely to use the self- + contained drawFastHLine() instead. + @param x Horizontal position of first point. + @param y Vertical position of first point. + @param w Line width in pixels (positive = right of first point, + negative = point of first corner). + @param color 16-bit line color in '565' RGB format. +*/ +void inline Adafruit_SPITFT::writeFastHLine(int16_t x, int16_t y, int16_t w, + uint16_t color) { + if ((y >= 0) && (y < _height) && w) { // Y on screen, nonzero width + if (w < 0) { // If negative width... + x += w + 1; // Move X to left edge + w = -w; // Use positive width + } + if (x < _width) { // Not off right + int16_t x2 = x + w - 1; + if (x2 >= 0) { // Not off left + // Line partly or fully overlaps screen + if (x < 0) { + x = 0; + w = x2 + 1; + } // Clip left + if (x2 >= _width) { + w = _width - x; + } // Clip right + writeFillRectPreclipped(x, y, w, 1, color); + } + } + } +} + +/*! + @brief Draw a vertical line on the display. Performs edge clipping and + rejection. Not self-contained; should follow startWrite(). + Typically used by higher-level graphics primitives; user code + shouldn't need to call this and is likely to use the self- + contained drawFastVLine() instead. + @param x Horizontal position of first point. + @param y Vertical position of first point. + @param h Line height in pixels (positive = below first point, + negative = above first point). + @param color 16-bit line color in '565' RGB format. +*/ +void inline Adafruit_SPITFT::writeFastVLine(int16_t x, int16_t y, int16_t h, + uint16_t color) { + if ((x >= 0) && (x < _width) && h) { // X on screen, nonzero height + if (h < 0) { // If negative height... + y += h + 1; // Move Y to top edge + h = -h; // Use positive height + } + if (y < _height) { // Not off bottom + int16_t y2 = y + h - 1; + if (y2 >= 0) { // Not off top + // Line partly or fully overlaps screen + if (y < 0) { + y = 0; + h = y2 + 1; + } // Clip top + if (y2 >= _height) { + h = _height - y; + } // Clip bottom + writeFillRectPreclipped(x, y, 1, h, color); + } + } + } +} + +/*! + @brief A lower-level version of writeFillRect(). This version requires + all inputs are in-bounds, that width and height are positive, + and no part extends offscreen. NO EDGE CLIPPING OR REJECTION IS + PERFORMED. If higher-level graphics primitives are written to + handle their own clipping earlier in the drawing process, this + can avoid unnecessary function calls and repeated clipping + operations in the lower-level functions. + @param x Horizontal position of first corner. MUST BE WITHIN + SCREEN BOUNDS. + @param y Vertical position of first corner. MUST BE WITHIN SCREEN + BOUNDS. + @param w Rectangle width in pixels. MUST BE POSITIVE AND NOT + EXTEND OFF SCREEN. + @param h Rectangle height in pixels. MUST BE POSITIVE AND NOT + EXTEND OFF SCREEN. + @param color 16-bit fill color in '565' RGB format. + @note This is a new function, no graphics primitives besides rects + and horizontal/vertical lines are written to best use this yet. +*/ +inline void Adafruit_SPITFT::writeFillRectPreclipped(int16_t x, int16_t y, + int16_t w, int16_t h, + uint16_t color) { + setAddrWindow(x, y, w, h); + writeColor(color, (uint32_t)w * h); +} + +// ------------------------------------------------------------------------- +// Ever-so-slightly higher-level graphics operations. Similar to the 'write' +// functions above, but these contain their own chip-select and SPI +// transactions as needed (via startWrite(), endWrite()). They're typically +// used solo -- as graphics primitives in themselves, not invoked by higher- +// level primitives (which should use the functions above for better +// performance). + +/*! + @brief Draw a single pixel to the display at requested coordinates. + Self-contained and provides its own transaction as needed + (see writePixel(x,y,color) for a lower-level variant). + Edge clipping is performed here. + @param x Horizontal position (0 = left). + @param y Vertical position (0 = top). + @param color 16-bit pixel color in '565' RGB format. +*/ +void Adafruit_SPITFT::drawPixel(int16_t x, int16_t y, uint16_t color) { + // Clip first... + if ((x >= 0) && (x < _width) && (y >= 0) && (y < _height)) { + // THEN set up transaction (if needed) and draw... + startWrite(); + setAddrWindow(x, y, 1, 1); + SPI_WRITE16(color); + endWrite(); + } +} + +/*! + @brief Draw a filled rectangle to the display. Self-contained and + provides its own transaction as needed (see writeFillRect() or + writeFillRectPreclipped() for lower-level variants). Edge + clipping and rejection is performed here. + @param x Horizontal position of first corner. + @param y Vertical position of first corner. + @param w Rectangle width in pixels (positive = right of first + corner, negative = left of first corner). + @param h Rectangle height in pixels (positive = below first + corner, negative = above first corner). + @param color 16-bit fill color in '565' RGB format. + @note This repeats the writeFillRect() function almost in its entirety, + with the addition of a transaction start/end. It's done this way + (rather than starting the transaction and calling writeFillRect() + to handle clipping and so forth) so that the transaction isn't + performed at all if the rectangle is rejected. It's really not + that much code. +*/ +void Adafruit_SPITFT::fillRect(int16_t x, int16_t y, int16_t w, int16_t h, + uint16_t color) { + if (w && h) { // Nonzero width and height? + if (w < 0) { // If negative width... + x += w + 1; // Move X to left edge + w = -w; // Use positive width + } + if (x < _width) { // Not off right + if (h < 0) { // If negative height... + y += h + 1; // Move Y to top edge + h = -h; // Use positive height + } + if (y < _height) { // Not off bottom + int16_t x2 = x + w - 1; + if (x2 >= 0) { // Not off left + int16_t y2 = y + h - 1; + if (y2 >= 0) { // Not off top + // Rectangle partly or fully overlaps screen + if (x < 0) { + x = 0; + w = x2 + 1; + } // Clip left + if (y < 0) { + y = 0; + h = y2 + 1; + } // Clip top + if (x2 >= _width) { + w = _width - x; + } // Clip right + if (y2 >= _height) { + h = _height - y; + } // Clip bottom + startWrite(); + writeFillRectPreclipped(x, y, w, h, color); + endWrite(); + } + } + } + } + } +} + +/*! + @brief Draw a horizontal line on the display. Self-contained and + provides its own transaction as needed (see writeFastHLine() for + a lower-level variant). Edge clipping and rejection is performed + here. + @param x Horizontal position of first point. + @param y Vertical position of first point. + @param w Line width in pixels (positive = right of first point, + negative = point of first corner). + @param color 16-bit line color in '565' RGB format. + @note This repeats the writeFastHLine() function almost in its + entirety, with the addition of a transaction start/end. It's + done this way (rather than starting the transaction and calling + writeFastHLine() to handle clipping and so forth) so that the + transaction isn't performed at all if the line is rejected. +*/ +void Adafruit_SPITFT::drawFastHLine(int16_t x, int16_t y, int16_t w, + uint16_t color) { + if ((y >= 0) && (y < _height) && w) { // Y on screen, nonzero width + if (w < 0) { // If negative width... + x += w + 1; // Move X to left edge + w = -w; // Use positive width + } + if (x < _width) { // Not off right + int16_t x2 = x + w - 1; + if (x2 >= 0) { // Not off left + // Line partly or fully overlaps screen + if (x < 0) { + x = 0; + w = x2 + 1; + } // Clip left + if (x2 >= _width) { + w = _width - x; + } // Clip right + startWrite(); + writeFillRectPreclipped(x, y, w, 1, color); + endWrite(); + } + } + } +} + +/*! + @brief Draw a vertical line on the display. Self-contained and provides + its own transaction as needed (see writeFastHLine() for a lower- + level variant). Edge clipping and rejection is performed here. + @param x Horizontal position of first point. + @param y Vertical position of first point. + @param h Line height in pixels (positive = below first point, + negative = above first point). + @param color 16-bit line color in '565' RGB format. + @note This repeats the writeFastVLine() function almost in its + entirety, with the addition of a transaction start/end. It's + done this way (rather than starting the transaction and calling + writeFastVLine() to handle clipping and so forth) so that the + transaction isn't performed at all if the line is rejected. +*/ +void Adafruit_SPITFT::drawFastVLine(int16_t x, int16_t y, int16_t h, + uint16_t color) { + if ((x >= 0) && (x < _width) && h) { // X on screen, nonzero height + if (h < 0) { // If negative height... + y += h + 1; // Move Y to top edge + h = -h; // Use positive height + } + if (y < _height) { // Not off bottom + int16_t y2 = y + h - 1; + if (y2 >= 0) { // Not off top + // Line partly or fully overlaps screen + if (y < 0) { + y = 0; + h = y2 + 1; + } // Clip top + if (y2 >= _height) { + h = _height - y; + } // Clip bottom + startWrite(); + writeFillRectPreclipped(x, y, 1, h, color); + endWrite(); + } + } + } +} + +/*! + @brief Essentially writePixel() with a transaction around it. I don't + think this is in use by any of our code anymore (believe it was + for some older BMP-reading examples), but is kept here in case + any user code relies on it. Consider it DEPRECATED. + @param color 16-bit pixel color in '565' RGB format. +*/ +void Adafruit_SPITFT::pushColor(uint16_t color) { + startWrite(); + SPI_WRITE16(color); + endWrite(); +} + +/*! + @brief Draw a 16-bit image (565 RGB) at the specified (x,y) position. + For 16-bit display devices; no color reduction performed. + Adapted from https://github.com/PaulStoffregen/ILI9341_t3 + by Marc MERLIN. See examples/pictureEmbed to use this. + 5/6/2017: function name and arguments have changed for + compatibility with current GFX library and to avoid naming + problems in prior implementation. Formerly drawBitmap() with + arguments in different order. Handles its own transaction and + edge clipping/rejection. + @param x Top left corner horizontal coordinate. + @param y Top left corner vertical coordinate. + @param pcolors Pointer to 16-bit array of pixel values. + @param w Width of bitmap in pixels. + @param h Height of bitmap in pixels. +*/ +void Adafruit_SPITFT::drawRGBBitmap(int16_t x, int16_t y, uint16_t *pcolors, + int16_t w, int16_t h) { + + int16_t x2, y2; // Lower-right coord + if ((x >= _width) || // Off-edge right + (y >= _height) || // " top + ((x2 = (x + w - 1)) < 0) || // " left + ((y2 = (y + h - 1)) < 0)) + return; // " bottom + + int16_t bx1 = 0, by1 = 0, // Clipped top-left within bitmap + saveW = w; // Save original bitmap width value + if (x < 0) { // Clip left + w += x; + bx1 = -x; + x = 0; + } + if (y < 0) { // Clip top + h += y; + by1 = -y; + y = 0; + } + if (x2 >= _width) + w = _width - x; // Clip right + if (y2 >= _height) + h = _height - y; // Clip bottom + + pcolors += by1 * saveW + bx1; // Offset bitmap ptr to clipped top-left + startWrite(); + setAddrWindow(x, y, w, h); // Clipped area + while (h--) { // For each (clipped) scanline... + writePixels(pcolors, w); // Push one (clipped) row + pcolors += saveW; // Advance pointer by one full (unclipped) line + } + endWrite(); +} + +// ------------------------------------------------------------------------- +// Miscellaneous class member functions that don't draw anything. + +/*! + @brief Invert the colors of the display (if supported by hardware). + Self-contained, no transaction setup required. + @param i true = inverted display, false = normal display. +*/ +void Adafruit_SPITFT::invertDisplay(bool i) { + startWrite(); + writeCommand(i ? invertOnCommand : invertOffCommand); + endWrite(); +} + +/*! + @brief Given 8-bit red, green and blue values, return a 'packed' + 16-bit color value in '565' RGB format (5 bits red, 6 bits + green, 5 bits blue). This is just a mathematical operation, + no hardware is touched. + @param red 8-bit red brightnesss (0 = off, 255 = max). + @param green 8-bit green brightnesss (0 = off, 255 = max). + @param blue 8-bit blue brightnesss (0 = off, 255 = max). + @return 'Packed' 16-bit color value (565 format). +*/ +uint16_t Adafruit_SPITFT::color565(uint8_t red, uint8_t green, uint8_t blue) { + return ((red & 0xF8) << 8) | ((green & 0xFC) << 3) | (blue >> 3); +} + +/*! +@brief Adafruit_SPITFT Send Command handles complete sending of commands and +data +@param commandByte The Command Byte +@param dataBytes A pointer to the Data bytes to send +@param numDataBytes The number of bytes we should send +*/ +void Adafruit_SPITFT::sendCommand(uint8_t commandByte, uint8_t *dataBytes, + uint8_t numDataBytes) { + SPI_BEGIN_TRANSACTION(); + if (_cs >= 0) + SPI_CS_LOW(); + + SPI_DC_LOW(); // Command mode + spiWrite(commandByte); // Send the command byte + + SPI_DC_HIGH(); + for (int i = 0; i < numDataBytes; i++) { + if ((connection == TFT_PARALLEL) && tft8.wide) { + SPI_WRITE16(*(uint16_t *)dataBytes); + dataBytes += 2; + } else { + spiWrite(*dataBytes); // Send the data bytes + dataBytes++; + } + } + + if (_cs >= 0) + SPI_CS_HIGH(); + SPI_END_TRANSACTION(); +} + +/*! + @brief Adafruit_SPITFT Send Command handles complete sending of commands and + data + @param commandByte The Command Byte + @param dataBytes A pointer to the Data bytes to send + @param numDataBytes The number of bytes we should send + */ +void Adafruit_SPITFT::sendCommand(uint8_t commandByte, const uint8_t *dataBytes, + uint8_t numDataBytes) { + SPI_BEGIN_TRANSACTION(); + if (_cs >= 0) + SPI_CS_LOW(); + + SPI_DC_LOW(); // Command mode + spiWrite(commandByte); // Send the command byte + + SPI_DC_HIGH(); + for (int i = 0; i < numDataBytes; i++) { + if ((connection == TFT_PARALLEL) && tft8.wide) { + SPI_WRITE16(*(uint16_t *)dataBytes); + dataBytes += 2; + } else { + spiWrite(pgm_read_byte(dataBytes++)); + } + } + + if (_cs >= 0) + SPI_CS_HIGH(); + SPI_END_TRANSACTION(); +} + +/*! + @brief Adafruit_SPITFT sendCommand16 handles complete sending of + commands and data for 16-bit parallel displays. Currently somewhat + rigged for the NT35510, which has the odd behavior of wanting + commands 16-bit, but subsequent data as 8-bit values, despite + the 16-bit bus (high byte is always 0). Also seems to require + issuing and incrementing address with each transfer. + @param commandWord The command word (16 bits) + @param dataBytes A pointer to the data bytes to send + @param numDataBytes The number of bytes we should send + */ +void Adafruit_SPITFT::sendCommand16(uint16_t commandWord, + const uint8_t *dataBytes, + uint8_t numDataBytes) { + SPI_BEGIN_TRANSACTION(); + if (_cs >= 0) + SPI_CS_LOW(); + + if (numDataBytes == 0) { + SPI_DC_LOW(); // Command mode + SPI_WRITE16(commandWord); // Send the command word + SPI_DC_HIGH(); // Data mode + } + for (int i = 0; i < numDataBytes; i++) { + SPI_DC_LOW(); // Command mode + SPI_WRITE16(commandWord); // Send the command word + SPI_DC_HIGH(); // Data mode + commandWord++; + SPI_WRITE16((uint16_t)pgm_read_byte(dataBytes++)); + } + + if (_cs >= 0) + SPI_CS_HIGH(); + SPI_END_TRANSACTION(); +} + +/*! + @brief Read 8 bits of data from display configuration memory (not RAM). + This is highly undocumented/supported and should be avoided, + function is only included because some of the examples use it. + @param commandByte + The command register to read data from. + @param index + The byte index into the command to read from. + @return Unsigned 8-bit data read from display register. + */ +/**************************************************************************/ +uint8_t Adafruit_SPITFT::readcommand8(uint8_t commandByte, uint8_t index) { + uint8_t result; + startWrite(); + SPI_DC_LOW(); // Command mode + spiWrite(commandByte); + SPI_DC_HIGH(); // Data mode + do { + result = spiRead(); + } while (index--); // Discard bytes up to index'th + endWrite(); + return result; +} + +/*! + @brief Read 16 bits of data from display register. + For 16-bit parallel displays only. + @param addr Command/register to access. + @return Unsigned 16-bit data. + */ +uint16_t Adafruit_SPITFT::readcommand16(uint16_t addr) { +#if defined(USE_FAST_PINIO) // NOT SUPPORTED without USE_FAST_PINIO + uint16_t result = 0; + if ((connection == TFT_PARALLEL) && tft8.wide) { + startWrite(); + SPI_DC_LOW(); // Command mode + SPI_WRITE16(addr); + SPI_DC_HIGH(); // Data mode + TFT_RD_LOW(); // Read line LOW +#if defined(HAS_PORT_SET_CLR) + *(volatile uint16_t *)tft8.dirClr = 0xFFFF; // Input state + result = *(volatile uint16_t *)tft8.readPort; // 16-bit read + *(volatile uint16_t *)tft8.dirSet = 0xFFFF; // Output state +#else // !HAS_PORT_SET_CLR + *(volatile uint16_t *)tft8.portDir = 0x0000; // Input state + result = *(volatile uint16_t *)tft8.readPort; // 16-bit read + *(volatile uint16_t *)tft8.portDir = 0xFFFF; // Output state +#endif // end !HAS_PORT_SET_CLR + TFT_RD_HIGH(); // Read line HIGH + endWrite(); + } + return result; +#else + (void)addr; // disable -Wunused-parameter warning + return 0; +#endif // end !USE_FAST_PINIO +} + +// ------------------------------------------------------------------------- +// Lowest-level hardware-interfacing functions. Many of these are inline and +// compile to different things based on #defines -- typically just a few +// instructions. Others, not so much, those are not inlined. + +/*! + @brief Start an SPI transaction if using the hardware SPI interface to + the display. If using an earlier version of the Arduino platform + (before the addition of SPI transactions), this instead attempts + to set up the SPI clock and mode. No action is taken if the + connection is not hardware SPI-based. This does NOT include a + chip-select operation -- see startWrite() for a function that + encapsulated both actions. +*/ +inline void Adafruit_SPITFT::SPI_BEGIN_TRANSACTION(void) { + if (connection == TFT_HARD_SPI) { +#if defined(SPI_HAS_TRANSACTION) + hwspi._spi->beginTransaction(hwspi.settings); +#else // No transactions, configure SPI manually... +#if defined(__AVR__) || defined(TEENSYDUINO) || defined(ARDUINO_ARCH_STM32F1) + hwspi._spi->setClockDivider(SPI_CLOCK_DIV2); +#elif defined(__arm__) + hwspi._spi->setClockDivider(11); +#elif defined(ESP8266) || defined(ESP32) + hwspi._spi->setFrequency(hwspi._freq); +#elif defined(RASPI) || defined(ARDUINO_ARCH_STM32F1) + hwspi._spi->setClock(hwspi._freq); +#endif + hwspi._spi->setBitOrder(MSBFIRST); + hwspi._spi->setDataMode(hwspi._mode); +#endif // end !SPI_HAS_TRANSACTION + } +} + +/*! + @brief End an SPI transaction if using the hardware SPI interface to + the display. No action is taken if the connection is not + hardware SPI-based or if using an earlier version of the Arduino + platform (before the addition of SPI transactions). This does + NOT include a chip-deselect operation -- see endWrite() for a + function that encapsulated both actions. +*/ +inline void Adafruit_SPITFT::SPI_END_TRANSACTION(void) { +#if defined(SPI_HAS_TRANSACTION) + if (connection == TFT_HARD_SPI) { + hwspi._spi->endTransaction(); + } +#endif +} + +/*! + @brief Issue a single 8-bit value to the display. Chip-select, + transaction and data/command selection must have been + previously set -- this ONLY issues the byte. This is another of + those functions in the library with a now-not-accurate name + that's being maintained for compatibility with outside code. + This function is used even if display connection is parallel. + @param b 8-bit value to write. +*/ +void Adafruit_SPITFT::spiWrite(uint8_t b) { + if (connection == TFT_HARD_SPI) { +#if defined(__AVR__) + AVR_WRITESPI(b); +#elif defined(ESP8266) || defined(ESP32) + hwspi._spi->write(b); +#elif defined(ARDUINO_ARCH_RP2040) + spi_inst_t *pi_spi = hwspi._spi == &SPI ? __SPI0_DEVICE : __SPI1_DEVICE; + spi_write_blocking(pi_spi, &b, 1); +#else + hwspi._spi->transfer(b); +#endif + } else if (connection == TFT_SOFT_SPI) { + for (uint8_t bit = 0; bit < 8; bit++) { + if (b & 0x80) + SPI_MOSI_HIGH(); + else + SPI_MOSI_LOW(); + SPI_SCK_HIGH(); + b <<= 1; + SPI_SCK_LOW(); + } + } else { // TFT_PARALLEL +#if defined(__AVR__) + *tft8.writePort = b; +#elif defined(USE_FAST_PINIO) + if (!tft8.wide) + *tft8.writePort = b; + else + *(volatile uint16_t *)tft8.writePort = b; +#endif + TFT_WR_STROBE(); + } +} + +/*! + @brief Write a single command byte to the display. Chip-select and + transaction must have been previously set -- this ONLY sets + the device to COMMAND mode, issues the byte and then restores + DATA mode. There is no corresponding explicit writeData() + function -- just use spiWrite(). + @param cmd 8-bit command to write. +*/ +void Adafruit_SPITFT::writeCommand(uint8_t cmd) { + SPI_DC_LOW(); + spiWrite(cmd); + SPI_DC_HIGH(); +} + +/*! + @brief Read a single 8-bit value from the display. Chip-select and + transaction must have been previously set -- this ONLY reads + the byte. This is another of those functions in the library + with a now-not-accurate name that's being maintained for + compatibility with outside code. This function is used even if + display connection is parallel. + @return Unsigned 8-bit value read (always zero if USE_FAST_PINIO is + not supported by the MCU architecture). +*/ +uint8_t Adafruit_SPITFT::spiRead(void) { + uint8_t b = 0; + uint16_t w = 0; + if (connection == TFT_HARD_SPI) { + return hwspi._spi->transfer((uint8_t)0); + } else if (connection == TFT_SOFT_SPI) { + if (swspi._miso >= 0) { + for (uint8_t i = 0; i < 8; i++) { + SPI_SCK_HIGH(); + b <<= 1; + if (SPI_MISO_READ()) + b++; + SPI_SCK_LOW(); + } + } + return b; + } else { // TFT_PARALLEL + if (tft8._rd >= 0) { +#if defined(USE_FAST_PINIO) + TFT_RD_LOW(); // Read line LOW +#if defined(__AVR__) + *tft8.portDir = 0x00; // Set port to input state + w = *tft8.readPort; // Read value from port + *tft8.portDir = 0xFF; // Restore port to output +#else // !__AVR__ + if (!tft8.wide) { // 8-bit TFT connection +#if defined(HAS_PORT_SET_CLR) + *tft8.dirClr = 0xFF; // Set port to input state + w = *tft8.readPort; // Read value from port + *tft8.dirSet = 0xFF; // Restore port to output +#else // !HAS_PORT_SET_CLR + *tft8.portDir = 0x00; // Set port to input state + w = *tft8.readPort; // Read value from port + *tft8.portDir = 0xFF; // Restore port to output +#endif // end HAS_PORT_SET_CLR + } else { // 16-bit TFT connection +#if defined(HAS_PORT_SET_CLR) + *(volatile uint16_t *)tft8.dirClr = 0xFFFF; // Input state + w = *(volatile uint16_t *)tft8.readPort; // 16-bit read + *(volatile uint16_t *)tft8.dirSet = 0xFFFF; // Output state +#else // !HAS_PORT_SET_CLR + *(volatile uint16_t *)tft8.portDir = 0x0000; // Input state + w = *(volatile uint16_t *)tft8.readPort; // 16-bit read + *(volatile uint16_t *)tft8.portDir = 0xFFFF; // Output state +#endif // end !HAS_PORT_SET_CLR + } + TFT_RD_HIGH(); // Read line HIGH +#endif // end !__AVR__ +#else // !USE_FAST_PINIO + w = 0; // Parallel TFT is NOT SUPPORTED without USE_FAST_PINIO +#endif // end !USE_FAST_PINIO + } + return w; + } +} + +/*! + @brief Issue a single 16-bit value to the display. Chip-select, + transaction and data/command selection must have been + previously set -- this ONLY issues the word. + Thus operates ONLY on 'wide' (16-bit) parallel displays! + @param w 16-bit value to write. +*/ +void Adafruit_SPITFT::write16(uint16_t w) { + if (connection == TFT_PARALLEL) { +#if defined(USE_FAST_PINIO) + if (tft8.wide) + *(volatile uint16_t *)tft8.writePort = w; +#else + (void)w; // disable -Wunused-parameter warning +#endif + TFT_WR_STROBE(); + } +} + +/*! + @brief Write a single command word to the display. Chip-select and + transaction must have been previously set -- this ONLY sets + the device to COMMAND mode, issues the byte and then restores + DATA mode. This operates ONLY on 'wide' (16-bit) parallel + displays! + @param cmd 16-bit command to write. +*/ +void Adafruit_SPITFT::writeCommand16(uint16_t cmd) { + SPI_DC_LOW(); + write16(cmd); + SPI_DC_HIGH(); +} + +/*! + @brief Read a single 16-bit value from the display. Chip-select and + transaction must have been previously set -- this ONLY reads + the byte. This operates ONLY on 'wide' (16-bit) parallel + displays! + @return Unsigned 16-bit value read (always zero if USE_FAST_PINIO is + not supported by the MCU architecture). +*/ +uint16_t Adafruit_SPITFT::read16(void) { + uint16_t w = 0; + if (connection == TFT_PARALLEL) { + if (tft8._rd >= 0) { +#if defined(USE_FAST_PINIO) + TFT_RD_LOW(); // Read line LOW + if (tft8.wide) { // 16-bit TFT connection +#if defined(HAS_PORT_SET_CLR) + *(volatile uint16_t *)tft8.dirClr = 0xFFFF; // Input state + w = *(volatile uint16_t *)tft8.readPort; // 16-bit read + *(volatile uint16_t *)tft8.dirSet = 0xFFFF; // Output state +#else // !HAS_PORT_SET_CLR + *(volatile uint16_t *)tft8.portDir = 0x0000; // Input state + w = *(volatile uint16_t *)tft8.readPort; // 16-bit read + *(volatile uint16_t *)tft8.portDir = 0xFFFF; // Output state +#endif // end !HAS_PORT_SET_CLR + } + TFT_RD_HIGH(); // Read line HIGH +#else // !USE_FAST_PINIO + w = 0; // Parallel TFT is NOT SUPPORTED without USE_FAST_PINIO +#endif // end !USE_FAST_PINIO + } + } + return w; +} + +/*! + @brief Set the software (bitbang) SPI MOSI line HIGH. +*/ +inline void Adafruit_SPITFT::SPI_MOSI_HIGH(void) { +#if defined(USE_FAST_PINIO) +#if defined(HAS_PORT_SET_CLR) +#if defined(KINETISK) + *swspi.mosiPortSet = 1; +#else // !KINETISK + *swspi.mosiPortSet = swspi.mosiPinMask; +#endif +#else // !HAS_PORT_SET_CLR + *swspi.mosiPort |= swspi.mosiPinMaskSet; +#endif // end !HAS_PORT_SET_CLR +#else // !USE_FAST_PINIO + digitalWrite(swspi._mosi, HIGH); +#endif // end !USE_FAST_PINIO +} + +/*! + @brief Set the software (bitbang) SPI MOSI line LOW. +*/ +inline void Adafruit_SPITFT::SPI_MOSI_LOW(void) { +#if defined(USE_FAST_PINIO) +#if defined(HAS_PORT_SET_CLR) +#if defined(KINETISK) + *swspi.mosiPortClr = 1; +#else // !KINETISK + *swspi.mosiPortClr = swspi.mosiPinMask; +#endif +#else // !HAS_PORT_SET_CLR + *swspi.mosiPort &= swspi.mosiPinMaskClr; +#endif // end !HAS_PORT_SET_CLR +#else // !USE_FAST_PINIO + digitalWrite(swspi._mosi, LOW); +#endif // end !USE_FAST_PINIO +} + +/*! + @brief Set the software (bitbang) SPI SCK line HIGH. +*/ +inline void Adafruit_SPITFT::SPI_SCK_HIGH(void) { +#if defined(USE_FAST_PINIO) +#if defined(HAS_PORT_SET_CLR) +#if defined(KINETISK) + *swspi.sckPortSet = 1; +#else // !KINETISK + *swspi.sckPortSet = swspi.sckPinMask; +#endif +#else // !HAS_PORT_SET_CLR + *swspi.sckPort |= swspi.sckPinMaskSet; +#endif // end !HAS_PORT_SET_CLR +#else // !USE_FAST_PINIO + digitalWrite(swspi._sck, HIGH); +#endif // end !USE_FAST_PINIO +} + +/*! + @brief Set the software (bitbang) SPI SCK line LOW. +*/ +inline void Adafruit_SPITFT::SPI_SCK_LOW(void) { +#if defined(USE_FAST_PINIO) +#if defined(HAS_PORT_SET_CLR) +#if defined(KINETISK) + *swspi.sckPortClr = 1; +#else // !KINETISK + *swspi.sckPortClr = swspi.sckPinMask; +#endif +#else // !HAS_PORT_SET_CLR + *swspi.sckPort &= swspi.sckPinMaskClr; +#endif // end !HAS_PORT_SET_CLR +#else // !USE_FAST_PINIO + digitalWrite(swspi._sck, LOW); +#endif // end !USE_FAST_PINIO +} + +/*! + @brief Read the state of the software (bitbang) SPI MISO line. + @return true if HIGH, false if LOW. +*/ +inline bool Adafruit_SPITFT::SPI_MISO_READ(void) { +#if defined(USE_FAST_PINIO) +#if defined(KINETISK) + return *swspi.misoPort; +#else // !KINETISK + return *swspi.misoPort & swspi.misoPinMask; +#endif // end !KINETISK +#else // !USE_FAST_PINIO + return digitalRead(swspi._miso); +#endif // end !USE_FAST_PINIO +} + +/*! + @brief Issue a single 16-bit value to the display. Chip-select, + transaction and data/command selection must have been + previously set -- this ONLY issues the word. Despite the name, + this function is used even if display connection is parallel; + name was maintaned for backward compatibility. Naming is also + not consistent with the 8-bit version, spiWrite(). Sorry about + that. Again, staying compatible with outside code. + @param w 16-bit value to write. +*/ +void Adafruit_SPITFT::SPI_WRITE16(uint16_t w) { + if (connection == TFT_HARD_SPI) { +#if defined(__AVR__) + AVR_WRITESPI(w >> 8); + AVR_WRITESPI(w); +#elif defined(ESP8266) || defined(ESP32) + hwspi._spi->write16(w); +#elif defined(ARDUINO_ARCH_RP2040) + spi_inst_t *pi_spi = hwspi._spi == &SPI ? __SPI0_DEVICE : __SPI1_DEVICE; + w = __builtin_bswap16(w); + spi_write_blocking(pi_spi, (uint8_t *)&w, 2); +#elif defined(ARDUINO_ARCH_RTTHREAD) + hwspi._spi->transfer16(w); +#else + // MSB, LSB because TFTs are generally big-endian + hwspi._spi->transfer(w >> 8); + hwspi._spi->transfer(w); +#endif + } else if (connection == TFT_SOFT_SPI) { + for (uint8_t bit = 0; bit < 16; bit++) { + if (w & 0x8000) + SPI_MOSI_HIGH(); + else + SPI_MOSI_LOW(); + SPI_SCK_HIGH(); + SPI_SCK_LOW(); + w <<= 1; + } + } else { // TFT_PARALLEL +#if defined(__AVR__) + *tft8.writePort = w >> 8; + TFT_WR_STROBE(); + *tft8.writePort = w; +#elif defined(USE_FAST_PINIO) + if (!tft8.wide) { + *tft8.writePort = w >> 8; + TFT_WR_STROBE(); + *tft8.writePort = w; + } else { + *(volatile uint16_t *)tft8.writePort = w; + } +#endif + TFT_WR_STROBE(); + } +} + +/*! + @brief Issue a single 32-bit value to the display. Chip-select, + transaction and data/command selection must have been + previously set -- this ONLY issues the longword. Despite the + name, this function is used even if display connection is + parallel; name was maintaned for backward compatibility. Naming + is also not consistent with the 8-bit version, spiWrite(). + Sorry about that. Again, staying compatible with outside code. + @param l 32-bit value to write. +*/ +void Adafruit_SPITFT::SPI_WRITE32(uint32_t l) { + if (connection == TFT_HARD_SPI) { +#if defined(__AVR__) + AVR_WRITESPI(l >> 24); + AVR_WRITESPI(l >> 16); + AVR_WRITESPI(l >> 8); + AVR_WRITESPI(l); +#elif defined(ESP8266) || defined(ESP32) + hwspi._spi->write32(l); +#elif defined(ARDUINO_ARCH_RP2040) + spi_inst_t *pi_spi = hwspi._spi == &SPI ? __SPI0_DEVICE : __SPI1_DEVICE; + l = __builtin_bswap32(l); + spi_write_blocking(pi_spi, (uint8_t *)&l, 4); +#elif defined(ARDUINO_ARCH_RTTHREAD) + hwspi._spi->transfer16(l >> 16); + hwspi._spi->transfer16(l); +#else + hwspi._spi->transfer(l >> 24); + hwspi._spi->transfer(l >> 16); + hwspi._spi->transfer(l >> 8); + hwspi._spi->transfer(l); +#endif + } else if (connection == TFT_SOFT_SPI) { + for (uint8_t bit = 0; bit < 32; bit++) { + if (l & 0x80000000) + SPI_MOSI_HIGH(); + else + SPI_MOSI_LOW(); + SPI_SCK_HIGH(); + SPI_SCK_LOW(); + l <<= 1; + } + } else { // TFT_PARALLEL +#if defined(__AVR__) + *tft8.writePort = l >> 24; + TFT_WR_STROBE(); + *tft8.writePort = l >> 16; + TFT_WR_STROBE(); + *tft8.writePort = l >> 8; + TFT_WR_STROBE(); + *tft8.writePort = l; +#elif defined(USE_FAST_PINIO) + if (!tft8.wide) { + *tft8.writePort = l >> 24; + TFT_WR_STROBE(); + *tft8.writePort = l >> 16; + TFT_WR_STROBE(); + *tft8.writePort = l >> 8; + TFT_WR_STROBE(); + *tft8.writePort = l; + } else { + *(volatile uint16_t *)tft8.writePort = l >> 16; + TFT_WR_STROBE(); + *(volatile uint16_t *)tft8.writePort = l; + } +#endif + TFT_WR_STROBE(); + } +} + +/*! + @brief Set the WR line LOW, then HIGH. Used for parallel-connected + interfaces when writing data. +*/ +inline void Adafruit_SPITFT::TFT_WR_STROBE(void) { +#if defined(USE_FAST_PINIO) +#if defined(HAS_PORT_SET_CLR) +#if defined(KINETISK) + *tft8.wrPortClr = 1; + *tft8.wrPortSet = 1; +#else // !KINETISK + *tft8.wrPortClr = tft8.wrPinMask; + *tft8.wrPortSet = tft8.wrPinMask; +#endif // end !KINETISK +#else // !HAS_PORT_SET_CLR + *tft8.wrPort &= tft8.wrPinMaskClr; + *tft8.wrPort |= tft8.wrPinMaskSet; +#endif // end !HAS_PORT_SET_CLR +#else // !USE_FAST_PINIO + digitalWrite(tft8._wr, LOW); + digitalWrite(tft8._wr, HIGH); +#endif // end !USE_FAST_PINIO +} + +/*! + @brief Set the RD line HIGH. Used for parallel-connected interfaces + when reading data. +*/ +inline void Adafruit_SPITFT::TFT_RD_HIGH(void) { +#if defined(USE_FAST_PINIO) +#if defined(HAS_PORT_SET_CLR) + *tft8.rdPortSet = tft8.rdPinMask; +#else // !HAS_PORT_SET_CLR + *tft8.rdPort |= tft8.rdPinMaskSet; +#endif // end !HAS_PORT_SET_CLR +#else // !USE_FAST_PINIO + digitalWrite(tft8._rd, HIGH); +#endif // end !USE_FAST_PINIO +} + +/*! + @brief Set the RD line LOW. Used for parallel-connected interfaces + when reading data. +*/ +inline void Adafruit_SPITFT::TFT_RD_LOW(void) { +#if defined(USE_FAST_PINIO) +#if defined(HAS_PORT_SET_CLR) + *tft8.rdPortClr = tft8.rdPinMask; +#else // !HAS_PORT_SET_CLR + *tft8.rdPort &= tft8.rdPinMaskClr; +#endif // end !HAS_PORT_SET_CLR +#else // !USE_FAST_PINIO + digitalWrite(tft8._rd, LOW); +#endif // end !USE_FAST_PINIO +} + +#endif // end __AVR_ATtiny85__ __AVR_ATtiny84__ diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Adafruit_SPITFT.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Adafruit_SPITFT.h new file mode 100644 index 0000000..7d0843e --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Adafruit_SPITFT.h @@ -0,0 +1,541 @@ +/*! + * @file Adafruit_SPITFT.h + * + * Part of Adafruit's GFX graphics library. Originally this class was + * written to handle a range of color TFT displays connected via SPI, + * but over time this library and some display-specific subclasses have + * mutated to include some color OLEDs as well as parallel-interfaced + * displays. The name's been kept for the sake of older code. + * + * 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 "ladyada" Fried for Adafruit Industries, + * with contributions from the open source community. + * + * BSD license, all text here must be included in any redistribution. + */ + +#ifndef _ADAFRUIT_SPITFT_H_ +#define _ADAFRUIT_SPITFT_H_ + +// Not for ATtiny, at all +#if !defined(__AVR_ATtiny85__) && !defined(__AVR_ATtiny84__) + +#include "Adafruit_GFX.h" +#include + +// HARDWARE CONFIG --------------------------------------------------------- + +#if defined(__AVR__) +typedef uint8_t ADAGFX_PORT_t; ///< PORT values are 8-bit +#define USE_FAST_PINIO ///< Use direct PORT register access +#elif defined(ARDUINO_STM32_FEATHER) // WICED +typedef class HardwareSPI SPIClass; ///< SPI is a bit odd on WICED +typedef uint32_t ADAGFX_PORT_t; ///< PORT values are 32-bit +#elif defined(__arm__) +#if defined(ARDUINO_ARCH_SAMD) +// Adafruit M0, M4 +typedef uint32_t ADAGFX_PORT_t; ///< PORT values are 32-bit +#define USE_FAST_PINIO ///< Use direct PORT register access +#define HAS_PORT_SET_CLR ///< PORTs have set & clear registers +#elif defined(CORE_TEENSY) +// PJRC Teensy 4.x +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) // Teensy 4.x +typedef uint32_t ADAGFX_PORT_t; ///< PORT values are 32-bit + // PJRC Teensy 3.x +#else +typedef uint8_t ADAGFX_PORT_t; ///< PORT values are 8-bit +#endif +#define USE_FAST_PINIO ///< Use direct PORT register access +#define HAS_PORT_SET_CLR ///< PORTs have set & clear registers +#else +// Arduino Due? +typedef uint32_t ADAGFX_PORT_t; ///< PORT values are 32-bit +// USE_FAST_PINIO not available here (yet)...Due has a totally different +// GPIO register set and will require some changes elsewhere (e.g. in +// constructors especially). +#endif +#else // !ARM +// Probably ESP8266 or ESP32. USE_FAST_PINIO is not available here (yet) +// but don't worry about it too much...the digitalWrite() implementation +// on these platforms is reasonably efficient and already RAM-resident, +// only gotcha then is no parallel connection support for now. +typedef uint32_t ADAGFX_PORT_t; ///< PORT values are 32-bit +#endif // end !ARM +typedef volatile ADAGFX_PORT_t *PORTreg_t; ///< PORT register type + +#if defined(__AVR__) && !defined(__LGT8F__) +#define DEFAULT_SPI_FREQ 8000000L ///< Hardware SPI default speed +#else +#define DEFAULT_SPI_FREQ 16000000L ///< Hardware SPI default speed +#endif + +#if defined(ADAFRUIT_PYPORTAL) || defined(ADAFRUIT_PYPORTAL_M4_TITANO) || \ + defined(ADAFRUIT_PYBADGE_M4_EXPRESS) || \ + defined(ADAFRUIT_PYGAMER_M4_EXPRESS) || \ + defined(ADAFRUIT_MONSTER_M4SK_EXPRESS) || defined(NRF52_SERIES) || \ + defined(ADAFRUIT_CIRCUITPLAYGROUND_M0) +#define USE_SPI_DMA ///< Auto DMA +#else + // #define USE_SPI_DMA ///< If set, + // use DMA if available +#endif +// Another "oops" name -- this now also handles parallel DMA. +// If DMA is enabled, Arduino sketch MUST #include +// Estimated RAM usage: +// 4 bytes/pixel on display major axis + 8 bytes/pixel on minor axis, +// e.g. 320x240 pixels = 320 * 4 + 240 * 8 = 3,200 bytes. + +#if defined(USE_SPI_DMA) && (defined(__SAMD51__) || defined(ARDUINO_SAMD_ZERO)) +#include +#endif + +// This is kind of a kludge. Needed a way to disambiguate the software SPI +// and parallel constructors via their argument lists. Originally tried a +// bool as the first argument to the parallel constructor (specifying 8-bit +// vs 16-bit interface) but the compiler regards this as equivalent to an +// integer and thus still ambiguous. SO...the parallel constructor requires +// an enumerated type as the first argument: tft8 (for 8-bit parallel) or +// tft16 (for 16-bit)...even though 16-bit isn't fully implemented or tested +// and might never be, still needed that disambiguation from soft SPI. +/*! For first arg to parallel constructor */ +enum tftBusWidth { tft8bitbus, tft16bitbus }; + +// SPI defaults for RP2040 +#if defined(ARDUINO_ARCH_RP2040) +#ifndef __SPI0_DEVICE +#define __SPI0_DEVICE spi0 +#endif +#ifndef __SPI1_DEVICE +#define __SPI1_DEVICE spi1 +#endif +#endif + +// CLASS DEFINITION -------------------------------------------------------- + +/*! + @brief Adafruit_SPITFT is an intermediary class between Adafruit_GFX + and various hardware-specific subclasses for different displays. + It handles certain operations that are common to a range of + displays (address window, area fills, etc.). Originally these were + all color TFT displays interfaced via SPI, but it's since expanded + to include color OLEDs and parallel-interfaced TFTs. THE NAME HAS + BEEN KEPT TO AVOID BREAKING A LOT OF SUBCLASSES AND EXAMPLE CODE. + Many of the class member functions similarly live on with names + that don't necessarily accurately describe what they're doing, + again to avoid breaking a lot of other code. If in doubt, read + the comments. +*/ +class Adafruit_SPITFT : public Adafruit_GFX { + +public: + // CONSTRUCTORS -------------------------------------------------------- + + // Software SPI constructor: expects width & height (at default rotation + // setting 0), 4 signal pins (cs, dc, mosi, sclk), 2 optional pins + // (reset, miso). cs argument is required but can be -1 if unused -- + // rather than moving it to the optional arguments, it was done this way + // to avoid breaking existing code (-1 option was a later addition). + Adafruit_SPITFT(uint16_t w, uint16_t h, int8_t cs, int8_t dc, int8_t mosi, + int8_t sck, int8_t rst = -1, int8_t miso = -1); + + // Hardware SPI constructor using the default SPI port: expects width & + // height (at default rotation setting 0), 2 signal pins (cs, dc), + // optional reset pin. cs is required but can be -1 if unused -- rather + // than moving it to the optional arguments, it was done this way to + // avoid breaking existing code (-1 option was a later addition). + Adafruit_SPITFT(uint16_t w, uint16_t h, int8_t cs, int8_t dc, + int8_t rst = -1); + +#if !defined(ESP8266) // See notes in .cpp + // Hardware SPI constructor using an arbitrary SPI peripheral: expects + // width & height (rotation 0), SPIClass pointer, 2 signal pins (cs, dc) + // and optional reset pin. cs is required but can be -1 if unused. + Adafruit_SPITFT(uint16_t w, uint16_t h, SPIClass *spiClass, int8_t cs, + int8_t dc, int8_t rst = -1); +#endif // end !ESP8266 + + // Parallel constructor: expects width & height (rotation 0), flag + // indicating whether 16-bit (true) or 8-bit (false) interface, 3 signal + // pins (d0, wr, dc), 3 optional pins (cs, rst, rd). 16-bit parallel + // isn't even fully implemented but the 'wide' flag was added as a + // required argument to avoid ambiguity with other constructors. + Adafruit_SPITFT(uint16_t w, uint16_t h, tftBusWidth busWidth, int8_t d0, + int8_t wr, int8_t dc, int8_t cs = -1, int8_t rst = -1, + int8_t rd = -1); + + // DESTRUCTOR ---------------------------------------------------------- + + ~Adafruit_SPITFT(){}; + + // CLASS MEMBER FUNCTIONS ---------------------------------------------- + + // These first two functions MUST be declared by subclasses: + + /*! + @brief Display-specific initialization function. + @param freq SPI frequency, in hz (or 0 for default or unused). + */ + virtual void begin(uint32_t freq) = 0; + + /*! + @brief Set up the specific display hardware's "address window" + for subsequent pixel-pushing operations. + @param x Leftmost pixel of area to be drawn (MUST be within + display bounds at current rotation setting). + @param y Topmost pixel of area to be drawn (MUST be within + display bounds at current rotation setting). + @param w Width of area to be drawn, in pixels (MUST be >0 and, + added to x, within display bounds at current rotation). + @param h Height of area to be drawn, in pixels (MUST be >0 and, + added to x, within display bounds at current rotation). + */ + virtual void setAddrWindow(uint16_t x, uint16_t y, uint16_t w, + uint16_t h) = 0; + + // Remaining functions do not need to be declared in subclasses + // unless they wish to provide hardware-specific optimizations. + // Brief comments here...documented more thoroughly in .cpp file. + + // Subclass' begin() function invokes this to initialize hardware. + // freq=0 to use default SPI speed. spiMode must be one of the SPI_MODEn + // values defined in SPI.h, which are NOT the same as 0 for SPI_MODE0, + // 1 for SPI_MODE1, etc...use ONLY the SPI_MODEn defines! Only! + // Name is outdated (interface may be parallel) but for compatibility: + void initSPI(uint32_t freq = 0, uint8_t spiMode = SPI_MODE0); + void setSPISpeed(uint32_t freq); + // Chip select and/or hardware SPI transaction start as needed: + void startWrite(void); + // Chip deselect and/or hardware SPI transaction end as needed: + void endWrite(void); + void sendCommand(uint8_t commandByte, uint8_t *dataBytes, + uint8_t numDataBytes); + void sendCommand(uint8_t commandByte, const uint8_t *dataBytes = NULL, + uint8_t numDataBytes = 0); + void sendCommand16(uint16_t commandWord, const uint8_t *dataBytes = NULL, + uint8_t numDataBytes = 0); + uint8_t readcommand8(uint8_t commandByte, uint8_t index = 0); + uint16_t readcommand16(uint16_t addr); + + // These functions require a chip-select and/or SPI transaction + // around them. Higher-level graphics primitives might start a + // single transaction and then make multiple calls to these functions + // (e.g. circle or text rendering might make repeated lines or rects) + // before ending the transaction. It's more efficient than starting a + // transaction every time. + void writePixel(int16_t x, int16_t y, uint16_t color); + void writePixels(uint16_t *colors, uint32_t len, bool block = true, + bool bigEndian = false); + void writeColor(uint16_t color, uint32_t len); + void writeFillRect(int16_t x, int16_t y, int16_t w, int16_t h, + uint16_t color); + void writeFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color); + void writeFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color); + // This is a new function, similar to writeFillRect() except that + // all arguments MUST be onscreen, sorted and clipped. If higher-level + // primitives can handle their own sorting/clipping, it avoids repeating + // such operations in the low-level code, making it potentially faster. + // CALLING THIS WITH UNCLIPPED OR NEGATIVE VALUES COULD BE DISASTROUS. + inline void writeFillRectPreclipped(int16_t x, int16_t y, int16_t w, + int16_t h, uint16_t color); + // Another new function, companion to the new non-blocking + // writePixels() variant. + void dmaWait(void); + // Used by writePixels() in some situations, but might have rare need in + // user code, so it's public... + bool dmaBusy(void) const; // true if DMA is used and busy, false otherwise + void swapBytes(uint16_t *src, uint32_t len, uint16_t *dest = NULL); + + // These functions are similar to the 'write' functions above, but with + // a chip-select and/or SPI transaction built-in. They're typically used + // solo -- that is, as graphics primitives in themselves, not invoked by + // higher-level primitives (which should use the functions above). + void drawPixel(int16_t x, int16_t y, uint16_t color); + void fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); + void drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color); + void drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color); + // A single-pixel push encapsulated in a transaction. I don't think + // this is used anymore (BMP demos might've used it?) but is provided + // for backward compatibility, consider it deprecated: + void pushColor(uint16_t color); + + using Adafruit_GFX::drawRGBBitmap; // Check base class first + void drawRGBBitmap(int16_t x, int16_t y, uint16_t *pcolors, int16_t w, + int16_t h); + + void invertDisplay(bool i); + uint16_t color565(uint8_t r, uint8_t g, uint8_t b); + + // Despite parallel additions, function names kept for compatibility: + void spiWrite(uint8_t b); // Write single byte as DATA + void writeCommand(uint8_t cmd); // Write single byte as COMMAND + uint8_t spiRead(void); // Read single byte of data + void write16(uint16_t w); // Write 16-bit value as DATA + void writeCommand16(uint16_t cmd); // Write 16-bit value as COMMAND + uint16_t read16(void); // Read single 16-bit value + + // Most of these low-level functions were formerly macros in + // Adafruit_SPITFT_Macros.h. Some have been made into inline functions + // to avoid macro mishaps. Despite the addition of code for a parallel + // display interface, the names have been kept for backward + // compatibility (some subclasses may be invoking these): + void SPI_WRITE16(uint16_t w); // Not inline + void SPI_WRITE32(uint32_t l); // Not inline + // Old code had both a spiWrite16() function and SPI_WRITE16 macro + // in addition to the SPI_WRITE32 macro. The latter two have been + // made into functions here, and spiWrite16() removed (use SPI_WRITE16() + // instead). It looks like most subclasses had gotten comfortable with + // SPI_WRITE16 and SPI_WRITE32 anyway so those names were kept rather + // than the less-obnoxious camelcase variants, oh well. + + // Placing these functions entirely in the class definition inlines + // them implicitly them while allowing their use in other code: + + /*! + @brief Set the chip-select line HIGH. Does NOT check whether CS pin + is set (>=0), that should be handled in calling function. + Despite function name, this is used even if the display + connection is parallel. + */ + void SPI_CS_HIGH(void) { +#if defined(USE_FAST_PINIO) +#if defined(HAS_PORT_SET_CLR) +#if defined(KINETISK) + *csPortSet = 1; +#else // !KINETISK + *csPortSet = csPinMask; +#endif // end !KINETISK +#else // !HAS_PORT_SET_CLR + *csPort |= csPinMaskSet; +#endif // end !HAS_PORT_SET_CLR +#else // !USE_FAST_PINIO + digitalWrite(_cs, HIGH); +#endif // end !USE_FAST_PINIO + } + + /*! + @brief Set the chip-select line LOW. Does NOT check whether CS pin + is set (>=0), that should be handled in calling function. + Despite function name, this is used even if the display + connection is parallel. + */ + void SPI_CS_LOW(void) { +#if defined(USE_FAST_PINIO) +#if defined(HAS_PORT_SET_CLR) +#if defined(KINETISK) + *csPortClr = 1; +#else // !KINETISK + *csPortClr = csPinMask; +#endif // end !KINETISK +#else // !HAS_PORT_SET_CLR + *csPort &= csPinMaskClr; +#endif // end !HAS_PORT_SET_CLR +#else // !USE_FAST_PINIO + digitalWrite(_cs, LOW); +#endif // end !USE_FAST_PINIO + } + + /*! + @brief Set the data/command line HIGH (data mode). + */ + void SPI_DC_HIGH(void) { +#if defined(USE_FAST_PINIO) +#if defined(HAS_PORT_SET_CLR) +#if defined(KINETISK) + *dcPortSet = 1; +#else // !KINETISK + *dcPortSet = dcPinMask; +#endif // end !KINETISK +#else // !HAS_PORT_SET_CLR + *dcPort |= dcPinMaskSet; +#endif // end !HAS_PORT_SET_CLR +#else // !USE_FAST_PINIO + digitalWrite(_dc, HIGH); +#endif // end !USE_FAST_PINIO + } + + /*! + @brief Set the data/command line LOW (command mode). + */ + void SPI_DC_LOW(void) { +#if defined(USE_FAST_PINIO) +#if defined(HAS_PORT_SET_CLR) +#if defined(KINETISK) + *dcPortClr = 1; +#else // !KINETISK + *dcPortClr = dcPinMask; +#endif // end !KINETISK +#else // !HAS_PORT_SET_CLR + *dcPort &= dcPinMaskClr; +#endif // end !HAS_PORT_SET_CLR +#else // !USE_FAST_PINIO + digitalWrite(_dc, LOW); +#endif // end !USE_FAST_PINIO + } + +protected: + // A few more low-level member functions -- some may have previously + // been macros. Shouldn't have a need to access these externally, so + // they've been moved to the protected section. Additionally, they're + // declared inline here and the code is in the .cpp file, since outside + // code doesn't need to see these. + inline void SPI_MOSI_HIGH(void); + inline void SPI_MOSI_LOW(void); + inline void SPI_SCK_HIGH(void); + inline void SPI_SCK_LOW(void); + inline bool SPI_MISO_READ(void); + inline void SPI_BEGIN_TRANSACTION(void); + inline void SPI_END_TRANSACTION(void); + inline void TFT_WR_STROBE(void); // Parallel interface write strobe + inline void TFT_RD_HIGH(void); // Parallel interface read high + inline void TFT_RD_LOW(void); // Parallel interface read low + + // CLASS INSTANCE VARIABLES -------------------------------------------- + + // Here be dragons! There's a big union of three structures here -- + // one each for hardware SPI, software (bitbang) SPI, and parallel + // interfaces. This is to save some memory, since a display's connection + // will be only one of these. The order of some things is a little weird + // in an attempt to get values to align and pack better in RAM. + +#if defined(USE_FAST_PINIO) +#if defined(HAS_PORT_SET_CLR) + PORTreg_t csPortSet; ///< PORT register for chip select SET + PORTreg_t csPortClr; ///< PORT register for chip select CLEAR + PORTreg_t dcPortSet; ///< PORT register for data/command SET + PORTreg_t dcPortClr; ///< PORT register for data/command CLEAR +#else // !HAS_PORT_SET_CLR + PORTreg_t csPort; ///< PORT register for chip select + PORTreg_t dcPort; ///< PORT register for data/command +#endif // end HAS_PORT_SET_CLR +#endif // end USE_FAST_PINIO +#if defined(__cplusplus) && (__cplusplus >= 201100) + union { +#endif + struct { // Values specific to HARDWARE SPI: + SPIClass *_spi; ///< SPI class pointer +#if defined(SPI_HAS_TRANSACTION) + SPISettings settings; ///< SPI transaction settings +#else + uint32_t _freq; ///< SPI bitrate (if no SPI transactions) +#endif + uint32_t _mode; ///< SPI data mode (transactions or no) + } hwspi; ///< Hardware SPI values + struct { // Values specific to SOFTWARE SPI: +#if defined(USE_FAST_PINIO) + PORTreg_t misoPort; ///< PORT (PIN) register for MISO +#if defined(HAS_PORT_SET_CLR) + PORTreg_t mosiPortSet; ///< PORT register for MOSI SET + PORTreg_t mosiPortClr; ///< PORT register for MOSI CLEAR + PORTreg_t sckPortSet; ///< PORT register for SCK SET + PORTreg_t sckPortClr; ///< PORT register for SCK CLEAR +#if !defined(KINETISK) + ADAGFX_PORT_t mosiPinMask; ///< Bitmask for MOSI + ADAGFX_PORT_t sckPinMask; ///< Bitmask for SCK +#endif // end !KINETISK +#else // !HAS_PORT_SET_CLR + PORTreg_t mosiPort; ///< PORT register for MOSI + PORTreg_t sckPort; ///< PORT register for SCK + ADAGFX_PORT_t mosiPinMaskSet; ///< Bitmask for MOSI SET (OR) + ADAGFX_PORT_t mosiPinMaskClr; ///< Bitmask for MOSI CLEAR (AND) + ADAGFX_PORT_t sckPinMaskSet; ///< Bitmask for SCK SET (OR bitmask) + ADAGFX_PORT_t sckPinMaskClr; ///< Bitmask for SCK CLEAR (AND) +#endif // end HAS_PORT_SET_CLR +#if !defined(KINETISK) + ADAGFX_PORT_t misoPinMask; ///< Bitmask for MISO +#endif // end !KINETISK +#endif // end USE_FAST_PINIO + int8_t _mosi; ///< MOSI pin # + int8_t _miso; ///< MISO pin # + int8_t _sck; ///< SCK pin # + } swspi; ///< Software SPI values + struct { // Values specific to 8-bit parallel: +#if defined(USE_FAST_PINIO) + +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) // Teensy 4.x + volatile uint32_t *writePort; ///< PORT register for DATA WRITE + volatile uint32_t *readPort; ///< PORT (PIN) register for DATA READ +#else + volatile uint8_t *writePort; ///< PORT register for DATA WRITE + volatile uint8_t *readPort; ///< PORT (PIN) register for DATA READ +#endif +#if defined(HAS_PORT_SET_CLR) + // Port direction register pointers are always 8-bit regardless of + // PORTreg_t -- even if 32-bit port, we modify a byte-aligned 8 bits. +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) // Teensy 4.x + volatile uint32_t *dirSet; ///< PORT byte data direction SET + volatile uint32_t *dirClr; ///< PORT byte data direction CLEAR +#else + volatile uint8_t *dirSet; ///< PORT byte data direction SET + volatile uint8_t *dirClr; ///< PORT byte data direction CLEAR +#endif + PORTreg_t wrPortSet; ///< PORT register for write strobe SET + PORTreg_t wrPortClr; ///< PORT register for write strobe CLEAR + PORTreg_t rdPortSet; ///< PORT register for read strobe SET + PORTreg_t rdPortClr; ///< PORT register for read strobe CLEAR +#if !defined(KINETISK) + ADAGFX_PORT_t wrPinMask; ///< Bitmask for write strobe +#endif // end !KINETISK + ADAGFX_PORT_t rdPinMask; ///< Bitmask for read strobe +#else // !HAS_PORT_SET_CLR + // Port direction register pointer is always 8-bit regardless of + // PORTreg_t -- even if 32-bit port, we modify a byte-aligned 8 bits. + volatile uint8_t *portDir; ///< PORT direction register + PORTreg_t wrPort; ///< PORT register for write strobe + PORTreg_t rdPort; ///< PORT register for read strobe + ADAGFX_PORT_t wrPinMaskSet; ///< Bitmask for write strobe SET (OR) + ADAGFX_PORT_t wrPinMaskClr; ///< Bitmask for write strobe CLEAR (AND) + ADAGFX_PORT_t rdPinMaskSet; ///< Bitmask for read strobe SET (OR) + ADAGFX_PORT_t rdPinMaskClr; ///< Bitmask for read strobe CLEAR (AND) +#endif // end HAS_PORT_SET_CLR +#endif // end USE_FAST_PINIO + int8_t _d0; ///< Data pin 0 # + int8_t _wr; ///< Write strobe pin # + int8_t _rd; ///< Read strobe pin # (or -1) + bool wide = 0; ///< If true, is 16-bit interface + } tft8; ///< Parallel interface settings +#if defined(__cplusplus) && (__cplusplus >= 201100) + }; ///< Only one interface is active +#endif +#if defined(USE_SPI_DMA) && \ + (defined(__SAMD51__) || \ + defined(ARDUINO_SAMD_ZERO)) // Used by hardware SPI and tft8 + Adafruit_ZeroDMA dma; ///< DMA instance + DmacDescriptor *dptr = NULL; ///< 1st descriptor + DmacDescriptor *descriptor = NULL; ///< Allocated descriptor list + uint16_t *pixelBuf[2]; ///< Working buffers + uint16_t maxFillLen; ///< Max pixels per DMA xfer + uint16_t lastFillColor = 0; ///< Last color used w/fill + uint32_t lastFillLen = 0; ///< # of pixels w/last fill + uint8_t onePixelBuf; ///< For hi==lo fill +#endif +#if defined(USE_FAST_PINIO) +#if defined(HAS_PORT_SET_CLR) +#if !defined(KINETISK) + ADAGFX_PORT_t csPinMask; ///< Bitmask for chip select + ADAGFX_PORT_t dcPinMask; ///< Bitmask for data/command +#endif // end !KINETISK +#else // !HAS_PORT_SET_CLR + ADAGFX_PORT_t csPinMaskSet; ///< Bitmask for chip select SET (OR) + ADAGFX_PORT_t csPinMaskClr; ///< Bitmask for chip select CLEAR (AND) + ADAGFX_PORT_t dcPinMaskSet; ///< Bitmask for data/command SET (OR) + ADAGFX_PORT_t dcPinMaskClr; ///< Bitmask for data/command CLEAR (AND) +#endif // end HAS_PORT_SET_CLR +#endif // end USE_FAST_PINIO + uint8_t connection; ///< TFT_HARD_SPI, TFT_SOFT_SPI, etc. + int8_t _rst; ///< Reset pin # (or -1) + int8_t _cs; ///< Chip select pin # (or -1) + int8_t _dc; ///< Data/command pin # + + int16_t _xstart = 0; ///< Internal framebuffer X offset + int16_t _ystart = 0; ///< Internal framebuffer Y offset + uint8_t invertOnCommand = 0; ///< Command to enable invert mode + uint8_t invertOffCommand = 0; ///< Command to disable invert mode + + uint32_t _freq = 0; ///< Dummy var to keep subclasses happy +}; + +#endif // end __AVR_ATtiny85__ __AVR_ATtiny84__ +#endif // end _ADAFRUIT_SPITFT_H_ diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Adafruit_SPITFT_Macros.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Adafruit_SPITFT_Macros.h new file mode 100644 index 0000000..fcd6253 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Adafruit_SPITFT_Macros.h @@ -0,0 +1,6 @@ +// THIS FILE INTENTIONALLY LEFT BLANK. + +// Macros previously #defined here have been made into (mostly) inline +// functions in the Adafruit_SPITFT class. Other libraries might still +// contain code trying to #include this header file, so until everything's +// updated this file still exists (but doing nothing) to avoid trouble. diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/CMakeLists.txt b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/CMakeLists.txt new file mode 100644 index 0000000..531c721 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/CMakeLists.txt @@ -0,0 +1,11 @@ +# Adafruit GFX Library +# https://github.com/adafruit/Adafruit-GFX-Library +# BSD License + +cmake_minimum_required(VERSION 3.5) + +idf_component_register(SRCS "Adafruit_GFX.cpp" "Adafruit_GrayOLED.cpp" "Adafruit_SPITFT.cpp" "glcdfont.c" + INCLUDE_DIRS "." + REQUIRES arduino Adafruit_BusIO) + +project(Adafruit-GFX-Library) diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMono12pt7b.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMono12pt7b.h new file mode 100644 index 0000000..d124f20 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMono12pt7b.h @@ -0,0 +1,229 @@ +#pragma once +#include + +const uint8_t FreeMono12pt7bBitmaps[] PROGMEM = { + 0x49, 0x24, 0x92, 0x48, 0x01, 0xF8, 0xE7, 0xE7, 0x67, 0x42, 0x42, 0x42, + 0x42, 0x09, 0x02, 0x41, 0x10, 0x44, 0x11, 0x1F, 0xF1, 0x10, 0x4C, 0x12, + 0x3F, 0xE1, 0x20, 0x48, 0x12, 0x04, 0x81, 0x20, 0x48, 0x04, 0x07, 0xA2, + 0x19, 0x02, 0x40, 0x10, 0x03, 0x00, 0x3C, 0x00, 0x80, 0x10, 0x06, 0x01, + 0xE0, 0xA7, 0xC0, 0x40, 0x10, 0x04, 0x00, 0x3C, 0x19, 0x84, 0x21, 0x08, + 0x66, 0x0F, 0x00, 0x0C, 0x1C, 0x78, 0x01, 0xE0, 0xCC, 0x21, 0x08, 0x43, + 0x30, 0x78, 0x3E, 0x30, 0x10, 0x08, 0x02, 0x03, 0x03, 0x47, 0x14, 0x8A, + 0x43, 0x11, 0x8F, 0x60, 0xFD, 0xA4, 0x90, 0x05, 0x25, 0x24, 0x92, 0x48, + 0x92, 0x24, 0x11, 0x24, 0x89, 0x24, 0x92, 0x92, 0x90, 0x00, 0x04, 0x02, + 0x11, 0x07, 0xF0, 0xC0, 0x50, 0x48, 0x42, 0x00, 0x08, 0x04, 0x02, 0x01, + 0x00, 0x87, 0xFC, 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, 0x3B, 0x9C, 0xCE, + 0x62, 0x00, 0xFF, 0xE0, 0xFF, 0x80, 0x00, 0x80, 0xC0, 0x40, 0x20, 0x20, + 0x10, 0x10, 0x08, 0x08, 0x04, 0x04, 0x02, 0x02, 0x01, 0x01, 0x00, 0x80, + 0x80, 0x40, 0x00, 0x1C, 0x31, 0x90, 0x58, 0x38, 0x0C, 0x06, 0x03, 0x01, + 0x80, 0xC0, 0x60, 0x30, 0x34, 0x13, 0x18, 0x70, 0x30, 0xE1, 0x44, 0x81, + 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x81, 0x1F, 0xC0, 0x1E, 0x10, 0x90, + 0x68, 0x10, 0x08, 0x0C, 0x04, 0x04, 0x04, 0x06, 0x06, 0x06, 0x06, 0x0E, + 0x07, 0xFE, 0x3E, 0x10, 0x40, 0x08, 0x02, 0x00, 0x80, 0x40, 0xE0, 0x04, + 0x00, 0x80, 0x10, 0x04, 0x01, 0x00, 0xD8, 0x63, 0xE0, 0x06, 0x0A, 0x0A, + 0x12, 0x22, 0x22, 0x42, 0x42, 0x82, 0x82, 0xFF, 0x02, 0x02, 0x02, 0x0F, + 0x7F, 0x20, 0x10, 0x08, 0x04, 0x02, 0xF1, 0x8C, 0x03, 0x00, 0x80, 0x40, + 0x20, 0x18, 0x16, 0x18, 0xF0, 0x0F, 0x8C, 0x08, 0x08, 0x04, 0x04, 0x02, + 0x79, 0x46, 0xC1, 0xE0, 0x60, 0x28, 0x14, 0x19, 0x08, 0x78, 0xFF, 0x81, + 0x81, 0x02, 0x02, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, + 0x08, 0x3E, 0x31, 0xB0, 0x70, 0x18, 0x0C, 0x05, 0x8C, 0x38, 0x63, 0x40, + 0x60, 0x30, 0x18, 0x1B, 0x18, 0xF8, 0x3C, 0x31, 0x30, 0x50, 0x28, 0x0C, + 0x0F, 0x06, 0x85, 0x3C, 0x80, 0x40, 0x40, 0x20, 0x20, 0x63, 0xE0, 0xFF, + 0x80, 0x07, 0xFC, 0x39, 0xCE, 0x00, 0x00, 0x06, 0x33, 0x98, 0xC4, 0x00, + 0x00, 0xC0, 0x60, 0x18, 0x0C, 0x06, 0x01, 0x80, 0x0C, 0x00, 0x60, 0x03, + 0x00, 0x30, 0x01, 0x00, 0xFF, 0xF0, 0x00, 0x00, 0x0F, 0xFF, 0xC0, 0x06, + 0x00, 0x30, 0x01, 0x80, 0x18, 0x01, 0x80, 0xC0, 0x30, 0x18, 0x0C, 0x02, + 0x00, 0x00, 0x3E, 0x60, 0xA0, 0x20, 0x10, 0x08, 0x08, 0x18, 0x10, 0x08, + 0x00, 0x00, 0x00, 0x01, 0xC0, 0xE0, 0x1C, 0x31, 0x10, 0x50, 0x28, 0x14, + 0x3A, 0x25, 0x22, 0x91, 0x4C, 0xA3, 0xF0, 0x08, 0x02, 0x01, 0x80, 0x7C, + 0x3F, 0x00, 0x0C, 0x00, 0x48, 0x01, 0x20, 0x04, 0x40, 0x21, 0x00, 0x84, + 0x04, 0x08, 0x1F, 0xE0, 0x40, 0x82, 0x01, 0x08, 0x04, 0x20, 0x13, 0xE1, + 0xF0, 0xFF, 0x08, 0x11, 0x01, 0x20, 0x24, 0x04, 0x81, 0x1F, 0xC2, 0x06, + 0x40, 0x68, 0x05, 0x00, 0xA0, 0x14, 0x05, 0xFF, 0x00, 0x1E, 0x48, 0x74, + 0x05, 0x01, 0x80, 0x20, 0x08, 0x02, 0x00, 0x80, 0x20, 0x04, 0x01, 0x01, + 0x30, 0x87, 0xC0, 0xFE, 0x10, 0x44, 0x09, 0x02, 0x40, 0x50, 0x14, 0x05, + 0x01, 0x40, 0x50, 0x14, 0x0D, 0x02, 0x41, 0x3F, 0x80, 0xFF, 0xC8, 0x09, + 0x01, 0x20, 0x04, 0x00, 0x88, 0x1F, 0x02, 0x20, 0x40, 0x08, 0x01, 0x00, + 0xA0, 0x14, 0x03, 0xFF, 0xC0, 0xFF, 0xE8, 0x05, 0x00, 0xA0, 0x04, 0x00, + 0x88, 0x1F, 0x02, 0x20, 0x40, 0x08, 0x01, 0x00, 0x20, 0x04, 0x01, 0xF0, + 0x00, 0x1F, 0x46, 0x19, 0x01, 0x60, 0x28, 0x01, 0x00, 0x20, 0x04, 0x00, + 0x83, 0xF0, 0x0B, 0x01, 0x20, 0x23, 0x0C, 0x3E, 0x00, 0xE1, 0xD0, 0x24, + 0x09, 0x02, 0x40, 0x90, 0x27, 0xF9, 0x02, 0x40, 0x90, 0x24, 0x09, 0x02, + 0x40, 0xB8, 0x70, 0xFE, 0x20, 0x40, 0x81, 0x02, 0x04, 0x08, 0x10, 0x20, + 0x40, 0x81, 0x1F, 0xC0, 0x0F, 0xE0, 0x10, 0x02, 0x00, 0x40, 0x08, 0x01, + 0x00, 0x20, 0x04, 0x80, 0x90, 0x12, 0x02, 0x40, 0xC6, 0x30, 0x7C, 0x00, + 0xF1, 0xE4, 0x0C, 0x41, 0x04, 0x20, 0x44, 0x04, 0x80, 0x5C, 0x06, 0x60, + 0x43, 0x04, 0x10, 0x40, 0x84, 0x08, 0x40, 0xCF, 0x07, 0xF8, 0x04, 0x00, + 0x80, 0x10, 0x02, 0x00, 0x40, 0x08, 0x01, 0x00, 0x20, 0x04, 0x04, 0x80, + 0x90, 0x12, 0x03, 0xFF, 0xC0, 0xE0, 0x3B, 0x01, 0x94, 0x14, 0xA0, 0xA4, + 0x89, 0x24, 0x49, 0x14, 0x48, 0xA2, 0x45, 0x12, 0x10, 0x90, 0x04, 0x80, + 0x24, 0x01, 0x78, 0x3C, 0xE0, 0xF6, 0x02, 0x50, 0x25, 0x02, 0x48, 0x24, + 0xC2, 0x44, 0x24, 0x22, 0x43, 0x24, 0x12, 0x40, 0xA4, 0x0A, 0x40, 0x6F, + 0x06, 0x0F, 0x03, 0x0C, 0x60, 0x64, 0x02, 0x80, 0x18, 0x01, 0x80, 0x18, + 0x01, 0x80, 0x18, 0x01, 0x40, 0x26, 0x06, 0x30, 0xC0, 0xF0, 0xFF, 0x10, + 0x64, 0x05, 0x01, 0x40, 0x50, 0x34, 0x19, 0xFC, 0x40, 0x10, 0x04, 0x01, + 0x00, 0x40, 0x3E, 0x00, 0x0F, 0x03, 0x0C, 0x60, 0x64, 0x02, 0x80, 0x18, + 0x01, 0x80, 0x18, 0x01, 0x80, 0x18, 0x01, 0x40, 0x26, 0x06, 0x30, 0xC1, + 0xF0, 0x0C, 0x01, 0xF1, 0x30, 0xE0, 0xFF, 0x04, 0x18, 0x40, 0xC4, 0x04, + 0x40, 0x44, 0x0C, 0x41, 0x87, 0xE0, 0x43, 0x04, 0x10, 0x40, 0x84, 0x04, + 0x40, 0x4F, 0x03, 0x1F, 0x48, 0x34, 0x05, 0x01, 0x40, 0x08, 0x01, 0xC0, + 0x0E, 0x00, 0x40, 0x18, 0x06, 0x01, 0xE1, 0xA7, 0xC0, 0xFF, 0xF0, 0x86, + 0x10, 0x82, 0x00, 0x40, 0x08, 0x01, 0x00, 0x20, 0x04, 0x00, 0x80, 0x10, + 0x02, 0x00, 0x40, 0x7F, 0x00, 0xF0, 0xF4, 0x02, 0x40, 0x24, 0x02, 0x40, + 0x24, 0x02, 0x40, 0x24, 0x02, 0x40, 0x24, 0x02, 0x40, 0x22, 0x04, 0x30, + 0xC0, 0xF0, 0xF8, 0x7C, 0x80, 0x22, 0x01, 0x04, 0x04, 0x10, 0x20, 0x40, + 0x80, 0x82, 0x02, 0x10, 0x08, 0x40, 0x11, 0x00, 0x48, 0x01, 0xA0, 0x03, + 0x00, 0x0C, 0x00, 0xF8, 0x7C, 0x80, 0x22, 0x00, 0x88, 0xC2, 0x23, 0x10, + 0x8E, 0x42, 0x29, 0x09, 0x24, 0x24, 0x90, 0x91, 0x41, 0x85, 0x06, 0x14, + 0x18, 0x70, 0x60, 0x80, 0xF0, 0xF2, 0x06, 0x30, 0x41, 0x08, 0x09, 0x80, + 0x50, 0x06, 0x00, 0x60, 0x0D, 0x00, 0x88, 0x10, 0xC2, 0x04, 0x60, 0x2F, + 0x0F, 0xF0, 0xF2, 0x02, 0x10, 0x41, 0x04, 0x08, 0x80, 0x50, 0x05, 0x00, + 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x01, 0xFC, 0xFF, 0x40, + 0xA0, 0x90, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x10, 0x50, 0x30, 0x18, + 0x0F, 0xFC, 0xF2, 0x49, 0x24, 0x92, 0x49, 0x24, 0x9C, 0x80, 0x60, 0x10, + 0x08, 0x02, 0x01, 0x00, 0x40, 0x20, 0x08, 0x04, 0x01, 0x00, 0x80, 0x20, + 0x10, 0x04, 0x02, 0x00, 0x80, 0x40, 0xE4, 0x92, 0x49, 0x24, 0x92, 0x49, + 0x3C, 0x08, 0x0C, 0x09, 0x0C, 0x4C, 0x14, 0x04, 0xFF, 0xFC, 0x84, 0x21, + 0x3E, 0x00, 0x60, 0x08, 0x02, 0x3F, 0x98, 0x28, 0x0A, 0x02, 0xC3, 0x9F, + 0x30, 0xE0, 0x01, 0x00, 0x08, 0x00, 0x40, 0x02, 0x00, 0x13, 0xE0, 0xA0, + 0x86, 0x02, 0x20, 0x09, 0x00, 0x48, 0x02, 0x40, 0x13, 0x01, 0x14, 0x1B, + 0x9F, 0x00, 0x1F, 0x4C, 0x19, 0x01, 0x40, 0x28, 0x01, 0x00, 0x20, 0x02, + 0x00, 0x60, 0x43, 0xF0, 0x00, 0xC0, 0x08, 0x01, 0x00, 0x20, 0x04, 0x3C, + 0x98, 0x52, 0x06, 0x80, 0x50, 0x0A, 0x01, 0x40, 0x24, 0x0C, 0xC2, 0x87, + 0x98, 0x3F, 0x18, 0x68, 0x06, 0x01, 0xFF, 0xE0, 0x08, 0x03, 0x00, 0x60, + 0xC7, 0xC0, 0x0F, 0x98, 0x08, 0x04, 0x02, 0x07, 0xF8, 0x80, 0x40, 0x20, + 0x10, 0x08, 0x04, 0x02, 0x01, 0x03, 0xF8, 0x1E, 0x6C, 0x39, 0x03, 0x40, + 0x28, 0x05, 0x00, 0xA0, 0x12, 0x06, 0x61, 0x43, 0xC8, 0x01, 0x00, 0x20, + 0x08, 0x3E, 0x00, 0xC0, 0x10, 0x04, 0x01, 0x00, 0x40, 0x13, 0x87, 0x11, + 0x82, 0x40, 0x90, 0x24, 0x09, 0x02, 0x40, 0x90, 0x2E, 0x1C, 0x08, 0x04, + 0x02, 0x00, 0x00, 0x03, 0xC0, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x00, + 0x80, 0x43, 0xFE, 0x04, 0x08, 0x10, 0x00, 0x1F, 0xC0, 0x81, 0x02, 0x04, + 0x08, 0x10, 0x20, 0x40, 0x81, 0x02, 0x0B, 0xE0, 0xE0, 0x02, 0x00, 0x20, + 0x02, 0x00, 0x20, 0x02, 0x3C, 0x21, 0x02, 0x60, 0x2C, 0x03, 0x80, 0x24, + 0x02, 0x20, 0x21, 0x02, 0x08, 0xE1, 0xF0, 0x78, 0x04, 0x02, 0x01, 0x00, + 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x00, 0x80, 0x43, 0xFE, + 0xDC, 0xE3, 0x19, 0x90, 0x84, 0x84, 0x24, 0x21, 0x21, 0x09, 0x08, 0x48, + 0x42, 0x42, 0x17, 0x18, 0xC0, 0x67, 0x83, 0x84, 0x20, 0x22, 0x02, 0x20, + 0x22, 0x02, 0x20, 0x22, 0x02, 0x20, 0x2F, 0x07, 0x1F, 0x04, 0x11, 0x01, + 0x40, 0x18, 0x03, 0x00, 0x60, 0x0A, 0x02, 0x20, 0x83, 0xE0, 0xCF, 0x85, + 0x06, 0x60, 0x24, 0x01, 0x40, 0x14, 0x01, 0x40, 0x16, 0x02, 0x50, 0x44, + 0xF8, 0x40, 0x04, 0x00, 0x40, 0x0F, 0x00, 0x1E, 0x6C, 0x3B, 0x03, 0x40, + 0x28, 0x05, 0x00, 0xA0, 0x12, 0x06, 0x61, 0x43, 0xC8, 0x01, 0x00, 0x20, + 0x04, 0x03, 0xC0, 0xE3, 0x8B, 0x13, 0x80, 0x80, 0x20, 0x08, 0x02, 0x00, + 0x80, 0x20, 0x3F, 0x80, 0x1F, 0x58, 0x34, 0x05, 0x80, 0x1E, 0x00, 0x60, + 0x06, 0x01, 0xC0, 0xAF, 0xC0, 0x20, 0x04, 0x00, 0x80, 0x10, 0x0F, 0xF0, + 0x40, 0x08, 0x01, 0x00, 0x20, 0x04, 0x00, 0x80, 0x10, 0x03, 0x04, 0x3F, + 0x00, 0xC1, 0xC8, 0x09, 0x01, 0x20, 0x24, 0x04, 0x80, 0x90, 0x12, 0x02, + 0x61, 0xC7, 0xCC, 0xF8, 0xF9, 0x01, 0x08, 0x10, 0x60, 0x81, 0x08, 0x08, + 0x40, 0x22, 0x01, 0x20, 0x05, 0x00, 0x30, 0x00, 0xF0, 0x7A, 0x01, 0x10, + 0x08, 0x8C, 0x42, 0x62, 0x12, 0x90, 0xA5, 0x05, 0x18, 0x28, 0xC0, 0x86, + 0x00, 0x78, 0xF3, 0x04, 0x18, 0x80, 0xD0, 0x06, 0x00, 0x70, 0x09, 0x81, + 0x0C, 0x20, 0x6F, 0x8F, 0xF0, 0xF2, 0x02, 0x20, 0x41, 0x04, 0x10, 0x80, + 0x88, 0x09, 0x00, 0x50, 0x06, 0x00, 0x20, 0x04, 0x00, 0x40, 0x08, 0x0F, + 0xE0, 0xFF, 0x41, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x40, 0xBF, + 0xC0, 0x19, 0x08, 0x42, 0x10, 0x84, 0x64, 0x18, 0x42, 0x10, 0x84, 0x20, + 0xC0, 0xFF, 0xFF, 0xC0, 0xC1, 0x08, 0x42, 0x10, 0x84, 0x10, 0x4C, 0x42, + 0x10, 0x84, 0x26, 0x00, 0x38, 0x13, 0x38, 0x38}; + +const GFXglyph FreeMono12pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 14, 0, 1}, // 0x20 ' ' + {0, 3, 15, 14, 6, -14}, // 0x21 '!' + {6, 8, 7, 14, 3, -14}, // 0x22 '"' + {13, 10, 16, 14, 2, -14}, // 0x23 '#' + {33, 10, 17, 14, 2, -14}, // 0x24 '$' + {55, 10, 15, 14, 2, -14}, // 0x25 '%' + {74, 9, 12, 14, 3, -11}, // 0x26 '&' + {88, 3, 7, 14, 5, -14}, // 0x27 ''' + {91, 3, 18, 14, 7, -14}, // 0x28 '(' + {98, 3, 18, 14, 4, -14}, // 0x29 ')' + {105, 9, 9, 14, 3, -14}, // 0x2A '*' + {116, 9, 11, 14, 3, -11}, // 0x2B '+' + {129, 5, 7, 14, 3, -3}, // 0x2C ',' + {134, 11, 1, 14, 2, -6}, // 0x2D '-' + {136, 3, 3, 14, 5, -2}, // 0x2E '.' + {138, 9, 18, 14, 3, -15}, // 0x2F '/' + {159, 9, 15, 14, 3, -14}, // 0x30 '0' + {176, 7, 14, 14, 4, -13}, // 0x31 '1' + {189, 9, 15, 14, 2, -14}, // 0x32 '2' + {206, 10, 15, 14, 2, -14}, // 0x33 '3' + {225, 8, 15, 14, 3, -14}, // 0x34 '4' + {240, 9, 15, 14, 3, -14}, // 0x35 '5' + {257, 9, 15, 14, 3, -14}, // 0x36 '6' + {274, 8, 15, 14, 3, -14}, // 0x37 '7' + {289, 9, 15, 14, 3, -14}, // 0x38 '8' + {306, 9, 15, 14, 3, -14}, // 0x39 '9' + {323, 3, 10, 14, 5, -9}, // 0x3A ':' + {327, 5, 13, 14, 3, -9}, // 0x3B ';' + {336, 11, 11, 14, 2, -11}, // 0x3C '<' + {352, 12, 4, 14, 1, -8}, // 0x3D '=' + {358, 11, 11, 14, 2, -11}, // 0x3E '>' + {374, 9, 14, 14, 3, -13}, // 0x3F '?' + {390, 9, 16, 14, 3, -14}, // 0x40 '@' + {408, 14, 14, 14, 0, -13}, // 0x41 'A' + {433, 11, 14, 14, 2, -13}, // 0x42 'B' + {453, 10, 14, 14, 2, -13}, // 0x43 'C' + {471, 10, 14, 14, 2, -13}, // 0x44 'D' + {489, 11, 14, 14, 2, -13}, // 0x45 'E' + {509, 11, 14, 14, 2, -13}, // 0x46 'F' + {529, 11, 14, 14, 2, -13}, // 0x47 'G' + {549, 10, 14, 14, 2, -13}, // 0x48 'H' + {567, 7, 14, 14, 4, -13}, // 0x49 'I' + {580, 11, 14, 14, 2, -13}, // 0x4A 'J' + {600, 12, 14, 14, 2, -13}, // 0x4B 'K' + {621, 11, 14, 14, 2, -13}, // 0x4C 'L' + {641, 13, 14, 14, 1, -13}, // 0x4D 'M' + {664, 12, 14, 14, 1, -13}, // 0x4E 'N' + {685, 12, 14, 14, 1, -13}, // 0x4F 'O' + {706, 10, 14, 14, 2, -13}, // 0x50 'P' + {724, 12, 17, 14, 1, -13}, // 0x51 'Q' + {750, 12, 14, 14, 2, -13}, // 0x52 'R' + {771, 10, 14, 14, 2, -13}, // 0x53 'S' + {789, 11, 14, 14, 2, -13}, // 0x54 'T' + {809, 12, 14, 14, 1, -13}, // 0x55 'U' + {830, 14, 14, 14, 0, -13}, // 0x56 'V' + {855, 14, 14, 14, 0, -13}, // 0x57 'W' + {880, 12, 14, 14, 1, -13}, // 0x58 'X' + {901, 12, 14, 14, 1, -13}, // 0x59 'Y' + {922, 9, 14, 14, 3, -13}, // 0x5A 'Z' + {938, 3, 18, 14, 7, -14}, // 0x5B '[' + {945, 9, 18, 14, 3, -15}, // 0x5C '\' + {966, 3, 18, 14, 5, -14}, // 0x5D ']' + {973, 9, 6, 14, 3, -14}, // 0x5E '^' + {980, 14, 1, 14, 0, 3}, // 0x5F '_' + {982, 4, 4, 14, 4, -15}, // 0x60 '`' + {984, 10, 10, 14, 2, -9}, // 0x61 'a' + {997, 13, 15, 14, 0, -14}, // 0x62 'b' + {1022, 11, 10, 14, 2, -9}, // 0x63 'c' + {1036, 11, 15, 14, 2, -14}, // 0x64 'd' + {1057, 10, 10, 14, 2, -9}, // 0x65 'e' + {1070, 9, 15, 14, 4, -14}, // 0x66 'f' + {1087, 11, 14, 14, 2, -9}, // 0x67 'g' + {1107, 10, 15, 14, 2, -14}, // 0x68 'h' + {1126, 9, 15, 14, 3, -14}, // 0x69 'i' + {1143, 7, 19, 14, 3, -14}, // 0x6A 'j' + {1160, 12, 15, 14, 1, -14}, // 0x6B 'k' + {1183, 9, 15, 14, 3, -14}, // 0x6C 'l' + {1200, 13, 10, 14, 1, -9}, // 0x6D 'm' + {1217, 12, 10, 14, 1, -9}, // 0x6E 'n' + {1232, 11, 10, 14, 2, -9}, // 0x6F 'o' + {1246, 12, 14, 14, 1, -9}, // 0x70 'p' + {1267, 11, 14, 14, 2, -9}, // 0x71 'q' + {1287, 10, 10, 14, 3, -9}, // 0x72 'r' + {1300, 10, 10, 14, 2, -9}, // 0x73 's' + {1313, 11, 14, 14, 1, -13}, // 0x74 't' + {1333, 11, 10, 14, 2, -9}, // 0x75 'u' + {1347, 13, 10, 14, 1, -9}, // 0x76 'v' + {1364, 13, 10, 14, 1, -9}, // 0x77 'w' + {1381, 12, 10, 14, 1, -9}, // 0x78 'x' + {1396, 12, 14, 14, 1, -9}, // 0x79 'y' + {1417, 9, 10, 14, 3, -9}, // 0x7A 'z' + {1429, 5, 18, 14, 5, -14}, // 0x7B '{' + {1441, 1, 18, 14, 7, -14}, // 0x7C '|' + {1444, 5, 18, 14, 5, -14}, // 0x7D '}' + {1456, 10, 3, 14, 2, -7}}; // 0x7E '~' + +const GFXfont FreeMono12pt7b PROGMEM = {(uint8_t *)FreeMono12pt7bBitmaps, + (GFXglyph *)FreeMono12pt7bGlyphs, 0x20, + 0x7E, 24}; + +// Approx. 2132 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMono18pt7b.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMono18pt7b.h new file mode 100644 index 0000000..6a3641c --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMono18pt7b.h @@ -0,0 +1,365 @@ +#pragma once +#include + +const uint8_t FreeMono18pt7bBitmaps[] PROGMEM = { + 0x27, 0x77, 0x77, 0x77, 0x77, 0x22, 0x22, 0x20, 0x00, 0x6F, 0xF6, 0xF1, + 0xFE, 0x3F, 0xC7, 0xF8, 0xFF, 0x1E, 0xC3, 0x98, 0x33, 0x06, 0x60, 0xCC, + 0x18, 0x04, 0x20, 0x10, 0x80, 0x42, 0x01, 0x08, 0x04, 0x20, 0x10, 0x80, + 0x42, 0x01, 0x10, 0x04, 0x41, 0xFF, 0xF0, 0x44, 0x02, 0x10, 0x08, 0x40, + 0x21, 0x0F, 0xFF, 0xC2, 0x10, 0x08, 0x40, 0x21, 0x00, 0x84, 0x02, 0x10, + 0x08, 0x40, 0x23, 0x00, 0x88, 0x02, 0x20, 0x02, 0x00, 0x10, 0x00, 0x80, + 0x1F, 0xA3, 0x07, 0x10, 0x09, 0x00, 0x48, 0x00, 0x40, 0x03, 0x00, 0x0C, + 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x18, 0x00, 0x20, 0x01, 0x80, 0x0C, 0x00, + 0x70, 0x05, 0xE0, 0xC9, 0xF8, 0x01, 0x00, 0x08, 0x00, 0x40, 0x02, 0x00, + 0x10, 0x00, 0x1E, 0x00, 0x42, 0x01, 0x02, 0x02, 0x04, 0x04, 0x08, 0x08, + 0x10, 0x08, 0x40, 0x0F, 0x00, 0x00, 0x1E, 0x01, 0xF0, 0x1F, 0x01, 0xE0, + 0x0E, 0x00, 0x00, 0x3C, 0x00, 0x86, 0x02, 0x06, 0x04, 0x04, 0x08, 0x08, + 0x10, 0x30, 0x10, 0xC0, 0x1E, 0x00, 0x0F, 0xC1, 0x00, 0x20, 0x02, 0x00, + 0x20, 0x02, 0x00, 0x10, 0x01, 0x00, 0x08, 0x03, 0xC0, 0x6C, 0x3C, 0x62, + 0x82, 0x68, 0x34, 0x81, 0xCC, 0x08, 0x61, 0xC3, 0xE7, 0xFF, 0xFF, 0xF6, + 0x66, 0x66, 0x08, 0xC4, 0x62, 0x31, 0x8C, 0xC6, 0x31, 0x8C, 0x63, 0x18, + 0xC3, 0x18, 0xC2, 0x18, 0xC3, 0x18, 0x86, 0x10, 0xC2, 0x18, 0xC6, 0x10, + 0xC6, 0x31, 0x8C, 0x63, 0x18, 0x8C, 0x62, 0x31, 0x98, 0x80, 0x02, 0x00, + 0x10, 0x00, 0x80, 0x04, 0x0C, 0x21, 0x9D, 0x70, 0x1C, 0x00, 0xA0, 0x0D, + 0x80, 0xC6, 0x04, 0x10, 0x40, 0x80, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, + 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0xFF, 0xFE, 0x02, + 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, + 0x01, 0x00, 0x3E, 0x78, 0xF3, 0xC7, 0x8E, 0x18, 0x70, 0xC1, 0x80, 0xFF, + 0xFE, 0x77, 0xFF, 0xF7, 0x00, 0x00, 0x08, 0x00, 0xC0, 0x04, 0x00, 0x60, + 0x02, 0x00, 0x30, 0x01, 0x00, 0x18, 0x00, 0x80, 0x0C, 0x00, 0x40, 0x02, + 0x00, 0x20, 0x01, 0x00, 0x10, 0x00, 0x80, 0x08, 0x00, 0x40, 0x04, 0x00, + 0x20, 0x02, 0x00, 0x10, 0x01, 0x00, 0x08, 0x00, 0x80, 0x04, 0x00, 0x00, + 0x0F, 0x81, 0x82, 0x08, 0x08, 0x80, 0x24, 0x01, 0x60, 0x0E, 0x00, 0x30, + 0x01, 0x80, 0x0C, 0x00, 0x60, 0x03, 0x00, 0x18, 0x00, 0xC0, 0x06, 0x00, + 0x30, 0x03, 0x40, 0x12, 0x00, 0x88, 0x08, 0x60, 0xC0, 0xF8, 0x00, 0x06, + 0x00, 0x70, 0x06, 0x80, 0x64, 0x06, 0x20, 0x31, 0x00, 0x08, 0x00, 0x40, + 0x02, 0x00, 0x10, 0x00, 0x80, 0x04, 0x00, 0x20, 0x01, 0x00, 0x08, 0x00, + 0x40, 0x02, 0x00, 0x10, 0x00, 0x80, 0x04, 0x0F, 0xFF, 0x80, 0x0F, 0x80, + 0xC3, 0x08, 0x04, 0x80, 0x24, 0x00, 0x80, 0x04, 0x00, 0x20, 0x02, 0x00, + 0x10, 0x01, 0x00, 0x10, 0x01, 0x80, 0x18, 0x01, 0x80, 0x18, 0x01, 0x80, + 0x18, 0x01, 0x80, 0x58, 0x03, 0x80, 0x1F, 0xFF, 0x80, 0x0F, 0xC0, 0xC0, + 0x86, 0x01, 0x00, 0x02, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, 0x04, 0x00, + 0x20, 0x0F, 0x00, 0x06, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x40, + 0x01, 0x00, 0x04, 0x00, 0x2C, 0x01, 0x9C, 0x0C, 0x0F, 0xC0, 0x01, 0xC0, + 0x14, 0x02, 0x40, 0x64, 0x04, 0x40, 0xC4, 0x08, 0x41, 0x84, 0x10, 0x42, + 0x04, 0x20, 0x44, 0x04, 0x40, 0x48, 0x04, 0xFF, 0xF0, 0x04, 0x00, 0x40, + 0x04, 0x00, 0x40, 0x04, 0x07, 0xF0, 0x3F, 0xF0, 0x80, 0x02, 0x00, 0x08, + 0x00, 0x20, 0x00, 0x80, 0x02, 0x00, 0x0B, 0xF0, 0x30, 0x30, 0x00, 0x60, + 0x00, 0x80, 0x01, 0x00, 0x04, 0x00, 0x10, 0x00, 0x40, 0x01, 0x00, 0x0E, + 0x00, 0x2C, 0x01, 0x0C, 0x18, 0x0F, 0xC0, 0x01, 0xF0, 0x60, 0x18, 0x03, + 0x00, 0x20, 0x04, 0x00, 0x40, 0x0C, 0x00, 0x80, 0x08, 0xF8, 0x98, 0x4A, + 0x02, 0xE0, 0x3C, 0x01, 0x80, 0x14, 0x01, 0x40, 0x14, 0x03, 0x20, 0x21, + 0x0C, 0x0F, 0x80, 0xFF, 0xF8, 0x01, 0x80, 0x18, 0x03, 0x00, 0x20, 0x02, + 0x00, 0x20, 0x04, 0x00, 0x40, 0x04, 0x00, 0xC0, 0x08, 0x00, 0x80, 0x18, + 0x01, 0x00, 0x10, 0x01, 0x00, 0x30, 0x02, 0x00, 0x20, 0x02, 0x00, 0x0F, + 0x81, 0x83, 0x10, 0x05, 0x80, 0x38, 0x00, 0xC0, 0x06, 0x00, 0x30, 0x03, + 0x40, 0x11, 0x83, 0x07, 0xF0, 0x60, 0xC4, 0x01, 0x60, 0x0E, 0x00, 0x30, + 0x01, 0x80, 0x0E, 0x00, 0xD0, 0x04, 0x60, 0xC1, 0xFC, 0x00, 0x1F, 0x03, + 0x08, 0x40, 0x4C, 0x02, 0x80, 0x28, 0x02, 0x80, 0x18, 0x03, 0xC0, 0x74, + 0x05, 0x21, 0x91, 0xF1, 0x00, 0x10, 0x03, 0x00, 0x20, 0x02, 0x00, 0x40, + 0x0C, 0x01, 0x80, 0x60, 0xF8, 0x00, 0x77, 0xFF, 0xF7, 0x00, 0x00, 0x00, + 0x1D, 0xFF, 0xFD, 0xC0, 0x1C, 0x7C, 0xF9, 0xF1, 0xC0, 0x00, 0x00, 0x00, + 0x00, 0xF1, 0xE3, 0x8F, 0x1C, 0x38, 0xE1, 0xC3, 0x06, 0x00, 0x00, 0x06, + 0x00, 0x18, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x01, 0xC0, 0x06, 0x00, 0x38, + 0x00, 0xE0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x18, 0x00, 0x1C, 0x00, 0x0E, + 0x00, 0x07, 0x00, 0x03, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0xFF, 0xFC, 0xC0, 0x00, 0xC0, 0x00, 0xE0, 0x00, 0x70, + 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0C, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x70, + 0x03, 0x80, 0x0C, 0x00, 0x70, 0x03, 0x80, 0x1C, 0x00, 0x60, 0x00, 0x3F, + 0x8E, 0x0C, 0x80, 0x28, 0x01, 0x80, 0x10, 0x01, 0x00, 0x10, 0x02, 0x00, + 0xC0, 0x38, 0x06, 0x00, 0x40, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, + 0x01, 0xF0, 0x1F, 0x00, 0xE0, 0x0F, 0x01, 0x86, 0x08, 0x08, 0x80, 0x24, + 0x01, 0x40, 0x0A, 0x00, 0x50, 0x1E, 0x83, 0x14, 0x20, 0xA2, 0x05, 0x10, + 0x28, 0x81, 0x46, 0x0A, 0x18, 0x50, 0x3F, 0x80, 0x04, 0x00, 0x10, 0x00, + 0x80, 0x02, 0x00, 0x18, 0x18, 0x3F, 0x00, 0x1F, 0xF0, 0x00, 0x06, 0x80, + 0x00, 0x34, 0x00, 0x01, 0x30, 0x00, 0x18, 0x80, 0x00, 0x86, 0x00, 0x04, + 0x30, 0x00, 0x60, 0x80, 0x02, 0x06, 0x00, 0x10, 0x10, 0x01, 0x80, 0x80, + 0x08, 0x06, 0x00, 0x7F, 0xF0, 0x06, 0x00, 0x80, 0x20, 0x06, 0x01, 0x00, + 0x10, 0x18, 0x00, 0xC0, 0x80, 0x06, 0x04, 0x00, 0x11, 0xFC, 0x0F, 0xF0, + 0xFF, 0xF8, 0x04, 0x01, 0x01, 0x00, 0x20, 0x40, 0x04, 0x10, 0x01, 0x04, + 0x00, 0x41, 0x00, 0x10, 0x40, 0x08, 0x10, 0x0C, 0x07, 0xFF, 0x01, 0x00, + 0x70, 0x40, 0x06, 0x10, 0x00, 0x84, 0x00, 0x11, 0x00, 0x04, 0x40, 0x01, + 0x10, 0x00, 0x44, 0x00, 0x21, 0x00, 0x33, 0xFF, 0xF8, 0x03, 0xF1, 0x06, + 0x0E, 0x8C, 0x01, 0xC4, 0x00, 0x64, 0x00, 0x12, 0x00, 0x0A, 0x00, 0x01, + 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x01, 0x00, 0x00, 0x80, 0x00, 0x20, 0x01, 0x88, 0x01, 0x83, + 0x03, 0x80, 0x7E, 0x00, 0xFF, 0xE0, 0x20, 0x18, 0x20, 0x0C, 0x20, 0x04, + 0x20, 0x02, 0x20, 0x02, 0x20, 0x01, 0x20, 0x01, 0x20, 0x01, 0x20, 0x01, + 0x20, 0x01, 0x20, 0x01, 0x20, 0x01, 0x20, 0x01, 0x20, 0x02, 0x20, 0x02, + 0x20, 0x04, 0x20, 0x0C, 0x20, 0x18, 0xFF, 0xE0, 0xFF, 0xFF, 0x08, 0x00, + 0x84, 0x00, 0x42, 0x00, 0x21, 0x00, 0x10, 0x80, 0x00, 0x40, 0x00, 0x20, + 0x40, 0x10, 0x20, 0x0F, 0xF0, 0x04, 0x08, 0x02, 0x04, 0x01, 0x00, 0x00, + 0x80, 0x00, 0x40, 0x02, 0x20, 0x01, 0x10, 0x00, 0x88, 0x00, 0x44, 0x00, + 0x3F, 0xFF, 0xF0, 0xFF, 0xFF, 0x88, 0x00, 0x44, 0x00, 0x22, 0x00, 0x11, + 0x00, 0x08, 0x80, 0x00, 0x40, 0x00, 0x20, 0x40, 0x10, 0x20, 0x0F, 0xF0, + 0x04, 0x08, 0x02, 0x04, 0x01, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, + 0x00, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x1F, 0xF8, 0x00, 0x03, 0xF9, + 0x06, 0x07, 0x84, 0x00, 0xC4, 0x00, 0x24, 0x00, 0x12, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, 0x10, 0x0F, 0xF8, + 0x00, 0x14, 0x00, 0x09, 0x00, 0x04, 0x80, 0x02, 0x20, 0x01, 0x18, 0x00, + 0x83, 0x01, 0xC0, 0x7F, 0x00, 0xFC, 0x3F, 0x20, 0x04, 0x20, 0x04, 0x20, + 0x04, 0x20, 0x04, 0x20, 0x04, 0x20, 0x04, 0x20, 0x04, 0x20, 0x04, 0x3F, + 0xFC, 0x20, 0x04, 0x20, 0x04, 0x20, 0x04, 0x20, 0x04, 0x20, 0x04, 0x20, + 0x04, 0x20, 0x04, 0x20, 0x04, 0x20, 0x04, 0xFC, 0x3F, 0xFF, 0xF8, 0x10, + 0x00, 0x80, 0x04, 0x00, 0x20, 0x01, 0x00, 0x08, 0x00, 0x40, 0x02, 0x00, + 0x10, 0x00, 0x80, 0x04, 0x00, 0x20, 0x01, 0x00, 0x08, 0x00, 0x40, 0x02, + 0x00, 0x10, 0x00, 0x81, 0xFF, 0xF0, 0x03, 0xFF, 0x80, 0x04, 0x00, 0x02, + 0x00, 0x01, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, 0x10, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x02, 0x10, 0x01, 0x08, 0x00, 0x84, 0x00, 0x42, + 0x00, 0x21, 0x00, 0x10, 0x80, 0x10, 0x20, 0x18, 0x0C, 0x18, 0x01, 0xF0, + 0x00, 0xFF, 0x1F, 0x84, 0x01, 0x81, 0x00, 0xC0, 0x40, 0x60, 0x10, 0x30, + 0x04, 0x18, 0x01, 0x0C, 0x00, 0x46, 0x00, 0x13, 0x00, 0x05, 0xF0, 0x01, + 0xC6, 0x00, 0x60, 0xC0, 0x10, 0x18, 0x04, 0x06, 0x01, 0x00, 0xC0, 0x40, + 0x30, 0x10, 0x04, 0x04, 0x01, 0x81, 0x00, 0x23, 0xFC, 0x0F, 0xFF, 0x80, + 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0x01, 0x00, 0x02, 0x00, 0x04, + 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0x01, 0x00, + 0x42, 0x00, 0x84, 0x01, 0x08, 0x02, 0x10, 0x04, 0x20, 0x0F, 0xFF, 0xF0, + 0xF0, 0x01, 0xE7, 0x00, 0x70, 0xA0, 0x0A, 0x16, 0x03, 0x42, 0x40, 0x48, + 0x4C, 0x19, 0x08, 0x82, 0x21, 0x10, 0x44, 0x23, 0x18, 0x84, 0x22, 0x10, + 0x86, 0xC2, 0x10, 0x50, 0x42, 0x0E, 0x08, 0x41, 0xC1, 0x08, 0x00, 0x21, + 0x00, 0x04, 0x20, 0x00, 0x84, 0x00, 0x10, 0x80, 0x02, 0x7F, 0x03, 0xF0, + 0xF8, 0x1F, 0xC6, 0x00, 0x41, 0xC0, 0x10, 0x50, 0x04, 0x12, 0x01, 0x04, + 0xC0, 0x41, 0x10, 0x10, 0x46, 0x04, 0x10, 0x81, 0x04, 0x10, 0x41, 0x04, + 0x10, 0x40, 0x84, 0x10, 0x31, 0x04, 0x04, 0x41, 0x01, 0x90, 0x40, 0x24, + 0x10, 0x05, 0x04, 0x01, 0xC1, 0x00, 0x31, 0xFC, 0x0C, 0x03, 0xE0, 0x06, + 0x0C, 0x04, 0x01, 0x04, 0x00, 0x46, 0x00, 0x32, 0x00, 0x0B, 0x00, 0x05, + 0x00, 0x01, 0x80, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x18, 0x00, + 0x0E, 0x00, 0x0D, 0x00, 0x04, 0xC0, 0x06, 0x20, 0x02, 0x08, 0x02, 0x03, + 0x06, 0x00, 0x7C, 0x00, 0xFF, 0xF0, 0x10, 0x0C, 0x10, 0x02, 0x10, 0x03, + 0x10, 0x01, 0x10, 0x01, 0x10, 0x01, 0x10, 0x03, 0x10, 0x06, 0x10, 0x0C, + 0x1F, 0xF0, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, + 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0xFF, 0xC0, 0x03, 0xE0, 0x06, 0x0C, + 0x04, 0x01, 0x04, 0x00, 0x46, 0x00, 0x32, 0x00, 0x0B, 0x00, 0x07, 0x00, + 0x01, 0x80, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x18, 0x00, 0x0E, + 0x00, 0x0D, 0x00, 0x04, 0xC0, 0x06, 0x20, 0x02, 0x08, 0x02, 0x03, 0x06, + 0x00, 0xFC, 0x00, 0x30, 0x00, 0x30, 0x00, 0x7F, 0xC6, 0x38, 0x1E, 0xFF, + 0xF0, 0x02, 0x01, 0x80, 0x40, 0x08, 0x08, 0x01, 0x81, 0x00, 0x10, 0x20, + 0x02, 0x04, 0x00, 0x40, 0x80, 0x18, 0x10, 0x06, 0x02, 0x03, 0x80, 0x7F, + 0xC0, 0x08, 0x18, 0x01, 0x01, 0x80, 0x20, 0x18, 0x04, 0x01, 0x80, 0x80, + 0x10, 0x10, 0x03, 0x02, 0x00, 0x20, 0x40, 0x06, 0x7F, 0x80, 0x70, 0x0F, + 0xC8, 0x61, 0xE2, 0x01, 0x90, 0x02, 0x40, 0x09, 0x00, 0x04, 0x00, 0x08, + 0x00, 0x38, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x18, + 0x00, 0x60, 0x01, 0x80, 0x0F, 0x00, 0x2B, 0x03, 0x23, 0xF0, 0xFF, 0xFF, + 0x02, 0x06, 0x04, 0x0C, 0x08, 0x18, 0x10, 0x20, 0x20, 0x00, 0x40, 0x00, + 0x80, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, + 0x00, 0x40, 0x00, 0x80, 0x01, 0x00, 0x02, 0x00, 0x04, 0x01, 0xFF, 0xC0, + 0xFC, 0x1F, 0x90, 0x01, 0x08, 0x00, 0x84, 0x00, 0x42, 0x00, 0x21, 0x00, + 0x10, 0x80, 0x08, 0x40, 0x04, 0x20, 0x02, 0x10, 0x01, 0x08, 0x00, 0x84, + 0x00, 0x42, 0x00, 0x21, 0x00, 0x10, 0x80, 0x08, 0x40, 0x04, 0x10, 0x04, + 0x0C, 0x06, 0x03, 0x06, 0x00, 0x7C, 0x00, 0xFE, 0x03, 0xF8, 0x80, 0x02, + 0x04, 0x00, 0x10, 0x30, 0x01, 0x80, 0x80, 0x08, 0x06, 0x00, 0xC0, 0x30, + 0x06, 0x00, 0x80, 0x20, 0x06, 0x03, 0x00, 0x30, 0x10, 0x00, 0x80, 0x80, + 0x06, 0x0C, 0x00, 0x10, 0x40, 0x00, 0x86, 0x00, 0x06, 0x20, 0x00, 0x11, + 0x00, 0x00, 0xD8, 0x00, 0x06, 0x80, 0x00, 0x1C, 0x00, 0x00, 0xE0, 0x00, + 0xFC, 0x0F, 0xE8, 0x00, 0x19, 0x00, 0x03, 0x10, 0x00, 0x62, 0x00, 0x08, + 0x41, 0x81, 0x08, 0x28, 0x21, 0x05, 0x04, 0x21, 0xA0, 0x84, 0x36, 0x30, + 0x84, 0x46, 0x08, 0x88, 0xC1, 0x31, 0x18, 0x24, 0x12, 0x04, 0x82, 0x40, + 0xB0, 0x48, 0x14, 0x09, 0x02, 0x80, 0xA0, 0x30, 0x1C, 0x06, 0x03, 0x80, + 0x7E, 0x0F, 0xC2, 0x00, 0x60, 0x60, 0x0C, 0x06, 0x03, 0x00, 0x60, 0xC0, + 0x0C, 0x10, 0x00, 0xC6, 0x00, 0x0D, 0x80, 0x00, 0xA0, 0x00, 0x1C, 0x00, + 0x03, 0x80, 0x00, 0xD8, 0x00, 0x11, 0x00, 0x06, 0x30, 0x01, 0x83, 0x00, + 0x60, 0x30, 0x08, 0x06, 0x03, 0x00, 0x60, 0xC0, 0x06, 0x7F, 0x07, 0xF0, + 0xFC, 0x1F, 0x98, 0x03, 0x04, 0x01, 0x03, 0x01, 0x80, 0xC1, 0x80, 0x20, + 0x80, 0x18, 0xC0, 0x04, 0x40, 0x03, 0x60, 0x00, 0xE0, 0x00, 0x20, 0x00, + 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x80, + 0x00, 0x40, 0x00, 0x20, 0x03, 0xFF, 0x80, 0xFF, 0xF4, 0x00, 0xA0, 0x09, + 0x00, 0x48, 0x04, 0x40, 0x40, 0x02, 0x00, 0x20, 0x02, 0x00, 0x10, 0x01, + 0x00, 0x10, 0x00, 0x80, 0x08, 0x04, 0x80, 0x24, 0x01, 0x40, 0x0C, 0x00, + 0x60, 0x03, 0xFF, 0xF0, 0xFC, 0x21, 0x08, 0x42, 0x10, 0x84, 0x21, 0x08, + 0x42, 0x10, 0x84, 0x21, 0x08, 0x42, 0x10, 0xF8, 0x80, 0x02, 0x00, 0x10, + 0x00, 0xC0, 0x02, 0x00, 0x18, 0x00, 0x40, 0x03, 0x00, 0x08, 0x00, 0x40, + 0x01, 0x00, 0x08, 0x00, 0x20, 0x01, 0x00, 0x04, 0x00, 0x20, 0x00, 0x80, + 0x04, 0x00, 0x10, 0x00, 0x80, 0x02, 0x00, 0x10, 0x00, 0x40, 0x02, 0x00, + 0x08, 0x00, 0x40, 0xF8, 0x42, 0x10, 0x84, 0x21, 0x08, 0x42, 0x10, 0x84, + 0x21, 0x08, 0x42, 0x10, 0x84, 0x21, 0xF8, 0x02, 0x00, 0x38, 0x03, 0x60, + 0x11, 0x01, 0x8C, 0x18, 0x31, 0x80, 0xD8, 0x03, 0x80, 0x08, 0xFF, 0xFF, + 0xF8, 0xC1, 0x83, 0x06, 0x0C, 0x0F, 0xC0, 0x70, 0x30, 0x00, 0x10, 0x00, + 0x08, 0x00, 0x08, 0x00, 0x08, 0x0F, 0xF8, 0x30, 0x08, 0x40, 0x08, 0x80, + 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x38, 0x60, 0xE8, 0x3F, 0x8F, 0xF0, + 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x40, 0x00, 0x10, 0x00, 0x04, 0x00, + 0x01, 0x0F, 0x80, 0x4C, 0x18, 0x14, 0x01, 0x06, 0x00, 0x21, 0x80, 0x08, + 0x40, 0x01, 0x10, 0x00, 0x44, 0x00, 0x11, 0x00, 0x04, 0x40, 0x01, 0x18, + 0x00, 0x86, 0x00, 0x21, 0xC0, 0x10, 0x5C, 0x18, 0xF1, 0xF8, 0x00, 0x07, + 0xE4, 0x30, 0x78, 0x80, 0x32, 0x00, 0x24, 0x00, 0x50, 0x00, 0x20, 0x00, + 0x40, 0x00, 0x80, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x12, 0x00, 0xC3, + 0x07, 0x01, 0xF8, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x80, 0x00, 0x20, 0x00, + 0x08, 0x00, 0x02, 0x00, 0x00, 0x80, 0x7C, 0x20, 0x60, 0xC8, 0x20, 0x0A, + 0x10, 0x01, 0x84, 0x00, 0x62, 0x00, 0x08, 0x80, 0x02, 0x20, 0x00, 0x88, + 0x00, 0x22, 0x00, 0x08, 0xC0, 0x06, 0x10, 0x01, 0x82, 0x00, 0xE0, 0x60, + 0xE8, 0x0F, 0xE3, 0xC0, 0x07, 0xE0, 0x1C, 0x18, 0x30, 0x0C, 0x60, 0x06, + 0x40, 0x03, 0xC0, 0x03, 0xC0, 0x01, 0xFF, 0xFF, 0xC0, 0x00, 0xC0, 0x00, + 0x40, 0x00, 0x60, 0x00, 0x30, 0x03, 0x0C, 0x0E, 0x03, 0xF0, 0x03, 0xFC, + 0x18, 0x00, 0x80, 0x02, 0x00, 0x08, 0x00, 0x20, 0x0F, 0xFF, 0x82, 0x00, + 0x08, 0x00, 0x20, 0x00, 0x80, 0x02, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, + 0x02, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, 0x02, 0x00, 0xFF, 0xF0, 0x0F, + 0xC7, 0x9C, 0x3A, 0x18, 0x07, 0x08, 0x01, 0x8C, 0x00, 0xC4, 0x00, 0x22, + 0x00, 0x11, 0x00, 0x08, 0x80, 0x04, 0x40, 0x02, 0x10, 0x03, 0x08, 0x01, + 0x82, 0x01, 0x40, 0xC3, 0x20, 0x3F, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x7F, 0x00, 0xF0, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x80, 0x00, 0x47, + 0xC0, 0x2C, 0x18, 0x1C, 0x04, 0x0C, 0x01, 0x04, 0x00, 0x82, 0x00, 0x41, + 0x00, 0x20, 0x80, 0x10, 0x40, 0x08, 0x20, 0x04, 0x10, 0x02, 0x08, 0x01, + 0x04, 0x00, 0x82, 0x00, 0x47, 0xC0, 0xF8, 0x06, 0x00, 0x18, 0x00, 0x60, + 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x80, 0x02, 0x00, 0x08, + 0x00, 0x20, 0x00, 0x80, 0x02, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, 0x02, + 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, 0x02, 0x03, 0xFF, 0xF0, 0x03, 0x00, + 0xC0, 0x30, 0x0C, 0x00, 0x00, 0x00, 0x03, 0xFF, 0x00, 0x40, 0x10, 0x04, + 0x01, 0x00, 0x40, 0x10, 0x04, 0x01, 0x00, 0x40, 0x10, 0x04, 0x01, 0x00, + 0x40, 0x10, 0x04, 0x01, 0x00, 0x40, 0x10, 0x08, 0x06, 0xFE, 0x00, 0xF0, + 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, + 0xFE, 0x10, 0x30, 0x10, 0xE0, 0x11, 0xC0, 0x13, 0x00, 0x16, 0x00, 0x1E, + 0x00, 0x1B, 0x00, 0x11, 0x80, 0x10, 0xC0, 0x10, 0x60, 0x10, 0x30, 0x10, + 0x18, 0x10, 0x1C, 0xF0, 0x3F, 0x7E, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, + 0x02, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, 0x02, 0x00, 0x08, 0x00, 0x20, + 0x00, 0x80, 0x02, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, 0x02, 0x00, 0x08, + 0x00, 0x20, 0x00, 0x80, 0xFF, 0xFC, 0xEF, 0x9E, 0x07, 0x1E, 0x20, 0xC1, + 0x82, 0x10, 0x20, 0x42, 0x04, 0x08, 0x40, 0x81, 0x08, 0x10, 0x21, 0x02, + 0x04, 0x20, 0x40, 0x84, 0x08, 0x10, 0x81, 0x02, 0x10, 0x20, 0x42, 0x04, + 0x08, 0x40, 0x81, 0x3E, 0x1C, 0x38, 0x71, 0xF0, 0x0B, 0x06, 0x07, 0x01, + 0x03, 0x00, 0x41, 0x00, 0x20, 0x80, 0x10, 0x40, 0x08, 0x20, 0x04, 0x10, + 0x02, 0x08, 0x01, 0x04, 0x00, 0x82, 0x00, 0x41, 0x00, 0x20, 0x80, 0x13, + 0xF0, 0x3E, 0x07, 0xC0, 0x30, 0x60, 0x80, 0x22, 0x00, 0x24, 0x00, 0x50, + 0x00, 0x60, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, 0x05, 0x00, 0x12, 0x00, + 0x22, 0x00, 0x83, 0x06, 0x01, 0xF0, 0x00, 0xF1, 0xFC, 0x05, 0xC1, 0x81, + 0xC0, 0x10, 0x60, 0x02, 0x18, 0x00, 0xC4, 0x00, 0x11, 0x00, 0x04, 0x40, + 0x01, 0x10, 0x00, 0x44, 0x00, 0x11, 0x80, 0x08, 0x60, 0x02, 0x14, 0x01, + 0x04, 0xC1, 0x81, 0x0F, 0x80, 0x40, 0x00, 0x10, 0x00, 0x04, 0x00, 0x01, + 0x00, 0x00, 0x40, 0x00, 0x10, 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xE3, 0xC6, + 0x0E, 0x86, 0x00, 0xE1, 0x00, 0x18, 0xC0, 0x06, 0x20, 0x00, 0x88, 0x00, + 0x22, 0x00, 0x08, 0x80, 0x02, 0x20, 0x00, 0x84, 0x00, 0x61, 0x00, 0x18, + 0x20, 0x0A, 0x06, 0x0C, 0x80, 0x7C, 0x20, 0x00, 0x08, 0x00, 0x02, 0x00, + 0x00, 0x80, 0x00, 0x20, 0x00, 0x08, 0x00, 0x02, 0x00, 0x0F, 0xF0, 0xF8, + 0x7C, 0x11, 0x8C, 0x2C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x02, 0x00, + 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0x01, + 0x00, 0x3F, 0xFC, 0x00, 0x0F, 0xD1, 0x83, 0x98, 0x04, 0x80, 0x24, 0x00, + 0x30, 0x00, 0xF0, 0x00, 0xFC, 0x00, 0x30, 0x00, 0xE0, 0x03, 0x00, 0x1C, + 0x01, 0xF0, 0x1A, 0x7F, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, + 0x00, 0x08, 0x00, 0xFF, 0xFC, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, + 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, + 0x00, 0x08, 0x00, 0x08, 0x01, 0x06, 0x0F, 0x03, 0xF8, 0xF0, 0x3E, 0x08, + 0x01, 0x04, 0x00, 0x82, 0x00, 0x41, 0x00, 0x20, 0x80, 0x10, 0x40, 0x08, + 0x20, 0x04, 0x10, 0x02, 0x08, 0x01, 0x04, 0x00, 0x82, 0x00, 0x41, 0x00, + 0xE0, 0x41, 0xD0, 0x1F, 0x8E, 0xFE, 0x0F, 0xE2, 0x00, 0x20, 0x60, 0x0C, + 0x0C, 0x01, 0x80, 0x80, 0x20, 0x18, 0x0C, 0x01, 0x01, 0x00, 0x30, 0x60, + 0x02, 0x08, 0x00, 0x41, 0x00, 0x0C, 0x60, 0x00, 0x88, 0x00, 0x19, 0x00, + 0x01, 0x40, 0x00, 0x38, 0x00, 0xFC, 0x07, 0xE4, 0x00, 0x10, 0x80, 0x02, + 0x18, 0x20, 0xC3, 0x0E, 0x18, 0x21, 0x42, 0x04, 0x28, 0x40, 0x8D, 0x88, + 0x19, 0x93, 0x03, 0x22, 0x60, 0x2C, 0x68, 0x05, 0x85, 0x00, 0xA0, 0xA0, + 0x1C, 0x1C, 0x01, 0x81, 0x80, 0x7C, 0x1F, 0x18, 0x03, 0x06, 0x03, 0x01, + 0x83, 0x00, 0x63, 0x00, 0x1B, 0x00, 0x07, 0x00, 0x03, 0x80, 0x03, 0x60, + 0x03, 0x18, 0x03, 0x06, 0x03, 0x01, 0x83, 0x00, 0x61, 0x00, 0x33, 0xF0, + 0x7E, 0xFC, 0x1F, 0x90, 0x01, 0x8C, 0x00, 0x86, 0x00, 0xC1, 0x80, 0x40, + 0xC0, 0x60, 0x20, 0x20, 0x18, 0x30, 0x04, 0x10, 0x03, 0x08, 0x00, 0x8C, + 0x00, 0x64, 0x00, 0x16, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x01, 0x00, 0x01, + 0x80, 0x00, 0x80, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x20, 0x07, 0xFE, 0x00, + 0xFF, 0xF4, 0x01, 0x20, 0x09, 0x00, 0x80, 0x08, 0x00, 0x80, 0x08, 0x00, + 0xC0, 0x04, 0x00, 0x40, 0x04, 0x00, 0x40, 0x14, 0x00, 0xA0, 0x07, 0xFF, + 0xE0, 0x07, 0x0C, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x30, 0xC0, 0x30, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x0C, 0x07, 0xFF, 0xFF, 0xFF, 0x80, 0xE0, 0x30, 0x10, 0x10, 0x10, 0x10, + 0x10, 0x10, 0x10, 0x10, 0x10, 0x08, 0x07, 0x0C, 0x10, 0x10, 0x10, 0x10, + 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0xE0, 0x1C, 0x00, 0x44, 0x0D, 0x84, + 0x36, 0x04, 0x40, 0x07, 0x00}; + +const GFXglyph FreeMono18pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 21, 0, 1}, // 0x20 ' ' + {0, 4, 22, 21, 8, -21}, // 0x21 '!' + {11, 11, 10, 21, 5, -20}, // 0x22 '"' + {25, 14, 24, 21, 3, -21}, // 0x23 '#' + {67, 13, 26, 21, 4, -22}, // 0x24 '$' + {110, 15, 21, 21, 3, -20}, // 0x25 '%' + {150, 12, 18, 21, 4, -17}, // 0x26 '&' + {177, 4, 10, 21, 8, -20}, // 0x27 ''' + {182, 5, 25, 21, 10, -20}, // 0x28 '(' + {198, 5, 25, 21, 6, -20}, // 0x29 ')' + {214, 13, 12, 21, 4, -20}, // 0x2A '*' + {234, 15, 17, 21, 3, -17}, // 0x2B '+' + {266, 7, 10, 21, 5, -4}, // 0x2C ',' + {275, 15, 1, 21, 3, -9}, // 0x2D '-' + {277, 5, 5, 21, 8, -4}, // 0x2E '.' + {281, 13, 26, 21, 4, -22}, // 0x2F '/' + {324, 13, 21, 21, 4, -20}, // 0x30 '0' + {359, 13, 21, 21, 4, -20}, // 0x31 '1' + {394, 13, 21, 21, 3, -20}, // 0x32 '2' + {429, 14, 21, 21, 3, -20}, // 0x33 '3' + {466, 12, 21, 21, 4, -20}, // 0x34 '4' + {498, 14, 21, 21, 3, -20}, // 0x35 '5' + {535, 12, 21, 21, 5, -20}, // 0x36 '6' + {567, 12, 21, 21, 4, -20}, // 0x37 '7' + {599, 13, 21, 21, 4, -20}, // 0x38 '8' + {634, 12, 21, 21, 5, -20}, // 0x39 '9' + {666, 5, 15, 21, 8, -14}, // 0x3A ':' + {676, 7, 20, 21, 5, -14}, // 0x3B ';' + {694, 15, 16, 21, 3, -17}, // 0x3C '<' + {724, 17, 6, 21, 2, -12}, // 0x3D '=' + {737, 15, 16, 21, 3, -17}, // 0x3E '>' + {767, 12, 20, 21, 5, -19}, // 0x3F '?' + {797, 13, 23, 21, 4, -20}, // 0x40 '@' + {835, 21, 20, 21, 0, -19}, // 0x41 'A' + {888, 18, 20, 21, 1, -19}, // 0x42 'B' + {933, 17, 20, 21, 2, -19}, // 0x43 'C' + {976, 16, 20, 21, 2, -19}, // 0x44 'D' + {1016, 17, 20, 21, 1, -19}, // 0x45 'E' + {1059, 17, 20, 21, 1, -19}, // 0x46 'F' + {1102, 17, 20, 21, 2, -19}, // 0x47 'G' + {1145, 16, 20, 21, 2, -19}, // 0x48 'H' + {1185, 13, 20, 21, 4, -19}, // 0x49 'I' + {1218, 17, 20, 21, 3, -19}, // 0x4A 'J' + {1261, 18, 20, 21, 1, -19}, // 0x4B 'K' + {1306, 15, 20, 21, 3, -19}, // 0x4C 'L' + {1344, 19, 20, 21, 1, -19}, // 0x4D 'M' + {1392, 18, 20, 21, 1, -19}, // 0x4E 'N' + {1437, 17, 20, 21, 2, -19}, // 0x4F 'O' + {1480, 16, 20, 21, 1, -19}, // 0x50 'P' + {1520, 17, 24, 21, 2, -19}, // 0x51 'Q' + {1571, 19, 20, 21, 1, -19}, // 0x52 'R' + {1619, 14, 20, 21, 3, -19}, // 0x53 'S' + {1654, 15, 20, 21, 3, -19}, // 0x54 'T' + {1692, 17, 20, 21, 2, -19}, // 0x55 'U' + {1735, 21, 20, 21, 0, -19}, // 0x56 'V' + {1788, 19, 20, 21, 1, -19}, // 0x57 'W' + {1836, 19, 20, 21, 1, -19}, // 0x58 'X' + {1884, 17, 20, 21, 2, -19}, // 0x59 'Y' + {1927, 13, 20, 21, 4, -19}, // 0x5A 'Z' + {1960, 5, 25, 21, 10, -20}, // 0x5B '[' + {1976, 13, 26, 21, 4, -22}, // 0x5C '\' + {2019, 5, 25, 21, 6, -20}, // 0x5D ']' + {2035, 13, 9, 21, 4, -20}, // 0x5E '^' + {2050, 21, 1, 21, 0, 4}, // 0x5F '_' + {2053, 6, 5, 21, 5, -21}, // 0x60 '`' + {2057, 16, 15, 21, 3, -14}, // 0x61 'a' + {2087, 18, 21, 21, 1, -20}, // 0x62 'b' + {2135, 15, 15, 21, 3, -14}, // 0x63 'c' + {2164, 18, 21, 21, 2, -20}, // 0x64 'd' + {2212, 16, 15, 21, 2, -14}, // 0x65 'e' + {2242, 14, 21, 21, 4, -20}, // 0x66 'f' + {2279, 17, 22, 21, 2, -14}, // 0x67 'g' + {2326, 17, 21, 21, 1, -20}, // 0x68 'h' + {2371, 14, 22, 21, 4, -21}, // 0x69 'i' + {2410, 10, 29, 21, 5, -21}, // 0x6A 'j' + {2447, 16, 21, 21, 2, -20}, // 0x6B 'k' + {2489, 14, 21, 21, 4, -20}, // 0x6C 'l' + {2526, 19, 15, 21, 1, -14}, // 0x6D 'm' + {2562, 17, 15, 21, 1, -14}, // 0x6E 'n' + {2594, 15, 15, 21, 3, -14}, // 0x6F 'o' + {2623, 18, 22, 21, 1, -14}, // 0x70 'p' + {2673, 18, 22, 21, 2, -14}, // 0x71 'q' + {2723, 15, 15, 21, 3, -14}, // 0x72 'r' + {2752, 13, 15, 21, 4, -14}, // 0x73 's' + {2777, 16, 20, 21, 1, -19}, // 0x74 't' + {2817, 17, 15, 21, 1, -14}, // 0x75 'u' + {2849, 19, 15, 21, 1, -14}, // 0x76 'v' + {2885, 19, 15, 21, 1, -14}, // 0x77 'w' + {2921, 17, 15, 21, 2, -14}, // 0x78 'x' + {2953, 17, 22, 21, 2, -14}, // 0x79 'y' + {3000, 13, 15, 21, 4, -14}, // 0x7A 'z' + {3025, 8, 25, 21, 6, -20}, // 0x7B '{' + {3050, 1, 25, 21, 10, -20}, // 0x7C '|' + {3054, 8, 25, 21, 7, -20}, // 0x7D '}' + {3079, 15, 5, 21, 3, -11}}; // 0x7E '~' + +const GFXfont FreeMono18pt7b PROGMEM = {(uint8_t *)FreeMono18pt7bBitmaps, + (GFXglyph *)FreeMono18pt7bGlyphs, 0x20, + 0x7E, 35}; + +// Approx. 3761 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMono24pt7b.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMono24pt7b.h new file mode 100644 index 0000000..2540ed4 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMono24pt7b.h @@ -0,0 +1,579 @@ +#pragma once +#include + +const uint8_t FreeMono24pt7bBitmaps[] PROGMEM = { + 0x73, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x9C, 0xE7, 0x10, 0x84, 0x21, 0x08, + 0x00, 0x00, 0x00, 0x03, 0xBF, 0xFF, 0xB8, 0xFE, 0x7F, 0x7C, 0x3E, 0x7C, + 0x3E, 0x7C, 0x3E, 0x7C, 0x3E, 0x7C, 0x3E, 0x7C, 0x3E, 0x7C, 0x3E, 0x3C, + 0x3E, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x01, + 0x86, 0x00, 0x30, 0xC0, 0x06, 0x18, 0x00, 0xC3, 0x00, 0x18, 0x60, 0x03, + 0x0C, 0x00, 0x61, 0x80, 0x0C, 0x70, 0x01, 0x8C, 0x00, 0x61, 0x80, 0x0C, + 0x30, 0x3F, 0xFF, 0xF7, 0xFF, 0xFE, 0x06, 0x18, 0x00, 0xC3, 0x00, 0x18, + 0x60, 0x03, 0x0C, 0x00, 0x61, 0x80, 0x0C, 0x30, 0x7F, 0xFF, 0xEF, 0xFF, + 0xFC, 0x06, 0x18, 0x00, 0xC7, 0x00, 0x38, 0xC0, 0x06, 0x18, 0x00, 0xC3, + 0x00, 0x18, 0x60, 0x03, 0x0C, 0x00, 0x61, 0x80, 0x0C, 0x30, 0x01, 0x86, + 0x00, 0x30, 0xC0, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x0C, 0x00, 0x0F, 0xC0, + 0x0F, 0xFD, 0x87, 0x03, 0xE3, 0x80, 0x39, 0xC0, 0x06, 0x60, 0x01, 0x98, + 0x00, 0x06, 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x07, 0xC0, 0x00, 0x7F, + 0x80, 0x03, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0x60, 0x00, 0x1C, 0x00, 0x03, + 0x80, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x1F, 0x80, 0x0E, 0xFC, 0x0F, 0x37, + 0xFF, 0x80, 0x7F, 0x80, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x0C, + 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x07, 0x80, 0x01, 0xFE, 0x00, 0x38, + 0x70, 0x03, 0x03, 0x00, 0x60, 0x18, 0x06, 0x01, 0x80, 0x60, 0x18, 0x06, + 0x01, 0x80, 0x30, 0x30, 0x03, 0x87, 0x00, 0x1F, 0xE0, 0x30, 0x78, 0x1F, + 0x00, 0x1F, 0x80, 0x0F, 0xC0, 0x07, 0xE0, 0x03, 0xF0, 0x00, 0xF8, 0x00, + 0x0C, 0x01, 0xE0, 0x00, 0x7F, 0x80, 0x0E, 0x1C, 0x00, 0xC0, 0xC0, 0x18, + 0x06, 0x01, 0x80, 0x60, 0x18, 0x06, 0x01, 0x80, 0x60, 0x0C, 0x0E, 0x00, + 0xE1, 0xC0, 0x07, 0xF8, 0x00, 0x1E, 0x00, 0x03, 0xEC, 0x01, 0xFF, 0x00, + 0xE1, 0x00, 0x70, 0x00, 0x18, 0x00, 0x06, 0x00, 0x01, 0x80, 0x00, 0x30, + 0x00, 0x0C, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, 0x7C, 0x00, 0x3B, 0x83, + 0xD8, 0x60, 0xFE, 0x0C, 0x33, 0x03, 0x98, 0xC0, 0x66, 0x30, 0x0D, 0x8C, + 0x03, 0xC3, 0x00, 0x70, 0x60, 0x1C, 0x1C, 0x0F, 0x03, 0x87, 0x7C, 0x7F, + 0x9F, 0x07, 0x80, 0x00, 0xFE, 0xF9, 0xF3, 0xE7, 0xCF, 0x9F, 0x3E, 0x3C, + 0x70, 0xE1, 0xC3, 0x87, 0x00, 0x06, 0x1C, 0x30, 0xE1, 0x87, 0x0E, 0x18, + 0x70, 0xE1, 0xC3, 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xC3, 0x87, 0x0E, 0x0C, + 0x1C, 0x38, 0x70, 0x60, 0xE1, 0xC1, 0x83, 0x83, 0x06, 0x06, 0x04, 0xC1, + 0xC1, 0x83, 0x83, 0x07, 0x0E, 0x0C, 0x1C, 0x38, 0x70, 0xE0, 0xE1, 0xC3, + 0x87, 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0x87, 0x0E, 0x1C, 0x30, 0x61, 0xC3, + 0x0E, 0x18, 0x70, 0xC1, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x0C, 0x00, + 0x03, 0x00, 0x00, 0xC0, 0x10, 0x30, 0x3F, 0x8C, 0x7C, 0xFF, 0xFC, 0x07, + 0xF8, 0x00, 0x78, 0x00, 0x1F, 0x00, 0x0C, 0xC0, 0x06, 0x18, 0x03, 0x87, + 0x00, 0xC0, 0xC0, 0x60, 0x18, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, 0x60, + 0x00, 0x06, 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, 0x60, 0x00, 0x06, + 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, + 0x60, 0x00, 0x06, 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, 0x60, 0x00, + 0x06, 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, + 0x1F, 0x8F, 0x87, 0xC7, 0xC3, 0xE1, 0xE1, 0xF0, 0xF0, 0x78, 0x38, 0x3C, + 0x1C, 0x0E, 0x06, 0x00, 0x7F, 0xFF, 0xFD, 0xFF, 0xFF, 0xF0, 0x7D, 0xFF, + 0xFF, 0xFF, 0xEF, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x70, 0x00, 0x18, 0x00, + 0x06, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x18, 0x00, 0x0C, + 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, 0x30, 0x00, 0x0C, 0x00, + 0x06, 0x00, 0x01, 0x80, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x18, 0x00, 0x06, + 0x00, 0x03, 0x80, 0x00, 0xC0, 0x00, 0x70, 0x00, 0x18, 0x00, 0x0E, 0x00, + 0x03, 0x00, 0x01, 0xC0, 0x00, 0x60, 0x00, 0x38, 0x00, 0x0C, 0x00, 0x07, + 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, 0x30, 0x00, 0x0C, 0x00, 0x00, 0x03, + 0xF0, 0x03, 0xFF, 0x01, 0xE1, 0xE0, 0xE0, 0x18, 0x30, 0x03, 0x1C, 0x00, + 0xE6, 0x00, 0x19, 0x80, 0x06, 0xE0, 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x0F, + 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, + 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF8, 0x00, + 0x76, 0x00, 0x19, 0x80, 0x06, 0x70, 0x03, 0x8C, 0x00, 0xC3, 0x80, 0x60, + 0x78, 0x78, 0x0F, 0xFC, 0x00, 0xFC, 0x00, 0x03, 0x80, 0x07, 0x80, 0x0F, + 0x80, 0x1D, 0x80, 0x39, 0x80, 0x71, 0x80, 0xE1, 0x80, 0xC1, 0x80, 0x01, + 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, + 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, + 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, + 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xF0, 0x03, 0xFF, 0x01, 0xC0, 0xE0, + 0xC0, 0x1C, 0x60, 0x03, 0xB8, 0x00, 0x6C, 0x00, 0x0F, 0x00, 0x03, 0x00, + 0x00, 0xC0, 0x00, 0x30, 0x00, 0x18, 0x00, 0x06, 0x00, 0x03, 0x00, 0x01, + 0x80, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x18, 0x00, 0x0C, 0x00, + 0x06, 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x30, + 0x00, 0xD0, 0x00, 0x38, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x03, + 0xF8, 0x01, 0xFF, 0xC0, 0x70, 0x3C, 0x18, 0x01, 0xC6, 0x00, 0x18, 0x00, + 0x01, 0x80, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0xC0, 0x00, 0x18, 0x00, + 0x06, 0x00, 0x01, 0xC0, 0x00, 0x70, 0x01, 0xFC, 0x00, 0x3F, 0x00, 0x00, + 0x78, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, + 0x06, 0x00, 0x00, 0xC0, 0x00, 0x18, 0x00, 0x03, 0x00, 0x00, 0xD8, 0x00, + 0x3B, 0x80, 0x0E, 0x3E, 0x07, 0x81, 0xFF, 0xE0, 0x07, 0xE0, 0x00, 0x00, + 0x3C, 0x00, 0x7C, 0x00, 0x6C, 0x00, 0xCC, 0x00, 0x8C, 0x01, 0x8C, 0x03, + 0x0C, 0x03, 0x0C, 0x06, 0x0C, 0x04, 0x0C, 0x0C, 0x0C, 0x08, 0x0C, 0x10, + 0x0C, 0x30, 0x0C, 0x20, 0x0C, 0x60, 0x0C, 0x40, 0x0C, 0x80, 0x0C, 0xFF, + 0xFF, 0xFF, 0xFF, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, + 0x0C, 0x00, 0x0C, 0x00, 0xFF, 0x00, 0xFF, 0x3F, 0xFF, 0x07, 0xFF, 0xE0, + 0xC0, 0x00, 0x18, 0x00, 0x03, 0x00, 0x00, 0x60, 0x00, 0x0C, 0x00, 0x01, + 0x80, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0xC7, 0xE0, 0x1F, 0xFF, 0x03, + 0x80, 0x70, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0x60, + 0x00, 0x0C, 0x00, 0x01, 0x80, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0xC0, + 0x00, 0x30, 0x00, 0x06, 0xC0, 0x01, 0xDC, 0x00, 0x71, 0xF0, 0x3C, 0x0F, + 0xFF, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x80, 0x3F, 0xF0, 0x3E, 0x00, 0x1E, + 0x00, 0x0E, 0x00, 0x07, 0x00, 0x03, 0x80, 0x00, 0xC0, 0x00, 0x70, 0x00, + 0x18, 0x00, 0x06, 0x00, 0x03, 0x80, 0x00, 0xC1, 0xF8, 0x31, 0xFF, 0x0C, + 0xF0, 0xF3, 0x70, 0x0C, 0xD8, 0x01, 0xBC, 0x00, 0x6E, 0x00, 0x0F, 0x80, + 0x03, 0xC0, 0x00, 0xD8, 0x00, 0x36, 0x00, 0x0D, 0x80, 0x03, 0x30, 0x01, + 0x8E, 0x00, 0x61, 0xC0, 0x30, 0x38, 0x38, 0x07, 0xFC, 0x00, 0x7C, 0x00, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x01, 0xC0, + 0x00, 0x60, 0x00, 0x18, 0x00, 0x0E, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, + 0x30, 0x00, 0x18, 0x00, 0x06, 0x00, 0x01, 0x80, 0x00, 0xC0, 0x00, 0x30, + 0x00, 0x0C, 0x00, 0x06, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, 0x30, 0x00, + 0x0C, 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, 0x18, 0x00, 0x0C, + 0x00, 0x03, 0x00, 0x03, 0xF0, 0x03, 0xFF, 0x03, 0xC0, 0xF1, 0xC0, 0x0E, + 0x60, 0x01, 0xB8, 0x00, 0x7C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, + 0x00, 0x36, 0x00, 0x18, 0xC0, 0x0C, 0x1C, 0x0E, 0x03, 0xFF, 0x00, 0xFF, + 0xC0, 0x70, 0x38, 0x30, 0x03, 0x18, 0x00, 0x66, 0x00, 0x1B, 0x00, 0x03, + 0xC0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0x60, 0x01, 0x98, + 0x00, 0xE3, 0x00, 0x70, 0x70, 0x38, 0x0F, 0xFC, 0x00, 0xFC, 0x00, 0x07, + 0xE0, 0x03, 0xFE, 0x01, 0xC1, 0xC0, 0xC0, 0x38, 0x60, 0x07, 0x18, 0x00, + 0xCC, 0x00, 0x1B, 0x00, 0x06, 0xC0, 0x01, 0xB0, 0x00, 0x3C, 0x00, 0x1F, + 0x00, 0x07, 0x60, 0x03, 0xD8, 0x01, 0xB3, 0x00, 0xCC, 0xF0, 0xF3, 0x0F, + 0xF8, 0xC1, 0xF8, 0x30, 0x00, 0x1C, 0x00, 0x06, 0x00, 0x01, 0x80, 0x00, + 0xE0, 0x00, 0x30, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x07, 0x80, + 0x07, 0xC0, 0xFF, 0xC0, 0x1F, 0xC0, 0x00, 0x7D, 0xFF, 0xFF, 0xFF, 0xEF, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xFF, 0xFF, 0xFF, + 0xF7, 0xC0, 0x0F, 0x87, 0xF1, 0xFC, 0x7F, 0x1F, 0xC3, 0xE0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF1, 0xF8, 0x7C, 0x3F, 0x0F, + 0x83, 0xE0, 0xF0, 0x7C, 0x1E, 0x07, 0x81, 0xC0, 0xF0, 0x38, 0x04, 0x00, + 0x00, 0x00, 0x18, 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, + 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x00, + 0x00, 0x78, 0x00, 0x07, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x1E, 0x00, 0x00, + 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x20, 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, + 0xFF, 0x7F, 0xFF, 0xFF, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x0F, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x38, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x03, + 0xC0, 0x00, 0x07, 0x80, 0x00, 0x0E, 0x00, 0x00, 0x3C, 0x00, 0x01, 0xE0, + 0x00, 0x3C, 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x01, 0xE0, + 0x00, 0x3C, 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x0E, 0x00, 0x00, 0x60, + 0x00, 0x00, 0x07, 0xF0, 0x1F, 0xFE, 0x3E, 0x07, 0x98, 0x00, 0xEC, 0x00, + 0x36, 0x00, 0x0F, 0x00, 0x06, 0x00, 0x03, 0x00, 0x01, 0x80, 0x01, 0xC0, + 0x00, 0xC0, 0x01, 0xC0, 0x03, 0xC0, 0x07, 0xC0, 0x07, 0x00, 0x03, 0x00, + 0x01, 0x80, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x80, 0x07, 0xE0, 0x03, 0xF0, 0x01, 0xF8, 0x00, + 0x78, 0x00, 0x03, 0xF0, 0x03, 0xFF, 0x01, 0xE0, 0xE0, 0xE0, 0x1C, 0x30, + 0x03, 0x1C, 0x00, 0x66, 0x00, 0x19, 0x80, 0x06, 0xC0, 0x01, 0xB0, 0x07, + 0xEC, 0x07, 0xFB, 0x03, 0xC6, 0xC1, 0xC1, 0xB0, 0xE0, 0x6C, 0x30, 0x1B, + 0x0C, 0x06, 0xC3, 0x01, 0xB0, 0xC0, 0x6C, 0x18, 0x1B, 0x07, 0x86, 0xC0, + 0xFF, 0xF0, 0x0F, 0xFC, 0x00, 0x03, 0x00, 0x00, 0x60, 0x00, 0x18, 0x00, + 0x07, 0x00, 0x00, 0xC0, 0x00, 0x38, 0x00, 0x07, 0x80, 0xC0, 0xFF, 0xF0, + 0x0F, 0xE0, 0x07, 0xFF, 0x00, 0x00, 0x7F, 0xF0, 0x00, 0x00, 0x1B, 0x00, + 0x00, 0x01, 0x98, 0x00, 0x00, 0x11, 0x80, 0x00, 0x03, 0x0C, 0x00, 0x00, + 0x30, 0xC0, 0x00, 0x06, 0x0C, 0x00, 0x00, 0x60, 0x60, 0x00, 0x06, 0x06, + 0x00, 0x00, 0xC0, 0x30, 0x00, 0x0C, 0x03, 0x00, 0x00, 0x80, 0x30, 0x00, + 0x18, 0x01, 0x80, 0x01, 0x80, 0x18, 0x00, 0x3F, 0xFF, 0x80, 0x03, 0xFF, + 0xFC, 0x00, 0x20, 0x00, 0xC0, 0x06, 0x00, 0x06, 0x00, 0x60, 0x00, 0x60, + 0x0C, 0x00, 0x06, 0x00, 0xC0, 0x00, 0x30, 0x0C, 0x00, 0x03, 0x01, 0x80, + 0x00, 0x18, 0x7F, 0xC0, 0x3F, 0xF7, 0xFC, 0x03, 0xFF, 0xFF, 0xFF, 0x03, + 0xFF, 0xFF, 0x01, 0x80, 0x0E, 0x06, 0x00, 0x1C, 0x18, 0x00, 0x38, 0x60, + 0x00, 0x61, 0x80, 0x01, 0x86, 0x00, 0x06, 0x18, 0x00, 0x38, 0x60, 0x01, + 0xC1, 0x80, 0x1E, 0x07, 0xFF, 0xE0, 0x1F, 0xFF, 0xC0, 0x60, 0x03, 0xC1, + 0x80, 0x03, 0x86, 0x00, 0x06, 0x18, 0x00, 0x1C, 0x60, 0x00, 0x31, 0x80, + 0x00, 0xC6, 0x00, 0x03, 0x18, 0x00, 0x0C, 0x60, 0x00, 0x61, 0x80, 0x03, + 0x86, 0x00, 0x1C, 0xFF, 0xFF, 0xE3, 0xFF, 0xFE, 0x00, 0x00, 0xFC, 0x00, + 0x0F, 0xFE, 0x60, 0xF0, 0x3D, 0x87, 0x00, 0x3E, 0x38, 0x00, 0x38, 0xC0, + 0x00, 0xE7, 0x00, 0x01, 0x98, 0x00, 0x06, 0x60, 0x00, 0x03, 0x00, 0x00, + 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x0C, + 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, + 0x00, 0x18, 0x00, 0x00, 0x60, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, 0x00, + 0xC7, 0x00, 0x06, 0x0E, 0x00, 0x70, 0x1E, 0x07, 0x80, 0x3F, 0xFC, 0x00, + 0x1F, 0x80, 0xFF, 0xFE, 0x03, 0xFF, 0xFE, 0x03, 0x00, 0x3C, 0x0C, 0x00, + 0x38, 0x30, 0x00, 0x70, 0xC0, 0x00, 0xC3, 0x00, 0x03, 0x8C, 0x00, 0x06, + 0x30, 0x00, 0x1C, 0xC0, 0x00, 0x33, 0x00, 0x00, 0xCC, 0x00, 0x03, 0x30, + 0x00, 0x0C, 0xC0, 0x00, 0x33, 0x00, 0x00, 0xCC, 0x00, 0x03, 0x30, 0x00, + 0x0C, 0xC0, 0x00, 0x33, 0x00, 0x01, 0x8C, 0x00, 0x06, 0x30, 0x00, 0x30, + 0xC0, 0x01, 0xC3, 0x00, 0x0E, 0x0C, 0x00, 0xF0, 0xFF, 0xFF, 0x83, 0xFF, + 0xF8, 0x00, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xE1, 0x80, 0x01, 0x86, 0x00, + 0x06, 0x18, 0x00, 0x18, 0x60, 0x00, 0x61, 0x80, 0x01, 0x86, 0x00, 0x00, + 0x18, 0x0C, 0x00, 0x60, 0x30, 0x01, 0x80, 0xC0, 0x07, 0xFF, 0x00, 0x1F, + 0xFC, 0x00, 0x60, 0x30, 0x01, 0x80, 0xC0, 0x06, 0x03, 0x00, 0x18, 0x00, + 0x00, 0x60, 0x00, 0x01, 0x80, 0x00, 0xC6, 0x00, 0x03, 0x18, 0x00, 0x0C, + 0x60, 0x00, 0x31, 0x80, 0x00, 0xC6, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0x80, 0x00, 0xC6, 0x00, + 0x03, 0x18, 0x00, 0x0C, 0x60, 0x00, 0x31, 0x80, 0x00, 0xC6, 0x00, 0x00, + 0x18, 0x0C, 0x00, 0x60, 0x30, 0x01, 0x80, 0xC0, 0x07, 0xFF, 0x00, 0x1F, + 0xFC, 0x00, 0x60, 0x30, 0x01, 0x80, 0xC0, 0x06, 0x03, 0x00, 0x18, 0x00, + 0x00, 0x60, 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0x18, 0x00, 0x00, + 0x60, 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0xFF, 0xF0, 0x03, 0xFF, + 0xC0, 0x00, 0x00, 0xFF, 0x00, 0x07, 0xFF, 0x98, 0x1E, 0x03, 0xF0, 0x70, + 0x01, 0xE1, 0x80, 0x01, 0xC6, 0x00, 0x01, 0x9C, 0x00, 0x03, 0x30, 0x00, + 0x00, 0x60, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, + 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, 0x03, 0xFF, + 0xC0, 0x07, 0xFF, 0x80, 0x00, 0x1B, 0x00, 0x00, 0x37, 0x00, 0x00, 0x66, + 0x00, 0x00, 0xCC, 0x00, 0x01, 0x8C, 0x00, 0x03, 0x1C, 0x00, 0x06, 0x1E, + 0x00, 0x0C, 0x0F, 0x00, 0xF8, 0x0F, 0xFF, 0xC0, 0x03, 0xFC, 0x00, 0x7F, + 0x01, 0xFC, 0xFE, 0x03, 0xF8, 0x60, 0x00, 0xC0, 0xC0, 0x01, 0x81, 0x80, + 0x03, 0x03, 0x00, 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x18, 0x00, + 0x30, 0x30, 0x00, 0x60, 0x60, 0x00, 0xC0, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, + 0x03, 0x00, 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x18, 0x00, 0x30, + 0x30, 0x00, 0x60, 0x60, 0x00, 0xC0, 0xC0, 0x01, 0x81, 0x80, 0x03, 0x03, + 0x00, 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0xFF, 0x01, 0xFF, 0xFE, + 0x03, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, + 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, + 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, + 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, + 0x01, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFE, 0x01, 0xFF, 0xFC, + 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x18, 0x00, + 0x00, 0x30, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, + 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, + 0x30, 0x60, 0x00, 0x60, 0xC0, 0x00, 0xC1, 0x80, 0x01, 0x83, 0x00, 0x03, + 0x06, 0x00, 0x06, 0x0C, 0x00, 0x0C, 0x18, 0x00, 0x30, 0x38, 0x00, 0x60, + 0x38, 0x01, 0x80, 0x3C, 0x0E, 0x00, 0x3F, 0xF8, 0x00, 0x0F, 0xC0, 0x00, + 0xFF, 0x81, 0xFE, 0xFF, 0x81, 0xFE, 0x18, 0x00, 0x30, 0x18, 0x00, 0xE0, + 0x18, 0x01, 0xC0, 0x18, 0x03, 0x80, 0x18, 0x07, 0x00, 0x18, 0x0E, 0x00, + 0x18, 0x18, 0x00, 0x18, 0x70, 0x00, 0x18, 0xE0, 0x00, 0x19, 0xE0, 0x00, + 0x1B, 0xF8, 0x00, 0x1F, 0x1C, 0x00, 0x1C, 0x06, 0x00, 0x18, 0x03, 0x00, + 0x18, 0x03, 0x80, 0x18, 0x01, 0x80, 0x18, 0x00, 0xC0, 0x18, 0x00, 0xC0, + 0x18, 0x00, 0x60, 0x18, 0x00, 0x60, 0x18, 0x00, 0x70, 0x18, 0x00, 0x30, + 0xFF, 0x80, 0x3F, 0xFF, 0x80, 0x1F, 0xFF, 0xF0, 0x07, 0xFF, 0x80, 0x01, + 0x80, 0x00, 0x0C, 0x00, 0x00, 0x60, 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, + 0x00, 0xC0, 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, 0x80, 0x00, 0x0C, + 0x00, 0x00, 0x60, 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, 0x00, 0xC0, 0x00, + 0x06, 0x00, 0x18, 0x30, 0x00, 0xC1, 0x80, 0x06, 0x0C, 0x00, 0x30, 0x60, + 0x01, 0x83, 0x00, 0x0C, 0x18, 0x00, 0x60, 0xC0, 0x03, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xC0, 0xFC, 0x00, 0x0F, 0xFF, 0x00, 0x03, 0xF3, 0x60, 0x01, + 0xB0, 0xD8, 0x00, 0x6C, 0x33, 0x00, 0x33, 0x0C, 0xC0, 0x0C, 0xC3, 0x38, + 0x07, 0x30, 0xC6, 0x01, 0x8C, 0x31, 0xC0, 0xE3, 0x0C, 0x30, 0x30, 0xC3, + 0x0C, 0x0C, 0x30, 0xC1, 0x86, 0x0C, 0x30, 0x61, 0x83, 0x0C, 0x0C, 0xC0, + 0xC3, 0x03, 0x30, 0x30, 0xC0, 0x78, 0x0C, 0x30, 0x1E, 0x03, 0x0C, 0x03, + 0x00, 0xC3, 0x00, 0x00, 0x30, 0xC0, 0x00, 0x0C, 0x30, 0x00, 0x03, 0x0C, + 0x00, 0x00, 0xC3, 0x00, 0x00, 0x30, 0xC0, 0x00, 0x0C, 0xFF, 0x00, 0x3F, + 0xFF, 0xC0, 0x0F, 0xF0, 0xFC, 0x00, 0xFF, 0xFC, 0x00, 0xFF, 0x1E, 0x00, + 0x0C, 0x1F, 0x00, 0x0C, 0x1B, 0x00, 0x0C, 0x19, 0x80, 0x0C, 0x19, 0xC0, + 0x0C, 0x18, 0xC0, 0x0C, 0x18, 0x60, 0x0C, 0x18, 0x60, 0x0C, 0x18, 0x30, + 0x0C, 0x18, 0x38, 0x0C, 0x18, 0x18, 0x0C, 0x18, 0x0C, 0x0C, 0x18, 0x0E, + 0x0C, 0x18, 0x06, 0x0C, 0x18, 0x03, 0x0C, 0x18, 0x03, 0x0C, 0x18, 0x01, + 0x8C, 0x18, 0x01, 0xCC, 0x18, 0x00, 0xCC, 0x18, 0x00, 0x6C, 0x18, 0x00, + 0x7C, 0x18, 0x00, 0x3C, 0x7F, 0x80, 0x1C, 0x7F, 0x80, 0x1C, 0x00, 0x7E, + 0x00, 0x01, 0xFF, 0xC0, 0x07, 0x81, 0xE0, 0x0E, 0x00, 0x70, 0x1C, 0x00, + 0x38, 0x38, 0x00, 0x1C, 0x30, 0x00, 0x0C, 0x70, 0x00, 0x0E, 0x60, 0x00, + 0x06, 0x60, 0x00, 0x06, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, + 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, + 0x03, 0xC0, 0x00, 0x03, 0x60, 0x00, 0x06, 0x60, 0x00, 0x06, 0x70, 0x00, + 0x0E, 0x30, 0x00, 0x0C, 0x38, 0x00, 0x1C, 0x1C, 0x00, 0x38, 0x0E, 0x00, + 0x70, 0x07, 0x81, 0xE0, 0x03, 0xFF, 0xC0, 0x00, 0x7E, 0x00, 0xFF, 0xFF, + 0x07, 0xFF, 0xFE, 0x06, 0x00, 0x78, 0x30, 0x00, 0xE1, 0x80, 0x03, 0x0C, + 0x00, 0x0C, 0x60, 0x00, 0x63, 0x00, 0x03, 0x18, 0x00, 0x18, 0xC0, 0x01, + 0xC6, 0x00, 0x0C, 0x30, 0x00, 0xC1, 0x80, 0x1E, 0x0F, 0xFF, 0xC0, 0x7F, + 0xF8, 0x03, 0x00, 0x00, 0x18, 0x00, 0x00, 0xC0, 0x00, 0x06, 0x00, 0x00, + 0x30, 0x00, 0x01, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x60, 0x00, 0x03, 0x00, + 0x00, 0xFF, 0xF0, 0x07, 0xFF, 0x80, 0x00, 0x00, 0x7E, 0x00, 0x01, 0xFF, + 0x80, 0x07, 0x81, 0xE0, 0x0E, 0x00, 0x70, 0x1C, 0x00, 0x38, 0x38, 0x00, + 0x1C, 0x30, 0x00, 0x0C, 0x70, 0x00, 0x0E, 0x60, 0x00, 0x06, 0x60, 0x00, + 0x06, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, + 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, + 0x03, 0x60, 0x00, 0x06, 0x60, 0x00, 0x06, 0x70, 0x00, 0x0E, 0x30, 0x00, + 0x0C, 0x18, 0x00, 0x1C, 0x0C, 0x00, 0x38, 0x06, 0x00, 0x70, 0x03, 0x81, + 0xE0, 0x00, 0xFF, 0xC0, 0x00, 0x7E, 0x00, 0x00, 0xE0, 0x00, 0x03, 0xFF, + 0x87, 0x07, 0xFF, 0xFE, 0x07, 0x00, 0xF8, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, + 0x80, 0x18, 0x03, 0xC0, 0x18, 0x00, 0xE0, 0x18, 0x00, 0x60, 0x18, 0x00, + 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, + 0x70, 0x18, 0x00, 0x60, 0x18, 0x01, 0xC0, 0x18, 0x07, 0x80, 0x1F, 0xFF, + 0x00, 0x1F, 0xFC, 0x00, 0x18, 0x0E, 0x00, 0x18, 0x07, 0x00, 0x18, 0x03, + 0x80, 0x18, 0x01, 0xC0, 0x18, 0x00, 0xE0, 0x18, 0x00, 0x60, 0x18, 0x00, + 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, 0x18, 0xFF, 0x80, 0x1F, 0xFF, 0x80, + 0x0F, 0x03, 0xF8, 0x00, 0xFF, 0xE6, 0x1E, 0x07, 0xE3, 0x80, 0x1E, 0x30, + 0x00, 0xE6, 0x00, 0x06, 0x60, 0x00, 0x66, 0x00, 0x06, 0x60, 0x00, 0x07, + 0x00, 0x00, 0x30, 0x00, 0x01, 0xC0, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0xC0, + 0x00, 0x3F, 0x80, 0x00, 0x1C, 0x00, 0x00, 0xE0, 0x00, 0x07, 0x00, 0x00, + 0x30, 0x00, 0x03, 0xC0, 0x00, 0x3C, 0x00, 0x03, 0xE0, 0x00, 0x7E, 0x00, + 0x06, 0xF8, 0x01, 0xED, 0xE0, 0x7C, 0xCF, 0xFF, 0x00, 0x3F, 0xC0, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x03, 0x00, 0xF0, 0x0C, 0x03, 0xC0, 0x30, + 0x0F, 0x00, 0xC0, 0x3C, 0x03, 0x00, 0xC0, 0x0C, 0x00, 0x00, 0x30, 0x00, + 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, + 0xC0, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, + 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, + 0x03, 0x00, 0x00, 0x0C, 0x00, 0x0F, 0xFF, 0xC0, 0x3F, 0xFF, 0x00, 0xFF, + 0x01, 0xFF, 0xFE, 0x03, 0xFC, 0xC0, 0x00, 0x61, 0x80, 0x00, 0xC3, 0x00, + 0x01, 0x86, 0x00, 0x03, 0x0C, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x30, 0x00, + 0x18, 0x60, 0x00, 0x30, 0xC0, 0x00, 0x61, 0x80, 0x00, 0xC3, 0x00, 0x01, + 0x86, 0x00, 0x03, 0x0C, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x30, 0x00, 0x18, + 0x60, 0x00, 0x30, 0xC0, 0x00, 0x61, 0x80, 0x00, 0xC3, 0x80, 0x03, 0x83, + 0x00, 0x06, 0x07, 0x00, 0x1C, 0x07, 0x00, 0x70, 0x07, 0x83, 0xC0, 0x07, + 0xFF, 0x00, 0x03, 0xF8, 0x00, 0x7F, 0xC0, 0x3F, 0xF7, 0xFC, 0x03, 0xFF, + 0x18, 0x00, 0x01, 0x80, 0xC0, 0x00, 0x30, 0x0C, 0x00, 0x03, 0x00, 0x60, + 0x00, 0x30, 0x06, 0x00, 0x06, 0x00, 0x60, 0x00, 0x60, 0x03, 0x00, 0x0C, + 0x00, 0x30, 0x00, 0xC0, 0x03, 0x80, 0x0C, 0x00, 0x18, 0x01, 0x80, 0x01, + 0x80, 0x18, 0x00, 0x0C, 0x03, 0x00, 0x00, 0xC0, 0x30, 0x00, 0x0E, 0x03, + 0x00, 0x00, 0x60, 0x60, 0x00, 0x06, 0x06, 0x00, 0x00, 0x30, 0xC0, 0x00, + 0x03, 0x0C, 0x00, 0x00, 0x30, 0x80, 0x00, 0x01, 0x98, 0x00, 0x00, 0x19, + 0x80, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0xE0, 0x00, + 0xFF, 0x80, 0x7F, 0xFF, 0xE0, 0x1F, 0xF3, 0x00, 0x00, 0x30, 0xC0, 0x00, + 0x0C, 0x30, 0x00, 0x03, 0x0C, 0x03, 0x80, 0xC3, 0x01, 0xE0, 0x30, 0x60, + 0x78, 0x0C, 0x18, 0x1F, 0x02, 0x06, 0x04, 0xC0, 0x81, 0x83, 0x30, 0x60, + 0x60, 0xCC, 0x18, 0x18, 0x31, 0x86, 0x06, 0x18, 0x61, 0x81, 0x86, 0x18, + 0x60, 0x71, 0x87, 0x18, 0x0C, 0x40, 0xC6, 0x03, 0x30, 0x31, 0x00, 0xCC, + 0x0C, 0xC0, 0x33, 0x01, 0xB0, 0x0D, 0x80, 0x6C, 0x03, 0x60, 0x1B, 0x00, + 0xD8, 0x06, 0xC0, 0x34, 0x00, 0xF0, 0x07, 0x00, 0x3C, 0x01, 0xC0, 0x0E, + 0x00, 0x7F, 0x00, 0xFF, 0x7F, 0x00, 0xFF, 0x18, 0x00, 0x18, 0x0C, 0x00, + 0x38, 0x0E, 0x00, 0x70, 0x07, 0x00, 0x60, 0x03, 0x00, 0xC0, 0x01, 0x81, + 0x80, 0x01, 0xC3, 0x80, 0x00, 0xE7, 0x00, 0x00, 0x76, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0x18, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x66, + 0x00, 0x00, 0xC3, 0x00, 0x01, 0x81, 0x80, 0x03, 0x81, 0xC0, 0x07, 0x00, + 0xE0, 0x06, 0x00, 0x60, 0x0C, 0x00, 0x30, 0x18, 0x00, 0x18, 0x38, 0x00, + 0x1C, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, + 0xFF, 0x18, 0x00, 0x18, 0x0C, 0x00, 0x30, 0x0E, 0x00, 0x70, 0x06, 0x00, + 0x60, 0x03, 0x00, 0xC0, 0x03, 0x81, 0xC0, 0x01, 0x81, 0x80, 0x00, 0xC3, + 0x00, 0x00, 0xE7, 0x00, 0x00, 0x66, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, + 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, + 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x07, 0xFF, 0xE0, 0x07, 0xFF, + 0xE0, 0x7F, 0xFF, 0x9F, 0xFF, 0xE6, 0x00, 0x19, 0x80, 0x0C, 0x60, 0x07, + 0x18, 0x03, 0x86, 0x00, 0xC1, 0x80, 0x70, 0x00, 0x38, 0x00, 0x0C, 0x00, + 0x07, 0x00, 0x03, 0x80, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x38, 0x00, 0x1C, + 0x00, 0x06, 0x00, 0x03, 0x80, 0x31, 0xC0, 0x0C, 0x60, 0x03, 0x30, 0x00, + 0xDC, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, + 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, + 0x0C, 0x18, 0x30, 0x60, 0xFF, 0xFC, 0xC0, 0x00, 0x30, 0x00, 0x06, 0x00, + 0x01, 0x80, 0x00, 0x30, 0x00, 0x0C, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, + 0x0C, 0x00, 0x03, 0x00, 0x00, 0x60, 0x00, 0x18, 0x00, 0x03, 0x00, 0x00, + 0xC0, 0x00, 0x18, 0x00, 0x06, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x06, + 0x00, 0x01, 0x80, 0x00, 0x30, 0x00, 0x0C, 0x00, 0x03, 0x80, 0x00, 0x60, + 0x00, 0x1C, 0x00, 0x03, 0x00, 0x00, 0xE0, 0x00, 0x18, 0x00, 0x07, 0x00, + 0x00, 0xC0, 0x00, 0x30, 0x00, 0x06, 0x00, 0x01, 0x80, 0x00, 0x30, 0x00, + 0x0C, 0xFF, 0xFC, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, + 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, + 0x18, 0x30, 0x60, 0xC1, 0x83, 0xFF, 0xFC, 0x00, 0x40, 0x00, 0x30, 0x00, + 0x1E, 0x00, 0x0E, 0xC0, 0x07, 0x38, 0x01, 0x87, 0x00, 0xC0, 0xC0, 0x60, + 0x18, 0x38, 0x03, 0x1C, 0x00, 0xE6, 0x00, 0x1F, 0x00, 0x03, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xE0, 0x70, 0x3C, 0x0E, 0x07, 0x03, + 0x01, 0xFC, 0x00, 0x7F, 0xFC, 0x01, 0xC0, 0x3C, 0x00, 0x00, 0x30, 0x00, + 0x00, 0x60, 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0x18, 0x00, 0x00, + 0x60, 0x0F, 0xF9, 0x81, 0xFF, 0xFE, 0x0F, 0x80, 0x38, 0x70, 0x00, 0x63, + 0x80, 0x01, 0x8C, 0x00, 0x06, 0x30, 0x00, 0x18, 0xC0, 0x00, 0xE3, 0x00, + 0x07, 0x86, 0x00, 0x76, 0x1E, 0x07, 0x9F, 0x3F, 0xF8, 0x7C, 0x3F, 0x80, + 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, + 0x01, 0x80, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x1F, 0x80, + 0x18, 0xFF, 0xC0, 0x33, 0x81, 0xC0, 0x6E, 0x01, 0xC0, 0xF0, 0x00, 0xC1, + 0xE0, 0x01, 0xC3, 0x80, 0x01, 0x87, 0x00, 0x03, 0x8C, 0x00, 0x03, 0x18, + 0x00, 0x06, 0x30, 0x00, 0x0C, 0x60, 0x00, 0x18, 0xC0, 0x00, 0x31, 0x80, + 0x00, 0x63, 0x80, 0x01, 0x87, 0x00, 0x03, 0x0F, 0x00, 0x0E, 0x1F, 0x00, + 0x38, 0x37, 0x00, 0xE3, 0xE7, 0x03, 0x87, 0xC7, 0xFE, 0x00, 0x03, 0xF0, + 0x00, 0x01, 0xFC, 0x00, 0x3F, 0xF9, 0x83, 0xC0, 0xFC, 0x38, 0x01, 0xE3, + 0x00, 0x07, 0x38, 0x00, 0x19, 0x80, 0x00, 0xDC, 0x00, 0x06, 0xC0, 0x00, + 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x60, + 0x00, 0x03, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x70, 0x00, 0x01, 0x80, 0x00, + 0xC7, 0x00, 0x1E, 0x1E, 0x03, 0xC0, 0x7F, 0xFC, 0x00, 0xFF, 0x00, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, + 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x01, 0xF8, 0x18, 0x07, + 0xFE, 0x18, 0x0F, 0x07, 0x98, 0x1C, 0x01, 0xD8, 0x38, 0x00, 0xF8, 0x70, + 0x00, 0x78, 0x60, 0x00, 0x38, 0xE0, 0x00, 0x38, 0xC0, 0x00, 0x18, 0xC0, + 0x00, 0x18, 0xC0, 0x00, 0x18, 0xC0, 0x00, 0x18, 0xC0, 0x00, 0x18, 0xC0, + 0x00, 0x18, 0x60, 0x00, 0x38, 0x60, 0x00, 0x38, 0x70, 0x00, 0x78, 0x38, + 0x00, 0xD8, 0x1C, 0x01, 0xD8, 0x0F, 0x07, 0x9F, 0x07, 0xFE, 0x1F, 0x01, + 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x3F, 0xF8, 0x07, 0x80, 0xF0, 0x70, 0x01, + 0xC3, 0x00, 0x07, 0x30, 0x00, 0x19, 0x80, 0x00, 0x78, 0x00, 0x03, 0xC0, + 0x00, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x0C, 0x00, 0x00, + 0x60, 0x00, 0x01, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, 0x01, 0xC0, + 0x00, 0xC7, 0x00, 0x0E, 0x1E, 0x03, 0xE0, 0x3F, 0xFC, 0x00, 0x7F, 0x00, + 0x00, 0x7F, 0xC0, 0x3F, 0xFC, 0x0E, 0x00, 0x03, 0x80, 0x00, 0x60, 0x00, + 0x0C, 0x00, 0x01, 0x80, 0x00, 0x30, 0x00, 0xFF, 0xFF, 0x9F, 0xFF, 0xF0, + 0x18, 0x00, 0x03, 0x00, 0x00, 0x60, 0x00, 0x0C, 0x00, 0x01, 0x80, 0x00, + 0x30, 0x00, 0x06, 0x00, 0x00, 0xC0, 0x00, 0x18, 0x00, 0x03, 0x00, 0x00, + 0x60, 0x00, 0x0C, 0x00, 0x01, 0x80, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, + 0xC0, 0x03, 0xFF, 0xFC, 0x7F, 0xFF, 0x80, 0x01, 0xF8, 0x00, 0x0F, 0xFC, + 0x7C, 0x38, 0x1C, 0xF8, 0xE0, 0x0D, 0x83, 0x00, 0x0F, 0x0E, 0x00, 0x1E, + 0x18, 0x00, 0x1C, 0x70, 0x00, 0x38, 0xC0, 0x00, 0x31, 0x80, 0x00, 0x63, + 0x00, 0x00, 0xC6, 0x00, 0x01, 0x8C, 0x00, 0x03, 0x18, 0x00, 0x06, 0x18, + 0x00, 0x1C, 0x30, 0x00, 0x38, 0x30, 0x00, 0xF0, 0x70, 0x03, 0x60, 0x78, + 0x1C, 0xC0, 0x3F, 0xF1, 0x80, 0x1F, 0x83, 0x00, 0x00, 0x06, 0x00, 0x00, + 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x03, + 0x80, 0x00, 0x0E, 0x00, 0x3F, 0xF8, 0x00, 0x7F, 0xC0, 0x00, 0xF8, 0x00, + 0x01, 0xF0, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, + 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x3F, 0x00, 0x18, 0xFF, 0x80, + 0x37, 0x03, 0x80, 0x7C, 0x03, 0x80, 0xF0, 0x03, 0x81, 0xC0, 0x03, 0x03, + 0x00, 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x18, 0x00, 0x30, 0x30, + 0x00, 0x60, 0x60, 0x00, 0xC0, 0xC0, 0x01, 0x81, 0x80, 0x03, 0x03, 0x00, + 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x18, 0x00, 0x30, 0x30, 0x00, + 0x63, 0xFC, 0x07, 0xFF, 0xF8, 0x0F, 0xF0, 0x01, 0xC0, 0x00, 0x70, 0x00, + 0x1C, 0x00, 0x07, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0F, 0xF0, 0x03, 0xFC, 0x00, 0x03, 0x00, 0x00, 0xC0, + 0x00, 0x30, 0x00, 0x0C, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, + 0x0C, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x0C, 0x00, 0x03, + 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x0C, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, + 0xC0, 0x00, 0x70, 0x01, 0xC0, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xC0, 0x03, 0x00, 0x0C, + 0x00, 0x30, 0x00, 0xC0, 0x03, 0x00, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x03, + 0x00, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x03, 0x00, 0x0C, 0x00, 0x30, 0x00, + 0xC0, 0x03, 0x00, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x03, 0x00, 0x0C, 0x00, + 0x70, 0x03, 0x80, 0x1C, 0xFF, 0xE3, 0xFF, 0x00, 0xF8, 0x00, 0x03, 0xE0, + 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0x18, 0x00, 0x00, 0x60, 0x00, + 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0x18, 0x1F, 0xE0, 0x60, 0x7F, 0x81, + 0x80, 0x60, 0x06, 0x07, 0x00, 0x18, 0x38, 0x00, 0x61, 0xC0, 0x01, 0x8E, + 0x00, 0x06, 0x70, 0x00, 0x1B, 0x80, 0x00, 0x7F, 0x00, 0x01, 0xCE, 0x00, + 0x06, 0x1C, 0x00, 0x18, 0x38, 0x00, 0x60, 0x70, 0x01, 0x80, 0xE0, 0x06, + 0x01, 0xC0, 0x18, 0x03, 0x80, 0x60, 0x07, 0x0F, 0x80, 0x7F, 0xFE, 0x01, + 0xFF, 0x3F, 0xC0, 0x0F, 0xF0, 0x00, 0x0C, 0x00, 0x03, 0x00, 0x00, 0xC0, + 0x00, 0x30, 0x00, 0x0C, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, + 0x0C, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x0C, 0x00, 0x03, + 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x0C, 0x00, 0x03, 0x00, 0x00, 0xC0, + 0x00, 0x30, 0x00, 0x0C, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x0F, + 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xF0, 0x3C, 0x0F, 0x9F, 0x87, 0xE0, 0xFB, + 0x1C, 0xC7, 0x01, 0xE0, 0xD8, 0x38, 0x1C, 0x07, 0x01, 0x81, 0x80, 0x60, + 0x18, 0x18, 0x06, 0x01, 0x81, 0x80, 0x60, 0x18, 0x18, 0x06, 0x01, 0x81, + 0x80, 0x60, 0x18, 0x18, 0x06, 0x01, 0x81, 0x80, 0x60, 0x18, 0x18, 0x06, + 0x01, 0x81, 0x80, 0x60, 0x18, 0x18, 0x06, 0x01, 0x81, 0x80, 0x60, 0x18, + 0x18, 0x06, 0x01, 0x81, 0x80, 0x60, 0x18, 0x18, 0x06, 0x01, 0x8F, 0xE0, + 0x7C, 0x1F, 0xFE, 0x07, 0xC1, 0xF0, 0x00, 0x1F, 0x00, 0xF8, 0xFF, 0x81, + 0xF3, 0x83, 0x80, 0x6C, 0x03, 0x80, 0xF0, 0x03, 0x81, 0xC0, 0x03, 0x03, + 0x00, 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x18, 0x00, 0x30, 0x30, + 0x00, 0x60, 0x60, 0x00, 0xC0, 0xC0, 0x01, 0x81, 0x80, 0x03, 0x03, 0x00, + 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x18, 0x00, 0x30, 0x30, 0x00, + 0x67, 0xFC, 0x03, 0xFF, 0xF8, 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0xFE, + 0x00, 0xF0, 0x3C, 0x07, 0x00, 0x38, 0x38, 0x00, 0x71, 0xC0, 0x00, 0xE6, + 0x00, 0x01, 0x98, 0x00, 0x06, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, + 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x36, 0x00, 0x01, + 0x98, 0x00, 0x06, 0x70, 0x00, 0x38, 0xE0, 0x01, 0xC1, 0xC0, 0x0E, 0x03, + 0xC0, 0xF0, 0x07, 0xFF, 0x80, 0x03, 0xF0, 0x00, 0x00, 0x3F, 0x01, 0xF1, + 0xFF, 0x83, 0xE7, 0x03, 0x80, 0xD8, 0x01, 0x81, 0xE0, 0x01, 0x83, 0xC0, + 0x03, 0x87, 0x00, 0x03, 0x0E, 0x00, 0x07, 0x18, 0x00, 0x06, 0x30, 0x00, + 0x0C, 0x60, 0x00, 0x18, 0xC0, 0x00, 0x31, 0x80, 0x00, 0x63, 0x00, 0x00, + 0xC7, 0x00, 0x03, 0x0E, 0x00, 0x06, 0x1E, 0x00, 0x18, 0x36, 0x00, 0x70, + 0x67, 0x03, 0xC0, 0xC7, 0xFE, 0x01, 0x83, 0xF0, 0x03, 0x00, 0x00, 0x06, + 0x00, 0x00, 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, + 0x00, 0x00, 0xC0, 0x00, 0x0F, 0xFC, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x01, + 0xF8, 0x00, 0x07, 0xFF, 0x1F, 0x0F, 0x07, 0x9F, 0x1C, 0x01, 0xD8, 0x38, + 0x00, 0x78, 0x70, 0x00, 0x78, 0x60, 0x00, 0x38, 0xE0, 0x00, 0x38, 0xC0, + 0x00, 0x18, 0xC0, 0x00, 0x18, 0xC0, 0x00, 0x18, 0xC0, 0x00, 0x18, 0xC0, + 0x00, 0x18, 0xC0, 0x00, 0x18, 0x60, 0x00, 0x38, 0x70, 0x00, 0x78, 0x30, + 0x00, 0x78, 0x1C, 0x01, 0xD8, 0x0F, 0x07, 0x98, 0x07, 0xFF, 0x18, 0x01, + 0xFC, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, + 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, + 0x03, 0xFF, 0x00, 0x03, 0xFF, 0x7E, 0x03, 0xC3, 0xF0, 0x7F, 0x81, 0x8F, + 0x0E, 0x0C, 0xE0, 0x00, 0x7E, 0x00, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x00, + 0xC0, 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, 0x80, 0x00, 0x0C, 0x00, + 0x00, 0x60, 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, 0x00, 0xC0, 0x00, 0x06, + 0x00, 0x00, 0x30, 0x00, 0x3F, 0xFF, 0xC1, 0xFF, 0xFE, 0x00, 0x07, 0xF0, + 0x07, 0xFF, 0x63, 0xC0, 0xF9, 0xC0, 0x0E, 0x60, 0x01, 0x98, 0x00, 0x66, + 0x00, 0x19, 0xC0, 0x00, 0x38, 0x00, 0x07, 0xC0, 0x00, 0x7F, 0xC0, 0x00, + 0x7C, 0x00, 0x03, 0x80, 0x00, 0x70, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, + 0xF8, 0x00, 0x7F, 0x00, 0x3B, 0xF0, 0x3C, 0xDF, 0xFE, 0x00, 0xFE, 0x00, + 0x0C, 0x00, 0x00, 0x60, 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, 0x00, 0xC0, + 0x00, 0x06, 0x00, 0x03, 0xFF, 0xFE, 0x1F, 0xFF, 0xF0, 0x0C, 0x00, 0x00, + 0x60, 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, 0x00, 0xC0, 0x00, 0x06, 0x00, + 0x00, 0x30, 0x00, 0x01, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x60, 0x00, 0x03, + 0x00, 0x00, 0x18, 0x00, 0x00, 0xC0, 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, + 0x00, 0xC0, 0x07, 0x07, 0x01, 0xF0, 0x1F, 0xFF, 0x00, 0x3F, 0x80, 0xF8, + 0x03, 0xF1, 0xF0, 0x07, 0xE0, 0x60, 0x00, 0xC0, 0xC0, 0x01, 0x81, 0x80, + 0x03, 0x03, 0x00, 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x18, 0x00, + 0x30, 0x30, 0x00, 0x60, 0x60, 0x00, 0xC0, 0xC0, 0x01, 0x81, 0x80, 0x03, + 0x03, 0x00, 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x38, 0x18, 0x00, 0xF0, + 0x18, 0x03, 0x60, 0x38, 0x3C, 0xF8, 0x3F, 0xF1, 0xF0, 0x1F, 0x00, 0x00, + 0x7F, 0xC0, 0xFF, 0xDF, 0xF0, 0x3F, 0xF0, 0xC0, 0x00, 0xC0, 0x30, 0x00, + 0x30, 0x06, 0x00, 0x1C, 0x01, 0x80, 0x06, 0x00, 0x30, 0x01, 0x80, 0x0C, + 0x00, 0xC0, 0x03, 0x80, 0x30, 0x00, 0x60, 0x18, 0x00, 0x18, 0x06, 0x00, + 0x03, 0x03, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x18, 0x30, 0x00, 0x06, 0x18, + 0x00, 0x00, 0xC6, 0x00, 0x00, 0x33, 0x00, 0x00, 0x0E, 0xC0, 0x00, 0x01, + 0xE0, 0x00, 0x00, 0x78, 0x00, 0x7F, 0x00, 0x3F, 0xDF, 0xC0, 0x0F, 0xF1, + 0x80, 0x00, 0x20, 0x60, 0x00, 0x18, 0x18, 0x00, 0x06, 0x06, 0x03, 0x01, + 0x80, 0x81, 0xE0, 0x60, 0x30, 0x78, 0x10, 0x0C, 0x1E, 0x0C, 0x03, 0x0C, + 0xC3, 0x00, 0xC3, 0x30, 0xC0, 0x10, 0xCC, 0x30, 0x06, 0x61, 0x98, 0x01, + 0x98, 0x66, 0x00, 0x66, 0x19, 0x80, 0x0B, 0x03, 0x60, 0x03, 0xC0, 0xD0, + 0x00, 0xF0, 0x1C, 0x00, 0x38, 0x07, 0x00, 0x0E, 0x01, 0xC0, 0x3F, 0x81, + 0xFE, 0x3F, 0x81, 0xFE, 0x0C, 0x00, 0x38, 0x06, 0x00, 0x70, 0x03, 0x00, + 0xE0, 0x01, 0x81, 0xC0, 0x00, 0xC3, 0x80, 0x00, 0x67, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0x18, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x67, 0x00, 0x00, 0xC3, + 0x80, 0x01, 0x81, 0xC0, 0x03, 0x00, 0xE0, 0x06, 0x00, 0x70, 0x0C, 0x00, + 0x38, 0x18, 0x00, 0x1C, 0x7F, 0x81, 0xFF, 0x7F, 0x81, 0xFF, 0x7F, 0x00, + 0xFF, 0x7F, 0x00, 0xFF, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x18, 0x0C, 0x00, + 0x18, 0x0C, 0x00, 0x30, 0x06, 0x00, 0x30, 0x06, 0x00, 0x60, 0x03, 0x00, + 0x60, 0x03, 0x00, 0xC0, 0x01, 0x80, 0xC0, 0x01, 0x81, 0x80, 0x00, 0xC1, + 0x80, 0x00, 0xC3, 0x00, 0x00, 0x63, 0x00, 0x00, 0x66, 0x00, 0x00, 0x36, + 0x00, 0x00, 0x34, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, + 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, + 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x7F, 0xFC, 0x00, 0x7F, 0xFC, + 0x00, 0xFF, 0xFF, 0x7F, 0xFF, 0xB0, 0x01, 0x98, 0x01, 0xCC, 0x01, 0xC0, + 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xE0, + 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x03, 0x70, + 0x01, 0xB0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0xE0, 0x7C, 0x0C, + 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x03, + 0x00, 0x60, 0x0C, 0x03, 0x00, 0xE0, 0xF0, 0x1E, 0x00, 0x70, 0x06, 0x00, + 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, + 0x0C, 0x01, 0x80, 0x18, 0x03, 0xE0, 0x1C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xF0, 0xE0, 0x1F, 0x00, 0x60, 0x06, 0x00, 0xC0, 0x18, + 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x01, + 0x80, 0x38, 0x01, 0xE0, 0x3C, 0x1C, 0x03, 0x00, 0xC0, 0x18, 0x03, 0x00, + 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0xC0, + 0xF8, 0x1C, 0x00, 0x0F, 0x00, 0x03, 0xFC, 0x03, 0x70, 0xE0, 0x76, 0x07, + 0x8E, 0xC0, 0x1F, 0xC0, 0x00, 0xF0}; + +const GFXglyph FreeMono24pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 28, 0, 1}, // 0x20 ' ' + {0, 5, 30, 28, 11, -28}, // 0x21 '!' + {19, 16, 14, 28, 6, -28}, // 0x22 '"' + {47, 19, 32, 28, 4, -29}, // 0x23 '#' + {123, 18, 33, 28, 5, -29}, // 0x24 '$' + {198, 20, 29, 28, 4, -27}, // 0x25 '%' + {271, 18, 25, 28, 5, -23}, // 0x26 '&' + {328, 7, 14, 28, 11, -28}, // 0x27 ''' + {341, 7, 34, 28, 14, -27}, // 0x28 '(' + {371, 7, 34, 28, 8, -27}, // 0x29 ')' + {401, 18, 16, 28, 5, -27}, // 0x2A '*' + {437, 20, 22, 28, 4, -23}, // 0x2B '+' + {492, 9, 14, 28, 6, -6}, // 0x2C ',' + {508, 22, 2, 28, 3, -13}, // 0x2D '-' + {514, 7, 6, 28, 11, -4}, // 0x2E '.' + {520, 18, 35, 28, 5, -30}, // 0x2F '/' + {599, 18, 30, 28, 5, -28}, // 0x30 '0' + {667, 16, 29, 28, 6, -28}, // 0x31 '1' + {725, 18, 29, 28, 5, -28}, // 0x32 '2' + {791, 19, 30, 28, 5, -28}, // 0x33 '3' + {863, 16, 28, 28, 6, -27}, // 0x34 '4' + {919, 19, 29, 28, 5, -27}, // 0x35 '5' + {988, 18, 30, 28, 6, -28}, // 0x36 '6' + {1056, 18, 28, 28, 5, -27}, // 0x37 '7' + {1119, 18, 30, 28, 5, -28}, // 0x38 '8' + {1187, 18, 30, 28, 6, -28}, // 0x39 '9' + {1255, 7, 21, 28, 11, -19}, // 0x3A ':' + {1274, 10, 27, 28, 7, -19}, // 0x3B ';' + {1308, 22, 22, 28, 3, -23}, // 0x3C '<' + {1369, 24, 9, 28, 2, -17}, // 0x3D '=' + {1396, 21, 22, 28, 4, -23}, // 0x3E '>' + {1454, 17, 28, 28, 6, -26}, // 0x3F '?' + {1514, 18, 32, 28, 5, -28}, // 0x40 '@' + {1586, 28, 26, 28, 0, -25}, // 0x41 'A' + {1677, 22, 26, 28, 3, -25}, // 0x42 'B' + {1749, 22, 28, 28, 3, -26}, // 0x43 'C' + {1826, 22, 26, 28, 3, -25}, // 0x44 'D' + {1898, 22, 26, 28, 3, -25}, // 0x45 'E' + {1970, 22, 26, 28, 3, -25}, // 0x46 'F' + {2042, 23, 28, 28, 3, -26}, // 0x47 'G' + {2123, 23, 26, 28, 3, -25}, // 0x48 'H' + {2198, 16, 26, 28, 6, -25}, // 0x49 'I' + {2250, 23, 27, 28, 4, -25}, // 0x4A 'J' + {2328, 24, 26, 28, 3, -25}, // 0x4B 'K' + {2406, 21, 26, 28, 4, -25}, // 0x4C 'L' + {2475, 26, 26, 28, 1, -25}, // 0x4D 'M' + {2560, 24, 26, 28, 2, -25}, // 0x4E 'N' + {2638, 24, 28, 28, 2, -26}, // 0x4F 'O' + {2722, 21, 26, 28, 3, -25}, // 0x50 'P' + {2791, 24, 32, 28, 2, -26}, // 0x51 'Q' + {2887, 24, 26, 28, 3, -25}, // 0x52 'R' + {2965, 20, 28, 28, 4, -26}, // 0x53 'S' + {3035, 22, 26, 28, 3, -25}, // 0x54 'T' + {3107, 23, 27, 28, 3, -25}, // 0x55 'U' + {3185, 28, 26, 28, 0, -25}, // 0x56 'V' + {3276, 26, 26, 28, 1, -25}, // 0x57 'W' + {3361, 24, 26, 28, 2, -25}, // 0x58 'X' + {3439, 24, 26, 28, 2, -25}, // 0x59 'Y' + {3517, 18, 26, 28, 5, -25}, // 0x5A 'Z' + {3576, 7, 34, 28, 13, -27}, // 0x5B '[' + {3606, 18, 35, 28, 5, -30}, // 0x5C '\' + {3685, 7, 34, 28, 8, -27}, // 0x5D ']' + {3715, 18, 12, 28, 5, -28}, // 0x5E '^' + {3742, 28, 2, 28, 0, 5}, // 0x5F '_' + {3749, 8, 7, 28, 7, -29}, // 0x60 '`' + {3756, 22, 22, 28, 3, -20}, // 0x61 'a' + {3817, 23, 29, 28, 2, -27}, // 0x62 'b' + {3901, 21, 22, 28, 4, -20}, // 0x63 'c' + {3959, 24, 29, 28, 3, -27}, // 0x64 'd' + {4046, 21, 22, 28, 3, -20}, // 0x65 'e' + {4104, 19, 28, 28, 6, -27}, // 0x66 'f' + {4171, 23, 30, 28, 3, -20}, // 0x67 'g' + {4258, 23, 28, 28, 3, -27}, // 0x68 'h' + {4339, 18, 29, 28, 5, -28}, // 0x69 'i' + {4405, 14, 38, 28, 6, -28}, // 0x6A 'j' + {4472, 22, 28, 28, 4, -27}, // 0x6B 'k' + {4549, 18, 28, 28, 5, -27}, // 0x6C 'l' + {4612, 28, 21, 28, 0, -20}, // 0x6D 'm' + {4686, 23, 21, 28, 2, -20}, // 0x6E 'n' + {4747, 22, 22, 28, 3, -20}, // 0x6F 'o' + {4808, 23, 30, 28, 2, -20}, // 0x70 'p' + {4895, 24, 30, 28, 3, -20}, // 0x71 'q' + {4985, 21, 20, 28, 5, -19}, // 0x72 'r' + {5038, 18, 22, 28, 5, -20}, // 0x73 's' + {5088, 21, 27, 28, 3, -25}, // 0x74 't' + {5159, 23, 21, 28, 3, -19}, // 0x75 'u' + {5220, 26, 20, 28, 1, -19}, // 0x76 'v' + {5285, 26, 20, 28, 1, -19}, // 0x77 'w' + {5350, 24, 20, 28, 2, -19}, // 0x78 'x' + {5410, 24, 29, 28, 2, -19}, // 0x79 'y' + {5497, 17, 20, 28, 6, -19}, // 0x7A 'z' + {5540, 11, 34, 28, 8, -27}, // 0x7B '{' + {5587, 2, 34, 28, 13, -27}, // 0x7C '|' + {5596, 11, 34, 28, 9, -27}, // 0x7D '}' + {5643, 20, 6, 28, 4, -15}}; // 0x7E '~' + +const GFXfont FreeMono24pt7b PROGMEM = {(uint8_t *)FreeMono24pt7bBitmaps, + (GFXglyph *)FreeMono24pt7bGlyphs, 0x20, + 0x7E, 47}; + +// Approx. 6330 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMono9pt7b.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMono9pt7b.h new file mode 100644 index 0000000..a2e9a00 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMono9pt7b.h @@ -0,0 +1,178 @@ +#pragma once +#include + +const uint8_t FreeMono9pt7bBitmaps[] PROGMEM = { + 0xAA, 0xA8, 0x0C, 0xED, 0x24, 0x92, 0x48, 0x24, 0x48, 0x91, 0x2F, 0xE4, + 0x89, 0x7F, 0x28, 0x51, 0x22, 0x40, 0x08, 0x3E, 0x62, 0x40, 0x30, 0x0E, + 0x01, 0x81, 0xC3, 0xBE, 0x08, 0x08, 0x71, 0x12, 0x23, 0x80, 0x23, 0xB8, + 0x0E, 0x22, 0x44, 0x70, 0x38, 0x81, 0x02, 0x06, 0x1A, 0x65, 0x46, 0xC8, + 0xEC, 0xE9, 0x24, 0x5A, 0xAA, 0xA9, 0x40, 0xA9, 0x55, 0x5A, 0x80, 0x10, + 0x22, 0x4B, 0xE3, 0x05, 0x11, 0x00, 0x10, 0x20, 0x47, 0xF1, 0x02, 0x04, + 0x00, 0x6B, 0x48, 0xFF, 0x00, 0xF0, 0x02, 0x08, 0x10, 0x60, 0x81, 0x04, + 0x08, 0x20, 0x41, 0x02, 0x08, 0x00, 0x38, 0x8A, 0x0C, 0x18, 0x30, 0x60, + 0xC1, 0x82, 0x88, 0xE0, 0x27, 0x28, 0x42, 0x10, 0x84, 0x21, 0x3E, 0x38, + 0x8A, 0x08, 0x10, 0x20, 0x82, 0x08, 0x61, 0x03, 0xF8, 0x7C, 0x06, 0x02, + 0x02, 0x1C, 0x06, 0x01, 0x01, 0x01, 0x42, 0x3C, 0x18, 0xA2, 0x92, 0x8A, + 0x28, 0xBF, 0x08, 0x21, 0xC0, 0x7C, 0x81, 0x03, 0xE4, 0x40, 0x40, 0x81, + 0x03, 0x88, 0xE0, 0x1E, 0x41, 0x04, 0x0B, 0x98, 0xB0, 0xC1, 0xC2, 0x88, + 0xE0, 0xFE, 0x04, 0x08, 0x20, 0x40, 0x82, 0x04, 0x08, 0x20, 0x40, 0x38, + 0x8A, 0x0C, 0x14, 0x47, 0x11, 0x41, 0x83, 0x8C, 0xE0, 0x38, 0x8A, 0x1C, + 0x18, 0x68, 0xCE, 0x81, 0x04, 0x13, 0xC0, 0xF0, 0x0F, 0x6C, 0x00, 0xD2, + 0xD2, 0x00, 0x03, 0x04, 0x18, 0x60, 0x60, 0x18, 0x04, 0x03, 0xFF, 0x80, + 0x00, 0x1F, 0xF0, 0x40, 0x18, 0x03, 0x00, 0x60, 0x20, 0x60, 0xC0, 0x80, + 0x3D, 0x84, 0x08, 0x30, 0xC2, 0x00, 0x00, 0x00, 0x30, 0x3C, 0x46, 0x82, + 0x8E, 0xB2, 0xA2, 0xA2, 0x9F, 0x80, 0x80, 0x40, 0x3C, 0x3C, 0x01, 0x40, + 0x28, 0x09, 0x01, 0x10, 0x42, 0x0F, 0xC1, 0x04, 0x40, 0x9E, 0x3C, 0xFE, + 0x21, 0x90, 0x48, 0x67, 0xE2, 0x09, 0x02, 0x81, 0x41, 0xFF, 0x80, 0x3E, + 0xB0, 0xF0, 0x30, 0x08, 0x04, 0x02, 0x00, 0x80, 0x60, 0x8F, 0x80, 0xFE, + 0x21, 0x90, 0x68, 0x14, 0x0A, 0x05, 0x02, 0x83, 0x43, 0x7F, 0x00, 0xFF, + 0x20, 0x90, 0x08, 0x87, 0xC2, 0x21, 0x00, 0x81, 0x40, 0xFF, 0xC0, 0xFF, + 0xA0, 0x50, 0x08, 0x87, 0xC2, 0x21, 0x00, 0x80, 0x40, 0x78, 0x00, 0x1E, + 0x98, 0x6C, 0x0A, 0x00, 0x80, 0x20, 0xF8, 0x0B, 0x02, 0x60, 0x87, 0xC0, + 0xE3, 0xA0, 0x90, 0x48, 0x27, 0xF2, 0x09, 0x04, 0x82, 0x41, 0x71, 0xC0, + 0xF9, 0x08, 0x42, 0x10, 0x84, 0x27, 0xC0, 0x1F, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x82, 0x82, 0xC6, 0x78, 0xE3, 0xA1, 0x11, 0x09, 0x05, 0x83, 0x21, + 0x08, 0x84, 0x41, 0x70, 0xC0, 0xE0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x41, + 0x41, 0x41, 0xFF, 0xE0, 0xEC, 0x19, 0x45, 0x28, 0xA4, 0xA4, 0x94, 0x91, + 0x12, 0x02, 0x40, 0x5C, 0x1C, 0xC3, 0xB0, 0x94, 0x4A, 0x24, 0x92, 0x49, + 0x14, 0x8A, 0x43, 0x70, 0x80, 0x1E, 0x31, 0x90, 0x50, 0x18, 0x0C, 0x06, + 0x02, 0x82, 0x63, 0x0F, 0x00, 0xFE, 0x43, 0x41, 0x41, 0x42, 0x7C, 0x40, + 0x40, 0x40, 0xF0, 0x1C, 0x31, 0x90, 0x50, 0x18, 0x0C, 0x06, 0x02, 0x82, + 0x63, 0x1F, 0x04, 0x07, 0x92, 0x30, 0xFE, 0x21, 0x90, 0x48, 0x24, 0x23, + 0xE1, 0x10, 0x84, 0x41, 0x70, 0xC0, 0x3A, 0xCD, 0x0A, 0x03, 0x01, 0x80, + 0xC1, 0xC7, 0x78, 0xFF, 0xC4, 0x62, 0x21, 0x00, 0x80, 0x40, 0x20, 0x10, + 0x08, 0x1F, 0x00, 0xE3, 0xA0, 0x90, 0x48, 0x24, 0x12, 0x09, 0x04, 0x82, + 0x22, 0x0E, 0x00, 0xF1, 0xE8, 0x10, 0x82, 0x10, 0x42, 0x10, 0x22, 0x04, + 0x80, 0x50, 0x0C, 0x00, 0x80, 0xF1, 0xE8, 0x09, 0x11, 0x25, 0x44, 0xA8, + 0x55, 0x0C, 0xA1, 0x8C, 0x31, 0x84, 0x30, 0xE3, 0xA0, 0x88, 0x82, 0x80, + 0x80, 0xC0, 0x90, 0x44, 0x41, 0x71, 0xC0, 0xE3, 0xA0, 0x88, 0x82, 0x81, + 0x40, 0x40, 0x20, 0x10, 0x08, 0x1F, 0x00, 0xFD, 0x0A, 0x20, 0x81, 0x04, + 0x10, 0x21, 0x83, 0xFC, 0xEA, 0xAA, 0xAA, 0xC0, 0x80, 0x81, 0x03, 0x02, + 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0xD5, 0x55, 0x55, 0xC0, + 0x10, 0x51, 0x22, 0x28, 0x20, 0xFF, 0xE0, 0x88, 0x80, 0x7E, 0x00, 0x80, + 0x47, 0xEC, 0x14, 0x0A, 0x0C, 0xFB, 0xC0, 0x20, 0x10, 0x0B, 0xC6, 0x12, + 0x05, 0x02, 0x81, 0x40, 0xB0, 0xB7, 0x80, 0x3A, 0x8E, 0x0C, 0x08, 0x10, + 0x10, 0x9E, 0x03, 0x00, 0x80, 0x47, 0xA4, 0x34, 0x0A, 0x05, 0x02, 0x81, + 0x21, 0x8F, 0x60, 0x3C, 0x43, 0x81, 0xFF, 0x80, 0x80, 0x61, 0x3E, 0x3D, + 0x04, 0x3E, 0x41, 0x04, 0x10, 0x41, 0x0F, 0x80, 0x3D, 0xA1, 0xA0, 0x50, + 0x28, 0x14, 0x09, 0x0C, 0x7A, 0x01, 0x01, 0x87, 0x80, 0xC0, 0x20, 0x10, + 0x0B, 0xC6, 0x32, 0x09, 0x04, 0x82, 0x41, 0x20, 0xB8, 0xE0, 0x10, 0x01, + 0xC0, 0x81, 0x02, 0x04, 0x08, 0x11, 0xFC, 0x10, 0x3E, 0x10, 0x84, 0x21, + 0x08, 0x42, 0x3F, 0x00, 0xC0, 0x40, 0x40, 0x4F, 0x44, 0x58, 0x70, 0x48, + 0x44, 0x42, 0xC7, 0x70, 0x20, 0x40, 0x81, 0x02, 0x04, 0x08, 0x10, 0x23, + 0xF8, 0xB7, 0x64, 0x62, 0x31, 0x18, 0x8C, 0x46, 0x23, 0x91, 0x5E, 0x31, + 0x90, 0x48, 0x24, 0x12, 0x09, 0x05, 0xC7, 0x3E, 0x31, 0xA0, 0x30, 0x18, + 0x0C, 0x05, 0x8C, 0x7C, 0xDE, 0x30, 0x90, 0x28, 0x14, 0x0A, 0x05, 0x84, + 0xBC, 0x40, 0x20, 0x38, 0x00, 0x3D, 0xA1, 0xA0, 0x50, 0x28, 0x14, 0x09, + 0x0C, 0x7A, 0x01, 0x00, 0x80, 0xE0, 0xCE, 0xA1, 0x82, 0x04, 0x08, 0x10, + 0x7C, 0x3A, 0x8D, 0x0B, 0x80, 0xF0, 0x70, 0xDE, 0x40, 0x40, 0xFC, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x41, 0x3E, 0xC3, 0x41, 0x41, 0x41, 0x41, 0x41, + 0x43, 0x3D, 0xE3, 0xA0, 0x90, 0x84, 0x42, 0x20, 0xA0, 0x50, 0x10, 0xE3, + 0xC0, 0x92, 0x4B, 0x25, 0x92, 0xA9, 0x98, 0x44, 0xE3, 0x31, 0x05, 0x01, + 0x01, 0x41, 0x11, 0x05, 0xC7, 0xE3, 0xA0, 0x90, 0x84, 0x42, 0x40, 0xA0, + 0x60, 0x10, 0x10, 0x08, 0x3E, 0x00, 0xFD, 0x08, 0x20, 0x82, 0x08, 0x10, + 0xBF, 0x29, 0x24, 0xA2, 0x49, 0x26, 0xFF, 0xF8, 0x89, 0x24, 0x8A, 0x49, + 0x2C, 0x61, 0x24, 0x30}; + +const GFXglyph FreeMono9pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 11, 0, 1}, // 0x20 ' ' + {0, 2, 11, 11, 4, -10}, // 0x21 '!' + {3, 6, 5, 11, 2, -10}, // 0x22 '"' + {7, 7, 12, 11, 2, -10}, // 0x23 '#' + {18, 8, 12, 11, 1, -10}, // 0x24 '$' + {30, 7, 11, 11, 2, -10}, // 0x25 '%' + {40, 7, 10, 11, 2, -9}, // 0x26 '&' + {49, 3, 5, 11, 4, -10}, // 0x27 ''' + {51, 2, 13, 11, 5, -10}, // 0x28 '(' + {55, 2, 13, 11, 4, -10}, // 0x29 ')' + {59, 7, 7, 11, 2, -10}, // 0x2A '*' + {66, 7, 7, 11, 2, -8}, // 0x2B '+' + {73, 3, 5, 11, 2, -1}, // 0x2C ',' + {75, 9, 1, 11, 1, -5}, // 0x2D '-' + {77, 2, 2, 11, 4, -1}, // 0x2E '.' + {78, 7, 13, 11, 2, -11}, // 0x2F '/' + {90, 7, 11, 11, 2, -10}, // 0x30 '0' + {100, 5, 11, 11, 3, -10}, // 0x31 '1' + {107, 7, 11, 11, 2, -10}, // 0x32 '2' + {117, 8, 11, 11, 1, -10}, // 0x33 '3' + {128, 6, 11, 11, 3, -10}, // 0x34 '4' + {137, 7, 11, 11, 2, -10}, // 0x35 '5' + {147, 7, 11, 11, 2, -10}, // 0x36 '6' + {157, 7, 11, 11, 2, -10}, // 0x37 '7' + {167, 7, 11, 11, 2, -10}, // 0x38 '8' + {177, 7, 11, 11, 2, -10}, // 0x39 '9' + {187, 2, 8, 11, 4, -7}, // 0x3A ':' + {189, 3, 11, 11, 3, -7}, // 0x3B ';' + {194, 8, 8, 11, 1, -8}, // 0x3C '<' + {202, 9, 4, 11, 1, -6}, // 0x3D '=' + {207, 9, 8, 11, 1, -8}, // 0x3E '>' + {216, 7, 10, 11, 2, -9}, // 0x3F '?' + {225, 8, 12, 11, 2, -10}, // 0x40 '@' + {237, 11, 10, 11, 0, -9}, // 0x41 'A' + {251, 9, 10, 11, 1, -9}, // 0x42 'B' + {263, 9, 10, 11, 1, -9}, // 0x43 'C' + {275, 9, 10, 11, 1, -9}, // 0x44 'D' + {287, 9, 10, 11, 1, -9}, // 0x45 'E' + {299, 9, 10, 11, 1, -9}, // 0x46 'F' + {311, 10, 10, 11, 1, -9}, // 0x47 'G' + {324, 9, 10, 11, 1, -9}, // 0x48 'H' + {336, 5, 10, 11, 3, -9}, // 0x49 'I' + {343, 8, 10, 11, 2, -9}, // 0x4A 'J' + {353, 9, 10, 11, 1, -9}, // 0x4B 'K' + {365, 8, 10, 11, 2, -9}, // 0x4C 'L' + {375, 11, 10, 11, 0, -9}, // 0x4D 'M' + {389, 9, 10, 11, 1, -9}, // 0x4E 'N' + {401, 9, 10, 11, 1, -9}, // 0x4F 'O' + {413, 8, 10, 11, 1, -9}, // 0x50 'P' + {423, 9, 13, 11, 1, -9}, // 0x51 'Q' + {438, 9, 10, 11, 1, -9}, // 0x52 'R' + {450, 7, 10, 11, 2, -9}, // 0x53 'S' + {459, 9, 10, 11, 1, -9}, // 0x54 'T' + {471, 9, 10, 11, 1, -9}, // 0x55 'U' + {483, 11, 10, 11, 0, -9}, // 0x56 'V' + {497, 11, 10, 11, 0, -9}, // 0x57 'W' + {511, 9, 10, 11, 1, -9}, // 0x58 'X' + {523, 9, 10, 11, 1, -9}, // 0x59 'Y' + {535, 7, 10, 11, 2, -9}, // 0x5A 'Z' + {544, 2, 13, 11, 5, -10}, // 0x5B '[' + {548, 7, 13, 11, 2, -11}, // 0x5C '\' + {560, 2, 13, 11, 4, -10}, // 0x5D ']' + {564, 7, 5, 11, 2, -10}, // 0x5E '^' + {569, 11, 1, 11, 0, 2}, // 0x5F '_' + {571, 3, 3, 11, 3, -11}, // 0x60 '`' + {573, 9, 8, 11, 1, -7}, // 0x61 'a' + {582, 9, 11, 11, 1, -10}, // 0x62 'b' + {595, 7, 8, 11, 2, -7}, // 0x63 'c' + {602, 9, 11, 11, 1, -10}, // 0x64 'd' + {615, 8, 8, 11, 1, -7}, // 0x65 'e' + {623, 6, 11, 11, 3, -10}, // 0x66 'f' + {632, 9, 11, 11, 1, -7}, // 0x67 'g' + {645, 9, 11, 11, 1, -10}, // 0x68 'h' + {658, 7, 10, 11, 2, -9}, // 0x69 'i' + {667, 5, 13, 11, 3, -9}, // 0x6A 'j' + {676, 8, 11, 11, 2, -10}, // 0x6B 'k' + {687, 7, 11, 11, 2, -10}, // 0x6C 'l' + {697, 9, 8, 11, 1, -7}, // 0x6D 'm' + {706, 9, 8, 11, 1, -7}, // 0x6E 'n' + {715, 9, 8, 11, 1, -7}, // 0x6F 'o' + {724, 9, 11, 11, 1, -7}, // 0x70 'p' + {737, 9, 11, 11, 1, -7}, // 0x71 'q' + {750, 7, 8, 11, 3, -7}, // 0x72 'r' + {757, 7, 8, 11, 2, -7}, // 0x73 's' + {764, 8, 10, 11, 2, -9}, // 0x74 't' + {774, 8, 8, 11, 1, -7}, // 0x75 'u' + {782, 9, 8, 11, 1, -7}, // 0x76 'v' + {791, 9, 8, 11, 1, -7}, // 0x77 'w' + {800, 9, 8, 11, 1, -7}, // 0x78 'x' + {809, 9, 11, 11, 1, -7}, // 0x79 'y' + {822, 7, 8, 11, 2, -7}, // 0x7A 'z' + {829, 3, 13, 11, 4, -10}, // 0x7B '{' + {834, 1, 13, 11, 5, -10}, // 0x7C '|' + {836, 3, 13, 11, 4, -10}, // 0x7D '}' + {841, 7, 3, 11, 2, -6}}; // 0x7E '~' + +const GFXfont FreeMono9pt7b PROGMEM = {(uint8_t *)FreeMono9pt7bBitmaps, + (GFXglyph *)FreeMono9pt7bGlyphs, 0x20, + 0x7E, 18}; + +// Approx. 1516 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBold12pt7b.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBold12pt7b.h new file mode 100644 index 0000000..a205386 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBold12pt7b.h @@ -0,0 +1,252 @@ +#pragma once +#include + +const uint8_t FreeMonoBold12pt7bBitmaps[] PROGMEM = { + 0xFF, 0xFF, 0xFF, 0xF6, 0x66, 0x60, 0x6F, 0x60, 0xE7, 0xE7, 0x62, 0x42, + 0x42, 0x42, 0x42, 0x11, 0x87, 0x30, 0xC6, 0x18, 0xC3, 0x31, 0xFF, 0xFF, + 0xF9, 0x98, 0x33, 0x06, 0x60, 0xCC, 0x7F, 0xEF, 0xFC, 0x66, 0x0C, 0xC3, + 0x98, 0x63, 0x04, 0x40, 0x0C, 0x03, 0x00, 0xC0, 0xFE, 0x7F, 0x9C, 0x66, + 0x09, 0x80, 0x78, 0x0F, 0xE0, 0x7F, 0x03, 0xE0, 0xF8, 0x7F, 0xFB, 0xFC, + 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x38, 0x1F, 0x0C, 0x42, 0x10, 0xC4, 0x1F, + 0x03, 0x9C, 0x3C, 0x7F, 0x33, 0xE0, 0x8C, 0x21, 0x08, 0xC3, 0xE0, 0x70, + 0x3E, 0x1F, 0xC6, 0x61, 0x80, 0x70, 0x0C, 0x07, 0x83, 0xEE, 0xDF, 0xB3, + 0xCC, 0x73, 0xFE, 0x7F, 0x80, 0xFD, 0x24, 0x90, 0x39, 0xDC, 0xE6, 0x73, + 0x18, 0xC6, 0x31, 0x8C, 0x31, 0x8E, 0x31, 0xC4, 0xE7, 0x1C, 0xE3, 0x1C, + 0x63, 0x18, 0xC6, 0x31, 0x98, 0xCE, 0x67, 0x10, 0x0C, 0x03, 0x00, 0xC3, + 0xB7, 0xFF, 0xDF, 0xE1, 0xE0, 0xFC, 0x33, 0x0C, 0xC0, 0x06, 0x00, 0x60, + 0x06, 0x00, 0x60, 0x06, 0x0F, 0xFF, 0xFF, 0xF0, 0x60, 0x06, 0x00, 0x60, + 0x06, 0x00, 0x60, 0x06, 0x00, 0x3B, 0x9C, 0xCE, 0x62, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x80, 0x00, 0x40, 0x30, 0x1C, 0x07, 0x03, 0x80, 0xE0, 0x30, + 0x1C, 0x06, 0x03, 0x80, 0xC0, 0x70, 0x18, 0x0E, 0x03, 0x01, 0xC0, 0x60, + 0x38, 0x0E, 0x01, 0x00, 0x1E, 0x0F, 0xC6, 0x1B, 0x87, 0xC0, 0xF0, 0x3C, + 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x87, 0x61, 0x8F, 0xC1, 0xE0, 0x1C, + 0x0F, 0x0F, 0xC3, 0xB0, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, + 0xC0, 0x30, 0x0C, 0x3F, 0xFF, 0xFC, 0x1F, 0x1F, 0xEE, 0x1F, 0x83, 0xC0, + 0xC0, 0x70, 0x38, 0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xE3, 0xF0, 0xFF, 0xFF, + 0xFC, 0x3F, 0x0F, 0xF1, 0x87, 0x00, 0x60, 0x0C, 0x03, 0x83, 0xE0, 0x7C, + 0x01, 0xC0, 0x0C, 0x01, 0x80, 0x3C, 0x0F, 0xFF, 0x9F, 0xC0, 0x07, 0x07, + 0x83, 0xC3, 0xE1, 0xB1, 0xD8, 0xCC, 0xC6, 0xE3, 0x7F, 0xFF, 0xE0, 0x61, + 0xF8, 0xFC, 0x7F, 0x9F, 0xE6, 0x01, 0x80, 0x60, 0x1F, 0x87, 0xF9, 0x86, + 0x00, 0xC0, 0x30, 0x0C, 0x03, 0xC1, 0xBF, 0xE7, 0xE0, 0x07, 0xC7, 0xF3, + 0xC1, 0xC0, 0x60, 0x38, 0x0E, 0xF3, 0xFE, 0xF1, 0xF8, 0x3E, 0x0F, 0x83, + 0x71, 0xCF, 0xE1, 0xF0, 0xFF, 0xFF, 0xFC, 0x1F, 0x07, 0x01, 0x80, 0x60, + 0x38, 0x0C, 0x03, 0x01, 0xC0, 0x60, 0x18, 0x0E, 0x03, 0x00, 0xC0, 0x1E, + 0x1F, 0xEE, 0x1F, 0x03, 0xC0, 0xF0, 0x36, 0x19, 0xFE, 0x7F, 0xB8, 0x7C, + 0x0F, 0x03, 0xE1, 0xDF, 0xE3, 0xF0, 0x3E, 0x1F, 0xCE, 0x3B, 0x07, 0xC1, + 0xF0, 0x7E, 0x3D, 0xFF, 0x3D, 0xC0, 0x70, 0x18, 0x0E, 0x0F, 0x3F, 0x8F, + 0x80, 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x77, 0x70, 0x00, 0x00, 0x76, 0x6C, + 0xC8, 0x80, 0x00, 0x30, 0x0F, 0x03, 0xE0, 0xF8, 0x3E, 0x0F, 0x80, 0x3E, + 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x00, 0x20, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xF0, 0x60, 0x0F, 0x80, 0x3E, 0x00, 0xF8, + 0x03, 0xE0, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x0F, 0x00, 0x40, 0x00, 0x7C, + 0x7F, 0xB0, 0xF8, 0x30, 0x18, 0x1C, 0x3C, 0x3C, 0x18, 0x08, 0x00, 0x07, + 0x03, 0x81, 0xC0, 0x1E, 0x07, 0xF1, 0xC7, 0x30, 0x6C, 0x0D, 0x87, 0xB3, + 0xF6, 0xE6, 0xD8, 0xDB, 0x1B, 0x73, 0x67, 0xFC, 0x7F, 0x80, 0x30, 0x03, + 0x00, 0x71, 0xC7, 0xF8, 0x7C, 0x00, 0x3F, 0x80, 0x7F, 0x80, 0x1F, 0x00, + 0x76, 0x00, 0xEE, 0x01, 0x8C, 0x07, 0x18, 0x0E, 0x38, 0x1F, 0xF0, 0x7F, + 0xF0, 0xC0, 0x61, 0x80, 0xCF, 0xC7, 0xFF, 0x8F, 0xC0, 0xFF, 0xC7, 0xFF, + 0x0C, 0x1C, 0x60, 0x63, 0x03, 0x18, 0x38, 0xFF, 0x87, 0xFE, 0x30, 0x39, + 0x80, 0xCC, 0x06, 0x60, 0x7F, 0xFF, 0x7F, 0xF0, 0x0F, 0xF3, 0xFF, 0x70, + 0x76, 0x03, 0xC0, 0x3C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0x60, + 0x37, 0x07, 0x3F, 0xF0, 0xFC, 0xFF, 0x0F, 0xFC, 0x60, 0xE6, 0x06, 0x60, + 0x36, 0x03, 0x60, 0x36, 0x03, 0x60, 0x36, 0x03, 0x60, 0x76, 0x0E, 0xFF, + 0xCF, 0xF8, 0xFF, 0xF7, 0xFF, 0x8C, 0x0C, 0x60, 0x63, 0x1B, 0x18, 0xC0, + 0xFE, 0x07, 0xF0, 0x31, 0x81, 0x8C, 0xCC, 0x06, 0x60, 0x3F, 0xFF, 0xFF, + 0xFC, 0xFF, 0xFF, 0xFF, 0xCC, 0x06, 0x60, 0x33, 0x19, 0x98, 0xC0, 0xFE, + 0x07, 0xF0, 0x31, 0x81, 0x8C, 0x0C, 0x00, 0x60, 0x0F, 0xF0, 0x7F, 0x80, + 0x0F, 0xF1, 0xFF, 0x9C, 0x1C, 0xC0, 0x6C, 0x03, 0x60, 0x03, 0x00, 0x18, + 0x7F, 0xC3, 0xFE, 0x01, 0xB8, 0x0C, 0xE0, 0xE3, 0xFF, 0x07, 0xE0, 0x7C, + 0xF9, 0xF3, 0xE3, 0x03, 0x0C, 0x0C, 0x30, 0x30, 0xC0, 0xC3, 0xFF, 0x0F, + 0xFC, 0x30, 0x30, 0xC0, 0xC3, 0x03, 0x0C, 0x0C, 0xFC, 0xFF, 0xF3, 0xF0, + 0xFF, 0xFF, 0xF0, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, + 0x00, 0xC0, 0x30, 0xFF, 0xFF, 0xF0, 0x0F, 0xF8, 0x7F, 0xC0, 0x30, 0x01, + 0x80, 0x0C, 0x00, 0x60, 0x03, 0x18, 0x18, 0xC0, 0xC6, 0x06, 0x30, 0x31, + 0xC3, 0x0F, 0xF8, 0x1F, 0x00, 0xFC, 0xFB, 0xF3, 0xE3, 0x0E, 0x0C, 0x70, + 0x33, 0x80, 0xFC, 0x03, 0xF0, 0x0F, 0xE0, 0x39, 0xC0, 0xC3, 0x03, 0x0E, + 0x0C, 0x18, 0xFC, 0x7F, 0xF0, 0xF0, 0xFF, 0x0F, 0xF0, 0x18, 0x01, 0x80, + 0x18, 0x01, 0x80, 0x18, 0x01, 0x80, 0x18, 0x31, 0x83, 0x18, 0x31, 0x83, + 0xFF, 0xFF, 0xFF, 0xF0, 0x3F, 0xC0, 0xF7, 0x87, 0x9E, 0x1E, 0x7C, 0xF9, + 0xB3, 0xE6, 0xFD, 0x99, 0xF6, 0x67, 0x99, 0x8E, 0x66, 0x31, 0x98, 0x06, + 0xFC, 0xFF, 0xF3, 0xF0, 0xF1, 0xFF, 0xCF, 0xCF, 0x0C, 0x78, 0x63, 0xE3, + 0x1B, 0x18, 0xDC, 0xC6, 0x76, 0x31, 0xB1, 0x8F, 0x8C, 0x3C, 0x61, 0xE7, + 0xE7, 0x3F, 0x18, 0x0F, 0x03, 0xFC, 0x70, 0xE6, 0x06, 0xE0, 0x7C, 0x03, + 0xC0, 0x3C, 0x03, 0xC0, 0x3E, 0x07, 0x60, 0x67, 0x0E, 0x3F, 0xC0, 0xF0, + 0xFF, 0x8F, 0xFE, 0x30, 0x73, 0x03, 0x30, 0x33, 0x03, 0x30, 0x73, 0xFE, + 0x3F, 0x83, 0x00, 0x30, 0x03, 0x00, 0xFF, 0x0F, 0xF0, 0x0F, 0x03, 0xFC, + 0x70, 0xE6, 0x06, 0xE0, 0x7C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3E, 0x07, + 0x60, 0x67, 0x0E, 0x3F, 0xC1, 0xF0, 0x18, 0x33, 0xFF, 0x3F, 0xE0, 0xFF, + 0x83, 0xFF, 0x83, 0x07, 0x0C, 0x0C, 0x30, 0x30, 0xC1, 0xC3, 0xFE, 0x0F, + 0xF0, 0x31, 0xE0, 0xC3, 0x83, 0x07, 0x0C, 0x0C, 0xFE, 0x3F, 0xF8, 0x70, + 0x3F, 0xDF, 0xFE, 0x1F, 0x03, 0xC0, 0xF8, 0x07, 0xE0, 0x7E, 0x01, 0xF0, + 0x3C, 0x0F, 0x87, 0xFF, 0xBF, 0xC0, 0xFF, 0xFF, 0xFF, 0xC6, 0x3C, 0x63, + 0xC6, 0x3C, 0x63, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, + 0x3F, 0xC3, 0xFC, 0xFF, 0xFF, 0xFF, 0x60, 0x66, 0x06, 0x60, 0x66, 0x06, + 0x60, 0x66, 0x06, 0x60, 0x66, 0x06, 0x60, 0x63, 0x9C, 0x1F, 0xC0, 0xF0, + 0xFC, 0x3F, 0xFC, 0x3F, 0x30, 0x0C, 0x38, 0x1C, 0x18, 0x18, 0x1C, 0x38, + 0x1C, 0x38, 0x0E, 0x70, 0x0E, 0x70, 0x0F, 0x60, 0x07, 0xE0, 0x07, 0xE0, + 0x03, 0xC0, 0x03, 0xC0, 0xFC, 0xFF, 0xF3, 0xF6, 0x01, 0xDC, 0xC6, 0x77, + 0x99, 0xDE, 0x67, 0x79, 0x8D, 0xFE, 0x3F, 0xF8, 0xF3, 0xE3, 0xCF, 0x8F, + 0x3C, 0x38, 0x70, 0xE1, 0xC0, 0xF8, 0xFB, 0xE3, 0xE3, 0x86, 0x0F, 0x38, + 0x1F, 0xC0, 0x3E, 0x00, 0x70, 0x03, 0xE0, 0x0F, 0x80, 0x77, 0x03, 0x8E, + 0x1E, 0x1C, 0xFC, 0xFF, 0xF3, 0xF0, 0xF9, 0xFF, 0x9F, 0x30, 0xC3, 0x9C, + 0x19, 0x81, 0xF8, 0x0F, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, + 0x3F, 0xC3, 0xFC, 0xFF, 0xBF, 0xEC, 0x3B, 0x0C, 0xC6, 0x33, 0x80, 0xC0, + 0x60, 0x38, 0xCC, 0x36, 0x0F, 0x03, 0xFF, 0xFF, 0xF0, 0xFF, 0xF1, 0x8C, + 0x63, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0xC7, 0xFE, 0x40, 0x30, 0x0E, + 0x01, 0x80, 0x70, 0x0C, 0x03, 0x80, 0x60, 0x1C, 0x03, 0x00, 0xE0, 0x18, + 0x07, 0x00, 0xC0, 0x38, 0x0E, 0x01, 0xC0, 0x70, 0x0C, 0x01, 0xFF, 0xC6, + 0x31, 0x8C, 0x63, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x1F, 0xFE, 0x04, 0x03, + 0x01, 0xE0, 0xFC, 0x7B, 0x9C, 0x7E, 0x1F, 0x03, 0xFF, 0xFF, 0xFF, 0xF0, + 0xCE, 0x73, 0x3F, 0x07, 0xF8, 0x00, 0xC0, 0x0C, 0x1F, 0xC7, 0xFC, 0x60, + 0xCC, 0x0C, 0xC1, 0xCF, 0xFF, 0x3F, 0xF0, 0xF0, 0x07, 0x80, 0x0C, 0x00, + 0x60, 0x03, 0x7C, 0x1F, 0xF8, 0xF1, 0xC7, 0x07, 0x30, 0x19, 0x80, 0xCC, + 0x06, 0x60, 0x73, 0xC7, 0x7F, 0xFB, 0xDF, 0x00, 0x1F, 0xB3, 0xFF, 0x70, + 0xFE, 0x07, 0xC0, 0x3C, 0x00, 0xC0, 0x0C, 0x00, 0x70, 0x77, 0xFF, 0x1F, + 0xC0, 0x01, 0xE0, 0x0F, 0x00, 0x18, 0x00, 0xC1, 0xF6, 0x3F, 0xF1, 0xC7, + 0x9C, 0x1C, 0xC0, 0x66, 0x03, 0x30, 0x19, 0x81, 0xC7, 0x1E, 0x3F, 0xFC, + 0x7D, 0xE0, 0x1F, 0x83, 0xFC, 0x70, 0xEE, 0x07, 0xFF, 0xFF, 0xFF, 0xE0, + 0x0E, 0x00, 0x70, 0x73, 0xFF, 0x1F, 0xC0, 0x07, 0xC3, 0xFC, 0x60, 0x0C, + 0x0F, 0xFD, 0xFF, 0x86, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, + 0x81, 0xFF, 0xBF, 0xF0, 0x1F, 0x79, 0xFF, 0xDC, 0x79, 0x81, 0xCC, 0x06, + 0x60, 0x33, 0x01, 0x9C, 0x1C, 0x71, 0xE1, 0xFF, 0x07, 0xD8, 0x00, 0xC0, + 0x06, 0x00, 0x70, 0x7F, 0x03, 0xF0, 0xF0, 0x03, 0xC0, 0x03, 0x00, 0x0C, + 0x00, 0x37, 0xC0, 0xFF, 0x83, 0xC7, 0x0C, 0x0C, 0x30, 0x30, 0xC0, 0xC3, + 0x03, 0x0C, 0x0C, 0x30, 0x33, 0xF3, 0xFF, 0xCF, 0xC0, 0x06, 0x00, 0xC0, + 0x00, 0x3F, 0x07, 0xE0, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, + 0x03, 0x0F, 0xFF, 0xFF, 0xC0, 0x06, 0x06, 0x00, 0xFF, 0xFF, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x07, 0xFE, 0xFC, + 0xF0, 0x07, 0x80, 0x0C, 0x00, 0x60, 0x03, 0x3F, 0x19, 0xF8, 0xDE, 0x07, + 0xE0, 0x3E, 0x01, 0xF0, 0x0F, 0xC0, 0x6F, 0x03, 0x1C, 0x78, 0xFF, 0xC7, + 0xE0, 0x7E, 0x0F, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, + 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x61, 0xFF, 0xFF, 0xF8, 0xFE, 0xF1, + 0xFF, 0xF1, 0xCE, 0x63, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0xC6, 0x31, + 0x8C, 0x63, 0x19, 0xF7, 0xBF, 0xEF, 0x78, 0x77, 0xC1, 0xFF, 0x83, 0xC7, + 0x0C, 0x0C, 0x30, 0x30, 0xC0, 0xC3, 0x03, 0x0C, 0x0C, 0x30, 0x33, 0xF1, + 0xFF, 0xC7, 0xC0, 0x1F, 0x83, 0xFC, 0x70, 0xEE, 0x07, 0xC0, 0x3C, 0x03, + 0xC0, 0x3E, 0x07, 0x70, 0xE3, 0xFC, 0x1F, 0x80, 0xF7, 0xE3, 0xFF, 0xC3, + 0xC3, 0x8E, 0x07, 0x30, 0x0C, 0xC0, 0x33, 0x00, 0xCE, 0x07, 0x3C, 0x38, + 0xFF, 0xC3, 0x7E, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x0F, 0xE0, 0x3F, 0x80, + 0x1F, 0xBC, 0xFF, 0xF7, 0x0F, 0x38, 0x1C, 0xC0, 0x33, 0x00, 0xCC, 0x03, + 0x38, 0x1C, 0x70, 0xF0, 0xFF, 0xC1, 0xFB, 0x00, 0x0C, 0x00, 0x30, 0x00, + 0xC0, 0x1F, 0xC0, 0x7F, 0x79, 0xE7, 0xFF, 0x1F, 0x31, 0xC0, 0x18, 0x01, + 0x80, 0x18, 0x01, 0x80, 0x18, 0x0F, 0xFC, 0xFF, 0xC0, 0x3F, 0x9F, 0xFE, + 0x1F, 0x82, 0xFE, 0x1F, 0xE0, 0xFF, 0x03, 0xE0, 0xFF, 0xFF, 0xF0, 0x30, + 0x06, 0x00, 0xC0, 0x7F, 0xEF, 0xFC, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, + 0x00, 0xC0, 0x18, 0x71, 0xFE, 0x1F, 0x00, 0xF1, 0xF7, 0x8F, 0x8C, 0x0C, + 0x60, 0x63, 0x03, 0x18, 0x18, 0xC0, 0xC6, 0x06, 0x38, 0xF0, 0xFF, 0xC3, + 0xEE, 0xFC, 0xFF, 0xF3, 0xF3, 0x87, 0x0E, 0x1C, 0x1C, 0x60, 0x73, 0x80, + 0xEC, 0x03, 0xF0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x00, 0xF8, 0x7F, 0xE1, + 0xF7, 0x39, 0x8C, 0xE6, 0x37, 0xB0, 0xFF, 0xC3, 0xFF, 0x07, 0xBC, 0x1C, + 0xF0, 0x73, 0x81, 0x86, 0x00, 0x7C, 0xF9, 0xF3, 0xE3, 0xCF, 0x07, 0xF8, + 0x0F, 0xC0, 0x1E, 0x00, 0xFC, 0x07, 0x38, 0x38, 0x73, 0xF3, 0xFF, 0xCF, + 0xC0, 0xF9, 0xFF, 0x9F, 0x70, 0xE3, 0x0C, 0x39, 0xC1, 0x98, 0x19, 0x81, + 0xF8, 0x0F, 0x00, 0xF0, 0x06, 0x00, 0x60, 0x0E, 0x00, 0xC0, 0xFF, 0x0F, + 0xF0, 0x7F, 0xCF, 0xF9, 0x8E, 0x33, 0x80, 0x70, 0x1C, 0x07, 0x01, 0xC6, + 0x70, 0xFF, 0xFF, 0xFF, 0x80, 0x0E, 0x3C, 0x60, 0xC1, 0x83, 0x06, 0x0C, + 0x39, 0xE3, 0xC0, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x3C, 0x38, 0xFF, 0xFF, + 0xFF, 0xFF, 0xF0, 0xE1, 0xC0, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x3C, + 0x79, 0x83, 0x06, 0x0C, 0x18, 0x31, 0xE3, 0x80, 0x3C, 0x37, 0xE7, 0x67, + 0xE6, 0x1C}; + +const GFXglyph FreeMonoBold12pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 14, 0, 1}, // 0x20 ' ' + {0, 4, 15, 14, 5, -14}, // 0x21 '!' + {8, 8, 7, 14, 3, -13}, // 0x22 '"' + {15, 11, 18, 14, 2, -15}, // 0x23 '#' + {40, 10, 20, 14, 2, -16}, // 0x24 '$' + {65, 10, 15, 14, 2, -14}, // 0x25 '%' + {84, 10, 13, 14, 2, -12}, // 0x26 '&' + {101, 3, 7, 14, 5, -13}, // 0x27 ''' + {104, 5, 19, 14, 6, -14}, // 0x28 '(' + {116, 5, 19, 14, 3, -14}, // 0x29 ')' + {128, 10, 10, 14, 2, -14}, // 0x2A '*' + {141, 12, 13, 14, 1, -12}, // 0x2B '+' + {161, 5, 7, 14, 4, -2}, // 0x2C ',' + {166, 12, 2, 14, 1, -7}, // 0x2D '-' + {169, 3, 3, 14, 5, -2}, // 0x2E '.' + {171, 10, 20, 14, 2, -16}, // 0x2F '/' + {196, 10, 15, 14, 2, -14}, // 0x30 '0' + {215, 10, 15, 14, 2, -14}, // 0x31 '1' + {234, 10, 15, 14, 2, -14}, // 0x32 '2' + {253, 11, 15, 14, 1, -14}, // 0x33 '3' + {274, 9, 14, 14, 2, -13}, // 0x34 '4' + {290, 10, 15, 14, 2, -14}, // 0x35 '5' + {309, 10, 15, 14, 2, -14}, // 0x36 '6' + {328, 10, 15, 14, 2, -14}, // 0x37 '7' + {347, 10, 15, 14, 2, -14}, // 0x38 '8' + {366, 10, 15, 14, 3, -14}, // 0x39 '9' + {385, 3, 11, 14, 5, -10}, // 0x3A ':' + {390, 4, 15, 14, 4, -10}, // 0x3B ';' + {398, 12, 11, 14, 1, -11}, // 0x3C '<' + {415, 12, 7, 14, 1, -9}, // 0x3D '=' + {426, 12, 11, 14, 1, -11}, // 0x3E '>' + {443, 9, 14, 14, 3, -13}, // 0x3F '?' + {459, 11, 19, 14, 2, -14}, // 0x40 '@' + {486, 15, 14, 14, -1, -13}, // 0x41 'A' + {513, 13, 14, 14, 0, -13}, // 0x42 'B' + {536, 12, 14, 14, 1, -13}, // 0x43 'C' + {557, 12, 14, 14, 1, -13}, // 0x44 'D' + {578, 13, 14, 14, 0, -13}, // 0x45 'E' + {601, 13, 14, 14, 0, -13}, // 0x46 'F' + {624, 13, 14, 14, 1, -13}, // 0x47 'G' + {647, 14, 14, 14, 0, -13}, // 0x48 'H' + {672, 10, 14, 14, 2, -13}, // 0x49 'I' + {690, 13, 14, 14, 1, -13}, // 0x4A 'J' + {713, 14, 14, 14, 0, -13}, // 0x4B 'K' + {738, 12, 14, 14, 1, -13}, // 0x4C 'L' + {759, 14, 14, 14, 0, -13}, // 0x4D 'M' + {784, 13, 14, 14, 0, -13}, // 0x4E 'N' + {807, 12, 14, 14, 1, -13}, // 0x4F 'O' + {828, 12, 14, 14, 0, -13}, // 0x50 'P' + {849, 12, 17, 14, 1, -13}, // 0x51 'Q' + {875, 14, 14, 14, 0, -13}, // 0x52 'R' + {900, 10, 14, 14, 2, -13}, // 0x53 'S' + {918, 12, 14, 14, 1, -13}, // 0x54 'T' + {939, 12, 14, 14, 1, -13}, // 0x55 'U' + {960, 16, 14, 14, -1, -13}, // 0x56 'V' + {988, 14, 14, 14, 0, -13}, // 0x57 'W' + {1013, 14, 14, 14, 0, -13}, // 0x58 'X' + {1038, 12, 14, 14, 1, -13}, // 0x59 'Y' + {1059, 10, 14, 14, 2, -13}, // 0x5A 'Z' + {1077, 5, 19, 14, 6, -14}, // 0x5B '[' + {1089, 10, 20, 14, 2, -16}, // 0x5C '\' + {1114, 5, 19, 14, 3, -14}, // 0x5D ']' + {1126, 10, 8, 14, 2, -15}, // 0x5E '^' + {1136, 14, 2, 14, 0, 4}, // 0x5F '_' + {1140, 4, 4, 14, 4, -15}, // 0x60 '`' + {1142, 12, 11, 14, 1, -10}, // 0x61 'a' + {1159, 13, 15, 14, 0, -14}, // 0x62 'b' + {1184, 12, 11, 14, 1, -10}, // 0x63 'c' + {1201, 13, 15, 14, 1, -14}, // 0x64 'd' + {1226, 12, 11, 14, 1, -10}, // 0x65 'e' + {1243, 11, 15, 14, 2, -14}, // 0x66 'f' + {1264, 13, 16, 14, 1, -10}, // 0x67 'g' + {1290, 14, 15, 14, 0, -14}, // 0x68 'h' + {1317, 11, 14, 14, 1, -13}, // 0x69 'i' + {1337, 8, 19, 15, 3, -13}, // 0x6A 'j' + {1356, 13, 15, 14, 1, -14}, // 0x6B 'k' + {1381, 11, 15, 14, 1, -14}, // 0x6C 'l' + {1402, 15, 11, 14, 0, -10}, // 0x6D 'm' + {1423, 14, 11, 14, 0, -10}, // 0x6E 'n' + {1443, 12, 11, 14, 1, -10}, // 0x6F 'o' + {1460, 14, 16, 14, 0, -10}, // 0x70 'p' + {1488, 14, 16, 14, 0, -10}, // 0x71 'q' + {1516, 12, 11, 14, 1, -10}, // 0x72 'r' + {1533, 10, 11, 14, 2, -10}, // 0x73 's' + {1547, 11, 14, 14, 1, -13}, // 0x74 't' + {1567, 13, 11, 14, 0, -10}, // 0x75 'u' + {1585, 14, 11, 14, 0, -10}, // 0x76 'v' + {1605, 14, 11, 14, 0, -10}, // 0x77 'w' + {1625, 14, 11, 14, 0, -10}, // 0x78 'x' + {1645, 12, 16, 14, 1, -10}, // 0x79 'y' + {1669, 11, 11, 14, 1, -10}, // 0x7A 'z' + {1685, 7, 19, 14, 3, -14}, // 0x7B '{' + {1702, 2, 19, 14, 6, -14}, // 0x7C '|' + {1707, 7, 19, 14, 4, -14}, // 0x7D '}' + {1724, 12, 4, 14, 1, -7}}; // 0x7E '~' + +const GFXfont FreeMonoBold12pt7b PROGMEM = { + (uint8_t *)FreeMonoBold12pt7bBitmaps, (GFXglyph *)FreeMonoBold12pt7bGlyphs, + 0x20, 0x7E, 24}; + +// Approx. 2402 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBold18pt7b.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBold18pt7b.h new file mode 100644 index 0000000..36664c1 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBold18pt7b.h @@ -0,0 +1,425 @@ +#pragma once +#include + +const uint8_t FreeMonoBold18pt7bBitmaps[] PROGMEM = { + 0x77, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0x9C, 0xE7, 0x39, 0xC4, 0x03, 0xBF, + 0xFF, 0xB8, 0xF1, 0xFE, 0x3F, 0xC7, 0xF8, 0xFF, 0x1E, 0xC1, 0x98, 0x33, + 0x06, 0x60, 0xCC, 0x18, 0x0E, 0x1C, 0x0F, 0x3C, 0x1F, 0x3C, 0x1E, 0x3C, + 0x1E, 0x3C, 0x1E, 0x78, 0x1E, 0x78, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0x1E, 0x78, 0x1E, 0x78, 0x1E, 0x78, 0x7F, 0xFE, 0x7F, 0xFE, + 0x7F, 0xFE, 0x7F, 0xFE, 0x3C, 0x78, 0x3C, 0x78, 0x3C, 0x78, 0x3C, 0xF0, + 0x3C, 0xF0, 0x3C, 0xF0, 0x3C, 0xF0, 0x03, 0x00, 0x1E, 0x00, 0x78, 0x01, + 0xE0, 0x1F, 0xF1, 0xFF, 0xE7, 0xFF, 0xBE, 0x1E, 0xF0, 0x3B, 0xC0, 0xCF, + 0xE0, 0x3F, 0xF8, 0x7F, 0xF0, 0x7F, 0xE0, 0x1F, 0xF0, 0x0F, 0xE0, 0x3F, + 0x80, 0xFF, 0x87, 0xFF, 0xFE, 0xFF, 0xF3, 0x7F, 0x80, 0x78, 0x01, 0xE0, + 0x07, 0x80, 0x1E, 0x00, 0x78, 0x00, 0xC0, 0x1E, 0x00, 0xFF, 0x03, 0x86, + 0x06, 0x06, 0x0C, 0x0C, 0x18, 0x18, 0x38, 0x70, 0x3F, 0xC2, 0x1E, 0x3E, + 0x03, 0xF8, 0x3F, 0x83, 0xF8, 0x0F, 0x8F, 0x18, 0x7F, 0x01, 0xC7, 0x03, + 0x06, 0x06, 0x0C, 0x0C, 0x18, 0x1C, 0x70, 0x1F, 0xC0, 0x0F, 0x00, 0x03, + 0xD0, 0x1F, 0xF0, 0x7F, 0xE1, 0xFF, 0xC3, 0xE6, 0x07, 0x80, 0x0F, 0x00, + 0x0F, 0x00, 0x1F, 0x00, 0x3E, 0x00, 0xFE, 0x03, 0xFE, 0xFF, 0xBD, 0xFE, + 0x3F, 0xFC, 0x3F, 0x7C, 0x7C, 0xFF, 0xFE, 0xFF, 0xFC, 0xFF, 0xF8, 0x7E, + 0xF0, 0xFF, 0xFF, 0xF6, 0x66, 0x66, 0x07, 0x0F, 0x1F, 0x1E, 0x3E, 0x3C, + 0x78, 0x78, 0x78, 0x70, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0x78, 0x78, 0x78, 0x3C, 0x3C, 0x1E, 0x1F, 0x0F, 0x07, 0xE0, 0xF0, 0xF8, + 0x78, 0x7C, 0x3C, 0x3E, 0x1E, 0x1E, 0x1E, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x0F, 0x0F, 0x0E, 0x1E, 0x1E, 0x1E, 0x3C, 0x3C, 0x78, 0xF8, 0xF0, 0xE0, + 0x01, 0x80, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0xFF, 0xFF, + 0xFF, 0xFF, 0x7F, 0xFE, 0x1F, 0xF8, 0x07, 0xE0, 0x0F, 0xF0, 0x1F, 0xF8, + 0x1E, 0x78, 0x1C, 0x38, 0x18, 0x18, 0x01, 0xC0, 0x03, 0xC0, 0x03, 0xC0, + 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, + 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x01, 0x80, 0x3E, 0x78, 0xF3, 0xC7, + 0x8E, 0x1C, 0x70, 0xE1, 0x80, 0x7F, 0xFF, 0xDF, 0xFF, 0xF9, 0xFF, 0xFF, + 0x3F, 0xFF, 0xE0, 0x77, 0xFF, 0xF7, 0x00, 0x00, 0x0E, 0x00, 0x3C, 0x00, + 0x78, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x00, 0x1E, 0x00, 0x38, 0x00, 0xF0, + 0x01, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x3C, 0x00, 0x78, 0x01, 0xE0, 0x03, + 0xC0, 0x0F, 0x00, 0x1E, 0x00, 0x78, 0x00, 0xF0, 0x03, 0xC0, 0x07, 0x80, + 0x1E, 0x00, 0x3C, 0x00, 0x70, 0x01, 0xE0, 0x03, 0x80, 0x03, 0x00, 0x00, + 0x07, 0xE0, 0x1F, 0xF8, 0x3F, 0xFC, 0x3F, 0xFC, 0x7C, 0x3E, 0x78, 0x1E, + 0xF8, 0x1F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, + 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF8, 0x1F, 0x78, 0x1E, + 0x7C, 0x3E, 0x3F, 0xFC, 0x3F, 0xFC, 0x1F, 0xF8, 0x07, 0xE0, 0x07, 0xC0, + 0x1F, 0x80, 0xFF, 0x03, 0xFE, 0x0F, 0xBC, 0x0C, 0x78, 0x00, 0xF0, 0x01, + 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, + 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x81, 0xFF, 0xFB, 0xFF, 0xF7, + 0xFF, 0xE7, 0xFF, 0x80, 0x0F, 0xC0, 0x7F, 0xE1, 0xFF, 0xE3, 0xFF, 0xEF, + 0x87, 0xDE, 0x07, 0xF8, 0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x7C, 0x01, + 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, + 0x78, 0x03, 0xE0, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, + 0x0F, 0xC0, 0x7F, 0xF0, 0xFF, 0xF8, 0xFF, 0xFC, 0x70, 0x3E, 0x00, 0x1E, + 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x3C, 0x03, 0xFC, 0x03, 0xF0, 0x03, 0xF0, + 0x03, 0xFC, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, + 0xE0, 0x3F, 0xFF, 0xFE, 0xFF, 0xFC, 0x7F, 0xF8, 0x1F, 0xE0, 0x00, 0xF8, + 0x03, 0xF0, 0x07, 0xE0, 0x1F, 0xC0, 0x77, 0x80, 0xEF, 0x03, 0x9E, 0x0F, + 0x3C, 0x1C, 0x78, 0x70, 0xF1, 0xE1, 0xE3, 0x83, 0xCF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x78, 0x07, 0xFC, 0x0F, 0xF8, 0x1F, 0xF0, + 0x1F, 0xC0, 0x3F, 0xFC, 0x1F, 0xFE, 0x0F, 0xFF, 0x07, 0xFF, 0x83, 0xC0, + 0x01, 0xE0, 0x00, 0xF0, 0x00, 0x7B, 0xE0, 0x3F, 0xFC, 0x1F, 0xFF, 0x0F, + 0xFF, 0xC3, 0x83, 0xE0, 0x00, 0xF8, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x0F, + 0x00, 0x0F, 0xB8, 0x0F, 0xBF, 0xFF, 0xCF, 0xFF, 0xC3, 0xFF, 0xC0, 0x7F, + 0x80, 0x00, 0xFC, 0x07, 0xFC, 0x3F, 0xF8, 0xFF, 0xF1, 0xF8, 0x07, 0xC0, + 0x1F, 0x00, 0x3C, 0x00, 0xF0, 0x01, 0xE7, 0xC3, 0xDF, 0xC7, 0x7F, 0xCF, + 0xFF, 0xDF, 0x8F, 0xFC, 0x07, 0xF0, 0x0F, 0xF0, 0x1F, 0xE0, 0x3D, 0xE0, + 0xFB, 0xFF, 0xE3, 0xFF, 0xC3, 0xFF, 0x01, 0xF8, 0x00, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x01, 0xE0, 0x03, 0x80, 0x0F, 0x00, 0x1E, + 0x00, 0x38, 0x00, 0xF0, 0x01, 0xE0, 0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, + 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x38, + 0x00, 0x70, 0x00, 0x07, 0xC0, 0x3F, 0xE0, 0xFF, 0xE3, 0xFF, 0xEF, 0x83, + 0xFE, 0x03, 0xFC, 0x07, 0xF8, 0x0F, 0xF0, 0x1E, 0xF0, 0x78, 0xFF, 0xE0, + 0xFF, 0x81, 0xFF, 0x0F, 0xFF, 0x9E, 0x0F, 0x78, 0x0F, 0xF0, 0x1F, 0xE0, + 0x3F, 0xE0, 0xFB, 0xFF, 0xE7, 0xFF, 0xC7, 0xFF, 0x03, 0xF8, 0x00, 0x0F, + 0xC0, 0x3F, 0xE0, 0xFF, 0xE3, 0xFF, 0xEF, 0xC3, 0xDF, 0x03, 0xBC, 0x07, + 0xF8, 0x0F, 0xF0, 0x1F, 0xF0, 0x3D, 0xF1, 0xFB, 0xFF, 0xF3, 0xFE, 0xE3, + 0xFB, 0xC3, 0xE7, 0x80, 0x1E, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xE7, 0xFF, + 0x8F, 0xFE, 0x1F, 0xF0, 0x1F, 0x80, 0x00, 0x77, 0xFF, 0xF7, 0x00, 0x00, + 0x00, 0x00, 0xEF, 0xFF, 0xEE, 0x1C, 0x7C, 0xF9, 0xF1, 0xC0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xF3, 0xC7, 0x8E, 0x3C, 0x70, 0xE1, 0x87, 0x0C, 0x00, + 0x00, 0x00, 0x00, 0x80, 0x00, 0xF0, 0x00, 0xFC, 0x00, 0xFE, 0x00, 0xFE, + 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x07, 0xF0, 0x00, + 0x7F, 0x00, 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xF0, 0x00, 0x7C, 0x00, + 0x07, 0x7F, 0xFF, 0xDF, 0xFF, 0xF9, 0xFF, 0xFF, 0x3F, 0xFF, 0xE0, 0x00, + 0x00, 0x00, 0x00, 0x1F, 0xFF, 0xF7, 0xFF, 0xFE, 0x7F, 0xFF, 0xCF, 0xFF, + 0xF8, 0x00, 0x00, 0x3C, 0x00, 0x0F, 0xC0, 0x01, 0xFC, 0x00, 0x1F, 0xC0, + 0x01, 0xFC, 0x00, 0x1F, 0xC0, 0x01, 0xFC, 0x00, 0x3F, 0x80, 0x3F, 0x80, + 0x3F, 0x80, 0x3F, 0x80, 0x3F, 0x80, 0x3F, 0x80, 0x0F, 0x80, 0x03, 0x80, + 0x00, 0x1F, 0xC0, 0xFF, 0xE3, 0xFF, 0xF7, 0xFF, 0xEF, 0x07, 0xFE, 0x03, + 0xDC, 0x07, 0x80, 0x0F, 0x00, 0x7C, 0x03, 0xF8, 0x1F, 0xC0, 0x1E, 0x00, + 0x30, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x1F, 0x00, 0x3E, + 0x00, 0x7C, 0x00, 0x70, 0x00, 0x07, 0xE0, 0x1F, 0xE0, 0x7F, 0xE1, 0xE1, + 0xC7, 0x83, 0xCE, 0x03, 0xBC, 0x07, 0x70, 0x0E, 0xE0, 0x7D, 0xC3, 0xFB, + 0x8F, 0xF7, 0x3C, 0xEE, 0x71, 0xDC, 0xE3, 0xB9, 0xC7, 0x73, 0xCE, 0xE3, + 0xFF, 0xC3, 0xFF, 0x83, 0xFF, 0x00, 0x07, 0x00, 0x0E, 0x00, 0x1E, 0x02, + 0x1E, 0x1E, 0x3F, 0xFC, 0x1F, 0xF0, 0x1F, 0x80, 0x0F, 0xF8, 0x00, 0x7F, + 0xF0, 0x01, 0xFF, 0xC0, 0x03, 0xFF, 0x00, 0x01, 0xFE, 0x00, 0x07, 0xF8, + 0x00, 0x1C, 0xF0, 0x00, 0xF3, 0xC0, 0x03, 0xCF, 0x00, 0x1E, 0x1E, 0x00, + 0x78, 0x78, 0x03, 0xC0, 0xF0, 0x0F, 0xFF, 0xC0, 0x3F, 0xFF, 0x01, 0xFF, + 0xFE, 0x07, 0xFF, 0xF8, 0x3C, 0x00, 0xF3, 0xFC, 0x1F, 0xEF, 0xF8, 0x7F, + 0xFF, 0xE1, 0xFF, 0x7F, 0x03, 0xF8, 0x7F, 0xFC, 0x0F, 0xFF, 0xF0, 0xFF, + 0xFF, 0x8F, 0xFF, 0xF8, 0x3C, 0x07, 0xC3, 0xC0, 0x3C, 0x3C, 0x03, 0xC3, + 0xC0, 0x7C, 0x3F, 0xFF, 0x83, 0xFF, 0xF0, 0x3F, 0xFF, 0x83, 0xFF, 0xFE, + 0x3C, 0x03, 0xE3, 0xC0, 0x1F, 0x3C, 0x00, 0xF3, 0xC0, 0x0F, 0x3C, 0x01, + 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xEF, 0xFF, 0xFC, 0x7F, 0xFF, 0x00, 0x01, + 0xF8, 0xC1, 0xFF, 0xFC, 0x7F, 0xFF, 0x9F, 0xFF, 0xF7, 0xE0, 0x7E, 0xF8, + 0x07, 0xFE, 0x00, 0x7F, 0x80, 0x0E, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0xC0, + 0x00, 0x78, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xE0, + 0x07, 0x7F, 0x03, 0xE7, 0xFF, 0xFC, 0x7F, 0xFF, 0x03, 0xFF, 0xC0, 0x1F, + 0xE0, 0xFF, 0xF0, 0x3F, 0xFF, 0x0F, 0xFF, 0xE3, 0xFF, 0xFC, 0x78, 0x1F, + 0x9E, 0x03, 0xE7, 0x80, 0x79, 0xE0, 0x0F, 0x78, 0x03, 0xDE, 0x00, 0xF7, + 0x80, 0x3D, 0xE0, 0x0F, 0x78, 0x03, 0xDE, 0x00, 0xF7, 0x80, 0x7D, 0xE0, + 0x1E, 0x78, 0x1F, 0xBF, 0xFF, 0xCF, 0xFF, 0xF3, 0xFF, 0xF0, 0x7F, 0xF0, + 0x00, 0x7F, 0xFF, 0xDF, 0xFF, 0xFB, 0xFF, 0xFF, 0x7F, 0xFF, 0xE3, 0xC0, + 0x3C, 0x78, 0x07, 0x8F, 0x1C, 0xF1, 0xE3, 0xCC, 0x3F, 0xF8, 0x07, 0xFF, + 0x00, 0xFF, 0xE0, 0x1F, 0xFC, 0x03, 0xC7, 0x80, 0x78, 0xF1, 0x8F, 0x0C, + 0x79, 0xE0, 0x0F, 0x3C, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF7, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF3, 0xC0, 0x1E, 0x78, 0x63, 0xCF, 0x1E, 0x79, 0xE3, 0xC6, 0x3F, 0xF8, + 0x07, 0xFF, 0x00, 0xFF, 0xE0, 0x1F, 0xFC, 0x03, 0xC7, 0x80, 0x78, 0xE0, + 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x1F, 0xFC, 0x03, 0xFF, 0x80, + 0x7F, 0xF0, 0x07, 0xFC, 0x00, 0x01, 0xFC, 0xE0, 0x7F, 0xFE, 0x1F, 0xFF, + 0xE3, 0xFF, 0xFE, 0x7F, 0x03, 0xE7, 0xC0, 0x1E, 0xF8, 0x00, 0xEF, 0x00, + 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x03, 0xFE, 0xF0, + 0x3F, 0xFF, 0x03, 0xFF, 0xF8, 0x3F, 0xF7, 0x80, 0x1E, 0x7E, 0x01, 0xE3, + 0xFF, 0xFE, 0x1F, 0xFF, 0xE0, 0xFF, 0xF8, 0x01, 0xFE, 0x00, 0x7F, 0x0F, + 0xE3, 0xFC, 0x7F, 0x9F, 0xE3, 0xFC, 0x7F, 0x1F, 0xC1, 0xE0, 0x3C, 0x0F, + 0x01, 0xE0, 0x78, 0x0F, 0x03, 0xC0, 0x78, 0x1E, 0x03, 0xC0, 0xFF, 0xFE, + 0x07, 0xFF, 0xF0, 0x3F, 0xFF, 0x81, 0xFF, 0xFC, 0x0F, 0x01, 0xE0, 0x78, + 0x0F, 0x03, 0xC0, 0x78, 0x1E, 0x03, 0xC3, 0xFC, 0x7F, 0xBF, 0xE3, 0xFF, + 0xFF, 0x1F, 0xF7, 0xF0, 0x7F, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x00, + 0x78, 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x01, 0xE0, 0x07, 0x83, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xF8, 0x01, 0xFF, 0xE0, 0x3F, 0xFC, + 0x07, 0xFF, 0x80, 0xFF, 0xF0, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0xC0, + 0x00, 0x78, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x3C, 0x38, 0x07, 0x8F, + 0x00, 0xF1, 0xE0, 0x1E, 0x3C, 0x03, 0xC7, 0x80, 0xF8, 0xF8, 0x3F, 0x1F, + 0xFF, 0xC3, 0xFF, 0xF0, 0x1F, 0xFC, 0x00, 0x7E, 0x00, 0xFF, 0x0F, 0xCF, + 0xF9, 0xFE, 0xFF, 0x9F, 0xEF, 0xF8, 0xFC, 0x3C, 0x1F, 0x03, 0xC3, 0xE0, + 0x3C, 0x7C, 0x03, 0xCF, 0x80, 0x3D, 0xF0, 0x03, 0xFE, 0x00, 0x3F, 0xF8, + 0x03, 0xFF, 0x80, 0x3E, 0x7C, 0x03, 0xC3, 0xE0, 0x3C, 0x1E, 0x03, 0xC0, + 0xF0, 0x3C, 0x0F, 0x0F, 0xF8, 0x7E, 0xFF, 0x87, 0xFF, 0xF8, 0x7F, 0x7F, + 0x03, 0xE0, 0xFF, 0xC0, 0x3F, 0xF0, 0x0F, 0xFC, 0x03, 0xFF, 0x00, 0x1E, + 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, + 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x01, 0x87, 0x80, 0xF1, 0xE0, 0x3C, + 0x78, 0x0F, 0x1E, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, + 0xFF, 0xC0, 0x3E, 0x00, 0xF8, 0xFC, 0x01, 0xF9, 0xFC, 0x07, 0xF3, 0xF8, + 0x0F, 0xE3, 0xF8, 0x3F, 0x87, 0xF0, 0x7F, 0x0F, 0xF1, 0xFE, 0x1F, 0xE3, + 0xFC, 0x3D, 0xE7, 0x78, 0x7B, 0xDE, 0xF0, 0xF7, 0xBD, 0xE1, 0xE7, 0xF3, + 0xC3, 0xCF, 0xE7, 0x87, 0x8F, 0x8F, 0x0F, 0x1F, 0x1E, 0x1E, 0x1E, 0x3C, + 0x3C, 0x00, 0x79, 0xFF, 0x07, 0xFF, 0xFE, 0x0F, 0xFF, 0xFC, 0x1F, 0xF7, + 0xF0, 0x1F, 0xC0, 0xFC, 0x1F, 0xEF, 0xE1, 0xFF, 0xFE, 0x1F, 0xFF, 0xF1, + 0xFF, 0x3F, 0x83, 0xC3, 0xF8, 0x3C, 0x3F, 0xC3, 0xC3, 0xFC, 0x3C, 0x3D, + 0xE3, 0xC3, 0xDE, 0x3C, 0x3C, 0xF3, 0xC3, 0xC7, 0xBC, 0x3C, 0x7B, 0xC3, + 0xC3, 0xFC, 0x3C, 0x3F, 0xC3, 0xC1, 0xFC, 0x3C, 0x1F, 0xCF, 0xF8, 0xFC, + 0xFF, 0x87, 0xCF, 0xF8, 0x7C, 0x7F, 0x03, 0xC0, 0x01, 0xF8, 0x00, 0x7F, + 0xE0, 0x0F, 0xFF, 0x81, 0xFF, 0xFC, 0x3F, 0x0F, 0xC7, 0xC0, 0x3E, 0x78, + 0x01, 0xEF, 0x80, 0x1F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, + 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x80, 0x1F, 0x78, 0x01, 0xE7, 0xC0, 0x3E, + 0x3F, 0x0F, 0xC1, 0xFF, 0xF8, 0x1F, 0xFF, 0x00, 0x7F, 0xE0, 0x01, 0xF8, + 0x00, 0x7F, 0xF8, 0x3F, 0xFF, 0x8F, 0xFF, 0xF3, 0xFF, 0xFE, 0x3C, 0x0F, + 0xCF, 0x00, 0xF3, 0xC0, 0x3C, 0xF0, 0x0F, 0x3C, 0x03, 0xCF, 0x03, 0xF3, + 0xFF, 0xF8, 0xFF, 0xFC, 0x3F, 0xFE, 0x0F, 0xFE, 0x03, 0xC0, 0x00, 0xF0, + 0x00, 0x3C, 0x00, 0x3F, 0xF8, 0x0F, 0xFE, 0x03, 0xFF, 0x80, 0x7F, 0xC0, + 0x00, 0x01, 0xF8, 0x00, 0x7F, 0xE0, 0x0F, 0xFF, 0x01, 0xFF, 0xF8, 0x3F, + 0x0F, 0xC7, 0xC0, 0x3E, 0x78, 0x01, 0xEF, 0x80, 0x1F, 0xF0, 0x00, 0xFF, + 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x80, 0x1F, + 0x78, 0x01, 0xE7, 0xC0, 0x3E, 0x3F, 0x0F, 0xC1, 0xFF, 0xF8, 0x0F, 0xFF, + 0x00, 0x7F, 0xE0, 0x03, 0xF8, 0x00, 0x3F, 0x8E, 0x07, 0xFF, 0xF0, 0xFF, + 0xFF, 0x0F, 0xFF, 0xE0, 0x60, 0x78, 0x7F, 0xF8, 0x07, 0xFF, 0xF0, 0x3F, + 0xFF, 0xE0, 0xFF, 0xFF, 0x01, 0xE0, 0x7C, 0x0F, 0x01, 0xE0, 0x78, 0x0F, + 0x03, 0xC0, 0x78, 0x1E, 0x0F, 0xC0, 0xFF, 0xFC, 0x07, 0xFF, 0xC0, 0x3F, + 0xF8, 0x01, 0xFF, 0xE0, 0x0F, 0x0F, 0x80, 0x78, 0x3C, 0x03, 0xC0, 0xF0, + 0x1E, 0x07, 0xC3, 0xFE, 0x1F, 0xBF, 0xF0, 0x7F, 0xFF, 0x83, 0xF7, 0xF8, + 0x0F, 0x00, 0x07, 0xE7, 0x07, 0xFF, 0x8F, 0xFF, 0xC7, 0xFF, 0xE7, 0xC1, + 0xF3, 0xC0, 0x79, 0xE0, 0x3C, 0xF8, 0x00, 0x7F, 0x80, 0x1F, 0xFC, 0x07, + 0xFF, 0x81, 0xFF, 0xE0, 0x0F, 0xFB, 0x00, 0x7F, 0xC0, 0x1F, 0xE0, 0x0F, + 0xFC, 0x1F, 0xFF, 0xFF, 0xBF, 0xFF, 0x8D, 0xFF, 0x80, 0x3F, 0x00, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x1F, 0xE1, + 0xE3, 0xFC, 0x3C, 0x7F, 0x87, 0x8F, 0x60, 0xF0, 0xC0, 0x1E, 0x00, 0x03, + 0xC0, 0x00, 0x78, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x07, + 0x80, 0x00, 0xF0, 0x01, 0xFF, 0xE0, 0x3F, 0xFC, 0x07, 0xFF, 0x80, 0x7F, + 0xE0, 0xFF, 0x0F, 0xF7, 0xFC, 0x7F, 0xFF, 0xE3, 0xFE, 0xFF, 0x1F, 0xF3, + 0xC0, 0x1E, 0x1E, 0x00, 0xF0, 0xF0, 0x07, 0x87, 0x80, 0x3C, 0x3C, 0x01, + 0xE1, 0xE0, 0x0F, 0x0F, 0x00, 0x78, 0x78, 0x03, 0xC3, 0xC0, 0x1E, 0x1E, + 0x00, 0xF0, 0xF0, 0x07, 0x87, 0xC0, 0x7C, 0x1F, 0x07, 0xC0, 0xFF, 0xFE, + 0x03, 0xFF, 0xE0, 0x0F, 0xFE, 0x00, 0x1F, 0xC0, 0x00, 0xFF, 0x03, 0xFD, + 0xFF, 0x07, 0xFF, 0xFE, 0x0F, 0xFB, 0xF8, 0x1F, 0xE1, 0xC0, 0x07, 0x03, + 0xC0, 0x1E, 0x07, 0x80, 0x3C, 0x07, 0x80, 0xF0, 0x0F, 0x01, 0xE0, 0x0F, + 0x03, 0x80, 0x1E, 0x0F, 0x00, 0x3E, 0x1E, 0x00, 0x3C, 0x78, 0x00, 0x78, + 0xF0, 0x00, 0x7B, 0xC0, 0x00, 0xF7, 0x80, 0x01, 0xFF, 0x00, 0x01, 0xFC, + 0x00, 0x03, 0xF8, 0x00, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0xFF, 0x0F, + 0xF7, 0xFC, 0x7F, 0xFF, 0xE3, 0xFF, 0xFE, 0x0F, 0xF7, 0x80, 0x0F, 0x3C, + 0x38, 0x78, 0xE3, 0xE3, 0x87, 0x1F, 0x1C, 0x38, 0xF8, 0xE1, 0xEF, 0xE7, + 0x0F, 0x7F, 0x78, 0x7B, 0xBB, 0xC3, 0xFD, 0xFE, 0x0F, 0xEF, 0xF0, 0x7E, + 0x3F, 0x03, 0xF1, 0xF8, 0x1F, 0x8F, 0xC0, 0xFC, 0x3E, 0x07, 0xC1, 0xF0, + 0x3E, 0x0F, 0x81, 0xF0, 0x7C, 0x00, 0x7E, 0x0F, 0xDF, 0xE3, 0xFF, 0xFC, + 0x7F, 0xBF, 0x07, 0xE1, 0xE0, 0xF8, 0x3E, 0x3E, 0x03, 0xEF, 0x80, 0x3D, + 0xE0, 0x03, 0xF8, 0x00, 0x3E, 0x00, 0x03, 0xC0, 0x00, 0xF8, 0x00, 0x3F, + 0x80, 0x0F, 0x78, 0x03, 0xC7, 0x80, 0xF8, 0x78, 0x3E, 0x0F, 0x8F, 0xE3, + 0xFF, 0xFC, 0x7F, 0xFF, 0x8F, 0xF7, 0xE0, 0xFC, 0x7E, 0x07, 0xEF, 0xF0, + 0xFF, 0xFF, 0x0F, 0xF7, 0xE0, 0x7E, 0x1E, 0x07, 0x81, 0xF0, 0xF8, 0x0F, + 0x0F, 0x00, 0x79, 0xE0, 0x07, 0xFE, 0x00, 0x3F, 0xC0, 0x01, 0xF8, 0x00, + 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, + 0x00, 0xF0, 0x00, 0xFF, 0xE0, 0x0F, 0xFF, 0x00, 0xFF, 0xF0, 0x07, 0xFE, + 0x00, 0xFF, 0xFC, 0xFF, 0xFC, 0xFF, 0xFC, 0xFF, 0xFC, 0xF0, 0x3C, 0xF0, + 0x78, 0xF0, 0xF0, 0x70, 0xE0, 0x01, 0xE0, 0x03, 0xC0, 0x03, 0x80, 0x07, + 0x00, 0x0F, 0x00, 0x1E, 0x0E, 0x1C, 0x0F, 0x38, 0x0F, 0x78, 0x0F, 0x7F, + 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xFE, 0xFF, 0xFF, 0xFE, 0xE0, 0x01, + 0xE0, 0x03, 0xC0, 0x03, 0xC0, 0x07, 0x80, 0x07, 0x00, 0x0F, 0x00, 0x0E, + 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x3C, 0x00, 0x78, 0x00, 0x78, 0x00, 0xF0, + 0x00, 0xF0, 0x01, 0xE0, 0x01, 0xE0, 0x03, 0xC0, 0x03, 0xC0, 0x07, 0x80, + 0x07, 0x80, 0x0F, 0x00, 0x0F, 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x3C, 0x00, + 0x38, 0x00, 0x70, 0x7F, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x0F, 0x0F, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x07, 0x00, 0x1F, 0x00, + 0x7F, 0x00, 0xFE, 0x03, 0xDE, 0x0F, 0x1E, 0x3E, 0x3E, 0xF8, 0x3F, 0xE0, + 0x3F, 0x80, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xF0, 0xC3, 0x87, 0x0E, 0x1C, 0x30, 0x01, 0xFC, 0x01, 0xFF, 0xC0, + 0x3F, 0xFC, 0x07, 0xFF, 0xC0, 0x00, 0x78, 0x0F, 0xFF, 0x07, 0xFF, 0xE1, + 0xFF, 0xFC, 0x7F, 0xFF, 0x9F, 0x80, 0xF3, 0xC0, 0x1E, 0x78, 0x0F, 0xCF, + 0xFF, 0xFE, 0xFF, 0xFF, 0xCF, 0xFF, 0xF8, 0x7F, 0x3E, 0x7C, 0x00, 0x1F, + 0x80, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x0F, + 0x3F, 0x01, 0xFF, 0xF8, 0x3F, 0xFF, 0x87, 0xFF, 0xF0, 0xFC, 0x1F, 0x1F, + 0x01, 0xF3, 0xC0, 0x1E, 0x78, 0x03, 0xCF, 0x00, 0x79, 0xE0, 0x0F, 0x3E, + 0x03, 0xE7, 0xE0, 0xFB, 0xFF, 0xFF, 0x7F, 0xFF, 0xCF, 0xFF, 0xF0, 0xF9, + 0xF8, 0x00, 0x03, 0xF3, 0x87, 0xFF, 0xCF, 0xFF, 0xEF, 0xFF, 0xF7, 0xE0, + 0xFF, 0xC0, 0x3F, 0xC0, 0x0F, 0xE0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3E, + 0x00, 0x4F, 0x80, 0xF7, 0xFF, 0xF9, 0xFF, 0xF8, 0x7F, 0xF8, 0x0F, 0xF0, + 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x03, + 0xC0, 0x00, 0x3C, 0x03, 0xF3, 0xC0, 0xFF, 0xBC, 0x1F, 0xFF, 0xC3, 0xFF, + 0xFC, 0x7E, 0x0F, 0xC7, 0x80, 0x7C, 0xF0, 0x03, 0xCF, 0x00, 0x3C, 0xF0, + 0x03, 0xCF, 0x00, 0x3C, 0xF8, 0x07, 0xC7, 0xE0, 0xFC, 0x7F, 0xFF, 0xF3, + 0xFF, 0xFF, 0x0F, 0xFF, 0xF0, 0x3F, 0x3E, 0x03, 0xF0, 0x03, 0xFF, 0x01, + 0xFF, 0xE0, 0xFF, 0xFC, 0x7E, 0x0F, 0x9E, 0x01, 0xEF, 0x00, 0x3F, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xE0, 0x00, 0x7F, 0xFF, + 0xCF, 0xFF, 0xF1, 0xFF, 0xF8, 0x0F, 0xF0, 0x03, 0xFC, 0x07, 0xFF, 0x0F, + 0xFF, 0x1F, 0xFF, 0x1E, 0x00, 0x1E, 0x00, 0xFF, 0xF8, 0xFF, 0xFC, 0xFF, + 0xFC, 0xFF, 0xF8, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, + 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0xFF, 0xF8, 0xFF, 0xF8, 0xFF, + 0xF8, 0xFF, 0xF8, 0x07, 0xE7, 0xC3, 0xFF, 0xFC, 0xFF, 0xFF, 0xBF, 0xFF, + 0xF7, 0xC1, 0xF9, 0xF0, 0x1F, 0x3C, 0x01, 0xE7, 0x80, 0x3C, 0xF0, 0x07, + 0x9E, 0x00, 0xF3, 0xE0, 0x3E, 0x3E, 0x0F, 0xC7, 0xFF, 0xF8, 0x7F, 0xFF, + 0x07, 0xFD, 0xE0, 0x3F, 0x3C, 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x3E, + 0x03, 0xFF, 0x80, 0x7F, 0xF0, 0x0F, 0xFC, 0x00, 0xFE, 0x00, 0x3E, 0x00, + 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x01, 0xE0, 0x00, 0x0F, + 0x00, 0x00, 0x78, 0xF8, 0x03, 0xDF, 0xE0, 0x1F, 0xFF, 0x80, 0xFF, 0xFE, + 0x07, 0xE1, 0xF0, 0x3E, 0x07, 0x81, 0xE0, 0x3C, 0x0F, 0x01, 0xE0, 0x78, + 0x0F, 0x03, 0xC0, 0x78, 0x1E, 0x03, 0xC0, 0xF0, 0x1E, 0x1F, 0xC1, 0xFD, + 0xFE, 0x0F, 0xFF, 0xF0, 0x7F, 0xBF, 0x01, 0xF8, 0x03, 0xC0, 0x03, 0xC0, + 0x03, 0xC0, 0x03, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xC0, 0x3F, 0xC0, + 0x3F, 0xC0, 0x3F, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, + 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0xFF, 0xFE, 0xFF, 0xFF, + 0xFF, 0xFF, 0x7F, 0xFE, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x00, 0x00, + 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0x00, 0xF0, 0x0F, 0x00, 0xF0, + 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, + 0x0F, 0x00, 0xF0, 0x0F, 0x01, 0xFF, 0xFE, 0xFF, 0xEF, 0xFC, 0x7F, 0x00, + 0x7C, 0x00, 0x3F, 0x00, 0x0F, 0xC0, 0x03, 0xF0, 0x00, 0x3C, 0x00, 0x0F, + 0x00, 0x03, 0xC7, 0xF0, 0xF3, 0xFC, 0x3C, 0xFF, 0x0F, 0x3F, 0x83, 0xDF, + 0x00, 0xFF, 0x80, 0x3F, 0xC0, 0x0F, 0xE0, 0x03, 0xFC, 0x00, 0xF7, 0x80, + 0x3C, 0xF0, 0x0F, 0x1F, 0x0F, 0xC3, 0xFB, 0xF1, 0xFF, 0xFC, 0x7F, 0xDF, + 0x0F, 0xE0, 0x3F, 0xC0, 0x3F, 0xC0, 0x3F, 0xC0, 0x3F, 0xC0, 0x03, 0xC0, + 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, + 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, + 0x03, 0xC0, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFE, 0x3D, 0xE3, + 0xC1, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0x1F, 0xFF, 0xFE, 0x3E, 0x3C, 0x78, + 0xF0, 0xF1, 0xE3, 0xC3, 0xC7, 0x8F, 0x0F, 0x1E, 0x3C, 0x3C, 0x78, 0xF0, + 0xF1, 0xE3, 0xC3, 0xC7, 0x8F, 0x0F, 0x1E, 0xFE, 0x3E, 0x7F, 0xF8, 0xF9, + 0xFF, 0xE3, 0xE7, 0xDF, 0x0F, 0x1E, 0x1E, 0x7C, 0x03, 0xEF, 0xF0, 0x3F, + 0xFF, 0x83, 0xFF, 0xFC, 0x1F, 0x87, 0xC1, 0xE0, 0x3C, 0x1E, 0x03, 0xC1, + 0xE0, 0x3C, 0x1E, 0x03, 0xC1, 0xE0, 0x3C, 0x1E, 0x03, 0xC1, 0xE0, 0x3C, + 0x7F, 0x0F, 0xFF, 0xF0, 0xFF, 0xFF, 0x0F, 0xF7, 0xE0, 0x7E, 0x03, 0xF8, + 0x01, 0xFF, 0xC0, 0x7F, 0xFC, 0x1F, 0xFF, 0xC7, 0xE0, 0xFD, 0xF0, 0x07, + 0xFC, 0x00, 0x7F, 0x80, 0x0F, 0xF0, 0x01, 0xFE, 0x00, 0x3F, 0xE0, 0x0F, + 0xBF, 0x07, 0xE3, 0xFF, 0xF8, 0x3F, 0xFE, 0x03, 0xFF, 0x80, 0x1F, 0xC0, + 0x3E, 0x7E, 0x03, 0xF7, 0xFC, 0x1F, 0xFF, 0xF0, 0xFF, 0xFF, 0xC1, 0xF8, + 0x3F, 0x0F, 0x80, 0x7C, 0x78, 0x01, 0xE3, 0xC0, 0x0F, 0x1E, 0x00, 0x78, + 0xF0, 0x03, 0xC7, 0xC0, 0x3E, 0x3F, 0x07, 0xE1, 0xFF, 0xFE, 0x0F, 0xFF, + 0xE0, 0x7B, 0xFE, 0x03, 0xCF, 0xC0, 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x07, + 0x80, 0x00, 0xFF, 0x80, 0x0F, 0xFC, 0x00, 0x7F, 0xE0, 0x01, 0xFE, 0x00, + 0x00, 0x03, 0xF3, 0xE0, 0x7F, 0xDF, 0x87, 0xFF, 0xFC, 0x7F, 0xFF, 0xE7, + 0xE0, 0xFC, 0x7C, 0x03, 0xE3, 0xC0, 0x0F, 0x1E, 0x00, 0x78, 0xF0, 0x03, + 0xC7, 0x80, 0x1E, 0x3E, 0x01, 0xF0, 0xFC, 0x1F, 0x83, 0xFF, 0xFC, 0x1F, + 0xFF, 0xE0, 0x3F, 0xEF, 0x00, 0x7E, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, + 0x00, 0x00, 0xF0, 0x00, 0x3F, 0xE0, 0x01, 0xFF, 0x80, 0x0F, 0xFC, 0x00, + 0x3F, 0xC0, 0x7E, 0x1E, 0x7F, 0x3F, 0xFF, 0xBF, 0xFF, 0xFF, 0xF1, 0xFE, + 0x00, 0xFC, 0x00, 0x7C, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x07, + 0x80, 0x03, 0xC0, 0x0F, 0xFF, 0x87, 0xFF, 0xC3, 0xFF, 0xE1, 0xFF, 0xE0, + 0x07, 0xE6, 0x1F, 0xFE, 0x7F, 0xFE, 0x7F, 0xFE, 0x78, 0x1E, 0x78, 0x0E, + 0x7F, 0xE0, 0x3F, 0xFC, 0x03, 0xFE, 0x60, 0x1F, 0xE0, 0x0F, 0xF8, 0x1F, + 0xFF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFC, 0x07, 0xE0, 0x0C, 0x00, 0x0F, 0x00, + 0x07, 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x07, 0xFF, 0xF3, 0xFF, 0xF9, 0xFF, + 0xFC, 0xFF, 0xFC, 0x0F, 0x00, 0x07, 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x00, + 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1E, 0x07, 0x8F, 0xFF, 0xC3, 0xFF, + 0xC1, 0xFF, 0xC0, 0x3F, 0x80, 0xFC, 0x1F, 0xBF, 0x0F, 0xEF, 0xC3, 0xFB, + 0xF0, 0xFE, 0x3C, 0x07, 0x8F, 0x01, 0xE3, 0xC0, 0x78, 0xF0, 0x1E, 0x3C, + 0x07, 0x8F, 0x01, 0xE3, 0xC0, 0x78, 0xF8, 0x7E, 0x3F, 0xFF, 0xC7, 0xFF, + 0xF0, 0xFF, 0x7C, 0x0F, 0x9E, 0x7F, 0x07, 0xF7, 0xFC, 0x7F, 0xFF, 0xE3, + 0xFE, 0xFE, 0x0F, 0xE1, 0xE0, 0x3C, 0x0F, 0x01, 0xE0, 0x3C, 0x1E, 0x01, + 0xE0, 0xF0, 0x07, 0x8F, 0x00, 0x3E, 0x78, 0x00, 0xF7, 0x80, 0x07, 0xFC, + 0x00, 0x1F, 0xC0, 0x00, 0xFE, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x7E, + 0x03, 0xF7, 0xF8, 0x3F, 0xFF, 0xC1, 0xFE, 0xFC, 0x07, 0xF3, 0xC7, 0x0F, + 0x1E, 0x7C, 0xF0, 0x73, 0xE7, 0x83, 0x9F, 0x7C, 0x1F, 0xFF, 0xC0, 0xFF, + 0xFE, 0x03, 0xF7, 0xF0, 0x1F, 0xBF, 0x80, 0xFC, 0xF8, 0x07, 0xC7, 0xC0, + 0x1E, 0x3E, 0x00, 0xE0, 0xE0, 0x7E, 0x0F, 0xDF, 0xE3, 0xFF, 0xFC, 0x7F, + 0xBF, 0x07, 0xE1, 0xF1, 0xF0, 0x1F, 0xFC, 0x01, 0xFF, 0x00, 0x1F, 0xC0, + 0x07, 0xF8, 0x01, 0xFF, 0xC0, 0x7E, 0xFC, 0x1F, 0x8F, 0xC7, 0xE0, 0xFD, + 0xFE, 0x3F, 0xFF, 0xC7, 0xFF, 0xF0, 0x7F, 0x7E, 0x0F, 0xDF, 0xE3, 0xFF, + 0xFC, 0x7F, 0xBF, 0x07, 0xE3, 0xC0, 0x78, 0x3C, 0x0E, 0x07, 0x83, 0xC0, + 0x78, 0x70, 0x0F, 0x1E, 0x00, 0xE3, 0x80, 0x1E, 0xF0, 0x01, 0xDC, 0x00, + 0x3F, 0x80, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x07, 0x00, 0x01, 0xE0, 0x00, + 0x38, 0x00, 0x0F, 0x00, 0x3F, 0xF0, 0x0F, 0xFF, 0x01, 0xFF, 0xE0, 0x1F, + 0xF8, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF9, 0xC7, + 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x78, 0x03, 0xC0, 0x1E, 0x07, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x81, 0xF0, 0xFC, 0x7E, 0x1F, + 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0xF8, 0xFC, 0x3E, 0x0F, + 0x83, 0xF0, 0x3E, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xF0, 0x7E, + 0x0F, 0xC3, 0xF0, 0x38, 0x6F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x70, 0x3E, 0x0F, 0xC1, 0xF8, 0x3E, + 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x7C, 0x0F, 0xC1, 0xF0, + 0x7C, 0x3F, 0x1F, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x83, 0xE1, 0xF8, + 0xFC, 0x3F, 0x07, 0x00, 0x1E, 0x00, 0x1F, 0xC0, 0x1F, 0xF0, 0xDF, 0xFC, + 0xFF, 0x3F, 0xFB, 0x0F, 0xF8, 0x03, 0xF8, 0x00, 0x78}; + +const GFXglyph FreeMonoBold18pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 21, 0, 1}, // 0x20 ' ' + {0, 5, 22, 21, 8, -21}, // 0x21 '!' + {14, 11, 10, 21, 5, -20}, // 0x22 '"' + {28, 16, 25, 21, 3, -22}, // 0x23 '#' + {78, 14, 28, 21, 4, -23}, // 0x24 '$' + {127, 15, 21, 21, 3, -20}, // 0x25 '%' + {167, 15, 20, 21, 3, -19}, // 0x26 '&' + {205, 4, 10, 21, 8, -20}, // 0x27 ''' + {210, 8, 27, 21, 9, -21}, // 0x28 '(' + {237, 8, 27, 21, 4, -21}, // 0x29 ')' + {264, 16, 15, 21, 3, -21}, // 0x2A '*' + {294, 16, 19, 21, 3, -18}, // 0x2B '+' + {332, 7, 10, 21, 5, -3}, // 0x2C ',' + {341, 19, 4, 21, 1, -11}, // 0x2D '-' + {351, 5, 5, 21, 8, -4}, // 0x2E '.' + {355, 15, 28, 21, 3, -23}, // 0x2F '/' + {408, 16, 23, 21, 3, -22}, // 0x30 '0' + {454, 15, 22, 21, 3, -21}, // 0x31 '1' + {496, 15, 23, 21, 3, -22}, // 0x32 '2' + {540, 16, 23, 21, 3, -22}, // 0x33 '3' + {586, 15, 21, 21, 3, -20}, // 0x34 '4' + {626, 17, 22, 21, 2, -21}, // 0x35 '5' + {673, 15, 23, 21, 4, -22}, // 0x36 '6' + {717, 15, 22, 21, 3, -21}, // 0x37 '7' + {759, 15, 23, 21, 3, -22}, // 0x38 '8' + {803, 15, 23, 21, 4, -22}, // 0x39 '9' + {847, 5, 16, 21, 8, -15}, // 0x3A ':' + {857, 7, 22, 21, 5, -15}, // 0x3B ';' + {877, 18, 16, 21, 1, -17}, // 0x3C '<' + {913, 19, 10, 21, 1, -14}, // 0x3D '=' + {937, 18, 16, 21, 2, -17}, // 0x3E '>' + {973, 15, 21, 21, 4, -20}, // 0x3F '?' + {1013, 15, 27, 21, 3, -21}, // 0x40 '@' + {1064, 22, 21, 21, -1, -20}, // 0x41 'A' + {1122, 20, 21, 21, 1, -20}, // 0x42 'B' + {1175, 19, 21, 21, 1, -20}, // 0x43 'C' + {1225, 18, 21, 21, 2, -20}, // 0x44 'D' + {1273, 19, 21, 21, 1, -20}, // 0x45 'E' + {1323, 19, 21, 21, 1, -20}, // 0x46 'F' + {1373, 20, 21, 21, 1, -20}, // 0x47 'G' + {1426, 21, 21, 21, 0, -20}, // 0x48 'H' + {1482, 14, 21, 21, 4, -20}, // 0x49 'I' + {1519, 19, 21, 21, 2, -20}, // 0x4A 'J' + {1569, 20, 21, 21, 1, -20}, // 0x4B 'K' + {1622, 18, 21, 21, 2, -20}, // 0x4C 'L' + {1670, 23, 21, 21, -1, -20}, // 0x4D 'M' + {1731, 20, 21, 21, 1, -20}, // 0x4E 'N' + {1784, 20, 21, 21, 1, -20}, // 0x4F 'O' + {1837, 18, 21, 21, 1, -20}, // 0x50 'P' + {1885, 20, 26, 21, 1, -20}, // 0x51 'Q' + {1950, 21, 21, 21, 0, -20}, // 0x52 'R' + {2006, 17, 21, 21, 2, -20}, // 0x53 'S' + {2051, 19, 21, 21, 1, -20}, // 0x54 'T' + {2101, 21, 21, 21, 0, -20}, // 0x55 'U' + {2157, 23, 21, 21, -1, -20}, // 0x56 'V' + {2218, 21, 21, 21, 0, -20}, // 0x57 'W' + {2274, 19, 21, 21, 1, -20}, // 0x58 'X' + {2324, 20, 21, 21, 1, -20}, // 0x59 'Y' + {2377, 16, 21, 21, 3, -20}, // 0x5A 'Z' + {2419, 8, 27, 21, 9, -21}, // 0x5B '[' + {2446, 15, 28, 21, 3, -23}, // 0x5C '\' + {2499, 8, 27, 21, 4, -21}, // 0x5D ']' + {2526, 15, 11, 21, 3, -21}, // 0x5E '^' + {2547, 21, 4, 21, 0, 4}, // 0x5F '_' + {2558, 6, 6, 21, 6, -22}, // 0x60 '`' + {2563, 19, 16, 21, 1, -15}, // 0x61 'a' + {2601, 19, 22, 21, 1, -21}, // 0x62 'b' + {2654, 17, 16, 21, 2, -15}, // 0x63 'c' + {2688, 20, 22, 21, 1, -21}, // 0x64 'd' + {2743, 18, 16, 21, 1, -15}, // 0x65 'e' + {2779, 16, 22, 21, 4, -21}, // 0x66 'f' + {2823, 19, 23, 21, 1, -15}, // 0x67 'g' + {2878, 21, 22, 21, 0, -21}, // 0x68 'h' + {2936, 16, 22, 21, 3, -21}, // 0x69 'i' + {2980, 12, 29, 21, 5, -21}, // 0x6A 'j' + {3024, 18, 22, 21, 2, -21}, // 0x6B 'k' + {3074, 16, 22, 21, 3, -21}, // 0x6C 'l' + {3118, 22, 16, 21, -1, -15}, // 0x6D 'm' + {3162, 20, 16, 21, 0, -15}, // 0x6E 'n' + {3202, 19, 16, 21, 1, -15}, // 0x6F 'o' + {3240, 21, 23, 21, 0, -15}, // 0x70 'p' + {3301, 21, 23, 22, 1, -15}, // 0x71 'q' + {3362, 17, 16, 21, 3, -15}, // 0x72 'r' + {3396, 16, 16, 21, 3, -15}, // 0x73 's' + {3428, 17, 21, 21, 1, -20}, // 0x74 't' + {3473, 18, 16, 21, 1, -15}, // 0x75 'u' + {3509, 21, 16, 21, 0, -15}, // 0x76 'v' + {3551, 21, 16, 21, 0, -15}, // 0x77 'w' + {3593, 19, 16, 21, 1, -15}, // 0x78 'x' + {3631, 19, 23, 21, 1, -15}, // 0x79 'y' + {3686, 14, 16, 21, 3, -15}, // 0x7A 'z' + {3714, 10, 27, 21, 6, -21}, // 0x7B '{' + {3748, 4, 27, 21, 9, -21}, // 0x7C '|' + {3762, 10, 27, 21, 6, -21}, // 0x7D '}' + {3796, 17, 8, 21, 2, -13}}; // 0x7E '~' + +const GFXfont FreeMonoBold18pt7b PROGMEM = { + (uint8_t *)FreeMonoBold18pt7bBitmaps, (GFXglyph *)FreeMonoBold18pt7bGlyphs, + 0x20, 0x7E, 35}; + +// Approx. 4485 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBold24pt7b.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBold24pt7b.h new file mode 100644 index 0000000..eb79d6e --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBold24pt7b.h @@ -0,0 +1,674 @@ +#pragma once +#include + +const uint8_t FreeMonoBold24pt7bBitmaps[] PROGMEM = { + 0x38, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xF3, 0xE7, 0xCF, + 0x9F, 0x3E, 0x7C, 0xF9, 0xF3, 0xE3, 0x82, 0x00, 0x00, 0x00, 0x71, 0xF7, + 0xFF, 0xEF, 0x9E, 0x00, 0xFC, 0x7E, 0xF8, 0x7D, 0xF0, 0xFB, 0xE1, 0xF7, + 0xC3, 0xEF, 0x87, 0xDF, 0x0F, 0xBE, 0x1F, 0x38, 0x1C, 0x70, 0x38, 0xE0, + 0x71, 0xC0, 0xE3, 0x81, 0xC7, 0x03, 0x80, 0x01, 0xC1, 0xC0, 0x0F, 0x8F, + 0x80, 0x3E, 0x3E, 0x00, 0xF8, 0xF8, 0x03, 0xE3, 0xE0, 0x0F, 0x8F, 0x80, + 0x7E, 0x3E, 0x01, 0xF0, 0xF8, 0x07, 0xC7, 0xC0, 0x1F, 0x1F, 0x03, 0xFF, + 0xFF, 0x9F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFD, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, + 0x81, 0xF1, 0xF0, 0x07, 0xC7, 0xC0, 0x1F, 0x1F, 0x00, 0x7C, 0x7C, 0x1F, + 0xFF, 0xFC, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0x9F, 0xFF, + 0xFC, 0x0F, 0x8F, 0x80, 0x3E, 0x3E, 0x00, 0xF8, 0xF8, 0x03, 0xE3, 0xE0, + 0x0F, 0x8F, 0x80, 0x3E, 0x3E, 0x00, 0xF8, 0xF8, 0x03, 0xE3, 0xE0, 0x0F, + 0x8F, 0x80, 0x3C, 0x3C, 0x00, 0x00, 0xE0, 0x00, 0x3E, 0x00, 0x07, 0xC0, + 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x1F, 0xFF, 0x07, 0xFF, 0xF1, 0xFF, 0xFE, + 0x7F, 0xFF, 0xDF, 0xC1, 0xFB, 0xF0, 0x1F, 0x7C, 0x01, 0xEF, 0x80, 0x39, + 0xF8, 0x00, 0x3F, 0xF8, 0x03, 0xFF, 0xE0, 0x3F, 0xFF, 0x03, 0xFF, 0xF0, + 0x0F, 0xFF, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0xC0, 0x07, 0xF8, 0x00, 0xFF, + 0x80, 0x1F, 0xF8, 0x07, 0xFF, 0x81, 0xFB, 0xFF, 0xFF, 0x7F, 0xFF, 0xCF, + 0xFF, 0xF1, 0xDF, 0xFC, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, + 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x01, 0xC0, 0x00, + 0x0F, 0x80, 0x00, 0xFF, 0x00, 0x1F, 0xFC, 0x00, 0xF0, 0xE0, 0x0F, 0x07, + 0x80, 0x70, 0x1C, 0x03, 0x80, 0xE0, 0x1C, 0x07, 0x00, 0xF0, 0x78, 0x03, + 0xC3, 0x80, 0x1F, 0xFC, 0x00, 0x7F, 0xC1, 0xF0, 0xF8, 0x7F, 0x00, 0x3F, + 0xF0, 0x0F, 0xFC, 0x03, 0xFF, 0x00, 0xFF, 0xC0, 0x07, 0xE0, 0xF8, 0x38, + 0x1F, 0xE0, 0x01, 0xFF, 0x80, 0x0F, 0x1E, 0x00, 0xF0, 0x78, 0x07, 0x01, + 0xC0, 0x38, 0x0E, 0x01, 0xC0, 0x70, 0x0F, 0x07, 0x80, 0x38, 0x78, 0x01, + 0xFF, 0xC0, 0x07, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x1F, 0xFC, + 0x01, 0xFF, 0xE0, 0x1F, 0xFF, 0x00, 0xFF, 0xF8, 0x0F, 0xC7, 0x00, 0x7C, + 0x10, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xF0, 0x00, + 0x1F, 0x80, 0x00, 0xFE, 0x00, 0x0F, 0xF8, 0x00, 0xFF, 0xC7, 0xCF, 0xFF, + 0x3F, 0x7E, 0xFF, 0xFF, 0xE7, 0xFF, 0xBE, 0x1F, 0xF9, 0xF0, 0x7F, 0x8F, + 0x83, 0xFC, 0x7C, 0x0F, 0xE3, 0xF0, 0x7F, 0xCF, 0xFF, 0xFF, 0x7F, 0xFF, + 0xF9, 0xFF, 0xFF, 0xC7, 0xFF, 0xFC, 0x0F, 0xE0, 0x00, 0xFD, 0xF7, 0xDF, + 0x7D, 0xF7, 0xDF, 0x38, 0xE3, 0x8E, 0x38, 0xE0, 0x01, 0x80, 0xF0, 0x7C, + 0x3F, 0x0F, 0xC7, 0xE1, 0xF8, 0xFC, 0x3E, 0x0F, 0x87, 0xC1, 0xF0, 0x7C, + 0x1F, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, + 0x81, 0xF0, 0x7C, 0x1F, 0x07, 0xC0, 0xF8, 0x3E, 0x0F, 0xC1, 0xF0, 0x7E, + 0x0F, 0x83, 0xF0, 0x7C, 0x1F, 0x03, 0xC0, 0x60, 0x3C, 0x0F, 0x83, 0xF0, + 0xFC, 0x1F, 0x83, 0xE0, 0xFC, 0x1F, 0x07, 0xC1, 0xF8, 0x3E, 0x0F, 0x83, + 0xE0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, + 0x1E, 0x0F, 0x83, 0xE0, 0xF8, 0x7C, 0x1F, 0x0F, 0xC3, 0xE1, 0xF8, 0x7C, + 0x3F, 0x0F, 0x83, 0xE0, 0xF0, 0x00, 0x00, 0x70, 0x00, 0x07, 0xC0, 0x00, + 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x10, 0x7C, 0x11, 0xF3, 0xE7, + 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0x87, 0xFF, 0xF0, 0x07, + 0xFC, 0x00, 0x3F, 0xE0, 0x03, 0xFF, 0x80, 0x3F, 0x7E, 0x01, 0xFB, 0xF0, + 0x1F, 0x8F, 0xC0, 0xF8, 0x3E, 0x03, 0x80, 0xE0, 0x00, 0x38, 0x00, 0x00, + 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, + 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, + 0x01, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xDF, 0xFF, 0xFF, 0x00, 0x3E, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, + 0x01, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, + 0x1F, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x70, 0x00, 0x1F, + 0x8F, 0x87, 0xC7, 0xC3, 0xE1, 0xE1, 0xF0, 0xF0, 0x78, 0x38, 0x3C, 0x1C, + 0x0E, 0x06, 0x00, 0x7F, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFE, 0x7D, 0xFF, 0xFF, 0xFF, 0xEF, 0x80, + 0x00, 0x00, 0x60, 0x00, 0x0F, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x01, + 0xF0, 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, + 0xF8, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, + 0x3E, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x0F, 0xC0, 0x00, 0xF8, 0x00, + 0x1F, 0x80, 0x01, 0xF0, 0x00, 0x3F, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, + 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x1F, 0x00, + 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x07, 0xC0, + 0x00, 0xFC, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x00, 0x00, 0x01, + 0xFC, 0x00, 0x3F, 0xF8, 0x03, 0xFF, 0xE0, 0x3F, 0xFF, 0x83, 0xFF, 0xFE, + 0x1F, 0x83, 0xF1, 0xF8, 0x0F, 0xCF, 0x80, 0x3E, 0x7C, 0x01, 0xF7, 0xC0, + 0x07, 0xFE, 0x00, 0x3F, 0xF0, 0x01, 0xFF, 0x80, 0x0F, 0xFC, 0x00, 0x7F, + 0xE0, 0x03, 0xFF, 0x00, 0x1F, 0xF8, 0x00, 0xFF, 0xC0, 0x07, 0xFE, 0x00, + 0x3F, 0xF0, 0x01, 0xFF, 0x80, 0x0F, 0xFC, 0x00, 0x7D, 0xF0, 0x07, 0xCF, + 0x80, 0x3E, 0x7E, 0x03, 0xF1, 0xF8, 0x3F, 0x0F, 0xFF, 0xF8, 0x3F, 0xFF, + 0x80, 0xFF, 0xF8, 0x03, 0xFF, 0x80, 0x07, 0xF0, 0x00, 0x01, 0xF8, 0x00, + 0x3F, 0x80, 0x0F, 0xF8, 0x01, 0xFF, 0x80, 0x7F, 0xF8, 0x0F, 0xEF, 0x80, + 0xFC, 0xF8, 0x07, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, + 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, + 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, + 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x3F, 0xFF, 0xE7, + 0xFF, 0xFF, 0x7F, 0xFF, 0xF7, 0xFF, 0xFF, 0x3F, 0xFF, 0xE0, 0x01, 0xFC, + 0x00, 0x3F, 0xF8, 0x07, 0xFF, 0xF0, 0x7F, 0xFF, 0xC7, 0xFF, 0xFF, 0x3F, + 0x03, 0xFB, 0xF0, 0x07, 0xFF, 0x00, 0x1F, 0xF8, 0x00, 0xFB, 0x80, 0x07, + 0xC0, 0x00, 0x3E, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x03, 0xF8, 0x00, + 0x3F, 0x80, 0x03, 0xF8, 0x00, 0x3F, 0x80, 0x03, 0xF8, 0x00, 0x3F, 0x00, + 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xE0, + 0x0E, 0xFE, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x03, 0xF8, 0x00, 0xFF, 0xF8, 0x0F, 0xFF, + 0xE0, 0xFF, 0xFF, 0x8F, 0xFF, 0xFE, 0x7E, 0x03, 0xF1, 0xC0, 0x0F, 0xC0, + 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xFC, 0x00, 0x0F, + 0xC0, 0x0F, 0xFC, 0x00, 0xFF, 0xC0, 0x07, 0xFC, 0x00, 0x3F, 0xF0, 0x00, + 0xFF, 0xC0, 0x00, 0x7F, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xF0, 0x00, 0x0F, + 0x80, 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x01, 0xFF, 0xC0, + 0x3F, 0xBF, 0xFF, 0xFD, 0xFF, 0xFF, 0xC7, 0xFF, 0xFC, 0x1F, 0xFF, 0xC0, + 0x1F, 0xF0, 0x00, 0x00, 0x3F, 0x80, 0x03, 0xF8, 0x00, 0x7F, 0x80, 0x07, + 0xF8, 0x00, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xEF, 0x80, 0x3E, 0xF8, 0x03, + 0xCF, 0x80, 0x7C, 0xF8, 0x0F, 0x8F, 0x80, 0xF0, 0xF8, 0x1F, 0x0F, 0x81, + 0xE0, 0xF8, 0x3E, 0x0F, 0x87, 0xC0, 0xF8, 0x78, 0x0F, 0x8F, 0xFF, 0xFE, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x0F, + 0x80, 0x07, 0xFE, 0x00, 0xFF, 0xF0, 0x0F, 0xFF, 0x00, 0xFF, 0xF0, 0x07, + 0xFE, 0x3F, 0xFF, 0xC1, 0xFF, 0xFF, 0x0F, 0xFF, 0xF8, 0x7F, 0xFF, 0xC3, + 0xFF, 0xFC, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, + 0x01, 0xF0, 0x00, 0x0F, 0xBF, 0x00, 0x7F, 0xFF, 0x03, 0xFF, 0xFC, 0x1F, + 0xFF, 0xF0, 0xFF, 0xFF, 0x83, 0xC0, 0xFE, 0x00, 0x01, 0xF0, 0x00, 0x0F, + 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, + 0x03, 0xE0, 0x00, 0x3F, 0xF0, 0x03, 0xF7, 0xE0, 0x3F, 0xBF, 0xFF, 0xF9, + 0xFF, 0xFF, 0xC7, 0xFF, 0xFC, 0x1F, 0xFF, 0x80, 0x1F, 0xF0, 0x00, 0x00, + 0x1F, 0xC0, 0x0F, 0xFF, 0x01, 0xFF, 0xF0, 0x7F, 0xFF, 0x0F, 0xFF, 0xE1, + 0xFF, 0x00, 0x1F, 0xC0, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x07, 0xE0, 0x00, + 0x7C, 0x00, 0x0F, 0x8F, 0xC0, 0xF9, 0xFF, 0x0F, 0xFF, 0xF8, 0xFF, 0xFF, + 0xCF, 0xFF, 0xFC, 0xFF, 0x0F, 0xEF, 0xE0, 0x3E, 0xFC, 0x03, 0xFF, 0x80, + 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xF7, 0xC0, 0x3F, 0x7E, + 0x03, 0xF3, 0xF0, 0x7E, 0x3F, 0xFF, 0xE1, 0xFF, 0xFC, 0x0F, 0xFF, 0x80, + 0x7F, 0xF0, 0x01, 0xFC, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x1F, 0xF0, 0x03, 0xE0, 0x00, + 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, + 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x1F, 0x00, + 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x07, 0xC0, + 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, + 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x06, 0x00, 0x01, 0xF8, 0x00, 0xFF, + 0xF0, 0x1F, 0xFF, 0x83, 0xFF, 0xFC, 0x7F, 0xFF, 0xE7, 0xE0, 0x7E, 0xFC, + 0x03, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xF7, + 0xC0, 0x3E, 0x7E, 0x07, 0xE3, 0xFF, 0xFC, 0x0F, 0xFF, 0x00, 0xFF, 0xF0, + 0x1F, 0xFF, 0x83, 0xFF, 0xFC, 0x7F, 0x0F, 0xE7, 0xC0, 0x3E, 0xF8, 0x01, + 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xFC, 0x03, 0xF7, 0xE0, + 0x7E, 0x7F, 0xFF, 0xE3, 0xFF, 0xFC, 0x1F, 0xFF, 0x80, 0xFF, 0xF0, 0x03, + 0xFC, 0x00, 0x03, 0xF8, 0x00, 0xFF, 0xE0, 0x1F, 0xFF, 0x83, 0xFF, 0xF8, + 0x7F, 0xFF, 0xC7, 0xE0, 0xFE, 0xFC, 0x03, 0xEF, 0x80, 0x3E, 0xF8, 0x01, + 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x3F, 0xFC, 0x07, 0xF7, 0xE0, + 0xFF, 0x7F, 0xFF, 0xF3, 0xFF, 0xFF, 0x1F, 0xFF, 0xF0, 0xFF, 0x9F, 0x03, + 0xF1, 0xF0, 0x00, 0x3F, 0x00, 0x03, 0xE0, 0x00, 0x7E, 0x00, 0x0F, 0xC0, + 0x01, 0xFC, 0x00, 0x3F, 0x80, 0x0F, 0xF0, 0x7F, 0xFE, 0x0F, 0xFF, 0xC0, + 0xFF, 0xF8, 0x0F, 0xFF, 0x00, 0x3F, 0x80, 0x00, 0x7D, 0xFF, 0xFF, 0xFF, + 0xEF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xFF, + 0xFF, 0xFF, 0xEF, 0x80, 0x0F, 0x87, 0xF1, 0xFC, 0x7F, 0x1F, 0xC3, 0xE0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, + 0x1F, 0x87, 0xE1, 0xF0, 0xFC, 0x3E, 0x0F, 0x03, 0xC1, 0xE0, 0x78, 0x1C, + 0x07, 0x01, 0x80, 0x00, 0x00, 0x04, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x7F, + 0x00, 0x01, 0xFE, 0x00, 0x07, 0xFC, 0x00, 0x1F, 0xF0, 0x00, 0x7F, 0xC0, + 0x01, 0xFF, 0x00, 0x07, 0xFE, 0x00, 0x1F, 0xF8, 0x00, 0x7F, 0xE0, 0x00, + 0xFF, 0xE0, 0x00, 0x1F, 0xF8, 0x00, 0x07, 0xFE, 0x00, 0x01, 0xFF, 0x80, + 0x00, 0x7F, 0xE0, 0x00, 0x1F, 0xF8, 0x00, 0x07, 0xFC, 0x00, 0x01, 0xFE, + 0x00, 0x00, 0x7F, 0x00, 0x00, 0x1E, 0x7F, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFE, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFE, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFE, + 0x00, 0x00, 0x01, 0xE0, 0x00, 0x03, 0xF0, 0x00, 0x07, 0xF8, 0x00, 0x07, + 0xFC, 0x00, 0x03, 0xFE, 0x00, 0x01, 0xFF, 0x00, 0x00, 0xFF, 0x80, 0x00, + 0x7F, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x3F, 0xF0, 0x00, 0x3F, 0xF0, 0x01, + 0xFF, 0x00, 0x0F, 0xF8, 0x00, 0x7F, 0xC0, 0x03, 0xFE, 0x00, 0x1F, 0xF0, + 0x00, 0xFF, 0x80, 0x03, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x0F, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0xF8, 0x01, 0xFF, 0xF0, 0xFF, 0xFF, 0x8F, + 0xFF, 0xFC, 0xFF, 0xFF, 0xEF, 0xC0, 0x7E, 0xF8, 0x03, 0xFF, 0x80, 0x1F, + 0x70, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x3F, + 0xE0, 0x0F, 0xFC, 0x01, 0xFF, 0x00, 0x0F, 0xC0, 0x00, 0xF0, 0x00, 0x0F, + 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1F, 0x00, 0x03, 0xF8, 0x00, 0x3F, 0x80, 0x03, 0xF8, 0x00, + 0x3F, 0x80, 0x01, 0xF0, 0x00, 0x01, 0xF0, 0x00, 0xFF, 0x80, 0x3F, 0xF8, + 0x0F, 0xFF, 0x83, 0xE0, 0xF8, 0x78, 0x07, 0x1E, 0x00, 0xF3, 0x80, 0x0E, + 0x70, 0x01, 0xDE, 0x00, 0x3B, 0x80, 0x3F, 0x70, 0x1F, 0xEE, 0x07, 0xFD, + 0xC1, 0xFF, 0xB8, 0x7E, 0x77, 0x0F, 0x0E, 0xE3, 0xC1, 0xDC, 0x70, 0x3B, + 0x8E, 0x07, 0x71, 0xC0, 0xEE, 0x3C, 0x1D, 0xC3, 0xC3, 0xB8, 0x7F, 0xF7, + 0x07, 0xFF, 0xE0, 0x7F, 0xFC, 0x03, 0xFB, 0xC0, 0x00, 0x38, 0x00, 0x07, + 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x61, 0xF0, 0x3E, 0x1F, 0xFF, 0xC3, + 0xFF, 0xF0, 0x1F, 0xFC, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x80, 0x00, 0x7F, + 0xFE, 0x00, 0x03, 0xFF, 0xF0, 0x00, 0x1F, 0xFF, 0xC0, 0x00, 0x7F, 0xFE, + 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x01, 0xF7, 0xC0, 0x00, 0x0F, 0xBE, 0x00, + 0x00, 0x7D, 0xF8, 0x00, 0x07, 0xC7, 0xC0, 0x00, 0x3E, 0x3E, 0x00, 0x03, + 0xE0, 0xF8, 0x00, 0x1F, 0x07, 0xC0, 0x00, 0xF0, 0x3F, 0x00, 0x0F, 0x80, + 0xF8, 0x00, 0x7F, 0xFF, 0xC0, 0x07, 0xFF, 0xFF, 0x00, 0x3F, 0xFF, 0xF8, + 0x03, 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xFF, 0x00, 0xF8, 0x00, 0xF8, 0x0F, + 0x80, 0x03, 0xE1, 0xFF, 0x80, 0xFF, 0xDF, 0xFE, 0x0F, 0xFF, 0xFF, 0xF0, + 0x7F, 0xFF, 0xFF, 0x83, 0xFF, 0xDF, 0xF8, 0x0F, 0xFC, 0x7F, 0xFF, 0xC0, + 0x3F, 0xFF, 0xFC, 0x0F, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xF8, 0x7F, 0xFF, + 0xFE, 0x07, 0xC0, 0x1F, 0xC1, 0xF0, 0x01, 0xF0, 0x7C, 0x00, 0x7C, 0x1F, + 0x00, 0x1F, 0x07, 0xC0, 0x0F, 0xC1, 0xF0, 0x07, 0xE0, 0x7F, 0xFF, 0xF0, + 0x1F, 0xFF, 0xF8, 0x07, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, + 0xFC, 0x1F, 0x00, 0x3F, 0x87, 0xC0, 0x03, 0xF1, 0xF0, 0x00, 0x7C, 0x7C, + 0x00, 0x1F, 0x1F, 0x00, 0x07, 0xC7, 0xC0, 0x03, 0xF7, 0xFF, 0xFF, 0xFB, + 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, + 0x00, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0xE7, 0x01, 0xFF, 0xFF, 0xC1, 0xFF, + 0xFF, 0xE1, 0xFF, 0xFF, 0xF1, 0xFE, 0x07, 0xF8, 0xFC, 0x01, 0xFC, 0xFC, + 0x00, 0x7E, 0x7C, 0x00, 0x1F, 0x7E, 0x00, 0x0F, 0xBE, 0x00, 0x03, 0x9F, + 0x00, 0x00, 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, + 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x3E, 0x00, 0x00, + 0x1F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, 0xF0, 0x00, 0x39, 0xFC, 0x00, + 0x7C, 0x7F, 0x80, 0xFF, 0x1F, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0x81, 0xFF, + 0xFF, 0x00, 0x3F, 0xFF, 0x00, 0x07, 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0x7F, + 0xFF, 0xF0, 0x3F, 0xFF, 0xFC, 0x1F, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xC1, + 0xF0, 0x0F, 0xF0, 0xF8, 0x01, 0xF8, 0x7C, 0x00, 0x7E, 0x3E, 0x00, 0x1F, + 0x1F, 0x00, 0x0F, 0xCF, 0x80, 0x03, 0xE7, 0xC0, 0x01, 0xF3, 0xE0, 0x00, + 0xF9, 0xF0, 0x00, 0x7C, 0xF8, 0x00, 0x3E, 0x7C, 0x00, 0x1F, 0x3E, 0x00, + 0x0F, 0x9F, 0x00, 0x07, 0xCF, 0x80, 0x07, 0xE7, 0xC0, 0x03, 0xE3, 0xE0, + 0x03, 0xF1, 0xF0, 0x07, 0xF1, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xF8, 0xFF, + 0xFF, 0xF8, 0x7F, 0xFF, 0xF0, 0x1F, 0xFF, 0xE0, 0x00, 0x7F, 0xFF, 0xFF, + 0x7F, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, + 0xF0, 0xF8, 0x00, 0xF8, 0x7C, 0x00, 0x7C, 0x3E, 0x0E, 0x3E, 0x1F, 0x0F, + 0x9F, 0x0F, 0x87, 0xC7, 0x07, 0xC3, 0xE0, 0x03, 0xFF, 0xF0, 0x01, 0xFF, + 0xF8, 0x00, 0xFF, 0xFC, 0x00, 0x7F, 0xFE, 0x00, 0x3F, 0xFF, 0x00, 0x1F, + 0x0F, 0x80, 0x0F, 0x87, 0xC3, 0x87, 0xC1, 0xC3, 0xE3, 0xE0, 0x01, 0xF1, + 0xF0, 0x00, 0xF8, 0xF8, 0x00, 0x7D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, + 0xFF, 0xF8, 0xF8, 0x00, 0x7C, 0x7C, 0x00, 0x3E, 0x3E, 0x00, 0x1F, 0x1F, + 0x07, 0x0F, 0x8F, 0x87, 0xC3, 0x87, 0xC3, 0xE0, 0x03, 0xFF, 0xF0, 0x01, + 0xFF, 0xF8, 0x00, 0xFF, 0xFC, 0x00, 0x7F, 0xFE, 0x00, 0x3F, 0xFF, 0x00, + 0x1F, 0x0F, 0x80, 0x0F, 0x87, 0xC0, 0x07, 0xC3, 0xE0, 0x03, 0xE0, 0xE0, + 0x01, 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xFF, 0xF0, 0x01, 0xFF, 0xFC, + 0x00, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, + 0x7F, 0x8E, 0x00, 0xFF, 0xF7, 0x81, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0xE1, + 0xFF, 0xFF, 0xF1, 0xFE, 0x03, 0xF8, 0xFC, 0x00, 0xFC, 0xFC, 0x00, 0x3E, + 0x7C, 0x00, 0x1F, 0x7E, 0x00, 0x07, 0x3E, 0x00, 0x00, 0x1F, 0x00, 0x00, + 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, 0xF0, 0x0F, + 0xFE, 0xF8, 0x0F, 0xFF, 0xFC, 0x07, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, 0x00, + 0xFF, 0xFF, 0xC0, 0x01, 0xF3, 0xF0, 0x00, 0xF9, 0xFC, 0x00, 0x7C, 0x7F, + 0x80, 0xFE, 0x3F, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0x80, + 0x7F, 0xFF, 0x00, 0x07, 0xFC, 0x00, 0x3F, 0xE1, 0xFF, 0x1F, 0xFC, 0xFF, + 0xE7, 0xFF, 0x3F, 0xF9, 0xFF, 0xCF, 0xFE, 0x3F, 0xE1, 0xFF, 0x07, 0xC0, + 0x0F, 0x81, 0xF0, 0x03, 0xE0, 0x7C, 0x00, 0xF8, 0x1F, 0x00, 0x3E, 0x07, + 0xC0, 0x0F, 0x81, 0xF0, 0x03, 0xE0, 0x7F, 0xFF, 0xF8, 0x1F, 0xFF, 0xFE, + 0x07, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, 0xF8, 0x1F, 0x00, + 0x3E, 0x07, 0xC0, 0x0F, 0x81, 0xF0, 0x03, 0xE0, 0x7C, 0x00, 0xF8, 0x1F, + 0x00, 0x3E, 0x07, 0xC0, 0x0F, 0x87, 0xFE, 0x1F, 0xFB, 0xFF, 0xCF, 0xFF, + 0xFF, 0xF3, 0xFF, 0xFF, 0xFC, 0xFF, 0xF7, 0xFE, 0x1F, 0xF8, 0x7F, 0xFF, + 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFC, 0x03, 0xE0, + 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, + 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, + 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x1F, 0x00, + 0x03, 0xE0, 0x1F, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, + 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xC0, 0x7F, 0xFF, + 0xE0, 0x3F, 0xFF, 0xF0, 0x0F, 0xFF, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x07, + 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x00, + 0x7C, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x0F, 0x80, 0x00, + 0x07, 0xC0, 0xE0, 0x03, 0xE0, 0xF8, 0x01, 0xF0, 0x7C, 0x00, 0xF8, 0x3E, + 0x00, 0x7C, 0x1F, 0x00, 0x3E, 0x0F, 0x80, 0x1F, 0x07, 0xC0, 0x1F, 0x83, + 0xF8, 0x3F, 0x81, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, 0xC0, + 0x07, 0xFF, 0xC0, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0xE0, 0xFF, 0x9F, 0xFE, + 0x3F, 0xFB, 0xFF, 0xC7, 0xFF, 0x7F, 0xF8, 0xFF, 0xE7, 0xFE, 0x0F, 0xF8, + 0x3E, 0x01, 0xF8, 0x07, 0xC0, 0xFE, 0x00, 0xF8, 0x3F, 0x80, 0x1F, 0x0F, + 0xE0, 0x03, 0xE3, 0xF8, 0x00, 0x7D, 0xFC, 0x00, 0x0F, 0xFF, 0x00, 0x01, + 0xFF, 0xF0, 0x00, 0x3F, 0xFF, 0x00, 0x07, 0xFF, 0xF0, 0x00, 0xFE, 0x7F, + 0x00, 0x1F, 0x87, 0xF0, 0x03, 0xE0, 0x7E, 0x00, 0x7C, 0x07, 0xE0, 0x0F, + 0x80, 0x7E, 0x01, 0xF0, 0x0F, 0xC0, 0x3E, 0x00, 0xF8, 0x1F, 0xF8, 0x1F, + 0xF7, 0xFF, 0x81, 0xFF, 0xFF, 0xF0, 0x3F, 0xFF, 0xFE, 0x07, 0xFD, 0xFF, + 0x80, 0x7F, 0x00, 0x7F, 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0x3F, 0xFF, 0x80, + 0x1F, 0xFF, 0xC0, 0x07, 0xFF, 0xC0, 0x00, 0x3E, 0x00, 0x00, 0x1F, 0x00, + 0x00, 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, 0xF0, + 0x00, 0x00, 0xF8, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x0F, 0x80, 0x0E, 0x07, 0xC0, 0x0F, 0x83, 0xE0, 0x07, 0xC1, + 0xF0, 0x03, 0xE0, 0xF8, 0x01, 0xF0, 0x7C, 0x00, 0xF8, 0x3E, 0x00, 0x7D, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xDF, 0xFF, 0xFF, 0xE0, 0x3F, 0x80, 0x03, 0xF8, 0xFF, 0x80, 0x0F, 0xF9, + 0xFF, 0x00, 0x1F, 0xF3, 0xFF, 0x00, 0x7F, 0xE3, 0xFE, 0x00, 0xFF, 0x83, + 0xFE, 0x03, 0xFE, 0x07, 0xFC, 0x07, 0xFC, 0x0F, 0xFC, 0x1F, 0xF8, 0x1F, + 0xF8, 0x3F, 0xF0, 0x3F, 0xF0, 0x7F, 0xE0, 0x7D, 0xF1, 0xF7, 0xC0, 0xFB, + 0xE3, 0xEF, 0x81, 0xF7, 0xEF, 0xDF, 0x03, 0xE7, 0xDF, 0x3E, 0x07, 0xCF, + 0xFE, 0x7C, 0x0F, 0x8F, 0xF8, 0xF8, 0x1F, 0x1F, 0xF1, 0xF0, 0x3E, 0x1F, + 0xE3, 0xE0, 0x7C, 0x3F, 0x87, 0xC0, 0xF8, 0x3F, 0x0F, 0x81, 0xF0, 0x00, + 0x1F, 0x03, 0xE0, 0x00, 0x3E, 0x1F, 0xF8, 0x03, 0xFF, 0x7F, 0xF8, 0x0F, + 0xFF, 0xFF, 0xF0, 0x1F, 0xFF, 0xFF, 0xE0, 0x3F, 0xFD, 0xFF, 0x80, 0x3F, + 0xF0, 0x7F, 0x00, 0x7F, 0xEF, 0xF8, 0x0F, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, + 0xFC, 0x0F, 0xFF, 0x7F, 0xE0, 0x7F, 0xE1, 0xFF, 0x00, 0xF8, 0x1F, 0xF0, + 0x0F, 0x81, 0xFF, 0x80, 0xF8, 0x1F, 0xFC, 0x0F, 0x81, 0xFF, 0xC0, 0xF8, + 0x1F, 0x7E, 0x0F, 0x81, 0xF3, 0xF0, 0xF8, 0x1F, 0x3F, 0x0F, 0x81, 0xF1, + 0xF8, 0xF8, 0x1F, 0x0F, 0xCF, 0x81, 0xF0, 0xFC, 0xF8, 0x1F, 0x07, 0xEF, + 0x81, 0xF0, 0x3F, 0xF8, 0x1F, 0x03, 0xFF, 0x81, 0xF0, 0x1F, 0xF8, 0x1F, + 0x00, 0xFF, 0x81, 0xF0, 0x0F, 0xF8, 0x7F, 0xE0, 0x7F, 0x8F, 0xFF, 0x03, + 0xF8, 0xFF, 0xF0, 0x3F, 0x8F, 0xFF, 0x01, 0xF8, 0x7F, 0xE0, 0x0F, 0x80, + 0x00, 0x3F, 0x80, 0x00, 0x3F, 0xFC, 0x00, 0x0F, 0xFF, 0xE0, 0x03, 0xFF, + 0xFE, 0x00, 0xFF, 0xFF, 0xE0, 0x3F, 0xC1, 0xFE, 0x0F, 0xE0, 0x0F, 0xE1, + 0xF8, 0x00, 0xFC, 0x7E, 0x00, 0x0F, 0xCF, 0x80, 0x00, 0xFB, 0xF0, 0x00, + 0x1F, 0xFC, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x3F, 0xF0, 0x00, 0x07, 0xFE, + 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x1F, 0xF8, 0x00, 0x03, 0xFF, 0x00, 0x00, + 0x7F, 0xF0, 0x00, 0x1F, 0xBE, 0x00, 0x03, 0xE7, 0xE0, 0x00, 0xFC, 0x7E, + 0x00, 0x3F, 0x0F, 0xE0, 0x0F, 0xE0, 0xFF, 0x07, 0xF8, 0x0F, 0xFF, 0xFE, + 0x00, 0xFF, 0xFF, 0x80, 0x0F, 0xFF, 0xE0, 0x00, 0xFF, 0xF8, 0x00, 0x03, + 0xF8, 0x00, 0x7F, 0xFF, 0x80, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xF8, 0xFF, + 0xFF, 0xFC, 0x7F, 0xFF, 0xFE, 0x1F, 0x00, 0xFE, 0x1F, 0x00, 0x3F, 0x1F, + 0x00, 0x1F, 0x1F, 0x00, 0x1F, 0x1F, 0x00, 0x1F, 0x1F, 0x00, 0x1F, 0x1F, + 0x00, 0x3F, 0x1F, 0x00, 0x7E, 0x1F, 0xFF, 0xFE, 0x1F, 0xFF, 0xFC, 0x1F, + 0xFF, 0xF8, 0x1F, 0xFF, 0xF0, 0x1F, 0xFF, 0x80, 0x1F, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x7F, 0xFC, 0x00, 0xFF, + 0xFE, 0x00, 0xFF, 0xFE, 0x00, 0xFF, 0xFE, 0x00, 0x7F, 0xFC, 0x00, 0x00, + 0x3F, 0x80, 0x00, 0x3F, 0xFC, 0x00, 0x0F, 0xFF, 0xE0, 0x03, 0xFF, 0xFE, + 0x00, 0xFF, 0xFF, 0xE0, 0x3F, 0xC1, 0xFE, 0x0F, 0xE0, 0x0F, 0xE1, 0xF8, + 0x00, 0xFC, 0x7E, 0x00, 0x0F, 0xCF, 0x80, 0x00, 0xFB, 0xF0, 0x00, 0x1F, + 0xFC, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x3F, 0xF0, 0x00, 0x07, 0xFE, 0x00, + 0x00, 0xFF, 0xC0, 0x00, 0x1F, 0xF8, 0x00, 0x03, 0xFF, 0x80, 0x00, 0xFD, + 0xF0, 0x00, 0x1F, 0x3F, 0x00, 0x07, 0xE7, 0xF0, 0x01, 0xF8, 0x7F, 0x00, + 0x7F, 0x07, 0xF8, 0x3F, 0xC0, 0xFF, 0xFF, 0xF0, 0x07, 0xFF, 0xFC, 0x00, + 0x7F, 0xFF, 0x00, 0x07, 0xFF, 0xC0, 0x00, 0x7F, 0xC0, 0x00, 0x0F, 0x00, + 0x00, 0x03, 0xFF, 0x87, 0x80, 0xFF, 0xFF, 0xF8, 0x3F, 0xFF, 0xFF, 0x07, + 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xF0, 0x0F, 0x01, 0xF8, 0x00, 0x7F, 0xFF, + 0x80, 0x0F, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, 0xC0, + 0x7F, 0xFF, 0xFE, 0x00, 0xF8, 0x07, 0xE0, 0x0F, 0x80, 0x3F, 0x00, 0xF8, + 0x01, 0xF0, 0x0F, 0x80, 0x1F, 0x00, 0xF8, 0x01, 0xF0, 0x0F, 0x80, 0x3F, + 0x00, 0xF8, 0x0F, 0xE0, 0x0F, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0xC0, 0x0F, + 0xFF, 0xF0, 0x00, 0xFF, 0xFE, 0x00, 0x0F, 0xFF, 0xF0, 0x00, 0xF8, 0x3F, + 0x80, 0x0F, 0x81, 0xFC, 0x00, 0xF8, 0x0F, 0xE0, 0x0F, 0x80, 0x7E, 0x00, + 0xF8, 0x03, 0xF0, 0x7F, 0xF0, 0x1F, 0xEF, 0xFF, 0x81, 0xFF, 0xFF, 0xF8, + 0x0F, 0xFF, 0xFF, 0x80, 0x7F, 0x7F, 0xF0, 0x07, 0xE0, 0x01, 0xFC, 0x70, + 0x1F, 0xFD, 0xE0, 0xFF, 0xFF, 0x87, 0xFF, 0xFE, 0x3F, 0xFF, 0xF8, 0xFC, + 0x0F, 0xE7, 0xE0, 0x1F, 0x9F, 0x00, 0x3E, 0x7C, 0x00, 0xF9, 0xF0, 0x01, + 0xC7, 0xF0, 0x00, 0x0F, 0xF8, 0x00, 0x3F, 0xFF, 0x00, 0x7F, 0xFF, 0x00, + 0xFF, 0xFF, 0x00, 0xFF, 0xFC, 0x00, 0x1F, 0xF8, 0x00, 0x07, 0xE0, 0x00, + 0x0F, 0xDC, 0x00, 0x1F, 0xF8, 0x00, 0x7F, 0xE0, 0x01, 0xFF, 0xC0, 0x0F, + 0xFF, 0xC0, 0xFE, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xCF, 0xFF, 0xFE, 0x1C, + 0xFF, 0xF0, 0x00, 0xFE, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0xF0, 0x7F, + 0xE0, 0xF8, 0x3F, 0xF0, 0x7C, 0x1F, 0xF8, 0x3E, 0x0F, 0xFC, 0x1F, 0x07, + 0xFE, 0x0F, 0x83, 0xEE, 0x07, 0xC0, 0xE0, 0x03, 0xE0, 0x00, 0x01, 0xF0, + 0x00, 0x00, 0xF8, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, + 0xF0, 0x00, 0x0F, 0xFF, 0x80, 0x0F, 0xFF, 0xE0, 0x07, 0xFF, 0xF0, 0x03, + 0xFF, 0xF8, 0x00, 0xFF, 0xF8, 0x00, 0x7F, 0xE0, 0x7F, 0xEF, 0xFF, 0x0F, + 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0x7F, 0xE0, 0x7F, 0xE1, + 0xF0, 0x00, 0xF8, 0x1F, 0x00, 0x0F, 0x81, 0xF0, 0x00, 0xF8, 0x1F, 0x00, + 0x0F, 0x81, 0xF0, 0x00, 0xF8, 0x1F, 0x00, 0x0F, 0x81, 0xF0, 0x00, 0xF8, + 0x1F, 0x00, 0x0F, 0x81, 0xF0, 0x00, 0xF8, 0x1F, 0x00, 0x0F, 0x81, 0xF0, + 0x00, 0xF8, 0x1F, 0x00, 0x0F, 0x81, 0xF0, 0x00, 0xF8, 0x1F, 0x00, 0x0F, + 0x81, 0xF0, 0x00, 0xF8, 0x1F, 0x80, 0x1F, 0x80, 0xF8, 0x01, 0xF0, 0x0F, + 0xE0, 0x7F, 0x00, 0x7F, 0xFF, 0xE0, 0x03, 0xFF, 0xFE, 0x00, 0x1F, 0xFF, + 0x80, 0x00, 0xFF, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x7F, 0xE0, 0x1F, 0xFB, + 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xFC, 0x0F, 0xFF, 0x7F, + 0xE0, 0x1F, 0xF8, 0x7C, 0x00, 0x0F, 0x80, 0xF8, 0x00, 0x7C, 0x03, 0xE0, + 0x01, 0xF0, 0x07, 0xC0, 0x0F, 0x80, 0x1F, 0x00, 0x3E, 0x00, 0x7E, 0x00, + 0xF8, 0x00, 0xF8, 0x07, 0xC0, 0x03, 0xF0, 0x1F, 0x00, 0x07, 0xC0, 0xF8, + 0x00, 0x1F, 0x03, 0xE0, 0x00, 0x7E, 0x1F, 0x00, 0x00, 0xF8, 0x7C, 0x00, + 0x03, 0xF3, 0xF0, 0x00, 0x07, 0xCF, 0x80, 0x00, 0x1F, 0xBE, 0x00, 0x00, + 0x3F, 0xF0, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x07, + 0xF8, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0xFC, + 0x00, 0x00, 0x7F, 0xE0, 0x7F, 0xEF, 0xFF, 0x0F, 0xFF, 0xFF, 0xF0, 0xFF, + 0xFF, 0xFF, 0x0F, 0xFF, 0x7F, 0xE0, 0x7F, 0xE3, 0xE0, 0x00, 0x3C, 0x3E, + 0x0F, 0x83, 0xC3, 0xE1, 0xF8, 0x3C, 0x3E, 0x1F, 0x87, 0xC3, 0xE1, 0xFC, + 0x7C, 0x3E, 0x3F, 0xC7, 0xC1, 0xE3, 0xFC, 0x7C, 0x1F, 0x3F, 0xE7, 0xC1, + 0xF7, 0xFE, 0x78, 0x1F, 0x7F, 0xE7, 0x81, 0xF7, 0x9F, 0xF8, 0x1F, 0xF9, + 0xFF, 0x81, 0xFF, 0x9F, 0xF8, 0x0F, 0xF9, 0xFF, 0x80, 0xFF, 0x0F, 0xF8, + 0x0F, 0xF0, 0xFF, 0x80, 0xFF, 0x0F, 0xF0, 0x0F, 0xE0, 0x7F, 0x00, 0xFE, + 0x07, 0xF0, 0x0F, 0xE0, 0x7F, 0x00, 0xFC, 0x03, 0xF0, 0x07, 0xC0, 0x3F, + 0x00, 0x7F, 0x80, 0xFF, 0x3F, 0xF0, 0x7F, 0xEF, 0xFC, 0x1F, 0xFB, 0xFF, + 0x07, 0xFE, 0x7F, 0x80, 0xFF, 0x07, 0xE0, 0x3F, 0x00, 0xFC, 0x0F, 0x80, + 0x1F, 0x87, 0xC0, 0x03, 0xF3, 0xE0, 0x00, 0xFF, 0xF8, 0x00, 0x1F, 0xFC, + 0x00, 0x03, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x07, + 0xF0, 0x00, 0x03, 0xFE, 0x00, 0x01, 0xFF, 0xC0, 0x00, 0xFC, 0xF8, 0x00, + 0x7E, 0x3F, 0x00, 0x3F, 0x07, 0xE0, 0x1F, 0x80, 0xFC, 0x07, 0xE0, 0x1F, + 0x07, 0xFC, 0x0F, 0xFB, 0xFF, 0x87, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0xF8, + 0x7F, 0xF7, 0xFC, 0x0F, 0xF8, 0x7F, 0x80, 0x7F, 0xBF, 0xF0, 0x3F, 0xFF, + 0xFC, 0x0F, 0xFF, 0xFF, 0x03, 0xFF, 0x7F, 0x80, 0x7F, 0x87, 0xE0, 0x1F, + 0x80, 0xFC, 0x07, 0xC0, 0x1F, 0x03, 0xE0, 0x03, 0xE1, 0xF8, 0x00, 0xFC, + 0x7C, 0x00, 0x1F, 0xBE, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x7F, 0xC0, 0x00, + 0x1F, 0xE0, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, 0x00, + 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x07, 0xC0, 0x00, 0x1F, 0xFF, 0x00, 0x0F, 0xFF, 0xE0, 0x03, + 0xFF, 0xF8, 0x00, 0xFF, 0xFE, 0x00, 0x1F, 0xFF, 0x00, 0x7F, 0xFF, 0xF3, + 0xFF, 0xFF, 0x9F, 0xFF, 0xFC, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0x3E, 0x03, + 0xF1, 0xF0, 0x1F, 0x8F, 0x81, 0xF8, 0x7C, 0x1F, 0x83, 0xE1, 0xF8, 0x0E, + 0x1F, 0x80, 0x01, 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x0F, 0xC0, + 0x00, 0xFC, 0x00, 0x0F, 0xE0, 0x70, 0x7E, 0x07, 0xC7, 0xE0, 0x3E, 0x7E, + 0x01, 0xF7, 0xE0, 0x0F, 0xFF, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xBF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xBE, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, + 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, + 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, + 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x60, 0x00, 0x0F, 0x00, 0x00, + 0xF8, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7E, 0x00, + 0x03, 0xE0, 0x00, 0x3F, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x00, 0xF8, + 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x03, + 0xE0, 0x00, 0x1F, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, + 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xF0, + 0x00, 0x1F, 0x00, 0x01, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x07, + 0xC0, 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, + 0x1F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, + 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, + 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, + 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x7F, 0xFF, + 0xFF, 0xFF, 0xFF, 0x7F, 0xC0, 0x00, 0x40, 0x00, 0x06, 0x00, 0x00, 0xF0, + 0x00, 0x1F, 0x80, 0x03, 0xFC, 0x00, 0x7F, 0xE0, 0x0F, 0xFF, 0x00, 0xFF, + 0xF8, 0x1F, 0x9F, 0x83, 0xF0, 0xFC, 0x7E, 0x07, 0xEF, 0xC0, 0x3F, 0xF8, + 0x01, 0xFF, 0x80, 0x0F, 0x70, 0x00, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF0, 0xE0, 0x78, 0x3E, 0x0F, 0xC3, 0xF0, 0x7C, 0x1E, 0x06, 0x01, 0xFF, + 0x00, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0xE0, 0x1F, 0xFF, 0xF0, 0x0F, 0xFF, + 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x01, 0xFF, + 0xF8, 0x07, 0xFF, 0xF8, 0x1F, 0xFF, 0xF8, 0x3F, 0xFF, 0xF8, 0x7F, 0xFF, + 0xF8, 0x7F, 0x00, 0xF8, 0xFC, 0x00, 0xF8, 0xF8, 0x00, 0xF8, 0xF8, 0x03, + 0xF8, 0xFC, 0x0F, 0xFE, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x3F, 0xFF, + 0xFF, 0x1F, 0xFE, 0xFE, 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x00, 0x1F, 0xE0, + 0x00, 0x03, 0xFC, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, + 0x3E, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x1F, 0x0F, + 0xE0, 0x03, 0xEF, 0xFF, 0x00, 0x7F, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, 0x81, + 0xFF, 0xFF, 0xF8, 0x3F, 0xE0, 0x7F, 0x07, 0xF0, 0x03, 0xF0, 0xFC, 0x00, + 0x3E, 0x1F, 0x80, 0x07, 0xE3, 0xE0, 0x00, 0x7C, 0x7C, 0x00, 0x0F, 0x8F, + 0x80, 0x01, 0xF1, 0xF0, 0x00, 0x3E, 0x3E, 0x00, 0x07, 0xC7, 0xE0, 0x01, + 0xF8, 0xFC, 0x00, 0x3E, 0x1F, 0xC0, 0x0F, 0xCF, 0xFE, 0x07, 0xF3, 0xFF, + 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0x8F, 0xFF, 0xFF, 0xE0, 0xFE, 0x7F, 0xF0, + 0x00, 0x03, 0xF8, 0x00, 0x00, 0xFF, 0x18, 0x03, 0xFF, 0xFC, 0x0F, 0xFF, + 0xFC, 0x1F, 0xFF, 0xFC, 0x3F, 0xFF, 0xFC, 0x3F, 0x81, 0xFC, 0x7E, 0x00, + 0x7C, 0x7C, 0x00, 0x7C, 0xFC, 0x00, 0x3C, 0xF8, 0x00, 0x38, 0xF8, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xFC, 0x00, + 0x00, 0x7C, 0x00, 0x06, 0x7E, 0x00, 0x1F, 0x7F, 0x80, 0x7F, 0x3F, 0xFF, + 0xFF, 0x1F, 0xFF, 0xFE, 0x0F, 0xFF, 0xFC, 0x07, 0xFF, 0xF8, 0x00, 0xFF, + 0xC0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x1F, 0xE0, 0x00, + 0x07, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, 0xE0, + 0x00, 0x00, 0xF8, 0x00, 0xFE, 0x3E, 0x00, 0xFF, 0xEF, 0x80, 0xFF, 0xFF, + 0xE0, 0x7F, 0xFF, 0xF8, 0x3F, 0xFF, 0xFE, 0x1F, 0xE0, 0xFF, 0x87, 0xE0, + 0x0F, 0xE1, 0xF0, 0x01, 0xF8, 0xFC, 0x00, 0x7E, 0x3E, 0x00, 0x0F, 0x8F, + 0x80, 0x03, 0xE3, 0xE0, 0x00, 0xF8, 0xF8, 0x00, 0x3E, 0x3E, 0x00, 0x0F, + 0x8F, 0xC0, 0x07, 0xE1, 0xF0, 0x01, 0xF8, 0x7E, 0x00, 0xFE, 0x0F, 0xE0, + 0x7F, 0xE3, 0xFF, 0xFF, 0xFC, 0x7F, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xC0, + 0xFF, 0xEF, 0xE0, 0x0F, 0xC0, 0x00, 0x00, 0xFE, 0x00, 0x03, 0xFF, 0xC0, + 0x0F, 0xFF, 0xE0, 0x1F, 0xFF, 0xF0, 0x3F, 0xFF, 0xF8, 0x7F, 0x81, 0xFC, + 0x7E, 0x00, 0x7E, 0xFC, 0x00, 0x3E, 0xF8, 0x00, 0x3E, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF8, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7F, 0x80, 0x7E, + 0x3F, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0x0F, 0xFF, 0xFE, 0x07, 0xFF, 0xF8, + 0x00, 0xFF, 0x80, 0x00, 0x3F, 0xE0, 0x03, 0xFF, 0xE0, 0x1F, 0xFF, 0xC0, + 0xFF, 0xFF, 0x07, 0xFF, 0xF8, 0x1F, 0x80, 0x00, 0x7C, 0x00, 0x01, 0xF0, + 0x00, 0x07, 0xC0, 0x01, 0xFF, 0xFF, 0x0F, 0xFF, 0xFE, 0x3F, 0xFF, 0xF8, + 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0x00, 0x7C, 0x00, 0x01, 0xF0, 0x00, 0x07, + 0xC0, 0x00, 0x1F, 0x00, 0x00, 0x7C, 0x00, 0x01, 0xF0, 0x00, 0x07, 0xC0, + 0x00, 0x1F, 0x00, 0x00, 0x7C, 0x00, 0x01, 0xF0, 0x00, 0x07, 0xC0, 0x01, + 0xFF, 0xFF, 0x0F, 0xFF, 0xFE, 0x3F, 0xFF, 0xF8, 0xFF, 0xFF, 0xE1, 0xFF, + 0xFF, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xFF, 0xBF, 0x83, 0xFF, 0xFF, 0xE3, + 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xFB, 0xFC, 0x3F, 0xF9, 0xF8, 0x07, 0xF0, + 0xF8, 0x01, 0xF8, 0xFC, 0x00, 0xFC, 0x7C, 0x00, 0x3E, 0x3E, 0x00, 0x1F, + 0x1F, 0x00, 0x0F, 0x8F, 0x80, 0x07, 0xC7, 0xC0, 0x03, 0xE3, 0xF0, 0x03, + 0xF0, 0xF8, 0x01, 0xF8, 0x7E, 0x01, 0xFC, 0x3F, 0xC3, 0xFE, 0x0F, 0xFF, + 0xFF, 0x03, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xC0, 0x3F, 0xFB, 0xE0, 0x07, + 0xF1, 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xFE, 0x00, + 0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0x00, 0x3F, 0xFE, 0x00, + 0x0F, 0xFC, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, + 0x03, 0xFC, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, 0x0F, 0xC0, 0x07, 0xCF, 0xFC, 0x01, + 0xF7, 0xFF, 0x80, 0x7F, 0xFF, 0xF0, 0x1F, 0xFF, 0xFC, 0x07, 0xFC, 0x1F, + 0x81, 0xFC, 0x03, 0xE0, 0x7E, 0x00, 0xF8, 0x1F, 0x00, 0x3E, 0x07, 0xC0, + 0x0F, 0x81, 0xF0, 0x03, 0xE0, 0x7C, 0x00, 0xF8, 0x1F, 0x00, 0x3E, 0x07, + 0xC0, 0x0F, 0x81, 0xF0, 0x03, 0xE0, 0x7C, 0x00, 0xF8, 0x1F, 0x00, 0x3E, + 0x1F, 0xF0, 0x3F, 0xEF, 0xFE, 0x1F, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0xE1, + 0xFF, 0xDF, 0xF0, 0x3F, 0xE0, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, + 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1F, 0xF8, 0x01, 0xFF, 0xC0, 0x0F, 0xFE, 0x00, 0x7F, 0xF0, + 0x01, 0xFF, 0x80, 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x00, + 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, + 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x7F, 0xFF, 0xF7, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0x00, 0x00, 0x7C, + 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, + 0xFF, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, + 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, + 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, + 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x3F, 0x00, 0x3F, 0xBF, 0xFF, 0xBF, 0xFF, + 0x9F, 0xFF, 0xCF, 0xFF, 0x83, 0xFF, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x80, + 0x00, 0x3F, 0xC0, 0x00, 0x1F, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x00, 0xF8, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x0F, + 0x87, 0xFC, 0x07, 0xC7, 0xFF, 0x03, 0xE3, 0xFF, 0x81, 0xF1, 0xFF, 0xC0, + 0xF8, 0x7F, 0xC0, 0x7C, 0xFE, 0x00, 0x3E, 0xFE, 0x00, 0x1F, 0xFE, 0x00, + 0x0F, 0xFE, 0x00, 0x07, 0xFE, 0x00, 0x03, 0xFF, 0x80, 0x01, 0xFF, 0xE0, + 0x00, 0xFF, 0xF8, 0x00, 0x7C, 0xFE, 0x00, 0x3E, 0x3F, 0x80, 0x1F, 0x0F, + 0xE0, 0x3F, 0x81, 0xFF, 0xBF, 0xC1, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xF0, + 0x7F, 0xFB, 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, 0x01, 0xFF, 0xC0, 0x0F, 0xFE, + 0x00, 0x7F, 0xF0, 0x01, 0xFF, 0x80, 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, + 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, + 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x00, + 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, + 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x03, 0xFF, + 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xF8, + 0x00, 0x3C, 0x1F, 0x00, 0xFD, 0xFC, 0xFF, 0x07, 0xFF, 0xFF, 0xFE, 0x1F, + 0xFF, 0xFF, 0xF8, 0x7F, 0xFF, 0xFF, 0xF0, 0xFF, 0x1F, 0x87, 0xC1, 0xF8, + 0x7E, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, + 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, + 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, + 0x1F, 0x07, 0xC1, 0xF1, 0xFE, 0x1F, 0x87, 0xEF, 0xFC, 0x7F, 0x1F, 0xFF, + 0xF1, 0xFC, 0x7F, 0xFF, 0xC7, 0xF1, 0xFD, 0xFE, 0x1F, 0x87, 0xE0, 0x00, + 0x1F, 0x80, 0x1F, 0x9F, 0xF8, 0x1F, 0xDF, 0xFE, 0x0F, 0xFF, 0xFF, 0x87, + 0xFF, 0xFF, 0xC1, 0xFF, 0x07, 0xF0, 0x7F, 0x01, 0xF8, 0x3F, 0x00, 0x7C, + 0x1F, 0x00, 0x3E, 0x0F, 0x80, 0x1F, 0x07, 0xC0, 0x0F, 0x83, 0xE0, 0x07, + 0xC1, 0xF0, 0x03, 0xE0, 0xF8, 0x01, 0xF0, 0x7C, 0x00, 0xF8, 0x3E, 0x00, + 0x7C, 0x1F, 0x00, 0x3E, 0x3F, 0xE0, 0x7F, 0xBF, 0xF8, 0x7F, 0xFF, 0xFC, + 0x3F, 0xFF, 0xFE, 0x1F, 0xFB, 0xFE, 0x07, 0xF8, 0x00, 0x7F, 0x00, 0x01, + 0xFF, 0xF0, 0x01, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0xC1, + 0xFE, 0x0F, 0xF1, 0xFC, 0x01, 0xFC, 0xFC, 0x00, 0x7E, 0xFC, 0x00, 0x1F, + 0xFC, 0x00, 0x07, 0xFE, 0x00, 0x03, 0xFF, 0x00, 0x01, 0xFF, 0x80, 0x00, + 0xFF, 0xC0, 0x00, 0x7F, 0xF0, 0x00, 0x7E, 0xF8, 0x00, 0x7E, 0x7F, 0x00, + 0x7F, 0x1F, 0xC0, 0xFF, 0x07, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0x80, 0x7F, + 0xFF, 0x00, 0x1F, 0xFF, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x07, 0xE0, 0x03, + 0xF9, 0xFF, 0xC0, 0x7F, 0xBF, 0xFE, 0x07, 0xFF, 0xFF, 0xF8, 0x7F, 0xFF, + 0xFF, 0xC3, 0xFF, 0x83, 0xFC, 0x0F, 0xE0, 0x0F, 0xE0, 0xFC, 0x00, 0x7E, + 0x0F, 0xC0, 0x03, 0xF0, 0xF8, 0x00, 0x1F, 0x0F, 0x80, 0x01, 0xF0, 0xF8, + 0x00, 0x1F, 0x0F, 0x80, 0x01, 0xF0, 0xF8, 0x00, 0x3F, 0x0F, 0xC0, 0x03, + 0xF0, 0xFE, 0x00, 0x7E, 0x0F, 0xF8, 0x1F, 0xE0, 0xFF, 0xFF, 0xFC, 0x0F, + 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xF0, 0x0F, 0x9F, 0xFC, 0x00, 0xF8, 0x7F, + 0x00, 0x0F, 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, + 0xF8, 0x00, 0x00, 0x7F, 0xF8, 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0xFF, 0xFC, + 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0x7F, 0xF8, 0x00, 0x00, 0x00, 0x7E, 0x00, + 0x00, 0x3F, 0xF9, 0xFC, 0x0F, 0xFF, 0xDF, 0xE1, 0xFF, 0xFF, 0xFE, 0x3F, + 0xFF, 0xFF, 0xE3, 0xF8, 0x1F, 0xFC, 0x7F, 0x00, 0x7F, 0x07, 0xC0, 0x03, + 0xF0, 0xFC, 0x00, 0x3F, 0x0F, 0x80, 0x01, 0xF0, 0xF8, 0x00, 0x1F, 0x0F, + 0x80, 0x01, 0xF0, 0xF8, 0x00, 0x1F, 0x0F, 0xC0, 0x01, 0xF0, 0xFC, 0x00, + 0x3F, 0x07, 0xE0, 0x07, 0xF0, 0x7F, 0x81, 0xFF, 0x03, 0xFF, 0xFF, 0xF0, + 0x1F, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xF0, 0x03, 0xFF, 0x9F, 0x00, 0x0F, + 0xE1, 0xF0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x01, 0xF0, 0x00, 0x01, 0xFF, 0xE0, 0x00, 0x3F, 0xFF, 0x00, + 0x03, 0xFF, 0xF0, 0x00, 0x3F, 0xFF, 0x00, 0x01, 0xFF, 0xE0, 0x00, 0x01, + 0xF0, 0x3F, 0xC7, 0xFC, 0x7F, 0xCF, 0xFE, 0x7F, 0xDF, 0xFF, 0x7F, 0xFF, + 0xFF, 0x3F, 0xFF, 0x0E, 0x07, 0xFC, 0x00, 0x07, 0xF8, 0x00, 0x07, 0xF0, + 0x00, 0x07, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x07, 0xC0, 0x00, 0x07, 0xC0, + 0x00, 0x07, 0xC0, 0x00, 0x07, 0xC0, 0x00, 0x07, 0xC0, 0x00, 0x07, 0xC0, + 0x00, 0x7F, 0xFF, 0xC0, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, + 0xE0, 0x7F, 0xFF, 0xC0, 0x03, 0xFC, 0x60, 0x7F, 0xFF, 0x87, 0xFF, 0xFC, + 0x7F, 0xFF, 0xE7, 0xFF, 0xFF, 0x3F, 0x01, 0xF9, 0xF0, 0x07, 0xCF, 0xC0, + 0x1C, 0x7F, 0xF0, 0x03, 0xFF, 0xF8, 0x0F, 0xFF, 0xF0, 0x3F, 0xFF, 0xC0, + 0x3F, 0xFF, 0x00, 0x0F, 0xFD, 0xC0, 0x07, 0xFE, 0x00, 0x1F, 0xF8, 0x00, + 0xFF, 0xF0, 0x1F, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xEF, 0xFF, 0xFE, 0x3F, + 0xFF, 0xC0, 0x07, 0xF8, 0x00, 0x07, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x3E, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0xFF, + 0xF8, 0x7F, 0xFF, 0xF8, 0xFF, 0xFF, 0xF1, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, + 0x80, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xE0, 0x00, + 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3E, 0x00, 0x00, + 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x03, 0x83, 0xF0, 0x1F, 0x87, + 0xFF, 0xFF, 0x07, 0xFF, 0xFE, 0x0F, 0xFF, 0xF8, 0x07, 0xFF, 0xC0, 0x03, + 0xFC, 0x00, 0x7F, 0x01, 0xFE, 0x7F, 0x81, 0xFF, 0x3F, 0xC0, 0xFF, 0x9F, + 0xE0, 0x7F, 0xC7, 0xF0, 0x1F, 0xE0, 0xF8, 0x01, 0xF0, 0x7C, 0x00, 0xF8, + 0x3E, 0x00, 0x7C, 0x1F, 0x00, 0x3E, 0x0F, 0x80, 0x1F, 0x07, 0xC0, 0x0F, + 0x83, 0xE0, 0x07, 0xC1, 0xF0, 0x03, 0xE0, 0xF8, 0x01, 0xF0, 0x7C, 0x01, + 0xF8, 0x3F, 0x01, 0xFC, 0x1F, 0xC1, 0xFF, 0x07, 0xFF, 0xFF, 0xC3, 0xFF, + 0xFF, 0xE0, 0xFF, 0xF7, 0xF0, 0x3F, 0xF3, 0xF0, 0x03, 0xF0, 0x00, 0x7F, + 0xE0, 0x7F, 0xEF, 0xFF, 0x0F, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0x0F, + 0xFF, 0x7F, 0xE0, 0x7F, 0xE0, 0xF8, 0x01, 0xF0, 0x0F, 0xC0, 0x1F, 0x00, + 0x7C, 0x03, 0xE0, 0x07, 0xE0, 0x3E, 0x00, 0x3E, 0x07, 0xC0, 0x03, 0xF0, + 0x7C, 0x00, 0x1F, 0x0F, 0x80, 0x01, 0xF8, 0xF8, 0x00, 0x0F, 0x9F, 0x00, + 0x00, 0xFD, 0xF0, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0x03, + 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x1F, 0x80, + 0x00, 0x7F, 0x80, 0x1F, 0xEF, 0xFC, 0x03, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, + 0xFC, 0x03, 0xFF, 0x7F, 0x80, 0x1F, 0xE1, 0xF0, 0xF8, 0x7C, 0x1F, 0x1F, + 0x87, 0xC1, 0xF1, 0xF8, 0xFC, 0x1F, 0x1F, 0xCF, 0x80, 0xFB, 0xFC, 0xF8, + 0x0F, 0xBF, 0xDF, 0x80, 0xFB, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0x00, 0x7F, + 0xDF, 0xF0, 0x07, 0xF9, 0xFF, 0x00, 0x7F, 0x9F, 0xE0, 0x07, 0xF0, 0xFE, + 0x00, 0x3F, 0x0F, 0xE0, 0x03, 0xF0, 0x7E, 0x00, 0x3E, 0x07, 0xC0, 0x03, + 0xE0, 0x3C, 0x00, 0x3F, 0xC0, 0xFF, 0x1F, 0xF8, 0x7F, 0xE7, 0xFE, 0x1F, + 0xF9, 0xFF, 0x87, 0xFE, 0x3F, 0xC0, 0xFF, 0x03, 0xF8, 0x7F, 0x00, 0x7F, + 0x3F, 0x80, 0x0F, 0xFF, 0xC0, 0x01, 0xFF, 0xE0, 0x00, 0x3F, 0xE0, 0x00, + 0x07, 0xF8, 0x00, 0x07, 0xFF, 0x00, 0x03, 0xFF, 0xE0, 0x01, 0xFF, 0xFE, + 0x00, 0xFE, 0x1F, 0xC0, 0x7F, 0x03, 0xF8, 0x7F, 0xC0, 0xFF, 0xBF, 0xF8, + 0x7F, 0xFF, 0xFE, 0x1F, 0xFF, 0xFF, 0x87, 0xFF, 0x7F, 0xC0, 0xFF, 0x80, + 0x7F, 0x80, 0x7F, 0xBF, 0xF0, 0x3F, 0xFF, 0xFC, 0x0F, 0xFF, 0xFF, 0x03, + 0xFF, 0x7F, 0x80, 0x7F, 0x8F, 0xC0, 0x07, 0x81, 0xF0, 0x03, 0xE0, 0x7E, + 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xF0, 0x3E, 0x00, 0x7C, 0x0F, 0x80, + 0x0F, 0x87, 0xC0, 0x03, 0xE1, 0xF0, 0x00, 0x7C, 0xF8, 0x00, 0x1F, 0xFE, + 0x00, 0x03, 0xFF, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x1F, 0xE0, 0x00, 0x07, + 0xF0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x1F, 0x80, 0x00, + 0x07, 0xC0, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x1F, 0xFF, 0x80, + 0x0F, 0xFF, 0xF0, 0x03, 0xFF, 0xFC, 0x00, 0xFF, 0xFF, 0x00, 0x1F, 0xFF, + 0x80, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xF0, 0x3F, 0xBE, 0x0F, 0xC3, 0x83, 0xF0, 0x00, 0xFC, 0x00, + 0x3F, 0x00, 0x0F, 0xC0, 0x03, 0xF0, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x0F, + 0xC0, 0x3B, 0xF0, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x78, 0x03, 0xF0, 0x1F, 0xC0, 0xFF, 0x07, + 0xF8, 0x1F, 0x80, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, + 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x0F, 0x81, 0xFE, 0x0F, + 0xF0, 0x3F, 0x80, 0xFF, 0x01, 0xFE, 0x00, 0xFC, 0x01, 0xF0, 0x07, 0xC0, + 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, 0xF8, + 0x07, 0xF8, 0x0F, 0xF0, 0x3F, 0xC0, 0x7F, 0x00, 0x78, 0x77, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xE0, 0x78, 0x03, 0xF0, 0x0F, + 0xE0, 0x3F, 0xC0, 0x7F, 0x00, 0x7E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, + 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, + 0x07, 0xC0, 0x1F, 0xE0, 0x3F, 0xC0, 0x7F, 0x03, 0xFC, 0x1F, 0xE0, 0xFC, + 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, + 0x00, 0xF8, 0x07, 0xE0, 0x7F, 0x83, 0xFC, 0x0F, 0xF0, 0x3F, 0x80, 0x78, + 0x00, 0x07, 0x80, 0x00, 0x7F, 0x80, 0x03, 0xFF, 0x03, 0x9F, 0xFE, 0x1F, + 0xFF, 0xFC, 0xFF, 0xF3, 0xFF, 0xFF, 0x87, 0xFF, 0x9C, 0x0F, 0xFC, 0x00, + 0x0F, 0xE0, 0x00, 0x1F, 0x00}; + +const GFXglyph FreeMonoBold24pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 28, 0, 1}, // 0x20 ' ' + {0, 7, 31, 28, 10, -29}, // 0x21 '!' + {28, 15, 14, 28, 6, -28}, // 0x22 '"' + {55, 22, 34, 28, 3, -30}, // 0x23 '#' + {149, 19, 38, 28, 5, -31}, // 0x24 '$' + {240, 21, 30, 28, 4, -28}, // 0x25 '%' + {319, 21, 28, 28, 4, -26}, // 0x26 '&' + {393, 6, 14, 28, 11, -28}, // 0x27 ''' + {404, 10, 37, 28, 12, -29}, // 0x28 '(' + {451, 10, 37, 28, 6, -29}, // 0x29 ')' + {498, 21, 19, 28, 4, -28}, // 0x2A '*' + {548, 23, 26, 28, 3, -25}, // 0x2B '+' + {623, 9, 14, 28, 7, -6}, // 0x2C ',' + {639, 24, 5, 28, 2, -15}, // 0x2D '-' + {654, 7, 6, 28, 11, -4}, // 0x2E '.' + {660, 20, 38, 28, 4, -32}, // 0x2F '/' + {755, 21, 31, 28, 4, -29}, // 0x30 '0' + {837, 20, 29, 28, 4, -28}, // 0x31 '1' + {910, 21, 30, 28, 3, -29}, // 0x32 '2' + {989, 21, 31, 28, 4, -29}, // 0x33 '3' + {1071, 20, 28, 28, 4, -27}, // 0x34 '4' + {1141, 21, 31, 28, 4, -29}, // 0x35 '5' + {1223, 20, 31, 28, 5, -29}, // 0x36 '6' + {1301, 20, 30, 28, 4, -29}, // 0x37 '7' + {1376, 20, 31, 28, 4, -29}, // 0x38 '8' + {1454, 20, 31, 28, 5, -29}, // 0x39 '9' + {1532, 7, 22, 28, 11, -20}, // 0x3A ':' + {1552, 10, 28, 28, 6, -20}, // 0x3B ';' + {1587, 24, 21, 28, 2, -23}, // 0x3C '<' + {1650, 24, 14, 28, 2, -19}, // 0x3D '=' + {1692, 23, 22, 28, 3, -23}, // 0x3E '>' + {1756, 20, 29, 28, 5, -27}, // 0x3F '?' + {1829, 19, 36, 28, 4, -28}, // 0x40 '@' + {1915, 29, 27, 28, -1, -26}, // 0x41 'A' + {2013, 26, 27, 28, 1, -26}, // 0x42 'B' + {2101, 25, 29, 28, 2, -27}, // 0x43 'C' + {2192, 25, 27, 28, 1, -26}, // 0x44 'D' + {2277, 25, 27, 28, 1, -26}, // 0x45 'E' + {2362, 25, 27, 28, 1, -26}, // 0x46 'F' + {2447, 25, 29, 28, 2, -27}, // 0x47 'G' + {2538, 26, 27, 28, 1, -26}, // 0x48 'H' + {2626, 19, 27, 28, 5, -26}, // 0x49 'I' + {2691, 25, 28, 28, 3, -26}, // 0x4A 'J' + {2779, 27, 27, 28, 1, -26}, // 0x4B 'K' + {2871, 25, 27, 28, 2, -26}, // 0x4C 'L' + {2956, 31, 27, 28, -1, -26}, // 0x4D 'M' + {3061, 28, 27, 28, 0, -26}, // 0x4E 'N' + {3156, 27, 29, 28, 1, -27}, // 0x4F 'O' + {3254, 24, 27, 28, 1, -26}, // 0x50 'P' + {3335, 27, 35, 28, 1, -27}, // 0x51 'Q' + {3454, 28, 27, 28, 0, -26}, // 0x52 'R' + {3549, 22, 29, 28, 3, -27}, // 0x53 'S' + {3629, 25, 27, 28, 2, -26}, // 0x54 'T' + {3714, 28, 28, 28, 0, -26}, // 0x55 'U' + {3812, 30, 27, 28, -1, -26}, // 0x56 'V' + {3914, 28, 27, 28, 0, -26}, // 0x57 'W' + {4009, 26, 27, 28, 1, -26}, // 0x58 'X' + {4097, 26, 27, 28, 1, -26}, // 0x59 'Y' + {4185, 21, 27, 28, 4, -26}, // 0x5A 'Z' + {4256, 10, 37, 28, 12, -29}, // 0x5B '[' + {4303, 20, 38, 28, 4, -32}, // 0x5C '\' + {4398, 10, 37, 28, 6, -29}, // 0x5D ']' + {4445, 20, 15, 28, 4, -29}, // 0x5E '^' + {4483, 28, 5, 28, 0, 5}, // 0x5F '_' + {4501, 9, 8, 28, 8, -30}, // 0x60 '`' + {4510, 24, 23, 28, 2, -21}, // 0x61 'a' + {4579, 27, 31, 28, 0, -29}, // 0x62 'b' + {4684, 24, 23, 28, 3, -21}, // 0x63 'c' + {4753, 26, 31, 28, 2, -29}, // 0x64 'd' + {4854, 24, 23, 28, 2, -21}, // 0x65 'e' + {4923, 22, 30, 28, 4, -29}, // 0x66 'f' + {5006, 25, 31, 28, 2, -21}, // 0x67 'g' + {5103, 26, 30, 28, 1, -29}, // 0x68 'h' + {5201, 21, 29, 28, 4, -28}, // 0x69 'i' + {5278, 17, 38, 28, 5, -28}, // 0x6A 'j' + {5359, 25, 30, 28, 2, -29}, // 0x6B 'k' + {5453, 21, 30, 28, 4, -29}, // 0x6C 'l' + {5532, 30, 22, 28, -1, -21}, // 0x6D 'm' + {5615, 25, 22, 28, 1, -21}, // 0x6E 'n' + {5684, 25, 23, 28, 2, -21}, // 0x6F 'o' + {5756, 28, 31, 28, 0, -21}, // 0x70 'p' + {5865, 28, 31, 28, 1, -21}, // 0x71 'q' + {5974, 24, 22, 28, 3, -21}, // 0x72 'r' + {6040, 21, 23, 28, 4, -21}, // 0x73 's' + {6101, 23, 28, 28, 1, -26}, // 0x74 't' + {6182, 25, 22, 28, 1, -20}, // 0x75 'u' + {6251, 28, 21, 28, 0, -20}, // 0x76 'v' + {6325, 28, 21, 28, 0, -20}, // 0x77 'w' + {6399, 26, 21, 28, 1, -20}, // 0x78 'x' + {6468, 26, 30, 28, 1, -20}, // 0x79 'y' + {6566, 19, 21, 28, 5, -20}, // 0x7A 'z' + {6616, 14, 37, 28, 7, -29}, // 0x7B '{' + {6681, 5, 36, 28, 12, -28}, // 0x7C '|' + {6704, 14, 37, 28, 8, -29}, // 0x7D '}' + {6769, 22, 10, 28, 3, -17}}; // 0x7E '~' + +const GFXfont FreeMonoBold24pt7b PROGMEM = { + (uint8_t *)FreeMonoBold24pt7bBitmaps, (GFXglyph *)FreeMonoBold24pt7bGlyphs, + 0x20, 0x7E, 47}; + +// Approx. 7469 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBold9pt7b.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBold9pt7b.h new file mode 100644 index 0000000..44320f8 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBold9pt7b.h @@ -0,0 +1,191 @@ +#pragma once +#include + +const uint8_t FreeMonoBold9pt7bBitmaps[] PROGMEM = { + 0xFF, 0xFF, 0xD2, 0x1F, 0x80, 0xEC, 0x89, 0x12, 0x24, 0x40, 0x36, 0x36, + 0x36, 0x7F, 0x7F, 0x36, 0xFF, 0xFF, 0x3C, 0x3C, 0x3C, 0x00, 0x18, 0xFF, + 0xFE, 0x3C, 0x1F, 0x1F, 0x83, 0x46, 0x8D, 0xF0, 0xC1, 0x83, 0x00, 0x61, + 0x22, 0x44, 0x86, 0x67, 0x37, 0x11, 0x22, 0x4C, 0x70, 0x3C, 0x7E, 0x60, + 0x60, 0x30, 0x7B, 0xDF, 0xCE, 0xFF, 0x7F, 0xC9, 0x24, 0x37, 0x66, 0xCC, + 0xCC, 0xCC, 0x66, 0x31, 0xCE, 0x66, 0x33, 0x33, 0x33, 0x66, 0xC8, 0x18, + 0x18, 0xFF, 0xFF, 0x3C, 0x3C, 0x66, 0x18, 0x18, 0x18, 0xFF, 0xFF, 0x18, + 0x18, 0x18, 0x18, 0x6B, 0x48, 0xFF, 0xFF, 0xC0, 0xF0, 0x02, 0x0C, 0x18, + 0x60, 0xC3, 0x06, 0x0C, 0x30, 0x61, 0x83, 0x0C, 0x18, 0x20, 0x00, 0x38, + 0xFB, 0xBE, 0x3C, 0x78, 0xF1, 0xE3, 0xC7, 0xDD, 0xF1, 0xC0, 0x38, 0xF3, + 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0xFD, 0xF8, 0x3C, 0xFE, 0xC7, 0x03, + 0x03, 0x06, 0x0C, 0x18, 0x70, 0xE3, 0xFF, 0xFF, 0x7C, 0xFE, 0x03, 0x03, + 0x03, 0x1E, 0x1E, 0x07, 0x03, 0x03, 0xFE, 0x7C, 0x1C, 0x38, 0xB1, 0x64, + 0xD9, 0xBF, 0xFF, 0x3E, 0x7C, 0x7E, 0x3F, 0x18, 0x0F, 0xC7, 0xF3, 0x1C, + 0x06, 0x03, 0xC3, 0xFF, 0x9F, 0x80, 0x0F, 0x3F, 0x30, 0x60, 0x60, 0xDC, + 0xFE, 0xE3, 0xC3, 0x63, 0x7E, 0x3C, 0xFF, 0xFF, 0xC3, 0x03, 0x06, 0x06, + 0x06, 0x0C, 0x0C, 0x0C, 0x18, 0x38, 0xFB, 0x1E, 0x3C, 0x6F, 0x9F, 0x63, + 0xC7, 0x8F, 0xF1, 0xC0, 0x3C, 0x7E, 0xE6, 0xC3, 0xC3, 0xE7, 0x7F, 0x3B, + 0x06, 0x0E, 0xFC, 0xF0, 0xF0, 0x0F, 0x6C, 0x00, 0x1A, 0xD2, 0x00, 0x01, + 0x83, 0x87, 0x0E, 0x0F, 0x80, 0xE0, 0x1C, 0x03, 0xFF, 0xFF, 0xC0, 0x00, + 0x0F, 0xFF, 0xFC, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0xF9, 0xE3, 0xC1, 0x80, + 0x7C, 0xFE, 0xC7, 0x03, 0x0E, 0x1C, 0x00, 0x00, 0x00, 0x30, 0x30, 0x1E, + 0x1F, 0x1C, 0xDC, 0x6C, 0x76, 0x7B, 0x6D, 0xB6, 0xDB, 0x6F, 0xF3, 0xFC, + 0x06, 0x33, 0xF8, 0x78, 0x3C, 0x07, 0xC0, 0x38, 0x05, 0x81, 0xB0, 0x36, + 0x0F, 0xE1, 0xFC, 0x71, 0xDF, 0x7F, 0xEF, 0x80, 0xFF, 0x3F, 0xE6, 0x19, + 0x86, 0x7F, 0x1F, 0xE6, 0x1D, 0x83, 0x60, 0xFF, 0xFF, 0xF0, 0x1F, 0xBF, + 0xD8, 0xF8, 0x3C, 0x06, 0x03, 0x01, 0x80, 0x61, 0xBF, 0xC7, 0xC0, 0xFE, + 0x3F, 0xE6, 0x19, 0x83, 0x60, 0xD8, 0x36, 0x0D, 0x83, 0x61, 0xBF, 0xEF, + 0xE0, 0xFF, 0xFF, 0xD8, 0x6D, 0xB7, 0xC3, 0xE1, 0xB0, 0xC3, 0x61, 0xFF, + 0xFF, 0xE0, 0xFF, 0xFF, 0xD8, 0x6D, 0xB7, 0xC3, 0xE1, 0xB0, 0xC0, 0x60, + 0x7C, 0x3E, 0x00, 0x1F, 0x9F, 0xE6, 0x1B, 0x06, 0xC0, 0x30, 0x0C, 0x7F, + 0x1F, 0xE1, 0x9F, 0xE3, 0xF0, 0xF7, 0xFB, 0xD8, 0xCC, 0x66, 0x33, 0xF9, + 0xFC, 0xC6, 0x63, 0x7B, 0xFD, 0xE0, 0xFF, 0xF3, 0x0C, 0x30, 0xC3, 0x0C, + 0x33, 0xFF, 0xC0, 0x1F, 0xC7, 0xF0, 0x30, 0x0C, 0x03, 0x00, 0xCC, 0x33, + 0x0C, 0xC7, 0x3F, 0x87, 0xC0, 0xF7, 0xBD, 0xE6, 0x61, 0xB0, 0x78, 0x1F, + 0x06, 0xE1, 0x98, 0x63, 0x3C, 0xFF, 0x3C, 0xFC, 0x7E, 0x0C, 0x06, 0x03, + 0x01, 0x80, 0xC6, 0x63, 0x31, 0xFF, 0xFF, 0xE0, 0xE0, 0xFE, 0x3D, 0xC7, + 0x3D, 0xE7, 0xBC, 0xD7, 0x9B, 0xB3, 0x76, 0x60, 0xDE, 0x3F, 0xC7, 0x80, + 0xE1, 0xFE, 0x3D, 0xE3, 0x3C, 0x66, 0xCC, 0xDD, 0x99, 0xB3, 0x1E, 0x63, + 0xDE, 0x3B, 0xC3, 0x00, 0x1F, 0x07, 0xF1, 0xC7, 0x70, 0x7C, 0x07, 0x80, + 0xF0, 0x1F, 0x07, 0x71, 0xC7, 0xF0, 0x7C, 0x00, 0xFE, 0x7F, 0x98, 0x6C, + 0x36, 0x1B, 0xF9, 0xF8, 0xC0, 0x60, 0x7C, 0x3E, 0x00, 0x1F, 0x07, 0xF1, + 0xC7, 0x70, 0x7C, 0x07, 0x80, 0xF0, 0x1F, 0x07, 0x71, 0xC7, 0xF0, 0x7C, + 0x0C, 0x33, 0xFE, 0x7F, 0x80, 0xFC, 0x7F, 0x18, 0xCC, 0x66, 0x73, 0xF1, + 0xF0, 0xCC, 0x63, 0x7D, 0xFE, 0x60, 0x3F, 0xBF, 0xF0, 0x78, 0x0F, 0x03, + 0xF8, 0x3F, 0x83, 0xC3, 0xFF, 0xBF, 0x80, 0xFF, 0xFF, 0xF6, 0x7B, 0x3D, + 0x98, 0xC0, 0x60, 0x30, 0x18, 0x3F, 0x1F, 0x80, 0xF1, 0xFE, 0x3D, 0x83, + 0x30, 0x66, 0x0C, 0xC1, 0x98, 0x33, 0x06, 0x60, 0xC7, 0xF0, 0x7C, 0x00, + 0xFB, 0xFF, 0x7D, 0xC3, 0x18, 0xC3, 0x18, 0x36, 0x06, 0xC0, 0x50, 0x0E, + 0x01, 0xC0, 0x10, 0x00, 0xFB, 0xFE, 0xF6, 0x0D, 0x93, 0x6E, 0xDB, 0xB7, + 0xAD, 0xEE, 0x7B, 0x8E, 0xE3, 0x18, 0xF3, 0xFC, 0xF7, 0x38, 0xFC, 0x1E, + 0x03, 0x01, 0xE0, 0xCC, 0x73, 0xBC, 0xFF, 0x3C, 0xF3, 0xFC, 0xF7, 0x38, + 0xCC, 0x1E, 0x07, 0x80, 0xC0, 0x30, 0x0C, 0x0F, 0xC3, 0xF0, 0xFE, 0xFE, + 0xC6, 0xCC, 0x18, 0x18, 0x30, 0x63, 0xC3, 0xFF, 0xFF, 0xFF, 0xCC, 0xCC, + 0xCC, 0xCC, 0xCC, 0xFF, 0x01, 0x03, 0x06, 0x06, 0x0C, 0x0C, 0x18, 0x18, + 0x30, 0x30, 0x60, 0x60, 0xC0, 0x80, 0xFF, 0x33, 0x33, 0x33, 0x33, 0x33, + 0xFF, 0x10, 0x71, 0xE3, 0x6C, 0x70, 0x40, 0xFF, 0xFF, 0xFC, 0x88, 0x80, + 0x7E, 0x3F, 0x8F, 0xCF, 0xEE, 0x36, 0x1B, 0xFE, 0xFF, 0xE0, 0x38, 0x06, + 0x01, 0xBC, 0x7F, 0x9C, 0x76, 0x0D, 0x83, 0x71, 0xFF, 0xEE, 0xF0, 0x3F, + 0xBF, 0xF8, 0x78, 0x3C, 0x07, 0x05, 0xFE, 0x7E, 0x03, 0x80, 0xE0, 0x18, + 0xF6, 0x7F, 0xB8, 0xEC, 0x1B, 0x06, 0xE3, 0x9F, 0xF3, 0xFC, 0x3E, 0x3F, + 0xB0, 0xFF, 0xFF, 0xFE, 0x01, 0xFE, 0x7E, 0x1F, 0x3F, 0x30, 0x7E, 0x7E, + 0x30, 0x30, 0x30, 0x30, 0xFE, 0xFE, 0x3F, 0xBF, 0xF9, 0xD8, 0x6C, 0x37, + 0x39, 0xFC, 0x76, 0x03, 0x01, 0x8F, 0xC7, 0xC0, 0xE0, 0x70, 0x18, 0x0D, + 0xC7, 0xF3, 0x99, 0x8C, 0xC6, 0x63, 0x7B, 0xFD, 0xE0, 0x18, 0x18, 0x00, + 0x78, 0x78, 0x18, 0x18, 0x18, 0x18, 0xFF, 0xFF, 0x18, 0x60, 0x3F, 0xFC, + 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0F, 0xFF, 0x80, 0xE0, 0x70, 0x18, 0x0D, + 0xE6, 0xF3, 0xE1, 0xE0, 0xF8, 0x6E, 0x73, 0xF9, 0xE0, 0x78, 0x78, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xFF, 0xFF, 0xFD, 0x9F, 0xF9, 0x9B, + 0x33, 0x66, 0x6C, 0xCD, 0xBD, 0xFF, 0xBF, 0xEE, 0x7F, 0x98, 0xCC, 0x66, + 0x33, 0x1B, 0xDF, 0xEF, 0x3E, 0x3F, 0xB8, 0xF8, 0x3C, 0x1F, 0x1D, 0xFC, + 0x7C, 0xEF, 0x1F, 0xF9, 0xC3, 0xB0, 0x36, 0x06, 0xE1, 0xDF, 0xF3, 0x78, + 0x60, 0x0C, 0x03, 0xE0, 0x7C, 0x00, 0x1E, 0xEF, 0xFF, 0x87, 0x60, 0x6C, + 0x0D, 0xC3, 0x9F, 0xF0, 0xF6, 0x00, 0xC0, 0x18, 0x0F, 0x81, 0xF0, 0x77, + 0xBF, 0xCF, 0x06, 0x03, 0x01, 0x83, 0xF9, 0xFC, 0x3F, 0xFF, 0xC3, 0xFC, + 0x3F, 0xC3, 0xFF, 0xFC, 0x60, 0x60, 0x60, 0xFE, 0xFE, 0x60, 0x60, 0x60, + 0x61, 0x7F, 0x3E, 0xE7, 0x73, 0x98, 0xCC, 0x66, 0x33, 0x19, 0xFE, 0x7F, + 0xFB, 0xFF, 0x7C, 0xC6, 0x18, 0xC1, 0xB0, 0x36, 0x03, 0x80, 0x70, 0xF1, + 0xFE, 0x3D, 0xBB, 0x37, 0x63, 0xF8, 0x77, 0x0E, 0xE1, 0x8C, 0xF7, 0xFB, + 0xCD, 0x83, 0x83, 0xC3, 0xBB, 0xDF, 0xEF, 0xF3, 0xFC, 0xF6, 0x18, 0xCC, + 0x33, 0x07, 0x81, 0xE0, 0x30, 0x0C, 0x06, 0x0F, 0xC3, 0xF0, 0xFF, 0xFF, + 0x30, 0xC3, 0x0C, 0x7F, 0xFF, 0x37, 0x66, 0x66, 0xCC, 0x66, 0x66, 0x73, + 0xFF, 0xFF, 0xFF, 0xF0, 0xCE, 0x66, 0x66, 0x33, 0x66, 0x66, 0xEC, 0x70, + 0x7C, 0xF3, 0xC0, 0xC0}; + +const GFXglyph FreeMonoBold9pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 11, 0, 1}, // 0x20 ' ' + {0, 3, 11, 11, 4, -10}, // 0x21 '!' + {5, 7, 5, 11, 2, -10}, // 0x22 '"' + {10, 8, 12, 11, 1, -10}, // 0x23 '#' + {22, 7, 14, 11, 2, -11}, // 0x24 '$' + {35, 7, 11, 11, 2, -10}, // 0x25 '%' + {45, 8, 10, 11, 1, -9}, // 0x26 '&' + {55, 3, 5, 11, 4, -10}, // 0x27 ''' + {57, 4, 14, 11, 5, -10}, // 0x28 '(' + {64, 4, 14, 11, 2, -10}, // 0x29 ')' + {71, 8, 7, 11, 2, -10}, // 0x2A '*' + {78, 8, 9, 11, 2, -8}, // 0x2B '+' + {87, 3, 5, 11, 3, -1}, // 0x2C ',' + {89, 9, 2, 11, 1, -5}, // 0x2D '-' + {92, 2, 2, 11, 4, -1}, // 0x2E '.' + {93, 7, 15, 11, 2, -12}, // 0x2F '/' + {107, 7, 12, 11, 2, -11}, // 0x30 '0' + {118, 7, 11, 11, 2, -10}, // 0x31 '1' + {128, 8, 12, 11, 1, -11}, // 0x32 '2' + {140, 8, 12, 11, 2, -11}, // 0x33 '3' + {152, 7, 10, 11, 2, -9}, // 0x34 '4' + {161, 9, 11, 11, 1, -10}, // 0x35 '5' + {174, 8, 12, 11, 2, -11}, // 0x36 '6' + {186, 8, 11, 11, 1, -10}, // 0x37 '7' + {197, 7, 12, 11, 2, -11}, // 0x38 '8' + {208, 8, 12, 11, 2, -11}, // 0x39 '9' + {220, 2, 8, 11, 4, -7}, // 0x3A ':' + {222, 3, 11, 11, 3, -7}, // 0x3B ';' + {227, 9, 8, 11, 1, -8}, // 0x3C '<' + {236, 9, 6, 11, 1, -7}, // 0x3D '=' + {243, 9, 8, 11, 1, -8}, // 0x3E '>' + {252, 8, 11, 11, 2, -10}, // 0x3F '?' + {263, 9, 15, 11, 1, -11}, // 0x40 '@' + {280, 11, 11, 11, 0, -10}, // 0x41 'A' + {296, 10, 11, 11, 1, -10}, // 0x42 'B' + {310, 9, 11, 11, 1, -10}, // 0x43 'C' + {323, 10, 11, 11, 0, -10}, // 0x44 'D' + {337, 9, 11, 11, 1, -10}, // 0x45 'E' + {350, 9, 11, 11, 1, -10}, // 0x46 'F' + {363, 10, 11, 11, 1, -10}, // 0x47 'G' + {377, 9, 11, 11, 1, -10}, // 0x48 'H' + {390, 6, 11, 11, 3, -10}, // 0x49 'I' + {399, 10, 11, 11, 1, -10}, // 0x4A 'J' + {413, 10, 11, 11, 1, -10}, // 0x4B 'K' + {427, 9, 11, 11, 1, -10}, // 0x4C 'L' + {440, 11, 11, 11, 0, -10}, // 0x4D 'M' + {456, 11, 11, 11, 0, -10}, // 0x4E 'N' + {472, 11, 11, 11, 0, -10}, // 0x4F 'O' + {488, 9, 11, 11, 1, -10}, // 0x50 'P' + {501, 11, 14, 11, 0, -10}, // 0x51 'Q' + {521, 9, 11, 11, 1, -10}, // 0x52 'R' + {534, 9, 11, 11, 1, -10}, // 0x53 'S' + {547, 9, 11, 11, 1, -10}, // 0x54 'T' + {560, 11, 11, 11, 0, -10}, // 0x55 'U' + {576, 11, 11, 11, 0, -10}, // 0x56 'V' + {592, 10, 11, 11, 0, -10}, // 0x57 'W' + {606, 10, 11, 11, 0, -10}, // 0x58 'X' + {620, 10, 11, 11, 0, -10}, // 0x59 'Y' + {634, 8, 11, 11, 2, -10}, // 0x5A 'Z' + {645, 4, 14, 11, 5, -10}, // 0x5B '[' + {652, 7, 15, 11, 2, -12}, // 0x5C '\' + {666, 4, 14, 11, 2, -10}, // 0x5D ']' + {673, 7, 6, 11, 2, -11}, // 0x5E '^' + {679, 11, 2, 11, 0, 3}, // 0x5F '_' + {682, 3, 3, 11, 3, -11}, // 0x60 '`' + {684, 9, 8, 11, 1, -7}, // 0x61 'a' + {693, 10, 11, 11, 0, -10}, // 0x62 'b' + {707, 9, 8, 11, 1, -7}, // 0x63 'c' + {716, 10, 11, 11, 1, -10}, // 0x64 'd' + {730, 9, 8, 11, 1, -7}, // 0x65 'e' + {739, 8, 11, 11, 2, -10}, // 0x66 'f' + {750, 9, 12, 11, 1, -7}, // 0x67 'g' + {764, 9, 11, 11, 1, -10}, // 0x68 'h' + {777, 8, 11, 11, 2, -10}, // 0x69 'i' + {788, 6, 15, 11, 2, -10}, // 0x6A 'j' + {800, 9, 11, 11, 1, -10}, // 0x6B 'k' + {813, 8, 11, 11, 2, -10}, // 0x6C 'l' + {824, 11, 8, 11, 0, -7}, // 0x6D 'm' + {835, 9, 8, 11, 1, -7}, // 0x6E 'n' + {844, 9, 8, 11, 1, -7}, // 0x6F 'o' + {853, 11, 12, 11, 0, -7}, // 0x70 'p' + {870, 11, 12, 11, 0, -7}, // 0x71 'q' + {887, 9, 8, 11, 1, -7}, // 0x72 'r' + {896, 8, 8, 11, 2, -7}, // 0x73 's' + {904, 8, 11, 11, 1, -10}, // 0x74 't' + {915, 9, 8, 11, 1, -7}, // 0x75 'u' + {924, 11, 8, 11, 0, -7}, // 0x76 'v' + {935, 11, 8, 11, 0, -7}, // 0x77 'w' + {946, 9, 8, 11, 1, -7}, // 0x78 'x' + {955, 10, 12, 11, 0, -7}, // 0x79 'y' + {970, 7, 8, 11, 2, -7}, // 0x7A 'z' + {977, 4, 14, 11, 3, -10}, // 0x7B '{' + {984, 2, 14, 11, 5, -10}, // 0x7C '|' + {988, 4, 14, 11, 4, -10}, // 0x7D '}' + {995, 9, 4, 11, 1, -6}}; // 0x7E '~' + +const GFXfont FreeMonoBold9pt7b PROGMEM = {(uint8_t *)FreeMonoBold9pt7bBitmaps, + (GFXglyph *)FreeMonoBold9pt7bGlyphs, + 0x20, 0x7E, 18}; + +// Approx. 1672 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBoldOblique12pt7b.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBoldOblique12pt7b.h new file mode 100644 index 0000000..095fdd3 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBoldOblique12pt7b.h @@ -0,0 +1,271 @@ +#pragma once +#include + +const uint8_t FreeMonoBoldOblique12pt7bBitmaps[] PROGMEM = { + 0x1C, 0xF3, 0xCE, 0x38, 0xE7, 0x1C, 0x61, 0x86, 0x00, 0x63, 0x8C, 0x00, + 0xE7, 0xE7, 0xE6, 0xC6, 0xC6, 0xC4, 0x84, 0x03, 0x30, 0x19, 0x81, 0xDC, + 0x0C, 0xE0, 0x66, 0x1F, 0xFC, 0xFF, 0xE1, 0x98, 0x0C, 0xC0, 0xEE, 0x06, + 0x70, 0xFF, 0xCF, 0xFE, 0x1D, 0xC0, 0xCC, 0x06, 0x60, 0x77, 0x03, 0x30, + 0x00, 0x01, 0x00, 0x70, 0x0C, 0x07, 0xF1, 0xFE, 0x71, 0xCC, 0x11, 0x80, + 0x3F, 0x03, 0xF0, 0x0F, 0x20, 0x6E, 0x0D, 0xC3, 0x3F, 0xE7, 0xF8, 0x1C, + 0x03, 0x00, 0x60, 0x0C, 0x00, 0x0E, 0x03, 0xE0, 0xC4, 0x10, 0x82, 0x30, + 0x7C, 0x07, 0x78, 0x7C, 0x7F, 0x19, 0xF0, 0x62, 0x08, 0x41, 0x18, 0x3E, + 0x03, 0x80, 0x07, 0xC1, 0xF8, 0x62, 0x0C, 0x01, 0x80, 0x38, 0x0F, 0x03, + 0xF7, 0x6F, 0xD8, 0xF3, 0x1E, 0x7F, 0xE7, 0xF8, 0xFF, 0x6D, 0x20, 0x06, + 0x1C, 0x70, 0xC3, 0x06, 0x18, 0x30, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, + 0x70, 0x60, 0xC1, 0x00, 0x0C, 0x18, 0x38, 0x30, 0x60, 0xC1, 0x83, 0x06, + 0x0C, 0x30, 0x61, 0xC3, 0x0E, 0x38, 0x61, 0xC2, 0x00, 0x06, 0x00, 0xC0, + 0x18, 0x3F, 0x7F, 0xFE, 0xFF, 0x07, 0x81, 0xF8, 0x77, 0x0C, 0x60, 0x03, + 0x00, 0x70, 0x07, 0x00, 0x60, 0x06, 0x0F, 0xFF, 0xFF, 0xF0, 0xE0, 0x0C, + 0x00, 0xC0, 0x0C, 0x01, 0xC0, 0x18, 0x00, 0x1C, 0xE3, 0x1C, 0x63, 0x08, + 0x00, 0x7F, 0xFF, 0xFF, 0xC0, 0x7F, 0x00, 0x00, 0x08, 0x00, 0x70, 0x01, + 0x80, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x0C, 0x00, 0x70, 0x03, 0x80, 0x0C, + 0x00, 0x70, 0x03, 0x80, 0x0C, 0x00, 0x70, 0x03, 0x80, 0x0C, 0x00, 0x70, + 0x03, 0x80, 0x0C, 0x00, 0x20, 0x00, 0x07, 0x83, 0xF8, 0xE3, 0x98, 0x37, + 0x06, 0xC0, 0xD8, 0x1B, 0x03, 0xE0, 0xF8, 0x1B, 0x03, 0x60, 0xEE, 0x38, + 0xFE, 0x0F, 0x00, 0x03, 0xC1, 0xF0, 0x7E, 0x0C, 0xC0, 0x38, 0x07, 0x00, + 0xC0, 0x18, 0x07, 0x00, 0xE0, 0x18, 0x03, 0x00, 0x61, 0xFF, 0xFF, 0xF0, + 0x03, 0xE0, 0x3F, 0x83, 0x8E, 0x38, 0x31, 0x81, 0x80, 0x18, 0x01, 0xC0, + 0x1C, 0x01, 0xC0, 0x38, 0x03, 0x80, 0x38, 0x47, 0x87, 0x3F, 0xF3, 0xFF, + 0x80, 0x07, 0xC1, 0xFF, 0x18, 0x70, 0x03, 0x00, 0x30, 0x06, 0x07, 0xC0, + 0x7C, 0x00, 0xE0, 0x06, 0x00, 0x60, 0x06, 0xC1, 0xCF, 0xF8, 0x7E, 0x00, + 0x01, 0xE0, 0x3C, 0x0F, 0x03, 0x60, 0xCC, 0x3B, 0x8E, 0x63, 0x8C, 0x61, + 0x9F, 0xFB, 0xFF, 0x01, 0x81, 0xF8, 0x3F, 0x00, 0x0F, 0xF1, 0xFE, 0x18, + 0x01, 0x80, 0x18, 0x03, 0xF8, 0x3F, 0xC3, 0x8E, 0x00, 0x60, 0x06, 0x00, + 0x60, 0x0C, 0xC1, 0xCF, 0xF8, 0x7E, 0x00, 0x03, 0xE1, 0xFC, 0x70, 0x1C, + 0x03, 0x00, 0xC0, 0x1B, 0xC7, 0xFC, 0xF3, 0x98, 0x33, 0x06, 0x60, 0xCE, + 0x30, 0xFC, 0x0F, 0x00, 0xFF, 0xFF, 0xFB, 0x07, 0x60, 0xC0, 0x38, 0x06, + 0x01, 0xC0, 0x30, 0x0E, 0x01, 0x80, 0x70, 0x1C, 0x03, 0x80, 0x60, 0x08, + 0x00, 0x07, 0x83, 0xF8, 0xE3, 0xB0, 0x36, 0x06, 0xC0, 0xDC, 0x31, 0xFC, + 0x3F, 0x8C, 0x3B, 0x03, 0x60, 0x6C, 0x39, 0xFE, 0x1F, 0x00, 0x07, 0x81, + 0xF8, 0x63, 0x98, 0x33, 0x06, 0x60, 0xCE, 0x79, 0xFF, 0x1E, 0xC0, 0x18, + 0x06, 0x01, 0xC0, 0x71, 0xFC, 0x3E, 0x00, 0x19, 0xCC, 0x00, 0x00, 0x00, + 0x67, 0x30, 0x06, 0x1C, 0x30, 0x00, 0x00, 0x00, 0x00, 0x38, 0x71, 0xC3, + 0x0E, 0x18, 0x20, 0x00, 0x00, 0x18, 0x03, 0xC0, 0x7C, 0x1F, 0x03, 0xE0, + 0x3E, 0x00, 0x7C, 0x01, 0xF0, 0x03, 0xE0, 0x07, 0x80, 0x08, 0x7F, 0xFB, + 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFB, 0xFF, 0xC0, 0x30, 0x01, + 0xE0, 0x07, 0xC0, 0x0F, 0x00, 0x3E, 0x00, 0x7C, 0x1F, 0x03, 0xE0, 0x7C, + 0x07, 0x80, 0x20, 0x00, 0x3E, 0x7F, 0xB0, 0xF8, 0x30, 0x18, 0x1C, 0x1C, + 0x3C, 0x38, 0x18, 0x00, 0x06, 0x07, 0x03, 0x00, 0x03, 0xC0, 0x7E, 0x0C, + 0x71, 0x83, 0x30, 0x33, 0x0F, 0x33, 0xE6, 0x76, 0x6C, 0x66, 0xC6, 0x6C, + 0x6C, 0xFC, 0xC7, 0xEC, 0x00, 0xC0, 0x0C, 0x00, 0xE3, 0x07, 0xF0, 0x3C, + 0x00, 0x07, 0xF0, 0x1F, 0xE0, 0x07, 0xC0, 0x1F, 0x80, 0x3B, 0x00, 0xE7, + 0x01, 0x8E, 0x07, 0x1C, 0x1F, 0xF8, 0x3F, 0xF0, 0xE0, 0x71, 0x80, 0xEF, + 0xC7, 0xFF, 0x8F, 0xC0, 0x3F, 0xF1, 0xFF, 0xC3, 0x06, 0x38, 0x31, 0xC1, + 0x8C, 0x18, 0x7F, 0xC3, 0xFE, 0x38, 0x39, 0xC0, 0xCC, 0x06, 0x60, 0x6F, + 0xFF, 0x7F, 0xE0, 0x03, 0xEC, 0x3F, 0xF1, 0xC3, 0x8C, 0x06, 0x60, 0x19, + 0x80, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x03, 0x00, 0x0C, 0x03, 0x3C, 0x1C, + 0x7F, 0xE0, 0x7E, 0x00, 0x3F, 0xE1, 0xFF, 0x87, 0x0C, 0x30, 0x31, 0x81, + 0x8C, 0x0C, 0xE0, 0x67, 0x03, 0x30, 0x31, 0x81, 0x8C, 0x0C, 0xE1, 0xCF, + 0xFC, 0x7F, 0x80, 0x1F, 0xFE, 0x3F, 0xFC, 0x38, 0x38, 0x70, 0x70, 0xCC, + 0xC1, 0x98, 0x03, 0xF0, 0x0F, 0xE0, 0x1D, 0x80, 0x31, 0x18, 0x60, 0x70, + 0xC0, 0xE7, 0xFF, 0x9F, 0xFF, 0x00, 0x1F, 0xFF, 0x1F, 0xFE, 0x0E, 0x06, + 0x0C, 0x0E, 0x0C, 0xC4, 0x0C, 0xC0, 0x1F, 0xC0, 0x1F, 0xC0, 0x19, 0xC0, + 0x19, 0x80, 0x18, 0x00, 0x38, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x07, 0xEC, + 0x7F, 0xF3, 0x83, 0x9C, 0x06, 0x60, 0x19, 0x80, 0x0C, 0x00, 0x30, 0xFE, + 0xC3, 0xFB, 0x01, 0xCC, 0x07, 0x3C, 0x38, 0x7F, 0xE0, 0x7E, 0x00, 0x0F, + 0xBF, 0x1F, 0xBE, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x1C, 0x0C, 0x1C, 0x1F, + 0xF8, 0x1F, 0xF8, 0x18, 0x18, 0x18, 0x38, 0x18, 0x38, 0x38, 0x30, 0x7C, + 0xFC, 0xFC, 0xF8, 0x3F, 0xF3, 0xFF, 0x03, 0x00, 0x70, 0x07, 0x00, 0x60, + 0x06, 0x00, 0x60, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xC0, 0xFF, 0xCF, 0xFC, + 0x03, 0xFF, 0x03, 0xFF, 0x00, 0x38, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, + 0x00, 0x70, 0x20, 0x70, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xE1, 0xC0, + 0xFF, 0x80, 0x3F, 0x00, 0x1F, 0x9F, 0x1F, 0x9E, 0x0E, 0x38, 0x0C, 0x70, + 0x0C, 0xE0, 0x0F, 0xC0, 0x1F, 0xC0, 0x1F, 0xE0, 0x1C, 0xE0, 0x18, 0x60, + 0x18, 0x70, 0x38, 0x70, 0xFE, 0x3C, 0xFC, 0x3C, 0x3F, 0xC1, 0xFE, 0x01, + 0x80, 0x1C, 0x00, 0xE0, 0x06, 0x00, 0x30, 0x01, 0x80, 0x1C, 0x18, 0xE0, + 0xC6, 0x06, 0x30, 0x7F, 0xFF, 0xFF, 0xF8, 0x1E, 0x07, 0x87, 0x81, 0xE0, + 0xF0, 0xF0, 0x7C, 0x7C, 0x1F, 0x1F, 0x06, 0xCF, 0x81, 0xBF, 0x60, 0xEF, + 0x98, 0x3B, 0xEE, 0x0C, 0x73, 0x83, 0x1C, 0xC0, 0xC0, 0x30, 0xFC, 0x7E, + 0x3F, 0x1F, 0x80, 0x3C, 0x3F, 0x3E, 0x3F, 0x1E, 0x0C, 0x1F, 0x1C, 0x1F, + 0x1C, 0x1B, 0x98, 0x3B, 0x98, 0x3B, 0x98, 0x31, 0xF8, 0x31, 0xF8, 0x30, + 0xF0, 0x70, 0xF0, 0xFC, 0x70, 0xF8, 0x70, 0x03, 0xE0, 0x3F, 0xE1, 0xC3, + 0x8C, 0x07, 0x60, 0x0D, 0x80, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x1B, 0x00, + 0x6E, 0x03, 0x1C, 0x38, 0x7F, 0xC0, 0x7C, 0x00, 0x3F, 0xE1, 0xFF, 0x83, + 0x0E, 0x38, 0x31, 0xC1, 0x8C, 0x0C, 0x60, 0xC3, 0xFC, 0x3F, 0xC1, 0xC0, + 0x0C, 0x00, 0x60, 0x0F, 0xF0, 0x7F, 0x80, 0x03, 0xE0, 0x3F, 0xE1, 0xC3, + 0x8C, 0x07, 0x60, 0x0D, 0x80, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x1B, 0x00, + 0x6E, 0x03, 0x1C, 0x38, 0x7F, 0xC0, 0xFC, 0x03, 0x02, 0x1F, 0xFC, 0xFF, + 0xE0, 0x1F, 0xF0, 0x3F, 0xF0, 0x38, 0x70, 0x60, 0x60, 0xC0, 0xC1, 0x87, + 0x07, 0xFC, 0x0F, 0xF0, 0x18, 0xF0, 0x30, 0xE0, 0x60, 0xC1, 0xC1, 0xCF, + 0xE1, 0xFF, 0xC3, 0xC0, 0x0F, 0xB1, 0xFF, 0x30, 0xE6, 0x06, 0x60, 0x67, + 0x80, 0x7F, 0x01, 0xFC, 0x01, 0xC4, 0x0C, 0xC0, 0xCE, 0x18, 0xFF, 0x8B, + 0xE0, 0x7F, 0xFB, 0xFF, 0xD9, 0xCF, 0xCE, 0x7C, 0x63, 0x63, 0x18, 0x18, + 0x01, 0xC0, 0x0E, 0x00, 0x60, 0x03, 0x00, 0x18, 0x0F, 0xF8, 0x7F, 0xC0, + 0x7E, 0xFF, 0xF3, 0xF3, 0x03, 0x1C, 0x0C, 0x60, 0x31, 0x81, 0xC6, 0x06, + 0x38, 0x18, 0xE0, 0x63, 0x03, 0x8C, 0x0C, 0x30, 0x70, 0x7F, 0x80, 0xF8, + 0x00, 0xFC, 0x7F, 0xF8, 0xFD, 0xC0, 0x61, 0x81, 0xC3, 0x87, 0x07, 0x0C, + 0x0E, 0x38, 0x0C, 0x60, 0x19, 0xC0, 0x3F, 0x00, 0x7C, 0x00, 0xF8, 0x00, + 0xE0, 0x01, 0x80, 0x00, 0x7E, 0x7E, 0xFC, 0xFD, 0xC0, 0x73, 0x9C, 0xE7, + 0x79, 0x8E, 0xF7, 0x1B, 0xEE, 0x36, 0xD8, 0x7D, 0xF0, 0xF3, 0xE1, 0xE7, + 0x83, 0x8F, 0x07, 0x1E, 0x1C, 0x38, 0x00, 0x1F, 0x1F, 0x1F, 0x1F, 0x0E, + 0x1C, 0x07, 0x38, 0x07, 0x70, 0x03, 0xE0, 0x03, 0xC0, 0x03, 0xC0, 0x07, + 0xE0, 0x0E, 0xE0, 0x1C, 0x70, 0x38, 0x70, 0xFC, 0xFC, 0xFC, 0xFC, 0xF8, + 0xFF, 0xC7, 0xCC, 0x38, 0x73, 0x83, 0x9C, 0x0F, 0xC0, 0x7C, 0x01, 0xC0, + 0x0C, 0x00, 0x60, 0x03, 0x00, 0x38, 0x0F, 0xF8, 0x7F, 0x80, 0x0F, 0xF8, + 0x7F, 0xE1, 0xC7, 0x86, 0x1C, 0x18, 0xE0, 0x07, 0x00, 0x38, 0x01, 0xC0, + 0x0E, 0x00, 0x70, 0xC3, 0x83, 0x1C, 0x1C, 0x7F, 0xF3, 0xFF, 0x80, 0x0F, + 0x87, 0xC3, 0x03, 0x81, 0xC0, 0xC0, 0x60, 0x30, 0x38, 0x1C, 0x0C, 0x06, + 0x03, 0x03, 0x81, 0xC0, 0xC0, 0x60, 0x3E, 0x3F, 0x00, 0x41, 0xC3, 0x83, + 0x07, 0x0E, 0x1C, 0x18, 0x38, 0x70, 0xE0, 0xC1, 0xC3, 0x83, 0x06, 0x0E, + 0x1C, 0x18, 0x20, 0x1F, 0x0F, 0x80, 0xC0, 0xE0, 0x70, 0x30, 0x18, 0x0C, + 0x0E, 0x07, 0x03, 0x01, 0x80, 0xC0, 0xE0, 0x70, 0x30, 0x18, 0x7C, 0x3E, + 0x00, 0x02, 0x01, 0x80, 0xF0, 0x7E, 0x3B, 0x9C, 0x7E, 0x1F, 0x03, 0xFF, + 0xFF, 0xFF, 0xFC, 0xCE, 0x73, 0x1F, 0xC3, 0xFE, 0x00, 0x60, 0x06, 0x0F, + 0xE3, 0xFE, 0x70, 0xCC, 0x0C, 0xC3, 0xCF, 0xFF, 0x7F, 0xF0, 0x1E, 0x00, + 0x3C, 0x00, 0x38, 0x00, 0x70, 0x00, 0xDF, 0x81, 0xFF, 0x83, 0xC3, 0x8F, + 0x03, 0x1C, 0x06, 0x38, 0x0C, 0x70, 0x18, 0xE0, 0x63, 0xE1, 0x9F, 0xFE, + 0x3D, 0xF8, 0x00, 0x0F, 0xF3, 0xFF, 0x30, 0x76, 0x07, 0xE0, 0x6C, 0x00, + 0xC0, 0x0C, 0x00, 0xE0, 0x67, 0xFE, 0x3F, 0x80, 0x00, 0x3C, 0x00, 0xF0, + 0x01, 0xC0, 0x06, 0x07, 0xD8, 0x7F, 0xE3, 0x0F, 0x98, 0x1E, 0x60, 0x73, + 0x01, 0xCC, 0x07, 0x30, 0x3C, 0xE1, 0xF1, 0xFF, 0xE3, 0xF7, 0x80, 0x0F, + 0xC1, 0xFE, 0x78, 0x76, 0x03, 0xFF, 0xFF, 0xFF, 0xC0, 0x0C, 0x00, 0xE0, + 0xE7, 0xFE, 0x1F, 0x80, 0x00, 0xFC, 0x07, 0xF8, 0x0C, 0x00, 0x38, 0x01, + 0xFF, 0x07, 0xFE, 0x01, 0x80, 0x07, 0x00, 0x0E, 0x00, 0x18, 0x00, 0x30, + 0x00, 0x60, 0x01, 0xC0, 0x1F, 0xF8, 0x3F, 0xF0, 0x00, 0x0F, 0xBC, 0x7F, + 0xF3, 0x0F, 0x18, 0x1C, 0xC0, 0x73, 0x01, 0x8C, 0x0E, 0x30, 0x38, 0xE3, + 0xE1, 0xFF, 0x83, 0xEC, 0x00, 0x30, 0x01, 0xC0, 0x06, 0x07, 0xF0, 0x1F, + 0x80, 0x1E, 0x01, 0xF0, 0x03, 0x00, 0x18, 0x00, 0xDE, 0x0F, 0xF8, 0x78, + 0xC3, 0x86, 0x18, 0x30, 0xC1, 0x8E, 0x1C, 0x70, 0xE3, 0x06, 0x7E, 0xFF, + 0xE7, 0xE0, 0x03, 0x80, 0x70, 0x00, 0x0F, 0xC1, 0xF0, 0x06, 0x00, 0xC0, + 0x38, 0x07, 0x00, 0xC0, 0x18, 0x03, 0x0F, 0xFF, 0xFF, 0xC0, 0x00, 0x70, + 0x07, 0x00, 0x00, 0xFF, 0x1F, 0xF0, 0x07, 0x00, 0x70, 0x06, 0x00, 0x60, + 0x06, 0x00, 0xE0, 0x0E, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x1C, 0x03, 0x87, + 0xF0, 0xFE, 0x00, 0x1E, 0x00, 0x78, 0x00, 0xE0, 0x03, 0x80, 0x0C, 0xFC, + 0x33, 0xE0, 0xDE, 0x07, 0xE0, 0x1F, 0x00, 0x7C, 0x01, 0xF8, 0x06, 0xF0, + 0x39, 0xC3, 0xE7, 0xEF, 0x1F, 0x80, 0x0F, 0x81, 0xF0, 0x06, 0x01, 0xC0, + 0x38, 0x06, 0x00, 0xC0, 0x18, 0x07, 0x00, 0xE0, 0x18, 0x03, 0x00, 0x61, + 0xFF, 0xFF, 0xF8, 0x3F, 0xBC, 0x7F, 0xFC, 0xF3, 0x98, 0xC6, 0x33, 0x9C, + 0xE7, 0x39, 0xCC, 0x63, 0x18, 0xC6, 0x31, 0x8D, 0xF7, 0xBF, 0xEF, 0x78, + 0x3D, 0xE1, 0xFF, 0x8F, 0x8C, 0x38, 0x61, 0x83, 0x0C, 0x18, 0xE1, 0xC7, + 0x0E, 0x30, 0x67, 0xEF, 0xFE, 0x7E, 0x07, 0xC1, 0xFE, 0x38, 0x76, 0x03, + 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x06, 0xE1, 0xC7, 0xF8, 0x3E, 0x00, 0x1E, + 0xFC, 0x1F, 0xFE, 0x0F, 0x87, 0x0F, 0x03, 0x0E, 0x03, 0x0E, 0x03, 0x0E, + 0x07, 0x0E, 0x06, 0x1F, 0x0C, 0x1F, 0xF8, 0x19, 0xF0, 0x18, 0x00, 0x18, + 0x00, 0x38, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0x0F, 0xDE, 0x3F, 0xFC, 0xC3, + 0xE3, 0x03, 0x84, 0x07, 0x18, 0x0E, 0x30, 0x1C, 0x60, 0x78, 0xE1, 0xE0, + 0xFF, 0xC0, 0xF9, 0x80, 0x03, 0x00, 0x0E, 0x00, 0x1C, 0x01, 0xFC, 0x03, + 0xF8, 0x1E, 0x78, 0x7F, 0xF0, 0x7C, 0xC3, 0xC0, 0x0E, 0x00, 0x30, 0x00, + 0xC0, 0x03, 0x00, 0x1C, 0x03, 0xFF, 0x0F, 0xFC, 0x00, 0x07, 0xF1, 0xFF, + 0x30, 0x73, 0x86, 0x3F, 0x81, 0xFE, 0x03, 0xE6, 0x06, 0xE0, 0xEF, 0xFC, + 0xFF, 0x00, 0x0C, 0x07, 0x01, 0x83, 0xFF, 0xFF, 0xCE, 0x03, 0x00, 0xC0, + 0x30, 0x1C, 0x07, 0x01, 0x83, 0x7F, 0xCF, 0xC0, 0xF0, 0xFF, 0x1F, 0x60, + 0x76, 0x07, 0x60, 0x76, 0x06, 0x60, 0x66, 0x0E, 0x61, 0xE7, 0xFF, 0x3E, + 0xF0, 0x7E, 0x7E, 0xFC, 0xFC, 0xE0, 0xC0, 0xC3, 0x81, 0x86, 0x03, 0x98, + 0x07, 0x70, 0x06, 0xC0, 0x0F, 0x80, 0x1E, 0x00, 0x38, 0x00, 0xF8, 0x7F, + 0xE3, 0xE6, 0x63, 0x1B, 0xDC, 0x6F, 0x61, 0xFF, 0x87, 0xFC, 0x1E, 0xF0, + 0x73, 0x81, 0xCE, 0x06, 0x38, 0x00, 0x3E, 0x7C, 0xF9, 0xF1, 0xE7, 0x03, + 0xF8, 0x07, 0xC0, 0x1F, 0x01, 0xFC, 0x0F, 0x38, 0x78, 0xFB, 0xF7, 0xEF, + 0x9F, 0x80, 0x1F, 0x1F, 0x3E, 0x1F, 0x1C, 0x1C, 0x0C, 0x18, 0x0E, 0x38, + 0x0E, 0x70, 0x06, 0x60, 0x07, 0xE0, 0x07, 0xC0, 0x07, 0xC0, 0x03, 0x80, + 0x07, 0x00, 0x07, 0x00, 0x0E, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x1F, 0xF1, + 0xFF, 0x38, 0xE3, 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC6, 0x38, 0x67, + 0xFE, 0x7F, 0xE0, 0x01, 0xC0, 0xF0, 0x70, 0x18, 0x06, 0x03, 0x80, 0xE0, + 0x30, 0x1C, 0x3E, 0x0F, 0x00, 0x60, 0x18, 0x06, 0x03, 0x80, 0xC0, 0x30, + 0x0F, 0x01, 0xC0, 0x0C, 0x71, 0xC7, 0x18, 0x63, 0x8E, 0x30, 0xC3, 0x1C, + 0x71, 0x86, 0x38, 0xE3, 0x04, 0x00, 0x0E, 0x07, 0x80, 0xC0, 0x60, 0x70, + 0x30, 0x18, 0x0C, 0x06, 0x01, 0xC1, 0xE1, 0xC0, 0xC0, 0xE0, 0x70, 0x30, + 0x38, 0x78, 0x38, 0x00, 0x3C, 0x27, 0xE6, 0xEF, 0xCC, 0x38}; + +const GFXglyph FreeMonoBoldOblique12pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 14, 0, 1}, // 0x20 ' ' + {0, 6, 15, 14, 6, -14}, // 0x21 '!' + {12, 8, 7, 14, 6, -13}, // 0x22 '"' + {19, 13, 18, 14, 2, -15}, // 0x23 '#' + {49, 11, 20, 14, 3, -16}, // 0x24 '$' + {77, 11, 15, 14, 3, -14}, // 0x25 '%' + {98, 11, 13, 14, 2, -12}, // 0x26 '&' + {116, 3, 7, 14, 8, -13}, // 0x27 ''' + {119, 7, 19, 14, 7, -14}, // 0x28 '(' + {136, 7, 19, 14, 2, -14}, // 0x29 ')' + {153, 11, 10, 14, 4, -14}, // 0x2A '*' + {167, 12, 13, 14, 3, -12}, // 0x2B '+' + {187, 6, 7, 14, 3, -2}, // 0x2C ',' + {193, 13, 2, 14, 2, -7}, // 0x2D '-' + {197, 3, 3, 14, 6, -2}, // 0x2E '.' + {199, 14, 20, 14, 2, -16}, // 0x2F '/' + {234, 11, 15, 14, 3, -14}, // 0x30 '0' + {255, 11, 15, 14, 2, -14}, // 0x31 '1' + {276, 13, 15, 14, 1, -14}, // 0x32 '2' + {301, 12, 15, 14, 2, -14}, // 0x33 '3' + {324, 11, 14, 14, 3, -13}, // 0x34 '4' + {344, 12, 15, 14, 2, -14}, // 0x35 '5' + {367, 11, 15, 14, 4, -14}, // 0x36 '6' + {388, 11, 15, 14, 4, -14}, // 0x37 '7' + {409, 11, 15, 14, 3, -14}, // 0x38 '8' + {430, 11, 15, 14, 3, -14}, // 0x39 '9' + {451, 5, 11, 14, 5, -10}, // 0x3A ':' + {458, 7, 15, 14, 3, -10}, // 0x3B ';' + {472, 13, 11, 14, 2, -11}, // 0x3C '<' + {490, 13, 7, 14, 2, -9}, // 0x3D '=' + {502, 13, 11, 14, 2, -11}, // 0x3E '>' + {520, 9, 14, 14, 5, -13}, // 0x3F '?' + {536, 12, 19, 14, 2, -14}, // 0x40 '@' + {565, 15, 14, 14, 0, -13}, // 0x41 'A' + {592, 13, 14, 14, 1, -13}, // 0x42 'B' + {615, 14, 14, 14, 2, -13}, // 0x43 'C' + {640, 13, 14, 14, 1, -13}, // 0x44 'D' + {663, 15, 14, 14, 0, -13}, // 0x45 'E' + {690, 16, 14, 14, 0, -13}, // 0x46 'F' + {718, 14, 14, 14, 1, -13}, // 0x47 'G' + {743, 16, 14, 14, 0, -13}, // 0x48 'H' + {771, 12, 14, 14, 2, -13}, // 0x49 'I' + {792, 16, 14, 14, 0, -13}, // 0x4A 'J' + {820, 16, 14, 14, 0, -13}, // 0x4B 'K' + {848, 13, 14, 14, 1, -13}, // 0x4C 'L' + {871, 18, 14, 14, 0, -13}, // 0x4D 'M' + {903, 16, 14, 14, 1, -13}, // 0x4E 'N' + {931, 14, 14, 14, 1, -13}, // 0x4F 'O' + {956, 13, 14, 14, 1, -13}, // 0x50 'P' + {979, 14, 17, 14, 1, -13}, // 0x51 'Q' + {1009, 15, 14, 14, 0, -13}, // 0x52 'R' + {1036, 12, 14, 14, 3, -13}, // 0x53 'S' + {1057, 13, 14, 14, 2, -13}, // 0x54 'T' + {1080, 14, 14, 14, 2, -13}, // 0x55 'U' + {1105, 15, 14, 14, 1, -13}, // 0x56 'V' + {1132, 15, 14, 14, 1, -13}, // 0x57 'W' + {1159, 16, 14, 14, 0, -13}, // 0x58 'X' + {1187, 13, 14, 14, 2, -13}, // 0x59 'Y' + {1210, 14, 14, 14, 1, -13}, // 0x5A 'Z' + {1235, 9, 19, 14, 5, -14}, // 0x5B '[' + {1257, 7, 20, 14, 5, -16}, // 0x5C '\' + {1275, 9, 19, 14, 3, -14}, // 0x5D ']' + {1297, 10, 8, 14, 4, -15}, // 0x5E '^' + {1307, 15, 2, 14, -1, 4}, // 0x5F '_' + {1311, 4, 4, 14, 7, -15}, // 0x60 '`' + {1313, 12, 11, 14, 2, -10}, // 0x61 'a' + {1330, 15, 15, 14, -1, -14}, // 0x62 'b' + {1359, 12, 11, 14, 2, -10}, // 0x63 'c' + {1376, 14, 15, 14, 2, -14}, // 0x64 'd' + {1403, 12, 11, 14, 2, -10}, // 0x65 'e' + {1420, 15, 15, 14, 2, -14}, // 0x66 'f' + {1449, 14, 16, 14, 2, -10}, // 0x67 'g' + {1477, 13, 15, 14, 1, -14}, // 0x68 'h' + {1502, 11, 14, 14, 2, -13}, // 0x69 'i' + {1522, 12, 19, 14, 1, -13}, // 0x6A 'j' + {1551, 14, 15, 14, 1, -14}, // 0x6B 'k' + {1578, 11, 15, 14, 2, -14}, // 0x6C 'l' + {1599, 15, 11, 14, 0, -10}, // 0x6D 'm' + {1620, 13, 11, 14, 1, -10}, // 0x6E 'n' + {1638, 12, 11, 14, 2, -10}, // 0x6F 'o' + {1655, 16, 16, 14, -1, -10}, // 0x70 'p' + {1687, 15, 16, 14, 1, -10}, // 0x71 'q' + {1717, 14, 11, 14, 1, -10}, // 0x72 'r' + {1737, 12, 11, 14, 2, -10}, // 0x73 's' + {1754, 10, 14, 14, 2, -13}, // 0x74 't' + {1772, 12, 11, 14, 2, -10}, // 0x75 'u' + {1789, 15, 11, 14, 1, -10}, // 0x76 'v' + {1810, 14, 11, 14, 2, -10}, // 0x77 'w' + {1830, 14, 11, 14, 1, -10}, // 0x78 'x' + {1850, 16, 16, 14, 0, -10}, // 0x79 'y' + {1882, 12, 11, 14, 2, -10}, // 0x7A 'z' + {1899, 10, 19, 14, 4, -14}, // 0x7B '{' + {1923, 6, 19, 14, 5, -14}, // 0x7C '|' + {1938, 9, 19, 14, 3, -14}, // 0x7D '}' + {1960, 12, 4, 14, 3, -7}}; // 0x7E '~' + +const GFXfont FreeMonoBoldOblique12pt7b PROGMEM = { + (uint8_t *)FreeMonoBoldOblique12pt7bBitmaps, + (GFXglyph *)FreeMonoBoldOblique12pt7bGlyphs, 0x20, 0x7E, 24}; + +// Approx. 2638 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBoldOblique18pt7b.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBoldOblique18pt7b.h new file mode 100644 index 0000000..0400f25 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBoldOblique18pt7b.h @@ -0,0 +1,462 @@ +#pragma once +#include + +const uint8_t FreeMonoBoldOblique18pt7bBitmaps[] PROGMEM = { + 0x0F, 0x07, 0xC7, 0xE3, 0xF1, 0xF0, 0xF8, 0xFC, 0x7C, 0x3E, 0x1F, 0x0F, + 0x07, 0x87, 0xC3, 0xC1, 0xE0, 0x60, 0x00, 0x38, 0x3E, 0x1F, 0x0F, 0x83, + 0x80, 0xF8, 0xFF, 0x0E, 0xF1, 0xEF, 0x1E, 0xE1, 0xCE, 0x1C, 0xC1, 0xCC, + 0x18, 0xC1, 0x88, 0x18, 0x00, 0xE3, 0x80, 0x79, 0xE0, 0x1C, 0x70, 0x07, + 0x1C, 0x03, 0xCF, 0x00, 0xF3, 0xC0, 0x38, 0xE0, 0x7F, 0xFF, 0x3F, 0xFF, + 0xCF, 0xFF, 0xF3, 0xFF, 0xF8, 0x3C, 0xF0, 0x0F, 0x3C, 0x03, 0x8E, 0x0F, + 0xFF, 0xE3, 0xFF, 0xFC, 0xFF, 0xFF, 0x3F, 0xFF, 0x83, 0xCF, 0x00, 0xF3, + 0xC0, 0x38, 0xE0, 0x1E, 0x78, 0x07, 0x9E, 0x01, 0xC7, 0x00, 0x71, 0xC0, + 0x00, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x07, 0x80, 0x03, 0xF0, 0x03, 0xFF, + 0x81, 0xFF, 0xF0, 0xFF, 0xF8, 0x3C, 0x1E, 0x1E, 0x07, 0x87, 0x80, 0x01, + 0xF0, 0x00, 0x7F, 0xC0, 0x0F, 0xFC, 0x01, 0xFF, 0x80, 0x07, 0xF0, 0x00, + 0x3C, 0x70, 0x0F, 0x3C, 0x03, 0xCF, 0x83, 0xE3, 0xFF, 0xF8, 0xFF, 0xFC, + 0x3F, 0xFE, 0x0C, 0xFE, 0x00, 0x1C, 0x00, 0x07, 0x00, 0x03, 0xC0, 0x00, + 0xF0, 0x00, 0x18, 0x00, 0x03, 0xC0, 0x0F, 0xE0, 0x1C, 0x70, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x70, 0x38, 0xE0, 0x1F, 0xC3, 0x0F, 0x1F, 0x01, 0xFC, + 0x0F, 0xE0, 0x7F, 0x00, 0xF8, 0xF0, 0x83, 0xF8, 0x07, 0x1C, 0x0E, 0x0C, + 0x0C, 0x0C, 0x0C, 0x1C, 0x0E, 0x38, 0x07, 0xF0, 0x03, 0xC0, 0x00, 0x7A, + 0x01, 0xFF, 0x03, 0xFF, 0x07, 0xFE, 0x0F, 0x9C, 0x0F, 0x00, 0x0F, 0x00, + 0x0F, 0x00, 0x07, 0x80, 0x1F, 0x80, 0x3F, 0xC0, 0x7F, 0xCF, 0x79, 0xFF, + 0xF1, 0xFE, 0xF1, 0xFC, 0xF0, 0xF8, 0xFF, 0xFE, 0xFF, 0xFE, 0x7F, 0xFE, + 0x1F, 0xBC, 0x7B, 0xFD, 0xEF, 0x73, 0x9C, 0xC6, 0x00, 0x01, 0xC0, 0xF0, + 0x3C, 0x1E, 0x0F, 0x03, 0xC1, 0xE0, 0x70, 0x3C, 0x0F, 0x07, 0x81, 0xE0, + 0x78, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3E, + 0x07, 0x81, 0xE0, 0x7C, 0x1F, 0x03, 0x80, 0x07, 0x03, 0xC0, 0xF8, 0x3E, + 0x07, 0x81, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, + 0xF0, 0x78, 0x1E, 0x07, 0x81, 0xC0, 0xF0, 0x3C, 0x1E, 0x07, 0x83, 0xC1, + 0xE0, 0x78, 0x3C, 0x0E, 0x00, 0x00, 0xC0, 0x03, 0xC0, 0x07, 0x00, 0x0E, + 0x02, 0x3C, 0x0F, 0xFF, 0xFF, 0xFF, 0xBF, 0xFE, 0x1F, 0xF0, 0x1F, 0x80, + 0x7F, 0x81, 0xEF, 0x07, 0x8F, 0x0F, 0x1E, 0x08, 0x10, 0x00, 0x00, 0x70, + 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xE0, 0x00, 0x38, 0x00, + 0x1E, 0x03, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x0F, + 0x00, 0x03, 0xC0, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x07, 0x80, + 0x01, 0xC0, 0x00, 0x70, 0x00, 0x0F, 0x87, 0x87, 0x83, 0x83, 0xC1, 0xC1, + 0xC0, 0xC0, 0xE0, 0x60, 0x00, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0x77, 0xFF, 0xF7, 0x00, 0x00, 0x00, 0x38, 0x00, 0x03, 0xC0, + 0x00, 0x1C, 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, 0xE0, 0x00, 0x0F, + 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x07, 0x80, 0x00, + 0x78, 0x00, 0x03, 0xC0, 0x00, 0x3C, 0x00, 0x03, 0xC0, 0x00, 0x1C, 0x00, + 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0xF0, + 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x07, 0x80, 0x00, 0x78, 0x00, 0x03, + 0xC0, 0x00, 0x3C, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0xFC, 0x01, 0xFF, + 0x01, 0xFF, 0xC1, 0xFF, 0xE1, 0xF1, 0xF9, 0xE0, 0x7C, 0xF0, 0x1E, 0xF0, + 0x0F, 0x78, 0x07, 0xB8, 0x03, 0x9C, 0x03, 0xDE, 0x01, 0xCF, 0x00, 0xE7, + 0x00, 0x73, 0xC0, 0x79, 0xE0, 0x3C, 0xF0, 0x1C, 0x78, 0x1E, 0x3E, 0x1E, + 0x0F, 0xFF, 0x07, 0xFF, 0x01, 0xFF, 0x00, 0x7E, 0x00, 0x00, 0x7C, 0x03, + 0xF8, 0x0F, 0xE0, 0x7F, 0xC0, 0xF7, 0x81, 0x8F, 0x00, 0x1C, 0x00, 0x38, + 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x00, 0x0E, 0x00, 0x3C, 0x00, + 0x78, 0x00, 0xF0, 0x01, 0xC0, 0x03, 0x81, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xEF, 0xFF, 0xC0, 0x00, 0x1F, 0x00, 0x07, 0xFC, 0x00, 0xFF, 0xE0, 0x1F, + 0xFF, 0x03, 0xC1, 0xF0, 0x78, 0x0F, 0x07, 0x80, 0xF0, 0x70, 0x0F, 0x00, + 0x01, 0xE0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x3F, 0x00, + 0x07, 0xE0, 0x01, 0xFC, 0x00, 0x3F, 0x80, 0x07, 0xE0, 0x01, 0xF8, 0x00, + 0x3F, 0x03, 0x87, 0xFF, 0xF8, 0x7F, 0xFF, 0x87, 0xFF, 0xF8, 0xFF, 0xFF, + 0x00, 0x00, 0xFE, 0x00, 0xFF, 0xC0, 0x7F, 0xF8, 0x3F, 0xFF, 0x0E, 0x07, + 0xC0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x1F, 0x00, 0x07, 0x80, 0x1F, 0xC0, + 0x0F, 0xE0, 0x03, 0xF0, 0x00, 0xFF, 0x00, 0x03, 0xE0, 0x00, 0x78, 0x00, + 0x1E, 0x00, 0x07, 0x80, 0x03, 0xC0, 0x03, 0xF1, 0xFF, 0xF8, 0xFF, 0xFC, + 0x3F, 0xFE, 0x03, 0xFE, 0x00, 0x00, 0x1F, 0x00, 0x3F, 0x00, 0x7F, 0x00, + 0xFE, 0x00, 0xFE, 0x01, 0xEE, 0x03, 0xDE, 0x07, 0x9E, 0x0F, 0x1C, 0x1E, + 0x1C, 0x3C, 0x3C, 0x78, 0x3C, 0xFF, 0xFE, 0xFF, 0xFE, 0xFF, 0xFE, 0xFF, + 0xFC, 0x00, 0x70, 0x03, 0xFC, 0x07, 0xFC, 0x07, 0xFC, 0x07, 0xF8, 0x07, + 0xFF, 0xC1, 0xFF, 0xF0, 0x7F, 0xFC, 0x3F, 0xFE, 0x0F, 0x00, 0x03, 0xC0, + 0x00, 0xE0, 0x00, 0x3B, 0xE0, 0x1F, 0xFE, 0x07, 0xFF, 0xC1, 0xFF, 0xF8, + 0x78, 0x3E, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, + 0x0F, 0x18, 0x0F, 0xCF, 0xFF, 0xE3, 0xFF, 0xF0, 0x7F, 0xF8, 0x07, 0xF0, + 0x00, 0x00, 0x0F, 0xC0, 0x0F, 0xFC, 0x03, 0xFF, 0x81, 0xFF, 0xE0, 0x7F, + 0x00, 0x1F, 0x80, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x9F, + 0x01, 0xEF, 0xF0, 0x3F, 0xFF, 0x0F, 0xFF, 0xF1, 0xFC, 0x3E, 0x3E, 0x03, + 0xC7, 0x80, 0x78, 0xF0, 0x0F, 0x1E, 0x03, 0xC3, 0xE0, 0xF8, 0x7F, 0xFE, + 0x07, 0xFF, 0x80, 0x7F, 0xE0, 0x07, 0xF0, 0x00, 0x7F, 0xFF, 0x7F, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x0E, 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x3C, + 0x00, 0x78, 0x00, 0x70, 0x00, 0xF0, 0x00, 0xE0, 0x01, 0xE0, 0x01, 0xC0, + 0x03, 0xC0, 0x07, 0x80, 0x07, 0x80, 0x0F, 0x00, 0x0E, 0x00, 0x1E, 0x00, + 0x1C, 0x00, 0x1C, 0x00, 0x00, 0x7E, 0x00, 0x3F, 0xF0, 0x0F, 0xFF, 0x03, + 0xFF, 0xF0, 0xF8, 0x3E, 0x3E, 0x03, 0xC7, 0x80, 0x78, 0xF0, 0x0F, 0x1E, + 0x03, 0xC3, 0xE0, 0xF0, 0x3F, 0xFC, 0x03, 0xFF, 0x00, 0xFF, 0xE0, 0x7F, + 0xFE, 0x1F, 0x83, 0xE3, 0xC0, 0x3C, 0xF0, 0x07, 0x9E, 0x01, 0xF3, 0xE0, + 0x7C, 0x7F, 0xFF, 0x87, 0xFF, 0xE0, 0x7F, 0xF0, 0x03, 0xF8, 0x00, 0x00, + 0x7E, 0x00, 0x7F, 0xC0, 0x3F, 0xF8, 0x1F, 0xFE, 0x0F, 0x87, 0xC3, 0xC0, + 0xF1, 0xE0, 0x3C, 0x78, 0x0F, 0x1E, 0x03, 0xC7, 0x81, 0xF1, 0xF1, 0xFC, + 0x7F, 0xFE, 0x0F, 0xFF, 0x81, 0xFD, 0xE0, 0x3E, 0xF0, 0x00, 0x7C, 0x00, + 0x3E, 0x00, 0x1F, 0x00, 0x1F, 0x81, 0xFF, 0xC0, 0xFF, 0xE0, 0x3F, 0xE0, + 0x07, 0xE0, 0x00, 0x1C, 0x7C, 0xF9, 0xF1, 0xC0, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x8F, 0x9F, 0x3E, 0x38, 0x01, 0xC0, 0x7C, 0x0F, 0x81, 0xF0, 0x3C, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xC0, 0xF0, 0x1E, + 0x07, 0x80, 0xE0, 0x38, 0x07, 0x01, 0xC0, 0x30, 0x0E, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xFC, 0x00, 0xFE, 0x00, 0xFE, 0x00, + 0xFE, 0x01, 0xFE, 0x01, 0xFE, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, + 0x00, 0x1F, 0xC0, 0x01, 0xFC, 0x00, 0x1F, 0xC0, 0x01, 0xF0, 0x00, 0x38, + 0x3F, 0xFF, 0xEF, 0xFF, 0xFD, 0xFF, 0xFF, 0x9F, 0xFF, 0xE0, 0x00, 0x00, + 0x00, 0x00, 0x1F, 0xFF, 0xF7, 0xFF, 0xFE, 0xFF, 0xFF, 0xDF, 0xFF, 0xF0, + 0x00, 0x00, 0x03, 0x80, 0x00, 0xFC, 0x00, 0x0F, 0xE0, 0x00, 0x7F, 0x00, + 0x07, 0xF0, 0x00, 0x3F, 0x80, 0x01, 0xFC, 0x00, 0x1F, 0xC0, 0x0F, 0xE0, + 0x07, 0xF0, 0x07, 0xF8, 0x03, 0xF8, 0x01, 0xFC, 0x00, 0x3E, 0x00, 0x07, + 0x00, 0x00, 0x07, 0xE0, 0xFF, 0xC7, 0xFF, 0xBF, 0xFF, 0xF0, 0x7F, 0x80, + 0xFE, 0x03, 0xC0, 0x0F, 0x00, 0x78, 0x0F, 0xE1, 0xFE, 0x0F, 0xF0, 0x7E, + 0x01, 0xE0, 0x07, 0x00, 0x00, 0x00, 0x70, 0x03, 0xE0, 0x0F, 0x80, 0x3E, + 0x00, 0x70, 0x00, 0x00, 0x3E, 0x00, 0x3F, 0xE0, 0x1F, 0xF8, 0x0F, 0x0F, + 0x07, 0x01, 0xC3, 0x80, 0x71, 0xE0, 0x1C, 0x70, 0x0E, 0x18, 0x0F, 0x8E, + 0x1F, 0xE3, 0x8F, 0xF0, 0xE7, 0x9C, 0x33, 0xC7, 0x1C, 0xE1, 0xC7, 0x38, + 0x71, 0xCF, 0x18, 0x73, 0xFE, 0x38, 0x7F, 0xCE, 0x0F, 0xF3, 0x80, 0x00, + 0xE0, 0x00, 0x38, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0xC0, 0x7F, 0xF0, 0x0F, + 0xF8, 0x01, 0xF8, 0x00, 0x01, 0xFF, 0x80, 0x07, 0xFE, 0x00, 0x1F, 0xF8, + 0x00, 0x7F, 0xE0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0x00, 0x07, 0xBC, 0x00, + 0x1C, 0xF0, 0x00, 0xF3, 0xC0, 0x07, 0x87, 0x80, 0x1E, 0x1E, 0x00, 0xF0, + 0x78, 0x07, 0xFF, 0xE0, 0x1F, 0xFF, 0x80, 0xFF, 0xFF, 0x07, 0xFF, 0xFC, + 0x1E, 0x00, 0xF1, 0xFE, 0x1F, 0xFF, 0xF8, 0x7F, 0xFF, 0xE1, 0xFF, 0xFF, + 0x07, 0xF8, 0x0F, 0xFF, 0xC0, 0x7F, 0xFF, 0x87, 0xFF, 0xFC, 0x1F, 0xFF, + 0xF0, 0x38, 0x0F, 0x81, 0xC0, 0x3C, 0x1E, 0x01, 0xE0, 0xF0, 0x3E, 0x07, + 0xFF, 0xE0, 0x3F, 0xFE, 0x03, 0xFF, 0xF8, 0x1F, 0xFF, 0xE0, 0xE0, 0x1F, + 0x87, 0x00, 0x3C, 0x38, 0x01, 0xE3, 0xC0, 0x0F, 0x1E, 0x00, 0xF3, 0xFF, + 0xFF, 0xBF, 0xFF, 0xF9, 0xFF, 0xFF, 0x8F, 0xFF, 0xF0, 0x00, 0x00, 0x7F, + 0x30, 0x0F, 0xFF, 0xC1, 0xFF, 0xFE, 0x1F, 0xFF, 0xF1, 0xF8, 0x3F, 0x1F, + 0x00, 0x78, 0xF0, 0x03, 0xCF, 0x80, 0x1C, 0x78, 0x00, 0x03, 0xC0, 0x00, + 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, + 0x00, 0x1F, 0x00, 0x38, 0x7E, 0x07, 0xC3, 0xFF, 0xFC, 0x0F, 0xFF, 0xC0, + 0x3F, 0xFC, 0x00, 0x7F, 0x80, 0x00, 0x0F, 0xFF, 0x80, 0x7F, 0xFE, 0x07, + 0xFF, 0xF8, 0x1F, 0xFF, 0xE0, 0x78, 0x1F, 0x03, 0x80, 0x7C, 0x1C, 0x01, + 0xE1, 0xE0, 0x0F, 0x0F, 0x00, 0x78, 0x70, 0x03, 0xC3, 0x80, 0x1E, 0x1C, + 0x00, 0xF1, 0xE0, 0x0F, 0x0F, 0x00, 0x78, 0x70, 0x07, 0xC3, 0x80, 0x7C, + 0x3C, 0x07, 0xC3, 0xFF, 0xFC, 0x3F, 0xFF, 0xC1, 0xFF, 0xFC, 0x0F, 0xFF, + 0x80, 0x00, 0x07, 0xFF, 0xFC, 0x3F, 0xFF, 0xF0, 0xFF, 0xFF, 0xC3, 0xFF, + 0xFF, 0x03, 0xC0, 0x3C, 0x0F, 0x00, 0xE0, 0x3C, 0x73, 0x80, 0xE3, 0xCC, + 0x03, 0xFF, 0x00, 0x1F, 0xFC, 0x00, 0x7F, 0xE0, 0x01, 0xFF, 0x80, 0x07, + 0x1E, 0x00, 0x3C, 0x70, 0x00, 0xF0, 0x07, 0x03, 0xC0, 0x1C, 0x0E, 0x00, + 0xF1, 0xFF, 0xFF, 0xC7, 0xFF, 0xFE, 0x3F, 0xFF, 0xF8, 0x7F, 0xFF, 0xE0, + 0x07, 0xFF, 0xFE, 0x1F, 0xFF, 0xFC, 0x3F, 0xFF, 0xF0, 0x7F, 0xFF, 0xE0, + 0x3C, 0x01, 0xC0, 0x70, 0x07, 0x80, 0xE1, 0x8E, 0x03, 0xC7, 0x1C, 0x07, + 0xFE, 0x00, 0x0F, 0xFC, 0x00, 0x1F, 0xF8, 0x00, 0x3F, 0xF0, 0x00, 0xF1, + 0xC0, 0x01, 0xE3, 0x80, 0x03, 0x80, 0x00, 0x07, 0x00, 0x00, 0x1E, 0x00, + 0x00, 0xFF, 0xE0, 0x03, 0xFF, 0xC0, 0x07, 0xFF, 0x80, 0x0F, 0xFE, 0x00, + 0x00, 0x00, 0x3F, 0x18, 0x0F, 0xFF, 0xC0, 0xFF, 0xFE, 0x0F, 0xFF, 0xF0, + 0xFC, 0x0F, 0x0F, 0x80, 0x38, 0xF8, 0x01, 0x87, 0x80, 0x00, 0x78, 0x00, + 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x7F, 0xEF, 0x07, 0xFF, 0x78, + 0x3F, 0xFB, 0xC0, 0xFF, 0x9E, 0x00, 0x38, 0xFC, 0x03, 0xC3, 0xFF, 0xFE, + 0x1F, 0xFF, 0xE0, 0x3F, 0xFC, 0x00, 0x7F, 0x80, 0x00, 0x03, 0xF8, 0xFE, + 0x0F, 0xF3, 0xFC, 0x1F, 0xE7, 0xF8, 0x3F, 0x8F, 0xE0, 0x3C, 0x07, 0x80, + 0x70, 0x0E, 0x00, 0xE0, 0x1C, 0x03, 0xC0, 0x78, 0x07, 0x80, 0xF0, 0x0F, + 0xFF, 0xC0, 0x1F, 0xFF, 0x80, 0x3F, 0xFF, 0x00, 0xFF, 0xFE, 0x01, 0xE0, + 0x3C, 0x03, 0x80, 0x70, 0x07, 0x00, 0xE0, 0x1E, 0x03, 0xC0, 0xFF, 0x1F, + 0xE1, 0xFE, 0x7F, 0xC7, 0xFC, 0xFF, 0x87, 0xF1, 0xFE, 0x00, 0x07, 0xFF, + 0xE1, 0xFF, 0xFC, 0x3F, 0xFF, 0x87, 0xFF, 0xE0, 0x07, 0x80, 0x00, 0xE0, + 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0x80, + 0x00, 0x70, 0x00, 0x1E, 0x00, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x0E, 0x00, + 0x01, 0xC0, 0x0F, 0xFF, 0xC3, 0xFF, 0xF8, 0x7F, 0xFF, 0x07, 0xFF, 0xE0, + 0x00, 0x3F, 0xFE, 0x00, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, 0x03, 0xFF, 0xE0, + 0x00, 0x1C, 0x00, 0x00, 0x38, 0x00, 0x00, 0x70, 0x00, 0x01, 0xE0, 0x00, + 0x03, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x0E, 0x00, 0x80, 0x1C, 0x03, 0x80, + 0x78, 0x0F, 0x00, 0xF0, 0x1E, 0x01, 0xC0, 0x38, 0x07, 0x80, 0x70, 0x1F, + 0x01, 0xFF, 0xFC, 0x03, 0xFF, 0xF0, 0x03, 0xFF, 0xC0, 0x00, 0xFC, 0x00, + 0x00, 0x07, 0xF8, 0xFC, 0x1F, 0xFB, 0xFC, 0x3F, 0xE7, 0xF0, 0x7F, 0xCF, + 0xE0, 0x3C, 0x1E, 0x00, 0x70, 0xF8, 0x00, 0xE3, 0xE0, 0x03, 0xCF, 0x00, + 0x07, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x1F, 0xF0, 0x00, 0x3F, 0xF0, 0x00, + 0xF9, 0xF0, 0x01, 0xE1, 0xE0, 0x03, 0x83, 0xE0, 0x07, 0x03, 0xC0, 0x1E, + 0x07, 0x80, 0xFF, 0x8F, 0xE3, 0xFF, 0x0F, 0xC7, 0xFE, 0x1F, 0x8F, 0xF8, + 0x3E, 0x00, 0x0F, 0xFE, 0x00, 0xFF, 0xF0, 0x1F, 0xFE, 0x00, 0xFF, 0xE0, + 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x03, 0xC0, + 0x00, 0x3C, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x07, 0x80, 0x60, 0x78, + 0x0F, 0x07, 0x80, 0xF0, 0x70, 0x0E, 0x07, 0x00, 0xE7, 0xFF, 0xFE, 0xFF, + 0xFF, 0xEF, 0xFF, 0xFE, 0xFF, 0xFF, 0xC0, 0x0F, 0xC0, 0x1F, 0x87, 0xE0, + 0x0F, 0xC7, 0xF8, 0x0F, 0xE1, 0xFC, 0x0F, 0xE0, 0x7E, 0x07, 0xE0, 0x3F, + 0x07, 0xF0, 0x3F, 0xC7, 0xF8, 0x1F, 0xE3, 0xF8, 0x0E, 0xF3, 0xDC, 0x07, + 0x7B, 0xDE, 0x03, 0x9F, 0xEF, 0x03, 0xCF, 0xE7, 0x81, 0xE7, 0xE3, 0x80, + 0xE3, 0xF1, 0xC0, 0x70, 0xF1, 0xE0, 0x38, 0x70, 0xF0, 0x3C, 0x00, 0x70, + 0x3F, 0xC1, 0xFE, 0x3F, 0xE1, 0xFF, 0x1F, 0xF0, 0xFF, 0x8F, 0xF0, 0x7F, + 0x80, 0x0F, 0xC1, 0xFE, 0x1F, 0xC1, 0xFF, 0x1F, 0xC3, 0xFE, 0x1F, 0xE1, + 0xFE, 0x07, 0xE0, 0x38, 0x07, 0xF0, 0x78, 0x07, 0xF0, 0x78, 0x0F, 0xF8, + 0x70, 0x0F, 0x78, 0x70, 0x0E, 0x78, 0xF0, 0x0E, 0x7C, 0xF0, 0x1E, 0x3C, + 0xF0, 0x1E, 0x3E, 0xE0, 0x1E, 0x1E, 0xE0, 0x1C, 0x1F, 0xE0, 0x1C, 0x0F, + 0xE0, 0x3C, 0x0F, 0xE0, 0x7F, 0x87, 0xC0, 0xFF, 0x87, 0xC0, 0xFF, 0x87, + 0xC0, 0xFF, 0x03, 0xC0, 0x00, 0x7E, 0x00, 0x1F, 0xF8, 0x07, 0xFF, 0xC0, + 0xFF, 0xFE, 0x1F, 0x87, 0xE3, 0xE0, 0x1F, 0x3C, 0x01, 0xF7, 0xC0, 0x0F, + 0x78, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x01, + 0xEF, 0x00, 0x3E, 0xF8, 0x03, 0xCF, 0x80, 0x7C, 0x7C, 0x1F, 0x87, 0xFF, + 0xF0, 0x3F, 0xFE, 0x01, 0xFF, 0x80, 0x07, 0xE0, 0x00, 0x0F, 0xFF, 0x80, + 0x7F, 0xFF, 0x07, 0xFF, 0xFC, 0x1F, 0xFF, 0xF0, 0x38, 0x0F, 0x81, 0xC0, + 0x3C, 0x1E, 0x01, 0xE0, 0xF0, 0x0F, 0x07, 0x00, 0xF0, 0x38, 0x0F, 0x83, + 0xFF, 0xF8, 0x1F, 0xFF, 0x80, 0xFF, 0xF8, 0x07, 0xFF, 0x00, 0x38, 0x00, + 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x03, 0xFF, 0x80, 0x3F, 0xFC, 0x01, 0xFF, + 0xE0, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x1F, 0xF8, 0x07, 0xFF, + 0xC0, 0xFF, 0xFE, 0x1F, 0x87, 0xE3, 0xE0, 0x1F, 0x3C, 0x01, 0xF7, 0xC0, + 0x0F, 0x78, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, + 0x01, 0xEF, 0x00, 0x3E, 0xF8, 0x03, 0xCF, 0x80, 0x7C, 0x7C, 0x1F, 0x87, + 0xFF, 0xF0, 0x3F, 0xFE, 0x01, 0xFF, 0x80, 0x07, 0xE0, 0x01, 0xFE, 0x30, + 0x3F, 0xFF, 0x87, 0xFF, 0xF0, 0x7F, 0xFF, 0x07, 0x83, 0xC0, 0x07, 0xFF, + 0x80, 0x3F, 0xFF, 0x80, 0xFF, 0xFF, 0x03, 0xFF, 0xFE, 0x03, 0xC0, 0xF8, + 0x0E, 0x01, 0xE0, 0x38, 0x07, 0x81, 0xE0, 0x3E, 0x07, 0x83, 0xF0, 0x1F, + 0xFF, 0x80, 0x7F, 0xFC, 0x01, 0xFF, 0xC0, 0x0F, 0xFF, 0x80, 0x3C, 0x3E, + 0x00, 0xE0, 0x7C, 0x03, 0x80, 0xF0, 0x1E, 0x03, 0xE1, 0xFF, 0x07, 0xFF, + 0xFC, 0x1F, 0xFF, 0xF0, 0x3F, 0xFF, 0x80, 0xF8, 0x00, 0x7C, 0xE0, 0x7F, + 0xFC, 0x1F, 0xFF, 0x87, 0xFF, 0xE0, 0xF8, 0x7C, 0x3C, 0x07, 0x87, 0x80, + 0xE0, 0xF0, 0x00, 0x1F, 0x00, 0x03, 0xFE, 0x00, 0x3F, 0xF8, 0x03, 0xFF, + 0x80, 0x07, 0xF8, 0x40, 0x1F, 0x3C, 0x01, 0xE7, 0x80, 0x3C, 0xFC, 0x1F, + 0x1F, 0xFF, 0xE3, 0xFF, 0xF8, 0x7F, 0xFE, 0x00, 0x7E, 0x00, 0x7F, 0xFF, + 0xEF, 0xFF, 0xFD, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0x0E, 0x1F, 0xE1, 0xC3, + 0xBC, 0x78, 0x77, 0x0F, 0x1E, 0xE1, 0xC1, 0x80, 0x38, 0x00, 0x0F, 0x00, + 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, 0x3C, 0x00, + 0x07, 0x80, 0x0F, 0xFE, 0x03, 0xFF, 0xE0, 0x7F, 0xFC, 0x0F, 0xFF, 0x00, + 0x7F, 0x8F, 0xF3, 0xFE, 0x7F, 0xDF, 0xF7, 0xFC, 0xFF, 0x1F, 0xE3, 0xC0, + 0x3C, 0x1C, 0x01, 0xE0, 0xE0, 0x0F, 0x0F, 0x00, 0x70, 0x78, 0x03, 0x83, + 0xC0, 0x3C, 0x1C, 0x01, 0xE0, 0xE0, 0x0E, 0x0F, 0x00, 0x70, 0x78, 0x03, + 0x83, 0xC0, 0x3C, 0x1F, 0x01, 0xC0, 0xFC, 0x3E, 0x03, 0xFF, 0xE0, 0x1F, + 0xFE, 0x00, 0x7F, 0xE0, 0x00, 0xFC, 0x00, 0x00, 0x7F, 0x81, 0xFE, 0xFF, + 0x87, 0xFF, 0xFF, 0x0F, 0xFB, 0xFC, 0x1F, 0xE1, 0xC0, 0x0F, 0x03, 0xC0, + 0x1C, 0x07, 0x80, 0x78, 0x0F, 0x01, 0xE0, 0x1E, 0x03, 0x80, 0x1E, 0x0F, + 0x00, 0x3C, 0x3C, 0x00, 0x78, 0x70, 0x00, 0xF1, 0xE0, 0x01, 0xE7, 0x80, + 0x01, 0xEF, 0x00, 0x03, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, + 0x0F, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x7F, 0x87, 0xFF, + 0xFF, 0x1F, 0xFF, 0xF8, 0x7F, 0xFF, 0xE1, 0xFE, 0x78, 0x00, 0xF1, 0xE3, + 0xC3, 0x87, 0x8F, 0x0E, 0x1E, 0x7C, 0x78, 0x79, 0xF9, 0xC1, 0xEF, 0xEF, + 0x07, 0xBF, 0xBC, 0x1D, 0xFE, 0xE0, 0x77, 0x7F, 0x81, 0xFD, 0xFE, 0x07, + 0xE3, 0xF0, 0x3F, 0x8F, 0xC0, 0xFC, 0x3F, 0x03, 0xF0, 0xF8, 0x0F, 0x83, + 0xE0, 0x3E, 0x0F, 0x80, 0xF0, 0x3C, 0x00, 0x07, 0xE0, 0x7E, 0x0F, 0xF0, + 0xFF, 0x0F, 0xF0, 0xFE, 0x0F, 0xE0, 0xFE, 0x03, 0xC0, 0xF8, 0x01, 0xE1, + 0xE0, 0x01, 0xF3, 0xC0, 0x00, 0xF7, 0x80, 0x00, 0x7F, 0x00, 0x00, 0x7E, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFF, 0x00, 0x03, 0xEF, + 0x00, 0x07, 0xCF, 0x80, 0x0F, 0x87, 0xC0, 0x1F, 0x03, 0xC0, 0x7F, 0x07, + 0xF0, 0xFF, 0x8F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xE0, 0x7E, 0x0F, + 0xEF, 0xF0, 0xFF, 0xFF, 0x0F, 0xEF, 0xE0, 0xFE, 0x3C, 0x0F, 0x01, 0xE1, + 0xE0, 0x1E, 0x3E, 0x00, 0xF7, 0xC0, 0x0F, 0xF8, 0x00, 0x7F, 0x00, 0x07, + 0xE0, 0x00, 0x3C, 0x00, 0x03, 0x80, 0x00, 0x78, 0x00, 0x07, 0x80, 0x00, + 0x78, 0x00, 0x07, 0x00, 0x07, 0xFF, 0x00, 0xFF, 0xF8, 0x0F, 0xFF, 0x00, + 0xFF, 0xF0, 0x00, 0x07, 0xFF, 0xE0, 0xFF, 0xFC, 0x3F, 0xFF, 0x87, 0xFF, + 0xF0, 0xF0, 0x7C, 0x1C, 0x1F, 0x03, 0x87, 0xC0, 0x61, 0xF0, 0x00, 0x7C, + 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x07, + 0x07, 0xC0, 0xE1, 0xF0, 0x3C, 0x7C, 0x07, 0x9F, 0xFF, 0xF3, 0xFF, 0xFC, + 0x7F, 0xFF, 0x8F, 0xFF, 0xF0, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xE0, + 0x70, 0x07, 0x80, 0x3C, 0x01, 0xC0, 0x0E, 0x00, 0xF0, 0x07, 0x80, 0x3C, + 0x01, 0xC0, 0x0E, 0x00, 0xF0, 0x07, 0x80, 0x38, 0x01, 0xC0, 0x0E, 0x00, + 0xF0, 0x07, 0x80, 0x38, 0x01, 0xC0, 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3F, + 0x80, 0xE0, 0x38, 0x0F, 0x03, 0xC0, 0xF0, 0x1C, 0x07, 0x81, 0xE0, 0x78, + 0x0E, 0x03, 0xC0, 0xF0, 0x3C, 0x07, 0x01, 0xE0, 0x78, 0x1E, 0x03, 0x80, + 0xF0, 0x3C, 0x0F, 0x01, 0xE0, 0x78, 0x1E, 0x03, 0x80, 0xF0, 0x3C, 0x06, + 0x07, 0xF8, 0x3F, 0xC1, 0xFC, 0x0F, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, + 0x1C, 0x00, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0x80, 0x1C, 0x01, 0xE0, 0x0F, + 0x00, 0x78, 0x03, 0x80, 0x1C, 0x01, 0xE0, 0x0F, 0x00, 0x70, 0x03, 0x80, + 0x1C, 0x0F, 0xE0, 0xFF, 0x07, 0xF0, 0x3F, 0x80, 0x00, 0x40, 0x01, 0x80, + 0x07, 0x80, 0x3F, 0x80, 0xFF, 0x03, 0xFF, 0x0F, 0x9F, 0x3E, 0x1E, 0xF8, + 0x3F, 0xE0, 0x3F, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xF0, 0xC3, 0xC7, 0x0E, 0x3C, 0x30, 0x00, 0xFE, 0x00, + 0x7F, 0xF0, 0x1F, 0xFF, 0x03, 0xFF, 0xE0, 0x00, 0x3C, 0x07, 0xFF, 0x83, + 0xFF, 0xF0, 0xFF, 0xFC, 0x3F, 0xFF, 0x8F, 0x80, 0xF3, 0xE0, 0x1E, 0x78, + 0x1F, 0x8F, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xF8, 0xFE, 0x7E, 0x07, + 0xE0, 0x00, 0x3F, 0x80, 0x00, 0xFC, 0x00, 0x03, 0xF0, 0x00, 0x01, 0xC0, + 0x00, 0x0F, 0x00, 0x00, 0x3C, 0xFC, 0x00, 0xEF, 0xFC, 0x03, 0xFF, 0xF8, + 0x1F, 0xFF, 0xE0, 0x7E, 0x0F, 0xC1, 0xE0, 0x1F, 0x07, 0x00, 0x3C, 0x1C, + 0x00, 0xF0, 0xE0, 0x03, 0xC3, 0x80, 0x1E, 0x0F, 0x00, 0xF8, 0x3E, 0x07, + 0xC7, 0xFF, 0xFF, 0x3F, 0xFF, 0xF8, 0xFF, 0xFF, 0x81, 0xF1, 0xF8, 0x00, + 0x00, 0xFE, 0x60, 0xFF, 0xFC, 0x3F, 0xFF, 0x8F, 0xFF, 0xF3, 0xF0, 0x3C, + 0xF8, 0x03, 0x9E, 0x00, 0x67, 0x80, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, + 0xC0, 0x00, 0x7E, 0x01, 0xC7, 0xFF, 0xF8, 0xFF, 0xFE, 0x0F, 0xFF, 0x80, + 0x7F, 0x80, 0x00, 0x01, 0xF8, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, + 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x70, 0x07, 0xE3, 0x80, 0xFF, 0xDC, 0x0F, + 0xFF, 0xE0, 0xFF, 0xFF, 0x0F, 0xC1, 0xF0, 0xF8, 0x07, 0x87, 0x80, 0x1C, + 0x78, 0x00, 0xE3, 0xC0, 0x0F, 0x1E, 0x00, 0x70, 0xF0, 0x07, 0x87, 0xE0, + 0xFC, 0x1F, 0xFF, 0xF8, 0xFF, 0xFF, 0xC3, 0xFF, 0xFE, 0x07, 0xE3, 0xE0, + 0x00, 0xFC, 0x01, 0xFF, 0xC0, 0xFF, 0xF8, 0x7F, 0xFE, 0x3E, 0x0F, 0xCE, + 0x00, 0xF7, 0x00, 0x3D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xE0, 0x1E, 0xFF, 0xFF, 0x9F, 0xFF, 0xE3, 0xFF, 0xF0, 0x3F, 0xF0, + 0x00, 0x0F, 0xF0, 0x01, 0xFF, 0xC0, 0x1F, 0xFE, 0x01, 0xFF, 0xE0, 0x0F, + 0x00, 0x00, 0xF0, 0x00, 0x3F, 0xFF, 0x03, 0xFF, 0xF8, 0x1F, 0xFF, 0xC0, + 0xFF, 0xFC, 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x38, 0x00, 0x01, 0xC0, + 0x00, 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x00, 0x00, 0x38, 0x00, 0x1F, + 0xFF, 0x81, 0xFF, 0xFC, 0x0F, 0xFF, 0xE0, 0x7F, 0xFE, 0x00, 0x01, 0xF9, + 0xF8, 0x3F, 0xFF, 0xC3, 0xFF, 0xFE, 0x7F, 0xFF, 0xE3, 0xE0, 0xFC, 0x3E, + 0x03, 0xE1, 0xE0, 0x0E, 0x1E, 0x00, 0x70, 0xF0, 0x03, 0x87, 0x80, 0x3C, + 0x3E, 0x03, 0xE1, 0xF8, 0x7E, 0x07, 0xFF, 0xF0, 0x3F, 0xFF, 0x80, 0xFF, + 0xFC, 0x01, 0xF9, 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x80, + 0x7F, 0xF8, 0x07, 0xFF, 0x80, 0x3F, 0xF8, 0x00, 0xFF, 0x00, 0x00, 0x0F, + 0xC0, 0x00, 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x03, 0xC0, 0x00, + 0x38, 0x00, 0x03, 0x9F, 0x00, 0x7F, 0xFC, 0x07, 0xFF, 0xC0, 0x7F, 0xFE, + 0x07, 0xC3, 0xE0, 0x70, 0x1E, 0x0F, 0x01, 0xC0, 0xF0, 0x1C, 0x0E, 0x03, + 0xC0, 0xE0, 0x3C, 0x1E, 0x03, 0x81, 0xE0, 0x38, 0x7F, 0x0F, 0xFF, 0xF8, + 0xFF, 0xFF, 0x8F, 0xF7, 0xF0, 0xFE, 0x00, 0x78, 0x00, 0x78, 0x00, 0x78, + 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF0, 0x0F, 0xF0, 0x1F, 0xF0, + 0x0F, 0xF0, 0x00, 0xF0, 0x00, 0xE0, 0x00, 0xE0, 0x01, 0xE0, 0x01, 0xE0, + 0x01, 0xE0, 0x01, 0xC0, 0x01, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0xF8, 0x00, 0x3C, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFC, 0x3F, 0xFE, 0x0F, 0xFF, 0x81, 0xFF, + 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x00, 0x01, 0xC0, 0x00, 0xF0, + 0x00, 0x3C, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, 0x78, 0x00, + 0x1E, 0x00, 0x07, 0x00, 0x01, 0xC0, 0x00, 0xF0, 0x00, 0x7C, 0x1F, 0xFE, + 0x0F, 0xFF, 0x03, 0xFF, 0x80, 0x7F, 0x80, 0x00, 0x07, 0xE0, 0x00, 0xFE, + 0x00, 0x0F, 0xE0, 0x00, 0x7C, 0x00, 0x01, 0xC0, 0x00, 0x3C, 0x00, 0x03, + 0xCF, 0xF0, 0x3C, 0xFF, 0x03, 0x9F, 0xF0, 0x38, 0xFE, 0x07, 0xBF, 0x00, + 0x7F, 0xC0, 0x07, 0xF8, 0x00, 0x7F, 0x00, 0x07, 0xF8, 0x00, 0xFF, 0xC0, + 0x0F, 0x7E, 0x00, 0xE3, 0xF0, 0x7E, 0x1F, 0xE7, 0xE1, 0xFE, 0xFE, 0x3F, + 0xE7, 0xE1, 0xFC, 0x03, 0xFC, 0x07, 0xFC, 0x07, 0xF8, 0x07, 0xF8, 0x00, + 0x78, 0x00, 0x78, 0x00, 0x78, 0x00, 0x70, 0x00, 0x70, 0x00, 0xF0, 0x00, + 0xF0, 0x00, 0xE0, 0x00, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x01, + 0xC0, 0x01, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x1F, + 0x7C, 0x78, 0x7F, 0xFF, 0xF8, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xF0, 0xF1, + 0xF1, 0xE1, 0xC3, 0x83, 0xC7, 0x87, 0x07, 0x8F, 0x0E, 0x0E, 0x1C, 0x3C, + 0x1C, 0x38, 0x78, 0x78, 0x70, 0xE0, 0xF1, 0xE1, 0xC1, 0xC7, 0xE3, 0xC3, + 0xFF, 0xCF, 0xC7, 0xFF, 0x9F, 0x9F, 0xFF, 0x3E, 0x3E, 0x0F, 0x8F, 0x80, + 0xFD, 0xFF, 0x07, 0xFF, 0xF8, 0x3F, 0xFF, 0xE0, 0x7E, 0x1F, 0x07, 0xC0, + 0x78, 0x3C, 0x03, 0x81, 0xE0, 0x1C, 0x0E, 0x01, 0xE0, 0x70, 0x0F, 0x07, + 0x80, 0x70, 0x3C, 0x03, 0x87, 0xF0, 0x3F, 0x7F, 0xC3, 0xFF, 0xFE, 0x1F, + 0xEF, 0xE0, 0xFE, 0x01, 0xFC, 0x01, 0xFF, 0x80, 0xFF, 0xF8, 0x7F, 0xFE, + 0x3E, 0x0F, 0xDF, 0x01, 0xF7, 0x80, 0x3F, 0xC0, 0x0F, 0xF0, 0x03, 0xFC, + 0x01, 0xEF, 0x80, 0xFB, 0xF0, 0x7C, 0x7F, 0xFF, 0x1F, 0xFF, 0x03, 0xFF, + 0x80, 0x3F, 0x80, 0x07, 0xC7, 0xE0, 0x1F, 0xBF, 0xF0, 0x3F, 0xFF, 0xF0, + 0x7F, 0xFF, 0xE0, 0x3F, 0x07, 0xE0, 0x78, 0x03, 0xC0, 0xE0, 0x07, 0x81, + 0xC0, 0x0F, 0x07, 0x00, 0x1E, 0x0F, 0x00, 0x78, 0x1E, 0x01, 0xF0, 0x3E, + 0x07, 0xC0, 0xFF, 0xFF, 0x81, 0xFF, 0xFE, 0x03, 0xDF, 0xF0, 0x07, 0x1F, + 0x80, 0x0E, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x78, 0x00, 0x03, 0xFE, 0x00, + 0x0F, 0xFE, 0x00, 0x1F, 0xF8, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x01, 0xF8, + 0xF8, 0x1F, 0xFF, 0xF1, 0xFF, 0xFF, 0xCF, 0xFF, 0xFE, 0x3E, 0x07, 0xC1, + 0xF0, 0x0F, 0x07, 0x80, 0x1C, 0x3C, 0x00, 0x70, 0xF0, 0x03, 0x83, 0xC0, + 0x0E, 0x0F, 0x80, 0x78, 0x3F, 0x07, 0xE0, 0x7F, 0xFF, 0x81, 0xFF, 0xFC, + 0x03, 0xFF, 0x70, 0x03, 0xF3, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, + 0x00, 0xE0, 0x00, 0x3F, 0xE0, 0x01, 0xFF, 0xC0, 0x07, 0xFF, 0x00, 0x1F, + 0xF8, 0x00, 0x0F, 0xC3, 0xC1, 0xFC, 0xFF, 0x1F, 0xFF, 0xF1, 0xFF, 0xFE, + 0x03, 0xFC, 0x00, 0x3F, 0x00, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x07, 0x80, + 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0xF0, 0x00, 0xFF, 0xFC, 0x0F, 0xFF, + 0xE0, 0xFF, 0xFC, 0x0F, 0xFF, 0xC0, 0x03, 0xF3, 0x0F, 0xFF, 0x3F, 0xFF, + 0x3F, 0xFF, 0x7C, 0x0E, 0x78, 0x00, 0x7F, 0xE0, 0x3F, 0xFC, 0x1F, 0xFF, + 0x00, 0x3F, 0x70, 0x0F, 0xF8, 0x1F, 0xFF, 0xFE, 0xFF, 0xFC, 0xFF, 0xF8, + 0x0F, 0xE0, 0x06, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0E, 0x00, 0x0E, 0x00, + 0x7F, 0xFE, 0xFF, 0xFE, 0xFF, 0xFE, 0xFF, 0xFC, 0x1C, 0x00, 0x3C, 0x00, + 0x3C, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x78, 0x00, 0x7C, 0x0E, + 0x7F, 0xFF, 0x7F, 0xFE, 0x3F, 0xFC, 0x0F, 0xE0, 0x7C, 0x0F, 0xFF, 0x07, + 0xFF, 0x81, 0xFF, 0xE0, 0x7E, 0x78, 0x03, 0x9E, 0x00, 0xE7, 0x80, 0x79, + 0xE0, 0x1E, 0x78, 0x07, 0x1E, 0x01, 0xC7, 0x80, 0xF1, 0xE0, 0xFC, 0x7F, + 0xFF, 0x9F, 0xFF, 0xE3, 0xFF, 0xF8, 0x3E, 0x7C, 0x7F, 0x87, 0xFF, 0xFC, + 0x7F, 0xFF, 0xE3, 0xFF, 0xFF, 0x1F, 0xE1, 0xE0, 0x3C, 0x0F, 0x03, 0xC0, + 0x78, 0x3C, 0x01, 0xE1, 0xC0, 0x0F, 0x1E, 0x00, 0x79, 0xE0, 0x03, 0xCE, + 0x00, 0x0F, 0xF0, 0x00, 0x7F, 0x00, 0x03, 0xF0, 0x00, 0x0F, 0x80, 0x00, + 0x78, 0x00, 0x7E, 0x03, 0xF7, 0xF0, 0x3F, 0xFF, 0x81, 0xFD, 0xF8, 0x0F, + 0xE7, 0x8E, 0x1C, 0x3C, 0xF9, 0xE1, 0xE7, 0xCE, 0x0F, 0x7E, 0xF0, 0x7B, + 0xF7, 0x03, 0xFF, 0xF8, 0x1F, 0xDF, 0x80, 0xFC, 0xFC, 0x07, 0xE7, 0xE0, + 0x3E, 0x3E, 0x01, 0xF1, 0xF0, 0x0F, 0x07, 0x00, 0x0F, 0xE3, 0xF8, 0xFF, + 0x1F, 0xC7, 0xF9, 0xFE, 0x1F, 0x87, 0xF0, 0x7E, 0x7C, 0x01, 0xFF, 0xC0, + 0x07, 0xFC, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x1F, 0xF0, 0x01, 0xF7, + 0xC0, 0x1F, 0x1F, 0x03, 0xF0, 0x7C, 0x7F, 0xCF, 0xFB, 0xFE, 0x7F, 0xDF, + 0xE3, 0xFC, 0x07, 0xF0, 0x7F, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x07, + 0xE0, 0xFE, 0x03, 0xC0, 0x78, 0x03, 0xC0, 0x78, 0x03, 0xC0, 0xF0, 0x01, + 0xE1, 0xE0, 0x01, 0xE1, 0xC0, 0x01, 0xE3, 0xC0, 0x00, 0xF7, 0x80, 0x00, + 0xFF, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7C, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x70, 0x00, 0x00, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x7F, + 0xF0, 0x00, 0xFF, 0xF8, 0x00, 0xFF, 0xF0, 0x00, 0x7F, 0xF0, 0x00, 0x1F, + 0xFF, 0xC7, 0xFF, 0xF1, 0xFF, 0xF8, 0xFF, 0xFE, 0x3C, 0x1F, 0x0E, 0x1F, + 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, + 0xF8, 0x3C, 0xFF, 0xFF, 0x3F, 0xFF, 0xCF, 0xFF, 0xE3, 0xFF, 0xF8, 0x00, + 0xF0, 0x1F, 0x03, 0xF0, 0x7E, 0x07, 0x80, 0x70, 0x0F, 0x00, 0xF0, 0x0E, + 0x00, 0xE0, 0x1E, 0x01, 0xC0, 0xFC, 0x0F, 0x80, 0xF8, 0x0F, 0xC0, 0x3C, + 0x03, 0xC0, 0x38, 0x03, 0x80, 0x78, 0x07, 0x80, 0x78, 0x07, 0xE0, 0x7E, + 0x03, 0xE0, 0x1C, 0x00, 0x02, 0x07, 0x07, 0x0F, 0x0F, 0x0E, 0x0E, 0x0E, + 0x1E, 0x1E, 0x1C, 0x1C, 0x1C, 0x3C, 0x3C, 0x38, 0x38, 0x38, 0x78, 0x78, + 0x70, 0x70, 0x70, 0xF0, 0xF0, 0xE0, 0xE0, 0x01, 0xC0, 0x1F, 0x00, 0xFC, + 0x07, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1C, 0x00, 0xE0, 0x0F, 0x00, + 0x78, 0x03, 0xC0, 0x1F, 0x80, 0x7C, 0x03, 0xE0, 0x3F, 0x03, 0xC0, 0x1C, + 0x00, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0x80, 0x3C, 0x0F, 0xE0, 0x7E, 0x07, + 0xE0, 0x1E, 0x00, 0x0F, 0x00, 0x1F, 0xC0, 0x1F, 0xF0, 0xFF, 0xFC, 0xFF, + 0x3F, 0xFF, 0x0F, 0xF8, 0x03, 0xF8, 0x00, 0xF0}; + +const GFXglyph FreeMonoBoldOblique18pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 21, 0, 1}, // 0x20 ' ' + {0, 9, 22, 21, 9, -21}, // 0x21 '!' + {25, 12, 10, 21, 9, -20}, // 0x22 '"' + {40, 18, 25, 21, 4, -22}, // 0x23 '#' + {97, 18, 28, 21, 4, -23}, // 0x24 '$' + {160, 16, 21, 21, 5, -20}, // 0x25 '%' + {202, 16, 20, 21, 4, -19}, // 0x26 '&' + {242, 5, 10, 21, 12, -20}, // 0x27 ''' + {249, 10, 27, 21, 11, -21}, // 0x28 '(' + {283, 10, 27, 21, 4, -21}, // 0x29 ')' + {317, 15, 15, 21, 6, -21}, // 0x2A '*' + {346, 18, 19, 21, 4, -18}, // 0x2B '+' + {389, 9, 10, 21, 4, -3}, // 0x2C ',' + {401, 18, 4, 21, 4, -11}, // 0x2D '-' + {410, 5, 5, 21, 8, -4}, // 0x2E '.' + {414, 21, 28, 21, 2, -23}, // 0x2F '/' + {488, 17, 23, 21, 5, -22}, // 0x30 '0' + {537, 15, 22, 21, 3, -21}, // 0x31 '1' + {579, 20, 23, 21, 2, -22}, // 0x32 '2' + {637, 18, 23, 21, 3, -22}, // 0x33 '3' + {689, 16, 21, 21, 4, -20}, // 0x34 '4' + {731, 18, 22, 21, 4, -21}, // 0x35 '5' + {781, 19, 23, 21, 5, -22}, // 0x36 '6' + {836, 16, 22, 21, 6, -21}, // 0x37 '7' + {880, 19, 23, 21, 3, -22}, // 0x38 '8' + {935, 18, 23, 21, 4, -22}, // 0x39 '9' + {987, 7, 16, 21, 9, -15}, // 0x3A ':' + {1001, 11, 22, 21, 4, -15}, // 0x3B ';' + {1032, 18, 16, 21, 4, -17}, // 0x3C '<' + {1068, 19, 10, 21, 3, -14}, // 0x3D '=' + {1092, 19, 16, 21, 3, -17}, // 0x3E '>' + {1130, 14, 21, 21, 8, -20}, // 0x3F '?' + {1167, 18, 27, 21, 3, -21}, // 0x40 '@' + {1228, 22, 21, 21, 0, -20}, // 0x41 'A' + {1286, 21, 21, 21, 1, -20}, // 0x42 'B' + {1342, 21, 21, 21, 2, -20}, // 0x43 'C' + {1398, 21, 21, 21, 1, -20}, // 0x44 'D' + {1454, 22, 21, 21, 0, -20}, // 0x45 'E' + {1512, 23, 21, 21, 0, -20}, // 0x46 'F' + {1573, 21, 21, 21, 2, -20}, // 0x47 'G' + {1629, 23, 21, 21, 0, -20}, // 0x48 'H' + {1690, 19, 21, 21, 2, -20}, // 0x49 'I' + {1740, 23, 21, 21, 0, -20}, // 0x4A 'J' + {1801, 23, 21, 21, 0, -20}, // 0x4B 'K' + {1862, 20, 21, 21, 1, -20}, // 0x4C 'L' + {1915, 25, 21, 21, 0, -20}, // 0x4D 'M' + {1981, 24, 21, 21, 1, -20}, // 0x4E 'N' + {2044, 20, 21, 21, 2, -20}, // 0x4F 'O' + {2097, 21, 21, 21, 1, -20}, // 0x50 'P' + {2153, 20, 26, 21, 2, -20}, // 0x51 'Q' + {2218, 22, 21, 21, 0, -20}, // 0x52 'R' + {2276, 19, 21, 21, 3, -20}, // 0x53 'S' + {2326, 19, 21, 21, 3, -20}, // 0x54 'T' + {2376, 21, 21, 21, 3, -20}, // 0x55 'U' + {2432, 23, 21, 21, 1, -20}, // 0x56 'V' + {2493, 22, 21, 21, 2, -20}, // 0x57 'W' + {2551, 24, 21, 21, 0, -20}, // 0x58 'X' + {2614, 20, 21, 21, 3, -20}, // 0x59 'Y' + {2667, 19, 21, 21, 2, -20}, // 0x5A 'Z' + {2717, 13, 27, 21, 8, -21}, // 0x5B '[' + {2761, 10, 28, 21, 8, -23}, // 0x5C '\' + {2796, 13, 27, 21, 4, -21}, // 0x5D ']' + {2840, 15, 11, 21, 6, -21}, // 0x5E '^' + {2861, 21, 4, 21, -1, 4}, // 0x5F '_' + {2872, 6, 6, 21, 10, -22}, // 0x60 '`' + {2877, 19, 16, 21, 2, -15}, // 0x61 'a' + {2915, 22, 22, 21, 0, -21}, // 0x62 'b' + {2976, 19, 16, 21, 3, -15}, // 0x63 'c' + {3014, 21, 22, 21, 3, -21}, // 0x64 'd' + {3072, 18, 16, 21, 3, -15}, // 0x65 'e' + {3108, 21, 22, 21, 3, -21}, // 0x66 'f' + {3166, 21, 23, 21, 2, -15}, // 0x67 'g' + {3227, 20, 22, 21, 1, -21}, // 0x68 'h' + {3282, 16, 22, 21, 3, -21}, // 0x69 'i' + {3326, 18, 29, 21, 2, -21}, // 0x6A 'j' + {3392, 20, 22, 21, 1, -21}, // 0x6B 'k' + {3447, 16, 22, 21, 3, -21}, // 0x6C 'l' + {3491, 23, 16, 21, 0, -15}, // 0x6D 'm' + {3537, 21, 16, 21, 1, -15}, // 0x6E 'n' + {3579, 18, 16, 21, 3, -15}, // 0x6F 'o' + {3615, 23, 23, 21, -1, -15}, // 0x70 'p' + {3682, 22, 23, 21, 2, -15}, // 0x71 'q' + {3746, 20, 16, 21, 2, -15}, // 0x72 'r' + {3786, 16, 16, 21, 4, -15}, // 0x73 's' + {3818, 16, 21, 21, 4, -20}, // 0x74 't' + {3860, 18, 16, 21, 3, -15}, // 0x75 'u' + {3896, 21, 16, 21, 2, -15}, // 0x76 'v' + {3938, 21, 16, 21, 3, -15}, // 0x77 'w' + {3980, 21, 16, 21, 1, -15}, // 0x78 'x' + {4022, 24, 23, 21, -1, -15}, // 0x79 'y' + {4091, 18, 16, 21, 3, -15}, // 0x7A 'z' + {4127, 12, 27, 21, 8, -21}, // 0x7B '{' + {4168, 8, 27, 21, 8, -21}, // 0x7C '|' + {4195, 13, 27, 21, 4, -21}, // 0x7D '}' + {4239, 17, 8, 21, 4, -13}}; // 0x7E '~' + +const GFXfont FreeMonoBoldOblique18pt7b PROGMEM = { + (uint8_t *)FreeMonoBoldOblique18pt7bBitmaps, + (GFXglyph *)FreeMonoBoldOblique18pt7bGlyphs, 0x20, 0x7E, 35}; + +// Approx. 4928 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBoldOblique24pt7b.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBoldOblique24pt7b.h new file mode 100644 index 0000000..ac923bf --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBoldOblique24pt7b.h @@ -0,0 +1,744 @@ +#pragma once +#include + +const uint8_t FreeMonoBoldOblique24pt7bBitmaps[] PROGMEM = { + 0x01, 0xE0, 0x3F, 0x07, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xE0, 0xFE, + 0x0F, 0xE0, 0xFE, 0x0F, 0xC0, 0xFC, 0x1F, 0xC1, 0xF8, 0x1F, 0x81, 0xF8, + 0x1F, 0x81, 0xF0, 0x1F, 0x01, 0xF0, 0x1E, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x03, 0xC0, 0x7E, 0x0F, 0xE0, 0xFE, 0x0F, 0xC0, 0x78, 0x00, 0x7E, + 0x1F, 0xBF, 0x0F, 0xDF, 0x87, 0xCF, 0x83, 0xE7, 0xC1, 0xF3, 0xE0, 0xF1, + 0xE0, 0xF8, 0xF0, 0x7C, 0x78, 0x3C, 0x38, 0x1E, 0x1C, 0x0F, 0x0E, 0x07, + 0x0E, 0x03, 0x83, 0x01, 0x80, 0x00, 0x1C, 0x1C, 0x00, 0x3E, 0x3E, 0x00, + 0x3E, 0x3E, 0x00, 0x3C, 0x3C, 0x00, 0x7C, 0x7C, 0x00, 0x7C, 0x7C, 0x00, + 0x7C, 0x7C, 0x00, 0xF8, 0xF8, 0x00, 0xF8, 0xF8, 0x00, 0xF8, 0xF8, 0x0F, + 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0x1F, + 0xFF, 0xFE, 0x03, 0xE3, 0xE0, 0x03, 0xE3, 0xE0, 0x03, 0xC3, 0xC0, 0x07, + 0xC7, 0xC0, 0x7F, 0xFF, 0xF8, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFC, 0xFF, + 0xFF, 0xF8, 0xFF, 0xFF, 0xF0, 0x0F, 0x0F, 0x00, 0x1F, 0x1F, 0x00, 0x1F, + 0x1F, 0x00, 0x1F, 0x1F, 0x00, 0x3E, 0x1E, 0x00, 0x3E, 0x3E, 0x00, 0x3E, + 0x3E, 0x00, 0x3C, 0x3C, 0x00, 0x7C, 0x7C, 0x00, 0x38, 0x38, 0x00, 0x00, + 0x00, 0xE0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x7C, 0x00, + 0x00, 0xFF, 0x00, 0x01, 0xFF, 0xFC, 0x03, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, + 0x01, 0xFF, 0xFF, 0x81, 0xFC, 0x1F, 0xC1, 0xF8, 0x03, 0xC0, 0xF8, 0x01, + 0xE0, 0x7C, 0x00, 0x40, 0x3F, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x0F, 0xFF, + 0x80, 0x03, 0xFF, 0xF8, 0x00, 0xFF, 0xFE, 0x00, 0x0F, 0xFF, 0x00, 0x00, + 0x7F, 0xC0, 0x00, 0x07, 0xE0, 0xE0, 0x01, 0xF0, 0xF0, 0x00, 0xF8, 0xF8, + 0x00, 0xFC, 0x7E, 0x00, 0xFC, 0x3F, 0x81, 0xFE, 0x1F, 0xFF, 0xFE, 0x0F, + 0xFF, 0xFE, 0x0F, 0xFF, 0xFE, 0x03, 0xFF, 0xFC, 0x00, 0x07, 0xF0, 0x00, + 0x01, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x7C, 0x00, + 0x00, 0x3E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0xF8, + 0x00, 0x0F, 0xF8, 0x00, 0x7F, 0xE0, 0x03, 0xC3, 0xC0, 0x0E, 0x07, 0x00, + 0x70, 0x1C, 0x01, 0xC0, 0x70, 0x07, 0x01, 0xC0, 0x1C, 0x0E, 0x00, 0x78, + 0x78, 0x00, 0xFF, 0xC0, 0x03, 0xFE, 0x1F, 0x03, 0xE3, 0xFC, 0x00, 0x7F, + 0xC0, 0x0F, 0xF8, 0x03, 0xFF, 0x00, 0x7F, 0xC0, 0x03, 0xF8, 0x7C, 0x0F, + 0x07, 0xFC, 0x00, 0x3F, 0xF0, 0x01, 0xE1, 0xE0, 0x07, 0x03, 0x80, 0x38, + 0x0E, 0x00, 0xE0, 0x38, 0x03, 0x80, 0xE0, 0x0E, 0x07, 0x00, 0x3C, 0x3C, + 0x00, 0x7F, 0xE0, 0x01, 0xFF, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x1F, 0x00, + 0x01, 0xFF, 0x80, 0x3F, 0xFC, 0x03, 0xFF, 0xE0, 0x1F, 0xFE, 0x01, 0xF1, + 0xE0, 0x1F, 0x04, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x01, + 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x07, 0xF8, 0x00, 0x7F, 0xE3, + 0xE7, 0xFF, 0x3F, 0x7E, 0xFF, 0xFB, 0xE7, 0xFF, 0x9E, 0x1F, 0xF1, 0xF0, + 0xFF, 0x8F, 0x83, 0xF8, 0x7C, 0x1F, 0xC3, 0xF0, 0xFF, 0x9F, 0xFF, 0xFC, + 0x7F, 0xFF, 0xE3, 0xFF, 0xFF, 0x0F, 0xFD, 0xF0, 0x1F, 0x80, 0x00, 0x7E, + 0xFD, 0xF3, 0xE7, 0xCF, 0x3E, 0x7C, 0xF1, 0xE3, 0xC7, 0x0E, 0x18, 0x00, + 0x00, 0x18, 0x00, 0xF0, 0x07, 0xC0, 0x3F, 0x01, 0xF8, 0x07, 0xC0, 0x3E, + 0x01, 0xF8, 0x07, 0xC0, 0x3E, 0x00, 0xF8, 0x07, 0xC0, 0x1F, 0x00, 0xF8, + 0x03, 0xE0, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x3E, 0x00, 0xF8, + 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, + 0x00, 0xFC, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x80, 0x7E, 0x00, 0xFC, 0x03, + 0xF0, 0x07, 0xC0, 0x1E, 0x00, 0x00, 0xC0, 0x07, 0x80, 0x3F, 0x00, 0xFC, + 0x03, 0xF0, 0x07, 0xE0, 0x1F, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xF0, 0x07, + 0xC0, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, + 0xF0, 0x07, 0xC0, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x1F, 0x00, 0x7C, 0x01, + 0xF0, 0x0F, 0x80, 0x3E, 0x01, 0xF0, 0x0F, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, + 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x3E, 0x00, 0xF0, 0x00, 0x00, 0x3C, + 0x00, 0x01, 0xE0, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x08, + 0x3C, 0x09, 0xF9, 0xE7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, + 0x87, 0xFF, 0xE0, 0x07, 0xF8, 0x00, 0x7F, 0xC0, 0x07, 0xFF, 0x00, 0x7F, + 0xF8, 0x07, 0xE7, 0xE0, 0x3E, 0x3F, 0x01, 0xE0, 0xF8, 0x0E, 0x07, 0x80, + 0x00, 0x07, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x0F, 0x00, + 0x00, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1E, 0x00, + 0x00, 0x3E, 0x00, 0x00, 0x3E, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x7C, 0x00, + 0x00, 0x78, 0x00, 0x00, 0x78, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xF0, 0x00, + 0x01, 0xF0, 0x00, 0x00, 0xE0, 0x00, 0x03, 0xF0, 0x7E, 0x07, 0xC0, 0xFC, + 0x0F, 0x81, 0xF0, 0x1E, 0x03, 0xE0, 0x3C, 0x07, 0x80, 0x78, 0x0F, 0x00, + 0xE0, 0x0C, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x3C, 0xFF, 0xFF, 0xFF, 0xCF, 0x00, + 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x01, 0xF0, 0x00, + 0x00, 0x3E, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x0F, + 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x00, + 0x00, 0x3E, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x1F, + 0x80, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x07, 0xE0, 0x00, + 0x00, 0x7C, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x07, 0xC0, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x3E, + 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x0F, 0x80, 0x00, + 0x01, 0xF0, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, + 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x07, 0x00, 0x00, + 0x00, 0x00, 0x0F, 0xC0, 0x00, 0xFF, 0xE0, 0x03, 0xFF, 0xE0, 0x1F, 0xFF, + 0xE0, 0x7F, 0xFF, 0xC0, 0xFC, 0x1F, 0x83, 0xF0, 0x1F, 0x8F, 0xC0, 0x1F, + 0x1F, 0x00, 0x3E, 0x7C, 0x00, 0x7C, 0xF8, 0x00, 0xF9, 0xF0, 0x01, 0xF3, + 0xC0, 0x07, 0xCF, 0x80, 0x0F, 0x9F, 0x00, 0x1E, 0x3E, 0x00, 0x3C, 0x78, + 0x00, 0xF8, 0xF0, 0x01, 0xF3, 0xE0, 0x03, 0xE7, 0xC0, 0x07, 0x8F, 0x80, + 0x1F, 0x1F, 0x00, 0x3E, 0x3E, 0x00, 0xF8, 0x7C, 0x01, 0xF0, 0xFC, 0x07, + 0xC1, 0xFC, 0x3F, 0x81, 0xFF, 0xFE, 0x03, 0xFF, 0xF8, 0x03, 0xFF, 0xE0, + 0x03, 0xFF, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x7E, + 0x00, 0x0F, 0xF0, 0x01, 0xFF, 0x80, 0x1F, 0xFC, 0x03, 0xFB, 0xE0, 0x1F, + 0x9E, 0x00, 0xF1, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x03, 0xE0, + 0x00, 0x1E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x03, + 0xC0, 0x00, 0x1E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, + 0x03, 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, + 0x01, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, + 0xFF, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0x03, 0xFF, 0x80, 0x03, 0xFF, 0xF0, + 0x01, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0x80, 0x7F, 0x07, 0xF0, 0x1F, 0x00, + 0xFC, 0x0F, 0x80, 0x1F, 0x03, 0xE0, 0x07, 0xC0, 0xF0, 0x01, 0xF0, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0xC0, + 0x00, 0x0F, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF8, 0x00, 0x03, 0xF8, + 0x00, 0x03, 0xFC, 0x00, 0x01, 0xFE, 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, + 0x00, 0x00, 0xFF, 0x00, 0x00, 0x7F, 0x80, 0x70, 0x3F, 0x80, 0x3E, 0x1F, + 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFC, + 0x3F, 0xFF, 0xFF, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x0F, 0xFE, 0x00, 0x1F, + 0xFF, 0x80, 0x1F, 0xFF, 0xE0, 0x1F, 0xFF, 0xF8, 0x0F, 0x81, 0xFC, 0x07, + 0x00, 0x3E, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x0F, 0xC0, + 0x00, 0x07, 0xC0, 0x00, 0x0F, 0xC0, 0x01, 0xFF, 0xC0, 0x01, 0xFF, 0xC0, + 0x00, 0xFF, 0x80, 0x00, 0x7F, 0xE0, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0xFE, + 0x00, 0x00, 0x1F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, + 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xFC, 0x3C, 0x01, + 0xFC, 0x3F, 0xFF, 0xFC, 0x1F, 0xFF, 0xFC, 0x0F, 0xFF, 0xFC, 0x03, 0xFF, + 0xFC, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x07, 0xF0, 0x00, + 0x3F, 0xC0, 0x01, 0xFE, 0x00, 0x0F, 0xF8, 0x00, 0x7F, 0xE0, 0x03, 0xFF, + 0x80, 0x1F, 0xBE, 0x00, 0x7C, 0xF0, 0x03, 0xE7, 0xC0, 0x1F, 0x1F, 0x00, + 0xF8, 0x7C, 0x07, 0xE1, 0xE0, 0x3F, 0x07, 0x81, 0xF8, 0x3E, 0x07, 0xC0, + 0xF8, 0x3E, 0x03, 0xC1, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFE, + 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0x80, 0x00, 0xF8, 0x00, 0x3F, 0xF8, 0x01, + 0xFF, 0xE0, 0x07, 0xFF, 0x80, 0x1F, 0xFE, 0x00, 0x7F, 0xF0, 0x01, 0xFF, + 0xFF, 0x00, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0xC0, 0x3F, 0xFF, 0xE0, 0x3F, + 0xFF, 0xE0, 0x1F, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, + 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, 0xF7, 0xF0, 0x00, 0xFF, 0xFE, 0x00, + 0x7F, 0xFF, 0x80, 0x3F, 0xFF, 0xE0, 0x1F, 0xFF, 0xF0, 0x0F, 0x01, 0xFC, + 0x00, 0x00, 0x7E, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x07, + 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, 0xF0, 0x00, 0x01, 0xF0, 0x00, 0x00, + 0xF8, 0x00, 0x00, 0xF8, 0x3C, 0x03, 0xFC, 0x3F, 0xFF, 0xFC, 0x1F, 0xFF, + 0xFC, 0x0F, 0xFF, 0xFC, 0x03, 0xFF, 0xF8, 0x00, 0x3F, 0xE0, 0x00, 0x00, + 0x01, 0xFC, 0x00, 0x07, 0xFE, 0x00, 0x1F, 0xFF, 0x00, 0x7F, 0xFF, 0x00, + 0xFF, 0xFE, 0x01, 0xFE, 0x1C, 0x03, 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x0F, + 0xC0, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3E, 0x3E, 0x00, 0x3E, + 0xFF, 0x80, 0x7D, 0xFF, 0xC0, 0x7F, 0xFF, 0xE0, 0x7F, 0xFF, 0xE0, 0x7F, + 0x87, 0xF0, 0xFF, 0x03, 0xF0, 0xFC, 0x01, 0xF0, 0xF8, 0x01, 0xF0, 0xF8, + 0x01, 0xF0, 0xF8, 0x01, 0xF0, 0xF8, 0x03, 0xE0, 0xF8, 0x03, 0xE0, 0xFC, + 0x07, 0xC0, 0xFE, 0x0F, 0xC0, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, 0x00, 0x3F, + 0xFE, 0x00, 0x1F, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x7F, 0xFF, 0xFD, 0xFF, + 0xFF, 0xE7, 0xFF, 0xFF, 0xBF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFB, 0xE0, 0x07, + 0xCF, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x00, + 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x01, + 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, + 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x00, + 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xE0, + 0x00, 0x1F, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0xFF, + 0xE0, 0x07, 0xFF, 0xE0, 0x1F, 0xFF, 0xE0, 0x7F, 0xFF, 0xC0, 0xFC, 0x1F, + 0xC3, 0xF0, 0x1F, 0x8F, 0xC0, 0x1F, 0x1F, 0x00, 0x3E, 0x3E, 0x00, 0x7C, + 0x7C, 0x01, 0xF0, 0xFC, 0x07, 0xE0, 0xFC, 0x1F, 0x81, 0xFF, 0xFE, 0x01, + 0xFF, 0xF0, 0x01, 0xFF, 0xE0, 0x0F, 0xFF, 0xE0, 0x3F, 0xFF, 0xE0, 0xFE, + 0x0F, 0xC3, 0xF0, 0x0F, 0xC7, 0xC0, 0x0F, 0x9F, 0x00, 0x1F, 0x3E, 0x00, + 0x3E, 0x7C, 0x00, 0xFC, 0xFC, 0x03, 0xF1, 0xFC, 0x1F, 0xE3, 0xFF, 0xFF, + 0x83, 0xFF, 0xFE, 0x03, 0xFF, 0xF8, 0x03, 0xFF, 0xC0, 0x01, 0xFC, 0x00, + 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x3F, 0xF8, 0x00, 0xFF, 0xFC, 0x01, 0xFF, + 0xFE, 0x03, 0xFF, 0xFE, 0x03, 0xF0, 0x7F, 0x07, 0xE0, 0x3F, 0x07, 0xC0, + 0x1F, 0x0F, 0xC0, 0x1F, 0x0F, 0x80, 0x1F, 0x0F, 0x80, 0x1F, 0x0F, 0x80, + 0x3F, 0x0F, 0xC0, 0x7F, 0x0F, 0xE1, 0xFF, 0x07, 0xFF, 0xFE, 0x07, 0xFF, + 0xFE, 0x03, 0xFF, 0xBE, 0x01, 0xFF, 0x7C, 0x00, 0xFC, 0x7C, 0x00, 0x00, + 0xFC, 0x00, 0x01, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x03, 0xF0, 0x00, 0x0F, + 0xE0, 0x00, 0x1F, 0xC0, 0x38, 0x7F, 0x80, 0x7F, 0xFF, 0x00, 0xFF, 0xFE, + 0x00, 0xFF, 0xF8, 0x00, 0x7F, 0xE0, 0x00, 0x3F, 0x80, 0x00, 0x07, 0x83, + 0xF1, 0xFC, 0x7F, 0x1F, 0x83, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x1F, 0x8F, 0xE3, 0xF8, 0xFC, + 0x1E, 0x00, 0x00, 0x3C, 0x00, 0xFC, 0x03, 0xF8, 0x07, 0xF0, 0x0F, 0xC0, + 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x03, 0xE0, 0x0F, 0xC0, + 0x1F, 0x00, 0x7C, 0x00, 0xF0, 0x03, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x38, + 0x00, 0xF0, 0x01, 0xC0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x03, 0xC0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xF0, 0x00, 0x3F, 0xE0, 0x00, + 0x7F, 0xC0, 0x00, 0xFF, 0x80, 0x03, 0xFF, 0x00, 0x07, 0xFE, 0x00, 0x0F, + 0xFC, 0x00, 0x1F, 0xF0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0xFF, 0x00, 0x00, + 0x3F, 0xE0, 0x00, 0x0F, 0xFC, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x3F, 0xE0, + 0x00, 0x07, 0xFC, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, + 0x80, 0x1F, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xFC, 0xFF, + 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, + 0xF3, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0x80, 0x00, + 0x00, 0x00, 0x07, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, + 0xFF, 0x80, 0x00, 0x1F, 0xF0, 0x00, 0x07, 0xFE, 0x00, 0x00, 0xFF, 0xC0, + 0x00, 0x1F, 0xF0, 0x00, 0x07, 0xFE, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x7F, + 0xE0, 0x00, 0xFF, 0xC0, 0x01, 0xFF, 0x80, 0x03, 0xFE, 0x00, 0x07, 0xFC, + 0x00, 0x1F, 0xF8, 0x00, 0x3F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0x1F, 0x80, + 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x01, 0xFF, + 0xE1, 0xFF, 0xFE, 0x3F, 0xFF, 0xE7, 0xFF, 0xFF, 0xF8, 0x1F, 0xFE, 0x00, + 0xFF, 0x80, 0x1F, 0xF0, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x0F, + 0xE0, 0x07, 0xF8, 0x07, 0xFE, 0x01, 0xFF, 0x80, 0x7F, 0xC0, 0x0F, 0xE0, + 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xF0, 0x00, 0x3F, 0x00, 0x0F, 0xE0, 0x01, 0xFC, 0x00, + 0x3F, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x7F, 0xF0, 0x01, + 0xFF, 0xF0, 0x0F, 0xFF, 0xE0, 0x3F, 0x07, 0xE0, 0x7C, 0x07, 0xC1, 0xE0, + 0x07, 0x87, 0xC0, 0x0F, 0x0F, 0x00, 0x1C, 0x3C, 0x00, 0x78, 0x78, 0x07, + 0xF1, 0xE0, 0x3F, 0xE3, 0xC1, 0xFF, 0x87, 0x87, 0xFF, 0x0E, 0x1F, 0x9E, + 0x3C, 0x7C, 0x3C, 0x78, 0xF0, 0x78, 0xF3, 0xC0, 0xE1, 0xC7, 0x83, 0xC3, + 0x8F, 0x07, 0x8F, 0x1E, 0x0F, 0x1E, 0x3E, 0x1C, 0x3C, 0x7F, 0xFC, 0x78, + 0x7F, 0xFC, 0xF0, 0x7F, 0xF1, 0xE0, 0x3F, 0xE3, 0xC0, 0x00, 0x07, 0x80, + 0x00, 0x0F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x3F, 0x01, + 0xC0, 0x7F, 0xFF, 0x80, 0x7F, 0xFE, 0x00, 0x7F, 0xF8, 0x00, 0x3F, 0x80, + 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x01, 0xFF, 0xF8, 0x00, 0x07, 0xFF, 0xE0, + 0x00, 0x1F, 0xFF, 0x80, 0x00, 0x7F, 0xFE, 0x00, 0x00, 0x0F, 0xFC, 0x00, + 0x00, 0x7F, 0xF0, 0x00, 0x01, 0xE7, 0xC0, 0x00, 0x0F, 0x9F, 0x00, 0x00, + 0x7C, 0x7C, 0x00, 0x01, 0xE1, 0xF8, 0x00, 0x0F, 0x87, 0xE0, 0x00, 0x7C, + 0x0F, 0x80, 0x01, 0xF0, 0x3E, 0x00, 0x0F, 0x80, 0xF8, 0x00, 0x3F, 0xFF, + 0xF0, 0x01, 0xFF, 0xFF, 0xC0, 0x0F, 0xFF, 0xFF, 0x00, 0x3F, 0xFF, 0xFC, + 0x01, 0xFF, 0xFF, 0xF8, 0x0F, 0xC0, 0x07, 0xE0, 0x3E, 0x00, 0x0F, 0x87, + 0xFF, 0x03, 0xFF, 0xBF, 0xFC, 0x1F, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xFF, + 0xC1, 0xFF, 0xEF, 0xFE, 0x07, 0xFF, 0x00, 0x03, 0xFF, 0xFF, 0x80, 0x3F, + 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0xFC, 0x0F, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, + 0xFF, 0x80, 0x7C, 0x00, 0xFC, 0x03, 0xE0, 0x03, 0xE0, 0x1E, 0x00, 0x1F, + 0x01, 0xF0, 0x00, 0xF8, 0x0F, 0x80, 0x0F, 0x80, 0x7C, 0x01, 0xF8, 0x03, + 0xFF, 0xFF, 0x80, 0x1F, 0xFF, 0xF8, 0x01, 0xFF, 0xFF, 0xC0, 0x0F, 0xFF, + 0xFF, 0x80, 0x7F, 0xFF, 0xFC, 0x03, 0xC0, 0x0F, 0xF0, 0x3E, 0x00, 0x1F, + 0x81, 0xF0, 0x00, 0x7C, 0x0F, 0x80, 0x03, 0xE0, 0x78, 0x00, 0x1F, 0x03, + 0xC0, 0x03, 0xF1, 0xFF, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, + 0xFF, 0x87, 0xFF, 0xFF, 0xF0, 0x1F, 0xFF, 0xFE, 0x00, 0x00, 0x07, 0xF0, + 0x00, 0x03, 0xFF, 0xE6, 0x00, 0x7F, 0xFF, 0xF0, 0x1F, 0xFF, 0xFF, 0x03, + 0xFF, 0xFF, 0xF0, 0x7F, 0x81, 0xFF, 0x0F, 0xE0, 0x07, 0xE1, 0xF8, 0x00, + 0x3E, 0x1F, 0x00, 0x03, 0xE3, 0xF0, 0x00, 0x3C, 0x3E, 0x00, 0x03, 0xC7, + 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x7C, 0x00, + 0x00, 0x0F, 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, + 0xF8, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x0F, 0xC0, + 0x00, 0x70, 0x7E, 0x00, 0x1F, 0x07, 0xF8, 0x07, 0xF0, 0x3F, 0xFF, 0xFF, + 0x03, 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xF8, 0x00, 0x7F, 0xFE, 0x00, 0x00, + 0xFF, 0x00, 0x00, 0x03, 0xFF, 0xFC, 0x00, 0x7F, 0xFF, 0xF0, 0x07, 0xFF, + 0xFF, 0x80, 0x7F, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0xE0, 0x1F, 0x00, 0xFE, + 0x01, 0xF0, 0x07, 0xE0, 0x1E, 0x00, 0x3F, 0x01, 0xE0, 0x01, 0xF0, 0x3E, + 0x00, 0x1F, 0x03, 0xE0, 0x01, 0xF0, 0x3E, 0x00, 0x1F, 0x03, 0xC0, 0x01, + 0xF0, 0x7C, 0x00, 0x1F, 0x07, 0xC0, 0x03, 0xF0, 0x7C, 0x00, 0x3E, 0x07, + 0x80, 0x03, 0xE0, 0x78, 0x00, 0x7E, 0x0F, 0x80, 0x07, 0xC0, 0xF8, 0x00, + 0xFC, 0x0F, 0x80, 0x1F, 0x80, 0xF0, 0x07, 0xF0, 0x7F, 0xFF, 0xFE, 0x07, + 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, + 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xF8, 0x3F, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, + 0xFE, 0x1F, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, 0xFF, 0x00, 0x78, 0x00, 0xF8, + 0x07, 0xC0, 0x07, 0xC0, 0x3E, 0x00, 0x3E, 0x01, 0xF0, 0xF1, 0xE0, 0x0F, + 0x0F, 0x8E, 0x00, 0x78, 0x7C, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0x3F, 0xFE, + 0x00, 0x01, 0xFF, 0xF0, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0xFF, 0xFC, 0x00, + 0x07, 0xC3, 0xC0, 0x00, 0x3E, 0x1E, 0x1E, 0x01, 0xE0, 0xE0, 0xF0, 0x0F, + 0x00, 0x0F, 0x80, 0xF8, 0x00, 0x7C, 0x07, 0xC0, 0x03, 0xE1, 0xFF, 0xFF, + 0xFE, 0x1F, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0xFC, + 0x3F, 0xFF, 0xFF, 0xC0, 0x03, 0xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0xF8, + 0x1F, 0xFF, 0xFF, 0xF0, 0x3F, 0xFF, 0xFF, 0xE0, 0x3F, 0xFF, 0xFF, 0xC0, + 0x1F, 0x00, 0x0F, 0x80, 0x3E, 0x00, 0x1E, 0x00, 0x78, 0x00, 0x7C, 0x00, + 0xF0, 0x70, 0xF8, 0x03, 0xE1, 0xF0, 0xE0, 0x07, 0xC3, 0xC0, 0x00, 0x0F, + 0xFF, 0x80, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x7F, 0xFE, 0x00, 0x00, 0xFF, + 0xFC, 0x00, 0x01, 0xFF, 0xF0, 0x00, 0x03, 0xC3, 0xE0, 0x00, 0x07, 0x87, + 0xC0, 0x00, 0x1F, 0x07, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x7C, 0x00, + 0x00, 0x00, 0xF0, 0x00, 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0x3F, 0xFF, 0x80, + 0x00, 0xFF, 0xFF, 0x00, 0x01, 0xFF, 0xFE, 0x00, 0x01, 0xFF, 0xF8, 0x00, + 0x00, 0x00, 0x07, 0xF8, 0x60, 0x03, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0xF0, + 0x1F, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xE0, 0x7F, 0x80, 0xFE, 0x0F, 0xE0, + 0x03, 0xE0, 0xF8, 0x00, 0x3C, 0x1F, 0x00, 0x03, 0xC3, 0xF0, 0x00, 0x00, + 0x3E, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x07, 0xC0, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0x07, 0xC0, 0x7F, 0xFC, 0xF8, 0x0F, 0xFF, + 0xEF, 0x80, 0xFF, 0xFE, 0xF8, 0x0F, 0xFF, 0xCF, 0x80, 0x7F, 0xF8, 0xF8, + 0x00, 0x1F, 0x0F, 0xC0, 0x01, 0xF0, 0xFE, 0x00, 0x1F, 0x07, 0xF8, 0x07, + 0xE0, 0x7F, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xFC, 0x00, + 0x7F, 0xFE, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x01, 0xFF, 0x0F, 0xF8, 0x0F, + 0xFC, 0x7F, 0xF0, 0x7F, 0xF1, 0xFF, 0xC1, 0xFF, 0xC7, 0xFE, 0x03, 0xFE, + 0x1F, 0xF0, 0x07, 0xC0, 0x0F, 0x80, 0x1F, 0x00, 0x3C, 0x00, 0x78, 0x00, + 0xF0, 0x01, 0xE0, 0x07, 0xC0, 0x0F, 0x80, 0x1F, 0x00, 0x3E, 0x00, 0x7C, + 0x00, 0xFF, 0xFF, 0xE0, 0x03, 0xFF, 0xFF, 0x80, 0x1F, 0xFF, 0xFE, 0x00, + 0x7F, 0xFF, 0xF8, 0x01, 0xFF, 0xFF, 0xC0, 0x07, 0x80, 0x1F, 0x00, 0x1E, + 0x00, 0x7C, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xE0, 0x07, 0xC0, 0x0F, 0x80, + 0x1E, 0x00, 0x3C, 0x00, 0xF8, 0x07, 0xFE, 0x1F, 0xF8, 0x3F, 0xF8, 0xFF, + 0xF0, 0xFF, 0xE3, 0xFF, 0xC3, 0xFF, 0x8F, 0xFE, 0x0F, 0xFC, 0x3F, 0xF8, + 0x00, 0x03, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0xE0, 0xFF, + 0xFF, 0xF0, 0x7F, 0xFF, 0xF0, 0x00, 0x7C, 0x00, 0x00, 0x3E, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x00, + 0x03, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, 0xF0, 0x00, 0x00, 0xF8, 0x00, + 0x00, 0x7C, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x1F, 0x00, + 0x00, 0x0F, 0x80, 0x00, 0x07, 0x80, 0x00, 0x07, 0xC0, 0x01, 0xFF, 0xFF, + 0xC1, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xF8, 0x1F, 0xFF, + 0xF8, 0x00, 0x00, 0x07, 0xFF, 0xFE, 0x00, 0x1F, 0xFF, 0xFC, 0x00, 0x3F, + 0xFF, 0xF8, 0x00, 0x7F, 0xFF, 0xF0, 0x00, 0x7F, 0xFF, 0xC0, 0x00, 0x01, + 0xF0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x0F, + 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0xF8, + 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x07, 0xC0, 0x07, 0x00, 0x0F, 0x80, + 0x1F, 0x00, 0x1F, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x78, 0x00, 0x78, 0x01, + 0xF0, 0x01, 0xF0, 0x03, 0xE0, 0x03, 0xE0, 0x07, 0xC0, 0x0F, 0x80, 0x0F, + 0x80, 0x3F, 0x00, 0x1F, 0xC0, 0xFC, 0x00, 0x7F, 0xFF, 0xF8, 0x00, 0xFF, + 0xFF, 0xE0, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x3F, 0xFC, 0x00, 0x00, 0x1F, + 0xC0, 0x00, 0x00, 0x03, 0xFF, 0xC3, 0xFE, 0x0F, 0xFF, 0x8F, 0xFC, 0x1F, + 0xFF, 0x3F, 0xF8, 0x3F, 0xFE, 0x7F, 0xF0, 0x7F, 0xF8, 0x7F, 0xC0, 0x1F, + 0x01, 0xFC, 0x00, 0x3E, 0x07, 0xF0, 0x00, 0x78, 0x3F, 0x80, 0x01, 0xF0, + 0xFE, 0x00, 0x03, 0xE3, 0xF0, 0x00, 0x07, 0xDF, 0xC0, 0x00, 0x0F, 0xFE, + 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x7F, 0xFE, 0x00, 0x00, 0xFF, 0xFE, + 0x00, 0x01, 0xFC, 0xFC, 0x00, 0x03, 0xE0, 0xFC, 0x00, 0x0F, 0x81, 0xF8, + 0x00, 0x1F, 0x01, 0xF8, 0x00, 0x3E, 0x03, 0xF0, 0x00, 0x78, 0x03, 0xE0, + 0x00, 0xF0, 0x07, 0xE0, 0x1F, 0xFE, 0x0F, 0xF8, 0x7F, 0xFC, 0x1F, 0xF8, + 0xFF, 0xF8, 0x1F, 0xF1, 0xFF, 0xF0, 0x3F, 0xE1, 0xFF, 0xC0, 0x7F, 0x80, + 0x03, 0xFF, 0xF8, 0x00, 0xFF, 0xFF, 0x00, 0x1F, 0xFF, 0xE0, 0x03, 0xFF, + 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x0F, 0x80, 0x00, + 0x01, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x01, 0xF0, + 0x00, 0x00, 0x3C, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xF0, 0x00, 0x00, + 0x3E, 0x00, 0x00, 0x07, 0xC0, 0x0E, 0x00, 0xF0, 0x01, 0xE0, 0x3E, 0x00, + 0x7C, 0x07, 0xC0, 0x0F, 0x80, 0xF8, 0x01, 0xF0, 0x1E, 0x00, 0x7C, 0x07, + 0xC0, 0x0F, 0x9F, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, + 0x9F, 0xFF, 0xFF, 0xF1, 0xFF, 0xFF, 0xFE, 0x00, 0x03, 0xFC, 0x00, 0x3F, + 0xC1, 0xFF, 0x00, 0x1F, 0xF0, 0x7F, 0xC0, 0x07, 0xFC, 0x1F, 0xF0, 0x03, + 0xFE, 0x01, 0xFE, 0x01, 0xFE, 0x00, 0xFF, 0x80, 0xFF, 0x80, 0x3F, 0xE0, + 0x3F, 0xE0, 0x0F, 0xF8, 0x1F, 0xF0, 0x03, 0xFF, 0x0F, 0xFC, 0x00, 0xF7, + 0xC3, 0xFF, 0x00, 0x7D, 0xF1, 0xF7, 0xC0, 0x1F, 0x7C, 0xFD, 0xF0, 0x07, + 0xDF, 0xBE, 0x78, 0x01, 0xE3, 0xFF, 0x3E, 0x00, 0x78, 0xFF, 0xCF, 0x80, + 0x3E, 0x3F, 0xE3, 0xE0, 0x0F, 0x87, 0xF0, 0xF8, 0x03, 0xE1, 0xFC, 0x3C, + 0x00, 0xF0, 0x7E, 0x1F, 0x00, 0x7C, 0x1F, 0x07, 0xC0, 0x1F, 0x00, 0x01, + 0xF0, 0x07, 0xC0, 0x00, 0x78, 0x07, 0xFE, 0x01, 0xFF, 0x83, 0xFF, 0xC0, + 0xFF, 0xF0, 0xFF, 0xF0, 0x7F, 0xFC, 0x3F, 0xF8, 0x1F, 0xFE, 0x0F, 0xFC, + 0x03, 0xFF, 0x00, 0x07, 0xF8, 0x07, 0xFF, 0x0F, 0xFC, 0x0F, 0xFF, 0x0F, + 0xFC, 0x0F, 0xFF, 0x0F, 0xFC, 0x0F, 0xFF, 0x0F, 0xFE, 0x0F, 0xFE, 0x01, + 0xFE, 0x00, 0xF8, 0x01, 0xFF, 0x00, 0xF0, 0x01, 0xFF, 0x01, 0xF0, 0x03, + 0xFF, 0x81, 0xF0, 0x03, 0xFF, 0x81, 0xF0, 0x03, 0xEF, 0xC1, 0xF0, 0x03, + 0xCF, 0xC1, 0xE0, 0x07, 0xC7, 0xE3, 0xE0, 0x07, 0xC7, 0xE3, 0xE0, 0x07, + 0xC3, 0xF3, 0xE0, 0x07, 0xC3, 0xF3, 0xC0, 0x07, 0x81, 0xF7, 0xC0, 0x0F, + 0x81, 0xFF, 0xC0, 0x0F, 0x80, 0xFF, 0xC0, 0x0F, 0x80, 0xFF, 0xC0, 0x0F, + 0x00, 0xFF, 0x80, 0x0F, 0x00, 0x7F, 0x80, 0x7F, 0xF0, 0x7F, 0x80, 0xFF, + 0xF0, 0x3F, 0x80, 0xFF, 0xF0, 0x3F, 0x00, 0xFF, 0xF0, 0x1F, 0x00, 0x7F, + 0xE0, 0x1F, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xFF, 0x80, 0x01, 0xFF, + 0xF8, 0x00, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xF8, 0x0F, 0xF0, 0x7F, 0x83, + 0xF8, 0x03, 0xF0, 0xFC, 0x00, 0x7E, 0x1F, 0x00, 0x07, 0xE7, 0xE0, 0x00, + 0x7C, 0xF8, 0x00, 0x0F, 0xBE, 0x00, 0x01, 0xF7, 0xC0, 0x00, 0x3E, 0xF0, + 0x00, 0x07, 0xFE, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x3E, 0xF8, 0x00, 0x07, + 0xDF, 0x00, 0x00, 0xFB, 0xE0, 0x00, 0x3E, 0x7C, 0x00, 0x0F, 0xCF, 0xC0, + 0x01, 0xF0, 0xF8, 0x00, 0x7E, 0x1F, 0x80, 0x3F, 0x83, 0xFC, 0x1F, 0xE0, + 0x3F, 0xFF, 0xF8, 0x03, 0xFF, 0xFE, 0x00, 0x3F, 0xFF, 0x00, 0x03, 0xFF, + 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xF8, + 0x07, 0xFF, 0xFF, 0xC0, 0x7F, 0xFF, 0xFE, 0x07, 0xFF, 0xFF, 0xF0, 0x0F, + 0x80, 0x7F, 0x00, 0xF8, 0x01, 0xF0, 0x0F, 0x00, 0x1F, 0x01, 0xF0, 0x01, + 0xF0, 0x1F, 0x00, 0x1F, 0x01, 0xF0, 0x03, 0xE0, 0x1E, 0x00, 0x7E, 0x01, + 0xE0, 0x0F, 0xC0, 0x3F, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, + 0xE0, 0x03, 0xFF, 0xFC, 0x00, 0x7F, 0xFE, 0x00, 0x07, 0xC0, 0x00, 0x00, + 0x7C, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x78, 0x00, 0x00, 0x7F, 0xFF, + 0x00, 0x0F, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0x00, 0x0F, 0xFF, 0xF0, 0x00, + 0x7F, 0xFE, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xFF, 0x80, 0x03, + 0xFF, 0xF8, 0x00, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xF8, 0x0F, 0xF0, 0x7F, + 0x83, 0xF8, 0x03, 0xF0, 0xFC, 0x00, 0x3F, 0x1F, 0x00, 0x07, 0xE7, 0xC0, + 0x00, 0x7D, 0xF8, 0x00, 0x0F, 0xBE, 0x00, 0x01, 0xF7, 0xC0, 0x00, 0x3F, + 0xF0, 0x00, 0x07, 0xFE, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x3E, 0xF8, 0x00, + 0x07, 0xDF, 0x00, 0x01, 0xFB, 0xE0, 0x00, 0x3E, 0x7E, 0x00, 0x0F, 0x8F, + 0xC0, 0x03, 0xF0, 0xFC, 0x01, 0xFC, 0x1F, 0xE0, 0xFF, 0x01, 0xFF, 0xFF, + 0xC0, 0x1F, 0xFF, 0xF0, 0x01, 0xFF, 0xFC, 0x00, 0x1F, 0xFE, 0x00, 0x01, + 0xFE, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1F, 0xF8, 0x38, 0x0F, 0xFF, 0xFF, + 0x81, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xFC, 0x0F, 0xFF, 0xFF, 0x00, 0xF0, + 0x1F, 0x80, 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x3F, 0xFF, 0xFC, 0x01, 0xFF, + 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, 0xFF, 0x00, 0x7C, 0x03, + 0xF8, 0x03, 0xE0, 0x07, 0xC0, 0x1E, 0x00, 0x3E, 0x00, 0xF0, 0x01, 0xF0, + 0x0F, 0x80, 0x1F, 0x80, 0x7C, 0x01, 0xF8, 0x03, 0xE0, 0x3F, 0x80, 0x1F, + 0xFF, 0xFC, 0x01, 0xFF, 0xFF, 0x80, 0x0F, 0xFF, 0xF8, 0x00, 0x7F, 0xFF, + 0x00, 0x03, 0xFF, 0xFC, 0x00, 0x1E, 0x07, 0xF0, 0x01, 0xF0, 0x1F, 0xC0, + 0x0F, 0x80, 0x7E, 0x00, 0x7C, 0x03, 0xF8, 0x03, 0xC0, 0x0F, 0xC0, 0xFF, + 0xE0, 0x7F, 0xCF, 0xFF, 0x01, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, 0xC0, + 0x3F, 0xDF, 0xFC, 0x01, 0xFC, 0x00, 0x0F, 0xE1, 0x80, 0x0F, 0xFF, 0xF0, + 0x0F, 0xFF, 0xFC, 0x07, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xC1, 0xFC, 0x0F, + 0xE0, 0x7C, 0x01, 0xF8, 0x3E, 0x00, 0x3E, 0x0F, 0x80, 0x0F, 0x03, 0xE0, + 0x03, 0xC0, 0xFC, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x07, 0xFF, 0x80, 0x01, + 0xFF, 0xFC, 0x00, 0x3F, 0xFF, 0x80, 0x03, 0xFF, 0xF0, 0x00, 0x07, 0xFE, + 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0xE1, 0xE0, 0x00, 0xF8, 0xF8, 0x00, + 0x3E, 0x3E, 0x00, 0x1F, 0x8F, 0xC0, 0x0F, 0xC3, 0xFC, 0x0F, 0xF0, 0xFF, + 0xFF, 0xF8, 0x3F, 0xFF, 0xFC, 0x0F, 0xFF, 0xFE, 0x03, 0x9F, 0xFE, 0x00, + 0x01, 0xFE, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xF7, 0xFF, + 0xFF, 0xFD, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0x9F, 0x07, 0x83, 0xE7, + 0x83, 0xE0, 0xFB, 0xE0, 0xF8, 0x3E, 0xF8, 0x3E, 0x0F, 0x3E, 0x0F, 0x07, + 0xCF, 0x07, 0xC1, 0xF3, 0x81, 0xF0, 0x38, 0x00, 0x7C, 0x00, 0x00, 0x1E, + 0x00, 0x00, 0x07, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0xF8, 0x00, 0x00, + 0x3E, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, 0x00, + 0x00, 0x7C, 0x00, 0x07, 0xFF, 0xF8, 0x01, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, + 0x80, 0x3F, 0xFF, 0xE0, 0x07, 0xFF, 0xF0, 0x00, 0x3F, 0xF0, 0x7F, 0xE7, + 0xFF, 0x8F, 0xFF, 0x7F, 0xF9, 0xFF, 0xF7, 0xFF, 0x1F, 0xFE, 0x7F, 0xF0, + 0xFF, 0xC1, 0xE0, 0x01, 0xF0, 0x1E, 0x00, 0x1F, 0x03, 0xE0, 0x01, 0xF0, + 0x3E, 0x00, 0x1F, 0x03, 0xE0, 0x01, 0xE0, 0x3C, 0x00, 0x3E, 0x07, 0xC0, + 0x03, 0xE0, 0x7C, 0x00, 0x3E, 0x07, 0xC0, 0x03, 0xC0, 0x7C, 0x00, 0x3C, + 0x07, 0x80, 0x07, 0xC0, 0xF8, 0x00, 0x7C, 0x0F, 0x80, 0x07, 0xC0, 0xF8, + 0x00, 0x78, 0x0F, 0x80, 0x0F, 0x80, 0xFC, 0x01, 0xF8, 0x0F, 0xC0, 0x3F, + 0x00, 0xFF, 0x07, 0xE0, 0x07, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xC0, 0x03, + 0xFF, 0xF0, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x7F, 0xF0, + 0x1F, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xFC, 0x0F, + 0xFF, 0x7F, 0xE0, 0x3F, 0xF8, 0x7C, 0x00, 0x1F, 0x01, 0xF0, 0x00, 0xF8, + 0x07, 0xC0, 0x03, 0xE0, 0x1F, 0x80, 0x1F, 0x00, 0x3E, 0x00, 0xF8, 0x00, + 0xF8, 0x03, 0xE0, 0x03, 0xE0, 0x1F, 0x00, 0x0F, 0xC0, 0xFC, 0x00, 0x1F, + 0x03, 0xE0, 0x00, 0x7C, 0x1F, 0x00, 0x01, 0xF0, 0xFC, 0x00, 0x07, 0xC3, + 0xE0, 0x00, 0x1F, 0x9F, 0x00, 0x00, 0x3E, 0xFC, 0x00, 0x00, 0xFB, 0xE0, + 0x00, 0x03, 0xFF, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x3F, 0xE0, 0x00, + 0x00, 0x7F, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, + 0x1F, 0x00, 0x00, 0x00, 0x7F, 0xF0, 0x3F, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, + 0xFC, 0x1F, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFE, 0x07, 0xFF, 0x1E, 0x00, + 0x01, 0xE0, 0xF0, 0x7C, 0x1F, 0x0F, 0x87, 0xE0, 0xF0, 0x7C, 0x3F, 0x0F, + 0x83, 0xE3, 0xF8, 0x7C, 0x1F, 0x1F, 0xE3, 0xC0, 0xF9, 0xFF, 0x3E, 0x07, + 0xCF, 0xF9, 0xF0, 0x3E, 0xFF, 0xCF, 0x01, 0xF7, 0xBE, 0xF8, 0x0F, 0xFD, + 0xF7, 0xC0, 0x7B, 0xCF, 0xFC, 0x03, 0xFE, 0x7F, 0xE0, 0x3F, 0xE3, 0xFF, + 0x01, 0xFF, 0x0F, 0xF0, 0x0F, 0xF0, 0x7F, 0x80, 0x7F, 0x83, 0xFC, 0x03, + 0xF8, 0x1F, 0xC0, 0x1F, 0xC0, 0xFE, 0x00, 0xFC, 0x07, 0xF0, 0x07, 0xE0, + 0x3F, 0x00, 0x3E, 0x01, 0xF8, 0x00, 0x01, 0xFE, 0x03, 0xFE, 0x03, 0xFF, + 0x07, 0xFF, 0x07, 0xFF, 0x07, 0xFF, 0x07, 0xFE, 0x07, 0xFE, 0x03, 0xFC, + 0x03, 0xFC, 0x00, 0xFC, 0x03, 0xF0, 0x00, 0xFE, 0x07, 0xE0, 0x00, 0x7E, + 0x1F, 0xC0, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x1F, + 0xFC, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x07, + 0xE0, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x7F, + 0xF8, 0x00, 0x00, 0xFC, 0xFC, 0x00, 0x01, 0xF8, 0x7E, 0x00, 0x03, 0xF0, + 0x7E, 0x00, 0x07, 0xE0, 0x3F, 0x00, 0x0F, 0xC0, 0x1F, 0x80, 0x7F, 0xE0, + 0x7F, 0xE0, 0xFF, 0xE0, 0xFF, 0xE0, 0xFF, 0xE0, 0xFF, 0xE0, 0xFF, 0xE0, + 0xFF, 0xE0, 0x7F, 0xC0, 0xFF, 0xC0, 0x7F, 0xC0, 0x7F, 0xFF, 0xF0, 0x3F, + 0xFF, 0xFC, 0x0F, 0xFF, 0xFF, 0x03, 0xFF, 0x7F, 0x80, 0xFF, 0x87, 0xC0, + 0x1F, 0x01, 0xF8, 0x0F, 0x80, 0x3E, 0x07, 0xC0, 0x0F, 0xC3, 0xE0, 0x01, + 0xF1, 0xF0, 0x00, 0x7E, 0xF8, 0x00, 0x0F, 0xFC, 0x00, 0x03, 0xFE, 0x00, + 0x00, 0x7F, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x00, 0xF0, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, + 0xE0, 0x00, 0x00, 0x78, 0x00, 0x07, 0xFF, 0xF0, 0x03, 0xFF, 0xFE, 0x00, + 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xC0, 0x0F, 0xFF, 0xE0, 0x00, 0x01, 0xFF, + 0xFF, 0xC0, 0x3F, 0xFF, 0xF8, 0x07, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xE0, + 0x3F, 0xFF, 0xFC, 0x07, 0xC0, 0x3F, 0x00, 0xF8, 0x0F, 0xC0, 0x1F, 0x03, + 0xF0, 0x03, 0xC0, 0xFC, 0x00, 0xF8, 0x3F, 0x00, 0x0E, 0x0F, 0xC0, 0x00, + 0x03, 0xF0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x1F, 0x80, + 0x00, 0x07, 0xE0, 0x00, 0x01, 0xF8, 0x0E, 0x00, 0x7E, 0x03, 0xE0, 0x1F, + 0x80, 0x7C, 0x07, 0xE0, 0x0F, 0x01, 0xF8, 0x03, 0xE0, 0x7E, 0x00, 0x7C, + 0x1F, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xFC, 0x0F, 0xFF, + 0xFF, 0x81, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0xFF, 0xC0, 0x3F, 0xF0, 0x0F, + 0xFC, 0x07, 0xFF, 0x01, 0xFF, 0x80, 0x7C, 0x00, 0x1E, 0x00, 0x07, 0x80, + 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x07, 0xC0, 0x01, + 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x07, 0x80, 0x03, 0xE0, 0x00, 0xF8, + 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, + 0x1F, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, + 0x80, 0x03, 0xC0, 0x01, 0xF0, 0x00, 0x7F, 0xE0, 0x1F, 0xF8, 0x07, 0xFE, + 0x01, 0xFF, 0x80, 0xFF, 0xC0, 0x00, 0x20, 0x03, 0xC0, 0x3E, 0x01, 0xF0, + 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x3E, 0x01, 0xF0, 0x0F, 0x80, + 0x7C, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x0F, 0x80, 0x7C, 0x03, + 0xE0, 0x1F, 0x80, 0x7C, 0x03, 0xE0, 0x1F, 0x00, 0x7C, 0x03, 0xE0, 0x1F, + 0x00, 0xF8, 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x07, 0xC0, 0x1F, 0x00, 0xF8, + 0x07, 0xC0, 0x3E, 0x00, 0xF0, 0x07, 0x80, 0x38, 0x00, 0xFF, 0xC0, 0x7F, + 0xE0, 0x1F, 0xF8, 0x07, 0xFE, 0x01, 0xFF, 0x80, 0x03, 0xE0, 0x00, 0xF0, + 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xE0, 0x00, 0x78, 0x00, + 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x1F, + 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x78, 0x00, 0x3E, 0x00, 0x0F, 0x80, + 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3C, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, + 0xF0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x0F, 0x80, 0x7F, 0xE0, 0x3F, 0xF8, + 0x0F, 0xFC, 0x03, 0xFF, 0x00, 0xFF, 0xC0, 0x00, 0x00, 0x08, 0x00, 0x01, + 0xC0, 0x00, 0x3C, 0x00, 0x07, 0xE0, 0x00, 0xFE, 0x00, 0x1F, 0xF0, 0x03, + 0xFF, 0x80, 0xFF, 0xF8, 0x1F, 0xCF, 0xC3, 0xF8, 0xFE, 0x7E, 0x07, 0xEF, + 0xC0, 0x3F, 0xF8, 0x03, 0xFF, 0x00, 0x1F, 0xE0, 0x00, 0xE0, 0x7F, 0xFF, + 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xEF, 0xFF, 0xFF, 0xFF, 0x00, 0x60, 0xF0, 0xF8, 0x7C, 0x3E, 0x1F, 0x0F, + 0x06, 0x00, 0x3F, 0xE0, 0x03, 0xFF, 0xF8, 0x07, 0xFF, 0xFC, 0x07, 0xFF, + 0xFE, 0x07, 0xFF, 0xFE, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3E, 0x00, 0x00, + 0x3E, 0x00, 0x7F, 0xFE, 0x03, 0xFF, 0xFC, 0x0F, 0xFF, 0xFC, 0x1F, 0xFF, + 0xFC, 0x3F, 0xFF, 0xFC, 0x7F, 0x00, 0x78, 0x7C, 0x00, 0x78, 0xF8, 0x00, + 0xF8, 0xF8, 0x03, 0xF8, 0xFC, 0x0F, 0xFE, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, + 0xFF, 0x7F, 0xFF, 0xFF, 0x3F, 0xFD, 0xFE, 0x0F, 0xE0, 0x00, 0x03, 0xFC, + 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x0F, 0xF0, 0x00, + 0x00, 0x3F, 0x80, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, + 0x1F, 0x00, 0x00, 0x00, 0xF0, 0xFE, 0x00, 0x0F, 0xBF, 0xFC, 0x00, 0x7F, + 0xFF, 0xF8, 0x03, 0xFF, 0xFF, 0xC0, 0x1F, 0xFF, 0xFF, 0x00, 0xFF, 0x03, + 0xF8, 0x0F, 0xE0, 0x07, 0xE0, 0x7E, 0x00, 0x3F, 0x03, 0xE0, 0x00, 0xF8, + 0x1F, 0x00, 0x07, 0xC0, 0xF0, 0x00, 0x3E, 0x0F, 0x80, 0x01, 0xF0, 0x7C, + 0x00, 0x1F, 0x03, 0xE0, 0x00, 0xF8, 0x1F, 0x00, 0x0F, 0xC0, 0xFC, 0x00, + 0x7C, 0x0F, 0xE0, 0x07, 0xE3, 0xFF, 0xC0, 0xFE, 0x3F, 0xFF, 0xFF, 0xE1, + 0xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0xE0, 0x7F, 0x9F, 0xFC, 0x00, 0x00, + 0x3F, 0x80, 0x00, 0x00, 0x1F, 0xE3, 0x80, 0x7F, 0xFF, 0xC0, 0x7F, 0xFF, + 0xE0, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xF8, 0xFF, 0x01, 0xFC, 0x7E, 0x00, + 0x7C, 0x7E, 0x00, 0x3E, 0x3E, 0x00, 0x0E, 0x3E, 0x00, 0x00, 0x1F, 0x00, + 0x00, 0x1F, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, 0xE0, + 0x00, 0x01, 0xF0, 0x00, 0x00, 0xFC, 0x00, 0x0C, 0x7F, 0x80, 0x3F, 0x1F, + 0xFF, 0xFF, 0x8F, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0x00, + 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x01, 0xFE, 0x00, 0x00, + 0x1F, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x3E, + 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x7C, 0x00, 0x3F, 0x87, 0xC0, 0x0F, + 0xFF, 0x7C, 0x03, 0xFF, 0xFF, 0xC0, 0x7F, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, + 0x81, 0xFC, 0x0F, 0xF8, 0x3F, 0x00, 0x3F, 0x83, 0xE0, 0x01, 0xF0, 0x7C, + 0x00, 0x1F, 0x07, 0xC0, 0x01, 0xF0, 0xF8, 0x00, 0x1F, 0x0F, 0x80, 0x01, + 0xF0, 0xF8, 0x00, 0x1E, 0x0F, 0x80, 0x03, 0xE0, 0xF8, 0x00, 0x3E, 0x0F, + 0xC0, 0x07, 0xE0, 0xFC, 0x00, 0xFE, 0x07, 0xF0, 0x3F, 0xF8, 0x7F, 0xFF, + 0xFF, 0xC3, 0xFF, 0xFF, 0xFC, 0x3F, 0xFF, 0xFF, 0xC0, 0xFF, 0xE7, 0xF8, + 0x03, 0xF8, 0x00, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0xFF, 0xF0, 0x03, 0xFF, + 0xF8, 0x07, 0xFF, 0xFC, 0x0F, 0xFF, 0xFE, 0x1F, 0xE0, 0x7E, 0x3F, 0x80, + 0x1F, 0x3F, 0x00, 0x0F, 0x7E, 0x00, 0x0F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x00, + 0x00, 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x1C, 0x7F, 0x01, 0xFE, 0x7F, 0xFF, + 0xFE, 0x3F, 0xFF, 0xFE, 0x1F, 0xFF, 0xFC, 0x0F, 0xFF, 0xF0, 0x03, 0xFF, + 0x00, 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x3F, 0xFF, 0x00, 0x07, 0xFF, 0xF0, + 0x00, 0xFF, 0xFF, 0x00, 0x1F, 0xFF, 0xE0, 0x01, 0xF0, 0x00, 0x00, 0x3E, + 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x7F, 0xFF, 0xF0, + 0x0F, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0x00, 0xFF, + 0xFF, 0xE0, 0x00, 0x78, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0xF8, 0x00, + 0x00, 0x0F, 0x80, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, + 0xF0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x1E, 0x00, + 0x00, 0x03, 0xE0, 0x00, 0x07, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xF0, 0x0F, + 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xF0, 0x07, 0xFF, 0xFE, 0x00, 0x00, 0x3F, + 0x80, 0x00, 0x0F, 0xFE, 0xFF, 0x03, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xFF, + 0x0F, 0xFF, 0xFF, 0xF1, 0xFC, 0x1F, 0xFE, 0x3F, 0x80, 0x7F, 0x03, 0xE0, + 0x03, 0xF0, 0x7E, 0x00, 0x3E, 0x07, 0xC0, 0x03, 0xE0, 0xF8, 0x00, 0x3E, + 0x0F, 0x80, 0x03, 0xE0, 0xF8, 0x00, 0x3E, 0x0F, 0x80, 0x03, 0xC0, 0xF8, + 0x00, 0x7C, 0x0F, 0xC0, 0x0F, 0xC0, 0xFC, 0x01, 0xFC, 0x07, 0xF0, 0x7F, + 0x80, 0x7F, 0xFF, 0xF8, 0x03, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xF8, 0x00, + 0xFF, 0xEF, 0x80, 0x03, 0xF0, 0xF0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, + 0xF0, 0x00, 0x00, 0x7E, 0x00, 0x1F, 0xFF, 0xE0, 0x03, 0xFF, 0xFC, 0x00, + 0x3F, 0xFF, 0x80, 0x03, 0xFF, 0xE0, 0x00, 0x3F, 0xF8, 0x00, 0x00, 0x03, + 0xF8, 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x3F, 0xE0, 0x00, + 0x07, 0xF0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0xC0, + 0x00, 0x01, 0xF1, 0xF8, 0x00, 0x79, 0xFF, 0x80, 0x1E, 0xFF, 0xF0, 0x0F, + 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0x80, 0xFF, 0x07, 0xE0, 0x3F, 0x00, 0xF8, + 0x1F, 0x80, 0x3E, 0x07, 0xC0, 0x0F, 0x81, 0xF0, 0x03, 0xC0, 0x7C, 0x00, + 0xF0, 0x1E, 0x00, 0x7C, 0x0F, 0x80, 0x1F, 0x03, 0xE0, 0x07, 0xC0, 0xF8, + 0x01, 0xE0, 0x3C, 0x00, 0xF8, 0x0F, 0x00, 0x3E, 0x1F, 0xF8, 0x3F, 0xEF, + 0xFE, 0x1F, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0xF0, 0x3F, + 0xE0, 0x00, 0x07, 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0x1F, 0x80, 0x00, 0x3E, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0xFF, 0xC0, 0x07, 0xFF, 0x80, 0x0F, 0xFE, 0x00, 0x1F, 0xFC, 0x00, + 0x3F, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x80, 0x00, + 0x1F, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF0, 0x00, 0x01, + 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x00, 0x3F, 0xFF, + 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, + 0x80, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xF0, 0x00, 0x07, + 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0xFF, 0xFE, 0x07, 0xFF, 0xFC, 0x0F, 0xFF, 0xF8, 0x1F, 0xFF, 0xF0, + 0x3F, 0xFF, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3E, 0x00, + 0x00, 0x7C, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x07, 0xC0, 0x00, + 0x0F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xF8, 0x00, 0x01, + 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x3E, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0xC0, + 0xFF, 0xFF, 0x03, 0xFF, 0xFC, 0x07, 0xFF, 0xF0, 0x0F, 0xFF, 0xC0, 0x0F, + 0xFC, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x7F, 0xC0, + 0x00, 0x1F, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x0F, + 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x3C, 0x3F, 0xF0, + 0x1F, 0x1F, 0xFC, 0x07, 0xC7, 0xFF, 0x01, 0xF1, 0xFF, 0xC0, 0x78, 0x7F, + 0xE0, 0x1E, 0x7F, 0x80, 0x0F, 0xBF, 0x80, 0x03, 0xFF, 0xC0, 0x00, 0xFF, + 0xC0, 0x00, 0x3F, 0xE0, 0x00, 0x0F, 0xFC, 0x00, 0x07, 0xFF, 0x80, 0x01, + 0xF7, 0xF0, 0x00, 0x7C, 0xFE, 0x00, 0x1E, 0x1F, 0xC0, 0x0F, 0x83, 0xF8, + 0x1F, 0xE0, 0xFF, 0xEF, 0xF8, 0x3F, 0xFB, 0xFE, 0x1F, 0xFE, 0xFF, 0x07, + 0xFF, 0x9F, 0xC0, 0xFF, 0xC0, 0x00, 0x7F, 0xF0, 0x01, 0xFF, 0xC0, 0x03, + 0xFF, 0x80, 0x07, 0xFF, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x7C, 0x00, 0x00, + 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1F, + 0x00, 0x00, 0x3C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xE0, + 0x00, 0x07, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x7C, 0x00, + 0x00, 0xF8, 0x00, 0x01, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x80, 0x00, + 0x1F, 0x00, 0x00, 0x3E, 0x00, 0x7F, 0xFF, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0x00, 0x00, 0x07, 0x81, 0xE0, + 0x3F, 0xBF, 0x9F, 0xE1, 0xFF, 0xFE, 0xFF, 0x87, 0xFF, 0xFF, 0xFF, 0x1F, + 0xFF, 0xFF, 0xFC, 0x7F, 0xC7, 0xF1, 0xF0, 0x7E, 0x1F, 0x87, 0xC1, 0xF0, + 0x7C, 0x1F, 0x07, 0x81, 0xE0, 0x7C, 0x1E, 0x0F, 0x81, 0xE0, 0xF8, 0x3E, + 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3C, 0x0F, 0x03, + 0xC1, 0xF0, 0x7C, 0x0F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF1, + 0xFE, 0x1F, 0x87, 0xEF, 0xFC, 0x7F, 0x1F, 0xFF, 0xF3, 0xFC, 0x7F, 0xFF, + 0xCF, 0xF3, 0xFF, 0xFE, 0x3F, 0x8F, 0xE0, 0x00, 0x01, 0xF8, 0x01, 0xF9, + 0xFF, 0x80, 0xFE, 0xFF, 0xF0, 0x7F, 0xFF, 0xFC, 0x1F, 0xFF, 0xFF, 0x83, + 0xFF, 0x07, 0xE0, 0x3F, 0x00, 0xF8, 0x1F, 0x80, 0x3E, 0x07, 0xC0, 0x0F, + 0x81, 0xF0, 0x03, 0xC0, 0x7C, 0x00, 0xF0, 0x1E, 0x00, 0x7C, 0x0F, 0x80, + 0x1F, 0x03, 0xE0, 0x07, 0xC0, 0xF8, 0x01, 0xE0, 0x3C, 0x00, 0xF8, 0x0F, + 0x00, 0x3E, 0x1F, 0xF8, 0x3F, 0xEF, 0xFE, 0x1F, 0xFF, 0xFF, 0x87, 0xFF, + 0xFF, 0xE1, 0xFF, 0xFF, 0xF0, 0x3F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0x7F, + 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xF0, 0xFF, + 0x03, 0xF8, 0xFE, 0x00, 0xFE, 0x7C, 0x00, 0x3F, 0x7C, 0x00, 0x0F, 0xBE, + 0x00, 0x07, 0xFE, 0x00, 0x03, 0xFF, 0x00, 0x01, 0xFF, 0x80, 0x00, 0xFF, + 0xC0, 0x00, 0xFB, 0xE0, 0x00, 0xFD, 0xF8, 0x00, 0x7C, 0xFE, 0x00, 0xFE, + 0x3F, 0x81, 0xFE, 0x1F, 0xFF, 0xFE, 0x07, 0xFF, 0xFE, 0x01, 0xFF, 0xFC, + 0x00, 0x7F, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x07, + 0xF9, 0xFF, 0xC0, 0x1F, 0xF7, 0xFF, 0xC0, 0x3F, 0xFF, 0xFF, 0xC0, 0x7F, + 0xFF, 0xFF, 0xC0, 0x7F, 0xF0, 0x3F, 0x80, 0x3F, 0x80, 0x1F, 0x80, 0x7E, + 0x00, 0x3F, 0x00, 0xF8, 0x00, 0x3E, 0x01, 0xF0, 0x00, 0x7C, 0x03, 0xC0, + 0x00, 0xF8, 0x0F, 0x80, 0x01, 0xF0, 0x1F, 0x00, 0x07, 0xE0, 0x3E, 0x00, + 0x0F, 0x80, 0x7C, 0x00, 0x3F, 0x01, 0xFC, 0x00, 0xFC, 0x03, 0xFE, 0x07, + 0xF8, 0x07, 0xFF, 0xFF, 0xE0, 0x0F, 0xFF, 0xFF, 0x80, 0x1E, 0xFF, 0xFC, + 0x00, 0x7C, 0xFF, 0xF0, 0x00, 0xF8, 0x7F, 0x00, 0x01, 0xF0, 0x00, 0x00, + 0x03, 0xE0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, + 0xFF, 0xF0, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0x1F, + 0xFF, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, + 0x07, 0xFF, 0x3F, 0xC0, 0xFF, 0xFD, 0xFE, 0x0F, 0xFF, 0xFF, 0xF0, 0xFF, + 0xFF, 0xFF, 0x8F, 0xE0, 0x7F, 0xF8, 0xFC, 0x00, 0xFE, 0x07, 0xC0, 0x03, + 0xE0, 0x7C, 0x00, 0x1F, 0x03, 0xE0, 0x00, 0xF8, 0x1E, 0x00, 0x07, 0xC1, + 0xF0, 0x00, 0x3E, 0x0F, 0x80, 0x01, 0xE0, 0x7C, 0x00, 0x1F, 0x03, 0xF0, + 0x01, 0xF8, 0x1F, 0x80, 0x1F, 0xC0, 0xFF, 0x03, 0xFC, 0x03, 0xFF, 0xFF, + 0xE0, 0x1F, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0xF8, 0x00, 0xFF, 0xE7, 0xC0, + 0x01, 0xFC, 0x3C, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x1F, 0x00, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x07, 0xFF, 0x80, 0x00, 0x7F, + 0xFE, 0x00, 0x07, 0xFF, 0xF0, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0xFF, 0xF0, + 0x00, 0x00, 0x00, 0x0F, 0x80, 0x3F, 0xC3, 0xFE, 0x07, 0xFC, 0xFF, 0xE0, + 0x7F, 0xDF, 0xFF, 0x07, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, 0x1C, 0x00, 0x7F, + 0xC0, 0x00, 0x07, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x0F, 0xC0, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x01, 0xE0, 0x00, + 0x07, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0x00, 0xFF, + 0xFF, 0xF0, 0x07, 0xFF, 0xFE, 0x00, 0x00, 0x3F, 0xCE, 0x03, 0xFF, 0xFC, + 0x0F, 0xFF, 0xF8, 0x3F, 0xFF, 0xF0, 0xFF, 0xFF, 0xC3, 0xF8, 0x0F, 0x87, + 0xC0, 0x0E, 0x0F, 0x80, 0x00, 0x1F, 0xF0, 0x00, 0x3F, 0xFF, 0x80, 0x3F, + 0xFF, 0xC0, 0x3F, 0xFF, 0xC0, 0x1F, 0xFF, 0xC0, 0x01, 0xFF, 0x80, 0x00, + 0x3F, 0x1C, 0x00, 0x3E, 0x7C, 0x00, 0x7C, 0xFC, 0x03, 0xF3, 0xFF, 0xFF, + 0xE7, 0xFF, 0xFF, 0x8F, 0xFF, 0xFE, 0x1F, 0xFF, 0xF0, 0x00, 0xFF, 0x00, + 0x00, 0x03, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, + 0x80, 0x00, 0x78, 0x00, 0x7F, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xE0, 0x00, + 0x1E, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x3C, 0x00, + 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7E, 0x00, 0xF7, 0xFF, + 0xFF, 0x7F, 0xFF, 0xF3, 0xFF, 0xFE, 0x1F, 0xFF, 0x80, 0x7F, 0x80, 0x7F, + 0x01, 0xFF, 0xFE, 0x07, 0xFF, 0xF8, 0x1F, 0xFF, 0xF0, 0x3F, 0xFF, 0xE0, + 0x3F, 0xC7, 0xC0, 0x07, 0x8F, 0x80, 0x1F, 0x3E, 0x00, 0x3E, 0x7C, 0x00, + 0x7C, 0xF8, 0x00, 0xF1, 0xF0, 0x03, 0xE3, 0xE0, 0x07, 0xC7, 0xC0, 0x0F, + 0x8F, 0x80, 0x1F, 0x1F, 0x00, 0x7C, 0x3E, 0x01, 0xF8, 0x7E, 0x0F, 0xFC, + 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xF1, 0xFF, 0xEF, 0xE1, 0xFF, 0xBF, 0x80, + 0xFC, 0x00, 0x00, 0x7F, 0xF0, 0x7F, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xE0, 0xFF, 0xE1, 0xF8, 0x03, 0xE0, + 0x0F, 0x80, 0x3E, 0x00, 0xF8, 0x07, 0xC0, 0x0F, 0x80, 0xF8, 0x00, 0xFC, + 0x1F, 0x80, 0x07, 0xC1, 0xF0, 0x00, 0x7C, 0x3E, 0x00, 0x07, 0xE7, 0xE0, + 0x00, 0x3E, 0x7C, 0x00, 0x03, 0xEF, 0x80, 0x00, 0x3F, 0xF0, 0x00, 0x03, + 0xFF, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x1F, 0xC0, + 0x00, 0x00, 0xF8, 0x00, 0x00, 0x7F, 0xC0, 0x1F, 0xEF, 0xFC, 0x03, 0xFF, + 0xFF, 0xC0, 0x7F, 0xFF, 0xFC, 0x07, 0xFE, 0x7F, 0x80, 0x3F, 0xC3, 0xE1, + 0xF0, 0xF8, 0x3E, 0x3F, 0x0F, 0x03, 0xE3, 0xF1, 0xF0, 0x3E, 0x7F, 0x1E, + 0x03, 0xE7, 0xF3, 0xE0, 0x3E, 0xFF, 0xBC, 0x03, 0xFF, 0xFF, 0xC0, 0x3F, + 0xFF, 0xFC, 0x03, 0xFE, 0xFF, 0x80, 0x3F, 0xEF, 0xF8, 0x03, 0xFC, 0xFF, + 0x00, 0x3F, 0x8F, 0xF0, 0x03, 0xF8, 0x7E, 0x00, 0x3F, 0x07, 0xE0, 0x01, + 0xF0, 0x7C, 0x00, 0x1E, 0x07, 0xC0, 0x00, 0x03, 0xFE, 0x0F, 0xF8, 0x3F, + 0xF0, 0xFF, 0xC1, 0xFF, 0x8F, 0xFE, 0x0F, 0xFC, 0x7F, 0xF0, 0x7F, 0xC1, + 0xFF, 0x00, 0xFE, 0x1F, 0xC0, 0x03, 0xF9, 0xFC, 0x00, 0x0F, 0xFF, 0xC0, + 0x00, 0x3F, 0xF8, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x07, 0xF8, 0x00, 0x00, + 0x7F, 0xE0, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0xFE, 0xFE, 0x00, 0x0F, 0xE3, + 0xF8, 0x00, 0xFE, 0x0F, 0xE0, 0x3F, 0xE0, 0x7F, 0xC3, 0xFF, 0x87, 0xFF, + 0x3F, 0xFC, 0x7F, 0xF9, 0xFF, 0xE3, 0xFF, 0x87, 0xFE, 0x0F, 0xF8, 0x00, + 0x01, 0xFE, 0x03, 0xFE, 0x03, 0xFF, 0x07, 0xFF, 0x07, 0xFF, 0x07, 0xFF, + 0x07, 0xFF, 0x07, 0xFE, 0x03, 0xFC, 0x03, 0xFC, 0x01, 0xF8, 0x01, 0xF0, + 0x00, 0xF8, 0x03, 0xF0, 0x00, 0xF8, 0x03, 0xE0, 0x00, 0xFC, 0x07, 0xC0, + 0x00, 0x7C, 0x0F, 0x80, 0x00, 0x7C, 0x0F, 0x80, 0x00, 0x7E, 0x1F, 0x00, + 0x00, 0x7E, 0x3E, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x00, 0x3E, 0x7C, 0x00, + 0x00, 0x3F, 0xF8, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0x1F, 0xE0, 0x00, + 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x0F, 0x80, 0x00, + 0x00, 0x1F, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, + 0x00, 0x7C, 0x00, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, + 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x7F, 0xFE, 0x00, 0x00, + 0x07, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, + 0xE0, 0xFF, 0xFF, 0xE0, 0x7C, 0x0F, 0xE0, 0x3C, 0x0F, 0xE0, 0x1E, 0x0F, + 0xC0, 0x00, 0x1F, 0xC0, 0x00, 0x1F, 0xC0, 0x00, 0x1F, 0xC0, 0x00, 0x1F, + 0x80, 0x00, 0x3F, 0x80, 0x00, 0x3F, 0x80, 0x00, 0x3F, 0x80, 0xF0, 0x3F, + 0x00, 0xF8, 0x3F, 0xFF, 0xFC, 0x3F, 0xFF, 0xFE, 0x1F, 0xFF, 0xFE, 0x0F, + 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0x80, 0x00, 0x0F, 0x00, 0x1F, 0xC0, 0x1F, + 0xE0, 0x1F, 0xF0, 0x0F, 0xE0, 0x0F, 0xC0, 0x07, 0xC0, 0x07, 0xC0, 0x03, + 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x78, 0x00, 0x7C, 0x00, 0x3E, 0x00, + 0x1F, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x3F, 0x80, 0x3F, 0xC0, 0x1F, 0xC0, + 0x0F, 0xE0, 0x07, 0xF8, 0x00, 0xFC, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, + 0x80, 0x07, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, + 0x7E, 0x00, 0x3F, 0x80, 0x1F, 0xE0, 0x07, 0xF0, 0x03, 0xF8, 0x00, 0x78, + 0x00, 0x01, 0xE0, 0x3C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, 0x80, 0xF0, 0x3E, + 0x07, 0xC0, 0xF0, 0x1E, 0x03, 0xC0, 0xF8, 0x1F, 0x03, 0xC0, 0x78, 0x0F, + 0x03, 0xE0, 0x7C, 0x0F, 0x01, 0xE0, 0x3C, 0x0F, 0x81, 0xF0, 0x3C, 0x07, + 0x80, 0xF0, 0x3E, 0x07, 0xC0, 0xF0, 0x1E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, + 0xC0, 0x70, 0x00, 0x00, 0xF0, 0x00, 0xFC, 0x00, 0x7F, 0x00, 0x3F, 0xC0, + 0x0F, 0xE0, 0x03, 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, + 0x00, 0x0F, 0x80, 0x07, 0x80, 0x03, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, + 0xF8, 0x00, 0x7E, 0x00, 0x3F, 0xC0, 0x0F, 0xE0, 0x07, 0xF0, 0x07, 0xF8, + 0x07, 0xF8, 0x03, 0xE0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF0, 0x00, 0x78, + 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x00, 0x1F, 0x80, 0x7F, + 0xC0, 0x7F, 0xC0, 0x3F, 0xC0, 0x1F, 0xC0, 0x07, 0x80, 0x00, 0x03, 0xE0, + 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0xE0, 0x39, 0xFF, 0xE0, 0xF7, 0xFF, 0xE7, + 0xFF, 0xCF, 0xFF, 0xFE, 0x0F, 0xFF, 0x38, 0x0F, 0xFC, 0x00, 0x0F, 0xE0, + 0x00, 0x0F, 0x80}; + +const GFXglyph FreeMonoBoldOblique24pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 28, 0, 1}, // 0x20 ' ' + {0, 12, 31, 28, 12, -29}, // 0x21 '!' + {47, 17, 14, 28, 11, -28}, // 0x22 '"' + {77, 24, 34, 28, 5, -30}, // 0x23 '#' + {179, 25, 38, 28, 4, -31}, // 0x24 '$' + {298, 22, 30, 28, 6, -28}, // 0x25 '%' + {381, 21, 28, 28, 5, -26}, // 0x26 '&' + {455, 7, 14, 28, 16, -28}, // 0x27 ''' + {468, 14, 37, 28, 14, -29}, // 0x28 '(' + {533, 14, 37, 28, 5, -29}, // 0x29 ')' + {598, 21, 19, 28, 8, -28}, // 0x2A '*' + {648, 24, 26, 28, 5, -25}, // 0x2B '+' + {726, 12, 14, 28, 6, -6}, // 0x2C ',' + {747, 24, 5, 28, 5, -15}, // 0x2D '-' + {762, 7, 6, 28, 11, -4}, // 0x2E '.' + {768, 28, 38, 28, 3, -32}, // 0x2F '/' + {901, 23, 31, 28, 6, -29}, // 0x30 '0' + {991, 21, 30, 28, 4, -29}, // 0x31 '1' + {1070, 26, 30, 28, 3, -29}, // 0x32 '2' + {1168, 25, 31, 28, 4, -29}, // 0x33 '3' + {1265, 22, 28, 28, 5, -27}, // 0x34 '4' + {1342, 25, 31, 28, 4, -29}, // 0x35 '5' + {1439, 24, 31, 28, 7, -29}, // 0x36 '6' + {1532, 22, 30, 28, 9, -29}, // 0x37 '7' + {1615, 23, 31, 28, 6, -29}, // 0x38 '8' + {1705, 24, 31, 28, 5, -29}, // 0x39 '9' + {1798, 10, 22, 28, 11, -20}, // 0x3A ':' + {1826, 15, 28, 28, 5, -20}, // 0x3B ';' + {1879, 25, 21, 28, 5, -23}, // 0x3C '<' + {1945, 26, 14, 28, 4, -19}, // 0x3D '=' + {1991, 25, 22, 28, 4, -23}, // 0x3E '>' + {2060, 19, 29, 28, 10, -27}, // 0x3F '?' + {2129, 23, 36, 28, 5, -28}, // 0x40 '@' + {2233, 30, 27, 28, 0, -26}, // 0x41 'A' + {2335, 29, 27, 28, 1, -26}, // 0x42 'B' + {2433, 28, 29, 28, 3, -27}, // 0x43 'C' + {2535, 28, 27, 28, 1, -26}, // 0x44 'D' + {2630, 29, 27, 28, 1, -26}, // 0x45 'E' + {2728, 31, 27, 28, 0, -26}, // 0x46 'F' + {2833, 28, 29, 28, 3, -27}, // 0x47 'G' + {2935, 30, 27, 28, 1, -26}, // 0x48 'H' + {3037, 25, 27, 28, 3, -26}, // 0x49 'I' + {3122, 31, 28, 28, 0, -26}, // 0x4A 'J' + {3231, 31, 27, 28, 0, -26}, // 0x4B 'K' + {3336, 27, 27, 28, 1, -26}, // 0x4C 'L' + {3428, 34, 27, 28, 0, -26}, // 0x4D 'M' + {3543, 32, 27, 28, 1, -26}, // 0x4E 'N' + {3651, 27, 29, 28, 3, -27}, // 0x4F 'O' + {3749, 28, 27, 28, 1, -26}, // 0x50 'P' + {3844, 27, 35, 28, 3, -27}, // 0x51 'Q' + {3963, 29, 27, 28, 0, -26}, // 0x52 'R' + {4061, 26, 29, 28, 3, -27}, // 0x53 'S' + {4156, 26, 27, 28, 4, -26}, // 0x54 'T' + {4244, 28, 28, 28, 4, -26}, // 0x55 'U' + {4342, 30, 27, 28, 2, -26}, // 0x56 'V' + {4444, 29, 27, 28, 3, -26}, // 0x57 'W' + {4542, 32, 27, 28, 0, -26}, // 0x58 'X' + {4650, 26, 27, 28, 4, -26}, // 0x59 'Y' + {4738, 27, 27, 28, 2, -26}, // 0x5A 'Z' + {4830, 18, 37, 28, 10, -29}, // 0x5B '[' + {4914, 13, 38, 28, 10, -32}, // 0x5C '\' + {4976, 18, 37, 28, 5, -29}, // 0x5D ']' + {5060, 20, 15, 28, 8, -29}, // 0x5E '^' + {5098, 29, 5, 28, -2, 5}, // 0x5F '_' + {5117, 8, 8, 28, 13, -30}, // 0x60 '`' + {5125, 24, 23, 28, 3, -21}, // 0x61 'a' + {5194, 29, 31, 28, 0, -29}, // 0x62 'b' + {5307, 25, 23, 28, 3, -21}, // 0x63 'c' + {5379, 28, 31, 28, 3, -29}, // 0x64 'd' + {5488, 24, 23, 28, 3, -21}, // 0x65 'e' + {5557, 28, 30, 28, 4, -29}, // 0x66 'f' + {5662, 28, 31, 28, 3, -21}, // 0x67 'g' + {5771, 26, 30, 28, 2, -29}, // 0x68 'h' + {5869, 23, 29, 28, 3, -28}, // 0x69 'i' + {5953, 23, 38, 28, 3, -28}, // 0x6A 'j' + {6063, 26, 30, 28, 2, -29}, // 0x6B 'k' + {6161, 23, 30, 28, 3, -29}, // 0x6C 'l' + {6248, 30, 22, 28, 0, -21}, // 0x6D 'm' + {6331, 26, 22, 28, 2, -21}, // 0x6E 'n' + {6403, 25, 23, 28, 3, -21}, // 0x6F 'o' + {6475, 31, 31, 28, -1, -21}, // 0x70 'p' + {6596, 29, 31, 28, 2, -21}, // 0x71 'q' + {6709, 28, 22, 28, 2, -21}, // 0x72 'r' + {6786, 23, 23, 28, 4, -21}, // 0x73 's' + {6853, 20, 28, 28, 5, -26}, // 0x74 't' + {6923, 23, 22, 28, 5, -20}, // 0x75 'u' + {6987, 28, 21, 28, 3, -20}, // 0x76 'v' + {7061, 28, 21, 28, 3, -20}, // 0x77 'w' + {7135, 29, 21, 28, 1, -20}, // 0x78 'x' + {7212, 32, 30, 28, -1, -20}, // 0x79 'y' + {7332, 25, 21, 28, 4, -20}, // 0x7A 'z' + {7398, 17, 37, 28, 10, -29}, // 0x7B '{' + {7477, 11, 36, 28, 11, -28}, // 0x7C '|' + {7527, 17, 37, 28, 6, -29}, // 0x7D '}' + {7606, 23, 10, 28, 5, -17}}; // 0x7E '~' + +const GFXfont FreeMonoBoldOblique24pt7b PROGMEM = { + (uint8_t *)FreeMonoBoldOblique24pt7bBitmaps, + (GFXglyph *)FreeMonoBoldOblique24pt7bGlyphs, 0x20, 0x7E, 47}; + +// Approx. 8307 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBoldOblique9pt7b.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBoldOblique9pt7b.h new file mode 100644 index 0000000..86d3e9c --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBoldOblique9pt7b.h @@ -0,0 +1,205 @@ +#pragma once +#include + +const uint8_t FreeMonoBoldOblique9pt7bBitmaps[] PROGMEM = { + 0x39, 0xCC, 0x67, 0x31, 0x8C, 0x07, 0x38, 0x6C, 0xD9, 0x36, 0x48, 0x80, + 0x09, 0x0D, 0x86, 0xCF, 0xF7, 0xF9, 0xB3, 0xFD, 0xFE, 0x6C, 0x36, 0x1B, + 0x00, 0x00, 0x06, 0x07, 0x07, 0xE6, 0x33, 0x01, 0xE0, 0x7C, 0x06, 0x43, + 0x33, 0xBF, 0x83, 0x03, 0x00, 0x80, 0x1C, 0x11, 0x10, 0x88, 0x83, 0xB8, + 0xF3, 0xB8, 0x22, 0x21, 0x11, 0x07, 0x00, 0x0F, 0x1F, 0x30, 0x30, 0x38, + 0x7B, 0xDF, 0xCE, 0xFF, 0x7E, 0xFA, 0x80, 0x19, 0x8C, 0xC6, 0x63, 0x18, + 0xC6, 0x31, 0xC6, 0x30, 0x31, 0xC6, 0x31, 0x8C, 0x63, 0x31, 0x98, 0xCC, + 0x40, 0x08, 0x08, 0xFF, 0xFF, 0x38, 0x6C, 0x6C, 0x0C, 0x06, 0x03, 0x1F, + 0xFF, 0xF8, 0xC0, 0x60, 0x30, 0x10, 0x00, 0x36, 0x4C, 0x80, 0xFF, 0xFF, + 0xC0, 0xFC, 0x00, 0x00, 0x0C, 0x03, 0x00, 0xC0, 0x18, 0x06, 0x01, 0x80, + 0x30, 0x0C, 0x03, 0x00, 0x60, 0x18, 0x06, 0x00, 0xC0, 0x30, 0x00, 0x0F, + 0x0F, 0xCC, 0x6C, 0x36, 0x1B, 0x0D, 0x05, 0x86, 0xC3, 0x63, 0x3F, 0x8F, + 0x00, 0x06, 0x1C, 0x3C, 0x6C, 0x0C, 0x0C, 0x08, 0x18, 0x18, 0x18, 0xFE, + 0xFE, 0x07, 0x83, 0xF1, 0x8C, 0x43, 0x00, 0xC0, 0xE0, 0x70, 0x38, 0x38, + 0x1C, 0x6F, 0xF3, 0xFC, 0x1F, 0x1F, 0xC0, 0x60, 0x30, 0x30, 0x70, 0x38, + 0x06, 0x03, 0x03, 0xBF, 0x9F, 0x80, 0x03, 0x07, 0x0B, 0x1B, 0x32, 0x66, + 0xFF, 0xFF, 0x1E, 0x1E, 0x3F, 0x9F, 0x98, 0x0F, 0xC7, 0xF3, 0x18, 0x0C, + 0x06, 0x06, 0x7F, 0x1E, 0x00, 0x07, 0x87, 0xCE, 0x06, 0x06, 0x03, 0xF3, + 0xFD, 0xC6, 0xC3, 0x63, 0xBF, 0x8F, 0x80, 0xFF, 0xFF, 0xC3, 0x06, 0x06, + 0x0C, 0x18, 0x18, 0x30, 0x30, 0x60, 0x1F, 0x1F, 0xDC, 0x6C, 0x36, 0x31, + 0xF1, 0xF8, 0xC6, 0xC3, 0x63, 0xBF, 0x8F, 0x80, 0x1E, 0x3F, 0x33, 0x63, + 0x63, 0x67, 0x7F, 0x3E, 0x06, 0x1C, 0xF8, 0xF0, 0x77, 0x00, 0x00, 0xEE, + 0x1C, 0x70, 0x00, 0x00, 0x03, 0x0C, 0x61, 0x08, 0x00, 0x00, 0xC1, 0xE1, + 0xE1, 0xE0, 0xF0, 0x07, 0x00, 0xF0, 0x0C, 0x7F, 0xDF, 0xF0, 0x00, 0x00, + 0x7F, 0xFF, 0xF0, 0x30, 0x0F, 0x00, 0xE0, 0x1E, 0x07, 0xC7, 0x87, 0x83, + 0x00, 0x7D, 0xFF, 0x18, 0x30, 0xE3, 0x9C, 0x30, 0x01, 0xC3, 0x80, 0x0F, + 0x0F, 0xCC, 0x6C, 0x36, 0x72, 0x79, 0x7D, 0xB6, 0xDA, 0x6F, 0xB3, 0xD8, + 0x0C, 0x07, 0xE1, 0xE0, 0x0F, 0x83, 0xF0, 0x1E, 0x03, 0xC0, 0xD8, 0x31, + 0x87, 0xF1, 0xFE, 0x30, 0xDF, 0x3F, 0xC7, 0x80, 0x3F, 0xC7, 0xFC, 0x61, + 0x8C, 0x31, 0xFC, 0x3F, 0x84, 0x19, 0x83, 0x30, 0x6F, 0xFB, 0xFE, 0x00, + 0x0F, 0xF1, 0xFF, 0x30, 0x66, 0x06, 0x60, 0x0C, 0x00, 0xC0, 0x0C, 0x00, + 0xE0, 0xC7, 0xF8, 0x3F, 0x00, 0x3F, 0x87, 0xF8, 0x63, 0x8C, 0x31, 0x06, + 0x60, 0xCC, 0x19, 0x86, 0x31, 0xCF, 0xF3, 0xF8, 0x00, 0x3F, 0xE3, 0xFE, + 0x18, 0x61, 0xB6, 0x1F, 0x01, 0xF0, 0x32, 0x03, 0x00, 0x30, 0x4F, 0xFC, + 0xFF, 0xC0, 0x3F, 0xF3, 0xFE, 0x18, 0x61, 0xB6, 0x1F, 0x03, 0xF0, 0x32, + 0x03, 0x00, 0x30, 0x0F, 0xC0, 0xFC, 0x00, 0x0F, 0xE3, 0xFC, 0xC1, 0x30, + 0x06, 0x01, 0x80, 0x31, 0xF6, 0x3E, 0xE1, 0x9F, 0xF0, 0xF8, 0x00, 0x1E, + 0xF3, 0xCF, 0x18, 0x61, 0x84, 0x10, 0xC3, 0xFC, 0x3F, 0xC3, 0x08, 0x31, + 0x8F, 0xBC, 0xFB, 0xC0, 0x3F, 0xCF, 0xF0, 0x60, 0x10, 0x0C, 0x03, 0x00, + 0xC0, 0x20, 0x18, 0x3F, 0xCF, 0xF0, 0x07, 0xF0, 0x7F, 0x00, 0x80, 0x18, + 0x01, 0x80, 0x18, 0x61, 0x84, 0x10, 0xC3, 0x0F, 0xE0, 0x7C, 0x00, 0x3E, + 0xE7, 0xFC, 0x66, 0x0D, 0x81, 0x60, 0x7C, 0x0E, 0xC1, 0x98, 0x31, 0x1F, + 0x3B, 0xE7, 0x00, 0x3F, 0x07, 0xE0, 0x30, 0x06, 0x00, 0xC0, 0x10, 0x06, + 0x00, 0xC3, 0x18, 0x6F, 0xFB, 0xFF, 0x00, 0x38, 0x39, 0xC3, 0xC7, 0x3C, + 0x79, 0xE3, 0xDA, 0x1F, 0xF0, 0x9D, 0x8C, 0xCC, 0x60, 0x67, 0xCF, 0x3C, + 0x78, 0x3C, 0xF9, 0xE7, 0x87, 0x18, 0x3C, 0xC1, 0x66, 0x1B, 0xB0, 0xCD, + 0x06, 0x78, 0x31, 0xC3, 0xCE, 0x3E, 0x30, 0x0F, 0x0F, 0xE7, 0x1D, 0x83, + 0xC0, 0xF0, 0x3C, 0x0F, 0x06, 0xE3, 0x9F, 0xC3, 0xC0, 0x3F, 0xC7, 0xFC, + 0x61, 0x8C, 0x31, 0x8E, 0x3F, 0x87, 0xE1, 0x80, 0x30, 0x0F, 0xC3, 0xF0, + 0x00, 0x0F, 0x0F, 0xE7, 0x1D, 0x83, 0xC0, 0xF0, 0x3C, 0x0F, 0x06, 0xE3, + 0x1F, 0xC3, 0xC0, 0x80, 0x7F, 0x3F, 0xC0, 0x3F, 0xC3, 0xFE, 0x18, 0x61, + 0x86, 0x10, 0xE3, 0xFC, 0x3F, 0x83, 0x18, 0x31, 0xCF, 0x8F, 0xF8, 0x70, + 0x1E, 0xCF, 0xF7, 0x19, 0x80, 0x70, 0x1F, 0x81, 0xF3, 0x0C, 0xC3, 0x3F, + 0x8B, 0xC0, 0x7F, 0xCF, 0xF9, 0x93, 0x66, 0x60, 0xC0, 0x18, 0x02, 0x00, + 0xC0, 0x18, 0x0F, 0xC1, 0xF8, 0x00, 0xF9, 0xFF, 0x7D, 0x83, 0x30, 0x64, + 0x09, 0x83, 0x30, 0x66, 0x0C, 0xE3, 0x0F, 0xC0, 0xF0, 0x00, 0xF9, 0xFE, + 0x3D, 0x83, 0x30, 0xC6, 0x30, 0xE6, 0x0D, 0x81, 0xB0, 0x3C, 0x07, 0x00, + 0x60, 0x00, 0xF9, 0xFF, 0x3D, 0x83, 0x36, 0x64, 0xC8, 0xBF, 0x35, 0xE7, + 0xB8, 0xE7, 0x1C, 0xE3, 0x18, 0x00, 0x3C, 0xF3, 0xCF, 0x1C, 0xC0, 0xD8, + 0x0F, 0x00, 0x60, 0x0F, 0x01, 0xB8, 0x31, 0x8F, 0x3C, 0xF3, 0xC0, 0x79, + 0xEE, 0x38, 0xC6, 0x19, 0x81, 0xE0, 0x38, 0x06, 0x00, 0xC0, 0x18, 0x0F, + 0xC3, 0xF8, 0x00, 0x3F, 0xCF, 0xF3, 0x18, 0xCC, 0x06, 0x03, 0x01, 0x80, + 0xC6, 0x61, 0xBF, 0xCF, 0xF0, 0x1E, 0x3C, 0xC1, 0x83, 0x06, 0x08, 0x30, + 0x60, 0xC1, 0x06, 0x0F, 0x1E, 0x00, 0x06, 0x31, 0x86, 0x31, 0x8C, 0x31, + 0x8C, 0x61, 0x8C, 0x60, 0x1E, 0x78, 0x30, 0x60, 0xC1, 0x86, 0x0C, 0x18, + 0x30, 0x41, 0x8F, 0x1E, 0x00, 0x08, 0x1C, 0x3C, 0x76, 0xE7, 0xC3, 0x7F, + 0xFF, 0xFC, 0x88, 0x80, 0x0F, 0x07, 0xE1, 0xF9, 0xFE, 0xE3, 0x30, 0xCF, + 0xFD, 0xFF, 0x38, 0x07, 0x00, 0x60, 0x0F, 0xC1, 0xFC, 0x71, 0xCC, 0x19, + 0x83, 0x30, 0xDF, 0xFB, 0xBC, 0x00, 0x1F, 0xCF, 0xF6, 0x1B, 0x00, 0xC0, + 0x30, 0x0F, 0xF1, 0xF8, 0x01, 0xE0, 0x38, 0x03, 0x0F, 0x63, 0xFC, 0xC3, + 0x30, 0x66, 0x0C, 0xC3, 0x9F, 0xF9, 0xF7, 0x00, 0x1F, 0x1F, 0xD8, 0x3F, + 0xFF, 0xFE, 0x1B, 0xFC, 0xF8, 0x07, 0xC3, 0xF1, 0x81, 0xFE, 0x7F, 0x84, + 0x03, 0x00, 0xC0, 0x30, 0x3F, 0x8F, 0xE0, 0x1E, 0xE7, 0xFD, 0x86, 0x60, + 0xCC, 0x19, 0xC6, 0x3F, 0xC1, 0xD8, 0x03, 0x00, 0xE1, 0xF8, 0x3E, 0x00, + 0x38, 0x1E, 0x01, 0x00, 0xDC, 0x3F, 0x8C, 0x62, 0x19, 0x84, 0x63, 0x3D, + 0xFF, 0x7C, 0x06, 0x03, 0x00, 0x03, 0xC3, 0xE0, 0x20, 0x30, 0x18, 0x0C, + 0x3F, 0xFF, 0xE0, 0x01, 0x81, 0x80, 0x07, 0xF3, 0xF8, 0x0C, 0x04, 0x06, + 0x03, 0x01, 0x80, 0xC0, 0x40, 0x67, 0xE3, 0xE0, 0x38, 0x0E, 0x01, 0x80, + 0x4F, 0x37, 0xCF, 0x83, 0xC0, 0xF0, 0x26, 0x39, 0xEE, 0x78, 0x1F, 0x0F, + 0x01, 0x80, 0xC0, 0x60, 0x20, 0x30, 0x18, 0x0C, 0x3F, 0xFF, 0xE0, 0x7E, + 0xE7, 0xFF, 0x33, 0x32, 0x63, 0x66, 0x36, 0x62, 0xF7, 0x7F, 0x67, 0x77, + 0x8F, 0xF8, 0xC3, 0x10, 0x66, 0x08, 0xC3, 0x3C, 0x7F, 0x8F, 0x1F, 0x0F, + 0xE6, 0x1F, 0x03, 0xC0, 0xF8, 0x67, 0xF0, 0xF8, 0x3F, 0xE3, 0xFF, 0x1C, + 0x31, 0x83, 0x18, 0x31, 0x86, 0x3F, 0xE3, 0x78, 0x30, 0x03, 0x00, 0xFC, + 0x0F, 0x80, 0x1E, 0xEF, 0xFD, 0x86, 0x60, 0xCC, 0x19, 0xC7, 0x3F, 0xE1, + 0xE8, 0x03, 0x00, 0x60, 0x3E, 0x07, 0xC0, 0x39, 0xDF, 0xF1, 0xC0, 0x60, + 0x10, 0x0C, 0x0F, 0xF3, 0xF8, 0x1F, 0x7F, 0x63, 0x7E, 0x1F, 0xC3, 0xFE, + 0xFC, 0x10, 0x08, 0x0C, 0x1F, 0xEF, 0xF1, 0x80, 0x80, 0xC0, 0x60, 0x3F, + 0x8F, 0x80, 0xF3, 0xFC, 0xF6, 0x09, 0x86, 0x61, 0x98, 0xE7, 0xF8, 0xFE, + 0xFB, 0xFF, 0x7C, 0xC6, 0x19, 0x83, 0x60, 0x6C, 0x07, 0x00, 0xC0, 0xF1, + 0xFE, 0x3D, 0xB3, 0x37, 0xC7, 0xF8, 0xEE, 0x1D, 0xC3, 0x30, 0x79, 0xEF, + 0x38, 0xEE, 0x0F, 0x01, 0xE0, 0x6E, 0x3C, 0xE7, 0xBC, 0x3C, 0xF3, 0x8F, + 0x18, 0xC1, 0x9C, 0x19, 0x81, 0xF0, 0x0E, 0x00, 0xE0, 0x0C, 0x01, 0x80, + 0xFC, 0x0F, 0xC0, 0x7F, 0xBF, 0xD9, 0xC1, 0x83, 0x83, 0x1B, 0xFD, 0xFE, + 0x06, 0x1C, 0x60, 0xC1, 0x86, 0x3C, 0x70, 0x30, 0x41, 0x83, 0x07, 0x06, + 0x00, 0x33, 0x32, 0x26, 0x66, 0x44, 0xCC, 0xC8, 0x0C, 0x0E, 0x04, 0x0C, + 0x0C, 0x0C, 0x0F, 0x0F, 0x18, 0x18, 0x10, 0x30, 0xF0, 0xE0, 0x38, 0x7C, + 0xF7, 0xC1, 0xC0}; + +const GFXglyph FreeMonoBoldOblique9pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 11, 0, 1}, // 0x20 ' ' + {0, 5, 11, 11, 4, -10}, // 0x21 '!' + {7, 7, 5, 11, 4, -10}, // 0x22 '"' + {12, 9, 12, 11, 2, -10}, // 0x23 '#' + {26, 9, 14, 11, 2, -11}, // 0x24 '$' + {42, 9, 11, 11, 2, -10}, // 0x25 '%' + {55, 8, 10, 11, 2, -9}, // 0x26 '&' + {65, 2, 5, 11, 6, -10}, // 0x27 ''' + {67, 5, 14, 11, 5, -10}, // 0x28 '(' + {76, 5, 14, 11, 2, -10}, // 0x29 ')' + {85, 8, 7, 11, 3, -10}, // 0x2A '*' + {92, 9, 9, 11, 2, -8}, // 0x2B '+' + {103, 4, 5, 11, 2, -1}, // 0x2C ',' + {106, 9, 2, 11, 2, -5}, // 0x2D '-' + {109, 3, 2, 11, 4, -1}, // 0x2E '.' + {110, 11, 15, 11, 1, -12}, // 0x2F '/' + {131, 9, 12, 11, 2, -11}, // 0x30 '0' + {145, 8, 12, 11, 2, -11}, // 0x31 '1' + {157, 10, 12, 11, 1, -11}, // 0x32 '2' + {172, 9, 12, 11, 2, -11}, // 0x33 '3' + {186, 8, 10, 11, 2, -9}, // 0x34 '4' + {196, 9, 11, 11, 3, -10}, // 0x35 '5' + {209, 9, 12, 11, 3, -11}, // 0x36 '6' + {223, 8, 11, 11, 3, -10}, // 0x37 '7' + {234, 9, 12, 11, 2, -11}, // 0x38 '8' + {248, 8, 12, 11, 3, -11}, // 0x39 '9' + {260, 4, 8, 11, 4, -7}, // 0x3A ':' + {264, 6, 11, 11, 2, -7}, // 0x3B ';' + {273, 10, 8, 11, 2, -8}, // 0x3C '<' + {283, 10, 6, 11, 1, -7}, // 0x3D '=' + {291, 10, 8, 11, 1, -8}, // 0x3E '>' + {301, 7, 11, 11, 4, -10}, // 0x3F '?' + {311, 9, 15, 11, 2, -11}, // 0x40 '@' + {328, 11, 11, 11, 0, -10}, // 0x41 'A' + {344, 11, 11, 11, 0, -10}, // 0x42 'B' + {360, 12, 11, 11, 1, -10}, // 0x43 'C' + {377, 11, 11, 11, 0, -10}, // 0x44 'D' + {393, 12, 11, 11, 0, -10}, // 0x45 'E' + {410, 12, 11, 11, 0, -10}, // 0x46 'F' + {427, 11, 11, 11, 1, -10}, // 0x47 'G' + {443, 12, 11, 11, 0, -10}, // 0x48 'H' + {460, 10, 11, 11, 1, -10}, // 0x49 'I' + {474, 12, 11, 11, 0, -10}, // 0x4A 'J' + {491, 11, 11, 11, 0, -10}, // 0x4B 'K' + {507, 11, 11, 11, 0, -10}, // 0x4C 'L' + {523, 13, 11, 11, 0, -10}, // 0x4D 'M' + {541, 13, 11, 11, 0, -10}, // 0x4E 'N' + {559, 10, 11, 11, 1, -10}, // 0x4F 'O' + {573, 11, 11, 11, 0, -10}, // 0x50 'P' + {589, 10, 14, 11, 1, -10}, // 0x51 'Q' + {607, 12, 11, 11, 0, -10}, // 0x52 'R' + {624, 10, 11, 11, 2, -10}, // 0x53 'S' + {638, 11, 11, 11, 1, -10}, // 0x54 'T' + {654, 11, 11, 11, 1, -10}, // 0x55 'U' + {670, 11, 11, 11, 1, -10}, // 0x56 'V' + {686, 11, 11, 11, 1, -10}, // 0x57 'W' + {702, 12, 11, 11, 0, -10}, // 0x58 'X' + {719, 11, 11, 11, 1, -10}, // 0x59 'Y' + {735, 10, 11, 11, 1, -10}, // 0x5A 'Z' + {749, 7, 14, 11, 4, -10}, // 0x5B '[' + {762, 5, 15, 11, 4, -12}, // 0x5C '\' + {772, 7, 14, 11, 2, -10}, // 0x5D ']' + {785, 8, 6, 11, 3, -11}, // 0x5E '^' + {791, 11, 2, 11, -1, 3}, // 0x5F '_' + {794, 3, 3, 11, 5, -11}, // 0x60 '`' + {796, 10, 8, 11, 1, -7}, // 0x61 'a' + {806, 11, 11, 11, 0, -10}, // 0x62 'b' + {822, 10, 8, 11, 1, -7}, // 0x63 'c' + {832, 11, 11, 11, 1, -10}, // 0x64 'd' + {848, 9, 8, 11, 1, -7}, // 0x65 'e' + {857, 10, 11, 11, 2, -10}, // 0x66 'f' + {871, 11, 12, 11, 1, -7}, // 0x67 'g' + {888, 10, 11, 11, 1, -10}, // 0x68 'h' + {902, 9, 11, 11, 1, -10}, // 0x69 'i' + {915, 9, 15, 11, 1, -10}, // 0x6A 'j' + {932, 10, 11, 11, 1, -10}, // 0x6B 'k' + {946, 9, 11, 11, 1, -10}, // 0x6C 'l' + {959, 12, 8, 11, 0, -7}, // 0x6D 'm' + {971, 11, 8, 11, 1, -7}, // 0x6E 'n' + {982, 10, 8, 11, 1, -7}, // 0x6F 'o' + {992, 12, 12, 11, -1, -7}, // 0x70 'p' + {1010, 11, 12, 11, 1, -7}, // 0x71 'q' + {1027, 10, 8, 11, 1, -7}, // 0x72 'r' + {1037, 8, 8, 11, 2, -7}, // 0x73 's' + {1045, 9, 11, 11, 1, -10}, // 0x74 't' + {1058, 10, 8, 11, 1, -7}, // 0x75 'u' + {1068, 11, 8, 11, 1, -7}, // 0x76 'v' + {1079, 11, 8, 11, 1, -7}, // 0x77 'w' + {1090, 11, 8, 11, 1, -7}, // 0x78 'x' + {1101, 12, 12, 11, 0, -7}, // 0x79 'y' + {1119, 9, 8, 11, 2, -7}, // 0x7A 'z' + {1128, 7, 14, 11, 3, -10}, // 0x7B '{' + {1141, 4, 14, 11, 4, -10}, // 0x7C '|' + {1148, 8, 14, 11, 2, -10}, // 0x7D '}' + {1162, 9, 4, 11, 2, -6}}; // 0x7E '~' + +const GFXfont FreeMonoBoldOblique9pt7b PROGMEM = { + (uint8_t *)FreeMonoBoldOblique9pt7bBitmaps, + (GFXglyph *)FreeMonoBoldOblique9pt7bGlyphs, 0x20, 0x7E, 18}; + +// Approx. 1839 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoOblique12pt7b.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoOblique12pt7b.h new file mode 100644 index 0000000..0617603 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoOblique12pt7b.h @@ -0,0 +1,250 @@ +#pragma once +#include + +const uint8_t FreeMonoOblique12pt7bBitmaps[] PROGMEM = { + 0x11, 0x11, 0x12, 0x22, 0x22, 0x00, 0x0E, 0xE0, 0xE7, 0xE7, 0xC6, 0xC6, + 0xC6, 0x84, 0x84, 0x02, 0x40, 0x88, 0x12, 0x02, 0x40, 0x48, 0x7F, 0xC2, + 0x40, 0x48, 0x11, 0x1F, 0xF8, 0x48, 0x09, 0x02, 0x40, 0x48, 0x09, 0x02, + 0x20, 0x02, 0x01, 0x00, 0xF4, 0xC3, 0x60, 0x50, 0x04, 0x00, 0xC0, 0x0F, + 0x00, 0x60, 0x0A, 0x02, 0x81, 0x30, 0xC7, 0xC0, 0x80, 0x20, 0x08, 0x00, + 0x0E, 0x02, 0x20, 0x84, 0x10, 0x82, 0x20, 0x38, 0x00, 0x38, 0x38, 0x38, + 0x08, 0xE0, 0x22, 0x08, 0x41, 0x08, 0x22, 0x03, 0x80, 0x07, 0x84, 0x04, + 0x02, 0x01, 0x00, 0xC1, 0xA2, 0x8A, 0x85, 0x43, 0x31, 0x8F, 0x60, 0xFF, + 0x6D, 0x20, 0x00, 0x44, 0x42, 0x21, 0x08, 0x84, 0x21, 0x08, 0x42, 0x10, + 0x42, 0x00, 0x00, 0x84, 0x10, 0x84, 0x21, 0x08, 0x46, 0x21, 0x10, 0x88, + 0x44, 0x00, 0x04, 0x02, 0x02, 0x1D, 0x13, 0xF0, 0x40, 0x50, 0x48, 0x44, + 0x00, 0x02, 0x00, 0x40, 0x08, 0x02, 0x00, 0x41, 0xFF, 0xC1, 0x00, 0x20, + 0x08, 0x01, 0x00, 0x20, 0x00, 0x1C, 0xE3, 0x18, 0x63, 0x08, 0x00, 0xFF, + 0xE0, 0x7F, 0x00, 0x00, 0x08, 0x00, 0x80, 0x04, 0x00, 0x40, 0x04, 0x00, + 0x60, 0x02, 0x00, 0x20, 0x03, 0x00, 0x10, 0x01, 0x00, 0x18, 0x00, 0x80, + 0x08, 0x00, 0x80, 0x04, 0x00, 0x40, 0x04, 0x00, 0x00, 0x07, 0x06, 0x23, + 0x04, 0x81, 0x40, 0x50, 0x14, 0x06, 0x02, 0x80, 0xA0, 0x28, 0x0A, 0x04, + 0x83, 0x11, 0x83, 0x80, 0x03, 0x03, 0x83, 0x83, 0x43, 0x20, 0x10, 0x08, + 0x08, 0x04, 0x02, 0x01, 0x01, 0x00, 0x80, 0x43, 0xFE, 0x01, 0xC0, 0x62, + 0x0C, 0x10, 0x81, 0x00, 0x10, 0x02, 0x00, 0x60, 0x0C, 0x01, 0x00, 0x20, + 0x0C, 0x01, 0x80, 0x20, 0x04, 0x04, 0xFF, 0xC0, 0x07, 0xC3, 0x0C, 0x00, + 0x80, 0x10, 0x06, 0x01, 0x81, 0xC0, 0x0C, 0x00, 0x40, 0x08, 0x01, 0x00, + 0x20, 0x09, 0x86, 0x0F, 0x00, 0x00, 0xC0, 0x50, 0x24, 0x12, 0x04, 0x82, + 0x21, 0x08, 0x82, 0x21, 0x10, 0x4F, 0xF8, 0x04, 0x01, 0x00, 0x80, 0xF8, + 0x0F, 0xE2, 0x00, 0x40, 0x08, 0x01, 0x00, 0x4E, 0x0E, 0x20, 0x02, 0x00, + 0x40, 0x08, 0x01, 0x00, 0x40, 0x19, 0x06, 0x1F, 0x00, 0x01, 0xE0, 0xC0, + 0x60, 0x18, 0x02, 0x00, 0x80, 0x13, 0xC5, 0x88, 0xE0, 0x98, 0x12, 0x02, + 0x40, 0x48, 0x10, 0x84, 0x0F, 0x00, 0xFF, 0xA0, 0x20, 0x08, 0x04, 0x01, + 0x00, 0x80, 0x20, 0x10, 0x04, 0x02, 0x00, 0x80, 0x40, 0x10, 0x08, 0x02, + 0x00, 0x07, 0x81, 0x08, 0x40, 0x90, 0x12, 0x02, 0x40, 0x84, 0x20, 0x78, + 0x30, 0x88, 0x0A, 0x01, 0x40, 0x28, 0x08, 0x82, 0x0F, 0x80, 0x07, 0x81, + 0x08, 0x40, 0x90, 0x12, 0x02, 0x40, 0xC8, 0x39, 0x8D, 0x1E, 0x40, 0x08, + 0x02, 0x00, 0xC0, 0x30, 0x18, 0x3E, 0x00, 0x19, 0xCC, 0x00, 0x00, 0x0C, + 0xE6, 0x00, 0x06, 0x1C, 0x30, 0x00, 0x00, 0x00, 0x1C, 0x30, 0xE1, 0x86, + 0x08, 0x00, 0x00, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x06, 0x00, 0x30, + 0x00, 0xC0, 0x06, 0x00, 0x18, 0x00, 0xC0, 0x7F, 0xF8, 0x00, 0x00, 0x01, + 0xFF, 0xE0, 0x18, 0x00, 0xC0, 0x03, 0x00, 0x18, 0x00, 0x60, 0x03, 0x00, + 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x00, 0x3E, 0xC3, 0x81, 0x01, 0x03, + 0x06, 0x18, 0x20, 0x20, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0x07, 0x82, 0x31, + 0x04, 0x81, 0x20, 0x48, 0x74, 0x65, 0x21, 0x48, 0x92, 0x28, 0x7A, 0x00, + 0x80, 0x20, 0x04, 0x00, 0xF8, 0x07, 0xE0, 0x02, 0x80, 0x0A, 0x00, 0x48, + 0x01, 0x20, 0x08, 0x40, 0x41, 0x01, 0x04, 0x0F, 0xF0, 0x20, 0x41, 0x01, + 0x04, 0x02, 0x20, 0x0B, 0xE1, 0xF0, 0x1F, 0xF0, 0x40, 0xC2, 0x02, 0x10, + 0x10, 0x81, 0x84, 0x18, 0x7F, 0x82, 0x02, 0x10, 0x08, 0x80, 0x44, 0x02, + 0x60, 0x22, 0x03, 0x7F, 0xE0, 0x07, 0x91, 0x87, 0x20, 0x34, 0x02, 0x40, + 0x08, 0x00, 0x80, 0x08, 0x00, 0x80, 0x08, 0x00, 0x80, 0x04, 0x04, 0x61, + 0x81, 0xE0, 0x1F, 0xE0, 0x41, 0x82, 0x06, 0x10, 0x11, 0x00, 0x88, 0x04, + 0x40, 0x22, 0x01, 0x10, 0x11, 0x00, 0x88, 0x08, 0x40, 0xC2, 0x0C, 0x7F, + 0x80, 0x1F, 0xFC, 0x20, 0x10, 0x80, 0x82, 0x00, 0x08, 0x00, 0x22, 0x01, + 0xF8, 0x04, 0x20, 0x10, 0x00, 0x40, 0x01, 0x01, 0x0C, 0x04, 0x20, 0x13, + 0xFF, 0xC0, 0x1F, 0xFC, 0x20, 0x10, 0x80, 0x42, 0x01, 0x08, 0x00, 0x22, + 0x01, 0xF8, 0x04, 0x20, 0x10, 0x00, 0x40, 0x01, 0x00, 0x0C, 0x00, 0x20, + 0x03, 0xF8, 0x00, 0x07, 0xD0, 0x83, 0x30, 0x12, 0x00, 0x40, 0x04, 0x00, + 0x80, 0x08, 0x00, 0x83, 0xE8, 0x04, 0x80, 0x4C, 0x04, 0x60, 0x41, 0xF8, + 0x0F, 0x3C, 0x08, 0x10, 0x20, 0x20, 0x40, 0x40, 0x81, 0x01, 0x02, 0x03, + 0xFC, 0x08, 0x08, 0x10, 0x10, 0x20, 0x40, 0x40, 0x80, 0x81, 0x02, 0x02, + 0x1F, 0x1E, 0x00, 0x3F, 0xE0, 0x40, 0x08, 0x01, 0x00, 0x20, 0x08, 0x01, + 0x00, 0x20, 0x04, 0x00, 0x80, 0x20, 0x04, 0x00, 0x81, 0xFF, 0x00, 0x03, + 0xFE, 0x00, 0x20, 0x00, 0x80, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, + 0x00, 0x20, 0x40, 0x40, 0x80, 0x81, 0x01, 0x02, 0x04, 0x06, 0x10, 0x07, + 0xC0, 0x00, 0x1F, 0x1E, 0x10, 0x10, 0x20, 0xC0, 0x43, 0x00, 0x88, 0x01, + 0x20, 0x07, 0xC0, 0x0C, 0x40, 0x10, 0x40, 0x20, 0x80, 0x41, 0x01, 0x81, + 0x02, 0x02, 0x1F, 0x87, 0x00, 0x3F, 0x80, 0x40, 0x04, 0x00, 0x40, 0x08, + 0x00, 0x80, 0x08, 0x00, 0x80, 0x08, 0x01, 0x01, 0x10, 0x11, 0x02, 0x10, + 0x2F, 0xFE, 0x1C, 0x03, 0x85, 0x03, 0x02, 0x82, 0x81, 0x41, 0x40, 0xA1, + 0x20, 0x89, 0x30, 0x44, 0x90, 0x22, 0x88, 0x11, 0x44, 0x08, 0x42, 0x08, + 0x03, 0x04, 0x01, 0x02, 0x00, 0x87, 0xC3, 0xE0, 0x3C, 0x3E, 0x18, 0x08, + 0x38, 0x20, 0x50, 0x41, 0x20, 0x82, 0x61, 0x04, 0x42, 0x08, 0x88, 0x10, + 0x90, 0x41, 0x20, 0x83, 0x41, 0x02, 0x82, 0x06, 0x1F, 0x04, 0x00, 0x03, + 0xC0, 0x61, 0x84, 0x04, 0x40, 0x14, 0x00, 0xA0, 0x06, 0x00, 0x30, 0x01, + 0x80, 0x14, 0x00, 0xA0, 0x08, 0x80, 0x86, 0x18, 0x0F, 0x00, 0x1F, 0xE0, + 0x40, 0x82, 0x02, 0x10, 0x10, 0x80, 0x84, 0x08, 0x40, 0x83, 0xF8, 0x10, + 0x00, 0x80, 0x04, 0x00, 0x60, 0x02, 0x00, 0x7F, 0x00, 0x03, 0xC0, 0x61, + 0x84, 0x04, 0x40, 0x14, 0x00, 0xA0, 0x06, 0x00, 0x30, 0x01, 0x80, 0x14, + 0x00, 0xA0, 0x08, 0x80, 0x86, 0x18, 0x1F, 0x00, 0x40, 0x0F, 0xC4, 0x41, + 0xC0, 0x1F, 0xE0, 0x40, 0x82, 0x02, 0x10, 0x10, 0x80, 0x84, 0x08, 0x60, + 0x83, 0xF8, 0x10, 0xC0, 0x82, 0x04, 0x08, 0x40, 0x42, 0x03, 0x7E, 0x0C, + 0x07, 0xA3, 0x0C, 0x40, 0x90, 0x12, 0x00, 0x40, 0x06, 0x00, 0x3C, 0x00, + 0x40, 0x0A, 0x01, 0x40, 0x4C, 0x11, 0x7C, 0x00, 0xFF, 0xE8, 0x42, 0x84, + 0x20, 0x40, 0x04, 0x00, 0x80, 0x08, 0x00, 0x80, 0x08, 0x00, 0x80, 0x10, + 0x01, 0x00, 0x10, 0x0F, 0xE0, 0xF8, 0xF9, 0x00, 0x88, 0x08, 0x80, 0x44, + 0x02, 0x20, 0x11, 0x01, 0x08, 0x08, 0x80, 0x44, 0x02, 0x20, 0x31, 0x01, + 0x04, 0x30, 0x1E, 0x00, 0xF8, 0x7D, 0x00, 0x42, 0x01, 0x08, 0x08, 0x20, + 0x40, 0x81, 0x02, 0x08, 0x08, 0x20, 0x11, 0x00, 0x48, 0x01, 0x20, 0x05, + 0x00, 0x14, 0x00, 0x60, 0x00, 0xF8, 0x7D, 0x00, 0x44, 0x01, 0x11, 0x84, + 0x46, 0x21, 0x18, 0x84, 0xA2, 0x12, 0x90, 0x91, 0x42, 0x45, 0x0A, 0x14, + 0x28, 0x60, 0xC1, 0x83, 0x06, 0x00, 0x1E, 0x1E, 0x10, 0x10, 0x10, 0x40, + 0x21, 0x00, 0x24, 0x00, 0x78, 0x00, 0x60, 0x01, 0xC0, 0x06, 0x80, 0x09, + 0x80, 0x21, 0x00, 0x81, 0x02, 0x02, 0x1E, 0x1F, 0x00, 0xF0, 0xF4, 0x04, + 0x20, 0x82, 0x18, 0x11, 0x01, 0x20, 0x1C, 0x00, 0x80, 0x08, 0x00, 0x80, + 0x10, 0x01, 0x00, 0x10, 0x0F, 0xE0, 0x0F, 0xF1, 0x01, 0x10, 0x21, 0x04, + 0x00, 0x80, 0x10, 0x02, 0x00, 0x40, 0x0C, 0x01, 0x82, 0x10, 0x22, 0x04, + 0x40, 0x47, 0xFC, 0x0E, 0x20, 0x40, 0x81, 0x02, 0x08, 0x10, 0x20, 0x40, + 0x82, 0x04, 0x08, 0x10, 0x20, 0x81, 0xE0, 0x84, 0x20, 0x84, 0x20, 0x84, + 0x21, 0x04, 0x21, 0x08, 0x21, 0x08, 0x40, 0x1E, 0x04, 0x08, 0x20, 0x40, + 0x81, 0x02, 0x04, 0x10, 0x20, 0x40, 0x81, 0x02, 0x08, 0x11, 0xE0, 0x04, + 0x06, 0x04, 0x84, 0x44, 0x14, 0x0C, 0xFF, 0xFE, 0x99, 0x90, 0x1F, 0xC0, + 0x06, 0x00, 0x20, 0x02, 0x1F, 0xE6, 0x04, 0xC0, 0x48, 0x04, 0x81, 0xC7, + 0xEF, 0x18, 0x00, 0x40, 0x02, 0x00, 0x10, 0x00, 0x80, 0x09, 0xF0, 0x50, + 0xC3, 0x03, 0x10, 0x08, 0x80, 0x48, 0x02, 0x40, 0x23, 0x03, 0x1C, 0x33, + 0xBE, 0x00, 0x0F, 0xD3, 0x07, 0x60, 0x24, 0x02, 0x80, 0x08, 0x00, 0x80, + 0x08, 0x06, 0x41, 0xC3, 0xF0, 0x00, 0x38, 0x00, 0x40, 0x02, 0x00, 0x20, + 0x01, 0x07, 0xC8, 0x43, 0x44, 0x0E, 0x40, 0x24, 0x01, 0x20, 0x09, 0x00, + 0xC8, 0x0E, 0x20, 0xE0, 0xF9, 0xC0, 0x0F, 0x86, 0x09, 0x00, 0xA0, 0x1F, + 0xFF, 0x00, 0x20, 0x06, 0x00, 0x60, 0xC7, 0xE0, 0x01, 0xF8, 0x10, 0x01, + 0x00, 0x08, 0x00, 0x40, 0x1F, 0xF0, 0x20, 0x01, 0x00, 0x08, 0x00, 0x40, + 0x04, 0x00, 0x20, 0x01, 0x00, 0x08, 0x03, 0xFE, 0x00, 0x0F, 0x31, 0x86, + 0x10, 0x10, 0x80, 0x88, 0x04, 0x40, 0x22, 0x02, 0x10, 0x10, 0x43, 0x81, + 0xE4, 0x00, 0x40, 0x02, 0x00, 0x20, 0x3E, 0x00, 0x1C, 0x00, 0x20, 0x03, + 0x00, 0x10, 0x00, 0x80, 0x05, 0xF0, 0x30, 0xC3, 0x02, 0x10, 0x10, 0x80, + 0x84, 0x0C, 0x20, 0x63, 0x02, 0x10, 0x13, 0xE3, 0xE0, 0x01, 0x80, 0x40, + 0x10, 0x00, 0x00, 0x07, 0xC0, 0x20, 0x08, 0x02, 0x00, 0x80, 0x20, 0x10, + 0x04, 0x01, 0x0F, 0xFC, 0x00, 0x40, 0x10, 0x0C, 0x00, 0x00, 0x07, 0xF0, + 0x04, 0x01, 0x00, 0x40, 0x20, 0x08, 0x02, 0x00, 0x80, 0x20, 0x10, 0x04, + 0x01, 0x00, 0x8F, 0xC0, 0x18, 0x00, 0x80, 0x08, 0x00, 0x80, 0x08, 0x01, + 0x1F, 0x10, 0x81, 0x30, 0x14, 0x01, 0xC0, 0x26, 0x02, 0x20, 0x21, 0x02, + 0x08, 0xE1, 0xE0, 0x0F, 0x80, 0x40, 0x10, 0x04, 0x01, 0x00, 0x40, 0x20, + 0x08, 0x02, 0x00, 0x80, 0x20, 0x10, 0x04, 0x01, 0x0F, 0xFC, 0x3B, 0xB8, + 0x33, 0x91, 0x08, 0x44, 0x21, 0x10, 0x84, 0x42, 0x12, 0x10, 0x48, 0x42, + 0x21, 0x0B, 0xC6, 0x30, 0x19, 0xE0, 0xE3, 0x08, 0x11, 0x01, 0x10, 0x11, + 0x02, 0x10, 0x21, 0x02, 0x20, 0x2F, 0x87, 0x0F, 0x86, 0x19, 0x80, 0xA0, + 0x18, 0x03, 0x00, 0x60, 0x14, 0x06, 0x61, 0x87, 0xC0, 0x19, 0xF0, 0x28, + 0x20, 0xC0, 0x42, 0x01, 0x10, 0x04, 0x40, 0x11, 0x00, 0x86, 0x06, 0x14, + 0x30, 0xCF, 0x02, 0x00, 0x08, 0x00, 0x20, 0x03, 0xF0, 0x00, 0x0F, 0x39, + 0x85, 0x18, 0x18, 0x80, 0x88, 0x04, 0x40, 0x22, 0x01, 0x18, 0x18, 0x63, + 0x81, 0xE4, 0x00, 0x20, 0x01, 0x00, 0x10, 0x07, 0xE0, 0x1C, 0x78, 0x2C, + 0x01, 0x80, 0x18, 0x00, 0x80, 0x04, 0x00, 0x20, 0x02, 0x00, 0x10, 0x07, + 0xFC, 0x00, 0x0F, 0x44, 0x32, 0x04, 0x80, 0x1E, 0x00, 0x60, 0x0A, 0x02, + 0xC1, 0x2F, 0x80, 0x10, 0x08, 0x04, 0x02, 0x0F, 0xF9, 0x00, 0x80, 0x40, + 0x20, 0x20, 0x10, 0x08, 0x04, 0x19, 0xF0, 0xE0, 0xF2, 0x02, 0x40, 0x24, + 0x02, 0x40, 0x24, 0x06, 0x40, 0x44, 0x04, 0x41, 0xC3, 0xE6, 0xF8, 0xFA, + 0x01, 0x08, 0x10, 0x41, 0x02, 0x08, 0x10, 0x80, 0x48, 0x02, 0x40, 0x14, + 0x00, 0xC0, 0x00, 0xE0, 0x7A, 0x01, 0x10, 0x08, 0x8C, 0x84, 0xA4, 0x25, + 0x21, 0x4A, 0x0A, 0x50, 0x63, 0x02, 0x18, 0x00, 0x1E, 0x3C, 0x20, 0x40, + 0x46, 0x00, 0xB0, 0x03, 0x00, 0x0E, 0x00, 0xC8, 0x06, 0x10, 0x20, 0x23, + 0xE3, 0xC0, 0x3C, 0x3C, 0x40, 0x20, 0x81, 0x02, 0x08, 0x08, 0x20, 0x31, + 0x00, 0x48, 0x01, 0x40, 0x05, 0x00, 0x08, 0x00, 0x40, 0x02, 0x00, 0x08, + 0x03, 0xF0, 0x00, 0x3F, 0xC4, 0x18, 0x06, 0x01, 0x80, 0x60, 0x10, 0x04, + 0x01, 0x00, 0x40, 0x9F, 0xF0, 0x06, 0x10, 0x20, 0x41, 0x02, 0x04, 0x08, + 0x21, 0x80, 0x81, 0x02, 0x08, 0x10, 0x20, 0x40, 0xC0, 0x01, 0x11, 0x12, + 0x22, 0x24, 0x44, 0x44, 0x88, 0x80, 0x0C, 0x08, 0x10, 0x20, 0x40, 0x82, + 0x04, 0x08, 0x0C, 0x20, 0x81, 0x02, 0x04, 0x08, 0x21, 0x80, 0x38, 0x28, + 0x88, 0x0E, 0x00}; + +const GFXglyph FreeMonoOblique12pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 14, 0, 1}, // 0x20 ' ' + {0, 4, 15, 14, 6, -14}, // 0x21 '!' + {8, 8, 7, 14, 5, -14}, // 0x22 '"' + {15, 11, 16, 14, 3, -14}, // 0x23 '#' + {37, 10, 18, 14, 4, -15}, // 0x24 '$' + {60, 11, 15, 14, 3, -14}, // 0x25 '%' + {81, 9, 12, 14, 3, -11}, // 0x26 '&' + {95, 3, 7, 14, 8, -14}, // 0x27 ''' + {98, 5, 18, 14, 8, -14}, // 0x28 '(' + {110, 5, 18, 14, 4, -14}, // 0x29 ')' + {122, 9, 9, 14, 5, -14}, // 0x2A '*' + {133, 11, 11, 14, 3, -11}, // 0x2B '+' + {149, 6, 7, 14, 3, -3}, // 0x2C ',' + {155, 11, 1, 14, 3, -6}, // 0x2D '-' + {157, 3, 3, 14, 6, -2}, // 0x2E '.' + {159, 13, 18, 14, 2, -15}, // 0x2F '/' + {189, 10, 15, 14, 4, -14}, // 0x30 '0' + {208, 9, 15, 14, 3, -14}, // 0x31 '1' + {225, 12, 15, 14, 2, -14}, // 0x32 '2' + {248, 11, 15, 14, 3, -14}, // 0x33 '3' + {269, 10, 15, 14, 3, -14}, // 0x34 '4' + {288, 11, 15, 14, 3, -14}, // 0x35 '5' + {309, 11, 15, 14, 4, -14}, // 0x36 '6' + {330, 10, 15, 14, 5, -14}, // 0x37 '7' + {349, 11, 15, 14, 3, -14}, // 0x38 '8' + {370, 11, 15, 14, 3, -14}, // 0x39 '9' + {391, 5, 10, 14, 5, -9}, // 0x3A ':' + {398, 7, 13, 14, 3, -9}, // 0x3B ';' + {410, 12, 11, 14, 3, -11}, // 0x3C '<' + {427, 13, 4, 14, 2, -8}, // 0x3D '=' + {434, 12, 11, 14, 2, -11}, // 0x3E '>' + {451, 8, 14, 14, 6, -13}, // 0x3F '?' + {465, 10, 16, 14, 3, -14}, // 0x40 '@' + {485, 14, 14, 14, 0, -13}, // 0x41 'A' + {510, 13, 14, 14, 1, -13}, // 0x42 'B' + {533, 12, 14, 14, 3, -13}, // 0x43 'C' + {554, 13, 14, 14, 1, -13}, // 0x44 'D' + {577, 14, 14, 14, 1, -13}, // 0x45 'E' + {602, 14, 14, 14, 1, -13}, // 0x46 'F' + {627, 12, 14, 14, 3, -13}, // 0x47 'G' + {648, 15, 14, 14, 1, -13}, // 0x48 'H' + {675, 11, 14, 14, 3, -13}, // 0x49 'I' + {695, 15, 14, 14, 2, -13}, // 0x4A 'J' + {722, 15, 14, 14, 1, -13}, // 0x4B 'K' + {749, 12, 14, 14, 2, -13}, // 0x4C 'L' + {770, 17, 14, 14, 0, -13}, // 0x4D 'M' + {800, 15, 14, 14, 1, -13}, // 0x4E 'N' + {827, 13, 14, 14, 2, -13}, // 0x4F 'O' + {850, 13, 14, 14, 1, -13}, // 0x50 'P' + {873, 13, 17, 14, 2, -13}, // 0x51 'Q' + {901, 13, 14, 14, 1, -13}, // 0x52 'R' + {924, 11, 14, 14, 3, -13}, // 0x53 'S' + {944, 12, 14, 14, 4, -13}, // 0x54 'T' + {965, 13, 14, 14, 3, -13}, // 0x55 'U' + {988, 14, 14, 14, 3, -13}, // 0x56 'V' + {1013, 14, 14, 14, 3, -13}, // 0x57 'W' + {1038, 15, 14, 14, 1, -13}, // 0x58 'X' + {1065, 12, 14, 14, 4, -13}, // 0x59 'Y' + {1086, 12, 14, 14, 2, -13}, // 0x5A 'Z' + {1107, 7, 18, 14, 6, -14}, // 0x5B '[' + {1123, 5, 18, 14, 6, -15}, // 0x5C '\' + {1135, 7, 18, 14, 3, -14}, // 0x5D ']' + {1151, 9, 6, 14, 5, -14}, // 0x5E '^' + {1158, 15, 1, 14, -1, 3}, // 0x5F '_' + {1160, 3, 4, 14, 6, -15}, // 0x60 '`' + {1162, 12, 10, 14, 2, -9}, // 0x61 'a' + {1177, 13, 15, 14, 1, -14}, // 0x62 'b' + {1202, 12, 10, 14, 3, -9}, // 0x63 'c' + {1217, 13, 15, 14, 2, -14}, // 0x64 'd' + {1242, 11, 10, 14, 3, -9}, // 0x65 'e' + {1256, 13, 15, 14, 3, -14}, // 0x66 'f' + {1281, 13, 14, 14, 3, -9}, // 0x67 'g' + {1304, 13, 15, 14, 1, -14}, // 0x68 'h' + {1329, 10, 15, 14, 2, -14}, // 0x69 'i' + {1348, 10, 19, 14, 2, -14}, // 0x6A 'j' + {1372, 12, 15, 14, 2, -14}, // 0x6B 'k' + {1395, 10, 15, 14, 2, -14}, // 0x6C 'l' + {1414, 14, 10, 14, 0, -9}, // 0x6D 'm' + {1432, 12, 10, 14, 1, -9}, // 0x6E 'n' + {1447, 11, 10, 14, 3, -9}, // 0x6F 'o' + {1461, 14, 14, 14, 0, -9}, // 0x70 'p' + {1486, 13, 14, 14, 3, -9}, // 0x71 'q' + {1509, 13, 10, 14, 2, -9}, // 0x72 'r' + {1526, 10, 10, 14, 3, -9}, // 0x73 's' + {1539, 9, 14, 14, 3, -13}, // 0x74 't' + {1555, 12, 10, 14, 2, -9}, // 0x75 'u' + {1570, 13, 10, 14, 3, -9}, // 0x76 'v' + {1587, 13, 10, 14, 3, -9}, // 0x77 'w' + {1604, 14, 10, 14, 1, -9}, // 0x78 'x' + {1622, 14, 14, 14, 1, -9}, // 0x79 'y' + {1647, 11, 10, 14, 3, -9}, // 0x7A 'z' + {1661, 7, 18, 14, 5, -14}, // 0x7B '{' + {1677, 4, 17, 14, 6, -13}, // 0x7C '|' + {1686, 7, 18, 14, 4, -14}, // 0x7D '}' + {1702, 11, 3, 14, 3, -7}}; // 0x7E '~' + +const GFXfont FreeMonoOblique12pt7b PROGMEM = { + (uint8_t *)FreeMonoOblique12pt7bBitmaps, + (GFXglyph *)FreeMonoOblique12pt7bGlyphs, 0x20, 0x7E, 24}; + +// Approx. 2379 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoOblique18pt7b.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoOblique18pt7b.h new file mode 100644 index 0000000..c12ae08 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoOblique18pt7b.h @@ -0,0 +1,400 @@ +#pragma once +#include + +const uint8_t FreeMonoOblique18pt7bBitmaps[] PROGMEM = { + 0x00, 0x1C, 0x38, 0x70, 0xC1, 0x83, 0x06, 0x18, 0x30, 0x60, 0xC1, 0x02, + 0x04, 0x00, 0x00, 0x01, 0xC7, 0x8F, 0x1C, 0x00, 0x78, 0x7B, 0xC3, 0xFC, + 0x3D, 0xE1, 0xEF, 0x0F, 0x70, 0x73, 0x83, 0x98, 0x18, 0xC0, 0xC6, 0x06, + 0x00, 0x00, 0x8C, 0x01, 0x18, 0x06, 0x20, 0x08, 0x40, 0x11, 0x80, 0x62, + 0x00, 0xC4, 0x01, 0x18, 0x02, 0x30, 0x7F, 0xFC, 0x10, 0x80, 0x23, 0x00, + 0xC4, 0x01, 0x88, 0x3F, 0xFF, 0x04, 0x60, 0x18, 0x80, 0x21, 0x00, 0x46, + 0x01, 0x88, 0x03, 0x10, 0x04, 0x60, 0x08, 0xC0, 0x31, 0x00, 0x00, 0x30, + 0x00, 0x20, 0x00, 0x20, 0x00, 0xF9, 0x03, 0x0F, 0x06, 0x03, 0x04, 0x03, + 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x04, 0x00, 0x03, 0xC0, 0x00, 0x78, + 0x00, 0x0C, 0x00, 0x04, 0x00, 0x04, 0x40, 0x04, 0x40, 0x08, 0x40, 0x18, + 0xF0, 0x60, 0x9F, 0x80, 0x02, 0x00, 0x06, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x04, 0x00, 0x03, 0xC0, 0x0C, 0x60, 0x08, 0x20, 0x10, 0x20, 0x10, 0x20, + 0x10, 0x40, 0x18, 0x80, 0x0F, 0x00, 0x00, 0x0F, 0x00, 0x78, 0x07, 0xC0, + 0x3C, 0x00, 0xE0, 0x00, 0x01, 0xE0, 0x02, 0x18, 0x04, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x10, 0x0C, 0x20, 0x07, 0xC0, 0x01, 0xF0, 0x11, 0x81, + 0x00, 0x10, 0x00, 0x80, 0x04, 0x00, 0x20, 0x01, 0x80, 0x04, 0x00, 0xF0, + 0x09, 0x86, 0x84, 0x48, 0x32, 0x40, 0xA2, 0x07, 0x10, 0x30, 0x43, 0x81, + 0xE7, 0x80, 0x7B, 0xFD, 0xEF, 0x73, 0x98, 0xC6, 0x00, 0x01, 0x02, 0x06, + 0x0C, 0x0C, 0x18, 0x10, 0x30, 0x30, 0x60, 0x60, 0x60, 0xC0, 0xC0, 0xC0, + 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x40, 0x60, 0x60, 0x20, 0x04, 0x06, + 0x06, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x06, + 0x06, 0x06, 0x0C, 0x0C, 0x0C, 0x18, 0x10, 0x30, 0x60, 0x40, 0xC0, 0x01, + 0x00, 0x04, 0x00, 0x10, 0x00, 0xC6, 0xE3, 0xF8, 0x7E, 0x00, 0x70, 0x03, + 0x40, 0x19, 0x80, 0xC2, 0x06, 0x0C, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x02, + 0x00, 0x04, 0x00, 0x08, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0xFF, 0xFE, + 0x02, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0x02, + 0x00, 0x04, 0x00, 0x0F, 0x87, 0x87, 0x83, 0x83, 0xC1, 0xC1, 0xC0, 0xC0, + 0xE0, 0x60, 0x00, 0xFF, 0xFF, 0x77, 0xFF, 0xF7, 0x00, 0x00, 0x00, 0x60, + 0x00, 0x08, 0x00, 0x02, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x04, 0x00, + 0x01, 0x80, 0x00, 0x60, 0x00, 0x08, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, + 0x10, 0x00, 0x06, 0x00, 0x01, 0x80, 0x00, 0x20, 0x00, 0x0C, 0x00, 0x03, + 0x00, 0x00, 0x40, 0x00, 0x18, 0x00, 0x06, 0x00, 0x00, 0x80, 0x00, 0x20, + 0x00, 0x0C, 0x00, 0x03, 0x00, 0x00, 0x40, 0x00, 0x08, 0x00, 0x00, 0x01, + 0xF0, 0x18, 0x60, 0x80, 0x86, 0x01, 0x10, 0x04, 0x80, 0x12, 0x00, 0x50, + 0x01, 0x40, 0x0D, 0x00, 0x24, 0x00, 0xA0, 0x02, 0x80, 0x1A, 0x00, 0x48, + 0x01, 0x20, 0x0C, 0x80, 0x22, 0x01, 0x84, 0x0C, 0x18, 0x60, 0x3E, 0x00, + 0x00, 0x60, 0x07, 0x00, 0x68, 0x06, 0x40, 0xE4, 0x04, 0x20, 0x01, 0x00, + 0x08, 0x00, 0x40, 0x04, 0x00, 0x20, 0x01, 0x00, 0x08, 0x00, 0x80, 0x04, + 0x00, 0x20, 0x01, 0x00, 0x08, 0x00, 0x80, 0x04, 0x0F, 0xFF, 0x80, 0x00, + 0x3C, 0x00, 0x61, 0x80, 0x40, 0x40, 0x40, 0x10, 0x60, 0x08, 0x00, 0x04, + 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x07, 0x00, 0x07, + 0x00, 0x06, 0x00, 0x06, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0C, 0x00, 0x0C, + 0x00, 0x1C, 0x01, 0x1C, 0x00, 0x8F, 0xFF, 0xC0, 0x00, 0xFC, 0x03, 0x06, + 0x06, 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, + 0x00, 0x0C, 0x00, 0xF0, 0x00, 0x18, 0x00, 0x04, 0x00, 0x02, 0x00, 0x02, + 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x04, 0x40, 0x18, 0x70, 0x30, + 0x0F, 0xC0, 0x00, 0x1C, 0x00, 0xD0, 0x06, 0x80, 0x32, 0x00, 0x88, 0x04, + 0x20, 0x30, 0x81, 0x84, 0x04, 0x10, 0x20, 0x41, 0x81, 0x0C, 0x08, 0x60, + 0x21, 0x00, 0x8F, 0xFF, 0x80, 0x18, 0x00, 0x40, 0x01, 0x00, 0x04, 0x00, + 0x10, 0x07, 0xE0, 0x03, 0xFF, 0x03, 0x00, 0x01, 0x80, 0x00, 0x80, 0x00, + 0x40, 0x00, 0x20, 0x00, 0x30, 0x00, 0x1B, 0xE0, 0x0E, 0x0C, 0x00, 0x02, + 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, + 0x08, 0x00, 0x04, 0x60, 0x04, 0x18, 0x04, 0x06, 0x0C, 0x00, 0xF8, 0x00, + 0x00, 0x3F, 0x00, 0xC0, 0x03, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, + 0x30, 0x00, 0x20, 0x00, 0x40, 0x00, 0x43, 0xE0, 0x4C, 0x30, 0xB0, 0x18, + 0xE0, 0x08, 0xC0, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x10, 0xC0, 0x10, + 0x40, 0x20, 0x20, 0xC0, 0x1F, 0x00, 0xFF, 0xFC, 0x00, 0xE0, 0x04, 0x00, + 0x60, 0x02, 0x00, 0x30, 0x01, 0x00, 0x18, 0x00, 0x80, 0x0C, 0x00, 0x40, + 0x06, 0x00, 0x20, 0x03, 0x00, 0x10, 0x01, 0x80, 0x08, 0x00, 0xC0, 0x04, + 0x00, 0x60, 0x02, 0x00, 0x00, 0x00, 0xF0, 0x06, 0x18, 0x10, 0x18, 0x40, + 0x11, 0x00, 0x22, 0x00, 0x44, 0x00, 0x88, 0x02, 0x18, 0x08, 0x18, 0x60, + 0x1F, 0x80, 0xC1, 0x82, 0x01, 0x88, 0x01, 0x20, 0x02, 0x40, 0x04, 0x80, + 0x09, 0x00, 0x23, 0x00, 0x83, 0x06, 0x01, 0xF0, 0x00, 0x00, 0xF0, 0x06, + 0x18, 0x10, 0x10, 0x40, 0x30, 0x80, 0x22, 0x00, 0x44, 0x00, 0x88, 0x03, + 0x10, 0x0E, 0x30, 0x34, 0x30, 0xD0, 0x3E, 0x20, 0x00, 0x40, 0x01, 0x00, + 0x02, 0x00, 0x08, 0x00, 0x20, 0x00, 0xC0, 0x02, 0x00, 0x18, 0x0F, 0xC0, + 0x00, 0x1C, 0x7C, 0xF9, 0xF1, 0xC0, 0x00, 0x00, 0x00, 0x01, 0xC7, 0xCF, + 0x9F, 0x1C, 0x00, 0x01, 0xC0, 0x7C, 0x0F, 0x81, 0xF0, 0x1C, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x07, 0x81, 0xE0, 0x3C, 0x0F, 0x01, + 0xC0, 0x70, 0x0E, 0x03, 0x80, 0x60, 0x00, 0x00, 0x01, 0x80, 0x03, 0x80, + 0x07, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x00, + 0xE0, 0x00, 0x1C, 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x07, + 0x00, 0x00, 0xE0, 0x00, 0x38, 0x7F, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x18, 0x00, 0x03, 0x80, + 0x00, 0x38, 0x00, 0x07, 0x00, 0x00, 0x70, 0x00, 0x0E, 0x00, 0x00, 0xE0, + 0x00, 0x0E, 0x00, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, + 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x00, 0x1F, 0xCE, 0x06, 0x80, + 0x38, 0x01, 0x80, 0x10, 0x01, 0x00, 0x20, 0x04, 0x01, 0x80, 0xF0, 0x18, + 0x01, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0F, 0x80, 0xF8, + 0x07, 0x00, 0x01, 0xF0, 0x0C, 0x30, 0x30, 0x30, 0x40, 0x21, 0x00, 0x44, + 0x00, 0x88, 0x01, 0x10, 0x1E, 0x40, 0xC4, 0x86, 0x11, 0x08, 0x22, 0x20, + 0x48, 0x40, 0x90, 0x82, 0x21, 0x84, 0x40, 0xFC, 0x80, 0x01, 0x00, 0x02, + 0x00, 0x04, 0x00, 0x04, 0x00, 0x0C, 0x18, 0x07, 0xC0, 0x00, 0x01, 0xFE, + 0x00, 0x00, 0x68, 0x00, 0x06, 0x40, 0x00, 0x32, 0x00, 0x03, 0x10, 0x00, + 0x10, 0x80, 0x01, 0x84, 0x00, 0x18, 0x10, 0x00, 0xC0, 0x80, 0x0C, 0x04, + 0x00, 0x60, 0x20, 0x06, 0x01, 0x00, 0x3F, 0xFC, 0x02, 0x00, 0x20, 0x10, + 0x01, 0x01, 0x00, 0x08, 0x08, 0x00, 0x40, 0x80, 0x02, 0x0C, 0x00, 0x09, + 0xFC, 0x07, 0xF0, 0x0F, 0xFF, 0x00, 0x40, 0x60, 0x20, 0x0C, 0x08, 0x01, + 0x02, 0x00, 0x40, 0x80, 0x10, 0x40, 0x08, 0x10, 0x06, 0x04, 0x03, 0x01, + 0xFF, 0x80, 0x40, 0x38, 0x20, 0x02, 0x08, 0x00, 0x42, 0x00, 0x10, 0x80, + 0x04, 0x40, 0x01, 0x10, 0x00, 0x84, 0x00, 0x41, 0x00, 0x23, 0xFF, 0xF0, + 0x00, 0xFC, 0x40, 0xC1, 0xF0, 0xC0, 0x1C, 0x60, 0x06, 0x10, 0x00, 0x88, + 0x00, 0x24, 0x00, 0x01, 0x00, 0x00, 0x40, 0x00, 0x30, 0x00, 0x08, 0x00, + 0x02, 0x00, 0x00, 0x80, 0x00, 0x20, 0x00, 0x08, 0x00, 0x03, 0x00, 0x00, + 0x40, 0x06, 0x08, 0x03, 0x01, 0x83, 0x80, 0x3F, 0x00, 0x0F, 0xFE, 0x00, + 0x80, 0xC0, 0x20, 0x18, 0x10, 0x02, 0x04, 0x00, 0x41, 0x00, 0x10, 0x40, + 0x04, 0x20, 0x01, 0x08, 0x00, 0x42, 0x00, 0x10, 0x80, 0x08, 0x20, 0x02, + 0x10, 0x00, 0x84, 0x00, 0x21, 0x00, 0x10, 0x40, 0x08, 0x20, 0x06, 0x08, + 0x03, 0x02, 0x01, 0x83, 0xFF, 0x80, 0x0F, 0xFF, 0xE0, 0x10, 0x02, 0x02, + 0x00, 0x60, 0x20, 0x06, 0x02, 0x00, 0x60, 0x20, 0x00, 0x04, 0x00, 0x00, + 0x40, 0x80, 0x04, 0x10, 0x00, 0x7F, 0x00, 0x04, 0x10, 0x00, 0x81, 0x00, + 0x08, 0x00, 0x00, 0x80, 0x00, 0x08, 0x00, 0x81, 0x00, 0x08, 0x10, 0x00, + 0x81, 0x00, 0x18, 0x10, 0x01, 0x8F, 0xFF, 0xF0, 0x0F, 0xFF, 0xF0, 0x10, + 0x03, 0x02, 0x00, 0x30, 0x20, 0x03, 0x02, 0x00, 0x20, 0x20, 0x00, 0x04, + 0x00, 0x00, 0x40, 0x80, 0x04, 0x10, 0x00, 0x7F, 0x00, 0x04, 0x10, 0x00, + 0x81, 0x00, 0x08, 0x00, 0x00, 0x80, 0x00, 0x08, 0x00, 0x01, 0x00, 0x00, + 0x10, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0xFE, + 0x40, 0xC0, 0xF0, 0x40, 0x1C, 0x20, 0x03, 0x10, 0x00, 0x88, 0x00, 0x02, + 0x00, 0x01, 0x00, 0x00, 0x40, 0x00, 0x10, 0x00, 0x08, 0x00, 0x02, 0x01, + 0xFE, 0x80, 0x02, 0x20, 0x00, 0x88, 0x00, 0x22, 0x00, 0x08, 0x40, 0x04, + 0x18, 0x01, 0x03, 0x81, 0xC0, 0x3F, 0x80, 0x07, 0xE1, 0xF8, 0x08, 0x02, + 0x00, 0x80, 0x10, 0x04, 0x00, 0x80, 0x20, 0x04, 0x01, 0x00, 0x20, 0x18, + 0x02, 0x00, 0x80, 0x10, 0x04, 0x00, 0x80, 0x3F, 0xFC, 0x01, 0x00, 0x60, + 0x10, 0x02, 0x00, 0x80, 0x10, 0x04, 0x00, 0x80, 0x20, 0x04, 0x02, 0x00, + 0x40, 0x10, 0x02, 0x00, 0x80, 0x10, 0x04, 0x00, 0x81, 0xF8, 0x3F, 0x00, + 0x0F, 0xFF, 0x80, 0x10, 0x00, 0x08, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, + 0x00, 0x01, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, + 0x10, 0x00, 0x08, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x80, 0x1F, 0xFF, 0x00, 0x00, 0xFF, 0xF0, 0x00, 0x20, + 0x00, 0x02, 0x00, 0x00, 0x20, 0x00, 0x02, 0x00, 0x00, 0x20, 0x00, 0x04, + 0x00, 0x00, 0x40, 0x00, 0x04, 0x00, 0x00, 0x40, 0x00, 0x0C, 0x04, 0x00, + 0x80, 0x40, 0x08, 0x08, 0x00, 0x80, 0x80, 0x08, 0x08, 0x01, 0x00, 0x80, + 0x10, 0x0C, 0x02, 0x00, 0x60, 0xC0, 0x01, 0xF0, 0x00, 0x0F, 0xE1, 0xF8, + 0x08, 0x03, 0x00, 0x80, 0x60, 0x04, 0x06, 0x00, 0x20, 0x60, 0x01, 0x06, + 0x00, 0x10, 0xC0, 0x00, 0x8C, 0x00, 0x04, 0xC0, 0x00, 0x2F, 0x80, 0x01, + 0x8E, 0x00, 0x18, 0x30, 0x00, 0x80, 0xC0, 0x04, 0x06, 0x00, 0x20, 0x10, + 0x02, 0x00, 0xC0, 0x10, 0x06, 0x00, 0x80, 0x30, 0x04, 0x00, 0x81, 0xFC, + 0x07, 0x80, 0x07, 0xFC, 0x00, 0x10, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00, + 0x80, 0x00, 0x20, 0x00, 0x08, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x40, + 0x00, 0x10, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00, 0x80, 0x10, 0x20, 0x04, + 0x08, 0x01, 0x04, 0x00, 0x81, 0x00, 0x20, 0x40, 0x0B, 0xFF, 0xFE, 0x0F, + 0x00, 0x1E, 0x03, 0x00, 0x38, 0x05, 0x00, 0x68, 0x04, 0x80, 0x68, 0x04, + 0x80, 0xC8, 0x04, 0x80, 0x90, 0x04, 0x81, 0x90, 0x08, 0x43, 0x10, 0x08, + 0x42, 0x10, 0x08, 0x46, 0x10, 0x08, 0x4C, 0x20, 0x10, 0x2C, 0x20, 0x10, + 0x38, 0x20, 0x10, 0x30, 0x20, 0x10, 0x00, 0x40, 0x10, 0x00, 0x40, 0x20, + 0x00, 0x40, 0x20, 0x00, 0x40, 0x20, 0x00, 0x40, 0xFC, 0x07, 0xE0, 0x1F, + 0x01, 0xFC, 0x0C, 0x00, 0x80, 0x78, 0x02, 0x01, 0xE0, 0x18, 0x04, 0x80, + 0x60, 0x13, 0x01, 0x00, 0x4C, 0x04, 0x03, 0x18, 0x10, 0x0C, 0x60, 0xC0, + 0x20, 0x83, 0x00, 0x83, 0x08, 0x06, 0x0C, 0x20, 0x18, 0x18, 0x80, 0x40, + 0x66, 0x01, 0x00, 0x98, 0x04, 0x03, 0x40, 0x30, 0x0D, 0x00, 0xC0, 0x14, + 0x02, 0x00, 0x70, 0x3F, 0x80, 0xC0, 0x00, 0xF8, 0x01, 0x83, 0x01, 0x00, + 0xC1, 0x00, 0x21, 0x00, 0x19, 0x00, 0x04, 0x80, 0x02, 0x80, 0x01, 0x40, + 0x00, 0xC0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x28, 0x00, 0x14, 0x00, 0x12, + 0x00, 0x09, 0x80, 0x08, 0x40, 0x08, 0x30, 0x08, 0x0C, 0x18, 0x01, 0xF0, + 0x00, 0x0F, 0xFE, 0x00, 0x40, 0x60, 0x20, 0x0C, 0x08, 0x01, 0x02, 0x00, + 0x40, 0x80, 0x10, 0x40, 0x04, 0x10, 0x02, 0x04, 0x01, 0x01, 0x01, 0x80, + 0x7F, 0x80, 0x20, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00, 0x80, 0x00, 0x40, + 0x00, 0x10, 0x00, 0x04, 0x00, 0x01, 0x00, 0x03, 0xFE, 0x00, 0x00, 0xF8, + 0x01, 0x83, 0x01, 0x00, 0xC1, 0x00, 0x21, 0x00, 0x19, 0x00, 0x05, 0x00, + 0x02, 0x80, 0x01, 0x40, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x28, + 0x00, 0x14, 0x00, 0x12, 0x00, 0x09, 0x80, 0x08, 0x40, 0x08, 0x30, 0x08, + 0x0C, 0x18, 0x03, 0xF0, 0x00, 0xC0, 0x01, 0xC0, 0x01, 0xFE, 0x18, 0xC0, + 0xF0, 0x0F, 0xFE, 0x00, 0x40, 0x60, 0x20, 0x0C, 0x08, 0x01, 0x02, 0x00, + 0x40, 0x80, 0x10, 0x40, 0x04, 0x10, 0x02, 0x04, 0x01, 0x01, 0x01, 0x80, + 0x7F, 0x80, 0x20, 0x60, 0x08, 0x0C, 0x02, 0x03, 0x80, 0x80, 0x60, 0x40, + 0x18, 0x10, 0x03, 0x04, 0x00, 0xC1, 0x00, 0x1B, 0xF8, 0x07, 0x00, 0x7E, + 0x40, 0x60, 0xF0, 0x20, 0x1C, 0x10, 0x02, 0x08, 0x00, 0x82, 0x00, 0x00, + 0x80, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xC0, 0x00, + 0x18, 0x00, 0x01, 0x00, 0x00, 0x44, 0x00, 0x11, 0x00, 0x04, 0x40, 0x02, + 0x38, 0x01, 0x0B, 0x81, 0x82, 0x3F, 0x80, 0x3F, 0xFF, 0xA0, 0x20, 0x50, + 0x10, 0x28, 0x08, 0x24, 0x08, 0x10, 0x04, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, 0x10, 0x00, 0x10, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x1F, + 0xFC, 0x00, 0x7E, 0x0F, 0xC4, 0x00, 0x42, 0x00, 0x10, 0x80, 0x08, 0x20, + 0x02, 0x08, 0x00, 0x82, 0x00, 0x21, 0x00, 0x08, 0x40, 0x04, 0x10, 0x01, + 0x04, 0x00, 0x41, 0x00, 0x10, 0x80, 0x0C, 0x20, 0x02, 0x08, 0x00, 0x82, + 0x00, 0x60, 0x80, 0x10, 0x10, 0x08, 0x06, 0x0C, 0x00, 0x7C, 0x00, 0xFE, + 0x03, 0xF9, 0x80, 0x02, 0x0C, 0x00, 0x30, 0x20, 0x01, 0x01, 0x00, 0x10, + 0x08, 0x01, 0x80, 0x60, 0x08, 0x03, 0x00, 0xC0, 0x18, 0x04, 0x00, 0x40, + 0x60, 0x02, 0x06, 0x00, 0x10, 0x20, 0x00, 0xC3, 0x00, 0x06, 0x10, 0x00, + 0x31, 0x80, 0x00, 0x88, 0x00, 0x04, 0x80, 0x00, 0x2C, 0x00, 0x01, 0xC0, + 0x00, 0x0E, 0x00, 0x00, 0x7F, 0x07, 0xF2, 0x00, 0x04, 0x20, 0x00, 0xC2, + 0x00, 0x08, 0x20, 0xC0, 0x82, 0x0C, 0x18, 0x21, 0xA1, 0x02, 0x1A, 0x10, + 0x23, 0x23, 0x04, 0x32, 0x30, 0x46, 0x22, 0x04, 0x62, 0x60, 0x4C, 0x26, + 0x04, 0xC2, 0x40, 0x58, 0x24, 0x05, 0x82, 0xC0, 0x70, 0x28, 0x07, 0x02, + 0x80, 0xE0, 0x38, 0x0E, 0x03, 0x00, 0x0F, 0xC1, 0xF8, 0x30, 0x03, 0x00, + 0xC0, 0x30, 0x06, 0x03, 0x00, 0x18, 0x10, 0x00, 0xC1, 0x00, 0x03, 0x18, + 0x00, 0x09, 0x80, 0x00, 0x78, 0x00, 0x01, 0x80, 0x00, 0x1C, 0x00, 0x01, + 0xA0, 0x00, 0x19, 0x80, 0x01, 0x84, 0x00, 0x18, 0x30, 0x01, 0x80, 0xC0, + 0x08, 0x06, 0x00, 0x80, 0x18, 0x08, 0x00, 0xC1, 0xF8, 0x3F, 0x80, 0x7E, + 0x0F, 0xC4, 0x00, 0xC1, 0x80, 0x60, 0x20, 0x30, 0x0C, 0x08, 0x03, 0x04, + 0x00, 0x43, 0x00, 0x19, 0x80, 0x02, 0xC0, 0x00, 0xE0, 0x00, 0x10, 0x00, + 0x04, 0x00, 0x01, 0x00, 0x00, 0x80, 0x00, 0x20, 0x00, 0x08, 0x00, 0x02, + 0x00, 0x01, 0x00, 0x00, 0x40, 0x03, 0xFF, 0x80, 0x0F, 0xFF, 0x86, 0x00, + 0x82, 0x00, 0x81, 0x00, 0xC1, 0x80, 0xC0, 0xC0, 0xC0, 0x00, 0xC0, 0x00, + 0xC0, 0x00, 0x40, 0x00, 0x40, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x60, 0x10, 0x60, 0x18, 0x20, 0x08, 0x20, 0x04, 0x20, 0x02, 0x30, 0x03, + 0x1F, 0xFF, 0x80, 0x07, 0xE0, 0x80, 0x10, 0x02, 0x00, 0xC0, 0x18, 0x02, + 0x00, 0x40, 0x18, 0x03, 0x00, 0x40, 0x08, 0x01, 0x00, 0x60, 0x0C, 0x01, + 0x00, 0x20, 0x04, 0x01, 0x80, 0x30, 0x04, 0x00, 0x80, 0x10, 0x06, 0x00, + 0xFC, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, + 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, + 0x02, 0x02, 0x02, 0x02, 0x00, 0x07, 0xE0, 0x0C, 0x01, 0x00, 0x20, 0x04, + 0x01, 0x80, 0x30, 0x04, 0x00, 0x80, 0x30, 0x06, 0x00, 0x80, 0x10, 0x02, + 0x00, 0xC0, 0x18, 0x02, 0x00, 0x40, 0x18, 0x03, 0x00, 0x40, 0x08, 0x03, + 0x00, 0x60, 0xF8, 0x00, 0x01, 0x00, 0x1C, 0x01, 0xB0, 0x19, 0x81, 0x86, + 0x18, 0x11, 0x80, 0xD8, 0x03, 0x80, 0x18, 0xFF, 0xFF, 0xF8, 0xC7, 0x1C, + 0x71, 0x80, 0x03, 0xF8, 0x0C, 0x0C, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, + 0x00, 0x02, 0x07, 0xFC, 0x18, 0x0C, 0x20, 0x04, 0x40, 0x04, 0x80, 0x04, + 0x80, 0x08, 0x80, 0x38, 0xC0, 0xE8, 0x3F, 0x0F, 0x0F, 0x00, 0x00, 0x20, + 0x00, 0x04, 0x00, 0x01, 0x80, 0x00, 0x30, 0x00, 0x04, 0x00, 0x00, 0x87, + 0xC0, 0x13, 0x0C, 0x06, 0x80, 0x40, 0xE0, 0x0C, 0x18, 0x00, 0x82, 0x00, + 0x10, 0xC0, 0x02, 0x10, 0x00, 0x42, 0x00, 0x08, 0x40, 0x02, 0x08, 0x00, + 0x43, 0x80, 0x10, 0x70, 0x04, 0x09, 0x83, 0x0F, 0x1F, 0x80, 0x01, 0xFC, + 0x83, 0x03, 0xC6, 0x00, 0xE4, 0x00, 0x22, 0x00, 0x12, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, 0x18, 0x00, 0x64, + 0x00, 0x61, 0x81, 0xC0, 0x7F, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x30, 0x00, + 0x0C, 0x00, 0x02, 0x00, 0x00, 0x80, 0x00, 0x60, 0x3F, 0x18, 0x10, 0x64, + 0x18, 0x0D, 0x08, 0x01, 0xC2, 0x00, 0x71, 0x00, 0x0C, 0x80, 0x02, 0x20, + 0x00, 0x88, 0x00, 0x62, 0x00, 0x18, 0x80, 0x0E, 0x20, 0x03, 0x04, 0x03, + 0x40, 0xC1, 0xB0, 0x1F, 0x8F, 0x00, 0x01, 0xF0, 0x0E, 0x0C, 0x18, 0x06, + 0x30, 0x02, 0x60, 0x01, 0x40, 0x01, 0xC0, 0x01, 0xFF, 0xFF, 0x80, 0x00, + 0x80, 0x00, 0x80, 0x00, 0x40, 0x00, 0x60, 0x06, 0x30, 0x1C, 0x0F, 0xE0, + 0x00, 0x1F, 0xE0, 0x0C, 0x00, 0x03, 0x00, 0x00, 0x40, 0x00, 0x08, 0x00, + 0x02, 0x00, 0x07, 0xFF, 0xC0, 0x08, 0x00, 0x01, 0x00, 0x00, 0x20, 0x00, + 0x08, 0x00, 0x01, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x00, 0x80, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x00, 0x80, 0x00, 0x10, 0x00, 0x04, 0x00, 0x0F, + 0xFF, 0x00, 0x03, 0xE3, 0xE1, 0x83, 0x60, 0x40, 0x38, 0x10, 0x03, 0x04, + 0x00, 0x60, 0x80, 0x0C, 0x20, 0x01, 0x84, 0x00, 0x20, 0x80, 0x04, 0x10, + 0x01, 0x82, 0x00, 0x30, 0x60, 0x0C, 0x04, 0x02, 0x80, 0x61, 0x90, 0x07, + 0xC6, 0x00, 0x00, 0xC0, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x80, 0x00, + 0x30, 0x00, 0x0C, 0x00, 0xFE, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x40, 0x00, + 0x10, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00, 0x80, 0x00, 0x23, 0xE0, 0x0B, + 0x0C, 0x05, 0x00, 0x81, 0x80, 0x20, 0x40, 0x08, 0x10, 0x02, 0x08, 0x00, + 0x82, 0x00, 0x60, 0x80, 0x18, 0x20, 0x06, 0x10, 0x01, 0x84, 0x00, 0x61, + 0x00, 0x30, 0x40, 0x0C, 0xFC, 0x1F, 0xC0, 0x00, 0x30, 0x00, 0x60, 0x00, + 0xC0, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x20, + 0x00, 0x40, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, + 0x40, 0x00, 0x80, 0x01, 0x00, 0x02, 0x00, 0x08, 0x00, 0x10, 0x1F, 0xFF, + 0x80, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, + 0x00, 0x80, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x20, 0x00, + 0x40, 0x00, 0x80, 0x01, 0x00, 0x06, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, + 0x00, 0x80, 0x03, 0x00, 0x0C, 0x0F, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x60, + 0x00, 0x10, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0xC0, 0x00, 0x30, 0xFC, + 0x08, 0x18, 0x02, 0x0C, 0x00, 0x8C, 0x00, 0x66, 0x00, 0x1B, 0x00, 0x05, + 0x80, 0x01, 0xB0, 0x00, 0x46, 0x00, 0x31, 0xC0, 0x0C, 0x30, 0x02, 0x06, + 0x00, 0x80, 0xC0, 0x60, 0x30, 0xF8, 0x1F, 0x80, 0x01, 0xF8, 0x00, 0x20, + 0x00, 0x40, 0x00, 0x80, 0x01, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, + 0x20, 0x00, 0x80, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x20, + 0x00, 0x40, 0x00, 0x80, 0x01, 0x00, 0x04, 0x00, 0x08, 0x0F, 0xFF, 0xC0, + 0x1C, 0xF1, 0xE0, 0xF1, 0xE3, 0x0E, 0x1C, 0x10, 0xC1, 0x81, 0x08, 0x10, + 0x30, 0x81, 0x03, 0x18, 0x10, 0x21, 0x83, 0x02, 0x10, 0x30, 0x21, 0x02, + 0x06, 0x10, 0x20, 0x63, 0x02, 0x04, 0x30, 0x60, 0x42, 0x06, 0x04, 0xF8, + 0x70, 0xF0, 0x0E, 0x3E, 0x01, 0x60, 0x81, 0xC0, 0x20, 0xC0, 0x10, 0x40, + 0x08, 0x20, 0x04, 0x30, 0x02, 0x10, 0x02, 0x08, 0x01, 0x04, 0x00, 0x82, + 0x00, 0x42, 0x00, 0x21, 0x00, 0x20, 0x80, 0x13, 0xF0, 0x3E, 0x01, 0xF0, + 0x06, 0x0C, 0x18, 0x06, 0x20, 0x03, 0x60, 0x01, 0x40, 0x01, 0x80, 0x01, + 0x80, 0x01, 0x80, 0x01, 0x80, 0x02, 0x80, 0x06, 0xC0, 0x04, 0x40, 0x18, + 0x30, 0x60, 0x1F, 0x80, 0x0F, 0x1F, 0x80, 0x16, 0x0C, 0x01, 0xC0, 0x20, + 0x30, 0x03, 0x03, 0x00, 0x10, 0x20, 0x01, 0x02, 0x00, 0x10, 0x40, 0x01, + 0x04, 0x00, 0x10, 0x40, 0x02, 0x06, 0x00, 0x60, 0x60, 0x04, 0x0B, 0x00, + 0x80, 0x98, 0x30, 0x08, 0xFC, 0x00, 0x80, 0x00, 0x08, 0x00, 0x01, 0x00, + 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x0F, 0xF0, 0x00, 0x03, + 0xF1, 0xE1, 0x83, 0x20, 0x40, 0x34, 0x10, 0x03, 0x84, 0x00, 0x30, 0x80, + 0x04, 0x20, 0x00, 0x84, 0x00, 0x10, 0x80, 0x06, 0x10, 0x00, 0xC2, 0x00, + 0x30, 0x60, 0x0E, 0x04, 0x03, 0x40, 0x60, 0xC8, 0x07, 0xE2, 0x00, 0x00, + 0x40, 0x00, 0x08, 0x00, 0x01, 0x00, 0x00, 0x20, 0x00, 0x08, 0x00, 0x01, + 0x00, 0x03, 0xFC, 0x00, 0x0F, 0x87, 0xC0, 0x23, 0x08, 0x04, 0xC0, 0x00, + 0xE0, 0x00, 0x18, 0x00, 0x02, 0x00, 0x00, 0x80, 0x00, 0x10, 0x00, 0x02, + 0x00, 0x00, 0x40, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x40, 0x00, 0x08, + 0x00, 0x3F, 0xFE, 0x00, 0x01, 0xFA, 0x0C, 0x1C, 0x20, 0x08, 0x80, 0x11, + 0x00, 0x03, 0x00, 0x03, 0xF8, 0x00, 0x7C, 0x00, 0x0C, 0x00, 0x09, 0x00, + 0x16, 0x00, 0x2C, 0x00, 0x9E, 0x06, 0x27, 0xF0, 0x00, 0x08, 0x00, 0x40, + 0x02, 0x00, 0x10, 0x00, 0x80, 0x7F, 0xFC, 0x40, 0x02, 0x00, 0x10, 0x00, + 0x80, 0x08, 0x00, 0x40, 0x02, 0x00, 0x10, 0x01, 0x00, 0x08, 0x00, 0x40, + 0x02, 0x00, 0xD8, 0x1C, 0x3F, 0x00, 0xF0, 0x1E, 0x20, 0x04, 0x80, 0x09, + 0x00, 0x12, 0x00, 0x24, 0x00, 0xC8, 0x01, 0x20, 0x02, 0x40, 0x04, 0x80, + 0x09, 0x00, 0x12, 0x00, 0x64, 0x03, 0x8C, 0x1D, 0x0F, 0xC3, 0x80, 0xFE, + 0x0F, 0xE6, 0x00, 0x20, 0x40, 0x08, 0x08, 0x03, 0x01, 0x80, 0x40, 0x30, + 0x18, 0x06, 0x02, 0x00, 0x40, 0x80, 0x08, 0x30, 0x01, 0x84, 0x00, 0x31, + 0x80, 0x02, 0x20, 0x00, 0x48, 0x00, 0x09, 0x00, 0x01, 0xC0, 0x00, 0xF8, + 0x0F, 0xA0, 0x01, 0x90, 0x00, 0x88, 0x40, 0xC4, 0x30, 0x42, 0x18, 0x61, + 0x1A, 0x20, 0x8D, 0x10, 0x4C, 0x98, 0x26, 0x48, 0x16, 0x2C, 0x0B, 0x14, + 0x07, 0x0A, 0x03, 0x07, 0x01, 0x81, 0x00, 0x0F, 0x83, 0xE0, 0xC0, 0x18, + 0x0C, 0x0C, 0x01, 0x83, 0x00, 0x18, 0xC0, 0x01, 0xB0, 0x00, 0x1C, 0x00, + 0x03, 0x00, 0x00, 0xF0, 0x00, 0x63, 0x00, 0x18, 0x30, 0x06, 0x06, 0x01, + 0x80, 0x60, 0x60, 0x06, 0x3F, 0x07, 0xE0, 0x0F, 0xC0, 0xF8, 0x30, 0x01, + 0x00, 0x80, 0x18, 0x04, 0x00, 0x80, 0x30, 0x0C, 0x01, 0x80, 0xC0, 0x04, + 0x04, 0x00, 0x30, 0x60, 0x01, 0x86, 0x00, 0x04, 0x20, 0x00, 0x23, 0x00, + 0x01, 0xB0, 0x00, 0x0D, 0x00, 0x00, 0x38, 0x00, 0x01, 0x80, 0x00, 0x08, + 0x00, 0x00, 0xC0, 0x00, 0x04, 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, + 0x20, 0x00, 0x7F, 0xE0, 0x00, 0x1F, 0xFF, 0x10, 0x06, 0x10, 0x0C, 0x10, + 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, 0x06, + 0x00, 0x0C, 0x00, 0x18, 0x04, 0x30, 0x0C, 0x60, 0x0C, 0xFF, 0xF8, 0x00, + 0xE0, 0x20, 0x08, 0x01, 0x00, 0x20, 0x04, 0x01, 0x00, 0x20, 0x04, 0x00, + 0x80, 0x20, 0x08, 0x0E, 0x00, 0x60, 0x04, 0x00, 0x80, 0x10, 0x02, 0x00, + 0x40, 0x08, 0x02, 0x00, 0x40, 0x08, 0x01, 0x00, 0x18, 0x00, 0x00, 0x10, + 0xC3, 0x08, 0x20, 0x86, 0x18, 0x41, 0x04, 0x30, 0xC2, 0x08, 0x21, 0x86, + 0x10, 0x43, 0x0C, 0x20, 0x06, 0x00, 0x40, 0x10, 0x04, 0x01, 0x00, 0x40, + 0x10, 0x04, 0x02, 0x00, 0x80, 0x20, 0x0C, 0x01, 0xC0, 0xC0, 0x40, 0x10, + 0x04, 0x03, 0x00, 0x80, 0x20, 0x08, 0x02, 0x01, 0x00, 0xC0, 0xE0, 0x00, + 0x1E, 0x02, 0x66, 0x0D, 0x86, 0x16, 0x06, 0x48, 0x07, 0x00}; + +const GFXglyph FreeMonoOblique18pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 21, 0, 1}, // 0x20 ' ' + {0, 7, 22, 21, 9, -21}, // 0x21 '!' + {20, 13, 10, 21, 7, -20}, // 0x22 '"' + {37, 15, 24, 21, 5, -21}, // 0x23 '#' + {82, 16, 26, 21, 4, -22}, // 0x24 '$' + {134, 16, 21, 21, 5, -20}, // 0x25 '%' + {176, 13, 18, 21, 5, -17}, // 0x26 '&' + {206, 5, 10, 21, 12, -20}, // 0x27 ''' + {213, 8, 25, 21, 12, -20}, // 0x28 '(' + {238, 8, 25, 21, 5, -20}, // 0x29 ')' + {263, 14, 11, 21, 7, -19}, // 0x2A '*' + {283, 15, 17, 21, 5, -17}, // 0x2B '+' + {315, 9, 10, 21, 4, -4}, // 0x2C ',' + {327, 16, 1, 21, 5, -9}, // 0x2D '-' + {329, 5, 5, 21, 8, -4}, // 0x2E '.' + {333, 19, 26, 21, 3, -22}, // 0x2F '/' + {395, 14, 21, 21, 5, -20}, // 0x30 '0' + {432, 13, 21, 21, 4, -20}, // 0x31 '1' + {467, 17, 21, 21, 3, -20}, // 0x32 '2' + {512, 16, 21, 21, 3, -20}, // 0x33 '3' + {554, 14, 21, 21, 5, -20}, // 0x34 '4' + {591, 17, 21, 21, 4, -20}, // 0x35 '5' + {636, 16, 21, 21, 6, -20}, // 0x36 '6' + {678, 13, 21, 21, 8, -20}, // 0x37 '7' + {713, 15, 21, 21, 5, -20}, // 0x38 '8' + {753, 15, 21, 21, 5, -20}, // 0x39 '9' + {793, 7, 15, 21, 8, -14}, // 0x3A ':' + {807, 11, 20, 21, 4, -14}, // 0x3B ';' + {835, 17, 16, 21, 5, -17}, // 0x3C '<' + {869, 19, 6, 21, 3, -12}, // 0x3D '=' + {884, 18, 16, 21, 3, -17}, // 0x3E '>' + {920, 12, 20, 21, 8, -19}, // 0x3F '?' + {950, 15, 23, 21, 5, -20}, // 0x40 '@' + {994, 21, 20, 21, 0, -19}, // 0x41 'A' + {1047, 18, 20, 21, 2, -19}, // 0x42 'B' + {1092, 18, 20, 21, 4, -19}, // 0x43 'C' + {1137, 18, 20, 21, 2, -19}, // 0x44 'D' + {1182, 20, 20, 21, 2, -19}, // 0x45 'E' + {1232, 20, 20, 21, 2, -19}, // 0x46 'F' + {1282, 18, 20, 21, 4, -19}, // 0x47 'G' + {1327, 21, 20, 21, 2, -19}, // 0x48 'H' + {1380, 17, 20, 21, 4, -19}, // 0x49 'I' + {1423, 20, 20, 21, 4, -19}, // 0x4A 'J' + {1473, 21, 20, 21, 2, -19}, // 0x4B 'K' + {1526, 18, 20, 21, 2, -19}, // 0x4C 'L' + {1571, 24, 20, 21, 1, -19}, // 0x4D 'M' + {1631, 22, 20, 21, 2, -19}, // 0x4E 'N' + {1686, 17, 20, 21, 4, -19}, // 0x4F 'O' + {1729, 18, 20, 21, 2, -19}, // 0x50 'P' + {1774, 17, 24, 21, 4, -19}, // 0x51 'Q' + {1825, 18, 20, 21, 2, -19}, // 0x52 'R' + {1870, 18, 20, 21, 3, -19}, // 0x53 'S' + {1915, 17, 20, 21, 5, -19}, // 0x54 'T' + {1958, 18, 20, 21, 5, -19}, // 0x55 'U' + {2003, 21, 20, 21, 4, -19}, // 0x56 'V' + {2056, 20, 20, 21, 4, -19}, // 0x57 'W' + {2106, 21, 20, 21, 2, -19}, // 0x58 'X' + {2159, 18, 20, 21, 5, -19}, // 0x59 'Y' + {2204, 17, 20, 21, 4, -19}, // 0x5A 'Z' + {2247, 11, 25, 21, 9, -20}, // 0x5B '[' + {2282, 8, 27, 21, 9, -22}, // 0x5C '\' + {2309, 11, 25, 21, 5, -20}, // 0x5D ']' + {2344, 13, 9, 21, 7, -20}, // 0x5E '^' + {2359, 21, 1, 21, -1, 4}, // 0x5F '_' + {2362, 5, 5, 21, 9, -21}, // 0x60 '`' + {2366, 16, 15, 21, 3, -14}, // 0x61 'a' + {2396, 19, 21, 21, 1, -20}, // 0x62 'b' + {2446, 17, 15, 21, 4, -14}, // 0x63 'c' + {2478, 18, 21, 21, 4, -20}, // 0x64 'd' + {2526, 16, 15, 21, 4, -14}, // 0x65 'e' + {2556, 19, 21, 21, 4, -20}, // 0x66 'f' + {2606, 19, 22, 21, 4, -14}, // 0x67 'g' + {2659, 18, 21, 21, 2, -20}, // 0x68 'h' + {2707, 15, 22, 21, 3, -21}, // 0x69 'i' + {2749, 15, 29, 21, 3, -21}, // 0x6A 'j' + {2804, 18, 21, 21, 2, -20}, // 0x6B 'k' + {2852, 15, 21, 21, 3, -20}, // 0x6C 'l' + {2892, 20, 15, 21, 1, -14}, // 0x6D 'm' + {2930, 17, 15, 21, 2, -14}, // 0x6E 'n' + {2962, 16, 15, 21, 4, -14}, // 0x6F 'o' + {2992, 20, 22, 21, 0, -14}, // 0x70 'p' + {3047, 19, 22, 21, 4, -14}, // 0x71 'q' + {3100, 19, 15, 21, 3, -14}, // 0x72 'r' + {3136, 15, 15, 21, 4, -14}, // 0x73 's' + {3165, 13, 20, 21, 5, -19}, // 0x74 't' + {3198, 15, 15, 21, 4, -14}, // 0x75 'u' + {3227, 19, 15, 21, 4, -14}, // 0x76 'v' + {3263, 17, 15, 21, 5, -14}, // 0x77 'w' + {3295, 19, 15, 21, 2, -14}, // 0x78 'x' + {3331, 21, 22, 21, 1, -14}, // 0x79 'y' + {3389, 16, 15, 21, 4, -14}, // 0x7A 'z' + {3419, 11, 25, 21, 8, -20}, // 0x7B '{' + {3454, 6, 24, 21, 9, -19}, // 0x7C '|' + {3472, 10, 25, 21, 6, -20}, // 0x7D '}' + {3504, 15, 5, 21, 5, -11}}; // 0x7E '~' + +const GFXfont FreeMonoOblique18pt7b PROGMEM = { + (uint8_t *)FreeMonoOblique18pt7bBitmaps, + (GFXglyph *)FreeMonoOblique18pt7bGlyphs, 0x20, 0x7E, 35}; + +// Approx. 4186 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoOblique24pt7b.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoOblique24pt7b.h new file mode 100644 index 0000000..28bbf9e --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoOblique24pt7b.h @@ -0,0 +1,645 @@ +#pragma once +#include + +const uint8_t FreeMonoOblique24pt7bBitmaps[] PROGMEM = { + 0x01, 0xC0, 0xF0, 0x3C, 0x0E, 0x03, 0x81, 0xE0, 0x78, 0x1C, 0x07, 0x01, + 0xC0, 0xE0, 0x38, 0x0E, 0x03, 0x00, 0xC0, 0x70, 0x1C, 0x06, 0x01, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x0F, 0x83, 0xE0, 0xF8, + 0x1C, 0x00, 0x7E, 0x3F, 0x7E, 0x3F, 0x7C, 0x3E, 0x7C, 0x3E, 0x7C, 0x3E, + 0x78, 0x3C, 0xF8, 0x7C, 0xF0, 0x78, 0xF0, 0x78, 0xF0, 0x78, 0xE0, 0x70, + 0xE0, 0x70, 0xE0, 0x70, 0xC0, 0x60, 0x00, 0x18, 0x30, 0x00, 0x61, 0x80, + 0x01, 0x86, 0x00, 0x04, 0x18, 0x00, 0x30, 0xC0, 0x00, 0xC3, 0x00, 0x03, + 0x0C, 0x00, 0x18, 0x30, 0x00, 0x61, 0x80, 0x01, 0x86, 0x00, 0x06, 0x18, + 0x07, 0xFF, 0xFF, 0x1F, 0xFF, 0xFC, 0x03, 0x0C, 0x00, 0x18, 0x30, 0x00, + 0x61, 0x80, 0x01, 0x86, 0x00, 0x06, 0x18, 0x00, 0x30, 0xC0, 0x1F, 0xFF, + 0xF8, 0x7F, 0xFF, 0xE0, 0x18, 0x30, 0x00, 0x61, 0x80, 0x01, 0x86, 0x00, + 0x06, 0x18, 0x00, 0x30, 0x40, 0x00, 0xC3, 0x00, 0x03, 0x0C, 0x00, 0x18, + 0x30, 0x00, 0x61, 0x80, 0x01, 0x86, 0x00, 0x06, 0x18, 0x00, 0x00, 0x03, + 0x00, 0x00, 0x18, 0x00, 0x00, 0x80, 0x00, 0x3F, 0x00, 0x07, 0xFD, 0x80, + 0x70, 0x7C, 0x06, 0x00, 0xE0, 0x60, 0x02, 0x07, 0x00, 0x10, 0x30, 0x00, + 0x01, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x70, 0x00, 0x01, 0xF0, 0x00, 0x07, + 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x18, + 0x00, 0x00, 0xC2, 0x00, 0x06, 0x30, 0x00, 0x61, 0x80, 0x03, 0x1E, 0x00, + 0x30, 0xFC, 0x07, 0x06, 0x7F, 0xF0, 0x00, 0xFE, 0x00, 0x01, 0x80, 0x00, + 0x0C, 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, 0x80, + 0x00, 0x00, 0x78, 0x00, 0x07, 0xF8, 0x00, 0x38, 0x60, 0x01, 0xC0, 0xC0, + 0x06, 0x03, 0x00, 0x30, 0x0C, 0x00, 0xC0, 0x30, 0x03, 0x01, 0x80, 0x0C, + 0x0E, 0x00, 0x38, 0x70, 0x00, 0x7F, 0x81, 0xC0, 0xF8, 0x3F, 0x00, 0x07, + 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x00, 0x07, 0xC0, 0x00, 0x78, 0x00, 0x01, + 0x00, 0x78, 0x00, 0x07, 0xF8, 0x00, 0x38, 0x60, 0x01, 0x80, 0xC0, 0x06, + 0x03, 0x00, 0x30, 0x0C, 0x00, 0xC0, 0x30, 0x03, 0x01, 0x80, 0x0C, 0x0E, + 0x00, 0x18, 0x70, 0x00, 0x7F, 0x80, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, + 0x0F, 0xF8, 0x03, 0x8E, 0x00, 0xC0, 0x00, 0x38, 0x00, 0x06, 0x00, 0x00, + 0xC0, 0x00, 0x18, 0x00, 0x01, 0x00, 0x00, 0x30, 0x00, 0x06, 0x00, 0x03, + 0xE0, 0x01, 0xCC, 0x0E, 0x60, 0xC3, 0xD8, 0x18, 0x63, 0x03, 0x18, 0xC0, + 0x33, 0x18, 0x06, 0xC3, 0x00, 0x70, 0x60, 0x0E, 0x0C, 0x01, 0xC0, 0xC0, + 0x78, 0x1C, 0x3B, 0xE1, 0xFE, 0x3C, 0x1F, 0x00, 0x00, 0x7E, 0xFD, 0xF3, + 0xE7, 0xCF, 0x3E, 0x78, 0xF1, 0xE3, 0x87, 0x0E, 0x18, 0x00, 0x00, 0x60, + 0x18, 0x07, 0x00, 0xC0, 0x30, 0x0E, 0x01, 0x80, 0x70, 0x0C, 0x03, 0x80, + 0x60, 0x1C, 0x03, 0x80, 0xE0, 0x1C, 0x03, 0x80, 0xF0, 0x1C, 0x03, 0x80, + 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x30, + 0x06, 0x00, 0xC0, 0x1C, 0x01, 0x80, 0x30, 0x02, 0x00, 0x01, 0x80, 0x30, + 0x06, 0x00, 0xE0, 0x0C, 0x01, 0x80, 0x30, 0x07, 0x00, 0xE0, 0x1C, 0x03, + 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x38, 0x07, 0x00, + 0xE0, 0x3C, 0x07, 0x00, 0xE0, 0x38, 0x07, 0x01, 0xC0, 0x38, 0x0E, 0x01, + 0x80, 0x70, 0x0C, 0x03, 0x00, 0xC0, 0x10, 0x00, 0x00, 0x20, 0x00, 0x18, + 0x00, 0x06, 0x00, 0x01, 0x80, 0x00, 0xC0, 0x00, 0x30, 0x0E, 0x0C, 0x0B, + 0xF3, 0x3E, 0x3F, 0xFE, 0x01, 0xFC, 0x00, 0x3C, 0x00, 0x1F, 0x00, 0x0E, + 0x60, 0x07, 0x18, 0x01, 0x83, 0x00, 0xC0, 0xC0, 0x60, 0x30, 0x00, 0x00, + 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x18, + 0x00, 0x00, 0x60, 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, + 0x00, 0xC0, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x30, 0x00, 0x01, + 0x80, 0x00, 0x06, 0x00, 0x00, 0x18, 0x00, 0x00, 0x60, 0x00, 0x01, 0x80, + 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, + 0x03, 0xF0, 0x7E, 0x07, 0xC0, 0xF8, 0x0F, 0x81, 0xF0, 0x1E, 0x03, 0xE0, + 0x3C, 0x07, 0x80, 0x70, 0x0F, 0x00, 0xE0, 0x0C, 0x00, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xE0, 0x3C, 0xFF, 0xFF, 0xFF, 0xCF, 0x00, 0x00, 0x00, 0x03, + 0x00, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, + 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, + 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x03, 0x00, + 0x00, 0x07, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x1C, 0x00, + 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x70, 0x00, 0x00, 0x60, 0x00, + 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x03, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, 0x00, 0x00, 0xE0, 0x00, 0x00, + 0xC0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x0F, 0xF8, 0x01, + 0xC1, 0xC0, 0x38, 0x0E, 0x07, 0x00, 0x60, 0xE0, 0x03, 0x0C, 0x00, 0x31, + 0x80, 0x03, 0x18, 0x00, 0x33, 0x00, 0x03, 0x30, 0x00, 0x33, 0x00, 0x03, + 0x20, 0x00, 0x26, 0x00, 0x06, 0x60, 0x00, 0x66, 0x00, 0x06, 0x40, 0x00, + 0x4C, 0x00, 0x0C, 0xC0, 0x00, 0xCC, 0x00, 0x0C, 0xC0, 0x01, 0x8C, 0x00, + 0x18, 0xC0, 0x01, 0x8C, 0x00, 0x30, 0xC0, 0x07, 0x06, 0x00, 0xE0, 0x60, + 0x1C, 0x03, 0x87, 0x80, 0x3F, 0xF0, 0x00, 0xFC, 0x00, 0x00, 0x0E, 0x00, + 0x0F, 0x00, 0x0F, 0x80, 0x0E, 0xC0, 0x1C, 0xC0, 0x1C, 0x60, 0x1C, 0x30, + 0x08, 0x18, 0x00, 0x1C, 0x00, 0x0C, 0x00, 0x06, 0x00, 0x03, 0x00, 0x01, + 0x80, 0x01, 0xC0, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x18, 0x00, + 0x18, 0x00, 0x0C, 0x00, 0x06, 0x00, 0x03, 0x00, 0x01, 0x80, 0x01, 0x80, + 0x00, 0xC0, 0x00, 0x60, 0x00, 0x30, 0x1F, 0xFF, 0xFF, 0xFF, 0xF8, 0x00, + 0x07, 0xE0, 0x00, 0x3F, 0xE0, 0x01, 0xE0, 0xE0, 0x07, 0x00, 0xE0, 0x1C, + 0x00, 0xE0, 0x30, 0x00, 0xC0, 0xC0, 0x01, 0x81, 0x00, 0x03, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x03, + 0x00, 0x00, 0x1C, 0x00, 0x00, 0x70, 0x00, 0x01, 0xC0, 0x00, 0x07, 0x00, + 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x03, 0x80, 0x00, 0x0E, 0x00, 0x00, + 0x70, 0x00, 0x01, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xE0, + 0x00, 0xC3, 0x80, 0x01, 0x87, 0xFF, 0xFF, 0x0F, 0xFF, 0xFC, 0x00, 0x00, + 0x0F, 0xC0, 0x01, 0xFF, 0xC0, 0x1E, 0x07, 0x80, 0xE0, 0x06, 0x03, 0x00, + 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x0C, + 0x00, 0x00, 0x60, 0x00, 0x03, 0x80, 0x00, 0x1C, 0x00, 0x00, 0xE0, 0x00, + 0xFE, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xE0, 0x00, 0x01, + 0x80, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, + 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, 0x00, 0xE3, 0x00, 0x07, 0x0E, 0x00, + 0x38, 0x1E, 0x03, 0xC0, 0x3F, 0xFC, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x03, + 0xE0, 0x00, 0xF8, 0x00, 0x1B, 0x00, 0x06, 0x60, 0x01, 0x8C, 0x00, 0x63, + 0x00, 0x18, 0x60, 0x07, 0x0C, 0x00, 0xC1, 0x80, 0x30, 0x30, 0x0C, 0x0C, + 0x03, 0x01, 0x80, 0xC0, 0x30, 0x18, 0x06, 0x06, 0x00, 0xC1, 0x80, 0x30, + 0x60, 0x06, 0x18, 0x00, 0xC3, 0xFF, 0xFE, 0x7F, 0xFF, 0xC0, 0x00, 0xC0, + 0x00, 0x18, 0x00, 0x03, 0x00, 0x00, 0x60, 0x00, 0x18, 0x00, 0x03, 0x00, + 0x0F, 0xFC, 0x01, 0xFF, 0x80, 0x01, 0xFF, 0xF8, 0x0F, 0xFF, 0xC0, 0x40, + 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, 0x80, 0x00, 0x0C, 0x00, 0x00, + 0xC0, 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, 0xBF, 0xC0, 0x0F, 0xFF, + 0x80, 0xF8, 0x1E, 0x02, 0x00, 0x30, 0x00, 0x01, 0xC0, 0x00, 0x06, 0x00, + 0x00, 0x30, 0x00, 0x01, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x60, 0x00, 0x06, + 0x00, 0x00, 0x30, 0x00, 0x03, 0x80, 0x00, 0x18, 0xC0, 0x01, 0x87, 0x00, + 0x38, 0x1E, 0x07, 0x80, 0x7F, 0xF8, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x03, + 0xF0, 0x00, 0xFF, 0xC0, 0x1F, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x01, + 0x80, 0x00, 0x18, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x00, 0xC0, 0x00, + 0x0E, 0x00, 0x00, 0x60, 0x00, 0x07, 0x0F, 0x80, 0x31, 0xFF, 0x01, 0x9C, + 0x3C, 0x0D, 0x80, 0x60, 0xD8, 0x03, 0x87, 0x80, 0x0C, 0x38, 0x00, 0x61, + 0xC0, 0x03, 0x0C, 0x00, 0x18, 0x60, 0x00, 0xC3, 0x00, 0x0C, 0x18, 0x00, + 0x60, 0xE0, 0x06, 0x03, 0x00, 0x30, 0x1C, 0x07, 0x00, 0x70, 0x70, 0x01, + 0xFF, 0x00, 0x07, 0xE0, 0x00, 0x7F, 0xFF, 0xDF, 0xFF, 0xFC, 0x00, 0x0F, + 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, 0x30, 0x00, 0x18, 0x00, + 0x06, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x18, 0x00, 0x0C, + 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, 0x30, 0x00, 0x0C, 0x00, + 0x06, 0x00, 0x01, 0x80, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x18, 0x00, 0x0C, + 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, 0x00, 0x3F, 0x00, 0x0F, + 0xFC, 0x01, 0xC1, 0xE0, 0x70, 0x06, 0x06, 0x00, 0x30, 0xC0, 0x03, 0x1C, + 0x00, 0x31, 0x80, 0x03, 0x18, 0x00, 0x31, 0x80, 0x06, 0x18, 0x00, 0xE0, + 0xC0, 0x1C, 0x0F, 0x07, 0x80, 0x3F, 0xE0, 0x03, 0xFE, 0x00, 0xE0, 0x70, + 0x18, 0x03, 0x83, 0x00, 0x1C, 0x60, 0x00, 0xC6, 0x00, 0x0C, 0xC0, 0x00, + 0xCC, 0x00, 0x0C, 0xC0, 0x00, 0xCC, 0x00, 0x18, 0xC0, 0x03, 0x8E, 0x00, + 0x70, 0x60, 0x0E, 0x07, 0x83, 0xC0, 0x3F, 0xF0, 0x00, 0xFC, 0x00, 0x00, + 0x0F, 0x80, 0x00, 0xFF, 0x80, 0x0F, 0x07, 0x00, 0x70, 0x0E, 0x03, 0x80, + 0x18, 0x0C, 0x00, 0x70, 0x60, 0x00, 0xC1, 0x80, 0x03, 0x0C, 0x00, 0x0C, + 0x30, 0x00, 0x30, 0xC0, 0x01, 0xC3, 0x00, 0x0F, 0x0C, 0x00, 0x6C, 0x38, + 0x03, 0xF0, 0x60, 0x1D, 0x81, 0xE1, 0xE6, 0x03, 0xFE, 0x18, 0x03, 0xE0, + 0xC0, 0x00, 0x03, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x60, 0x00, 0x03, 0x00, + 0x00, 0x1C, 0x00, 0x00, 0xE0, 0x00, 0x07, 0x00, 0x00, 0x38, 0x00, 0x03, + 0xC0, 0x00, 0x7C, 0x00, 0xFF, 0xC0, 0x01, 0xF8, 0x00, 0x00, 0x07, 0x83, + 0xF1, 0xFC, 0x7F, 0x1F, 0x83, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x7E, 0x3F, 0x8F, 0xE3, 0xF0, 0x78, + 0x00, 0x00, 0x3C, 0x00, 0xFC, 0x03, 0xF8, 0x07, 0xF0, 0x0F, 0xC0, 0x0F, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7E, 0x00, 0xFC, 0x03, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x3E, + 0x00, 0xF8, 0x01, 0xE0, 0x07, 0x80, 0x0F, 0x00, 0x3C, 0x00, 0x70, 0x01, + 0xC0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x3C, 0x00, 0x01, + 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, + 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x03, + 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0xF0, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x78, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x0C, 0x00, 0x3F, 0xFF, 0xFF, 0x9F, + 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, + 0x00, 0x06, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x00, 0xF0, + 0x00, 0x00, 0x3C, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, + 0xC0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x1E, 0x00, 0x00, + 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, + 0x00, 0x70, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x07, 0xF0, 0x3F, 0xFC, 0x78, + 0x1E, 0xC0, 0x07, 0xC0, 0x03, 0xC0, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x1C, 0x00, 0x38, 0x00, 0xE0, 0x07, 0xC0, 0x07, + 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x7E, 0x00, 0xFE, 0x00, 0xFE, + 0x00, 0x7C, 0x00, 0x00, 0x3F, 0x00, 0x1F, 0xF0, 0x07, 0x07, 0x01, 0xC0, + 0x70, 0x60, 0x06, 0x1C, 0x00, 0xC3, 0x00, 0x18, 0xC0, 0x03, 0x18, 0x00, + 0x66, 0x00, 0xFC, 0xC0, 0x7F, 0x98, 0x1C, 0x66, 0x06, 0x0C, 0xC1, 0x81, + 0x98, 0x30, 0x33, 0x0C, 0x0E, 0x61, 0x81, 0x98, 0x30, 0x33, 0x06, 0x06, + 0x60, 0xF0, 0xCC, 0x0F, 0xF9, 0x80, 0x7F, 0x30, 0x00, 0x06, 0x00, 0x00, + 0xC0, 0x00, 0x18, 0x00, 0x03, 0x80, 0x00, 0x30, 0x00, 0x07, 0x00, 0x00, + 0x70, 0x18, 0x0F, 0xFE, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0xF0, 0x00, 0x0F, + 0xFE, 0x00, 0x00, 0x06, 0xC0, 0x00, 0x00, 0xCC, 0x00, 0x00, 0x31, 0x80, + 0x00, 0x06, 0x30, 0x00, 0x01, 0x86, 0x00, 0x00, 0x60, 0xC0, 0x00, 0x0C, + 0x1C, 0x00, 0x03, 0x01, 0x80, 0x00, 0x40, 0x30, 0x00, 0x18, 0x06, 0x00, + 0x06, 0x00, 0xC0, 0x00, 0xC0, 0x18, 0x00, 0x30, 0x01, 0x80, 0x07, 0xFF, + 0xF0, 0x01, 0xFF, 0xFE, 0x00, 0x60, 0x00, 0xC0, 0x0C, 0x00, 0x18, 0x03, + 0x00, 0x03, 0x00, 0x40, 0x00, 0x30, 0x18, 0x00, 0x06, 0x06, 0x00, 0x00, + 0xC0, 0xC0, 0x00, 0x18, 0xFF, 0x80, 0x7F, 0xFF, 0xF0, 0x0F, 0xFC, 0x03, + 0xFF, 0xFC, 0x01, 0xFF, 0xFF, 0xC0, 0x06, 0x00, 0x38, 0x01, 0x80, 0x07, + 0x00, 0xC0, 0x00, 0xC0, 0x30, 0x00, 0x30, 0x0C, 0x00, 0x0C, 0x03, 0x00, + 0x03, 0x00, 0xC0, 0x01, 0x80, 0x60, 0x00, 0xC0, 0x18, 0x01, 0xE0, 0x07, + 0xFF, 0xE0, 0x01, 0xFF, 0xFC, 0x00, 0xE0, 0x03, 0x80, 0x30, 0x00, 0x70, + 0x0C, 0x00, 0x0E, 0x03, 0x00, 0x01, 0x80, 0xC0, 0x00, 0x60, 0x60, 0x00, + 0x18, 0x18, 0x00, 0x06, 0x06, 0x00, 0x03, 0x01, 0x80, 0x01, 0xC0, 0x60, + 0x00, 0xE0, 0x30, 0x00, 0x70, 0xFF, 0xFF, 0xF8, 0x3F, 0xFF, 0xF8, 0x00, + 0x00, 0x0F, 0xE0, 0x00, 0x3F, 0xFC, 0xC0, 0x3C, 0x0F, 0x60, 0x78, 0x01, + 0xF0, 0x70, 0x00, 0x70, 0x70, 0x00, 0x18, 0x30, 0x00, 0x0C, 0x30, 0x00, + 0x06, 0x38, 0x00, 0x02, 0x18, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x0C, 0x00, + 0x00, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, + 0x00, 0x00, 0xC0, 0x00, 0x00, 0x60, 0x00, 0x00, 0x30, 0x00, 0x00, 0x18, + 0x00, 0x00, 0x0C, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x60, + 0x60, 0x00, 0x60, 0x38, 0x00, 0xE0, 0x0F, 0x01, 0xE0, 0x03, 0xFF, 0xC0, + 0x00, 0x3F, 0x00, 0x00, 0x03, 0xFF, 0xF0, 0x01, 0xFF, 0xFF, 0x00, 0x0C, + 0x00, 0xF0, 0x03, 0x00, 0x1C, 0x01, 0xC0, 0x03, 0x80, 0x60, 0x00, 0x60, + 0x18, 0x00, 0x1C, 0x06, 0x00, 0x03, 0x01, 0x80, 0x00, 0xC0, 0xC0, 0x00, + 0x30, 0x30, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0x03, 0x00, 0x00, 0xC0, 0xC0, + 0x00, 0x60, 0x60, 0x00, 0x18, 0x18, 0x00, 0x06, 0x06, 0x00, 0x03, 0x01, + 0x80, 0x00, 0xC0, 0xE0, 0x00, 0x70, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x0C, + 0x03, 0x00, 0x06, 0x00, 0xC0, 0x07, 0x00, 0x60, 0x07, 0x80, 0xFF, 0xFF, + 0xC0, 0x3F, 0xFF, 0x80, 0x00, 0x03, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFC, + 0x01, 0x80, 0x01, 0x80, 0x30, 0x00, 0x60, 0x0C, 0x00, 0x0C, 0x01, 0x80, + 0x01, 0x80, 0x30, 0x00, 0x30, 0x06, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0x00, + 0x30, 0x18, 0x00, 0x06, 0x03, 0x00, 0x00, 0xFF, 0xE0, 0x00, 0x1F, 0xF8, + 0x00, 0x07, 0x03, 0x00, 0x00, 0xC0, 0x60, 0x00, 0x18, 0x0C, 0x00, 0x03, + 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x18, 0x00, 0x0C, 0x03, 0x00, 0x01, + 0x80, 0x60, 0x00, 0x30, 0x0C, 0x00, 0x0C, 0x01, 0x80, 0x01, 0x80, 0x60, + 0x00, 0x30, 0xFF, 0xFF, 0xFE, 0x1F, 0xFF, 0xFF, 0xC0, 0x03, 0xFF, 0xFF, + 0xF0, 0x7F, 0xFF, 0xFF, 0x00, 0x60, 0x00, 0x30, 0x06, 0x00, 0x06, 0x00, + 0xC0, 0x00, 0x60, 0x0C, 0x00, 0x06, 0x00, 0xC0, 0x00, 0x60, 0x0C, 0x00, + 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x18, 0x0C, 0x00, 0x01, 0x80, 0xC0, 0x00, + 0x1F, 0xFC, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x38, 0x18, 0x00, 0x03, 0x01, + 0x80, 0x00, 0x30, 0x18, 0x00, 0x03, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x60, + 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xFF, 0xFC, 0x00, + 0x0F, 0xFF, 0xC0, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x3F, 0xFC, 0xC0, 0x3C, + 0x0F, 0xE0, 0x78, 0x01, 0xF0, 0x70, 0x00, 0x30, 0x70, 0x00, 0x18, 0x70, + 0x00, 0x0C, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, + 0x00, 0x00, 0x0C, 0x00, 0x00, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, + 0x80, 0x00, 0x01, 0x80, 0x1F, 0xFE, 0xC0, 0x0F, 0xFF, 0x60, 0x00, 0x06, + 0x30, 0x00, 0x06, 0x18, 0x00, 0x03, 0x0C, 0x00, 0x01, 0x87, 0x00, 0x00, + 0xC1, 0x80, 0x00, 0xE0, 0xE0, 0x00, 0x60, 0x38, 0x00, 0x70, 0x0F, 0x00, + 0xF8, 0x03, 0xFF, 0xF0, 0x00, 0x3F, 0x80, 0x00, 0x03, 0xFC, 0x1F, 0xE0, + 0x7F, 0x83, 0xFC, 0x03, 0x00, 0x06, 0x00, 0x60, 0x01, 0x80, 0x1C, 0x00, + 0x30, 0x03, 0x00, 0x06, 0x00, 0x60, 0x00, 0xC0, 0x0C, 0x00, 0x38, 0x01, + 0x80, 0x06, 0x00, 0x60, 0x00, 0xC0, 0x0C, 0x00, 0x18, 0x01, 0xFF, 0xFF, + 0x00, 0x3F, 0xFF, 0xC0, 0x06, 0x00, 0x18, 0x01, 0x80, 0x03, 0x00, 0x30, + 0x00, 0x60, 0x06, 0x00, 0x0C, 0x00, 0xC0, 0x03, 0x00, 0x38, 0x00, 0x60, + 0x06, 0x00, 0x0C, 0x00, 0xC0, 0x01, 0x80, 0x18, 0x00, 0x70, 0x03, 0x00, + 0x0C, 0x00, 0xE0, 0x01, 0x80, 0xFF, 0x83, 0xFE, 0x1F, 0xF0, 0x7F, 0xC0, + 0x07, 0xFF, 0xFC, 0x1F, 0xFF, 0xF0, 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, + 0x0C, 0x00, 0x00, 0x70, 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0x18, + 0x00, 0x00, 0x60, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, + 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, 0x00, 0x60, 0x00, 0x01, + 0x80, 0x00, 0x06, 0x00, 0x00, 0x38, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x00, + 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, 0xFF, 0xFF, 0x83, 0xFF, 0xFE, 0x00, + 0x00, 0x0F, 0xFF, 0xF0, 0x01, 0xFF, 0xFF, 0x00, 0x00, 0x0C, 0x00, 0x00, + 0x00, 0xC0, 0x00, 0x00, 0x18, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x18, + 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x38, 0x00, 0x00, 0x03, 0x00, 0x00, + 0x00, 0x30, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x07, + 0x00, 0x20, 0x00, 0x60, 0x06, 0x00, 0x06, 0x00, 0x60, 0x00, 0x60, 0x06, + 0x00, 0x06, 0x00, 0x60, 0x00, 0xC0, 0x0C, 0x00, 0x0C, 0x00, 0xC0, 0x00, + 0xC0, 0x0C, 0x00, 0x18, 0x00, 0xE0, 0x03, 0x00, 0x07, 0x00, 0x70, 0x00, + 0x3C, 0x1C, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x03, + 0xFF, 0x07, 0xF8, 0x3F, 0xF8, 0x3F, 0xC0, 0x18, 0x00, 0x70, 0x00, 0xC0, + 0x07, 0x00, 0x0C, 0x00, 0x60, 0x00, 0x60, 0x0E, 0x00, 0x03, 0x00, 0xE0, + 0x00, 0x18, 0x0C, 0x00, 0x00, 0xC1, 0xC0, 0x00, 0x0C, 0x1C, 0x00, 0x00, + 0x61, 0x80, 0x00, 0x03, 0x3C, 0x00, 0x00, 0x1B, 0x78, 0x00, 0x01, 0xF0, + 0xE0, 0x00, 0x0F, 0x03, 0x80, 0x00, 0x60, 0x0C, 0x00, 0x03, 0x00, 0x70, + 0x00, 0x18, 0x01, 0x80, 0x01, 0x80, 0x0C, 0x00, 0x0C, 0x00, 0x60, 0x00, + 0x60, 0x01, 0x80, 0x03, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x60, 0x01, 0x80, + 0x03, 0x00, 0xFF, 0xE0, 0x1F, 0x87, 0xFF, 0x00, 0x7C, 0x00, 0x07, 0xFF, + 0xE0, 0x03, 0xFF, 0xF0, 0x00, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, + 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x60, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x30, 0x00, 0x00, 0x18, 0x00, 0x00, 0x0C, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, + 0x00, 0xC0, 0x03, 0x00, 0x60, 0x01, 0x80, 0x60, 0x00, 0xC0, 0x30, 0x00, + 0x60, 0x18, 0x00, 0x30, 0x0C, 0x00, 0x30, 0x0E, 0x00, 0x18, 0x06, 0x00, + 0x0C, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0x00, 0x07, 0xF0, 0x00, 0x3F, + 0x07, 0xF0, 0x00, 0x7F, 0x01, 0xB0, 0x00, 0xD8, 0x01, 0xB0, 0x00, 0xD8, + 0x01, 0x98, 0x01, 0x98, 0x01, 0x98, 0x03, 0x30, 0x01, 0x98, 0x03, 0x30, + 0x03, 0x18, 0x06, 0x30, 0x03, 0x1C, 0x0C, 0x30, 0x03, 0x0C, 0x0C, 0x30, + 0x03, 0x0C, 0x18, 0x60, 0x07, 0x0C, 0x30, 0x60, 0x06, 0x0C, 0x30, 0x60, + 0x06, 0x06, 0x60, 0x60, 0x06, 0x06, 0xC0, 0x60, 0x06, 0x06, 0xC0, 0xC0, + 0x0C, 0x07, 0x80, 0xC0, 0x0C, 0x03, 0x00, 0xC0, 0x0C, 0x00, 0x00, 0xC0, + 0x0C, 0x00, 0x01, 0xC0, 0x0C, 0x00, 0x01, 0x80, 0x18, 0x00, 0x01, 0x80, + 0x18, 0x00, 0x01, 0x80, 0x18, 0x00, 0x01, 0x80, 0xFF, 0x80, 0x3F, 0xE0, + 0xFF, 0x80, 0x3F, 0xE0, 0x07, 0xE0, 0x0F, 0xFC, 0x3F, 0x80, 0x3F, 0xF0, + 0x0F, 0x00, 0x06, 0x00, 0x3C, 0x00, 0x10, 0x01, 0x98, 0x00, 0xC0, 0x06, + 0x60, 0x03, 0x00, 0x19, 0xC0, 0x0C, 0x00, 0x63, 0x00, 0x30, 0x01, 0x0C, + 0x01, 0x80, 0x0C, 0x18, 0x06, 0x00, 0x30, 0x60, 0x18, 0x00, 0xC1, 0xC0, + 0x60, 0x03, 0x03, 0x01, 0x00, 0x08, 0x0C, 0x0C, 0x00, 0x60, 0x18, 0x30, + 0x01, 0x80, 0x60, 0xC0, 0x06, 0x01, 0xC3, 0x00, 0x18, 0x03, 0x18, 0x00, + 0xC0, 0x0C, 0x60, 0x03, 0x00, 0x19, 0x80, 0x0C, 0x00, 0x66, 0x00, 0x30, + 0x01, 0xD8, 0x00, 0x80, 0x03, 0xC0, 0x06, 0x00, 0x0F, 0x00, 0xFF, 0xC0, + 0x1C, 0x03, 0xFE, 0x00, 0x70, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x7F, 0xF0, + 0x00, 0xF0, 0x78, 0x03, 0x80, 0x1C, 0x07, 0x00, 0x0E, 0x0E, 0x00, 0x06, + 0x0C, 0x00, 0x06, 0x18, 0x00, 0x07, 0x38, 0x00, 0x03, 0x30, 0x00, 0x03, + 0x60, 0x00, 0x03, 0x60, 0x00, 0x03, 0x60, 0x00, 0x03, 0xC0, 0x00, 0x03, + 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x06, 0xC0, 0x00, 0x06, 0xC0, 0x00, 0x06, + 0xC0, 0x00, 0x0C, 0xC0, 0x00, 0x1C, 0xC0, 0x00, 0x18, 0x60, 0x00, 0x30, + 0x60, 0x00, 0x70, 0x70, 0x00, 0xE0, 0x38, 0x01, 0xC0, 0x1E, 0x0F, 0x00, + 0x0F, 0xFE, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xFF, 0xFC, 0x01, 0xFF, 0xFF, + 0xC0, 0x06, 0x00, 0x78, 0x01, 0x80, 0x06, 0x00, 0xC0, 0x01, 0xC0, 0x30, + 0x00, 0x30, 0x0C, 0x00, 0x0C, 0x03, 0x00, 0x03, 0x00, 0xC0, 0x01, 0xC0, + 0x60, 0x00, 0x60, 0x18, 0x00, 0x30, 0x06, 0x00, 0x18, 0x01, 0x80, 0x3C, + 0x00, 0xFF, 0xFE, 0x00, 0x3F, 0xFC, 0x00, 0x0C, 0x00, 0x00, 0x03, 0x00, + 0x00, 0x00, 0xC0, 0x00, 0x00, 0x60, 0x00, 0x00, 0x18, 0x00, 0x00, 0x06, + 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x60, 0x00, 0x00, 0x30, 0x00, 0x00, + 0xFF, 0xFC, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x7F, + 0xF0, 0x00, 0xF0, 0x78, 0x03, 0x80, 0x1C, 0x07, 0x00, 0x0E, 0x0E, 0x00, + 0x06, 0x0C, 0x00, 0x06, 0x18, 0x00, 0x03, 0x38, 0x00, 0x03, 0x30, 0x00, + 0x03, 0x60, 0x00, 0x03, 0x60, 0x00, 0x03, 0x60, 0x00, 0x03, 0xC0, 0x00, + 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x06, 0xC0, 0x00, 0x06, 0xC0, 0x00, + 0x06, 0xC0, 0x00, 0x0C, 0xC0, 0x00, 0x1C, 0xC0, 0x00, 0x18, 0x60, 0x00, + 0x30, 0x60, 0x00, 0x70, 0x30, 0x00, 0xE0, 0x38, 0x01, 0xC0, 0x0E, 0x0F, + 0x00, 0x07, 0xFE, 0x00, 0x03, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0x1F, 0xF8, + 0x30, 0x3F, 0xFF, 0xF0, 0x78, 0x0F, 0x80, 0x07, 0xFF, 0xFC, 0x01, 0xFF, + 0xFF, 0xC0, 0x06, 0x00, 0x78, 0x01, 0x80, 0x0E, 0x00, 0xC0, 0x01, 0xC0, + 0x30, 0x00, 0x30, 0x0C, 0x00, 0x0C, 0x03, 0x00, 0x03, 0x00, 0xC0, 0x00, + 0xC0, 0x60, 0x00, 0x60, 0x18, 0x00, 0x30, 0x06, 0x00, 0x38, 0x01, 0x80, + 0x3C, 0x00, 0xFF, 0xFC, 0x00, 0x3F, 0xFC, 0x00, 0x0C, 0x07, 0x80, 0x03, + 0x00, 0x70, 0x00, 0xC0, 0x0E, 0x00, 0x60, 0x01, 0x80, 0x18, 0x00, 0x70, + 0x06, 0x00, 0x0C, 0x01, 0x80, 0x03, 0x80, 0x60, 0x00, 0x60, 0x30, 0x00, + 0x1C, 0xFF, 0xE0, 0x07, 0xFF, 0xF8, 0x00, 0xF0, 0x00, 0x1F, 0xC0, 0x00, + 0x7F, 0xF3, 0x00, 0xE0, 0x3B, 0x03, 0x80, 0x0F, 0x07, 0x00, 0x0E, 0x06, + 0x00, 0x06, 0x0C, 0x00, 0x06, 0x0C, 0x00, 0x06, 0x0C, 0x00, 0x00, 0x0C, + 0x00, 0x00, 0x0E, 0x00, 0x00, 0x07, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, + 0x7F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x70, 0x00, 0x00, 0x38, 0x00, + 0x00, 0x18, 0x00, 0x00, 0x18, 0x20, 0x00, 0x18, 0x60, 0x00, 0x18, 0x60, + 0x00, 0x30, 0x60, 0x00, 0x70, 0xF0, 0x00, 0xE0, 0xF8, 0x01, 0xC0, 0xDC, + 0x07, 0x80, 0x8F, 0xFE, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0xFF, 0xFE, 0x3F, + 0xFF, 0xFE, 0x30, 0x18, 0x06, 0x60, 0x18, 0x06, 0x60, 0x18, 0x06, 0x60, + 0x38, 0x0C, 0x60, 0x30, 0x04, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x70, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, + 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x01, + 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0xFF, 0xFE, 0x00, 0xFF, + 0xFC, 0x00, 0x7F, 0xC0, 0xFF, 0xDF, 0xF0, 0x3F, 0xF1, 0x80, 0x00, 0x60, + 0x60, 0x00, 0x30, 0x18, 0x00, 0x0C, 0x06, 0x00, 0x03, 0x03, 0x80, 0x00, + 0xC0, 0xC0, 0x00, 0x30, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x06, 0x03, 0x00, + 0x01, 0x81, 0xC0, 0x00, 0x60, 0x60, 0x00, 0x18, 0x18, 0x00, 0x0C, 0x06, + 0x00, 0x03, 0x01, 0x80, 0x00, 0xC0, 0xC0, 0x00, 0x30, 0x30, 0x00, 0x1C, + 0x0C, 0x00, 0x06, 0x03, 0x00, 0x01, 0x80, 0xC0, 0x00, 0xC0, 0x30, 0x00, + 0x70, 0x0E, 0x00, 0x38, 0x01, 0xC0, 0x1C, 0x00, 0x38, 0x1E, 0x00, 0x07, + 0xFE, 0x00, 0x00, 0x7E, 0x00, 0x00, 0xFF, 0x80, 0x3F, 0xFF, 0xF0, 0x07, + 0xFC, 0xE0, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0x01, 0x80, 0x00, 0x60, 0x30, + 0x00, 0x18, 0x06, 0x00, 0x02, 0x00, 0xC0, 0x00, 0xC0, 0x0C, 0x00, 0x30, + 0x01, 0x80, 0x06, 0x00, 0x30, 0x01, 0x80, 0x06, 0x00, 0x60, 0x00, 0xC0, + 0x0C, 0x00, 0x18, 0x03, 0x00, 0x01, 0x80, 0xC0, 0x00, 0x30, 0x18, 0x00, + 0x06, 0x06, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x18, 0x30, 0x00, 0x03, 0x8C, + 0x00, 0x00, 0x31, 0x80, 0x00, 0x06, 0x60, 0x00, 0x00, 0xD8, 0x00, 0x00, + 0x1B, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x38, 0x00, 0x00, 0xFF, 0xC0, + 0x7F, 0xFF, 0xF8, 0x0F, 0xF8, 0xC0, 0x00, 0x0C, 0x18, 0x00, 0x01, 0x83, + 0x00, 0x00, 0x30, 0x60, 0x08, 0x0C, 0x0C, 0x07, 0x01, 0x81, 0x81, 0xE0, + 0x30, 0x60, 0x2C, 0x0C, 0x0C, 0x0D, 0x81, 0x81, 0x81, 0x30, 0x30, 0x30, + 0x66, 0x0C, 0x06, 0x08, 0xC1, 0x80, 0xC3, 0x0C, 0x30, 0x18, 0x41, 0x8C, + 0x03, 0x18, 0x31, 0x80, 0x62, 0x06, 0x30, 0x0C, 0xC0, 0xCC, 0x03, 0x10, + 0x19, 0x80, 0x66, 0x03, 0x30, 0x0C, 0x80, 0x6C, 0x01, 0xB0, 0x0D, 0x80, + 0x34, 0x01, 0xB0, 0x07, 0x80, 0x3C, 0x00, 0xE0, 0x07, 0x80, 0x1C, 0x00, + 0xF0, 0x00, 0x03, 0xF8, 0x03, 0xF8, 0x1F, 0xC0, 0x3F, 0xC0, 0x30, 0x00, + 0x30, 0x01, 0xC0, 0x03, 0x00, 0x06, 0x00, 0x30, 0x00, 0x18, 0x03, 0x00, + 0x00, 0xE0, 0x30, 0x00, 0x03, 0x03, 0x00, 0x00, 0x1C, 0x30, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x03, 0xB0, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x30, + 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x36, 0x00, 0x00, 0x03, 0x38, 0x00, + 0x00, 0x30, 0xC0, 0x00, 0x03, 0x07, 0x00, 0x00, 0x30, 0x18, 0x00, 0x03, + 0x00, 0x60, 0x00, 0x30, 0x03, 0x80, 0x03, 0x00, 0x0C, 0x00, 0x30, 0x00, + 0x70, 0x03, 0x00, 0x01, 0x80, 0xFF, 0x80, 0xFF, 0x07, 0xFC, 0x07, 0xF8, + 0x00, 0x7F, 0x80, 0x7F, 0x7F, 0x00, 0x7F, 0x1C, 0x00, 0x18, 0x0C, 0x00, + 0x30, 0x0C, 0x00, 0x70, 0x06, 0x00, 0xE0, 0x06, 0x00, 0xC0, 0x03, 0x01, + 0x80, 0x03, 0x03, 0x00, 0x01, 0x86, 0x00, 0x01, 0x8C, 0x00, 0x00, 0xD8, + 0x00, 0x00, 0xF0, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, + 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, + 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, + 0x00, 0xFF, 0xFE, 0x00, 0xFF, 0xFC, 0x00, 0x03, 0xFF, 0xFE, 0x07, 0xFF, + 0xF8, 0x0C, 0x00, 0x30, 0x10, 0x00, 0xC0, 0x60, 0x03, 0x80, 0xC0, 0x0E, + 0x01, 0x80, 0x38, 0x03, 0x00, 0xE0, 0x00, 0x03, 0x80, 0x00, 0x0E, 0x00, + 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x60, 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x60, 0x18, + 0x00, 0xC0, 0x60, 0x01, 0x81, 0x80, 0x02, 0x06, 0x00, 0x0C, 0x18, 0x00, + 0x18, 0x60, 0x00, 0x30, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0x80, 0x01, 0xFE, + 0x03, 0xFC, 0x06, 0x00, 0x08, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x01, + 0x80, 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0x40, 0x01, 0x80, + 0x03, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x10, 0x00, 0x60, 0x00, 0xC0, 0x01, + 0x80, 0x03, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, 0x80, + 0x03, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x20, 0x00, 0xFF, 0x01, + 0xFE, 0x00, 0xC0, 0x30, 0x0E, 0x01, 0x80, 0x60, 0x18, 0x07, 0x00, 0xC0, + 0x30, 0x0C, 0x03, 0x80, 0x60, 0x18, 0x06, 0x00, 0xC0, 0x30, 0x0C, 0x03, + 0x00, 0x60, 0x18, 0x06, 0x01, 0x80, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x18, + 0x06, 0x01, 0x80, 0x60, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x04, 0x01, 0xFE, + 0x03, 0xFC, 0x00, 0x10, 0x00, 0x60, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, + 0x04, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x03, 0x00, 0x06, + 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, + 0x06, 0x00, 0x08, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x01, 0x80, 0x06, + 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x01, 0x80, 0xFF, 0x01, + 0xFE, 0x00, 0x00, 0x10, 0x00, 0x0C, 0x00, 0x07, 0x80, 0x03, 0x60, 0x01, + 0x8C, 0x00, 0xC3, 0x80, 0xE0, 0x60, 0x70, 0x1C, 0x38, 0x03, 0x1C, 0x00, + 0x6E, 0x00, 0x1F, 0x00, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xC3, 0x86, 0x0C, 0x18, 0x70, 0xC0, 0x00, 0x3F, 0x80, 0x0F, 0xFF, 0x80, + 0x78, 0x07, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x18, 0x00, 0x00, 0x60, 0x00, + 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0x38, 0x03, 0xFC, 0xC0, 0x7F, 0xFF, + 0x07, 0xC0, 0x0C, 0x38, 0x00, 0x31, 0xC0, 0x01, 0xCE, 0x00, 0x06, 0x30, + 0x00, 0x18, 0xC0, 0x00, 0xE3, 0x00, 0x07, 0x8E, 0x00, 0x7C, 0x1C, 0x0F, + 0x3F, 0x3F, 0xF0, 0xFC, 0x7F, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x7C, + 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x30, 0x00, 0x00, 0x06, 0x00, 0x00, + 0x00, 0xC0, 0x00, 0x00, 0x10, 0x00, 0x00, 0x06, 0x07, 0xE0, 0x00, 0xC3, + 0xFF, 0x00, 0x19, 0xC0, 0xF0, 0x03, 0x60, 0x07, 0x00, 0xD8, 0x00, 0x60, + 0x1E, 0x00, 0x0E, 0x03, 0x80, 0x00, 0xC0, 0x60, 0x00, 0x18, 0x0C, 0x00, + 0x03, 0x03, 0x00, 0x00, 0x60, 0x60, 0x00, 0x0C, 0x0C, 0x00, 0x01, 0x81, + 0x80, 0x00, 0x60, 0x70, 0x00, 0x0C, 0x0E, 0x00, 0x03, 0x01, 0xC0, 0x00, + 0x60, 0x3C, 0x00, 0x18, 0x05, 0x80, 0x06, 0x01, 0xB8, 0x01, 0x83, 0xF3, + 0xC1, 0xE0, 0x7E, 0x3F, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x3F, 0x00, + 0x07, 0xFF, 0x30, 0x38, 0x0F, 0xC1, 0x80, 0x1F, 0x0C, 0x00, 0x18, 0x60, + 0x00, 0x63, 0x00, 0x01, 0x9C, 0x00, 0x06, 0x60, 0x00, 0x01, 0x80, 0x00, + 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x0C, + 0x00, 0x00, 0x30, 0x00, 0x00, 0xE0, 0x00, 0x01, 0x80, 0x00, 0xC7, 0x00, + 0x0E, 0x0F, 0x01, 0xF0, 0x1F, 0xFF, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x00, + 0x1F, 0x80, 0x00, 0x0F, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x60, 0x00, + 0x00, 0x30, 0x00, 0x00, 0x10, 0x00, 0x00, 0x18, 0x00, 0xFC, 0x0C, 0x01, + 0xFF, 0x86, 0x01, 0xC0, 0xE3, 0x03, 0x80, 0x1B, 0x03, 0x80, 0x05, 0x81, + 0x80, 0x03, 0xC1, 0x80, 0x00, 0xE1, 0x80, 0x00, 0x60, 0xC0, 0x00, 0x30, + 0x60, 0x00, 0x18, 0x60, 0x00, 0x0C, 0x30, 0x00, 0x06, 0x18, 0x00, 0x02, + 0x0C, 0x00, 0x03, 0x06, 0x00, 0x01, 0x83, 0x00, 0x01, 0xC1, 0xC0, 0x01, + 0xE0, 0x60, 0x01, 0xE0, 0x38, 0x01, 0xB0, 0x0F, 0x03, 0x9F, 0x03, 0xFF, + 0x0F, 0x80, 0x7E, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x07, 0xFF, 0x80, 0x78, + 0x0F, 0x03, 0x80, 0x0E, 0x1C, 0x00, 0x18, 0xE0, 0x00, 0x73, 0x00, 0x00, + 0xD8, 0x00, 0x03, 0x60, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x00, 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x38, 0x00, + 0x00, 0x60, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, 0x03, 0x07, 0x80, 0xF8, + 0x0F, 0xFF, 0x80, 0x0F, 0xF0, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, 0xFF, + 0xF0, 0x00, 0xF0, 0x00, 0x00, 0x70, 0x00, 0x00, 0x18, 0x00, 0x00, 0x06, + 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x07, 0xFF, 0xFC, 0x03, + 0xFF, 0xFF, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x60, 0x00, + 0x00, 0x18, 0x00, 0x00, 0x06, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0xC0, + 0x00, 0x00, 0x30, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, + 0x80, 0x00, 0x00, 0x60, 0x00, 0x00, 0x18, 0x00, 0x00, 0x06, 0x00, 0x00, + 0x01, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x0F, 0xFF, 0xFC, 0x03, 0xFF, 0xFE, + 0x00, 0x00, 0x7E, 0x00, 0x00, 0xFF, 0x87, 0xC1, 0xE0, 0xF3, 0xE1, 0xC0, + 0x1B, 0x01, 0xC0, 0x07, 0x81, 0xC0, 0x03, 0xC0, 0xC0, 0x00, 0xE0, 0xC0, + 0x00, 0x60, 0x60, 0x00, 0x30, 0x60, 0x00, 0x18, 0x30, 0x00, 0x0C, 0x18, + 0x00, 0x06, 0x0C, 0x00, 0x06, 0x06, 0x00, 0x03, 0x03, 0x00, 0x03, 0x81, + 0xC0, 0x01, 0xC0, 0x60, 0x01, 0xC0, 0x38, 0x03, 0x60, 0x0F, 0x07, 0x30, + 0x03, 0xFF, 0x18, 0x00, 0x7E, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x06, + 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x01, + 0x80, 0x00, 0x03, 0x80, 0x03, 0xFF, 0x80, 0x01, 0xFF, 0x00, 0x00, 0x07, + 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, + 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x01, 0x83, 0xF0, 0x01, + 0x8F, 0xF8, 0x01, 0x98, 0x1C, 0x03, 0xB0, 0x0E, 0x03, 0x40, 0x06, 0x03, + 0x80, 0x06, 0x03, 0x00, 0x06, 0x03, 0x00, 0x06, 0x07, 0x00, 0x06, 0x06, + 0x00, 0x0E, 0x06, 0x00, 0x0E, 0x06, 0x00, 0x0E, 0x06, 0x00, 0x0C, 0x0C, + 0x00, 0x0C, 0x0C, 0x00, 0x1C, 0x0C, 0x00, 0x1C, 0x0C, 0x00, 0x18, 0x0C, + 0x00, 0x18, 0x18, 0x00, 0x18, 0xFF, 0x01, 0xFF, 0xFF, 0x01, 0xFF, 0x00, + 0x07, 0x00, 0x00, 0xC0, 0x00, 0x38, 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x1F, + 0xF0, 0x00, 0x06, 0x00, 0x01, 0xC0, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, + 0xC0, 0x00, 0x18, 0x00, 0x07, 0x00, 0x00, 0xC0, 0x00, 0x18, 0x00, 0x03, + 0x00, 0x00, 0x60, 0x00, 0x1C, 0x00, 0x03, 0x00, 0x00, 0x60, 0x00, 0x0C, + 0x00, 0x01, 0x80, 0x7F, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x70, 0x00, + 0x07, 0x00, 0x00, 0x70, 0x00, 0x06, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x03, 0xFF, 0xF0, + 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0x60, 0x00, 0x06, + 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, 0xC0, 0x00, 0x0C, 0x00, 0x00, + 0xC0, 0x00, 0x0C, 0x00, 0x01, 0xC0, 0x00, 0x18, 0x00, 0x01, 0x80, 0x00, + 0x18, 0x00, 0x01, 0x80, 0x00, 0x38, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, + 0x03, 0x00, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, + 0x03, 0x80, 0xFF, 0xF0, 0x0F, 0xFC, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xE0, + 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, + 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0xFF, 0x00, 0xC1, + 0xFF, 0x00, 0x80, 0x70, 0x01, 0x80, 0xC0, 0x01, 0x83, 0x80, 0x01, 0x87, + 0x00, 0x01, 0x8C, 0x00, 0x03, 0x38, 0x00, 0x03, 0x70, 0x00, 0x03, 0xF8, + 0x00, 0x03, 0x9C, 0x00, 0x03, 0x0C, 0x00, 0x06, 0x0E, 0x00, 0x06, 0x07, + 0x00, 0x06, 0x03, 0x80, 0x06, 0x01, 0x80, 0x04, 0x00, 0xC0, 0x0C, 0x00, + 0xE0, 0xFC, 0x03, 0xFE, 0xFC, 0x03, 0xFC, 0x01, 0xFF, 0x00, 0x3F, 0xE0, + 0x00, 0x0C, 0x00, 0x03, 0x00, 0x00, 0x60, 0x00, 0x0C, 0x00, 0x01, 0x80, + 0x00, 0x70, 0x00, 0x0C, 0x00, 0x01, 0x80, 0x00, 0x30, 0x00, 0x06, 0x00, + 0x01, 0x80, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0xC0, 0x00, 0x18, 0x00, + 0x06, 0x00, 0x00, 0xC0, 0x00, 0x18, 0x00, 0x03, 0x00, 0x00, 0xE0, 0x00, + 0x18, 0x00, 0x03, 0x00, 0x00, 0x60, 0x00, 0x0C, 0x03, 0xFF, 0xFF, 0xFF, + 0xFF, 0xF0, 0x00, 0x1E, 0x07, 0x81, 0xE7, 0xE1, 0xF8, 0x3D, 0x8E, 0xE3, + 0x81, 0xE0, 0xF8, 0x30, 0x38, 0x1E, 0x06, 0x06, 0x03, 0x80, 0xC1, 0x80, + 0x60, 0x18, 0x30, 0x0C, 0x03, 0x06, 0x01, 0x80, 0x60, 0xC0, 0x30, 0x08, + 0x18, 0x0C, 0x03, 0x06, 0x01, 0x80, 0x60, 0xC0, 0x30, 0x0C, 0x18, 0x06, + 0x01, 0x83, 0x00, 0x80, 0x60, 0x40, 0x30, 0x0C, 0x18, 0x06, 0x01, 0x83, + 0x00, 0xC0, 0x30, 0x60, 0x18, 0x06, 0x7F, 0x03, 0xC1, 0xFF, 0xE0, 0xF8, + 0x3E, 0x00, 0x03, 0xE0, 0x1F, 0x1F, 0xF0, 0x3E, 0x60, 0x70, 0x0F, 0x80, + 0x70, 0x3C, 0x00, 0x60, 0x70, 0x00, 0xC0, 0xC0, 0x01, 0x81, 0x80, 0x03, + 0x07, 0x00, 0x06, 0x0C, 0x00, 0x1C, 0x18, 0x00, 0x30, 0x30, 0x00, 0x60, + 0x60, 0x00, 0xC1, 0xC0, 0x01, 0x83, 0x00, 0x06, 0x06, 0x00, 0x0C, 0x0C, + 0x00, 0x18, 0x18, 0x00, 0x30, 0x70, 0x00, 0x67, 0xFC, 0x07, 0xFF, 0xF0, + 0x0F, 0xE0, 0x00, 0x3F, 0x00, 0x07, 0xFF, 0x00, 0x3C, 0x0F, 0x01, 0xC0, + 0x1C, 0x0C, 0x00, 0x38, 0x60, 0x00, 0x63, 0x00, 0x00, 0xDC, 0x00, 0x03, + 0x60, 0x00, 0x0D, 0x80, 0x00, 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, + 0x00, 0x1B, 0x00, 0x00, 0x6C, 0x00, 0x03, 0xB0, 0x00, 0x0C, 0x60, 0x00, + 0x61, 0xC0, 0x03, 0x03, 0x80, 0x38, 0x0F, 0x03, 0xC0, 0x0F, 0xFE, 0x00, + 0x0F, 0xC0, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x1F, 0x8F, 0xFE, 0x00, 0xFC, + 0xE0, 0x78, 0x00, 0xCC, 0x00, 0xE0, 0x06, 0xC0, 0x03, 0x00, 0x3C, 0x00, + 0x1C, 0x01, 0xC0, 0x00, 0x60, 0x0C, 0x00, 0x03, 0x00, 0xE0, 0x00, 0x18, + 0x06, 0x00, 0x00, 0xC0, 0x30, 0x00, 0x06, 0x01, 0x80, 0x00, 0x30, 0x0C, + 0x00, 0x03, 0x00, 0xE0, 0x00, 0x18, 0x07, 0x00, 0x01, 0x80, 0x3C, 0x00, + 0x1C, 0x01, 0xE0, 0x01, 0xC0, 0x0D, 0x80, 0x1C, 0x00, 0xCF, 0x03, 0xC0, + 0x06, 0x3F, 0xF8, 0x00, 0x30, 0x7F, 0x00, 0x01, 0x80, 0x00, 0x00, 0x0C, + 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, + 0x00, 0x01, 0x80, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x07, 0xFF, 0x00, 0x00, + 0x7F, 0xF8, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7F, 0xE1, 0xF0, 0x78, + 0x1C, 0xFC, 0x38, 0x01, 0xB0, 0x1C, 0x00, 0x2C, 0x0E, 0x00, 0x0F, 0x03, + 0x00, 0x01, 0xC1, 0x80, 0x00, 0x60, 0x60, 0x00, 0x18, 0x30, 0x00, 0x06, + 0x0C, 0x00, 0x01, 0x83, 0x00, 0x00, 0x60, 0xC0, 0x00, 0x30, 0x30, 0x00, + 0x0C, 0x0C, 0x00, 0x07, 0x03, 0x80, 0x03, 0xC0, 0x60, 0x01, 0xB0, 0x1C, + 0x00, 0xD8, 0x03, 0xC0, 0xE6, 0x00, 0x7F, 0xF1, 0x80, 0x07, 0xE0, 0x60, + 0x00, 0x00, 0x18, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0xC0, 0x00, 0x00, 0x30, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x06, 0x00, 0x00, + 0x7F, 0xF8, 0x00, 0x1F, 0xFE, 0x00, 0x07, 0xF0, 0x3E, 0x03, 0xF8, 0x7F, + 0xC0, 0x18, 0xF0, 0x60, 0x0C, 0xE0, 0x00, 0x07, 0xE0, 0x00, 0x03, 0xC0, + 0x00, 0x03, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x60, + 0x00, 0x00, 0x30, 0x00, 0x00, 0x38, 0x00, 0x00, 0x18, 0x00, 0x00, 0x0C, + 0x00, 0x00, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x80, 0x00, 0x01, + 0x80, 0x00, 0x3F, 0xFF, 0xF0, 0x1F, 0xFF, 0xF0, 0x00, 0x00, 0x3F, 0x00, + 0x0F, 0xFE, 0xC0, 0xF0, 0x3E, 0x0E, 0x00, 0x70, 0xE0, 0x01, 0x06, 0x00, + 0x08, 0x30, 0x00, 0x41, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x3F, 0xF0, 0x00, + 0x3F, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x18, 0x00, 0x00, + 0xCC, 0x00, 0x06, 0x60, 0x00, 0x33, 0x00, 0x03, 0x3C, 0x00, 0x71, 0xF8, + 0x0F, 0x0D, 0xFF, 0xF0, 0x01, 0xFC, 0x00, 0x03, 0x00, 0x03, 0x00, 0x01, + 0x80, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x70, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, + 0x0C, 0x00, 0x06, 0x00, 0x06, 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0xC0, + 0x00, 0xE0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x18, 0x00, 0x0C, 0x00, 0x0E, + 0x00, 0x06, 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0xC0, 0x03, 0x38, 0x0F, + 0x9F, 0xFF, 0x03, 0xF8, 0x00, 0xFC, 0x03, 0xFF, 0xE0, 0x1F, 0xC6, 0x00, + 0x0C, 0x30, 0x00, 0x61, 0x80, 0x03, 0x0C, 0x00, 0x18, 0x60, 0x01, 0x86, + 0x00, 0x0C, 0x30, 0x00, 0x61, 0x80, 0x03, 0x0C, 0x00, 0x18, 0x60, 0x01, + 0x86, 0x00, 0x0C, 0x30, 0x00, 0x61, 0x80, 0x03, 0x0C, 0x00, 0x38, 0x60, + 0x07, 0x83, 0x80, 0x6C, 0x1E, 0x1E, 0x7C, 0x7F, 0xE3, 0xE0, 0xF8, 0x00, + 0x00, 0x7F, 0xC0, 0xFF, 0xFF, 0xF0, 0x3F, 0xF1, 0xC0, 0x00, 0xC0, 0x30, + 0x00, 0x60, 0x0C, 0x00, 0x18, 0x03, 0x00, 0x0C, 0x00, 0xE0, 0x06, 0x00, + 0x18, 0x01, 0x80, 0x06, 0x00, 0xC0, 0x01, 0x80, 0x30, 0x00, 0x60, 0x18, + 0x00, 0x0C, 0x0C, 0x00, 0x03, 0x03, 0x00, 0x00, 0xC1, 0x80, 0x00, 0x30, + 0xC0, 0x00, 0x06, 0x30, 0x00, 0x01, 0x98, 0x00, 0x00, 0x6C, 0x00, 0x00, + 0x1F, 0x00, 0x00, 0x07, 0x80, 0x00, 0xFE, 0x00, 0x7F, 0xFF, 0x00, 0x3F, + 0xCC, 0x00, 0x03, 0x06, 0x00, 0x01, 0x83, 0x00, 0x01, 0x81, 0x81, 0x80, + 0xC0, 0xC1, 0xE0, 0x60, 0x60, 0xF0, 0x60, 0x30, 0xD8, 0x30, 0x18, 0x6C, + 0x30, 0x0C, 0x66, 0x18, 0x06, 0x33, 0x18, 0x03, 0x31, 0x8C, 0x01, 0x98, + 0x66, 0x00, 0xD8, 0x36, 0x00, 0x6C, 0x1B, 0x00, 0x3C, 0x0F, 0x00, 0x1E, + 0x07, 0x80, 0x0E, 0x03, 0x80, 0x07, 0x01, 0xC0, 0x00, 0x07, 0xF0, 0x3F, + 0xC3, 0xFC, 0x0F, 0xF0, 0x38, 0x00, 0x60, 0x07, 0x00, 0x70, 0x00, 0xE0, + 0x38, 0x00, 0x18, 0x1C, 0x00, 0x03, 0x0C, 0x00, 0x00, 0xEE, 0x00, 0x00, + 0x1F, 0x00, 0x00, 0x03, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xDC, 0x00, + 0x00, 0xE3, 0x80, 0x00, 0x70, 0x70, 0x00, 0x38, 0x0E, 0x00, 0x18, 0x01, + 0x80, 0x1C, 0x00, 0x30, 0x0E, 0x00, 0x0E, 0x0F, 0xF0, 0x3F, 0xE3, 0xFC, + 0x0F, 0xF8, 0x03, 0xF8, 0x07, 0xF8, 0x3F, 0xC0, 0x3F, 0xC0, 0x60, 0x00, + 0x30, 0x01, 0x80, 0x01, 0x80, 0x0C, 0x00, 0x18, 0x00, 0x60, 0x01, 0x80, + 0x03, 0x80, 0x0C, 0x00, 0x0C, 0x00, 0xC0, 0x00, 0x60, 0x0C, 0x00, 0x03, + 0x00, 0x60, 0x00, 0x0C, 0x06, 0x00, 0x00, 0x60, 0x60, 0x00, 0x03, 0x06, + 0x00, 0x00, 0x1C, 0x30, 0x00, 0x00, 0x63, 0x00, 0x00, 0x03, 0x30, 0x00, + 0x00, 0x19, 0x80, 0x00, 0x00, 0x78, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, + 0x1C, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x60, + 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x03, 0x00, 0x00, + 0x00, 0x30, 0x00, 0x01, 0xFF, 0xF8, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0x00, + 0x07, 0xFF, 0xF8, 0x3F, 0xFF, 0xC3, 0x00, 0x0C, 0x18, 0x00, 0xC0, 0xC0, + 0x0C, 0x00, 0x00, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, + 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x18, 0x00, 0x01, 0x80, + 0x00, 0x18, 0x00, 0x01, 0x80, 0x0C, 0x18, 0x00, 0x61, 0x80, 0x02, 0x1F, + 0xFF, 0xF0, 0xFF, 0xFF, 0x80, 0x00, 0x0E, 0x00, 0x7C, 0x01, 0xC0, 0x03, + 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x01, 0xC0, 0x03, 0x00, + 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x60, 0x01, 0xC0, 0x0F, 0x00, 0xF8, + 0x01, 0xF0, 0x00, 0x30, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x03, 0x80, + 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0xE0, 0x01, 0x80, 0x03, + 0x00, 0x06, 0x00, 0x0E, 0x00, 0x0F, 0x00, 0x0E, 0x00, 0x01, 0x80, 0xC0, + 0x60, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x06, 0x03, 0x01, 0x80, 0xC0, 0x40, + 0x60, 0x30, 0x18, 0x0C, 0x0C, 0x06, 0x03, 0x01, 0x80, 0xC0, 0xC0, 0x60, + 0x30, 0x18, 0x08, 0x0C, 0x06, 0x03, 0x01, 0x80, 0x80, 0xC0, 0x60, 0x30, + 0x00, 0x01, 0xC0, 0x03, 0xC0, 0x01, 0xC0, 0x01, 0x80, 0x03, 0x00, 0x06, + 0x00, 0x0C, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, + 0x0C, 0x00, 0x18, 0x00, 0x38, 0x00, 0x38, 0x00, 0x3E, 0x00, 0x7C, 0x03, + 0xC0, 0x0E, 0x00, 0x18, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, + 0x06, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x03, 0x00, 0x0E, + 0x00, 0xF8, 0x01, 0xC0, 0x00, 0x0F, 0x00, 0x01, 0xFC, 0x03, 0x70, 0xE0, + 0x7E, 0x07, 0x1E, 0xC0, 0x3F, 0x80, 0x01, 0xE0}; + +const GFXglyph FreeMonoOblique24pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 28, 0, 1}, // 0x20 ' ' + {0, 10, 30, 28, 12, -28}, // 0x21 '!' + {38, 16, 14, 28, 10, -28}, // 0x22 '"' + {66, 22, 32, 28, 6, -29}, // 0x23 '#' + {154, 21, 33, 28, 6, -29}, // 0x24 '$' + {241, 22, 29, 28, 6, -27}, // 0x25 '%' + {321, 19, 25, 28, 6, -23}, // 0x26 '&' + {381, 7, 14, 28, 16, -28}, // 0x27 ''' + {394, 11, 34, 28, 16, -27}, // 0x28 '(' + {441, 11, 34, 28, 7, -27}, // 0x29 ')' + {488, 18, 17, 28, 10, -28}, // 0x2A '*' + {527, 22, 22, 28, 6, -23}, // 0x2B '+' + {588, 12, 14, 28, 5, -6}, // 0x2C ',' + {609, 22, 2, 28, 6, -13}, // 0x2D '-' + {615, 7, 6, 28, 11, -4}, // 0x2E '.' + {621, 24, 35, 28, 5, -30}, // 0x2F '/' + {726, 20, 30, 28, 7, -28}, // 0x30 '0' + {801, 17, 29, 28, 6, -28}, // 0x31 '1' + {863, 23, 29, 28, 4, -28}, // 0x32 '2' + {947, 22, 30, 28, 5, -28}, // 0x33 '3' + {1030, 19, 28, 28, 7, -27}, // 0x34 '4' + {1097, 21, 29, 28, 6, -27}, // 0x35 '5' + {1174, 21, 30, 28, 9, -28}, // 0x36 '6' + {1253, 18, 28, 28, 10, -27}, // 0x37 '7' + {1316, 20, 30, 28, 7, -28}, // 0x38 '8' + {1391, 22, 30, 28, 6, -28}, // 0x39 '9' + {1474, 10, 21, 28, 11, -19}, // 0x3A ':' + {1501, 15, 27, 28, 5, -19}, // 0x3B ';' + {1552, 23, 22, 28, 6, -23}, // 0x3C '<' + {1616, 25, 9, 28, 4, -17}, // 0x3D '=' + {1645, 24, 22, 28, 4, -23}, // 0x3E '>' + {1711, 16, 28, 28, 11, -26}, // 0x3F '?' + {1767, 19, 32, 28, 7, -28}, // 0x40 '@' + {1843, 27, 26, 28, 1, -25}, // 0x41 'A' + {1931, 26, 26, 28, 2, -25}, // 0x42 'B' + {2016, 25, 28, 28, 5, -26}, // 0x43 'C' + {2104, 26, 26, 28, 2, -25}, // 0x44 'D' + {2189, 27, 26, 28, 2, -25}, // 0x45 'E' + {2277, 28, 26, 28, 2, -25}, // 0x46 'F' + {2368, 25, 28, 28, 5, -26}, // 0x47 'G' + {2456, 27, 26, 28, 3, -25}, // 0x48 'H' + {2544, 22, 26, 28, 6, -25}, // 0x49 'I' + {2616, 28, 27, 28, 5, -25}, // 0x4A 'J' + {2711, 29, 26, 28, 2, -25}, // 0x4B 'K' + {2806, 25, 26, 28, 3, -25}, // 0x4C 'L' + {2888, 32, 26, 28, 1, -25}, // 0x4D 'M' + {2992, 30, 26, 28, 2, -25}, // 0x4E 'N' + {3090, 24, 28, 28, 5, -26}, // 0x4F 'O' + {3174, 26, 26, 28, 2, -25}, // 0x50 'P' + {3259, 24, 32, 28, 5, -26}, // 0x51 'Q' + {3355, 26, 26, 28, 2, -25}, // 0x52 'R' + {3440, 24, 28, 28, 5, -26}, // 0x53 'S' + {3524, 24, 26, 28, 7, -25}, // 0x54 'T' + {3602, 26, 27, 28, 6, -25}, // 0x55 'U' + {3690, 27, 26, 28, 6, -25}, // 0x56 'V' + {3778, 27, 26, 28, 6, -25}, // 0x57 'W' + {3866, 29, 26, 28, 2, -25}, // 0x58 'X' + {3961, 24, 26, 28, 7, -25}, // 0x59 'Y' + {4039, 23, 26, 28, 5, -25}, // 0x5A 'Z' + {4114, 15, 34, 28, 12, -27}, // 0x5B '[' + {4178, 10, 35, 28, 12, -30}, // 0x5C '\' + {4222, 15, 34, 28, 6, -27}, // 0x5D ']' + {4286, 18, 12, 28, 9, -28}, // 0x5E '^' + {4313, 28, 2, 28, -1, 5}, // 0x5F '_' + {4320, 6, 7, 28, 13, -29}, // 0x60 '`' + {4326, 22, 22, 28, 4, -20}, // 0x61 'a' + {4387, 27, 29, 28, 1, -27}, // 0x62 'b' + {4485, 22, 22, 28, 6, -20}, // 0x63 'c' + {4546, 25, 29, 28, 5, -27}, // 0x64 'd' + {4637, 22, 22, 28, 5, -20}, // 0x65 'e' + {4698, 26, 28, 28, 5, -27}, // 0x66 'f' + {4789, 25, 30, 28, 5, -20}, // 0x67 'g' + {4883, 24, 28, 28, 3, -27}, // 0x68 'h' + {4967, 19, 29, 28, 5, -28}, // 0x69 'i' + {5036, 20, 38, 28, 4, -28}, // 0x6A 'j' + {5131, 24, 28, 28, 3, -27}, // 0x6B 'k' + {5215, 19, 28, 28, 5, -27}, // 0x6C 'l' + {5282, 27, 21, 28, 1, -20}, // 0x6D 'm' + {5353, 23, 21, 28, 3, -20}, // 0x6E 'n' + {5414, 22, 22, 28, 5, -20}, // 0x6F 'o' + {5475, 29, 30, 28, -1, -20}, // 0x70 'p' + {5584, 26, 30, 28, 5, -20}, // 0x71 'q' + {5682, 25, 20, 28, 4, -19}, // 0x72 'r' + {5745, 21, 22, 28, 5, -20}, // 0x73 's' + {5803, 17, 27, 28, 7, -25}, // 0x74 't' + {5861, 21, 21, 28, 6, -19}, // 0x75 'u' + {5917, 26, 20, 28, 5, -19}, // 0x76 'v' + {5982, 25, 20, 28, 6, -19}, // 0x77 'w' + {6045, 26, 20, 28, 3, -19}, // 0x78 'x' + {6110, 29, 29, 28, 1, -19}, // 0x79 'y' + {6216, 21, 20, 28, 5, -19}, // 0x7A 'z' + {6269, 15, 34, 28, 10, -27}, // 0x7B '{' + {6333, 9, 35, 28, 12, -28}, // 0x7C '|' + {6373, 15, 34, 28, 8, -27}, // 0x7D '}' + {6437, 20, 6, 28, 7, -15}}; // 0x7E '~' + +const GFXfont FreeMonoOblique24pt7b PROGMEM = { + (uint8_t *)FreeMonoOblique24pt7bBitmaps, + (GFXglyph *)FreeMonoOblique24pt7bGlyphs, 0x20, 0x7E, 47}; + +// Approx. 7124 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoOblique9pt7b.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoOblique9pt7b.h new file mode 100644 index 0000000..1e82964 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoOblique9pt7b.h @@ -0,0 +1,189 @@ +#pragma once +#include + +const uint8_t FreeMonoOblique9pt7bBitmaps[] PROGMEM = { + 0x11, 0x22, 0x24, 0x40, 0x00, 0xC0, 0xDE, 0xE5, 0x29, 0x00, 0x09, 0x05, + 0x02, 0x82, 0x47, 0xF8, 0xA0, 0x51, 0xFE, 0x28, 0x14, 0x0A, 0x09, 0x00, + 0x08, 0x1D, 0x23, 0x40, 0x70, 0x1C, 0x02, 0x82, 0x84, 0x78, 0x20, 0x20, + 0x1C, 0x11, 0x08, 0x83, 0x80, 0x18, 0x71, 0xC0, 0x1C, 0x11, 0x08, 0x83, + 0x80, 0x1E, 0x60, 0x81, 0x03, 0x0A, 0x65, 0x46, 0x88, 0xE8, 0xFA, 0x80, + 0x12, 0x24, 0x48, 0x88, 0x88, 0x88, 0x80, 0x01, 0x11, 0x11, 0x11, 0x22, + 0x44, 0x80, 0x10, 0x22, 0x5B, 0xC3, 0x0A, 0x22, 0x00, 0x04, 0x02, 0x02, + 0x1F, 0xF0, 0x80, 0x40, 0x20, 0x00, 0x36, 0x4C, 0x80, 0xFF, 0x80, 0xF0, + 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, + 0x08, 0x08, 0x00, 0x1C, 0x45, 0x0A, 0x18, 0x30, 0x61, 0x42, 0x85, 0x11, + 0xC0, 0x04, 0x38, 0x90, 0x20, 0x81, 0x02, 0x04, 0x08, 0x23, 0xF8, 0x07, + 0x04, 0xC4, 0x20, 0x10, 0x10, 0x30, 0x20, 0x20, 0x60, 0x40, 0x3F, 0x80, + 0x0F, 0x00, 0x40, 0x20, 0x20, 0x60, 0x18, 0x04, 0x02, 0x01, 0x43, 0x1E, + 0x00, 0x03, 0x05, 0x0A, 0x12, 0x22, 0x22, 0x42, 0x7F, 0x04, 0x04, 0x1E, + 0x1F, 0x88, 0x08, 0x05, 0xC3, 0x30, 0x08, 0x04, 0x02, 0x02, 0x42, 0x1E, + 0x00, 0x07, 0x18, 0x20, 0x40, 0x5C, 0xA6, 0xC2, 0x82, 0x82, 0xC4, 0x78, + 0xFF, 0x04, 0x10, 0x20, 0x82, 0x04, 0x10, 0x20, 0x81, 0x00, 0x1E, 0x23, + 0x41, 0x41, 0x62, 0x1C, 0x66, 0x82, 0x82, 0x84, 0x78, 0x1E, 0x23, 0x41, + 0x41, 0x43, 0x65, 0x3A, 0x02, 0x04, 0x18, 0xE0, 0x6C, 0x00, 0x36, 0x18, + 0xC0, 0x00, 0x19, 0x8C, 0xC4, 0x00, 0x01, 0x83, 0x06, 0x0C, 0x06, 0x00, + 0x80, 0x30, 0x04, 0xFF, 0x80, 0x00, 0x1F, 0xF0, 0x20, 0x0C, 0x01, 0x00, + 0x60, 0x20, 0x60, 0xC1, 0x80, 0x3D, 0x8E, 0x08, 0x10, 0xC6, 0x08, 0x00, + 0x01, 0x80, 0x1C, 0x45, 0x0A, 0x79, 0x34, 0x69, 0x4E, 0x81, 0x03, 0x03, + 0xC0, 0x0F, 0x00, 0x60, 0x12, 0x02, 0x40, 0x88, 0x21, 0x07, 0xE1, 0x04, + 0x20, 0x5E, 0x3C, 0x3F, 0x84, 0x11, 0x04, 0x82, 0x3F, 0x88, 0x32, 0x04, + 0x81, 0x60, 0xBF, 0xC0, 0x1E, 0x98, 0xD0, 0x28, 0x08, 0x04, 0x02, 0x01, + 0x00, 0x41, 0x1F, 0x00, 0x3F, 0x0C, 0x22, 0x04, 0x81, 0x20, 0x48, 0x12, + 0x09, 0x02, 0x43, 0x3F, 0x00, 0x3F, 0xC4, 0x11, 0x00, 0x88, 0x3E, 0x08, + 0x82, 0x00, 0x82, 0x60, 0xBF, 0xE0, 0x3F, 0xE2, 0x08, 0x40, 0x11, 0x03, + 0xE0, 0x44, 0x08, 0x01, 0x00, 0x60, 0x1F, 0x00, 0x1E, 0x98, 0xD0, 0x08, + 0x08, 0x04, 0x7A, 0x05, 0x02, 0x41, 0x1F, 0x00, 0x3D, 0xE2, 0x18, 0x42, + 0x08, 0x43, 0xF8, 0x41, 0x08, 0x21, 0x08, 0x21, 0x1E, 0xF0, 0x3F, 0x82, + 0x02, 0x01, 0x00, 0x80, 0x40, 0x20, 0x20, 0x10, 0x7F, 0x00, 0x0F, 0xE0, + 0x20, 0x04, 0x00, 0x80, 0x10, 0x02, 0x20, 0x84, 0x10, 0x84, 0x0F, 0x00, + 0x3C, 0xE2, 0x10, 0x44, 0x11, 0x02, 0xC0, 0x64, 0x08, 0x81, 0x08, 0x61, + 0x1E, 0x38, 0x3E, 0x02, 0x00, 0x80, 0x20, 0x10, 0x04, 0x01, 0x04, 0x42, + 0x10, 0xBF, 0xE0, 0x38, 0x38, 0xC3, 0x05, 0x28, 0x29, 0x42, 0x52, 0x13, + 0x10, 0x99, 0x84, 0x08, 0x20, 0x47, 0x8F, 0x00, 0x70, 0xE6, 0x08, 0xA1, + 0x14, 0x22, 0x48, 0x49, 0x11, 0x22, 0x14, 0x43, 0x1E, 0x20, 0x1E, 0x18, + 0x90, 0x28, 0x18, 0x0C, 0x06, 0x05, 0x02, 0x46, 0x1E, 0x00, 0x3F, 0x84, + 0x31, 0x04, 0x81, 0x20, 0x8F, 0xC2, 0x00, 0x80, 0x60, 0x3E, 0x00, 0x1E, + 0x18, 0x90, 0x28, 0x18, 0x0C, 0x06, 0x05, 0x02, 0x46, 0x1E, 0x08, 0x0F, + 0x44, 0x60, 0x3F, 0x84, 0x31, 0x04, 0x81, 0x20, 0x8F, 0xC2, 0x10, 0x84, + 0x60, 0xBC, 0x10, 0x0F, 0x88, 0xC8, 0x24, 0x01, 0x80, 0x38, 0x05, 0x02, + 0xC2, 0x5E, 0x00, 0xFF, 0xC4, 0x44, 0x02, 0x01, 0x00, 0x80, 0x40, 0x60, + 0x20, 0x7E, 0x00, 0xF1, 0xD0, 0x24, 0x09, 0x02, 0x41, 0xA0, 0x48, 0x12, + 0x04, 0xC6, 0x1F, 0x00, 0xF1, 0xE8, 0x11, 0x02, 0x20, 0x82, 0x20, 0x44, + 0x09, 0x01, 0x40, 0x28, 0x02, 0x00, 0xF1, 0xE8, 0x09, 0x12, 0x26, 0x45, + 0x48, 0xAA, 0x29, 0x45, 0x28, 0xC6, 0x18, 0xC0, 0x38, 0xE2, 0x08, 0x26, + 0x05, 0x00, 0x40, 0x18, 0x04, 0x81, 0x08, 0x41, 0x1C, 0x70, 0xE3, 0xA0, + 0x90, 0x84, 0x81, 0x80, 0x80, 0x40, 0x20, 0x20, 0x7E, 0x00, 0x3F, 0x90, + 0x88, 0x80, 0x80, 0x80, 0x80, 0x80, 0x82, 0x82, 0x7F, 0x00, 0x39, 0x08, + 0x44, 0x21, 0x08, 0x42, 0x21, 0x0E, 0x00, 0x88, 0x44, 0x44, 0x22, 0x22, + 0x11, 0x11, 0x38, 0x42, 0x11, 0x08, 0x42, 0x10, 0x84, 0x2E, 0x00, 0x08, + 0x28, 0x92, 0x18, 0x20, 0xFF, 0xC0, 0xA4, 0x3E, 0x00, 0x80, 0x47, 0xA4, + 0x34, 0x12, 0x18, 0xF7, 0x38, 0x01, 0x00, 0x40, 0x09, 0xE1, 0xC6, 0x20, + 0x44, 0x09, 0x01, 0x30, 0x46, 0x13, 0xBC, 0x00, 0x1F, 0x48, 0x74, 0x0A, + 0x00, 0x80, 0x20, 0x0C, 0x18, 0xF8, 0x01, 0x80, 0x40, 0x23, 0x96, 0x32, + 0x0A, 0x05, 0x02, 0x81, 0x61, 0x1F, 0xE0, 0x1F, 0x30, 0xD0, 0x3F, 0xF8, + 0x04, 0x01, 0x00, 0x7C, 0x07, 0xC3, 0x00, 0x80, 0xFE, 0x10, 0x04, 0x01, + 0x00, 0x40, 0x10, 0x08, 0x0F, 0xE0, 0x1D, 0xD8, 0xC4, 0x12, 0x04, 0x82, + 0x20, 0x8C, 0x61, 0xE8, 0x02, 0x01, 0x07, 0x80, 0x30, 0x04, 0x01, 0x00, + 0x5C, 0x38, 0x88, 0x22, 0x08, 0x82, 0x21, 0x18, 0x4F, 0x3C, 0x04, 0x04, + 0x00, 0x38, 0x08, 0x08, 0x08, 0x08, 0x10, 0x10, 0xFF, 0x01, 0x00, 0x80, + 0x03, 0xF0, 0x10, 0x08, 0x04, 0x02, 0x02, 0x01, 0x00, 0x80, 0x40, 0x47, + 0xC0, 0x38, 0x08, 0x04, 0x02, 0x71, 0x20, 0xA0, 0xA0, 0x68, 0x24, 0x11, + 0x38, 0xE0, 0x3C, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x10, 0x10, + 0xFF, 0x3E, 0xE2, 0x64, 0x88, 0x91, 0x12, 0x24, 0x48, 0x91, 0x17, 0x33, + 0x37, 0x14, 0x4C, 0x24, 0x12, 0x09, 0x08, 0x85, 0xE3, 0x1E, 0x10, 0x90, + 0x30, 0x18, 0x0C, 0x0B, 0x08, 0x78, 0x33, 0xC3, 0x8C, 0x40, 0x88, 0x12, + 0x02, 0x60, 0x8C, 0x31, 0x78, 0x20, 0x08, 0x03, 0xE0, 0x00, 0x1C, 0xD8, + 0xC4, 0x12, 0x04, 0x81, 0x20, 0x4C, 0x21, 0xF8, 0x02, 0x00, 0x81, 0xF0, + 0x73, 0x8E, 0x04, 0x04, 0x02, 0x01, 0x00, 0x81, 0xFC, 0x1F, 0x61, 0x40, + 0x3C, 0x03, 0x81, 0x82, 0xFC, 0x10, 0x63, 0xF9, 0x02, 0x04, 0x10, 0x20, + 0x40, 0x7C, 0xE3, 0x10, 0x90, 0x48, 0x24, 0x22, 0x11, 0x18, 0xF6, 0xF3, + 0xD0, 0x44, 0x10, 0x88, 0x24, 0x09, 0x02, 0x80, 0x40, 0xE1, 0xD0, 0x24, + 0x91, 0x24, 0x55, 0x19, 0x86, 0x61, 0x10, 0x39, 0xC4, 0x20, 0xB0, 0x30, + 0x0C, 0x04, 0x86, 0x13, 0x8E, 0x3C, 0x71, 0x04, 0x10, 0x40, 0x88, 0x09, + 0x00, 0xA0, 0x06, 0x00, 0x40, 0x08, 0x01, 0x00, 0xFC, 0x00, 0x7F, 0x42, + 0x04, 0x08, 0x10, 0x20, 0x42, 0xFE, 0x0C, 0x41, 0x04, 0x30, 0x8C, 0x08, + 0x21, 0x04, 0x10, 0x60, 0x24, 0x94, 0x92, 0x52, 0x40, 0x18, 0x20, 0x82, + 0x10, 0x40, 0xC4, 0x10, 0x82, 0x08, 0xC0, 0x61, 0x24, 0x30}; + +const GFXglyph FreeMonoOblique9pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 11, 0, 1}, // 0x20 ' ' + {0, 4, 11, 11, 4, -10}, // 0x21 '!' + {6, 5, 5, 11, 4, -10}, // 0x22 '"' + {10, 9, 12, 11, 2, -10}, // 0x23 '#' + {24, 8, 12, 11, 3, -10}, // 0x24 '$' + {36, 9, 11, 11, 2, -10}, // 0x25 '%' + {49, 7, 10, 11, 2, -9}, // 0x26 '&' + {58, 2, 5, 11, 6, -10}, // 0x27 ''' + {60, 4, 13, 11, 6, -10}, // 0x28 '(' + {67, 4, 13, 11, 3, -10}, // 0x29 ')' + {74, 7, 7, 11, 4, -10}, // 0x2A '*' + {81, 9, 8, 11, 2, -8}, // 0x2B '+' + {90, 4, 5, 11, 2, -1}, // 0x2C ',' + {93, 9, 1, 11, 2, -5}, // 0x2D '-' + {95, 2, 2, 11, 4, -1}, // 0x2E '.' + {96, 9, 13, 11, 2, -11}, // 0x2F '/' + {111, 7, 11, 11, 3, -10}, // 0x30 '0' + {121, 7, 11, 11, 2, -10}, // 0x31 '1' + {131, 9, 11, 11, 2, -10}, // 0x32 '2' + {144, 9, 11, 11, 2, -10}, // 0x33 '3' + {157, 8, 11, 11, 2, -10}, // 0x34 '4' + {168, 9, 11, 11, 2, -10}, // 0x35 '5' + {181, 8, 11, 11, 3, -10}, // 0x36 '6' + {192, 7, 11, 11, 4, -10}, // 0x37 '7' + {202, 8, 11, 11, 3, -10}, // 0x38 '8' + {213, 8, 11, 11, 3, -10}, // 0x39 '9' + {224, 3, 8, 11, 4, -7}, // 0x3A ':' + {227, 5, 11, 11, 2, -7}, // 0x3B ';' + {234, 9, 8, 11, 2, -8}, // 0x3C '<' + {243, 9, 4, 11, 2, -6}, // 0x3D '=' + {248, 9, 8, 11, 2, -8}, // 0x3E '>' + {257, 7, 10, 11, 4, -9}, // 0x3F '?' + {266, 7, 12, 11, 3, -10}, // 0x40 '@' + {277, 11, 10, 11, 0, -9}, // 0x41 'A' + {291, 10, 10, 11, 1, -9}, // 0x42 'B' + {304, 9, 10, 11, 2, -9}, // 0x43 'C' + {316, 10, 10, 11, 1, -9}, // 0x44 'D' + {329, 10, 10, 11, 1, -9}, // 0x45 'E' + {342, 11, 10, 11, 1, -9}, // 0x46 'F' + {356, 9, 10, 11, 2, -9}, // 0x47 'G' + {368, 11, 10, 11, 1, -9}, // 0x48 'H' + {382, 9, 10, 11, 2, -9}, // 0x49 'I' + {394, 11, 10, 11, 2, -9}, // 0x4A 'J' + {408, 11, 10, 11, 1, -9}, // 0x4B 'K' + {422, 10, 10, 11, 1, -9}, // 0x4C 'L' + {435, 13, 10, 11, 0, -9}, // 0x4D 'M' + {452, 11, 10, 11, 1, -9}, // 0x4E 'N' + {466, 9, 10, 11, 2, -9}, // 0x4F 'O' + {478, 10, 10, 11, 1, -9}, // 0x50 'P' + {491, 9, 13, 11, 2, -9}, // 0x51 'Q' + {506, 10, 10, 11, 1, -9}, // 0x52 'R' + {519, 9, 10, 11, 2, -9}, // 0x53 'S' + {531, 9, 10, 11, 3, -9}, // 0x54 'T' + {543, 10, 10, 11, 2, -9}, // 0x55 'U' + {556, 11, 10, 11, 2, -9}, // 0x56 'V' + {570, 11, 10, 11, 2, -9}, // 0x57 'W' + {584, 11, 10, 11, 1, -9}, // 0x58 'X' + {598, 9, 10, 11, 3, -9}, // 0x59 'Y' + {610, 9, 10, 11, 2, -9}, // 0x5A 'Z' + {622, 5, 13, 11, 5, -10}, // 0x5B '[' + {631, 4, 14, 11, 4, -11}, // 0x5C '\' + {638, 5, 13, 11, 2, -10}, // 0x5D ']' + {647, 7, 5, 11, 3, -10}, // 0x5E '^' + {652, 11, 1, 11, 0, 2}, // 0x5F '_' + {654, 2, 3, 11, 5, -11}, // 0x60 '`' + {655, 9, 8, 11, 2, -7}, // 0x61 'a' + {664, 11, 11, 11, 0, -10}, // 0x62 'b' + {680, 10, 8, 11, 2, -7}, // 0x63 'c' + {690, 9, 11, 11, 2, -10}, // 0x64 'd' + {703, 9, 8, 11, 2, -7}, // 0x65 'e' + {712, 10, 11, 11, 2, -10}, // 0x66 'f' + {726, 10, 11, 11, 2, -7}, // 0x67 'g' + {740, 10, 11, 11, 1, -10}, // 0x68 'h' + {754, 8, 11, 11, 2, -10}, // 0x69 'i' + {765, 9, 14, 11, 1, -10}, // 0x6A 'j' + {781, 9, 11, 11, 1, -10}, // 0x6B 'k' + {794, 8, 11, 11, 2, -10}, // 0x6C 'l' + {805, 11, 8, 11, 0, -7}, // 0x6D 'm' + {816, 9, 8, 11, 1, -7}, // 0x6E 'n' + {825, 9, 8, 11, 2, -7}, // 0x6F 'o' + {834, 11, 11, 11, 0, -7}, // 0x70 'p' + {850, 10, 11, 11, 2, -7}, // 0x71 'q' + {864, 9, 8, 11, 2, -7}, // 0x72 'r' + {873, 8, 8, 11, 2, -7}, // 0x73 's' + {881, 7, 10, 11, 2, -9}, // 0x74 't' + {890, 9, 8, 11, 2, -7}, // 0x75 'u' + {899, 10, 8, 11, 2, -7}, // 0x76 'v' + {909, 10, 8, 11, 2, -7}, // 0x77 'w' + {919, 10, 8, 11, 1, -7}, // 0x78 'x' + {929, 12, 11, 11, 0, -7}, // 0x79 'y' + {946, 8, 8, 11, 2, -7}, // 0x7A 'z' + {954, 6, 13, 11, 4, -10}, // 0x7B '{' + {964, 3, 12, 11, 5, -9}, // 0x7C '|' + {969, 6, 13, 11, 3, -10}, // 0x7D '}' + {979, 7, 3, 11, 3, -6}}; // 0x7E '~' + +const GFXfont FreeMonoOblique9pt7b PROGMEM = { + (uint8_t *)FreeMonoOblique9pt7bBitmaps, + (GFXglyph *)FreeMonoOblique9pt7bGlyphs, 0x20, 0x7E, 18}; + +// Approx. 1654 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSans12pt7b.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSans12pt7b.h new file mode 100644 index 0000000..6e77392 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSans12pt7b.h @@ -0,0 +1,272 @@ +#pragma once +#include + +const uint8_t FreeSans12pt7bBitmaps[] PROGMEM = { + 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xCF, 0x3C, 0xF3, 0x8A, 0x20, 0x06, 0x30, + 0x31, 0x03, 0x18, 0x18, 0xC7, 0xFF, 0xBF, 0xFC, 0x31, 0x03, 0x18, 0x18, + 0xC7, 0xFF, 0xBF, 0xFC, 0x31, 0x01, 0x18, 0x18, 0xC0, 0xC6, 0x06, 0x30, + 0x04, 0x03, 0xE1, 0xFF, 0x72, 0x6C, 0x47, 0x88, 0xF1, 0x07, 0x20, 0x7E, + 0x03, 0xF0, 0x17, 0x02, 0x3C, 0x47, 0x88, 0xF1, 0x1B, 0x26, 0x7F, 0xC3, + 0xE0, 0x10, 0x02, 0x00, 0x00, 0x06, 0x03, 0xC0, 0x40, 0x7E, 0x0C, 0x0E, + 0x70, 0x80, 0xC3, 0x18, 0x0C, 0x31, 0x00, 0xE7, 0x30, 0x07, 0xE6, 0x00, + 0x3C, 0x40, 0x00, 0x0C, 0x7C, 0x00, 0x8F, 0xE0, 0x19, 0xC7, 0x01, 0x18, + 0x30, 0x31, 0x83, 0x02, 0x1C, 0x70, 0x40, 0xFE, 0x04, 0x07, 0xC0, 0x0F, + 0x00, 0x7E, 0x03, 0x9C, 0x0C, 0x30, 0x30, 0xC0, 0xE7, 0x01, 0xF8, 0x03, + 0x80, 0x3E, 0x01, 0xCC, 0x6E, 0x19, 0xB0, 0x7C, 0xC0, 0xF3, 0x03, 0xCE, + 0x1F, 0x9F, 0xE6, 0x1E, 0x1C, 0xFF, 0xA0, 0x08, 0x8C, 0x66, 0x31, 0x98, + 0xC6, 0x31, 0x8C, 0x63, 0x08, 0x63, 0x08, 0x61, 0x0C, 0x20, 0x82, 0x18, + 0xC3, 0x18, 0xC3, 0x18, 0xC6, 0x31, 0x8C, 0x62, 0x31, 0x88, 0xC4, 0x62, + 0x00, 0x10, 0x23, 0x5B, 0xE3, 0x8D, 0x91, 0x00, 0x0C, 0x03, 0x00, 0xC0, + 0x30, 0xFF, 0xFF, 0xF0, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0xF5, 0x60, + 0xFF, 0xF0, 0xF0, 0x02, 0x0C, 0x10, 0x20, 0xC1, 0x02, 0x0C, 0x10, 0x20, + 0xC1, 0x02, 0x0C, 0x10, 0x20, 0xC1, 0x00, 0x1F, 0x07, 0xF1, 0xC7, 0x30, + 0x6E, 0x0F, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, + 0x0E, 0xC1, 0x9C, 0x71, 0xFC, 0x1F, 0x00, 0x08, 0xCF, 0xFF, 0x8C, 0x63, + 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0x1F, 0x0F, 0xF9, 0x87, 0x60, 0x7C, + 0x06, 0x00, 0xC0, 0x18, 0x07, 0x01, 0xC0, 0xF0, 0x78, 0x1C, 0x06, 0x00, + 0x80, 0x30, 0x07, 0xFF, 0xFF, 0xE0, 0x3F, 0x0F, 0xF3, 0x87, 0x60, 0x6C, + 0x0C, 0x01, 0x80, 0x70, 0x7C, 0x0F, 0x80, 0x18, 0x01, 0x80, 0x3C, 0x07, + 0x80, 0xD8, 0x73, 0xFC, 0x1F, 0x00, 0x01, 0x80, 0x70, 0x0E, 0x03, 0xC0, + 0xD8, 0x1B, 0x06, 0x61, 0x8C, 0x21, 0x8C, 0x33, 0x06, 0x7F, 0xFF, 0xFE, + 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x3F, 0xCF, 0xF9, 0x80, 0x30, 0x06, + 0x00, 0xDE, 0x1F, 0xE7, 0x0E, 0x00, 0xE0, 0x0C, 0x01, 0x80, 0x30, 0x07, + 0x81, 0xF8, 0x73, 0xFC, 0x1F, 0x00, 0x0F, 0x07, 0xF9, 0xC3, 0x30, 0x74, + 0x01, 0x80, 0x33, 0xC7, 0xFE, 0xF0, 0xDC, 0x1F, 0x01, 0xE0, 0x3C, 0x06, + 0xC1, 0xDC, 0x71, 0xFC, 0x1F, 0x00, 0xFF, 0xFF, 0xFC, 0x01, 0x00, 0x60, + 0x18, 0x02, 0x00, 0xC0, 0x30, 0x06, 0x01, 0x80, 0x30, 0x04, 0x01, 0x80, + 0x30, 0x06, 0x01, 0x80, 0x30, 0x00, 0x1F, 0x07, 0xF1, 0xC7, 0x30, 0x66, + 0x0C, 0xC1, 0x8C, 0x61, 0xFC, 0x3F, 0x8E, 0x3B, 0x01, 0xE0, 0x3C, 0x07, + 0x80, 0xD8, 0x31, 0xFC, 0x1F, 0x00, 0x1F, 0x07, 0xF1, 0xC7, 0x70, 0x6C, + 0x07, 0x80, 0xF0, 0x1E, 0x07, 0x61, 0xEF, 0xFC, 0x79, 0x80, 0x30, 0x05, + 0x81, 0x98, 0x73, 0xFC, 0x1E, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0xF0, 0x00, + 0x0F, 0x56, 0x00, 0x00, 0x07, 0x01, 0xE0, 0xF8, 0x3C, 0x0F, 0x00, 0xE0, + 0x07, 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xF0, 0x01, 0xFF, 0xFF, 0xFF, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x0E, 0x00, 0x78, 0x01, 0xF0, 0x07, + 0xC0, 0x0F, 0x00, 0x70, 0x1E, 0x0F, 0x03, 0xC0, 0xF0, 0x08, 0x00, 0x1F, + 0x1F, 0xEE, 0x1B, 0x03, 0xC0, 0xC0, 0x30, 0x0C, 0x06, 0x03, 0x81, 0xC0, + 0xE0, 0x30, 0x0C, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x03, 0x00, 0x00, 0xFE, + 0x00, 0x0F, 0xFE, 0x00, 0xF0, 0x3E, 0x07, 0x00, 0x3C, 0x38, 0x00, 0x30, + 0xC1, 0xE0, 0x66, 0x0F, 0xD9, 0xD8, 0x61, 0xC3, 0xC3, 0x07, 0x0F, 0x1C, + 0x1C, 0x3C, 0x60, 0x60, 0xF1, 0x81, 0x83, 0xC6, 0x06, 0x1B, 0x18, 0x38, + 0xEE, 0x71, 0xE7, 0x18, 0xFD, 0xF8, 0x71, 0xE7, 0xC0, 0xE0, 0x00, 0x01, + 0xE0, 0x00, 0x01, 0xFF, 0xC0, 0x01, 0xFC, 0x00, 0x03, 0xC0, 0x03, 0xC0, + 0x03, 0xC0, 0x07, 0xE0, 0x06, 0x60, 0x06, 0x60, 0x0E, 0x70, 0x0C, 0x30, + 0x0C, 0x30, 0x1C, 0x38, 0x18, 0x18, 0x1F, 0xF8, 0x3F, 0xFC, 0x30, 0x1C, + 0x30, 0x0C, 0x70, 0x0E, 0x60, 0x06, 0x60, 0x06, 0xFF, 0xC7, 0xFF, 0x30, + 0x19, 0x80, 0x6C, 0x03, 0x60, 0x1B, 0x00, 0xD8, 0x0C, 0xFF, 0xC7, 0xFF, + 0x30, 0x0D, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x06, 0xFF, 0xF7, + 0xFE, 0x00, 0x07, 0xE0, 0x3F, 0xF0, 0xE0, 0x73, 0x80, 0x66, 0x00, 0x6C, + 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, 0x06, 0x00, + 0x06, 0x00, 0x6C, 0x00, 0xDC, 0x03, 0x1E, 0x0E, 0x1F, 0xF8, 0x0F, 0xC0, + 0xFF, 0x83, 0xFF, 0x8C, 0x07, 0x30, 0x0E, 0xC0, 0x1B, 0x00, 0x7C, 0x00, + 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x1F, 0x00, + 0x6C, 0x03, 0xB0, 0x1C, 0xFF, 0xE3, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xC0, + 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xFF, 0xEF, 0xFE, 0xC0, + 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xFF, 0xDF, + 0xFB, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x00, + 0x07, 0xF0, 0x1F, 0xFC, 0x3C, 0x1E, 0x70, 0x06, 0x60, 0x03, 0xE0, 0x00, + 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x7F, 0xC0, 0x7F, 0xC0, 0x03, 0xC0, 0x03, + 0x60, 0x03, 0x60, 0x07, 0x30, 0x0F, 0x3C, 0x1F, 0x1F, 0xFB, 0x07, 0xE1, + 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, + 0x03, 0xFF, 0xFF, 0xFF, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, + 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x01, + 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x80, 0xC0, 0x60, + 0x3C, 0x1E, 0x0F, 0x07, 0xC7, 0x7F, 0x1F, 0x00, 0xC0, 0x3B, 0x01, 0xCC, + 0x0E, 0x30, 0x70, 0xC3, 0x83, 0x1C, 0x0C, 0xE0, 0x33, 0x80, 0xDE, 0x03, + 0xDC, 0x0E, 0x38, 0x30, 0x60, 0xC1, 0xC3, 0x03, 0x8C, 0x06, 0x30, 0x1C, + 0xC0, 0x3B, 0x00, 0x60, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, + 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, + 0xFF, 0xFF, 0xF0, 0xE0, 0x07, 0xE0, 0x07, 0xF0, 0x0F, 0xF0, 0x0F, 0xD0, + 0x0F, 0xD8, 0x1B, 0xD8, 0x1B, 0xD8, 0x1B, 0xCC, 0x33, 0xCC, 0x33, 0xCC, + 0x33, 0xC6, 0x63, 0xC6, 0x63, 0xC6, 0x63, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, + 0xC3, 0xC1, 0x83, 0xE0, 0x1F, 0x00, 0xFC, 0x07, 0xE0, 0x3D, 0x81, 0xEE, + 0x0F, 0x30, 0x79, 0xC3, 0xC6, 0x1E, 0x18, 0xF0, 0xE7, 0x83, 0x3C, 0x1D, + 0xE0, 0x6F, 0x01, 0xF8, 0x0F, 0xC0, 0x3E, 0x01, 0xC0, 0x03, 0xE0, 0x0F, + 0xFC, 0x0F, 0x07, 0x86, 0x00, 0xC6, 0x00, 0x33, 0x00, 0x1B, 0x00, 0x07, + 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x36, 0x00, + 0x33, 0x00, 0x18, 0xC0, 0x18, 0x78, 0x3C, 0x1F, 0xFC, 0x03, 0xF8, 0x00, + 0xFF, 0x8F, 0xFE, 0xC0, 0x6C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x07, + 0xFF, 0xEF, 0xFC, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, + 0xC0, 0x0C, 0x00, 0x03, 0xE0, 0x0F, 0xFC, 0x0F, 0x07, 0x86, 0x00, 0xC6, + 0x00, 0x33, 0x00, 0x1B, 0x00, 0x07, 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x00, + 0xF0, 0x00, 0x78, 0x00, 0x36, 0x00, 0x33, 0x01, 0x98, 0xC0, 0xFC, 0x78, + 0x3C, 0x1F, 0xFF, 0x03, 0xF9, 0x80, 0x00, 0x40, 0xFF, 0xC3, 0xFF, 0xCC, + 0x03, 0xB0, 0x06, 0xC0, 0x1B, 0x00, 0x6C, 0x01, 0xB0, 0x0C, 0xFF, 0xE3, + 0xFF, 0xCC, 0x03, 0xB0, 0x06, 0xC0, 0x1B, 0x00, 0x6C, 0x01, 0xB0, 0x06, + 0xC0, 0x1B, 0x00, 0x70, 0x0F, 0xE0, 0x7F, 0xC3, 0x83, 0x9C, 0x07, 0x60, + 0x0D, 0x80, 0x06, 0x00, 0x1E, 0x00, 0x3F, 0x80, 0x3F, 0xC0, 0x0F, 0x80, + 0x07, 0xC0, 0x0F, 0x00, 0x3E, 0x00, 0xDE, 0x0E, 0x3F, 0xF0, 0x3F, 0x80, + 0xFF, 0xFF, 0xFF, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, + 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, + 0x06, 0x00, 0x60, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, + 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, + 0xE0, 0x0F, 0x80, 0xEE, 0x0E, 0x3F, 0xE0, 0x7C, 0x00, 0x60, 0x06, 0xC0, + 0x1D, 0xC0, 0x31, 0x80, 0x63, 0x01, 0xC7, 0x03, 0x06, 0x06, 0x0C, 0x1C, + 0x1C, 0x30, 0x18, 0x60, 0x31, 0xC0, 0x73, 0x00, 0x66, 0x00, 0xDC, 0x01, + 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x00, 0xE0, 0x30, 0x1D, 0x80, 0xE0, + 0x76, 0x07, 0x81, 0xD8, 0x1E, 0x06, 0x70, 0x7C, 0x18, 0xC1, 0xB0, 0xE3, + 0x0C, 0xC3, 0x8C, 0x33, 0x0C, 0x38, 0xC6, 0x30, 0x67, 0x18, 0xC1, 0x98, + 0x67, 0x06, 0x61, 0xD8, 0x1D, 0x83, 0x60, 0x3C, 0x0D, 0x80, 0xF0, 0x3E, + 0x03, 0xC0, 0x70, 0x0F, 0x01, 0xC0, 0x18, 0x07, 0x00, 0x70, 0x0E, 0x60, + 0x38, 0xE0, 0x60, 0xE1, 0xC0, 0xC3, 0x01, 0xCC, 0x01, 0xF8, 0x01, 0xE0, + 0x03, 0x80, 0x07, 0x80, 0x1F, 0x00, 0x33, 0x00, 0xE7, 0x03, 0x86, 0x06, + 0x0E, 0x1C, 0x0E, 0x70, 0x0C, 0xC0, 0x1C, 0x60, 0x06, 0x70, 0x0E, 0x30, + 0x1C, 0x38, 0x18, 0x1C, 0x38, 0x0C, 0x30, 0x0E, 0x70, 0x06, 0x60, 0x03, + 0xC0, 0x03, 0xC0, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, + 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0xFF, 0xFF, 0xFF, 0xC0, 0x0E, + 0x00, 0xE0, 0x0E, 0x00, 0x60, 0x07, 0x00, 0x70, 0x07, 0x00, 0x30, 0x03, + 0x80, 0x38, 0x03, 0x80, 0x18, 0x01, 0xC0, 0x1C, 0x00, 0xFF, 0xFF, 0xFF, + 0xC0, 0xFF, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCF, + 0xF0, 0x81, 0x81, 0x02, 0x06, 0x04, 0x08, 0x18, 0x10, 0x20, 0x60, 0x40, + 0x81, 0x81, 0x02, 0x06, 0x04, 0xFF, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, + 0x33, 0x33, 0x33, 0x3F, 0xF0, 0x0C, 0x0E, 0x05, 0x86, 0xC3, 0x21, 0x19, + 0x8C, 0x83, 0xC1, 0x80, 0xFF, 0xFE, 0xE3, 0x8C, 0x30, 0x3F, 0x07, 0xF8, + 0xE1, 0xCC, 0x0C, 0x00, 0xC0, 0x1C, 0x3F, 0xCF, 0x8C, 0xC0, 0xCC, 0x0C, + 0xE3, 0xC7, 0xEF, 0x3C, 0x70, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, + 0x0C, 0xF8, 0xDF, 0xCF, 0x0E, 0xE0, 0x7C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, + 0x3C, 0x03, 0xE0, 0x6F, 0x0E, 0xDF, 0xCC, 0xF8, 0x1F, 0x0F, 0xE7, 0x1B, + 0x83, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x38, 0x37, 0x1C, 0xFE, 0x1F, + 0x00, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x3C, 0xCF, 0xFB, 0x8F, + 0xE0, 0xF8, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF8, 0x3B, 0x8F, 0x3F, + 0x63, 0xCC, 0x1F, 0x07, 0xF1, 0xC7, 0x70, 0x3C, 0x07, 0xFF, 0xFF, 0xFE, + 0x00, 0xC0, 0x1C, 0x0D, 0xC3, 0x1F, 0xE1, 0xF0, 0x3B, 0xD8, 0xC6, 0x7F, + 0xEC, 0x63, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x00, 0x1E, 0x67, 0xFD, 0xC7, + 0xF0, 0x7C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x7C, 0x1D, 0xC7, 0x9F, + 0xB1, 0xE6, 0x00, 0xC0, 0x3E, 0x0E, 0x7F, 0xC7, 0xE0, 0xC0, 0x30, 0x0C, + 0x03, 0x00, 0xC0, 0x33, 0xCD, 0xFB, 0xC7, 0xE0, 0xF0, 0x3C, 0x0F, 0x03, + 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x30, 0xF0, 0x3F, 0xFF, 0xFF, + 0xF0, 0x33, 0x00, 0x03, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x3F, + 0xE0, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, 0x83, 0x30, 0xC6, 0x30, + 0xCC, 0x1B, 0x83, 0xF0, 0x77, 0x0C, 0x61, 0x8E, 0x30, 0xE6, 0x0C, 0xC1, + 0xD8, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xCF, 0x1F, 0x6F, 0xDF, 0xFC, + 0x78, 0xFC, 0x18, 0x3C, 0x0C, 0x1E, 0x06, 0x0F, 0x03, 0x07, 0x81, 0x83, + 0xC0, 0xC1, 0xE0, 0x60, 0xF0, 0x30, 0x78, 0x18, 0x3C, 0x0C, 0x18, 0xCF, + 0x37, 0xEF, 0x1F, 0x83, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, + 0x0F, 0x03, 0xC0, 0xC0, 0x1F, 0x07, 0xF1, 0xC7, 0x70, 0x7C, 0x07, 0x80, + 0xF0, 0x1E, 0x03, 0xC0, 0x7C, 0x1D, 0xC7, 0x1F, 0xC1, 0xF0, 0xCF, 0x8D, + 0xFC, 0xF0, 0xEE, 0x06, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3E, + 0x07, 0xF0, 0xEF, 0xFC, 0xCF, 0x8C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x00, + 0x1E, 0x67, 0xFD, 0xC7, 0xF0, 0x7C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, + 0x7C, 0x1D, 0xC7, 0x9F, 0xF1, 0xE6, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, + 0xCF, 0x7F, 0x38, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC0, 0x3E, 0x1F, + 0xEE, 0x1B, 0x00, 0xC0, 0x3C, 0x07, 0xF0, 0x3E, 0x01, 0xF0, 0x3E, 0x1D, + 0xFE, 0x3E, 0x00, 0x63, 0x19, 0xFF, 0xB1, 0x8C, 0x63, 0x18, 0xC6, 0x31, + 0xE7, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, + 0xF0, 0x7E, 0x3D, 0xFB, 0x3C, 0xC0, 0xE0, 0x66, 0x06, 0x60, 0x67, 0x0C, + 0x30, 0xC3, 0x0C, 0x39, 0x81, 0x98, 0x19, 0x81, 0xF0, 0x0F, 0x00, 0xE0, + 0x0E, 0x00, 0xC1, 0xC1, 0xB0, 0xE1, 0xD8, 0x70, 0xCC, 0x2C, 0x66, 0x36, + 0x31, 0x9B, 0x18, 0xCD, 0x98, 0x64, 0x6C, 0x16, 0x36, 0x0F, 0x1A, 0x07, + 0x8F, 0x03, 0x83, 0x80, 0xC1, 0xC0, 0x60, 0xEE, 0x18, 0xC6, 0x0C, 0xC1, + 0xF0, 0x1C, 0x01, 0x80, 0x78, 0x1B, 0x03, 0x30, 0xC7, 0x30, 0x66, 0x06, + 0xE0, 0x6C, 0x0D, 0x83, 0x38, 0x63, 0x0C, 0x63, 0x0E, 0x60, 0xCC, 0x1B, + 0x03, 0x60, 0x3C, 0x07, 0x00, 0xE0, 0x18, 0x03, 0x00, 0xE0, 0x78, 0x0E, + 0x00, 0xFF, 0xFF, 0xF0, 0x18, 0x0C, 0x07, 0x03, 0x81, 0xC0, 0x60, 0x30, + 0x18, 0x0E, 0x03, 0xFF, 0xFF, 0xC0, 0x19, 0xCC, 0x63, 0x18, 0xC6, 0x31, + 0x99, 0x86, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x1C, 0x60, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFC, 0xC7, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x0C, 0x33, 0x31, + 0x8C, 0x63, 0x18, 0xC6, 0x73, 0x00, 0x70, 0x3E, 0x09, 0xE4, 0x1F, 0x03, + 0x80}; + +const GFXglyph FreeSans12pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 6, 0, 1}, // 0x20 ' ' + {0, 2, 18, 8, 3, -17}, // 0x21 '!' + {5, 6, 6, 8, 1, -16}, // 0x22 '"' + {10, 13, 16, 13, 0, -15}, // 0x23 '#' + {36, 11, 20, 13, 1, -17}, // 0x24 '$' + {64, 20, 17, 21, 1, -16}, // 0x25 '%' + {107, 14, 17, 16, 1, -16}, // 0x26 '&' + {137, 2, 6, 5, 1, -16}, // 0x27 ''' + {139, 5, 23, 8, 2, -17}, // 0x28 '(' + {154, 5, 23, 8, 1, -17}, // 0x29 ')' + {169, 7, 7, 9, 1, -17}, // 0x2A '*' + {176, 10, 11, 14, 2, -10}, // 0x2B '+' + {190, 2, 6, 7, 2, -1}, // 0x2C ',' + {192, 6, 2, 8, 1, -7}, // 0x2D '-' + {194, 2, 2, 6, 2, -1}, // 0x2E '.' + {195, 7, 18, 7, 0, -17}, // 0x2F '/' + {211, 11, 17, 13, 1, -16}, // 0x30 '0' + {235, 5, 17, 13, 3, -16}, // 0x31 '1' + {246, 11, 17, 13, 1, -16}, // 0x32 '2' + {270, 11, 17, 13, 1, -16}, // 0x33 '3' + {294, 11, 17, 13, 1, -16}, // 0x34 '4' + {318, 11, 17, 13, 1, -16}, // 0x35 '5' + {342, 11, 17, 13, 1, -16}, // 0x36 '6' + {366, 11, 17, 13, 1, -16}, // 0x37 '7' + {390, 11, 17, 13, 1, -16}, // 0x38 '8' + {414, 11, 17, 13, 1, -16}, // 0x39 '9' + {438, 2, 13, 6, 2, -12}, // 0x3A ':' + {442, 2, 16, 6, 2, -11}, // 0x3B ';' + {446, 12, 12, 14, 1, -11}, // 0x3C '<' + {464, 12, 6, 14, 1, -8}, // 0x3D '=' + {473, 12, 12, 14, 1, -11}, // 0x3E '>' + {491, 10, 18, 13, 2, -17}, // 0x3F '?' + {514, 22, 21, 24, 1, -17}, // 0x40 '@' + {572, 16, 18, 16, 0, -17}, // 0x41 'A' + {608, 13, 18, 16, 2, -17}, // 0x42 'B' + {638, 15, 18, 17, 1, -17}, // 0x43 'C' + {672, 14, 18, 17, 2, -17}, // 0x44 'D' + {704, 12, 18, 15, 2, -17}, // 0x45 'E' + {731, 11, 18, 14, 2, -17}, // 0x46 'F' + {756, 16, 18, 18, 1, -17}, // 0x47 'G' + {792, 13, 18, 17, 2, -17}, // 0x48 'H' + {822, 2, 18, 7, 2, -17}, // 0x49 'I' + {827, 9, 18, 13, 1, -17}, // 0x4A 'J' + {848, 14, 18, 16, 2, -17}, // 0x4B 'K' + {880, 10, 18, 14, 2, -17}, // 0x4C 'L' + {903, 16, 18, 20, 2, -17}, // 0x4D 'M' + {939, 13, 18, 18, 2, -17}, // 0x4E 'N' + {969, 17, 18, 19, 1, -17}, // 0x4F 'O' + {1008, 12, 18, 16, 2, -17}, // 0x50 'P' + {1035, 17, 19, 19, 1, -17}, // 0x51 'Q' + {1076, 14, 18, 17, 2, -17}, // 0x52 'R' + {1108, 14, 18, 16, 1, -17}, // 0x53 'S' + {1140, 12, 18, 15, 1, -17}, // 0x54 'T' + {1167, 13, 18, 17, 2, -17}, // 0x55 'U' + {1197, 15, 18, 15, 0, -17}, // 0x56 'V' + {1231, 22, 18, 22, 0, -17}, // 0x57 'W' + {1281, 15, 18, 16, 0, -17}, // 0x58 'X' + {1315, 16, 18, 16, 0, -17}, // 0x59 'Y' + {1351, 13, 18, 15, 1, -17}, // 0x5A 'Z' + {1381, 4, 23, 7, 2, -17}, // 0x5B '[' + {1393, 7, 18, 7, 0, -17}, // 0x5C '\' + {1409, 4, 23, 7, 1, -17}, // 0x5D ']' + {1421, 9, 9, 11, 1, -16}, // 0x5E '^' + {1432, 15, 1, 13, -1, 4}, // 0x5F '_' + {1434, 5, 4, 6, 1, -17}, // 0x60 '`' + {1437, 12, 13, 13, 1, -12}, // 0x61 'a' + {1457, 12, 18, 13, 1, -17}, // 0x62 'b' + {1484, 10, 13, 12, 1, -12}, // 0x63 'c' + {1501, 11, 18, 13, 1, -17}, // 0x64 'd' + {1526, 11, 13, 13, 1, -12}, // 0x65 'e' + {1544, 5, 18, 7, 1, -17}, // 0x66 'f' + {1556, 11, 18, 13, 1, -12}, // 0x67 'g' + {1581, 10, 18, 13, 1, -17}, // 0x68 'h' + {1604, 2, 18, 5, 2, -17}, // 0x69 'i' + {1609, 4, 23, 6, 0, -17}, // 0x6A 'j' + {1621, 11, 18, 12, 1, -17}, // 0x6B 'k' + {1646, 2, 18, 5, 1, -17}, // 0x6C 'l' + {1651, 17, 13, 19, 1, -12}, // 0x6D 'm' + {1679, 10, 13, 13, 1, -12}, // 0x6E 'n' + {1696, 11, 13, 13, 1, -12}, // 0x6F 'o' + {1714, 12, 17, 13, 1, -12}, // 0x70 'p' + {1740, 11, 17, 13, 1, -12}, // 0x71 'q' + {1764, 6, 13, 8, 1, -12}, // 0x72 'r' + {1774, 10, 13, 12, 1, -12}, // 0x73 's' + {1791, 5, 16, 7, 1, -15}, // 0x74 't' + {1801, 10, 13, 13, 1, -12}, // 0x75 'u' + {1818, 12, 13, 12, 0, -12}, // 0x76 'v' + {1838, 17, 13, 17, 0, -12}, // 0x77 'w' + {1866, 11, 13, 11, 0, -12}, // 0x78 'x' + {1884, 11, 18, 11, 0, -12}, // 0x79 'y' + {1909, 10, 13, 12, 1, -12}, // 0x7A 'z' + {1926, 5, 23, 8, 1, -17}, // 0x7B '{' + {1941, 2, 23, 6, 2, -17}, // 0x7C '|' + {1947, 5, 23, 8, 2, -17}, // 0x7D '}' + {1962, 10, 5, 12, 1, -10}}; // 0x7E '~' + +const GFXfont FreeSans12pt7b PROGMEM = {(uint8_t *)FreeSans12pt7bBitmaps, + (GFXglyph *)FreeSans12pt7bGlyphs, 0x20, + 0x7E, 29}; + +// Approx. 2641 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSans18pt7b.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSans18pt7b.h new file mode 100644 index 0000000..f3a9606 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSans18pt7b.h @@ -0,0 +1,454 @@ +#pragma once +#include + +const uint8_t FreeSans18pt7bBitmaps[] PROGMEM = { + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE9, 0x20, 0x3F, 0xFC, 0xE3, 0xF1, + 0xF8, 0xFC, 0x7E, 0x3F, 0x1F, 0x8E, 0x82, 0x41, 0x00, 0x01, 0xC3, 0x80, + 0x38, 0x70, 0x06, 0x0E, 0x00, 0xC1, 0x80, 0x38, 0x70, 0x07, 0x0E, 0x0F, + 0xFF, 0xF9, 0xFF, 0xFF, 0x3F, 0xFF, 0xE0, 0xE1, 0xC0, 0x1C, 0x38, 0x03, + 0x87, 0x00, 0x70, 0xE0, 0x0C, 0x18, 0x3F, 0xFF, 0xF7, 0xFF, 0xFE, 0xFF, + 0xFF, 0xC1, 0xC3, 0x80, 0x30, 0x60, 0x06, 0x0C, 0x01, 0xC3, 0x80, 0x38, + 0x70, 0x07, 0x0E, 0x00, 0xC1, 0x80, 0x03, 0x00, 0x0F, 0xC0, 0x3F, 0xF0, + 0x3F, 0xF8, 0x7B, 0x3C, 0xF3, 0x1C, 0xE3, 0x0E, 0xE3, 0x0E, 0xE3, 0x0E, + 0xE3, 0x00, 0xE3, 0x00, 0xF3, 0x00, 0x7B, 0x00, 0x7F, 0x80, 0x1F, 0xF0, + 0x07, 0xFC, 0x03, 0x7E, 0x03, 0x0F, 0x03, 0x07, 0xE3, 0x07, 0xE3, 0x07, + 0xE3, 0x07, 0xE3, 0x0F, 0x73, 0x3E, 0x7F, 0xFC, 0x3F, 0xF8, 0x0F, 0xE0, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x78, 0x00, + 0xE0, 0x0F, 0xF0, 0x06, 0x00, 0xFF, 0xC0, 0x70, 0x07, 0x0E, 0x07, 0x00, + 0x70, 0x38, 0x38, 0x03, 0x00, 0xC3, 0x80, 0x18, 0x06, 0x1C, 0x00, 0xE0, + 0x71, 0xC0, 0x03, 0x87, 0x8C, 0x00, 0x1F, 0xF8, 0xE0, 0x00, 0x7F, 0x86, + 0x00, 0x01, 0xF8, 0x70, 0x00, 0x00, 0x03, 0x03, 0xC0, 0x00, 0x38, 0x7F, + 0x80, 0x01, 0x87, 0xFE, 0x00, 0x1C, 0x38, 0x70, 0x00, 0xC3, 0x81, 0xC0, + 0x0E, 0x18, 0x06, 0x00, 0xE0, 0xC0, 0x30, 0x07, 0x07, 0x03, 0x80, 0x70, + 0x1C, 0x38, 0x03, 0x80, 0xFF, 0xC0, 0x38, 0x03, 0xFC, 0x01, 0x80, 0x07, + 0x80, 0x01, 0xF0, 0x00, 0x7F, 0x80, 0x0F, 0xFC, 0x01, 0xE1, 0xE0, 0x1C, + 0x0E, 0x01, 0xC0, 0xE0, 0x1C, 0x0E, 0x01, 0xE1, 0xE0, 0x0E, 0x3C, 0x00, + 0x77, 0x80, 0x07, 0xF0, 0x00, 0x7C, 0x00, 0x0F, 0xE0, 0x03, 0xCF, 0x1C, + 0x78, 0x79, 0xC7, 0x03, 0xDC, 0xE0, 0x1F, 0x8E, 0x00, 0xF8, 0xE0, 0x0F, + 0x0E, 0x00, 0x70, 0xF0, 0x0F, 0x87, 0xC3, 0xFC, 0x7F, 0xFD, 0xC3, 0xFF, + 0x0E, 0x0F, 0xC0, 0xF0, 0xFF, 0xFF, 0xFA, 0x40, 0x06, 0x06, 0x0C, 0x0C, + 0x18, 0x18, 0x38, 0x30, 0x70, 0x70, 0x70, 0x60, 0xE0, 0xE0, 0xE0, 0xE0, + 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x60, 0x70, 0x70, 0x70, 0x30, 0x38, 0x18, + 0x18, 0x0C, 0x0C, 0x06, 0x03, 0xC0, 0x60, 0x30, 0x30, 0x38, 0x18, 0x1C, + 0x0C, 0x0E, 0x0E, 0x0E, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, + 0x07, 0x07, 0x06, 0x0E, 0x0E, 0x0E, 0x0C, 0x1C, 0x18, 0x38, 0x30, 0x30, + 0x60, 0xC0, 0x0C, 0x03, 0x00, 0xC3, 0xB7, 0xFF, 0xC7, 0x81, 0xE0, 0xEC, + 0x73, 0x88, 0x40, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, + 0x80, 0x01, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x80, 0x01, + 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0xFF, + 0xF6, 0xDA, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0xC0, 0x30, 0x18, + 0x06, 0x01, 0x80, 0xC0, 0x30, 0x0C, 0x06, 0x01, 0x80, 0x60, 0x30, 0x0C, + 0x03, 0x00, 0xC0, 0x60, 0x18, 0x06, 0x03, 0x00, 0xC0, 0x30, 0x18, 0x06, + 0x01, 0x80, 0xC0, 0x30, 0x00, 0x07, 0xE0, 0x0F, 0xF8, 0x1F, 0xFC, 0x3C, + 0x3C, 0x78, 0x1E, 0x70, 0x0E, 0x70, 0x0E, 0xE0, 0x07, 0xE0, 0x07, 0xE0, + 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, + 0x07, 0xE0, 0x07, 0xE0, 0x0F, 0x70, 0x0E, 0x70, 0x0E, 0x78, 0x1E, 0x3C, + 0x3C, 0x1F, 0xF8, 0x1F, 0xF0, 0x07, 0xE0, 0x03, 0x03, 0x07, 0x0F, 0x3F, + 0xFF, 0xFF, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0xE0, 0x1F, 0xF8, + 0x3F, 0xFC, 0x7C, 0x3E, 0x70, 0x0F, 0xF0, 0x0F, 0xE0, 0x07, 0xE0, 0x07, + 0x00, 0x07, 0x00, 0x07, 0x00, 0x0F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0xF8, + 0x03, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x3C, 0x00, 0x38, 0x00, 0x70, 0x00, + 0x60, 0x00, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xF0, + 0x07, 0xFE, 0x07, 0xFF, 0x87, 0x83, 0xC3, 0x80, 0xF3, 0x80, 0x39, 0xC0, + 0x1C, 0xE0, 0x0E, 0x00, 0x07, 0x00, 0x0F, 0x00, 0x7F, 0x00, 0x3F, 0x00, + 0x1F, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x00, 0x03, 0xF0, 0x01, + 0xF8, 0x00, 0xFE, 0x00, 0x77, 0x00, 0x73, 0xE0, 0xF8, 0xFF, 0xF8, 0x3F, + 0xF8, 0x07, 0xF0, 0x00, 0x00, 0x38, 0x00, 0x38, 0x00, 0x78, 0x00, 0xF8, + 0x00, 0xF8, 0x01, 0xF8, 0x03, 0xB8, 0x03, 0x38, 0x07, 0x38, 0x0E, 0x38, + 0x1C, 0x38, 0x18, 0x38, 0x38, 0x38, 0x70, 0x38, 0x60, 0x38, 0xE0, 0x38, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, + 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x1F, 0xFF, 0x0F, 0xFF, 0x8F, 0xFF, + 0xC7, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x39, + 0xF0, 0x3F, 0xFE, 0x1F, 0xFF, 0x8F, 0x83, 0xE7, 0x00, 0xF0, 0x00, 0x3C, + 0x00, 0x0E, 0x00, 0x07, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xFC, 0x00, + 0xEF, 0x00, 0x73, 0xC0, 0xF0, 0xFF, 0xF8, 0x3F, 0xF8, 0x07, 0xE0, 0x00, + 0x03, 0xE0, 0x0F, 0xF8, 0x1F, 0xFC, 0x3C, 0x1E, 0x38, 0x0E, 0x70, 0x0E, + 0x70, 0x00, 0x60, 0x00, 0xE0, 0x00, 0xE3, 0xE0, 0xEF, 0xF8, 0xFF, 0xFC, + 0xFC, 0x3E, 0xF0, 0x0E, 0xF0, 0x0F, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, + 0x60, 0x07, 0x70, 0x0F, 0x70, 0x0E, 0x3C, 0x3E, 0x3F, 0xFC, 0x1F, 0xF8, + 0x07, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x06, 0x00, 0x0E, + 0x00, 0x1C, 0x00, 0x18, 0x00, 0x38, 0x00, 0x70, 0x00, 0x60, 0x00, 0xE0, + 0x00, 0xC0, 0x01, 0xC0, 0x01, 0x80, 0x03, 0x80, 0x03, 0x80, 0x07, 0x00, + 0x07, 0x00, 0x07, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0C, 0x00, + 0x1C, 0x00, 0x1C, 0x00, 0x07, 0xF0, 0x0F, 0xFE, 0x0F, 0xFF, 0x87, 0x83, + 0xC7, 0x80, 0xF3, 0x80, 0x39, 0xC0, 0x1C, 0xE0, 0x0E, 0x78, 0x0F, 0x1E, + 0x0F, 0x07, 0xFF, 0x01, 0xFF, 0x03, 0xFF, 0xE3, 0xE0, 0xF9, 0xC0, 0x1D, + 0xC0, 0x0F, 0xE0, 0x03, 0xF0, 0x01, 0xF8, 0x00, 0xFC, 0x00, 0xF7, 0x00, + 0x73, 0xE0, 0xF8, 0xFF, 0xF8, 0x3F, 0xF8, 0x07, 0xF0, 0x00, 0x07, 0xE0, + 0x1F, 0xF8, 0x3F, 0xFC, 0x7C, 0x3C, 0x70, 0x0E, 0xF0, 0x0E, 0xE0, 0x06, + 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x0F, 0x70, 0x0F, 0x78, 0x3F, + 0x3F, 0xFF, 0x1F, 0xF7, 0x07, 0xC7, 0x00, 0x07, 0x00, 0x06, 0x00, 0x0E, + 0x70, 0x0E, 0x70, 0x1C, 0x78, 0x3C, 0x3F, 0xF8, 0x1F, 0xF0, 0x07, 0xC0, + 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x07, 0xFF, 0x80, 0xFF, 0xF0, 0x00, 0x00, + 0x00, 0x07, 0xFF, 0xB6, 0xD6, 0x00, 0x00, 0x80, 0x03, 0xC0, 0x07, 0xE0, + 0x0F, 0xC0, 0x3F, 0x80, 0x7E, 0x00, 0xFC, 0x01, 0xF0, 0x00, 0xE0, 0x00, + 0x7C, 0x00, 0x1F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x80, 0x07, 0xF0, 0x00, + 0x7E, 0x00, 0x0F, 0x00, 0x01, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x80, 0x80, 0x00, 0x70, 0x00, 0x3E, 0x00, 0x0F, 0xE0, 0x00, 0xFC, + 0x00, 0x1F, 0xC0, 0x03, 0xF8, 0x00, 0x3F, 0x00, 0x07, 0x80, 0x0F, 0xC0, + 0x1F, 0x80, 0x7F, 0x00, 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x01, 0xC0, 0x00, + 0x80, 0x00, 0x00, 0x0F, 0xC0, 0x7F, 0xE1, 0xFF, 0xE3, 0xC3, 0xEF, 0x01, + 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x07, 0x00, 0x0E, 0x00, 0x38, 0x00, 0xF0, + 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x00, 0xE0, 0x03, 0xC0, 0x07, 0x00, 0x0E, + 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC0, 0x03, 0x80, + 0x07, 0x00, 0x0E, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x3F, 0xFF, 0x00, + 0x00, 0xFF, 0xFF, 0xC0, 0x01, 0xF8, 0x0F, 0xE0, 0x03, 0xE0, 0x01, 0xF0, + 0x07, 0x80, 0x00, 0xF8, 0x0F, 0x00, 0x00, 0x3C, 0x1E, 0x00, 0x00, 0x1E, + 0x3C, 0x03, 0xE0, 0x1E, 0x38, 0x0F, 0xF3, 0x8E, 0x78, 0x1E, 0x3F, 0x0F, + 0x70, 0x38, 0x1F, 0x07, 0x70, 0x78, 0x0F, 0x07, 0xE0, 0x70, 0x0E, 0x07, + 0xE0, 0x70, 0x0E, 0x07, 0xE0, 0xE0, 0x0E, 0x07, 0xE0, 0xE0, 0x1C, 0x07, + 0xE0, 0xE0, 0x1C, 0x0E, 0xE0, 0xE0, 0x1C, 0x0E, 0xE0, 0xE0, 0x38, 0x1C, + 0xF0, 0x70, 0x78, 0x3C, 0x70, 0x78, 0xFC, 0x78, 0x78, 0x3F, 0xDF, 0xF0, + 0x38, 0x1F, 0x0F, 0xC0, 0x3C, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, + 0x0F, 0x80, 0x00, 0x00, 0x07, 0xF0, 0x0E, 0x00, 0x01, 0xFF, 0xFE, 0x00, + 0x00, 0x7F, 0xFE, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x03, + 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0x7F, 0x00, 0x01, 0xDC, 0x00, 0x07, 0x78, + 0x00, 0x3C, 0xE0, 0x00, 0xE3, 0x80, 0x03, 0x8F, 0x00, 0x1E, 0x1C, 0x00, + 0x70, 0x70, 0x01, 0xC1, 0xE0, 0x0E, 0x03, 0x80, 0x38, 0x0E, 0x00, 0xE0, + 0x3C, 0x07, 0xFF, 0xF0, 0x1F, 0xFF, 0xE0, 0xFF, 0xFF, 0x83, 0xC0, 0x0E, + 0x0E, 0x00, 0x3C, 0x78, 0x00, 0xF1, 0xE0, 0x01, 0xC7, 0x00, 0x07, 0xBC, + 0x00, 0x1E, 0xF0, 0x00, 0x3B, 0x80, 0x00, 0xF0, 0xFF, 0xFC, 0x1F, 0xFF, + 0xE3, 0xFF, 0xFE, 0x70, 0x03, 0xCE, 0x00, 0x3D, 0xC0, 0x03, 0xB8, 0x00, + 0x77, 0x00, 0x0E, 0xE0, 0x01, 0xDC, 0x00, 0x73, 0x80, 0x1E, 0x7F, 0xFF, + 0x8F, 0xFF, 0xF1, 0xFF, 0xFF, 0x38, 0x00, 0xF7, 0x00, 0x0E, 0xE0, 0x00, + 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x03, + 0xF8, 0x00, 0xF7, 0xFF, 0xFC, 0xFF, 0xFF, 0x1F, 0xFF, 0x80, 0x00, 0xFF, + 0x00, 0x0F, 0xFF, 0x00, 0xFF, 0xFE, 0x07, 0xE0, 0x7C, 0x3E, 0x00, 0x78, + 0xF0, 0x00, 0xE7, 0x80, 0x03, 0xDC, 0x00, 0x07, 0x70, 0x00, 0x03, 0x80, + 0x00, 0x0E, 0x00, 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x03, 0x80, 0x00, + 0x0E, 0x00, 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x1D, 0xC0, 0x00, 0x77, + 0x00, 0x03, 0xDE, 0x00, 0x0E, 0x3C, 0x00, 0x78, 0xF8, 0x03, 0xC1, 0xF8, + 0x1F, 0x03, 0xFF, 0xF8, 0x03, 0xFF, 0xC0, 0x03, 0xF8, 0x00, 0xFF, 0xF8, + 0x0F, 0xFF, 0xE0, 0xFF, 0xFF, 0x0E, 0x00, 0xF8, 0xE0, 0x03, 0xCE, 0x00, + 0x1C, 0xE0, 0x00, 0xEE, 0x00, 0x0E, 0xE0, 0x00, 0xFE, 0x00, 0x07, 0xE0, + 0x00, 0x7E, 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0x07, 0xE0, 0x00, 0x7E, + 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0x0F, 0xE0, 0x00, 0xEE, 0x00, 0x0E, + 0xE0, 0x01, 0xEE, 0x00, 0x3C, 0xE0, 0x0F, 0x8F, 0xFF, 0xF0, 0xFF, 0xFE, + 0x0F, 0xFF, 0x80, 0xFF, 0xFF, 0xBF, 0xFF, 0xEF, 0xFF, 0xFB, 0x80, 0x00, + 0xE0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, 0x38, + 0x00, 0x0E, 0x00, 0x03, 0xFF, 0xFE, 0xFF, 0xFF, 0xBF, 0xFF, 0xEE, 0x00, + 0x03, 0x80, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, + 0xE0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x0E, 0x00, + 0x07, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x38, + 0x00, 0x1F, 0xFF, 0xCF, 0xFF, 0xE7, 0xFF, 0xF3, 0x80, 0x01, 0xC0, 0x00, + 0xE0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, 0x00, + 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x00, 0x00, 0x7F, + 0x80, 0x03, 0xFF, 0xE0, 0x07, 0xFF, 0xF8, 0x0F, 0x80, 0xFC, 0x1E, 0x00, + 0x3E, 0x3C, 0x00, 0x0E, 0x78, 0x00, 0x0F, 0x70, 0x00, 0x07, 0x70, 0x00, + 0x00, 0xE0, 0x00, 0x00, 0xE0, 0x00, 0x00, 0xE0, 0x00, 0x00, 0xE0, 0x03, + 0xFF, 0xE0, 0x03, 0xFF, 0xE0, 0x03, 0xFF, 0xE0, 0x00, 0x07, 0xF0, 0x00, + 0x07, 0x70, 0x00, 0x07, 0x70, 0x00, 0x0F, 0x78, 0x00, 0x0F, 0x3C, 0x00, + 0x1F, 0x1E, 0x00, 0x3F, 0x0F, 0xC0, 0xF7, 0x07, 0xFF, 0xE7, 0x03, 0xFF, + 0xC3, 0x00, 0xFF, 0x03, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, + 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x00, 0x07, 0xE0, + 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xF8, 0x00, 0x3F, 0x00, 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x80, + 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x00, + 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x1C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x1C, 0x00, 0x70, 0x01, 0xC0, 0x07, 0x00, + 0x1C, 0x00, 0x70, 0x01, 0xC0, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x01, 0xC0, + 0x07, 0x00, 0x1C, 0x00, 0x70, 0x01, 0xC0, 0x07, 0x00, 0x1F, 0x80, 0x7E, + 0x01, 0xF8, 0x07, 0xE0, 0x1F, 0xC0, 0xF7, 0x87, 0x9F, 0xFE, 0x3F, 0xF0, + 0x3F, 0x00, 0xE0, 0x01, 0xEE, 0x00, 0x3C, 0xE0, 0x07, 0x8E, 0x00, 0xF0, + 0xE0, 0x1E, 0x0E, 0x03, 0xE0, 0xE0, 0x7C, 0x0E, 0x0F, 0x80, 0xE1, 0xF0, + 0x0E, 0x1E, 0x00, 0xE3, 0xC0, 0x0E, 0x7C, 0x00, 0xEF, 0xE0, 0x0F, 0xCE, + 0x00, 0xF8, 0xF0, 0x0F, 0x07, 0x80, 0xE0, 0x3C, 0x0E, 0x03, 0xC0, 0xE0, + 0x1E, 0x0E, 0x00, 0xF0, 0xE0, 0x0F, 0x0E, 0x00, 0x78, 0xE0, 0x03, 0xCE, + 0x00, 0x3C, 0xE0, 0x01, 0xEE, 0x00, 0x0F, 0xE0, 0x01, 0xC0, 0x03, 0x80, + 0x07, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x01, + 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, + 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, 0x1C, 0x00, + 0x38, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xF8, 0x00, 0x1F, 0xF8, + 0x00, 0x1F, 0xF8, 0x00, 0x1F, 0xFC, 0x00, 0x3F, 0xFC, 0x00, 0x3F, 0xFC, + 0x00, 0x3F, 0xEE, 0x00, 0x77, 0xEE, 0x00, 0x77, 0xEE, 0x00, 0x77, 0xE7, + 0x00, 0xE7, 0xE7, 0x00, 0xE7, 0xE7, 0x00, 0xE7, 0xE3, 0x81, 0xC7, 0xE3, + 0x81, 0xC7, 0xE3, 0x81, 0xC7, 0xE1, 0xC3, 0x87, 0xE1, 0xC3, 0x87, 0xE1, + 0xC3, 0x87, 0xE0, 0xE7, 0x07, 0xE0, 0xE7, 0x07, 0xE0, 0xE7, 0x07, 0xE0, + 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x3C, 0x07, 0xE0, + 0x3C, 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xF8, 0x00, 0x7F, 0xC0, 0x07, + 0xFC, 0x00, 0x7F, 0xE0, 0x07, 0xEF, 0x00, 0x7E, 0x70, 0x07, 0xE7, 0x80, + 0x7E, 0x3C, 0x07, 0xE1, 0xC0, 0x7E, 0x1E, 0x07, 0xE0, 0xE0, 0x7E, 0x0F, + 0x07, 0xE0, 0x78, 0x7E, 0x03, 0x87, 0xE0, 0x3C, 0x7E, 0x01, 0xE7, 0xE0, + 0x0E, 0x7E, 0x00, 0xF7, 0xE0, 0x07, 0xFE, 0x00, 0x3F, 0xE0, 0x03, 0xFE, + 0x00, 0x1F, 0xE0, 0x01, 0xFE, 0x00, 0x0F, 0x00, 0x7F, 0x00, 0x01, 0xFF, + 0xF0, 0x01, 0xFF, 0xFC, 0x01, 0xF0, 0x1F, 0x01, 0xE0, 0x03, 0xC1, 0xE0, + 0x00, 0xF1, 0xE0, 0x00, 0x3C, 0xE0, 0x00, 0x0E, 0x70, 0x00, 0x07, 0x70, + 0x00, 0x03, 0xF8, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3F, + 0x00, 0x00, 0x1F, 0x80, 0x00, 0x0F, 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x03, + 0xB8, 0x00, 0x03, 0x9C, 0x00, 0x01, 0xCF, 0x00, 0x01, 0xE3, 0xC0, 0x01, + 0xE0, 0xF0, 0x01, 0xE0, 0x3E, 0x03, 0xE0, 0x0F, 0xFF, 0xE0, 0x03, 0xFF, + 0xE0, 0x00, 0x3F, 0x80, 0x00, 0xFF, 0xFC, 0x3F, 0xFF, 0x8F, 0xFF, 0xF3, + 0x80, 0x3E, 0xE0, 0x03, 0xF8, 0x00, 0x7E, 0x00, 0x1F, 0x80, 0x07, 0xE0, + 0x01, 0xF8, 0x00, 0x7E, 0x00, 0x3F, 0x80, 0x1E, 0xFF, 0xFF, 0x3F, 0xFF, + 0x8F, 0xFF, 0xC3, 0x80, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, + 0x80, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, + 0x00, 0x38, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x01, 0xFF, 0xF0, 0x01, 0xFF, + 0xFC, 0x01, 0xF0, 0x1F, 0x01, 0xE0, 0x03, 0xC1, 0xE0, 0x00, 0xF1, 0xE0, + 0x00, 0x3C, 0xE0, 0x00, 0x0E, 0x70, 0x00, 0x07, 0x70, 0x00, 0x01, 0xF8, + 0x00, 0x00, 0xFC, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x1F, + 0x80, 0x00, 0x0F, 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x07, 0xB8, 0x00, 0x03, + 0x9C, 0x00, 0x01, 0xCF, 0x00, 0x39, 0xE3, 0xC0, 0x1F, 0xE0, 0xF0, 0x07, + 0xE0, 0x3E, 0x03, 0xF0, 0x0F, 0xFF, 0xFC, 0x03, 0xFF, 0xEE, 0x00, 0x3F, + 0x83, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x20, 0xFF, 0xFE, 0x0F, 0xFF, + 0xF8, 0xFF, 0xFF, 0xCE, 0x00, 0x3C, 0xE0, 0x01, 0xEE, 0x00, 0x0E, 0xE0, + 0x00, 0xEE, 0x00, 0x0E, 0xE0, 0x00, 0xEE, 0x00, 0x0E, 0xE0, 0x01, 0xCE, + 0x00, 0x3C, 0xFF, 0xFF, 0x8F, 0xFF, 0xF0, 0xFF, 0xFF, 0x8E, 0x00, 0x3C, + 0xE0, 0x01, 0xEE, 0x00, 0x0E, 0xE0, 0x00, 0xEE, 0x00, 0x0E, 0xE0, 0x00, + 0xEE, 0x00, 0x0E, 0xE0, 0x00, 0xEE, 0x00, 0x0E, 0xE0, 0x00, 0xFE, 0x00, + 0x0F, 0x03, 0xFC, 0x00, 0xFF, 0xF0, 0x1F, 0xFF, 0x83, 0xE0, 0x7C, 0x38, + 0x01, 0xE7, 0x00, 0x0E, 0x70, 0x00, 0xE7, 0x00, 0x00, 0x70, 0x00, 0x07, + 0x80, 0x00, 0x3E, 0x00, 0x01, 0xFE, 0x00, 0x0F, 0xFE, 0x00, 0x3F, 0xF8, + 0x00, 0x3F, 0xE0, 0x00, 0x3E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0xE0, 0x00, + 0x7E, 0x00, 0x07, 0xF0, 0x00, 0x77, 0x80, 0x0E, 0x7C, 0x03, 0xE3, 0xFF, + 0xFC, 0x1F, 0xFF, 0x80, 0x3F, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x80, 0x70, 0x00, 0x0E, 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x07, + 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0x70, 0x00, 0x0E, + 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, 0x1C, + 0x00, 0x03, 0x80, 0x00, 0x70, 0x00, 0x0E, 0x00, 0x01, 0xC0, 0x00, 0x38, + 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, 0xE0, 0x00, 0xFC, 0x00, + 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, + 0x3F, 0x00, 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, + 0x7E, 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x00, 0x07, 0xE0, 0x00, + 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7F, 0x00, 0x1E, 0xF0, 0x07, + 0x9F, 0x01, 0xF1, 0xFF, 0xFC, 0x1F, 0xFE, 0x00, 0x7F, 0x00, 0xE0, 0x00, + 0x7F, 0x80, 0x03, 0xFC, 0x00, 0x1C, 0xE0, 0x01, 0xE7, 0x80, 0x0F, 0x3C, + 0x00, 0x70, 0xE0, 0x07, 0x87, 0x80, 0x3C, 0x1C, 0x01, 0xC0, 0xE0, 0x0E, + 0x07, 0x80, 0xE0, 0x1C, 0x07, 0x00, 0xE0, 0x38, 0x07, 0x83, 0x80, 0x1C, + 0x1C, 0x00, 0xE0, 0xE0, 0x07, 0x8E, 0x00, 0x1C, 0x70, 0x00, 0xE3, 0x80, + 0x07, 0xB8, 0x00, 0x1D, 0xC0, 0x00, 0xEE, 0x00, 0x07, 0xE0, 0x00, 0x1F, + 0x00, 0x00, 0xF8, 0x00, 0x03, 0x80, 0x00, 0x70, 0x03, 0xC0, 0x0F, 0x70, + 0x03, 0xC0, 0x0F, 0x78, 0x03, 0xE0, 0x0F, 0x78, 0x03, 0xE0, 0x0E, 0x38, + 0x07, 0xE0, 0x0E, 0x38, 0x07, 0xF0, 0x1E, 0x3C, 0x07, 0x70, 0x1E, 0x3C, + 0x07, 0x70, 0x1C, 0x1C, 0x0E, 0x70, 0x1C, 0x1C, 0x0E, 0x38, 0x3C, 0x1C, + 0x0E, 0x38, 0x3C, 0x1E, 0x1E, 0x38, 0x38, 0x0E, 0x1C, 0x38, 0x38, 0x0E, + 0x1C, 0x1C, 0x38, 0x0E, 0x1C, 0x1C, 0x78, 0x0F, 0x3C, 0x1C, 0x70, 0x07, + 0x38, 0x0E, 0x70, 0x07, 0x38, 0x0E, 0x70, 0x07, 0x38, 0x0E, 0x70, 0x07, + 0x70, 0x0E, 0xE0, 0x03, 0xF0, 0x07, 0xE0, 0x03, 0xF0, 0x07, 0xE0, 0x03, + 0xF0, 0x07, 0xE0, 0x03, 0xE0, 0x03, 0xC0, 0x01, 0xE0, 0x03, 0xC0, 0x01, + 0xE0, 0x03, 0xC0, 0xF0, 0x00, 0x7B, 0xC0, 0x07, 0x8F, 0x00, 0x38, 0x78, + 0x03, 0xC1, 0xE0, 0x3C, 0x07, 0x81, 0xC0, 0x3C, 0x1E, 0x00, 0xF1, 0xE0, + 0x03, 0x8E, 0x00, 0x1E, 0xF0, 0x00, 0x7F, 0x00, 0x01, 0xF0, 0x00, 0x0F, + 0x80, 0x00, 0x7C, 0x00, 0x07, 0xF0, 0x00, 0x3B, 0x80, 0x03, 0xDE, 0x00, + 0x3C, 0x78, 0x01, 0xC1, 0xC0, 0x1E, 0x0F, 0x01, 0xE0, 0x3C, 0x0E, 0x00, + 0xE0, 0xF0, 0x07, 0x8F, 0x00, 0x1E, 0x70, 0x00, 0xF7, 0x80, 0x03, 0xC0, + 0xF0, 0x00, 0x3C, 0xF0, 0x00, 0x78, 0xF0, 0x01, 0xE1, 0xE0, 0x03, 0x81, + 0xE0, 0x0F, 0x01, 0xC0, 0x1C, 0x03, 0xC0, 0x78, 0x03, 0xC1, 0xE0, 0x07, + 0x83, 0x80, 0x07, 0x8F, 0x00, 0x07, 0x1C, 0x00, 0x0F, 0x78, 0x00, 0x0E, + 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x70, 0x00, 0x00, 0xE0, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, + 0x00, 0x07, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x38, 0x00, + 0x00, 0x70, 0x00, 0x7F, 0xFF, 0xEF, 0xFF, 0xFD, 0xFF, 0xFF, 0x80, 0x00, + 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, + 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, + 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x7C, 0x00, + 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xF8, 0xE3, 0x8E, 0x38, 0xE3, + 0x8E, 0x38, 0xE3, 0x8E, 0x38, 0xE3, 0x8E, 0x38, 0xE3, 0x8E, 0x38, 0xE3, + 0x8E, 0x38, 0xE3, 0x8F, 0xFF, 0xFC, 0xC0, 0x30, 0x06, 0x01, 0x80, 0x60, + 0x0C, 0x03, 0x00, 0xC0, 0x18, 0x06, 0x01, 0x80, 0x20, 0x0C, 0x03, 0x00, + 0x40, 0x18, 0x06, 0x01, 0x80, 0x30, 0x0C, 0x03, 0x00, 0x60, 0x18, 0x06, + 0x00, 0xC0, 0x30, 0xFF, 0xFF, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, + 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, + 0x1C, 0x7F, 0xFF, 0xFC, 0x07, 0x00, 0x78, 0x03, 0xC0, 0x3F, 0x01, 0xD8, + 0x0C, 0xE0, 0xE3, 0x06, 0x1C, 0x70, 0xE3, 0x83, 0x18, 0x1D, 0xC0, 0x6C, + 0x03, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xF0, 0xF0, 0xE0, 0xE0, + 0xE0, 0x07, 0xF0, 0x0F, 0xFC, 0x0F, 0xFF, 0x0F, 0x03, 0xC7, 0x00, 0xE0, + 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0xFE, 0x0F, 0xFF, 0x1F, 0xF3, + 0x9F, 0x01, 0xCF, 0x00, 0xE7, 0x00, 0x73, 0x80, 0x79, 0xE0, 0xFC, 0x7F, + 0xEF, 0x9F, 0xE3, 0xC7, 0xE1, 0xE0, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, + 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE3, 0xE0, 0xEF, 0xF8, + 0xFF, 0xFC, 0xFC, 0x3E, 0xF8, 0x1E, 0xF0, 0x0E, 0xE0, 0x0F, 0xE0, 0x07, + 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xF0, 0x0E, + 0xF8, 0x1E, 0xFC, 0x3C, 0xEF, 0xFC, 0xEF, 0xF8, 0xE3, 0xE0, 0x07, 0xF0, + 0x1F, 0xF8, 0x3F, 0xFC, 0x3C, 0x1E, 0x78, 0x0E, 0x70, 0x07, 0xE0, 0x00, + 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x07, + 0x70, 0x07, 0x78, 0x0E, 0x7C, 0x1E, 0x3F, 0xFC, 0x1F, 0xF8, 0x07, 0xE0, + 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x38, 0x00, + 0x1C, 0x00, 0x0E, 0x0F, 0xC7, 0x1F, 0xFB, 0x9F, 0xFF, 0xDF, 0x07, 0xEF, + 0x01, 0xF7, 0x00, 0x7F, 0x80, 0x3F, 0x80, 0x0F, 0xC0, 0x07, 0xE0, 0x03, + 0xF0, 0x01, 0xF8, 0x00, 0xFC, 0x00, 0x77, 0x00, 0x7B, 0xC0, 0x7D, 0xF0, + 0x7E, 0x7F, 0xFB, 0x1F, 0xF9, 0x83, 0xF0, 0xC0, 0x07, 0xE0, 0x1F, 0xF8, + 0x3F, 0xFC, 0x7C, 0x1E, 0x70, 0x0E, 0x60, 0x06, 0xE0, 0x07, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0x70, 0x07, + 0x78, 0x0E, 0x3C, 0x1E, 0x3F, 0xFC, 0x1F, 0xF8, 0x07, 0xE0, 0x0E, 0x3C, + 0xF9, 0xC3, 0x87, 0x0E, 0x7F, 0xFF, 0xFC, 0xE1, 0xC3, 0x87, 0x0E, 0x1C, + 0x38, 0x70, 0xE1, 0xC3, 0x87, 0x0E, 0x1C, 0x38, 0x70, 0x07, 0xC7, 0x1F, + 0xF7, 0x3F, 0xFF, 0x3C, 0x3F, 0x78, 0x0F, 0x70, 0x0F, 0xE0, 0x07, 0xE0, + 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0x70, + 0x0F, 0x78, 0x0F, 0x7C, 0x3F, 0x3F, 0xF7, 0x1F, 0xE7, 0x07, 0xC7, 0x00, + 0x07, 0x00, 0x07, 0x00, 0x0E, 0x70, 0x0E, 0x78, 0x1E, 0x3F, 0xFC, 0x1F, + 0xF8, 0x07, 0xE0, 0xE0, 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, + 0x1C, 0x00, 0x38, 0x00, 0x71, 0xF8, 0xE7, 0xFD, 0xDF, 0xFB, 0xF0, 0xFF, + 0xC0, 0xFF, 0x00, 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x07, 0xE0, 0x0F, 0xC0, + 0x1F, 0x80, 0x3F, 0x00, 0x7E, 0x00, 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x07, + 0xE0, 0x0F, 0xC0, 0x1C, 0xFF, 0xF0, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFC, 0x1C, 0x71, 0xC7, 0x00, 0x00, 0x07, 0x1C, 0x71, 0xC7, 0x1C, + 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, + 0x73, 0xFF, 0xFB, 0xC0, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, + 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x3C, 0xE0, 0x78, 0xE0, 0xF0, + 0xE1, 0xE0, 0xE3, 0xC0, 0xE7, 0x80, 0xEF, 0x00, 0xEF, 0x80, 0xFF, 0x80, + 0xFB, 0xC0, 0xF1, 0xE0, 0xE0, 0xE0, 0xE0, 0xF0, 0xE0, 0x70, 0xE0, 0x78, + 0xE0, 0x3C, 0xE0, 0x1C, 0xE0, 0x1E, 0xE0, 0x0E, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xE3, 0xE0, 0xF8, 0xE7, 0xF1, 0xFE, + 0xEF, 0xFB, 0xFE, 0xF8, 0x7F, 0x0F, 0xF0, 0x3E, 0x07, 0xF0, 0x1C, 0x07, + 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, + 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, + 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, + 0xE0, 0x1C, 0x07, 0xE3, 0xF1, 0xCF, 0xFB, 0xBF, 0xF7, 0xE1, 0xFF, 0x81, + 0xFE, 0x01, 0xF8, 0x03, 0xF0, 0x07, 0xE0, 0x0F, 0xC0, 0x1F, 0x80, 0x3F, + 0x00, 0x7E, 0x00, 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x07, 0xE0, 0x0F, 0xC0, + 0x1F, 0x80, 0x38, 0x07, 0xF0, 0x0F, 0xFE, 0x0F, 0xFF, 0x87, 0x83, 0xC7, + 0x80, 0xF3, 0x80, 0x3B, 0x80, 0x1F, 0xC0, 0x07, 0xE0, 0x03, 0xF0, 0x01, + 0xF8, 0x00, 0xFC, 0x00, 0x7E, 0x00, 0x3B, 0x80, 0x39, 0xE0, 0x3C, 0x78, + 0x3C, 0x3F, 0xFE, 0x0F, 0xFE, 0x01, 0xFC, 0x00, 0xE3, 0xE0, 0xE7, 0xF8, + 0xEF, 0xFC, 0xFC, 0x3E, 0xF8, 0x1E, 0xF0, 0x0E, 0xE0, 0x0F, 0xE0, 0x07, + 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xF0, 0x0E, + 0xF8, 0x1E, 0xFC, 0x3E, 0xFF, 0xFC, 0xEF, 0xF8, 0xE3, 0xE0, 0xE0, 0x00, + 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0x07, 0xE1, + 0x8F, 0xFC, 0xCF, 0xFF, 0x67, 0x83, 0xF7, 0x80, 0xFB, 0x80, 0x3F, 0xC0, + 0x1F, 0xC0, 0x07, 0xE0, 0x03, 0xF0, 0x01, 0xF8, 0x00, 0xFC, 0x00, 0x7E, + 0x00, 0x3B, 0x80, 0x3D, 0xE0, 0x3E, 0xF8, 0x3F, 0x3F, 0xFF, 0x8F, 0xFD, + 0xC1, 0xF8, 0xE0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, + 0x07, 0x00, 0x03, 0x80, 0xE3, 0xF7, 0xFB, 0xFF, 0x8F, 0x07, 0x83, 0x81, + 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, + 0x38, 0x00, 0x0F, 0xC0, 0xFF, 0x87, 0xFF, 0x3C, 0x1E, 0xE0, 0x3B, 0x80, + 0x0E, 0x00, 0x3C, 0x00, 0x7F, 0x00, 0xFF, 0x80, 0xFF, 0x80, 0x7F, 0x00, + 0x3F, 0x80, 0x7E, 0x01, 0xFC, 0x1F, 0x7F, 0xF8, 0xFF, 0xC1, 0xFC, 0x00, + 0x38, 0x70, 0xE1, 0xCF, 0xFF, 0xFF, 0x9C, 0x38, 0x70, 0xE1, 0xC3, 0x87, + 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xC3, 0xE7, 0xC7, 0x80, 0xE0, 0x0F, 0xC0, + 0x1F, 0x80, 0x3F, 0x00, 0x7E, 0x00, 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x07, + 0xE0, 0x0F, 0xC0, 0x1F, 0x80, 0x3F, 0x00, 0x7E, 0x00, 0xFC, 0x03, 0xFC, + 0x0F, 0xFC, 0x3F, 0x7F, 0xEE, 0xFF, 0x9C, 0x7E, 0x38, 0x70, 0x03, 0xB8, + 0x03, 0x9C, 0x01, 0xC7, 0x00, 0xE3, 0x80, 0xE1, 0xC0, 0x70, 0x70, 0x38, + 0x38, 0x38, 0x1C, 0x1C, 0x07, 0x0E, 0x03, 0x8E, 0x01, 0xC7, 0x00, 0x77, + 0x00, 0x3B, 0x80, 0x1D, 0xC0, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, + 0x70, 0x00, 0xF0, 0x1C, 0x03, 0xB8, 0x1F, 0x03, 0xDC, 0x0F, 0x81, 0xCE, + 0x07, 0xC0, 0xE7, 0x83, 0xE0, 0x71, 0xC3, 0xB8, 0x70, 0xE1, 0xDC, 0x38, + 0x70, 0xEE, 0x1C, 0x1C, 0x63, 0x0E, 0x0E, 0x71, 0xCE, 0x07, 0x38, 0xE7, + 0x03, 0x9C, 0x73, 0x80, 0xEC, 0x19, 0x80, 0x7E, 0x0F, 0xC0, 0x3F, 0x07, + 0xE0, 0x0F, 0x83, 0xF0, 0x07, 0x80, 0xF0, 0x03, 0xC0, 0x78, 0x01, 0xE0, + 0x3C, 0x00, 0x70, 0x07, 0x38, 0x0E, 0x3C, 0x1C, 0x1C, 0x1C, 0x0E, 0x38, + 0x0F, 0x70, 0x07, 0x70, 0x03, 0xE0, 0x03, 0xC0, 0x01, 0xC0, 0x03, 0xE0, + 0x07, 0xE0, 0x07, 0x70, 0x0E, 0x78, 0x1E, 0x38, 0x1C, 0x1C, 0x38, 0x1E, + 0x78, 0x0E, 0x70, 0x07, 0x70, 0x07, 0x38, 0x03, 0x9C, 0x01, 0xC7, 0x01, + 0xC3, 0x80, 0xE1, 0xC0, 0x70, 0x70, 0x70, 0x38, 0x38, 0x1C, 0x3C, 0x07, + 0x1C, 0x03, 0x8E, 0x01, 0xCE, 0x00, 0x77, 0x00, 0x3B, 0x80, 0x1F, 0x80, + 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xE0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x38, + 0x00, 0x1C, 0x00, 0x1E, 0x00, 0x0E, 0x00, 0x3F, 0x00, 0x1F, 0x00, 0x0F, + 0x00, 0x00, 0x7F, 0xFC, 0xFF, 0xF9, 0xFF, 0xF0, 0x00, 0xE0, 0x03, 0x80, + 0x0E, 0x00, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x1C, 0x00, 0x70, + 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xF8, 0x07, 0x0F, 0x1F, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, + 0x1C, 0x1C, 0x1C, 0x1C, 0x38, 0xF8, 0xE0, 0xF8, 0x38, 0x1C, 0x1C, 0x1C, + 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1F, 0x0F, 0x07, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xE0, 0xF0, 0xF8, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x1C, 0x1F, + 0x07, 0x1F, 0x1C, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x38, 0xF8, 0xF0, 0xE0, 0x38, 0x00, 0xFC, 0x03, 0xFC, 0x1F, 0x3E, + 0x3C, 0x1F, 0xE0, 0x1F, 0x80, 0x1E, 0x00}; + +const GFXglyph FreeSans18pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 9, 0, 1}, // 0x20 ' ' + {0, 3, 26, 12, 4, -25}, // 0x21 '!' + {10, 9, 9, 12, 1, -24}, // 0x22 '"' + {21, 19, 24, 19, 0, -23}, // 0x23 '#' + {78, 16, 30, 19, 2, -26}, // 0x24 '$' + {138, 29, 25, 31, 1, -24}, // 0x25 '%' + {229, 20, 25, 23, 2, -24}, // 0x26 '&' + {292, 3, 9, 7, 2, -24}, // 0x27 ''' + {296, 8, 33, 12, 3, -25}, // 0x28 '(' + {329, 8, 33, 12, 1, -25}, // 0x29 ')' + {362, 10, 10, 14, 2, -25}, // 0x2A '*' + {375, 16, 16, 20, 2, -15}, // 0x2B '+' + {407, 3, 9, 10, 3, -3}, // 0x2C ',' + {411, 8, 3, 12, 2, -10}, // 0x2D '-' + {414, 3, 4, 9, 3, -3}, // 0x2E '.' + {416, 10, 26, 10, 0, -25}, // 0x2F '/' + {449, 16, 25, 19, 2, -24}, // 0x30 '0' + {499, 8, 25, 19, 4, -24}, // 0x31 '1' + {524, 16, 25, 19, 2, -24}, // 0x32 '2' + {574, 17, 25, 19, 1, -24}, // 0x33 '3' + {628, 16, 25, 19, 1, -24}, // 0x34 '4' + {678, 17, 25, 19, 1, -24}, // 0x35 '5' + {732, 16, 25, 19, 2, -24}, // 0x36 '6' + {782, 16, 25, 19, 2, -24}, // 0x37 '7' + {832, 17, 25, 19, 1, -24}, // 0x38 '8' + {886, 16, 25, 19, 1, -24}, // 0x39 '9' + {936, 3, 19, 9, 3, -18}, // 0x3A ':' + {944, 3, 24, 9, 3, -18}, // 0x3B ';' + {953, 17, 17, 20, 2, -16}, // 0x3C '<' + {990, 17, 9, 20, 2, -12}, // 0x3D '=' + {1010, 17, 17, 20, 2, -16}, // 0x3E '>' + {1047, 15, 26, 19, 3, -25}, // 0x3F '?' + {1096, 32, 31, 36, 1, -25}, // 0x40 '@' + {1220, 22, 26, 23, 1, -25}, // 0x41 'A' + {1292, 19, 26, 23, 3, -25}, // 0x42 'B' + {1354, 22, 26, 25, 1, -25}, // 0x43 'C' + {1426, 20, 26, 24, 3, -25}, // 0x44 'D' + {1491, 18, 26, 22, 3, -25}, // 0x45 'E' + {1550, 17, 26, 21, 3, -25}, // 0x46 'F' + {1606, 24, 26, 27, 1, -25}, // 0x47 'G' + {1684, 19, 26, 25, 3, -25}, // 0x48 'H' + {1746, 3, 26, 10, 4, -25}, // 0x49 'I' + {1756, 14, 26, 18, 1, -25}, // 0x4A 'J' + {1802, 20, 26, 24, 3, -25}, // 0x4B 'K' + {1867, 15, 26, 20, 3, -25}, // 0x4C 'L' + {1916, 24, 26, 30, 3, -25}, // 0x4D 'M' + {1994, 20, 26, 26, 3, -25}, // 0x4E 'N' + {2059, 25, 26, 27, 1, -25}, // 0x4F 'O' + {2141, 18, 26, 23, 3, -25}, // 0x50 'P' + {2200, 25, 28, 27, 1, -25}, // 0x51 'Q' + {2288, 20, 26, 25, 3, -25}, // 0x52 'R' + {2353, 20, 26, 23, 1, -25}, // 0x53 'S' + {2418, 19, 26, 22, 1, -25}, // 0x54 'T' + {2480, 19, 26, 25, 3, -25}, // 0x55 'U' + {2542, 21, 26, 23, 1, -25}, // 0x56 'V' + {2611, 32, 26, 33, 0, -25}, // 0x57 'W' + {2715, 21, 26, 23, 1, -25}, // 0x58 'X' + {2784, 23, 26, 24, 0, -25}, // 0x59 'Y' + {2859, 19, 26, 22, 1, -25}, // 0x5A 'Z' + {2921, 6, 33, 10, 2, -25}, // 0x5B '[' + {2946, 10, 26, 10, 0, -25}, // 0x5C '\' + {2979, 6, 33, 10, 1, -25}, // 0x5D ']' + {3004, 13, 13, 16, 2, -24}, // 0x5E '^' + {3026, 21, 2, 19, -1, 5}, // 0x5F '_' + {3032, 7, 5, 9, 1, -25}, // 0x60 '`' + {3037, 17, 19, 19, 1, -18}, // 0x61 'a' + {3078, 16, 26, 20, 2, -25}, // 0x62 'b' + {3130, 16, 19, 18, 1, -18}, // 0x63 'c' + {3168, 17, 26, 20, 1, -25}, // 0x64 'd' + {3224, 16, 19, 19, 1, -18}, // 0x65 'e' + {3262, 7, 26, 10, 1, -25}, // 0x66 'f' + {3285, 16, 27, 19, 1, -18}, // 0x67 'g' + {3339, 15, 26, 19, 2, -25}, // 0x68 'h' + {3388, 3, 26, 8, 2, -25}, // 0x69 'i' + {3398, 6, 34, 9, 0, -25}, // 0x6A 'j' + {3424, 16, 26, 18, 2, -25}, // 0x6B 'k' + {3476, 3, 26, 7, 2, -25}, // 0x6C 'l' + {3486, 24, 19, 28, 2, -18}, // 0x6D 'm' + {3543, 15, 19, 19, 2, -18}, // 0x6E 'n' + {3579, 17, 19, 19, 1, -18}, // 0x6F 'o' + {3620, 16, 25, 20, 2, -18}, // 0x70 'p' + {3670, 17, 25, 20, 1, -18}, // 0x71 'q' + {3724, 9, 19, 12, 2, -18}, // 0x72 'r' + {3746, 14, 19, 17, 2, -18}, // 0x73 's' + {3780, 7, 23, 10, 1, -22}, // 0x74 't' + {3801, 15, 19, 19, 2, -18}, // 0x75 'u' + {3837, 17, 19, 17, 0, -18}, // 0x76 'v' + {3878, 25, 19, 25, 0, -18}, // 0x77 'w' + {3938, 16, 19, 17, 0, -18}, // 0x78 'x' + {3976, 17, 27, 17, 0, -18}, // 0x79 'y' + {4034, 15, 19, 17, 1, -18}, // 0x7A 'z' + {4070, 8, 33, 12, 1, -25}, // 0x7B '{' + {4103, 2, 33, 9, 3, -25}, // 0x7C '|' + {4112, 8, 33, 12, 3, -25}, // 0x7D '}' + {4145, 15, 7, 18, 1, -15}}; // 0x7E '~' + +const GFXfont FreeSans18pt7b PROGMEM = {(uint8_t *)FreeSans18pt7bBitmaps, + (GFXglyph *)FreeSans18pt7bGlyphs, 0x20, + 0x7E, 42}; + +// Approx. 4831 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSans24pt7b.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSans24pt7b.h new file mode 100644 index 0000000..3559530 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSans24pt7b.h @@ -0,0 +1,729 @@ +#pragma once +#include + +const uint8_t FreeSans24pt7bBitmaps[] PROGMEM = { + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x76, 0x66, + 0x66, 0x00, 0x0F, 0xFF, 0xFF, 0xF1, 0xFE, 0x3F, 0xC7, 0xF8, 0xFF, 0x1F, + 0xE3, 0xFC, 0x7F, 0x8F, 0xF1, 0xEC, 0x19, 0x83, 0x30, 0x60, 0x00, 0x70, + 0x3C, 0x00, 0x70, 0x3C, 0x00, 0xF0, 0x38, 0x00, 0xF0, 0x38, 0x00, 0xF0, + 0x78, 0x00, 0xE0, 0x78, 0x00, 0xE0, 0x78, 0x01, 0xE0, 0x70, 0x01, 0xE0, + 0x70, 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x03, 0xC0, + 0xE0, 0x03, 0xC0, 0xE0, 0x03, 0xC0, 0xE0, 0x03, 0x81, 0xE0, 0x03, 0x81, + 0xE0, 0x03, 0x81, 0xE0, 0x07, 0x81, 0xC0, 0x07, 0x81, 0xC0, 0xFF, 0xFF, + 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0x0F, 0x03, 0x80, 0x0F, 0x03, + 0x80, 0x0F, 0x07, 0x80, 0x0E, 0x07, 0x80, 0x0E, 0x07, 0x80, 0x1E, 0x07, + 0x00, 0x1E, 0x07, 0x00, 0x1E, 0x07, 0x00, 0x1C, 0x0F, 0x00, 0x1C, 0x0F, + 0x00, 0x00, 0x38, 0x00, 0x01, 0xFC, 0x00, 0x1F, 0xFE, 0x00, 0x7F, 0xFE, + 0x01, 0xFF, 0xFE, 0x07, 0xE7, 0x3E, 0x0F, 0x8E, 0x3C, 0x3E, 0x1C, 0x3C, + 0x78, 0x38, 0x38, 0xF0, 0x70, 0x71, 0xE0, 0xE0, 0xE3, 0xC1, 0xC0, 0x07, + 0x83, 0x80, 0x0F, 0x87, 0x00, 0x0F, 0x8E, 0x00, 0x1F, 0xDC, 0x00, 0x1F, + 0xF8, 0x00, 0x1F, 0xFF, 0x00, 0x0F, 0xFF, 0x80, 0x07, 0xFF, 0x80, 0x03, + 0xFF, 0x80, 0x07, 0x1F, 0x80, 0x0E, 0x1F, 0x00, 0x1C, 0x1F, 0x00, 0x38, + 0x1F, 0xC0, 0x70, 0x3F, 0x80, 0xE0, 0x7F, 0x81, 0xC0, 0xFF, 0x03, 0x81, + 0xEF, 0x07, 0x07, 0x9F, 0x0E, 0x0F, 0x3E, 0x1C, 0x3E, 0x3F, 0x39, 0xF8, + 0x3F, 0xFF, 0xE0, 0x3F, 0xFF, 0x00, 0x0F, 0xF8, 0x00, 0x03, 0x80, 0x00, + 0x07, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x00, 0x00, 0x1C, 0x00, 0x0F, 0xC0, 0x00, 0x78, 0x00, 0x3F, 0xE0, 0x00, + 0xE0, 0x01, 0xFF, 0xE0, 0x03, 0x80, 0x03, 0xFF, 0xE0, 0x07, 0x00, 0x0F, + 0x87, 0xC0, 0x1C, 0x00, 0x3C, 0x03, 0xC0, 0x38, 0x00, 0x70, 0x03, 0x80, + 0xE0, 0x00, 0xE0, 0x07, 0x03, 0xC0, 0x01, 0xC0, 0x0E, 0x07, 0x00, 0x03, + 0x80, 0x1C, 0x1E, 0x00, 0x07, 0x80, 0x78, 0x38, 0x00, 0x07, 0xC3, 0xE0, + 0xF0, 0x00, 0x07, 0xFF, 0xC1, 0xC0, 0x00, 0x0F, 0xFF, 0x07, 0x80, 0x00, + 0x0F, 0xFC, 0x0E, 0x00, 0x00, 0x07, 0xE0, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x01, 0xC0, 0x3F, 0x00, 0x00, 0x03, 0x80, 0xFF, + 0x80, 0x00, 0x0E, 0x07, 0xFF, 0x80, 0x00, 0x3C, 0x0F, 0xFF, 0x80, 0x00, + 0x70, 0x3E, 0x1F, 0x00, 0x01, 0xE0, 0xF0, 0x0F, 0x00, 0x03, 0x81, 0xC0, + 0x0E, 0x00, 0x0F, 0x03, 0x80, 0x1C, 0x00, 0x1C, 0x07, 0x00, 0x38, 0x00, + 0x78, 0x0E, 0x00, 0x70, 0x00, 0xE0, 0x1E, 0x01, 0xE0, 0x03, 0x80, 0x1F, + 0x0F, 0x80, 0x07, 0x00, 0x1F, 0xFF, 0x00, 0x1C, 0x00, 0x3F, 0xFC, 0x00, + 0x38, 0x00, 0x1F, 0xF0, 0x00, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0x7E, 0x00, + 0x00, 0x1F, 0xF0, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x7F, 0xFC, 0x00, 0x07, + 0xC3, 0xC0, 0x00, 0xF8, 0x1E, 0x00, 0x0F, 0x00, 0xE0, 0x00, 0xF0, 0x0E, + 0x00, 0x0F, 0x00, 0xE0, 0x00, 0xF0, 0x0E, 0x00, 0x07, 0x81, 0xE0, 0x00, + 0x7C, 0x3C, 0x00, 0x03, 0xEF, 0x80, 0x00, 0x1F, 0xF0, 0x00, 0x01, 0xFE, + 0x00, 0x00, 0x1F, 0x80, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0xE0, 0x00, + 0x1F, 0x1E, 0x07, 0x83, 0xE0, 0xF0, 0x78, 0x7C, 0x0F, 0x8F, 0x87, 0x80, + 0x7C, 0xF0, 0xF0, 0x03, 0xFF, 0x0F, 0x00, 0x1F, 0xE0, 0xF0, 0x00, 0xFE, + 0x0F, 0x00, 0x0F, 0xC0, 0xF0, 0x00, 0x7E, 0x0F, 0x80, 0x0F, 0xF0, 0x7C, + 0x01, 0xFF, 0x07, 0xF0, 0x7D, 0xF8, 0x3F, 0xFF, 0x8F, 0xC1, 0xFF, 0xF0, + 0x7E, 0x0F, 0xFE, 0x03, 0xE0, 0x3F, 0x80, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF6, 0x66, 0x01, 0xC0, 0x70, 0x38, 0x1C, 0x07, 0x03, 0xC0, 0xE0, 0x78, + 0x1C, 0x07, 0x03, 0xC0, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x70, 0x3C, + 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, + 0xC0, 0x70, 0x1E, 0x07, 0x81, 0xE0, 0x38, 0x0F, 0x03, 0xC0, 0x70, 0x1E, + 0x03, 0x80, 0xE0, 0x1C, 0x07, 0x00, 0xE0, 0x18, 0x07, 0xE0, 0x38, 0x07, + 0x01, 0xC0, 0x38, 0x0F, 0x01, 0xC0, 0x78, 0x0E, 0x03, 0x80, 0xF0, 0x1C, + 0x07, 0x01, 0xE0, 0x78, 0x1E, 0x03, 0x80, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, + 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x07, 0x81, 0xE0, 0x78, + 0x1E, 0x07, 0x03, 0xC0, 0xF0, 0x38, 0x1E, 0x07, 0x01, 0xC0, 0xE0, 0x38, + 0x1C, 0x06, 0x03, 0x80, 0x03, 0x00, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x63, + 0x1B, 0xFF, 0xFF, 0xFF, 0xC3, 0xF0, 0x07, 0x80, 0x3F, 0x01, 0xCE, 0x07, + 0x3C, 0x38, 0x70, 0x21, 0x00, 0x00, 0x38, 0x00, 0x00, 0x70, 0x00, 0x00, + 0xE0, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, 0x00, 0x07, 0x00, 0x00, 0x0E, + 0x00, 0x00, 0x1C, 0x00, 0x00, 0x38, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x07, 0x00, 0x00, 0x0E, 0x00, + 0x00, 0x1C, 0x00, 0x00, 0x38, 0x00, 0x00, 0x70, 0x00, 0x00, 0xE0, 0x00, + 0x01, 0xC0, 0x00, 0x03, 0x80, 0x00, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xF3, + 0x33, 0x36, 0xEC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xF0, + 0x00, 0x38, 0x01, 0xC0, 0x0C, 0x00, 0xE0, 0x07, 0x00, 0x30, 0x03, 0x80, + 0x1C, 0x00, 0xC0, 0x06, 0x00, 0x70, 0x03, 0x80, 0x18, 0x01, 0xC0, 0x0E, + 0x00, 0x60, 0x03, 0x00, 0x38, 0x01, 0x80, 0x0C, 0x00, 0xE0, 0x07, 0x00, + 0x30, 0x03, 0x80, 0x1C, 0x00, 0xC0, 0x06, 0x00, 0x70, 0x03, 0x80, 0x18, + 0x01, 0xC0, 0x0E, 0x00, 0x60, 0x07, 0x00, 0x38, 0x00, 0x00, 0xFC, 0x00, + 0x0F, 0xFC, 0x00, 0xFF, 0xFC, 0x07, 0xFF, 0xF8, 0x1F, 0x87, 0xE0, 0xF8, + 0x07, 0xC3, 0xC0, 0x0F, 0x1F, 0x00, 0x3E, 0x78, 0x00, 0x79, 0xE0, 0x01, + 0xE7, 0x80, 0x07, 0xBC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, + 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0x00, + 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0x00, 0x03, + 0xDE, 0x00, 0x1E, 0x78, 0x00, 0x79, 0xE0, 0x01, 0xE7, 0xC0, 0x0F, 0x8F, + 0x00, 0x3C, 0x3E, 0x01, 0xF0, 0x7C, 0x1F, 0x81, 0xFF, 0xFE, 0x03, 0xFF, + 0xF0, 0x03, 0xFF, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x60, 0x1C, 0x03, 0x80, + 0xF0, 0x3E, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x3C, 0x07, 0x80, 0xF0, + 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, + 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, + 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x01, 0xFE, 0x00, 0x1F, 0xFE, 0x01, 0xFF, + 0xFE, 0x0F, 0xFF, 0xFC, 0x3F, 0x03, 0xF9, 0xF0, 0x03, 0xE7, 0x80, 0x07, + 0xFE, 0x00, 0x1F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0x00, 0x03, 0xC0, + 0x00, 0x0F, 0x00, 0x00, 0x7C, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, + 0x7C, 0x00, 0x07, 0xF0, 0x00, 0x7F, 0x80, 0x07, 0xF8, 0x00, 0x3F, 0xC0, + 0x03, 0xFC, 0x00, 0x1F, 0xC0, 0x00, 0xFC, 0x00, 0x07, 0xC0, 0x00, 0x3E, + 0x00, 0x00, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1C, 0x00, 0x00, 0x70, 0x00, + 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, + 0x00, 0xFE, 0x00, 0x0F, 0xFF, 0x80, 0x3F, 0xFF, 0x80, 0xFF, 0xFF, 0x83, + 0xF0, 0x1F, 0x87, 0xC0, 0x1F, 0x1F, 0x00, 0x1F, 0x3C, 0x00, 0x1E, 0x78, + 0x00, 0x3C, 0xF0, 0x00, 0x78, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, + 0x07, 0x80, 0x00, 0x7F, 0x00, 0x1F, 0xFC, 0x00, 0x3F, 0xE0, 0x00, 0x7F, + 0xE0, 0x00, 0xFF, 0xF0, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x03, + 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x0F, 0xF0, 0x00, 0x1F, + 0xE0, 0x00, 0x3F, 0xE0, 0x00, 0xFB, 0xC0, 0x01, 0xE7, 0xC0, 0x07, 0xC7, + 0xE0, 0x3F, 0x0F, 0xFF, 0xFE, 0x0F, 0xFF, 0xF8, 0x07, 0xFF, 0xC0, 0x03, + 0xFC, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x1F, 0x00, 0x00, + 0x7E, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xF8, 0x00, 0x0F, 0xF0, 0x00, 0x3F, + 0xE0, 0x00, 0x7B, 0xC0, 0x01, 0xE7, 0x80, 0x07, 0x8F, 0x00, 0x0F, 0x1E, + 0x00, 0x3C, 0x3C, 0x00, 0xF0, 0x78, 0x03, 0xC0, 0xF0, 0x07, 0x81, 0xE0, + 0x1E, 0x03, 0xC0, 0x78, 0x07, 0x81, 0xE0, 0x0F, 0x03, 0xC0, 0x1E, 0x0F, + 0x00, 0x3C, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0x00, 0x07, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, 0x00, + 0x3C, 0x00, 0x00, 0x78, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x03, + 0xC0, 0x1F, 0xFF, 0xF0, 0x7F, 0xFF, 0xC1, 0xFF, 0xFF, 0x07, 0xFF, 0xFC, + 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x1F, 0x3F, 0x80, 0x7B, 0xFF, + 0x81, 0xFF, 0xFF, 0x07, 0xFF, 0xFE, 0x1F, 0x80, 0xFC, 0x78, 0x01, 0xF8, + 0x00, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, + 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3F, 0xC0, 0x00, + 0xFF, 0x80, 0x07, 0x9E, 0x00, 0x1E, 0x7C, 0x00, 0xF1, 0xFC, 0x0F, 0xC3, + 0xFF, 0xFE, 0x07, 0xFF, 0xF0, 0x0F, 0xFF, 0x80, 0x07, 0xF0, 0x00, 0x00, + 0xFE, 0x00, 0x0F, 0xFE, 0x00, 0x7F, 0xFC, 0x03, 0xFF, 0xF8, 0x1F, 0x83, + 0xF0, 0xF8, 0x07, 0xC3, 0xC0, 0x0F, 0x8F, 0x00, 0x1E, 0x78, 0x00, 0x79, + 0xE0, 0x00, 0x07, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xF0, 0xFE, 0x03, 0xCF, + 0xFE, 0x0F, 0x7F, 0xFE, 0x3F, 0xFF, 0xFC, 0xFF, 0x03, 0xF3, 0xF0, 0x03, + 0xEF, 0x80, 0x07, 0xBE, 0x00, 0x1F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, + 0x00, 0x03, 0xFC, 0x00, 0x0F, 0x70, 0x00, 0x3D, 0xC0, 0x00, 0xF7, 0x80, + 0x07, 0x9F, 0x00, 0x3E, 0x3E, 0x00, 0xF8, 0xFC, 0x0F, 0xC1, 0xFF, 0xFE, + 0x03, 0xFF, 0xF0, 0x07, 0xFF, 0x80, 0x07, 0xF8, 0x00, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x07, 0x00, 0x00, + 0x78, 0x00, 0x07, 0x80, 0x00, 0x38, 0x00, 0x03, 0xC0, 0x00, 0x3C, 0x00, + 0x01, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x70, + 0x00, 0x07, 0x80, 0x00, 0x38, 0x00, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x01, + 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x38, 0x00, + 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, + 0x00, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, + 0x01, 0xFE, 0x00, 0x1F, 0xFE, 0x00, 0xFF, 0xFC, 0x07, 0xFF, 0xF8, 0x3F, + 0x03, 0xF1, 0xF0, 0x03, 0xC7, 0xC0, 0x0F, 0x9E, 0x00, 0x1E, 0x78, 0x00, + 0x79, 0xE0, 0x01, 0xE7, 0x80, 0x0F, 0x8F, 0x00, 0x3C, 0x3F, 0x03, 0xF0, + 0x7F, 0xFF, 0x80, 0x7F, 0xF8, 0x03, 0xFF, 0xF0, 0x1F, 0xFF, 0xE0, 0xFC, + 0x0F, 0xC7, 0xC0, 0x0F, 0x9E, 0x00, 0x1E, 0xF8, 0x00, 0x7F, 0xC0, 0x00, + 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, + 0x80, 0x07, 0xDE, 0x00, 0x1E, 0x7C, 0x00, 0xF8, 0xFC, 0x0F, 0xC3, 0xFF, + 0xFF, 0x07, 0xFF, 0xF8, 0x07, 0xFF, 0x80, 0x07, 0xF8, 0x00, 0x01, 0xFC, + 0x00, 0x3F, 0xF8, 0x03, 0xFF, 0xE0, 0x3F, 0xFF, 0x83, 0xF0, 0x7E, 0x3E, + 0x00, 0xF1, 0xE0, 0x07, 0xCF, 0x00, 0x1E, 0xF0, 0x00, 0x77, 0x80, 0x03, + 0xBC, 0x00, 0x1F, 0xE0, 0x00, 0xFF, 0x00, 0x07, 0xF8, 0x00, 0x3F, 0xE0, + 0x03, 0xEF, 0x00, 0x1F, 0x7C, 0x01, 0xF9, 0xF8, 0x3F, 0xCF, 0xFF, 0xFE, + 0x3F, 0xFE, 0xF0, 0xFF, 0xE7, 0x80, 0xFC, 0x3C, 0x00, 0x01, 0xE0, 0x00, + 0x0E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x9E, 0x00, 0x3C, 0xF0, 0x03, 0xC7, + 0xC0, 0x3E, 0x1F, 0x03, 0xE0, 0xFF, 0xFE, 0x03, 0xFF, 0xE0, 0x0F, 0xFE, + 0x00, 0x1F, 0xC0, 0x00, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xF3, 0x33, 0x36, 0xEC, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1C, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x7F, 0xC0, + 0x03, 0xFC, 0x00, 0x3F, 0xE0, 0x01, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, + 0x80, 0x03, 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0xE0, 0x00, 0x0F, 0xF0, + 0x00, 0x07, 0xFC, 0x00, 0x03, 0xFE, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x7F, + 0xC0, 0x00, 0x3F, 0xE0, 0x00, 0x0F, 0xF0, 0x00, 0x07, 0xE0, 0x00, 0x01, + 0xC0, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xF0, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x03, 0xF0, 0x00, 0x07, + 0xF8, 0x00, 0x03, 0xFC, 0x00, 0x01, 0xFF, 0x00, 0x00, 0xFF, 0x80, 0x00, + 0x3F, 0xC0, 0x00, 0x1F, 0xF0, 0x00, 0x07, 0xF8, 0x00, 0x03, 0xF8, 0x00, + 0x01, 0xF0, 0x00, 0x07, 0xE0, 0x00, 0x3F, 0xC0, 0x03, 0xFC, 0x00, 0x1F, + 0xE0, 0x01, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x80, 0x07, 0xFC, 0x00, + 0x0F, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x03, 0xF8, + 0x00, 0xFF, 0xF0, 0x1F, 0xFF, 0x83, 0xFF, 0xFC, 0x7E, 0x0F, 0xE7, 0x80, + 0x3E, 0x78, 0x01, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, + 0x00, 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xE0, 0x00, 0x3E, 0x00, 0x07, 0xC0, + 0x00, 0xF8, 0x00, 0x3F, 0x00, 0x07, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, + 0x01, 0xF0, 0x00, 0x1E, 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, 0xE0, + 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, + 0xE0, 0x00, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xC0, + 0x00, 0x00, 0x3F, 0xFF, 0xFE, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xF0, 0x00, + 0x07, 0xFC, 0x03, 0xFF, 0x00, 0x01, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x7E, + 0x00, 0x00, 0x7F, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xF0, 0x07, 0xC0, 0x00, + 0x00, 0x3F, 0x01, 0xF0, 0x00, 0x00, 0x03, 0xF0, 0x3C, 0x00, 0x7E, 0x00, + 0x3E, 0x0F, 0x00, 0x3F, 0xE3, 0xC3, 0xE3, 0xE0, 0x1F, 0xFE, 0x78, 0x3C, + 0x78, 0x07, 0xE1, 0xFF, 0x07, 0xDF, 0x01, 0xF0, 0x1F, 0xC0, 0xFB, 0xC0, + 0x7C, 0x01, 0xF8, 0x0F, 0x78, 0x0F, 0x00, 0x3F, 0x01, 0xEF, 0x03, 0xC0, + 0x07, 0xC0, 0x3F, 0xC0, 0x78, 0x00, 0xF8, 0x07, 0xF8, 0x0F, 0x00, 0x1F, + 0x00, 0xFF, 0x03, 0xC0, 0x03, 0xC0, 0x1F, 0xE0, 0x78, 0x00, 0x78, 0x07, + 0xFC, 0x0F, 0x00, 0x1F, 0x00, 0xF7, 0x81, 0xE0, 0x03, 0xC0, 0x1E, 0xF0, + 0x3C, 0x00, 0x78, 0x07, 0x9E, 0x07, 0x80, 0x1F, 0x01, 0xF3, 0xE0, 0xF8, + 0x07, 0xC0, 0x3C, 0x3C, 0x0F, 0x81, 0xF8, 0x0F, 0x87, 0x81, 0xF8, 0x7F, + 0x87, 0xE0, 0xF8, 0x1F, 0xFE, 0xFF, 0xF8, 0x0F, 0x01, 0xFF, 0x1F, 0xFC, + 0x01, 0xF0, 0x0F, 0x80, 0xFE, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x03, + 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF8, + 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, + 0x7C, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0x80, 0x00, 0x01, 0xFF, 0xFF, 0xF8, + 0x00, 0x00, 0x0F, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, + 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, + 0x07, 0xF8, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x00, 0xF7, 0xC0, 0x00, 0x03, + 0xDF, 0x00, 0x00, 0x1F, 0x3C, 0x00, 0x00, 0x78, 0xF8, 0x00, 0x01, 0xE3, + 0xE0, 0x00, 0x0F, 0x87, 0x80, 0x00, 0x3C, 0x1F, 0x00, 0x01, 0xF0, 0x7C, + 0x00, 0x07, 0x80, 0xF0, 0x00, 0x1E, 0x03, 0xE0, 0x00, 0xF8, 0x0F, 0x80, + 0x03, 0xC0, 0x1E, 0x00, 0x0F, 0x00, 0x7C, 0x00, 0x7C, 0x01, 0xF0, 0x01, + 0xE0, 0x03, 0xC0, 0x07, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xFE, 0x00, 0xFF, + 0xFF, 0xFC, 0x07, 0xFF, 0xFF, 0xF0, 0x1F, 0x00, 0x07, 0xC0, 0x78, 0x00, + 0x0F, 0x83, 0xE0, 0x00, 0x3E, 0x0F, 0x80, 0x00, 0xF8, 0x3C, 0x00, 0x01, + 0xF1, 0xF0, 0x00, 0x07, 0xC7, 0xC0, 0x00, 0x1F, 0x1E, 0x00, 0x00, 0x3E, + 0xF8, 0x00, 0x00, 0xFB, 0xE0, 0x00, 0x01, 0xE0, 0xFF, 0xFF, 0x80, 0x7F, + 0xFF, 0xF0, 0x3F, 0xFF, 0xFE, 0x1F, 0xFF, 0xFF, 0x0F, 0x00, 0x0F, 0xC7, + 0x80, 0x01, 0xE3, 0xC0, 0x00, 0xF9, 0xE0, 0x00, 0x3C, 0xF0, 0x00, 0x1E, + 0x78, 0x00, 0x0F, 0x3C, 0x00, 0x07, 0x9E, 0x00, 0x07, 0x8F, 0x00, 0x03, + 0xC7, 0x80, 0x07, 0xC3, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, + 0xF8, 0x7F, 0xFF, 0xFE, 0x3C, 0x00, 0x0F, 0x9E, 0x00, 0x03, 0xEF, 0x00, + 0x00, 0xF7, 0x80, 0x00, 0x3F, 0xC0, 0x00, 0x1F, 0xE0, 0x00, 0x0F, 0xF0, + 0x00, 0x07, 0xF8, 0x00, 0x03, 0xFC, 0x00, 0x01, 0xFE, 0x00, 0x01, 0xFF, + 0x00, 0x01, 0xF7, 0x80, 0x01, 0xFB, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xF8, + 0xFF, 0xFF, 0xF8, 0x7F, 0xFF, 0xF0, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x07, + 0xFF, 0xE0, 0x00, 0x7F, 0xFF, 0xC0, 0x0F, 0xFF, 0xFF, 0x00, 0xFE, 0x01, + 0xF8, 0x07, 0xC0, 0x03, 0xE0, 0x7C, 0x00, 0x0F, 0x87, 0xC0, 0x00, 0x3C, + 0x3C, 0x00, 0x01, 0xE3, 0xE0, 0x00, 0x07, 0x9E, 0x00, 0x00, 0x3C, 0xF0, + 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x78, 0x00, 0x00, 0x03, 0xC0, 0x00, + 0x00, 0x1E, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, + 0x3C, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x78, + 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x0F, 0x78, 0x00, + 0x00, 0x7B, 0xC0, 0x00, 0x07, 0xDF, 0x00, 0x00, 0x3C, 0x78, 0x00, 0x01, + 0xE3, 0xE0, 0x00, 0x1F, 0x0F, 0x80, 0x01, 0xF0, 0x3E, 0x00, 0x1F, 0x81, + 0xFE, 0x03, 0xF8, 0x07, 0xFF, 0xFF, 0x80, 0x0F, 0xFF, 0xF8, 0x00, 0x3F, + 0xFF, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0xFF, 0x80, 0x1F, 0xFF, 0xFE, + 0x03, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, 0xFE, 0x0F, 0x00, 0x0F, 0xE1, 0xE0, + 0x00, 0x7E, 0x3C, 0x00, 0x07, 0xE7, 0x80, 0x00, 0x7C, 0xF0, 0x00, 0x07, + 0xDE, 0x00, 0x00, 0x7B, 0xC0, 0x00, 0x0F, 0x78, 0x00, 0x01, 0xEF, 0x00, + 0x00, 0x1F, 0xE0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x0F, + 0xF0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x07, 0xF8, 0x00, + 0x00, 0xFF, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xF7, + 0x80, 0x00, 0x1E, 0xF0, 0x00, 0x03, 0xDE, 0x00, 0x00, 0xFB, 0xC0, 0x00, + 0x3E, 0x78, 0x00, 0x0F, 0xCF, 0x00, 0x03, 0xF1, 0xE0, 0x01, 0xFC, 0x3F, + 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xF0, 0x1F, 0xFF, 0xF0, + 0x00, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, + 0xFE, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, + 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, + 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xFF, 0xFF, + 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xF0, 0x00, + 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, + 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, + 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, + 0x00, 0x00, 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, + 0x00, 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, + 0x3F, 0xFF, 0xFC, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0x3C, + 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, + 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, 0x00, + 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xF0, + 0x00, 0x03, 0xC0, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0xFF, 0xFE, + 0x00, 0x07, 0xFF, 0xFF, 0x00, 0x1F, 0xFF, 0xFF, 0x00, 0x7F, 0x80, 0x7F, + 0x01, 0xF8, 0x00, 0x3F, 0x07, 0xE0, 0x00, 0x1F, 0x0F, 0x80, 0x00, 0x1E, + 0x3E, 0x00, 0x00, 0x3E, 0x78, 0x00, 0x00, 0x3D, 0xF0, 0x00, 0x00, 0x03, + 0xC0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x01, 0xE0, + 0x00, 0xFF, 0xFF, 0xC0, 0x01, 0xFF, 0xFF, 0x80, 0x03, 0xFF, 0xFF, 0x00, + 0x07, 0xFF, 0xFE, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x07, 0xBC, 0x00, + 0x00, 0x0F, 0x78, 0x00, 0x00, 0x1E, 0xF8, 0x00, 0x00, 0x7D, 0xF0, 0x00, + 0x00, 0xF9, 0xF0, 0x00, 0x03, 0xF3, 0xF0, 0x00, 0x07, 0xE3, 0xF0, 0x00, + 0x1F, 0xC3, 0xF0, 0x00, 0xFF, 0x83, 0xFC, 0x07, 0xEF, 0x03, 0xFF, 0xFF, + 0x9E, 0x03, 0xFF, 0xFE, 0x1C, 0x01, 0xFF, 0xF0, 0x38, 0x00, 0x7F, 0x80, + 0x00, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x3F, 0xC0, + 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x3F, + 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, + 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, + 0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, + 0xFF, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, + 0x00, 0xFF, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, + 0x00, 0x00, 0xFF, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, + 0xFC, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0xE0, + 0x00, 0x3C, 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0xC0, + 0x00, 0x78, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x07, 0x80, + 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x0F, 0x00, + 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x1E, 0x00, + 0x03, 0xC0, 0x00, 0x7F, 0x80, 0x0F, 0xF0, 0x01, 0xFE, 0x00, 0x3F, 0xC0, + 0x07, 0xF8, 0x01, 0xFF, 0x80, 0x3E, 0xF0, 0x0F, 0x9F, 0x83, 0xF1, 0xFF, + 0xFC, 0x3F, 0xFF, 0x01, 0xFF, 0xC0, 0x0F, 0xE0, 0x00, 0xF0, 0x00, 0x07, + 0xDE, 0x00, 0x01, 0xF3, 0xC0, 0x00, 0x7C, 0x78, 0x00, 0x1F, 0x0F, 0x00, + 0x07, 0xC1, 0xE0, 0x01, 0xF0, 0x3C, 0x00, 0x7C, 0x07, 0x80, 0x1F, 0x00, + 0xF0, 0x07, 0xC0, 0x1E, 0x01, 0xF0, 0x03, 0xC0, 0x7C, 0x00, 0x78, 0x1F, + 0x00, 0x0F, 0x07, 0xC0, 0x01, 0xE1, 0xF0, 0x00, 0x3C, 0x7E, 0x00, 0x07, + 0x9F, 0xE0, 0x00, 0xF7, 0xFE, 0x00, 0x1F, 0xF7, 0xC0, 0x03, 0xFC, 0x7C, + 0x00, 0x7F, 0x07, 0xC0, 0x0F, 0xC0, 0xF8, 0x01, 0xF0, 0x0F, 0x80, 0x3C, + 0x00, 0xF8, 0x07, 0x80, 0x1F, 0x80, 0xF0, 0x01, 0xF0, 0x1E, 0x00, 0x1F, + 0x03, 0xC0, 0x03, 0xF0, 0x78, 0x00, 0x3E, 0x0F, 0x00, 0x03, 0xE1, 0xE0, + 0x00, 0x3E, 0x3C, 0x00, 0x07, 0xC7, 0x80, 0x00, 0x7C, 0xF0, 0x00, 0x07, + 0xDE, 0x00, 0x00, 0xFC, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x3C, 0x00, 0x01, + 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, + 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x0F, + 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xF0, 0x00, + 0x07, 0x80, 0x00, 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, + 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, + 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xFC, 0x00, + 0x00, 0x3F, 0xFC, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x7F, 0xFE, 0x00, + 0x00, 0x7F, 0xFE, 0x00, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, + 0x00, 0xFF, 0xF7, 0x00, 0x00, 0xEF, 0xF7, 0x80, 0x01, 0xEF, 0xF7, 0x80, + 0x01, 0xEF, 0xF3, 0xC0, 0x01, 0xCF, 0xF3, 0xC0, 0x03, 0xCF, 0xF3, 0xC0, + 0x03, 0xCF, 0xF1, 0xE0, 0x03, 0x8F, 0xF1, 0xE0, 0x07, 0x8F, 0xF1, 0xE0, + 0x07, 0x8F, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, + 0x0F, 0x0F, 0xF0, 0x78, 0x1E, 0x0F, 0xF0, 0x78, 0x1E, 0x0F, 0xF0, 0x78, + 0x1E, 0x0F, 0xF0, 0x3C, 0x3C, 0x0F, 0xF0, 0x3C, 0x3C, 0x0F, 0xF0, 0x3C, + 0x3C, 0x0F, 0xF0, 0x1E, 0x78, 0x0F, 0xF0, 0x1E, 0x78, 0x0F, 0xF0, 0x0E, + 0x78, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x07, + 0xF0, 0x0F, 0xF0, 0x07, 0xE0, 0x0F, 0xF0, 0x07, 0xE0, 0x0F, 0xF0, 0x03, + 0xE0, 0x0F, 0xF8, 0x00, 0x03, 0xFF, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x3F, + 0xF8, 0x00, 0x0F, 0xFE, 0x00, 0x03, 0xFF, 0xC0, 0x00, 0xFF, 0xF8, 0x00, + 0x3F, 0xDE, 0x00, 0x0F, 0xF7, 0xC0, 0x03, 0xFC, 0xF8, 0x00, 0xFF, 0x1E, + 0x00, 0x3F, 0xC7, 0xC0, 0x0F, 0xF0, 0xF0, 0x03, 0xFC, 0x3E, 0x00, 0xFF, + 0x07, 0xC0, 0x3F, 0xC0, 0xF0, 0x0F, 0xF0, 0x3E, 0x03, 0xFC, 0x07, 0xC0, + 0xFF, 0x00, 0xF0, 0x3F, 0xC0, 0x3E, 0x0F, 0xF0, 0x07, 0x83, 0xFC, 0x01, + 0xF0, 0xFF, 0x00, 0x3E, 0x3F, 0xC0, 0x07, 0x8F, 0xF0, 0x01, 0xF3, 0xFC, + 0x00, 0x3E, 0xFF, 0x00, 0x07, 0xBF, 0xC0, 0x01, 0xFF, 0xF0, 0x00, 0x3F, + 0xFC, 0x00, 0x0F, 0xFF, 0x00, 0x01, 0xFF, 0xC0, 0x00, 0x3F, 0xF0, 0x00, + 0x0F, 0xFC, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x3F, 0xFF, + 0x80, 0x00, 0x7F, 0xFF, 0xF0, 0x00, 0x7F, 0xFF, 0xFC, 0x00, 0x7F, 0x80, + 0xFF, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x7E, 0x00, 0x03, 0xF0, 0x3E, 0x00, + 0x00, 0xF8, 0x3E, 0x00, 0x00, 0x3E, 0x1E, 0x00, 0x00, 0x0F, 0x1F, 0x00, + 0x00, 0x07, 0xCF, 0x00, 0x00, 0x01, 0xE7, 0x80, 0x00, 0x00, 0xF7, 0xC0, + 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x0F, 0xF0, + 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x01, 0xFE, + 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x00, 0x3F, + 0xC0, 0x00, 0x00, 0x3E, 0xF0, 0x00, 0x00, 0x1E, 0x78, 0x00, 0x00, 0x0F, + 0x3E, 0x00, 0x00, 0x0F, 0x8F, 0x00, 0x00, 0x07, 0x87, 0xC0, 0x00, 0x07, + 0xC1, 0xF0, 0x00, 0x07, 0xC0, 0xFC, 0x00, 0x07, 0xE0, 0x3F, 0x00, 0x07, + 0xE0, 0x0F, 0xF0, 0x1F, 0xE0, 0x03, 0xFF, 0xFF, 0xE0, 0x00, 0xFF, 0xFF, + 0xE0, 0x00, 0x1F, 0xFF, 0xC0, 0x00, 0x01, 0xFF, 0x00, 0x00, 0xFF, 0xFF, + 0x80, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFC, 0xF0, 0x00, + 0xFE, 0xF0, 0x00, 0x3E, 0xF0, 0x00, 0x1F, 0xF0, 0x00, 0x0F, 0xF0, 0x00, + 0x0F, 0xF0, 0x00, 0x0F, 0xF0, 0x00, 0x0F, 0xF0, 0x00, 0x0F, 0xF0, 0x00, + 0x0F, 0xF0, 0x00, 0x1F, 0xF0, 0x00, 0x3E, 0xF0, 0x00, 0xFE, 0xFF, 0xFF, + 0xFC, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xC0, 0xF0, 0x00, + 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, + 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, + 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, + 0x00, 0xF0, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x3F, 0xFF, 0x80, + 0x00, 0x7F, 0xFF, 0xE0, 0x00, 0x7F, 0xFF, 0xFC, 0x00, 0x7F, 0x80, 0xFF, + 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x7E, 0x00, 0x03, 0xF0, 0x3E, 0x00, 0x00, + 0xF8, 0x3E, 0x00, 0x00, 0x3E, 0x1E, 0x00, 0x00, 0x0F, 0x1F, 0x00, 0x00, + 0x07, 0xCF, 0x00, 0x00, 0x01, 0xE7, 0x80, 0x00, 0x00, 0xF7, 0xC0, 0x00, + 0x00, 0x7F, 0xC0, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x0F, 0xF0, 0x00, + 0x00, 0x07, 0xF8, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x01, 0xFE, 0x00, + 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x00, 0x3F, 0xC0, + 0x00, 0x00, 0x3E, 0xF0, 0x00, 0x00, 0x1E, 0x78, 0x00, 0x00, 0x0F, 0x3E, + 0x00, 0x00, 0x0F, 0x8F, 0x00, 0x03, 0x87, 0x87, 0xC0, 0x03, 0xE7, 0xC1, + 0xF0, 0x00, 0xFF, 0xC0, 0xFC, 0x00, 0x3F, 0xE0, 0x3F, 0x00, 0x0F, 0xE0, + 0x0F, 0xF0, 0x1F, 0xF0, 0x03, 0xFF, 0xFF, 0xFC, 0x00, 0xFF, 0xFF, 0xFF, + 0x00, 0x1F, 0xFF, 0xC7, 0xC0, 0x01, 0xFF, 0x01, 0xE0, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0xE0, 0x3F, 0xFF, 0xFE, 0x0F, + 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xF8, 0xF0, 0x00, 0x3F, 0x3C, 0x00, 0x07, + 0xCF, 0x00, 0x00, 0xFB, 0xC0, 0x00, 0x1E, 0xF0, 0x00, 0x07, 0xBC, 0x00, + 0x01, 0xEF, 0x00, 0x00, 0x7B, 0xC0, 0x00, 0x1E, 0xF0, 0x00, 0x07, 0xBC, + 0x00, 0x03, 0xCF, 0x00, 0x01, 0xF3, 0xC0, 0x00, 0xF8, 0xFF, 0xFF, 0xFC, + 0x3F, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xF8, 0xF0, 0x00, + 0x3F, 0x3C, 0x00, 0x03, 0xCF, 0x00, 0x00, 0xFB, 0xC0, 0x00, 0x1E, 0xF0, + 0x00, 0x07, 0xBC, 0x00, 0x01, 0xEF, 0x00, 0x00, 0x7B, 0xC0, 0x00, 0x1E, + 0xF0, 0x00, 0x07, 0xBC, 0x00, 0x01, 0xEF, 0x00, 0x00, 0x7B, 0xC0, 0x00, + 0x1E, 0xF0, 0x00, 0x07, 0xFC, 0x00, 0x01, 0xF0, 0x00, 0x7F, 0xC0, 0x00, + 0x7F, 0xFF, 0x00, 0x1F, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0x81, 0xF8, 0x07, + 0xF0, 0x7C, 0x00, 0x1F, 0x0F, 0x00, 0x01, 0xE3, 0xE0, 0x00, 0x3E, 0x78, + 0x00, 0x03, 0xCF, 0x00, 0x00, 0x79, 0xE0, 0x00, 0x00, 0x3C, 0x00, 0x00, + 0x07, 0xC0, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0xFF, + 0xE0, 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0x7F, 0xFF, 0x00, 0x01, 0xFF, 0xF8, + 0x00, 0x03, 0xFF, 0x80, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x3F, 0x80, 0x00, + 0x01, 0xF0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x3F, + 0xC0, 0x00, 0x07, 0xF8, 0x00, 0x00, 0xF7, 0x80, 0x00, 0x3E, 0xF8, 0x00, + 0x07, 0x9F, 0x80, 0x01, 0xF1, 0xFE, 0x01, 0xFC, 0x1F, 0xFF, 0xFF, 0x01, + 0xFF, 0xFF, 0xC0, 0x0F, 0xFF, 0xE0, 0x00, 0x3F, 0xE0, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, + 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x78, 0x00, + 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x78, + 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xE0, 0x00, + 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xE0, + 0x00, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, + 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, + 0x01, 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, + 0x00, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x3F, 0xC0, + 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x3F, + 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, + 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, + 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, + 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, + 0xFF, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, + 0x00, 0xFF, 0x00, 0x00, 0x7D, 0xE0, 0x00, 0x1E, 0x7C, 0x00, 0x0F, 0x9F, + 0x80, 0x07, 0xE3, 0xF8, 0x07, 0xF0, 0x7F, 0xFF, 0xF8, 0x0F, 0xFF, 0xFC, + 0x00, 0xFF, 0xFC, 0x00, 0x0F, 0xF8, 0x00, 0xF8, 0x00, 0x00, 0xF7, 0xC0, + 0x00, 0x0F, 0x9E, 0x00, 0x00, 0x7C, 0xF8, 0x00, 0x03, 0xC7, 0xC0, 0x00, + 0x3E, 0x1E, 0x00, 0x01, 0xF0, 0xF8, 0x00, 0x0F, 0x07, 0xC0, 0x00, 0xF8, + 0x1E, 0x00, 0x07, 0xC0, 0xF8, 0x00, 0x3C, 0x07, 0xC0, 0x03, 0xE0, 0x1E, + 0x00, 0x1F, 0x00, 0xF8, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x80, 0x1E, 0x00, + 0x7C, 0x00, 0xF8, 0x03, 0xC0, 0x03, 0xC0, 0x1E, 0x00, 0x1F, 0x01, 0xF0, + 0x00, 0xF8, 0x0F, 0x00, 0x03, 0xC0, 0x78, 0x00, 0x1F, 0x07, 0x80, 0x00, + 0xF8, 0x3C, 0x00, 0x03, 0xC1, 0xE0, 0x00, 0x1F, 0x1E, 0x00, 0x00, 0x78, + 0xF0, 0x00, 0x03, 0xC7, 0x80, 0x00, 0x1F, 0x78, 0x00, 0x00, 0x7B, 0xC0, + 0x00, 0x03, 0xDE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x7F, 0x00, 0x00, + 0x03, 0xF8, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, + 0x00, 0x3F, 0x00, 0x07, 0xFE, 0x00, 0x0F, 0xC0, 0x01, 0xFF, 0x80, 0x03, + 0xF0, 0x00, 0x7D, 0xE0, 0x00, 0xFC, 0x00, 0x1E, 0x7C, 0x00, 0x7F, 0x80, + 0x0F, 0x9F, 0x00, 0x1F, 0xE0, 0x03, 0xE7, 0xC0, 0x07, 0xF8, 0x00, 0xF8, + 0xF0, 0x01, 0xFF, 0x00, 0x3C, 0x3E, 0x00, 0xF3, 0xC0, 0x1F, 0x0F, 0x80, + 0x3C, 0xF0, 0x07, 0xC3, 0xE0, 0x0F, 0x3C, 0x01, 0xF0, 0x78, 0x07, 0xC7, + 0x80, 0x78, 0x1F, 0x01, 0xE1, 0xE0, 0x1E, 0x07, 0xC0, 0x78, 0x78, 0x0F, + 0x80, 0xF0, 0x1E, 0x1E, 0x03, 0xE0, 0x3C, 0x0F, 0x83, 0xC0, 0xF0, 0x0F, + 0x83, 0xC0, 0xF0, 0x3C, 0x03, 0xE0, 0xF0, 0x3C, 0x1F, 0x00, 0x78, 0x3C, + 0x0F, 0x87, 0xC0, 0x1E, 0x1E, 0x01, 0xE1, 0xE0, 0x07, 0x87, 0x80, 0x78, + 0x78, 0x01, 0xF1, 0xE0, 0x1E, 0x1E, 0x00, 0x3C, 0xF8, 0x03, 0xCF, 0x80, + 0x0F, 0x3C, 0x00, 0xF3, 0xC0, 0x03, 0xCF, 0x00, 0x3C, 0xF0, 0x00, 0xFB, + 0xC0, 0x0F, 0xBC, 0x00, 0x1F, 0xF0, 0x01, 0xFF, 0x00, 0x07, 0xF8, 0x00, + 0x7F, 0x80, 0x01, 0xFE, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x80, 0x03, 0xF8, + 0x00, 0x0F, 0xC0, 0x00, 0xFE, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x00, + 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x01, 0xF0, 0x00, 0x7C, 0x00, + 0x01, 0xF3, 0xF0, 0x00, 0x1F, 0x8F, 0x80, 0x00, 0xF8, 0x3E, 0x00, 0x0F, + 0x80, 0xF8, 0x00, 0xF8, 0x07, 0xC0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x00, + 0x7C, 0x07, 0xC0, 0x03, 0xE0, 0x3E, 0x00, 0x0F, 0x83, 0xE0, 0x00, 0x3E, + 0x3E, 0x00, 0x01, 0xF1, 0xF0, 0x00, 0x07, 0xDF, 0x00, 0x00, 0x1F, 0xF0, + 0x00, 0x00, 0xFF, 0x80, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x0F, 0x80, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x07, + 0xDF, 0x00, 0x00, 0x7C, 0x78, 0x00, 0x03, 0xE3, 0xE0, 0x00, 0x3E, 0x0F, + 0x80, 0x03, 0xE0, 0x3E, 0x00, 0x1F, 0x01, 0xF0, 0x01, 0xF0, 0x07, 0xC0, + 0x1F, 0x00, 0x3F, 0x00, 0xF8, 0x00, 0xF8, 0x0F, 0x80, 0x03, 0xE0, 0xF8, + 0x00, 0x1F, 0x8F, 0xC0, 0x00, 0x7C, 0x7C, 0x00, 0x01, 0xF7, 0xC0, 0x00, + 0x0F, 0xC0, 0xFC, 0x00, 0x00, 0xFD, 0xF0, 0x00, 0x03, 0xE7, 0xE0, 0x00, + 0x1F, 0x0F, 0x80, 0x00, 0x7C, 0x1F, 0x00, 0x03, 0xE0, 0x7C, 0x00, 0x1F, + 0x00, 0xF8, 0x00, 0x7C, 0x01, 0xF0, 0x03, 0xE0, 0x07, 0xC0, 0x0F, 0x80, + 0x0F, 0x80, 0x7C, 0x00, 0x1E, 0x01, 0xE0, 0x00, 0x7C, 0x0F, 0x80, 0x00, + 0xF8, 0x7C, 0x00, 0x03, 0xE1, 0xE0, 0x00, 0x07, 0xCF, 0x80, 0x00, 0x0F, + 0x3C, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x00, 0xFC, + 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x1E, 0x00, + 0x00, 0x00, 0x78, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x07, 0x80, 0x00, + 0x00, 0x1E, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, + 0x07, 0x80, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x01, + 0xE0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x3F, 0xFF, + 0xFF, 0xC7, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0xE0, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x01, + 0xF8, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, 0xE0, 0x00, + 0x00, 0xFC, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x01, 0xF0, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x07, 0xE0, 0x00, 0x01, + 0xF8, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, 0xF0, 0x00, + 0x00, 0xFC, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, + 0x00, 0x00, 0x7E, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, + 0xF8, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xFF, 0xFF, 0xFF, + 0xFF, 0xE0, 0x07, 0x00, 0x18, 0x00, 0xE0, 0x07, 0x00, 0x18, 0x00, 0xE0, + 0x07, 0x00, 0x18, 0x00, 0xC0, 0x07, 0x00, 0x38, 0x00, 0xC0, 0x07, 0x00, + 0x38, 0x00, 0xC0, 0x06, 0x00, 0x38, 0x00, 0xC0, 0x06, 0x00, 0x38, 0x01, + 0xC0, 0x06, 0x00, 0x38, 0x01, 0xC0, 0x06, 0x00, 0x30, 0x01, 0xC0, 0x0E, + 0x00, 0x30, 0x01, 0xC0, 0x0E, 0x00, 0x30, 0x01, 0xC0, 0x0E, 0xFF, 0xFF, + 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x0F, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x3F, + 0x00, 0x0F, 0xC0, 0x07, 0xF8, 0x01, 0xCE, 0x00, 0x73, 0x80, 0x3C, 0x70, + 0x0E, 0x1C, 0x07, 0x87, 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x38, 0x07, 0x0E, + 0x01, 0xC7, 0x80, 0x79, 0xC0, 0x0E, 0x70, 0x03, 0xB8, 0x00, 0x70, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x0F, 0x01, 0xE0, 0x3C, 0x07, + 0x00, 0xE0, 0x1C, 0x01, 0xFF, 0x00, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0xE0, + 0x3F, 0xFF, 0xF0, 0x7E, 0x03, 0xF8, 0x7C, 0x00, 0xF8, 0x78, 0x00, 0x78, + 0x00, 0x00, 0x78, 0x00, 0x00, 0x78, 0x00, 0x00, 0x78, 0x00, 0x00, 0xF8, + 0x00, 0x03, 0xF8, 0x00, 0xFF, 0xF8, 0x0F, 0xFF, 0xF8, 0x3F, 0xFE, 0x78, + 0x7F, 0x80, 0x78, 0xFC, 0x00, 0x78, 0xF8, 0x00, 0x78, 0xF0, 0x00, 0x78, + 0xF0, 0x00, 0xF8, 0xF0, 0x00, 0xF8, 0xF8, 0x03, 0xF8, 0x7E, 0x0F, 0xF8, + 0x7F, 0xFF, 0x7F, 0x3F, 0xFE, 0x3F, 0x1F, 0xFC, 0x3F, 0x07, 0xE0, 0x1F, + 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xF0, + 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xF0, 0x7E, + 0x03, 0xC7, 0xFE, 0x0F, 0x7F, 0xFC, 0x3D, 0xFF, 0xF8, 0xFF, 0x07, 0xF3, + 0xF8, 0x07, 0xCF, 0xC0, 0x0F, 0xBE, 0x00, 0x1E, 0xF8, 0x00, 0x7B, 0xE0, + 0x01, 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, + 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x01, 0xFF, + 0x80, 0x07, 0xBE, 0x00, 0x1E, 0xFC, 0x00, 0xFB, 0xF8, 0x07, 0xCF, 0xF0, + 0x7F, 0x3B, 0xFF, 0xF8, 0xE7, 0xFF, 0xC3, 0x8F, 0xFE, 0x00, 0x0F, 0xE0, + 0x00, 0x00, 0xFE, 0x00, 0x3F, 0xFC, 0x03, 0xFF, 0xF0, 0x3F, 0xFF, 0xC3, + 0xF0, 0x3F, 0x1F, 0x00, 0xF9, 0xF0, 0x03, 0xCF, 0x00, 0x0F, 0x78, 0x00, + 0x07, 0xC0, 0x00, 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, + 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, + 0x1E, 0x00, 0x1E, 0xF0, 0x00, 0xF7, 0xC0, 0x0F, 0x9F, 0x00, 0xF8, 0xFC, + 0x0F, 0xC3, 0xFF, 0xFC, 0x0F, 0xFF, 0xC0, 0x3F, 0xFC, 0x00, 0x7F, 0x00, + 0x00, 0x00, 0x1E, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x78, 0x00, 0x00, 0xF0, + 0x00, 0x01, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x0F, 0x01, + 0xFC, 0x1E, 0x0F, 0xFE, 0x3C, 0x3F, 0xFF, 0x78, 0xFF, 0xFF, 0xF3, 0xF8, + 0x3F, 0xE7, 0xC0, 0x1F, 0xDF, 0x00, 0x1F, 0xBE, 0x00, 0x1F, 0x78, 0x00, + 0x3F, 0xF0, 0x00, 0x7F, 0xC0, 0x00, 0x7F, 0x80, 0x00, 0xFF, 0x00, 0x01, + 0xFE, 0x00, 0x03, 0xFC, 0x00, 0x07, 0xF8, 0x00, 0x0F, 0xF0, 0x00, 0x1F, + 0xF0, 0x00, 0x7D, 0xE0, 0x00, 0xFB, 0xC0, 0x01, 0xF7, 0xC0, 0x07, 0xE7, + 0xC0, 0x1F, 0xCF, 0xE0, 0xFF, 0x8F, 0xFF, 0xF7, 0x0F, 0xFF, 0xCE, 0x0F, + 0xFF, 0x1C, 0x07, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x0F, 0xFE, 0x00, 0xFF, + 0xFC, 0x07, 0xFF, 0xF8, 0x1F, 0x83, 0xF0, 0xF8, 0x07, 0xC7, 0xC0, 0x0F, + 0x9E, 0x00, 0x1E, 0x78, 0x00, 0x7B, 0xC0, 0x00, 0xFF, 0x00, 0x03, 0xFC, + 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, + 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x1E, + 0x7C, 0x00, 0x78, 0xF8, 0x03, 0xE3, 0xF0, 0x3F, 0x07, 0xFF, 0xF8, 0x0F, + 0xFF, 0xE0, 0x1F, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0x03, 0xC3, 0xF0, 0xFC, + 0x7F, 0x1F, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x3F, 0xFF, 0xFF, 0xFF, 0x1E, + 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, + 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, + 0x1E, 0x07, 0x80, 0x00, 0xFC, 0x00, 0x1F, 0xF8, 0xF0, 0xFF, 0xFB, 0xC7, + 0xFF, 0xFF, 0x3F, 0x83, 0xFC, 0xF8, 0x07, 0xF7, 0xC0, 0x0F, 0xDE, 0x00, + 0x1F, 0x78, 0x00, 0x7F, 0xE0, 0x00, 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x0F, + 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xF0, + 0x00, 0x3F, 0xC0, 0x00, 0xF7, 0x80, 0x07, 0xDE, 0x00, 0x1F, 0x7C, 0x00, + 0xFC, 0xF8, 0x07, 0xF3, 0xF8, 0x3F, 0xC7, 0xFF, 0xEF, 0x0F, 0xFF, 0x3C, + 0x1F, 0xF8, 0xF0, 0x1F, 0x83, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x79, 0xE0, + 0x01, 0xE7, 0xC0, 0x0F, 0x8F, 0x80, 0xFC, 0x3F, 0xFF, 0xF0, 0x7F, 0xFF, + 0x80, 0xFF, 0xFC, 0x00, 0x7F, 0x80, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0xC0, + 0x00, 0x78, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x07, 0x80, + 0x00, 0xF0, 0xFE, 0x1E, 0x3F, 0xE3, 0xCF, 0xFF, 0x7B, 0xFF, 0xEF, 0xF0, + 0xFF, 0xF8, 0x07, 0xFF, 0x00, 0x7F, 0xC0, 0x0F, 0xF8, 0x01, 0xFE, 0x00, + 0x3F, 0xC0, 0x07, 0xF8, 0x00, 0xFF, 0x00, 0x1F, 0xE0, 0x03, 0xFC, 0x00, + 0x7F, 0x80, 0x0F, 0xF0, 0x01, 0xFE, 0x00, 0x3F, 0xC0, 0x07, 0xF8, 0x00, + 0xFF, 0x00, 0x1F, 0xE0, 0x03, 0xFC, 0x00, 0x7F, 0x80, 0x0F, 0xF0, 0x01, + 0xFE, 0x00, 0x3C, 0xFF, 0xFF, 0xF0, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x0F, + 0x0F, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x1F, + 0xFF, 0xFE, 0xFE, 0xF8, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x3C, 0x00, 0x01, + 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, + 0x00, 0xF0, 0x00, 0x07, 0x80, 0x1F, 0x3C, 0x01, 0xF1, 0xE0, 0x1F, 0x0F, + 0x01, 0xF0, 0x78, 0x1F, 0x03, 0xC1, 0xF0, 0x1E, 0x1F, 0x00, 0xF1, 0xF0, + 0x07, 0x9F, 0x00, 0x3D, 0xF8, 0x01, 0xFF, 0xE0, 0x0F, 0xFF, 0x80, 0x7F, + 0x7C, 0x03, 0xF1, 0xF0, 0x1F, 0x07, 0xC0, 0xF0, 0x3E, 0x07, 0x80, 0xF8, + 0x3C, 0x03, 0xC1, 0xE0, 0x1F, 0x0F, 0x00, 0x7C, 0x78, 0x03, 0xE3, 0xC0, + 0x0F, 0x9E, 0x00, 0x3C, 0xF0, 0x01, 0xF7, 0x80, 0x07, 0xC0, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0x00, 0xFC, 0x03, 0xF0, 0xE3, 0xFE, 0x0F, 0xFC, 0xE7, + 0xFF, 0x1F, 0xFE, 0xEF, 0xFF, 0xBF, 0xFE, 0xFE, 0x0F, 0xF8, 0x3F, 0xFC, + 0x07, 0xF0, 0x1F, 0xF8, 0x03, 0xE0, 0x0F, 0xF8, 0x03, 0xE0, 0x0F, 0xF0, + 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, + 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, + 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, + 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, + 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, + 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0x00, + 0x7E, 0x0E, 0x1F, 0xF8, 0xE7, 0xFF, 0xCE, 0xFF, 0xFE, 0xEF, 0x07, 0xFF, + 0xE0, 0x1F, 0xFC, 0x01, 0xFF, 0x80, 0x0F, 0xF8, 0x00, 0xFF, 0x00, 0x0F, + 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, + 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, + 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, + 0x00, 0xFF, 0x00, 0x0F, 0x00, 0xFE, 0x00, 0x07, 0xFF, 0x00, 0x3F, 0xFF, + 0x80, 0xFF, 0xFF, 0x83, 0xF8, 0x3F, 0x87, 0xC0, 0x1F, 0x1F, 0x00, 0x1F, + 0x3C, 0x00, 0x1E, 0x78, 0x00, 0x3D, 0xF0, 0x00, 0x7F, 0xC0, 0x00, 0x7F, + 0x80, 0x00, 0xFF, 0x00, 0x01, 0xFE, 0x00, 0x03, 0xFC, 0x00, 0x07, 0xF8, + 0x00, 0x0F, 0xF0, 0x00, 0x1F, 0xF0, 0x00, 0x7D, 0xE0, 0x00, 0xF3, 0xC0, + 0x01, 0xE7, 0xC0, 0x07, 0xC7, 0xC0, 0x1F, 0x0F, 0xE0, 0xFE, 0x0F, 0xFF, + 0xF8, 0x0F, 0xFF, 0xE0, 0x0F, 0xFF, 0x80, 0x03, 0xF8, 0x00, 0x00, 0xFE, + 0x03, 0x8F, 0xFE, 0x0E, 0x7F, 0xFC, 0x3B, 0xFF, 0xF8, 0xFF, 0x87, 0xF3, + 0xF8, 0x07, 0xCF, 0xC0, 0x0F, 0xBE, 0x00, 0x1E, 0xF8, 0x00, 0x7B, 0xE0, + 0x01, 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, + 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x01, 0xFF, + 0x80, 0x07, 0xBE, 0x00, 0x1E, 0xFC, 0x00, 0xFB, 0xF8, 0x07, 0xCF, 0xF0, + 0x7F, 0x3F, 0xFF, 0xF8, 0xF7, 0xFF, 0xC3, 0xC7, 0xFE, 0x0F, 0x07, 0xE0, + 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, + 0xFE, 0x00, 0x07, 0xFF, 0x1C, 0x3F, 0xFF, 0x38, 0xFF, 0xFF, 0x73, 0xF8, + 0x3F, 0xE7, 0xC0, 0x1F, 0xDF, 0x00, 0x1F, 0xBE, 0x00, 0x1F, 0x78, 0x00, + 0x3F, 0xF0, 0x00, 0x7F, 0xC0, 0x00, 0x7F, 0x80, 0x00, 0xFF, 0x00, 0x01, + 0xFE, 0x00, 0x03, 0xFC, 0x00, 0x07, 0xF8, 0x00, 0x0F, 0xF0, 0x00, 0x1F, + 0xF0, 0x00, 0x7D, 0xE0, 0x00, 0xFB, 0xC0, 0x01, 0xF7, 0xC0, 0x07, 0xE7, + 0xC0, 0x1F, 0xCF, 0xE0, 0xFF, 0x8F, 0xFF, 0xEF, 0x0F, 0xFF, 0xDE, 0x0F, + 0xFE, 0x3C, 0x07, 0xF0, 0x78, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, + 0x03, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, 0x00, + 0x3C, 0x00, 0x00, 0x78, 0x00, 0xFE, 0x1F, 0xE7, 0xFE, 0xFF, 0xFF, 0x8F, + 0xC0, 0xF8, 0x0F, 0x80, 0xF8, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, + 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, + 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0x01, 0xFC, 0x00, 0xFF, 0xF0, + 0x1F, 0xFF, 0x83, 0xFF, 0xFC, 0x3E, 0x07, 0xE7, 0xC0, 0x3E, 0x78, 0x01, + 0xE7, 0x80, 0x00, 0x78, 0x00, 0x07, 0xC0, 0x00, 0x7E, 0x00, 0x03, 0xFC, + 0x00, 0x1F, 0xFC, 0x00, 0xFF, 0xF8, 0x03, 0xFF, 0xC0, 0x03, 0xFE, 0x00, + 0x03, 0xF0, 0x00, 0x1F, 0x00, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, + 0x80, 0x1F, 0x7E, 0x07, 0xE7, 0xFF, 0xFE, 0x3F, 0xFF, 0xC1, 0xFF, 0xF0, + 0x03, 0xFC, 0x00, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x8F, 0xFF, + 0xFF, 0xFF, 0xC7, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, + 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, + 0xE0, 0x78, 0x1F, 0xC7, 0xF0, 0xFC, 0x1F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, + 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, + 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, + 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, + 0x00, 0xFF, 0x00, 0x1F, 0xF0, 0x01, 0xFF, 0x00, 0x3F, 0xF8, 0x07, 0xFF, + 0xE0, 0xFF, 0x7F, 0xFF, 0x77, 0xFF, 0xE7, 0x1F, 0xFC, 0x70, 0x7E, 0x00, + 0x78, 0x00, 0x3E, 0xF0, 0x00, 0x79, 0xF0, 0x00, 0xF1, 0xE0, 0x03, 0xE3, + 0xC0, 0x07, 0x87, 0xC0, 0x0F, 0x07, 0x80, 0x3C, 0x0F, 0x00, 0x78, 0x1F, + 0x01, 0xF0, 0x1E, 0x03, 0xC0, 0x3C, 0x07, 0x80, 0x7C, 0x1F, 0x00, 0x78, + 0x3C, 0x00, 0xF0, 0x78, 0x01, 0xF1, 0xE0, 0x01, 0xE3, 0xC0, 0x03, 0xC7, + 0x80, 0x03, 0xDE, 0x00, 0x07, 0xBC, 0x00, 0x0F, 0x70, 0x00, 0x0F, 0xE0, + 0x00, 0x1F, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x7C, 0x00, + 0xF8, 0x03, 0xE0, 0x07, 0x9E, 0x00, 0xFC, 0x01, 0xE7, 0x80, 0x3F, 0x00, + 0x79, 0xF0, 0x0F, 0xC0, 0x3E, 0x3C, 0x07, 0xF0, 0x0F, 0x0F, 0x01, 0xFE, + 0x03, 0xC3, 0xC0, 0x7F, 0x80, 0xF0, 0x78, 0x1D, 0xE0, 0x78, 0x1E, 0x0F, + 0x38, 0x1E, 0x07, 0x83, 0xCF, 0x07, 0x81, 0xE0, 0xF3, 0xC1, 0xE0, 0x3C, + 0x38, 0xF0, 0xF0, 0x0F, 0x1E, 0x1C, 0x3C, 0x03, 0xC7, 0x87, 0x8F, 0x00, + 0x71, 0xE1, 0xE3, 0x80, 0x1E, 0x70, 0x79, 0xE0, 0x07, 0xBC, 0x0E, 0x78, + 0x01, 0xEF, 0x03, 0xDE, 0x00, 0x3B, 0xC0, 0xF7, 0x00, 0x0F, 0xE0, 0x3F, + 0xC0, 0x03, 0xF8, 0x07, 0xF0, 0x00, 0x7E, 0x01, 0xF8, 0x00, 0x1F, 0x80, + 0x7E, 0x00, 0x07, 0xC0, 0x1F, 0x80, 0x01, 0xF0, 0x03, 0xC0, 0x00, 0x7C, + 0x00, 0x78, 0xF0, 0x03, 0xE1, 0xE0, 0x0F, 0x07, 0xC0, 0x78, 0x0F, 0x03, + 0xE0, 0x1E, 0x0F, 0x00, 0x7C, 0x78, 0x00, 0xF3, 0xE0, 0x01, 0xEF, 0x00, + 0x07, 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0x1F, 0x00, 0x00, 0x7C, 0x00, 0x03, + 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x7F, 0xC0, 0x03, 0xCF, 0x00, 0x0F, 0x1E, + 0x00, 0x78, 0x7C, 0x03, 0xE0, 0xF0, 0x0F, 0x03, 0xE0, 0x78, 0x07, 0xC3, + 0xE0, 0x0F, 0x1F, 0x00, 0x3E, 0x78, 0x00, 0x7C, 0x78, 0x00, 0x3D, 0xE0, + 0x01, 0xF7, 0x80, 0x07, 0x8F, 0x00, 0x1E, 0x3C, 0x00, 0xF0, 0xF0, 0x03, + 0xC1, 0xE0, 0x0F, 0x07, 0x80, 0x78, 0x1E, 0x01, 0xE0, 0x3C, 0x07, 0x80, + 0xF0, 0x3C, 0x03, 0xC0, 0xF0, 0x07, 0x87, 0xC0, 0x1E, 0x1E, 0x00, 0x78, + 0x78, 0x00, 0xF3, 0xC0, 0x03, 0xCF, 0x00, 0x0F, 0x3C, 0x00, 0x1F, 0xE0, + 0x00, 0x7F, 0x80, 0x01, 0xFE, 0x00, 0x03, 0xF0, 0x00, 0x0F, 0xC0, 0x00, + 0x3E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x3C, + 0x00, 0x01, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x3E, 0x00, 0x0F, 0xF0, 0x00, + 0x3F, 0xC0, 0x00, 0xFE, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x7F, 0xFF, 0xF7, + 0xFF, 0xFF, 0x7F, 0xFF, 0xF7, 0xFF, 0xFF, 0x00, 0x01, 0xE0, 0x00, 0x3E, + 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x7C, + 0x00, 0x07, 0x80, 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x7C, + 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x03, 0xC0, 0x00, 0x7C, + 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x01, 0xE0, 0xFC, 0x1F, 0x87, 0x80, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0E, + 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, + 0xC0, 0x78, 0x1E, 0x0F, 0x81, 0xE0, 0x3C, 0x07, 0xC0, 0x3C, 0x03, 0x80, + 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x38, + 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0F, 0x00, 0xFC, 0x1F, 0x80, + 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0x1F, 0x83, 0xF0, 0x0F, 0x00, + 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, + 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x1C, 0x03, 0xC0, 0x3E, 0x03, + 0xC0, 0x78, 0x1F, 0x07, 0x80, 0xE0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, + 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, + 0x70, 0x1E, 0x1F, 0x83, 0xF0, 0x78, 0x00, 0x3E, 0x00, 0x0F, 0xF0, 0x0D, + 0xFF, 0x01, 0xF0, 0xF8, 0x7C, 0x0F, 0xFD, 0x80, 0x7F, 0x80, 0x03, 0xE0}; + +const GFXglyph FreeSans24pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 12, 0, 1}, // 0x20 ' ' + {0, 4, 34, 16, 6, -33}, // 0x21 '!' + {17, 11, 12, 16, 2, -32}, // 0x22 '"' + {34, 24, 33, 26, 1, -31}, // 0x23 '#' + {133, 23, 41, 26, 1, -34}, // 0x24 '$' + {251, 39, 34, 42, 1, -32}, // 0x25 '%' + {417, 28, 34, 31, 2, -32}, // 0x26 '&' + {536, 4, 12, 9, 2, -32}, // 0x27 ''' + {542, 10, 44, 16, 3, -33}, // 0x28 '(' + {597, 10, 44, 16, 2, -33}, // 0x29 ')' + {652, 14, 14, 18, 2, -33}, // 0x2A '*' + {677, 23, 22, 27, 2, -21}, // 0x2B '+' + {741, 4, 12, 13, 4, -4}, // 0x2C ',' + {747, 11, 4, 16, 2, -14}, // 0x2D '-' + {753, 4, 5, 12, 4, -4}, // 0x2E '.' + {756, 13, 35, 13, 0, -33}, // 0x2F '/' + {813, 22, 34, 26, 2, -32}, // 0x30 '0' + {907, 11, 33, 26, 5, -32}, // 0x31 '1' + {953, 22, 33, 26, 2, -32}, // 0x32 '2' + {1044, 23, 34, 26, 1, -32}, // 0x33 '3' + {1142, 23, 33, 26, 1, -32}, // 0x34 '4' + {1237, 22, 34, 26, 2, -32}, // 0x35 '5' + {1331, 22, 34, 26, 2, -32}, // 0x36 '6' + {1425, 21, 33, 26, 2, -32}, // 0x37 '7' + {1512, 22, 34, 26, 2, -32}, // 0x38 '8' + {1606, 21, 34, 26, 2, -32}, // 0x39 '9' + {1696, 4, 25, 12, 4, -24}, // 0x3A ':' + {1709, 4, 32, 12, 4, -24}, // 0x3B ';' + {1725, 23, 23, 27, 2, -22}, // 0x3C '<' + {1792, 23, 12, 27, 2, -16}, // 0x3D '=' + {1827, 23, 23, 27, 2, -22}, // 0x3E '>' + {1894, 20, 35, 26, 4, -34}, // 0x3F '?' + {1982, 43, 42, 48, 2, -34}, // 0x40 '@' + {2208, 30, 34, 31, 1, -33}, // 0x41 'A' + {2336, 25, 34, 31, 4, -33}, // 0x42 'B' + {2443, 29, 36, 33, 2, -34}, // 0x43 'C' + {2574, 27, 34, 33, 4, -33}, // 0x44 'D' + {2689, 24, 34, 30, 4, -33}, // 0x45 'E' + {2791, 22, 34, 28, 4, -33}, // 0x46 'F' + {2885, 31, 36, 36, 2, -34}, // 0x47 'G' + {3025, 26, 34, 34, 4, -33}, // 0x48 'H' + {3136, 4, 34, 13, 5, -33}, // 0x49 'I' + {3153, 19, 35, 25, 2, -33}, // 0x4A 'J' + {3237, 27, 34, 32, 4, -33}, // 0x4B 'K' + {3352, 21, 34, 26, 4, -33}, // 0x4C 'L' + {3442, 32, 34, 40, 4, -33}, // 0x4D 'M' + {3578, 26, 34, 34, 4, -33}, // 0x4E 'N' + {3689, 33, 36, 37, 2, -34}, // 0x4F 'O' + {3838, 24, 34, 31, 4, -33}, // 0x50 'P' + {3940, 33, 38, 37, 2, -34}, // 0x51 'Q' + {4097, 26, 34, 33, 4, -33}, // 0x52 'R' + {4208, 27, 36, 31, 2, -34}, // 0x53 'S' + {4330, 26, 34, 30, 2, -33}, // 0x54 'T' + {4441, 26, 35, 34, 4, -33}, // 0x55 'U' + {4555, 29, 34, 30, 1, -33}, // 0x56 'V' + {4679, 42, 34, 44, 1, -33}, // 0x57 'W' + {4858, 29, 34, 31, 1, -33}, // 0x58 'X' + {4982, 30, 34, 32, 1, -33}, // 0x59 'Y' + {5110, 27, 34, 29, 1, -33}, // 0x5A 'Z' + {5225, 8, 44, 13, 3, -33}, // 0x5B '[' + {5269, 13, 35, 13, 0, -33}, // 0x5C '\' + {5326, 8, 44, 13, 1, -33}, // 0x5D ']' + {5370, 18, 18, 22, 2, -32}, // 0x5E '^' + {5411, 28, 2, 26, -1, 7}, // 0x5F '_' + {5418, 10, 7, 12, 1, -34}, // 0x60 '`' + {5427, 24, 27, 26, 1, -25}, // 0x61 'a' + {5508, 22, 35, 26, 3, -33}, // 0x62 'b' + {5605, 21, 27, 24, 1, -25}, // 0x63 'c' + {5676, 23, 35, 26, 1, -33}, // 0x64 'd' + {5777, 22, 27, 25, 1, -25}, // 0x65 'e' + {5852, 10, 34, 13, 1, -33}, // 0x66 'f' + {5895, 22, 36, 26, 1, -25}, // 0x67 'g' + {5994, 19, 34, 25, 3, -33}, // 0x68 'h' + {6075, 4, 34, 10, 3, -33}, // 0x69 'i' + {6092, 8, 44, 11, 0, -33}, // 0x6A 'j' + {6136, 21, 34, 24, 3, -33}, // 0x6B 'k' + {6226, 4, 34, 10, 3, -33}, // 0x6C 'l' + {6243, 32, 26, 38, 3, -25}, // 0x6D 'm' + {6347, 20, 26, 25, 3, -25}, // 0x6E 'n' + {6412, 23, 27, 25, 1, -25}, // 0x6F 'o' + {6490, 22, 35, 26, 3, -25}, // 0x70 'p' + {6587, 23, 35, 26, 1, -25}, // 0x71 'q' + {6688, 12, 26, 16, 3, -25}, // 0x72 'r' + {6727, 20, 27, 23, 1, -25}, // 0x73 's' + {6795, 10, 32, 13, 1, -30}, // 0x74 't' + {6835, 20, 26, 25, 3, -24}, // 0x75 'u' + {6900, 23, 25, 23, 0, -24}, // 0x76 'v' + {6972, 34, 25, 34, 0, -24}, // 0x77 'w' + {7079, 22, 25, 22, 0, -24}, // 0x78 'x' + {7148, 22, 35, 22, 0, -24}, // 0x79 'y' + {7245, 20, 25, 23, 1, -24}, // 0x7A 'z' + {7308, 11, 44, 16, 2, -33}, // 0x7B '{' + {7369, 3, 44, 12, 4, -33}, // 0x7C '|' + {7386, 11, 44, 16, 2, -33}, // 0x7D '}' + {7447, 19, 7, 24, 2, -19}}; // 0x7E '~' + +const GFXfont FreeSans24pt7b PROGMEM = {(uint8_t *)FreeSans24pt7bBitmaps, + (GFXglyph *)FreeSans24pt7bGlyphs, 0x20, + 0x7E, 56}; + +// Approx. 8136 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSans9pt7b.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSans9pt7b.h new file mode 100644 index 0000000..91c33b0 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSans9pt7b.h @@ -0,0 +1,203 @@ +#pragma once +#include + +const uint8_t FreeSans9pt7bBitmaps[] PROGMEM = { + 0xFF, 0xFF, 0xF8, 0xC0, 0xDE, 0xF7, 0x20, 0x09, 0x86, 0x41, 0x91, 0xFF, + 0x13, 0x04, 0xC3, 0x20, 0xC8, 0xFF, 0x89, 0x82, 0x61, 0x90, 0x10, 0x1F, + 0x14, 0xDA, 0x3D, 0x1E, 0x83, 0x40, 0x78, 0x17, 0x08, 0xF4, 0x7A, 0x35, + 0x33, 0xF0, 0x40, 0x20, 0x38, 0x10, 0xEC, 0x20, 0xC6, 0x20, 0xC6, 0x40, + 0xC6, 0x40, 0x6C, 0x80, 0x39, 0x00, 0x01, 0x3C, 0x02, 0x77, 0x02, 0x63, + 0x04, 0x63, 0x04, 0x77, 0x08, 0x3C, 0x0E, 0x06, 0x60, 0xCC, 0x19, 0x81, + 0xE0, 0x18, 0x0F, 0x03, 0x36, 0xC2, 0xD8, 0x73, 0x06, 0x31, 0xE3, 0xC4, + 0xFE, 0x13, 0x26, 0x6C, 0xCC, 0xCC, 0xC4, 0x66, 0x23, 0x10, 0x8C, 0x46, + 0x63, 0x33, 0x33, 0x32, 0x66, 0x4C, 0x80, 0x25, 0x7E, 0xA5, 0x00, 0x30, + 0xC3, 0x3F, 0x30, 0xC3, 0x0C, 0xD6, 0xF0, 0xC0, 0x08, 0x44, 0x21, 0x10, + 0x84, 0x42, 0x11, 0x08, 0x00, 0x3C, 0x66, 0x42, 0xC3, 0xC3, 0xC3, 0xC3, + 0xC3, 0xC3, 0xC3, 0x42, 0x66, 0x3C, 0x11, 0x3F, 0x33, 0x33, 0x33, 0x33, + 0x30, 0x3E, 0x31, 0xB0, 0x78, 0x30, 0x18, 0x1C, 0x1C, 0x1C, 0x18, 0x18, + 0x10, 0x08, 0x07, 0xF8, 0x3C, 0x66, 0xC3, 0xC3, 0x03, 0x06, 0x1C, 0x07, + 0x03, 0xC3, 0xC3, 0x66, 0x3C, 0x0C, 0x18, 0x71, 0x62, 0xC9, 0xA3, 0x46, + 0xFE, 0x18, 0x30, 0x60, 0xC0, 0x7F, 0x20, 0x10, 0x08, 0x08, 0x07, 0xF3, + 0x8C, 0x03, 0x01, 0x80, 0xF0, 0x6C, 0x63, 0xE0, 0x1E, 0x31, 0x98, 0x78, + 0x0C, 0x06, 0xF3, 0x8D, 0x83, 0xC1, 0xE0, 0xD0, 0x6C, 0x63, 0xE0, 0xFF, + 0x03, 0x02, 0x06, 0x04, 0x0C, 0x08, 0x18, 0x18, 0x18, 0x10, 0x30, 0x30, + 0x3E, 0x31, 0xB0, 0x78, 0x3C, 0x1B, 0x18, 0xF8, 0xC6, 0xC1, 0xE0, 0xF0, + 0x6C, 0x63, 0xE0, 0x3C, 0x66, 0xC2, 0xC3, 0xC3, 0xC3, 0x67, 0x3B, 0x03, + 0x03, 0xC2, 0x66, 0x3C, 0xC0, 0x00, 0x30, 0xC0, 0x00, 0x00, 0x64, 0xA0, + 0x00, 0x81, 0xC7, 0x8E, 0x0C, 0x07, 0x80, 0x70, 0x0E, 0x01, 0x80, 0xFF, + 0x80, 0x00, 0x1F, 0xF0, 0x00, 0x70, 0x0E, 0x01, 0xC0, 0x18, 0x38, 0x71, + 0xC0, 0x80, 0x00, 0x3E, 0x31, 0xB0, 0x78, 0x30, 0x18, 0x18, 0x38, 0x18, + 0x18, 0x0C, 0x00, 0x00, 0x01, 0x80, 0x03, 0xF0, 0x06, 0x0E, 0x06, 0x01, + 0x86, 0x00, 0x66, 0x1D, 0xBB, 0x31, 0xCF, 0x18, 0xC7, 0x98, 0x63, 0xCC, + 0x31, 0xE6, 0x11, 0xB3, 0x99, 0xCC, 0xF7, 0x86, 0x00, 0x01, 0x80, 0x00, + 0x70, 0x40, 0x0F, 0xE0, 0x06, 0x00, 0xF0, 0x0F, 0x00, 0x90, 0x19, 0x81, + 0x98, 0x10, 0x83, 0x0C, 0x3F, 0xC2, 0x04, 0x60, 0x66, 0x06, 0xC0, 0x30, + 0xFF, 0x18, 0x33, 0x03, 0x60, 0x6C, 0x0D, 0x83, 0x3F, 0xC6, 0x06, 0xC0, + 0x78, 0x0F, 0x01, 0xE0, 0x6F, 0xF8, 0x1F, 0x86, 0x19, 0x81, 0xA0, 0x3C, + 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x68, 0x0D, 0x83, 0x18, 0x61, 0xF0, + 0xFF, 0x18, 0x33, 0x03, 0x60, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, + 0x78, 0x0F, 0x03, 0x60, 0xCF, 0xF0, 0xFF, 0xE0, 0x30, 0x18, 0x0C, 0x06, + 0x03, 0xFD, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0F, 0xF8, 0xFF, 0xC0, 0xC0, + 0xC0, 0xC0, 0xC0, 0xFE, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x0F, 0x83, + 0x0E, 0x60, 0x66, 0x03, 0xC0, 0x0C, 0x00, 0xC1, 0xFC, 0x03, 0xC0, 0x36, + 0x03, 0x60, 0x73, 0x0F, 0x0F, 0x10, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, + 0x07, 0x80, 0xFF, 0xFE, 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x06, + 0xFF, 0xFF, 0xFF, 0xC0, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x07, + 0x8F, 0x1E, 0x27, 0x80, 0xC0, 0xD8, 0x33, 0x0C, 0x63, 0x0C, 0xC1, 0xB8, + 0x3F, 0x07, 0x30, 0xC3, 0x18, 0x63, 0x06, 0x60, 0x6C, 0x0C, 0xC0, 0xC0, + 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xE0, + 0x3F, 0x01, 0xFC, 0x1F, 0xE0, 0xFD, 0x05, 0xEC, 0x6F, 0x63, 0x79, 0x13, + 0xCD, 0x9E, 0x6C, 0xF1, 0x47, 0x8E, 0x3C, 0x71, 0x80, 0xE0, 0x7C, 0x0F, + 0xC1, 0xE8, 0x3D, 0x87, 0x98, 0xF1, 0x1E, 0x33, 0xC3, 0x78, 0x6F, 0x07, + 0xE0, 0x7C, 0x0E, 0x0F, 0x81, 0x83, 0x18, 0x0C, 0xC0, 0x6C, 0x01, 0xE0, + 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1B, 0x01, 0x98, 0x0C, 0x60, 0xC0, 0xF8, + 0x00, 0xFF, 0x30, 0x6C, 0x0F, 0x03, 0xC0, 0xF0, 0x6F, 0xF3, 0x00, 0xC0, + 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x00, 0x0F, 0x81, 0x83, 0x18, 0x0C, 0xC0, + 0x6C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1B, 0x01, 0x98, 0x6C, + 0x60, 0xC0, 0xFB, 0x00, 0x08, 0xFF, 0x8C, 0x0E, 0xC0, 0x6C, 0x06, 0xC0, + 0x6C, 0x0C, 0xFF, 0x8C, 0x0E, 0xC0, 0x6C, 0x06, 0xC0, 0x6C, 0x06, 0xC0, + 0x70, 0x3F, 0x18, 0x6C, 0x0F, 0x03, 0xC0, 0x1E, 0x01, 0xF0, 0x0E, 0x00, + 0xF0, 0x3C, 0x0D, 0x86, 0x3F, 0x00, 0xFF, 0x86, 0x03, 0x01, 0x80, 0xC0, + 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x80, 0xC0, 0xC0, 0x78, 0x0F, + 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x01, + 0xB0, 0x61, 0xF0, 0xC0, 0x6C, 0x0D, 0x81, 0x10, 0x63, 0x0C, 0x61, 0x04, + 0x60, 0xCC, 0x19, 0x01, 0x60, 0x3C, 0x07, 0x00, 0x60, 0xC1, 0x81, 0x30, + 0xE1, 0x98, 0x70, 0xCC, 0x28, 0x66, 0x26, 0x21, 0x13, 0x30, 0xC8, 0x98, + 0x6C, 0x4C, 0x14, 0x34, 0x0A, 0x1A, 0x07, 0x07, 0x03, 0x03, 0x80, 0x81, + 0x80, 0x60, 0x63, 0x0C, 0x30, 0xC1, 0x98, 0x0F, 0x00, 0xE0, 0x06, 0x00, + 0xF0, 0x19, 0x01, 0x98, 0x30, 0xC6, 0x0E, 0x60, 0x60, 0xC0, 0x36, 0x06, + 0x30, 0xC3, 0x0C, 0x19, 0x81, 0xD8, 0x0F, 0x00, 0x60, 0x06, 0x00, 0x60, + 0x06, 0x00, 0x60, 0x06, 0x00, 0xFF, 0xC0, 0x60, 0x30, 0x0C, 0x06, 0x03, + 0x01, 0xC0, 0x60, 0x30, 0x18, 0x06, 0x03, 0x00, 0xFF, 0xC0, 0xFB, 0x6D, + 0xB6, 0xDB, 0x6D, 0xB6, 0xE0, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84, + 0x10, 0x80, 0xED, 0xB6, 0xDB, 0x6D, 0xB6, 0xDB, 0xE0, 0x30, 0x60, 0xA2, + 0x44, 0xD8, 0xA1, 0x80, 0xFF, 0xC0, 0xC6, 0x30, 0x7E, 0x71, 0xB0, 0xC0, + 0x60, 0xF3, 0xDB, 0x0D, 0x86, 0xC7, 0x3D, 0xC0, 0xC0, 0x60, 0x30, 0x1B, + 0xCE, 0x36, 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x7C, 0x6D, 0xE0, 0x3C, + 0x66, 0xC3, 0xC0, 0xC0, 0xC0, 0xC0, 0xC3, 0x66, 0x3C, 0x03, 0x03, 0x03, + 0x3B, 0x67, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x67, 0x3B, 0x3C, 0x66, + 0xC3, 0xC3, 0xFF, 0xC0, 0xC0, 0xC3, 0x66, 0x3C, 0x36, 0x6F, 0x66, 0x66, + 0x66, 0x66, 0x60, 0x3B, 0x67, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x67, + 0x3B, 0x03, 0x03, 0xC6, 0x7C, 0xC0, 0xC0, 0xC0, 0xDE, 0xE3, 0xC3, 0xC3, + 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xFF, 0xFF, 0xC0, 0x30, 0x03, + 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0xE0, 0xC0, 0x60, 0x30, 0x18, 0x4C, + 0x46, 0x63, 0x61, 0xF0, 0xEC, 0x62, 0x31, 0x98, 0x6C, 0x30, 0xFF, 0xFF, + 0xFF, 0xC0, 0xDE, 0xF7, 0x1C, 0xF0, 0xC7, 0x86, 0x3C, 0x31, 0xE1, 0x8F, + 0x0C, 0x78, 0x63, 0xC3, 0x1E, 0x18, 0xC0, 0xDE, 0xE3, 0xC3, 0xC3, 0xC3, + 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x3C, 0x66, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, + 0xC3, 0x66, 0x3C, 0xDE, 0x71, 0xB0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, + 0xE3, 0x6F, 0x30, 0x18, 0x0C, 0x00, 0x3B, 0x67, 0xC3, 0xC3, 0xC3, 0xC3, + 0xC3, 0xC3, 0x67, 0x3B, 0x03, 0x03, 0x03, 0xDF, 0x31, 0x8C, 0x63, 0x18, + 0xC6, 0x00, 0x3E, 0xE3, 0xC0, 0xC0, 0xE0, 0x3C, 0x07, 0xC3, 0xE3, 0x7E, + 0x66, 0xF6, 0x66, 0x66, 0x66, 0x67, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, + 0xC3, 0xC3, 0xC7, 0x7B, 0xC1, 0xA0, 0x98, 0xCC, 0x42, 0x21, 0xB0, 0xD0, + 0x28, 0x1C, 0x0C, 0x00, 0xC6, 0x1E, 0x38, 0x91, 0xC4, 0xCA, 0x66, 0xD3, + 0x16, 0xD0, 0xA6, 0x87, 0x1C, 0x38, 0xC0, 0xC6, 0x00, 0x43, 0x62, 0x36, + 0x1C, 0x18, 0x1C, 0x3C, 0x26, 0x62, 0x43, 0xC1, 0x21, 0x98, 0xCC, 0x42, + 0x61, 0xB0, 0xD0, 0x38, 0x1C, 0x0C, 0x06, 0x03, 0x01, 0x03, 0x00, 0xFE, + 0x0C, 0x30, 0xC1, 0x86, 0x18, 0x20, 0xC1, 0xFC, 0x36, 0x66, 0x66, 0x6E, + 0xCE, 0x66, 0x66, 0x66, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xC6, 0x66, + 0x66, 0x67, 0x37, 0x66, 0x66, 0x66, 0xC0, 0x61, 0x24, 0x38}; + +const GFXglyph FreeSans9pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 5, 0, 1}, // 0x20 ' ' + {0, 2, 13, 6, 2, -12}, // 0x21 '!' + {4, 5, 4, 6, 1, -12}, // 0x22 '"' + {7, 10, 12, 10, 0, -11}, // 0x23 '#' + {22, 9, 16, 10, 1, -13}, // 0x24 '$' + {40, 16, 13, 16, 1, -12}, // 0x25 '%' + {66, 11, 13, 12, 1, -12}, // 0x26 '&' + {84, 2, 4, 4, 1, -12}, // 0x27 ''' + {85, 4, 17, 6, 1, -12}, // 0x28 '(' + {94, 4, 17, 6, 1, -12}, // 0x29 ')' + {103, 5, 5, 7, 1, -12}, // 0x2A '*' + {107, 6, 8, 11, 3, -7}, // 0x2B '+' + {113, 2, 4, 5, 2, 0}, // 0x2C ',' + {114, 4, 1, 6, 1, -4}, // 0x2D '-' + {115, 2, 1, 5, 1, 0}, // 0x2E '.' + {116, 5, 13, 5, 0, -12}, // 0x2F '/' + {125, 8, 13, 10, 1, -12}, // 0x30 '0' + {138, 4, 13, 10, 3, -12}, // 0x31 '1' + {145, 9, 13, 10, 1, -12}, // 0x32 '2' + {160, 8, 13, 10, 1, -12}, // 0x33 '3' + {173, 7, 13, 10, 2, -12}, // 0x34 '4' + {185, 9, 13, 10, 1, -12}, // 0x35 '5' + {200, 9, 13, 10, 1, -12}, // 0x36 '6' + {215, 8, 13, 10, 0, -12}, // 0x37 '7' + {228, 9, 13, 10, 1, -12}, // 0x38 '8' + {243, 8, 13, 10, 1, -12}, // 0x39 '9' + {256, 2, 10, 5, 1, -9}, // 0x3A ':' + {259, 3, 12, 5, 1, -8}, // 0x3B ';' + {264, 9, 9, 11, 1, -8}, // 0x3C '<' + {275, 9, 4, 11, 1, -5}, // 0x3D '=' + {280, 9, 9, 11, 1, -8}, // 0x3E '>' + {291, 9, 13, 10, 1, -12}, // 0x3F '?' + {306, 17, 16, 18, 1, -12}, // 0x40 '@' + {340, 12, 13, 12, 0, -12}, // 0x41 'A' + {360, 11, 13, 12, 1, -12}, // 0x42 'B' + {378, 11, 13, 13, 1, -12}, // 0x43 'C' + {396, 11, 13, 13, 1, -12}, // 0x44 'D' + {414, 9, 13, 11, 1, -12}, // 0x45 'E' + {429, 8, 13, 11, 1, -12}, // 0x46 'F' + {442, 12, 13, 14, 1, -12}, // 0x47 'G' + {462, 11, 13, 13, 1, -12}, // 0x48 'H' + {480, 2, 13, 5, 2, -12}, // 0x49 'I' + {484, 7, 13, 10, 1, -12}, // 0x4A 'J' + {496, 11, 13, 12, 1, -12}, // 0x4B 'K' + {514, 8, 13, 10, 1, -12}, // 0x4C 'L' + {527, 13, 13, 15, 1, -12}, // 0x4D 'M' + {549, 11, 13, 13, 1, -12}, // 0x4E 'N' + {567, 13, 13, 14, 1, -12}, // 0x4F 'O' + {589, 10, 13, 12, 1, -12}, // 0x50 'P' + {606, 13, 14, 14, 1, -12}, // 0x51 'Q' + {629, 12, 13, 13, 1, -12}, // 0x52 'R' + {649, 10, 13, 12, 1, -12}, // 0x53 'S' + {666, 9, 13, 11, 1, -12}, // 0x54 'T' + {681, 11, 13, 13, 1, -12}, // 0x55 'U' + {699, 11, 13, 12, 0, -12}, // 0x56 'V' + {717, 17, 13, 17, 0, -12}, // 0x57 'W' + {745, 12, 13, 12, 0, -12}, // 0x58 'X' + {765, 12, 13, 12, 0, -12}, // 0x59 'Y' + {785, 10, 13, 11, 1, -12}, // 0x5A 'Z' + {802, 3, 17, 5, 1, -12}, // 0x5B '[' + {809, 5, 13, 5, 0, -12}, // 0x5C '\' + {818, 3, 17, 5, 0, -12}, // 0x5D ']' + {825, 7, 7, 8, 1, -12}, // 0x5E '^' + {832, 10, 1, 10, 0, 3}, // 0x5F '_' + {834, 4, 3, 5, 0, -12}, // 0x60 '`' + {836, 9, 10, 10, 1, -9}, // 0x61 'a' + {848, 9, 13, 10, 1, -12}, // 0x62 'b' + {863, 8, 10, 9, 1, -9}, // 0x63 'c' + {873, 8, 13, 10, 1, -12}, // 0x64 'd' + {886, 8, 10, 10, 1, -9}, // 0x65 'e' + {896, 4, 13, 5, 1, -12}, // 0x66 'f' + {903, 8, 14, 10, 1, -9}, // 0x67 'g' + {917, 8, 13, 10, 1, -12}, // 0x68 'h' + {930, 2, 13, 4, 1, -12}, // 0x69 'i' + {934, 4, 17, 4, 0, -12}, // 0x6A 'j' + {943, 9, 13, 9, 1, -12}, // 0x6B 'k' + {958, 2, 13, 4, 1, -12}, // 0x6C 'l' + {962, 13, 10, 15, 1, -9}, // 0x6D 'm' + {979, 8, 10, 10, 1, -9}, // 0x6E 'n' + {989, 8, 10, 10, 1, -9}, // 0x6F 'o' + {999, 9, 13, 10, 1, -9}, // 0x70 'p' + {1014, 8, 13, 10, 1, -9}, // 0x71 'q' + {1027, 5, 10, 6, 1, -9}, // 0x72 'r' + {1034, 8, 10, 9, 1, -9}, // 0x73 's' + {1044, 4, 12, 5, 1, -11}, // 0x74 't' + {1050, 8, 10, 10, 1, -9}, // 0x75 'u' + {1060, 9, 10, 9, 0, -9}, // 0x76 'v' + {1072, 13, 10, 13, 0, -9}, // 0x77 'w' + {1089, 8, 10, 9, 0, -9}, // 0x78 'x' + {1099, 9, 14, 9, 0, -9}, // 0x79 'y' + {1115, 7, 10, 9, 1, -9}, // 0x7A 'z' + {1124, 4, 17, 6, 1, -12}, // 0x7B '{' + {1133, 2, 17, 4, 2, -12}, // 0x7C '|' + {1138, 4, 17, 6, 1, -12}, // 0x7D '}' + {1147, 7, 3, 9, 1, -7}}; // 0x7E '~' + +const GFXfont FreeSans9pt7b PROGMEM = {(uint8_t *)FreeSans9pt7bBitmaps, + (GFXglyph *)FreeSans9pt7bGlyphs, 0x20, + 0x7E, 22}; + +// Approx. 1822 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBold12pt7b.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBold12pt7b.h new file mode 100644 index 0000000..c1d6ef4 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBold12pt7b.h @@ -0,0 +1,290 @@ +#pragma once +#include + +const uint8_t FreeSansBold12pt7bBitmaps[] PROGMEM = { + 0xFF, 0xFF, 0xFF, 0xFF, 0x76, 0x66, 0x60, 0xFF, 0xF0, 0xF3, 0xFC, 0xFF, + 0x3F, 0xCF, 0x61, 0x98, 0x60, 0x0E, 0x70, 0x73, 0x83, 0x18, 0xFF, 0xF7, + 0xFF, 0xBF, 0xFC, 0x73, 0x83, 0x18, 0x18, 0xC7, 0xFF, 0xBF, 0xFD, 0xFF, + 0xE3, 0x18, 0x39, 0xC1, 0xCE, 0x0E, 0x70, 0x02, 0x00, 0x7E, 0x0F, 0xF8, + 0x7F, 0xE7, 0xAF, 0xB9, 0x3D, 0xC8, 0x0F, 0x40, 0x3F, 0x00, 0xFF, 0x00, + 0xFC, 0x05, 0xFF, 0x27, 0xF9, 0x3F, 0xEB, 0xEF, 0xFE, 0x3F, 0xE0, 0x7C, + 0x00, 0x80, 0x04, 0x00, 0x3C, 0x06, 0x0F, 0xC1, 0x81, 0xFC, 0x30, 0x73, + 0x8C, 0x0C, 0x31, 0x81, 0xCE, 0x60, 0x1F, 0xCC, 0x03, 0xF3, 0x00, 0x3C, + 0x67, 0x80, 0x19, 0xF8, 0x02, 0x7F, 0x80, 0xCE, 0x70, 0x11, 0x86, 0x06, + 0x39, 0xC1, 0x87, 0xF8, 0x30, 0x7E, 0x0C, 0x07, 0x80, 0x07, 0x80, 0x1F, + 0xC0, 0x3F, 0xE0, 0x3C, 0xE0, 0x3C, 0xE0, 0x3E, 0xE0, 0x0F, 0xC0, 0x07, + 0x00, 0x3F, 0x8C, 0x7F, 0xCC, 0xF1, 0xFC, 0xF0, 0xF8, 0xF0, 0x78, 0xF8, + 0xF8, 0x7F, 0xFC, 0x3F, 0xDE, 0x1F, 0x8E, 0xFF, 0xFF, 0x66, 0x0C, 0x73, + 0x8E, 0x71, 0xC7, 0x38, 0xE3, 0x8E, 0x38, 0xE3, 0x8E, 0x1C, 0x71, 0xC3, + 0x8E, 0x18, 0x70, 0xC3, 0x87, 0x1C, 0x38, 0xE3, 0x87, 0x1C, 0x71, 0xC7, + 0x1C, 0x71, 0xCE, 0x38, 0xE7, 0x1C, 0x63, 0x80, 0x10, 0x23, 0x5F, 0xF3, + 0x87, 0x1B, 0x14, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x0F, 0xFF, 0xFF, 0xFF, + 0xF8, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x00, 0xFF, 0xF3, 0x36, 0xC0, 0xFF, + 0xFF, 0xC0, 0xFF, 0xF0, 0x0C, 0x30, 0x86, 0x18, 0x61, 0x0C, 0x30, 0xC2, + 0x18, 0x61, 0x84, 0x30, 0xC0, 0x1F, 0x83, 0xFC, 0x7F, 0xE7, 0x9E, 0xF0, + 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, + 0xF7, 0x9E, 0x7F, 0xE3, 0xFC, 0x0F, 0x00, 0x06, 0x1C, 0x7F, 0xFF, 0xE3, + 0xC7, 0x8F, 0x1E, 0x3C, 0x78, 0xF1, 0xE3, 0xC7, 0x8F, 0x1E, 0x1F, 0x83, + 0xFC, 0x7F, 0xEF, 0x9F, 0xF0, 0xFF, 0x0F, 0x00, 0xF0, 0x0F, 0x01, 0xE0, + 0x3C, 0x0F, 0x81, 0xE0, 0x3C, 0x03, 0x80, 0x7F, 0xF7, 0xFF, 0x7F, 0xF0, + 0x1F, 0x07, 0xFC, 0xFF, 0xEF, 0x1E, 0xF1, 0xE0, 0x1E, 0x03, 0xC0, 0x78, + 0x07, 0xC0, 0x1E, 0x00, 0xF0, 0x0F, 0xF0, 0xFF, 0x1F, 0x7F, 0xE7, 0xFC, + 0x1F, 0x80, 0x03, 0xC0, 0xF8, 0x1F, 0x07, 0xE1, 0xBC, 0x27, 0x8C, 0xF3, + 0x1E, 0x63, 0xD8, 0x7B, 0xFF, 0xFF, 0xFF, 0xFE, 0x07, 0x80, 0xF0, 0x1E, + 0x03, 0xC0, 0x3F, 0xE7, 0xFE, 0x7F, 0xE7, 0x00, 0x60, 0x06, 0xF8, 0x7F, + 0xCF, 0xFE, 0xF1, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xFE, 0x1E, 0xFF, + 0xE7, 0xFC, 0x3F, 0x00, 0x0F, 0x83, 0xFC, 0x7F, 0xE7, 0x9F, 0xF0, 0x0F, + 0x78, 0xFF, 0xCF, 0xFE, 0xF9, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xF7, + 0x9F, 0x7F, 0xE3, 0xFC, 0x0F, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0xE0, + 0x1C, 0x07, 0x01, 0xE0, 0x38, 0x0F, 0x01, 0xC0, 0x78, 0x0F, 0x01, 0xE0, + 0x38, 0x0F, 0x01, 0xE0, 0x3C, 0x00, 0x0F, 0x03, 0xFC, 0x7F, 0xC7, 0x9E, + 0x70, 0xE7, 0x0E, 0x39, 0xC1, 0xF8, 0x3F, 0xC7, 0x9E, 0xF0, 0xFF, 0x0F, + 0xF0, 0xFF, 0x9F, 0x7F, 0xE3, 0xFC, 0x1F, 0x80, 0x1F, 0x03, 0xFC, 0x7F, + 0xEF, 0x9E, 0xF0, 0xEF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF9, 0xF7, 0xFF, 0x3F, + 0xF1, 0xEF, 0x00, 0xEF, 0x1E, 0x7F, 0xE7, 0xFC, 0x1F, 0x00, 0xFF, 0xF0, + 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x0F, 0xFF, 0x11, 0x6C, + 0x00, 0x10, 0x07, 0x03, 0xF1, 0xFC, 0x7E, 0x0F, 0x80, 0xE0, 0x0F, 0xC0, + 0x3F, 0x80, 0x7F, 0x00, 0xF0, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, + 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x0E, 0x00, 0xFC, + 0x07, 0xF0, 0x0F, 0xE0, 0x1F, 0x00, 0xF0, 0x7F, 0x1F, 0x8F, 0xE0, 0xF0, + 0x08, 0x00, 0x1F, 0x07, 0xFC, 0x7F, 0xEF, 0x9F, 0xF0, 0xFF, 0x0F, 0x00, + 0xF0, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x0E, 0x00, 0xE0, 0x00, + 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x00, 0xFE, 0x00, 0x1F, 0xFC, 0x03, 0xC0, + 0xF0, 0x38, 0x01, 0xC3, 0x80, 0x07, 0x18, 0x3D, 0x99, 0x87, 0xEC, 0x6C, + 0x71, 0xC3, 0xC3, 0x06, 0x1E, 0x18, 0x30, 0xF1, 0x81, 0x87, 0x8C, 0x18, + 0x7C, 0x60, 0xC3, 0x63, 0x8E, 0x3B, 0x8F, 0xDF, 0x8C, 0x3C, 0xF0, 0x70, + 0x00, 0x01, 0xC0, 0x00, 0x07, 0x80, 0x80, 0x1F, 0xFE, 0x00, 0x1F, 0xC0, + 0x00, 0x03, 0xE0, 0x03, 0xE0, 0x03, 0xE0, 0x07, 0xF0, 0x07, 0xF0, 0x07, + 0x70, 0x0F, 0x78, 0x0E, 0x78, 0x0E, 0x38, 0x1E, 0x3C, 0x1C, 0x3C, 0x3F, + 0xFC, 0x3F, 0xFE, 0x3F, 0xFE, 0x78, 0x0E, 0x78, 0x0F, 0x70, 0x0F, 0xF0, + 0x07, 0xFF, 0xC3, 0xFF, 0xCF, 0xFF, 0x3C, 0x3E, 0xF0, 0x7B, 0xC1, 0xEF, + 0x0F, 0xBF, 0xFC, 0xFF, 0xE3, 0xFF, 0xCF, 0x07, 0xBC, 0x0F, 0xF0, 0x3F, + 0xC0, 0xFF, 0x07, 0xFF, 0xFE, 0xFF, 0xFB, 0xFF, 0x80, 0x07, 0xE0, 0x1F, + 0xF8, 0x3F, 0xFC, 0x7C, 0x3E, 0x78, 0x1F, 0xF8, 0x0F, 0xF0, 0x00, 0xF0, + 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF8, 0x0F, 0x78, + 0x1F, 0x7C, 0x3E, 0x3F, 0xFE, 0x1F, 0xFC, 0x07, 0xF0, 0xFF, 0xE1, 0xFF, + 0xE3, 0xFF, 0xE7, 0x83, 0xEF, 0x03, 0xDE, 0x07, 0xFC, 0x07, 0xF8, 0x0F, + 0xF0, 0x1F, 0xE0, 0x3F, 0xC0, 0x7F, 0x80, 0xFF, 0x03, 0xFE, 0x07, 0xBC, + 0x1F, 0x7F, 0xFC, 0xFF, 0xF1, 0xFF, 0x80, 0xFF, 0xF7, 0xFF, 0xBF, 0xFD, + 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1F, 0xFC, 0xFF, 0xE7, 0xFF, 0x3C, + 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, + 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, + 0xFE, 0xFF, 0xEF, 0xFE, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, + 0x00, 0xF0, 0x0F, 0x00, 0x03, 0xF0, 0x0F, 0xFC, 0x3F, 0xFE, 0x3E, 0x1F, + 0x78, 0x07, 0x78, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF0, 0x7F, 0xF0, 0x7F, + 0xF0, 0x7F, 0xF0, 0x07, 0x78, 0x07, 0x7C, 0x0F, 0x3E, 0x1F, 0x3F, 0xFB, + 0x0F, 0xFB, 0x03, 0xE3, 0xF0, 0x3F, 0xC0, 0xFF, 0x03, 0xFC, 0x0F, 0xF0, + 0x3F, 0xC0, 0xFF, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xFC, + 0x0F, 0xF0, 0x3F, 0xC0, 0xFF, 0x03, 0xFC, 0x0F, 0xF0, 0x3F, 0xC0, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xE0, 0x3C, + 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, + 0xF8, 0xFF, 0x1F, 0xE3, 0xFC, 0x7B, 0xFE, 0x7F, 0xC3, 0xE0, 0xF0, 0x3E, + 0xF0, 0x3C, 0xF0, 0x78, 0xF0, 0xF0, 0xF1, 0xE0, 0xF3, 0xC0, 0xF7, 0x80, + 0xFF, 0x00, 0xFF, 0x80, 0xFF, 0x80, 0xFB, 0xC0, 0xF1, 0xE0, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0x78, 0xF0, 0x3C, 0xF0, 0x3E, 0xF0, 0x1E, 0xF0, 0x1E, + 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, + 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0xFF, 0xFF, 0xFF, 0xFC, 0xF8, + 0x1F, 0xFE, 0x0F, 0xFF, 0x0F, 0xFF, 0x87, 0xFF, 0xC3, 0xFF, 0xE1, 0xFF, + 0xF9, 0xFF, 0xFC, 0xEF, 0xFE, 0x77, 0xFB, 0x3B, 0xFD, 0xDD, 0xFE, 0xFC, + 0xFF, 0x7E, 0x7F, 0x9F, 0x3F, 0xCF, 0x9F, 0xE7, 0x8F, 0xF3, 0xC7, 0xF8, + 0xE3, 0xC0, 0xF0, 0x1F, 0xF0, 0x3F, 0xF0, 0x7F, 0xE0, 0xFF, 0xE1, 0xFF, + 0xC3, 0xFD, 0xC7, 0xFB, 0x8F, 0xF3, 0x9F, 0xE7, 0x3F, 0xC7, 0x7F, 0x8F, + 0xFF, 0x0F, 0xFE, 0x1F, 0xFC, 0x1F, 0xF8, 0x1F, 0xF0, 0x3F, 0xE0, 0x3C, + 0x03, 0xE0, 0x0F, 0xFC, 0x0F, 0xFF, 0x87, 0xC7, 0xC7, 0x80, 0xF3, 0xC0, + 0x7B, 0xC0, 0x1F, 0xE0, 0x0F, 0xF0, 0x07, 0xF8, 0x03, 0xFC, 0x01, 0xFE, + 0x00, 0xF7, 0x80, 0xF3, 0xC0, 0x78, 0xF0, 0xF8, 0x7F, 0xFC, 0x1F, 0xFC, + 0x03, 0xF8, 0x00, 0xFF, 0xE3, 0xFF, 0xEF, 0xFF, 0xBC, 0x1F, 0xF0, 0x3F, + 0xC0, 0xFF, 0x03, 0xFC, 0x1F, 0xFF, 0xFB, 0xFF, 0xCF, 0xFE, 0x3C, 0x00, + 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x00, 0x03, + 0xE0, 0x0F, 0xFC, 0x0F, 0xFF, 0x87, 0xC7, 0xC7, 0x80, 0xF3, 0xC0, 0x7B, + 0xC0, 0x1F, 0xE0, 0x0F, 0xF0, 0x07, 0xF8, 0x03, 0xFC, 0x01, 0xFE, 0x04, + 0xF7, 0x87, 0xF3, 0xC3, 0xF8, 0xF0, 0xF8, 0x7F, 0xFC, 0x1F, 0xFF, 0x83, + 0xF1, 0x80, 0x00, 0x00, 0xFF, 0xF8, 0xFF, 0xFC, 0xFF, 0xFC, 0xF0, 0x3E, + 0xF0, 0x1E, 0xF0, 0x1E, 0xF0, 0x1E, 0xF0, 0x3C, 0xFF, 0xF8, 0xFF, 0xF0, + 0xFF, 0xF8, 0xF0, 0x3C, 0xF0, 0x3C, 0xF0, 0x3C, 0xF0, 0x3C, 0xF0, 0x3C, + 0xF0, 0x3C, 0xF0, 0x1F, 0x0F, 0xC0, 0x7F, 0xE1, 0xFF, 0xE7, 0xC3, 0xEF, + 0x03, 0xDE, 0x00, 0x3C, 0x00, 0x7F, 0x00, 0x7F, 0xF0, 0x3F, 0xF8, 0x0F, + 0xF8, 0x01, 0xF0, 0x01, 0xFE, 0x03, 0xDE, 0x0F, 0xBF, 0xFE, 0x3F, 0xF8, + 0x1F, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, + 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, + 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0xF0, 0x3F, 0xC0, 0xFF, 0x03, 0xFC, 0x0F, + 0xF0, 0x3F, 0xC0, 0xFF, 0x03, 0xFC, 0x0F, 0xF0, 0x3F, 0xC0, 0xFF, 0x03, + 0xFC, 0x0F, 0xF0, 0x3F, 0xC0, 0xF7, 0x87, 0x9F, 0xFE, 0x3F, 0xF0, 0x3F, + 0x00, 0x70, 0x0E, 0xF0, 0x3D, 0xE0, 0x79, 0xC0, 0xE3, 0x81, 0xC7, 0x87, + 0x87, 0x0E, 0x0E, 0x1C, 0x1E, 0x78, 0x1C, 0xE0, 0x39, 0xC0, 0x73, 0x80, + 0x7E, 0x00, 0xFC, 0x01, 0xF8, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x70, + 0x38, 0x1C, 0xE0, 0xF0, 0x79, 0xE1, 0xF0, 0xF3, 0xC3, 0xE1, 0xE3, 0x87, + 0xC3, 0x87, 0x0F, 0x87, 0x0E, 0x3B, 0x9E, 0x1E, 0x77, 0x38, 0x1C, 0xEE, + 0x70, 0x39, 0xCC, 0xE0, 0x73, 0x99, 0xC0, 0x6E, 0x3F, 0x00, 0xFC, 0x7E, + 0x01, 0xF8, 0xFC, 0x03, 0xF0, 0xF8, 0x03, 0xE1, 0xE0, 0x07, 0x83, 0xC0, + 0x0F, 0x07, 0x80, 0xF0, 0x3C, 0xF0, 0xF9, 0xE1, 0xE1, 0xE7, 0x83, 0xCF, + 0x03, 0xFC, 0x03, 0xF0, 0x07, 0xE0, 0x07, 0x80, 0x0F, 0x00, 0x3F, 0x00, + 0xFF, 0x01, 0xFE, 0x07, 0x9E, 0x0F, 0x1E, 0x3C, 0x3C, 0xF8, 0x3D, 0xE0, + 0x78, 0xF0, 0x1E, 0x78, 0x1E, 0x78, 0x3C, 0x3C, 0x3C, 0x3C, 0x78, 0x1E, + 0x78, 0x0E, 0x70, 0x0F, 0xF0, 0x07, 0xE0, 0x07, 0xE0, 0x03, 0xC0, 0x03, + 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, + 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x01, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, + 0x00, 0xF8, 0x07, 0x80, 0x78, 0x07, 0x80, 0x7C, 0x03, 0xC0, 0x3C, 0x03, + 0xC0, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFC, 0xF3, 0xCF, + 0x3C, 0xF3, 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, 0xFF, 0xFF, + 0xC0, 0xC1, 0x81, 0x03, 0x06, 0x04, 0x0C, 0x18, 0x10, 0x30, 0x60, 0x40, + 0xC1, 0x81, 0x03, 0x06, 0xFF, 0xFF, 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, 0xF3, + 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, 0xF3, 0xCF, 0xFF, 0xFF, 0xC0, 0x0F, 0x00, + 0xF0, 0x0F, 0x01, 0xF8, 0x1B, 0x83, 0x9C, 0x39, 0xC3, 0x0C, 0x70, 0xE7, + 0x0E, 0xE0, 0x70, 0xFF, 0xFF, 0xFF, 0xFC, 0xE6, 0x30, 0x1F, 0x83, 0xFF, + 0x1F, 0xFD, 0xE1, 0xE0, 0x0F, 0x03, 0xF9, 0xFF, 0xDF, 0x1E, 0xF0, 0xF7, + 0x8F, 0xBF, 0xFC, 0xFF, 0xE3, 0xCF, 0x80, 0xF0, 0x07, 0x80, 0x3C, 0x01, + 0xE0, 0x0F, 0x00, 0x7B, 0xC3, 0xFF, 0x9F, 0xFE, 0xF8, 0xF7, 0x83, 0xFC, + 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3F, 0xE3, 0xDF, 0xFE, 0xFF, 0xE7, 0xBE, + 0x00, 0x0F, 0x83, 0xFE, 0x7F, 0xF7, 0x8F, 0xF0, 0x7F, 0x00, 0xF0, 0x0F, + 0x00, 0xF0, 0x77, 0x8F, 0x7F, 0xF3, 0xFE, 0x0F, 0x80, 0x00, 0x78, 0x03, + 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x8F, 0xBC, 0xFF, 0xEF, 0xFF, 0x78, 0xFF, + 0x83, 0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3D, 0xE3, 0xEF, 0xFF, 0x3F, + 0xF8, 0xFB, 0xC0, 0x1F, 0x81, 0xFE, 0x1F, 0xF9, 0xF1, 0xCF, 0x07, 0x7F, + 0xFB, 0xFF, 0xDE, 0x00, 0xF0, 0x03, 0xC3, 0x9F, 0xFC, 0x7F, 0xC0, 0xF8, + 0x00, 0x3E, 0xFD, 0xFB, 0xC7, 0x9F, 0xBF, 0x3C, 0x78, 0xF1, 0xE3, 0xC7, + 0x8F, 0x1E, 0x3C, 0x78, 0xF0, 0x1E, 0x79, 0xFB, 0xDF, 0xFE, 0xF1, 0xFF, + 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7F, 0xC7, 0xDF, 0xFE, 0x7F, + 0xF1, 0xF7, 0x80, 0x3C, 0x01, 0xFF, 0x1E, 0x7F, 0xF0, 0xFE, 0x00, 0xF0, + 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x7C, 0xFF, 0xEF, 0xFF, 0xF9, + 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, + 0xFF, 0x0F, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3C, + 0xF3, 0xC0, 0x00, 0xF3, 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, + 0xF3, 0xCF, 0xFF, 0xFF, 0x80, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, + 0x0F, 0x0F, 0xF1, 0xEF, 0x3C, 0xF7, 0x8F, 0xF0, 0xFF, 0x0F, 0xF8, 0xFF, + 0x8F, 0x3C, 0xF1, 0xCF, 0x1E, 0xF0, 0xEF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0x8F, 0x9F, 0xFB, 0xFB, 0xFF, 0xFF, + 0xFC, 0xF8, 0xFF, 0x1E, 0x1F, 0xE3, 0xC3, 0xFC, 0x78, 0x7F, 0x8F, 0x0F, + 0xF1, 0xE1, 0xFE, 0x3C, 0x3F, 0xC7, 0x87, 0xF8, 0xF0, 0xFF, 0x1E, 0x1E, + 0xF7, 0xCF, 0xFE, 0xFF, 0xFF, 0x9F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, + 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xF0, 0x0F, 0x81, 0xFF, 0x1F, + 0xFC, 0xF1, 0xEF, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7B, 0xC7, + 0x9F, 0xFC, 0x7F, 0xC0, 0xF8, 0x00, 0xF7, 0xC7, 0xFF, 0x3F, 0xFD, 0xF1, + 0xEF, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7F, 0xC7, 0xBF, 0xFD, + 0xFF, 0xCF, 0x78, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x00, + 0x0F, 0x79, 0xFF, 0xDF, 0xFE, 0xF1, 0xFF, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, + 0x0F, 0xF0, 0x7B, 0xC7, 0xDF, 0xFE, 0x7F, 0xF1, 0xF7, 0x80, 0x3C, 0x01, + 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0xF3, 0xF7, 0xFF, 0xF8, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x1F, 0x87, 0xFC, 0xFF, 0xEF, + 0x0F, 0xF8, 0x0F, 0xF0, 0x7F, 0xE0, 0xFF, 0x01, 0xFF, 0x0F, 0xFF, 0xE7, + 0xFE, 0x1F, 0x80, 0x79, 0xE7, 0xBF, 0xFD, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, + 0x7D, 0xF3, 0xC0, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, + 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x1F, 0xFF, 0xF7, 0xFF, 0x3E, 0xF0, 0xF0, + 0x7B, 0x83, 0x9E, 0x1C, 0xF1, 0xE3, 0x8E, 0x1C, 0x70, 0x77, 0x83, 0xB8, + 0x1D, 0xC0, 0x7E, 0x03, 0xE0, 0x1F, 0x00, 0x70, 0x00, 0xF0, 0xE1, 0xDC, + 0x78, 0x77, 0x1F, 0x3D, 0xE7, 0xCF, 0x79, 0xB3, 0x8E, 0x6C, 0xE3, 0xBB, + 0x38, 0xEE, 0xFC, 0x1F, 0x3F, 0x07, 0xC7, 0xC1, 0xF1, 0xF0, 0x7C, 0x78, + 0x0E, 0x1E, 0x00, 0x78, 0xF3, 0xC7, 0x8F, 0x78, 0x3B, 0x81, 0xFC, 0x07, + 0xC0, 0x1E, 0x01, 0xF0, 0x1F, 0xC0, 0xEF, 0x0F, 0x78, 0xF1, 0xE7, 0x87, + 0x00, 0xF0, 0x7B, 0x83, 0x9E, 0x1C, 0x71, 0xE3, 0x8E, 0x1E, 0x70, 0x73, + 0x83, 0xB8, 0x1F, 0xC0, 0x7E, 0x03, 0xE0, 0x0F, 0x00, 0x70, 0x03, 0x80, + 0x3C, 0x07, 0xC0, 0x3E, 0x01, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, 0xFC, 0x0F, + 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x0F, 0xFF, 0xFF, 0xFF, 0xC0, + 0x1C, 0xF3, 0xCE, 0x38, 0xE3, 0x8E, 0x38, 0xE3, 0xBC, 0xF0, 0xE3, 0x8E, + 0x38, 0xE3, 0x8E, 0x3C, 0xF1, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xE3, 0x8F, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x0F, 0x3D, 0xC7, 0x1C, + 0x71, 0xC7, 0x1C, 0xF3, 0xCE, 0x00, 0x78, 0x0F, 0xE0, 0xCF, 0x30, 0x7F, + 0x01, 0xE0}; + +const GFXglyph FreeSansBold12pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 7, 0, 1}, // 0x20 ' ' + {0, 4, 17, 8, 3, -16}, // 0x21 '!' + {9, 10, 6, 11, 1, -17}, // 0x22 '"' + {17, 13, 16, 13, 0, -15}, // 0x23 '#' + {43, 13, 20, 13, 0, -17}, // 0x24 '$' + {76, 19, 17, 21, 1, -16}, // 0x25 '%' + {117, 16, 17, 17, 1, -16}, // 0x26 '&' + {151, 4, 6, 6, 1, -17}, // 0x27 ''' + {154, 6, 22, 8, 1, -17}, // 0x28 '(' + {171, 6, 22, 8, 1, -17}, // 0x29 ')' + {188, 7, 8, 9, 1, -17}, // 0x2A '*' + {195, 11, 11, 14, 2, -10}, // 0x2B '+' + {211, 4, 7, 6, 1, -2}, // 0x2C ',' + {215, 6, 3, 8, 1, -7}, // 0x2D '-' + {218, 4, 3, 6, 1, -2}, // 0x2E '.' + {220, 6, 17, 7, 0, -16}, // 0x2F '/' + {233, 12, 17, 13, 1, -16}, // 0x30 '0' + {259, 7, 17, 14, 3, -16}, // 0x31 '1' + {274, 12, 17, 13, 1, -16}, // 0x32 '2' + {300, 12, 17, 13, 1, -16}, // 0x33 '3' + {326, 11, 17, 13, 1, -16}, // 0x34 '4' + {350, 12, 17, 13, 1, -16}, // 0x35 '5' + {376, 12, 17, 13, 1, -16}, // 0x36 '6' + {402, 11, 17, 13, 1, -16}, // 0x37 '7' + {426, 12, 17, 13, 1, -16}, // 0x38 '8' + {452, 12, 17, 13, 1, -16}, // 0x39 '9' + {478, 4, 12, 6, 1, -11}, // 0x3A ':' + {484, 4, 16, 6, 1, -11}, // 0x3B ';' + {492, 12, 12, 14, 1, -11}, // 0x3C '<' + {510, 12, 9, 14, 1, -9}, // 0x3D '=' + {524, 12, 12, 14, 1, -11}, // 0x3E '>' + {542, 12, 18, 15, 2, -17}, // 0x3F '?' + {569, 21, 21, 23, 1, -17}, // 0x40 '@' + {625, 16, 18, 17, 0, -17}, // 0x41 'A' + {661, 14, 18, 17, 2, -17}, // 0x42 'B' + {693, 16, 18, 17, 1, -17}, // 0x43 'C' + {729, 15, 18, 17, 2, -17}, // 0x44 'D' + {763, 13, 18, 16, 2, -17}, // 0x45 'E' + {793, 12, 18, 15, 2, -17}, // 0x46 'F' + {820, 16, 18, 18, 1, -17}, // 0x47 'G' + {856, 14, 18, 18, 2, -17}, // 0x48 'H' + {888, 4, 18, 7, 2, -17}, // 0x49 'I' + {897, 11, 18, 14, 1, -17}, // 0x4A 'J' + {922, 16, 18, 17, 2, -17}, // 0x4B 'K' + {958, 11, 18, 15, 2, -17}, // 0x4C 'L' + {983, 17, 18, 21, 2, -17}, // 0x4D 'M' + {1022, 15, 18, 18, 2, -17}, // 0x4E 'N' + {1056, 17, 18, 19, 1, -17}, // 0x4F 'O' + {1095, 14, 18, 16, 2, -17}, // 0x50 'P' + {1127, 17, 19, 19, 1, -17}, // 0x51 'Q' + {1168, 16, 18, 17, 2, -17}, // 0x52 'R' + {1204, 15, 18, 16, 1, -17}, // 0x53 'S' + {1238, 12, 18, 15, 2, -17}, // 0x54 'T' + {1265, 14, 18, 18, 2, -17}, // 0x55 'U' + {1297, 15, 18, 16, 0, -17}, // 0x56 'V' + {1331, 23, 18, 23, 0, -17}, // 0x57 'W' + {1383, 15, 18, 16, 1, -17}, // 0x58 'X' + {1417, 16, 18, 15, 0, -17}, // 0x59 'Y' + {1453, 13, 18, 15, 1, -17}, // 0x5A 'Z' + {1483, 6, 23, 8, 2, -17}, // 0x5B '[' + {1501, 7, 17, 7, 0, -16}, // 0x5C '\' + {1516, 6, 23, 8, 0, -17}, // 0x5D ']' + {1534, 12, 11, 14, 1, -16}, // 0x5E '^' + {1551, 15, 2, 13, -1, 4}, // 0x5F '_' + {1555, 4, 3, 6, 0, -17}, // 0x60 '`' + {1557, 13, 13, 14, 1, -12}, // 0x61 'a' + {1579, 13, 18, 15, 2, -17}, // 0x62 'b' + {1609, 12, 13, 13, 1, -12}, // 0x63 'c' + {1629, 13, 18, 15, 1, -17}, // 0x64 'd' + {1659, 13, 13, 14, 1, -12}, // 0x65 'e' + {1681, 7, 18, 8, 1, -17}, // 0x66 'f' + {1697, 13, 18, 15, 1, -12}, // 0x67 'g' + {1727, 12, 18, 14, 2, -17}, // 0x68 'h' + {1754, 4, 18, 7, 2, -17}, // 0x69 'i' + {1763, 6, 23, 7, 0, -17}, // 0x6A 'j' + {1781, 12, 18, 14, 2, -17}, // 0x6B 'k' + {1808, 4, 18, 6, 2, -17}, // 0x6C 'l' + {1817, 19, 13, 21, 2, -12}, // 0x6D 'm' + {1848, 12, 13, 15, 2, -12}, // 0x6E 'n' + {1868, 13, 13, 15, 1, -12}, // 0x6F 'o' + {1890, 13, 18, 15, 2, -12}, // 0x70 'p' + {1920, 13, 18, 15, 1, -12}, // 0x71 'q' + {1950, 8, 13, 9, 2, -12}, // 0x72 'r' + {1963, 12, 13, 13, 1, -12}, // 0x73 's' + {1983, 6, 15, 8, 1, -14}, // 0x74 't' + {1995, 12, 13, 15, 2, -12}, // 0x75 'u' + {2015, 13, 13, 13, 0, -12}, // 0x76 'v' + {2037, 18, 13, 19, 0, -12}, // 0x77 'w' + {2067, 13, 13, 13, 0, -12}, // 0x78 'x' + {2089, 13, 18, 13, 0, -12}, // 0x79 'y' + {2119, 10, 13, 12, 1, -12}, // 0x7A 'z' + {2136, 6, 23, 9, 1, -17}, // 0x7B '{' + {2154, 2, 22, 7, 2, -17}, // 0x7C '|' + {2160, 6, 23, 9, 3, -17}, // 0x7D '}' + {2178, 12, 5, 12, 0, -7}}; // 0x7E '~' + +const GFXfont FreeSansBold12pt7b PROGMEM = { + (uint8_t *)FreeSansBold12pt7bBitmaps, (GFXglyph *)FreeSansBold12pt7bGlyphs, + 0x20, 0x7E, 29}; + +// Approx. 2858 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBold18pt7b.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBold18pt7b.h new file mode 100644 index 0000000..f0e2807 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBold18pt7b.h @@ -0,0 +1,483 @@ +#pragma once +#include + +const uint8_t FreeSansBold18pt7bBitmaps[] PROGMEM = { + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xE7, 0x39, 0xCE, 0x73, 0x80, + 0x0F, 0xFF, 0xFF, 0xF8, 0xF8, 0xFF, 0xC7, 0xFE, 0x3F, 0xF1, 0xFF, 0x8F, + 0xFC, 0x7D, 0xC1, 0xCE, 0x0E, 0x70, 0x70, 0x03, 0xC3, 0x80, 0x3C, 0x78, + 0x03, 0xC7, 0x80, 0x38, 0x78, 0x07, 0x87, 0x07, 0xFF, 0xFF, 0x7F, 0xFF, + 0xF7, 0xFF, 0xFF, 0x7F, 0xFF, 0xF0, 0xF0, 0xE0, 0x0F, 0x0E, 0x00, 0xF1, + 0xE0, 0x0F, 0x1E, 0x00, 0xE1, 0xE0, 0xFF, 0xFF, 0xCF, 0xFF, 0xFC, 0xFF, + 0xFF, 0xCF, 0xFF, 0xFC, 0x1C, 0x3C, 0x03, 0xC3, 0x80, 0x3C, 0x78, 0x03, + 0xC7, 0x80, 0x38, 0x78, 0x03, 0x87, 0x80, 0x00, 0x60, 0x00, 0x7F, 0x80, + 0x3F, 0xFC, 0x0F, 0xFF, 0xC3, 0xFF, 0xFC, 0xFC, 0xDF, 0x9F, 0x19, 0xFB, + 0xC3, 0x1F, 0x78, 0x63, 0xEF, 0x8C, 0x01, 0xFD, 0x80, 0x1F, 0xF0, 0x01, + 0xFF, 0xC0, 0x1F, 0xFE, 0x00, 0x7F, 0xE0, 0x03, 0xFE, 0x00, 0x67, 0xE0, + 0x0C, 0x7F, 0xE1, 0x8F, 0xFC, 0x31, 0xFF, 0xC6, 0x3E, 0xFC, 0xDF, 0x9F, + 0xFF, 0xF1, 0xFF, 0xFC, 0x0F, 0xFF, 0x00, 0x7F, 0x80, 0x01, 0x80, 0x00, + 0x30, 0x00, 0x06, 0x00, 0x0F, 0x00, 0x1C, 0x01, 0xFE, 0x00, 0xE0, 0x1F, + 0xF8, 0x0E, 0x00, 0xFF, 0xC0, 0x70, 0x0F, 0x0F, 0x07, 0x00, 0x70, 0x38, + 0x38, 0x03, 0x81, 0xC3, 0x80, 0x1C, 0x0E, 0x3C, 0x00, 0xF0, 0xF1, 0xC0, + 0x03, 0xFF, 0x1C, 0x00, 0x1F, 0xF8, 0xE0, 0x00, 0x7F, 0x8E, 0x00, 0x00, + 0xF0, 0x70, 0xF8, 0x00, 0x07, 0x1F, 0xF0, 0x00, 0x39, 0xFF, 0xC0, 0x03, + 0x8F, 0xFE, 0x00, 0x1C, 0xF0, 0x78, 0x01, 0xC7, 0x01, 0xC0, 0x0C, 0x38, + 0x0E, 0x00, 0xE1, 0xC0, 0x70, 0x06, 0x0F, 0x07, 0x80, 0x70, 0x3F, 0xF8, + 0x07, 0x01, 0xFF, 0xC0, 0x38, 0x07, 0xFC, 0x03, 0x80, 0x0F, 0x80, 0x01, + 0xF0, 0x00, 0x1F, 0xE0, 0x00, 0xFF, 0xC0, 0x03, 0xFF, 0x80, 0x1F, 0x1E, + 0x00, 0x7C, 0x78, 0x01, 0xF1, 0xE0, 0x07, 0xE7, 0x80, 0x0F, 0xBC, 0x00, + 0x1F, 0xE0, 0x00, 0x3F, 0x00, 0x01, 0xF8, 0x00, 0x1F, 0xF0, 0xF0, 0xFF, + 0xE3, 0xC7, 0xE7, 0xCF, 0x3F, 0x0F, 0xF8, 0xF8, 0x3F, 0xE3, 0xE0, 0x7F, + 0x8F, 0x80, 0xFC, 0x3F, 0x03, 0xF0, 0x7E, 0x3F, 0xE1, 0xFF, 0xFF, 0x83, + 0xFF, 0xFF, 0x07, 0xFE, 0x7E, 0x07, 0xF0, 0xFC, 0xFF, 0xFF, 0xFF, 0xFD, + 0xCE, 0x70, 0x07, 0x87, 0x83, 0xC3, 0xC1, 0xE1, 0xE0, 0xF0, 0x78, 0x78, + 0x3C, 0x1E, 0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, + 0x0F, 0x03, 0x81, 0xE0, 0xF0, 0x78, 0x1E, 0x0F, 0x03, 0x81, 0xE0, 0x70, + 0x3C, 0x0E, 0x07, 0x80, 0xF0, 0x38, 0x1E, 0x07, 0x83, 0xC0, 0xF0, 0x78, + 0x3C, 0x0F, 0x07, 0x83, 0xC0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, + 0xC1, 0xE0, 0xF0, 0x78, 0x78, 0x3C, 0x1E, 0x0F, 0x0F, 0x07, 0x87, 0x83, + 0xC1, 0xC1, 0xE0, 0xE0, 0xF0, 0x00, 0x06, 0x00, 0x60, 0x06, 0x07, 0x6E, + 0x7F, 0xE3, 0xFC, 0x0F, 0x01, 0xF8, 0x1F, 0x83, 0x9C, 0x10, 0x80, 0x03, + 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xC0, 0x03, 0xC0, 0x03, + 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0xFF, 0xFF, 0xFF, 0x8C, 0x63, + 0x37, 0xB0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0x80, 0x01, + 0x81, 0xC0, 0xC0, 0x60, 0x70, 0x38, 0x18, 0x0C, 0x0E, 0x06, 0x03, 0x01, + 0x81, 0xC0, 0xC0, 0x60, 0x30, 0x38, 0x18, 0x0C, 0x0E, 0x07, 0x03, 0x01, + 0x81, 0xC0, 0xC0, 0x00, 0x07, 0xF0, 0x0F, 0xFE, 0x0F, 0xFF, 0x87, 0xFF, + 0xC7, 0xE3, 0xF3, 0xE0, 0xF9, 0xF0, 0x7D, 0xF0, 0x1F, 0xF8, 0x0F, 0xFC, + 0x07, 0xFE, 0x03, 0xFF, 0x01, 0xFF, 0x80, 0xFF, 0xC0, 0x7F, 0xE0, 0x3F, + 0xF0, 0x1F, 0xF8, 0x0F, 0xFC, 0x07, 0xDF, 0x07, 0xCF, 0x83, 0xE7, 0xE3, + 0xF1, 0xFF, 0xF0, 0xFF, 0xF8, 0x3F, 0xF8, 0x07, 0xF0, 0x00, 0x01, 0xC0, + 0xF0, 0x3C, 0x1F, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xC1, 0xF0, 0x7C, + 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, + 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC0, 0x07, 0xF0, 0x0F, 0xFE, 0x0F, 0xFF, + 0x8F, 0xFF, 0xE7, 0xE3, 0xF7, 0xE0, 0xFF, 0xE0, 0x3F, 0xF0, 0x1F, 0xF8, + 0x0F, 0x80, 0x07, 0xC0, 0x07, 0xE0, 0x03, 0xE0, 0x03, 0xF0, 0x03, 0xF0, + 0x07, 0xF0, 0x07, 0xF0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xC0, 0x07, 0xC0, + 0x03, 0xE0, 0x03, 0xFF, 0xFD, 0xFF, 0xFE, 0xFF, 0xFF, 0x7F, 0xFF, 0x80, + 0x07, 0xE0, 0x0F, 0xFC, 0x0F, 0xFF, 0x0F, 0xFF, 0xCF, 0xC3, 0xF7, 0xC0, + 0xFB, 0xE0, 0x7D, 0xF0, 0x3E, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x0F, 0x80, + 0x3F, 0x80, 0x1F, 0xC0, 0x0F, 0xF0, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x0F, + 0xFC, 0x07, 0xFE, 0x03, 0xFF, 0x83, 0xF7, 0xC3, 0xF3, 0xFF, 0xF8, 0xFF, + 0xF8, 0x3F, 0xF8, 0x07, 0xF0, 0x00, 0x00, 0xFC, 0x00, 0xFC, 0x01, 0xFC, + 0x01, 0xFC, 0x03, 0xFC, 0x07, 0x7C, 0x07, 0x7C, 0x0E, 0x7C, 0x0E, 0x7C, + 0x1C, 0x7C, 0x18, 0x7C, 0x38, 0x7C, 0x70, 0x7C, 0x60, 0x7C, 0xE0, 0x7C, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x7C, 0x00, 0x7C, + 0x00, 0x7C, 0x00, 0x7C, 0x00, 0x7C, 0x00, 0x7C, 0x1F, 0xFF, 0x0F, 0xFF, + 0x8F, 0xFF, 0xC7, 0xFF, 0xE3, 0xC0, 0x01, 0xE0, 0x00, 0xE0, 0x00, 0x70, + 0x00, 0x79, 0xF0, 0x3F, 0xFE, 0x1F, 0xFF, 0x8F, 0xFF, 0xE7, 0xC3, 0xF0, + 0x00, 0xFC, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xFE, 0x03, + 0xFF, 0x03, 0xFF, 0xC3, 0xF3, 0xFF, 0xF1, 0xFF, 0xF8, 0x3F, 0xF0, 0x07, + 0xE0, 0x00, 0x03, 0xF8, 0x03, 0xFF, 0x81, 0xFF, 0xF0, 0xFF, 0xFE, 0x3E, + 0x1F, 0x9F, 0x03, 0xE7, 0xC0, 0x03, 0xE0, 0x00, 0xF8, 0xF8, 0x3E, 0xFF, + 0x8F, 0xFF, 0xF3, 0xFF, 0xFE, 0xFE, 0x1F, 0xBF, 0x03, 0xFF, 0x80, 0x7F, + 0xE0, 0x1F, 0xF8, 0x07, 0xFE, 0x01, 0xF7, 0x80, 0x7D, 0xF0, 0x3E, 0x7E, + 0x1F, 0x8F, 0xFF, 0xC1, 0xFF, 0xF0, 0x3F, 0xF0, 0x03, 0xF0, 0x00, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0xF0, 0x00, 0xF8, + 0x00, 0xF8, 0x00, 0x78, 0x00, 0x7C, 0x00, 0x3C, 0x00, 0x3E, 0x00, 0x1E, + 0x00, 0x1F, 0x00, 0x0F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xC0, 0x03, + 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x78, 0x00, 0x7C, 0x00, 0x3E, 0x00, + 0x1F, 0x00, 0x0F, 0x80, 0x00, 0x07, 0xE0, 0x07, 0xFC, 0x0F, 0xFF, 0x07, + 0xFF, 0xC7, 0xC3, 0xF3, 0xC0, 0xF9, 0xE0, 0x3C, 0xF0, 0x1E, 0x78, 0x1F, + 0x1E, 0x1F, 0x07, 0xFF, 0x01, 0xFF, 0x03, 0xFF, 0xE3, 0xF1, 0xF9, 0xF0, + 0x7D, 0xF0, 0x1F, 0xF8, 0x0F, 0xFC, 0x07, 0xFE, 0x03, 0xFF, 0x83, 0xF7, + 0xC3, 0xF3, 0xFF, 0xF8, 0xFF, 0xF8, 0x3F, 0xF8, 0x07, 0xF0, 0x00, 0x07, + 0xE0, 0x0F, 0xFC, 0x0F, 0xFF, 0x0F, 0xFF, 0xC7, 0xE3, 0xF7, 0xE0, 0xFB, + 0xE0, 0x3D, 0xF0, 0x1F, 0xF8, 0x0F, 0xFC, 0x07, 0xFE, 0x03, 0xFF, 0x83, + 0xF7, 0xE3, 0xFB, 0xFF, 0xFC, 0xFF, 0xFE, 0x3F, 0xDF, 0x07, 0xCF, 0x80, + 0x07, 0x80, 0x03, 0xDF, 0x03, 0xE7, 0xC3, 0xE3, 0xFF, 0xF0, 0xFF, 0xF0, + 0x3F, 0xF0, 0x07, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x7F, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x7F, 0xFF, 0xFF, 0xC6, 0x33, 0x9B, 0xD8, 0x00, 0x00, 0xC0, 0x00, + 0xF0, 0x01, 0xFC, 0x03, 0xFF, 0x03, 0xFF, 0x07, 0xFE, 0x0F, 0xFC, 0x03, + 0xF8, 0x00, 0xF0, 0x00, 0x3F, 0x80, 0x0F, 0xFC, 0x00, 0x7F, 0xE0, 0x07, + 0xFF, 0x00, 0x3F, 0xF0, 0x01, 0xFC, 0x00, 0x1F, 0x00, 0x00, 0xC0, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF0, 0xC0, 0x00, 0x3C, 0x00, 0x0F, 0xE0, 0x03, 0xFF, 0x00, 0x3F, 0xF0, + 0x01, 0xFF, 0x80, 0x0F, 0xFC, 0x00, 0x7F, 0x00, 0x03, 0xC0, 0x07, 0xF0, + 0x0F, 0xFC, 0x1F, 0xF8, 0x3F, 0xF8, 0x3F, 0xF0, 0x0F, 0xE0, 0x03, 0xC0, + 0x00, 0xC0, 0x00, 0x00, 0x07, 0xF0, 0x07, 0xFF, 0x03, 0xFF, 0xF1, 0xFF, + 0xFC, 0x7E, 0x3F, 0xBF, 0x03, 0xFF, 0x80, 0x7F, 0xE0, 0x1F, 0xF8, 0x07, + 0xC0, 0x03, 0xF0, 0x01, 0xFC, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x3F, 0x80, + 0x1F, 0xC0, 0x07, 0xC0, 0x03, 0xE0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xE0, + 0x00, 0xF8, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, + 0xFF, 0xFF, 0xC0, 0x01, 0xF8, 0x07, 0xF0, 0x03, 0xE0, 0x01, 0xF8, 0x07, + 0x80, 0x00, 0x7C, 0x0F, 0x00, 0x00, 0x3C, 0x1E, 0x03, 0xE3, 0x9E, 0x3C, + 0x0F, 0xF7, 0x8E, 0x38, 0x1F, 0xFF, 0x0E, 0x78, 0x3E, 0x1F, 0x07, 0x70, + 0x38, 0x0F, 0x07, 0x70, 0x78, 0x0F, 0x07, 0xE0, 0x70, 0x0E, 0x07, 0xE0, + 0x70, 0x0E, 0x07, 0xE0, 0xE0, 0x0E, 0x07, 0xE0, 0xE0, 0x1E, 0x0F, 0xE0, + 0xE0, 0x1C, 0x0E, 0xE0, 0xE0, 0x3C, 0x1E, 0xE0, 0xF0, 0x3C, 0x3C, 0xF0, + 0xF0, 0xFC, 0x7C, 0x70, 0x7F, 0xFF, 0xF8, 0x78, 0x3F, 0xCF, 0xF0, 0x3C, + 0x1F, 0x07, 0xC0, 0x3E, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x0F, + 0xC0, 0x01, 0x00, 0x07, 0xF0, 0x0F, 0x00, 0x03, 0xFF, 0xFF, 0x00, 0x00, + 0xFF, 0xFF, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7F, + 0x00, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x80, 0x01, 0xFF, + 0x80, 0x01, 0xFF, 0x80, 0x01, 0xF7, 0xC0, 0x03, 0xE7, 0xC0, 0x03, 0xE7, + 0xC0, 0x03, 0xE3, 0xE0, 0x07, 0xC3, 0xE0, 0x07, 0xC3, 0xE0, 0x07, 0xC1, + 0xF0, 0x0F, 0x81, 0xF0, 0x0F, 0x81, 0xF0, 0x0F, 0xFF, 0xF8, 0x1F, 0xFF, + 0xF8, 0x1F, 0xFF, 0xFC, 0x1F, 0xFF, 0xFC, 0x3E, 0x00, 0x7C, 0x3E, 0x00, + 0x7E, 0x3E, 0x00, 0x3E, 0x7C, 0x00, 0x3E, 0x7C, 0x00, 0x3F, 0x7C, 0x00, + 0x1F, 0xFF, 0xFC, 0x0F, 0xFF, 0xF0, 0xFF, 0xFF, 0x8F, 0xFF, 0xFC, 0xF8, + 0x07, 0xEF, 0x80, 0x3E, 0xF8, 0x03, 0xEF, 0x80, 0x3E, 0xF8, 0x03, 0xEF, + 0x80, 0x3E, 0xF8, 0x07, 0xCF, 0xFF, 0xF8, 0xFF, 0xFF, 0x0F, 0xFF, 0xF8, + 0xFF, 0xFF, 0xCF, 0x80, 0x7E, 0xF8, 0x01, 0xEF, 0x80, 0x1F, 0xF8, 0x01, + 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x3E, 0xFF, 0xFF, 0xEF, 0xFF, + 0xFC, 0xFF, 0xFF, 0x8F, 0xFF, 0xE0, 0x00, 0xFF, 0x00, 0x07, 0xFF, 0x80, + 0x3F, 0xFF, 0xC0, 0xFF, 0xFF, 0xC3, 0xF8, 0x1F, 0x87, 0xE0, 0x1F, 0x9F, + 0x80, 0x1F, 0x3E, 0x00, 0x1F, 0x7C, 0x00, 0x3F, 0xF0, 0x00, 0x03, 0xE0, + 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3E, 0x00, + 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x7D, 0xF0, 0x00, + 0xFB, 0xF0, 0x03, 0xF3, 0xF0, 0x0F, 0xC7, 0xF0, 0x3F, 0x87, 0xFF, 0xFE, + 0x07, 0xFF, 0xF8, 0x03, 0xFF, 0xC0, 0x01, 0xFE, 0x00, 0xFF, 0xFC, 0x07, + 0xFF, 0xF8, 0x3F, 0xFF, 0xE1, 0xFF, 0xFF, 0x8F, 0x80, 0xFE, 0x7C, 0x01, + 0xF3, 0xE0, 0x07, 0xDF, 0x00, 0x3E, 0xF8, 0x01, 0xF7, 0xC0, 0x07, 0xFE, + 0x00, 0x3F, 0xF0, 0x01, 0xFF, 0x80, 0x0F, 0xFC, 0x00, 0x7F, 0xE0, 0x03, + 0xFF, 0x00, 0x1F, 0xF8, 0x00, 0xFF, 0xC0, 0x0F, 0xFE, 0x00, 0x7D, 0xF0, + 0x03, 0xEF, 0x80, 0x3E, 0x7C, 0x07, 0xF3, 0xFF, 0xFF, 0x1F, 0xFF, 0xF0, + 0xFF, 0xFF, 0x07, 0xFF, 0xE0, 0x00, 0xFF, 0xFF, 0xDF, 0xFF, 0xFB, 0xFF, + 0xFF, 0x7F, 0xFF, 0xEF, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, + 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x7F, 0xFF, 0xCF, 0xFF, + 0xF9, 0xFF, 0xFF, 0x3F, 0xFF, 0xE7, 0xC0, 0x00, 0xF8, 0x00, 0x1F, 0x00, + 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3F, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, + 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0xFF, 0xEF, 0xFF, 0xF7, + 0xFF, 0xFB, 0xFF, 0xFD, 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, + 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, + 0x00, 0x7C, 0x00, 0x00, 0x00, 0x7F, 0x80, 0x03, 0xFF, 0xE0, 0x07, 0xFF, + 0xF8, 0x0F, 0xFF, 0xFC, 0x1F, 0xC0, 0xFE, 0x3F, 0x00, 0x7E, 0x7E, 0x00, + 0x3F, 0x7C, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x03, 0xFF, 0xF8, 0x03, 0xFF, 0xF8, 0x03, + 0xFF, 0xF8, 0x03, 0xFF, 0xFC, 0x00, 0x0F, 0x7C, 0x00, 0x1F, 0x7C, 0x00, + 0x1F, 0x7E, 0x00, 0x3F, 0x3F, 0x00, 0x7F, 0x1F, 0xC1, 0xFF, 0x0F, 0xFF, + 0xFF, 0x07, 0xFF, 0xE7, 0x03, 0xFF, 0xC7, 0x00, 0xFF, 0x07, 0xF8, 0x01, + 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, + 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x01, 0xFF, + 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, + 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, + 0xFF, 0x80, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x1F, 0x00, 0x1F, + 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, + 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, + 0x00, 0x1F, 0x00, 0x1F, 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, 0x1F, + 0xF8, 0x1F, 0xFC, 0x3F, 0x7F, 0xFE, 0x3F, 0xFC, 0x1F, 0xF8, 0x07, 0xE0, + 0xF8, 0x01, 0xFB, 0xE0, 0x0F, 0xCF, 0x80, 0x7E, 0x3E, 0x03, 0xF0, 0xF8, + 0x1F, 0x83, 0xE0, 0xFC, 0x0F, 0x87, 0xE0, 0x3E, 0x3F, 0x00, 0xF8, 0xF8, + 0x03, 0xE7, 0xE0, 0x0F, 0xBF, 0x00, 0x3F, 0xF8, 0x00, 0xFF, 0xF0, 0x03, + 0xFF, 0xE0, 0x0F, 0xFF, 0x80, 0x3F, 0xBF, 0x00, 0xFC, 0x7E, 0x03, 0xE0, + 0xFC, 0x0F, 0x81, 0xF8, 0x3E, 0x07, 0xE0, 0xF8, 0x0F, 0xC3, 0xE0, 0x1F, + 0x8F, 0x80, 0x7F, 0x3E, 0x00, 0xFC, 0xF8, 0x01, 0xFB, 0xE0, 0x03, 0xF0, + 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, + 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, + 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, + 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xFF, 0x00, 0xFF, 0xFF, + 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, + 0x81, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, 0x81, 0xFF, 0xFB, 0xC3, 0xDF, 0xFB, + 0xC3, 0xDF, 0xFB, 0xC3, 0xDF, 0xFB, 0xC3, 0xDF, 0xF9, 0xC7, 0xDF, 0xF9, + 0xE7, 0x9F, 0xF9, 0xE7, 0x9F, 0xF9, 0xE7, 0x9F, 0xF9, 0xE7, 0x9F, 0xF8, + 0xFF, 0x1F, 0xF8, 0xFF, 0x1F, 0xF8, 0xFF, 0x1F, 0xF8, 0xFF, 0x1F, 0xF8, + 0x7F, 0x1F, 0xF8, 0x7E, 0x1F, 0xF8, 0x7E, 0x1F, 0xF8, 0x7E, 0x1F, 0xF8, + 0x3E, 0x1F, 0xF8, 0x01, 0xFF, 0xC0, 0x1F, 0xFE, 0x01, 0xFF, 0xE0, 0x1F, + 0xFF, 0x01, 0xFF, 0xF0, 0x1F, 0xFF, 0x81, 0xFF, 0xF8, 0x1F, 0xFF, 0xC1, + 0xFF, 0xBC, 0x1F, 0xFB, 0xE1, 0xFF, 0x9F, 0x1F, 0xF9, 0xF1, 0xFF, 0x8F, + 0x9F, 0xF8, 0x79, 0xFF, 0x87, 0xDF, 0xF8, 0x3D, 0xFF, 0x83, 0xFF, 0xF8, + 0x1F, 0xFF, 0x81, 0xFF, 0xF8, 0x0F, 0xFF, 0x80, 0xFF, 0xF8, 0x07, 0xFF, + 0x80, 0x3F, 0xF8, 0x03, 0xFF, 0x80, 0x1F, 0x00, 0x7F, 0x00, 0x01, 0xFF, + 0xF0, 0x01, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0x01, 0xFC, 0x1F, 0xC1, 0xF8, + 0x03, 0xF1, 0xF8, 0x00, 0xFC, 0xF8, 0x00, 0x3E, 0x7C, 0x00, 0x1F, 0x7C, + 0x00, 0x07, 0xFE, 0x00, 0x03, 0xFF, 0x00, 0x01, 0xFF, 0x80, 0x00, 0xFF, + 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x3F, 0xF0, 0x00, 0x1F, 0xF8, 0x00, 0x0F, + 0xBE, 0x00, 0x0F, 0x9F, 0x00, 0x07, 0xCF, 0xC0, 0x07, 0xE3, 0xF0, 0x07, + 0xE0, 0xFE, 0x0F, 0xE0, 0x7F, 0xFF, 0xE0, 0x0F, 0xFF, 0xE0, 0x03, 0xFF, + 0xE0, 0x00, 0x3F, 0x80, 0x00, 0xFF, 0xFC, 0x1F, 0xFF, 0xE3, 0xFF, 0xFE, + 0x7F, 0xFF, 0xEF, 0x80, 0xFF, 0xF0, 0x0F, 0xFE, 0x00, 0xFF, 0xC0, 0x1F, + 0xF8, 0x03, 0xFF, 0x00, 0x7F, 0xE0, 0x1F, 0xFC, 0x07, 0xEF, 0xFF, 0xFD, + 0xFF, 0xFF, 0x3F, 0xFF, 0xC7, 0xFF, 0xE0, 0xF8, 0x00, 0x1F, 0x00, 0x03, + 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, + 0xC0, 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x01, 0xFF, + 0xF0, 0x01, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0x01, 0xFC, 0x1F, 0xC1, 0xF8, + 0x03, 0xF1, 0xF8, 0x00, 0xFC, 0xF8, 0x00, 0x3E, 0x7C, 0x00, 0x1F, 0x7C, + 0x00, 0x07, 0xFE, 0x00, 0x03, 0xFF, 0x00, 0x01, 0xFF, 0x80, 0x00, 0xFF, + 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x3F, 0xF0, 0x00, 0x1F, 0xF8, 0x01, 0x0F, + 0xBE, 0x01, 0xCF, 0x9F, 0x01, 0xFF, 0xCF, 0xC0, 0x7F, 0xE3, 0xF0, 0x1F, + 0xE0, 0xFE, 0x0F, 0xF0, 0x7F, 0xFF, 0xF8, 0x0F, 0xFF, 0xFE, 0x03, 0xFF, + 0xEF, 0x80, 0x3F, 0xC3, 0x80, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x07, 0xFF, + 0xFE, 0x3F, 0xFF, 0xF9, 0xFF, 0xFF, 0xCF, 0x80, 0x3F, 0x7C, 0x00, 0xFB, + 0xE0, 0x07, 0xDF, 0x00, 0x3E, 0xF8, 0x01, 0xF7, 0xC0, 0x0F, 0x3E, 0x00, + 0xF9, 0xFF, 0xFF, 0x8F, 0xFF, 0xF8, 0x7F, 0xFF, 0xC3, 0xFF, 0xFF, 0x1F, + 0x00, 0xFC, 0xF8, 0x03, 0xE7, 0xC0, 0x1F, 0x3E, 0x00, 0xF9, 0xF0, 0x07, + 0xCF, 0x80, 0x3E, 0x7C, 0x01, 0xF3, 0xE0, 0x0F, 0x9F, 0x00, 0x7C, 0xF8, + 0x03, 0xF7, 0xC0, 0x0F, 0xC0, 0x07, 0xF8, 0x01, 0xFF, 0xF0, 0x3F, 0xFF, + 0x87, 0xFF, 0xFC, 0x7E, 0x0F, 0xCF, 0xC0, 0x7E, 0xF8, 0x03, 0xEF, 0x80, + 0x3E, 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0xFF, 0x00, 0x07, 0xFF, 0xC0, 0x3F, + 0xFF, 0x81, 0xFF, 0xFC, 0x03, 0xFF, 0xE0, 0x01, 0xFF, 0x00, 0x03, 0xF0, + 0x00, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xFC, 0x03, 0xFF, 0xE0, 0x7E, + 0x7F, 0xFF, 0xE3, 0xFF, 0xFC, 0x1F, 0xFF, 0x00, 0x3F, 0xC0, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x1F, 0x00, 0x03, 0xE0, + 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, + 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, + 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x1F, 0x00, + 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, + 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, + 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, + 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, + 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, + 0x80, 0x1F, 0x7C, 0x03, 0xE7, 0xE0, 0x7E, 0x3F, 0xFF, 0xC3, 0xFF, 0xFC, + 0x0F, 0xFF, 0x00, 0x3F, 0xC0, 0xF8, 0x00, 0xFB, 0xE0, 0x03, 0xE7, 0xC0, + 0x1F, 0x9F, 0x00, 0x7C, 0x7C, 0x01, 0xF0, 0xF8, 0x07, 0xC3, 0xE0, 0x3E, + 0x0F, 0x80, 0xF8, 0x1E, 0x03, 0xE0, 0x7C, 0x1F, 0x01, 0xF0, 0x7C, 0x03, + 0xC1, 0xF0, 0x0F, 0x87, 0x80, 0x3E, 0x3E, 0x00, 0xF8, 0xF8, 0x01, 0xE3, + 0xC0, 0x07, 0xCF, 0x00, 0x1F, 0x7C, 0x00, 0x3D, 0xE0, 0x00, 0xFF, 0x80, + 0x03, 0xFE, 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xC0, 0x00, 0x7F, 0x00, 0x00, + 0xF8, 0x00, 0x03, 0xE0, 0x00, 0xF8, 0x07, 0xC0, 0x3F, 0xF8, 0x07, 0xE0, + 0x3E, 0xFC, 0x07, 0xE0, 0x3E, 0x7C, 0x0F, 0xE0, 0x3E, 0x7C, 0x0F, 0xE0, + 0x7E, 0x7C, 0x0F, 0xE0, 0x7C, 0x7C, 0x0F, 0xF0, 0x7C, 0x3E, 0x0F, 0xF0, + 0x7C, 0x3E, 0x1E, 0xF0, 0x78, 0x3E, 0x1E, 0x70, 0xF8, 0x1E, 0x1E, 0x70, + 0xF8, 0x1E, 0x1E, 0x78, 0xF8, 0x1F, 0x1E, 0x78, 0xF0, 0x1F, 0x3C, 0x78, + 0xF0, 0x0F, 0x3C, 0x39, 0xF0, 0x0F, 0x3C, 0x3D, 0xF0, 0x0F, 0x3C, 0x3D, + 0xE0, 0x0F, 0xBC, 0x3D, 0xE0, 0x07, 0xF8, 0x3D, 0xE0, 0x07, 0xF8, 0x1F, + 0xE0, 0x07, 0xF8, 0x1F, 0xC0, 0x03, 0xF8, 0x1F, 0xC0, 0x03, 0xF8, 0x1F, + 0xC0, 0x03, 0xF0, 0x0F, 0x80, 0x03, 0xF0, 0x0F, 0x80, 0x01, 0xF0, 0x0F, + 0x80, 0xFE, 0x01, 0xF9, 0xF8, 0x07, 0xE3, 0xF0, 0x3F, 0x0F, 0xC0, 0xF8, + 0x1F, 0x87, 0xE0, 0x7E, 0x3F, 0x00, 0xFC, 0xFC, 0x01, 0xF7, 0xE0, 0x07, + 0xFF, 0x00, 0x0F, 0xFC, 0x00, 0x3F, 0xE0, 0x00, 0x7F, 0x00, 0x00, 0xFC, + 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xE0, 0x00, 0xFF, 0x80, 0x03, 0xFF, 0x00, + 0x1F, 0x7E, 0x00, 0xFC, 0xF8, 0x03, 0xE3, 0xF0, 0x1F, 0x87, 0xC0, 0x7C, + 0x1F, 0x83, 0xF0, 0x3F, 0x1F, 0x80, 0xFC, 0x7E, 0x01, 0xFB, 0xF0, 0x07, + 0xF0, 0xFC, 0x01, 0xFF, 0xE0, 0x0F, 0x9F, 0x00, 0xFC, 0xFC, 0x07, 0xC3, + 0xE0, 0x7E, 0x1F, 0x83, 0xE0, 0x7C, 0x1F, 0x03, 0xF1, 0xF0, 0x0F, 0x8F, + 0x80, 0x7E, 0xF8, 0x01, 0xF7, 0xC0, 0x0F, 0xFC, 0x00, 0x3F, 0xE0, 0x00, + 0xFE, 0x00, 0x07, 0xF0, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, + 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x03, + 0xE0, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x7E, 0x00, 0x1F, + 0x80, 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x0F, 0xC0, 0x03, 0xF8, + 0x00, 0x7E, 0x00, 0x1F, 0x80, 0x07, 0xE0, 0x01, 0xFC, 0x00, 0x3F, 0x00, + 0x0F, 0xC0, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x1F, 0x80, 0x07, 0xE0, 0x01, + 0xFC, 0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, + 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, + 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, + 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x38, 0x06, + 0x01, 0x80, 0x70, 0x0C, 0x03, 0x00, 0xE0, 0x18, 0x06, 0x01, 0xC0, 0x30, + 0x0C, 0x03, 0x00, 0xE0, 0x18, 0x06, 0x01, 0xC0, 0x30, 0x0C, 0x03, 0x80, + 0x60, 0x18, 0x07, 0x01, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x1F, 0x1F, + 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, + 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0xFF, 0xFF, + 0xFF, 0xFF, 0x03, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x0F, 0xF0, 0x0F, 0xF0, + 0x0F, 0x78, 0x1E, 0x78, 0x1E, 0x78, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x1E, + 0x78, 0x1E, 0x78, 0x1E, 0x70, 0x0F, 0xF0, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFE, 0xF8, 0xF0, 0xF0, 0xE0, 0xE0, 0x07, 0xF8, 0x07, + 0xFF, 0x83, 0xFF, 0xF1, 0xFF, 0xFE, 0x7C, 0x1F, 0xBE, 0x03, 0xE0, 0x00, + 0xF8, 0x01, 0xFE, 0x0F, 0xFF, 0x8F, 0xFF, 0xE7, 0xF8, 0xFB, 0xF0, 0x3E, + 0xF8, 0x0F, 0xBE, 0x07, 0xEF, 0xC3, 0xFB, 0xFF, 0xFE, 0x7F, 0xFF, 0x8F, + 0xFB, 0xF1, 0xF8, 0xFC, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xE0, + 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xE7, 0xE0, 0xFB, 0xFC, + 0x3F, 0xFF, 0xCF, 0xFF, 0xF3, 0xF8, 0x7E, 0xFC, 0x0F, 0xBF, 0x03, 0xFF, + 0x80, 0x7F, 0xE0, 0x1F, 0xF8, 0x07, 0xFE, 0x01, 0xFF, 0x80, 0x7F, 0xF0, + 0x3F, 0xFC, 0x0F, 0xBF, 0x87, 0xEF, 0xFF, 0xF3, 0xFF, 0xFC, 0xFB, 0xFC, + 0x3E, 0x7E, 0x00, 0x03, 0xF0, 0x07, 0xFE, 0x0F, 0xFF, 0x87, 0xFF, 0xE7, + 0xE1, 0xFB, 0xE0, 0x7F, 0xE0, 0x3F, 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, + 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0xFB, 0xE0, 0x7D, 0xF8, 0x7E, 0x7F, + 0xFE, 0x3F, 0xFE, 0x0F, 0xFE, 0x00, 0xFC, 0x00, 0x00, 0x03, 0xE0, 0x00, + 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, + 0xF8, 0x1F, 0x1F, 0x0F, 0xFB, 0xE3, 0xFF, 0xFC, 0xFF, 0xFF, 0xBF, 0x8F, + 0xF7, 0xC0, 0x7F, 0xF8, 0x0F, 0xFE, 0x00, 0xFF, 0xC0, 0x1F, 0xF8, 0x03, + 0xFF, 0x00, 0x7F, 0xE0, 0x0F, 0xFE, 0x03, 0xF7, 0xC0, 0x7E, 0xFC, 0x3F, + 0xCF, 0xFF, 0xF8, 0xFF, 0xFF, 0x0F, 0xFB, 0xE0, 0xFC, 0x7C, 0x07, 0xE0, + 0x07, 0xFE, 0x03, 0xFF, 0xE0, 0xFF, 0xF8, 0x7E, 0x1F, 0x1F, 0x03, 0xCF, + 0x80, 0xFB, 0xE0, 0x1E, 0xFF, 0xFF, 0xBF, 0xFF, 0xEF, 0xFF, 0xFB, 0xE0, + 0x00, 0xF8, 0x00, 0x3F, 0x03, 0xE7, 0xE1, 0xF9, 0xFF, 0xFC, 0x3F, 0xFE, + 0x07, 0xFF, 0x00, 0x7F, 0x00, 0x0F, 0xC7, 0xF3, 0xFC, 0xFF, 0x3E, 0x0F, + 0x83, 0xE3, 0xFE, 0xFF, 0xBF, 0xE3, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, + 0xF8, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, + 0x0F, 0x80, 0x07, 0xC7, 0xC3, 0xFD, 0xF3, 0xFF, 0xFC, 0xFF, 0xFF, 0x7E, + 0x1F, 0xDF, 0x03, 0xFF, 0xC0, 0xFF, 0xE0, 0x1F, 0xF8, 0x07, 0xFE, 0x01, + 0xFF, 0x80, 0x7F, 0xE0, 0x1F, 0xFC, 0x0F, 0xDF, 0x03, 0xF7, 0xE1, 0xFD, + 0xFF, 0xFF, 0x3F, 0xFF, 0xC7, 0xFD, 0xF0, 0x7C, 0x7C, 0x00, 0x1F, 0x00, + 0x07, 0xFF, 0x03, 0xF7, 0xE1, 0xF9, 0xFF, 0xFC, 0x3F, 0xFE, 0x01, 0xFE, + 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, + 0xC0, 0x03, 0xE0, 0x01, 0xF1, 0xF0, 0xFB, 0xFE, 0x7F, 0xFF, 0xBF, 0xFF, + 0xDF, 0xC3, 0xFF, 0xC0, 0xFF, 0xC0, 0x7F, 0xE0, 0x3F, 0xF0, 0x1F, 0xF8, + 0x0F, 0xFC, 0x07, 0xFE, 0x03, 0xFF, 0x01, 0xFF, 0x80, 0xFF, 0xC0, 0x7F, + 0xE0, 0x3F, 0xF0, 0x1F, 0xF8, 0x0F, 0xFC, 0x07, 0xC0, 0xFF, 0xFF, 0xF0, + 0x00, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xC0, 0x3E, 0x7C, 0xF9, 0xF0, 0x00, 0x00, 0x1F, 0x3E, 0x7C, 0xF9, + 0xF3, 0xE7, 0xCF, 0x9F, 0x3E, 0x7C, 0xF9, 0xF3, 0xE7, 0xCF, 0x9F, 0x3E, + 0x7C, 0xF9, 0xF3, 0xFF, 0xFF, 0xFE, 0xF8, 0xF8, 0x00, 0x7C, 0x00, 0x3E, + 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x3E, + 0xF8, 0x3E, 0x7C, 0x3F, 0x3E, 0x3F, 0x1F, 0x3F, 0x0F, 0x9F, 0x07, 0xDF, + 0x03, 0xFF, 0x81, 0xFF, 0xC0, 0xFF, 0xF0, 0x7F, 0xF8, 0x3F, 0x7E, 0x1F, + 0x1F, 0x0F, 0x87, 0xC7, 0xC3, 0xF3, 0xE0, 0xF9, 0xF0, 0x7E, 0xF8, 0x1F, + 0x7C, 0x0F, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xF8, 0xF8, 0x3F, 0x1F, + 0x7F, 0x9F, 0xF3, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xC3, 0xF8, + 0x7F, 0xF8, 0x3F, 0x07, 0xFE, 0x07, 0xC0, 0xFF, 0xC0, 0xF8, 0x1F, 0xF8, + 0x1F, 0x03, 0xFF, 0x03, 0xE0, 0x7F, 0xE0, 0x7C, 0x0F, 0xFC, 0x0F, 0x81, + 0xFF, 0x81, 0xF0, 0x3F, 0xF0, 0x3E, 0x07, 0xFE, 0x07, 0xC0, 0xFF, 0xC0, + 0xF8, 0x1F, 0xF8, 0x1F, 0x03, 0xFF, 0x03, 0xE0, 0x7F, 0xE0, 0x7C, 0x0F, + 0x80, 0xF8, 0xF8, 0x7D, 0xFF, 0x3F, 0xFF, 0xDF, 0xFF, 0xEF, 0xE1, 0xFF, + 0xE0, 0x7F, 0xE0, 0x3F, 0xF0, 0x1F, 0xF8, 0x0F, 0xFC, 0x07, 0xFE, 0x03, + 0xFF, 0x01, 0xFF, 0x80, 0xFF, 0xC0, 0x7F, 0xE0, 0x3F, 0xF0, 0x1F, 0xF8, + 0x0F, 0xFC, 0x07, 0xFE, 0x03, 0xE0, 0x03, 0xF8, 0x01, 0xFF, 0xC0, 0x7F, + 0xFC, 0x1F, 0xFF, 0xC7, 0xF0, 0xFC, 0xF8, 0x0F, 0xBF, 0x01, 0xFF, 0xC0, + 0x1F, 0xF8, 0x03, 0xFF, 0x00, 0x7F, 0xE0, 0x0F, 0xFC, 0x01, 0xFF, 0xC0, + 0x7E, 0xF8, 0x0F, 0x9F, 0x87, 0xF1, 0xFF, 0xFC, 0x1F, 0xFF, 0x01, 0xFF, + 0xC0, 0x0F, 0xE0, 0x00, 0xF8, 0xF8, 0x3E, 0xFF, 0x8F, 0xFF, 0xF3, 0xFF, + 0xFC, 0xFE, 0x1F, 0xBF, 0x03, 0xEF, 0xC0, 0xFF, 0xE0, 0x1F, 0xF8, 0x07, + 0xFE, 0x01, 0xFF, 0x80, 0x7F, 0xE0, 0x1F, 0xFC, 0x0F, 0xFF, 0x03, 0xEF, + 0xE1, 0xFB, 0xFF, 0xFC, 0xFF, 0xFF, 0x3E, 0xFF, 0x0F, 0x8F, 0x83, 0xE0, + 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF8, 0x00, + 0x3E, 0x00, 0x00, 0x07, 0xE3, 0xE1, 0xFF, 0x7C, 0x7F, 0xFF, 0x9F, 0xFF, + 0xF7, 0xF1, 0xFE, 0xF8, 0x0F, 0xFF, 0x01, 0xFF, 0xC0, 0x1F, 0xF8, 0x03, + 0xFF, 0x00, 0x7F, 0xE0, 0x0F, 0xFC, 0x01, 0xFF, 0xC0, 0x7E, 0xF8, 0x0F, + 0xDF, 0x83, 0xF9, 0xFF, 0xFF, 0x3F, 0xFF, 0xE1, 0xFF, 0x7C, 0x1F, 0x8F, + 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x1F, + 0x00, 0x03, 0xE0, 0x00, 0x7C, 0xF8, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xE1, + 0xF8, 0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, + 0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x00, 0x07, 0xF0, 0x0F, 0xFE, + 0x0F, 0xFF, 0x87, 0xFF, 0xE7, 0xE1, 0xF3, 0xE0, 0x79, 0xF8, 0x00, 0xFF, + 0x80, 0x3F, 0xFC, 0x1F, 0xFF, 0x83, 0xFF, 0xC0, 0x3F, 0xF0, 0x01, 0xFF, + 0xC0, 0x7D, 0xF0, 0x7E, 0xFF, 0xFE, 0x3F, 0xFF, 0x0F, 0xFF, 0x01, 0xFE, + 0x00, 0x3E, 0x1F, 0x0F, 0x87, 0xC3, 0xE7, 0xFF, 0xFF, 0xFF, 0x3E, 0x1F, + 0x0F, 0x87, 0xC3, 0xE1, 0xF0, 0xF8, 0x7C, 0x3E, 0x1F, 0x0F, 0x87, 0xF3, + 0xF8, 0xFC, 0x3E, 0xF8, 0x0F, 0xFC, 0x07, 0xFE, 0x03, 0xFF, 0x01, 0xFF, + 0x80, 0xFF, 0xC0, 0x7F, 0xE0, 0x3F, 0xF0, 0x1F, 0xF8, 0x0F, 0xFC, 0x07, + 0xFE, 0x03, 0xFF, 0x01, 0xFF, 0x80, 0xFF, 0xC0, 0xFF, 0xF0, 0xFF, 0xFF, + 0xFF, 0x7F, 0xFF, 0x9F, 0xF7, 0xC7, 0xE3, 0xE0, 0x7C, 0x07, 0xCF, 0x80, + 0xF9, 0xF0, 0x1F, 0x1F, 0x07, 0xC3, 0xE0, 0xF8, 0x7C, 0x1F, 0x07, 0x83, + 0xC0, 0xF8, 0xF8, 0x1F, 0x1F, 0x01, 0xE3, 0xC0, 0x3E, 0x78, 0x07, 0xDF, + 0x00, 0x7B, 0xC0, 0x0F, 0xF8, 0x01, 0xFF, 0x00, 0x1F, 0xC0, 0x03, 0xF8, + 0x00, 0x7F, 0x00, 0x07, 0xC0, 0x00, 0xFC, 0x1F, 0x03, 0xEF, 0x83, 0xE0, + 0x7D, 0xF0, 0x7E, 0x1F, 0x3E, 0x0F, 0xC3, 0xE3, 0xC3, 0xF8, 0x7C, 0x7C, + 0x7F, 0x0F, 0x0F, 0x8F, 0xF3, 0xE1, 0xF1, 0xDE, 0x7C, 0x1E, 0x7B, 0xCF, + 0x83, 0xEF, 0x39, 0xE0, 0x7D, 0xE7, 0x3C, 0x07, 0xB8, 0xFF, 0x80, 0xF7, + 0x1F, 0xE0, 0x1F, 0xE3, 0xFC, 0x03, 0xFC, 0x3F, 0x80, 0x3F, 0x07, 0xF0, + 0x07, 0xE0, 0xFC, 0x00, 0xFC, 0x1F, 0x80, 0x0F, 0x83, 0xF0, 0x00, 0xFC, + 0x1F, 0x9F, 0x07, 0xE7, 0xE3, 0xF0, 0xF8, 0xF8, 0x1F, 0x7E, 0x07, 0xDF, + 0x00, 0xFF, 0x80, 0x1F, 0xE0, 0x07, 0xF0, 0x00, 0xF8, 0x00, 0x7F, 0x00, + 0x3F, 0xE0, 0x0F, 0xF8, 0x07, 0xDF, 0x03, 0xF7, 0xE0, 0xF8, 0xF8, 0x7E, + 0x3F, 0x1F, 0x07, 0xEF, 0xC0, 0xF8, 0x7C, 0x03, 0xEF, 0x80, 0xF9, 0xF8, + 0x1F, 0x1F, 0x03, 0xE3, 0xE0, 0xF8, 0x7C, 0x1F, 0x07, 0xC3, 0xE0, 0xF8, + 0x78, 0x0F, 0x1F, 0x01, 0xF3, 0xC0, 0x3E, 0x78, 0x03, 0xDF, 0x00, 0x7F, + 0xC0, 0x0F, 0xF8, 0x00, 0xFF, 0x00, 0x1F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, + 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x1E, 0x00, 0x07, 0xC0, 0x07, 0xF8, + 0x00, 0xFE, 0x00, 0x1F, 0x80, 0x03, 0xE0, 0x00, 0x7F, 0xFE, 0x7F, 0xFE, + 0x7F, 0xFE, 0x7F, 0xFE, 0x00, 0x7E, 0x00, 0xFC, 0x01, 0xF8, 0x03, 0xF0, + 0x03, 0xF0, 0x07, 0xE0, 0x0F, 0xC0, 0x1F, 0x80, 0x3F, 0x00, 0x7E, 0x00, + 0xFE, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x87, + 0xC7, 0xE3, 0xF1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, 0xC1, + 0xE0, 0xF0, 0xF9, 0xF8, 0xF0, 0x7E, 0x0F, 0x83, 0xC1, 0xE0, 0xF0, 0x78, + 0x3C, 0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xFC, 0x7E, 0x1F, 0x07, 0x80, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xE0, 0xF0, 0x7C, 0x3E, 0x1F, 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, + 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x7C, 0x1F, 0x83, 0xC7, 0xE7, 0xC3, + 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, 0xC7, 0xE3, 0xE1, + 0xF0, 0xF0, 0x00, 0x3C, 0x00, 0xFE, 0x0F, 0xFE, 0x1E, 0x1F, 0xFC, 0x0F, + 0xC0, 0x0F, 0x00}; + +const GFXglyph FreeSansBold18pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 10, 0, 1}, // 0x20 ' ' + {0, 5, 25, 12, 4, -24}, // 0x21 '!' + {16, 13, 9, 17, 2, -25}, // 0x22 '"' + {31, 20, 24, 19, 0, -23}, // 0x23 '#' + {91, 19, 29, 19, 0, -25}, // 0x24 '$' + {160, 29, 25, 31, 1, -24}, // 0x25 '%' + {251, 22, 25, 25, 2, -24}, // 0x26 '&' + {320, 5, 9, 9, 2, -25}, // 0x27 ''' + {326, 9, 33, 12, 1, -25}, // 0x28 '(' + {364, 9, 33, 12, 1, -25}, // 0x29 ')' + {402, 12, 11, 14, 0, -25}, // 0x2A '*' + {419, 16, 16, 20, 2, -15}, // 0x2B '+' + {451, 5, 11, 9, 2, -4}, // 0x2C ',' + {458, 9, 4, 12, 1, -10}, // 0x2D '-' + {463, 5, 5, 9, 2, -4}, // 0x2E '.' + {467, 9, 25, 10, 0, -24}, // 0x2F '/' + {496, 17, 25, 19, 1, -24}, // 0x30 '0' + {550, 10, 25, 19, 3, -24}, // 0x31 '1' + {582, 17, 25, 19, 1, -24}, // 0x32 '2' + {636, 17, 25, 19, 1, -24}, // 0x33 '3' + {690, 16, 25, 19, 2, -24}, // 0x34 '4' + {740, 17, 25, 19, 1, -24}, // 0x35 '5' + {794, 18, 25, 19, 1, -24}, // 0x36 '6' + {851, 17, 25, 19, 1, -24}, // 0x37 '7' + {905, 17, 25, 19, 1, -24}, // 0x38 '8' + {959, 17, 25, 19, 1, -24}, // 0x39 '9' + {1013, 5, 18, 9, 2, -17}, // 0x3A ':' + {1025, 5, 24, 9, 2, -17}, // 0x3B ';' + {1040, 18, 17, 20, 1, -16}, // 0x3C '<' + {1079, 17, 12, 20, 2, -13}, // 0x3D '=' + {1105, 18, 17, 20, 1, -16}, // 0x3E '>' + {1144, 18, 26, 21, 2, -25}, // 0x3F '?' + {1203, 32, 31, 34, 1, -25}, // 0x40 '@' + {1327, 24, 26, 24, 0, -25}, // 0x41 'A' + {1405, 20, 26, 25, 3, -25}, // 0x42 'B' + {1470, 23, 26, 25, 1, -25}, // 0x43 'C' + {1545, 21, 26, 25, 3, -25}, // 0x44 'D' + {1614, 19, 26, 23, 3, -25}, // 0x45 'E' + {1676, 17, 26, 22, 3, -25}, // 0x46 'F' + {1732, 24, 26, 27, 1, -25}, // 0x47 'G' + {1810, 20, 26, 26, 3, -25}, // 0x48 'H' + {1875, 5, 26, 11, 3, -25}, // 0x49 'I' + {1892, 16, 26, 20, 1, -25}, // 0x4A 'J' + {1944, 22, 26, 25, 3, -25}, // 0x4B 'K' + {2016, 17, 26, 22, 3, -25}, // 0x4C 'L' + {2072, 24, 26, 30, 3, -25}, // 0x4D 'M' + {2150, 20, 26, 26, 3, -25}, // 0x4E 'N' + {2215, 25, 26, 27, 1, -25}, // 0x4F 'O' + {2297, 19, 26, 24, 3, -25}, // 0x50 'P' + {2359, 25, 27, 27, 1, -25}, // 0x51 'Q' + {2444, 21, 26, 25, 3, -25}, // 0x52 'R' + {2513, 20, 26, 24, 2, -25}, // 0x53 'S' + {2578, 19, 26, 23, 2, -25}, // 0x54 'T' + {2640, 20, 26, 26, 3, -25}, // 0x55 'U' + {2705, 22, 26, 23, 1, -25}, // 0x56 'V' + {2777, 32, 26, 34, 1, -25}, // 0x57 'W' + {2881, 22, 26, 24, 1, -25}, // 0x58 'X' + {2953, 21, 26, 22, 1, -25}, // 0x59 'Y' + {3022, 19, 26, 21, 1, -25}, // 0x5A 'Z' + {3084, 8, 33, 12, 2, -25}, // 0x5B '[' + {3117, 10, 25, 10, 0, -24}, // 0x5C '\' + {3149, 8, 33, 12, 1, -25}, // 0x5D ']' + {3182, 16, 15, 20, 2, -23}, // 0x5E '^' + {3212, 21, 3, 19, -1, 5}, // 0x5F '_' + {3220, 7, 5, 9, 1, -25}, // 0x60 '`' + {3225, 18, 19, 20, 1, -18}, // 0x61 'a' + {3268, 18, 26, 22, 2, -25}, // 0x62 'b' + {3327, 17, 19, 20, 1, -18}, // 0x63 'c' + {3368, 19, 26, 22, 1, -25}, // 0x64 'd' + {3430, 18, 19, 20, 1, -18}, // 0x65 'e' + {3473, 10, 26, 12, 1, -25}, // 0x66 'f' + {3506, 18, 26, 21, 1, -18}, // 0x67 'g' + {3565, 17, 26, 21, 2, -25}, // 0x68 'h' + {3621, 5, 26, 10, 2, -25}, // 0x69 'i' + {3638, 7, 33, 10, 0, -25}, // 0x6A 'j' + {3667, 17, 26, 20, 2, -25}, // 0x6B 'k' + {3723, 5, 26, 9, 2, -25}, // 0x6C 'l' + {3740, 27, 19, 31, 2, -18}, // 0x6D 'm' + {3805, 17, 19, 21, 2, -18}, // 0x6E 'n' + {3846, 19, 19, 21, 1, -18}, // 0x6F 'o' + {3892, 18, 26, 22, 2, -18}, // 0x70 'p' + {3951, 19, 26, 22, 1, -18}, // 0x71 'q' + {4013, 11, 19, 14, 2, -18}, // 0x72 'r' + {4040, 17, 19, 19, 1, -18}, // 0x73 's' + {4081, 9, 23, 12, 1, -22}, // 0x74 't' + {4107, 17, 19, 21, 2, -18}, // 0x75 'u' + {4148, 19, 19, 19, 0, -18}, // 0x76 'v' + {4194, 27, 19, 27, 0, -18}, // 0x77 'w' + {4259, 18, 19, 19, 1, -18}, // 0x78 'x' + {4302, 19, 26, 19, 0, -18}, // 0x79 'y' + {4364, 16, 19, 18, 1, -18}, // 0x7A 'z' + {4402, 9, 33, 14, 1, -25}, // 0x7B '{' + {4440, 3, 33, 10, 4, -25}, // 0x7C '|' + {4453, 9, 33, 14, 3, -25}, // 0x7D '}' + {4491, 15, 6, 18, 1, -10}}; // 0x7E '~' + +const GFXfont FreeSansBold18pt7b PROGMEM = { + (uint8_t *)FreeSansBold18pt7bBitmaps, (GFXglyph *)FreeSansBold18pt7bGlyphs, + 0x20, 0x7E, 42}; + +// Approx. 5175 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBold24pt7b.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBold24pt7b.h new file mode 100644 index 0000000..5dd7a54 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBold24pt7b.h @@ -0,0 +1,786 @@ +#pragma once +#include + +const uint8_t FreeSansBold24pt7bBitmaps[] PROGMEM = { + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xDF, 0x3E, 0x7C, 0xF9, 0xF3, 0xE7, 0xC7, 0x0E, 0x1C, 0x00, 0x00, 0x07, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFE, 0x1F, 0xFF, 0x87, 0xFF, 0xE1, + 0xFF, 0xF8, 0x7F, 0xFE, 0x1F, 0xFF, 0x87, 0xFF, 0xE1, 0xFD, 0xF0, 0x3E, + 0x7C, 0x0F, 0x9F, 0x03, 0xE3, 0x80, 0x70, 0xE0, 0x1C, 0x00, 0xF8, 0x3E, + 0x00, 0x3E, 0x0F, 0x80, 0x0F, 0x83, 0xE0, 0x03, 0xE0, 0xF8, 0x00, 0xF8, + 0x7C, 0x00, 0x7C, 0x1F, 0x00, 0x1F, 0x07, 0xC1, 0xFF, 0xFF, 0xFF, 0x7F, + 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, + 0x03, 0xE0, 0xF8, 0x00, 0xF8, 0x3E, 0x00, 0x3E, 0x1F, 0x00, 0x1F, 0x07, + 0xC0, 0x07, 0xC1, 0xF0, 0x01, 0xF0, 0x7C, 0x00, 0x7C, 0x1F, 0x03, 0xFF, + 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xF3, + 0xFF, 0xFF, 0xFC, 0x0F, 0x87, 0xC0, 0x07, 0xC1, 0xF0, 0x01, 0xF0, 0x7C, + 0x00, 0x7C, 0x1F, 0x00, 0x1F, 0x07, 0xC0, 0x07, 0xC3, 0xE0, 0x03, 0xE0, + 0xF8, 0x00, 0xF8, 0x3E, 0x00, 0x3E, 0x0F, 0x80, 0x00, 0x00, 0x38, 0x00, + 0x00, 0x1C, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0xFF, 0xFC, 0x00, 0xFF, 0xFF, + 0x80, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xF8, 0x7F, 0x73, 0xFE, 0x7F, 0x38, + 0xFF, 0x3F, 0x1C, 0x3F, 0xDF, 0x8E, 0x0F, 0xEF, 0xC7, 0x07, 0xF7, 0xE3, + 0x80, 0x03, 0xF9, 0xC0, 0x01, 0xFE, 0xE0, 0x00, 0x7F, 0xF0, 0x00, 0x3F, + 0xFC, 0x00, 0x0F, 0xFF, 0xC0, 0x03, 0xFF, 0xFC, 0x00, 0x7F, 0xFF, 0x80, + 0x0F, 0xFF, 0xE0, 0x01, 0xFF, 0xF8, 0x00, 0xE7, 0xFC, 0x00, 0x71, 0xFF, + 0x00, 0x38, 0x7F, 0xFF, 0x1C, 0x1F, 0xFF, 0x8E, 0x0F, 0xFF, 0xC7, 0x07, + 0xFF, 0xE3, 0x87, 0xFB, 0xF9, 0xC3, 0xF9, 0xFE, 0xE7, 0xFC, 0x7F, 0xFF, + 0xFC, 0x3F, 0xFF, 0xFC, 0x0F, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, 0x00, 0x3F, + 0xE0, 0x00, 0x03, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x00, 0xE0, 0x00, 0x00, + 0x70, 0x00, 0x03, 0xE0, 0x00, 0x3C, 0x00, 0x1F, 0xF0, 0x00, 0x78, 0x00, + 0x7F, 0xF8, 0x01, 0xE0, 0x01, 0xFF, 0xF0, 0x03, 0xC0, 0x07, 0xFF, 0xF0, + 0x0F, 0x00, 0x0F, 0x83, 0xE0, 0x1E, 0x00, 0x3E, 0x03, 0xE0, 0x78, 0x00, + 0x78, 0x03, 0xC0, 0xF0, 0x00, 0xF0, 0x07, 0x83, 0xC0, 0x01, 0xE0, 0x0F, + 0x07, 0x80, 0x03, 0xE0, 0x3E, 0x1E, 0x00, 0x03, 0xE0, 0xF8, 0x3C, 0x00, + 0x07, 0xFF, 0xF0, 0xF0, 0x00, 0x07, 0xFF, 0xC1, 0xE0, 0x00, 0x07, 0xFF, + 0x07, 0x80, 0x00, 0x07, 0xFC, 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x3C, 0x00, + 0x00, 0x00, 0x00, 0xF0, 0x1F, 0x00, 0x00, 0x01, 0xE0, 0xFF, 0x80, 0x00, + 0x07, 0x87, 0xFF, 0xC0, 0x00, 0x0F, 0x0F, 0xFF, 0x80, 0x00, 0x3C, 0x3F, + 0xFF, 0x80, 0x00, 0x78, 0xFC, 0x1F, 0x00, 0x01, 0xE1, 0xF0, 0x1F, 0x00, + 0x03, 0xC3, 0xC0, 0x1E, 0x00, 0x0F, 0x07, 0x80, 0x3C, 0x00, 0x1E, 0x0F, + 0x00, 0x78, 0x00, 0x78, 0x1F, 0x01, 0xF0, 0x00, 0xF0, 0x1F, 0x07, 0xC0, + 0x03, 0xC0, 0x3F, 0xFF, 0x80, 0x07, 0x80, 0x3F, 0xFE, 0x00, 0x1E, 0x00, + 0x7F, 0xF8, 0x00, 0x7C, 0x00, 0x3F, 0xE0, 0x00, 0xF0, 0x00, 0x1F, 0x00, + 0x00, 0x3F, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, + 0xFF, 0xF8, 0x00, 0x07, 0xFF, 0xF0, 0x00, 0x3F, 0xCF, 0xC0, 0x00, 0xFE, + 0x1F, 0x00, 0x03, 0xF8, 0x7C, 0x00, 0x0F, 0xE1, 0xF0, 0x00, 0x3F, 0xC7, + 0xC0, 0x00, 0x7F, 0x3E, 0x00, 0x01, 0xFF, 0xF8, 0x00, 0x03, 0xFF, 0xC0, + 0x00, 0x07, 0xFE, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x7F, 0x80, 0x00, + 0x07, 0xFF, 0x03, 0xE0, 0x3F, 0xFE, 0x0F, 0x83, 0xFF, 0xF8, 0x3E, 0x1F, + 0xF3, 0xF1, 0xF8, 0x7F, 0x07, 0xE7, 0xE3, 0xFC, 0x1F, 0xFF, 0x0F, 0xE0, + 0x3F, 0xFC, 0x3F, 0x80, 0x7F, 0xF0, 0xFE, 0x01, 0xFF, 0x83, 0xF8, 0x03, + 0xFE, 0x0F, 0xF0, 0x0F, 0xF0, 0x3F, 0xE0, 0x7F, 0xE0, 0x7F, 0xC3, 0xFF, + 0xC1, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xFE, 0x07, 0xFF, 0xFB, 0xFC, + 0x0F, 0xFF, 0xC7, 0xF8, 0x1F, 0xFE, 0x0F, 0xE0, 0x0F, 0xE0, 0x00, 0x00, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBE, 0x7C, 0xF8, 0xE1, 0xC0, 0x00, + 0xF0, 0x0F, 0x80, 0xF8, 0x07, 0xC0, 0x7C, 0x07, 0xE0, 0x3E, 0x03, 0xF0, + 0x1F, 0x80, 0xF8, 0x0F, 0xC0, 0x7E, 0x07, 0xE0, 0x3F, 0x01, 0xF8, 0x0F, + 0xC0, 0xFC, 0x07, 0xE0, 0x3F, 0x01, 0xF8, 0x0F, 0xC0, 0x7E, 0x03, 0xF0, + 0x1F, 0x80, 0xFC, 0x07, 0xE0, 0x3F, 0x00, 0xF8, 0x07, 0xE0, 0x3F, 0x01, + 0xF8, 0x07, 0xC0, 0x3F, 0x01, 0xF8, 0x07, 0xC0, 0x3F, 0x00, 0xF8, 0x07, + 0xE0, 0x1F, 0x00, 0xF8, 0x03, 0xE0, 0x1F, 0x00, 0x7C, 0x01, 0xE0, 0x78, + 0x03, 0xE0, 0x0F, 0x80, 0x7C, 0x01, 0xF0, 0x0F, 0x80, 0x3E, 0x01, 0xF0, + 0x0F, 0xC0, 0x3E, 0x01, 0xF8, 0x0F, 0xC0, 0x3F, 0x01, 0xF8, 0x0F, 0xC0, + 0x7E, 0x01, 0xF8, 0x0F, 0xC0, 0x7E, 0x03, 0xF0, 0x1F, 0x80, 0xFC, 0x07, + 0xE0, 0x3F, 0x01, 0xF8, 0x0F, 0xC0, 0x7E, 0x03, 0xE0, 0x3F, 0x01, 0xF8, + 0x0F, 0xC0, 0x7C, 0x07, 0xE0, 0x3F, 0x01, 0xF0, 0x1F, 0x80, 0xF8, 0x0F, + 0xC0, 0x7C, 0x07, 0xE0, 0x3E, 0x03, 0xF0, 0x1F, 0x01, 0xF0, 0x00, 0x03, + 0x80, 0x07, 0x00, 0x0E, 0x00, 0x1C, 0x06, 0x38, 0xDF, 0xFF, 0xFF, 0xFF, + 0x9F, 0xFE, 0x07, 0xC0, 0x1F, 0xC0, 0x3F, 0x80, 0xF7, 0x83, 0xC7, 0x87, + 0x8F, 0x02, 0x08, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, + 0x00, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x00, + 0x00, 0x3E, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x1F, 0x00, 0x00, + 0x3E, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x03, + 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x87, 0x0E, 0x1C, 0x78, 0xEF, 0xDF, 0x38, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x80, 0x00, 0x38, 0x03, 0xC0, 0x1C, 0x00, 0xE0, 0x07, 0x00, + 0x70, 0x03, 0x80, 0x1C, 0x01, 0xE0, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x38, + 0x01, 0xC0, 0x0E, 0x00, 0xF0, 0x07, 0x00, 0x38, 0x03, 0xC0, 0x1C, 0x00, + 0xE0, 0x07, 0x00, 0x70, 0x03, 0x80, 0x1C, 0x01, 0xE0, 0x0E, 0x00, 0x70, + 0x03, 0x80, 0x38, 0x01, 0xC0, 0x0E, 0x00, 0xF0, 0x07, 0x00, 0x00, 0x00, + 0xFF, 0x00, 0x03, 0xFF, 0xC0, 0x0F, 0xFF, 0xF0, 0x1F, 0xFF, 0xF8, 0x1F, + 0xFF, 0xF8, 0x3F, 0xFF, 0xFC, 0x3F, 0xC3, 0xFC, 0x7F, 0x81, 0xFE, 0x7F, + 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0xFE, 0x00, 0x7F, 0xFE, + 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, + 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, + 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0x7F, + 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0x7F, 0x81, 0xFE, 0x3F, + 0xC3, 0xFC, 0x3F, 0xFF, 0xFC, 0x1F, 0xFF, 0xF8, 0x1F, 0xFF, 0xF8, 0x0F, + 0xFF, 0xF0, 0x03, 0xFF, 0xC0, 0x00, 0xFF, 0x00, 0x00, 0x3C, 0x01, 0xF0, + 0x07, 0xC0, 0x3F, 0x01, 0xFC, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, + 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, + 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, + 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x01, 0xFE, 0x00, 0x0F, 0xFF, 0x80, + 0x3F, 0xFF, 0x80, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0x8F, 0xFF, 0xFF, 0x9F, + 0xE0, 0xFF, 0x7F, 0x80, 0xFF, 0xFE, 0x01, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, + 0x03, 0xFF, 0xF0, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, + 0x7F, 0x80, 0x00, 0xFE, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x7F, + 0xC0, 0x01, 0xFF, 0x00, 0x07, 0xF8, 0x00, 0x3F, 0xE0, 0x00, 0xFF, 0x00, + 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0x7F, 0x00, 0x01, + 0xFC, 0x00, 0x03, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xBF, + 0xFF, 0xFF, 0x7F, 0xFF, 0xFE, 0xFF, 0xFF, 0xFC, 0x01, 0xFE, 0x00, 0x0F, + 0xFF, 0x80, 0x7F, 0xFF, 0x81, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0x8F, 0xFF, + 0xFF, 0x1F, 0xE1, 0xFF, 0x7F, 0x81, 0xFE, 0xFE, 0x01, 0xFD, 0xFC, 0x03, + 0xFB, 0xF8, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0x7F, + 0x00, 0x01, 0xFC, 0x00, 0x1F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0x7F, 0xC0, + 0x00, 0xFF, 0xE0, 0x00, 0x3F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0x3F, 0xC0, + 0x00, 0x3F, 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, + 0x07, 0xFF, 0xF8, 0x0F, 0xF7, 0xF8, 0x3F, 0xCF, 0xFF, 0xFF, 0x9F, 0xFF, + 0xFE, 0x1F, 0xFF, 0xF8, 0x1F, 0xFF, 0xE0, 0x0F, 0xFF, 0x80, 0x07, 0xF8, + 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x80, 0x03, 0xFE, 0x00, 0x0F, 0xF8, + 0x00, 0x7F, 0xE0, 0x03, 0xFF, 0x80, 0x0F, 0xFE, 0x00, 0x7B, 0xF8, 0x01, + 0xEF, 0xE0, 0x0F, 0x3F, 0x80, 0x78, 0xFE, 0x01, 0xE3, 0xF8, 0x0F, 0x0F, + 0xE0, 0x38, 0x3F, 0x81, 0xE0, 0xFE, 0x07, 0x03, 0xF8, 0x3C, 0x0F, 0xE1, + 0xE0, 0x3F, 0x87, 0x00, 0xFE, 0x3C, 0x03, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF0, 0x00, 0xFE, 0x00, 0x03, 0xF8, 0x00, 0x0F, 0xE0, 0x00, 0x3F, 0x80, + 0x00, 0xFE, 0x00, 0x03, 0xF8, 0x00, 0x0F, 0xE0, 0x1F, 0xFF, 0xFC, 0x3F, + 0xFF, 0xF8, 0x7F, 0xFF, 0xF0, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0xC7, 0xFF, + 0xFF, 0x8F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x78, 0x00, + 0x01, 0xF1, 0xF8, 0x03, 0xEF, 0xFE, 0x07, 0xFF, 0xFE, 0x0F, 0xFF, 0xFE, + 0x1F, 0xFF, 0xFE, 0x7F, 0xFF, 0xFC, 0xFE, 0x07, 0xFC, 0x00, 0x07, 0xF8, + 0x00, 0x07, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, + 0x00, 0x3F, 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0xF8, 0x03, 0xFF, 0xF8, + 0x0F, 0xF7, 0xF8, 0x3F, 0xEF, 0xFF, 0xFF, 0x8F, 0xFF, 0xFF, 0x0F, 0xFF, + 0xFC, 0x0F, 0xFF, 0xE0, 0x0F, 0xFF, 0x80, 0x03, 0xF8, 0x00, 0x00, 0xFF, + 0x00, 0x07, 0xFF, 0x80, 0x1F, 0xFF, 0xC0, 0x7F, 0xFF, 0x81, 0xFF, 0xFF, + 0x87, 0xFF, 0xFF, 0x8F, 0xF0, 0xFF, 0x3F, 0xC0, 0xFE, 0x7F, 0x00, 0x00, + 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE3, 0xF0, 0x1F, + 0xDF, 0xF8, 0x3F, 0xFF, 0xFC, 0x7F, 0xFF, 0xFC, 0xFF, 0xFF, 0xF9, 0xFF, + 0x87, 0xFB, 0xFC, 0x07, 0xF7, 0xF8, 0x0F, 0xFF, 0xE0, 0x0F, 0xFF, 0xC0, + 0x1F, 0xFF, 0x80, 0x3F, 0xFF, 0x00, 0x7F, 0x7E, 0x00, 0xFE, 0xFC, 0x01, + 0xFD, 0xFC, 0x07, 0xFB, 0xF8, 0x0F, 0xE3, 0xFC, 0x7F, 0xC7, 0xFF, 0xFF, + 0x07, 0xFF, 0xFE, 0x0F, 0xFF, 0xF8, 0x0F, 0xFF, 0xE0, 0x07, 0xFF, 0x80, + 0x03, 0xF8, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x3F, 0x00, + 0x00, 0xFC, 0x00, 0x03, 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x1F, 0x80, 0x00, + 0x7F, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x1F, + 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xF8, 0x00, 0x07, 0xF0, + 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFC, 0x00, + 0x01, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, + 0x3F, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x03, 0xF8, 0x00, 0x07, + 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x03, 0xFF, 0xC0, 0x0F, 0xFF, 0xE0, 0x1F, + 0xFF, 0xF0, 0x3F, 0xFF, 0xF8, 0x3F, 0xFF, 0xF8, 0x7F, 0x83, 0xFC, 0x7F, + 0x00, 0xFC, 0x7E, 0x00, 0xFC, 0x7E, 0x00, 0x7C, 0x7E, 0x00, 0x7C, 0x7E, + 0x00, 0xFC, 0x3F, 0x00, 0xF8, 0x3F, 0x83, 0xF8, 0x0F, 0xFF, 0xF0, 0x07, + 0xFF, 0xC0, 0x0F, 0xFF, 0xF0, 0x1F, 0xFF, 0xF8, 0x3F, 0xC3, 0xFC, 0x7F, + 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, + 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFF, 0x00, 0xFF, 0xFF, + 0x00, 0xFE, 0x7F, 0x83, 0xFE, 0x7F, 0xFF, 0xFE, 0x3F, 0xFF, 0xFC, 0x1F, + 0xFF, 0xF8, 0x0F, 0xFF, 0xF0, 0x07, 0xFF, 0xC0, 0x00, 0xFF, 0x00, 0x00, + 0xFF, 0x00, 0x03, 0xFF, 0xC0, 0x0F, 0xFF, 0xE0, 0x1F, 0xFF, 0xF0, 0x3F, + 0xFF, 0xF8, 0x3F, 0xFF, 0xFC, 0x7F, 0xC3, 0xFC, 0x7F, 0x01, 0xFE, 0xFF, + 0x00, 0xFE, 0xFE, 0x00, 0x7E, 0xFE, 0x00, 0x7E, 0xFE, 0x00, 0x7F, 0xFE, + 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFF, 0x00, 0xFF, 0x7F, + 0x01, 0xFF, 0x7F, 0xC3, 0xFF, 0x7F, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0x1F, + 0xFF, 0xFF, 0x0F, 0xFF, 0x7F, 0x07, 0xFE, 0x7F, 0x01, 0xFC, 0x7E, 0x00, + 0x00, 0x7E, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x7F, 0x01, 0xFC, 0x7F, + 0x83, 0xFC, 0x7F, 0xFF, 0xF8, 0x3F, 0xFF, 0xF8, 0x3F, 0xFF, 0xF0, 0x1F, + 0xFF, 0xE0, 0x07, 0xFF, 0x80, 0x01, 0xFE, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFE, 0x1C, 0x38, 0x71, 0xE7, 0xBF, 0x7C, 0xE0, 0x00, + 0x00, 0x02, 0x00, 0x00, 0x3C, 0x00, 0x01, 0xF8, 0x00, 0x1F, 0xF0, 0x01, + 0xFF, 0xE0, 0x0F, 0xFF, 0xC0, 0xFF, 0xFC, 0x0F, 0xFF, 0xC0, 0x7F, 0xFC, + 0x01, 0xFF, 0xC0, 0x03, 0xFC, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0xE0, 0x00, + 0x1F, 0xF8, 0x00, 0x3F, 0xFE, 0x00, 0x0F, 0xFF, 0x80, 0x07, 0xFF, 0xE0, + 0x01, 0xFF, 0xF8, 0x00, 0x7F, 0xF8, 0x00, 0x3F, 0xF0, 0x00, 0x0F, 0xE0, + 0x00, 0x03, 0xC0, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x80, 0x00, + 0x01, 0xC0, 0x00, 0x03, 0xF0, 0x00, 0x07, 0xFC, 0x00, 0x0F, 0xFE, 0x00, + 0x1F, 0xFF, 0x80, 0x07, 0xFF, 0xE0, 0x01, 0xFF, 0xF0, 0x00, 0x7F, 0xFC, + 0x00, 0x1F, 0xFC, 0x00, 0x07, 0xF8, 0x00, 0x03, 0xF0, 0x00, 0x1F, 0xE0, + 0x01, 0xFF, 0xC0, 0x0F, 0xFF, 0x80, 0xFF, 0xF8, 0x0F, 0xFF, 0x80, 0xFF, + 0xFC, 0x03, 0xFF, 0xC0, 0x07, 0xFC, 0x00, 0x0F, 0xE0, 0x00, 0x1E, 0x00, + 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x07, 0xFF, 0xC0, 0x1F, + 0xFF, 0xF0, 0x3F, 0xFF, 0xF8, 0x3F, 0xFF, 0xFC, 0x7F, 0xFF, 0xFC, 0x7F, + 0x83, 0xFE, 0x7F, 0x01, 0xFE, 0xFF, 0x00, 0xFF, 0xFE, 0x00, 0x7F, 0xFE, + 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0x00, + 0x01, 0xFE, 0x00, 0x03, 0xFE, 0x00, 0x07, 0xFC, 0x00, 0x0F, 0xF8, 0x00, + 0x3F, 0xF0, 0x00, 0x3F, 0xE0, 0x00, 0x7F, 0x80, 0x00, 0x7F, 0x00, 0x00, + 0xFE, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, + 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, + 0xFE, 0x00, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0xE0, + 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xF8, 0x00, + 0x03, 0xFE, 0x01, 0xFF, 0x80, 0x01, 0xFE, 0x00, 0x07, 0xF8, 0x00, 0x7F, + 0x80, 0x00, 0x3F, 0x80, 0x1F, 0xC0, 0x00, 0x03, 0xF8, 0x07, 0xF0, 0x00, + 0x00, 0x1F, 0x00, 0xFC, 0x00, 0x00, 0x01, 0xF0, 0x3F, 0x00, 0x00, 0x00, + 0x3E, 0x0F, 0xC0, 0x07, 0xE3, 0xC3, 0xE1, 0xF0, 0x03, 0xFE, 0xF8, 0x3C, + 0x7E, 0x01, 0xFF, 0xFF, 0x07, 0x8F, 0x80, 0x7E, 0x1F, 0xC0, 0x7B, 0xF0, + 0x1F, 0x81, 0xF8, 0x0F, 0x7C, 0x03, 0xE0, 0x1F, 0x01, 0xEF, 0x80, 0xF8, + 0x03, 0xC0, 0x3F, 0xF0, 0x1E, 0x00, 0x78, 0x07, 0xFC, 0x07, 0xC0, 0x0F, + 0x00, 0xFF, 0x80, 0xF0, 0x01, 0xE0, 0x1F, 0xF0, 0x1E, 0x00, 0x38, 0x07, + 0xFE, 0x07, 0xC0, 0x0F, 0x00, 0xFF, 0xC0, 0xF8, 0x01, 0xE0, 0x1E, 0xF8, + 0x1F, 0x00, 0x38, 0x07, 0xDF, 0x03, 0xE0, 0x0F, 0x00, 0xF3, 0xF0, 0x7C, + 0x03, 0xE0, 0x3E, 0x3E, 0x0F, 0xC0, 0xFC, 0x0F, 0x87, 0xC0, 0xFC, 0x3F, + 0xC7, 0xF0, 0xFC, 0x1F, 0xFF, 0xFF, 0xFC, 0x0F, 0xC1, 0xFF, 0xEF, 0xFF, + 0x01, 0xFC, 0x1F, 0xF8, 0xFF, 0x80, 0x1F, 0xC0, 0xFC, 0x07, 0xC0, 0x01, + 0xFC, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x00, 0x01, 0xFE, + 0x00, 0x00, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x60, 0x00, 0x01, 0xFF, 0xFF, + 0xFE, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x7F, 0xFF, 0xF0, + 0x00, 0x00, 0x00, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, + 0x0F, 0xF8, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, + 0x1F, 0xFC, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, + 0x3F, 0xFE, 0x00, 0x00, 0x3F, 0x7E, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x00, + 0x7F, 0x7F, 0x00, 0x00, 0x7E, 0x3F, 0x00, 0x00, 0xFE, 0x3F, 0x80, 0x00, + 0xFE, 0x3F, 0x80, 0x01, 0xFC, 0x1F, 0x80, 0x01, 0xFC, 0x1F, 0xC0, 0x01, + 0xF8, 0x1F, 0xC0, 0x03, 0xF8, 0x0F, 0xE0, 0x03, 0xF8, 0x0F, 0xE0, 0x03, + 0xF0, 0x0F, 0xE0, 0x07, 0xF0, 0x07, 0xF0, 0x07, 0xFF, 0xFF, 0xF0, 0x07, + 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, 0xF8, 0x1F, + 0xFF, 0xFF, 0xF8, 0x1F, 0xFF, 0xFF, 0xFC, 0x1F, 0xC0, 0x01, 0xFC, 0x3F, + 0x80, 0x01, 0xFC, 0x3F, 0x80, 0x00, 0xFE, 0x3F, 0x80, 0x00, 0xFE, 0x7F, + 0x00, 0x00, 0xFE, 0x7F, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x00, 0x7F, 0xFF, + 0xFF, 0xE0, 0x1F, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0xF8, 0x7F, 0xFF, 0xFF, + 0x8F, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xFF, 0x3F, 0x80, 0x1F, 0xF7, 0xF0, + 0x01, 0xFE, 0xFE, 0x00, 0x1F, 0xDF, 0xC0, 0x03, 0xFB, 0xF8, 0x00, 0x7F, + 0x7F, 0x00, 0x1F, 0xCF, 0xE0, 0x07, 0xF9, 0xFF, 0xFF, 0xFE, 0x3F, 0xFF, + 0xFF, 0x87, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFE, 0x1F, 0xFF, 0xFF, 0xE3, + 0xFF, 0xFF, 0xFE, 0x7F, 0x00, 0x1F, 0xEF, 0xE0, 0x01, 0xFD, 0xFC, 0x00, + 0x1F, 0xFF, 0x80, 0x03, 0xFF, 0xF0, 0x00, 0x7F, 0xFE, 0x00, 0x0F, 0xFF, + 0xC0, 0x01, 0xFF, 0xF8, 0x00, 0x7F, 0xFF, 0x00, 0x1F, 0xEF, 0xFF, 0xFF, + 0xFD, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xF8, 0xFF, + 0xFF, 0xFC, 0x1F, 0xFF, 0xFC, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x03, 0xFF, + 0xF8, 0x00, 0x1F, 0xFF, 0xF8, 0x01, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, + 0xE0, 0x3F, 0xFF, 0xFF, 0xC1, 0xFF, 0x81, 0xFF, 0x0F, 0xF8, 0x01, 0xFE, + 0x3F, 0xC0, 0x07, 0xF9, 0xFE, 0x00, 0x0F, 0xE7, 0xF8, 0x00, 0x1F, 0xDF, + 0xC0, 0x00, 0x7F, 0x7F, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x0F, 0xE0, + 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x03, 0xF8, 0x00, + 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x00, + 0x03, 0xF8, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, + 0x7F, 0x00, 0x01, 0xFD, 0xFC, 0x00, 0x07, 0xF7, 0xF8, 0x00, 0x3F, 0xCF, + 0xF0, 0x00, 0xFE, 0x3F, 0xE0, 0x07, 0xF8, 0x7F, 0xE0, 0x7F, 0xC0, 0xFF, + 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xF8, 0x07, 0xFF, 0xFF, 0xC0, 0x07, 0xFF, + 0xFE, 0x00, 0x0F, 0xFF, 0xE0, 0x00, 0x07, 0xFC, 0x00, 0xFF, 0xFF, 0xC0, + 0x0F, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFC, 0x0F, 0xFF, 0xFF, 0xE0, 0xFF, + 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xF8, 0xFE, 0x00, 0xFF, 0xCF, 0xE0, 0x03, + 0xFC, 0xFE, 0x00, 0x1F, 0xEF, 0xE0, 0x01, 0xFE, 0xFE, 0x00, 0x0F, 0xEF, + 0xE0, 0x00, 0xFE, 0xFE, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0x7F, 0xFE, 0x00, + 0x07, 0xFF, 0xE0, 0x00, 0x7F, 0xFE, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0x7F, + 0xFE, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0x7F, 0xFE, 0x00, 0x07, 0xFF, 0xE0, + 0x00, 0x7F, 0xFE, 0x00, 0x0F, 0xEF, 0xE0, 0x00, 0xFE, 0xFE, 0x00, 0x1F, + 0xEF, 0xE0, 0x01, 0xFE, 0xFE, 0x00, 0x3F, 0xCF, 0xE0, 0x0F, 0xFC, 0xFF, + 0xFF, 0xFF, 0x8F, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, + 0xC0, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFC, 0x00, 0xFF, 0xFF, 0xFF, 0x7F, + 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xF7, + 0xFF, 0xFF, 0xFB, 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xFE, 0x00, 0x00, + 0x7F, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x0F, 0xE0, 0x00, + 0x07, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, + 0xFE, 0x7F, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0x9F, 0xC0, 0x00, 0x0F, 0xE0, + 0x00, 0x07, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xFE, + 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x0F, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFF, 0xFF, + 0xFC, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, + 0xFC, 0xFF, 0xFF, 0xFC, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, + 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0x07, 0xFF, 0xFF, + 0x00, 0x1F, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0xFF, + 0x07, 0xFE, 0x03, 0xFF, 0x0F, 0xF0, 0x01, 0xFE, 0x3F, 0xC0, 0x01, 0xFC, + 0x7F, 0x00, 0x01, 0xFD, 0xFE, 0x00, 0x03, 0xFB, 0xF8, 0x00, 0x00, 0x07, + 0xF0, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x7F, + 0x00, 0x00, 0x00, 0xFE, 0x00, 0x3F, 0xFF, 0xFC, 0x00, 0x7F, 0xFF, 0xF8, + 0x00, 0xFF, 0xFF, 0xF0, 0x01, 0xFF, 0xFF, 0xE0, 0x03, 0xFF, 0xFF, 0xC0, + 0x07, 0xFF, 0xFF, 0xC0, 0x00, 0x1F, 0xBF, 0x80, 0x00, 0x3F, 0x7F, 0x00, + 0x00, 0x7E, 0xFF, 0x00, 0x01, 0xFC, 0xFF, 0x00, 0x03, 0xF9, 0xFF, 0x00, + 0x0F, 0xF1, 0xFF, 0x00, 0x3F, 0xE3, 0xFF, 0x83, 0xFF, 0xC3, 0xFF, 0xFF, + 0xFF, 0x83, 0xFF, 0xFF, 0xDF, 0x03, 0xFF, 0xFF, 0x9E, 0x03, 0xFF, 0xFE, + 0x3C, 0x01, 0xFF, 0xF0, 0x78, 0x00, 0x7F, 0x80, 0x00, 0xFE, 0x00, 0x0F, + 0xFF, 0xC0, 0x01, 0xFF, 0xF8, 0x00, 0x3F, 0xFF, 0x00, 0x07, 0xFF, 0xE0, + 0x00, 0xFF, 0xFC, 0x00, 0x1F, 0xFF, 0x80, 0x03, 0xFF, 0xF0, 0x00, 0x7F, + 0xFE, 0x00, 0x0F, 0xFF, 0xC0, 0x01, 0xFF, 0xF8, 0x00, 0x3F, 0xFF, 0x00, + 0x07, 0xFF, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0xFF, 0xFC, 0x00, 0x1F, 0xFF, + 0x80, 0x03, 0xFF, 0xF0, 0x00, 0x7F, 0xFE, 0x00, 0x0F, 0xFF, 0xC0, 0x01, + 0xFF, 0xF8, 0x00, 0x3F, 0xFF, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0xFF, 0xFC, + 0x00, 0x1F, 0xFF, 0x80, 0x03, 0xFF, 0xF0, 0x00, 0x7F, 0xFE, 0x00, 0x0F, + 0xFF, 0xC0, 0x01, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x01, + 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xC0, 0x00, 0x7F, 0x00, 0x01, 0xFC, + 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xC0, 0x00, 0x7F, 0x00, 0x01, 0xFC, 0x00, + 0x07, 0xF0, 0x00, 0x1F, 0xC0, 0x00, 0x7F, 0x00, 0x01, 0xFC, 0x00, 0x07, + 0xF0, 0x00, 0x1F, 0xC0, 0x00, 0x7F, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xF0, + 0x00, 0x1F, 0xC0, 0x00, 0x7F, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0xE0, + 0x1F, 0xFF, 0x80, 0x7F, 0xFE, 0x01, 0xFF, 0xF8, 0x07, 0xFF, 0xE0, 0x1F, + 0xFF, 0xC0, 0xFF, 0xFF, 0x87, 0xFD, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0x8F, + 0xFF, 0xFC, 0x1F, 0xFF, 0xE0, 0x3F, 0xFF, 0x00, 0x1F, 0xE0, 0x00, 0xFE, + 0x00, 0x0F, 0xF3, 0xF8, 0x00, 0x7F, 0x8F, 0xE0, 0x03, 0xFC, 0x3F, 0x80, + 0x1F, 0xE0, 0xFE, 0x00, 0xFF, 0x83, 0xF8, 0x07, 0xFC, 0x0F, 0xE0, 0x1F, + 0xE0, 0x3F, 0x80, 0xFF, 0x00, 0xFE, 0x07, 0xF8, 0x03, 0xF8, 0x3F, 0xC0, + 0x0F, 0xE1, 0xFE, 0x00, 0x3F, 0x8F, 0xF0, 0x00, 0xFE, 0x7F, 0x80, 0x03, + 0xFB, 0xFC, 0x00, 0x0F, 0xFF, 0xE0, 0x00, 0x3F, 0xFF, 0xC0, 0x00, 0xFF, + 0xFF, 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x0F, 0xFF, 0xFC, 0x00, 0x3F, 0xF7, + 0xF8, 0x00, 0xFF, 0x8F, 0xF0, 0x03, 0xFC, 0x3F, 0xC0, 0x0F, 0xE0, 0x7F, + 0x80, 0x3F, 0x80, 0xFF, 0x00, 0xFE, 0x01, 0xFE, 0x03, 0xF8, 0x07, 0xFC, + 0x0F, 0xE0, 0x0F, 0xF0, 0x3F, 0x80, 0x1F, 0xE0, 0xFE, 0x00, 0x3F, 0xC3, + 0xF8, 0x00, 0xFF, 0x8F, 0xE0, 0x01, 0xFE, 0x3F, 0x80, 0x03, 0xFC, 0xFE, + 0x00, 0x07, 0xFB, 0xF8, 0x00, 0x1F, 0xF0, 0xFE, 0x00, 0x01, 0xFC, 0x00, + 0x03, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, + 0x3F, 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x03, + 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0x3F, + 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x03, 0xF8, + 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0x3F, 0x80, + 0x00, 0x7F, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x03, 0xF8, 0x00, + 0x07, 0xF0, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFF, 0xE0, 0x03, + 0xFF, 0xFF, 0xF0, 0x01, 0xFF, 0xFF, 0xF8, 0x00, 0xFF, 0xFF, 0xFC, 0x00, + 0x7F, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xFF, 0xC0, + 0x1F, 0xFF, 0xFF, 0xE0, 0x0F, 0xFF, 0xFF, 0xF0, 0x07, 0xFF, 0xFF, 0xFC, + 0x07, 0xFF, 0xFF, 0xBE, 0x03, 0xEF, 0xFF, 0xDF, 0x01, 0xF7, 0xFF, 0xEF, + 0x80, 0xFB, 0xFF, 0xF7, 0xC0, 0xFD, 0xFF, 0xFB, 0xF0, 0x7C, 0xFF, 0xFC, + 0xF8, 0x3E, 0x7F, 0xFE, 0x7C, 0x1F, 0x3F, 0xFF, 0x3E, 0x0F, 0x9F, 0xFF, + 0x9F, 0x8F, 0x8F, 0xFF, 0xC7, 0xC7, 0xC7, 0xFF, 0xE3, 0xE3, 0xE3, 0xFF, + 0xF1, 0xF1, 0xF1, 0xFF, 0xF8, 0xFC, 0xF8, 0xFF, 0xFC, 0x3E, 0xF8, 0x7F, + 0xFE, 0x1F, 0x7C, 0x3F, 0xFF, 0x0F, 0xBE, 0x1F, 0xFF, 0x87, 0xDF, 0x0F, + 0xFF, 0xC3, 0xFF, 0x07, 0xFF, 0xE0, 0xFF, 0x83, 0xFF, 0xF0, 0x7F, 0xC1, + 0xFF, 0xF8, 0x3F, 0xE0, 0xFF, 0xFC, 0x1F, 0xF0, 0x7F, 0xFE, 0x07, 0xF0, + 0x3F, 0xFF, 0x03, 0xF8, 0x1F, 0xC0, 0xFE, 0x00, 0x07, 0xFF, 0xF0, 0x00, + 0x7F, 0xFF, 0x80, 0x07, 0xFF, 0xF8, 0x00, 0x7F, 0xFF, 0xC0, 0x07, 0xFF, + 0xFC, 0x00, 0x7F, 0xFF, 0xE0, 0x07, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0xF0, + 0x07, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0xF8, 0x07, 0xFF, 0xEF, 0xC0, 0x7F, + 0xFE, 0xFE, 0x07, 0xFF, 0xE7, 0xE0, 0x7F, 0xFE, 0x7F, 0x07, 0xFF, 0xE3, + 0xF0, 0x7F, 0xFE, 0x1F, 0x87, 0xFF, 0xE1, 0xFC, 0x7F, 0xFE, 0x0F, 0xC7, + 0xFF, 0xE0, 0xFE, 0x7F, 0xFE, 0x07, 0xE7, 0xFF, 0xE0, 0x3F, 0x7F, 0xFE, + 0x03, 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xFE, 0x01, 0xFF, 0xFF, 0xE0, 0x0F, + 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xE0, 0x07, 0xFF, 0xFE, 0x00, 0x3F, 0xFF, + 0xE0, 0x03, 0xFF, 0xFE, 0x00, 0x1F, 0xFF, 0xE0, 0x00, 0xFF, 0xFE, 0x00, + 0x0F, 0xFF, 0xE0, 0x00, 0x7F, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x3F, 0xFF, + 0x80, 0x00, 0x7F, 0xFF, 0xE0, 0x00, 0x7F, 0xFF, 0xFC, 0x00, 0x7F, 0xFF, + 0xFF, 0x00, 0x7F, 0xFF, 0xFF, 0xC0, 0x7F, 0xE0, 0x3F, 0xF0, 0x3F, 0xC0, + 0x0F, 0xF8, 0x3F, 0xC0, 0x01, 0xFE, 0x1F, 0xC0, 0x00, 0x7F, 0x1F, 0xE0, + 0x00, 0x3F, 0xCF, 0xE0, 0x00, 0x0F, 0xE7, 0xF0, 0x00, 0x07, 0xF7, 0xF8, + 0x00, 0x03, 0xFF, 0xF8, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x7F, 0xFE, + 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x00, 0x0F, 0xFF, + 0xC0, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0x03, 0xFF, 0xF0, 0x00, 0x01, 0xFF, + 0xFC, 0x00, 0x01, 0xFE, 0xFE, 0x00, 0x00, 0xFE, 0x7F, 0x00, 0x00, 0x7F, + 0x3F, 0xC0, 0x00, 0x7F, 0x8F, 0xE0, 0x00, 0x3F, 0x87, 0xF8, 0x00, 0x3F, + 0xC1, 0xFE, 0x00, 0x3F, 0xC0, 0xFF, 0xC0, 0x7F, 0xE0, 0x3F, 0xFF, 0xFF, + 0xE0, 0x0F, 0xFF, 0xFF, 0xE0, 0x03, 0xFF, 0xFF, 0xE0, 0x00, 0xFF, 0xFF, + 0xE0, 0x00, 0x1F, 0xFF, 0xC0, 0x00, 0x01, 0xFF, 0x00, 0x00, 0xFF, 0xFF, + 0xE0, 0x3F, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0xFC, 0xFF, + 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xEF, 0xE0, 0x0F, 0xFB, 0xF8, 0x00, 0xFF, + 0xFE, 0x00, 0x1F, 0xFF, 0x80, 0x07, 0xFF, 0xE0, 0x01, 0xFF, 0xF8, 0x00, + 0x7F, 0xFE, 0x00, 0x1F, 0xFF, 0x80, 0x07, 0xFF, 0xE0, 0x03, 0xFF, 0xF8, + 0x03, 0xFE, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xF3, + 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xF8, 0x3F, 0xFF, 0xF8, 0x0F, 0xE0, 0x00, + 0x03, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x0F, 0xE0, + 0x00, 0x03, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x0F, + 0xE0, 0x00, 0x03, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x3F, 0x80, 0x00, + 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x7F, 0xFF, + 0xE0, 0x00, 0x7F, 0xFF, 0xFC, 0x00, 0x7F, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, + 0xFF, 0xC0, 0x7F, 0xE0, 0x3F, 0xF0, 0x3F, 0xC0, 0x07, 0xF8, 0x3F, 0xC0, + 0x01, 0xFE, 0x1F, 0xC0, 0x00, 0x7F, 0x1F, 0xE0, 0x00, 0x3F, 0xCF, 0xE0, + 0x00, 0x0F, 0xE7, 0xF0, 0x00, 0x07, 0xF7, 0xF8, 0x00, 0x03, 0xFF, 0xF8, + 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x7F, 0xFE, 0x00, 0x00, 0x3F, 0xFF, + 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0x07, 0xFF, + 0xE0, 0x00, 0x03, 0xFF, 0xF0, 0x00, 0x01, 0xFF, 0xFC, 0x00, 0x21, 0xFE, + 0xFE, 0x00, 0x38, 0xFE, 0x7F, 0x00, 0x3E, 0x7F, 0x3F, 0xC0, 0x3F, 0xFF, + 0x8F, 0xE0, 0x0F, 0xFF, 0x87, 0xF8, 0x03, 0xFF, 0xC1, 0xFE, 0x00, 0xFF, + 0xC0, 0xFF, 0xC0, 0x7F, 0xE0, 0x3F, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, + 0xFC, 0x03, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xC0, 0x1F, 0xFF, + 0xCF, 0xC0, 0x01, 0xFF, 0x03, 0xC0, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, + 0xF8, 0x0F, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0x8F, 0xFF, 0xFF, 0xF8, + 0xFF, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xFC, 0xFE, 0x00, 0x3F, 0xEF, 0xE0, + 0x01, 0xFE, 0xFE, 0x00, 0x0F, 0xEF, 0xE0, 0x00, 0xFE, 0xFE, 0x00, 0x0F, + 0xEF, 0xE0, 0x00, 0xFE, 0xFE, 0x00, 0x0F, 0xEF, 0xE0, 0x01, 0xFC, 0xFE, + 0x00, 0x3F, 0xCF, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, + 0xC0, 0xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0x8F, + 0xE0, 0x07, 0xF8, 0xFE, 0x00, 0x1F, 0xCF, 0xE0, 0x01, 0xFC, 0xFE, 0x00, + 0x1F, 0xCF, 0xE0, 0x01, 0xFC, 0xFE, 0x00, 0x1F, 0xCF, 0xE0, 0x01, 0xFC, + 0xFE, 0x00, 0x1F, 0xCF, 0xE0, 0x01, 0xFC, 0xFE, 0x00, 0x1F, 0xCF, 0xE0, + 0x01, 0xFC, 0xFE, 0x00, 0x1F, 0xEF, 0xE0, 0x00, 0xFF, 0x00, 0xFF, 0xC0, + 0x00, 0x3F, 0xFF, 0x80, 0x0F, 0xFF, 0xFE, 0x01, 0xFF, 0xFF, 0xF0, 0x3F, + 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0xFC, 0x7F, 0xC0, 0xFF, 0xCF, 0xF0, 0x03, + 0xFE, 0xFE, 0x00, 0x1F, 0xEF, 0xE0, 0x00, 0xFE, 0xFE, 0x00, 0x0F, 0xEF, + 0xE0, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x7F, 0xFC, + 0x00, 0x07, 0xFF, 0xFE, 0x00, 0x3F, 0xFF, 0xFC, 0x01, 0xFF, 0xFF, 0xF0, + 0x07, 0xFF, 0xFF, 0xC0, 0x0F, 0xFF, 0xFE, 0x00, 0x07, 0xFF, 0xE0, 0x00, + 0x03, 0xFF, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x07, + 0xFF, 0xE0, 0x00, 0x7F, 0xFE, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0xFF, 0xFF, + 0x00, 0x0F, 0xE7, 0xFC, 0x03, 0xFE, 0x7F, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, + 0xFC, 0x1F, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xF0, 0x03, 0xFF, 0xFC, 0x00, + 0x07, 0xFE, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, + 0x0F, 0xE0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, + 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xF8, 0x00, 0x00, + 0x7F, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x80, + 0x00, 0x07, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, + 0xF8, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x01, 0xFC, 0x00, + 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, + 0xC0, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x0F, 0xE0, 0x00, + 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0xFE, 0x00, + 0x0F, 0xFF, 0xC0, 0x01, 0xFF, 0xF8, 0x00, 0x3F, 0xFF, 0x00, 0x07, 0xFF, + 0xE0, 0x00, 0xFF, 0xFC, 0x00, 0x1F, 0xFF, 0x80, 0x03, 0xFF, 0xF0, 0x00, + 0x7F, 0xFE, 0x00, 0x0F, 0xFF, 0xC0, 0x01, 0xFF, 0xF8, 0x00, 0x3F, 0xFF, + 0x00, 0x07, 0xFF, 0xE0, 0x00, 0xFF, 0xFC, 0x00, 0x1F, 0xFF, 0x80, 0x03, + 0xFF, 0xF0, 0x00, 0x7F, 0xFE, 0x00, 0x0F, 0xFF, 0xC0, 0x01, 0xFF, 0xF8, + 0x00, 0x3F, 0xFF, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0xFF, 0xFC, 0x00, 0x1F, + 0xFF, 0x80, 0x03, 0xFF, 0xF0, 0x00, 0x7F, 0xFE, 0x00, 0x0F, 0xFF, 0xC0, + 0x01, 0xFF, 0xFC, 0x00, 0x7F, 0xBF, 0xC0, 0x1F, 0xE7, 0xFC, 0x07, 0xFC, + 0x7F, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, + 0xFE, 0x00, 0x7F, 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x00, 0xFE, 0x00, 0x03, + 0xFF, 0xF0, 0x00, 0x1F, 0xDF, 0xC0, 0x01, 0xFC, 0xFE, 0x00, 0x0F, 0xE7, + 0xF0, 0x00, 0x7F, 0x1F, 0xC0, 0x03, 0xF0, 0xFE, 0x00, 0x3F, 0x87, 0xF0, + 0x01, 0xFC, 0x1F, 0xC0, 0x0F, 0xC0, 0xFE, 0x00, 0xFE, 0x03, 0xF0, 0x07, + 0xF0, 0x1F, 0x80, 0x3F, 0x00, 0xFE, 0x03, 0xF8, 0x03, 0xF0, 0x1F, 0xC0, + 0x1F, 0x80, 0xFC, 0x00, 0xFE, 0x07, 0xE0, 0x03, 0xF0, 0x7F, 0x00, 0x1F, + 0x83, 0xF0, 0x00, 0xFE, 0x1F, 0x80, 0x03, 0xF1, 0xF8, 0x00, 0x1F, 0x8F, + 0xC0, 0x00, 0xFC, 0x7E, 0x00, 0x03, 0xF3, 0xE0, 0x00, 0x1F, 0xBF, 0x00, + 0x00, 0xFD, 0xF8, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, + 0xFF, 0xE0, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0xFF, + 0x80, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0xFE, 0x00, + 0x00, 0xFF, 0x00, 0x3F, 0x80, 0x1F, 0xFF, 0xE0, 0x07, 0xF0, 0x03, 0xFD, + 0xFC, 0x01, 0xFE, 0x00, 0x7F, 0x3F, 0x80, 0x3F, 0xE0, 0x0F, 0xE7, 0xF0, + 0x07, 0xFC, 0x01, 0xFC, 0x7F, 0x00, 0xFF, 0x80, 0x7F, 0x8F, 0xE0, 0x1F, + 0xF0, 0x0F, 0xE1, 0xFC, 0x07, 0xFF, 0x01, 0xFC, 0x3F, 0x80, 0xFB, 0xE0, + 0x3F, 0x83, 0xF0, 0x1F, 0x7C, 0x07, 0xE0, 0x7F, 0x03, 0xEF, 0x81, 0xFC, + 0x0F, 0xE0, 0x7D, 0xF0, 0x3F, 0x80, 0xFC, 0x1F, 0x9F, 0x07, 0xF0, 0x1F, + 0x83, 0xE3, 0xE0, 0xFC, 0x03, 0xF0, 0x7C, 0x7C, 0x1F, 0x80, 0x7F, 0x0F, + 0x8F, 0x87, 0xF0, 0x07, 0xE1, 0xF0, 0xF8, 0xFC, 0x00, 0xFC, 0x7E, 0x1F, + 0x1F, 0x80, 0x1F, 0x8F, 0x83, 0xE3, 0xF0, 0x01, 0xF9, 0xF0, 0x7C, 0x7E, + 0x00, 0x3F, 0x3E, 0x0F, 0x9F, 0x80, 0x07, 0xE7, 0xC0, 0xFB, 0xF0, 0x00, + 0xFD, 0xF0, 0x1F, 0x7E, 0x00, 0x0F, 0xBE, 0x03, 0xEF, 0xC0, 0x01, 0xFF, + 0xC0, 0x7D, 0xF0, 0x00, 0x3F, 0xF8, 0x0F, 0xFE, 0x00, 0x03, 0xFF, 0x00, + 0xFF, 0xC0, 0x00, 0x7F, 0xC0, 0x1F, 0xF0, 0x00, 0x0F, 0xF8, 0x03, 0xFE, + 0x00, 0x01, 0xFF, 0x00, 0x7F, 0xC0, 0x00, 0x1F, 0xE0, 0x07, 0xF8, 0x00, + 0x03, 0xFC, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x1F, 0xC0, 0x00, 0x07, + 0xE0, 0x03, 0xF8, 0x00, 0x7F, 0x80, 0x07, 0xF9, 0xFF, 0x00, 0x3F, 0xC3, + 0xFC, 0x00, 0xFF, 0x07, 0xF8, 0x07, 0xF8, 0x1F, 0xE0, 0x1F, 0xC0, 0x3F, + 0xC0, 0xFF, 0x00, 0xFF, 0x07, 0xF8, 0x01, 0xFE, 0x1F, 0xE0, 0x03, 0xF8, + 0xFF, 0x00, 0x0F, 0xF3, 0xF8, 0x00, 0x1F, 0xDF, 0xE0, 0x00, 0x3F, 0xFF, + 0x00, 0x00, 0xFF, 0xF8, 0x00, 0x01, 0xFF, 0xE0, 0x00, 0x07, 0xFF, 0x00, + 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0xFF, 0x80, 0x00, + 0x03, 0xFF, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x7F, 0xF8, 0x00, 0x03, + 0xFF, 0xF0, 0x00, 0x1F, 0xFF, 0xC0, 0x00, 0x7F, 0x7F, 0x80, 0x03, 0xF8, + 0xFF, 0x00, 0x1F, 0xE1, 0xFC, 0x00, 0x7F, 0x07, 0xF8, 0x03, 0xFC, 0x0F, + 0xF0, 0x1F, 0xE0, 0x3F, 0xC0, 0x7F, 0x80, 0x7F, 0x83, 0xFC, 0x01, 0xFE, + 0x0F, 0xF0, 0x03, 0xFC, 0x7F, 0x80, 0x0F, 0xFB, 0xFE, 0x00, 0x1F, 0xE0, + 0xFF, 0x00, 0x07, 0xFF, 0xF8, 0x00, 0x7F, 0x9F, 0xE0, 0x03, 0xFC, 0xFF, + 0x00, 0x3F, 0xC3, 0xFC, 0x01, 0xFE, 0x0F, 0xE0, 0x0F, 0xE0, 0x7F, 0x00, + 0xFF, 0x01, 0xFC, 0x07, 0xF0, 0x0F, 0xE0, 0x7F, 0x80, 0x3F, 0x83, 0xF8, + 0x01, 0xFC, 0x3F, 0xC0, 0x07, 0xF1, 0xFC, 0x00, 0x3F, 0x8F, 0xE0, 0x00, + 0xFE, 0xFE, 0x00, 0x07, 0xF7, 0xF0, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0xFF, + 0xF8, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x7F, 0xC0, + 0x00, 0x01, 0xFC, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x7F, 0x00, 0x00, + 0x03, 0xF8, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x07, + 0xF0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x0F, 0xE0, + 0x00, 0x00, 0x7F, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x1F, 0xC0, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x00, 0x03, 0xFC, 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x7F, + 0x80, 0x00, 0x3F, 0xE0, 0x00, 0x0F, 0xF0, 0x00, 0x07, 0xF8, 0x00, 0x03, + 0xFC, 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x3F, 0xC0, 0x00, + 0x1F, 0xE0, 0x00, 0x0F, 0xF0, 0x00, 0x07, 0xF8, 0x00, 0x03, 0xFE, 0x00, + 0x00, 0xFF, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x3F, 0xC0, 0x00, 0x1F, 0xE0, + 0x00, 0x0F, 0xF8, 0x00, 0x03, 0xFC, 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFC, 0x3F, 0x87, 0xF0, 0xFE, 0x1F, 0xC3, 0xF8, 0x7F, 0x0F, + 0xE1, 0xFC, 0x3F, 0x87, 0xF0, 0xFE, 0x1F, 0xC3, 0xF8, 0x7F, 0x0F, 0xE1, + 0xFC, 0x3F, 0x87, 0xF0, 0xFE, 0x1F, 0xC3, 0xF8, 0x7F, 0x0F, 0xE1, 0xFC, + 0x3F, 0x87, 0xF0, 0xFE, 0x1F, 0xC3, 0xF8, 0x7F, 0x0F, 0xE1, 0xFC, 0x3F, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0xE0, 0x03, 0xC0, 0x07, 0x00, + 0x1C, 0x00, 0x78, 0x00, 0xE0, 0x03, 0x80, 0x0F, 0x00, 0x1C, 0x00, 0x70, + 0x01, 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x38, 0x00, 0x70, 0x01, 0xC0, 0x07, + 0x00, 0x0E, 0x00, 0x38, 0x00, 0xE0, 0x01, 0xC0, 0x07, 0x00, 0x1C, 0x00, + 0x78, 0x00, 0xE0, 0x03, 0x80, 0x0F, 0x00, 0x1C, 0x00, 0x70, 0x01, 0xE0, + 0x03, 0x80, 0x0E, 0x00, 0x3C, 0x00, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0x1F, 0xC3, 0xF8, 0x7F, 0x0F, 0xE1, 0xFC, 0x3F, 0x87, 0xF0, + 0xFE, 0x1F, 0xC3, 0xF8, 0x7F, 0x0F, 0xE1, 0xFC, 0x3F, 0x87, 0xF0, 0xFE, + 0x1F, 0xC3, 0xF8, 0x7F, 0x0F, 0xE1, 0xFC, 0x3F, 0x87, 0xF0, 0xFE, 0x1F, + 0xC3, 0xF8, 0x7F, 0x0F, 0xE1, 0xFC, 0x3F, 0x87, 0xF0, 0xFE, 0x1F, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xF0, + 0x00, 0x1F, 0xC0, 0x00, 0xFF, 0x80, 0x03, 0xFE, 0x00, 0x0F, 0xFC, 0x00, + 0x7D, 0xF0, 0x01, 0xF7, 0xC0, 0x0F, 0xDF, 0x80, 0x3E, 0x3E, 0x00, 0xF8, + 0xFC, 0x07, 0xE1, 0xF0, 0x1F, 0x07, 0xC0, 0xFC, 0x1F, 0x83, 0xE0, 0x3E, + 0x0F, 0x80, 0xFC, 0x7E, 0x01, 0xF1, 0xF0, 0x07, 0xC7, 0xC0, 0x1F, 0xBE, + 0x00, 0x3E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x3E, 0x0F, 0x83, 0xC0, 0xF0, 0x38, 0x1E, + 0x01, 0xFF, 0x00, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0xF0, 0x3F, 0xFF, 0xF8, + 0x7F, 0xFF, 0xF8, 0x7F, 0xFF, 0xFC, 0x7F, 0x03, 0xFC, 0x7E, 0x01, 0xFC, + 0x00, 0x01, 0xFC, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xFC, 0x03, 0xFF, 0xFC, + 0x1F, 0xFF, 0xFC, 0x3F, 0xFF, 0xFC, 0x7F, 0xC1, 0xFC, 0xFF, 0x01, 0xFC, + 0xFE, 0x01, 0xFC, 0xFE, 0x03, 0xFC, 0xFE, 0x03, 0xFC, 0xFF, 0x07, 0xFC, + 0xFF, 0xFF, 0xFC, 0x7F, 0xFF, 0xFC, 0x7F, 0xFF, 0xFC, 0x3F, 0xFD, 0xFE, + 0x1F, 0xF0, 0xFF, 0x07, 0xE0, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, + 0x3F, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x0F, 0xE0, 0x00, 0x07, 0xF0, 0x00, + 0x03, 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x0F, + 0xC0, 0x3F, 0x9F, 0xF8, 0x1F, 0xDF, 0xFF, 0x0F, 0xFF, 0xFF, 0xC7, 0xFF, + 0xFF, 0xE3, 0xFF, 0xFF, 0xF9, 0xFF, 0x83, 0xFE, 0xFF, 0x80, 0xFF, 0x7F, + 0x80, 0x3F, 0xBF, 0xC0, 0x1F, 0xFF, 0xC0, 0x07, 0xFF, 0xE0, 0x03, 0xFF, + 0xF0, 0x01, 0xFF, 0xF8, 0x00, 0xFF, 0xFC, 0x00, 0x7F, 0xFE, 0x00, 0x3F, + 0xFF, 0x80, 0x3F, 0xFF, 0xC0, 0x1F, 0xDF, 0xF0, 0x1F, 0xEF, 0xFC, 0x1F, + 0xF7, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xF1, 0xFF, 0xFF, 0xF8, 0xFE, 0xFF, + 0xF8, 0x7F, 0x3F, 0xF0, 0x00, 0x07, 0xE0, 0x00, 0x00, 0xFF, 0x00, 0x07, + 0xFF, 0xC0, 0x3F, 0xFF, 0xC0, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xC7, 0xFF, + 0xFF, 0x9F, 0xF0, 0x7F, 0xBF, 0xC0, 0x7F, 0x7F, 0x00, 0x7F, 0xFC, 0x00, + 0x03, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, + 0x3F, 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0xFD, + 0xFE, 0x03, 0xFB, 0xFE, 0x0F, 0xF3, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0x87, + 0xFF, 0xFE, 0x07, 0xFF, 0xF8, 0x03, 0xFF, 0xE0, 0x01, 0xFE, 0x00, 0x00, + 0x00, 0x3F, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x0F, 0xE0, 0x00, 0x07, 0xF0, + 0x00, 0x03, 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, + 0x00, 0x00, 0x3F, 0x80, 0x7E, 0x1F, 0xC0, 0xFF, 0xCF, 0xE1, 0xFF, 0xF7, + 0xF1, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFE, 0xFF, 0x83, + 0xFF, 0x7F, 0x80, 0xFF, 0xBF, 0x80, 0x3F, 0xFF, 0xC0, 0x1F, 0xFF, 0xC0, + 0x07, 0xFF, 0xE0, 0x03, 0xFF, 0xF0, 0x01, 0xFF, 0xF8, 0x00, 0xFF, 0xFC, + 0x00, 0x7F, 0xFE, 0x00, 0x3F, 0xFF, 0x80, 0x3F, 0xDF, 0xC0, 0x1F, 0xEF, + 0xF0, 0x1F, 0xF7, 0xFC, 0x1F, 0xF9, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFE, + 0x3F, 0xFF, 0xFF, 0x0F, 0xFF, 0xBF, 0x81, 0xFF, 0x9F, 0xC0, 0x3F, 0x00, + 0x00, 0x00, 0xFE, 0x00, 0x03, 0xFF, 0x80, 0x0F, 0xFF, 0xE0, 0x1F, 0xFF, + 0xF0, 0x3F, 0xFF, 0xF8, 0x3F, 0xC3, 0xF8, 0x7F, 0x80, 0xFC, 0x7F, 0x00, + 0xFC, 0x7F, 0x00, 0x7C, 0xFE, 0x00, 0x7E, 0xFE, 0x00, 0x7E, 0xFF, 0xFF, + 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFE, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x7F, 0x7F, 0x00, + 0xFE, 0x3F, 0xC1, 0xFE, 0x3F, 0xFF, 0xFC, 0x1F, 0xFF, 0xF8, 0x0F, 0xFF, + 0xF0, 0x03, 0xFF, 0xC0, 0x00, 0xFF, 0x00, 0x01, 0xFC, 0x1F, 0xF0, 0xFF, + 0xC3, 0xFF, 0x1F, 0xFC, 0x7F, 0x81, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, + 0x0F, 0xFF, 0xBF, 0xFE, 0xFF, 0xFB, 0xFF, 0xE1, 0xFC, 0x07, 0xF0, 0x1F, + 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, + 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, + 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x00, 0x00, 0xF8, 0x7F, 0x07, 0xFE, + 0x7F, 0x0F, 0xFF, 0x7F, 0x1F, 0xFF, 0x7F, 0x3F, 0xFF, 0xFF, 0x3F, 0xFF, + 0xFF, 0x7F, 0xC3, 0xFF, 0x7F, 0x81, 0xFF, 0x7F, 0x00, 0xFF, 0xFF, 0x00, + 0xFF, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, + 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0xFF, 0xFF, 0x00, + 0xFF, 0x7F, 0x81, 0xFF, 0x7F, 0xC3, 0xFF, 0x3F, 0xFF, 0xFF, 0x3F, 0xFF, + 0xFF, 0x1F, 0xFF, 0xFF, 0x0F, 0xFF, 0x7F, 0x07, 0xFE, 0x7F, 0x01, 0xF8, + 0x7F, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x7F, 0x00, + 0xFF, 0x7F, 0x01, 0xFE, 0x7F, 0xC3, 0xFE, 0x3F, 0xFF, 0xFC, 0x1F, 0xFF, + 0xF8, 0x0F, 0xFF, 0xE0, 0x01, 0xFF, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x00, + 0x03, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, + 0x3F, 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x3F, 0x83, + 0xF8, 0xFF, 0xC7, 0xF7, 0xFF, 0xCF, 0xEF, 0xFF, 0xDF, 0xFF, 0xFF, 0xBF, + 0xFF, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0x01, 0xFF, 0xFE, 0x01, 0xFF, 0xF8, + 0x03, 0xFF, 0xF0, 0x07, 0xFF, 0xE0, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0x80, + 0x3F, 0xFF, 0x00, 0x7F, 0xFE, 0x00, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, 0x03, + 0xFF, 0xF0, 0x07, 0xFF, 0xE0, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0x80, 0x3F, + 0xFF, 0x00, 0x7F, 0xFE, 0x00, 0xFF, 0xFC, 0x01, 0xFC, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xC0, 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFC, 0x1F, 0xC7, 0xF1, 0xFC, 0x7F, 0x1F, 0xC7, 0xF0, 0x00, + 0x00, 0x00, 0x07, 0xF1, 0xFC, 0x7F, 0x1F, 0xC7, 0xF1, 0xFC, 0x7F, 0x1F, + 0xC7, 0xF1, 0xFC, 0x7F, 0x1F, 0xC7, 0xF1, 0xFC, 0x7F, 0x1F, 0xC7, 0xF1, + 0xFC, 0x7F, 0x1F, 0xC7, 0xF1, 0xFC, 0x7F, 0x1F, 0xC7, 0xF1, 0xFC, 0x7F, + 0x1F, 0xC7, 0xF1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFE, 0xFE, 0x00, + 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x03, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F, + 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0x3F, 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFE, + 0x00, 0x01, 0xFC, 0x03, 0xFB, 0xF8, 0x0F, 0xE7, 0xF0, 0x3F, 0xCF, 0xE0, + 0xFF, 0x1F, 0xC3, 0xFC, 0x3F, 0x87, 0xF0, 0x7F, 0x1F, 0xC0, 0xFE, 0x7F, + 0x01, 0xFD, 0xFC, 0x03, 0xFF, 0xF0, 0x07, 0xFF, 0xF0, 0x0F, 0xFF, 0xE0, + 0x1F, 0xFF, 0xE0, 0x3F, 0xFF, 0xE0, 0x7F, 0xDF, 0xC0, 0xFF, 0x3F, 0xC1, + 0xFC, 0x3F, 0x83, 0xF8, 0x3F, 0x87, 0xF0, 0x7F, 0x8F, 0xE0, 0x7F, 0x1F, + 0xC0, 0xFF, 0x3F, 0x80, 0xFE, 0x7F, 0x01, 0xFE, 0xFE, 0x01, 0xFD, 0xFC, + 0x03, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFE, 0x1F, 0x80, 0x7E, + 0x0F, 0xE7, 0xFE, 0x1F, 0xF8, 0xFE, 0xFF, 0xF3, 0xFF, 0xCF, 0xFF, 0xFF, + 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x83, 0xFF, 0x0F, 0xFF, 0xF0, 0x1F, 0xE0, 0x7F, 0xFE, 0x01, 0xFC, 0x07, + 0xFF, 0xE0, 0x1F, 0xC0, 0x7F, 0xFE, 0x01, 0xFC, 0x07, 0xFF, 0xE0, 0x1F, + 0xC0, 0x7F, 0xFE, 0x01, 0xFC, 0x07, 0xFF, 0xE0, 0x1F, 0xC0, 0x7F, 0xFE, + 0x01, 0xFC, 0x07, 0xFF, 0xE0, 0x1F, 0xC0, 0x7F, 0xFE, 0x01, 0xFC, 0x07, + 0xFF, 0xE0, 0x1F, 0xC0, 0x7F, 0xFE, 0x01, 0xFC, 0x07, 0xFF, 0xE0, 0x1F, + 0xC0, 0x7F, 0xFE, 0x01, 0xFC, 0x07, 0xFF, 0xE0, 0x1F, 0xC0, 0x7F, 0xFE, + 0x01, 0xFC, 0x07, 0xFF, 0xE0, 0x1F, 0xC0, 0x7F, 0xFE, 0x01, 0xFC, 0x07, + 0xF0, 0xFE, 0x1F, 0xC1, 0xFC, 0xFF, 0xE3, 0xFB, 0xFF, 0xE7, 0xFF, 0xFF, + 0xEF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0x80, 0xFF, + 0xFE, 0x00, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, 0x03, 0xFF, 0xF0, 0x07, 0xFF, + 0xE0, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0x80, 0x3F, 0xFF, 0x00, 0x7F, 0xFE, + 0x00, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, 0x03, 0xFF, 0xF0, 0x07, 0xFF, 0xE0, + 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0x80, 0x3F, 0xFF, 0x00, 0x7F, 0xFE, 0x00, + 0xFE, 0x00, 0x7F, 0x80, 0x01, 0xFF, 0xF0, 0x01, 0xFF, 0xFE, 0x01, 0xFF, + 0xFF, 0x81, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0xF1, 0xFF, 0x07, 0xFC, 0xFF, + 0x01, 0xFE, 0x7F, 0x00, 0x7F, 0x7F, 0x80, 0x3F, 0xFF, 0x80, 0x0F, 0xFF, + 0xC0, 0x07, 0xFF, 0xE0, 0x03, 0xFF, 0xF0, 0x01, 0xFF, 0xF8, 0x00, 0xFF, + 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0x7F, 0xBF, 0x80, 0x3F, 0x9F, 0xE0, 0x3F, + 0xCF, 0xF8, 0x3F, 0xE3, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xF0, 0x3F, 0xFF, + 0xF0, 0x0F, 0xFF, 0xF0, 0x03, 0xFF, 0xE0, 0x00, 0x3F, 0xC0, 0x00, 0xFE, + 0x1F, 0x80, 0x7F, 0x3F, 0xF0, 0x3F, 0xBF, 0xFE, 0x1F, 0xDF, 0xFF, 0x8F, + 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0xF3, 0xFF, 0x07, 0xFD, 0xFF, 0x01, 0xFE, + 0xFF, 0x00, 0x7F, 0x7F, 0x80, 0x3F, 0xFF, 0x80, 0x0F, 0xFF, 0xC0, 0x07, + 0xFF, 0xE0, 0x03, 0xFF, 0xF0, 0x01, 0xFF, 0xF8, 0x00, 0xFF, 0xFC, 0x00, + 0x7F, 0xFF, 0x00, 0x7F, 0xFF, 0x80, 0x3F, 0xBF, 0xE0, 0x3F, 0xDF, 0xF8, + 0x3F, 0xCF, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xE3, 0xFB, 0xFF, 0xE1, 0xFD, + 0xFF, 0xF0, 0xFE, 0x7F, 0xE0, 0x7F, 0x0F, 0xC0, 0x3F, 0x80, 0x00, 0x1F, + 0xC0, 0x00, 0x0F, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0x01, + 0xFC, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0x80, 0x00, + 0x1F, 0xC0, 0x00, 0x00, 0x00, 0xFC, 0x3F, 0x81, 0xFF, 0x9F, 0xC3, 0xFF, + 0xEF, 0xE1, 0xFF, 0xF7, 0xF1, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xFD, 0xFF, + 0x07, 0xFE, 0xFF, 0x01, 0xFF, 0x7F, 0x00, 0x7F, 0xFF, 0x80, 0x3F, 0xFF, + 0x80, 0x0F, 0xFF, 0xC0, 0x07, 0xFF, 0xE0, 0x03, 0xFF, 0xF0, 0x01, 0xFF, + 0xF8, 0x00, 0xFF, 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0x7F, 0xBF, 0x80, 0x3F, + 0xDF, 0xE0, 0x3F, 0xEF, 0xF8, 0x3F, 0xF3, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, + 0xFC, 0x7F, 0xFE, 0xFE, 0x1F, 0xFF, 0x7F, 0x03, 0xFF, 0x3F, 0x80, 0x7E, + 0x1F, 0xC0, 0x00, 0x0F, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xF8, 0x00, + 0x01, 0xFC, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0x80, + 0x00, 0x1F, 0xC0, 0x00, 0x0F, 0xE0, 0x00, 0x07, 0xF0, 0xFE, 0x1F, 0xFC, + 0x7F, 0xFB, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x7F, 0x80, + 0xFF, 0x01, 0xFC, 0x03, 0xF8, 0x07, 0xF0, 0x0F, 0xE0, 0x1F, 0xC0, 0x3F, + 0x80, 0x7F, 0x00, 0xFE, 0x01, 0xFC, 0x03, 0xF8, 0x07, 0xF0, 0x0F, 0xE0, + 0x1F, 0xC0, 0x3F, 0x80, 0x7F, 0x00, 0xFE, 0x00, 0x00, 0xFF, 0x00, 0x07, + 0xFF, 0xE0, 0x0F, 0xFF, 0xF8, 0x1F, 0xFF, 0xFC, 0x3F, 0xFF, 0xFC, 0x7F, + 0x81, 0xFE, 0x7F, 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0x7F, 0xC0, 0x00, 0x7F, + 0xFC, 0x00, 0x7F, 0xFF, 0x80, 0x3F, 0xFF, 0xF0, 0x1F, 0xFF, 0xFC, 0x07, + 0xFF, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x0F, 0xFF, 0x00, 0x01, 0xFF, 0x00, + 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0x7F, 0x00, 0x7F, 0x7F, 0x81, 0xFE, 0x7F, + 0xFF, 0xFE, 0x3F, 0xFF, 0xFC, 0x1F, 0xFF, 0xF8, 0x0F, 0xFF, 0xF0, 0x01, + 0xFF, 0x80, 0x3F, 0x83, 0xF8, 0x3F, 0x83, 0xF8, 0x3F, 0x83, 0xF8, 0x3F, + 0x8F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0xF8, 0x3F, 0x83, 0xF8, 0x3F, + 0x83, 0xF8, 0x3F, 0x83, 0xF8, 0x3F, 0x83, 0xF8, 0x3F, 0x83, 0xF8, 0x3F, + 0x83, 0xF8, 0x3F, 0x83, 0xF8, 0x3F, 0x83, 0xFF, 0x3F, 0xF1, 0xFF, 0x0F, + 0xF0, 0x7F, 0xFE, 0x00, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, 0x03, 0xFF, 0xF0, + 0x07, 0xFF, 0xE0, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0x80, 0x3F, 0xFF, 0x00, + 0x7F, 0xFE, 0x00, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, 0x03, 0xFF, 0xF0, 0x07, + 0xFF, 0xE0, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0x80, 0x3F, 0xFF, 0x00, 0x7F, + 0xFE, 0x00, 0xFF, 0xFC, 0x03, 0xFF, 0xFC, 0x07, 0xFF, 0xFC, 0x3F, 0xFF, + 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xDF, 0xFF, 0xBF, 0x9F, 0xFF, 0x7F, 0x1F, + 0xFC, 0xFE, 0x0F, 0xE0, 0x00, 0x7F, 0x00, 0x3F, 0xBF, 0x80, 0x1F, 0x9F, + 0xC0, 0x1F, 0xC7, 0xE0, 0x0F, 0xE3, 0xF8, 0x07, 0xE1, 0xFC, 0x07, 0xF0, + 0x7E, 0x03, 0xF8, 0x3F, 0x81, 0xF8, 0x1F, 0xC0, 0xFC, 0x07, 0xE0, 0xFE, + 0x03, 0xF8, 0x7E, 0x00, 0xFC, 0x3F, 0x00, 0x7E, 0x1F, 0x80, 0x3F, 0x1F, + 0x80, 0x0F, 0xCF, 0xC0, 0x07, 0xE7, 0xE0, 0x03, 0xF7, 0xE0, 0x00, 0xFF, + 0xF0, 0x00, 0x7F, 0xF8, 0x00, 0x3F, 0xF8, 0x00, 0x0F, 0xFC, 0x00, 0x07, + 0xFE, 0x00, 0x03, 0xFE, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x7F, 0x00, 0x00, + 0xFC, 0x03, 0xF8, 0x0F, 0xFF, 0xC0, 0x7F, 0x01, 0xFF, 0xF8, 0x0F, 0xE0, + 0x3F, 0x3F, 0x03, 0xFE, 0x07, 0xE7, 0xE0, 0x7F, 0xC1, 0xFC, 0xFE, 0x0F, + 0xF8, 0x3F, 0x9F, 0xC1, 0xFF, 0x07, 0xE1, 0xF8, 0x3D, 0xE0, 0xFC, 0x3F, + 0x0F, 0xBE, 0x3F, 0x87, 0xF1, 0xF7, 0xC7, 0xE0, 0x7E, 0x3E, 0xF8, 0xFC, + 0x0F, 0xC7, 0xDF, 0x1F, 0x81, 0xF9, 0xF1, 0xE3, 0xF0, 0x3F, 0x3E, 0x3E, + 0xFC, 0x03, 0xF7, 0xC7, 0xDF, 0x80, 0x7E, 0xF8, 0xFB, 0xF0, 0x0F, 0xDE, + 0x1F, 0x7C, 0x00, 0xFF, 0xC1, 0xFF, 0x80, 0x1F, 0xF8, 0x3F, 0xF0, 0x03, + 0xFF, 0x07, 0xFE, 0x00, 0x7F, 0xC0, 0xFF, 0x80, 0x07, 0xF8, 0x1F, 0xF0, + 0x00, 0xFF, 0x01, 0xFE, 0x00, 0x1F, 0xE0, 0x3F, 0x80, 0x01, 0xFC, 0x07, + 0xF0, 0x00, 0xFF, 0x00, 0xFF, 0x7F, 0x81, 0xFE, 0x3F, 0x81, 0xFC, 0x3F, + 0xC3, 0xFC, 0x1F, 0xC3, 0xF8, 0x0F, 0xE7, 0xF0, 0x0F, 0xEF, 0xF0, 0x07, + 0xFF, 0xE0, 0x03, 0xFF, 0xC0, 0x03, 0xFF, 0xC0, 0x01, 0xFF, 0x80, 0x00, + 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x01, 0xFF, 0x80, 0x03, + 0xFF, 0xC0, 0x07, 0xFF, 0xC0, 0x07, 0xFF, 0xE0, 0x0F, 0xE7, 0xF0, 0x1F, + 0xE7, 0xF0, 0x1F, 0xC3, 0xF8, 0x3F, 0xC3, 0xFC, 0x7F, 0x81, 0xFC, 0x7F, + 0x01, 0xFE, 0xFF, 0x00, 0xFF, 0x7F, 0x00, 0x3F, 0xBF, 0x80, 0x1F, 0xDF, + 0xC0, 0x0F, 0xC7, 0xF0, 0x07, 0xE3, 0xF8, 0x07, 0xF1, 0xFC, 0x03, 0xF0, + 0x7F, 0x01, 0xF8, 0x3F, 0x81, 0xFC, 0x0F, 0xC0, 0xFC, 0x07, 0xF0, 0x7E, + 0x03, 0xF8, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0x7E, 0x1F, 0x80, 0x3F, 0x8F, + 0xC0, 0x0F, 0xCF, 0xC0, 0x07, 0xE7, 0xE0, 0x03, 0xFB, 0xF0, 0x00, 0xFD, + 0xF0, 0x00, 0x7F, 0xF8, 0x00, 0x3F, 0xFC, 0x00, 0x0F, 0xFC, 0x00, 0x07, + 0xFE, 0x00, 0x03, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x7F, 0x80, 0x00, + 0x1F, 0xC0, 0x00, 0x0F, 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x03, 0xF0, 0x00, + 0x03, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0x1F, 0xF8, 0x00, 0x0F, 0xFC, 0x00, + 0x07, 0xFC, 0x00, 0x03, 0xFC, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x7F, 0xFF, + 0xFB, 0xFF, 0xFF, 0xDF, 0xFF, 0xFE, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xBF, + 0xFF, 0xFC, 0x00, 0x3F, 0xE0, 0x03, 0xFE, 0x00, 0x1F, 0xE0, 0x01, 0xFE, + 0x00, 0x1F, 0xE0, 0x01, 0xFE, 0x00, 0x1F, 0xE0, 0x01, 0xFE, 0x00, 0x1F, + 0xE0, 0x01, 0xFE, 0x00, 0x1F, 0xE0, 0x01, 0xFE, 0x00, 0x1F, 0xE0, 0x01, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xF8, 0x01, 0xF8, 0x1F, 0xC1, 0xFE, 0x0F, 0xF0, 0xFF, + 0x87, 0xE0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x1F, 0x00, + 0xF8, 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x3F, + 0x0F, 0xF0, 0x7F, 0x03, 0xF8, 0x1F, 0xE0, 0x1F, 0x80, 0x7C, 0x03, 0xE0, + 0x1F, 0x00, 0xF8, 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, + 0xE0, 0x1F, 0x00, 0xF8, 0x07, 0xE0, 0x3F, 0xE0, 0xFF, 0x07, 0xF8, 0x1F, + 0xC0, 0x7E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFC, 0x07, 0xF0, 0x3F, 0xC1, 0xFE, 0x0F, 0xF8, 0x0F, 0xC0, 0x3E, 0x01, + 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x07, 0xC0, 0x3E, + 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x1F, 0x80, 0x7F, 0x81, 0xFC, + 0x0F, 0xE0, 0xFF, 0x0F, 0xC0, 0x7C, 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x07, + 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x1F, 0x00, 0xF8, + 0x0F, 0xC3, 0xFE, 0x1F, 0xE0, 0xFF, 0x07, 0xF0, 0x3F, 0x00, 0x1F, 0x00, + 0x03, 0xFE, 0x00, 0x1F, 0xF8, 0x0F, 0xFF, 0xF0, 0xFF, 0x0F, 0xFF, 0xF0, + 0x1F, 0xF8, 0x00, 0x7F, 0x80, 0x00, 0xF8}; + +const GFXglyph FreeSansBold24pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 13, 0, 1}, // 0x20 ' ' + {0, 7, 34, 16, 5, -33}, // 0x21 '!' + {30, 18, 12, 22, 2, -33}, // 0x22 '"' + {57, 26, 33, 26, 0, -31}, // 0x23 '#' + {165, 25, 40, 26, 1, -34}, // 0x24 '$' + {290, 39, 34, 42, 1, -32}, // 0x25 '%' + {456, 30, 35, 34, 3, -33}, // 0x26 '&' + {588, 7, 12, 12, 3, -33}, // 0x27 ''' + {599, 13, 44, 16, 2, -33}, // 0x28 '(' + {671, 13, 44, 16, 1, -33}, // 0x29 ')' + {743, 15, 15, 18, 1, -33}, // 0x2A '*' + {772, 23, 22, 27, 2, -21}, // 0x2B '+' + {836, 7, 15, 12, 2, -6}, // 0x2C ',' + {850, 13, 6, 16, 1, -15}, // 0x2D '-' + {860, 7, 7, 12, 2, -6}, // 0x2E '.' + {867, 13, 34, 13, 0, -32}, // 0x2F '/' + {923, 24, 35, 26, 1, -33}, // 0x30 '0' + {1028, 14, 33, 26, 4, -32}, // 0x31 '1' + {1086, 23, 34, 26, 2, -33}, // 0x32 '2' + {1184, 23, 35, 26, 2, -33}, // 0x33 '3' + {1285, 22, 33, 26, 2, -32}, // 0x34 '4' + {1376, 23, 34, 26, 2, -32}, // 0x35 '5' + {1474, 23, 35, 26, 2, -33}, // 0x36 '6' + {1575, 23, 33, 26, 1, -32}, // 0x37 '7' + {1670, 24, 35, 26, 1, -33}, // 0x38 '8' + {1775, 24, 35, 26, 1, -33}, // 0x39 '9' + {1880, 7, 25, 12, 2, -24}, // 0x3A ':' + {1902, 7, 33, 12, 2, -24}, // 0x3B ';' + {1931, 23, 23, 27, 2, -22}, // 0x3C '<' + {1998, 23, 18, 27, 2, -19}, // 0x3D '=' + {2050, 23, 23, 27, 2, -22}, // 0x3E '>' + {2117, 24, 35, 29, 3, -34}, // 0x3F '?' + {2222, 43, 41, 46, 1, -34}, // 0x40 '@' + {2443, 32, 34, 33, 0, -33}, // 0x41 'A' + {2579, 27, 34, 33, 4, -33}, // 0x42 'B' + {2694, 30, 36, 34, 2, -34}, // 0x43 'C' + {2829, 28, 34, 34, 4, -33}, // 0x44 'D' + {2948, 25, 34, 31, 4, -33}, // 0x45 'E' + {3055, 24, 34, 30, 4, -33}, // 0x46 'F' + {3157, 31, 36, 36, 2, -34}, // 0x47 'G' + {3297, 27, 34, 35, 4, -33}, // 0x48 'H' + {3412, 7, 34, 15, 4, -33}, // 0x49 'I' + {3442, 22, 35, 27, 1, -33}, // 0x4A 'J' + {3539, 30, 34, 34, 4, -33}, // 0x4B 'K' + {3667, 23, 34, 29, 4, -33}, // 0x4C 'L' + {3765, 33, 34, 41, 4, -33}, // 0x4D 'M' + {3906, 28, 34, 35, 4, -33}, // 0x4E 'N' + {4025, 33, 36, 37, 2, -34}, // 0x4F 'O' + {4174, 26, 34, 32, 4, -33}, // 0x50 'P' + {4285, 33, 37, 37, 2, -34}, // 0x51 'Q' + {4438, 28, 34, 34, 4, -33}, // 0x52 'R' + {4557, 28, 36, 32, 2, -34}, // 0x53 'S' + {4683, 27, 34, 30, 2, -33}, // 0x54 'T' + {4798, 27, 35, 35, 4, -33}, // 0x55 'U' + {4917, 29, 34, 31, 1, -33}, // 0x56 'V' + {5041, 43, 34, 45, 1, -33}, // 0x57 'W' + {5224, 30, 34, 32, 1, -33}, // 0x58 'X' + {5352, 29, 34, 30, 1, -33}, // 0x59 'Y' + {5476, 26, 34, 29, 1, -33}, // 0x5A 'Z' + {5587, 11, 43, 16, 3, -33}, // 0x5B '[' + {5647, 14, 34, 13, -1, -32}, // 0x5C '\' + {5707, 11, 43, 16, 1, -33}, // 0x5D ']' + {5767, 22, 20, 27, 3, -32}, // 0x5E '^' + {5822, 28, 4, 26, -1, 6}, // 0x5F '_' + {5836, 9, 7, 12, 1, -35}, // 0x60 '`' + {5844, 24, 26, 27, 2, -24}, // 0x61 'a' + {5922, 25, 35, 29, 3, -33}, // 0x62 'b' + {6032, 23, 26, 26, 2, -24}, // 0x63 'c' + {6107, 25, 35, 29, 2, -33}, // 0x64 'd' + {6217, 24, 26, 27, 2, -24}, // 0x65 'e' + {6295, 14, 34, 16, 1, -33}, // 0x66 'f' + {6355, 24, 36, 29, 2, -24}, // 0x67 'g' + {6463, 23, 34, 28, 3, -33}, // 0x68 'h' + {6561, 7, 34, 13, 3, -33}, // 0x69 'i' + {6591, 10, 45, 13, 0, -33}, // 0x6A 'j' + {6648, 23, 34, 27, 3, -33}, // 0x6B 'k' + {6746, 7, 34, 13, 3, -33}, // 0x6C 'l' + {6776, 36, 25, 42, 3, -24}, // 0x6D 'm' + {6889, 23, 25, 29, 3, -24}, // 0x6E 'n' + {6961, 25, 26, 29, 2, -24}, // 0x6F 'o' + {7043, 25, 36, 29, 3, -24}, // 0x70 'p' + {7156, 25, 36, 29, 2, -24}, // 0x71 'q' + {7269, 15, 25, 18, 3, -24}, // 0x72 'r' + {7316, 24, 26, 26, 1, -24}, // 0x73 's' + {7394, 12, 32, 16, 2, -30}, // 0x74 't' + {7442, 23, 26, 29, 3, -24}, // 0x75 'u' + {7517, 25, 25, 25, 0, -24}, // 0x76 'v' + {7596, 35, 25, 37, 1, -24}, // 0x77 'w' + {7706, 24, 25, 26, 1, -24}, // 0x78 'x' + {7781, 25, 36, 26, 0, -24}, // 0x79 'y' + {7894, 21, 25, 24, 1, -24}, // 0x7A 'z' + {7960, 13, 43, 18, 2, -33}, // 0x7B '{' + {8030, 4, 44, 13, 5, -33}, // 0x7C '|' + {8052, 13, 43, 18, 3, -33}, // 0x7D '}' + {8122, 21, 8, 23, 1, -14}}; // 0x7E '~' + +const GFXfont FreeSansBold24pt7b PROGMEM = { + (uint8_t *)FreeSansBold24pt7bBitmaps, (GFXglyph *)FreeSansBold24pt7bGlyphs, + 0x20, 0x7E, 56}; + +// Approx. 8815 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBold9pt7b.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBold9pt7b.h new file mode 100644 index 0000000..cffb178 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBold9pt7b.h @@ -0,0 +1,210 @@ +#pragma once +#include + +const uint8_t FreeSansBold9pt7bBitmaps[] PROGMEM = { + 0xFF, 0xFF, 0xFE, 0x48, 0x7E, 0xEF, 0xDF, 0xBF, 0x74, 0x40, 0x19, 0x86, + 0x67, 0xFD, 0xFF, 0x33, 0x0C, 0xC3, 0x33, 0xFE, 0xFF, 0x99, 0x86, 0x61, + 0x90, 0x10, 0x1F, 0x1F, 0xDE, 0xFF, 0x3F, 0x83, 0xC0, 0xFC, 0x1F, 0x09, + 0xFC, 0xFE, 0xF7, 0xF1, 0xE0, 0x40, 0x38, 0x10, 0x7C, 0x30, 0xC6, 0x20, + 0xC6, 0x40, 0xC6, 0x40, 0x7C, 0x80, 0x39, 0x9C, 0x01, 0x3E, 0x03, 0x63, + 0x02, 0x63, 0x04, 0x63, 0x0C, 0x3E, 0x08, 0x1C, 0x0E, 0x01, 0xF8, 0x3B, + 0x83, 0xB8, 0x3F, 0x01, 0xE0, 0x3E, 0x67, 0x76, 0xE3, 0xEE, 0x1C, 0xF3, + 0xC7, 0xFE, 0x3F, 0x70, 0xFF, 0xF4, 0x18, 0x63, 0x1C, 0x73, 0x8E, 0x38, + 0xE3, 0x8E, 0x18, 0x70, 0xC3, 0x06, 0x08, 0x61, 0x83, 0x0E, 0x38, 0x71, + 0xC7, 0x1C, 0x71, 0xC6, 0x38, 0xE3, 0x18, 0x40, 0x21, 0x3E, 0x45, 0x28, + 0x38, 0x70, 0xE7, 0xFF, 0xE7, 0x0E, 0x1C, 0xFC, 0x9C, 0xFF, 0xC0, 0xFC, + 0x08, 0xC4, 0x23, 0x10, 0x84, 0x62, 0x11, 0x88, 0x00, 0x3E, 0x3F, 0x9D, + 0xDC, 0x7E, 0x3F, 0x1F, 0x8F, 0xC7, 0xE3, 0xF1, 0xDD, 0xCF, 0xE3, 0xE0, + 0x08, 0xFF, 0xF3, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x80, 0x3E, 0x3F, 0xB8, + 0xFC, 0x70, 0x38, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x0F, 0xF7, 0xF8, + 0x3C, 0x7F, 0xE7, 0xE7, 0x07, 0x0C, 0x0E, 0x07, 0x07, 0xE7, 0xE7, 0x7E, + 0x3C, 0x0E, 0x1E, 0x1E, 0x2E, 0x2E, 0x4E, 0x4E, 0x8E, 0xFF, 0xFF, 0x0E, + 0x0E, 0x0E, 0x7F, 0x3F, 0x90, 0x18, 0x0D, 0xE7, 0xFB, 0x9E, 0x07, 0x03, + 0x81, 0xF1, 0xFF, 0xE7, 0xC0, 0x3E, 0x3F, 0x9C, 0xFC, 0x0E, 0xE7, 0xFB, + 0xDF, 0xC7, 0xE3, 0xF1, 0xDD, 0xEF, 0xE3, 0xE0, 0xFF, 0xFF, 0xC0, 0xE0, + 0xE0, 0x60, 0x70, 0x30, 0x38, 0x1C, 0x0C, 0x0E, 0x07, 0x03, 0x80, 0x3F, + 0x1F, 0xEE, 0x3F, 0x87, 0xE3, 0xCF, 0xC7, 0xFB, 0xCF, 0xE1, 0xF8, 0x7F, + 0x3D, 0xFE, 0x3F, 0x00, 0x3E, 0x3F, 0xBD, 0xDC, 0x7E, 0x3F, 0x1F, 0xDE, + 0xFF, 0x3B, 0x81, 0xF9, 0xCF, 0xE3, 0xC0, 0xFC, 0x00, 0x07, 0xE0, 0xFC, + 0x00, 0x07, 0xE5, 0xE0, 0x00, 0x83, 0xC7, 0xDF, 0x0C, 0x07, 0x80, 0xF8, + 0x1F, 0x01, 0x80, 0xFF, 0xFF, 0xC0, 0x00, 0x0F, 0xFF, 0xFC, 0x00, 0x70, + 0x3F, 0x03, 0xE0, 0x38, 0x7D, 0xF1, 0xE0, 0x80, 0x00, 0x3E, 0x3F, 0xB8, + 0xFC, 0x70, 0x38, 0x1C, 0x1C, 0x1C, 0x1C, 0x0E, 0x00, 0x03, 0x81, 0xC0, + 0x03, 0xF0, 0x0F, 0xFC, 0x1E, 0x0E, 0x38, 0x02, 0x70, 0xE9, 0x63, 0x19, + 0xC2, 0x19, 0xC6, 0x11, 0xC6, 0x33, 0xC6, 0x32, 0x63, 0xFE, 0x73, 0xDC, + 0x3C, 0x00, 0x1F, 0xF8, 0x07, 0xF0, 0x07, 0x00, 0xF0, 0x0F, 0x80, 0xF8, + 0x1D, 0x81, 0x9C, 0x19, 0xC3, 0x8C, 0x3F, 0xE7, 0xFE, 0x70, 0x66, 0x07, + 0xE0, 0x70, 0xFF, 0x9F, 0xFB, 0x83, 0xF0, 0x7E, 0x0F, 0xFF, 0x3F, 0xF7, + 0x06, 0xE0, 0xFC, 0x1F, 0x83, 0xFF, 0xEF, 0xF8, 0x1F, 0x83, 0xFE, 0x78, + 0xE7, 0x07, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x07, 0x07, 0x78, + 0xF3, 0xFE, 0x1F, 0x80, 0xFF, 0x8F, 0xFC, 0xE0, 0xEE, 0x0E, 0xE0, 0x7E, + 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x0E, 0xE0, 0xEF, 0xFC, 0xFF, 0x80, + 0xFF, 0xFF, 0xF8, 0x1C, 0x0E, 0x07, 0xFB, 0xFD, 0xC0, 0xE0, 0x70, 0x38, + 0x1F, 0xFF, 0xF8, 0xFF, 0xFF, 0xF8, 0x1C, 0x0E, 0x07, 0xFB, 0xFD, 0xC0, + 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x00, 0x0F, 0x87, 0xF9, 0xE3, 0xB8, 0x3E, + 0x01, 0xC0, 0x38, 0xFF, 0x1F, 0xE0, 0x6E, 0x0D, 0xE3, 0x9F, 0xD0, 0xF2, + 0xE0, 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xFF, 0xFF, 0xFF, 0x07, 0xE0, + 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x07, + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0xE7, 0xE7, 0xE7, 0x7E, 0x3C, + 0xE0, 0xEE, 0x1C, 0xE3, 0x8E, 0x70, 0xEE, 0x0F, 0xC0, 0xFE, 0x0F, 0x70, + 0xE7, 0x0E, 0x38, 0xE1, 0xCE, 0x0E, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, + 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xFF, 0xFF, 0xF8, 0x7F, 0xE1, + 0xFF, 0x87, 0xFE, 0x1F, 0xEC, 0x7F, 0xB3, 0x7E, 0xCD, 0xFB, 0x37, 0xEC, + 0xDF, 0x9E, 0x7E, 0x79, 0xF9, 0xE7, 0xE7, 0x9C, 0xE0, 0xFE, 0x1F, 0xC3, + 0xFC, 0x7F, 0xCF, 0xD9, 0xFB, 0xBF, 0x37, 0xE7, 0xFC, 0x7F, 0x87, 0xF0, + 0xFE, 0x0E, 0x0F, 0x81, 0xFF, 0x1E, 0x3C, 0xE0, 0xEE, 0x03, 0xF0, 0x1F, + 0x80, 0xFC, 0x07, 0xE0, 0x3B, 0x83, 0x9E, 0x3C, 0x7F, 0xC0, 0xF8, 0x00, + 0xFF, 0x9F, 0xFB, 0x87, 0xF0, 0x7E, 0x0F, 0xC3, 0xFF, 0xF7, 0xFC, 0xE0, + 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x00, 0x0F, 0x81, 0xFF, 0x1E, 0x3C, 0xE0, + 0xEE, 0x03, 0xF0, 0x1F, 0x80, 0xFC, 0x07, 0xE1, 0xBB, 0x8F, 0x9E, 0x3C, + 0x7F, 0xE0, 0xFB, 0x80, 0x08, 0xFF, 0x8F, 0xFC, 0xE0, 0xEE, 0x0E, 0xE0, + 0xEE, 0x0E, 0xFF, 0xCF, 0xFC, 0xE0, 0xEE, 0x0E, 0xE0, 0xEE, 0x0E, 0xE0, + 0xF0, 0x3F, 0x0F, 0xFB, 0xC7, 0xF0, 0x7E, 0x01, 0xFC, 0x1F, 0xF0, 0x3F, + 0x00, 0xFC, 0x1D, 0xC7, 0xBF, 0xE1, 0xF8, 0xFF, 0xFF, 0xC7, 0x03, 0x81, + 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0xFC, + 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x07, 0xE0, 0xFC, 0x1F, + 0xC7, 0xBF, 0xE1, 0xF0, 0x60, 0x67, 0x0E, 0x70, 0xE3, 0x0C, 0x30, 0xC3, + 0x9C, 0x19, 0x81, 0x98, 0x1F, 0x80, 0xF0, 0x0F, 0x00, 0xF0, 0x06, 0x00, + 0x61, 0xC3, 0xB8, 0xE1, 0x9C, 0x70, 0xCE, 0x3C, 0xE3, 0x36, 0x71, 0x9B, + 0x30, 0xED, 0x98, 0x36, 0x7C, 0x1B, 0x3C, 0x0F, 0x1E, 0x07, 0x8F, 0x01, + 0xC3, 0x80, 0xE1, 0x80, 0x70, 0xE7, 0x8E, 0x39, 0xC1, 0xF8, 0x1F, 0x80, + 0xF0, 0x07, 0x00, 0xF0, 0x1F, 0x81, 0x9C, 0x39, 0xC7, 0x0E, 0x70, 0xE0, + 0xE0, 0xFC, 0x39, 0xC7, 0x18, 0xC3, 0xB8, 0x36, 0x07, 0xC0, 0x70, 0x0E, + 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0xFF, 0xFF, 0xC0, 0xE0, 0xE0, 0xF0, + 0x70, 0x70, 0x70, 0x78, 0x38, 0x38, 0x1F, 0xFF, 0xF8, 0xFF, 0xEE, 0xEE, + 0xEE, 0xEE, 0xEE, 0xEE, 0xEF, 0xF0, 0x86, 0x10, 0x86, 0x10, 0x84, 0x30, + 0x84, 0x30, 0x80, 0xFF, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x7F, 0xF0, + 0x18, 0x1C, 0x3C, 0x3E, 0x36, 0x66, 0x63, 0xC3, 0xFF, 0xC0, 0xCC, 0x3F, + 0x1F, 0xEE, 0x38, 0x0E, 0x3F, 0x9E, 0xEE, 0x3B, 0x9E, 0xFF, 0x9E, 0xE0, + 0xE0, 0x38, 0x0E, 0x03, 0xBC, 0xFF, 0xBC, 0xEE, 0x1F, 0x87, 0xE1, 0xF8, + 0x7F, 0x3B, 0xFE, 0xEF, 0x00, 0x1F, 0x3F, 0xDC, 0x7C, 0x0E, 0x07, 0x03, + 0x80, 0xE3, 0x7F, 0x8F, 0x00, 0x03, 0x81, 0xC0, 0xE7, 0x77, 0xFB, 0xBF, + 0x8F, 0xC7, 0xE3, 0xF1, 0xFD, 0xEF, 0xF3, 0xB8, 0x3E, 0x3F, 0x9C, 0xDC, + 0x3F, 0xFF, 0xFF, 0x81, 0xC3, 0x7F, 0x8F, 0x00, 0x3B, 0xDD, 0xFF, 0xB9, + 0xCE, 0x73, 0x9C, 0xE7, 0x00, 0x3B, 0xBF, 0xDD, 0xFC, 0x7E, 0x3F, 0x1F, + 0x8F, 0xEF, 0x7F, 0x9D, 0xC0, 0xFC, 0x77, 0xF1, 0xF0, 0xE0, 0x70, 0x38, + 0x1D, 0xEF, 0xFF, 0x9F, 0x8F, 0xC7, 0xE3, 0xF1, 0xF8, 0xFC, 0x7E, 0x38, + 0xFC, 0x7F, 0xFF, 0xFF, 0xFE, 0x77, 0x07, 0x77, 0x77, 0x77, 0x77, 0x77, + 0x7F, 0xE0, 0xE0, 0x70, 0x38, 0x1C, 0x7E, 0x77, 0x73, 0xF1, 0xF8, 0xFE, + 0x77, 0x39, 0xDC, 0x6E, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xEF, 0x7B, + 0xFF, 0xFE, 0x39, 0xF8, 0xE7, 0xE3, 0x9F, 0x8E, 0x7E, 0x39, 0xF8, 0xE7, + 0xE3, 0x9F, 0x8E, 0x70, 0xEF, 0x7F, 0xF8, 0xFC, 0x7E, 0x3F, 0x1F, 0x8F, + 0xC7, 0xE3, 0xF1, 0xC0, 0x1E, 0x1F, 0xE7, 0x3B, 0x87, 0xE1, 0xF8, 0x7E, + 0x1D, 0xCE, 0x7F, 0x87, 0x80, 0xEF, 0x3F, 0xEF, 0x3B, 0x87, 0xE1, 0xF8, + 0x7E, 0x1F, 0xCE, 0xFF, 0xBB, 0xCE, 0x03, 0x80, 0xE0, 0x38, 0x00, 0x3B, + 0xBF, 0xFD, 0xFC, 0x7E, 0x3F, 0x1F, 0x8F, 0xEF, 0x7F, 0x9D, 0xC0, 0xE0, + 0x70, 0x38, 0x1C, 0xEF, 0xFF, 0x38, 0xE3, 0x8E, 0x38, 0xE3, 0x80, 0x3E, + 0x3F, 0xB8, 0xFC, 0x0F, 0xC3, 0xFC, 0x3F, 0xC7, 0xFF, 0x1F, 0x00, 0x73, + 0xBF, 0xF7, 0x39, 0xCE, 0x73, 0x9E, 0x70, 0xE3, 0xF1, 0xF8, 0xFC, 0x7E, + 0x3F, 0x1F, 0x8F, 0xC7, 0xFF, 0xBD, 0xC0, 0xE1, 0x98, 0x67, 0x39, 0xCC, + 0x33, 0x0D, 0xC3, 0xE0, 0x78, 0x1E, 0x07, 0x00, 0xE3, 0x1D, 0x9E, 0x66, + 0x79, 0x99, 0xE6, 0x77, 0xB8, 0xD2, 0xC3, 0xCF, 0x0F, 0x3C, 0x3C, 0xF0, + 0x73, 0x80, 0x73, 0x9C, 0xE3, 0xF0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0xFC, + 0x73, 0x9C, 0xE0, 0xE1, 0xD8, 0x67, 0x39, 0xCE, 0x33, 0x0E, 0xC3, 0xE0, + 0x78, 0x1E, 0x03, 0x00, 0xC0, 0x70, 0x38, 0x0E, 0x00, 0xFE, 0xFE, 0x0E, + 0x1C, 0x38, 0x38, 0x70, 0xE0, 0xFF, 0xFF, 0x37, 0x66, 0x66, 0x6E, 0xE6, + 0x66, 0x66, 0x67, 0x30, 0xFF, 0xFF, 0x80, 0xCE, 0x66, 0x66, 0x67, 0x76, + 0x66, 0x66, 0x6E, 0xC0, 0x71, 0x8E}; + +const GFXglyph FreeSansBold9pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 5, 0, 1}, // 0x20 ' ' + {0, 3, 13, 6, 2, -12}, // 0x21 '!' + {5, 7, 5, 9, 1, -12}, // 0x22 '"' + {10, 10, 12, 10, 0, -11}, // 0x23 '#' + {25, 9, 15, 10, 1, -13}, // 0x24 '$' + {42, 16, 13, 16, 0, -12}, // 0x25 '%' + {68, 12, 13, 13, 1, -12}, // 0x26 '&' + {88, 3, 5, 5, 1, -12}, // 0x27 ''' + {90, 6, 17, 6, 1, -12}, // 0x28 '(' + {103, 6, 17, 6, 0, -12}, // 0x29 ')' + {116, 5, 6, 7, 1, -12}, // 0x2A '*' + {120, 7, 8, 11, 2, -7}, // 0x2B '+' + {127, 3, 5, 4, 1, -1}, // 0x2C ',' + {129, 5, 2, 6, 0, -5}, // 0x2D '-' + {131, 3, 2, 4, 1, -1}, // 0x2E '.' + {132, 5, 13, 5, 0, -12}, // 0x2F '/' + {141, 9, 13, 10, 1, -12}, // 0x30 '0' + {156, 5, 13, 10, 2, -12}, // 0x31 '1' + {165, 9, 13, 10, 1, -12}, // 0x32 '2' + {180, 8, 13, 10, 1, -12}, // 0x33 '3' + {193, 8, 13, 10, 2, -12}, // 0x34 '4' + {206, 9, 13, 10, 1, -12}, // 0x35 '5' + {221, 9, 13, 10, 1, -12}, // 0x36 '6' + {236, 9, 13, 10, 0, -12}, // 0x37 '7' + {251, 10, 13, 10, 0, -12}, // 0x38 '8' + {268, 9, 13, 10, 1, -12}, // 0x39 '9' + {283, 3, 9, 4, 1, -8}, // 0x3A ':' + {287, 3, 12, 4, 1, -8}, // 0x3B ';' + {292, 9, 9, 11, 1, -8}, // 0x3C '<' + {303, 9, 6, 11, 1, -6}, // 0x3D '=' + {310, 9, 9, 11, 1, -8}, // 0x3E '>' + {321, 9, 13, 11, 1, -12}, // 0x3F '?' + {336, 16, 15, 18, 0, -12}, // 0x40 '@' + {366, 12, 13, 13, 0, -12}, // 0x41 'A' + {386, 11, 13, 13, 1, -12}, // 0x42 'B' + {404, 12, 13, 13, 1, -12}, // 0x43 'C' + {424, 12, 13, 13, 1, -12}, // 0x44 'D' + {444, 9, 13, 12, 1, -12}, // 0x45 'E' + {459, 9, 13, 11, 1, -12}, // 0x46 'F' + {474, 11, 13, 14, 1, -12}, // 0x47 'G' + {492, 11, 13, 13, 1, -12}, // 0x48 'H' + {510, 3, 13, 6, 1, -12}, // 0x49 'I' + {515, 8, 13, 10, 1, -12}, // 0x4A 'J' + {528, 12, 13, 13, 1, -12}, // 0x4B 'K' + {548, 8, 13, 11, 1, -12}, // 0x4C 'L' + {561, 14, 13, 16, 1, -12}, // 0x4D 'M' + {584, 11, 13, 14, 1, -12}, // 0x4E 'N' + {602, 13, 13, 14, 1, -12}, // 0x4F 'O' + {624, 11, 13, 12, 1, -12}, // 0x50 'P' + {642, 13, 14, 14, 1, -12}, // 0x51 'Q' + {665, 12, 13, 13, 1, -12}, // 0x52 'R' + {685, 11, 13, 12, 1, -12}, // 0x53 'S' + {703, 9, 13, 12, 2, -12}, // 0x54 'T' + {718, 11, 13, 13, 1, -12}, // 0x55 'U' + {736, 12, 13, 12, 0, -12}, // 0x56 'V' + {756, 17, 13, 17, 0, -12}, // 0x57 'W' + {784, 12, 13, 12, 0, -12}, // 0x58 'X' + {804, 11, 13, 12, 1, -12}, // 0x59 'Y' + {822, 9, 13, 11, 1, -12}, // 0x5A 'Z' + {837, 4, 17, 6, 1, -12}, // 0x5B '[' + {846, 5, 13, 5, 0, -12}, // 0x5C '\' + {855, 4, 17, 6, 0, -12}, // 0x5D ']' + {864, 8, 8, 11, 1, -12}, // 0x5E '^' + {872, 10, 1, 10, 0, 4}, // 0x5F '_' + {874, 3, 2, 5, 0, -12}, // 0x60 '`' + {875, 10, 10, 10, 1, -9}, // 0x61 'a' + {888, 10, 13, 11, 1, -12}, // 0x62 'b' + {905, 9, 10, 10, 1, -9}, // 0x63 'c' + {917, 9, 13, 11, 1, -12}, // 0x64 'd' + {932, 9, 10, 10, 1, -9}, // 0x65 'e' + {944, 5, 13, 6, 1, -12}, // 0x66 'f' + {953, 9, 14, 11, 1, -9}, // 0x67 'g' + {969, 9, 13, 11, 1, -12}, // 0x68 'h' + {984, 3, 13, 5, 1, -12}, // 0x69 'i' + {989, 4, 17, 5, 0, -12}, // 0x6A 'j' + {998, 9, 13, 10, 1, -12}, // 0x6B 'k' + {1013, 3, 13, 5, 1, -12}, // 0x6C 'l' + {1018, 14, 10, 16, 1, -9}, // 0x6D 'm' + {1036, 9, 10, 11, 1, -9}, // 0x6E 'n' + {1048, 10, 10, 11, 1, -9}, // 0x6F 'o' + {1061, 10, 14, 11, 1, -9}, // 0x70 'p' + {1079, 9, 14, 11, 1, -9}, // 0x71 'q' + {1095, 6, 10, 7, 1, -9}, // 0x72 'r' + {1103, 9, 10, 10, 1, -9}, // 0x73 's' + {1115, 5, 12, 6, 1, -11}, // 0x74 't' + {1123, 9, 10, 11, 1, -9}, // 0x75 'u' + {1135, 10, 10, 10, 0, -9}, // 0x76 'v' + {1148, 14, 10, 14, 0, -9}, // 0x77 'w' + {1166, 10, 10, 10, 0, -9}, // 0x78 'x' + {1179, 10, 14, 10, 0, -9}, // 0x79 'y' + {1197, 8, 10, 9, 1, -9}, // 0x7A 'z' + {1207, 4, 17, 7, 1, -12}, // 0x7B '{' + {1216, 1, 17, 5, 2, -12}, // 0x7C '|' + {1219, 4, 17, 7, 2, -12}, // 0x7D '}' + {1228, 8, 2, 9, 0, -4}}; // 0x7E '~' + +const GFXfont FreeSansBold9pt7b PROGMEM = {(uint8_t *)FreeSansBold9pt7bBitmaps, + (GFXglyph *)FreeSansBold9pt7bGlyphs, + 0x20, 0x7E, 22}; + +// Approx. 1902 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBoldOblique12pt7b.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBoldOblique12pt7b.h new file mode 100644 index 0000000..ff76ce3 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBoldOblique12pt7b.h @@ -0,0 +1,319 @@ +#pragma once +#include + +const uint8_t FreeSansBoldOblique12pt7bBitmaps[] PROGMEM = { + 0x1C, 0x3C, 0x78, 0xE1, 0xC3, 0x8F, 0x1C, 0x38, 0x70, 0xC1, 0x83, 0x00, + 0x1C, 0x78, 0xF0, 0x71, 0xFC, 0xFE, 0x3B, 0x8E, 0xC3, 0x30, 0xC0, 0x01, + 0x8C, 0x07, 0x38, 0x0C, 0x61, 0xFF, 0xF3, 0xFF, 0xE7, 0xFF, 0x83, 0x9C, + 0x0E, 0x70, 0x1C, 0xE1, 0xFF, 0xF3, 0xFF, 0xC7, 0xFF, 0x83, 0x18, 0x0E, + 0x70, 0x18, 0xC0, 0x73, 0x80, 0x00, 0x40, 0x07, 0xF0, 0x3F, 0xF0, 0xFF, + 0xF3, 0xC9, 0xE7, 0xB3, 0xCF, 0x60, 0x1F, 0xC0, 0x3F, 0xC0, 0x3F, 0xE0, + 0x1F, 0xE0, 0x1B, 0xE0, 0x33, 0xDE, 0x47, 0xBC, 0x8F, 0x7F, 0x7C, 0x7F, + 0xF0, 0x7F, 0x80, 0x18, 0x00, 0x20, 0x00, 0xC0, 0x00, 0x00, 0x01, 0x87, + 0x80, 0xC3, 0xF0, 0x61, 0xFE, 0x10, 0xE1, 0x8C, 0x30, 0x66, 0x0C, 0x3B, + 0x03, 0xFC, 0x80, 0x7E, 0x60, 0x0F, 0x30, 0x00, 0x18, 0x70, 0x0C, 0x7E, + 0x03, 0x1F, 0xC1, 0x8E, 0x30, 0xC3, 0x1C, 0x60, 0xFE, 0x18, 0x1F, 0x8C, + 0x07, 0x80, 0x01, 0xE0, 0x07, 0xF0, 0x1F, 0xE0, 0x79, 0xC0, 0xF3, 0x81, + 0xEE, 0x01, 0xF8, 0x01, 0xE0, 0x1F, 0xC6, 0x7B, 0xDD, 0xE3, 0xF7, 0x87, + 0xEF, 0x07, 0x9F, 0x1F, 0x3F, 0xFF, 0x3F, 0xDE, 0x3F, 0x1C, 0x7F, 0xEE, + 0xCC, 0x03, 0x83, 0x81, 0x81, 0xC1, 0xC0, 0xE0, 0xE0, 0x70, 0x70, 0x38, + 0x3C, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x18, 0x0E, 0x07, + 0x01, 0x80, 0x06, 0x03, 0x81, 0xC0, 0x60, 0x38, 0x1C, 0x0E, 0x07, 0x03, + 0x81, 0xC0, 0xE0, 0xE0, 0x70, 0x38, 0x38, 0x1C, 0x1C, 0x0E, 0x0E, 0x06, + 0x07, 0x07, 0x00, 0x0C, 0x0C, 0x4F, 0xFF, 0x1C, 0x3C, 0x6C, 0x44, 0x03, + 0x80, 0x38, 0x07, 0x00, 0x70, 0x7F, 0xFF, 0xFF, 0xFF, 0xF0, 0xE0, 0x0E, + 0x00, 0xE0, 0x0C, 0x00, 0x7B, 0xDC, 0x23, 0x33, 0x00, 0x7F, 0xFF, 0xF0, + 0x7F, 0xE0, 0x00, 0xC0, 0x30, 0x18, 0x04, 0x03, 0x00, 0x80, 0x60, 0x10, + 0x0C, 0x02, 0x01, 0x80, 0x40, 0x30, 0x08, 0x06, 0x01, 0x00, 0xC0, 0x00, + 0x03, 0xC0, 0x7F, 0x87, 0xFC, 0x78, 0xF3, 0xC7, 0xBC, 0x3D, 0xE1, 0xEF, + 0x0F, 0xF0, 0x7F, 0x87, 0xBC, 0x3D, 0xE1, 0xEF, 0x1E, 0x78, 0xF3, 0xFF, + 0x0F, 0xF0, 0x3E, 0x00, 0x03, 0x83, 0x83, 0xCF, 0xEF, 0xF0, 0x78, 0x38, + 0x1C, 0x0E, 0x0F, 0x07, 0x03, 0x81, 0xC1, 0xE0, 0xF0, 0x70, 0x38, 0x00, + 0x03, 0xF0, 0x0F, 0xF8, 0x7F, 0xF8, 0xF1, 0xF3, 0xC1, 0xE7, 0x83, 0xC0, + 0x07, 0x80, 0x1E, 0x00, 0x78, 0x03, 0xE0, 0x0F, 0x00, 0x7C, 0x01, 0xE0, + 0x07, 0x00, 0x1F, 0xFC, 0x3F, 0xF8, 0xFF, 0xF0, 0x07, 0xE0, 0xFF, 0x8F, + 0xFE, 0xF8, 0xF7, 0x87, 0x80, 0x78, 0x0F, 0x80, 0xFC, 0x07, 0xE0, 0x0F, + 0x80, 0x3C, 0x01, 0xEF, 0x0F, 0x78, 0xF3, 0xFF, 0x8F, 0xF8, 0x3F, 0x00, + 0x00, 0x78, 0x07, 0xC0, 0x7E, 0x03, 0xF0, 0x37, 0x03, 0x38, 0x31, 0xC3, + 0x9E, 0x38, 0xF1, 0x87, 0x1F, 0xFE, 0xFF, 0xF7, 0xFF, 0x80, 0xF0, 0x07, + 0x00, 0x38, 0x03, 0xC0, 0x07, 0xFC, 0x1F, 0xF0, 0xFF, 0xC3, 0x00, 0x1C, + 0x00, 0x7F, 0x81, 0xFF, 0x0F, 0xFE, 0x38, 0xF8, 0x01, 0xE0, 0x07, 0x80, + 0x1E, 0xF0, 0xF3, 0xC7, 0xCF, 0xFE, 0x1F, 0xF0, 0x3F, 0x00, 0x03, 0xE0, + 0x7F, 0x87, 0xFE, 0x78, 0xF3, 0xC0, 0x3D, 0xE1, 0xFF, 0x8F, 0xFE, 0xF8, + 0xF7, 0xC7, 0xBC, 0x3D, 0xE1, 0xEF, 0x1E, 0x7C, 0xF3, 0xFF, 0x0F, 0xF0, + 0x1F, 0x00, 0x7F, 0xFB, 0xFF, 0xDF, 0xFE, 0x00, 0xE0, 0x0E, 0x00, 0xE0, + 0x0E, 0x00, 0xE0, 0x0F, 0x00, 0x70, 0x07, 0x00, 0x78, 0x03, 0x80, 0x3C, + 0x01, 0xC0, 0x0E, 0x00, 0xF0, 0x00, 0x03, 0xF0, 0x1F, 0xE0, 0xFF, 0xC7, + 0x8F, 0x1C, 0x3C, 0x71, 0xE0, 0xFF, 0x03, 0xF8, 0x3F, 0xF1, 0xF1, 0xE7, + 0x87, 0xBC, 0x1E, 0xF0, 0x7B, 0xE3, 0xCF, 0xFF, 0x1F, 0xF8, 0x1F, 0x80, + 0x03, 0xE0, 0x3F, 0xE1, 0xFF, 0x8F, 0x9F, 0x3C, 0x3D, 0xE0, 0xF7, 0x83, + 0xDE, 0x1F, 0x78, 0xFD, 0xFF, 0xE3, 0xFF, 0x87, 0xDE, 0x00, 0xF3, 0xC7, + 0x8F, 0xFE, 0x1F, 0xF0, 0x3F, 0x00, 0x1C, 0xF3, 0x80, 0x00, 0x00, 0x00, + 0x01, 0xCF, 0x38, 0x0E, 0x3C, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF1, + 0xE3, 0x81, 0x06, 0x18, 0x60, 0x00, 0x00, 0x01, 0xC0, 0x7E, 0x1F, 0xE7, + 0xF8, 0x7E, 0x03, 0xE0, 0x1F, 0xE0, 0x3F, 0xC0, 0x7F, 0x00, 0x78, 0x00, + 0xC0, 0x3F, 0xFC, 0xFF, 0xF3, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x07, + 0xFF, 0x9F, 0xFC, 0x7F, 0xF0, 0x30, 0x01, 0xE0, 0x0F, 0xE0, 0x3F, 0xC0, + 0x7F, 0x80, 0x7C, 0x07, 0xE1, 0xFE, 0x7F, 0x87, 0xE0, 0x38, 0x00, 0x00, + 0x00, 0x0F, 0xC1, 0xFF, 0x8F, 0xFC, 0xF1, 0xFF, 0x07, 0xF0, 0x3C, 0x01, + 0xE0, 0x1E, 0x01, 0xE0, 0x3E, 0x03, 0xE0, 0x1C, 0x01, 0xC0, 0x0E, 0x00, + 0x00, 0x07, 0x80, 0x3C, 0x01, 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x03, 0xFF, + 0x80, 0x3C, 0x0F, 0x01, 0xC0, 0x0E, 0x0E, 0x00, 0x1C, 0x70, 0xF7, 0x73, + 0x87, 0xF8, 0xCC, 0x31, 0xE3, 0x61, 0x87, 0x0D, 0x8C, 0x1C, 0x3C, 0x30, + 0x61, 0xB1, 0x81, 0x86, 0xC6, 0x0C, 0x3B, 0x18, 0x71, 0xCC, 0x63, 0xCE, + 0x31, 0xFB, 0xF0, 0xE3, 0xCF, 0x01, 0xC0, 0x00, 0x03, 0xC0, 0xC0, 0x07, + 0xFF, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x3E, 0x00, 0x3F, 0x00, 0x1F, 0x80, + 0x1F, 0xC0, 0x0F, 0xE0, 0x0F, 0xF0, 0x07, 0x7C, 0x07, 0x1E, 0x03, 0x8F, + 0x03, 0x87, 0x83, 0xC3, 0xC1, 0xFF, 0xE1, 0xFF, 0xF0, 0xFF, 0xFC, 0xF0, + 0x1E, 0x70, 0x0F, 0x78, 0x07, 0xB8, 0x03, 0xC0, 0x0F, 0xFE, 0x0F, 0xFF, + 0x87, 0xFF, 0xE3, 0xC0, 0xF1, 0xC0, 0x78, 0xE0, 0x3C, 0xF0, 0x3C, 0x7F, + 0xFC, 0x3F, 0xFC, 0x1F, 0xFF, 0x0E, 0x07, 0xCF, 0x01, 0xE7, 0x80, 0xF3, + 0x80, 0x79, 0xC0, 0x79, 0xFF, 0xF8, 0xFF, 0xFC, 0x7F, 0xF8, 0x00, 0x01, + 0xF8, 0x03, 0xFF, 0x03, 0xFF, 0xC3, 0xE1, 0xF3, 0xC0, 0x79, 0xE0, 0x3D, + 0xE0, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1E, 0x00, + 0x0F, 0x00, 0xE7, 0x80, 0xF3, 0xE0, 0xF0, 0xFF, 0xF8, 0x3F, 0xF0, 0x07, + 0xE0, 0x00, 0x1F, 0xFC, 0x0F, 0xFF, 0x87, 0xFF, 0xC3, 0x81, 0xF1, 0xC0, + 0x79, 0xE0, 0x3C, 0xF0, 0x1E, 0x78, 0x0F, 0x38, 0x07, 0x9C, 0x03, 0xDE, + 0x03, 0xCF, 0x01, 0xE7, 0x81, 0xF3, 0x80, 0xF1, 0xC1, 0xF1, 0xFF, 0xF0, + 0xFF, 0xF0, 0x7F, 0xE0, 0x00, 0x0F, 0xFF, 0x1F, 0xFF, 0x1F, 0xFF, 0x1C, + 0x00, 0x1C, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, + 0xFC, 0x78, 0x00, 0x78, 0x00, 0x78, 0x00, 0x70, 0x00, 0x70, 0x00, 0xFF, + 0xF8, 0xFF, 0xF8, 0xFF, 0xF8, 0x1F, 0xFF, 0x1F, 0xFE, 0x1F, 0xFE, 0x1C, + 0x00, 0x1C, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x3F, 0xF8, 0x3F, 0xF8, 0x3F, + 0xF8, 0x78, 0x00, 0x78, 0x00, 0x78, 0x00, 0x70, 0x00, 0xF0, 0x00, 0xF0, + 0x00, 0xF0, 0x00, 0xE0, 0x00, 0x01, 0xFC, 0x03, 0xFF, 0x03, 0xFF, 0xC3, + 0xE0, 0xF3, 0xC0, 0x39, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, 0xF0, 0x7F, + 0x78, 0x3F, 0xBC, 0x1F, 0xDE, 0x01, 0xCF, 0x00, 0xE7, 0xC0, 0xF1, 0xF0, + 0xF8, 0xFF, 0xFC, 0x3F, 0xEC, 0x07, 0xE6, 0x00, 0x1E, 0x03, 0x8F, 0x01, + 0xC7, 0x01, 0xE3, 0x80, 0xF3, 0xC0, 0x79, 0xE0, 0x38, 0xF0, 0x1C, 0x7F, + 0xFE, 0x3F, 0xFF, 0x3F, 0xFF, 0x9E, 0x03, 0x8F, 0x01, 0xC7, 0x01, 0xE3, + 0x80, 0xF3, 0xC0, 0x71, 0xE0, 0x38, 0xF0, 0x3C, 0x70, 0x1E, 0x00, 0x1E, + 0x3C, 0x78, 0xE1, 0xC7, 0x8F, 0x1E, 0x38, 0x71, 0xE3, 0xC7, 0x8E, 0x1C, + 0x78, 0xF1, 0xE0, 0x00, 0x1C, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x38, + 0x00, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x01, 0xC0, 0x07, 0x3C, 0x3C, + 0xF0, 0xF3, 0xC3, 0x8F, 0x1E, 0x3F, 0xF8, 0x7F, 0xC0, 0xFC, 0x00, 0x1E, + 0x07, 0xC7, 0x83, 0xE1, 0xE1, 0xE0, 0x70, 0xF0, 0x1C, 0x78, 0x0F, 0x3C, + 0x03, 0xDE, 0x00, 0xFF, 0x00, 0x3F, 0xC0, 0x0F, 0xF0, 0x07, 0xDE, 0x01, + 0xE7, 0xC0, 0x78, 0xF0, 0x1C, 0x3E, 0x0F, 0x07, 0x83, 0xC0, 0xF0, 0xF0, + 0x3C, 0x38, 0x07, 0x80, 0x0E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xC0, + 0x0E, 0x00, 0xF0, 0x07, 0x80, 0x38, 0x01, 0xC0, 0x1E, 0x00, 0xF0, 0x07, + 0x80, 0x38, 0x01, 0xC0, 0x1F, 0xFE, 0xFF, 0xF7, 0xFF, 0x80, 0x1F, 0x03, + 0xF1, 0xF0, 0x3F, 0x1F, 0x07, 0xF1, 0xF0, 0x7F, 0x3F, 0x0F, 0xE3, 0xF0, + 0xEE, 0x3B, 0x1E, 0xE3, 0xB1, 0xDE, 0x3B, 0x1D, 0xE7, 0xB3, 0x9C, 0x7B, + 0x39, 0xC7, 0x37, 0x9C, 0x73, 0x73, 0xCF, 0x3F, 0x3C, 0xF3, 0xE3, 0x8F, + 0x3E, 0x38, 0xE3, 0xC3, 0x8E, 0x3C, 0x78, 0x1E, 0x03, 0x87, 0xC0, 0xE1, + 0xF0, 0x38, 0x7C, 0x1E, 0x1F, 0x87, 0x8F, 0xE1, 0xC3, 0xB8, 0x70, 0xEF, + 0x1C, 0x39, 0xCF, 0x1E, 0x73, 0xC7, 0x8E, 0xE1, 0xC3, 0xB8, 0x70, 0xEE, + 0x1C, 0x1F, 0x8F, 0x07, 0xE3, 0xC1, 0xF0, 0xE0, 0x3C, 0x38, 0x0F, 0x00, + 0x01, 0xF8, 0x03, 0xFF, 0x03, 0xFF, 0xC3, 0xE3, 0xE3, 0xC0, 0xF9, 0xE0, + 0x3D, 0xE0, 0x1E, 0xF0, 0x0F, 0xF0, 0x07, 0xF8, 0x03, 0xFC, 0x03, 0xDE, + 0x01, 0xEF, 0x00, 0xF7, 0xC0, 0xF1, 0xF0, 0xF0, 0xFF, 0xF0, 0x3F, 0xF0, + 0x07, 0xE0, 0x00, 0x1F, 0xFC, 0x1F, 0xFE, 0x1F, 0xFF, 0x1C, 0x1F, 0x1C, + 0x0F, 0x3C, 0x0F, 0x3C, 0x0F, 0x3C, 0x1E, 0x3F, 0xFC, 0x3F, 0xFC, 0x7F, + 0xF0, 0x78, 0x00, 0x78, 0x00, 0x70, 0x00, 0x70, 0x00, 0xF0, 0x00, 0xF0, + 0x00, 0xF0, 0x00, 0x01, 0xF8, 0x03, 0xFF, 0x03, 0xFF, 0xC3, 0xE3, 0xE3, + 0xC0, 0xF9, 0xC0, 0x3D, 0xE0, 0x1E, 0xF0, 0x0F, 0xF0, 0x07, 0xF8, 0x03, + 0xFC, 0x03, 0xDE, 0x09, 0xEF, 0x0E, 0xE7, 0xC7, 0xF1, 0xF1, 0xF0, 0xFF, + 0xF8, 0x3F, 0xFE, 0x07, 0xE6, 0x00, 0x02, 0x00, 0x0F, 0xFE, 0x0F, 0xFF, + 0x87, 0xFF, 0xE3, 0x81, 0xF1, 0xC0, 0x78, 0xE0, 0x3C, 0xF0, 0x1C, 0x78, + 0x1E, 0x3F, 0xFC, 0x1F, 0xFC, 0x1F, 0xFF, 0x8F, 0x03, 0xC7, 0x81, 0xE3, + 0x80, 0xF1, 0xC0, 0xF1, 0xE0, 0x78, 0xF0, 0x3C, 0x78, 0x1F, 0x00, 0x03, + 0xF8, 0x0F, 0xFE, 0x1F, 0xFF, 0x1E, 0x1F, 0x3C, 0x0F, 0x3C, 0x0F, 0x3C, + 0x00, 0x3F, 0x00, 0x1F, 0xF0, 0x0F, 0xFC, 0x01, 0xFE, 0x00, 0x3E, 0xF0, + 0x1E, 0xF0, 0x1E, 0xF8, 0x3C, 0x7F, 0xF8, 0x7F, 0xF0, 0x1F, 0xC0, 0x7F, + 0xFE, 0xFF, 0xFD, 0xFF, 0xF8, 0x1C, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, + 0x03, 0x80, 0x07, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xE0, 0x01, + 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x38, 0x00, 0x1E, 0x07, 0x1C, + 0x0F, 0x3C, 0x0F, 0x3C, 0x0F, 0x3C, 0x0E, 0x38, 0x0E, 0x78, 0x1E, 0x78, + 0x1E, 0x78, 0x1E, 0x78, 0x1C, 0x70, 0x1C, 0xF0, 0x3C, 0xF0, 0x3C, 0xF0, + 0x38, 0xF8, 0x78, 0xFF, 0xF0, 0x7F, 0xE0, 0x1F, 0x80, 0xF0, 0x1F, 0xE0, + 0x39, 0xC0, 0xF3, 0x81, 0xC7, 0x07, 0x8E, 0x0E, 0x1C, 0x3C, 0x3C, 0x70, + 0x79, 0xE0, 0xF3, 0x80, 0xEF, 0x01, 0xDC, 0x03, 0xB8, 0x07, 0xE0, 0x0F, + 0x80, 0x1F, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x70, 0x7F, 0x87, 0x83, + 0xFC, 0x3C, 0x3D, 0xE1, 0xE1, 0xEF, 0x1F, 0x0E, 0x78, 0xD8, 0xF3, 0xC6, + 0xC7, 0x0E, 0x76, 0x78, 0x73, 0x33, 0x83, 0xB9, 0x9C, 0x1D, 0xCD, 0xC0, + 0xEC, 0x6E, 0x07, 0xE3, 0xE0, 0x3E, 0x1F, 0x01, 0xF0, 0xF0, 0x0F, 0x87, + 0x80, 0x78, 0x38, 0x03, 0xC1, 0xC0, 0x00, 0x0F, 0x03, 0xC3, 0xC1, 0xE0, + 0xF8, 0xF0, 0x1E, 0x78, 0x07, 0x9E, 0x00, 0xFF, 0x00, 0x3F, 0x80, 0x0F, + 0xC0, 0x01, 0xE0, 0x00, 0xF8, 0x00, 0x3F, 0x00, 0x1F, 0xC0, 0x0F, 0xF0, + 0x07, 0x9E, 0x03, 0xC7, 0x80, 0xF0, 0xF0, 0x78, 0x3C, 0x3C, 0x0F, 0x80, + 0x78, 0x1E, 0xF0, 0x79, 0xE0, 0xF3, 0xC3, 0xC3, 0xCF, 0x07, 0x9E, 0x0F, + 0x78, 0x0F, 0xE0, 0x1F, 0x80, 0x3F, 0x00, 0x3C, 0x00, 0x70, 0x00, 0xE0, + 0x03, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x1F, 0xFF, + 0x0F, 0xFF, 0x87, 0xFF, 0xC0, 0x03, 0xC0, 0x03, 0xE0, 0x03, 0xE0, 0x03, + 0xE0, 0x03, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x01, + 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xFF, 0xF0, 0xFF, 0xF8, 0x7F, 0xFC, + 0x00, 0x0F, 0xC3, 0xF0, 0xFC, 0x38, 0x1E, 0x07, 0x01, 0xC0, 0x70, 0x1C, + 0x0F, 0x03, 0x80, 0xE0, 0x38, 0x0E, 0x07, 0x01, 0xC0, 0x70, 0x1C, 0x0F, + 0x03, 0x80, 0xFC, 0x3F, 0x0F, 0xC0, 0x08, 0x88, 0xC4, 0x44, 0x66, 0x66, + 0x66, 0x62, 0x22, 0x33, 0x33, 0x30, 0x0F, 0xC3, 0xF0, 0xFC, 0x07, 0x03, + 0xC0, 0xE0, 0x38, 0x0E, 0x03, 0x81, 0xC0, 0x70, 0x1C, 0x07, 0x03, 0xC0, + 0xE0, 0x38, 0x0E, 0x03, 0x81, 0xE0, 0x70, 0xFC, 0x3F, 0x0F, 0xC0, 0x03, + 0x80, 0xF0, 0x1E, 0x07, 0xE1, 0xDC, 0x3B, 0x8E, 0x71, 0x86, 0x70, 0xFC, + 0x1F, 0x83, 0x80, 0x7F, 0xFE, 0xFF, 0xFC, 0xE6, 0x30, 0x07, 0xE0, 0xFF, + 0x8F, 0xFE, 0x70, 0xE0, 0x07, 0x03, 0xF8, 0xFF, 0xCF, 0x9E, 0xF0, 0xF7, + 0x8F, 0x3F, 0xF8, 0xFF, 0xC3, 0xDF, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, + 0x00, 0xF0, 0x01, 0xE0, 0x03, 0x9F, 0x07, 0xFF, 0x0F, 0xFF, 0x3E, 0x3E, + 0x78, 0x3C, 0xF0, 0x79, 0xC0, 0xF3, 0x81, 0xEF, 0x07, 0x9F, 0x1F, 0x3F, + 0xFC, 0x7F, 0xF0, 0xEF, 0x80, 0x07, 0xC0, 0xFF, 0x8F, 0xFE, 0xF8, 0xF7, + 0x87, 0xB8, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0xF7, 0x8F, 0x1F, 0xF8, 0xFF, + 0x81, 0xF0, 0x00, 0x00, 0x1E, 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x03, + 0xC0, 0xF7, 0x87, 0xFE, 0x1F, 0xFC, 0x7C, 0x78, 0xF0, 0x73, 0xC0, 0xE7, + 0x81, 0x8F, 0x07, 0x1E, 0x0E, 0x3E, 0x3C, 0x7F, 0xF8, 0x7F, 0xE0, 0x7D, + 0xC0, 0x07, 0xC0, 0xFF, 0x8F, 0xFE, 0xF0, 0xF7, 0x87, 0xFF, 0xFF, 0xFF, + 0xFE, 0x00, 0xF0, 0x07, 0xC7, 0x9F, 0xF8, 0xFF, 0x81, 0xF0, 0x00, 0x07, + 0x87, 0xC7, 0xE3, 0xC1, 0xC3, 0xF9, 0xFC, 0x78, 0x3C, 0x1C, 0x0E, 0x07, + 0x07, 0x83, 0x81, 0xC0, 0xE0, 0xF0, 0x78, 0x00, 0x03, 0xDE, 0x1F, 0xF8, + 0x7F, 0xF1, 0xF1, 0xE3, 0xC1, 0xCF, 0x03, 0x9E, 0x06, 0x3C, 0x0C, 0x78, + 0x38, 0xF8, 0xF1, 0xFF, 0xC1, 0xFF, 0x81, 0xF7, 0x00, 0x0E, 0x3C, 0x3C, + 0x78, 0xF0, 0x7F, 0xC0, 0x7E, 0x00, 0x1E, 0x00, 0x70, 0x01, 0xC0, 0x07, + 0x00, 0x3C, 0x00, 0xF7, 0xC3, 0xBF, 0x8F, 0xFF, 0x3C, 0x3D, 0xE0, 0xE7, + 0x83, 0x9C, 0x0E, 0x70, 0x79, 0xC1, 0xEF, 0x07, 0x3C, 0x1C, 0xE0, 0x73, + 0x83, 0xC0, 0x0E, 0x3C, 0x70, 0x00, 0x03, 0x8F, 0x1E, 0x38, 0x71, 0xE3, + 0xC7, 0x0E, 0x1C, 0x78, 0xF1, 0xC0, 0x03, 0xC0, 0xE0, 0x38, 0x00, 0x00, + 0x01, 0xE0, 0x70, 0x1C, 0x07, 0x03, 0xC0, 0xF0, 0x38, 0x0E, 0x03, 0x81, + 0xE0, 0x70, 0x1C, 0x07, 0x03, 0xC0, 0xF0, 0xF8, 0x3E, 0x0F, 0x00, 0x0E, + 0x00, 0x1C, 0x00, 0x38, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0x87, 0x87, 0x1E, + 0x0E, 0x78, 0x3D, 0xE0, 0x7F, 0x80, 0xFE, 0x01, 0xFE, 0x03, 0xFC, 0x0F, + 0x38, 0x1E, 0x78, 0x38, 0xF0, 0x70, 0xF0, 0xE1, 0xE0, 0x0E, 0x3C, 0x78, + 0xE1, 0xC3, 0x8F, 0x1E, 0x38, 0x71, 0xE3, 0xC7, 0x0E, 0x1C, 0x78, 0xF1, + 0xC0, 0x1C, 0xF1, 0xE0, 0xEF, 0xDF, 0x87, 0xFF, 0xFE, 0x7C, 0x78, 0xF3, + 0xC3, 0x87, 0x9C, 0x1C, 0x38, 0xE1, 0xE1, 0xC7, 0x0E, 0x0E, 0x78, 0x70, + 0xF3, 0xC3, 0x87, 0x9C, 0x3C, 0x38, 0xE1, 0xE1, 0xC7, 0x0E, 0x0E, 0x00, + 0x3D, 0xF0, 0xEF, 0xE3, 0xFF, 0xCF, 0x0F, 0x78, 0x39, 0xC0, 0xE7, 0x03, + 0x9C, 0x1E, 0xF0, 0x7B, 0xC1, 0xCE, 0x07, 0x38, 0x1C, 0xE0, 0xF0, 0x07, + 0xE0, 0x7F, 0xE3, 0xFF, 0x9F, 0x1F, 0x78, 0x3F, 0xC0, 0xFF, 0x03, 0xFC, + 0x1F, 0xF0, 0x7B, 0xE3, 0xE7, 0xFF, 0x1F, 0xF8, 0x1F, 0x80, 0x0E, 0x7C, + 0x0F, 0xFE, 0x0F, 0xFF, 0x1F, 0x1F, 0x1E, 0x0F, 0x1E, 0x0F, 0x1C, 0x0F, + 0x1C, 0x0F, 0x3C, 0x1E, 0x3E, 0x3E, 0x3F, 0xFC, 0x3F, 0xF8, 0x7B, 0xE0, + 0x78, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0xF0, 0x00, 0x07, 0xBC, + 0x7F, 0xF3, 0xFF, 0x9F, 0x1E, 0x78, 0x3B, 0xC0, 0xEF, 0x03, 0x3C, 0x0C, + 0xF0, 0x73, 0xE3, 0xCF, 0xFF, 0x1F, 0xF8, 0x3C, 0xE0, 0x03, 0x80, 0x1E, + 0x00, 0x78, 0x01, 0xC0, 0x07, 0x00, 0x3D, 0xCE, 0xE3, 0xF8, 0xF0, 0x78, + 0x1E, 0x07, 0x01, 0xC0, 0xF0, 0x3C, 0x0E, 0x03, 0x80, 0xE0, 0x00, 0x1F, + 0xC3, 0xFE, 0x7F, 0xFF, 0x0F, 0xF0, 0x0F, 0xE0, 0x7F, 0xC1, 0xFE, 0x03, + 0xEE, 0x1E, 0xFF, 0xC7, 0xFC, 0x3F, 0x00, 0x1E, 0x1E, 0x1C, 0x7F, 0xFF, + 0x3C, 0x38, 0x38, 0x38, 0x78, 0x78, 0x70, 0x7C, 0xF8, 0x78, 0x38, 0x3C, + 0xE0, 0xE3, 0x83, 0x9E, 0x0E, 0x70, 0x79, 0xC1, 0xE7, 0x07, 0x3C, 0x1C, + 0xF0, 0xF3, 0xE7, 0xCF, 0xFF, 0x1F, 0xF8, 0x3C, 0xE0, 0xF0, 0x77, 0x87, + 0xBC, 0x38, 0xE3, 0xC7, 0x1C, 0x39, 0xE1, 0xCE, 0x0E, 0xE0, 0x77, 0x03, + 0xF0, 0x0F, 0x80, 0x78, 0x03, 0xC0, 0x00, 0xF1, 0xC3, 0xF8, 0xE3, 0xFC, + 0xF1, 0xDE, 0x79, 0xEF, 0x3C, 0xE7, 0xB6, 0x73, 0xDB, 0x70, 0xED, 0xB8, + 0x7C, 0xF8, 0x3E, 0x7C, 0x1F, 0x3C, 0x0F, 0x1E, 0x07, 0x8E, 0x00, 0x0F, + 0x1E, 0x0F, 0x3C, 0x0F, 0x38, 0x07, 0x70, 0x07, 0xF0, 0x03, 0xE0, 0x03, + 0xC0, 0x07, 0xC0, 0x0F, 0xE0, 0x1E, 0xE0, 0x3C, 0xF0, 0x3C, 0xF0, 0x78, + 0x78, 0x3C, 0x1C, 0x78, 0x78, 0xF0, 0xE1, 0xE3, 0xC1, 0xC7, 0x03, 0x9E, + 0x07, 0x38, 0x0E, 0xE0, 0x1D, 0xC0, 0x3F, 0x00, 0x7E, 0x00, 0x78, 0x00, + 0xF0, 0x01, 0xC0, 0x07, 0x00, 0x7E, 0x00, 0xF8, 0x01, 0xE0, 0x00, 0x1F, + 0xF9, 0xFF, 0xCF, 0xFC, 0x01, 0xE0, 0x3E, 0x03, 0xC0, 0x3C, 0x03, 0xC0, + 0x3C, 0x03, 0xC0, 0x3F, 0xF9, 0xFF, 0xCF, 0xFC, 0x00, 0x07, 0x87, 0xC3, + 0xE3, 0xC1, 0xC0, 0xE0, 0x70, 0x38, 0x3C, 0x1C, 0x0E, 0x1E, 0x0F, 0x03, + 0x81, 0xC0, 0xE0, 0x70, 0x78, 0x38, 0x1C, 0x0F, 0x87, 0xC1, 0xC0, 0x0C, + 0x30, 0x86, 0x18, 0x61, 0x8C, 0x30, 0xC3, 0x0C, 0x61, 0x86, 0x18, 0x63, + 0x0C, 0x30, 0xC2, 0x00, 0x00, 0x07, 0x07, 0xC3, 0xE0, 0x70, 0x38, 0x3C, + 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xE0, 0xF0, 0xE0, 0x70, 0x78, 0x38, 0x1C, + 0x0E, 0x07, 0x07, 0x8F, 0x87, 0xC3, 0xC0, 0x3C, 0x07, 0xE0, 0xC7, 0x30, + 0x7E, 0x01, 0xC0}; + +const GFXglyph FreeSansBoldOblique12pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 7, 0, 1}, // 0x20 ' ' + {0, 7, 17, 8, 3, -16}, // 0x21 '!' + {15, 10, 6, 11, 4, -17}, // 0x22 '"' + {23, 15, 16, 13, 1, -15}, // 0x23 '#' + {53, 15, 21, 13, 1, -17}, // 0x24 '$' + {93, 18, 18, 21, 3, -17}, // 0x25 '%' + {134, 15, 17, 17, 2, -16}, // 0x26 '&' + {166, 4, 6, 6, 4, -17}, // 0x27 ''' + {169, 9, 22, 8, 2, -17}, // 0x28 '(' + {194, 9, 22, 8, -1, -16}, // 0x29 ')' + {219, 8, 8, 9, 3, -17}, // 0x2A '*' + {227, 12, 11, 14, 2, -10}, // 0x2B '+' + {244, 5, 7, 7, 1, -2}, // 0x2C ',' + {249, 7, 3, 8, 2, -7}, // 0x2D '-' + {252, 4, 3, 7, 2, -2}, // 0x2E '.' + {254, 10, 17, 7, 0, -16}, // 0x2F '/' + {276, 13, 17, 13, 2, -16}, // 0x30 '0' + {304, 9, 17, 13, 4, -16}, // 0x31 '1' + {324, 15, 17, 13, 1, -16}, // 0x32 '2' + {356, 13, 17, 13, 2, -16}, // 0x33 '3' + {384, 13, 17, 13, 1, -16}, // 0x34 '4' + {412, 14, 17, 13, 1, -16}, // 0x35 '5' + {442, 13, 17, 13, 2, -16}, // 0x36 '6' + {470, 13, 17, 13, 3, -16}, // 0x37 '7' + {498, 14, 17, 13, 1, -16}, // 0x38 '8' + {528, 14, 17, 13, 2, -16}, // 0x39 '9' + {558, 6, 12, 8, 3, -11}, // 0x3A ':' + {567, 7, 16, 8, 2, -11}, // 0x3B ';' + {581, 13, 12, 14, 2, -11}, // 0x3C '<' + {601, 14, 9, 14, 1, -9}, // 0x3D '=' + {617, 13, 12, 14, 1, -10}, // 0x3E '>' + {637, 13, 18, 15, 4, -17}, // 0x3F '?' + {667, 22, 21, 23, 2, -17}, // 0x40 '@' + {725, 17, 18, 17, 0, -17}, // 0x41 'A' + {764, 17, 18, 17, 2, -17}, // 0x42 'B' + {803, 17, 18, 17, 3, -17}, // 0x43 'C' + {842, 17, 18, 17, 2, -17}, // 0x44 'D' + {881, 16, 18, 16, 2, -17}, // 0x45 'E' + {917, 16, 18, 15, 2, -17}, // 0x46 'F' + {953, 17, 18, 19, 3, -17}, // 0x47 'G' + {992, 17, 18, 17, 2, -17}, // 0x48 'H' + {1031, 7, 18, 7, 2, -17}, // 0x49 'I' + {1047, 14, 18, 13, 1, -17}, // 0x4A 'J' + {1079, 18, 18, 17, 2, -17}, // 0x4B 'K' + {1120, 13, 18, 15, 2, -17}, // 0x4C 'L' + {1150, 20, 18, 20, 2, -17}, // 0x4D 'M' + {1195, 18, 18, 17, 2, -17}, // 0x4E 'N' + {1236, 17, 18, 19, 3, -17}, // 0x4F 'O' + {1275, 16, 18, 16, 2, -17}, // 0x50 'P' + {1311, 17, 19, 19, 3, -17}, // 0x51 'Q' + {1352, 17, 18, 17, 2, -17}, // 0x52 'R' + {1391, 16, 18, 16, 2, -17}, // 0x53 'S' + {1427, 15, 18, 15, 3, -17}, // 0x54 'T' + {1461, 16, 18, 17, 3, -17}, // 0x55 'U' + {1497, 15, 18, 16, 4, -17}, // 0x56 'V' + {1531, 21, 18, 23, 4, -17}, // 0x57 'W' + {1579, 18, 18, 16, 1, -17}, // 0x58 'X' + {1620, 15, 18, 16, 4, -17}, // 0x59 'Y' + {1654, 17, 18, 15, 1, -17}, // 0x5A 'Z' + {1693, 10, 23, 8, 1, -17}, // 0x5B '[' + {1722, 4, 23, 7, 3, -22}, // 0x5C '\' + {1734, 10, 23, 8, 0, -17}, // 0x5D ']' + {1763, 11, 11, 14, 3, -16}, // 0x5E '^' + {1779, 15, 2, 13, -2, 4}, // 0x5F '_' + {1783, 4, 3, 8, 4, -17}, // 0x60 '`' + {1785, 13, 13, 13, 1, -12}, // 0x61 'a' + {1807, 15, 18, 15, 1, -17}, // 0x62 'b' + {1841, 13, 13, 13, 2, -12}, // 0x63 'c' + {1863, 15, 18, 15, 2, -17}, // 0x64 'd' + {1897, 13, 13, 13, 2, -12}, // 0x65 'e' + {1919, 9, 18, 8, 2, -17}, // 0x66 'f' + {1940, 15, 18, 15, 1, -12}, // 0x67 'g' + {1974, 14, 18, 15, 2, -17}, // 0x68 'h' + {2006, 7, 18, 7, 2, -17}, // 0x69 'i' + {2022, 10, 23, 7, -1, -17}, // 0x6A 'j' + {2051, 15, 18, 13, 1, -17}, // 0x6B 'k' + {2085, 7, 18, 7, 2, -17}, // 0x6C 'l' + {2101, 21, 13, 21, 1, -12}, // 0x6D 'm' + {2136, 14, 13, 15, 2, -12}, // 0x6E 'n' + {2159, 14, 13, 15, 2, -12}, // 0x6F 'o' + {2182, 16, 18, 15, 0, -12}, // 0x70 'p' + {2218, 14, 18, 15, 2, -12}, // 0x71 'q' + {2250, 10, 13, 9, 2, -12}, // 0x72 'r' + {2267, 12, 13, 13, 3, -12}, // 0x73 's' + {2287, 8, 15, 8, 2, -14}, // 0x74 't' + {2302, 14, 13, 15, 2, -12}, // 0x75 'u' + {2325, 13, 13, 13, 3, -12}, // 0x76 'v' + {2347, 17, 13, 19, 3, -12}, // 0x77 'w' + {2375, 16, 13, 13, 0, -12}, // 0x78 'x' + {2401, 15, 18, 13, 1, -12}, // 0x79 'y' + {2435, 13, 13, 12, 1, -12}, // 0x7A 'z' + {2457, 9, 23, 9, 3, -17}, // 0x7B '{' + {2483, 6, 23, 7, 1, -17}, // 0x7C '|' + {2501, 9, 23, 9, 0, -17}, // 0x7D '}' + {2527, 12, 5, 14, 2, -7}}; // 0x7E '~' + +const GFXfont FreeSansBoldOblique12pt7b PROGMEM = { + (uint8_t *)FreeSansBoldOblique12pt7bBitmaps, + (GFXglyph *)FreeSansBoldOblique12pt7bGlyphs, 0x20, 0x7E, 29}; + +// Approx. 3207 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBoldOblique18pt7b.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBoldOblique18pt7b.h new file mode 100644 index 0000000..441c6b5 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBoldOblique18pt7b.h @@ -0,0 +1,547 @@ +#pragma once +#include + +const uint8_t FreeSansBoldOblique18pt7bBitmaps[] PROGMEM = { + 0x06, 0x01, 0xC0, 0x7C, 0x1F, 0x0F, 0xC3, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, + 0xC0, 0xF0, 0x7C, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1C, 0x07, 0x01, 0xC0, + 0x60, 0x7C, 0x1F, 0x07, 0xC3, 0xF0, 0xF8, 0x00, 0x78, 0x7B, 0xC3, 0xFE, + 0x3F, 0xE1, 0xEF, 0x0F, 0x78, 0x7B, 0x83, 0x9C, 0x1C, 0xC0, 0xC0, 0x00, + 0x3C, 0x38, 0x00, 0xF1, 0xE0, 0x07, 0x87, 0x00, 0x1E, 0x3C, 0x00, 0xF0, + 0xE0, 0x3F, 0xFF, 0xF0, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0x1F, 0xFF, 0xF8, + 0x0F, 0x0E, 0x00, 0x3C, 0x78, 0x00, 0xE1, 0xE0, 0x07, 0x8F, 0x00, 0x1C, + 0x3C, 0x07, 0xFF, 0xFE, 0x1F, 0xFF, 0xF8, 0x7F, 0xFF, 0xE3, 0xFF, 0xFF, + 0x01, 0xE3, 0xC0, 0x0F, 0x0E, 0x00, 0x3C, 0x78, 0x01, 0xE1, 0xC0, 0x07, + 0x8F, 0x00, 0x3C, 0x38, 0x00, 0x00, 0x0C, 0x00, 0x01, 0x80, 0x00, 0xFC, + 0x00, 0xFF, 0xC0, 0x3F, 0xFC, 0x0F, 0xFF, 0xC3, 0xE6, 0x78, 0x78, 0xCF, + 0x1E, 0x39, 0xE3, 0xC7, 0x3C, 0x78, 0xC0, 0x0F, 0x98, 0x01, 0xFF, 0x00, + 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x00, 0x7F, 0x80, 0x0F, 0xF0, + 0x03, 0xBE, 0x00, 0x67, 0xCF, 0x8C, 0xF9, 0xF1, 0x9F, 0x3E, 0x77, 0xC7, + 0xEF, 0xF8, 0x7F, 0xFE, 0x0F, 0xFF, 0x80, 0xFF, 0xE0, 0x03, 0xE0, 0x00, + 0x38, 0x00, 0x06, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x07, 0x01, 0xE0, + 0x03, 0x81, 0xFE, 0x00, 0xC0, 0xFF, 0x80, 0x70, 0x7F, 0xF0, 0x38, 0x1E, + 0x3C, 0x1C, 0x0F, 0x07, 0x06, 0x03, 0x81, 0xC3, 0x80, 0xE0, 0xF1, 0xC0, + 0x3C, 0x78, 0xE0, 0x0F, 0xFE, 0x30, 0x01, 0xFF, 0x1C, 0x00, 0x7F, 0x8E, + 0x00, 0x07, 0x83, 0x00, 0x00, 0x01, 0x83, 0xE0, 0x00, 0xE3, 0xFE, 0x00, + 0x71, 0xFF, 0x80, 0x18, 0xFF, 0xF0, 0x0C, 0x3C, 0x3C, 0x07, 0x1C, 0x07, + 0x03, 0x87, 0x01, 0xC0, 0xC1, 0xE1, 0xE0, 0x60, 0x7F, 0xF8, 0x38, 0x0F, + 0xFC, 0x1C, 0x03, 0xFE, 0x06, 0x00, 0x3E, 0x00, 0x00, 0x1F, 0x00, 0x03, + 0xFC, 0x00, 0x3F, 0xF0, 0x03, 0xFF, 0x80, 0x3F, 0x3C, 0x01, 0xF1, 0xE0, + 0x0F, 0x8F, 0x00, 0x7C, 0xF0, 0x03, 0xFF, 0x80, 0x0F, 0xF8, 0x00, 0x3F, + 0x00, 0x03, 0xF0, 0x00, 0x7F, 0xC7, 0x8F, 0xFE, 0x3C, 0xFC, 0xFB, 0xCF, + 0x83, 0xFE, 0xF8, 0x1F, 0xE7, 0xC0, 0x7E, 0x3E, 0x03, 0xE1, 0xF0, 0x1F, + 0x0F, 0xE3, 0xFC, 0x7F, 0xFF, 0xE1, 0xFF, 0xFF, 0x87, 0xFE, 0x7C, 0x0F, + 0xE1, 0xF0, 0x7B, 0xFF, 0xEF, 0x7B, 0x9C, 0xC0, 0x00, 0x78, 0x07, 0x80, + 0x78, 0x03, 0x80, 0x3C, 0x03, 0xC0, 0x1E, 0x01, 0xE0, 0x1E, 0x00, 0xF0, + 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0xF0, 0x07, + 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, + 0x07, 0x80, 0x1C, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x00, 0xE0, 0x07, 0x80, + 0x1C, 0x00, 0x01, 0xC0, 0x0F, 0x00, 0x38, 0x01, 0xE0, 0x0F, 0x00, 0x78, + 0x01, 0xC0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, + 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0xF8, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x1E, + 0x00, 0xF0, 0x07, 0x80, 0x78, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x1E, 0x01, + 0xE0, 0x1E, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x00, 0x03, 0x00, 0x70, 0x07, + 0x04, 0x63, 0xFF, 0xF7, 0xFF, 0x1F, 0x83, 0xF0, 0x3B, 0x87, 0x38, 0x21, + 0x00, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, + 0x00, 0x7C, 0x07, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xE0, + 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x7C, 0x00, 0x1E, + 0x00, 0x3E, 0x7C, 0xF3, 0xE7, 0xC1, 0x87, 0x0C, 0x39, 0xE3, 0x00, 0x7F, + 0xDF, 0xFF, 0xFB, 0xFE, 0x7D, 0xF7, 0xBE, 0xF8, 0x00, 0x0E, 0x00, 0x18, + 0x00, 0x70, 0x00, 0xC0, 0x03, 0x80, 0x06, 0x00, 0x1C, 0x00, 0x30, 0x00, + 0xE0, 0x01, 0x80, 0x07, 0x00, 0x0C, 0x00, 0x38, 0x00, 0x60, 0x01, 0xC0, + 0x03, 0x00, 0x0E, 0x00, 0x18, 0x00, 0x70, 0x00, 0xC0, 0x03, 0x80, 0x06, + 0x00, 0x1C, 0x00, 0x30, 0x00, 0xE0, 0x00, 0x00, 0xFC, 0x00, 0x7F, 0xC0, + 0x7F, 0xF8, 0x3F, 0xFE, 0x0F, 0x8F, 0xC7, 0xC1, 0xF1, 0xE0, 0x7C, 0xF8, + 0x1F, 0x3E, 0x07, 0xDF, 0x01, 0xF7, 0xC0, 0x7D, 0xF0, 0x3F, 0x7C, 0x0F, + 0xBF, 0x03, 0xEF, 0x80, 0xFB, 0xE0, 0x3E, 0xF8, 0x1F, 0x3E, 0x07, 0xCF, + 0x81, 0xE3, 0xE0, 0xF8, 0xFC, 0x7C, 0x1F, 0xFF, 0x07, 0xFF, 0x80, 0xFF, + 0xC0, 0x0F, 0x80, 0x00, 0x00, 0x70, 0x03, 0x80, 0x3C, 0x03, 0xE0, 0xFF, + 0x3F, 0xF3, 0xFF, 0x9F, 0xFC, 0x03, 0xE0, 0x1F, 0x01, 0xF0, 0x0F, 0x80, + 0x7C, 0x03, 0xE0, 0x1E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x3E, + 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x3E, 0x00, 0x00, 0x1F, 0x80, + 0x07, 0xFF, 0x00, 0x7F, 0xFC, 0x07, 0xFF, 0xE0, 0x7E, 0x1F, 0x83, 0xE0, + 0x7C, 0x1F, 0x03, 0xE1, 0xF0, 0x1F, 0x0F, 0x80, 0xF8, 0x00, 0x0F, 0x80, + 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xE0, 0x00, 0xFC, + 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x80, 0x03, 0xF8, 0x00, 0x3F, + 0x00, 0x03, 0xF0, 0x00, 0x1F, 0xFF, 0xE1, 0xFF, 0xFF, 0x0F, 0xFF, 0xF0, + 0x7F, 0xFF, 0x80, 0x00, 0x7F, 0x00, 0x1F, 0xFC, 0x03, 0xFF, 0xE0, 0x7F, + 0xFF, 0x0F, 0x83, 0xF0, 0xF0, 0x1F, 0x1F, 0x01, 0xF1, 0xE0, 0x1F, 0x00, + 0x03, 0xE0, 0x00, 0xFC, 0x00, 0xFF, 0x80, 0x0F, 0xF0, 0x00, 0xFF, 0x80, + 0x0F, 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xCF, 0x80, 0x7C, + 0xF8, 0x07, 0xCF, 0x80, 0xF8, 0xFC, 0x3F, 0x8F, 0xFF, 0xF0, 0x7F, 0xFE, + 0x03, 0xFF, 0xC0, 0x0F, 0xE0, 0x00, 0x00, 0x07, 0xE0, 0x01, 0xFC, 0x00, + 0x7F, 0x00, 0x1F, 0xE0, 0x03, 0xFC, 0x00, 0xEF, 0x80, 0x3D, 0xF0, 0x0F, + 0x7C, 0x03, 0xCF, 0x80, 0xF1, 0xF0, 0x1C, 0x3E, 0x07, 0x07, 0xC1, 0xE1, + 0xF0, 0x78, 0x3E, 0x1E, 0x07, 0xC3, 0xFF, 0xFE, 0x7F, 0xFF, 0xDF, 0xFF, + 0xFB, 0xFF, 0xFF, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x78, 0x00, 0x1F, + 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x01, 0xFF, 0xF0, 0x3F, 0xFF, 0x03, + 0xFF, 0xF0, 0x3F, 0xFF, 0x07, 0x80, 0x00, 0x78, 0x00, 0x0F, 0x00, 0x00, + 0xF7, 0xE0, 0x0F, 0xFF, 0x01, 0xFF, 0xF8, 0x1F, 0xFF, 0x83, 0xF0, 0xFC, + 0x3E, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, + 0x8F, 0x80, 0xF8, 0xF8, 0x1F, 0x8F, 0xC3, 0xF0, 0xFF, 0xFE, 0x07, 0xFF, + 0xC0, 0x3F, 0xF8, 0x00, 0xFE, 0x00, 0x00, 0x7E, 0x00, 0x3F, 0xF0, 0x0F, + 0xFF, 0x03, 0xFF, 0xE0, 0xF8, 0x7E, 0x3E, 0x07, 0xC7, 0x80, 0x01, 0xF0, + 0x00, 0x3C, 0xFC, 0x07, 0xFF, 0xC1, 0xFF, 0xFC, 0x3F, 0xFF, 0xC7, 0xE1, + 0xF8, 0xF8, 0x1F, 0x3E, 0x03, 0xE7, 0x80, 0x7C, 0xF0, 0x0F, 0x9E, 0x01, + 0xE3, 0xC0, 0x7C, 0x78, 0x1F, 0x0F, 0x87, 0xE0, 0xFF, 0xF8, 0x1F, 0xFE, + 0x01, 0xFF, 0x80, 0x0F, 0xC0, 0x00, 0x7F, 0xFF, 0xEF, 0xFF, 0xF9, 0xFF, + 0xFF, 0x7F, 0xFF, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, + 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x07, 0x80, 0x01, 0xF0, 0x00, 0x7C, + 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x07, 0xC0, + 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x3E, 0x00, + 0x07, 0xC0, 0x00, 0x00, 0x7F, 0x00, 0x1F, 0xFC, 0x07, 0xFF, 0xE0, 0xFF, + 0xFF, 0x0F, 0x81, 0xF1, 0xF0, 0x0F, 0x1E, 0x00, 0xF1, 0xE0, 0x1E, 0x1F, + 0x07, 0xE0, 0xFF, 0xFC, 0x07, 0xFF, 0x00, 0xFF, 0xF8, 0x1F, 0xFF, 0x83, + 0xF0, 0xFC, 0x7C, 0x07, 0xC7, 0xC0, 0x7C, 0xF8, 0x07, 0xCF, 0x80, 0x7C, + 0xF8, 0x0F, 0x8F, 0x80, 0xF8, 0xFC, 0x3F, 0x0F, 0xFF, 0xF0, 0x7F, 0xFE, + 0x03, 0xFF, 0x80, 0x0F, 0xE0, 0x00, 0x00, 0x7E, 0x00, 0x3F, 0xF0, 0x0F, + 0xFF, 0x03, 0xFF, 0xE0, 0xFC, 0x3E, 0x3F, 0x03, 0xC7, 0xC0, 0x79, 0xF0, + 0x0F, 0x3E, 0x01, 0xE7, 0xC0, 0x3C, 0xF8, 0x0F, 0x9F, 0x03, 0xE3, 0xF0, + 0xFC, 0x7F, 0xFF, 0x87, 0xFF, 0xF0, 0x7F, 0xFE, 0x07, 0xE7, 0x80, 0x01, + 0xF0, 0x00, 0x3C, 0x7C, 0x0F, 0x8F, 0xC3, 0xE1, 0xFF, 0xF8, 0x1F, 0xFE, + 0x01, 0xFF, 0x80, 0x0F, 0xC0, 0x00, 0x0F, 0x87, 0xC3, 0xC3, 0xE1, 0xF0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE1, 0xF0, 0xF0, + 0xF8, 0x7C, 0x00, 0x07, 0xC1, 0xF0, 0x78, 0x3E, 0x0F, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x83, 0xE0, 0xF0, 0x7C, + 0x1F, 0x00, 0xC0, 0x70, 0x18, 0x0E, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x20, + 0x00, 0x3C, 0x00, 0x3F, 0x80, 0x3F, 0xE0, 0x3F, 0xFC, 0x3F, 0xFC, 0x1F, + 0xFC, 0x07, 0xFC, 0x00, 0xFC, 0x00, 0x1F, 0xF0, 0x03, 0xFF, 0x80, 0x1F, + 0xFE, 0x00, 0xFF, 0xF0, 0x03, 0xFE, 0x00, 0x1F, 0xC0, 0x00, 0x78, 0x00, + 0x03, 0x00, 0x1F, 0xFF, 0xF3, 0xFF, 0xFE, 0x3F, 0xFF, 0xE3, 0xFF, 0xFE, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, + 0xC7, 0xFF, 0xFC, 0xFF, 0xFF, 0x8F, 0xFF, 0xF8, 0x18, 0x00, 0x03, 0xC0, + 0x00, 0x7F, 0x00, 0x0F, 0xF8, 0x01, 0xFF, 0xE0, 0x0F, 0xFF, 0x00, 0x3F, + 0xF8, 0x01, 0xFF, 0x00, 0x07, 0xE0, 0x07, 0xFC, 0x07, 0xFF, 0x07, 0xFF, + 0x87, 0xFF, 0x80, 0xFF, 0x80, 0x3F, 0x80, 0x07, 0x80, 0x00, 0x80, 0x00, + 0x00, 0x03, 0xF8, 0x03, 0xFF, 0xC1, 0xFF, 0xF8, 0xFF, 0xFE, 0x7E, 0x1F, + 0xDF, 0x03, 0xFF, 0x80, 0x7F, 0xE0, 0x1F, 0xF8, 0x07, 0xC0, 0x03, 0xE0, + 0x01, 0xF8, 0x00, 0xFC, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x3F, 0x80, 0x1F, + 0x80, 0x07, 0x80, 0x03, 0xE0, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x07, 0xC0, 0x01, 0xF0, 0x00, 0xFC, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x00, + 0x00, 0x00, 0x7F, 0x80, 0x00, 0x01, 0xFF, 0xF8, 0x00, 0x03, 0xFF, 0xFE, + 0x00, 0x07, 0xF0, 0x1F, 0xC0, 0x0F, 0xC0, 0x03, 0xE0, 0x0F, 0x80, 0x00, + 0xF8, 0x0F, 0x00, 0x00, 0x3C, 0x0F, 0x01, 0xF1, 0xCF, 0x0F, 0x03, 0xFD, + 0xC7, 0x8F, 0x03, 0xFF, 0xE1, 0xC7, 0x03, 0xE3, 0xE0, 0xE7, 0x03, 0xC0, + 0xF0, 0x73, 0x83, 0xC0, 0x78, 0x3B, 0x81, 0xE0, 0x38, 0x1D, 0xC1, 0xE0, + 0x1C, 0x1C, 0xC0, 0xF0, 0x1C, 0x0E, 0xE0, 0x70, 0x0E, 0x0F, 0x70, 0x78, + 0x0E, 0x07, 0x38, 0x3C, 0x0F, 0x07, 0x1C, 0x1E, 0x0F, 0x87, 0x8E, 0x0F, + 0x8F, 0xCF, 0x87, 0x07, 0xFF, 0xFF, 0x83, 0xC1, 0xFE, 0x7F, 0x00, 0xE0, + 0x3C, 0x1F, 0x00, 0x78, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x0F, + 0xC0, 0x01, 0x00, 0x03, 0xF8, 0x07, 0x80, 0x00, 0xFF, 0xFF, 0xC0, 0x00, + 0x1F, 0xFF, 0xE0, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, + 0x0F, 0xE0, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0xC0, 0x00, 0xFF, 0x80, 0x03, + 0xFF, 0x00, 0x07, 0xFE, 0x00, 0x1F, 0x7C, 0x00, 0x7E, 0xF8, 0x00, 0xF9, + 0xF0, 0x03, 0xF3, 0xE0, 0x07, 0xC3, 0xE0, 0x1F, 0x87, 0xC0, 0x3E, 0x0F, + 0x80, 0xF8, 0x1F, 0x01, 0xF0, 0x3E, 0x07, 0xFF, 0xFC, 0x1F, 0xFF, 0xF8, + 0x3F, 0xFF, 0xF0, 0xFF, 0xFF, 0xF1, 0xF0, 0x03, 0xE7, 0xC0, 0x07, 0xCF, + 0x80, 0x0F, 0xBE, 0x00, 0x1F, 0x7C, 0x00, 0x3F, 0xF0, 0x00, 0x7C, 0x07, + 0xFF, 0xF0, 0x07, 0xFF, 0xFC, 0x07, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0x0F, + 0xC0, 0x3F, 0x0F, 0x80, 0x1F, 0x0F, 0x80, 0x1F, 0x0F, 0x80, 0x1F, 0x1F, + 0x80, 0x1E, 0x1F, 0x80, 0x3E, 0x1F, 0x00, 0x7C, 0x1F, 0xFF, 0xF8, 0x1F, + 0xFF, 0xF0, 0x3F, 0xFF, 0xF8, 0x3F, 0xFF, 0xF8, 0x3E, 0x00, 0xFC, 0x3E, + 0x00, 0x7C, 0x3E, 0x00, 0x7C, 0x7E, 0x00, 0x7C, 0x7C, 0x00, 0x7C, 0x7C, + 0x00, 0xF8, 0x7C, 0x01, 0xF8, 0x7F, 0xFF, 0xF0, 0xFF, 0xFF, 0xE0, 0xFF, + 0xFF, 0xC0, 0xFF, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0xF8, 0x01, + 0xFF, 0xFC, 0x03, 0xFF, 0xFE, 0x07, 0xE0, 0x7F, 0x0F, 0xC0, 0x3F, 0x1F, + 0x80, 0x1F, 0x3F, 0x00, 0x1F, 0x3E, 0x00, 0x1F, 0x7E, 0x00, 0x00, 0x7C, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, + 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x7C, 0xF8, + 0x00, 0x7C, 0xFC, 0x00, 0xF8, 0xFC, 0x01, 0xF8, 0x7F, 0x07, 0xF0, 0x7F, + 0xFF, 0xE0, 0x3F, 0xFF, 0xC0, 0x0F, 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x07, + 0xFF, 0xE0, 0x07, 0xFF, 0xF8, 0x07, 0xFF, 0xFC, 0x0F, 0xFF, 0xFE, 0x0F, + 0x80, 0x7E, 0x0F, 0x80, 0x3F, 0x0F, 0x80, 0x1F, 0x1F, 0x80, 0x1F, 0x1F, + 0x80, 0x1F, 0x1F, 0x00, 0x1F, 0x1F, 0x00, 0x1F, 0x1F, 0x00, 0x1F, 0x3F, + 0x00, 0x1F, 0x3E, 0x00, 0x3E, 0x3E, 0x00, 0x3E, 0x3E, 0x00, 0x3E, 0x3E, + 0x00, 0x3E, 0x7E, 0x00, 0x7C, 0x7C, 0x00, 0x7C, 0x7C, 0x00, 0xF8, 0x7C, + 0x01, 0xF8, 0x7C, 0x07, 0xF0, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xC0, 0xFF, + 0xFF, 0x00, 0xFF, 0xF8, 0x00, 0x07, 0xFF, 0xFF, 0x07, 0xFF, 0xFE, 0x07, + 0xFF, 0xFE, 0x0F, 0xFF, 0xFE, 0x0F, 0x80, 0x00, 0x0F, 0x80, 0x00, 0x0F, + 0x80, 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x1F, 0xFF, 0xF0, 0x1F, 0xFF, 0xF0, 0x3F, 0xFF, 0xF0, 0x3F, + 0xFF, 0xF0, 0x3E, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x7E, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xFF, + 0xFF, 0xF0, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xE0, 0x07, + 0xFF, 0xFE, 0x0F, 0xFF, 0xFC, 0x3F, 0xFF, 0xF0, 0x7F, 0xFF, 0xE0, 0xF8, + 0x00, 0x01, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0x1F, 0x00, + 0x00, 0x3E, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0xFF, 0xFE, + 0x07, 0xFF, 0xFC, 0x0F, 0xFF, 0xF0, 0x1F, 0x00, 0x00, 0x3E, 0x00, 0x00, + 0xFC, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, + 0x80, 0x00, 0x3F, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, + 0x00, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0xF8, 0x01, 0xFF, 0xFC, 0x03, + 0xFF, 0xFE, 0x07, 0xE0, 0x7E, 0x0F, 0x80, 0x3F, 0x1F, 0x00, 0x1F, 0x3E, + 0x00, 0x1F, 0x3E, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7C, + 0x00, 0x00, 0xF8, 0x03, 0xFF, 0xF8, 0x07, 0xFF, 0xF8, 0x07, 0xFE, 0xF8, + 0x07, 0xFE, 0xF8, 0x00, 0x3E, 0xF8, 0x00, 0x3E, 0xFC, 0x00, 0x7E, 0xFC, + 0x00, 0x7C, 0x7E, 0x00, 0xFC, 0x7F, 0x83, 0xFC, 0x3F, 0xFF, 0xFC, 0x1F, + 0xFF, 0xBC, 0x0F, 0xFF, 0x38, 0x03, 0xFC, 0x38, 0x03, 0xE0, 0x07, 0xC0, + 0xF8, 0x01, 0xF0, 0x7E, 0x00, 0x7C, 0x1F, 0x00, 0x3F, 0x07, 0xC0, 0x0F, + 0x81, 0xF0, 0x03, 0xE0, 0xFC, 0x00, 0xF8, 0x3E, 0x00, 0x3E, 0x0F, 0x80, + 0x1F, 0x83, 0xE0, 0x07, 0xC0, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xFC, 0x1F, + 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xC1, 0xF0, 0x03, 0xE0, 0x7C, 0x00, 0xF8, + 0x3F, 0x00, 0x3E, 0x0F, 0x80, 0x0F, 0x83, 0xE0, 0x07, 0xE0, 0xF8, 0x01, + 0xF0, 0x3E, 0x00, 0x7C, 0x1F, 0x80, 0x1F, 0x07, 0xC0, 0x0F, 0xC1, 0xF0, + 0x03, 0xF0, 0x7C, 0x00, 0xF8, 0x3F, 0x00, 0x3E, 0x00, 0x07, 0xC3, 0xF0, + 0xFC, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x7E, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, + 0x3F, 0x0F, 0xC3, 0xE0, 0xF8, 0x3E, 0x0F, 0x87, 0xE1, 0xF0, 0x7C, 0x1F, + 0x07, 0xC3, 0xF0, 0xFC, 0x3E, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, + 0x01, 0xF0, 0x00, 0x3F, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xE0, + 0x00, 0x3E, 0x00, 0x07, 0xE0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, + 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x7C, 0x0F, + 0x8F, 0x81, 0xF8, 0xF8, 0x1F, 0x0F, 0x81, 0xF0, 0xF8, 0x1F, 0x0F, 0xC3, + 0xF0, 0xFF, 0xFE, 0x07, 0xFF, 0xC0, 0x3F, 0xF8, 0x01, 0xFC, 0x00, 0x07, + 0xC0, 0x0F, 0xC1, 0xF0, 0x07, 0xE0, 0x7C, 0x03, 0xF0, 0x3F, 0x03, 0xF8, + 0x0F, 0x81, 0xF8, 0x03, 0xE0, 0xFC, 0x00, 0xF8, 0x7E, 0x00, 0x7E, 0x3F, + 0x00, 0x1F, 0x1F, 0x80, 0x07, 0xCF, 0xC0, 0x01, 0xF7, 0xE0, 0x00, 0x7F, + 0xF0, 0x00, 0x3F, 0xFC, 0x00, 0x0F, 0xFF, 0x80, 0x03, 0xFF, 0xF0, 0x00, + 0xFE, 0xFC, 0x00, 0x3F, 0x1F, 0x80, 0x1F, 0x87, 0xE0, 0x07, 0xC0, 0xFC, + 0x01, 0xF0, 0x3F, 0x00, 0x7C, 0x07, 0xE0, 0x1F, 0x01, 0xFC, 0x0F, 0xC0, + 0x3F, 0x03, 0xE0, 0x0F, 0xE0, 0xF8, 0x01, 0xF8, 0x3E, 0x00, 0x3F, 0x00, + 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x0F, 0xC0, 0x03, + 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x1F, 0x80, 0x07, 0xC0, 0x01, 0xF0, + 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x0F, 0xC0, 0x03, 0xE0, 0x00, 0xF8, 0x00, + 0x3E, 0x00, 0x0F, 0x80, 0x07, 0xE0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x1F, + 0x00, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xE0, 0x03, + 0xF8, 0x01, 0xFC, 0x07, 0xF0, 0x07, 0xF8, 0x1F, 0xE0, 0x0F, 0xF0, 0x3F, + 0xC0, 0x3F, 0xE0, 0x7F, 0x80, 0x7F, 0xC0, 0xFF, 0x01, 0xFF, 0x01, 0xFE, + 0x03, 0xFE, 0x07, 0xDC, 0x07, 0x7C, 0x0F, 0xB8, 0x1E, 0xF8, 0x1F, 0x70, + 0x3D, 0xF0, 0x3E, 0xF0, 0xF7, 0xC0, 0xF9, 0xE1, 0xEF, 0x81, 0xF3, 0xC7, + 0x9F, 0x03, 0xE7, 0x8F, 0x3E, 0x07, 0xCF, 0x3C, 0x7C, 0x0F, 0x9E, 0x79, + 0xF0, 0x3E, 0x3C, 0xE3, 0xE0, 0x7C, 0x7B, 0xC7, 0xC0, 0xF8, 0xF7, 0x8F, + 0x81, 0xF1, 0xFE, 0x1E, 0x07, 0xE3, 0xFC, 0x7C, 0x0F, 0x87, 0xF0, 0xF8, + 0x1F, 0x0F, 0xE1, 0xF0, 0x3E, 0x1F, 0x83, 0xE0, 0x7C, 0x3F, 0x0F, 0x81, + 0xF0, 0x7E, 0x1F, 0x00, 0x03, 0xE0, 0x07, 0xC0, 0x7E, 0x00, 0xF8, 0x1F, + 0xC0, 0x1F, 0x03, 0xF8, 0x03, 0xE0, 0x7F, 0x80, 0x7C, 0x0F, 0xF0, 0x1F, + 0x01, 0xFF, 0x03, 0xE0, 0x7F, 0xE0, 0x7C, 0x0F, 0xBC, 0x0F, 0x81, 0xF7, + 0xC1, 0xF0, 0x3E, 0xF8, 0x7C, 0x0F, 0x8F, 0x0F, 0x81, 0xF1, 0xF1, 0xF0, + 0x3E, 0x3E, 0x3E, 0x07, 0xC3, 0xC7, 0xC0, 0xF8, 0x7D, 0xF0, 0x3E, 0x0F, + 0xBE, 0x07, 0xC0, 0xF7, 0xC0, 0xF8, 0x1F, 0xF8, 0x1F, 0x01, 0xFE, 0x03, + 0xC0, 0x3F, 0xC0, 0xF8, 0x07, 0xF8, 0x1F, 0x00, 0x7F, 0x03, 0xE0, 0x0F, + 0xE0, 0x7C, 0x01, 0xF8, 0x1F, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0xE0, 0x00, + 0x3F, 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0x7F, 0xFF, 0xC0, 0x7E, 0x07, 0xF0, + 0x7E, 0x01, 0xF8, 0x7C, 0x00, 0x7E, 0x3E, 0x00, 0x1F, 0x3E, 0x00, 0x0F, + 0x9E, 0x00, 0x07, 0xDF, 0x00, 0x03, 0xEF, 0x80, 0x01, 0xFF, 0x80, 0x00, + 0xFF, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x7D, 0xF0, 0x00, 0x3E, 0xF8, 0x00, + 0x1F, 0x7C, 0x00, 0x1F, 0x3E, 0x00, 0x1F, 0x9F, 0x80, 0x0F, 0x87, 0xE0, + 0x0F, 0x83, 0xF8, 0x1F, 0x80, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0x80, 0x0F, + 0xFF, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x07, 0xFF, 0xE0, 0x0F, 0xFF, 0xF0, + 0x3F, 0xFF, 0xF0, 0x7F, 0xFF, 0xF0, 0xF8, 0x07, 0xE1, 0xF0, 0x07, 0xC3, + 0xE0, 0x0F, 0x8F, 0xC0, 0x1F, 0x1F, 0x00, 0x3E, 0x3E, 0x00, 0xF8, 0x7C, + 0x01, 0xF0, 0xF8, 0x07, 0xC3, 0xFF, 0xFF, 0x87, 0xFF, 0xFE, 0x0F, 0xFF, + 0xF8, 0x1F, 0xFF, 0x80, 0x3E, 0x00, 0x00, 0xFC, 0x00, 0x01, 0xF0, 0x00, + 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x3F, 0x00, 0x00, + 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, 0x1F, 0xC0, + 0x00, 0x3F, 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0x7F, 0xFF, 0xC0, 0x7F, 0x07, + 0xF0, 0x7E, 0x01, 0xF8, 0x7E, 0x00, 0x7E, 0x3E, 0x00, 0x1F, 0x3E, 0x00, + 0x0F, 0x9E, 0x00, 0x07, 0xDF, 0x00, 0x03, 0xEF, 0x80, 0x01, 0xF7, 0x80, + 0x00, 0xFF, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x7D, 0xF0, 0x00, 0x3E, 0xF8, + 0x02, 0x1F, 0x7C, 0x03, 0x9F, 0x3E, 0x03, 0xFF, 0x9F, 0x81, 0xFF, 0x87, + 0xE0, 0x7F, 0x83, 0xF8, 0x3F, 0xC0, 0xFF, 0xFF, 0xE0, 0x3F, 0xFF, 0xF0, + 0x0F, 0xFF, 0xFC, 0x01, 0xFE, 0x1C, 0x00, 0x00, 0x0C, 0x00, 0x07, 0xFF, + 0xF8, 0x07, 0xFF, 0xFE, 0x07, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0x0F, 0x80, + 0x3F, 0x0F, 0x80, 0x1F, 0x0F, 0x80, 0x1F, 0x0F, 0x80, 0x1F, 0x1F, 0x80, + 0x1E, 0x1F, 0x00, 0x3E, 0x1F, 0x00, 0x7C, 0x1F, 0xFF, 0xF8, 0x1F, 0xFF, + 0xE0, 0x3F, 0xFF, 0xF0, 0x3F, 0xFF, 0xF8, 0x3E, 0x01, 0xF8, 0x3E, 0x00, + 0xF8, 0x3E, 0x00, 0xF8, 0x7E, 0x00, 0xF8, 0x7C, 0x00, 0xF8, 0x7C, 0x01, + 0xF0, 0x7C, 0x01, 0xF0, 0x7C, 0x01, 0xF0, 0xFC, 0x01, 0xF0, 0xF8, 0x01, + 0xF0, 0xF8, 0x01, 0xF0, 0x00, 0x3F, 0xC0, 0x07, 0xFF, 0xC0, 0x3F, 0xFF, + 0x81, 0xFF, 0xFF, 0x0F, 0xC0, 0xFC, 0x3E, 0x01, 0xF1, 0xF0, 0x07, 0xC7, + 0xC0, 0x1F, 0x1F, 0x00, 0x00, 0x7E, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, + 0x80, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0xC0, 0x1F, 0xFF, 0x80, 0x03, 0xFE, + 0x00, 0x01, 0xF8, 0x00, 0x03, 0xEF, 0x80, 0x0F, 0xBE, 0x00, 0x3C, 0xFC, + 0x01, 0xF3, 0xF8, 0x1F, 0x87, 0xFF, 0xFE, 0x0F, 0xFF, 0xF0, 0x1F, 0xFF, + 0x00, 0x1F, 0xF0, 0x00, 0x7F, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xF0, 0x0F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xC0, 0x00, 0x3E, + 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xC0, 0x00, + 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xC0, + 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xFC, 0x00, 0x07, + 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xFC, 0x00, + 0x00, 0x0F, 0x80, 0x1F, 0x1F, 0x80, 0x1F, 0x1F, 0x00, 0x1F, 0x1F, 0x00, + 0x3F, 0x1F, 0x00, 0x3E, 0x1F, 0x00, 0x3E, 0x3E, 0x00, 0x3E, 0x3E, 0x00, + 0x7E, 0x3E, 0x00, 0x7C, 0x3E, 0x00, 0x7C, 0x3E, 0x00, 0x7C, 0x7C, 0x00, + 0x7C, 0x7C, 0x00, 0xFC, 0x7C, 0x00, 0xF8, 0x7C, 0x00, 0xF8, 0x7C, 0x00, + 0xF8, 0xF8, 0x00, 0xF8, 0xF8, 0x01, 0xF8, 0xF8, 0x01, 0xF0, 0xF8, 0x01, + 0xF0, 0xF8, 0x03, 0xE0, 0xFE, 0x0F, 0xE0, 0x7F, 0xFF, 0xC0, 0x7F, 0xFF, + 0x80, 0x1F, 0xFE, 0x00, 0x07, 0xF8, 0x00, 0xFC, 0x00, 0x7F, 0xF0, 0x03, + 0xE7, 0xC0, 0x0F, 0x9F, 0x00, 0x7C, 0x7C, 0x01, 0xF1, 0xF0, 0x0F, 0x87, + 0xC0, 0x3E, 0x1F, 0x01, 0xF0, 0x7C, 0x07, 0x81, 0xF0, 0x3E, 0x03, 0xC0, + 0xF0, 0x0F, 0x07, 0xC0, 0x3E, 0x1E, 0x00, 0xF8, 0xF8, 0x03, 0xE3, 0xC0, + 0x0F, 0x9F, 0x00, 0x3E, 0x78, 0x00, 0xFB, 0xE0, 0x01, 0xEF, 0x00, 0x07, + 0xFC, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xE0, + 0x00, 0x1F, 0x80, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x07, 0xE0, 0x1F, 0xF8, + 0x07, 0xE0, 0x3F, 0xF8, 0x0F, 0xE0, 0x3E, 0xF8, 0x0F, 0xE0, 0x7E, 0xF8, + 0x1F, 0xE0, 0x7C, 0xF8, 0x1F, 0xE0, 0x7C, 0xF8, 0x3F, 0xE0, 0xF8, 0xF8, + 0x3D, 0xE0, 0xF8, 0x78, 0x3D, 0xE1, 0xF0, 0x78, 0x79, 0xE1, 0xF0, 0x78, + 0x79, 0xE1, 0xE0, 0x78, 0xF9, 0xE3, 0xE0, 0x78, 0xF1, 0xE3, 0xC0, 0x79, + 0xF1, 0xE7, 0xC0, 0x79, 0xE1, 0xE7, 0x80, 0x79, 0xE1, 0xE7, 0x80, 0x7B, + 0xC1, 0xEF, 0x80, 0x7B, 0xC1, 0xEF, 0x00, 0x7F, 0x81, 0xFF, 0x00, 0x7F, + 0x81, 0xFE, 0x00, 0x7F, 0x01, 0xFE, 0x00, 0x7F, 0x01, 0xFC, 0x00, 0x7F, + 0x01, 0xFC, 0x00, 0x7E, 0x01, 0xF8, 0x00, 0x3E, 0x01, 0xF8, 0x00, 0x3C, + 0x01, 0xF0, 0x00, 0x03, 0xF0, 0x07, 0xE0, 0x7E, 0x01, 0xF8, 0x07, 0xE0, + 0x7E, 0x00, 0xFC, 0x1F, 0x80, 0x1F, 0x83, 0xE0, 0x01, 0xF8, 0xF8, 0x00, + 0x3F, 0x3F, 0x00, 0x03, 0xEF, 0xC0, 0x00, 0x7F, 0xF0, 0x00, 0x0F, 0xFC, + 0x00, 0x00, 0xFF, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x03, 0xF8, 0x00, 0x00, + 0x7F, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x07, 0xFE, 0x00, 0x00, 0xFF, 0xC0, + 0x00, 0x3E, 0xF8, 0x00, 0x0F, 0xDF, 0x80, 0x03, 0xF3, 0xF0, 0x00, 0xFC, + 0x3F, 0x00, 0x3F, 0x07, 0xE0, 0x07, 0xE0, 0xFC, 0x01, 0xF8, 0x0F, 0xC0, + 0x7E, 0x01, 0xF8, 0x1F, 0x80, 0x3F, 0x80, 0x7C, 0x00, 0xFD, 0xF8, 0x07, + 0xE7, 0xE0, 0x1F, 0x1F, 0x80, 0xFC, 0x3E, 0x07, 0xE0, 0xFC, 0x1F, 0x03, + 0xF0, 0xFC, 0x07, 0xC7, 0xE0, 0x1F, 0x1F, 0x00, 0x7E, 0xFC, 0x00, 0xFB, + 0xE0, 0x03, 0xFF, 0x00, 0x0F, 0xF8, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x00, + 0x01, 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x1F, 0x00, 0x00, 0x7C, 0x00, 0x01, + 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xE0, + 0x00, 0x0F, 0x80, 0x00, 0x3E, 0x00, 0x00, 0x07, 0xFF, 0xFF, 0x83, 0xFF, + 0xFF, 0x81, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xE0, 0x00, 0x07, 0xE0, 0x00, + 0x07, 0xE0, 0x00, 0x07, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF0, 0x00, + 0x07, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, + 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, + 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF8, 0x00, + 0x03, 0xF8, 0x00, 0x01, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, + 0xF0, 0x7F, 0xFF, 0xF0, 0x00, 0x01, 0xFE, 0x03, 0xFC, 0x07, 0xF8, 0x1F, + 0xF0, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x07, 0x80, 0x0F, 0x00, + 0x1E, 0x00, 0x3C, 0x00, 0xF8, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, + 0x00, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x07, 0x80, 0x0F, 0x00, + 0x1E, 0x00, 0x3C, 0x00, 0xF8, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, + 0xF0, 0x3F, 0xC0, 0x7F, 0x80, 0xFF, 0x00, 0xE7, 0x39, 0xCE, 0x31, 0x8C, + 0x63, 0x1C, 0xE7, 0x39, 0xCE, 0x31, 0x8C, 0x63, 0x9C, 0xE7, 0x38, 0x01, + 0xFE, 0x03, 0xFC, 0x07, 0xF8, 0x1F, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, + 0x00, 0x3E, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x0F, 0x00, + 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, + 0x00, 0x3E, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x0F, 0x00, + 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x1F, 0xF0, 0x3F, 0xC0, 0x7F, 0x80, 0xFF, + 0x00, 0x00, 0x7C, 0x00, 0xFC, 0x01, 0xFC, 0x01, 0xFC, 0x03, 0xFC, 0x03, + 0x9E, 0x07, 0x9E, 0x0F, 0x1E, 0x0F, 0x1E, 0x1E, 0x1E, 0x1C, 0x0F, 0x3C, + 0x0F, 0x78, 0x0F, 0x78, 0x0F, 0xF0, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFE, 0xF3, 0x8C, 0x71, 0x80, 0x01, 0xFE, 0x01, 0xFF, 0xE0, + 0xFF, 0xF8, 0x7F, 0xFF, 0x1F, 0x0F, 0xC7, 0x81, 0xF0, 0x00, 0x7C, 0x00, + 0xFE, 0x07, 0xFF, 0x87, 0xFF, 0xE3, 0xFE, 0xF9, 0xF0, 0x7C, 0xF8, 0x1F, + 0x3E, 0x0F, 0xCF, 0x87, 0xF3, 0xFF, 0xF8, 0xFF, 0xFE, 0x1F, 0xEF, 0x81, + 0xE3, 0xF0, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, + 0x07, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF9, 0xF8, 0x0F, 0xFF, + 0xC1, 0xFF, 0xFE, 0x1F, 0xFF, 0xE1, 0xFC, 0x3F, 0x1F, 0x83, 0xF1, 0xF0, + 0x1F, 0x3E, 0x01, 0xF3, 0xE0, 0x1F, 0x3C, 0x01, 0xF3, 0xC0, 0x1F, 0x3C, + 0x03, 0xE7, 0xC0, 0x3E, 0x7E, 0x07, 0xC7, 0xF1, 0xFC, 0x7F, 0xFF, 0x87, + 0xFF, 0xF0, 0xFB, 0xFE, 0x0F, 0x9F, 0x80, 0x00, 0xFC, 0x01, 0xFF, 0xC0, + 0xFF, 0xF8, 0x7F, 0xFF, 0x3F, 0x0F, 0xCF, 0x81, 0xF7, 0xC0, 0x7D, 0xF0, + 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF8, 0x0F, + 0xBE, 0x07, 0xCF, 0xC3, 0xF1, 0xFF, 0xF8, 0x7F, 0xFC, 0x0F, 0xFE, 0x00, + 0xFE, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0x80, 0x00, + 0x3E, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x1F, 0x00, 0x7E, 0x7C, + 0x07, 0xFD, 0xF0, 0x3F, 0xFF, 0xC1, 0xFF, 0xFE, 0x0F, 0xE3, 0xF8, 0x3E, + 0x07, 0xE1, 0xF0, 0x1F, 0x87, 0xC0, 0x3C, 0x3E, 0x00, 0xF0, 0xF8, 0x07, + 0xC3, 0xE0, 0x1F, 0x0F, 0x80, 0x7C, 0x3E, 0x03, 0xE0, 0xF8, 0x1F, 0x83, + 0xF0, 0xFE, 0x07, 0xFF, 0xF8, 0x1F, 0xFF, 0xE0, 0x3F, 0xFF, 0x00, 0x7E, + 0x7C, 0x00, 0x00, 0xFE, 0x00, 0x7F, 0xE0, 0x3F, 0xFE, 0x0F, 0xFF, 0xE3, + 0xF0, 0x7E, 0x7C, 0x07, 0xDF, 0x00, 0xFB, 0xE0, 0x1F, 0x7F, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x1F, 0x3F, + 0x07, 0xE3, 0xFF, 0xF8, 0x7F, 0xFE, 0x03, 0xFF, 0x00, 0x3F, 0x80, 0x00, + 0x00, 0xF8, 0x1F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7C, 0x07, 0xC0, 0x3E, 0x0F, + 0xFE, 0x7F, 0xF3, 0xFF, 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, + 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x78, 0x07, 0xC0, 0x3E, 0x01, + 0xF0, 0x0F, 0x80, 0xF8, 0x07, 0xC0, 0x00, 0x00, 0x7C, 0x7C, 0x07, 0xFD, + 0xF0, 0x3F, 0xF7, 0x81, 0xFF, 0xFE, 0x0F, 0xE3, 0xF8, 0x3E, 0x07, 0xE1, + 0xF8, 0x0F, 0x87, 0xC0, 0x3C, 0x1E, 0x00, 0xF0, 0xF8, 0x03, 0xC3, 0xE0, + 0x1F, 0x0F, 0x80, 0x78, 0x3E, 0x03, 0xE0, 0xF8, 0x1F, 0x83, 0xF0, 0xFE, + 0x07, 0xFF, 0xF8, 0x1F, 0xFF, 0xC0, 0x3F, 0xEF, 0x00, 0x3E, 0x7C, 0x00, + 0x01, 0xF0, 0x00, 0x07, 0xC3, 0xE0, 0x3E, 0x0F, 0x80, 0xF8, 0x3F, 0x0F, + 0xC0, 0x7F, 0xFE, 0x00, 0xFF, 0xF0, 0x00, 0xFE, 0x00, 0x00, 0x03, 0xE0, + 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, + 0x00, 0x0F, 0x80, 0x00, 0xF8, 0xF8, 0x0F, 0xBF, 0xE0, 0xFF, 0xFF, 0x0F, + 0xFF, 0xF1, 0xFC, 0x3F, 0x1F, 0x81, 0xF1, 0xF0, 0x1F, 0x1F, 0x01, 0xF1, + 0xE0, 0x1F, 0x3E, 0x03, 0xE3, 0xE0, 0x3E, 0x3E, 0x03, 0xE3, 0xE0, 0x3E, + 0x7C, 0x03, 0xE7, 0xC0, 0x7C, 0x7C, 0x07, 0xC7, 0xC0, 0x7C, 0x7C, 0x07, + 0xCF, 0x80, 0x78, 0x07, 0xC1, 0xF0, 0x7C, 0x3E, 0x00, 0x00, 0x00, 0x00, + 0x3E, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, + 0x0F, 0x87, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC3, 0xE0, 0xF8, 0x3E, 0x00, + 0x00, 0x3E, 0x00, 0x78, 0x01, 0xF0, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7C, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xE0, 0x0F, 0x80, 0x1F, + 0x00, 0x3E, 0x00, 0x7C, 0x00, 0xF8, 0x03, 0xE0, 0x07, 0xC0, 0x0F, 0x80, + 0x1F, 0x00, 0x3C, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xE0, 0x07, 0xC0, 0x1F, + 0x00, 0x3E, 0x00, 0x7C, 0x00, 0xF8, 0x03, 0xF0, 0x1F, 0xC0, 0x3F, 0x80, + 0x7E, 0x01, 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, + 0x0F, 0x80, 0x00, 0x78, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, + 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x07, 0xC7, 0xE0, 0x3E, 0x7E, 0x01, + 0xF7, 0xE0, 0x0F, 0xFE, 0x00, 0xFF, 0xE0, 0x07, 0xFF, 0x00, 0x3F, 0xFC, + 0x01, 0xFF, 0xE0, 0x0F, 0xDF, 0x00, 0xFC, 0xFC, 0x07, 0xC3, 0xE0, 0x3E, + 0x1F, 0x01, 0xF0, 0xFC, 0x0F, 0x83, 0xE0, 0xF8, 0x1F, 0x87, 0xC0, 0xFC, + 0x00, 0x07, 0xC1, 0xF0, 0x7C, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x1F, + 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x87, + 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC3, 0xE0, 0xF8, 0x3E, 0x00, 0x0F, 0x8F, + 0x83, 0xF0, 0x3E, 0xFF, 0x3F, 0xE0, 0xF7, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, + 0xFF, 0x1F, 0xC7, 0xF8, 0x7C, 0x7C, 0x0F, 0x81, 0xF1, 0xF0, 0x3E, 0x07, + 0xCF, 0x81, 0xF0, 0x3E, 0x3E, 0x07, 0xC0, 0xF8, 0xF8, 0x1F, 0x03, 0xE3, + 0xE0, 0x7C, 0x0F, 0x8F, 0x81, 0xF0, 0x3E, 0x7C, 0x0F, 0x81, 0xF1, 0xF0, + 0x3E, 0x07, 0xC7, 0xC0, 0xF8, 0x1F, 0x1F, 0x03, 0xE0, 0x7C, 0x7C, 0x0F, + 0x81, 0xE3, 0xE0, 0x7C, 0x0F, 0x8F, 0x81, 0xF0, 0x3E, 0x00, 0x0F, 0x8F, + 0x80, 0xFB, 0xFE, 0x0F, 0xFF, 0xF1, 0xFF, 0xFF, 0x1F, 0xC3, 0xF1, 0xF8, + 0x1F, 0x1F, 0x01, 0xF1, 0xF0, 0x1F, 0x3E, 0x01, 0xF3, 0xE0, 0x3E, 0x3E, + 0x03, 0xE3, 0xE0, 0x3E, 0x3C, 0x03, 0xE7, 0xC0, 0x3E, 0x7C, 0x07, 0xC7, + 0xC0, 0x7C, 0x7C, 0x07, 0xC7, 0x80, 0x7C, 0xF8, 0x07, 0x80, 0x00, 0xFE, + 0x00, 0x7F, 0xF0, 0x3F, 0xFF, 0x0F, 0xFF, 0xE3, 0xF8, 0xFE, 0x7C, 0x0F, + 0xDF, 0x00, 0xFB, 0xE0, 0x1F, 0xF8, 0x03, 0xFF, 0x00, 0x7F, 0xE0, 0x1F, + 0xFC, 0x03, 0xEF, 0x80, 0x7D, 0xF8, 0x1F, 0x3F, 0x07, 0xE3, 0xFF, 0xF8, + 0x7F, 0xFE, 0x07, 0xFF, 0x00, 0x3F, 0x80, 0x00, 0x03, 0xE7, 0xE0, 0x0F, + 0xBF, 0xC0, 0x7D, 0xFF, 0x81, 0xFF, 0xFE, 0x07, 0xF0, 0xFC, 0x1F, 0x81, + 0xF0, 0x7C, 0x07, 0xC3, 0xE0, 0x1F, 0x0F, 0x80, 0x7C, 0x3E, 0x01, 0xF0, + 0xF0, 0x07, 0xC3, 0xC0, 0x3E, 0x1F, 0x00, 0xF8, 0x7E, 0x07, 0xC1, 0xFC, + 0x7F, 0x07, 0xFF, 0xF8, 0x1F, 0xFF, 0xC0, 0xFB, 0xFE, 0x03, 0xE7, 0xE0, + 0x0F, 0x80, 0x00, 0x3E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x1F, + 0x00, 0x00, 0x7C, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x01, + 0xF1, 0xF0, 0x7F, 0xDF, 0x0F, 0xFD, 0xF1, 0xFF, 0xFE, 0x3F, 0x8F, 0xE3, + 0xE0, 0x7E, 0x7C, 0x03, 0xE7, 0xC0, 0x3E, 0xF8, 0x03, 0xCF, 0x80, 0x3C, + 0xF8, 0x07, 0xCF, 0x80, 0x7C, 0xF8, 0x0F, 0x8F, 0x81, 0xF8, 0xFC, 0x3F, + 0x87, 0xFF, 0xF8, 0x7F, 0xFF, 0x83, 0xFF, 0xF0, 0x1F, 0x9F, 0x00, 0x01, + 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, + 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x0F, 0x8E, 0x1F, 0x7C, 0x3F, + 0xF0, 0xFF, 0xE1, 0xFC, 0x03, 0xF0, 0x07, 0xC0, 0x0F, 0x80, 0x3E, 0x00, + 0x7C, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xE0, 0x0F, 0x80, 0x1F, 0x00, 0x3E, + 0x00, 0x7C, 0x00, 0xF0, 0x03, 0xE0, 0x00, 0x01, 0xFC, 0x01, 0xFF, 0xC0, + 0xFF, 0xF8, 0x7F, 0xFF, 0x3F, 0x0F, 0xCF, 0x81, 0xF3, 0xF0, 0x00, 0xFF, + 0x80, 0x3F, 0xFC, 0x07, 0xFF, 0xC0, 0x7F, 0xF8, 0x03, 0xFE, 0x00, 0x1F, + 0xBE, 0x03, 0xEF, 0xC1, 0xFB, 0xFF, 0xFC, 0x7F, 0xFE, 0x0F, 0xFF, 0x00, + 0xFE, 0x00, 0x0F, 0x81, 0xF0, 0x7C, 0x0F, 0x81, 0xF0, 0xFF, 0xBF, 0xF7, + 0xFE, 0x3E, 0x07, 0xC0, 0xF8, 0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, + 0xF8, 0x1F, 0x03, 0xE0, 0x7F, 0x0F, 0xE1, 0xFC, 0x1F, 0x80, 0x1F, 0x01, + 0xF1, 0xF0, 0x1F, 0x3E, 0x03, 0xE3, 0xE0, 0x3E, 0x3E, 0x03, 0xE3, 0xE0, + 0x3E, 0x3E, 0x03, 0xE7, 0xC0, 0x7C, 0x7C, 0x07, 0xC7, 0xC0, 0x7C, 0x7C, + 0x07, 0xC7, 0xC0, 0x7C, 0xF8, 0x0F, 0x8F, 0x81, 0xF8, 0xF8, 0x3F, 0x8F, + 0xFF, 0xF8, 0xFF, 0xFF, 0x07, 0xFD, 0xF0, 0x3F, 0x1F, 0x00, 0xF8, 0x0F, + 0xFE, 0x03, 0xEF, 0x81, 0xF3, 0xE0, 0x7C, 0xF8, 0x3E, 0x3E, 0x0F, 0x8F, + 0x87, 0xC1, 0xE1, 0xF0, 0x78, 0xF8, 0x1E, 0x3E, 0x07, 0x9F, 0x01, 0xF7, + 0x80, 0x7F, 0xE0, 0x1F, 0xF0, 0x03, 0xFC, 0x00, 0xFE, 0x00, 0x3F, 0x80, + 0x0F, 0xC0, 0x03, 0xF0, 0x00, 0xF8, 0x1F, 0x07, 0xFF, 0x03, 0xE0, 0xFB, + 0xE0, 0xFC, 0x1F, 0x7C, 0x1F, 0x87, 0xCF, 0x87, 0xF0, 0xF9, 0xF0, 0xFE, + 0x3E, 0x3E, 0x3D, 0xC7, 0xC3, 0xC7, 0xB9, 0xF0, 0x79, 0xE7, 0x3E, 0x0F, + 0x3C, 0xE7, 0x81, 0xEF, 0x1D, 0xF0, 0x3D, 0xE3, 0xBC, 0x07, 0xBC, 0x7F, + 0x80, 0xFF, 0x0F, 0xE0, 0x1F, 0xE1, 0xFC, 0x03, 0xF8, 0x3F, 0x00, 0x7F, + 0x07, 0xE0, 0x0F, 0xC0, 0xF8, 0x01, 0xF8, 0x1F, 0x00, 0x00, 0x0F, 0xC1, + 0xF8, 0x3F, 0x07, 0xC0, 0x7C, 0x3E, 0x01, 0xF9, 0xF8, 0x03, 0xEF, 0xC0, + 0x0F, 0xBE, 0x00, 0x1F, 0xF0, 0x00, 0x7F, 0x80, 0x01, 0xFC, 0x00, 0x03, + 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0xFF, 0x00, 0x07, 0xFE, 0x00, 0x3E, 0xF8, + 0x01, 0xFB, 0xF0, 0x07, 0xC7, 0xC0, 0x3E, 0x1F, 0x81, 0xF8, 0x7E, 0x0F, + 0xC0, 0xF8, 0x00, 0x1F, 0x80, 0x7C, 0x3E, 0x03, 0xE0, 0xF8, 0x0F, 0x03, + 0xE0, 0x7C, 0x0F, 0x81, 0xE0, 0x3E, 0x0F, 0x80, 0xF8, 0x3C, 0x03, 0xE1, + 0xF0, 0x07, 0x87, 0x80, 0x1F, 0x3E, 0x00, 0x7C, 0xF0, 0x01, 0xF7, 0xC0, + 0x07, 0xDE, 0x00, 0x1F, 0xF0, 0x00, 0x7F, 0xC0, 0x01, 0xFE, 0x00, 0x03, + 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xE0, + 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x00, 0x01, + 0xF8, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x0F, 0xFF, 0xE1, 0xFF, 0xFC, 0x3F, + 0xFF, 0x87, 0xFF, 0xE0, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x0F, 0xC0, 0x03, + 0xF0, 0x01, 0xFC, 0x00, 0x7E, 0x00, 0x1F, 0x80, 0x07, 0xE0, 0x01, 0xF8, + 0x00, 0x7E, 0x00, 0x1F, 0x80, 0x07, 0xFF, 0xF8, 0xFF, 0xFF, 0x1F, 0xFF, + 0xE3, 0xFF, 0xFC, 0x00, 0x00, 0x7C, 0x03, 0xF0, 0x1F, 0xC0, 0xFE, 0x03, + 0xE0, 0x0F, 0x00, 0x3C, 0x00, 0xF0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x01, + 0xE0, 0x0F, 0x80, 0x3C, 0x01, 0xF0, 0x1F, 0x80, 0x70, 0x01, 0xF8, 0x01, + 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x03, 0xC0, 0x0F, 0x00, 0x3C, 0x00, + 0xF0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x01, 0xFC, 0x07, 0xE0, 0x0F, 0x80, + 0x1E, 0x00, 0x03, 0x81, 0xC0, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0C, 0x0E, + 0x07, 0x03, 0x81, 0xC0, 0xC0, 0xE0, 0x70, 0x38, 0x18, 0x1C, 0x0E, 0x07, + 0x03, 0x81, 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x18, 0x1C, 0x0E, 0x07, 0x01, + 0x80, 0x80, 0x00, 0x00, 0x01, 0xE0, 0x07, 0xC0, 0x1F, 0x80, 0xFE, 0x00, + 0x78, 0x01, 0xE0, 0x07, 0x80, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, + 0x78, 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x7E, 0x00, 0x38, 0x07, 0xE0, + 0x3E, 0x00, 0xF0, 0x07, 0xC0, 0x1E, 0x00, 0x78, 0x01, 0xE0, 0x07, 0x80, + 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x1F, 0x01, 0xF8, 0x0F, 0xE0, 0x3F, 0x00, + 0xF8, 0x00, 0x0F, 0x00, 0x1F, 0xC1, 0xDF, 0xF0, 0xEE, 0x3F, 0xE6, 0x07, + 0xF0, 0x01, 0xE0}; + +const GFXglyph FreeSansBoldOblique18pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 10, 0, 1}, // 0x20 ' ' + {0, 10, 25, 12, 4, -24}, // 0x21 '!' + {32, 13, 9, 17, 6, -25}, // 0x22 '"' + {47, 22, 24, 19, 1, -23}, // 0x23 '#' + {113, 19, 31, 19, 2, -26}, // 0x24 '$' + {187, 26, 26, 31, 5, -25}, // 0x25 '%' + {272, 21, 25, 25, 3, -24}, // 0x26 '&' + {338, 5, 9, 8, 6, -25}, // 0x27 ''' + {344, 13, 33, 12, 3, -25}, // 0x28 '(' + {398, 13, 33, 12, -1, -25}, // 0x29 ')' + {452, 12, 11, 14, 5, -25}, // 0x2A '*' + {469, 18, 16, 20, 3, -15}, // 0x2B '+' + {505, 7, 11, 10, 1, -4}, // 0x2C ',' + {515, 10, 4, 12, 2, -10}, // 0x2D '-' + {520, 6, 5, 10, 2, -4}, // 0x2E '.' + {524, 15, 25, 10, 0, -24}, // 0x2F '/' + {571, 18, 25, 19, 3, -24}, // 0x30 '0' + {628, 13, 25, 19, 6, -24}, // 0x31 '1' + {669, 21, 25, 19, 1, -24}, // 0x32 '2' + {735, 20, 25, 19, 2, -24}, // 0x33 '3' + {798, 19, 25, 19, 2, -24}, // 0x34 '4' + {858, 20, 24, 19, 2, -23}, // 0x35 '5' + {918, 19, 25, 19, 3, -24}, // 0x36 '6' + {978, 19, 24, 19, 5, -23}, // 0x37 '7' + {1035, 20, 25, 19, 2, -24}, // 0x38 '8' + {1098, 19, 25, 19, 2, -24}, // 0x39 '9' + {1158, 9, 18, 12, 4, -17}, // 0x3A ':' + {1179, 10, 24, 12, 3, -17}, // 0x3B ';' + {1209, 19, 17, 20, 3, -16}, // 0x3C '<' + {1250, 20, 12, 20, 2, -13}, // 0x3D '=' + {1280, 19, 17, 20, 1, -15}, // 0x3E '>' + {1321, 18, 26, 21, 6, -25}, // 0x3F '?' + {1380, 33, 31, 34, 3, -25}, // 0x40 '@' + {1508, 23, 26, 25, 1, -25}, // 0x41 'A' + {1583, 24, 26, 25, 3, -25}, // 0x42 'B' + {1661, 24, 26, 25, 4, -25}, // 0x43 'C' + {1739, 24, 26, 25, 3, -25}, // 0x44 'D' + {1817, 24, 26, 23, 3, -25}, // 0x45 'E' + {1895, 23, 26, 21, 3, -25}, // 0x46 'F' + {1970, 24, 26, 27, 4, -25}, // 0x47 'G' + {2048, 26, 26, 25, 2, -25}, // 0x48 'H' + {2133, 10, 26, 10, 2, -25}, // 0x49 'I' + {2166, 20, 26, 19, 2, -25}, // 0x4A 'J' + {2231, 26, 26, 25, 3, -25}, // 0x4B 'K' + {2316, 18, 26, 21, 3, -25}, // 0x4C 'L' + {2375, 31, 26, 29, 2, -25}, // 0x4D 'M' + {2476, 27, 26, 25, 2, -25}, // 0x4E 'N' + {2564, 25, 26, 27, 4, -25}, // 0x4F 'O' + {2646, 23, 26, 23, 3, -25}, // 0x50 'P' + {2721, 25, 27, 27, 4, -25}, // 0x51 'Q' + {2806, 24, 26, 25, 3, -25}, // 0x52 'R' + {2884, 22, 26, 23, 3, -25}, // 0x53 'S' + {2956, 21, 26, 21, 5, -25}, // 0x54 'T' + {3025, 24, 26, 25, 4, -25}, // 0x55 'U' + {3103, 22, 26, 23, 6, -25}, // 0x56 'V' + {3175, 32, 26, 33, 6, -25}, // 0x57 'W' + {3279, 27, 26, 23, 1, -25}, // 0x58 'X' + {3367, 22, 26, 23, 6, -25}, // 0x59 'Y' + {3439, 25, 26, 21, 1, -25}, // 0x5A 'Z' + {3521, 15, 33, 12, 1, -25}, // 0x5B '[' + {3583, 5, 25, 10, 5, -24}, // 0x5C '\' + {3599, 15, 33, 12, -1, -25}, // 0x5D ']' + {3661, 16, 15, 20, 4, -23}, // 0x5E '^' + {3691, 21, 3, 19, -2, 5}, // 0x5F '_' + {3699, 5, 5, 12, 6, -25}, // 0x60 '`' + {3703, 18, 19, 19, 2, -18}, // 0x61 'a' + {3746, 20, 26, 21, 2, -25}, // 0x62 'b' + {3811, 18, 19, 19, 3, -18}, // 0x63 'c' + {3854, 22, 26, 21, 3, -25}, // 0x64 'd' + {3926, 19, 19, 19, 2, -18}, // 0x65 'e' + {3972, 13, 26, 12, 3, -25}, // 0x66 'f' + {4015, 22, 27, 21, 1, -18}, // 0x67 'g' + {4090, 20, 26, 21, 2, -25}, // 0x68 'h' + {4155, 10, 26, 10, 2, -25}, // 0x69 'i' + {4188, 15, 34, 10, -2, -25}, // 0x6A 'j' + {4252, 21, 26, 19, 2, -25}, // 0x6B 'k' + {4321, 10, 26, 10, 2, -25}, // 0x6C 'l' + {4354, 30, 19, 31, 2, -18}, // 0x6D 'm' + {4426, 20, 19, 21, 2, -18}, // 0x6E 'n' + {4474, 19, 19, 21, 3, -18}, // 0x6F 'o' + {4520, 22, 27, 21, 0, -18}, // 0x70 'p' + {4595, 20, 27, 21, 3, -18}, // 0x71 'q' + {4663, 15, 19, 14, 2, -18}, // 0x72 'r' + {4699, 18, 19, 19, 2, -18}, // 0x73 's' + {4742, 11, 23, 12, 4, -22}, // 0x74 't' + {4774, 20, 19, 21, 3, -18}, // 0x75 'u' + {4822, 18, 19, 19, 5, -18}, // 0x76 'v' + {4865, 27, 19, 27, 4, -18}, // 0x77 'w' + {4930, 22, 19, 19, 1, -18}, // 0x78 'x' + {4983, 22, 27, 19, 1, -18}, // 0x79 'y' + {5058, 19, 19, 17, 1, -18}, // 0x7A 'z' + {5104, 14, 33, 14, 2, -25}, // 0x7B '{' + {5162, 9, 33, 10, 2, -25}, // 0x7C '|' + {5200, 14, 33, 14, 2, -25}, // 0x7D '}' + {5258, 17, 6, 20, 3, -10}}; // 0x7E '~' + +const GFXfont FreeSansBoldOblique18pt7b PROGMEM = { + (uint8_t *)FreeSansBoldOblique18pt7bBitmaps, + (GFXglyph *)FreeSansBoldOblique18pt7bGlyphs, 0x20, 0x7E, 42}; + +// Approx. 5943 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBoldOblique24pt7b.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBoldOblique24pt7b.h new file mode 100644 index 0000000..a20229d --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBoldOblique24pt7b.h @@ -0,0 +1,895 @@ +#pragma once +#include + +const uint8_t FreeSansBoldOblique24pt7bBitmaps[] PROGMEM = { + 0x01, 0xE0, 0x07, 0xF0, 0x1F, 0xC0, 0xFF, 0x03, 0xF8, 0x0F, 0xE0, 0x3F, + 0x80, 0xFE, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xE0, 0x1F, + 0x80, 0x7E, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0xF8, 0x03, 0xE0, 0x0F, + 0x80, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x1F, + 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0xFE, 0x03, 0xF8, 0x00, + 0x7E, 0x0F, 0xDF, 0x83, 0xF7, 0xE0, 0xFF, 0xF0, 0x7E, 0xFC, 0x1F, 0xBF, + 0x07, 0xEF, 0xC1, 0xFB, 0xE0, 0x7C, 0xF8, 0x1F, 0x3C, 0x07, 0x8F, 0x01, + 0xE3, 0x80, 0x70, 0x00, 0x07, 0xC1, 0xF0, 0x00, 0x3E, 0x0F, 0x80, 0x03, + 0xE0, 0xF8, 0x00, 0x1F, 0x07, 0xC0, 0x01, 0xF0, 0x7C, 0x00, 0x0F, 0x83, + 0xE0, 0x00, 0xF8, 0x3E, 0x00, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xF8, + 0x7F, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xFC, 0x1F, 0xFF, 0xFF, 0xE0, 0x0F, + 0x83, 0xE0, 0x00, 0x7C, 0x3E, 0x00, 0x07, 0xC1, 0xF0, 0x00, 0x3E, 0x0F, + 0x80, 0x03, 0xE0, 0xF8, 0x00, 0x1F, 0x07, 0xC0, 0x00, 0xF8, 0x7C, 0x00, + 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xF8, 0x7F, 0xFF, 0xFF, 0x83, 0xFF, + 0xFF, 0xFC, 0x1F, 0xFF, 0xFF, 0xE0, 0x1F, 0x07, 0xC0, 0x00, 0xF8, 0x3E, + 0x00, 0x0F, 0x83, 0xE0, 0x00, 0x7C, 0x1F, 0x00, 0x07, 0xC1, 0xF0, 0x00, + 0x3E, 0x0F, 0x80, 0x01, 0xF0, 0xF8, 0x00, 0x1F, 0x07, 0xC0, 0x00, 0xF8, + 0x3C, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0E, + 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x7F, 0xFF, 0x00, 0x3F, 0xFF, 0xE0, 0x1F, + 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, 0x07, 0xF3, 0x9F, 0xC1, 0xF8, 0xE3, 0xF0, + 0x7C, 0x38, 0xFC, 0x3F, 0x0E, 0x3F, 0x0F, 0xC7, 0x8F, 0xC3, 0xF1, 0xC0, + 0x00, 0xFE, 0x70, 0x00, 0x3F, 0xDC, 0x00, 0x0F, 0xFF, 0x00, 0x01, 0xFF, + 0xE0, 0x00, 0x3F, 0xFE, 0x00, 0x0F, 0xFF, 0xE0, 0x00, 0xFF, 0xFC, 0x00, + 0x0F, 0xFF, 0x00, 0x01, 0xFF, 0xE0, 0x00, 0x77, 0xF8, 0x00, 0x1C, 0xFE, + 0x00, 0x07, 0x3F, 0x8F, 0xE3, 0xCF, 0xE3, 0xF8, 0xE3, 0xF8, 0xFE, 0x38, + 0xFC, 0x3F, 0x8E, 0x7F, 0x0F, 0xF3, 0x9F, 0xC3, 0xFD, 0xFF, 0xE0, 0x7F, + 0xFF, 0xF0, 0x1F, 0xFF, 0xFC, 0x03, 0xFF, 0xFC, 0x00, 0x7F, 0xFE, 0x00, + 0x03, 0xFC, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x03, 0x80, + 0x00, 0x01, 0xE0, 0x00, 0x00, 0x70, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x07, + 0x80, 0x7F, 0xE0, 0x00, 0xF0, 0x0F, 0xFF, 0x00, 0x1E, 0x01, 0xFF, 0xF0, + 0x01, 0xC0, 0x3F, 0xFF, 0x80, 0x3C, 0x07, 0xE1, 0xF8, 0x07, 0x80, 0x78, + 0x07, 0x80, 0xF0, 0x0F, 0x80, 0x78, 0x0E, 0x00, 0xF0, 0x07, 0x81, 0xC0, + 0x0F, 0x00, 0xF8, 0x3C, 0x00, 0xF0, 0x0F, 0x07, 0x80, 0x0F, 0xC3, 0xF0, + 0xF0, 0x00, 0xFF, 0xFE, 0x0E, 0x00, 0x07, 0xFF, 0xC1, 0xE0, 0x00, 0x7F, + 0xF8, 0x3C, 0x00, 0x03, 0xFF, 0x07, 0x80, 0x00, 0x0F, 0xC0, 0x70, 0x00, + 0x00, 0x00, 0x0E, 0x03, 0xF0, 0x00, 0x01, 0xE0, 0xFF, 0xC0, 0x00, 0x3C, + 0x1F, 0xFE, 0x00, 0x03, 0x83, 0xFF, 0xE0, 0x00, 0x70, 0x7F, 0xFF, 0x00, + 0x0F, 0x0F, 0xC3, 0xF0, 0x01, 0xE0, 0xF0, 0x0F, 0x00, 0x3C, 0x1F, 0x00, + 0xF0, 0x03, 0x81, 0xE0, 0x0F, 0x00, 0x78, 0x1E, 0x01, 0xF0, 0x0F, 0x01, + 0xE0, 0x1E, 0x01, 0xE0, 0x1F, 0x87, 0xE0, 0x1C, 0x01, 0xFF, 0xFC, 0x03, + 0x80, 0x0F, 0xFF, 0x80, 0x78, 0x00, 0xFF, 0xF0, 0x0F, 0x00, 0x07, 0xFE, + 0x01, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x3F, 0xF0, + 0x00, 0x07, 0xFF, 0xC0, 0x00, 0x7F, 0xFF, 0x00, 0x03, 0xFF, 0xF8, 0x00, + 0x3F, 0x9F, 0xC0, 0x03, 0xF8, 0x7E, 0x00, 0x1F, 0xC3, 0xF0, 0x00, 0xFE, + 0x1F, 0x00, 0x07, 0xF1, 0xF8, 0x00, 0x3F, 0xCF, 0xC0, 0x01, 0xFE, 0xFC, + 0x00, 0x07, 0xFF, 0xC0, 0x00, 0x3F, 0xFC, 0x00, 0x00, 0xFF, 0xC0, 0x00, + 0x07, 0xF8, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x1F, 0xFF, 0x07, 0xC1, 0xFF, + 0xF8, 0x3E, 0x3F, 0xFF, 0xE3, 0xE3, 0xFE, 0x3F, 0x1F, 0x1F, 0xC1, 0xFD, + 0xF1, 0xFC, 0x07, 0xFF, 0x8F, 0xC0, 0x3F, 0xF8, 0xFE, 0x00, 0xFF, 0xC7, + 0xF0, 0x07, 0xFC, 0x3F, 0x80, 0x1F, 0xC1, 0xFC, 0x00, 0xFE, 0x0F, 0xF0, + 0x1F, 0xF8, 0x7F, 0xC1, 0xFF, 0xC1, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, + 0xFC, 0x3F, 0xFF, 0xCF, 0xE0, 0x7F, 0xF8, 0x7F, 0x80, 0xFF, 0x00, 0x00, + 0x7E, 0xFD, 0xFF, 0xEF, 0xDF, 0xBF, 0x7C, 0xF9, 0xE3, 0xC7, 0x00, 0x00, + 0x0F, 0x80, 0x0F, 0x80, 0x0F, 0x80, 0x0F, 0xC0, 0x07, 0xC0, 0x07, 0xC0, + 0x07, 0xE0, 0x03, 0xE0, 0x03, 0xE0, 0x03, 0xF0, 0x01, 0xF0, 0x01, 0xF8, + 0x00, 0xF8, 0x00, 0xFC, 0x00, 0x7C, 0x00, 0x7E, 0x00, 0x3E, 0x00, 0x1F, + 0x00, 0x1F, 0x80, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x03, 0xF0, 0x01, + 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, + 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x1E, + 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0x7C, 0x00, + 0x3E, 0x00, 0x1F, 0x00, 0x07, 0x80, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, + 0x1E, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x00, 0xF0, 0x00, 0x7C, + 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x07, 0x80, 0x03, 0xE0, 0x01, 0xF0, 0x00, + 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, + 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, + 0x00, 0x1F, 0x00, 0x1F, 0x80, 0x0F, 0x80, 0x07, 0xC0, 0x07, 0xE0, 0x03, + 0xE0, 0x03, 0xF0, 0x01, 0xF0, 0x01, 0xF8, 0x00, 0xF8, 0x00, 0xFC, 0x00, + 0x7C, 0x00, 0x7C, 0x00, 0x7E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3F, 0x00, + 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x00, 0x01, 0xE0, 0x03, 0x80, 0x07, + 0x00, 0x0E, 0x07, 0x3C, 0x6F, 0xFF, 0xFF, 0xFF, 0xBF, 0xFE, 0x0F, 0xE0, + 0x1F, 0xC0, 0x7F, 0x81, 0xEF, 0x87, 0x8F, 0x0E, 0x1E, 0x08, 0x10, 0x00, + 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x00, + 0x00, 0x1F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, + 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFE, + 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0x00, 0xFC, 0x00, 0x00, 0xFC, 0x00, + 0x00, 0xFC, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF8, 0x00, + 0x01, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x1F, 0xC7, 0xF1, 0xF8, 0xFE, 0x3F, + 0x8F, 0xE0, 0x38, 0x1C, 0x07, 0x03, 0xC0, 0xE0, 0xF0, 0xFC, 0x3C, 0x0C, + 0x00, 0x7F, 0xFD, 0xFF, 0xF7, 0xFF, 0x9F, 0xFE, 0xFF, 0xFB, 0xFF, 0xE0, + 0x7F, 0x7F, 0x7F, 0x7E, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x70, 0x00, 0x0E, + 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x03, + 0x80, 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 0x01, + 0xC0, 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x07, 0x00, 0x00, + 0x70, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, + 0x38, 0x00, 0x03, 0x80, 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, + 0x0E, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, + 0x07, 0x00, 0x00, 0x70, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0F, 0xE0, 0x00, + 0x1F, 0xFC, 0x00, 0x3F, 0xFF, 0x80, 0x3F, 0xFF, 0xC0, 0x3F, 0xFF, 0xF0, + 0x1F, 0xC7, 0xF8, 0x1F, 0xC1, 0xFE, 0x1F, 0xC0, 0x7F, 0x0F, 0xC0, 0x3F, + 0x8F, 0xE0, 0x1F, 0xC7, 0xF0, 0x0F, 0xE3, 0xF0, 0x07, 0xF3, 0xF8, 0x03, + 0xF9, 0xFC, 0x01, 0xFC, 0xFC, 0x01, 0xFE, 0xFE, 0x00, 0xFE, 0x7F, 0x00, + 0x7F, 0x3F, 0x80, 0x3F, 0x9F, 0xC0, 0x1F, 0xCF, 0xE0, 0x1F, 0xEF, 0xE0, + 0x0F, 0xE7, 0xF0, 0x07, 0xF3, 0xF8, 0x03, 0xF9, 0xFC, 0x03, 0xF8, 0xFE, + 0x01, 0xFC, 0x7F, 0x00, 0xFE, 0x3F, 0x80, 0xFE, 0x1F, 0xE0, 0x7F, 0x0F, + 0xF8, 0xFF, 0x03, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0x80, + 0x1F, 0xFF, 0x00, 0x07, 0xFF, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x0F, + 0x80, 0x0F, 0x80, 0x07, 0xC0, 0x07, 0xE0, 0x0F, 0xF0, 0x3F, 0xF9, 0xFF, + 0xF8, 0xFF, 0xFC, 0xFF, 0xFE, 0x7F, 0xFF, 0x00, 0x3F, 0x80, 0x1F, 0x80, + 0x0F, 0xC0, 0x0F, 0xE0, 0x07, 0xF0, 0x03, 0xF8, 0x01, 0xF8, 0x01, 0xFC, + 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x3F, 0x00, 0x1F, 0x80, 0x1F, 0xC0, 0x0F, + 0xE0, 0x07, 0xF0, 0x03, 0xF0, 0x01, 0xF8, 0x01, 0xFC, 0x00, 0xFE, 0x00, + 0x7F, 0x00, 0x3F, 0x00, 0x3F, 0x80, 0x1F, 0xC0, 0x00, 0x00, 0x01, 0xFE, + 0x00, 0x00, 0x7F, 0xFC, 0x00, 0x0F, 0xFF, 0xF8, 0x00, 0xFF, 0xFF, 0xE0, + 0x0F, 0xFF, 0xFF, 0x00, 0xFF, 0x07, 0xFC, 0x07, 0xF0, 0x1F, 0xE0, 0x7F, + 0x00, 0x7F, 0x03, 0xF0, 0x03, 0xF8, 0x1F, 0x80, 0x1F, 0xC1, 0xF8, 0x00, + 0xFE, 0x0F, 0xC0, 0x0F, 0xE0, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x07, 0xF0, + 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x7F, 0x80, 0x00, + 0x07, 0xF8, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x1F, 0xF8, 0x00, 0x01, 0xFF, + 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x7F, 0xC0, 0x00, + 0x07, 0xFC, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x7F, + 0x80, 0x00, 0x03, 0xFF, 0xFF, 0xF0, 0x3F, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, + 0xFC, 0x1F, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xF0, + 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x0F, 0xFF, 0x80, 0x0F, 0xFF, 0xF0, 0x07, + 0xFF, 0xFE, 0x03, 0xFF, 0xFF, 0xC0, 0xFE, 0x1F, 0xF0, 0x7F, 0x01, 0xFC, + 0x1F, 0x80, 0x7F, 0x07, 0xE0, 0x1F, 0xC3, 0xF0, 0x07, 0xF0, 0xFC, 0x01, + 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x80, 0x01, + 0xFF, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x07, 0xFF, 0x80, + 0x01, 0xFF, 0xE0, 0x00, 0x07, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x1F, + 0xC0, 0x00, 0x07, 0xF0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x7F, 0x3F, 0x80, + 0x3F, 0xCF, 0xE0, 0x0F, 0xE3, 0xF8, 0x07, 0xF8, 0xFF, 0x83, 0xFC, 0x3F, + 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, 0xE0, + 0x03, 0xFF, 0xE0, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0x00, 0x7F, 0x80, 0x00, + 0x7F, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x7F, 0xE0, 0x00, 0x3F, 0xF0, 0x00, + 0x3F, 0xF8, 0x00, 0x3D, 0xFC, 0x00, 0x3C, 0xFE, 0x00, 0x3E, 0x7E, 0x00, + 0x3E, 0x7F, 0x00, 0x1E, 0x3F, 0x80, 0x1E, 0x1F, 0xC0, 0x1E, 0x0F, 0xC0, + 0x1F, 0x07, 0xE0, 0x1F, 0x07, 0xF0, 0x1F, 0x03, 0xF8, 0x1F, 0x01, 0xFC, + 0x0F, 0x80, 0xFC, 0x0F, 0x80, 0xFE, 0x0F, 0x80, 0x7F, 0x07, 0xFF, 0xFF, + 0xF7, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, + 0xFE, 0x00, 0x03, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x00, + 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x1F, 0x80, 0x00, + 0x7F, 0xFF, 0xE0, 0x0F, 0xFF, 0xFC, 0x01, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, + 0xF0, 0x0F, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0x80, 0x7C, 0x00, 0x00, 0x0F, + 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x0F, 0x80, 0x00, + 0x03, 0xE3, 0xF0, 0x00, 0x7F, 0xFF, 0x80, 0x1F, 0xFF, 0xF8, 0x03, 0xFF, + 0xFF, 0x80, 0x7F, 0xFF, 0xF0, 0x1F, 0xE1, 0xFF, 0x03, 0xF0, 0x1F, 0xE0, + 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, + 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x07, 0xF0, 0xFE, 0x00, 0xFE, 0x1F, + 0xC0, 0x3F, 0x83, 0xF8, 0x07, 0xF0, 0x7F, 0x83, 0xFC, 0x0F, 0xFF, 0xFF, + 0x80, 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xF8, 0x01, 0xFF, 0xFE, 0x00, 0x0F, + 0xFF, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xFE, + 0x00, 0x1F, 0xFF, 0x80, 0x1F, 0xFF, 0xE0, 0x1F, 0xFF, 0xF8, 0x1F, 0xC3, + 0xFC, 0x1F, 0x80, 0xFE, 0x0F, 0xC0, 0x3F, 0x0F, 0xC0, 0x00, 0x07, 0xE0, + 0x00, 0x07, 0xE0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF8, 0xFC, 0x01, 0xF9, + 0xFF, 0x80, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xF8, 0x7F, 0xFF, 0xFC, 0x3F, + 0xE1, 0xFF, 0x1F, 0xE0, 0x7F, 0x8F, 0xE0, 0x1F, 0xCF, 0xE0, 0x0F, 0xE7, + 0xF0, 0x07, 0xF3, 0xF0, 0x03, 0xF9, 0xF8, 0x01, 0xF8, 0xFC, 0x01, 0xFC, + 0x7E, 0x00, 0xFE, 0x3F, 0x00, 0xFE, 0x1F, 0xC0, 0xFF, 0x0F, 0xF0, 0xFF, + 0x03, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x1F, 0xFF, + 0x80, 0x07, 0xFF, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xCF, + 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, + 0x9F, 0xFF, 0xFF, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0x01, + 0xFC, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0x80, 0x00, + 0x1F, 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x03, 0xF0, 0x00, 0x01, 0xF8, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x0F, 0xE0, + 0x00, 0x03, 0xF0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3F, + 0x80, 0x00, 0x0F, 0xC0, 0x00, 0x07, 0xF0, 0x00, 0x01, 0xF8, 0x00, 0x00, + 0xFE, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x07, 0xF0, 0x00, + 0x01, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, + 0x0F, 0xFF, 0x80, 0x07, 0xFF, 0xF0, 0x03, 0xFF, 0xFE, 0x01, 0xFF, 0xFF, + 0xC0, 0xFE, 0x0F, 0xF0, 0x3E, 0x01, 0xFC, 0x1F, 0x80, 0x3F, 0x07, 0xC0, + 0x0F, 0xC1, 0xF0, 0x03, 0xF0, 0x7C, 0x01, 0xF8, 0x1F, 0x00, 0xFC, 0x03, + 0xF0, 0x7F, 0x00, 0xFF, 0xFF, 0x00, 0x1F, 0xFF, 0x80, 0x07, 0xFF, 0xE0, + 0x07, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0x81, 0xFE, 0x1F, 0xE0, 0xFE, 0x03, + 0xFC, 0x3F, 0x00, 0x7F, 0x1F, 0xC0, 0x1F, 0xC7, 0xE0, 0x07, 0xF3, 0xF8, + 0x01, 0xFC, 0xFE, 0x00, 0x7F, 0x3F, 0x80, 0x3F, 0x8F, 0xE0, 0x0F, 0xE3, + 0xFC, 0x07, 0xF0, 0xFF, 0x87, 0xFC, 0x3F, 0xFF, 0xFE, 0x07, 0xFF, 0xFF, + 0x00, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, 0xC0, 0x03, 0xFF, 0xE0, 0x00, 0x3F, + 0xC0, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x3F, 0xFF, 0x00, + 0x3F, 0xFF, 0xC0, 0x3F, 0xFF, 0xF0, 0x3F, 0xC3, 0xF8, 0x3F, 0xC0, 0xFE, + 0x1F, 0xC0, 0x3F, 0x1F, 0xC0, 0x1F, 0x8F, 0xE0, 0x0F, 0xC7, 0xE0, 0x07, + 0xE7, 0xF0, 0x03, 0xF3, 0xF8, 0x01, 0xF9, 0xFC, 0x01, 0xFC, 0xFE, 0x00, + 0xFE, 0x7F, 0x00, 0xFE, 0x3F, 0xC0, 0xFF, 0x1F, 0xF0, 0xFF, 0x87, 0xFF, + 0xFF, 0xC3, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xE0, 0x3F, 0xF3, 0xF0, 0x07, + 0xE3, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xFC, 0x00, + 0x00, 0x7E, 0x1F, 0xC0, 0x7E, 0x0F, 0xF0, 0xFF, 0x07, 0xFF, 0xFF, 0x01, + 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x3F, 0xFF, 0x00, 0x0F, 0xFF, 0x00, + 0x01, 0xFC, 0x00, 0x00, 0x07, 0xF0, 0x7F, 0x07, 0xF0, 0x7E, 0x0F, 0xE0, + 0xFE, 0x0F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x07, 0xF0, 0x7F, 0x07, + 0xE0, 0xFE, 0x0F, 0xE0, 0xFE, 0x00, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, + 0x7E, 0x03, 0xF8, 0x0F, 0xE0, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0x80, 0xFE, 0x03, 0xF8, 0x0F, 0xE0, + 0x03, 0x80, 0x1C, 0x00, 0x70, 0x03, 0xC0, 0x0E, 0x00, 0xF0, 0x0F, 0xC0, + 0x3C, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0xE0, 0x00, + 0x01, 0xF8, 0x00, 0x03, 0xFE, 0x00, 0x07, 0xFF, 0x80, 0x0F, 0xFF, 0xE0, + 0x1F, 0xFF, 0xF0, 0x1F, 0xFF, 0xE0, 0x3F, 0xFF, 0xC0, 0x1F, 0xFF, 0x80, + 0x0F, 0xFF, 0x00, 0x03, 0xFE, 0x00, 0x00, 0xFF, 0xE0, 0x00, 0x3F, 0xFE, + 0x00, 0x0F, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0x80, 0x07, 0xFF, 0xF8, 0x00, + 0x7F, 0xFF, 0x00, 0x03, 0xFF, 0xC0, 0x00, 0x3F, 0xF0, 0x00, 0x01, 0xF8, + 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x80, 0x1F, 0xFF, 0xFF, 0xC7, 0xFF, + 0xFF, 0xF1, 0xFF, 0xFF, 0xFC, 0x7F, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0x8F, + 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, + 0xFF, 0x1F, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0xF8, 0xFF, + 0xFF, 0xFE, 0x3F, 0xFF, 0xFF, 0x80, 0x04, 0x00, 0x00, 0x01, 0xE0, 0x00, + 0x00, 0x7E, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x0F, 0xFF, 0x00, 0x03, 0xFF, + 0xF8, 0x00, 0x7F, 0xFF, 0x80, 0x07, 0xFF, 0xFC, 0x00, 0x3F, 0xFF, 0xC0, + 0x01, 0xFF, 0xF0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0xFF, 0x00, 0x03, 0xFF, + 0xC0, 0x07, 0xFF, 0xE0, 0x0F, 0xFF, 0xF0, 0x1F, 0xFF, 0xE0, 0x3F, 0xFF, + 0xE0, 0x1F, 0xFF, 0xC0, 0x07, 0xFF, 0x80, 0x01, 0xFF, 0x00, 0x00, 0x7E, + 0x00, 0x00, 0x1C, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, + 0x01, 0xFF, 0xF0, 0x07, 0xFF, 0xF8, 0x0F, 0xFF, 0xFC, 0x1F, 0xFF, 0xFE, + 0x1F, 0xFF, 0xFE, 0x3F, 0xC1, 0xFF, 0x3F, 0x80, 0xFF, 0x7F, 0x00, 0x7F, + 0x7E, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0x00, 0x00, 0xFE, + 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFC, 0x00, 0x0F, 0xF8, + 0x00, 0x1F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0x7F, 0x80, 0x00, 0xFE, 0x00, + 0x01, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xE0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xE0, 0x00, + 0x0F, 0xE0, 0x00, 0x0F, 0xE0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, + 0x1F, 0xC0, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xC0, 0x00, + 0x00, 0x00, 0x7F, 0xFF, 0xC0, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0x80, 0x00, + 0x01, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x3F, 0xE0, 0x1F, 0xF8, 0x00, 0x07, + 0xF8, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0x80, 0x07, 0xE0, + 0x00, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0x00, 0x03, 0xF0, 0x0F, 0xC0, 0x00, + 0x00, 0x0F, 0x80, 0xFC, 0x00, 0x00, 0x00, 0x3E, 0x07, 0xC0, 0x03, 0xF1, + 0xF1, 0xF0, 0x7C, 0x00, 0xFF, 0xCF, 0x07, 0x87, 0xE0, 0x1F, 0xFF, 0xF8, + 0x3C, 0x7E, 0x01, 0xF8, 0x7F, 0x81, 0xE3, 0xE0, 0x1F, 0x01, 0xF8, 0x0F, + 0x3E, 0x01, 0xF0, 0x0F, 0xC0, 0x79, 0xF0, 0x1F, 0x00, 0x7C, 0x03, 0xDF, + 0x00, 0xF0, 0x03, 0xE0, 0x1C, 0xF8, 0x0F, 0x80, 0x1E, 0x01, 0xE7, 0xC0, + 0x78, 0x00, 0xF0, 0x0F, 0x3C, 0x07, 0xC0, 0x0F, 0x00, 0xF3, 0xE0, 0x3C, + 0x00, 0x78, 0x07, 0x9F, 0x03, 0xE0, 0x07, 0x80, 0x78, 0xF8, 0x1F, 0x00, + 0x7C, 0x07, 0xC7, 0xC0, 0xF8, 0x07, 0xC0, 0x7C, 0x3E, 0x07, 0xC0, 0x7E, + 0x07, 0xC1, 0xF0, 0x3F, 0x07, 0xF8, 0xFC, 0x0F, 0x81, 0xFF, 0xFF, 0xFF, + 0xC0, 0x7E, 0x07, 0xFF, 0xBF, 0xFC, 0x01, 0xF0, 0x1F, 0xF8, 0xFF, 0x80, + 0x0F, 0xC0, 0x7E, 0x03, 0xF0, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x01, + 0xFC, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, + 0xE0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xE0, 0x03, 0x80, 0x00, 0x01, 0xFF, + 0xFF, 0xFE, 0x00, 0x00, 0x07, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x0F, 0xFF, + 0xFE, 0x00, 0x00, 0x00, 0x07, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, + 0xF0, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x7F, + 0xF0, 0x00, 0x00, 0x7F, 0xF0, 0x00, 0x00, 0xFF, 0xF0, 0x00, 0x00, 0xFF, + 0xF0, 0x00, 0x01, 0xFF, 0xF0, 0x00, 0x03, 0xFF, 0xF8, 0x00, 0x03, 0xFB, + 0xF8, 0x00, 0x07, 0xF3, 0xF8, 0x00, 0x07, 0xE3, 0xF8, 0x00, 0x0F, 0xE3, + 0xF8, 0x00, 0x0F, 0xC3, 0xF8, 0x00, 0x1F, 0xC3, 0xF8, 0x00, 0x1F, 0x83, + 0xF8, 0x00, 0x3F, 0x81, 0xFC, 0x00, 0x7F, 0x01, 0xFC, 0x00, 0x7F, 0x01, + 0xFC, 0x00, 0xFE, 0x01, 0xFC, 0x00, 0xFC, 0x01, 0xFC, 0x01, 0xFF, 0xFF, + 0xFC, 0x01, 0xFF, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0xFE, 0x07, 0xFF, 0xFF, + 0xFE, 0x07, 0xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0xFE, 0x0F, 0xE0, 0x00, + 0xFE, 0x1F, 0xC0, 0x00, 0xFE, 0x1F, 0xC0, 0x00, 0xFE, 0x3F, 0x80, 0x00, + 0xFE, 0x3F, 0x80, 0x00, 0x7F, 0x7F, 0x00, 0x00, 0x7F, 0xFF, 0x00, 0x00, + 0x7F, 0x01, 0xFF, 0xFF, 0xC0, 0x01, 0xFF, 0xFF, 0xF8, 0x01, 0xFF, 0xFF, + 0xFC, 0x03, 0xFF, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, + 0xFF, 0x03, 0xF8, 0x00, 0xFF, 0x03, 0xF8, 0x00, 0x7F, 0x07, 0xF0, 0x00, + 0x7F, 0x07, 0xF0, 0x00, 0x7F, 0x07, 0xF0, 0x00, 0x7E, 0x07, 0xF0, 0x00, + 0xFE, 0x0F, 0xF0, 0x03, 0xFC, 0x0F, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, + 0xF0, 0x0F, 0xFF, 0xFF, 0xE0, 0x0F, 0xFF, 0xFF, 0xF0, 0x1F, 0xFF, 0xFF, + 0xF8, 0x1F, 0xFF, 0xFF, 0xF8, 0x1F, 0xC0, 0x07, 0xFC, 0x1F, 0xC0, 0x01, + 0xFC, 0x1F, 0xC0, 0x01, 0xFC, 0x3F, 0x80, 0x01, 0xFC, 0x3F, 0x80, 0x01, + 0xFC, 0x3F, 0x80, 0x01, 0xFC, 0x3F, 0x80, 0x03, 0xF8, 0x7F, 0x00, 0x07, + 0xF8, 0x7F, 0x00, 0x0F, 0xF0, 0x7F, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xFF, + 0xE0, 0x7F, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFE, + 0x00, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x07, 0xFF, + 0xE0, 0x00, 0x1F, 0xFF, 0xF0, 0x00, 0x7F, 0xFF, 0xF8, 0x00, 0xFF, 0xFF, + 0xFC, 0x01, 0xFF, 0xFF, 0xFE, 0x03, 0xFF, 0x03, 0xFE, 0x07, 0xFC, 0x01, + 0xFF, 0x0F, 0xF0, 0x00, 0xFF, 0x0F, 0xE0, 0x00, 0x7F, 0x1F, 0xE0, 0x00, + 0x7F, 0x1F, 0xC0, 0x00, 0x7F, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, + 0x00, 0x7F, 0x80, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, + 0x00, 0x7F, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xF8, 0xFE, 0x00, 0x03, + 0xF8, 0xFF, 0x00, 0x07, 0xF8, 0xFF, 0x00, 0x07, 0xF0, 0x7F, 0x80, 0x1F, + 0xF0, 0x7F, 0xE0, 0x7F, 0xE0, 0x3F, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, 0xFF, + 0x80, 0x1F, 0xFF, 0xFF, 0x00, 0x0F, 0xFF, 0xFE, 0x00, 0x03, 0xFF, 0xF8, + 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x01, 0xFF, 0xFF, + 0xE0, 0x03, 0xFF, 0xFF, 0xF8, 0x03, 0xFF, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, + 0xFC, 0x03, 0xFF, 0xFF, 0xFE, 0x03, 0xF8, 0x03, 0xFE, 0x07, 0xF0, 0x01, + 0xFF, 0x07, 0xF0, 0x00, 0xFF, 0x07, 0xF0, 0x00, 0x7F, 0x07, 0xF0, 0x00, + 0x7F, 0x0F, 0xF0, 0x00, 0x7F, 0x0F, 0xE0, 0x00, 0x7F, 0x0F, 0xE0, 0x00, + 0x7F, 0x0F, 0xE0, 0x00, 0x7F, 0x0F, 0xE0, 0x00, 0x7F, 0x1F, 0xC0, 0x00, + 0x7F, 0x1F, 0xC0, 0x00, 0xFE, 0x1F, 0xC0, 0x00, 0xFE, 0x1F, 0xC0, 0x00, + 0xFE, 0x1F, 0xC0, 0x01, 0xFE, 0x3F, 0x80, 0x01, 0xFC, 0x3F, 0x80, 0x01, + 0xFC, 0x3F, 0x80, 0x03, 0xF8, 0x3F, 0x80, 0x07, 0xF8, 0x7F, 0x00, 0x0F, + 0xF0, 0x7F, 0x00, 0x1F, 0xF0, 0x7F, 0x00, 0x7F, 0xE0, 0x7F, 0xFF, 0xFF, + 0xC0, 0x7F, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFE, + 0x00, 0xFF, 0xFF, 0xF8, 0x00, 0xFF, 0xFF, 0x80, 0x00, 0x01, 0xFF, 0xFF, + 0xFF, 0x01, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, + 0xFE, 0x03, 0xFF, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, 0xFE, 0x03, 0xF8, 0x00, + 0x00, 0x07, 0xF0, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x07, 0xF0, 0x00, + 0x00, 0x07, 0xF0, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x0F, 0xE0, 0x00, + 0x00, 0x0F, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xE0, 0x0F, 0xFF, 0xFF, + 0xE0, 0x1F, 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xFF, + 0xE0, 0x1F, 0xC0, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, + 0x00, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, + 0x00, 0x3F, 0x80, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, + 0x00, 0x7F, 0xFF, 0xFF, 0xC0, 0x7F, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, + 0xC0, 0xFF, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, + 0x80, 0x00, 0xFF, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, + 0xFE, 0x01, 0xFF, 0xFF, 0xFE, 0x01, 0xFF, 0xFF, 0xFE, 0x01, 0xFF, 0xFF, + 0xFE, 0x03, 0xF8, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x03, 0xF8, 0x00, + 0x00, 0x03, 0xF8, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x07, 0xF0, 0x00, + 0x00, 0x07, 0xF0, 0x00, 0x00, 0x07, 0xFF, 0xFF, 0xE0, 0x07, 0xFF, 0xFF, + 0xE0, 0x0F, 0xFF, 0xFF, 0xE0, 0x0F, 0xFF, 0xFF, 0xC0, 0x0F, 0xFF, 0xFF, + 0xC0, 0x0F, 0xFF, 0xFF, 0xC0, 0x0F, 0xE0, 0x00, 0x00, 0x1F, 0xC0, 0x00, + 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x1F, 0xC0, 0x00, + 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, + 0x00, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x7F, 0x00, 0x00, + 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, + 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x03, 0xFF, + 0xF8, 0x00, 0x07, 0xFF, 0xFE, 0x00, 0x0F, 0xFF, 0xFF, 0x80, 0x0F, 0xFF, + 0xFF, 0xE0, 0x0F, 0xFF, 0xFF, 0xF8, 0x0F, 0xFC, 0x07, 0xFC, 0x0F, 0xF8, + 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0x3F, 0x87, 0xF0, 0x00, 0x1F, 0xC7, 0xF0, + 0x00, 0x0F, 0xE3, 0xF8, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x01, 0xFC, + 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x7F, + 0x00, 0x3F, 0xFF, 0x3F, 0x00, 0x1F, 0xFF, 0xBF, 0x80, 0x0F, 0xFF, 0x9F, + 0xC0, 0x07, 0xFF, 0xCF, 0xE0, 0x03, 0xFF, 0xE7, 0xF0, 0x03, 0xFF, 0xF3, + 0xF8, 0x00, 0x01, 0xF9, 0xFC, 0x00, 0x01, 0xF8, 0xFF, 0x00, 0x00, 0xFC, + 0x7F, 0x80, 0x00, 0xFE, 0x3F, 0xC0, 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0xFF, + 0x87, 0xFC, 0x00, 0xFF, 0x81, 0xFF, 0x81, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, + 0xE0, 0x3F, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFE, 0xF8, 0x03, 0xFF, 0xFC, + 0x78, 0x00, 0x7F, 0xFC, 0x3C, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x01, 0xFC, + 0x00, 0x0F, 0xE0, 0x3F, 0x80, 0x01, 0xFC, 0x07, 0xF0, 0x00, 0x3F, 0x80, + 0xFE, 0x00, 0x0F, 0xE0, 0x1F, 0xC0, 0x01, 0xFC, 0x07, 0xF0, 0x00, 0x3F, + 0x80, 0xFE, 0x00, 0x07, 0xF0, 0x1F, 0xC0, 0x00, 0xFE, 0x03, 0xF8, 0x00, + 0x3F, 0x80, 0xFF, 0x00, 0x07, 0xF0, 0x1F, 0xC0, 0x00, 0xFE, 0x03, 0xF8, + 0x00, 0x1F, 0xC0, 0x7F, 0x00, 0x07, 0xF0, 0x0F, 0xFF, 0xFF, 0xFE, 0x03, + 0xFF, 0xFF, 0xFF, 0xC0, 0x7F, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, 0xFF, + 0x01, 0xFF, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, 0xFF, 0xF8, 0x0F, 0xE0, 0x00, + 0x7F, 0x01, 0xFC, 0x00, 0x0F, 0xE0, 0x3F, 0x80, 0x01, 0xFC, 0x07, 0xF0, + 0x00, 0x7F, 0x01, 0xFC, 0x00, 0x0F, 0xE0, 0x3F, 0x80, 0x01, 0xFC, 0x07, + 0xF0, 0x00, 0x3F, 0x80, 0xFE, 0x00, 0x0F, 0xE0, 0x1F, 0xC0, 0x01, 0xFC, + 0x07, 0xF0, 0x00, 0x3F, 0x80, 0xFE, 0x00, 0x07, 0xF0, 0x1F, 0xC0, 0x00, + 0xFE, 0x03, 0xF8, 0x00, 0x3F, 0x80, 0x7F, 0x00, 0x07, 0xF0, 0x1F, 0xC0, + 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x07, 0xF0, 0x3F, 0x80, 0xFE, 0x03, 0xF8, + 0x0F, 0xE0, 0x3F, 0x81, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, + 0x0F, 0xE0, 0x3F, 0x80, 0xFE, 0x03, 0xF8, 0x0F, 0xE0, 0x7F, 0x01, 0xFC, + 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x03, 0xF8, 0x0F, 0xE0, 0x3F, 0x80, 0xFE, + 0x03, 0xF8, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0xFE, + 0x03, 0xF8, 0x00, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x01, 0xFC, 0x00, 0x00, + 0x3F, 0x80, 0x00, 0x0F, 0xE0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x80, + 0x00, 0x07, 0xF0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, + 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x07, 0xF0, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x7F, + 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x7F, 0x00, 0x00, + 0x0F, 0xE0, 0xFE, 0x03, 0xFC, 0x1F, 0xC0, 0x7F, 0x03, 0xF8, 0x0F, 0xE0, + 0xFE, 0x01, 0xFC, 0x1F, 0xC0, 0x3F, 0x83, 0xF8, 0x0F, 0xE0, 0x7F, 0x01, + 0xFC, 0x0F, 0xF0, 0xFF, 0x81, 0xFF, 0xFF, 0xE0, 0x3F, 0xFF, 0xF8, 0x03, + 0xFF, 0xFF, 0x00, 0x3F, 0xFF, 0x80, 0x03, 0xFF, 0xE0, 0x00, 0x1F, 0xE0, + 0x00, 0x00, 0x00, 0xFE, 0x00, 0x0F, 0xF0, 0x0F, 0xF0, 0x00, 0xFF, 0x00, + 0x7F, 0x00, 0x1F, 0xF0, 0x03, 0xF8, 0x01, 0xFF, 0x00, 0x1F, 0xC0, 0x1F, + 0xE0, 0x00, 0xFE, 0x01, 0xFE, 0x00, 0x0F, 0xE0, 0x1F, 0xE0, 0x00, 0x7F, + 0x01, 0xFE, 0x00, 0x03, 0xF8, 0x1F, 0xE0, 0x00, 0x1F, 0xC1, 0xFE, 0x00, + 0x00, 0xFE, 0x1F, 0xE0, 0x00, 0x0F, 0xE3, 0xFE, 0x00, 0x00, 0x7F, 0x3F, + 0xC0, 0x00, 0x03, 0xFB, 0xFC, 0x00, 0x00, 0x1F, 0xFF, 0xC0, 0x00, 0x01, + 0xFF, 0xFE, 0x00, 0x00, 0x0F, 0xFF, 0xF8, 0x00, 0x00, 0x7F, 0xFF, 0xC0, + 0x00, 0x03, 0xFF, 0xFF, 0x00, 0x00, 0x1F, 0xFF, 0xF8, 0x00, 0x01, 0xFF, + 0x9F, 0xE0, 0x00, 0x0F, 0xF8, 0xFF, 0x00, 0x00, 0x7F, 0x83, 0xFC, 0x00, + 0x03, 0xF8, 0x1F, 0xF0, 0x00, 0x1F, 0xC0, 0x7F, 0x80, 0x01, 0xFC, 0x01, + 0xFE, 0x00, 0x0F, 0xE0, 0x0F, 0xF0, 0x00, 0x7F, 0x00, 0x3F, 0xC0, 0x03, + 0xF8, 0x01, 0xFF, 0x00, 0x3F, 0x80, 0x07, 0xF8, 0x01, 0xFC, 0x00, 0x3F, + 0xE0, 0x0F, 0xE0, 0x00, 0xFF, 0x00, 0x7F, 0x00, 0x07, 0xFC, 0x03, 0xF8, + 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFC, 0x00, 0x01, 0xFC, 0x00, 0x01, 0xFC, + 0x00, 0x03, 0xF8, 0x00, 0x03, 0xF8, 0x00, 0x03, 0xF8, 0x00, 0x03, 0xF8, + 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF0, + 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x0F, 0xE0, 0x00, 0x0F, 0xE0, + 0x00, 0x0F, 0xE0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0x1F, 0xC0, + 0x00, 0x1F, 0xC0, 0x00, 0x1F, 0xC0, 0x00, 0x3F, 0x80, 0x00, 0x3F, 0x80, + 0x00, 0x3F, 0x80, 0x00, 0x3F, 0x80, 0x00, 0x3F, 0x80, 0x00, 0x7F, 0x00, + 0x00, 0x7F, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x01, 0xFF, + 0x80, 0x03, 0xFF, 0x80, 0xFF, 0xC0, 0x01, 0xFF, 0x80, 0x7F, 0xE0, 0x01, + 0xFF, 0xC0, 0x3F, 0xF0, 0x00, 0xFF, 0xE0, 0x3F, 0xF8, 0x00, 0xFF, 0xF0, + 0x1F, 0xFC, 0x00, 0x7F, 0xF8, 0x0F, 0xFE, 0x00, 0x7D, 0xF8, 0x07, 0xEF, + 0x00, 0x3E, 0xFC, 0x03, 0xF7, 0x80, 0x3F, 0xFE, 0x03, 0xFB, 0xC0, 0x1F, + 0x7F, 0x01, 0xFD, 0xE0, 0x1F, 0xBF, 0x00, 0xFE, 0xF0, 0x0F, 0x9F, 0x80, + 0x7E, 0x78, 0x0F, 0xDF, 0xC0, 0x7F, 0x3E, 0x07, 0xCF, 0xE0, 0x3F, 0x9F, + 0x07, 0xE7, 0xF0, 0x1F, 0xCF, 0x83, 0xE3, 0xF0, 0x0F, 0xE7, 0xC3, 0xF1, + 0xF8, 0x07, 0xE3, 0xE1, 0xF9, 0xFC, 0x07, 0xF1, 0xF0, 0xF8, 0xFE, 0x03, + 0xF8, 0xF8, 0xFC, 0x7F, 0x01, 0xFC, 0x7C, 0x7C, 0x3F, 0x00, 0xFC, 0x3E, + 0x7E, 0x1F, 0x80, 0x7E, 0x1F, 0x3E, 0x1F, 0xC0, 0x7F, 0x0F, 0xBF, 0x0F, + 0xE0, 0x3F, 0x87, 0xDF, 0x07, 0xE0, 0x1F, 0xC3, 0xFF, 0x83, 0xF0, 0x0F, + 0xC1, 0xFF, 0xC3, 0xF8, 0x0F, 0xE0, 0xFF, 0xC1, 0xFC, 0x07, 0xF0, 0x7F, + 0xE0, 0xFE, 0x03, 0xF8, 0x3F, 0xE0, 0x7E, 0x01, 0xFC, 0x1F, 0xF0, 0x3F, + 0x00, 0xFC, 0x0F, 0xF0, 0x3F, 0x80, 0xFE, 0x07, 0xF8, 0x1F, 0xC0, 0x7F, + 0x03, 0xF8, 0x0F, 0xC0, 0x00, 0x01, 0xFE, 0x00, 0x07, 0xE0, 0x3F, 0xC0, + 0x01, 0xFC, 0x07, 0xFC, 0x00, 0x3F, 0x80, 0xFF, 0x80, 0x07, 0xF0, 0x1F, + 0xF0, 0x00, 0xFC, 0x07, 0xFF, 0x00, 0x3F, 0x80, 0xFF, 0xE0, 0x07, 0xF0, + 0x1F, 0xFC, 0x00, 0xFE, 0x03, 0xFF, 0xC0, 0x1F, 0x80, 0xFF, 0xF8, 0x03, + 0xF0, 0x1F, 0xFF, 0x80, 0xFE, 0x03, 0xFB, 0xF0, 0x1F, 0xC0, 0x7E, 0x7E, + 0x03, 0xF8, 0x0F, 0xC7, 0xE0, 0x7E, 0x03, 0xF8, 0xFC, 0x0F, 0xC0, 0x7F, + 0x1F, 0x83, 0xF8, 0x0F, 0xE1, 0xF8, 0x7F, 0x01, 0xF8, 0x3F, 0x0F, 0xE0, + 0x3F, 0x07, 0xF1, 0xF8, 0x0F, 0xE0, 0x7E, 0x3F, 0x01, 0xFC, 0x0F, 0xCF, + 0xE0, 0x3F, 0x00, 0xFD, 0xFC, 0x07, 0xE0, 0x1F, 0xBF, 0x81, 0xFC, 0x03, + 0xF7, 0xE0, 0x3F, 0x80, 0x3F, 0xFC, 0x07, 0xF0, 0x07, 0xFF, 0x80, 0xFC, + 0x00, 0xFF, 0xF0, 0x1F, 0x80, 0x0F, 0xFC, 0x07, 0xF0, 0x01, 0xFF, 0x80, + 0xFE, 0x00, 0x3F, 0xF0, 0x1F, 0xC0, 0x03, 0xFE, 0x03, 0xF0, 0x00, 0x7F, + 0xC0, 0x7E, 0x00, 0x07, 0xF0, 0x1F, 0xC0, 0x00, 0xFE, 0x00, 0x00, 0x00, + 0xFF, 0x80, 0x00, 0x01, 0xFF, 0xF8, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x01, + 0xFF, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xFF, 0xC0, + 0x3F, 0xF0, 0x3F, 0xF8, 0x1F, 0xF0, 0x03, 0xFE, 0x07, 0xF0, 0x00, 0x7F, + 0x83, 0xF8, 0x00, 0x0F, 0xF1, 0xFE, 0x00, 0x03, 0xFC, 0x7F, 0x00, 0x00, + 0x7F, 0x3F, 0x80, 0x00, 0x1F, 0xCF, 0xE0, 0x00, 0x07, 0xF7, 0xF0, 0x00, + 0x01, 0xFD, 0xFC, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x00, 0x1F, 0xDF, 0xC0, + 0x00, 0x07, 0xFF, 0xE0, 0x00, 0x03, 0xFB, 0xF8, 0x00, 0x00, 0xFE, 0xFE, + 0x00, 0x00, 0x3F, 0xBF, 0x80, 0x00, 0x0F, 0xEF, 0xE0, 0x00, 0x07, 0xF3, + 0xF8, 0x00, 0x01, 0xFC, 0xFE, 0x00, 0x00, 0xFE, 0x3F, 0xC0, 0x00, 0x7F, + 0x8F, 0xF0, 0x00, 0x1F, 0xC1, 0xFE, 0x00, 0x0F, 0xE0, 0x7F, 0xC0, 0x0F, + 0xF8, 0x1F, 0xFC, 0x0F, 0xFC, 0x03, 0xFF, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, + 0xFF, 0x00, 0x0F, 0xFF, 0xFF, 0x80, 0x01, 0xFF, 0xFF, 0x80, 0x00, 0x1F, + 0xFF, 0x80, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x03, + 0xFF, 0xFF, 0xE0, 0x0F, 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xFF, 0xE0, 0x3F, + 0xFF, 0xFF, 0xC0, 0x7F, 0xFF, 0xFF, 0xC1, 0xFE, 0x00, 0xFF, 0x83, 0xF8, + 0x00, 0xFF, 0x07, 0xF0, 0x00, 0xFE, 0x0F, 0xE0, 0x01, 0xFC, 0x1F, 0xC0, + 0x03, 0xF8, 0x7F, 0x00, 0x07, 0xF0, 0xFE, 0x00, 0x1F, 0xC1, 0xFC, 0x00, + 0x3F, 0x83, 0xF8, 0x00, 0xFE, 0x07, 0xF0, 0x07, 0xFC, 0x1F, 0xFF, 0xFF, + 0xF0, 0x3F, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFE, + 0x03, 0xFF, 0xFF, 0xF0, 0x07, 0xFF, 0xFF, 0x80, 0x0F, 0xE0, 0x00, 0x00, + 0x1F, 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x01, + 0xFC, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x0F, + 0xE0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0xFE, + 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, + 0x01, 0xFF, 0xF8, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x01, 0xFF, 0xFF, 0xF0, + 0x00, 0xFF, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xFF, 0xC0, 0x3F, 0xF0, 0x3F, + 0xF0, 0x1F, 0xF0, 0x03, 0xFE, 0x07, 0xF8, 0x00, 0x7F, 0x83, 0xFC, 0x00, + 0x0F, 0xF1, 0xFE, 0x00, 0x03, 0xFC, 0x7F, 0x00, 0x00, 0x7F, 0x3F, 0x80, + 0x00, 0x1F, 0xCF, 0xE0, 0x00, 0x07, 0xF3, 0xF0, 0x00, 0x01, 0xFD, 0xFC, + 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x00, 0x1F, 0xDF, 0x80, 0x00, 0x07, 0xFF, + 0xE0, 0x00, 0x03, 0xFB, 0xF8, 0x00, 0x00, 0xFE, 0xFE, 0x00, 0x00, 0x3F, + 0xBF, 0x80, 0x00, 0x0F, 0xEF, 0xE0, 0x01, 0x87, 0xF3, 0xF8, 0x00, 0xF1, + 0xFC, 0xFE, 0x00, 0x7C, 0xFE, 0x3F, 0xC0, 0x3F, 0xFF, 0x8F, 0xF0, 0x07, + 0xFF, 0xC1, 0xFE, 0x01, 0xFF, 0xE0, 0x7F, 0xC0, 0x3F, 0xF8, 0x1F, 0xFC, + 0x0F, 0xFC, 0x03, 0xFF, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0xFF, 0xC0, 0x0F, + 0xFF, 0xFF, 0xF8, 0x01, 0xFF, 0xFF, 0xFF, 0x00, 0x1F, 0xFF, 0x9F, 0x80, + 0x01, 0xFF, 0x03, 0xC0, 0x00, 0x00, 0x00, 0x60, 0x00, 0x01, 0xFF, 0xFF, + 0xF0, 0x00, 0xFF, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, + 0xFF, 0xE0, 0x3F, 0xFF, 0xFF, 0xF0, 0x1F, 0xFF, 0xFF, 0xFC, 0x0F, 0xE0, + 0x03, 0xFE, 0x0F, 0xF0, 0x00, 0xFF, 0x07, 0xF0, 0x00, 0x3F, 0x83, 0xF8, + 0x00, 0x1F, 0xC1, 0xFC, 0x00, 0x0F, 0xC0, 0xFE, 0x00, 0x07, 0xE0, 0xFE, + 0x00, 0x07, 0xF0, 0x7F, 0x00, 0x07, 0xF0, 0x3F, 0x80, 0x0F, 0xF0, 0x1F, + 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xE0, 0x07, + 0xFF, 0xFF, 0xF0, 0x03, 0xFF, 0xFF, 0xFC, 0x01, 0xFF, 0xFF, 0xFF, 0x01, + 0xFC, 0x00, 0x7F, 0x80, 0xFE, 0x00, 0x1F, 0xC0, 0x7F, 0x00, 0x0F, 0xE0, + 0x3F, 0x80, 0x07, 0xF0, 0x1F, 0xC0, 0x03, 0xF8, 0x1F, 0xC0, 0x01, 0xFC, + 0x0F, 0xE0, 0x01, 0xFC, 0x07, 0xF0, 0x00, 0xFE, 0x03, 0xF8, 0x00, 0x7F, + 0x01, 0xFC, 0x00, 0x3F, 0x81, 0xFC, 0x00, 0x1F, 0xC0, 0xFE, 0x00, 0x0F, + 0xE0, 0x7F, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x7F, + 0xFF, 0x00, 0x07, 0xFF, 0xFE, 0x00, 0x3F, 0xFF, 0xFC, 0x01, 0xFF, 0xFF, + 0xF8, 0x0F, 0xFF, 0xFF, 0xF0, 0x3F, 0xC0, 0x7F, 0xC1, 0xFE, 0x00, 0xFF, + 0x07, 0xF0, 0x01, 0xFC, 0x3F, 0x80, 0x07, 0xF0, 0xFE, 0x00, 0x1F, 0xC3, + 0xF8, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0xFF, + 0xE0, 0x00, 0x03, 0xFF, 0xFC, 0x00, 0x07, 0xFF, 0xFF, 0x00, 0x0F, 0xFF, + 0xFE, 0x00, 0x1F, 0xFF, 0xFE, 0x00, 0x0F, 0xFF, 0xF8, 0x00, 0x03, 0xFF, + 0xF0, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x01, 0xFC, + 0x00, 0x00, 0x07, 0xF3, 0xF8, 0x00, 0x1F, 0xCF, 0xE0, 0x00, 0x7E, 0x3F, + 0x80, 0x03, 0xF8, 0xFF, 0x00, 0x1F, 0xE3, 0xFF, 0x01, 0xFF, 0x07, 0xFF, + 0xFF, 0xF8, 0x1F, 0xFF, 0xFF, 0xE0, 0x3F, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, + 0xF0, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x3F, 0xF0, 0x00, 0x7F, 0xFF, 0xFF, + 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFE, 0x00, 0x3F, 0x80, 0x00, 0x03, 0xF8, + 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x7F, 0x00, 0x00, + 0x07, 0xF0, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0xFE, + 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x0F, 0xE0, 0x00, + 0x01, 0xFC, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x1F, + 0xC0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0xF8, 0x00, + 0x00, 0x3F, 0x80, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x07, + 0xF0, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x7F, 0x00, + 0x00, 0x0F, 0xE0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x7F, + 0x07, 0xF0, 0x00, 0x7F, 0x07, 0xF0, 0x00, 0xFE, 0x0F, 0xE0, 0x00, 0xFE, + 0x0F, 0xE0, 0x00, 0xFE, 0x0F, 0xE0, 0x00, 0xFE, 0x0F, 0xE0, 0x00, 0xFE, + 0x0F, 0xE0, 0x01, 0xFC, 0x1F, 0xC0, 0x01, 0xFC, 0x1F, 0xC0, 0x01, 0xFC, + 0x1F, 0xC0, 0x01, 0xFC, 0x1F, 0xC0, 0x01, 0xFC, 0x3F, 0x80, 0x03, 0xF8, + 0x3F, 0x80, 0x03, 0xF8, 0x3F, 0x80, 0x03, 0xF8, 0x3F, 0x80, 0x03, 0xF8, + 0x3F, 0x80, 0x07, 0xF0, 0x7F, 0x00, 0x07, 0xF0, 0x7F, 0x00, 0x07, 0xF0, + 0x7F, 0x00, 0x07, 0xF0, 0x7F, 0x00, 0x07, 0xF0, 0x7F, 0x00, 0x0F, 0xE0, + 0xFE, 0x00, 0x0F, 0xE0, 0xFE, 0x00, 0x0F, 0xE0, 0xFE, 0x00, 0x0F, 0xE0, + 0xFE, 0x00, 0x1F, 0xC0, 0xFE, 0x00, 0x1F, 0xC0, 0xFF, 0x00, 0x3F, 0x80, + 0xFF, 0xC0, 0xFF, 0x80, 0x7F, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0xFE, 0x00, + 0x3F, 0xFF, 0xFC, 0x00, 0x1F, 0xFF, 0xF8, 0x00, 0x0F, 0xFF, 0xE0, 0x00, + 0x01, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x03, 0xF9, 0xFC, 0x00, 0x0F, 0xE7, + 0xF0, 0x00, 0x7F, 0x1F, 0xC0, 0x01, 0xFC, 0x7F, 0x00, 0x0F, 0xE1, 0xFC, + 0x00, 0x3F, 0x87, 0xF0, 0x01, 0xFC, 0x1F, 0xC0, 0x07, 0xF0, 0x3F, 0x00, + 0x3F, 0x80, 0xFC, 0x00, 0xFC, 0x03, 0xF0, 0x07, 0xF0, 0x0F, 0xC0, 0x1F, + 0x80, 0x3F, 0x80, 0xFE, 0x00, 0xFE, 0x03, 0xF0, 0x03, 0xF8, 0x1F, 0xC0, + 0x0F, 0xE0, 0x7E, 0x00, 0x1F, 0x83, 0xF8, 0x00, 0x7E, 0x0F, 0xC0, 0x01, + 0xF8, 0x7E, 0x00, 0x07, 0xE1, 0xF8, 0x00, 0x1F, 0x8F, 0xC0, 0x00, 0x7E, + 0x3F, 0x00, 0x01, 0xF9, 0xF8, 0x00, 0x07, 0xE7, 0xE0, 0x00, 0x0F, 0xFF, + 0x00, 0x00, 0x3F, 0xFC, 0x00, 0x00, 0xFF, 0xE0, 0x00, 0x03, 0xFF, 0x00, + 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x00, 0xFF, 0x80, 0x00, + 0x01, 0xFC, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x00, + 0xFE, 0x00, 0x7F, 0x80, 0x1F, 0xFF, 0xC0, 0x0F, 0xF0, 0x03, 0xFB, 0xF8, + 0x01, 0xFE, 0x00, 0x7F, 0x7F, 0x00, 0x7F, 0xC0, 0x1F, 0xCF, 0xE0, 0x0F, + 0xF8, 0x03, 0xF9, 0xFC, 0x03, 0xFF, 0x00, 0xFE, 0x3F, 0x80, 0x7F, 0xE0, + 0x1F, 0xC7, 0xF0, 0x1F, 0xFC, 0x07, 0xF0, 0x7E, 0x03, 0xFF, 0x80, 0xFE, + 0x0F, 0xC0, 0x7D, 0xF0, 0x1F, 0x81, 0xF8, 0x1F, 0xBE, 0x07, 0xF0, 0x3F, + 0x03, 0xE7, 0xC0, 0xFC, 0x07, 0xE0, 0xFC, 0xF8, 0x3F, 0x80, 0xFC, 0x1F, + 0x1F, 0x07, 0xE0, 0x1F, 0x83, 0xE3, 0xE0, 0xFC, 0x03, 0xF0, 0xFC, 0x7C, + 0x3F, 0x00, 0x7E, 0x1F, 0x0F, 0x87, 0xE0, 0x0F, 0xC7, 0xE1, 0xF1, 0xF8, + 0x01, 0xF8, 0xF8, 0x3E, 0x3F, 0x00, 0x3F, 0x3F, 0x07, 0xCF, 0xC0, 0x07, + 0xE7, 0xC0, 0xF9, 0xF8, 0x00, 0xFC, 0xF8, 0x1F, 0x3E, 0x00, 0x1F, 0xBE, + 0x03, 0xEF, 0xC0, 0x01, 0xF7, 0xC0, 0x7D, 0xF0, 0x00, 0x3F, 0xF8, 0x0F, + 0xFE, 0x00, 0x07, 0xFE, 0x01, 0xFF, 0x80, 0x00, 0xFF, 0xC0, 0x3F, 0xF0, + 0x00, 0x1F, 0xF0, 0x07, 0xFC, 0x00, 0x03, 0xFE, 0x00, 0xFF, 0x80, 0x00, + 0x7F, 0x80, 0x1F, 0xE0, 0x00, 0x0F, 0xF0, 0x03, 0xFC, 0x00, 0x01, 0xFC, + 0x00, 0x7F, 0x80, 0x00, 0x3F, 0x80, 0x0F, 0xE0, 0x00, 0x07, 0xF0, 0x01, + 0xFC, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x07, 0xFC, 0x00, 0xFF, + 0x00, 0x1F, 0xE0, 0x07, 0xF8, 0x00, 0xFF, 0x00, 0x7F, 0x80, 0x03, 0xFC, + 0x07, 0xF8, 0x00, 0x1F, 0xE0, 0x7F, 0x80, 0x00, 0xFF, 0x07, 0xF8, 0x00, + 0x03, 0xFC, 0x3F, 0x80, 0x00, 0x1F, 0xE3, 0xF8, 0x00, 0x00, 0x7F, 0x3F, + 0xC0, 0x00, 0x03, 0xFF, 0xFC, 0x00, 0x00, 0x1F, 0xFF, 0xC0, 0x00, 0x00, + 0x7F, 0xFC, 0x00, 0x00, 0x03, 0xFF, 0xC0, 0x00, 0x00, 0x0F, 0xFC, 0x00, + 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x1F, + 0xF0, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, + 0x00, 0xFF, 0xF0, 0x00, 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0x00, 0xFF, 0xFE, + 0x00, 0x00, 0x0F, 0xE7, 0xF0, 0x00, 0x00, 0xFF, 0x3F, 0xC0, 0x00, 0x0F, + 0xF1, 0xFE, 0x00, 0x00, 0xFF, 0x07, 0xF8, 0x00, 0x07, 0xF0, 0x3F, 0xC0, + 0x00, 0x7F, 0x01, 0xFE, 0x00, 0x07, 0xF8, 0x07, 0xF8, 0x00, 0x7F, 0x80, + 0x3F, 0xC0, 0x07, 0xF8, 0x01, 0xFF, 0x00, 0x7F, 0x80, 0x07, 0xF8, 0x07, + 0xFC, 0x00, 0x3F, 0xE0, 0x00, 0xFF, 0x00, 0x07, 0xF7, 0xF8, 0x00, 0x7F, + 0xBF, 0xC0, 0x07, 0xF8, 0xFE, 0x00, 0x3F, 0x87, 0xF8, 0x03, 0xFC, 0x3F, + 0xC0, 0x3F, 0xC0, 0xFE, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x3F, 0xC1, + 0xFE, 0x00, 0xFE, 0x0F, 0xE0, 0x07, 0xF0, 0xFE, 0x00, 0x3F, 0x8F, 0xE0, + 0x00, 0xFE, 0x7F, 0x00, 0x07, 0xF7, 0xF0, 0x00, 0x3F, 0xFF, 0x00, 0x01, + 0xFF, 0xF8, 0x00, 0x07, 0xFF, 0x80, 0x00, 0x3F, 0xF8, 0x00, 0x01, 0xFF, + 0x80, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x01, 0xFC, 0x00, + 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, + 0x3F, 0x80, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x7F, + 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x01, 0xFC, 0x00, + 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0x80, 0xFF, 0xFF, 0xFF, 0xC0, 0x7F, 0xFF, 0xFF, 0xE0, 0x3F, 0xFF, + 0xFF, 0xF0, 0x1F, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, 0xF8, 0x00, 0x00, + 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, + 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, + 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, + 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, + 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, + 0x07, 0xFC, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, + 0x07, 0xF8, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, + 0x07, 0xF8, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, 0xFF, + 0x01, 0xFF, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFF, 0xC0, 0x7F, 0xFF, 0xFF, + 0xC0, 0x3F, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x7F, 0xF8, 0x03, 0xFF, 0x80, + 0x1F, 0xFC, 0x00, 0xFF, 0xE0, 0x0F, 0xFF, 0x00, 0x7E, 0x00, 0x03, 0xF0, + 0x00, 0x1F, 0x80, 0x01, 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0x7E, 0x00, 0x03, + 0xF0, 0x00, 0x1F, 0x80, 0x01, 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0x7E, 0x00, + 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x01, 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0x7E, + 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x80, 0x01, 0xF8, 0x00, 0x0F, 0xC0, 0x00, + 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x80, 0x01, 0xF8, 0x00, 0x0F, 0xC0, + 0x00, 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x01, 0xF8, 0x00, 0x0F, + 0xC0, 0x00, 0x7E, 0x00, 0x07, 0xF0, 0x00, 0x3F, 0x00, 0x01, 0xFF, 0xC0, + 0x0F, 0xFE, 0x00, 0x7F, 0xF0, 0x07, 0xFF, 0x80, 0x3F, 0xFC, 0x00, 0x81, + 0xC3, 0xC7, 0x8F, 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xC3, 0xC7, 0x8F, 0x1E, + 0x1C, 0x38, 0x70, 0xE1, 0xC3, 0x87, 0x8F, 0x1E, 0x3C, 0x38, 0x70, 0xE1, + 0xC3, 0x87, 0x0F, 0x1E, 0x3C, 0x78, 0xF0, 0x00, 0x7F, 0xF8, 0x03, 0xFF, + 0xC0, 0x1F, 0xFC, 0x00, 0xFF, 0xE0, 0x07, 0xFF, 0x00, 0x01, 0xF8, 0x00, + 0x1F, 0xC0, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x3F, 0x00, 0x01, 0xF8, + 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x3F, 0x00, 0x03, + 0xF8, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x3F, 0x00, + 0x03, 0xF8, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x7F, + 0x00, 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, + 0x7F, 0x00, 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, + 0x00, 0x7F, 0x00, 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x01, 0xFF, + 0xE0, 0x0F, 0xFE, 0x00, 0x7F, 0xF0, 0x03, 0xFF, 0x80, 0x3F, 0xFC, 0x00, + 0x00, 0x1F, 0x80, 0x00, 0xFE, 0x00, 0x0F, 0xF0, 0x00, 0x7F, 0x80, 0x07, + 0xFC, 0x00, 0x7F, 0xE0, 0x03, 0xFF, 0x80, 0x3E, 0xFC, 0x01, 0xF3, 0xE0, + 0x1F, 0x1F, 0x01, 0xF8, 0xF8, 0x0F, 0x87, 0xE0, 0xFC, 0x3F, 0x07, 0xC0, + 0xF8, 0x7C, 0x07, 0xC7, 0xE0, 0x3E, 0x3E, 0x01, 0xFB, 0xF0, 0x0F, 0xDF, + 0x00, 0x3F, 0xF0, 0x01, 0xF0, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xE0, 0xF8, 0xF0, 0xF1, 0xE1, + 0xC3, 0xC3, 0x80, 0x00, 0x1F, 0xF0, 0x00, 0x7F, 0xFF, 0x00, 0xFF, 0xFF, + 0xC0, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xF8, 0x7F, 0x03, 0xFC, 0x3F, 0x00, + 0xFE, 0x1F, 0x80, 0x7E, 0x00, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0x80, 0x1F, + 0xFF, 0xC0, 0x7F, 0xFF, 0xC0, 0xFF, 0xFF, 0xE0, 0xFF, 0xF7, 0xF0, 0xFF, + 0x83, 0xF8, 0xFF, 0x01, 0xF8, 0x7F, 0x00, 0xFC, 0x7F, 0x00, 0xFE, 0x3F, + 0x80, 0x7F, 0x1F, 0xC0, 0x7F, 0x8F, 0xF0, 0xFF, 0x87, 0xFF, 0xFF, 0xC3, + 0xFF, 0xFF, 0xE0, 0xFF, 0xF7, 0xF8, 0x3F, 0xF3, 0xFC, 0x07, 0xE0, 0x00, + 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x01, + 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xE0, 0x00, 0x00, 0xFC, 0x00, + 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, 0xFE, 0x3F, 0x80, 0x1F, + 0x9F, 0xFC, 0x03, 0xF7, 0xFF, 0xC0, 0xFF, 0xFF, 0xF8, 0x1F, 0xFF, 0xFF, + 0x83, 0xFF, 0x0F, 0xF0, 0x7F, 0x80, 0xFF, 0x0F, 0xE0, 0x1F, 0xE3, 0xF8, + 0x01, 0xFC, 0x7F, 0x00, 0x3F, 0x8F, 0xC0, 0x07, 0xF1, 0xF8, 0x00, 0xFE, + 0x7F, 0x00, 0x1F, 0xCF, 0xC0, 0x03, 0xF9, 0xF8, 0x00, 0xFE, 0x3F, 0x00, + 0x1F, 0xC7, 0xE0, 0x03, 0xF9, 0xFC, 0x00, 0xFE, 0x3F, 0xC0, 0x3F, 0xC7, + 0xF8, 0x0F, 0xF0, 0xFF, 0x83, 0xFC, 0x1F, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, + 0xC0, 0xFF, 0xFF, 0xF0, 0x1F, 0x9F, 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x00, + 0x00, 0x1F, 0xE0, 0x00, 0x3F, 0xFC, 0x00, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, + 0xE0, 0x7F, 0xFF, 0xF0, 0x7F, 0x83, 0xFC, 0x7F, 0x00, 0xFE, 0x3F, 0x00, + 0x7F, 0x3F, 0x80, 0x3F, 0x9F, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x0F, 0xE0, + 0x00, 0x07, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0x01, 0xFC, + 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x7F, 0x3F, 0x80, 0x3F, 0x9F, + 0xE0, 0x3F, 0x87, 0xF8, 0x3F, 0x83, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, + 0x3F, 0xFF, 0xC0, 0x0F, 0xFF, 0x80, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, + 0x03, 0xF8, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x07, + 0xE0, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x1F, 0xC0, + 0x00, 0x00, 0xFC, 0x00, 0x00, 0x0F, 0xE0, 0x01, 0xFC, 0x7F, 0x00, 0x3F, + 0xF3, 0xF8, 0x03, 0xFF, 0xDF, 0x80, 0x7F, 0xFF, 0xFC, 0x07, 0xFF, 0xFF, + 0xE0, 0x3F, 0xC3, 0xFF, 0x03, 0xFC, 0x0F, 0xF8, 0x3F, 0xC0, 0x3F, 0x81, + 0xFC, 0x01, 0xFC, 0x1F, 0xC0, 0x07, 0xE0, 0xFE, 0x00, 0x3F, 0x07, 0xF0, + 0x03, 0xF8, 0x7F, 0x00, 0x1F, 0x83, 0xF8, 0x00, 0xFC, 0x1F, 0xC0, 0x07, + 0xE0, 0xFE, 0x00, 0x3F, 0x07, 0xF0, 0x03, 0xF0, 0x3F, 0x80, 0x3F, 0x81, + 0xFC, 0x01, 0xFC, 0x0F, 0xF0, 0x1F, 0xE0, 0x3F, 0xC3, 0xFF, 0x01, 0xFF, + 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xFC, 0x00, 0xFF, 0xCF, + 0xE0, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x7F, 0xFC, 0x00, + 0x7F, 0xFF, 0x00, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xF0, 0x7F, 0x87, 0xF8, + 0x7F, 0x01, 0xFE, 0x7F, 0x00, 0x7F, 0x3F, 0x80, 0x3F, 0xBF, 0x80, 0x1F, + 0xDF, 0xC0, 0x0F, 0xEF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFD, 0xFC, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, + 0x00, 0x3F, 0x80, 0x3F, 0x9F, 0xE0, 0x3F, 0x87, 0xF8, 0x3F, 0xC3, 0xFF, + 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, 0x80, 0x0F, 0xFF, 0x80, 0x00, + 0xFE, 0x00, 0x00, 0x00, 0x1F, 0xC0, 0x1F, 0xF0, 0x0F, 0xF8, 0x07, 0xFE, + 0x01, 0xFF, 0x80, 0xFE, 0x00, 0x3F, 0x80, 0x0F, 0xC0, 0x03, 0xF0, 0x01, + 0xFC, 0x03, 0xFF, 0xF1, 0xFF, 0xF8, 0x7F, 0xFE, 0x1F, 0xFF, 0x80, 0xFE, + 0x00, 0x3F, 0x80, 0x0F, 0xE0, 0x03, 0xF0, 0x00, 0xFC, 0x00, 0x7F, 0x00, + 0x1F, 0xC0, 0x07, 0xE0, 0x01, 0xF8, 0x00, 0xFE, 0x00, 0x3F, 0x80, 0x0F, + 0xE0, 0x03, 0xF0, 0x00, 0xFC, 0x00, 0x7F, 0x00, 0x1F, 0xC0, 0x07, 0xF0, + 0x01, 0xF8, 0x00, 0x7E, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x07, 0xC3, 0xF8, + 0x01, 0xFF, 0x9F, 0x80, 0x1F, 0xFE, 0xFC, 0x01, 0xFF, 0xFF, 0xE0, 0x1F, + 0xFF, 0xFF, 0x01, 0xFE, 0x1F, 0xF8, 0x1F, 0xE0, 0x3F, 0x80, 0xFE, 0x01, + 0xFC, 0x0F, 0xE0, 0x0F, 0xE0, 0x7F, 0x00, 0x3F, 0x07, 0xF0, 0x01, 0xF8, + 0x3F, 0x80, 0x0F, 0x81, 0xF8, 0x00, 0x7C, 0x1F, 0xC0, 0x07, 0xE0, 0xFE, + 0x00, 0x3F, 0x07, 0xF0, 0x01, 0xF0, 0x3F, 0x80, 0x1F, 0x81, 0xFC, 0x00, + 0xFC, 0x0F, 0xE0, 0x0F, 0xE0, 0x7F, 0x80, 0xFF, 0x03, 0xFE, 0x1F, 0xF0, + 0x0F, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0xFC, 0x01, 0xFF, 0xF7, 0xE0, 0x07, + 0xFE, 0x7F, 0x00, 0x0F, 0xC3, 0xF0, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x01, + 0xFC, 0x0F, 0xE0, 0x0F, 0xC0, 0x7F, 0x00, 0xFE, 0x03, 0xFC, 0x1F, 0xE0, + 0x1F, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xE0, 0x01, 0xFF, 0xFC, 0x00, 0x01, + 0xFF, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xE0, + 0x00, 0x00, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, + 0xFE, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xFE, 0x0F, + 0xC0, 0x1F, 0xCF, 0xFE, 0x03, 0xFB, 0xFF, 0xE0, 0x7F, 0xFF, 0xFE, 0x0F, + 0xFF, 0xFF, 0xC3, 0xFF, 0x07, 0xF8, 0x7F, 0x80, 0x7F, 0x0F, 0xE0, 0x0F, + 0xE1, 0xFC, 0x01, 0xFC, 0x7F, 0x00, 0x3F, 0x0F, 0xE0, 0x07, 0xE1, 0xFC, + 0x01, 0xFC, 0x3F, 0x00, 0x3F, 0x87, 0xE0, 0x07, 0xF1, 0xFC, 0x00, 0xFC, + 0x3F, 0x80, 0x1F, 0x87, 0xF0, 0x07, 0xF0, 0xFC, 0x00, 0xFE, 0x1F, 0x80, + 0x1F, 0xC7, 0xF0, 0x03, 0xF0, 0xFE, 0x00, 0x7E, 0x1F, 0xC0, 0x1F, 0xC3, + 0xF0, 0x03, 0xF8, 0xFE, 0x00, 0x7F, 0x1F, 0xC0, 0x0F, 0xC0, 0x01, 0xFC, + 0x07, 0xF0, 0x1F, 0x80, 0x7E, 0x03, 0xF8, 0x0F, 0xE0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xE0, 0x3F, 0x80, 0xFE, + 0x03, 0xF8, 0x0F, 0xC0, 0x3F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7E, + 0x03, 0xF8, 0x0F, 0xE0, 0x3F, 0x80, 0xFC, 0x03, 0xF0, 0x1F, 0xC0, 0x7F, + 0x01, 0xFC, 0x07, 0xE0, 0x1F, 0x80, 0xFE, 0x03, 0xF8, 0x00, 0x00, 0x0F, + 0xE0, 0x01, 0xFC, 0x00, 0x3F, 0x80, 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x3F, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0xFE, + 0x00, 0x1F, 0xC0, 0x03, 0xF8, 0x00, 0x7E, 0x00, 0x1F, 0xC0, 0x03, 0xF8, + 0x00, 0x7F, 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x7F, 0x00, 0x0F, 0xE0, + 0x01, 0xFC, 0x00, 0x3F, 0x00, 0x07, 0xE0, 0x01, 0xFC, 0x00, 0x3F, 0x80, + 0x07, 0xF0, 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x07, 0xF0, 0x00, 0xFE, 0x00, + 0x1F, 0x80, 0x03, 0xF0, 0x00, 0xFE, 0x00, 0x1F, 0xC0, 0x03, 0xF8, 0x00, + 0x7E, 0x00, 0x0F, 0xC0, 0x03, 0xF8, 0x03, 0xFF, 0x00, 0x7F, 0xC0, 0x0F, + 0xF8, 0x03, 0xFE, 0x00, 0x7E, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x1F, + 0x80, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0xF8, 0x00, + 0x00, 0x3F, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x07, + 0xF0, 0x00, 0x00, 0x7F, 0x00, 0xFE, 0x07, 0xE0, 0x3F, 0xC0, 0x7E, 0x07, + 0xF8, 0x0F, 0xE0, 0xFF, 0x00, 0xFE, 0x1F, 0xC0, 0x0F, 0xE3, 0xF8, 0x00, + 0xFC, 0x7F, 0x00, 0x0F, 0xCF, 0xE0, 0x01, 0xFD, 0xFC, 0x00, 0x1F, 0xFF, + 0x80, 0x01, 0xFF, 0xF8, 0x00, 0x1F, 0xFF, 0x80, 0x03, 0xFF, 0xFC, 0x00, + 0x3F, 0xFF, 0xC0, 0x03, 0xFE, 0xFE, 0x00, 0x3F, 0xCF, 0xE0, 0x03, 0xF0, + 0xFE, 0x00, 0x7F, 0x07, 0xF0, 0x07, 0xF0, 0x7F, 0x00, 0x7F, 0x07, 0xF8, + 0x07, 0xE0, 0x3F, 0x80, 0x7E, 0x03, 0xF8, 0x0F, 0xE0, 0x3F, 0xC0, 0xFE, + 0x01, 0xFC, 0x0F, 0xC0, 0x1F, 0xE0, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0x80, + 0x7E, 0x03, 0xF8, 0x0F, 0xE0, 0x3F, 0x80, 0xFC, 0x03, 0xF0, 0x1F, 0xC0, + 0x7F, 0x01, 0xFC, 0x07, 0xE0, 0x3F, 0x80, 0xFE, 0x03, 0xF8, 0x0F, 0xC0, + 0x3F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7E, 0x03, 0xF8, 0x0F, 0xE0, + 0x3F, 0x80, 0xFC, 0x03, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xE0, + 0x1F, 0x80, 0xFE, 0x03, 0xF8, 0x00, 0x07, 0xF0, 0xFC, 0x03, 0xF0, 0x07, + 0xE3, 0xFF, 0x0F, 0xFC, 0x07, 0xEF, 0xFF, 0x3F, 0xFE, 0x0F, 0xFF, 0xFF, + 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xF8, 0x7F, 0xF0, 0xFF, + 0x0F, 0xE0, 0x3F, 0xC0, 0x7F, 0x0F, 0xE0, 0x3F, 0x80, 0x7F, 0x1F, 0xC0, + 0x3F, 0x80, 0x7E, 0x1F, 0xC0, 0x3F, 0x00, 0x7E, 0x1F, 0xC0, 0x3F, 0x00, + 0xFE, 0x1F, 0x80, 0x7F, 0x00, 0xFE, 0x3F, 0x80, 0x7F, 0x00, 0xFC, 0x3F, + 0x80, 0x7F, 0x00, 0xFC, 0x3F, 0x80, 0x7E, 0x01, 0xFC, 0x3F, 0x00, 0x7E, + 0x01, 0xFC, 0x3F, 0x00, 0xFE, 0x01, 0xFC, 0x7F, 0x00, 0xFE, 0x01, 0xF8, + 0x7F, 0x00, 0xFE, 0x01, 0xF8, 0x7F, 0x00, 0xFC, 0x03, 0xF8, 0x7E, 0x01, + 0xFC, 0x03, 0xF8, 0x7E, 0x01, 0xFC, 0x03, 0xF8, 0xFE, 0x01, 0xFC, 0x03, + 0xF0, 0xFE, 0x01, 0xF8, 0x03, 0xF0, 0xFE, 0x01, 0xF8, 0x07, 0xF0, 0x07, + 0xF0, 0xFE, 0x00, 0xFE, 0x7F, 0xF0, 0x1F, 0x9F, 0xFF, 0x03, 0xFF, 0xFF, + 0xF0, 0xFF, 0xFF, 0xFE, 0x1F, 0xF8, 0x3F, 0xC3, 0xFC, 0x03, 0xF8, 0x7F, + 0x00, 0x7F, 0x0F, 0xE0, 0x0F, 0xE3, 0xF8, 0x01, 0xF8, 0x7F, 0x00, 0x3F, + 0x0F, 0xC0, 0x0F, 0xE1, 0xF8, 0x01, 0xFC, 0x7F, 0x00, 0x3F, 0x8F, 0xE0, + 0x07, 0xE1, 0xFC, 0x00, 0xFC, 0x3F, 0x00, 0x3F, 0x87, 0xE0, 0x07, 0xF1, + 0xFC, 0x00, 0xFE, 0x3F, 0x80, 0x1F, 0x87, 0xF0, 0x03, 0xF0, 0xFC, 0x00, + 0xFE, 0x3F, 0x80, 0x1F, 0xC7, 0xF0, 0x03, 0xF8, 0xFE, 0x00, 0x7E, 0x00, + 0x00, 0x1F, 0xE0, 0x00, 0x1F, 0xFF, 0x00, 0x1F, 0xFF, 0xE0, 0x0F, 0xFF, + 0xFC, 0x07, 0xFF, 0xFF, 0x83, 0xFC, 0x1F, 0xE1, 0xFE, 0x03, 0xFC, 0xFF, + 0x00, 0xFF, 0x3F, 0x80, 0x1F, 0xDF, 0xC0, 0x07, 0xF7, 0xF0, 0x01, 0xFD, + 0xFC, 0x00, 0x7F, 0xFE, 0x00, 0x1F, 0xFF, 0x80, 0x07, 0xFF, 0xE0, 0x03, + 0xFB, 0xF8, 0x00, 0xFE, 0xFE, 0x00, 0x3F, 0xBF, 0x80, 0x1F, 0xCF, 0xF0, + 0x0F, 0xF3, 0xFC, 0x07, 0xF8, 0x7F, 0x83, 0xFC, 0x1F, 0xFF, 0xFE, 0x03, + 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0x80, 0x0F, 0xFF, 0x80, 0x00, 0x7F, 0x00, + 0x00, 0x01, 0xFC, 0x3F, 0x00, 0x0F, 0xCF, 0xFE, 0x00, 0x7E, 0xFF, 0xF8, + 0x07, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, 0xFF, 0x01, 0xFF, 0x87, 0xF8, 0x0F, + 0xF0, 0x1F, 0xE0, 0xFF, 0x00, 0xFF, 0x07, 0xF0, 0x03, 0xF8, 0x3F, 0x80, + 0x1F, 0xC1, 0xF8, 0x00, 0xFE, 0x0F, 0xC0, 0x07, 0xF0, 0xFE, 0x00, 0x3F, + 0x87, 0xF0, 0x01, 0xFC, 0x3F, 0x00, 0x1F, 0xC1, 0xF8, 0x00, 0xFE, 0x1F, + 0xC0, 0x07, 0xF0, 0xFE, 0x00, 0x7F, 0x07, 0xF8, 0x07, 0xF8, 0x3F, 0xC0, + 0x7F, 0x81, 0xFF, 0x87, 0xF8, 0x1F, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFC, + 0x07, 0xF7, 0xFF, 0xC0, 0x3F, 0x1F, 0xF8, 0x01, 0xF8, 0x7F, 0x00, 0x1F, + 0xC0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x3F, 0x00, + 0x00, 0x03, 0xF8, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0xFE, 0x00, 0x00, + 0x07, 0xE0, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x87, 0xF0, + 0x0F, 0xFE, 0x7F, 0x01, 0xFF, 0xF7, 0xE0, 0x3F, 0xFF, 0x7E, 0x07, 0xFF, + 0xFF, 0xE0, 0xFF, 0x07, 0xFE, 0x1F, 0xE0, 0x3F, 0xE3, 0xFC, 0x03, 0xFC, + 0x3F, 0x80, 0x1F, 0xC7, 0xF0, 0x01, 0xFC, 0x7F, 0x00, 0x1F, 0xC7, 0xF0, + 0x01, 0xF8, 0xFE, 0x00, 0x1F, 0x8F, 0xE0, 0x03, 0xF8, 0xFE, 0x00, 0x3F, + 0x8F, 0xE0, 0x03, 0xF8, 0xFE, 0x00, 0x7F, 0x0F, 0xE0, 0x07, 0xF0, 0xFE, + 0x00, 0xFF, 0x0F, 0xF0, 0x1F, 0xF0, 0x7F, 0x87, 0xFF, 0x07, 0xFF, 0xFF, + 0xE0, 0x3F, 0xFF, 0x7E, 0x03, 0xFF, 0xEF, 0xE0, 0x1F, 0xFC, 0xFE, 0x00, + 0x7F, 0x0F, 0xC0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x01, + 0xFC, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x1F, 0x80, + 0x00, 0x03, 0xF8, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0xF8, 0x00, 0x07, + 0xF0, 0xF0, 0x7F, 0x3F, 0x07, 0xE7, 0xE0, 0x7E, 0xFE, 0x0F, 0xFF, 0xE0, + 0xFF, 0xFE, 0x0F, 0xFC, 0x00, 0xFF, 0x00, 0x0F, 0xE0, 0x01, 0xFC, 0x00, + 0x1F, 0xC0, 0x01, 0xF8, 0x00, 0x1F, 0x80, 0x03, 0xF8, 0x00, 0x3F, 0x80, + 0x03, 0xF8, 0x00, 0x3F, 0x00, 0x03, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xF0, + 0x00, 0x7F, 0x00, 0x07, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, + 0x00, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0xFF, 0xF8, 0x03, 0xFF, 0xFC, 0x07, + 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0x0F, 0xE0, 0xFF, 0x1F, 0xC0, 0x7F, 0x1F, + 0xC0, 0x7F, 0x1F, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x1F, 0xFF, 0xC0, 0x0F, + 0xFF, 0xF0, 0x07, 0xFF, 0xF8, 0x03, 0xFF, 0xFC, 0x00, 0x7F, 0xFE, 0x00, + 0x0F, 0xFE, 0x00, 0x03, 0xFE, 0x00, 0x00, 0xFE, 0xFC, 0x00, 0xFE, 0xFE, + 0x00, 0xFE, 0xFF, 0x03, 0xFC, 0x7F, 0xFF, 0xF8, 0x7F, 0xFF, 0xF8, 0x3F, + 0xFF, 0xE0, 0x1F, 0xFF, 0xC0, 0x03, 0xFE, 0x00, 0x03, 0xF0, 0x1F, 0xC0, + 0x7F, 0x01, 0xFC, 0x07, 0xE0, 0x3F, 0x80, 0xFE, 0x1F, 0xFF, 0x7F, 0xFD, + 0xFF, 0xFF, 0xFF, 0xC7, 0xF0, 0x1F, 0xC0, 0x7E, 0x01, 0xF8, 0x0F, 0xE0, + 0x3F, 0x80, 0xFE, 0x03, 0xF0, 0x0F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xE0, + 0x1F, 0x80, 0xFE, 0x03, 0xF8, 0x0F, 0xE0, 0x3F, 0xF0, 0xFF, 0xC3, 0xFF, + 0x07, 0xFC, 0x0F, 0xE0, 0x0F, 0xC0, 0x0F, 0xE1, 0xF8, 0x01, 0xFC, 0x7F, + 0x00, 0x3F, 0x0F, 0xE0, 0x0F, 0xE1, 0xFC, 0x01, 0xFC, 0x3F, 0x00, 0x3F, + 0x87, 0xE0, 0x07, 0xE1, 0xFC, 0x00, 0xFC, 0x3F, 0x80, 0x3F, 0x87, 0xF0, + 0x07, 0xF0, 0xFC, 0x00, 0xFE, 0x1F, 0x80, 0x1F, 0x87, 0xF0, 0x03, 0xF0, + 0xFE, 0x00, 0xFE, 0x1F, 0x80, 0x1F, 0xC3, 0xF0, 0x03, 0xF0, 0xFE, 0x00, + 0x7E, 0x1F, 0xC0, 0x1F, 0xC3, 0xF8, 0x07, 0xF8, 0x7F, 0x01, 0xFF, 0x0F, + 0xF0, 0x7F, 0xC1, 0xFF, 0xFF, 0xF8, 0x3F, 0xFF, 0xFF, 0x03, 0xFF, 0xEF, + 0xE0, 0x3F, 0xF9, 0xFC, 0x01, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x7F, 0x7F, + 0x00, 0x3F, 0xBF, 0x80, 0x3F, 0x8F, 0xC0, 0x1F, 0xC7, 0xE0, 0x1F, 0xC3, + 0xF0, 0x0F, 0xC1, 0xFC, 0x0F, 0xE0, 0xFE, 0x07, 0xE0, 0x7F, 0x07, 0xF0, + 0x3F, 0x83, 0xF0, 0x0F, 0xC3, 0xF8, 0x07, 0xE1, 0xF8, 0x03, 0xF1, 0xFC, + 0x01, 0xF8, 0xFC, 0x00, 0xFC, 0xFC, 0x00, 0x7E, 0x7E, 0x00, 0x3F, 0x7E, + 0x00, 0x0F, 0xBF, 0x00, 0x07, 0xFF, 0x00, 0x03, 0xFF, 0x80, 0x01, 0xFF, + 0x80, 0x00, 0xFF, 0x80, 0x00, 0x7F, 0xC0, 0x00, 0x3F, 0xC0, 0x00, 0x1F, + 0xE0, 0x00, 0x00, 0xFE, 0x03, 0xF8, 0x0F, 0xFF, 0xC0, 0x7F, 0x01, 0xFF, + 0xF8, 0x1F, 0xE0, 0x3F, 0x7F, 0x03, 0xFC, 0x0F, 0xEF, 0xE0, 0xFF, 0x81, + 0xF9, 0xFC, 0x1F, 0xF0, 0x7F, 0x3F, 0x83, 0xFE, 0x0F, 0xC3, 0xF0, 0xFF, + 0xC3, 0xF8, 0x7E, 0x1E, 0xF8, 0x7E, 0x0F, 0xC7, 0xDF, 0x1F, 0xC1, 0xF8, + 0xFB, 0xE3, 0xF0, 0x3F, 0x1E, 0x7C, 0x7E, 0x07, 0xE7, 0xCF, 0x9F, 0x80, + 0xFC, 0xF1, 0xF3, 0xF0, 0x1F, 0xBE, 0x3E, 0xFC, 0x03, 0xF7, 0x87, 0xDF, + 0x80, 0x7E, 0xF0, 0xFF, 0xE0, 0x0F, 0xFE, 0x1F, 0xFC, 0x01, 0xFF, 0x83, + 0xFF, 0x00, 0x3F, 0xF0, 0x7F, 0xE0, 0x07, 0xFC, 0x0F, 0xF8, 0x00, 0x7F, + 0x81, 0xFF, 0x00, 0x0F, 0xF0, 0x3F, 0xC0, 0x01, 0xFC, 0x07, 0xF8, 0x00, + 0x3F, 0x80, 0xFE, 0x00, 0x00, 0x03, 0xFC, 0x07, 0xF8, 0x1F, 0xE0, 0x7F, + 0x80, 0x7F, 0x03, 0xF8, 0x03, 0xF8, 0x3F, 0x80, 0x1F, 0xE3, 0xF8, 0x00, + 0x7F, 0x3F, 0x80, 0x03, 0xF9, 0xFC, 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0x7F, + 0xFC, 0x00, 0x01, 0xFF, 0xC0, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x7F, 0xC0, + 0x00, 0x01, 0xFC, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x01, 0xFF, 0x80, 0x00, + 0x1F, 0xFE, 0x00, 0x01, 0xFF, 0xF0, 0x00, 0x1F, 0xDF, 0xC0, 0x01, 0xFC, + 0xFE, 0x00, 0x1F, 0xE7, 0xF8, 0x00, 0xFE, 0x1F, 0xC0, 0x0F, 0xE0, 0xFE, + 0x00, 0xFF, 0x07, 0xF8, 0x0F, 0xF0, 0x1F, 0xC0, 0xFF, 0x00, 0xFF, 0x00, + 0x0F, 0xE0, 0x03, 0xF0, 0x7F, 0x00, 0x3F, 0x83, 0xF8, 0x01, 0xF8, 0x1F, + 0xC0, 0x1F, 0xC0, 0xFE, 0x00, 0xFC, 0x03, 0xF8, 0x0F, 0xE0, 0x1F, 0xC0, + 0x7E, 0x00, 0xFE, 0x07, 0xE0, 0x07, 0xF0, 0x3F, 0x00, 0x3F, 0x83, 0xF0, + 0x01, 0xFC, 0x1F, 0x80, 0x0F, 0xE1, 0xF8, 0x00, 0x3F, 0x0F, 0xC0, 0x01, + 0xF8, 0xFC, 0x00, 0x0F, 0xC7, 0xC0, 0x00, 0x7F, 0x7E, 0x00, 0x03, 0xFB, + 0xE0, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0xFF, 0xF0, 0x00, 0x03, 0xFF, 0x80, + 0x00, 0x1F, 0xF8, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x07, 0xFC, 0x00, 0x00, + 0x3F, 0xC0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x7F, + 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x03, 0xF8, 0x00, + 0x01, 0xFF, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x07, + 0xF8, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xC0, 0xFF, + 0xFF, 0xF0, 0x3F, 0xFF, 0xF8, 0x1F, 0xFF, 0xFE, 0x07, 0xFF, 0xFF, 0x80, + 0x00, 0x3F, 0xC0, 0x00, 0x1F, 0xE0, 0x00, 0x0F, 0xF0, 0x00, 0x07, 0xF8, + 0x00, 0x03, 0xFC, 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x7F, + 0x80, 0x00, 0x3F, 0xC0, 0x00, 0x1F, 0xE0, 0x00, 0x0F, 0xF0, 0x00, 0x07, + 0xF8, 0x00, 0x03, 0xFC, 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, 0x00, 0x00, + 0x7F, 0xFF, 0xFC, 0x1F, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, + 0xE0, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0x0F, 0xC0, 0x0F, 0xF0, 0x07, 0xFC, + 0x01, 0xFE, 0x00, 0xFF, 0x80, 0x3E, 0x00, 0x0F, 0x80, 0x07, 0xE0, 0x01, + 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x03, 0xE0, 0x00, 0xF8, + 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x07, 0xE0, 0x01, 0xF0, 0x00, 0x7C, 0x00, + 0x3F, 0x00, 0x7F, 0x80, 0x1F, 0x80, 0x07, 0xE0, 0x03, 0xFC, 0x00, 0x3F, + 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x07, 0xC0, + 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x01, + 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x07, 0xF8, 0x01, 0xFE, 0x00, 0x7F, + 0x80, 0x0F, 0xE0, 0x01, 0xF8, 0x00, 0x00, 0x78, 0x03, 0xC0, 0x1C, 0x01, + 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1C, 0x01, 0xE0, 0x0F, 0x00, 0x78, + 0x03, 0xC0, 0x1C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x3C, 0x01, + 0xE0, 0x0F, 0x00, 0x78, 0x03, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, + 0x03, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0x80, 0x3C, 0x01, + 0xE0, 0x0F, 0x00, 0x70, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x70, + 0x07, 0x80, 0x3C, 0x00, 0x00, 0x7E, 0x00, 0x1F, 0xC0, 0x07, 0xF0, 0x01, + 0xFE, 0x00, 0x7F, 0x80, 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x1F, + 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x0F, 0x80, + 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xF0, 0x00, + 0xFF, 0x00, 0x1F, 0x80, 0x07, 0xE0, 0x07, 0xF8, 0x03, 0xF0, 0x00, 0xF8, + 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, + 0x1F, 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x1F, + 0x80, 0x07, 0xC0, 0x01, 0xF0, 0x07, 0xFC, 0x01, 0xFE, 0x00, 0xFF, 0x80, + 0x3F, 0xC0, 0x0F, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0xFF, 0x80, 0x07, 0xFF, + 0x03, 0xDF, 0xFE, 0x0F, 0xF0, 0x7F, 0xFB, 0x80, 0xFF, 0xE0, 0x01, 0xFF, + 0x00, 0x03, 0xF0}; + +const GFXglyph FreeSansBoldOblique24pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 13, 0, 1}, // 0x20 ' ' + {0, 14, 34, 16, 5, -33}, // 0x21 '!' + {60, 18, 12, 22, 8, -33}, // 0x22 '"' + {87, 29, 33, 26, 2, -31}, // 0x23 '#' + {207, 26, 42, 26, 3, -35}, // 0x24 '$' + {344, 36, 34, 42, 6, -32}, // 0x25 '%' + {497, 29, 35, 34, 4, -33}, // 0x26 '&' + {624, 7, 12, 11, 8, -33}, // 0x27 ''' + {635, 17, 44, 16, 4, -33}, // 0x28 '(' + {729, 17, 44, 16, 0, -34}, // 0x29 ')' + {823, 15, 15, 18, 7, -33}, // 0x2A '*' + {852, 24, 22, 27, 4, -21}, // 0x2B '+' + {918, 10, 15, 13, 1, -6}, // 0x2C ',' + {937, 14, 6, 16, 3, -15}, // 0x2D '-' + {948, 8, 7, 13, 3, -6}, // 0x2E '.' + {955, 20, 34, 13, 0, -32}, // 0x2F '/' + {1040, 25, 35, 26, 4, -33}, // 0x30 '0' + {1150, 17, 33, 26, 8, -32}, // 0x31 '1' + {1221, 29, 34, 26, 1, -33}, // 0x32 '2' + {1345, 26, 35, 26, 3, -33}, // 0x33 '3' + {1459, 25, 32, 26, 3, -31}, // 0x34 '4' + {1559, 27, 34, 26, 3, -32}, // 0x35 '5' + {1674, 25, 35, 26, 4, -33}, // 0x36 '6' + {1784, 26, 33, 26, 6, -32}, // 0x37 '7' + {1892, 26, 35, 26, 3, -33}, // 0x38 '8' + {2006, 25, 35, 26, 4, -33}, // 0x39 '9' + {2116, 12, 25, 16, 5, -24}, // 0x3A ':' + {2154, 14, 33, 16, 3, -24}, // 0x3B ';' + {2212, 26, 23, 27, 4, -22}, // 0x3C '<' + {2287, 26, 18, 27, 3, -19}, // 0x3D '=' + {2346, 26, 23, 27, 1, -21}, // 0x3E '>' + {2421, 24, 35, 29, 8, -34}, // 0x3F '?' + {2526, 45, 41, 46, 3, -34}, // 0x40 '@' + {2757, 32, 34, 34, 1, -33}, // 0x41 'A' + {2893, 32, 34, 34, 4, -33}, // 0x42 'B' + {3029, 32, 36, 34, 5, -34}, // 0x43 'C' + {3173, 32, 34, 34, 4, -33}, // 0x44 'D' + {3309, 32, 34, 31, 4, -33}, // 0x45 'E' + {3445, 32, 34, 29, 3, -33}, // 0x46 'F' + {3581, 33, 36, 37, 5, -34}, // 0x47 'G' + {3730, 35, 34, 34, 3, -33}, // 0x48 'H' + {3879, 14, 34, 13, 3, -33}, // 0x49 'I' + {3939, 27, 35, 26, 3, -33}, // 0x4A 'J' + {4058, 37, 34, 34, 3, -33}, // 0x4B 'K' + {4216, 24, 34, 29, 4, -33}, // 0x4C 'L' + {4318, 41, 34, 39, 3, -33}, // 0x4D 'M' + {4493, 35, 34, 34, 3, -33}, // 0x4E 'N' + {4642, 34, 36, 37, 5, -34}, // 0x4F 'O' + {4795, 31, 34, 31, 4, -33}, // 0x50 'P' + {4927, 34, 37, 37, 5, -34}, // 0x51 'Q' + {5085, 33, 34, 34, 4, -33}, // 0x52 'R' + {5226, 30, 36, 31, 4, -34}, // 0x53 'S' + {5361, 28, 34, 29, 7, -33}, // 0x54 'T' + {5480, 32, 35, 34, 6, -33}, // 0x55 'U' + {5620, 30, 34, 31, 8, -33}, // 0x56 'V' + {5748, 43, 34, 44, 8, -33}, // 0x57 'W' + {5931, 37, 34, 31, 1, -33}, // 0x58 'X' + {6089, 29, 34, 31, 9, -33}, // 0x59 'Y' + {6213, 33, 34, 29, 1, -33}, // 0x5A 'Z' + {6354, 21, 43, 16, 1, -33}, // 0x5B '[' + {6467, 7, 36, 13, 6, -34}, // 0x5C '\' + {6499, 21, 43, 16, -1, -33}, // 0x5D ']' + {6612, 21, 20, 27, 6, -32}, // 0x5E '^' + {6665, 29, 4, 26, -3, 6}, // 0x5F '_' + {6680, 7, 7, 16, 8, -35}, // 0x60 '`' + {6687, 25, 26, 26, 2, -24}, // 0x61 'a' + {6769, 27, 35, 29, 3, -33}, // 0x62 'b' + {6888, 25, 26, 26, 4, -24}, // 0x63 'c' + {6970, 29, 35, 29, 4, -33}, // 0x64 'd' + {7097, 25, 26, 26, 3, -24}, // 0x65 'e' + {7179, 18, 34, 16, 4, -33}, // 0x66 'f' + {7256, 29, 35, 29, 2, -24}, // 0x67 'g' + {7383, 27, 34, 29, 3, -33}, // 0x68 'h' + {7498, 14, 34, 13, 3, -33}, // 0x69 'i' + {7558, 19, 44, 13, -2, -33}, // 0x6A 'j' + {7663, 28, 34, 26, 3, -33}, // 0x6B 'k' + {7782, 14, 34, 13, 3, -33}, // 0x6C 'l' + {7842, 40, 25, 42, 3, -24}, // 0x6D 'm' + {7967, 27, 25, 29, 3, -24}, // 0x6E 'n' + {8052, 26, 26, 29, 4, -24}, // 0x6F 'o' + {8137, 29, 35, 29, 1, -24}, // 0x70 'p' + {8264, 28, 35, 29, 3, -24}, // 0x71 'q' + {8387, 20, 25, 18, 3, -24}, // 0x72 'r' + {8450, 24, 26, 26, 3, -24}, // 0x73 's' + {8528, 14, 32, 16, 5, -30}, // 0x74 't' + {8584, 27, 26, 29, 4, -24}, // 0x75 'u' + {8672, 25, 25, 26, 6, -24}, // 0x76 'v' + {8751, 35, 25, 37, 6, -24}, // 0x77 'w' + {8861, 29, 25, 26, 1, -24}, // 0x78 'x' + {8952, 29, 35, 26, 2, -24}, // 0x79 'y' + {9079, 26, 25, 23, 1, -24}, // 0x7A 'z' + {9161, 18, 43, 18, 4, -33}, // 0x7B '{' + {9258, 13, 43, 13, 3, -33}, // 0x7C '|' + {9328, 18, 43, 18, 2, -33}, // 0x7D '}' + {9425, 22, 8, 27, 5, -14}}; // 0x7E '~' + +const GFXfont FreeSansBoldOblique24pt7b PROGMEM = { + (uint8_t *)FreeSansBoldOblique24pt7bBitmaps, + (GFXglyph *)FreeSansBoldOblique24pt7bGlyphs, 0x20, 0x7E, 56}; + +// Approx. 10119 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBoldOblique9pt7b.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBoldOblique9pt7b.h new file mode 100644 index 0000000..ff72f73 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBoldOblique9pt7b.h @@ -0,0 +1,229 @@ +#pragma once +#include + +const uint8_t FreeSansBoldOblique9pt7bBitmaps[] PROGMEM = { + 0x21, 0x8E, 0x73, 0x18, 0xC6, 0x21, 0x19, 0xCE, 0x00, 0xEF, 0xDF, 0xBE, + 0x68, 0x80, 0x06, 0xC1, 0x99, 0xFF, 0xBF, 0xF1, 0xB0, 0x66, 0x0C, 0xC7, + 0xFC, 0xFF, 0x8C, 0x83, 0x30, 0x64, 0x00, 0x02, 0x00, 0xF0, 0x7F, 0x1D, + 0x73, 0xEE, 0x78, 0x0F, 0x00, 0xF8, 0x0F, 0xC1, 0xBB, 0xA7, 0x74, 0xEF, + 0xF8, 0xFE, 0x04, 0x00, 0x80, 0x3C, 0x11, 0xF8, 0x8E, 0x66, 0x31, 0x90, + 0xCE, 0x83, 0xF4, 0x07, 0xB0, 0x00, 0x9E, 0x04, 0xFC, 0x26, 0x31, 0x98, + 0xC4, 0x7E, 0x20, 0xF0, 0x07, 0x80, 0xFC, 0x1D, 0xC1, 0xDC, 0x1F, 0x80, + 0xE0, 0x3E, 0x37, 0x77, 0xE3, 0xEE, 0x3C, 0xE3, 0xCF, 0xFE, 0x3C, 0xE0, + 0xFF, 0xE8, 0x06, 0x06, 0x0C, 0x18, 0x38, 0x30, 0x70, 0x60, 0xE0, 0xE0, + 0xE0, 0xE0, 0xE0, 0xE0, 0x60, 0x70, 0x30, 0x0C, 0x0E, 0x06, 0x07, 0x07, + 0x07, 0x07, 0x07, 0x07, 0x06, 0x0E, 0x0C, 0x1C, 0x18, 0x30, 0x60, 0x60, + 0x32, 0xBF, 0x9C, 0xD2, 0x40, 0x0C, 0x06, 0x07, 0x1F, 0xFF, 0xF0, 0xC0, + 0xE0, 0x60, 0x77, 0x72, 0x6C, 0xFF, 0xC0, 0xFC, 0x02, 0x02, 0x04, 0x04, + 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x0F, 0x07, 0xE3, + 0x9D, 0xC7, 0x71, 0xDC, 0x7E, 0x1F, 0x8E, 0xE3, 0xB8, 0xEE, 0x73, 0xF8, + 0x3C, 0x00, 0x04, 0x3B, 0xF7, 0xE1, 0xC3, 0x06, 0x1C, 0x38, 0x70, 0xC1, + 0x87, 0x00, 0x0F, 0x87, 0xFC, 0xE3, 0xB8, 0x70, 0x0E, 0x03, 0x80, 0xF0, + 0x38, 0x1E, 0x07, 0x01, 0xC0, 0x7F, 0xCF, 0xF8, 0x0F, 0xC7, 0xFC, 0xE3, + 0xB8, 0x70, 0x1C, 0x0F, 0x03, 0xF0, 0x0E, 0x01, 0xDC, 0x3B, 0x8E, 0x7F, + 0x83, 0xE0, 0x03, 0xC0, 0xE0, 0x58, 0x2E, 0x13, 0x8C, 0xE6, 0x33, 0xFE, + 0xFF, 0x81, 0xC0, 0x60, 0x18, 0x0F, 0xE3, 0xFC, 0x60, 0x0C, 0x03, 0x78, + 0x7F, 0x9C, 0x70, 0x0E, 0x01, 0xDC, 0x33, 0x8E, 0x7F, 0x83, 0xE0, 0x0F, + 0x07, 0xE3, 0x9D, 0xC0, 0x7F, 0x1F, 0xEF, 0x3B, 0x8E, 0xE3, 0xB8, 0xCE, + 0x71, 0xF8, 0x3C, 0x00, 0x7F, 0xDF, 0xF0, 0x18, 0x0C, 0x06, 0x03, 0x81, + 0xC0, 0x60, 0x38, 0x0C, 0x07, 0x01, 0x80, 0x60, 0x00, 0x0F, 0x83, 0xFC, + 0xE3, 0x9C, 0x73, 0x9C, 0x3F, 0x0F, 0xE3, 0x8E, 0xE1, 0xDC, 0x3B, 0x8E, + 0x7F, 0xC3, 0xE0, 0x0F, 0x83, 0xF8, 0xE3, 0xB8, 0x77, 0x0E, 0xE1, 0xDC, + 0x7B, 0xFE, 0x3D, 0xC0, 0x33, 0x8E, 0x7F, 0x87, 0xC0, 0x77, 0x00, 0x00, + 0x0E, 0xE0, 0x39, 0xC0, 0x00, 0x01, 0xCE, 0x71, 0x19, 0x80, 0x00, 0x00, + 0x70, 0xFD, 0xF8, 0x70, 0x3F, 0x03, 0xF8, 0x1E, 0x01, 0x80, 0x7F, 0xDF, + 0xF0, 0x00, 0x00, 0xFF, 0xBF, 0xE0, 0x60, 0x1E, 0x07, 0xF0, 0x3F, 0x03, + 0x87, 0xEF, 0xC3, 0x80, 0x00, 0x00, 0x1F, 0x1F, 0xFE, 0x1F, 0x87, 0x01, + 0xC0, 0xE0, 0x70, 0x78, 0x3C, 0x0E, 0x00, 0x00, 0xE0, 0x38, 0x00, 0x00, + 0xFC, 0x00, 0xFF, 0xC0, 0xF0, 0x78, 0x70, 0x07, 0x38, 0x01, 0xCC, 0x3F, + 0x36, 0x31, 0x8D, 0x98, 0x63, 0xC4, 0x11, 0xF3, 0x0C, 0x6C, 0xC6, 0x73, + 0x3E, 0xF8, 0xE7, 0x3C, 0x1E, 0x00, 0x03, 0xFE, 0x00, 0x3F, 0x00, 0x01, + 0xE0, 0x0F, 0x00, 0xF8, 0x07, 0xC0, 0x6F, 0x03, 0x38, 0x31, 0xC3, 0x8E, + 0x1F, 0xF1, 0xFF, 0x8C, 0x1E, 0xE0, 0x76, 0x03, 0x80, 0x1F, 0xF0, 0xFF, + 0xC6, 0x0E, 0x70, 0x73, 0x87, 0x1F, 0xF0, 0xFF, 0x86, 0x0E, 0x70, 0x73, + 0x83, 0x9C, 0x38, 0xFF, 0xC7, 0xF8, 0x00, 0x07, 0xE0, 0xFF, 0x8F, 0x1E, + 0x70, 0x77, 0x00, 0x30, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x07, 0x03, 0xBC, + 0x38, 0xFF, 0x83, 0xF0, 0x00, 0x1F, 0xE0, 0xFF, 0x86, 0x1E, 0x70, 0x73, + 0x83, 0x9C, 0x1C, 0xC0, 0xE6, 0x07, 0x70, 0x73, 0x83, 0x9C, 0x38, 0xFF, + 0x8F, 0xF0, 0x00, 0x1F, 0xF8, 0xFF, 0x86, 0x00, 0x70, 0x03, 0x80, 0x1F, + 0xF0, 0xFF, 0x86, 0x00, 0x70, 0x03, 0x80, 0x1C, 0x00, 0xFF, 0xC7, 0xFC, + 0x00, 0x1F, 0xF1, 0xFF, 0x18, 0x03, 0x80, 0x38, 0x03, 0xFC, 0x3F, 0xC7, + 0x00, 0x70, 0x07, 0x00, 0x70, 0x06, 0x00, 0xE0, 0x00, 0x07, 0xC1, 0xFE, + 0x38, 0x77, 0x03, 0x70, 0x0E, 0x00, 0xE1, 0xEE, 0x1E, 0xE0, 0x6E, 0x0E, + 0x70, 0xE7, 0xFC, 0x1F, 0x40, 0x1C, 0x1C, 0x60, 0x63, 0x83, 0x8E, 0x0E, + 0x38, 0x38, 0xFF, 0xC3, 0xFF, 0x1C, 0x1C, 0x70, 0x71, 0xC1, 0xC6, 0x06, + 0x18, 0x38, 0xE0, 0xE0, 0x39, 0xCE, 0x63, 0x39, 0xCE, 0x63, 0x39, 0xCE, + 0x00, 0x00, 0xC0, 0x18, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x00, 0xE0, 0x1C, + 0xE3, 0x9C, 0x73, 0x9C, 0x7F, 0x87, 0xC0, 0x1C, 0x3C, 0x71, 0xC1, 0x8E, + 0x0E, 0x70, 0x3B, 0x80, 0xFC, 0x03, 0xF0, 0x0E, 0xE0, 0x73, 0x81, 0xC7, + 0x07, 0x1C, 0x18, 0x38, 0xE0, 0xF0, 0x1C, 0x07, 0x01, 0x80, 0xE0, 0x38, + 0x0E, 0x03, 0x80, 0xC0, 0x70, 0x1C, 0x07, 0x01, 0xFF, 0x7F, 0x80, 0x1E, + 0x1F, 0x1E, 0x1E, 0x3E, 0x1E, 0x3E, 0x3E, 0x36, 0x3E, 0x36, 0x6E, 0x36, + 0x6C, 0x76, 0xCC, 0x76, 0xDC, 0x67, 0x9C, 0x67, 0x98, 0xE7, 0x18, 0xE7, + 0x18, 0x1C, 0x1C, 0x70, 0x63, 0xE1, 0x8F, 0x8E, 0x3E, 0x38, 0xDC, 0xC3, + 0x33, 0x1C, 0xEC, 0x71, 0xF1, 0xC7, 0xC6, 0x1E, 0x18, 0x38, 0xE0, 0xE0, + 0x07, 0xC0, 0xFF, 0x8E, 0x1E, 0xE0, 0x77, 0x03, 0xF0, 0x1F, 0x80, 0xFC, + 0x07, 0xE0, 0x77, 0x03, 0xBC, 0x38, 0xFF, 0x81, 0xF0, 0x00, 0x1F, 0xF0, + 0xFF, 0xC6, 0x0E, 0x70, 0x73, 0x83, 0x9C, 0x38, 0xFF, 0x87, 0xF8, 0x70, + 0x03, 0x80, 0x1C, 0x00, 0xC0, 0x0E, 0x00, 0x00, 0x07, 0xC0, 0xFF, 0x8F, + 0x1C, 0xE0, 0x77, 0x03, 0xB0, 0x1F, 0x80, 0xFC, 0x06, 0xE1, 0x77, 0x1F, + 0x3C, 0x78, 0xFF, 0xC1, 0xF6, 0x00, 0x20, 0x1F, 0xF0, 0xFF, 0xC6, 0x0E, + 0x70, 0x73, 0x83, 0x9C, 0x38, 0xFF, 0x87, 0xFC, 0x70, 0x73, 0x83, 0x9C, + 0x38, 0xC1, 0xC6, 0x0F, 0x00, 0x07, 0xE0, 0xFF, 0xC7, 0x0E, 0x70, 0x73, + 0x80, 0x1F, 0x80, 0x7F, 0x80, 0x7E, 0x00, 0x77, 0x03, 0xBC, 0x38, 0xFF, + 0xC3, 0xF8, 0x00, 0xFF, 0xDF, 0xF8, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x06, + 0x01, 0xC0, 0x38, 0x07, 0x00, 0xC0, 0x18, 0x07, 0x00, 0x38, 0x31, 0xC1, + 0x8C, 0x1C, 0xE0, 0xE7, 0x07, 0x38, 0x31, 0xC3, 0x9C, 0x1C, 0xE0, 0xE7, + 0x06, 0x38, 0x70, 0xFF, 0x03, 0xE0, 0x00, 0xE0, 0xFC, 0x1D, 0x87, 0x30, + 0xC6, 0x38, 0xC6, 0x19, 0xC3, 0xB0, 0x7E, 0x0F, 0x80, 0xF0, 0x1C, 0x03, + 0x00, 0xE1, 0xC3, 0xF1, 0xE3, 0xB8, 0xF1, 0xDC, 0x78, 0xCE, 0x6C, 0xE7, + 0x36, 0x63, 0xB3, 0x70, 0xD9, 0xB0, 0x7C, 0xD8, 0x3C, 0x78, 0x1E, 0x3C, + 0x0E, 0x1C, 0x07, 0x0E, 0x00, 0x0E, 0x1C, 0x38, 0xE0, 0xE7, 0x01, 0xD8, + 0x07, 0xE0, 0x0F, 0x00, 0x38, 0x01, 0xE0, 0x0F, 0xC0, 0x77, 0x01, 0x8E, + 0x0E, 0x38, 0x70, 0xF0, 0xE0, 0xEE, 0x39, 0xC7, 0x39, 0xC3, 0x70, 0x7C, + 0x0F, 0x80, 0xE0, 0x1C, 0x03, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x3F, 0xF3, + 0xFF, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x3C, 0x07, + 0x80, 0x70, 0x0F, 0xFC, 0xFF, 0xC0, 0x0F, 0x0F, 0x0C, 0x1C, 0x18, 0x18, + 0x18, 0x18, 0x30, 0x30, 0x30, 0x30, 0x60, 0x60, 0x60, 0x78, 0x78, 0x12, + 0x4C, 0x92, 0x49, 0x26, 0xD9, 0x20, 0x1E, 0x1E, 0x06, 0x06, 0x06, 0x0C, + 0x0C, 0x0C, 0x0C, 0x18, 0x18, 0x18, 0x18, 0x38, 0x30, 0xF0, 0xF0, 0x06, + 0x0E, 0x0E, 0x1B, 0x33, 0x33, 0x63, 0x63, 0xFF, 0xE0, 0xCC, 0x1F, 0x8F, + 0xF3, 0x1C, 0x06, 0x1F, 0x9F, 0xEE, 0x3B, 0x9C, 0xFF, 0x1D, 0xC0, 0x18, + 0x03, 0x00, 0xE0, 0x1D, 0xC3, 0xFC, 0x71, 0xDC, 0x3B, 0x87, 0x70, 0xEE, + 0x39, 0xCF, 0x7F, 0xCF, 0xE0, 0x0F, 0x0F, 0xF7, 0x1D, 0xC0, 0xE0, 0x38, + 0x0E, 0x03, 0x8E, 0x7F, 0x0F, 0x80, 0x00, 0x60, 0x06, 0x00, 0x61, 0xEE, + 0x3F, 0xE7, 0x9C, 0x71, 0xCE, 0x1C, 0xE1, 0xCE, 0x1C, 0xE3, 0x87, 0xF8, + 0x7F, 0x80, 0x1F, 0x0F, 0xE7, 0x1D, 0xC7, 0xFF, 0xFF, 0xFE, 0x03, 0x8E, + 0x7F, 0x0F, 0x80, 0x1C, 0xF3, 0x3F, 0xFD, 0xC7, 0x18, 0x63, 0x8E, 0x30, + 0xC0, 0x0F, 0x71, 0xFE, 0x3C, 0xE3, 0x8E, 0x70, 0xE7, 0x0E, 0x70, 0xC7, + 0x1C, 0x3F, 0xC3, 0xFC, 0x01, 0xCE, 0x38, 0x7F, 0x03, 0xE0, 0x18, 0x03, + 0x00, 0xE0, 0x1D, 0xE3, 0xFE, 0x71, 0xCC, 0x3B, 0x86, 0x70, 0xCC, 0x39, + 0x87, 0x30, 0xEE, 0x18, 0x39, 0xC0, 0x63, 0x39, 0xCE, 0x63, 0x39, 0xCE, + 0x00, 0x06, 0x06, 0x00, 0x0E, 0x0E, 0x0C, 0x0C, 0x1C, 0x1C, 0x1C, 0x18, + 0x18, 0x38, 0x38, 0x30, 0x70, 0xE0, 0x18, 0x03, 0x00, 0xE0, 0x1C, 0xE3, + 0x38, 0x6E, 0x1F, 0x83, 0xF0, 0x7E, 0x0E, 0xE1, 0x9C, 0x73, 0x8E, 0x38, + 0x39, 0xCE, 0x63, 0x39, 0xCE, 0x63, 0x39, 0xCE, 0x00, 0x3B, 0x9E, 0x3F, + 0xFF, 0x39, 0xC7, 0x71, 0xC6, 0x71, 0x86, 0x71, 0x8E, 0x63, 0x8E, 0x63, + 0x8C, 0xE3, 0x8C, 0xE3, 0x1C, 0x3B, 0xC7, 0xFC, 0xE3, 0xB8, 0x77, 0x0C, + 0xE1, 0x98, 0x73, 0x0E, 0xE1, 0xDC, 0x30, 0x0F, 0x87, 0xF9, 0xE7, 0xB8, + 0x7E, 0x0F, 0xC1, 0xF8, 0x77, 0x9E, 0x7F, 0x87, 0xC0, 0x1D, 0xE1, 0xFE, + 0x1C, 0x73, 0x87, 0x38, 0x73, 0x87, 0x38, 0xE3, 0x8E, 0x7F, 0xC7, 0xF8, + 0x60, 0x06, 0x00, 0x60, 0x0E, 0x00, 0x1E, 0xE7, 0xFD, 0xE7, 0x38, 0xEE, + 0x1D, 0xC3, 0xB8, 0x77, 0x1C, 0x7F, 0x8F, 0xF0, 0x0E, 0x01, 0x80, 0x30, + 0x06, 0x00, 0x3B, 0x36, 0x38, 0x70, 0x70, 0x70, 0x60, 0x60, 0xE0, 0xE0, + 0x3E, 0x3F, 0xF8, 0xFC, 0x0F, 0xC3, 0xF8, 0x3D, 0x8E, 0xFE, 0x3E, 0x00, + 0x38, 0xCF, 0xFE, 0x71, 0x86, 0x38, 0xE3, 0x8F, 0x3C, 0x31, 0xDC, 0x77, + 0x19, 0x86, 0x63, 0xB8, 0xEE, 0x33, 0x9C, 0xFF, 0x1F, 0xC0, 0xE1, 0x98, + 0xE6, 0x31, 0x9C, 0x66, 0x1B, 0x86, 0xC1, 0xF0, 0x78, 0x0E, 0x00, 0xE7, + 0x1B, 0x9C, 0xEE, 0x73, 0x3B, 0xDC, 0xEB, 0x63, 0xAD, 0x8F, 0xBC, 0x1C, + 0xF0, 0x73, 0xC1, 0xCE, 0x00, 0x1C, 0xE1, 0xCC, 0x0D, 0x80, 0xF8, 0x0F, + 0x00, 0xF0, 0x1F, 0x03, 0xB8, 0x33, 0x87, 0x38, 0x70, 0xCE, 0x38, 0xC6, + 0x19, 0xC3, 0x30, 0x66, 0x0F, 0x81, 0xF0, 0x3C, 0x03, 0x80, 0x60, 0x18, + 0x0F, 0x01, 0xC0, 0x00, 0x1F, 0xCF, 0xF0, 0x38, 0x1C, 0x0E, 0x07, 0x03, + 0x81, 0xC0, 0x7F, 0xBF, 0xE0, 0x0E, 0x38, 0x61, 0x83, 0x06, 0x0C, 0x78, + 0xF0, 0xC1, 0x83, 0x0E, 0x1C, 0x38, 0x78, 0x70, 0x18, 0xC4, 0x21, 0x18, + 0xC4, 0x21, 0x18, 0xC4, 0x23, 0x18, 0x80, 0x1C, 0x3C, 0x38, 0x70, 0xE1, + 0x83, 0x06, 0x1E, 0x5C, 0x60, 0xC1, 0x83, 0x0C, 0x38, 0xE0, 0x71, 0x8E}; + +const GFXglyph FreeSansBoldOblique9pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 5, 0, 1}, // 0x20 ' ' + {0, 5, 13, 6, 2, -12}, // 0x21 '!' + {9, 7, 5, 9, 3, -12}, // 0x22 '"' + {14, 11, 12, 10, 1, -11}, // 0x23 '#' + {31, 11, 16, 10, 1, -13}, // 0x24 '$' + {53, 14, 13, 16, 2, -12}, // 0x25 '%' + {76, 12, 13, 13, 2, -12}, // 0x26 '&' + {96, 3, 5, 4, 3, -12}, // 0x27 ''' + {98, 8, 17, 6, 2, -12}, // 0x28 '(' + {115, 8, 17, 6, -2, -13}, // 0x29 ')' + {132, 6, 6, 7, 3, -12}, // 0x2A '*' + {137, 9, 8, 11, 2, -7}, // 0x2B '+' + {146, 4, 6, 5, 0, -2}, // 0x2C ',' + {149, 5, 2, 6, 1, -5}, // 0x2D '-' + {151, 3, 2, 5, 1, -1}, // 0x2E '.' + {152, 8, 13, 5, 0, -12}, // 0x2F '/' + {165, 10, 13, 10, 1, -12}, // 0x30 '0' + {182, 7, 13, 10, 3, -12}, // 0x31 '1' + {194, 11, 13, 10, 1, -12}, // 0x32 '2' + {212, 11, 13, 10, 1, -12}, // 0x33 '3' + {230, 10, 12, 10, 1, -11}, // 0x34 '4' + {245, 11, 13, 10, 1, -12}, // 0x35 '5' + {263, 10, 13, 10, 2, -12}, // 0x36 '6' + {280, 10, 13, 10, 2, -12}, // 0x37 '7' + {297, 11, 13, 10, 1, -12}, // 0x38 '8' + {315, 11, 13, 10, 1, -12}, // 0x39 '9' + {333, 4, 9, 6, 2, -8}, // 0x3A ':' + {338, 5, 12, 6, 1, -8}, // 0x3B ';' + {346, 10, 9, 11, 1, -8}, // 0x3C '<' + {358, 10, 6, 11, 1, -6}, // 0x3D '=' + {366, 10, 9, 11, 1, -7}, // 0x3E '>' + {378, 10, 13, 11, 3, -12}, // 0x3F '?' + {395, 18, 16, 18, 1, -13}, // 0x40 '@' + {431, 13, 13, 13, 0, -12}, // 0x41 'A' + {453, 13, 13, 13, 1, -12}, // 0x42 'B' + {475, 13, 13, 13, 2, -12}, // 0x43 'C' + {497, 13, 13, 13, 1, -12}, // 0x44 'D' + {519, 13, 13, 12, 1, -12}, // 0x45 'E' + {541, 12, 13, 11, 1, -12}, // 0x46 'F' + {561, 12, 13, 14, 2, -12}, // 0x47 'G' + {581, 14, 13, 13, 1, -12}, // 0x48 'H' + {604, 5, 13, 5, 1, -12}, // 0x49 'I' + {613, 11, 13, 10, 1, -12}, // 0x4A 'J' + {631, 14, 13, 13, 1, -12}, // 0x4B 'K' + {654, 10, 13, 11, 1, -12}, // 0x4C 'L' + {671, 16, 13, 15, 1, -12}, // 0x4D 'M' + {697, 14, 13, 13, 1, -12}, // 0x4E 'N' + {720, 13, 13, 14, 2, -12}, // 0x4F 'O' + {742, 13, 13, 12, 1, -12}, // 0x50 'P' + {764, 13, 14, 14, 2, -12}, // 0x51 'Q' + {787, 13, 13, 13, 1, -12}, // 0x52 'R' + {809, 13, 13, 12, 1, -12}, // 0x53 'S' + {831, 11, 13, 11, 3, -12}, // 0x54 'T' + {849, 13, 13, 13, 2, -12}, // 0x55 'U' + {871, 11, 13, 12, 3, -12}, // 0x56 'V' + {889, 17, 13, 17, 3, -12}, // 0x57 'W' + {917, 14, 13, 12, 0, -12}, // 0x58 'X' + {940, 11, 13, 12, 3, -12}, // 0x59 'Y' + {958, 12, 13, 11, 1, -12}, // 0x5A 'Z' + {978, 8, 17, 6, 0, -12}, // 0x5B '[' + {995, 3, 17, 5, 2, -16}, // 0x5C '\' + {1002, 8, 17, 6, 0, -13}, // 0x5D ']' + {1019, 8, 8, 11, 2, -12}, // 0x5E '^' + {1027, 11, 1, 10, -1, 4}, // 0x5F '_' + {1029, 3, 2, 6, 3, -12}, // 0x60 '`' + {1030, 10, 10, 10, 1, -9}, // 0x61 'a' + {1043, 11, 13, 11, 1, -12}, // 0x62 'b' + {1061, 10, 10, 10, 1, -9}, // 0x63 'c' + {1074, 12, 13, 11, 1, -12}, // 0x64 'd' + {1094, 10, 10, 10, 1, -9}, // 0x65 'e' + {1107, 6, 13, 6, 2, -12}, // 0x66 'f' + {1117, 12, 14, 11, 0, -9}, // 0x67 'g' + {1138, 11, 13, 11, 1, -12}, // 0x68 'h' + {1156, 5, 13, 5, 1, -12}, // 0x69 'i' + {1165, 8, 17, 5, -1, -12}, // 0x6A 'j' + {1182, 11, 13, 10, 1, -12}, // 0x6B 'k' + {1200, 5, 13, 5, 1, -12}, // 0x6C 'l' + {1209, 16, 10, 16, 1, -9}, // 0x6D 'm' + {1229, 11, 10, 11, 1, -9}, // 0x6E 'n' + {1243, 11, 10, 11, 1, -9}, // 0x6F 'o' + {1257, 12, 14, 11, 0, -9}, // 0x70 'p' + {1278, 11, 14, 11, 1, -9}, // 0x71 'q' + {1298, 8, 10, 7, 1, -9}, // 0x72 'r' + {1308, 9, 10, 10, 2, -9}, // 0x73 's' + {1320, 6, 12, 6, 2, -11}, // 0x74 't' + {1329, 10, 10, 11, 2, -9}, // 0x75 'u' + {1342, 10, 10, 10, 2, -9}, // 0x76 'v' + {1355, 14, 10, 14, 2, -9}, // 0x77 'w' + {1373, 12, 10, 10, 0, -9}, // 0x78 'x' + {1388, 11, 14, 10, 1, -9}, // 0x79 'y' + {1408, 10, 10, 9, 0, -9}, // 0x7A 'z' + {1421, 7, 17, 7, 2, -12}, // 0x7B '{' + {1436, 5, 17, 5, 1, -12}, // 0x7C '|' + {1447, 7, 17, 7, 0, -13}, // 0x7D '}' + {1462, 8, 2, 11, 2, -4}}; // 0x7E '~' + +const GFXfont FreeSansBoldOblique9pt7b PROGMEM = { + (uint8_t *)FreeSansBoldOblique9pt7bBitmaps, + (GFXglyph *)FreeSansBoldOblique9pt7bGlyphs, 0x20, 0x7E, 22}; + +// Approx. 2136 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansOblique12pt7b.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansOblique12pt7b.h new file mode 100644 index 0000000..ce55f4d --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansOblique12pt7b.h @@ -0,0 +1,304 @@ +#pragma once +#include + +const uint8_t FreeSansOblique12pt7bBitmaps[] PROGMEM = { + 0x0C, 0x61, 0x86, 0x18, 0x63, 0x0C, 0x30, 0xC2, 0x18, 0x61, 0x00, 0x00, + 0xC3, 0x00, 0xCF, 0x3C, 0xE2, 0x8A, 0x20, 0x01, 0x8C, 0x03, 0x18, 0x06, + 0x60, 0x18, 0xC0, 0x31, 0x83, 0xFF, 0x87, 0xFF, 0x03, 0x18, 0x0C, 0x60, + 0x18, 0xC0, 0x23, 0x03, 0xFF, 0x8F, 0xFF, 0x02, 0x30, 0x0C, 0x60, 0x18, + 0x80, 0x63, 0x00, 0xC6, 0x00, 0x00, 0x80, 0x3F, 0x03, 0xFC, 0x32, 0x73, + 0x91, 0x99, 0x8C, 0xCC, 0x06, 0x60, 0x3E, 0x00, 0x7E, 0x01, 0xFC, 0x0C, + 0xEC, 0x43, 0x62, 0x1B, 0x11, 0x9D, 0x9C, 0x7F, 0xC1, 0xF8, 0x02, 0x00, + 0x10, 0x01, 0x80, 0x00, 0x00, 0x01, 0x83, 0xC0, 0x60, 0xFC, 0x18, 0x30, + 0xC2, 0x0C, 0x18, 0xC1, 0x83, 0x30, 0x38, 0xCC, 0x03, 0xF1, 0x00, 0x3C, + 0x40, 0x00, 0x18, 0xF0, 0x06, 0x3F, 0x01, 0x8C, 0x30, 0x23, 0x06, 0x0C, + 0x60, 0xC3, 0x0E, 0x30, 0xC0, 0xFC, 0x10, 0x0F, 0x00, 0x01, 0xE0, 0x3F, + 0x81, 0x8C, 0x18, 0x60, 0xC3, 0x06, 0x30, 0x1F, 0x00, 0xE0, 0x1F, 0x01, + 0xDC, 0xD8, 0x6D, 0x81, 0xEC, 0x0E, 0x60, 0x73, 0x87, 0xCF, 0xE6, 0x3E, + 0x38, 0xFE, 0xA0, 0x03, 0x06, 0x04, 0x0C, 0x18, 0x18, 0x30, 0x30, 0x60, + 0x60, 0x60, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x40, 0x60, + 0x60, 0x20, 0x04, 0x06, 0x06, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x06, 0x06, 0x06, 0x0C, 0x0C, 0x18, 0x18, 0x30, 0x20, 0x60, + 0xC0, 0x0C, 0x0C, 0x49, 0x7F, 0x3C, 0x3C, 0x6C, 0x00, 0x03, 0x00, 0x30, + 0x03, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x06, 0x00, 0x60, 0x06, 0x00, 0xC0, + 0x0C, 0x00, 0x77, 0x22, 0x6C, 0xFF, 0xF0, 0xFC, 0x00, 0x40, 0x30, 0x08, + 0x06, 0x01, 0x00, 0xC0, 0x20, 0x18, 0x04, 0x02, 0x00, 0x80, 0x40, 0x10, + 0x08, 0x02, 0x01, 0x00, 0xC0, 0x20, 0x00, 0x07, 0xC0, 0xFE, 0x1C, 0x73, + 0x83, 0x30, 0x36, 0x03, 0x60, 0x36, 0x03, 0xC0, 0x7C, 0x07, 0xC0, 0x6C, + 0x06, 0xC0, 0xEC, 0x0C, 0xE3, 0x87, 0xF0, 0x3E, 0x00, 0x02, 0x0C, 0x77, + 0xEF, 0xC1, 0x83, 0x0C, 0x18, 0x30, 0x61, 0xC3, 0x06, 0x0C, 0x18, 0x60, + 0x03, 0xF0, 0x1F, 0xE0, 0xE1, 0xC7, 0x03, 0x18, 0x0C, 0x00, 0x30, 0x01, + 0x80, 0x0E, 0x00, 0x70, 0x07, 0x80, 0x78, 0x07, 0x80, 0x38, 0x01, 0xC0, + 0x06, 0x00, 0x1F, 0xFC, 0xFF, 0xE0, 0x07, 0xC0, 0xFE, 0x1C, 0x73, 0x03, + 0x30, 0x30, 0x03, 0x00, 0xE0, 0x7C, 0x07, 0xC0, 0x0E, 0x00, 0x60, 0x06, + 0xC0, 0x6C, 0x0C, 0xE1, 0xC7, 0xF8, 0x3E, 0x00, 0x00, 0x60, 0x06, 0x00, + 0xE0, 0x1E, 0x03, 0xE0, 0x6C, 0x0C, 0xC1, 0x8C, 0x30, 0xC6, 0x1C, 0xC1, + 0x8F, 0xFF, 0xFF, 0xE0, 0x18, 0x03, 0x00, 0x30, 0x03, 0x00, 0x0F, 0xF8, + 0x7F, 0xC6, 0x00, 0x30, 0x01, 0x00, 0x1B, 0xC0, 0xFF, 0x06, 0x1C, 0x60, + 0x60, 0x03, 0x00, 0x18, 0x00, 0xC0, 0x0C, 0x60, 0x63, 0x86, 0x0F, 0xE0, + 0x3E, 0x00, 0x03, 0xC0, 0xFE, 0x1C, 0x73, 0x83, 0x30, 0x06, 0x00, 0x67, + 0x87, 0xFC, 0xF0, 0xEE, 0x06, 0xC0, 0x6C, 0x06, 0xC0, 0x4C, 0x0C, 0xE1, + 0x87, 0xF8, 0x3E, 0x00, 0x3F, 0xFB, 0xFF, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, + 0x00, 0xC0, 0x06, 0x00, 0x60, 0x06, 0x00, 0x70, 0x03, 0x00, 0x30, 0x03, + 0x80, 0x18, 0x01, 0xC0, 0x0C, 0x00, 0xE0, 0x00, 0x07, 0xC0, 0xFE, 0x1C, + 0x73, 0x03, 0x30, 0x33, 0x03, 0x38, 0x61, 0xFC, 0x3F, 0xC7, 0x0E, 0x60, + 0x6C, 0x06, 0xC0, 0x6C, 0x0C, 0xE1, 0xC7, 0xF8, 0x3E, 0x00, 0x07, 0xC1, + 0xFE, 0x38, 0x73, 0x03, 0x60, 0x36, 0x03, 0x60, 0x36, 0x07, 0x70, 0xF3, + 0xFE, 0x1E, 0x60, 0x0E, 0x00, 0xCC, 0x1C, 0xE3, 0x87, 0xF0, 0x3C, 0x00, + 0x39, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x39, 0xC0, 0x1C, 0x70, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x1C, 0x20, 0x86, 0x30, 0x00, 0x00, 0x01, 0xC0, + 0x3C, 0x0F, 0x81, 0xE0, 0x7C, 0x03, 0x80, 0x0F, 0x00, 0x1F, 0x00, 0x3E, + 0x00, 0x38, 0x00, 0x40, 0x7F, 0xFB, 0xFF, 0x80, 0x00, 0x00, 0x0F, 0xFF, + 0x7F, 0xF0, 0x20, 0x01, 0xC0, 0x07, 0xC0, 0x0F, 0x80, 0x0F, 0x00, 0x1C, + 0x03, 0xE0, 0x78, 0x1F, 0x03, 0xC0, 0x38, 0x00, 0x00, 0x00, 0x0F, 0x87, + 0xF9, 0xC3, 0xB0, 0x3C, 0x06, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x01, 0xC0, + 0x30, 0x0C, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, + 0x3F, 0x80, 0x01, 0xFF, 0xE0, 0x0F, 0x01, 0xE0, 0x38, 0x00, 0xE0, 0xE0, + 0x00, 0xC3, 0x87, 0x81, 0xCE, 0x1F, 0xB1, 0x98, 0x71, 0xC3, 0x61, 0x83, + 0x86, 0xC6, 0x06, 0x0F, 0x0C, 0x0C, 0x3E, 0x30, 0x30, 0x6C, 0x60, 0x61, + 0xD8, 0xC1, 0x87, 0x31, 0xC7, 0x1C, 0x61, 0xF7, 0xF0, 0x63, 0xCF, 0x80, + 0xE0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xFF, 0xE0, 0x00, 0x7F, 0x00, 0x00, + 0x00, 0x38, 0x00, 0x78, 0x00, 0x7C, 0x00, 0xFC, 0x00, 0xDC, 0x01, 0xCC, + 0x01, 0x8C, 0x03, 0x8C, 0x03, 0x0C, 0x06, 0x0C, 0x0E, 0x0E, 0x0F, 0xFE, + 0x1F, 0xFE, 0x18, 0x06, 0x38, 0x06, 0x30, 0x06, 0x70, 0x06, 0x60, 0x07, + 0x0F, 0xF8, 0x1F, 0xF8, 0x60, 0x38, 0xC0, 0x31, 0x80, 0x63, 0x00, 0xCE, + 0x03, 0x18, 0x0C, 0x3F, 0xF0, 0x7F, 0xF0, 0xC0, 0x73, 0x00, 0x66, 0x00, + 0xCC, 0x01, 0x98, 0x06, 0x70, 0x1C, 0xFF, 0xF1, 0xFF, 0x80, 0x01, 0xF8, + 0x07, 0xFE, 0x0E, 0x0E, 0x1C, 0x03, 0x38, 0x03, 0x30, 0x00, 0x60, 0x00, + 0x60, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x06, + 0xC0, 0x0C, 0xE0, 0x1C, 0x70, 0x78, 0x3F, 0xF0, 0x1F, 0x80, 0x0F, 0xF8, + 0x1F, 0xFC, 0x18, 0x0E, 0x18, 0x07, 0x18, 0x03, 0x18, 0x03, 0x38, 0x03, + 0x30, 0x03, 0x30, 0x03, 0x30, 0x03, 0x70, 0x06, 0x70, 0x06, 0x60, 0x0C, + 0x60, 0x0C, 0x60, 0x18, 0xE0, 0x78, 0xFF, 0xE0, 0xFF, 0x80, 0x0F, 0xFF, + 0x1F, 0xFE, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x38, 0x00, + 0x30, 0x00, 0x3F, 0xFC, 0x3F, 0xF8, 0x70, 0x00, 0x70, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x60, 0x00, 0xE0, 0x00, 0xFF, 0xF8, 0xFF, 0xF8, 0x0F, 0xFE, + 0x3F, 0xFC, 0x60, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, 0x0E, 0x00, 0x18, + 0x00, 0x3F, 0xF0, 0x7F, 0xE1, 0xC0, 0x03, 0x80, 0x06, 0x00, 0x0C, 0x00, + 0x18, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x80, 0x00, 0x01, 0xF8, 0x07, 0xFE, + 0x0E, 0x0F, 0x18, 0x03, 0x30, 0x03, 0x70, 0x00, 0x60, 0x00, 0x60, 0x00, + 0xC0, 0x7F, 0xC0, 0x7E, 0xC0, 0x02, 0xC0, 0x06, 0xC0, 0x06, 0xE0, 0x0E, + 0x60, 0x1E, 0x78, 0x3C, 0x3F, 0xE4, 0x0F, 0x84, 0x0C, 0x01, 0x8E, 0x00, + 0xC6, 0x00, 0xE3, 0x00, 0x61, 0x80, 0x30, 0xC0, 0x18, 0xE0, 0x0C, 0x60, + 0x0E, 0x3F, 0xFE, 0x1F, 0xFF, 0x1C, 0x01, 0x8E, 0x01, 0xC6, 0x00, 0xE3, + 0x00, 0x61, 0x80, 0x31, 0xC0, 0x18, 0xC0, 0x1C, 0x60, 0x0C, 0x00, 0x0C, + 0x71, 0x86, 0x18, 0x63, 0x8C, 0x30, 0xC3, 0x1C, 0x61, 0x86, 0x18, 0xE3, + 0x00, 0x00, 0x18, 0x01, 0x80, 0x0C, 0x00, 0x60, 0x03, 0x00, 0x38, 0x01, + 0x80, 0x0C, 0x00, 0x60, 0x03, 0x00, 0x38, 0x01, 0x8C, 0x0C, 0x60, 0x63, + 0x07, 0x1C, 0x70, 0x7F, 0x01, 0xF0, 0x00, 0x0C, 0x03, 0x87, 0x01, 0xC1, + 0x80, 0xE0, 0x60, 0x60, 0x18, 0x70, 0x06, 0x38, 0x03, 0x9C, 0x00, 0xCE, + 0x00, 0x37, 0x80, 0x0F, 0x70, 0x07, 0x8C, 0x01, 0xC3, 0x80, 0x60, 0x60, + 0x18, 0x1C, 0x06, 0x03, 0x03, 0x80, 0xE0, 0xC0, 0x18, 0x30, 0x07, 0x00, + 0x0C, 0x03, 0x80, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x0E, 0x01, 0x80, 0x30, + 0x06, 0x01, 0xC0, 0x38, 0x06, 0x00, 0xC0, 0x18, 0x07, 0x00, 0xFF, 0xFF, + 0xFC, 0x0E, 0x00, 0x71, 0xE0, 0x0F, 0x1E, 0x00, 0xF1, 0xE0, 0x1E, 0x1E, + 0x01, 0xE1, 0xE0, 0x36, 0x3B, 0x03, 0x63, 0x30, 0x6E, 0x33, 0x0E, 0xC3, + 0x30, 0xCC, 0x33, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x31, 0xC6, 0x33, 0x18, + 0x61, 0xE1, 0x8E, 0x1E, 0x18, 0xC1, 0xC1, 0x8C, 0x1C, 0x38, 0x0C, 0x01, + 0x8F, 0x00, 0xC7, 0x80, 0x63, 0xE0, 0x71, 0xF0, 0x30, 0xD8, 0x18, 0xEE, + 0x0C, 0x63, 0x06, 0x31, 0xC7, 0x18, 0xE3, 0x0C, 0x31, 0x8C, 0x1C, 0xC6, + 0x06, 0x63, 0x03, 0xF1, 0x80, 0xF1, 0xC0, 0x78, 0xC0, 0x3C, 0x60, 0x0E, + 0x00, 0x01, 0xF8, 0x03, 0xFF, 0x03, 0x83, 0xC3, 0x80, 0x63, 0x00, 0x3B, + 0x80, 0x0D, 0x80, 0x06, 0xC0, 0x03, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, + 0xF8, 0x00, 0x6C, 0x00, 0x36, 0x00, 0x31, 0x80, 0x30, 0xF0, 0x78, 0x3F, + 0xF0, 0x07, 0xE0, 0x00, 0x0F, 0xF8, 0x3F, 0xF8, 0x60, 0x38, 0xC0, 0x31, + 0x80, 0x63, 0x00, 0xCE, 0x03, 0x18, 0x0E, 0x3F, 0xF8, 0x7F, 0xE1, 0xC0, + 0x03, 0x80, 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x70, 0x00, 0xC0, 0x01, + 0x80, 0x00, 0x00, 0xFC, 0x01, 0xFF, 0xC0, 0xF0, 0x78, 0x70, 0x06, 0x38, + 0x01, 0xCC, 0x00, 0x36, 0x00, 0x0D, 0x80, 0x03, 0xC0, 0x00, 0xF0, 0x00, + 0x3C, 0x00, 0x1B, 0x00, 0x06, 0xC0, 0x03, 0x38, 0x1D, 0xC6, 0x03, 0xE1, + 0xE0, 0xF0, 0x3F, 0xFE, 0x03, 0xF1, 0xC0, 0x00, 0x20, 0x0F, 0xFC, 0x1F, + 0xFE, 0x18, 0x07, 0x18, 0x03, 0x18, 0x03, 0x18, 0x03, 0x38, 0x06, 0x30, + 0x0C, 0x3F, 0xF8, 0x3F, 0xF8, 0x70, 0x1C, 0x70, 0x0C, 0x60, 0x0C, 0x60, + 0x0C, 0x60, 0x18, 0xE0, 0x18, 0xC0, 0x18, 0xC0, 0x1C, 0x03, 0xF8, 0x1F, + 0xF8, 0x70, 0x38, 0xC0, 0x33, 0x00, 0x66, 0x00, 0x0C, 0x00, 0x1E, 0x00, + 0x1F, 0xC0, 0x0F, 0xF0, 0x01, 0xF0, 0x00, 0xEC, 0x00, 0xD8, 0x01, 0xB0, + 0x06, 0x70, 0x38, 0x7F, 0xE0, 0x3F, 0x00, 0xFF, 0xFF, 0xFF, 0xF0, 0x70, + 0x01, 0xC0, 0x06, 0x00, 0x18, 0x00, 0x60, 0x03, 0x80, 0x0C, 0x00, 0x30, + 0x00, 0xC0, 0x03, 0x00, 0x1C, 0x00, 0x60, 0x01, 0x80, 0x06, 0x00, 0x18, + 0x00, 0xE0, 0x00, 0x18, 0x03, 0x38, 0x03, 0x30, 0x07, 0x30, 0x06, 0x30, + 0x06, 0x70, 0x06, 0x70, 0x0E, 0x60, 0x0C, 0x60, 0x0C, 0x60, 0x0C, 0xE0, + 0x0C, 0xC0, 0x1C, 0xC0, 0x18, 0xC0, 0x18, 0xC0, 0x38, 0xE0, 0x70, 0x7F, + 0xE0, 0x1F, 0x80, 0xC0, 0x0F, 0xC0, 0x1B, 0x80, 0x73, 0x00, 0xC6, 0x03, + 0x0C, 0x06, 0x18, 0x18, 0x30, 0x70, 0x60, 0xC0, 0xE3, 0x81, 0xC6, 0x01, + 0x9C, 0x03, 0x30, 0x06, 0xE0, 0x0D, 0x80, 0x1E, 0x00, 0x3C, 0x00, 0x70, + 0x00, 0xC0, 0x70, 0x1F, 0x01, 0xC0, 0x6C, 0x0F, 0x03, 0xB0, 0x3C, 0x0C, + 0xC1, 0xF0, 0x73, 0x06, 0xC1, 0x8C, 0x3B, 0x06, 0x30, 0xC6, 0x30, 0xC7, + 0x18, 0xC3, 0x18, 0x67, 0x0C, 0xE1, 0x98, 0x33, 0x06, 0xE0, 0xDC, 0x1B, + 0x03, 0x60, 0x6C, 0x07, 0x81, 0xE0, 0x1C, 0x07, 0x80, 0x70, 0x1C, 0x01, + 0x80, 0x70, 0x00, 0x07, 0x00, 0xE0, 0xE0, 0x38, 0x0C, 0x0E, 0x01, 0xC3, + 0x80, 0x18, 0xE0, 0x03, 0x98, 0x00, 0x36, 0x00, 0x07, 0x80, 0x00, 0xF0, + 0x00, 0x1E, 0x00, 0x07, 0xC0, 0x01, 0xDC, 0x00, 0x73, 0x80, 0x1C, 0x30, + 0x03, 0x07, 0x00, 0xC0, 0x60, 0x38, 0x0E, 0x0E, 0x00, 0xC0, 0xE0, 0x06, + 0x60, 0x0C, 0x70, 0x1C, 0x70, 0x38, 0x30, 0x70, 0x38, 0x60, 0x18, 0xC0, + 0x1D, 0xC0, 0x1F, 0x80, 0x0F, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, + 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x1C, 0x00, 0x18, 0x00, 0x0F, 0xFF, + 0x87, 0xFF, 0x80, 0x01, 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x01, + 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x01, + 0xC0, 0x01, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xFF, 0xF8, 0x7F, 0xFC, + 0x00, 0x07, 0xC1, 0xE0, 0x60, 0x18, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x1C, + 0x06, 0x01, 0x80, 0x60, 0x18, 0x0E, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x06, + 0x01, 0x80, 0x60, 0x1E, 0x07, 0x80, 0x93, 0x6C, 0x92, 0x49, 0x24, 0xDB, + 0x24, 0x07, 0x81, 0xE0, 0x18, 0x06, 0x01, 0x80, 0xC0, 0x30, 0x0C, 0x03, + 0x01, 0xC0, 0x60, 0x18, 0x06, 0x01, 0x80, 0xE0, 0x30, 0x0C, 0x03, 0x00, + 0xC0, 0x60, 0x18, 0x1E, 0x0F, 0x80, 0x03, 0x01, 0xC0, 0xD8, 0x36, 0x19, + 0x84, 0x63, 0x19, 0x83, 0x60, 0xC0, 0xFF, 0xFC, 0xE6, 0x23, 0x07, 0xC3, + 0xFC, 0xE3, 0x98, 0x30, 0x06, 0x01, 0x87, 0xF3, 0xC6, 0xC0, 0xD8, 0x3B, + 0x0E, 0x7F, 0x77, 0xCC, 0x0C, 0x00, 0x60, 0x03, 0x00, 0x30, 0x01, 0x80, + 0x0C, 0xF0, 0x7F, 0xC3, 0x87, 0x38, 0x19, 0x80, 0xCC, 0x06, 0x60, 0x32, + 0x03, 0xB0, 0x19, 0xC1, 0xCE, 0x1C, 0x7F, 0xC3, 0x7C, 0x00, 0x0F, 0x83, + 0xF8, 0xE3, 0xB8, 0x36, 0x07, 0xC0, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x1B, + 0x86, 0x3F, 0xC3, 0xE0, 0x00, 0x0C, 0x00, 0x60, 0x01, 0x80, 0x06, 0x00, + 0x18, 0x3E, 0x61, 0xFF, 0x0E, 0x3C, 0x70, 0x71, 0x80, 0xCE, 0x07, 0x30, + 0x18, 0xC0, 0x63, 0x01, 0x8C, 0x0E, 0x38, 0x78, 0x7F, 0xC0, 0xFB, 0x00, + 0x07, 0xC1, 0xFE, 0x38, 0x77, 0x03, 0x60, 0x37, 0xFF, 0xFF, 0xFC, 0x00, + 0xC0, 0x0C, 0x06, 0xE1, 0xC7, 0xF8, 0x3E, 0x00, 0x07, 0x0F, 0x1C, 0x18, + 0x18, 0x7E, 0x7E, 0x30, 0x30, 0x30, 0x30, 0x60, 0x60, 0x60, 0x60, 0x60, + 0xC0, 0xC0, 0x03, 0xCC, 0x3F, 0xA1, 0xC7, 0x8E, 0x0E, 0x30, 0x38, 0xC0, + 0xC6, 0x03, 0x18, 0x0C, 0x60, 0x71, 0x81, 0xC7, 0x0E, 0x0F, 0xF8, 0x1E, + 0x60, 0x03, 0x80, 0x0C, 0x30, 0x70, 0x7F, 0x80, 0xF8, 0x00, 0x0C, 0x00, + 0xC0, 0x0C, 0x01, 0x80, 0x18, 0x01, 0x9E, 0x1F, 0xF1, 0xC7, 0x38, 0x33, + 0x03, 0x30, 0x33, 0x07, 0x30, 0x66, 0x06, 0x60, 0x66, 0x06, 0x60, 0xC6, + 0x0C, 0x18, 0xC0, 0x00, 0x18, 0xC6, 0x33, 0x18, 0xC6, 0x31, 0x98, 0xC6, + 0x00, 0x01, 0x80, 0xC0, 0x00, 0x00, 0x00, 0x18, 0x1C, 0x0C, 0x06, 0x03, + 0x01, 0x81, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x18, 0x0C, 0x06, 0x03, 0x03, + 0x87, 0x83, 0x80, 0x0C, 0x00, 0x60, 0x03, 0x00, 0x30, 0x01, 0x80, 0x0C, + 0x18, 0x61, 0x83, 0x38, 0x33, 0x81, 0xB8, 0x0F, 0xC0, 0x77, 0x03, 0x18, + 0x30, 0xC1, 0x87, 0x0C, 0x18, 0x60, 0xE3, 0x03, 0x00, 0x18, 0xC6, 0x63, + 0x18, 0xC6, 0x33, 0x18, 0xC6, 0x31, 0x98, 0xC6, 0x00, 0x1B, 0xE3, 0xC3, + 0xFD, 0xFC, 0xF1, 0xE1, 0x9C, 0x18, 0x33, 0x03, 0x06, 0x60, 0xC0, 0xCC, + 0x18, 0x3B, 0x83, 0x06, 0x60, 0x60, 0xCC, 0x0C, 0x19, 0x83, 0x03, 0x30, + 0x60, 0xE6, 0x0C, 0x18, 0x1B, 0xE1, 0xFF, 0x3C, 0x73, 0x83, 0x30, 0x33, + 0x03, 0x30, 0x77, 0x06, 0x60, 0x66, 0x06, 0x60, 0x66, 0x0C, 0x60, 0xC0, + 0x07, 0xC1, 0xFE, 0x38, 0x77, 0x03, 0x60, 0x3E, 0x03, 0xC0, 0x3C, 0x06, + 0xC0, 0x6C, 0x0E, 0xE1, 0xC7, 0xF8, 0x3E, 0x00, 0x0C, 0xF0, 0x3F, 0xE0, + 0xE1, 0xC7, 0x03, 0x1C, 0x0C, 0x60, 0x31, 0x80, 0xCE, 0x07, 0x38, 0x18, + 0xE0, 0xE3, 0xC7, 0x0F, 0xF8, 0x77, 0xC1, 0x80, 0x06, 0x00, 0x18, 0x00, + 0x60, 0x03, 0x80, 0x00, 0x0F, 0x98, 0xFF, 0xCE, 0x3C, 0xE0, 0xE6, 0x03, + 0x70, 0x1B, 0x01, 0x98, 0x0C, 0xC0, 0x66, 0x07, 0x38, 0x78, 0xFF, 0x83, + 0xCC, 0x00, 0x60, 0x07, 0x00, 0x38, 0x01, 0x80, 0x0C, 0x00, 0x1B, 0x8F, + 0xCF, 0x07, 0x03, 0x01, 0x80, 0xC0, 0xE0, 0x60, 0x30, 0x18, 0x0C, 0x06, + 0x00, 0x0F, 0xC1, 0xFF, 0x30, 0x76, 0x03, 0x60, 0x07, 0x80, 0x3F, 0x80, + 0x7E, 0x00, 0x6C, 0x06, 0xE0, 0xCF, 0xF8, 0x3E, 0x00, 0x18, 0x30, 0x67, + 0xEF, 0xC6, 0x0C, 0x30, 0x60, 0xC1, 0x83, 0x0C, 0x18, 0x3C, 0x38, 0x30, + 0x33, 0x03, 0x30, 0x37, 0x06, 0x60, 0x66, 0x06, 0x60, 0x66, 0x06, 0xC0, + 0xEC, 0x0C, 0xC3, 0xCF, 0xFC, 0x7C, 0xC0, 0xC0, 0x78, 0x1B, 0x03, 0x60, + 0xC6, 0x18, 0xC6, 0x19, 0xC3, 0x30, 0x6C, 0x0D, 0x81, 0xE0, 0x3C, 0x03, + 0x00, 0xC1, 0xC3, 0xE1, 0xE1, 0xB0, 0xF0, 0xD8, 0x78, 0xCC, 0x6C, 0x66, + 0x36, 0x63, 0x33, 0x30, 0x99, 0xB0, 0x58, 0xD8, 0x2C, 0x78, 0x1C, 0x3C, + 0x0E, 0x1C, 0x06, 0x0E, 0x00, 0x0C, 0x1C, 0x30, 0xE0, 0xE3, 0x01, 0x98, + 0x07, 0xC0, 0x0E, 0x00, 0x30, 0x01, 0xE0, 0x0F, 0x80, 0x73, 0x01, 0x8C, + 0x0C, 0x38, 0x60, 0x60, 0x18, 0x0C, 0x60, 0x61, 0x83, 0x86, 0x0C, 0x1C, + 0x60, 0x31, 0x80, 0xCC, 0x03, 0x30, 0x0D, 0x80, 0x36, 0x00, 0xF0, 0x03, + 0x80, 0x06, 0x00, 0x30, 0x00, 0xC0, 0x06, 0x00, 0xF0, 0x03, 0x80, 0x00, + 0x1F, 0xF1, 0xFF, 0x00, 0x70, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, + 0x18, 0x03, 0x00, 0x60, 0x0F, 0xFC, 0xFF, 0xC0, 0x07, 0x0E, 0x18, 0x18, + 0x18, 0x18, 0x30, 0x30, 0x30, 0x30, 0x60, 0xE0, 0xE0, 0x60, 0x60, 0x60, + 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xF0, 0x60, 0x0C, 0x30, 0x82, 0x08, 0x61, + 0x84, 0x10, 0x43, 0x0C, 0x20, 0x86, 0x18, 0x41, 0x04, 0x30, 0xC2, 0x00, + 0x00, 0x06, 0x07, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x0C, 0x06, 0x03, + 0x01, 0xC0, 0xE0, 0x60, 0x60, 0x30, 0x18, 0x0C, 0x0C, 0x06, 0x03, 0x01, + 0x83, 0x83, 0x80, 0x38, 0x0F, 0x82, 0x38, 0x83, 0xE0, 0x38}; + +const GFXglyph FreeSansOblique12pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 7, 0, 1}, // 0x20 ' ' + {0, 6, 18, 7, 3, -17}, // 0x21 '!' + {14, 6, 6, 9, 4, -16}, // 0x22 '"' + {19, 15, 18, 13, 1, -17}, // 0x23 '#' + {53, 13, 21, 13, 2, -17}, // 0x24 '$' + {88, 19, 17, 21, 3, -16}, // 0x25 '%' + {129, 13, 17, 16, 2, -16}, // 0x26 '&' + {157, 2, 6, 5, 4, -16}, // 0x27 ''' + {159, 8, 23, 8, 3, -17}, // 0x28 '(' + {182, 8, 23, 8, 0, -16}, // 0x29 ')' + {205, 8, 8, 9, 4, -17}, // 0x2A '*' + {213, 12, 11, 14, 2, -10}, // 0x2B '+' + {230, 4, 6, 7, 1, -1}, // 0x2C ',' + {233, 6, 2, 8, 2, -7}, // 0x2D '-' + {235, 3, 2, 7, 2, -1}, // 0x2E '.' + {236, 10, 18, 7, 0, -17}, // 0x2F '/' + {259, 12, 17, 13, 2, -16}, // 0x30 '0' + {285, 7, 17, 13, 5, -16}, // 0x31 '1' + {300, 14, 17, 13, 1, -16}, // 0x32 '2' + {330, 12, 17, 13, 2, -16}, // 0x33 '3' + {356, 12, 17, 13, 2, -16}, // 0x34 '4' + {382, 13, 17, 13, 2, -16}, // 0x35 '5' + {410, 12, 17, 13, 2, -16}, // 0x36 '6' + {436, 13, 17, 13, 3, -16}, // 0x37 '7' + {464, 12, 17, 13, 2, -16}, // 0x38 '8' + {490, 12, 17, 13, 2, -16}, // 0x39 '9' + {516, 5, 12, 7, 3, -11}, // 0x3A ':' + {524, 6, 16, 7, 2, -11}, // 0x3B ';' + {536, 13, 12, 14, 2, -11}, // 0x3C '<' + {556, 13, 6, 14, 2, -8}, // 0x3D '=' + {566, 13, 12, 14, 1, -10}, // 0x3E '>' + {586, 11, 18, 13, 4, -17}, // 0x3F '?' + {611, 23, 21, 24, 2, -17}, // 0x40 '@' + {672, 16, 18, 16, 0, -17}, // 0x41 'A' + {708, 15, 18, 16, 2, -17}, // 0x42 'B' + {742, 16, 18, 17, 2, -17}, // 0x43 'C' + {778, 16, 18, 17, 2, -17}, // 0x44 'D' + {814, 16, 18, 16, 2, -17}, // 0x45 'E' + {850, 15, 18, 14, 2, -17}, // 0x46 'F' + {884, 16, 18, 19, 3, -17}, // 0x47 'G' + {920, 17, 18, 17, 2, -17}, // 0x48 'H' + {959, 6, 18, 7, 2, -17}, // 0x49 'I' + {973, 13, 18, 12, 1, -17}, // 0x4A 'J' + {1003, 18, 18, 16, 2, -17}, // 0x4B 'K' + {1044, 11, 18, 13, 2, -17}, // 0x4C 'L' + {1069, 20, 18, 20, 2, -17}, // 0x4D 'M' + {1114, 17, 18, 18, 2, -17}, // 0x4E 'N' + {1153, 17, 18, 18, 2, -17}, // 0x4F 'O' + {1192, 15, 18, 15, 2, -17}, // 0x50 'P' + {1226, 18, 19, 19, 2, -17}, // 0x51 'Q' + {1269, 16, 18, 17, 2, -17}, // 0x52 'R' + {1305, 15, 18, 16, 2, -17}, // 0x53 'S' + {1339, 14, 18, 15, 4, -17}, // 0x54 'T' + {1371, 16, 18, 17, 3, -17}, // 0x55 'U' + {1407, 15, 18, 15, 4, -17}, // 0x56 'V' + {1441, 22, 18, 22, 4, -17}, // 0x57 'W' + {1491, 19, 18, 16, 0, -17}, // 0x58 'X' + {1534, 16, 18, 16, 4, -17}, // 0x59 'Y' + {1570, 17, 18, 15, 1, -17}, // 0x5A 'Z' + {1609, 10, 23, 7, 0, -17}, // 0x5B '[' + {1638, 3, 18, 7, 4, -17}, // 0x5C '\' + {1645, 10, 23, 7, -1, -16}, // 0x5D ']' + {1674, 10, 9, 11, 2, -16}, // 0x5E '^' + {1686, 14, 1, 13, -1, 4}, // 0x5F '_' + {1688, 4, 4, 8, 4, -17}, // 0x60 '`' + {1690, 11, 13, 13, 2, -12}, // 0x61 'a' + {1708, 13, 18, 13, 1, -17}, // 0x62 'b' + {1738, 11, 13, 12, 2, -12}, // 0x63 'c' + {1756, 14, 18, 13, 2, -17}, // 0x64 'd' + {1788, 12, 13, 13, 2, -12}, // 0x65 'e' + {1808, 8, 18, 6, 2, -17}, // 0x66 'f' + {1826, 14, 18, 13, 1, -12}, // 0x67 'g' + {1858, 12, 18, 13, 1, -17}, // 0x68 'h' + {1885, 5, 18, 5, 2, -17}, // 0x69 'i' + {1897, 9, 23, 6, -1, -17}, // 0x6A 'j' + {1923, 13, 18, 12, 1, -17}, // 0x6B 'k' + {1953, 5, 18, 5, 2, -17}, // 0x6C 'l' + {1965, 19, 13, 20, 1, -12}, // 0x6D 'm' + {1996, 12, 13, 13, 1, -12}, // 0x6E 'n' + {2016, 12, 13, 13, 2, -12}, // 0x6F 'o' + {2036, 14, 18, 14, 0, -12}, // 0x70 'p' + {2068, 13, 18, 13, 2, -12}, // 0x71 'q' + {2098, 9, 13, 8, 1, -12}, // 0x72 'r' + {2113, 12, 13, 12, 1, -12}, // 0x73 's' + {2133, 7, 16, 6, 2, -15}, // 0x74 't' + {2147, 12, 13, 13, 2, -12}, // 0x75 'u' + {2167, 11, 13, 12, 3, -12}, // 0x76 'v' + {2185, 17, 13, 17, 3, -12}, // 0x77 'w' + {2213, 14, 13, 12, 0, -12}, // 0x78 'x' + {2236, 14, 18, 11, 0, -12}, // 0x79 'y' + {2268, 12, 13, 12, 1, -12}, // 0x7A 'z' + {2288, 8, 23, 8, 3, -17}, // 0x7B '{' + {2311, 6, 23, 6, 1, -17}, // 0x7C '|' + {2329, 9, 23, 8, -1, -16}, // 0x7D '}' + {2355, 11, 5, 14, 3, -10}}; // 0x7E '~' + +const GFXfont FreeSansOblique12pt7b PROGMEM = { + (uint8_t *)FreeSansOblique12pt7bBitmaps, + (GFXglyph *)FreeSansOblique12pt7bGlyphs, 0x20, 0x7E, 29}; + +// Approx. 3034 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansOblique18pt7b.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansOblique18pt7b.h new file mode 100644 index 0000000..f85b07f --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansOblique18pt7b.h @@ -0,0 +1,520 @@ +#pragma once +#include + +const uint8_t FreeSansOblique18pt7bBitmaps[] PROGMEM = { + 0x03, 0x83, 0x81, 0xC0, 0xE0, 0x70, 0x78, 0x38, 0x1C, 0x0E, 0x07, 0x07, + 0x83, 0x81, 0xC0, 0xE0, 0x60, 0x30, 0x30, 0x18, 0x0C, 0x04, 0x00, 0x00, + 0x01, 0xC0, 0xE0, 0x70, 0x78, 0x00, 0x71, 0xDC, 0x7F, 0x3F, 0x8E, 0xE3, + 0xB8, 0xEC, 0x33, 0x0C, 0xC3, 0x00, 0x00, 0x38, 0x70, 0x01, 0xC3, 0x80, + 0x0C, 0x18, 0x00, 0xE1, 0xC0, 0x06, 0x0C, 0x00, 0x70, 0xE0, 0x03, 0x87, + 0x03, 0xFF, 0xFF, 0x1F, 0xFF, 0xF0, 0xFF, 0xFF, 0x80, 0x60, 0xC0, 0x07, + 0x0E, 0x00, 0x30, 0x60, 0x03, 0x87, 0x00, 0x18, 0x30, 0x1F, 0xFF, 0xF8, + 0xFF, 0xFF, 0xC7, 0xFF, 0xFC, 0x07, 0x0E, 0x00, 0x30, 0x70, 0x03, 0x87, + 0x00, 0x1C, 0x38, 0x00, 0xC1, 0x80, 0x0E, 0x1C, 0x00, 0x60, 0xC0, 0x00, + 0x00, 0x0C, 0x00, 0x07, 0xF8, 0x01, 0xFF, 0xC0, 0x3F, 0xFE, 0x07, 0x99, + 0xF0, 0xF1, 0x87, 0x0E, 0x18, 0x71, 0xC1, 0x87, 0x1C, 0x38, 0x01, 0xC3, + 0x00, 0x1C, 0x30, 0x01, 0xE3, 0x00, 0x0F, 0xB0, 0x00, 0xFF, 0x80, 0x03, + 0xFF, 0x00, 0x0F, 0xF8, 0x00, 0x6F, 0xC0, 0x06, 0x3C, 0x00, 0xC1, 0xCE, + 0x0C, 0x1C, 0xE0, 0xC1, 0xCE, 0x0C, 0x38, 0xF1, 0xC3, 0x8F, 0x98, 0xF0, + 0x7F, 0xFE, 0x03, 0xFF, 0xC0, 0x0F, 0xF0, 0x00, 0x30, 0x00, 0x03, 0x00, + 0x00, 0x30, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x07, 0x03, 0xE0, 0x03, + 0x81, 0xFC, 0x00, 0xC0, 0xFF, 0x00, 0x60, 0x70, 0xE0, 0x38, 0x38, 0x18, + 0x1C, 0x0C, 0x06, 0x0E, 0x03, 0x01, 0x83, 0x00, 0xC0, 0xE1, 0x80, 0x38, + 0x70, 0xE0, 0x0F, 0xF8, 0x70, 0x01, 0xFC, 0x18, 0x00, 0x3E, 0x0C, 0x00, + 0x00, 0x06, 0x07, 0x80, 0x03, 0x87, 0xF8, 0x00, 0xC3, 0xFE, 0x00, 0x61, + 0xE1, 0xC0, 0x30, 0x60, 0x30, 0x1C, 0x30, 0x0C, 0x0E, 0x0C, 0x03, 0x03, + 0x03, 0x01, 0x81, 0x80, 0xE1, 0xE0, 0xC0, 0x1F, 0xF0, 0x70, 0x07, 0xF8, + 0x18, 0x00, 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x07, 0xF8, 0x00, 0xFF, 0xC0, + 0x1E, 0x3C, 0x03, 0xC1, 0xC0, 0x38, 0x1C, 0x03, 0x81, 0xC0, 0x38, 0x38, + 0x03, 0xC7, 0x00, 0x1D, 0xE0, 0x01, 0xFC, 0x00, 0x1F, 0x00, 0x07, 0xF0, + 0x01, 0xF7, 0x87, 0x3C, 0x3C, 0xE7, 0x81, 0xCE, 0x70, 0x1F, 0xCE, 0x00, + 0xFC, 0xE0, 0x07, 0x8E, 0x00, 0x78, 0xF0, 0x1F, 0x8F, 0x87, 0xFC, 0x7F, + 0xF9, 0xC3, 0xFE, 0x1E, 0x1F, 0x80, 0xE0, 0x77, 0xFE, 0xEE, 0xCC, 0xC0, + 0x00, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x80, 0x30, 0x06, 0x00, 0xE0, + 0x0C, 0x01, 0xC0, 0x18, 0x03, 0x80, 0x38, 0x07, 0x00, 0x70, 0x07, 0x00, + 0x70, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, + 0xE0, 0x0E, 0x00, 0xE0, 0x06, 0x00, 0x70, 0x07, 0x00, 0x30, 0x03, 0x00, + 0x18, 0x00, 0x01, 0x80, 0x0C, 0x00, 0xC0, 0x0E, 0x00, 0xE0, 0x06, 0x00, + 0x70, 0x07, 0x00, 0x70, 0x07, 0x00, 0x70, 0x07, 0x00, 0x70, 0x07, 0x00, + 0x70, 0x07, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x01, 0xC0, 0x1C, 0x03, + 0x80, 0x38, 0x03, 0x00, 0x70, 0x06, 0x00, 0xC0, 0x1C, 0x01, 0x80, 0x30, + 0x06, 0x00, 0xC0, 0x00, 0x06, 0x01, 0x84, 0x47, 0xF7, 0xFF, 0xCF, 0xC1, + 0xE0, 0xD8, 0x67, 0x18, 0xC0, 0x00, 0x70, 0x00, 0x1C, 0x00, 0x0F, 0x00, + 0x03, 0x80, 0x00, 0xE0, 0x00, 0x38, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xC0, 0x70, 0x00, 0x1C, 0x00, 0x07, 0x00, 0x01, 0xC0, 0x00, 0xE0, + 0x00, 0x38, 0x00, 0x0E, 0x00, 0x3B, 0xDC, 0x21, 0x18, 0x98, 0xFF, 0xFF, + 0xFF, 0xE0, 0x7F, 0xFE, 0x00, 0x06, 0x00, 0x18, 0x00, 0x30, 0x00, 0xC0, + 0x01, 0x80, 0x06, 0x00, 0x0C, 0x00, 0x30, 0x00, 0x60, 0x01, 0x80, 0x03, + 0x00, 0x0C, 0x00, 0x18, 0x00, 0x60, 0x00, 0xC0, 0x03, 0x00, 0x06, 0x00, + 0x18, 0x00, 0x20, 0x00, 0xC0, 0x03, 0x00, 0x06, 0x00, 0x18, 0x00, 0x30, + 0x00, 0xC0, 0x01, 0x80, 0x00, 0x00, 0x7C, 0x00, 0x7F, 0xC0, 0x7F, 0xF8, + 0x3E, 0x1E, 0x0F, 0x03, 0xC7, 0x80, 0x71, 0xC0, 0x1C, 0xE0, 0x07, 0x38, + 0x01, 0xDE, 0x00, 0x77, 0x00, 0x1D, 0xC0, 0x0F, 0x70, 0x03, 0xFC, 0x00, + 0xEE, 0x00, 0x3B, 0x80, 0x0E, 0xE0, 0x07, 0xB8, 0x01, 0xCE, 0x00, 0xF3, + 0x80, 0x38, 0xF0, 0x1E, 0x1E, 0x1F, 0x07, 0xFF, 0x80, 0xFF, 0xC0, 0x0F, + 0x80, 0x00, 0x00, 0xC0, 0x70, 0x3C, 0x3E, 0xFF, 0xBF, 0xEF, 0xF8, 0x1E, + 0x07, 0x01, 0xC0, 0x70, 0x1C, 0x0F, 0x03, 0x80, 0xE0, 0x38, 0x0E, 0x07, + 0x81, 0xC0, 0x70, 0x1C, 0x07, 0x01, 0xC0, 0xE0, 0x38, 0x00, 0x00, 0x3F, + 0x00, 0x0F, 0xFC, 0x03, 0xFF, 0xE0, 0x7C, 0x1E, 0x07, 0x80, 0xF0, 0xF0, + 0x07, 0x0E, 0x00, 0x70, 0xE0, 0x07, 0x00, 0x00, 0x70, 0x00, 0x0E, 0x00, + 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x0F, 0x80, 0x03, 0xF0, 0x00, 0xFC, 0x00, + 0x1F, 0x00, 0x07, 0xC0, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0x80, 0x00, + 0x70, 0x00, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0x8F, 0xFF, 0xF0, 0xFF, 0xFF, + 0x00, 0x00, 0x7E, 0x00, 0x3F, 0xF0, 0x0F, 0xFF, 0x03, 0xC1, 0xF0, 0x70, + 0x0E, 0x1C, 0x01, 0xC3, 0x80, 0x38, 0xE0, 0x07, 0x00, 0x01, 0xC0, 0x00, + 0xF0, 0x03, 0xFC, 0x00, 0x7F, 0x00, 0x0F, 0xF0, 0x00, 0x1F, 0x00, 0x00, + 0xE0, 0x00, 0x1C, 0x00, 0x03, 0x9C, 0x00, 0x73, 0x80, 0x1E, 0x70, 0x03, + 0x8F, 0x00, 0xF1, 0xF0, 0x7C, 0x1F, 0xFF, 0x01, 0xFF, 0xC0, 0x0F, 0xC0, + 0x00, 0x00, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x78, 0x00, 0x3E, 0x00, 0x1F, + 0x80, 0x0F, 0xE0, 0x07, 0xF0, 0x03, 0xDC, 0x01, 0xE7, 0x00, 0x71, 0xC0, + 0x38, 0xF0, 0x1C, 0x38, 0x0E, 0x0E, 0x07, 0x03, 0x83, 0x80, 0xE1, 0xC0, + 0x70, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x70, 0x00, 0x38, + 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x01, 0xFF, + 0xF0, 0x3F, 0xFF, 0x03, 0xFF, 0xE0, 0x78, 0x00, 0x07, 0x00, 0x00, 0x70, + 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x0E, 0xFC, 0x01, 0xFF, 0xF0, 0x1F, + 0xFF, 0x83, 0xE0, 0x78, 0x3C, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xC0, + 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x18, 0x00, 0x03, 0x8E, 0x00, 0x78, + 0xE0, 0x0F, 0x0F, 0x81, 0xE0, 0x7F, 0xFC, 0x03, 0xFF, 0x80, 0x0F, 0xE0, + 0x00, 0x00, 0x7E, 0x00, 0x3F, 0xF0, 0x0F, 0xFF, 0x03, 0xE1, 0xF0, 0xF0, + 0x0E, 0x1C, 0x01, 0xC7, 0x00, 0x01, 0xE0, 0x00, 0x38, 0x00, 0x07, 0x1F, + 0x01, 0xCF, 0xF8, 0x3B, 0xFF, 0x87, 0xE0, 0xF8, 0xF0, 0x0F, 0x3C, 0x00, + 0xE7, 0x80, 0x1C, 0xE0, 0x03, 0x9C, 0x00, 0x73, 0x80, 0x1C, 0x70, 0x03, + 0x8F, 0x00, 0xE0, 0xF0, 0x78, 0x1F, 0xFF, 0x01, 0xFF, 0x80, 0x0F, 0xC0, + 0x00, 0x3F, 0xFF, 0xCF, 0xFF, 0xF7, 0xFF, 0xFC, 0x00, 0x0E, 0x00, 0x07, + 0x00, 0x03, 0x80, 0x00, 0xC0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, + 0x0E, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x78, 0x00, 0x1C, + 0x00, 0x0E, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xF0, 0x00, 0x38, 0x00, + 0x1E, 0x00, 0x07, 0x00, 0x03, 0xC0, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x7E, + 0x00, 0x3F, 0xF0, 0x1F, 0xFF, 0x07, 0xC1, 0xF0, 0xE0, 0x0E, 0x38, 0x01, + 0xC7, 0x00, 0x38, 0xE0, 0x0E, 0x1C, 0x01, 0xC3, 0xC0, 0xF0, 0x3F, 0xFC, + 0x03, 0xFE, 0x01, 0xFF, 0xF0, 0x7C, 0x1E, 0x1E, 0x01, 0xE3, 0x80, 0x1C, + 0xE0, 0x03, 0x9C, 0x00, 0x73, 0x80, 0x0E, 0x70, 0x03, 0x8F, 0x00, 0xF1, + 0xF0, 0x7C, 0x1F, 0xFF, 0x01, 0xFF, 0xC0, 0x0F, 0xC0, 0x00, 0x00, 0x7E, + 0x00, 0x3F, 0xF0, 0x1F, 0xFF, 0x07, 0xC1, 0xE0, 0xE0, 0x1E, 0x38, 0x01, + 0xC7, 0x00, 0x39, 0xC0, 0x07, 0x38, 0x00, 0xE7, 0x00, 0x3C, 0xE0, 0x07, + 0x9E, 0x01, 0xE3, 0xE0, 0xFC, 0x3F, 0xFB, 0x83, 0xFE, 0xF0, 0x3F, 0x1C, + 0x00, 0x03, 0x80, 0x00, 0xF0, 0x00, 0x1C, 0x70, 0x07, 0x8E, 0x01, 0xE1, + 0xE0, 0xF8, 0x1F, 0xFE, 0x01, 0xFF, 0x80, 0x0F, 0xC0, 0x00, 0x0E, 0x3C, + 0x78, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, + 0xF1, 0xE3, 0x80, 0x07, 0x0F, 0x0F, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x78, 0x70, 0x10, 0x10, + 0x30, 0x20, 0xC0, 0x00, 0x00, 0x20, 0x00, 0x1C, 0x00, 0x1F, 0x80, 0x1F, + 0xC0, 0x0F, 0xC0, 0x0F, 0xE0, 0x07, 0xE0, 0x03, 0xF0, 0x00, 0xF0, 0x00, + 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x3F, 0x00, 0x01, 0xF8, + 0x00, 0x0F, 0xC0, 0x00, 0x78, 0x00, 0x01, 0x00, 0x7F, 0xFF, 0xDF, 0xFF, + 0xF7, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFB, + 0xFF, 0xFE, 0xFF, 0xFF, 0x80, 0x10, 0x00, 0x03, 0xC0, 0x00, 0x7E, 0x00, + 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x3F, + 0x00, 0x01, 0xE0, 0x01, 0xF8, 0x00, 0xFC, 0x00, 0xFE, 0x00, 0x7E, 0x00, + 0x7F, 0x00, 0x3F, 0x00, 0x07, 0x00, 0x00, 0x80, 0x00, 0x00, 0x03, 0xF8, + 0x0F, 0xFC, 0x1F, 0xFE, 0x3C, 0x1F, 0x78, 0x07, 0x70, 0x07, 0xE0, 0x07, + 0xE0, 0x07, 0x00, 0x0E, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xF0, + 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0F, 0x00, 0x0E, 0x00, 0x0E, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, + 0x3C, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x03, 0xFF, 0xF0, 0x00, 0x07, + 0xFF, 0xFE, 0x00, 0x0F, 0xE0, 0x3F, 0x80, 0x0F, 0x80, 0x03, 0xE0, 0x0F, + 0x00, 0x00, 0xF8, 0x0F, 0x00, 0x00, 0x3C, 0x0F, 0x01, 0xF0, 0x0F, 0x0F, + 0x03, 0xFD, 0xC7, 0x8F, 0x03, 0xFE, 0xE1, 0xC7, 0x03, 0xC3, 0x60, 0xE7, + 0x03, 0xC0, 0xF0, 0x77, 0x83, 0xC0, 0x70, 0x3B, 0x83, 0xC0, 0x78, 0x1D, + 0xC1, 0xC0, 0x38, 0x1F, 0xC1, 0xE0, 0x1C, 0x0E, 0xE0, 0xE0, 0x1C, 0x0F, + 0x70, 0x70, 0x0E, 0x07, 0x38, 0x38, 0x0E, 0x07, 0x9C, 0x1C, 0x0F, 0x07, + 0x8E, 0x0F, 0x0F, 0x8F, 0x87, 0x03, 0xFD, 0xFF, 0x83, 0xC1, 0xFC, 0xFF, + 0x80, 0xE0, 0x7C, 0x3F, 0x00, 0x78, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, + 0x00, 0x07, 0x80, 0x00, 0x00, 0x01, 0xF8, 0x07, 0x00, 0x00, 0x7F, 0xFF, + 0x80, 0x00, 0x1F, 0xFF, 0xC0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x01, + 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x80, 0x00, 0xFF, + 0x00, 0x01, 0xDE, 0x00, 0x07, 0x9C, 0x00, 0x0E, 0x38, 0x00, 0x3C, 0x70, + 0x00, 0x70, 0xF0, 0x01, 0xC1, 0xE0, 0x07, 0x83, 0xC0, 0x0E, 0x07, 0x80, + 0x38, 0x07, 0x00, 0x70, 0x0E, 0x01, 0xFF, 0xFC, 0x03, 0xFF, 0xFC, 0x0F, + 0xFF, 0xF8, 0x1C, 0x00, 0xF0, 0x70, 0x01, 0xE1, 0xE0, 0x01, 0xC3, 0x80, + 0x03, 0x8F, 0x00, 0x07, 0x1C, 0x00, 0x0E, 0x78, 0x00, 0x1E, 0xE0, 0x00, + 0x3C, 0x07, 0xFF, 0xC0, 0x3F, 0xFF, 0x81, 0xFF, 0xFC, 0x0E, 0x00, 0xF0, + 0xF0, 0x03, 0x87, 0x00, 0x1C, 0x38, 0x00, 0xE1, 0xC0, 0x07, 0x0E, 0x00, + 0x70, 0xF0, 0x03, 0x87, 0x00, 0x78, 0x3F, 0xFF, 0x81, 0xFF, 0xF8, 0x0F, + 0xFF, 0xF0, 0xE0, 0x03, 0xC7, 0x00, 0x0E, 0x38, 0x00, 0x71, 0xC0, 0x03, + 0x9E, 0x00, 0x1C, 0xE0, 0x00, 0xE7, 0x00, 0x0E, 0x38, 0x00, 0xF1, 0xC0, + 0x0F, 0x1F, 0xFF, 0xF0, 0xFF, 0xFF, 0x07, 0xFF, 0xE0, 0x00, 0x00, 0x1F, + 0x80, 0x03, 0xFF, 0x80, 0x1F, 0xFF, 0x01, 0xF8, 0x3E, 0x07, 0x80, 0x38, + 0x38, 0x00, 0xF1, 0xC0, 0x01, 0xCF, 0x00, 0x07, 0x38, 0x00, 0x01, 0xE0, + 0x00, 0x07, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x70, 0x00, 0x03, 0x80, 0x00, + 0x0E, 0x00, 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x7B, 0x80, 0x01, 0xCE, + 0x00, 0x0F, 0x3C, 0x00, 0x38, 0x70, 0x01, 0xE1, 0xE0, 0x0F, 0x07, 0xC0, + 0xF8, 0x0F, 0xFF, 0xC0, 0x1F, 0xFC, 0x00, 0x1F, 0xC0, 0x00, 0x07, 0xFF, + 0xC0, 0x0F, 0xFF, 0xE0, 0x1F, 0xFF, 0xE0, 0x38, 0x03, 0xE0, 0xF0, 0x03, + 0xC1, 0xC0, 0x03, 0x83, 0x80, 0x03, 0x87, 0x00, 0x07, 0x1E, 0x00, 0x0E, + 0x3C, 0x00, 0x1C, 0x70, 0x00, 0x38, 0xE0, 0x00, 0x71, 0xC0, 0x00, 0xE7, + 0x80, 0x03, 0x8F, 0x00, 0x07, 0x1C, 0x00, 0x0E, 0x38, 0x00, 0x3C, 0x70, + 0x00, 0x71, 0xE0, 0x01, 0xE3, 0x80, 0x03, 0x87, 0x00, 0x0E, 0x0E, 0x00, + 0x3C, 0x1C, 0x01, 0xF0, 0x7F, 0xFF, 0xC0, 0xFF, 0xFE, 0x01, 0xFF, 0xF0, + 0x00, 0x07, 0xFF, 0xFE, 0x0F, 0xFF, 0xFC, 0x1F, 0xFF, 0xF0, 0x38, 0x00, + 0x00, 0xF0, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, 0x00, 0x07, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x70, 0x00, 0x00, 0xFF, 0xFF, 0x81, + 0xFF, 0xFF, 0x07, 0xFF, 0xFE, 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x70, 0x00, 0x01, 0xE0, 0x00, 0x03, 0x80, 0x00, 0x07, 0x00, + 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x7F, 0xFF, 0xF0, 0xFF, 0xFF, + 0xC1, 0xFF, 0xFF, 0x80, 0x07, 0xFF, 0xFC, 0x1F, 0xFF, 0xF0, 0x7F, 0xFF, + 0xC1, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x03, + 0x80, 0x00, 0x1E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xC0, 0x00, 0x07, 0xFF, + 0xF0, 0x1F, 0xFF, 0xC0, 0xFF, 0xFF, 0x03, 0x80, 0x00, 0x0E, 0x00, 0x00, + 0x38, 0x00, 0x00, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1C, 0x00, 0x00, 0x70, + 0x00, 0x01, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xE0, 0x00, + 0x03, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x7F, 0xF8, 0x01, 0xFF, + 0xFC, 0x03, 0xE0, 0x3E, 0x07, 0x80, 0x0E, 0x0F, 0x00, 0x0F, 0x1E, 0x00, + 0x07, 0x1C, 0x00, 0x07, 0x38, 0x00, 0x00, 0x38, 0x00, 0x00, 0x70, 0x00, + 0x00, 0x70, 0x00, 0x00, 0xF0, 0x07, 0xFE, 0xE0, 0x07, 0xFE, 0xE0, 0x07, + 0xFE, 0xE0, 0x00, 0x0E, 0xE0, 0x00, 0x0E, 0xE0, 0x00, 0x0E, 0xE0, 0x00, + 0x1C, 0xF0, 0x00, 0x3C, 0x70, 0x00, 0x7C, 0x78, 0x00, 0xFC, 0x3E, 0x03, + 0xDC, 0x1F, 0xFF, 0x98, 0x0F, 0xFE, 0x18, 0x03, 0xF8, 0x18, 0x07, 0x00, + 0x07, 0x83, 0x80, 0x03, 0xC1, 0xC0, 0x01, 0xC0, 0xE0, 0x00, 0xE0, 0xF0, + 0x00, 0x70, 0x70, 0x00, 0x78, 0x38, 0x00, 0x3C, 0x1C, 0x00, 0x1C, 0x1E, + 0x00, 0x0E, 0x0F, 0x00, 0x07, 0x07, 0x00, 0x07, 0x83, 0xFF, 0xFF, 0x81, + 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0xE0, 0xE0, 0x00, 0x70, 0x70, 0x00, 0x78, + 0x38, 0x00, 0x38, 0x1C, 0x00, 0x1C, 0x1E, 0x00, 0x0E, 0x0E, 0x00, 0x0F, + 0x07, 0x00, 0x07, 0x83, 0x80, 0x03, 0x81, 0xC0, 0x01, 0xC1, 0xE0, 0x00, + 0xE0, 0xE0, 0x00, 0xF0, 0x70, 0x00, 0x78, 0x00, 0x07, 0x0F, 0x0F, 0x0E, + 0x0E, 0x0E, 0x0E, 0x1E, 0x1C, 0x1C, 0x1C, 0x1C, 0x3C, 0x3C, 0x38, 0x38, + 0x38, 0x38, 0x78, 0x70, 0x70, 0x70, 0x70, 0xF0, 0xF0, 0xE0, 0x00, 0x01, + 0xC0, 0x00, 0x70, 0x00, 0x3C, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, + 0x00, 0x38, 0x00, 0x1E, 0x00, 0x07, 0x00, 0x01, 0xC0, 0x00, 0x70, 0x00, + 0x1C, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x1E, + 0x1C, 0x07, 0x0E, 0x01, 0xC3, 0x80, 0x70, 0xE0, 0x3C, 0x38, 0x0E, 0x0F, + 0x0F, 0x81, 0xFF, 0xC0, 0x7F, 0xE0, 0x07, 0xE0, 0x00, 0x07, 0x00, 0x07, + 0x83, 0x80, 0x07, 0x81, 0xC0, 0x0F, 0x00, 0xE0, 0x0F, 0x00, 0xF0, 0x0F, + 0x00, 0x70, 0x0F, 0x00, 0x38, 0x0F, 0x00, 0x1C, 0x1F, 0x00, 0x1E, 0x1E, + 0x00, 0x0F, 0x1E, 0x00, 0x07, 0x1E, 0x00, 0x03, 0x9F, 0x00, 0x01, 0xDF, + 0xC0, 0x01, 0xFC, 0xE0, 0x00, 0xFC, 0x78, 0x00, 0x7C, 0x1C, 0x00, 0x3C, + 0x0F, 0x00, 0x1C, 0x07, 0x80, 0x1E, 0x01, 0xE0, 0x0E, 0x00, 0xF0, 0x07, + 0x00, 0x38, 0x03, 0x80, 0x1E, 0x01, 0xC0, 0x07, 0x01, 0xE0, 0x03, 0xC0, + 0xE0, 0x00, 0xE0, 0x70, 0x00, 0x78, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, + 0x00, 0x07, 0x00, 0x0F, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x1E, + 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x3C, 0x00, 0x38, + 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x78, 0x00, 0x70, 0x00, 0x70, + 0x00, 0x70, 0x00, 0x70, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, + 0xC0, 0x00, 0xF8, 0x3E, 0x00, 0x07, 0xC1, 0xF0, 0x00, 0x7E, 0x0F, 0x80, + 0x03, 0xF0, 0xFC, 0x00, 0x3F, 0x07, 0x70, 0x01, 0xF8, 0x3B, 0x80, 0x1D, + 0xC1, 0xDC, 0x00, 0xEE, 0x0E, 0xE0, 0x0E, 0xE0, 0xE7, 0x00, 0x77, 0x07, + 0x38, 0x07, 0x38, 0x39, 0xC0, 0x31, 0xC1, 0xCE, 0x03, 0x9E, 0x1E, 0x38, + 0x38, 0xE0, 0xE1, 0xC1, 0xC7, 0x07, 0x0E, 0x1C, 0x38, 0x38, 0x70, 0xE1, + 0xC1, 0xC3, 0x8E, 0x1E, 0x1E, 0x1C, 0x70, 0xE0, 0xE0, 0xE7, 0x07, 0x07, + 0x07, 0x38, 0x38, 0x38, 0x1F, 0x81, 0xC1, 0xC0, 0xF8, 0x1E, 0x1C, 0x07, + 0xC0, 0xE0, 0xE0, 0x3C, 0x07, 0x07, 0x01, 0xE0, 0x38, 0x00, 0x07, 0x80, + 0x03, 0x83, 0xE0, 0x01, 0xC1, 0xF0, 0x00, 0xE0, 0xF8, 0x00, 0xE0, 0xFE, + 0x00, 0x70, 0x7F, 0x00, 0x38, 0x3B, 0xC0, 0x1C, 0x1D, 0xE0, 0x1E, 0x0E, + 0x70, 0x0E, 0x0E, 0x3C, 0x07, 0x07, 0x0E, 0x03, 0x83, 0x87, 0x81, 0xC1, + 0xC3, 0xC1, 0xE1, 0xE0, 0xE0, 0xE0, 0xE0, 0x78, 0x70, 0x70, 0x1C, 0x38, + 0x38, 0x0F, 0x1C, 0x1C, 0x07, 0x9E, 0x1E, 0x01, 0xCE, 0x0E, 0x00, 0xF7, + 0x07, 0x00, 0x3B, 0x83, 0x80, 0x1F, 0xC1, 0xC0, 0x07, 0xC1, 0xC0, 0x03, + 0xE0, 0xE0, 0x01, 0xF0, 0x70, 0x00, 0x78, 0x00, 0x00, 0x1F, 0xC0, 0x00, + 0xFF, 0xF0, 0x01, 0xFF, 0xF8, 0x03, 0xE0, 0x7C, 0x07, 0x80, 0x1E, 0x0F, + 0x00, 0x0E, 0x1C, 0x00, 0x0F, 0x3C, 0x00, 0x07, 0x38, 0x00, 0x07, 0x70, + 0x00, 0x07, 0x70, 0x00, 0x07, 0x70, 0x00, 0x07, 0xE0, 0x00, 0x07, 0xE0, + 0x00, 0x0F, 0xE0, 0x00, 0x0E, 0xE0, 0x00, 0x0E, 0xE0, 0x00, 0x0E, 0xE0, + 0x00, 0x1C, 0xE0, 0x00, 0x1C, 0xF0, 0x00, 0x38, 0x70, 0x00, 0x78, 0x78, + 0x00, 0xF0, 0x3E, 0x07, 0xE0, 0x1F, 0xFF, 0xC0, 0x0F, 0xFF, 0x00, 0x03, + 0xF8, 0x00, 0x07, 0xFF, 0xE0, 0x1F, 0xFF, 0xC0, 0x7F, 0xFF, 0x81, 0xC0, + 0x1F, 0x0F, 0x00, 0x3C, 0x38, 0x00, 0x70, 0xE0, 0x01, 0xC3, 0x80, 0x07, + 0x1E, 0x00, 0x1C, 0x78, 0x00, 0xE1, 0xC0, 0x07, 0x87, 0x00, 0x3C, 0x1F, + 0xFF, 0xE0, 0xFF, 0xFF, 0x03, 0xFF, 0xF0, 0x0E, 0x00, 0x00, 0x38, 0x00, + 0x00, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1C, 0x00, 0x00, 0x70, 0x00, 0x01, + 0xC0, 0x00, 0x07, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xE0, 0x00, 0x03, 0x80, + 0x00, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x3F, 0xFC, 0x00, 0x7F, 0xFF, 0x00, + 0x7C, 0x07, 0xC0, 0x78, 0x00, 0xF0, 0x78, 0x00, 0x38, 0x78, 0x00, 0x1E, + 0x78, 0x00, 0x07, 0x38, 0x00, 0x03, 0xBC, 0x00, 0x01, 0xDC, 0x00, 0x00, + 0xEE, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x1F, 0x80, 0x00, + 0x1D, 0xC0, 0x00, 0x0E, 0xE0, 0x00, 0x0F, 0x70, 0x00, 0x07, 0x38, 0x00, + 0x87, 0x9E, 0x00, 0xE7, 0x87, 0x00, 0x7F, 0x83, 0xC0, 0x1F, 0x80, 0xF8, + 0x1F, 0x80, 0x3F, 0xFF, 0xE0, 0x0F, 0xFF, 0x78, 0x01, 0xFE, 0x1E, 0x00, + 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFF, 0xF0, 0x0F, 0xFF, 0xF8, + 0x1F, 0xFF, 0xF0, 0x38, 0x00, 0xF0, 0xF0, 0x00, 0xE1, 0xC0, 0x01, 0xC3, + 0x80, 0x03, 0x87, 0x00, 0x07, 0x1E, 0x00, 0x0E, 0x3C, 0x00, 0x38, 0x70, + 0x00, 0xF0, 0xE0, 0x03, 0xC1, 0xFF, 0xFE, 0x07, 0xFF, 0xF8, 0x0F, 0xFF, + 0xF8, 0x1C, 0x00, 0x78, 0x38, 0x00, 0x70, 0x70, 0x00, 0xE1, 0xE0, 0x01, + 0xC3, 0x80, 0x03, 0x87, 0x00, 0x06, 0x0E, 0x00, 0x1C, 0x1C, 0x00, 0x38, + 0x78, 0x00, 0x70, 0xE0, 0x00, 0xE1, 0xC0, 0x01, 0xE0, 0x00, 0x3F, 0xC0, + 0x07, 0xFF, 0xC0, 0x3F, 0xFF, 0x81, 0xF0, 0x1E, 0x0F, 0x00, 0x3C, 0x38, + 0x00, 0x71, 0xC0, 0x01, 0xC7, 0x00, 0x07, 0x1C, 0x00, 0x00, 0x78, 0x00, + 0x01, 0xF8, 0x00, 0x03, 0xFC, 0x00, 0x07, 0xFE, 0x00, 0x07, 0xFF, 0x00, + 0x03, 0xFE, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xF3, 0x80, 0x01, 0xCE, 0x00, + 0x07, 0x38, 0x00, 0x18, 0xE0, 0x00, 0xE3, 0xC0, 0x07, 0x07, 0x80, 0x7C, + 0x1F, 0xFF, 0xE0, 0x3F, 0xFE, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x1E, 0x00, + 0x01, 0xE0, 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x03, 0xC0, + 0x00, 0x38, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x03, 0x80, 0x00, 0x78, + 0x00, 0x07, 0x00, 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0xF0, 0x00, 0x0F, + 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x1E, 0x00, 0x01, + 0xE0, 0x00, 0x0E, 0x00, 0x0F, 0x0E, 0x00, 0x0F, 0x0E, 0x00, 0x0E, 0x0E, + 0x00, 0x0E, 0x1E, 0x00, 0x0E, 0x1C, 0x00, 0x1E, 0x1C, 0x00, 0x1C, 0x1C, + 0x00, 0x1C, 0x3C, 0x00, 0x1C, 0x3C, 0x00, 0x1C, 0x38, 0x00, 0x3C, 0x38, + 0x00, 0x38, 0x38, 0x00, 0x38, 0x78, 0x00, 0x38, 0x70, 0x00, 0x78, 0x70, + 0x00, 0x78, 0x70, 0x00, 0x70, 0xF0, 0x00, 0x70, 0xF0, 0x00, 0x70, 0xE0, + 0x00, 0xF0, 0xE0, 0x00, 0xE0, 0xF0, 0x03, 0xE0, 0x78, 0x0F, 0xC0, 0x7F, + 0xFF, 0x80, 0x1F, 0xFE, 0x00, 0x07, 0xF0, 0x00, 0xE0, 0x00, 0x3F, 0x80, + 0x03, 0xFC, 0x00, 0x1D, 0xE0, 0x01, 0xE7, 0x00, 0x0E, 0x38, 0x00, 0xE1, + 0xC0, 0x07, 0x0E, 0x00, 0x70, 0x70, 0x07, 0x83, 0xC0, 0x38, 0x1E, 0x03, + 0xC0, 0xF0, 0x1C, 0x03, 0x81, 0xE0, 0x1C, 0x0E, 0x00, 0xE0, 0xF0, 0x07, + 0x07, 0x00, 0x3C, 0x70, 0x01, 0xE3, 0x80, 0x0F, 0x38, 0x00, 0x39, 0xC0, + 0x01, 0xDC, 0x00, 0x0E, 0xE0, 0x00, 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x1F, + 0x00, 0x00, 0xF0, 0x00, 0x00, 0xE0, 0x03, 0x80, 0x0E, 0xE0, 0x07, 0x80, + 0x1E, 0xE0, 0x07, 0xC0, 0x1E, 0xE0, 0x0F, 0xC0, 0x1C, 0xE0, 0x0F, 0xC0, + 0x3C, 0xE0, 0x1F, 0xC0, 0x38, 0xE0, 0x1D, 0xC0, 0x78, 0xE0, 0x3D, 0xC0, + 0x70, 0xE0, 0x39, 0xC0, 0xF0, 0xE0, 0x79, 0xC0, 0xE0, 0xE0, 0x71, 0xC0, + 0xE0, 0xE0, 0xF1, 0xC1, 0xC0, 0xE0, 0xE1, 0xC1, 0xC0, 0xE1, 0xE1, 0xC3, + 0xC0, 0x61, 0xC1, 0xC3, 0x80, 0x63, 0xC1, 0xC7, 0x80, 0x63, 0x80, 0xE7, + 0x00, 0x67, 0x80, 0xEF, 0x00, 0x67, 0x00, 0xEE, 0x00, 0x7F, 0x00, 0xEE, + 0x00, 0x7E, 0x00, 0xFC, 0x00, 0x7E, 0x00, 0xFC, 0x00, 0x7C, 0x00, 0xF8, + 0x00, 0x7C, 0x00, 0xF8, 0x00, 0x78, 0x00, 0xF8, 0x00, 0x78, 0x00, 0xF0, + 0x00, 0x03, 0xC0, 0x03, 0xC0, 0x78, 0x00, 0xF0, 0x07, 0x80, 0x1C, 0x00, + 0xF0, 0x07, 0x80, 0x0F, 0x01, 0xE0, 0x01, 0xE0, 0x78, 0x00, 0x1C, 0x1E, + 0x00, 0x03, 0xC7, 0x80, 0x00, 0x39, 0xE0, 0x00, 0x07, 0xB8, 0x00, 0x00, + 0x7E, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x3E, 0x00, + 0x00, 0x0F, 0xC0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xF3, 0x80, 0x00, 0x3C, + 0x78, 0x00, 0x0F, 0x0F, 0x00, 0x03, 0xC0, 0xF0, 0x00, 0x70, 0x1E, 0x00, + 0x1E, 0x01, 0xE0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x03, 0xC0, 0x78, 0x00, + 0x78, 0x1E, 0x00, 0x0F, 0x00, 0xF0, 0x00, 0x3C, 0xE0, 0x00, 0x71, 0xE0, + 0x01, 0xE3, 0xC0, 0x07, 0x83, 0xC0, 0x1E, 0x07, 0x80, 0x78, 0x07, 0x00, + 0xE0, 0x0F, 0x03, 0xC0, 0x1E, 0x0F, 0x00, 0x1C, 0x3C, 0x00, 0x3C, 0xF0, + 0x00, 0x39, 0xC0, 0x00, 0x7F, 0x80, 0x00, 0xFE, 0x00, 0x00, 0xF8, 0x00, + 0x01, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x0E, 0x00, 0x00, + 0x1C, 0x00, 0x00, 0x78, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xC0, 0x00, 0x03, + 0x80, 0x00, 0x07, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0x81, + 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, + 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, + 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, + 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, + 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, + 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0xFF, 0xFF, 0xE0, 0xFF, + 0xFF, 0xF0, 0x7F, 0xFF, 0xF8, 0x00, 0x01, 0xF8, 0x1F, 0xC0, 0xFE, 0x07, + 0x00, 0x38, 0x03, 0xC0, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x03, 0xC0, + 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x07, + 0x00, 0x38, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x78, 0x03, 0x80, + 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x70, 0x03, 0xF8, 0x1F, 0xC0, 0xFE, 0x00, + 0xCC, 0xCC, 0xCC, 0x46, 0x66, 0x66, 0x66, 0x66, 0x66, 0x62, 0x33, 0x33, + 0x33, 0x03, 0xF8, 0x1F, 0xC0, 0xFE, 0x00, 0x70, 0x07, 0x00, 0x38, 0x01, + 0xC0, 0x0E, 0x00, 0xF0, 0x07, 0x00, 0x38, 0x01, 0xC0, 0x0E, 0x00, 0xE0, + 0x07, 0x00, 0x38, 0x01, 0xC0, 0x0E, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x01, + 0xC0, 0x1E, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x01, 0xC0, 0x1E, 0x00, 0xE0, + 0x07, 0x03, 0xF8, 0x1F, 0xC0, 0xFC, 0x00, 0x00, 0xF0, 0x03, 0xC0, 0x1F, + 0x00, 0x7C, 0x03, 0xB8, 0x1C, 0xE0, 0x63, 0x83, 0x8E, 0x1C, 0x38, 0x60, + 0x73, 0x81, 0xCC, 0x07, 0x70, 0x1F, 0x80, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xC0, 0xF1, 0xC3, 0x86, 0x0C, 0x00, 0xFE, 0x01, 0xFF, 0xE0, 0xFF, + 0xFC, 0x3C, 0x0F, 0x1C, 0x01, 0xC0, 0x00, 0x70, 0x00, 0x1C, 0x00, 0x0E, + 0x00, 0x1F, 0x83, 0xFF, 0xE3, 0xFE, 0x39, 0xF0, 0x1E, 0xF0, 0x07, 0x38, + 0x01, 0xCE, 0x00, 0xF3, 0xC0, 0xFC, 0xFF, 0xF7, 0x9F, 0xF1, 0xE1, 0xF0, + 0x38, 0x07, 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0xF0, + 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0x71, 0xF0, 0x0E, 0xFF, 0x83, 0xFF, + 0xF8, 0x7F, 0x0F, 0x0F, 0x80, 0xF1, 0xE0, 0x0E, 0x38, 0x01, 0xCF, 0x00, + 0x39, 0xE0, 0x07, 0x38, 0x00, 0xE7, 0x00, 0x38, 0xE0, 0x07, 0x3C, 0x00, + 0xE7, 0x80, 0x38, 0xF8, 0x0F, 0x1F, 0x87, 0xC3, 0xFF, 0xF0, 0xE7, 0xFC, + 0x1C, 0x7E, 0x00, 0x01, 0xF8, 0x07, 0xFC, 0x0F, 0xFE, 0x1E, 0x0F, 0x3C, + 0x07, 0x78, 0x07, 0x70, 0x07, 0x70, 0x00, 0xF0, 0x00, 0xE0, 0x00, 0xE0, + 0x00, 0xE0, 0x00, 0xE0, 0x0E, 0xE0, 0x1C, 0xF0, 0x3C, 0x78, 0x78, 0x7F, + 0xF0, 0x3F, 0xE0, 0x0F, 0x80, 0x00, 0x00, 0x70, 0x00, 0x0F, 0x00, 0x00, + 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 0x01, 0xE0, 0x1F, + 0x1C, 0x07, 0xFD, 0xC0, 0xFF, 0xDC, 0x1E, 0x0F, 0xC3, 0xC0, 0x7C, 0x38, + 0x07, 0x87, 0x00, 0x38, 0x70, 0x03, 0x8F, 0x00, 0x38, 0xE0, 0x07, 0x8E, + 0x00, 0x70, 0xE0, 0x07, 0x0E, 0x00, 0xF0, 0xE0, 0x0F, 0x0F, 0x01, 0xF0, + 0x78, 0x7E, 0x07, 0xFF, 0xE0, 0x3F, 0xEE, 0x01, 0xF8, 0xE0, 0x01, 0xF8, + 0x03, 0xFF, 0x03, 0xFF, 0xC3, 0xC1, 0xF3, 0xC0, 0x79, 0xC0, 0x1D, 0xC0, + 0x0E, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xF8, 0x00, 0x1C, 0x00, 0x0E, + 0x00, 0x07, 0x00, 0x73, 0xC0, 0x78, 0xF0, 0x78, 0x7F, 0xF8, 0x1F, 0xF8, + 0x03, 0xF0, 0x00, 0x01, 0xE0, 0x7C, 0x1F, 0x83, 0x80, 0x70, 0x1C, 0x03, + 0x83, 0xFC, 0x7F, 0x8F, 0xF0, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x0F, 0x01, + 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, + 0xE0, 0x1C, 0x00, 0x00, 0xFC, 0x60, 0x7F, 0xCC, 0x1F, 0xFF, 0x87, 0xC3, + 0xF1, 0xE0, 0x3E, 0x38, 0x03, 0x8E, 0x00, 0x71, 0xC0, 0x0E, 0x38, 0x01, + 0xCE, 0x00, 0x79, 0xC0, 0x0E, 0x38, 0x01, 0xC7, 0x00, 0x78, 0xE0, 0x0F, + 0x1E, 0x03, 0xC1, 0xE1, 0xF8, 0x3F, 0xFF, 0x03, 0xFE, 0xE0, 0x1F, 0x1C, + 0x00, 0x03, 0x00, 0x00, 0xE0, 0x00, 0x18, 0x38, 0x07, 0x07, 0x83, 0xC0, + 0x7F, 0xF8, 0x0F, 0xFC, 0x00, 0x7E, 0x00, 0x00, 0x07, 0x00, 0x01, 0xC0, + 0x00, 0x70, 0x00, 0x1C, 0x00, 0x0F, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, + 0x38, 0xFC, 0x0E, 0xFF, 0x87, 0xFF, 0xF1, 0xF8, 0x3C, 0x7C, 0x07, 0x1E, + 0x01, 0xC7, 0x00, 0x73, 0xC0, 0x1C, 0xE0, 0x0F, 0x38, 0x03, 0x8E, 0x00, + 0xE3, 0x80, 0x39, 0xE0, 0x0E, 0x70, 0x07, 0x9C, 0x01, 0xC7, 0x00, 0x71, + 0xC0, 0x1C, 0xE0, 0x07, 0x38, 0x03, 0x80, 0x07, 0x07, 0x0F, 0x0E, 0x00, + 0x00, 0x00, 0x1E, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x78, 0x70, 0x70, 0x70, 0x70, 0xF0, 0xE0, 0xE0, 0x00, 0x3C, 0x00, + 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, + 0x70, 0x01, 0xC0, 0x0E, 0x00, 0x38, 0x00, 0xE0, 0x03, 0x80, 0x1E, 0x00, + 0x70, 0x01, 0xC0, 0x07, 0x00, 0x1C, 0x00, 0xE0, 0x03, 0x80, 0x0E, 0x00, + 0x38, 0x00, 0xE0, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x01, 0xC0, 0x0F, 0x00, + 0x38, 0x00, 0xE0, 0x1F, 0x80, 0x7C, 0x03, 0xE0, 0x00, 0x07, 0x00, 0x00, + 0xE0, 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0xF0, 0x00, 0x1C, 0x00, 0x03, + 0x80, 0x00, 0x70, 0x1E, 0x0E, 0x07, 0x83, 0xC1, 0xE0, 0x70, 0x70, 0x0E, + 0x1C, 0x01, 0xCF, 0x00, 0x3B, 0xC0, 0x0F, 0xF8, 0x01, 0xFF, 0x80, 0x3E, + 0x70, 0x07, 0x8E, 0x00, 0xE0, 0xE0, 0x38, 0x1C, 0x07, 0x03, 0xC0, 0xE0, + 0x38, 0x1C, 0x07, 0x03, 0x80, 0xF0, 0xE0, 0x0E, 0x1C, 0x01, 0xE0, 0x07, + 0x07, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x1E, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x78, 0x70, 0x70, 0x70, 0x70, 0xF0, 0xE0, + 0xE0, 0x1E, 0x7C, 0x0F, 0x83, 0xBF, 0xE7, 0xF8, 0x7F, 0xFD, 0xFF, 0x8F, + 0xC3, 0xF0, 0xF1, 0xE0, 0x3C, 0x0E, 0x38, 0x07, 0x01, 0xCF, 0x01, 0xE0, + 0x39, 0xC0, 0x38, 0x07, 0x38, 0x07, 0x00, 0xE7, 0x00, 0xE0, 0x1C, 0xE0, + 0x1C, 0x07, 0x3C, 0x07, 0x00, 0xE7, 0x00, 0xE0, 0x1C, 0xE0, 0x1C, 0x03, + 0x9C, 0x03, 0x80, 0xF3, 0x80, 0x70, 0x1C, 0x70, 0x1C, 0x03, 0x9C, 0x03, + 0x80, 0x73, 0x80, 0x70, 0x0E, 0x00, 0x1E, 0x3E, 0x07, 0x7F, 0xE1, 0xFF, + 0xF8, 0x7E, 0x0F, 0x1F, 0x01, 0xC7, 0x80, 0x73, 0xC0, 0x1C, 0xE0, 0x07, + 0x38, 0x03, 0xCE, 0x00, 0xE3, 0x80, 0x39, 0xE0, 0x0E, 0x70, 0x03, 0x9C, + 0x01, 0xC7, 0x00, 0x71, 0xC0, 0x1C, 0x70, 0x07, 0x38, 0x01, 0xCE, 0x00, + 0xE0, 0x01, 0xF8, 0x03, 0xFF, 0x03, 0xFF, 0xC3, 0xE1, 0xE3, 0xC0, 0x79, + 0xC0, 0x1D, 0xC0, 0x0E, 0xE0, 0x07, 0x70, 0x03, 0xF0, 0x01, 0xF8, 0x01, + 0xDC, 0x00, 0xEE, 0x00, 0x77, 0x00, 0x73, 0xC0, 0x78, 0xF0, 0xF8, 0x7F, + 0xF8, 0x1F, 0xF8, 0x03, 0xF0, 0x00, 0x03, 0x8F, 0x80, 0x1D, 0xFF, 0x01, + 0xFF, 0xFC, 0x0F, 0xC1, 0xE0, 0x7C, 0x07, 0x83, 0xC0, 0x1C, 0x1C, 0x00, + 0xE1, 0xE0, 0x07, 0x0E, 0x00, 0x38, 0x70, 0x01, 0xC3, 0x80, 0x1E, 0x1C, + 0x00, 0xE1, 0xE0, 0x07, 0x0F, 0x00, 0x70, 0x78, 0x07, 0x83, 0xF0, 0xF8, + 0x3F, 0xFF, 0x81, 0xDF, 0xF8, 0x0E, 0x3F, 0x00, 0x70, 0x00, 0x03, 0x80, + 0x00, 0x3C, 0x00, 0x01, 0xC0, 0x00, 0x0E, 0x00, 0x00, 0x70, 0x00, 0x03, + 0x80, 0x00, 0x00, 0x00, 0xF8, 0xF0, 0x7F, 0xEE, 0x0F, 0xFF, 0xE1, 0xF0, + 0xFE, 0x3C, 0x07, 0xE3, 0x80, 0x3E, 0x70, 0x03, 0xC7, 0x00, 0x3C, 0x70, + 0x03, 0xCE, 0x00, 0x3C, 0xE0, 0x07, 0x8E, 0x00, 0x78, 0xE0, 0x07, 0x8E, + 0x00, 0xF8, 0xF0, 0x1F, 0x87, 0x87, 0xF0, 0x7F, 0xF7, 0x03, 0xFE, 0x70, + 0x0F, 0x8F, 0x00, 0x00, 0xF0, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x0E, + 0x00, 0x01, 0xE0, 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x04, 0x00, 0x1E, + 0x78, 0xE7, 0xC7, 0x7C, 0x3F, 0x01, 0xF0, 0x0F, 0x00, 0xF0, 0x07, 0x00, + 0x38, 0x01, 0xC0, 0x0E, 0x00, 0xF0, 0x07, 0x00, 0x38, 0x01, 0xC0, 0x0E, + 0x00, 0x70, 0x07, 0x00, 0x38, 0x00, 0x01, 0xF8, 0x07, 0xFE, 0x0F, 0xFF, + 0x1E, 0x0F, 0x3C, 0x07, 0x38, 0x07, 0x38, 0x00, 0x3C, 0x00, 0x3F, 0x80, + 0x1F, 0xF8, 0x07, 0xFC, 0x00, 0x7E, 0x00, 0x0E, 0xE0, 0x0E, 0xE0, 0x1E, + 0xF0, 0x3C, 0x7F, 0xF8, 0x7F, 0xF0, 0x1F, 0xC0, 0x0E, 0x03, 0x80, 0xE0, + 0x38, 0x7F, 0xDF, 0xEF, 0xF8, 0x70, 0x1C, 0x0E, 0x03, 0x80, 0xE0, 0x38, + 0x1E, 0x07, 0x01, 0xC0, 0x70, 0x1C, 0x0F, 0x03, 0x80, 0xFC, 0x3F, 0x07, + 0x80, 0x1C, 0x03, 0xC7, 0x00, 0xE1, 0xC0, 0x38, 0xF0, 0x0E, 0x38, 0x03, + 0x8E, 0x00, 0xE3, 0x80, 0x70, 0xE0, 0x1C, 0x78, 0x07, 0x1C, 0x01, 0xC7, + 0x00, 0x71, 0xC0, 0x3C, 0x70, 0x0E, 0x38, 0x07, 0x8E, 0x03, 0xE3, 0x81, + 0xF8, 0xFF, 0xFE, 0x1F, 0xFF, 0x03, 0xF1, 0xC0, 0xE0, 0x07, 0xE0, 0x0F, + 0xE0, 0x0E, 0xE0, 0x1C, 0x70, 0x1C, 0x70, 0x38, 0x70, 0x38, 0x70, 0x70, + 0x70, 0xF0, 0x70, 0xE0, 0x71, 0xC0, 0x71, 0xC0, 0x33, 0x80, 0x3B, 0x80, + 0x3F, 0x00, 0x3F, 0x00, 0x3E, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0xE0, 0x1C, + 0x07, 0xE0, 0x3C, 0x0E, 0xE0, 0x3C, 0x0E, 0xE0, 0x7C, 0x1C, 0xE0, 0x7C, + 0x1C, 0xE0, 0xEC, 0x38, 0xE0, 0xEC, 0x38, 0x61, 0xCC, 0x70, 0x61, 0xCC, + 0x70, 0x63, 0x8C, 0xE0, 0x73, 0x8C, 0xE0, 0x77, 0x0C, 0xC0, 0x77, 0x0D, + 0xC0, 0x7E, 0x0D, 0x80, 0x7E, 0x0F, 0x80, 0x7C, 0x0F, 0x80, 0x7C, 0x0F, + 0x00, 0x78, 0x0F, 0x00, 0x78, 0x0E, 0x00, 0x0E, 0x00, 0xE1, 0xE0, 0x38, + 0x1C, 0x0E, 0x03, 0xC3, 0x80, 0x38, 0xE0, 0x07, 0xBC, 0x00, 0x77, 0x00, + 0x0F, 0xC0, 0x00, 0xF0, 0x00, 0x1C, 0x00, 0x07, 0xC0, 0x01, 0xF8, 0x00, + 0x77, 0x80, 0x1E, 0x70, 0x07, 0x8F, 0x00, 0xE0, 0xE0, 0x38, 0x1C, 0x0E, + 0x01, 0xC3, 0x80, 0x38, 0x00, 0x0E, 0x00, 0x70, 0xF0, 0x0F, 0x07, 0x00, + 0xE0, 0x70, 0x1C, 0x07, 0x01, 0xC0, 0x70, 0x38, 0x07, 0x03, 0x80, 0x70, + 0x70, 0x07, 0x07, 0x00, 0x70, 0xE0, 0x03, 0x9E, 0x00, 0x39, 0xC0, 0x03, + 0xB8, 0x00, 0x3B, 0x80, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x03, 0xE0, 0x00, + 0x1E, 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x03, 0x80, 0x00, 0x70, 0x00, + 0x07, 0x00, 0x00, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xC0, 0x00, 0xF0, 0x00, + 0x00, 0x07, 0xFF, 0xC0, 0xFF, 0xF8, 0x3F, 0xFF, 0x00, 0x01, 0xC0, 0x00, + 0x70, 0x00, 0x1C, 0x00, 0x07, 0x00, 0x01, 0xC0, 0x00, 0x70, 0x00, 0x1C, + 0x00, 0x07, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, + 0x03, 0xC0, 0x00, 0x7F, 0xFE, 0x1F, 0xFF, 0xC3, 0xFF, 0xF8, 0x00, 0x00, + 0x70, 0x1F, 0x01, 0xF0, 0x3C, 0x03, 0x80, 0x38, 0x07, 0x00, 0x70, 0x07, + 0x00, 0x70, 0x07, 0x00, 0xE0, 0x0E, 0x01, 0xE0, 0x3C, 0x0F, 0x80, 0xE0, + 0x0F, 0x00, 0x78, 0x03, 0x80, 0x38, 0x03, 0x80, 0x38, 0x03, 0x80, 0x38, + 0x07, 0x00, 0x70, 0x07, 0x00, 0x70, 0x0E, 0x00, 0xF8, 0x0F, 0x80, 0x78, + 0x00, 0x01, 0x80, 0xC0, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x0C, 0x06, 0x03, + 0x01, 0x81, 0xC0, 0xC0, 0x60, 0x30, 0x18, 0x18, 0x0C, 0x06, 0x03, 0x01, + 0x81, 0x80, 0xC0, 0x60, 0x30, 0x38, 0x18, 0x0C, 0x06, 0x03, 0x03, 0x01, + 0x80, 0xC0, 0x00, 0x01, 0xE0, 0x1F, 0x01, 0xF0, 0x07, 0x00, 0xE0, 0x0E, + 0x00, 0xE0, 0x0E, 0x01, 0xC0, 0x1C, 0x01, 0xC0, 0x1C, 0x01, 0xC0, 0x1C, + 0x01, 0xE0, 0x0F, 0x00, 0x70, 0x1F, 0x03, 0xC0, 0x78, 0x07, 0x00, 0x70, + 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x01, 0xC0, 0x1C, 0x03, 0xC0, + 0xF8, 0x0F, 0x80, 0xE0, 0x00, 0x1C, 0x00, 0x3F, 0x00, 0x7F, 0x83, 0x63, + 0xC7, 0xC1, 0xFE, 0x00, 0xFC, 0x00, 0x78}; + +const GFXglyph FreeSansOblique18pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 10, 0, 1}, // 0x20 ' ' + {0, 9, 26, 10, 4, -25}, // 0x21 '!' + {30, 10, 9, 12, 6, -24}, // 0x22 '"' + {42, 21, 25, 19, 2, -24}, // 0x23 '#' + {108, 20, 31, 19, 2, -26}, // 0x24 '$' + {186, 26, 25, 31, 5, -24}, // 0x25 '%' + {268, 20, 25, 23, 3, -24}, // 0x26 '&' + {331, 4, 9, 7, 6, -24}, // 0x27 ''' + {336, 12, 33, 12, 4, -25}, // 0x28 '(' + {386, 12, 33, 12, -1, -24}, // 0x29 ')' + {436, 10, 10, 14, 6, -25}, // 0x2A '*' + {449, 18, 16, 20, 3, -15}, // 0x2B '+' + {485, 5, 8, 10, 2, -2}, // 0x2C ',' + {490, 9, 3, 12, 3, -10}, // 0x2D '-' + {494, 4, 4, 10, 3, -3}, // 0x2E '.' + {496, 15, 26, 10, 0, -25}, // 0x2F '/' + {545, 18, 25, 19, 3, -24}, // 0x30 '0' + {602, 10, 25, 19, 7, -24}, // 0x31 '1' + {634, 20, 25, 19, 2, -24}, // 0x32 '2' + {697, 19, 25, 19, 2, -24}, // 0x33 '3' + {757, 18, 25, 19, 2, -24}, // 0x34 '4' + {814, 20, 25, 19, 2, -24}, // 0x35 '5' + {877, 19, 25, 19, 3, -24}, // 0x36 '6' + {937, 18, 25, 19, 5, -24}, // 0x37 '7' + {994, 19, 25, 19, 3, -24}, // 0x38 '8' + {1054, 19, 25, 19, 2, -24}, // 0x39 '9' + {1114, 7, 19, 10, 4, -18}, // 0x3A ':' + {1131, 8, 24, 10, 3, -18}, // 0x3B ';' + {1155, 19, 17, 20, 3, -16}, // 0x3C '<' + {1196, 18, 9, 20, 3, -12}, // 0x3D '=' + {1217, 19, 17, 20, 2, -15}, // 0x3E '>' + {1258, 16, 26, 19, 6, -25}, // 0x3F '?' + {1310, 33, 31, 36, 3, -25}, // 0x40 '@' + {1438, 23, 26, 23, 0, -25}, // 0x41 'A' + {1513, 21, 26, 23, 3, -25}, // 0x42 'B' + {1582, 22, 26, 25, 4, -25}, // 0x43 'C' + {1654, 23, 26, 25, 3, -25}, // 0x44 'D' + {1729, 23, 26, 23, 3, -25}, // 0x45 'E' + {1804, 22, 26, 21, 3, -25}, // 0x46 'F' + {1876, 24, 26, 27, 4, -25}, // 0x47 'G' + {1954, 25, 26, 25, 3, -25}, // 0x48 'H' + {2036, 8, 26, 10, 4, -25}, // 0x49 'I' + {2062, 18, 26, 18, 2, -25}, // 0x4A 'J' + {2121, 25, 26, 23, 3, -25}, // 0x4B 'K' + {2203, 16, 26, 19, 3, -25}, // 0x4C 'L' + {2255, 29, 26, 30, 3, -25}, // 0x4D 'M' + {2350, 25, 26, 26, 3, -25}, // 0x4E 'N' + {2432, 24, 26, 27, 4, -25}, // 0x4F 'O' + {2510, 22, 26, 23, 3, -25}, // 0x50 'P' + {2582, 25, 28, 27, 4, -25}, // 0x51 'Q' + {2670, 23, 26, 25, 3, -25}, // 0x52 'R' + {2745, 22, 26, 23, 3, -25}, // 0x53 'S' + {2817, 20, 26, 21, 6, -25}, // 0x54 'T' + {2882, 24, 26, 25, 4, -25}, // 0x55 'U' + {2960, 21, 26, 23, 6, -25}, // 0x56 'V' + {3029, 32, 26, 33, 6, -25}, // 0x57 'W' + {3133, 27, 26, 23, 1, -25}, // 0x58 'X' + {3221, 23, 26, 24, 6, -25}, // 0x59 'Y' + {3296, 25, 26, 21, 1, -25}, // 0x5A 'Z' + {3378, 13, 33, 10, 1, -25}, // 0x5B '[' + {3432, 4, 26, 10, 5, -25}, // 0x5C '\' + {3445, 13, 33, 10, -1, -24}, // 0x5D ']' + {3499, 14, 14, 16, 3, -24}, // 0x5E '^' + {3524, 21, 2, 19, -2, 5}, // 0x5F '_' + {3530, 6, 5, 12, 6, -25}, // 0x60 '`' + {3534, 18, 19, 19, 2, -18}, // 0x61 'a' + {3577, 19, 26, 20, 2, -25}, // 0x62 'b' + {3639, 16, 19, 18, 3, -18}, // 0x63 'c' + {3677, 20, 26, 20, 3, -25}, // 0x64 'd' + {3742, 17, 19, 19, 3, -18}, // 0x65 'e' + {3783, 11, 26, 9, 2, -25}, // 0x66 'f' + {3819, 19, 27, 19, 2, -18}, // 0x67 'g' + {3884, 18, 26, 19, 2, -25}, // 0x68 'h' + {3943, 8, 26, 8, 2, -25}, // 0x69 'i' + {3969, 14, 34, 8, -2, -25}, // 0x6A 'j' + {4029, 19, 26, 18, 2, -25}, // 0x6B 'k' + {4091, 8, 26, 8, 2, -25}, // 0x6C 'l' + {4117, 27, 19, 29, 2, -18}, // 0x6D 'm' + {4182, 18, 19, 19, 2, -18}, // 0x6E 'n' + {4225, 17, 19, 19, 3, -18}, // 0x6F 'o' + {4266, 21, 26, 20, 0, -18}, // 0x70 'p' + {4335, 20, 27, 19, 2, -18}, // 0x71 'q' + {4403, 13, 19, 11, 2, -18}, // 0x72 'r' + {4434, 16, 19, 18, 2, -18}, // 0x73 's' + {4472, 10, 23, 9, 3, -22}, // 0x74 't' + {4501, 18, 19, 19, 3, -18}, // 0x75 'u' + {4544, 16, 19, 17, 4, -18}, // 0x76 'v' + {4582, 24, 19, 25, 4, -18}, // 0x77 'w' + {4639, 19, 19, 17, 1, -18}, // 0x78 'x' + {4685, 20, 27, 17, 0, -18}, // 0x79 'y' + {4753, 19, 19, 17, 1, -18}, // 0x7A 'z' + {4799, 12, 33, 12, 3, -25}, // 0x7B '{' + {4849, 9, 33, 9, 2, -25}, // 0x7C '|' + {4887, 12, 33, 12, 0, -24}, // 0x7D '}' + {4937, 16, 7, 20, 5, -15}}; // 0x7E '~' + +const GFXfont FreeSansOblique18pt7b PROGMEM = { + (uint8_t *)FreeSansOblique18pt7bBitmaps, + (GFXglyph *)FreeSansOblique18pt7bGlyphs, 0x20, 0x7E, 42}; + +// Approx. 5623 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansOblique24pt7b.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansOblique24pt7b.h new file mode 100644 index 0000000..805aefa --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansOblique24pt7b.h @@ -0,0 +1,842 @@ +#pragma once +#include + +const uint8_t FreeSansOblique24pt7bBitmaps[] PROGMEM = { + 0x01, 0xE0, 0x3C, 0x0F, 0x81, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x3C, 0x07, + 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x03, + 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x38, 0x07, 0x00, 0xE0, 0x18, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xF0, 0x1E, 0x07, 0x80, 0xF0, 0x1E, 0x00, 0x78, + 0x7B, 0xC3, 0xDE, 0x1F, 0xE1, 0xEF, 0x0F, 0x78, 0x7B, 0xC3, 0xDC, 0x1C, + 0xE0, 0xE7, 0x07, 0x30, 0x31, 0x81, 0x80, 0x00, 0x07, 0x81, 0xC0, 0x00, + 0x78, 0x3C, 0x00, 0x07, 0x03, 0xC0, 0x00, 0xF0, 0x38, 0x00, 0x0E, 0x07, + 0x80, 0x01, 0xE0, 0x70, 0x00, 0x1E, 0x0F, 0x00, 0x01, 0xC0, 0xF0, 0x00, + 0x3C, 0x0E, 0x00, 0xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, + 0xFE, 0x00, 0x70, 0x3C, 0x00, 0x0F, 0x03, 0x80, 0x00, 0xF0, 0x78, 0x00, + 0x0E, 0x07, 0x80, 0x01, 0xE0, 0x70, 0x00, 0x1C, 0x0F, 0x00, 0x03, 0xC0, + 0xE0, 0x00, 0x3C, 0x1E, 0x00, 0x03, 0x81, 0xE0, 0x0F, 0xFF, 0xFF, 0xE0, + 0xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0xE0, 0x0F, 0x03, 0x80, 0x00, 0xE0, + 0x78, 0x00, 0x1E, 0x07, 0x00, 0x01, 0xC0, 0xF0, 0x00, 0x1C, 0x0F, 0x00, + 0x03, 0xC0, 0xE0, 0x00, 0x38, 0x1E, 0x00, 0x07, 0x81, 0xC0, 0x00, 0x78, + 0x3C, 0x00, 0x07, 0x03, 0xC0, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x30, + 0x00, 0x00, 0x7F, 0x80, 0x00, 0xFF, 0xF8, 0x00, 0x7F, 0xFF, 0x00, 0x7F, + 0xFF, 0xE0, 0x1F, 0x18, 0xF8, 0x0F, 0x8E, 0x1F, 0x07, 0xC3, 0x83, 0xC1, + 0xE0, 0xE0, 0xF0, 0x70, 0x38, 0x3C, 0x3C, 0x0C, 0x0F, 0x0F, 0x07, 0x00, + 0x03, 0xC1, 0xC0, 0x00, 0xF0, 0x70, 0x00, 0x3E, 0x1C, 0x00, 0x0F, 0xE6, + 0x00, 0x01, 0xFF, 0xC0, 0x00, 0x3F, 0xFE, 0x00, 0x03, 0xFF, 0xE0, 0x00, + 0x3F, 0xFC, 0x00, 0x03, 0xFF, 0x80, 0x01, 0xC7, 0xF0, 0x00, 0x70, 0x7C, + 0x00, 0x1C, 0x0F, 0x00, 0x06, 0x03, 0xCF, 0x03, 0x80, 0xF3, 0xC0, 0xE0, + 0x3C, 0xF0, 0x38, 0x0E, 0x3C, 0x0E, 0x07, 0x8F, 0x03, 0x01, 0xE3, 0xE1, + 0xC0, 0xF0, 0xF8, 0x70, 0x78, 0x1F, 0x9C, 0xFC, 0x03, 0xFF, 0xFE, 0x00, + 0x7F, 0xFF, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0E, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x80, 0x1F, 0x00, 0x00, 0x70, 0x07, 0xFC, 0x00, 0x0E, + 0x00, 0xFF, 0xE0, 0x01, 0xC0, 0x1E, 0x1E, 0x00, 0x3C, 0x03, 0x80, 0xF0, + 0x03, 0x80, 0x70, 0x07, 0x00, 0x70, 0x07, 0x00, 0x70, 0x0E, 0x00, 0xE0, + 0x07, 0x01, 0xC0, 0x0E, 0x00, 0x70, 0x3C, 0x00, 0xE0, 0x0E, 0x03, 0x80, + 0x0E, 0x00, 0xE0, 0x70, 0x00, 0xF0, 0x1C, 0x0E, 0x00, 0x07, 0x87, 0xC1, + 0xE0, 0x00, 0x7F, 0xF8, 0x1C, 0x00, 0x03, 0xFE, 0x03, 0x80, 0x00, 0x0F, + 0x80, 0x70, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x1F, + 0x00, 0x00, 0x1C, 0x07, 0xFC, 0x00, 0x03, 0x80, 0xFF, 0xE0, 0x00, 0x70, + 0x1E, 0x1E, 0x00, 0x0F, 0x03, 0x80, 0xF0, 0x00, 0xE0, 0x70, 0x07, 0x00, + 0x1C, 0x07, 0x00, 0x70, 0x03, 0x80, 0xE0, 0x07, 0x00, 0x70, 0x0E, 0x00, + 0x70, 0x0F, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x1C, 0x00, + 0xF0, 0x1C, 0x03, 0x80, 0x07, 0x87, 0xC0, 0x70, 0x00, 0x7F, 0xF8, 0x07, + 0x00, 0x03, 0xFE, 0x00, 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x01, 0xF8, 0x00, + 0x03, 0xFF, 0x00, 0x01, 0xFF, 0xE0, 0x00, 0xF8, 0x7C, 0x00, 0x78, 0x0F, + 0x00, 0x1E, 0x03, 0xC0, 0x0F, 0x00, 0xF0, 0x03, 0xC0, 0x3C, 0x00, 0xF0, + 0x1E, 0x00, 0x3C, 0x07, 0x80, 0x0F, 0x87, 0xC0, 0x01, 0xE3, 0xE0, 0x00, + 0x7F, 0xF0, 0x00, 0x0F, 0xF8, 0x00, 0x03, 0xF8, 0x00, 0x03, 0xFC, 0x00, + 0x03, 0xFF, 0x00, 0x01, 0xFB, 0xE0, 0x70, 0xF8, 0x7C, 0x1C, 0x7C, 0x1F, + 0x0E, 0x3C, 0x03, 0xE3, 0x9E, 0x00, 0x79, 0xE7, 0x80, 0x1F, 0xF3, 0xC0, + 0x03, 0xF8, 0xF0, 0x00, 0xFE, 0x3C, 0x00, 0x1F, 0x0F, 0x00, 0x07, 0xC3, + 0xE0, 0x03, 0xF8, 0xF8, 0x03, 0xFE, 0x3F, 0x83, 0xF7, 0xC7, 0xFF, 0xF8, + 0xF0, 0xFF, 0xFC, 0x3E, 0x1F, 0xFC, 0x07, 0x81, 0xFC, 0x00, 0x00, 0x7B, + 0xDF, 0xEF, 0x7B, 0xDC, 0xE7, 0x31, 0x80, 0x00, 0x0E, 0x00, 0x38, 0x00, + 0xE0, 0x03, 0x80, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x01, 0xE0, 0x03, 0x80, + 0x0F, 0x00, 0x1C, 0x00, 0x78, 0x00, 0xE0, 0x03, 0xC0, 0x07, 0x00, 0x0E, + 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, + 0x1C, 0x00, 0x78, 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0E, + 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x80, + 0x07, 0x00, 0x06, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x30, 0x00, + 0x70, 0x00, 0xE0, 0x00, 0xC0, 0x00, 0x00, 0x30, 0x00, 0x70, 0x00, 0xE0, + 0x00, 0xC0, 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, 0x0E, 0x00, + 0x1C, 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x80, 0x07, + 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, 0x01, 0xE0, 0x03, 0x80, + 0x07, 0x00, 0x0E, 0x00, 0x3C, 0x00, 0x70, 0x00, 0xE0, 0x01, 0xC0, 0x07, + 0x00, 0x0E, 0x00, 0x3C, 0x00, 0x70, 0x01, 0xE0, 0x03, 0x80, 0x0F, 0x00, + 0x1C, 0x00, 0x78, 0x00, 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x1C, 0x00, 0x70, + 0x01, 0xC0, 0x07, 0x00, 0x00, 0x01, 0xC0, 0x07, 0x00, 0x38, 0x18, 0xE3, + 0x7B, 0xBF, 0xFF, 0xF3, 0xFF, 0x01, 0xE0, 0x1F, 0xC0, 0xF7, 0x07, 0x9E, + 0x1C, 0x38, 0x20, 0xC0, 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x78, + 0x00, 0x00, 0xE0, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, 0x00, 0x07, 0x00, + 0x00, 0x1C, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xE0, 0x07, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, + 0x78, 0x00, 0x00, 0xE0, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, 0x00, 0x07, + 0x00, 0x00, 0x1C, 0x00, 0x00, 0x38, 0x00, 0x00, 0x3E, 0x7C, 0xF9, 0xE7, + 0xC1, 0x83, 0x0C, 0x18, 0x63, 0xC6, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFE, 0x7D, 0xF7, 0xBE, 0xF8, 0x00, 0x00, 0x18, 0x00, 0x01, 0xC0, 0x00, + 0x1C, 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 0x00, 0x70, 0x00, 0x07, 0x00, + 0x00, 0x30, 0x00, 0x03, 0x80, 0x00, 0x18, 0x00, 0x01, 0xC0, 0x00, 0x0C, + 0x00, 0x00, 0xE0, 0x00, 0x06, 0x00, 0x00, 0x70, 0x00, 0x03, 0x00, 0x00, + 0x38, 0x00, 0x01, 0x80, 0x00, 0x1C, 0x00, 0x00, 0xC0, 0x00, 0x0E, 0x00, + 0x00, 0x60, 0x00, 0x07, 0x00, 0x00, 0x70, 0x00, 0x03, 0x80, 0x00, 0x38, + 0x00, 0x01, 0x80, 0x00, 0x1C, 0x00, 0x00, 0xC0, 0x00, 0x0E, 0x00, 0x00, + 0x60, 0x00, 0x07, 0x00, 0x00, 0x30, 0x00, 0x03, 0x80, 0x00, 0x18, 0x00, + 0x00, 0x00, 0x0F, 0xC0, 0x00, 0xFF, 0xE0, 0x03, 0xFF, 0xE0, 0x0F, 0xFF, + 0xE0, 0x3F, 0x0F, 0xC0, 0xF8, 0x07, 0x81, 0xE0, 0x0F, 0x87, 0x80, 0x0F, + 0x1F, 0x00, 0x1E, 0x3C, 0x00, 0x3C, 0x78, 0x00, 0x79, 0xE0, 0x00, 0xF3, + 0xC0, 0x01, 0xE7, 0x80, 0x07, 0xDE, 0x00, 0x0F, 0xBC, 0x00, 0x1E, 0x78, + 0x00, 0x3C, 0xF0, 0x00, 0x79, 0xE0, 0x00, 0xF7, 0x80, 0x03, 0xEF, 0x00, + 0x07, 0xDE, 0x00, 0x0F, 0x3C, 0x00, 0x1E, 0x78, 0x00, 0x7C, 0xF0, 0x00, + 0xF1, 0xE0, 0x03, 0xE3, 0xC0, 0x07, 0x87, 0xC0, 0x1F, 0x0F, 0x80, 0x7C, + 0x0F, 0xC3, 0xF0, 0x1F, 0xFF, 0xC0, 0x1F, 0xFF, 0x00, 0x1F, 0xFC, 0x00, + 0x0F, 0xC0, 0x00, 0x00, 0x18, 0x01, 0xC0, 0x1C, 0x01, 0xE0, 0x1F, 0x0F, + 0xFB, 0xFF, 0xDF, 0xFC, 0xFF, 0xE0, 0x0F, 0x00, 0x78, 0x07, 0xC0, 0x3C, + 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x07, 0xC0, 0x3C, 0x01, 0xE0, 0x0F, 0x00, + 0x78, 0x07, 0xC0, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x07, 0xC0, 0x3C, + 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x07, 0xC0, 0x3C, 0x00, 0x00, 0x03, 0xFC, + 0x00, 0x03, 0xFF, 0xE0, 0x00, 0xFF, 0xFE, 0x00, 0x3F, 0xFF, 0xE0, 0x0F, + 0xC0, 0xFC, 0x03, 0xE0, 0x07, 0xC0, 0xF8, 0x00, 0xF8, 0x1F, 0x00, 0x0F, + 0x03, 0xC0, 0x01, 0xE0, 0xF8, 0x00, 0x3C, 0x1E, 0x00, 0x07, 0x80, 0x00, + 0x01, 0xE0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, 0xE0, + 0x00, 0x00, 0xF8, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x1F, + 0xC0, 0x00, 0x0F, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0x00, + 0xFC, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, 0xE0, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0xFF, + 0xFF, 0xFC, 0x3F, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFC, + 0x00, 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xFE, 0x00, 0x3F, 0xFF, 0x80, 0x3F, + 0xFF, 0xE0, 0x1F, 0x81, 0xF8, 0x1F, 0x00, 0x7C, 0x1F, 0x00, 0x1E, 0x0F, + 0x00, 0x0F, 0x0F, 0x80, 0x07, 0x87, 0x80, 0x03, 0xC0, 0x00, 0x03, 0xC0, + 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x7F, 0xE0, + 0x00, 0x3F, 0xE0, 0x00, 0x1F, 0xF8, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x3F, + 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0xF0, 0x00, 0x00, + 0x79, 0xE0, 0x00, 0x3C, 0xF0, 0x00, 0x1E, 0x78, 0x00, 0x1E, 0x3C, 0x00, + 0x0F, 0x1E, 0x00, 0x0F, 0x0F, 0x80, 0x1F, 0x83, 0xF0, 0x3F, 0x81, 0xFF, + 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x1F, 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x00, + 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x7E, + 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x03, 0xFC, 0x00, 0x07, 0xBC, + 0x00, 0x0F, 0xBC, 0x00, 0x1F, 0x7C, 0x00, 0x3E, 0x78, 0x00, 0x7C, 0x78, + 0x00, 0xF8, 0x78, 0x00, 0xF0, 0x78, 0x01, 0xE0, 0xF0, 0x03, 0xC0, 0xF0, + 0x07, 0x80, 0xF0, 0x0F, 0x00, 0xF0, 0x1E, 0x01, 0xF0, 0x3C, 0x01, 0xE0, + 0x78, 0x01, 0xE0, 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, + 0xFF, 0xFF, 0xFE, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, + 0x00, 0x07, 0x80, 0x00, 0x07, 0x80, 0x00, 0x07, 0x80, 0x00, 0x07, 0x80, + 0x00, 0x0F, 0x80, 0x00, 0x7F, 0xFF, 0xC0, 0x1F, 0xFF, 0xF8, 0x03, 0xFF, + 0xFF, 0x00, 0x7F, 0xFF, 0xE0, 0x1E, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x78, 0x00, + 0x00, 0x1E, 0x00, 0x00, 0x03, 0xC7, 0xE0, 0x00, 0xF7, 0xFF, 0x80, 0x1F, + 0xFF, 0xF8, 0x03, 0xFF, 0xFF, 0x80, 0xFE, 0x03, 0xF0, 0x1F, 0x00, 0x3F, + 0x03, 0xC0, 0x03, 0xE0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x07, 0x80, 0x00, + 0x00, 0xF0, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x70, + 0x00, 0x00, 0x1E, 0x1E, 0x00, 0x03, 0xC3, 0xC0, 0x00, 0xF0, 0x7C, 0x00, + 0x3C, 0x0F, 0x80, 0x0F, 0x80, 0xFC, 0x07, 0xE0, 0x1F, 0xFF, 0xF8, 0x01, + 0xFF, 0xFE, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x07, + 0xE0, 0x00, 0x3F, 0xF8, 0x00, 0x7F, 0xFC, 0x00, 0xFF, 0xFE, 0x01, 0xF8, + 0x3E, 0x03, 0xE0, 0x1F, 0x07, 0xC0, 0x1F, 0x0F, 0x80, 0x0F, 0x0F, 0x00, + 0x0F, 0x1F, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x3C, 0x1F, + 0x80, 0x3C, 0x7F, 0xE0, 0x3D, 0xFF, 0xF0, 0x7B, 0xFF, 0xF8, 0x7F, 0xC1, + 0xF8, 0x7F, 0x00, 0x7C, 0x7E, 0x00, 0x7C, 0xFC, 0x00, 0x3C, 0xF8, 0x00, + 0x3C, 0xF8, 0x00, 0x3C, 0xF0, 0x00, 0x3C, 0xF0, 0x00, 0x38, 0xF0, 0x00, + 0x78, 0xF0, 0x00, 0x78, 0xF0, 0x00, 0xF0, 0xF8, 0x01, 0xF0, 0x7C, 0x03, + 0xE0, 0x7E, 0x0F, 0xC0, 0x3F, 0xFF, 0xC0, 0x3F, 0xFF, 0x80, 0x0F, 0xFE, + 0x00, 0x03, 0xF8, 0x00, 0x1F, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0xE1, 0xFF, + 0xFF, 0xF8, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x07, 0x80, + 0x00, 0x03, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x78, + 0x00, 0x00, 0x1E, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x07, 0x80, 0x00, 0x03, + 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x3C, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, 0xC0, 0x00, 0x01, 0xE0, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0x80, + 0x00, 0x03, 0xC0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1E, + 0x00, 0x00, 0x0F, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x01, 0xF0, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xFE, 0x00, 0x1F, + 0xFF, 0x80, 0x1F, 0xFF, 0xE0, 0x1F, 0x81, 0xF8, 0x1F, 0x00, 0x7C, 0x0F, + 0x00, 0x1E, 0x0F, 0x00, 0x0F, 0x07, 0x80, 0x07, 0x83, 0xC0, 0x03, 0xC1, + 0xE0, 0x03, 0xC0, 0xF8, 0x03, 0xC0, 0x7E, 0x07, 0xC0, 0x1F, 0xFF, 0xC0, + 0x07, 0xFF, 0xC0, 0x03, 0xFF, 0xE0, 0x07, 0xFF, 0xF8, 0x07, 0xE0, 0x7E, + 0x07, 0xC0, 0x0F, 0x07, 0x80, 0x07, 0xC7, 0xC0, 0x01, 0xE3, 0xC0, 0x00, + 0xF3, 0xC0, 0x00, 0x79, 0xE0, 0x00, 0x3C, 0xF0, 0x00, 0x1C, 0x78, 0x00, + 0x1E, 0x3C, 0x00, 0x0F, 0x1F, 0x00, 0x0F, 0x0F, 0xC0, 0x0F, 0x83, 0xF0, + 0x3F, 0x81, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x0F, 0xFF, 0x00, 0x01, + 0xFE, 0x00, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x7F, 0xF0, 0x01, 0xFF, 0xFC, + 0x03, 0xFF, 0xFC, 0x07, 0xF0, 0x7E, 0x07, 0xC0, 0x3E, 0x0F, 0x80, 0x1F, + 0x0F, 0x00, 0x0F, 0x1E, 0x00, 0x0F, 0x1E, 0x00, 0x0F, 0x3C, 0x00, 0x0F, + 0x3C, 0x00, 0x0F, 0x3C, 0x00, 0x1F, 0x3C, 0x00, 0x1F, 0x3C, 0x00, 0x3F, + 0x3E, 0x00, 0x7E, 0x3E, 0x00, 0xFE, 0x1F, 0x83, 0xFE, 0x1F, 0xFF, 0xFE, + 0x0F, 0xFF, 0xBC, 0x07, 0xFE, 0x3C, 0x01, 0xF8, 0x7C, 0x00, 0x00, 0x7C, + 0x00, 0x00, 0x78, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF0, 0xF0, 0x01, 0xF0, + 0xF0, 0x03, 0xE0, 0xF8, 0x07, 0xC0, 0xFC, 0x1F, 0xC0, 0x7F, 0xFF, 0x80, + 0x3F, 0xFE, 0x00, 0x1F, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xC1, 0xF0, + 0x78, 0x3E, 0x0F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x1F, + 0x07, 0x83, 0xE0, 0xF8, 0x00, 0x03, 0xE0, 0x7C, 0x0F, 0x03, 0xE0, 0x7C, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x7C, 0x0F, + 0x81, 0xE0, 0x7C, 0x01, 0x80, 0x30, 0x0C, 0x01, 0x80, 0x60, 0x3C, 0x06, + 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x70, 0x00, 0x00, 0xF8, 0x00, + 0x00, 0xFE, 0x00, 0x01, 0xFF, 0x00, 0x03, 0xFE, 0x00, 0x03, 0xFE, 0x00, + 0x07, 0xFC, 0x00, 0x07, 0xFC, 0x00, 0x0F, 0xF8, 0x00, 0x07, 0xF0, 0x00, + 0x03, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFE, + 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x1F, 0xF0, 0x00, + 0x01, 0xFF, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x0E, + 0x00, 0x00, 0x00, 0x80, 0x1F, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0xE3, 0xFF, + 0xFF, 0xF8, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, + 0xC7, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0xF8, 0x04, 0x00, 0x00, 0x01, 0xC0, + 0x00, 0x00, 0xFC, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x03, 0xFE, 0x00, 0x00, + 0x3F, 0xE0, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFE, + 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x00, 0x00, + 0x3F, 0x80, 0x00, 0x7F, 0xC0, 0x00, 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x01, + 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x03, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x00, + 0x7C, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0xFE, + 0x00, 0x3F, 0xF8, 0x0F, 0xFF, 0xC1, 0xFF, 0xFE, 0x1F, 0x03, 0xE3, 0xE0, + 0x1F, 0x7C, 0x00, 0xF7, 0x80, 0x0F, 0x78, 0x00, 0xFF, 0x00, 0x0F, 0xF0, + 0x01, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, + 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x1F, 0x00, + 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x07, 0x80, 0x00, 0x78, 0x00, 0x0F, 0x80, + 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1E, 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, 0xE0, 0x00, 0x3E, + 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0x80, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFE, + 0x00, 0x00, 0x7F, 0xE0, 0x0F, 0xF8, 0x00, 0x0F, 0xF0, 0x00, 0x1F, 0xE0, + 0x00, 0xFE, 0x00, 0x00, 0x3F, 0x80, 0x0F, 0xC0, 0x00, 0x00, 0xFC, 0x00, + 0xFC, 0x00, 0x00, 0x01, 0xF0, 0x0F, 0xC0, 0x00, 0x00, 0x0F, 0x80, 0xF8, + 0x00, 0xFC, 0x00, 0x3E, 0x0F, 0x80, 0x1F, 0xF9, 0xE1, 0xF0, 0x78, 0x03, + 0xFF, 0xCF, 0x07, 0x87, 0xC0, 0x3F, 0x0F, 0xF0, 0x3C, 0x7C, 0x03, 0xE0, + 0x3F, 0x01, 0xE3, 0xC0, 0x3E, 0x01, 0xF8, 0x0F, 0x3E, 0x03, 0xE0, 0x0F, + 0x80, 0x79, 0xE0, 0x1E, 0x00, 0x7C, 0x03, 0xDF, 0x01, 0xE0, 0x03, 0xC0, + 0x3E, 0xF0, 0x1F, 0x00, 0x3E, 0x01, 0xE7, 0x80, 0xF0, 0x01, 0xE0, 0x0F, + 0x38, 0x07, 0x80, 0x0F, 0x00, 0xFB, 0xC0, 0x78, 0x00, 0xF0, 0x07, 0x9E, + 0x03, 0xC0, 0x07, 0x80, 0x7C, 0xF0, 0x1E, 0x00, 0x78, 0x07, 0xC7, 0x80, + 0xF0, 0x07, 0xC0, 0x7E, 0x3C, 0x07, 0x80, 0x7C, 0x07, 0xE1, 0xE0, 0x3E, + 0x07, 0xE0, 0x7E, 0x0F, 0x00, 0xF8, 0x7F, 0x8F, 0xC0, 0x7C, 0x07, 0xFF, + 0x7F, 0xFC, 0x01, 0xE0, 0x1F, 0xF1, 0xFF, 0x80, 0x0F, 0x00, 0x7E, 0x0F, + 0xF0, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, + 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0xF8, 0x00, 0x00, + 0x0F, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0x00, 0x00, 0x00, + 0x3F, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1F, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, + 0x1F, 0xE0, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x03, 0xDF, 0x00, 0x00, 0x1E, + 0x7C, 0x00, 0x00, 0x79, 0xF0, 0x00, 0x03, 0xC7, 0xC0, 0x00, 0x0F, 0x1F, + 0x00, 0x00, 0x78, 0x3C, 0x00, 0x03, 0xE0, 0xF0, 0x00, 0x0F, 0x03, 0xE0, + 0x00, 0x78, 0x0F, 0x80, 0x01, 0xE0, 0x3E, 0x00, 0x0F, 0x00, 0xF8, 0x00, + 0x3C, 0x03, 0xE0, 0x01, 0xE0, 0x0F, 0x80, 0x0F, 0x80, 0x1E, 0x00, 0x3C, + 0x00, 0x7C, 0x01, 0xFF, 0xFF, 0xF0, 0x07, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, + 0xFF, 0x00, 0xFF, 0xFF, 0xFC, 0x07, 0xC0, 0x01, 0xF0, 0x3E, 0x00, 0x03, + 0xC0, 0xF8, 0x00, 0x0F, 0x87, 0xC0, 0x00, 0x3E, 0x1E, 0x00, 0x00, 0xF8, + 0xF8, 0x00, 0x03, 0xE3, 0xC0, 0x00, 0x0F, 0x9F, 0x00, 0x00, 0x3E, 0xF8, + 0x00, 0x00, 0x7B, 0xE0, 0x00, 0x01, 0xF0, 0x01, 0xFF, 0xFF, 0x00, 0x0F, + 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0xE0, 0x3E, 0x00, + 0x1F, 0x81, 0xE0, 0x00, 0x7C, 0x0F, 0x00, 0x01, 0xE0, 0x78, 0x00, 0x0F, + 0x03, 0xC0, 0x00, 0x78, 0x3C, 0x00, 0x03, 0xC1, 0xE0, 0x00, 0x3C, 0x0F, + 0x00, 0x01, 0xE0, 0x78, 0x00, 0x1E, 0x07, 0xC0, 0x03, 0xE0, 0x3F, 0xFF, + 0xFC, 0x01, 0xFF, 0xFF, 0xC0, 0x0F, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFE, + 0x07, 0x80, 0x01, 0xF0, 0x3C, 0x00, 0x07, 0xC1, 0xE0, 0x00, 0x1E, 0x0F, + 0x00, 0x00, 0xF0, 0xF0, 0x00, 0x07, 0x87, 0x80, 0x00, 0x3C, 0x3C, 0x00, + 0x01, 0xE1, 0xE0, 0x00, 0x1E, 0x1F, 0x00, 0x00, 0xF0, 0xF0, 0x00, 0x0F, + 0x87, 0x80, 0x00, 0xF8, 0x3C, 0x00, 0x1F, 0x81, 0xFF, 0xFF, 0xF8, 0x1F, + 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xF8, 0x07, 0xFF, 0xFF, 0x00, 0x00, 0x00, + 0x01, 0xFE, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x1F, + 0xFF, 0xFC, 0x00, 0xFE, 0x03, 0xF0, 0x07, 0xE0, 0x03, 0xE0, 0x3E, 0x00, + 0x07, 0x81, 0xF0, 0x00, 0x1E, 0x07, 0x80, 0x00, 0x3C, 0x3C, 0x00, 0x00, + 0xF1, 0xF0, 0x00, 0x03, 0xC7, 0x80, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, + 0xF0, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x78, + 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x3C, 0x00, + 0x00, 0x00, 0xF0, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x0F, 0x00, 0x00, + 0x00, 0x3C, 0x00, 0x00, 0x3C, 0xF0, 0x00, 0x01, 0xF3, 0xC0, 0x00, 0x07, + 0x8F, 0x80, 0x00, 0x3E, 0x3E, 0x00, 0x00, 0xF0, 0x7C, 0x00, 0x07, 0xC1, + 0xF0, 0x00, 0x3E, 0x03, 0xE0, 0x03, 0xF0, 0x0F, 0xE0, 0x3F, 0x80, 0x1F, + 0xFF, 0xFC, 0x00, 0x3F, 0xFF, 0xE0, 0x00, 0x7F, 0xFE, 0x00, 0x00, 0x3F, + 0xC0, 0x00, 0x01, 0xFF, 0xFF, 0x00, 0x03, 0xFF, 0xFF, 0x80, 0x07, 0xFF, + 0xFF, 0x80, 0x1F, 0xFF, 0xFF, 0x80, 0x3E, 0x00, 0x3F, 0x80, 0x78, 0x00, + 0x1F, 0x80, 0xF0, 0x00, 0x1F, 0x03, 0xE0, 0x00, 0x1E, 0x07, 0xC0, 0x00, + 0x3E, 0x0F, 0x00, 0x00, 0x3C, 0x1E, 0x00, 0x00, 0x78, 0x3C, 0x00, 0x00, + 0xF0, 0xF8, 0x00, 0x01, 0xE1, 0xF0, 0x00, 0x03, 0xC3, 0xC0, 0x00, 0x07, + 0x87, 0x80, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x3C, 0x3E, 0x00, 0x00, 0x78, + 0x7C, 0x00, 0x00, 0xF0, 0xF0, 0x00, 0x01, 0xE1, 0xE0, 0x00, 0x07, 0x87, + 0xC0, 0x00, 0x0F, 0x0F, 0x80, 0x00, 0x3E, 0x1E, 0x00, 0x00, 0x78, 0x3C, + 0x00, 0x01, 0xF0, 0x78, 0x00, 0x03, 0xC1, 0xF0, 0x00, 0x0F, 0x03, 0xE0, + 0x00, 0x3E, 0x07, 0x80, 0x01, 0xF8, 0x0F, 0x00, 0x0F, 0xE0, 0x1F, 0xFF, + 0xFF, 0x80, 0x7F, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0xF0, 0x01, 0xFF, 0xFF, + 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, 0xFC, 0x07, 0xFF, + 0xFF, 0xF0, 0x1F, 0xFF, 0xFF, 0xE0, 0x3E, 0x00, 0x00, 0x00, 0x78, 0x00, + 0x00, 0x00, 0xF0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x07, 0xC0, 0x00, + 0x00, 0x0F, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, + 0x07, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xE0, 0x3F, 0xFF, 0xFF, 0x80, + 0x7F, 0xFF, 0xFF, 0x00, 0xF0, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x07, + 0xC0, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x03, 0xE0, + 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x1F, 0xFF, + 0xFF, 0xE0, 0x7F, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, + 0xFE, 0x00, 0x01, 0xFF, 0xFF, 0xFC, 0x07, 0xFF, 0xFF, 0xF0, 0x1F, 0xFF, + 0xFF, 0xC0, 0xFF, 0xFF, 0xFE, 0x03, 0xE0, 0x00, 0x00, 0x0F, 0x00, 0x00, + 0x00, 0x3C, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x0F, + 0x80, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x03, 0xFF, + 0xFF, 0xC0, 0x0F, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0xFC, 0x01, 0xFF, 0xFF, + 0xF0, 0x07, 0x80, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, + 0x03, 0xE0, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, + 0xF0, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x78, + 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x3E, 0x00, + 0x00, 0x00, 0xF0, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x7F, 0xC0, 0x00, 0x01, 0xFF, 0xF8, 0x00, 0x07, 0xFF, 0xFF, 0x00, 0x07, + 0xFF, 0xFF, 0xC0, 0x07, 0xF0, 0x0F, 0xF0, 0x0F, 0xC0, 0x00, 0xF8, 0x0F, + 0xC0, 0x00, 0x3E, 0x07, 0x80, 0x00, 0x1F, 0x07, 0x80, 0x00, 0x07, 0x87, + 0xC0, 0x00, 0x03, 0xC3, 0xC0, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x03, + 0xE0, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, + 0xF0, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x1F, 0xFF, + 0xBC, 0x00, 0x0F, 0xFF, 0xDE, 0x00, 0x0F, 0xFF, 0xEF, 0x00, 0x07, 0xFF, + 0xF7, 0x80, 0x00, 0x00, 0x73, 0xC0, 0x00, 0x00, 0x39, 0xE0, 0x00, 0x00, + 0x3C, 0xF0, 0x00, 0x00, 0x1E, 0x78, 0x00, 0x00, 0x1F, 0x3E, 0x00, 0x00, + 0x0F, 0x8F, 0x00, 0x00, 0x0F, 0x87, 0xC0, 0x00, 0x0F, 0xC3, 0xF0, 0x00, + 0x0F, 0xE0, 0xFC, 0x00, 0x1F, 0xF0, 0x7F, 0x80, 0x7F, 0x78, 0x1F, 0xFF, + 0xFE, 0x38, 0x03, 0xFF, 0xFE, 0x1C, 0x00, 0xFF, 0xFC, 0x0E, 0x00, 0x0F, + 0xF0, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x80, 0xF0, 0x00, 0x03, 0xC0, + 0x78, 0x00, 0x03, 0xE0, 0x7C, 0x00, 0x01, 0xF0, 0x3E, 0x00, 0x00, 0xF0, + 0x1E, 0x00, 0x00, 0x78, 0x0F, 0x00, 0x00, 0x3C, 0x0F, 0x80, 0x00, 0x3E, + 0x07, 0xC0, 0x00, 0x1F, 0x03, 0xC0, 0x00, 0x0F, 0x01, 0xE0, 0x00, 0x07, + 0x80, 0xF0, 0x00, 0x03, 0xC0, 0xF8, 0x00, 0x03, 0xE0, 0x7C, 0x00, 0x01, + 0xF0, 0x3C, 0x00, 0x00, 0xF0, 0x1F, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, + 0xFC, 0x0F, 0xFF, 0xFF, 0xFE, 0x07, 0xFF, 0xFF, 0xFE, 0x03, 0xC0, 0x00, + 0x0F, 0x01, 0xE0, 0x00, 0x07, 0x81, 0xF0, 0x00, 0x07, 0xC0, 0xF8, 0x00, + 0x03, 0xE0, 0x78, 0x00, 0x01, 0xE0, 0x3C, 0x00, 0x00, 0xF0, 0x1E, 0x00, + 0x00, 0x78, 0x1F, 0x00, 0x00, 0x7C, 0x0F, 0x80, 0x00, 0x3C, 0x07, 0x80, + 0x00, 0x1E, 0x03, 0xC0, 0x00, 0x0F, 0x01, 0xE0, 0x00, 0x0F, 0x81, 0xF0, + 0x00, 0x07, 0xC0, 0xF0, 0x00, 0x03, 0xC0, 0x78, 0x00, 0x01, 0xE0, 0x00, + 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xE0, 0x3C, 0x07, 0x81, 0xF0, 0x3E, 0x07, + 0x80, 0xF0, 0x1E, 0x07, 0xC0, 0xF8, 0x1E, 0x03, 0xC0, 0x78, 0x1F, 0x03, + 0xE0, 0x78, 0x0F, 0x01, 0xE0, 0x7C, 0x0F, 0x81, 0xE0, 0x3C, 0x07, 0x81, + 0xF0, 0x3E, 0x07, 0x80, 0xF0, 0x1E, 0x07, 0xC0, 0xF8, 0x1E, 0x00, 0x00, + 0x00, 0x07, 0x80, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x01, 0xE0, + 0x00, 0x00, 0xF0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0x1E, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x07, 0x80, 0x00, 0x07, + 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0xF0, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x78, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x1E, 0x00, 0x00, + 0x0F, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x07, 0x80, 0x00, 0x03, 0xC0, 0xF0, + 0x01, 0xE0, 0x78, 0x00, 0xF0, 0x78, 0x00, 0xF8, 0x3C, 0x00, 0x78, 0x1E, + 0x00, 0x3C, 0x0F, 0x00, 0x3E, 0x07, 0xC0, 0x3E, 0x03, 0xF0, 0x7E, 0x00, + 0xFF, 0xFF, 0x00, 0x3F, 0xFF, 0x00, 0x0F, 0xFE, 0x00, 0x01, 0xFC, 0x00, + 0x00, 0x01, 0xE0, 0x00, 0x0F, 0xC0, 0x78, 0x00, 0x07, 0xC0, 0x1E, 0x00, + 0x03, 0xE0, 0x0F, 0x80, 0x03, 0xF0, 0x03, 0xE0, 0x01, 0xF8, 0x00, 0xF0, + 0x00, 0xFC, 0x00, 0x3C, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x3E, 0x00, 0x07, + 0xC0, 0x3F, 0x00, 0x01, 0xE0, 0x1F, 0x80, 0x00, 0x78, 0x0F, 0x80, 0x00, + 0x1E, 0x07, 0xC0, 0x00, 0x0F, 0x83, 0xE0, 0x00, 0x03, 0xE3, 0xF0, 0x00, + 0x00, 0xF1, 0xFC, 0x00, 0x00, 0x3C, 0xFF, 0x00, 0x00, 0x0F, 0x7F, 0xE0, + 0x00, 0x07, 0xFE, 0xF8, 0x00, 0x01, 0xFE, 0x1E, 0x00, 0x00, 0x7F, 0x07, + 0xC0, 0x00, 0x1F, 0x80, 0xF0, 0x00, 0x0F, 0xC0, 0x3E, 0x00, 0x03, 0xE0, + 0x07, 0x80, 0x00, 0xF0, 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x7C, 0x00, 0x0F, + 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0x7C, 0x00, + 0x78, 0x00, 0x1F, 0x00, 0x1E, 0x00, 0x03, 0xE0, 0x07, 0x80, 0x00, 0xF8, + 0x03, 0xE0, 0x00, 0x1F, 0x00, 0xF0, 0x00, 0x07, 0xC0, 0x3C, 0x00, 0x00, + 0xF8, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x00, 0xF8, + 0x00, 0x03, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, 0x01, 0xF0, 0x00, + 0x07, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, 0x0F, + 0x80, 0x00, 0x3E, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, + 0x00, 0x7C, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x00, + 0xF8, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xF0, + 0x00, 0x07, 0xC0, 0x00, 0x1F, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, + 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xE0, + 0x01, 0xF8, 0x00, 0x00, 0x7E, 0x03, 0xF8, 0x00, 0x01, 0xFC, 0x0F, 0xF0, + 0x00, 0x03, 0xF8, 0x1F, 0xE0, 0x00, 0x0F, 0xF0, 0x3F, 0xC0, 0x00, 0x1F, + 0xC0, 0x7F, 0x80, 0x00, 0x7F, 0x80, 0xFF, 0x00, 0x00, 0xEF, 0x03, 0xFE, + 0x00, 0x03, 0xFE, 0x07, 0xBC, 0x00, 0x0F, 0x78, 0x0F, 0x3C, 0x00, 0x1E, + 0xF0, 0x1E, 0x78, 0x00, 0x79, 0xE0, 0x3C, 0xF0, 0x00, 0xF3, 0xC0, 0xF9, + 0xE0, 0x03, 0xCF, 0x81, 0xE3, 0xC0, 0x07, 0x9E, 0x03, 0xC7, 0x80, 0x1E, + 0x3C, 0x07, 0x8F, 0x00, 0x38, 0x78, 0x1F, 0x1E, 0x00, 0xF0, 0xF0, 0x3C, + 0x1E, 0x03, 0xC3, 0xE0, 0x78, 0x3C, 0x07, 0x87, 0x80, 0xF0, 0x78, 0x1E, + 0x0F, 0x01, 0xE0, 0xF0, 0x3C, 0x1E, 0x07, 0xC1, 0xE0, 0xF0, 0x7C, 0x0F, + 0x03, 0xC1, 0xE0, 0xF0, 0x1E, 0x07, 0x87, 0x81, 0xE0, 0x3C, 0x0F, 0x0E, + 0x03, 0xC0, 0x78, 0x0F, 0x3C, 0x07, 0x81, 0xF0, 0x1E, 0x70, 0x1F, 0x03, + 0xC0, 0x3D, 0xE0, 0x3C, 0x07, 0x80, 0x7F, 0x80, 0x78, 0x0F, 0x00, 0xFF, + 0x00, 0xF0, 0x3E, 0x01, 0xFC, 0x01, 0xE0, 0x78, 0x03, 0xF8, 0x07, 0xC0, + 0xF0, 0x07, 0xE0, 0x0F, 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x01, 0xF0, + 0x00, 0x03, 0xC0, 0x7E, 0x00, 0x01, 0xF0, 0x3F, 0x80, 0x00, 0x78, 0x0F, + 0xE0, 0x00, 0x1E, 0x03, 0xFC, 0x00, 0x07, 0x80, 0xFF, 0x00, 0x03, 0xE0, + 0x3F, 0xE0, 0x00, 0xF0, 0x1F, 0xF8, 0x00, 0x3C, 0x07, 0x9E, 0x00, 0x0F, + 0x01, 0xE7, 0xC0, 0x03, 0xC0, 0x78, 0xF0, 0x01, 0xF0, 0x1E, 0x3E, 0x00, + 0x78, 0x0F, 0x87, 0x80, 0x1E, 0x03, 0xC1, 0xF0, 0x07, 0x80, 0xF0, 0x7C, + 0x01, 0xE0, 0x3C, 0x0F, 0x00, 0xF8, 0x1F, 0x03, 0xE0, 0x3C, 0x07, 0x80, + 0x78, 0x0F, 0x01, 0xE0, 0x1F, 0x03, 0xC0, 0x78, 0x07, 0xC1, 0xF0, 0x1E, + 0x00, 0xF8, 0x78, 0x0F, 0x80, 0x3E, 0x1E, 0x03, 0xC0, 0x07, 0x87, 0x80, + 0xF0, 0x01, 0xF1, 0xE0, 0x3C, 0x00, 0x3C, 0xF8, 0x0F, 0x00, 0x0F, 0xBC, + 0x07, 0xC0, 0x03, 0xEF, 0x01, 0xE0, 0x00, 0x7F, 0xC0, 0x78, 0x00, 0x1F, + 0xF0, 0x1E, 0x00, 0x03, 0xFC, 0x0F, 0x80, 0x00, 0xFE, 0x03, 0xC0, 0x00, + 0x1F, 0x80, 0xF0, 0x00, 0x07, 0xE0, 0x3C, 0x00, 0x01, 0xF8, 0x00, 0x00, + 0x00, 0xFF, 0x00, 0x00, 0x03, 0xFF, 0xF0, 0x00, 0x07, 0xFF, 0xFC, 0x00, + 0x0F, 0xFF, 0xFF, 0x80, 0x0F, 0xF0, 0x1F, 0xC0, 0x0F, 0xC0, 0x03, 0xF0, + 0x0F, 0x80, 0x00, 0xFC, 0x0F, 0x80, 0x00, 0x3E, 0x0F, 0x80, 0x00, 0x0F, + 0x07, 0x80, 0x00, 0x07, 0xC7, 0xC0, 0x00, 0x01, 0xE3, 0xC0, 0x00, 0x00, + 0xF3, 0xC0, 0x00, 0x00, 0x79, 0xE0, 0x00, 0x00, 0x3D, 0xE0, 0x00, 0x00, + 0x1E, 0xF0, 0x00, 0x00, 0x0F, 0x78, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, + 0x07, 0xFC, 0x00, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x01, 0xEF, 0x00, 0x00, + 0x00, 0xF7, 0x80, 0x00, 0x00, 0xFB, 0xC0, 0x00, 0x00, 0x79, 0xE0, 0x00, + 0x00, 0x3C, 0xF0, 0x00, 0x00, 0x3E, 0x78, 0x00, 0x00, 0x1E, 0x3E, 0x00, + 0x00, 0x1F, 0x0F, 0x00, 0x00, 0x1F, 0x07, 0xC0, 0x00, 0x1F, 0x03, 0xF0, + 0x00, 0x1F, 0x00, 0xFC, 0x00, 0x3F, 0x80, 0x3F, 0x80, 0x7F, 0x80, 0x1F, + 0xFF, 0xFF, 0x00, 0x03, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0x00, + 0x0F, 0xF8, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x00, 0x0F, 0xFF, 0xFE, 0x00, + 0x7F, 0xFF, 0xF8, 0x07, 0xFF, 0xFF, 0xE0, 0x3E, 0x00, 0x3F, 0x81, 0xE0, + 0x00, 0x7C, 0x0F, 0x00, 0x01, 0xE0, 0xF8, 0x00, 0x0F, 0x07, 0xC0, 0x00, + 0x78, 0x3C, 0x00, 0x03, 0xC1, 0xE0, 0x00, 0x1E, 0x0F, 0x00, 0x01, 0xE0, + 0xF8, 0x00, 0x0F, 0x07, 0xC0, 0x00, 0xF8, 0x3C, 0x00, 0x0F, 0x81, 0xE0, + 0x01, 0xF8, 0x0F, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFC, 0x07, 0xFF, 0xFF, + 0x80, 0x3F, 0xFF, 0xF0, 0x01, 0xE0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, + 0xF8, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x01, 0xE0, + 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x07, 0x80, 0x00, + 0x00, 0x3C, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, + 0xF0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, + 0x00, 0x03, 0xFF, 0xF0, 0x00, 0x07, 0xFF, 0xFC, 0x00, 0x0F, 0xFF, 0xFF, + 0x80, 0x0F, 0xF0, 0x1F, 0xC0, 0x0F, 0xC0, 0x03, 0xF0, 0x0F, 0xC0, 0x00, + 0xFC, 0x0F, 0x80, 0x00, 0x3E, 0x0F, 0x80, 0x00, 0x0F, 0x07, 0x80, 0x00, + 0x07, 0xC7, 0xC0, 0x00, 0x01, 0xE3, 0xC0, 0x00, 0x00, 0xF3, 0xC0, 0x00, + 0x00, 0x79, 0xE0, 0x00, 0x00, 0x3D, 0xE0, 0x00, 0x00, 0x1E, 0xF0, 0x00, + 0x00, 0x0F, 0x78, 0x00, 0x00, 0x07, 0xB8, 0x00, 0x00, 0x03, 0xFC, 0x00, + 0x00, 0x03, 0xDE, 0x00, 0x00, 0x01, 0xEF, 0x00, 0x00, 0x00, 0xF7, 0x80, + 0x00, 0x00, 0x7B, 0xC0, 0x00, 0x00, 0x79, 0xE0, 0x00, 0x00, 0x3C, 0xF0, + 0x00, 0x00, 0x3C, 0x78, 0x00, 0x08, 0x3E, 0x3E, 0x00, 0x0E, 0x1E, 0x0F, + 0x00, 0x0F, 0x9F, 0x07, 0xC0, 0x07, 0xFF, 0x03, 0xF0, 0x01, 0xFF, 0x00, + 0xFC, 0x00, 0x7F, 0x00, 0x3F, 0x80, 0xFF, 0x80, 0x1F, 0xFF, 0xFF, 0xE0, + 0x03, 0xFF, 0xFF, 0xF8, 0x00, 0xFF, 0xFC, 0x7E, 0x00, 0x0F, 0xF0, 0x1F, + 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, + 0xC0, 0x07, 0xFF, 0xFF, 0xC0, 0x1F, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFE, + 0x03, 0xE0, 0x00, 0xFC, 0x0F, 0x00, 0x01, 0xF0, 0x3C, 0x00, 0x03, 0xC1, + 0xF0, 0x00, 0x0F, 0x07, 0xC0, 0x00, 0x3C, 0x1E, 0x00, 0x00, 0xF0, 0x78, + 0x00, 0x03, 0xC1, 0xE0, 0x00, 0x1E, 0x0F, 0x80, 0x00, 0x78, 0x3E, 0x00, + 0x03, 0xE0, 0xF0, 0x00, 0x1F, 0x03, 0xC0, 0x01, 0xF8, 0x0F, 0xFF, 0xFF, + 0xC0, 0x7F, 0xFF, 0xFE, 0x01, 0xFF, 0xFF, 0xF8, 0x07, 0xFF, 0xFF, 0xF0, + 0x1E, 0x00, 0x07, 0xE0, 0xF8, 0x00, 0x0F, 0x83, 0xE0, 0x00, 0x1E, 0x0F, + 0x00, 0x00, 0x78, 0x3C, 0x00, 0x01, 0xE0, 0xF0, 0x00, 0x07, 0x87, 0xC0, + 0x00, 0x1E, 0x1F, 0x00, 0x00, 0xF0, 0x78, 0x00, 0x03, 0xC1, 0xE0, 0x00, + 0x0F, 0x07, 0x80, 0x00, 0x3C, 0x3E, 0x00, 0x00, 0xF0, 0xF0, 0x00, 0x03, + 0xC3, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0xFF, 0xFC, + 0x00, 0x1F, 0xFF, 0xF8, 0x01, 0xFF, 0xFF, 0xC0, 0x1F, 0xC0, 0x7F, 0x01, + 0xF0, 0x00, 0xFC, 0x0F, 0x00, 0x03, 0xE0, 0xF0, 0x00, 0x0F, 0x07, 0x00, + 0x00, 0x78, 0x78, 0x00, 0x03, 0xC3, 0xC0, 0x00, 0x1E, 0x1E, 0x00, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, + 0xFF, 0xE0, 0x00, 0x03, 0xFF, 0xF0, 0x00, 0x0F, 0xFF, 0xF0, 0x00, 0x0F, + 0xFF, 0xC0, 0x00, 0x07, 0xFF, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x07, + 0xF0, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x3C, 0xF0, 0x00, 0x01, 0xE7, + 0x80, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x71, 0xE0, 0x00, 0x07, 0x8F, 0x00, + 0x00, 0x3C, 0x7C, 0x00, 0x03, 0xC1, 0xF0, 0x00, 0x7C, 0x0F, 0xE0, 0x1F, + 0xC0, 0x3F, 0xFF, 0xFC, 0x00, 0xFF, 0xFF, 0xC0, 0x03, 0xFF, 0xF8, 0x00, + 0x03, 0xFE, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0x7F, + 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFE, 0x00, 0x0F, 0x00, 0x00, 0x01, 0xF0, + 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x1E, 0x00, 0x00, + 0x01, 0xE0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x07, 0xC0, 0x00, + 0x00, 0x78, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x78, 0x00, 0x00, 0x0F, + 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0xF0, 0x00, + 0x00, 0x0F, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, + 0xE0, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x3E, 0x00, + 0x00, 0x03, 0xC0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, + 0x7C, 0x00, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x0F, 0x00, 0x00, 0x3C, 0x1E, + 0x00, 0x00, 0xF8, 0x7C, 0x00, 0x01, 0xF0, 0xF8, 0x00, 0x03, 0xC1, 0xE0, + 0x00, 0x07, 0x83, 0xC0, 0x00, 0x0F, 0x0F, 0x80, 0x00, 0x3E, 0x1F, 0x00, + 0x00, 0x7C, 0x3C, 0x00, 0x00, 0xF0, 0x78, 0x00, 0x01, 0xE0, 0xF0, 0x00, + 0x03, 0xC3, 0xE0, 0x00, 0x0F, 0x87, 0xC0, 0x00, 0x1F, 0x0F, 0x00, 0x00, + 0x3C, 0x1E, 0x00, 0x00, 0x78, 0x3C, 0x00, 0x01, 0xF0, 0xF8, 0x00, 0x03, + 0xE1, 0xF0, 0x00, 0x07, 0x83, 0xC0, 0x00, 0x0F, 0x07, 0x80, 0x00, 0x1E, + 0x1F, 0x00, 0x00, 0x7C, 0x3E, 0x00, 0x00, 0xF8, 0x78, 0x00, 0x01, 0xE0, + 0xF0, 0x00, 0x03, 0xC1, 0xE0, 0x00, 0x0F, 0x83, 0xC0, 0x00, 0x1E, 0x07, + 0x80, 0x00, 0x7C, 0x0F, 0x80, 0x01, 0xF0, 0x0F, 0x80, 0x07, 0xE0, 0x1F, + 0xC0, 0x7F, 0x80, 0x1F, 0xFF, 0xFE, 0x00, 0x1F, 0xFF, 0xF0, 0x00, 0x1F, + 0xFF, 0xC0, 0x00, 0x07, 0xFC, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xFF, 0xC0, + 0x00, 0x0F, 0xBE, 0x00, 0x00, 0x79, 0xF0, 0x00, 0x07, 0xC7, 0x80, 0x00, + 0x3C, 0x3C, 0x00, 0x03, 0xE1, 0xE0, 0x00, 0x1E, 0x0F, 0x80, 0x01, 0xF0, + 0x7C, 0x00, 0x0F, 0x03, 0xE0, 0x00, 0xF8, 0x1F, 0x00, 0x0F, 0x80, 0x78, + 0x00, 0x78, 0x03, 0xC0, 0x07, 0xC0, 0x1E, 0x00, 0x3C, 0x00, 0xF0, 0x03, + 0xE0, 0x07, 0xC0, 0x1E, 0x00, 0x3E, 0x01, 0xF0, 0x01, 0xF0, 0x0F, 0x00, + 0x07, 0x80, 0xF0, 0x00, 0x3C, 0x07, 0x80, 0x01, 0xE0, 0x78, 0x00, 0x0F, + 0x07, 0xC0, 0x00, 0x7C, 0x3C, 0x00, 0x03, 0xE3, 0xE0, 0x00, 0x1F, 0x1E, + 0x00, 0x00, 0xF9, 0xF0, 0x00, 0x03, 0xCF, 0x00, 0x00, 0x1E, 0xF0, 0x00, + 0x00, 0xF7, 0x80, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x01, + 0xFC, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0xF0, + 0x00, 0x1F, 0x00, 0x03, 0xDE, 0x00, 0x07, 0xE0, 0x00, 0xFB, 0xC0, 0x00, + 0xFC, 0x00, 0x1E, 0x78, 0x00, 0x3F, 0x80, 0x07, 0xCF, 0x00, 0x07, 0xF0, + 0x00, 0xF9, 0xE0, 0x01, 0xFE, 0x00, 0x3E, 0x3C, 0x00, 0x7F, 0xC0, 0x07, + 0xC7, 0x80, 0x0F, 0x78, 0x01, 0xF0, 0xF0, 0x03, 0xEF, 0x00, 0x3E, 0x1E, + 0x00, 0x79, 0xE0, 0x0F, 0x83, 0xC0, 0x1F, 0x3C, 0x01, 0xF0, 0x78, 0x03, + 0xC7, 0x80, 0x3C, 0x0F, 0x00, 0xF8, 0xF0, 0x0F, 0x80, 0xE0, 0x1E, 0x1E, + 0x01, 0xE0, 0x1C, 0x07, 0xC1, 0xC0, 0x7C, 0x03, 0x80, 0xF0, 0x3C, 0x0F, + 0x00, 0x70, 0x3E, 0x07, 0x83, 0xE0, 0x0E, 0x07, 0x80, 0xF0, 0x78, 0x01, + 0xC1, 0xF0, 0x1E, 0x1F, 0x00, 0x3C, 0x3C, 0x03, 0xC3, 0xE0, 0x07, 0x8F, + 0x80, 0x78, 0x78, 0x00, 0xF1, 0xE0, 0x0F, 0x1F, 0x00, 0x1E, 0x7C, 0x01, + 0xE3, 0xC0, 0x03, 0xCF, 0x00, 0x3C, 0xF8, 0x00, 0x7B, 0xE0, 0x07, 0x9E, + 0x00, 0x0F, 0x78, 0x00, 0xF7, 0xC0, 0x01, 0xFF, 0x00, 0x1E, 0xF0, 0x00, + 0x3F, 0xC0, 0x03, 0xFE, 0x00, 0x07, 0xF8, 0x00, 0x7F, 0x80, 0x00, 0xFE, + 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xC0, 0x00, 0xFC, 0x00, 0x03, 0xF0, 0x00, + 0x1F, 0x80, 0x00, 0x7E, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x7C, + 0x00, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xF0, 0x07, 0xC0, 0x00, 0x3E, 0x00, + 0x7C, 0x00, 0x07, 0xC0, 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x1F, + 0x00, 0x01, 0xF0, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x7C, 0x00, 0x00, 0xF8, + 0x0F, 0x80, 0x00, 0x0F, 0x81, 0xF0, 0x00, 0x00, 0x7C, 0x1F, 0x00, 0x00, + 0x07, 0xC3, 0xE0, 0x00, 0x00, 0x7C, 0x7C, 0x00, 0x00, 0x03, 0xEF, 0x80, + 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x1F, + 0xC0, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, + 0x03, 0xFC, 0x00, 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x00, 0x0F, 0xBE, 0x00, + 0x00, 0x01, 0xF3, 0xE0, 0x00, 0x00, 0x3E, 0x1F, 0x00, 0x00, 0x03, 0xE1, + 0xF0, 0x00, 0x00, 0x7C, 0x0F, 0x80, 0x00, 0x0F, 0x80, 0xF8, 0x00, 0x01, + 0xF0, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x03, 0xE0, + 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x03, 0xF0, 0x03, 0xF0, 0x00, + 0x1F, 0x00, 0x7E, 0x00, 0x01, 0xF8, 0x0F, 0xC0, 0x00, 0x0F, 0x80, 0xF8, + 0x00, 0x00, 0x7D, 0xF0, 0x00, 0x03, 0xE7, 0xC0, 0x00, 0x1F, 0x1F, 0x80, + 0x00, 0xF8, 0x3E, 0x00, 0x03, 0xE0, 0xF8, 0x00, 0x1F, 0x01, 0xF0, 0x00, + 0xF8, 0x07, 0xC0, 0x07, 0xC0, 0x0F, 0x00, 0x3E, 0x00, 0x3E, 0x01, 0xF0, + 0x00, 0xF8, 0x07, 0xC0, 0x01, 0xF0, 0x3E, 0x00, 0x07, 0xC1, 0xF0, 0x00, + 0x0F, 0x0F, 0x80, 0x00, 0x3E, 0x7C, 0x00, 0x00, 0x79, 0xE0, 0x00, 0x01, + 0xFF, 0x80, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x3F, + 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x0F, 0x80, + 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x03, 0xC0, 0x00, + 0x00, 0x1F, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, + 0x07, 0x80, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x03, + 0xE0, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xC0, + 0x1F, 0xFF, 0xFF, 0xE0, 0x07, 0xFF, 0xFF, 0xF8, 0x03, 0xFF, 0xFF, 0xFE, + 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x07, + 0xC0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, + 0xF8, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, + 0x1F, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, + 0x03, 0xE0, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, + 0x00, 0x7C, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, + 0x00, 0x0F, 0x80, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x03, 0xE0, 0x00, + 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x7C, 0x00, + 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x0F, 0x80, + 0x00, 0x00, 0x07, 0xFF, 0xFF, 0xFE, 0x01, 0xFF, 0xFF, 0xFF, 0x80, 0x7F, + 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0x7F, 0xC0, 0x1F, + 0xF0, 0x07, 0xFC, 0x01, 0xFE, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, + 0x03, 0xC0, 0x01, 0xF0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, + 0xE0, 0x00, 0xF8, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, + 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0xF8, 0x00, + 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x7C, 0x00, 0x1E, + 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x0F, 0x00, + 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x7C, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, + 0xE0, 0x00, 0x7F, 0xC0, 0x3F, 0xE0, 0x0F, 0xF8, 0x03, 0xFE, 0x00, 0xE3, + 0x8E, 0x38, 0xE1, 0x86, 0x18, 0x61, 0x87, 0x1C, 0x71, 0xC7, 0x0C, 0x30, + 0xC3, 0x0C, 0x38, 0xE3, 0x8E, 0x38, 0x61, 0x86, 0x18, 0x61, 0xC7, 0x1C, + 0x71, 0xC0, 0x00, 0x7F, 0xC0, 0x1F, 0xF0, 0x07, 0xFC, 0x03, 0xFE, 0x00, + 0x07, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x03, + 0xC0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, 0xE0, + 0x00, 0x78, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, + 0x3C, 0x00, 0x1F, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, + 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x1F, 0x00, + 0x07, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x0F, 0x80, 0x03, + 0xC0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x7F, 0x80, 0x3F, 0xE0, + 0x0F, 0xF8, 0x03, 0xFE, 0x00, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x1F, 0x00, + 0x1F, 0xC0, 0x0E, 0xE0, 0x0E, 0x70, 0x0F, 0x38, 0x07, 0x1C, 0x07, 0x0E, + 0x03, 0x83, 0x83, 0x81, 0xC3, 0xC0, 0xE1, 0xC0, 0x71, 0xC0, 0x39, 0xE0, + 0x0E, 0xE0, 0x07, 0xF0, 0x03, 0xF0, 0x01, 0xC0, 0x7F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xC0, 0xF8, 0x78, 0x3C, 0x1C, 0x0E, 0x0E, 0x07, 0x00, + 0x1F, 0xE0, 0x01, 0xFF, 0xF0, 0x07, 0xFF, 0xF0, 0x1F, 0xFF, 0xF0, 0x7E, + 0x07, 0xE1, 0xF0, 0x07, 0xC3, 0xC0, 0x07, 0x80, 0x00, 0x0F, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x38, 0x00, 0x00, 0xF0, 0x00, 0x07, 0xE0, 0x0F, 0xFF, + 0xC0, 0xFF, 0xFF, 0x07, 0xFF, 0x9E, 0x1F, 0xC0, 0x3C, 0x7C, 0x00, 0x78, + 0xF0, 0x00, 0xF3, 0xC0, 0x03, 0xC7, 0x80, 0x07, 0x8F, 0x00, 0x1F, 0x1E, + 0x00, 0x7E, 0x3F, 0x07, 0xFC, 0x3F, 0xFF, 0x7E, 0x7F, 0xFC, 0xFC, 0x7F, + 0xF0, 0xF8, 0x3F, 0x00, 0xF0, 0x01, 0xE0, 0x00, 0x00, 0xF0, 0x00, 0x00, + 0xF8, 0x00, 0x00, 0x78, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x1E, 0x00, 0x00, + 0x0F, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x07, 0x83, 0xE0, 0x03, 0xC7, 0xFC, + 0x01, 0xEF, 0xFF, 0x00, 0xFF, 0xFF, 0xC0, 0xF7, 0x83, 0xF0, 0x7F, 0x00, + 0xF8, 0x3F, 0x00, 0x3E, 0x1F, 0x00, 0x0F, 0x1F, 0x80, 0x07, 0x8F, 0x80, + 0x03, 0xC7, 0x80, 0x01, 0xE3, 0xC0, 0x00, 0xF1, 0xE0, 0x00, 0x79, 0xF0, + 0x00, 0x3C, 0xF0, 0x00, 0x3C, 0x78, 0x00, 0x1E, 0x3C, 0x00, 0x0F, 0x1E, + 0x00, 0x0F, 0x9F, 0x00, 0x07, 0x8F, 0xC0, 0x07, 0xC7, 0xE0, 0x07, 0xC3, + 0xF8, 0x07, 0xC1, 0xFE, 0x0F, 0xC1, 0xEF, 0xFF, 0xE0, 0xF3, 0xFF, 0xC0, + 0x78, 0xFF, 0xC0, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x03, 0xFF, + 0x80, 0x3F, 0xFF, 0x01, 0xFF, 0xFE, 0x0F, 0xE0, 0xF8, 0x7E, 0x01, 0xF1, + 0xF0, 0x03, 0xCF, 0x80, 0x0F, 0x3C, 0x00, 0x3D, 0xF0, 0x00, 0x07, 0x80, + 0x00, 0x1E, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, + 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x0F, 0x3C, + 0x00, 0x3C, 0xF8, 0x01, 0xE1, 0xF0, 0x0F, 0x87, 0xE0, 0xFC, 0x0F, 0xFF, + 0xE0, 0x3F, 0xFF, 0x00, 0x7F, 0xF8, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, + 0x03, 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x01, 0xE0, + 0x00, 0x00, 0x3C, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x00, + 0x3C, 0x00, 0x3F, 0x07, 0x80, 0x1F, 0xF8, 0xF0, 0x0F, 0xFF, 0x3E, 0x03, + 0xFF, 0xF7, 0x80, 0xFC, 0x1F, 0xF0, 0x3F, 0x00, 0xFE, 0x07, 0xC0, 0x0F, + 0xC1, 0xF0, 0x01, 0xF0, 0x3C, 0x00, 0x3E, 0x0F, 0x80, 0x07, 0xC1, 0xE0, + 0x00, 0x78, 0x3C, 0x00, 0x1F, 0x0F, 0x80, 0x03, 0xC1, 0xE0, 0x00, 0x78, + 0x3C, 0x00, 0x0F, 0x07, 0x80, 0x01, 0xE0, 0xF0, 0x00, 0x7C, 0x1E, 0x00, + 0x0F, 0x03, 0xC0, 0x03, 0xE0, 0x78, 0x00, 0x7C, 0x0F, 0x80, 0x1F, 0x80, + 0xF8, 0x07, 0xF0, 0x1F, 0x83, 0xFC, 0x03, 0xFF, 0xFF, 0x80, 0x3F, 0xFE, + 0xF0, 0x03, 0xFF, 0x1E, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x1F, 0x80, + 0x01, 0xFF, 0xC0, 0x07, 0xFF, 0xE0, 0x3F, 0xFF, 0xC0, 0xFE, 0x0F, 0xC1, + 0xF0, 0x07, 0xC7, 0xC0, 0x0F, 0x8F, 0x00, 0x0F, 0x3C, 0x00, 0x1E, 0x78, + 0x00, 0x3D, 0xE0, 0x00, 0x7B, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xBF, 0xFF, 0xFF, 0x78, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, + 0x03, 0xC0, 0x00, 0x07, 0x80, 0x03, 0xCF, 0x80, 0x0F, 0x0F, 0x80, 0x3E, + 0x1F, 0x81, 0xF8, 0x1F, 0xFF, 0xE0, 0x1F, 0xFF, 0x80, 0x1F, 0xFC, 0x00, + 0x0F, 0xE0, 0x00, 0x00, 0x3E, 0x01, 0xFC, 0x07, 0xF8, 0x0F, 0xE0, 0x3E, + 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x07, 0xC0, 0x7F, 0xF0, 0xFF, 0xE3, + 0xFF, 0xC0, 0x78, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x3E, + 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x0F, 0x80, 0x1E, 0x00, + 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x03, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1E, + 0x00, 0x3C, 0x00, 0xF0, 0x01, 0xE0, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x07, + 0xFE, 0x3C, 0x01, 0xFF, 0xE7, 0x00, 0xFF, 0xFE, 0xE0, 0x1F, 0x83, 0xFC, + 0x07, 0xC0, 0x3F, 0x81, 0xF0, 0x03, 0xF0, 0x3C, 0x00, 0x7C, 0x0F, 0x00, + 0x0F, 0x81, 0xE0, 0x01, 0xF0, 0x78, 0x00, 0x3E, 0x0F, 0x00, 0x07, 0xC1, + 0xE0, 0x00, 0xF0, 0x38, 0x00, 0x1E, 0x0F, 0x00, 0x03, 0xC1, 0xE0, 0x00, + 0xF8, 0x3C, 0x00, 0x1F, 0x07, 0x80, 0x03, 0xC0, 0xF0, 0x00, 0xF8, 0x1E, + 0x00, 0x3F, 0x03, 0xE0, 0x07, 0xE0, 0x3E, 0x01, 0xF8, 0x07, 0xE0, 0xFF, + 0x00, 0x7F, 0xFD, 0xE0, 0x0F, 0xFF, 0x3C, 0x00, 0xFF, 0xCF, 0x00, 0x07, + 0xE1, 0xE0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x0F, 0x01, 0xE0, 0x03, 0xE0, + 0x3C, 0x00, 0xF8, 0x07, 0xE0, 0x7F, 0x00, 0x7F, 0xFF, 0xC0, 0x0F, 0xFF, + 0xF0, 0x00, 0x7F, 0xF8, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x01, 0xE0, 0x00, + 0x03, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x3C, 0x00, 0x00, + 0x78, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x83, 0xF0, 0x0F, + 0x1F, 0xF0, 0x1E, 0xFF, 0xF0, 0x3F, 0xFF, 0xE0, 0xFF, 0x87, 0xE1, 0xFC, + 0x07, 0xC3, 0xF0, 0x07, 0x87, 0xC0, 0x0F, 0x1F, 0x00, 0x1E, 0x3E, 0x00, + 0x3C, 0x78, 0x00, 0x78, 0xF0, 0x01, 0xE1, 0xE0, 0x03, 0xC7, 0xC0, 0x07, + 0x8F, 0x00, 0x0F, 0x1E, 0x00, 0x1E, 0x3C, 0x00, 0x78, 0x78, 0x00, 0xF1, + 0xE0, 0x01, 0xE3, 0xC0, 0x03, 0xC7, 0x80, 0x0F, 0x8F, 0x00, 0x1E, 0x1E, + 0x00, 0x3C, 0x78, 0x00, 0x78, 0xF0, 0x00, 0xF1, 0xE0, 0x03, 0xC0, 0x01, + 0xE0, 0x3C, 0x0F, 0x01, 0xE0, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xF0, 0x1E, 0x03, 0xC0, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x03, 0xC0, + 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, + 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0xF0, 0x1E, 0x00, 0x00, 0x07, + 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x01, 0xE0, 0x00, + 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x3C, + 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, + 0x07, 0x80, 0x03, 0xE0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, + 0xC0, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, 0xE0, + 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x01, 0xF0, 0x00, + 0x78, 0x00, 0x3E, 0x00, 0x7F, 0x80, 0x3F, 0xC0, 0x0F, 0xE0, 0x03, 0xE0, + 0x00, 0x01, 0xE0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x78, + 0x00, 0x00, 0x3C, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x0F, + 0x00, 0x00, 0x07, 0x80, 0x00, 0x03, 0xC0, 0x0F, 0x81, 0xE0, 0x0F, 0x80, + 0xF0, 0x0F, 0x80, 0xF0, 0x1F, 0x00, 0x78, 0x1F, 0x00, 0x3C, 0x1F, 0x00, + 0x1E, 0x1F, 0x00, 0x1F, 0x1F, 0x00, 0x0F, 0x1E, 0x00, 0x07, 0xBF, 0x80, + 0x03, 0xFF, 0xC0, 0x01, 0xFD, 0xE0, 0x01, 0xFC, 0xF8, 0x00, 0xFC, 0x3C, + 0x00, 0x7C, 0x1F, 0x00, 0x3C, 0x07, 0x80, 0x1E, 0x03, 0xC0, 0x1F, 0x01, + 0xF0, 0x0F, 0x00, 0x78, 0x07, 0x80, 0x3E, 0x03, 0xC0, 0x0F, 0x01, 0xE0, + 0x07, 0x81, 0xE0, 0x03, 0xE0, 0xF0, 0x00, 0xF0, 0x78, 0x00, 0x7C, 0x00, + 0x01, 0xE0, 0x3C, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x3C, 0x07, + 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x03, + 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, + 0xF0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0xF0, 0x1E, 0x00, 0x00, + 0x07, 0xE0, 0x1F, 0x80, 0xF9, 0xFF, 0x07, 0xFC, 0x0F, 0x3F, 0xF8, 0xFF, + 0xE0, 0xF7, 0xFF, 0x9F, 0xFF, 0x0F, 0xF0, 0xFF, 0xC3, 0xF0, 0xFC, 0x07, + 0xF8, 0x1F, 0x1F, 0x80, 0x3F, 0x00, 0xF1, 0xF0, 0x03, 0xE0, 0x0F, 0x1E, + 0x00, 0x3C, 0x00, 0xF1, 0xE0, 0x03, 0xC0, 0x0F, 0x1E, 0x00, 0x3C, 0x00, + 0xF1, 0xE0, 0x07, 0x80, 0x0F, 0x3C, 0x00, 0x78, 0x01, 0xF3, 0xC0, 0x07, + 0x80, 0x1E, 0x3C, 0x00, 0x78, 0x01, 0xE3, 0xC0, 0x0F, 0x80, 0x1E, 0x3C, + 0x00, 0xF0, 0x01, 0xE7, 0xC0, 0x0F, 0x00, 0x3C, 0x78, 0x00, 0xF0, 0x03, + 0xC7, 0x80, 0x0F, 0x00, 0x3C, 0x78, 0x01, 0xE0, 0x03, 0xC7, 0x80, 0x1E, + 0x00, 0x3C, 0xF8, 0x01, 0xE0, 0x07, 0x8F, 0x00, 0x1E, 0x00, 0x78, 0xF0, + 0x01, 0xE0, 0x07, 0x8F, 0x00, 0x3C, 0x00, 0x78, 0x00, 0x07, 0xE0, 0x1F, + 0x3F, 0xF0, 0x3C, 0xFF, 0xF0, 0x7B, 0xFF, 0xE0, 0xFF, 0x07, 0xE1, 0xF8, + 0x07, 0xC7, 0xE0, 0x07, 0x8F, 0x80, 0x0F, 0x1F, 0x00, 0x1E, 0x3C, 0x00, + 0x3C, 0x78, 0x00, 0x78, 0xF0, 0x01, 0xE3, 0xC0, 0x03, 0xC7, 0x80, 0x07, + 0x8F, 0x00, 0x0F, 0x1E, 0x00, 0x3E, 0x3C, 0x00, 0x78, 0xF0, 0x00, 0xF1, + 0xE0, 0x01, 0xE3, 0xC0, 0x03, 0xC7, 0x80, 0x0F, 0x8F, 0x00, 0x1E, 0x3E, + 0x00, 0x3C, 0x78, 0x00, 0x78, 0xF0, 0x00, 0xF1, 0xE0, 0x03, 0xC0, 0x00, + 0x1F, 0x80, 0x01, 0xFF, 0xC0, 0x0F, 0xFF, 0xE0, 0x3F, 0xFF, 0xC0, 0xFE, + 0x0F, 0xC1, 0xF0, 0x0F, 0x87, 0xC0, 0x0F, 0x8F, 0x00, 0x0F, 0x3C, 0x00, + 0x1E, 0x78, 0x00, 0x3D, 0xE0, 0x00, 0x7B, 0xC0, 0x00, 0xF7, 0x80, 0x01, + 0xFE, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0x78, 0x00, 0x1E, 0xF0, 0x00, 0x3D, + 0xE0, 0x00, 0xF3, 0xC0, 0x01, 0xE7, 0x80, 0x07, 0x8F, 0x80, 0x1F, 0x0F, + 0x80, 0x7C, 0x1F, 0x83, 0xF8, 0x1F, 0xFF, 0xE0, 0x3F, 0xFF, 0x00, 0x1F, + 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x3C, 0x7F, 0xE0, + 0x07, 0xBF, 0xFE, 0x01, 0xFF, 0xFF, 0xC0, 0x3D, 0xE0, 0xFC, 0x07, 0xF0, + 0x0F, 0x80, 0xFC, 0x00, 0xF8, 0x1F, 0x00, 0x0F, 0x07, 0xC0, 0x01, 0xE0, + 0xF8, 0x00, 0x3C, 0x1F, 0x00, 0x07, 0x83, 0xC0, 0x00, 0xF0, 0x78, 0x00, + 0x1E, 0x1F, 0x00, 0x03, 0xC3, 0xC0, 0x00, 0xF0, 0x78, 0x00, 0x1E, 0x0F, + 0x00, 0x03, 0xC3, 0xE0, 0x00, 0xF8, 0x7C, 0x00, 0x1E, 0x0F, 0x80, 0x07, + 0xC1, 0xF8, 0x01, 0xF0, 0x3F, 0x80, 0x7C, 0x0F, 0xF8, 0x3F, 0x81, 0xEF, + 0xFF, 0xE0, 0x3C, 0xFF, 0xF8, 0x07, 0x8F, 0xFC, 0x00, 0xF0, 0xFE, 0x00, + 0x3E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x1E, 0x00, + 0x00, 0x03, 0xC0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x03, + 0xC0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x3F, + 0xF8, 0xF0, 0x1F, 0xFF, 0x3C, 0x0F, 0xFF, 0xDF, 0x07, 0xE0, 0xFF, 0x83, + 0xE0, 0x1F, 0xE1, 0xF0, 0x03, 0xF8, 0x78, 0x00, 0xFE, 0x3C, 0x00, 0x1F, + 0x8F, 0x00, 0x07, 0xC7, 0x80, 0x01, 0xF1, 0xE0, 0x00, 0x7C, 0x78, 0x00, + 0x1F, 0x3C, 0x00, 0x0F, 0x8F, 0x00, 0x03, 0xE3, 0xC0, 0x00, 0xF8, 0xF0, + 0x00, 0x3E, 0x3C, 0x00, 0x1F, 0x8F, 0x00, 0x0F, 0xC3, 0xC0, 0x03, 0xF0, + 0xF8, 0x01, 0xFC, 0x1F, 0x00, 0xFF, 0x07, 0xE0, 0xFF, 0xC0, 0xFF, 0xFD, + 0xE0, 0x1F, 0xFE, 0x78, 0x03, 0xFF, 0x3E, 0x00, 0x3F, 0x0F, 0x80, 0x00, + 0x03, 0xC0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x1F, 0x00, + 0x00, 0x07, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x3E, + 0x00, 0x00, 0x0F, 0x80, 0x00, 0x07, 0x87, 0xCF, 0xC3, 0xCF, 0xE1, 0xEF, + 0xE0, 0xFF, 0x80, 0x7F, 0x00, 0x7E, 0x00, 0x3F, 0x00, 0x1F, 0x00, 0x0F, + 0x00, 0x07, 0x80, 0x03, 0xC0, 0x03, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, + 0x78, 0x00, 0x3C, 0x00, 0x3E, 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x07, 0x80, + 0x03, 0xC0, 0x03, 0xE0, 0x01, 0xE0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x00, + 0x00, 0x3F, 0x80, 0x07, 0xFF, 0x00, 0xFF, 0xFC, 0x0F, 0xFF, 0xE0, 0xFC, + 0x1F, 0x87, 0x80, 0x3C, 0x7C, 0x01, 0xE3, 0xC0, 0x0F, 0x1E, 0x00, 0x00, + 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0xE0, 0x03, 0xFF, + 0xC0, 0x07, 0xFF, 0x80, 0x07, 0xFE, 0x00, 0x03, 0xF0, 0x00, 0x07, 0xBC, + 0x00, 0x3D, 0xE0, 0x01, 0xEF, 0x00, 0x1F, 0x7C, 0x01, 0xF3, 0xF0, 0x1F, + 0x8F, 0xFF, 0xF8, 0x7F, 0xFF, 0x80, 0xFF, 0xF0, 0x01, 0xFE, 0x00, 0x03, + 0xC0, 0x1E, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC1, 0xFF, 0xEF, 0xFF, + 0x7F, 0xF0, 0x78, 0x03, 0xC0, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, + 0xC0, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x3C, 0x01, 0xE0, + 0x0F, 0x00, 0x78, 0x07, 0xC0, 0x3C, 0x01, 0xE0, 0x0F, 0xF0, 0x7F, 0x81, + 0xF8, 0x07, 0xC0, 0x0F, 0x00, 0x0F, 0x0F, 0x00, 0x1E, 0x0F, 0x00, 0x1E, + 0x1F, 0x00, 0x1E, 0x1E, 0x00, 0x1E, 0x1E, 0x00, 0x1E, 0x1E, 0x00, 0x3C, + 0x1E, 0x00, 0x3C, 0x3E, 0x00, 0x3C, 0x3C, 0x00, 0x3C, 0x3C, 0x00, 0x3C, + 0x3C, 0x00, 0x7C, 0x3C, 0x00, 0x78, 0x78, 0x00, 0x78, 0x78, 0x00, 0x78, + 0x78, 0x00, 0x78, 0x78, 0x00, 0xF8, 0x78, 0x00, 0xF0, 0xF0, 0x01, 0xF0, + 0xF0, 0x03, 0xF0, 0xF0, 0x07, 0xF0, 0xF8, 0x1F, 0xF0, 0xFF, 0xFF, 0xE0, + 0x7F, 0xFD, 0xE0, 0x3F, 0xF1, 0xE0, 0x1F, 0xC0, 0x00, 0xF0, 0x00, 0x7F, + 0xC0, 0x01, 0xEF, 0x00, 0x0F, 0xBC, 0x00, 0x3C, 0x78, 0x01, 0xE1, 0xE0, + 0x07, 0x87, 0x80, 0x3C, 0x1E, 0x01, 0xF0, 0x78, 0x07, 0x81, 0xE0, 0x3E, + 0x07, 0x80, 0xF0, 0x1E, 0x07, 0x80, 0x38, 0x1E, 0x00, 0xF0, 0xF0, 0x03, + 0xC7, 0xC0, 0x0F, 0x1E, 0x00, 0x3C, 0xF0, 0x00, 0xF3, 0xC0, 0x03, 0xDE, + 0x00, 0x07, 0x78, 0x00, 0x1F, 0xC0, 0x00, 0x7E, 0x00, 0x01, 0xF8, 0x00, + 0x07, 0xC0, 0x00, 0x1F, 0x00, 0x00, 0xF0, 0x07, 0xC0, 0x0F, 0x78, 0x03, + 0xE0, 0x0F, 0xBC, 0x03, 0xF0, 0x07, 0x9E, 0x01, 0xF8, 0x03, 0xCF, 0x00, + 0xFC, 0x03, 0xC7, 0x80, 0xFE, 0x01, 0xE3, 0xC0, 0x77, 0x01, 0xE0, 0xE0, + 0x7B, 0x80, 0xF0, 0x70, 0x39, 0xC0, 0xF0, 0x38, 0x3C, 0xE0, 0x78, 0x1C, + 0x1E, 0x78, 0x78, 0x0F, 0x1E, 0x3C, 0x3C, 0x07, 0x8F, 0x1E, 0x3C, 0x03, + 0xC7, 0x0F, 0x1E, 0x01, 0xE7, 0x87, 0x9E, 0x00, 0xF3, 0x81, 0xCF, 0x00, + 0x7B, 0xC0, 0xEF, 0x00, 0x3D, 0xC0, 0x77, 0x80, 0x1F, 0xE0, 0x3F, 0x80, + 0x0F, 0xF0, 0x1F, 0xC0, 0x07, 0xF0, 0x0F, 0xC0, 0x01, 0xF8, 0x07, 0xE0, + 0x00, 0xF8, 0x03, 0xE0, 0x00, 0x7C, 0x01, 0xF0, 0x00, 0x3C, 0x00, 0xF0, + 0x00, 0x00, 0x03, 0xC0, 0x07, 0xC0, 0xF8, 0x01, 0xE0, 0x1E, 0x00, 0xF0, + 0x07, 0x80, 0x78, 0x00, 0xF0, 0x3C, 0x00, 0x3C, 0x1F, 0x00, 0x0F, 0x8F, + 0x80, 0x01, 0xE7, 0xC0, 0x00, 0x7D, 0xE0, 0x00, 0x0F, 0xF0, 0x00, 0x03, + 0xF8, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x0F, 0xC0, 0x00, + 0x07, 0xF0, 0x00, 0x03, 0xFE, 0x00, 0x01, 0xF7, 0x80, 0x00, 0xF9, 0xF0, + 0x00, 0x3C, 0x3C, 0x00, 0x1E, 0x0F, 0x80, 0x0F, 0x01, 0xE0, 0x07, 0x80, + 0x7C, 0x03, 0xE0, 0x0F, 0x01, 0xF0, 0x03, 0xE0, 0xF8, 0x00, 0x78, 0x00, + 0x03, 0xC0, 0x01, 0xE0, 0x78, 0x00, 0x78, 0x0F, 0x00, 0x0F, 0x01, 0xE0, + 0x03, 0xC0, 0x3C, 0x00, 0x78, 0x07, 0xC0, 0x1E, 0x00, 0x78, 0x07, 0xC0, + 0x0F, 0x00, 0xF0, 0x01, 0xE0, 0x3C, 0x00, 0x3C, 0x07, 0x80, 0x07, 0x81, + 0xE0, 0x00, 0xF0, 0x3C, 0x00, 0x1E, 0x0F, 0x00, 0x03, 0xC1, 0xC0, 0x00, + 0x3C, 0x78, 0x00, 0x07, 0x9E, 0x00, 0x00, 0xF3, 0xC0, 0x00, 0x1E, 0xF0, + 0x00, 0x03, 0xDE, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x0F, 0xE0, 0x00, 0x01, + 0xFC, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x78, 0x00, + 0x00, 0x0F, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x1E, + 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, + 0xFF, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x01, + 0xFF, 0xFF, 0x81, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, 0xE0, + 0x00, 0x01, 0xF0, 0x00, 0x01, 0xF0, 0x00, 0x01, 0xF0, 0x00, 0x01, 0xF0, + 0x00, 0x01, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, + 0x00, 0x01, 0xE0, 0x00, 0x03, 0xE0, 0x00, 0x03, 0xE0, 0x00, 0x03, 0xE0, + 0x00, 0x03, 0xE0, 0x00, 0x03, 0xE0, 0x00, 0x03, 0xE0, 0x00, 0x03, 0xE0, + 0x00, 0x03, 0xC0, 0x00, 0x03, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0xE0, 0xFF, + 0xFF, 0xF0, 0x7F, 0xFF, 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x7E, 0x00, 0xFE, + 0x00, 0xF0, 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x03, 0xC0, 0x03, 0xC0, + 0x03, 0xC0, 0x03, 0xC0, 0x07, 0xC0, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, + 0x07, 0x80, 0x0F, 0x00, 0x0F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0xF8, 0x00, + 0xE0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, + 0x38, 0x00, 0x38, 0x00, 0x3C, 0x00, 0x7C, 0x00, 0x78, 0x00, 0x78, 0x00, + 0x78, 0x00, 0x78, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xE0, 0x00, + 0xE0, 0x00, 0xF0, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0x7C, 0x00, 0x00, 0x70, + 0x07, 0x00, 0x60, 0x06, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0C, 0x01, 0xC0, + 0x1C, 0x01, 0xC0, 0x1C, 0x01, 0x80, 0x38, 0x03, 0x80, 0x38, 0x03, 0x00, + 0x30, 0x07, 0x00, 0x70, 0x07, 0x00, 0x60, 0x0E, 0x00, 0xE0, 0x0E, 0x00, + 0xE0, 0x0C, 0x01, 0xC0, 0x1C, 0x01, 0xC0, 0x1C, 0x01, 0x80, 0x38, 0x03, + 0x80, 0x38, 0x03, 0x00, 0x70, 0x07, 0x00, 0x70, 0x07, 0x00, 0x60, 0x0E, + 0x00, 0xE0, 0x06, 0x00, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3F, 0x00, 0x0F, + 0x00, 0x07, 0x00, 0x07, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x1E, + 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x3E, 0x00, 0x3C, 0x00, 0x1C, + 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1E, 0x00, 0x0F, + 0x00, 0x07, 0x00, 0x1F, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x00, 0xF0, + 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x03, 0xE0, 0x03, 0xC0, + 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, + 0x0F, 0x00, 0x7F, 0x00, 0x7E, 0x00, 0xF8, 0x00, 0x0F, 0x00, 0x01, 0xFE, + 0x00, 0xCF, 0xFC, 0x0E, 0xE3, 0xF0, 0xE6, 0x07, 0xFF, 0x60, 0x0F, 0xF0, + 0x00, 0x1E, 0x00}; + +const GFXglyph FreeSansOblique24pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 13, 0, 1}, // 0x20 ' ' + {0, 11, 34, 13, 6, -33}, // 0x21 '!' + {47, 13, 12, 17, 8, -32}, // 0x22 '"' + {67, 28, 34, 26, 3, -32}, // 0x23 '#' + {186, 26, 42, 26, 3, -35}, // 0x24 '$' + {323, 36, 34, 42, 6, -32}, // 0x25 '%' + {476, 26, 34, 31, 4, -32}, // 0x26 '&' + {587, 5, 12, 9, 8, -32}, // 0x27 ''' + {595, 15, 44, 16, 5, -33}, // 0x28 '(' + {678, 15, 44, 16, 1, -33}, // 0x29 ')' + {761, 14, 13, 18, 8, -33}, // 0x2A '*' + {784, 23, 22, 27, 5, -20}, // 0x2B '+' + {848, 7, 12, 13, 3, -4}, // 0x2C ',' + {859, 12, 4, 16, 5, -14}, // 0x2D '-' + {865, 6, 5, 13, 4, -4}, // 0x2E '.' + {869, 21, 35, 13, -1, -33}, // 0x2F '/' + {961, 23, 34, 26, 5, -32}, // 0x30 '0' + {1059, 13, 33, 26, 10, -32}, // 0x31 '1' + {1113, 27, 33, 26, 2, -32}, // 0x32 '2' + {1225, 25, 34, 26, 3, -32}, // 0x33 '3' + {1332, 24, 33, 26, 3, -32}, // 0x34 '4' + {1431, 27, 34, 26, 3, -32}, // 0x35 '5' + {1546, 24, 34, 26, 4, -32}, // 0x36 '6' + {1648, 26, 33, 26, 6, -32}, // 0x37 '7' + {1756, 25, 34, 26, 3, -32}, // 0x38 '8' + {1863, 24, 34, 26, 4, -32}, // 0x39 '9' + {1965, 10, 25, 13, 5, -24}, // 0x3A ':' + {1997, 11, 32, 13, 4, -24}, // 0x3B ';' + {2041, 26, 23, 27, 4, -22}, // 0x3C '<' + {2116, 26, 12, 27, 3, -16}, // 0x3D '=' + {2155, 26, 23, 27, 2, -21}, // 0x3E '>' + {2230, 20, 35, 26, 9, -34}, // 0x3F '?' + {2318, 45, 42, 48, 4, -34}, // 0x40 '@' + {2555, 30, 34, 31, 1, -33}, // 0x41 'A' + {2683, 29, 34, 31, 4, -33}, // 0x42 'B' + {2807, 30, 36, 33, 5, -34}, // 0x43 'C' + {2942, 31, 34, 33, 4, -33}, // 0x44 'D' + {3074, 31, 34, 31, 4, -33}, // 0x45 'E' + {3206, 30, 34, 28, 4, -33}, // 0x46 'F' + {3334, 33, 36, 37, 5, -34}, // 0x47 'G' + {3483, 33, 34, 34, 4, -33}, // 0x48 'H' + {3624, 11, 34, 13, 5, -33}, // 0x49 'I' + {3671, 25, 35, 24, 2, -33}, // 0x4A 'J' + {3781, 34, 34, 31, 4, -33}, // 0x4B 'K' + {3926, 22, 34, 26, 4, -33}, // 0x4C 'L' + {4020, 39, 34, 40, 4, -33}, // 0x4D 'M' + {4186, 34, 34, 34, 4, -33}, // 0x4E 'N' + {4331, 33, 36, 36, 5, -34}, // 0x4F 'O' + {4480, 29, 34, 30, 4, -33}, // 0x50 'P' + {4604, 33, 38, 36, 5, -34}, // 0x51 'Q' + {4761, 30, 34, 33, 4, -33}, // 0x52 'R' + {4889, 29, 36, 31, 4, -34}, // 0x53 'S' + {5020, 28, 34, 29, 7, -33}, // 0x54 'T' + {5139, 31, 35, 34, 6, -33}, // 0x55 'U' + {5275, 29, 34, 30, 8, -33}, // 0x56 'V' + {5399, 43, 34, 44, 8, -33}, // 0x57 'W' + {5582, 36, 34, 31, 1, -33}, // 0x58 'X' + {5735, 30, 34, 32, 8, -33}, // 0x59 'Y' + {5863, 34, 34, 29, 1, -33}, // 0x5A 'Z' + {6008, 18, 44, 13, 1, -33}, // 0x5B '[' + {6107, 6, 35, 13, 7, -33}, // 0x5C '\' + {6134, 18, 44, 13, -1, -33}, // 0x5D ']' + {6233, 17, 18, 22, 6, -32}, // 0x5E '^' + {6272, 29, 2, 26, -3, 7}, // 0x5F '_' + {6280, 8, 7, 16, 8, -34}, // 0x60 '`' + {6287, 23, 27, 26, 3, -25}, // 0x61 'a' + {6365, 25, 35, 26, 3, -33}, // 0x62 'b' + {6475, 22, 27, 24, 4, -25}, // 0x63 'c' + {6550, 27, 35, 26, 4, -33}, // 0x64 'd' + {6669, 23, 27, 26, 4, -25}, // 0x65 'e' + {6747, 15, 34, 12, 3, -33}, // 0x66 'f' + {6811, 27, 36, 26, 2, -25}, // 0x67 'g' + {6933, 23, 34, 25, 3, -33}, // 0x68 'h' + {7031, 11, 34, 10, 3, -33}, // 0x69 'i' + {7078, 18, 44, 11, -2, -33}, // 0x6A 'j' + {7177, 25, 34, 24, 3, -33}, // 0x6B 'k' + {7284, 11, 34, 10, 3, -33}, // 0x6C 'l' + {7331, 36, 26, 38, 3, -25}, // 0x6D 'm' + {7448, 23, 26, 25, 3, -25}, // 0x6E 'n' + {7523, 23, 27, 26, 4, -25}, // 0x6F 'o' + {7601, 27, 36, 26, 1, -25}, // 0x70 'p' + {7723, 26, 36, 26, 3, -25}, // 0x71 'q' + {7840, 17, 26, 15, 3, -25}, // 0x72 'r' + {7896, 21, 27, 24, 3, -25}, // 0x73 's' + {7967, 13, 32, 12, 4, -30}, // 0x74 't' + {8019, 24, 26, 25, 4, -24}, // 0x75 'u' + {8097, 22, 25, 23, 6, -24}, // 0x76 'v' + {8166, 33, 25, 34, 6, -24}, // 0x77 'w' + {8270, 26, 25, 23, 1, -24}, // 0x78 'x' + {8352, 27, 35, 23, 0, -24}, // 0x79 'y' + {8471, 25, 25, 23, 1, -24}, // 0x7A 'z' + {8550, 16, 44, 16, 5, -33}, // 0x7B '{' + {8638, 12, 44, 12, 3, -33}, // 0x7C '|' + {8704, 16, 44, 16, -1, -33}, // 0x7D '}' + {8792, 21, 7, 27, 6, -19}}; // 0x7E '~' + +const GFXfont FreeSansOblique24pt7b PROGMEM = { + (uint8_t *)FreeSansOblique24pt7bBitmaps, + (GFXglyph *)FreeSansOblique24pt7bGlyphs, 0x20, 0x7E, 56}; + +// Approx. 9483 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansOblique9pt7b.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansOblique9pt7b.h new file mode 100644 index 0000000..0b5db81 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansOblique9pt7b.h @@ -0,0 +1,222 @@ +#pragma once +#include + +const uint8_t FreeSansOblique9pt7bBitmaps[] PROGMEM = { + 0x10, 0x84, 0x22, 0x10, 0x84, 0x42, 0x10, 0x08, 0x00, 0xDE, 0xE5, 0x20, + 0x06, 0x40, 0x88, 0x13, 0x06, 0x43, 0xFE, 0x32, 0x04, 0x40, 0x98, 0x32, + 0x1F, 0xF0, 0x98, 0x22, 0x04, 0xC0, 0x02, 0x01, 0xF8, 0x6B, 0x99, 0x33, + 0x40, 0x68, 0x0F, 0x00, 0xF8, 0x07, 0xC1, 0x1B, 0x23, 0x64, 0x4E, 0x98, + 0xFC, 0x04, 0x00, 0x80, 0x3C, 0x08, 0xCC, 0x23, 0x18, 0x86, 0x32, 0x0C, + 0x64, 0x19, 0x90, 0x1E, 0x40, 0x01, 0x1E, 0x02, 0x66, 0x09, 0x8C, 0x23, + 0x18, 0x86, 0x62, 0x07, 0x80, 0x0F, 0x06, 0x63, 0x18, 0xC6, 0x3F, 0x07, + 0x03, 0xC1, 0xB3, 0xC7, 0xB0, 0xCC, 0x33, 0x3E, 0x79, 0x80, 0xFA, 0x04, + 0x10, 0x60, 0x83, 0x04, 0x18, 0x30, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x10, + 0x30, 0x20, 0x08, 0x18, 0x10, 0x30, 0x60, 0xC1, 0x83, 0x06, 0x18, 0x30, + 0x41, 0x82, 0x0C, 0x10, 0x40, 0x19, 0x73, 0x16, 0x48, 0x04, 0x04, 0x02, + 0x1F, 0xF0, 0x80, 0x80, 0x40, 0x20, 0x6D, 0x28, 0xF0, 0xC0, 0x01, 0x02, + 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x0F, + 0x19, 0xC8, 0x6C, 0x36, 0x1A, 0x0F, 0x05, 0x86, 0xC3, 0x61, 0xB1, 0x9C, + 0x87, 0x80, 0x08, 0xCD, 0xE3, 0x18, 0xC4, 0x23, 0x18, 0xC4, 0x00, 0x07, + 0x83, 0x1C, 0x41, 0x98, 0x30, 0x06, 0x01, 0x80, 0x60, 0x38, 0x1C, 0x06, + 0x01, 0x80, 0x20, 0x0F, 0xF8, 0x0F, 0x86, 0x73, 0x0C, 0x83, 0x00, 0xC0, + 0x60, 0xE0, 0x06, 0x01, 0xB0, 0x6C, 0x13, 0x8C, 0x7C, 0x00, 0x00, 0x80, + 0xC0, 0xE0, 0xA0, 0x90, 0x98, 0x8C, 0x86, 0xFF, 0x81, 0x01, 0x80, 0xC0, + 0x60, 0x0F, 0xC3, 0x00, 0x40, 0x08, 0x03, 0x00, 0x7F, 0x1C, 0x70, 0x06, + 0x00, 0xC0, 0x1B, 0x06, 0x71, 0x87, 0xE0, 0x0F, 0x86, 0x73, 0x0D, 0x80, + 0x60, 0x1F, 0xCF, 0x3B, 0x86, 0xC1, 0xB0, 0x6C, 0x33, 0x98, 0x3C, 0x00, + 0x7F, 0xC0, 0x20, 0x10, 0x0C, 0x06, 0x01, 0x00, 0x80, 0x60, 0x10, 0x0C, + 0x02, 0x01, 0x80, 0x40, 0x00, 0x0F, 0x86, 0x73, 0x0C, 0xC3, 0x30, 0xCC, + 0x61, 0xE1, 0x86, 0x41, 0xB0, 0x6C, 0x13, 0x8C, 0x3E, 0x00, 0x0F, 0x06, + 0x73, 0x0D, 0x83, 0x60, 0xD8, 0x77, 0x3C, 0xFE, 0x01, 0x80, 0x6C, 0x33, + 0x98, 0x7C, 0x00, 0x30, 0x00, 0x00, 0x00, 0xC0, 0x18, 0x00, 0x00, 0x00, + 0x0C, 0x62, 0x11, 0x00, 0x00, 0x01, 0xC3, 0x8F, 0x0C, 0x07, 0x00, 0xE0, + 0x1E, 0x01, 0x00, 0x7F, 0xC0, 0x00, 0x03, 0xFE, 0x40, 0x3C, 0x03, 0x80, + 0x70, 0x18, 0x78, 0xE1, 0xC0, 0x00, 0x00, 0x1F, 0x30, 0xD0, 0x78, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0xFE, + 0x00, 0xC0, 0xE0, 0xC0, 0x18, 0x61, 0xD3, 0x31, 0x9C, 0xD8, 0xC2, 0x36, + 0x31, 0x8F, 0x18, 0x67, 0xC6, 0x11, 0xB1, 0x8C, 0xCC, 0x67, 0x63, 0x0E, + 0xF0, 0x60, 0x00, 0x1C, 0x00, 0x01, 0x81, 0x00, 0x1F, 0xC0, 0x01, 0xC0, + 0x1C, 0x03, 0xC0, 0x24, 0x06, 0x60, 0x46, 0x0C, 0x61, 0x86, 0x1F, 0xE3, + 0x06, 0x20, 0x26, 0x03, 0x40, 0x30, 0x1F, 0xE1, 0x87, 0x30, 0x33, 0x03, + 0x30, 0x23, 0x06, 0x3F, 0xC6, 0x06, 0x60, 0x66, 0x06, 0x60, 0x66, 0x0C, + 0x7F, 0x80, 0x07, 0xC1, 0x86, 0x30, 0x32, 0x03, 0x60, 0x04, 0x00, 0xC0, + 0x0C, 0x00, 0xC0, 0x6C, 0x06, 0xC0, 0xC6, 0x18, 0x3E, 0x00, 0x1F, 0xE0, + 0xC1, 0x84, 0x06, 0x60, 0x33, 0x01, 0x98, 0x0C, 0x80, 0x64, 0x02, 0x60, + 0x33, 0x01, 0x98, 0x18, 0x81, 0x87, 0xF0, 0x00, 0x1F, 0xF1, 0x80, 0x10, + 0x03, 0x00, 0x30, 0x03, 0x00, 0x3F, 0xE2, 0x00, 0x60, 0x06, 0x00, 0x60, + 0x04, 0x00, 0x7F, 0xC0, 0x1F, 0xF1, 0x80, 0x10, 0x03, 0x00, 0x30, 0x03, + 0x00, 0x3F, 0xC2, 0x00, 0x60, 0x06, 0x00, 0x60, 0x04, 0x00, 0x40, 0x00, + 0x07, 0xE0, 0xE1, 0x8C, 0x06, 0xC0, 0x36, 0x00, 0x60, 0x03, 0x07, 0xF8, + 0x02, 0xC0, 0x36, 0x01, 0x98, 0x1C, 0xE1, 0xC1, 0xF2, 0x00, 0x18, 0x08, + 0xC0, 0xC4, 0x06, 0x60, 0x33, 0x01, 0x18, 0x18, 0xFF, 0xC4, 0x06, 0x60, + 0x23, 0x01, 0x18, 0x18, 0x80, 0xC4, 0x06, 0x00, 0x33, 0x32, 0x26, 0x66, + 0x44, 0xCC, 0xC0, 0x00, 0xC0, 0x60, 0x18, 0x06, 0x01, 0x80, 0x60, 0x30, + 0x0C, 0x03, 0x30, 0xCC, 0x63, 0x18, 0x7C, 0x00, 0x18, 0x18, 0x60, 0xC1, + 0x0E, 0x0C, 0x60, 0x33, 0x00, 0xD8, 0x03, 0xF0, 0x0C, 0xC0, 0x61, 0x81, + 0x86, 0x06, 0x0C, 0x10, 0x30, 0x40, 0x60, 0x18, 0x0C, 0x04, 0x06, 0x03, + 0x01, 0x80, 0xC0, 0x40, 0x60, 0x30, 0x18, 0x08, 0x07, 0xF8, 0x18, 0x06, + 0x18, 0x0E, 0x18, 0x0E, 0x34, 0x1E, 0x34, 0x36, 0x34, 0x34, 0x24, 0x64, + 0x24, 0x6C, 0x64, 0xCC, 0x64, 0x8C, 0x65, 0x88, 0x43, 0x08, 0x43, 0x18, + 0x18, 0x08, 0xE0, 0x47, 0x06, 0x6C, 0x33, 0x61, 0x99, 0x08, 0x8C, 0xC4, + 0x66, 0x61, 0xB3, 0x0D, 0x18, 0x38, 0x81, 0xC4, 0x06, 0x00, 0x07, 0xC0, + 0xC3, 0x8C, 0x0E, 0xC0, 0x36, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, + 0x36, 0x01, 0xB8, 0x18, 0xE1, 0x81, 0xF0, 0x00, 0x1F, 0xE1, 0x83, 0x10, + 0x33, 0x03, 0x30, 0x33, 0x06, 0x3F, 0xC2, 0x00, 0x60, 0x06, 0x00, 0x60, + 0x04, 0x00, 0x40, 0x00, 0x07, 0xC0, 0xC3, 0x8C, 0x0E, 0xC0, 0x36, 0x01, + 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x36, 0x09, 0xB8, 0x78, 0xE3, 0x81, + 0xF6, 0x00, 0x10, 0x1F, 0xF0, 0xC0, 0xC4, 0x06, 0x60, 0x33, 0x01, 0x18, + 0x18, 0xFF, 0x04, 0x0C, 0x60, 0x63, 0x03, 0x18, 0x18, 0x80, 0xC4, 0x06, + 0x00, 0x07, 0xC1, 0x87, 0x30, 0x33, 0x03, 0x30, 0x03, 0xC0, 0x0F, 0xC0, + 0x1E, 0x00, 0x6C, 0x06, 0xC0, 0x46, 0x0C, 0x3F, 0x00, 0xFF, 0xC3, 0x00, + 0xC0, 0x20, 0x18, 0x06, 0x01, 0x80, 0x60, 0x10, 0x0C, 0x03, 0x00, 0xC0, + 0x20, 0x00, 0x30, 0x13, 0x03, 0x20, 0x36, 0x03, 0x60, 0x26, 0x06, 0x60, + 0x64, 0x06, 0xC0, 0x6C, 0x04, 0xC0, 0xCE, 0x18, 0x3E, 0x00, 0xC0, 0x78, + 0x0B, 0x03, 0x20, 0xC4, 0x18, 0xC6, 0x18, 0x83, 0x30, 0x64, 0x0D, 0x80, + 0xA0, 0x1C, 0x03, 0x00, 0xC1, 0x83, 0xC1, 0x83, 0xC3, 0x86, 0xC2, 0x86, + 0xC6, 0x84, 0xC4, 0x8C, 0xCC, 0xC8, 0xC8, 0xD8, 0xD8, 0xD0, 0xD0, 0xF0, + 0x70, 0xE0, 0x60, 0xE0, 0x60, 0xE0, 0x0C, 0x0C, 0x30, 0x60, 0x63, 0x01, + 0x98, 0x02, 0xC0, 0x0E, 0x00, 0x38, 0x01, 0xE0, 0x0C, 0x80, 0x33, 0x01, + 0x8C, 0x0C, 0x18, 0x60, 0x60, 0xC0, 0x66, 0x0C, 0x60, 0xC2, 0x18, 0x33, + 0x03, 0x60, 0x1C, 0x01, 0x80, 0x18, 0x01, 0x80, 0x18, 0x01, 0x00, 0x30, + 0x00, 0x1F, 0xF0, 0x07, 0x00, 0xE0, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, + 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x00, 0xFF, 0xC0, 0x0E, 0x10, 0x20, + 0x41, 0x02, 0x04, 0x08, 0x20, 0x40, 0x81, 0x04, 0x08, 0x10, 0x20, 0xE0, + 0xAA, 0xA9, 0x55, 0x40, 0x0E, 0x08, 0x10, 0x20, 0x41, 0x02, 0x04, 0x08, + 0x20, 0x40, 0x81, 0x04, 0x08, 0x10, 0xE0, 0x0C, 0x18, 0x51, 0xA2, 0x4C, + 0x50, 0x80, 0xFF, 0xE0, 0xC8, 0x80, 0x0F, 0x86, 0x33, 0x0C, 0x03, 0x03, + 0xDF, 0xEE, 0x0B, 0x02, 0xC1, 0x9F, 0xE0, 0x10, 0x04, 0x01, 0x00, 0xDC, + 0x39, 0x88, 0x32, 0x0D, 0x83, 0x40, 0xD0, 0x64, 0x1B, 0x8C, 0xBC, 0x00, + 0x1F, 0x18, 0xD8, 0x6C, 0x0C, 0x06, 0x03, 0x01, 0x86, 0x66, 0x3E, 0x00, + 0x00, 0x20, 0x08, 0x01, 0x0F, 0x23, 0x14, 0xC1, 0x18, 0x26, 0x04, 0xC0, + 0x98, 0x23, 0x04, 0x71, 0x87, 0xD0, 0x0F, 0x0C, 0x76, 0x0D, 0x83, 0xFF, + 0xF0, 0x0C, 0x03, 0x06, 0x63, 0x0F, 0x80, 0x1C, 0xC2, 0x1E, 0x20, 0x84, + 0x10, 0x41, 0x04, 0x20, 0x80, 0x0F, 0x46, 0x33, 0x0C, 0xC1, 0x60, 0xD8, + 0x26, 0x09, 0x86, 0x71, 0x8F, 0xE0, 0x10, 0x04, 0xC2, 0x1F, 0x00, 0x10, + 0x04, 0x01, 0x00, 0x9F, 0x39, 0x88, 0x22, 0x09, 0x02, 0x40, 0x90, 0x44, + 0x12, 0x04, 0x81, 0x00, 0x10, 0x02, 0x22, 0x64, 0x44, 0x48, 0x80, 0x04, + 0x00, 0x01, 0x08, 0x20, 0x82, 0x08, 0x41, 0x04, 0x10, 0x42, 0x08, 0xE0, + 0x10, 0x08, 0x04, 0x04, 0x32, 0x31, 0x20, 0xA0, 0xB8, 0x6C, 0x22, 0x11, + 0x90, 0xC8, 0x30, 0x11, 0x22, 0x22, 0x64, 0x44, 0x48, 0x80, 0x2F, 0x3C, + 0x63, 0x8C, 0x86, 0x19, 0x08, 0x44, 0x10, 0x88, 0x21, 0x10, 0x82, 0x21, + 0x04, 0x82, 0x11, 0x04, 0x20, 0x00, 0x0B, 0xF3, 0x18, 0x82, 0x20, 0x90, + 0x24, 0x09, 0x04, 0x41, 0x20, 0x48, 0x10, 0x0F, 0x0C, 0x76, 0x0D, 0x83, + 0xC0, 0xF0, 0x3C, 0x1B, 0x06, 0xE3, 0x0F, 0x00, 0x17, 0xC3, 0x1C, 0x41, + 0x98, 0x32, 0x06, 0x40, 0xC8, 0x33, 0x06, 0x71, 0x8B, 0xC1, 0x00, 0x20, + 0x08, 0x01, 0x00, 0x00, 0x1E, 0xCC, 0x66, 0x09, 0x82, 0xC0, 0xB0, 0x4C, + 0x13, 0x04, 0x63, 0x0F, 0xC0, 0x20, 0x08, 0x02, 0x00, 0x80, 0x2C, 0x60, + 0x81, 0x04, 0x08, 0x10, 0x20, 0x81, 0x00, 0x1E, 0x33, 0x63, 0x60, 0x70, + 0x1E, 0x03, 0xC3, 0xC6, 0x7C, 0x22, 0xF2, 0x44, 0x44, 0xCC, 0xCE, 0x21, + 0x20, 0x90, 0x48, 0x24, 0x12, 0x13, 0x09, 0x84, 0xE6, 0x3E, 0x00, 0xC1, + 0xE1, 0xB0, 0xC8, 0xC4, 0x43, 0x61, 0xA0, 0xF0, 0x70, 0x18, 0x00, 0xC7, + 0x1E, 0x38, 0xB3, 0xCD, 0x96, 0x4C, 0xB6, 0x6D, 0xB1, 0x4D, 0x0E, 0x78, + 0x63, 0x83, 0x1C, 0x00, 0x10, 0xC3, 0x10, 0x24, 0x07, 0x80, 0xE0, 0x1C, + 0x07, 0x81, 0x90, 0x23, 0x08, 0x20, 0x30, 0x46, 0x18, 0x42, 0x08, 0xC1, + 0x10, 0x24, 0x07, 0x80, 0xE0, 0x1C, 0x03, 0x00, 0x60, 0x08, 0x03, 0x01, + 0xC0, 0x00, 0x3F, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, + 0x7F, 0x00, 0x18, 0x88, 0x42, 0x10, 0x88, 0xC3, 0x18, 0x88, 0x42, 0x18, + 0xE0, 0x11, 0x22, 0x22, 0x24, 0x44, 0x4C, 0x88, 0x88, 0x00, 0x38, 0xC2, + 0x10, 0x88, 0xC6, 0x18, 0x88, 0x42, 0x10, 0x88, 0xC0, 0x70, 0x4E, 0x41, + 0xC0}; + +const GFXglyph FreeSansOblique9pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 5, 0, 1}, // 0x20 ' ' + {0, 5, 13, 5, 2, -12}, // 0x21 '!' + {9, 5, 4, 6, 3, -12}, // 0x22 '"' + {12, 11, 13, 10, 1, -12}, // 0x23 '#' + {30, 11, 16, 10, 1, -13}, // 0x24 '$' + {52, 15, 13, 16, 2, -12}, // 0x25 '%' + {77, 10, 13, 12, 2, -12}, // 0x26 '&' + {94, 2, 4, 3, 3, -12}, // 0x27 ''' + {95, 7, 17, 6, 2, -12}, // 0x28 '(' + {110, 7, 17, 6, -1, -12}, // 0x29 ')' + {125, 6, 5, 7, 3, -12}, // 0x2A '*' + {129, 9, 8, 11, 2, -7}, // 0x2B '+' + {138, 3, 5, 5, 1, -1}, // 0x2C ',' + {140, 4, 1, 6, 2, -4}, // 0x2D '-' + {141, 2, 1, 5, 2, 0}, // 0x2E '.' + {142, 8, 13, 5, 0, -12}, // 0x2F '/' + {155, 9, 13, 10, 2, -12}, // 0x30 '0' + {170, 5, 13, 10, 4, -12}, // 0x31 '1' + {179, 11, 13, 10, 1, -12}, // 0x32 '2' + {197, 10, 13, 10, 1, -12}, // 0x33 '3' + {214, 9, 13, 10, 1, -12}, // 0x34 '4' + {229, 11, 13, 10, 1, -12}, // 0x35 '5' + {247, 10, 13, 10, 2, -12}, // 0x36 '6' + {264, 10, 13, 10, 2, -12}, // 0x37 '7' + {281, 10, 13, 10, 1, -12}, // 0x38 '8' + {298, 10, 13, 10, 1, -12}, // 0x39 '9' + {315, 4, 9, 5, 2, -8}, // 0x3A ':' + {320, 5, 12, 5, 1, -8}, // 0x3B ';' + {328, 9, 9, 11, 2, -8}, // 0x3C '<' + {339, 10, 4, 11, 1, -5}, // 0x3D '=' + {344, 9, 9, 11, 1, -7}, // 0x3E '>' + {355, 9, 13, 10, 3, -12}, // 0x3F '?' + {370, 18, 16, 18, 1, -12}, // 0x40 '@' + {406, 12, 13, 12, 0, -12}, // 0x41 'A' + {426, 12, 13, 12, 1, -12}, // 0x42 'B' + {446, 12, 13, 13, 2, -12}, // 0x43 'C' + {466, 13, 13, 13, 1, -12}, // 0x44 'D' + {488, 12, 13, 12, 1, -12}, // 0x45 'E' + {508, 12, 13, 11, 1, -12}, // 0x46 'F' + {528, 13, 13, 14, 2, -12}, // 0x47 'G' + {550, 13, 13, 13, 1, -12}, // 0x48 'H' + {572, 4, 13, 5, 2, -12}, // 0x49 'I' + {579, 10, 13, 9, 1, -12}, // 0x4A 'J' + {596, 14, 13, 12, 1, -12}, // 0x4B 'K' + {619, 9, 13, 10, 1, -12}, // 0x4C 'L' + {634, 16, 13, 15, 1, -12}, // 0x4D 'M' + {660, 13, 13, 13, 1, -12}, // 0x4E 'N' + {682, 13, 13, 14, 2, -12}, // 0x4F 'O' + {704, 12, 13, 12, 1, -12}, // 0x50 'P' + {724, 13, 14, 14, 2, -12}, // 0x51 'Q' + {747, 13, 13, 13, 1, -12}, // 0x52 'R' + {769, 12, 13, 12, 1, -12}, // 0x53 'S' + {789, 10, 13, 11, 3, -12}, // 0x54 'T' + {806, 12, 13, 13, 2, -12}, // 0x55 'U' + {826, 11, 13, 12, 3, -12}, // 0x56 'V' + {844, 16, 13, 17, 3, -12}, // 0x57 'W' + {870, 14, 13, 12, 0, -12}, // 0x58 'X' + {893, 12, 13, 12, 3, -12}, // 0x59 'Y' + {913, 12, 13, 11, 1, -12}, // 0x5A 'Z' + {933, 7, 17, 5, 0, -12}, // 0x5B '[' + {948, 2, 13, 5, 3, -12}, // 0x5C '\' + {952, 7, 17, 5, 0, -12}, // 0x5D ']' + {967, 7, 7, 8, 2, -12}, // 0x5E '^' + {974, 11, 1, 10, -1, 3}, // 0x5F '_' + {976, 3, 3, 6, 3, -12}, // 0x60 '`' + {978, 10, 10, 10, 1, -9}, // 0x61 'a' + {991, 10, 13, 10, 1, -12}, // 0x62 'b' + {1008, 9, 10, 9, 1, -9}, // 0x63 'c' + {1020, 11, 13, 10, 1, -12}, // 0x64 'd' + {1038, 10, 10, 10, 1, -9}, // 0x65 'e' + {1051, 6, 13, 5, 1, -12}, // 0x66 'f' + {1061, 10, 14, 10, 0, -9}, // 0x67 'g' + {1079, 10, 13, 10, 1, -12}, // 0x68 'h' + {1096, 4, 13, 4, 1, -12}, // 0x69 'i' + {1103, 6, 17, 4, -1, -12}, // 0x6A 'j' + {1116, 9, 13, 9, 1, -12}, // 0x6B 'k' + {1131, 4, 13, 4, 1, -12}, // 0x6C 'l' + {1138, 15, 10, 15, 1, -9}, // 0x6D 'm' + {1157, 10, 11, 10, 1, -10}, // 0x6E 'n' + {1171, 10, 10, 10, 1, -9}, // 0x6F 'o' + {1184, 11, 14, 10, 0, -9}, // 0x70 'p' + {1204, 10, 14, 10, 1, -9}, // 0x71 'q' + {1222, 7, 10, 6, 1, -9}, // 0x72 'r' + {1231, 8, 10, 9, 1, -9}, // 0x73 's' + {1241, 4, 12, 5, 2, -11}, // 0x74 't' + {1247, 9, 10, 10, 2, -9}, // 0x75 'u' + {1259, 9, 10, 9, 2, -9}, // 0x76 'v' + {1271, 13, 10, 13, 2, -9}, // 0x77 'w' + {1288, 11, 10, 9, 0, -9}, // 0x78 'x' + {1302, 11, 14, 9, 0, -9}, // 0x79 'y' + {1322, 9, 10, 9, 1, -9}, // 0x7A 'z' + {1334, 5, 17, 6, 2, -12}, // 0x7B '{' + {1345, 4, 17, 5, 1, -12}, // 0x7C '|' + {1354, 5, 17, 6, 0, -12}, // 0x7D '}' + {1365, 9, 3, 11, 2, -7}}; // 0x7E '~' + +const GFXfont FreeSansOblique9pt7b PROGMEM = { + (uint8_t *)FreeSansOblique9pt7bBitmaps, + (GFXglyph *)FreeSansOblique9pt7bGlyphs, 0x20, 0x7E, 22}; + +// Approx. 2041 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerif12pt7b.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerif12pt7b.h new file mode 100644 index 0000000..22cb53d --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerif12pt7b.h @@ -0,0 +1,261 @@ +#pragma once +#include + +const uint8_t FreeSerif12pt7bBitmaps[] PROGMEM = { + 0xFF, 0xFE, 0xA8, 0x3F, 0xCF, 0x3C, 0xF3, 0x8A, 0x20, 0x0C, 0x40, 0xC4, + 0x08, 0x40, 0x8C, 0x08, 0xC7, 0xFF, 0x18, 0x81, 0x88, 0x10, 0x81, 0x08, + 0xFF, 0xE1, 0x18, 0x31, 0x03, 0x10, 0x31, 0x02, 0x10, 0x04, 0x07, 0xC6, + 0x5B, 0x12, 0xC4, 0xB1, 0x0F, 0x41, 0xF0, 0x1E, 0x01, 0xE0, 0x58, 0x13, + 0x84, 0xE1, 0x3C, 0x4F, 0x96, 0x3F, 0x01, 0x00, 0x00, 0x04, 0x03, 0x83, + 0x03, 0x9F, 0x81, 0xC2, 0x20, 0x60, 0x90, 0x38, 0x24, 0x0C, 0x12, 0x03, + 0x0D, 0x00, 0xC6, 0x47, 0x9E, 0x23, 0x10, 0x09, 0x84, 0x04, 0xE1, 0x03, + 0x30, 0x40, 0x8C, 0x20, 0x43, 0x08, 0x10, 0xC4, 0x08, 0x1E, 0x00, 0x03, + 0xC0, 0x02, 0x30, 0x03, 0x08, 0x01, 0x84, 0x00, 0xC4, 0x00, 0x7C, 0xF8, + 0x1C, 0x38, 0x1E, 0x08, 0x33, 0x0C, 0x31, 0xC4, 0x10, 0x74, 0x18, 0x3A, + 0x0C, 0x0E, 0x07, 0x03, 0x83, 0xC3, 0xE2, 0x7E, 0x3E, 0xFF, 0xA0, 0x04, + 0x21, 0x08, 0x61, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC1, 0x04, 0x18, 0x20, + 0x40, 0x81, 0x81, 0x02, 0x04, 0x18, 0x20, 0x83, 0x0C, 0x30, 0xC3, 0x0C, + 0x30, 0x86, 0x10, 0x84, 0x20, 0x30, 0xB3, 0xD7, 0x54, 0x38, 0x7C, 0xD3, + 0x30, 0x30, 0x10, 0x04, 0x00, 0x80, 0x10, 0x02, 0x00, 0x41, 0xFF, 0xC1, + 0x00, 0x20, 0x04, 0x00, 0x80, 0x10, 0x00, 0xDF, 0x95, 0x00, 0xFC, 0xFC, + 0x06, 0x0C, 0x10, 0x60, 0xC1, 0x06, 0x0C, 0x10, 0x60, 0xC1, 0x06, 0x0C, + 0x10, 0x60, 0xC0, 0x1E, 0x0C, 0xC6, 0x19, 0x86, 0xC0, 0xB0, 0x3C, 0x0F, + 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xD8, 0x66, 0x18, 0xCC, 0x1E, + 0x00, 0x11, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, + 0x0C, 0xFC, 0x1E, 0x18, 0xC4, 0x1A, 0x06, 0x01, 0x80, 0x60, 0x10, 0x0C, + 0x02, 0x01, 0x00, 0xC0, 0x60, 0x30, 0x18, 0x1F, 0xF8, 0x1E, 0x18, 0xE8, + 0x18, 0x06, 0x01, 0x00, 0x80, 0xF0, 0x7E, 0x03, 0xC0, 0x70, 0x0C, 0x03, + 0x00, 0xC0, 0x6E, 0x11, 0xF8, 0x01, 0x00, 0xC0, 0x70, 0x2C, 0x0B, 0x04, + 0xC2, 0x30, 0x8C, 0x43, 0x20, 0xC8, 0x33, 0xFF, 0x03, 0x00, 0xC0, 0x30, + 0x0C, 0x00, 0x03, 0xF1, 0x00, 0x40, 0x18, 0x0F, 0x80, 0xF8, 0x0E, 0x01, + 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x20, 0x1B, 0x8C, 0x7C, 0x00, 0x01, + 0xC3, 0xC1, 0xC0, 0xC0, 0x70, 0x18, 0x0E, 0xF3, 0xCE, 0xC1, 0xF0, 0x3C, + 0x0F, 0x03, 0xC0, 0xD8, 0x36, 0x08, 0xC6, 0x1E, 0x00, 0x3F, 0xD0, 0x38, + 0x08, 0x06, 0x01, 0x80, 0x40, 0x10, 0x0C, 0x02, 0x00, 0x80, 0x20, 0x10, + 0x04, 0x01, 0x00, 0x80, 0x20, 0x1F, 0x18, 0x6C, 0x0F, 0x03, 0xC0, 0xF8, + 0x67, 0x30, 0xF0, 0x1E, 0x09, 0xE6, 0x3B, 0x07, 0xC0, 0xF0, 0x3C, 0x0D, + 0x86, 0x1F, 0x00, 0x1E, 0x08, 0xC6, 0x1B, 0x02, 0xC0, 0xF0, 0x3C, 0x0F, + 0x03, 0xE0, 0xDC, 0x73, 0xEC, 0x06, 0x01, 0x80, 0xC0, 0x70, 0x38, 0x38, + 0x18, 0x00, 0xFC, 0x00, 0x3F, 0xCC, 0xC0, 0x00, 0x00, 0x06, 0x77, 0x12, + 0x40, 0x00, 0x00, 0x07, 0x01, 0xE0, 0x78, 0x1E, 0x07, 0x00, 0xC0, 0x0F, + 0x00, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x07, 0x00, 0x10, 0xFF, 0xF0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x0E, 0x00, 0x3C, 0x00, 0xF0, + 0x03, 0xC0, 0x0F, 0x00, 0x30, 0x0E, 0x07, 0x81, 0xE0, 0x78, 0x0E, 0x00, + 0x00, 0x00, 0x7C, 0x86, 0x83, 0xC3, 0x03, 0x03, 0x06, 0x0C, 0x08, 0x08, + 0x10, 0x10, 0x00, 0x00, 0x30, 0x30, 0x30, 0x03, 0xF0, 0x06, 0x06, 0x06, + 0x00, 0x86, 0x00, 0x26, 0x0E, 0xD3, 0x0C, 0xC7, 0x0C, 0x63, 0x84, 0x31, + 0xC6, 0x18, 0xE3, 0x08, 0x71, 0x8C, 0x4C, 0xC6, 0x46, 0x3D, 0xC1, 0x80, + 0x00, 0x30, 0x10, 0x07, 0xF0, 0x00, 0x80, 0x00, 0x60, 0x00, 0x70, 0x00, + 0x38, 0x00, 0x2E, 0x00, 0x13, 0x00, 0x19, 0xC0, 0x08, 0x60, 0x04, 0x38, + 0x04, 0x0C, 0x03, 0xFF, 0x03, 0x03, 0x81, 0x00, 0xE1, 0x80, 0x70, 0xC0, + 0x3D, 0xF0, 0x3F, 0xFF, 0x83, 0x0C, 0x30, 0x63, 0x06, 0x30, 0x63, 0x06, + 0x30, 0xC3, 0xF0, 0x30, 0xE3, 0x06, 0x30, 0x33, 0x03, 0x30, 0x33, 0x07, + 0x30, 0xEF, 0xFC, 0x07, 0xE2, 0x38, 0x3C, 0xC0, 0x3B, 0x00, 0x36, 0x00, + 0x38, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, 0x03, + 0x00, 0x06, 0x00, 0x06, 0x00, 0x47, 0x03, 0x03, 0xF8, 0xFF, 0xC0, 0x30, + 0x78, 0x30, 0x1C, 0x30, 0x0E, 0x30, 0x06, 0x30, 0x03, 0x30, 0x03, 0x30, + 0x03, 0x30, 0x03, 0x30, 0x03, 0x30, 0x03, 0x30, 0x06, 0x30, 0x06, 0x30, + 0x0C, 0x30, 0x78, 0xFF, 0xC0, 0xFF, 0xFC, 0xC0, 0x33, 0x00, 0x4C, 0x00, + 0x30, 0x00, 0xC0, 0x43, 0x03, 0x0F, 0xFC, 0x30, 0x30, 0xC0, 0x43, 0x00, + 0x0C, 0x00, 0x30, 0x08, 0xC0, 0x23, 0x03, 0xBF, 0xFE, 0xFF, 0xFC, 0xC0, + 0x33, 0x00, 0x4C, 0x00, 0x30, 0x00, 0xC0, 0x43, 0x03, 0x0F, 0xFC, 0x30, + 0x30, 0xC0, 0x43, 0x00, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x03, 0x00, 0x3F, + 0x00, 0x07, 0xE4, 0x1C, 0x3C, 0x30, 0x0C, 0x60, 0x0C, 0x60, 0x04, 0xC0, + 0x00, 0xC0, 0x00, 0xC0, 0x3F, 0xC0, 0x0C, 0xC0, 0x0C, 0xC0, 0x0C, 0x60, + 0x0C, 0x60, 0x0C, 0x30, 0x0C, 0x1C, 0x1C, 0x07, 0xE0, 0xFC, 0x3F, 0x30, + 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x3F, + 0xFC, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30, + 0x0C, 0x30, 0x0C, 0xFC, 0x3F, 0xFC, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, + 0xC3, 0x0C, 0x30, 0xC3, 0x3F, 0x3F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, + 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0xC8, 0xF0, 0xFC, 0xFE, 0x30, + 0x38, 0x30, 0x20, 0x30, 0x40, 0x30, 0x80, 0x33, 0x00, 0x36, 0x00, 0x3E, + 0x00, 0x37, 0x00, 0x33, 0x80, 0x31, 0xC0, 0x30, 0xE0, 0x30, 0x70, 0x30, + 0x38, 0x30, 0x3C, 0xFC, 0x7F, 0xFC, 0x00, 0x60, 0x00, 0xC0, 0x01, 0x80, + 0x03, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, + 0xC0, 0x01, 0x80, 0x03, 0x00, 0x26, 0x00, 0x8C, 0x07, 0x7F, 0xFE, 0xF8, + 0x01, 0xE7, 0x00, 0x70, 0xE0, 0x0E, 0x1E, 0x03, 0xC2, 0xC0, 0x58, 0x5C, + 0x1B, 0x09, 0x82, 0x61, 0x38, 0x4C, 0x27, 0x11, 0x84, 0x72, 0x30, 0x8E, + 0xC6, 0x10, 0xD0, 0xC2, 0x1E, 0x18, 0x41, 0x83, 0x1C, 0x30, 0x67, 0xC4, + 0x3F, 0xF0, 0x1F, 0x78, 0x0E, 0x3C, 0x04, 0x3E, 0x04, 0x2E, 0x04, 0x27, + 0x04, 0x23, 0x84, 0x23, 0xC4, 0x21, 0xE4, 0x20, 0xE4, 0x20, 0x74, 0x20, + 0x3C, 0x20, 0x1C, 0x20, 0x0C, 0x70, 0x0C, 0xF8, 0x04, 0x07, 0xC0, 0x30, + 0x60, 0xC0, 0x63, 0x00, 0x66, 0x00, 0xD8, 0x00, 0xF0, 0x01, 0xE0, 0x03, + 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1B, 0x00, 0x66, 0x00, 0xC6, 0x03, 0x06, + 0x0C, 0x03, 0xE0, 0xFF, 0x83, 0x0E, 0x30, 0x73, 0x03, 0x30, 0x33, 0x03, + 0x30, 0x63, 0x0E, 0x3F, 0x83, 0x00, 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, + 0x30, 0x0F, 0xC0, 0x0F, 0xE0, 0x18, 0x30, 0x30, 0x18, 0x60, 0x0C, 0x60, + 0x0C, 0xC0, 0x06, 0xC0, 0x06, 0xC0, 0x06, 0xC0, 0x06, 0xC0, 0x06, 0xC0, + 0x06, 0x60, 0x0C, 0x60, 0x0C, 0x30, 0x18, 0x18, 0x30, 0x07, 0xC0, 0x03, + 0xC0, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1F, 0xFF, 0x80, 0x61, 0xC0, 0xC1, + 0xC1, 0x81, 0x83, 0x03, 0x06, 0x06, 0x0C, 0x1C, 0x18, 0x70, 0x3F, 0x80, + 0x67, 0x00, 0xC7, 0x01, 0x8F, 0x03, 0x0F, 0x06, 0x0E, 0x0C, 0x0E, 0x7E, + 0x0F, 0x1F, 0x46, 0x19, 0x81, 0x30, 0x27, 0x02, 0xF0, 0x0F, 0x00, 0xF8, + 0x07, 0xC0, 0x38, 0x03, 0xC0, 0x34, 0x06, 0x80, 0xDC, 0x32, 0x7C, 0xFF, + 0xFF, 0x86, 0x0E, 0x0C, 0x1C, 0x18, 0x10, 0x30, 0x00, 0x60, 0x00, 0xC0, + 0x01, 0x80, 0x03, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, + 0x60, 0x00, 0xC0, 0x07, 0xE0, 0xFC, 0x1F, 0x30, 0x0E, 0x30, 0x04, 0x30, + 0x04, 0x30, 0x04, 0x30, 0x04, 0x30, 0x04, 0x30, 0x04, 0x30, 0x04, 0x30, + 0x04, 0x30, 0x04, 0x30, 0x04, 0x30, 0x04, 0x18, 0x08, 0x1C, 0x18, 0x07, + 0xE0, 0xFE, 0x0F, 0x9C, 0x03, 0x0E, 0x01, 0x83, 0x00, 0x81, 0xC0, 0x40, + 0x60, 0x40, 0x38, 0x20, 0x0C, 0x30, 0x07, 0x10, 0x01, 0x98, 0x00, 0xE8, + 0x00, 0x34, 0x00, 0x1E, 0x00, 0x06, 0x00, 0x03, 0x00, 0x01, 0x00, 0xFC, + 0xFC, 0x3D, 0xE1, 0xC0, 0x63, 0x83, 0x01, 0x86, 0x0E, 0x04, 0x1C, 0x18, + 0x10, 0x70, 0x70, 0x80, 0xC3, 0xC2, 0x03, 0x8B, 0x08, 0x06, 0x6E, 0x40, + 0x1D, 0x19, 0x00, 0x74, 0x78, 0x00, 0xE1, 0xE0, 0x03, 0x83, 0x80, 0x0E, + 0x0C, 0x00, 0x10, 0x10, 0x00, 0x40, 0x40, 0x7F, 0x1F, 0x9E, 0x03, 0x07, + 0x03, 0x01, 0xC3, 0x00, 0x71, 0x00, 0x19, 0x00, 0x0F, 0x00, 0x03, 0x80, + 0x01, 0xE0, 0x01, 0xB0, 0x01, 0x9C, 0x00, 0x87, 0x00, 0x81, 0xC0, 0x80, + 0xE0, 0xC0, 0x79, 0xF8, 0x7F, 0xFE, 0x1F, 0x78, 0x0C, 0x38, 0x08, 0x1C, + 0x18, 0x0E, 0x10, 0x06, 0x20, 0x07, 0x60, 0x03, 0xC0, 0x01, 0x80, 0x01, + 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x07, + 0xE0, 0x7F, 0xFB, 0x00, 0xC8, 0x07, 0x20, 0x38, 0x01, 0xC0, 0x07, 0x00, + 0x38, 0x01, 0xC0, 0x07, 0x00, 0x38, 0x01, 0xC0, 0x0E, 0x00, 0x38, 0x05, + 0xC0, 0x3E, 0x01, 0xBF, 0xFE, 0xFE, 0x31, 0x8C, 0x63, 0x18, 0xC6, 0x31, + 0x8C, 0x63, 0x18, 0xC6, 0x31, 0xF0, 0xC1, 0x81, 0x03, 0x06, 0x04, 0x0C, + 0x18, 0x10, 0x30, 0x60, 0x40, 0xC1, 0x81, 0x03, 0x06, 0xF8, 0xC6, 0x31, + 0x8C, 0x63, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0xC7, 0xF0, 0x0C, 0x07, + 0x01, 0x60, 0xD8, 0x23, 0x18, 0xC4, 0x1B, 0x06, 0x80, 0xC0, 0xFF, 0xF0, + 0xC7, 0x0C, 0x30, 0x3E, 0x31, 0x8C, 0x30, 0x0C, 0x03, 0x07, 0xC6, 0x33, + 0x0C, 0xC3, 0x31, 0xC7, 0xB8, 0x20, 0x38, 0x06, 0x01, 0x80, 0x60, 0x18, + 0x06, 0xF1, 0xC6, 0x61, 0xD8, 0x36, 0x0D, 0x83, 0x60, 0xD8, 0x26, 0x19, + 0x84, 0x3E, 0x00, 0x1E, 0x23, 0x63, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE1, + 0x72, 0x3C, 0x00, 0x80, 0xE0, 0x18, 0x06, 0x01, 0x80, 0x61, 0xD8, 0x8E, + 0x61, 0xB0, 0x6C, 0x1B, 0x06, 0xC1, 0xB0, 0x6E, 0x19, 0xCE, 0x3D, 0xC0, + 0x1E, 0x08, 0xE4, 0x1B, 0xFE, 0xC0, 0x30, 0x0C, 0x03, 0x81, 0x60, 0x9C, + 0x41, 0xE0, 0x0F, 0x08, 0xC4, 0x06, 0x03, 0x01, 0x81, 0xF0, 0x60, 0x30, + 0x18, 0x0C, 0x06, 0x03, 0x01, 0x80, 0xC0, 0x60, 0xFC, 0x00, 0x1F, 0x03, + 0x1F, 0x60, 0xC6, 0x0C, 0x60, 0xC3, 0x18, 0x1F, 0x02, 0x00, 0x40, 0x07, + 0xFC, 0x40, 0x24, 0x02, 0xC0, 0x2C, 0x04, 0xE0, 0x83, 0xF0, 0x30, 0x1E, + 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0D, 0xE1, 0xCE, 0x30, 0xC6, 0x18, + 0xC3, 0x18, 0x63, 0x0C, 0x61, 0x8C, 0x31, 0x86, 0x79, 0xE0, 0x31, 0x80, + 0x00, 0x09, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0xDF, 0x0C, 0x30, 0x00, 0x00, + 0x31, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xF2, 0xF0, + 0x20, 0x1C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0xFB, 0x08, 0x62, + 0x0C, 0x81, 0xE0, 0x3E, 0x06, 0xE0, 0xCE, 0x18, 0xC3, 0x0E, 0xF3, 0xE0, + 0x13, 0x8C, 0x63, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0xC6, 0xF8, 0xF7, + 0x8F, 0x0E, 0x3C, 0xE3, 0x0C, 0x18, 0xC3, 0x06, 0x30, 0xC1, 0x8C, 0x30, + 0x63, 0x0C, 0x18, 0xC3, 0x06, 0x30, 0xC1, 0x8C, 0x30, 0x67, 0x9E, 0x3C, + 0xF7, 0x87, 0x18, 0xC3, 0x18, 0x63, 0x0C, 0x61, 0x8C, 0x31, 0x86, 0x30, + 0xC6, 0x19, 0xE7, 0x80, 0x1E, 0x18, 0xE4, 0x1B, 0x03, 0xC0, 0xF0, 0x3C, + 0x0F, 0x03, 0x60, 0x9C, 0x41, 0xE0, 0x77, 0x87, 0x18, 0xC3, 0x98, 0x33, + 0x06, 0x60, 0xCC, 0x19, 0x83, 0x30, 0xC7, 0x10, 0xDC, 0x18, 0x03, 0x00, + 0x60, 0x0C, 0x07, 0xE0, 0x1E, 0x8C, 0xE6, 0x1B, 0x06, 0xC1, 0xB0, 0x6C, + 0x1B, 0x06, 0xE1, 0x98, 0xE3, 0xD8, 0x06, 0x01, 0x80, 0x60, 0x18, 0x1F, + 0x37, 0x7B, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x7C, 0x7B, + 0x0E, 0x1C, 0x1E, 0x0F, 0x07, 0xC3, 0x87, 0x8A, 0xE0, 0x21, 0x8F, 0x98, + 0x61, 0x86, 0x18, 0x61, 0x86, 0x19, 0x38, 0xE3, 0x98, 0x66, 0x19, 0x86, + 0x61, 0x98, 0x66, 0x19, 0x86, 0x61, 0x9C, 0xE3, 0xDC, 0xF8, 0xEE, 0x08, + 0xC1, 0x18, 0x41, 0x88, 0x32, 0x03, 0x40, 0x68, 0x06, 0x00, 0xC0, 0x10, + 0x00, 0xF3, 0xE7, 0x61, 0x83, 0x70, 0xC2, 0x30, 0xC2, 0x30, 0xC4, 0x19, + 0x64, 0x19, 0x68, 0x0E, 0x38, 0x0E, 0x38, 0x0C, 0x30, 0x04, 0x10, 0xFB, + 0xC6, 0x30, 0x64, 0x0F, 0x00, 0xC0, 0x0C, 0x03, 0xC0, 0x98, 0x21, 0x8C, + 0x3B, 0xCF, 0x80, 0xF8, 0xEE, 0x08, 0xC1, 0x18, 0x41, 0x88, 0x31, 0x03, + 0x40, 0x68, 0x06, 0x00, 0xC0, 0x08, 0x02, 0x00, 0x40, 0x10, 0x1E, 0x03, + 0x80, 0x7F, 0x90, 0xE0, 0x30, 0x18, 0x0E, 0x03, 0x01, 0xC0, 0xE0, 0x30, + 0x5C, 0x3F, 0xF8, 0x19, 0x8C, 0x63, 0x18, 0xC6, 0x31, 0xB0, 0x63, 0x18, + 0xC6, 0x31, 0x8C, 0x61, 0x80, 0xFF, 0xFF, 0x80, 0xC3, 0x18, 0xC6, 0x31, + 0x8C, 0x63, 0x06, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0xCC, 0x00, 0x38, 0x06, + 0x62, 0x41, 0xC0}; + +const GFXglyph FreeSerif12pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 6, 0, 1}, // 0x20 ' ' + {0, 2, 16, 8, 3, -15}, // 0x21 '!' + {4, 6, 6, 10, 1, -15}, // 0x22 '"' + {9, 12, 16, 12, 0, -15}, // 0x23 '#' + {33, 10, 18, 12, 1, -16}, // 0x24 '$' + {56, 18, 17, 20, 1, -16}, // 0x25 '%' + {95, 17, 16, 19, 1, -15}, // 0x26 '&' + {129, 2, 6, 5, 1, -15}, // 0x27 ''' + {131, 6, 20, 8, 1, -15}, // 0x28 '(' + {146, 6, 20, 8, 1, -15}, // 0x29 ')' + {161, 8, 10, 12, 3, -14}, // 0x2A '*' + {171, 11, 11, 14, 1, -10}, // 0x2B '+' + {187, 3, 6, 6, 2, -2}, // 0x2C ',' + {190, 6, 1, 8, 1, -5}, // 0x2D '-' + {191, 2, 3, 6, 2, -2}, // 0x2E '.' + {192, 7, 17, 7, 0, -16}, // 0x2F '/' + {207, 10, 17, 12, 1, -16}, // 0x30 '0' + {229, 6, 17, 12, 3, -16}, // 0x31 '1' + {242, 10, 15, 12, 1, -14}, // 0x32 '2' + {261, 10, 16, 12, 1, -15}, // 0x33 '3' + {281, 10, 16, 12, 1, -15}, // 0x34 '4' + {301, 10, 17, 12, 1, -16}, // 0x35 '5' + {323, 10, 17, 12, 1, -16}, // 0x36 '6' + {345, 10, 16, 12, 0, -15}, // 0x37 '7' + {365, 10, 17, 12, 1, -16}, // 0x38 '8' + {387, 10, 18, 12, 1, -16}, // 0x39 '9' + {410, 2, 12, 6, 2, -11}, // 0x3A ':' + {413, 4, 15, 6, 2, -11}, // 0x3B ';' + {421, 12, 13, 14, 1, -12}, // 0x3C '<' + {441, 12, 6, 14, 1, -8}, // 0x3D '=' + {450, 12, 13, 14, 1, -11}, // 0x3E '>' + {470, 8, 17, 11, 2, -16}, // 0x3F '?' + {487, 17, 16, 21, 2, -15}, // 0x40 '@' + {521, 17, 16, 17, 0, -15}, // 0x41 'A' + {555, 12, 16, 15, 1, -15}, // 0x42 'B' + {579, 15, 16, 16, 1, -15}, // 0x43 'C' + {609, 16, 16, 17, 0, -15}, // 0x44 'D' + {641, 14, 16, 15, 0, -15}, // 0x45 'E' + {669, 14, 16, 14, 0, -15}, // 0x46 'F' + {697, 16, 16, 17, 1, -15}, // 0x47 'G' + {729, 16, 16, 17, 0, -15}, // 0x48 'H' + {761, 6, 16, 8, 1, -15}, // 0x49 'I' + {773, 8, 16, 9, 0, -15}, // 0x4A 'J' + {789, 16, 16, 17, 1, -15}, // 0x4B 'K' + {821, 15, 16, 15, 0, -15}, // 0x4C 'L' + {851, 19, 16, 21, 1, -15}, // 0x4D 'M' + {889, 16, 16, 17, 1, -15}, // 0x4E 'N' + {921, 15, 16, 17, 1, -15}, // 0x4F 'O' + {951, 12, 16, 14, 0, -15}, // 0x50 'P' + {975, 16, 20, 17, 1, -15}, // 0x51 'Q' + {1015, 15, 16, 16, 0, -15}, // 0x52 'R' + {1045, 11, 16, 13, 0, -15}, // 0x53 'S' + {1067, 15, 16, 15, 0, -15}, // 0x54 'T' + {1097, 16, 16, 17, 1, -15}, // 0x55 'U' + {1129, 17, 16, 17, 0, -15}, // 0x56 'V' + {1163, 22, 16, 23, 0, -15}, // 0x57 'W' + {1207, 17, 16, 17, 0, -15}, // 0x58 'X' + {1241, 16, 16, 17, 0, -15}, // 0x59 'Y' + {1273, 14, 16, 15, 1, -15}, // 0x5A 'Z' + {1301, 5, 20, 8, 2, -15}, // 0x5B '[' + {1314, 7, 17, 7, 0, -16}, // 0x5C '\' + {1329, 5, 20, 8, 1, -15}, // 0x5D ']' + {1342, 10, 9, 11, 1, -15}, // 0x5E '^' + {1354, 12, 1, 12, 0, 3}, // 0x5F '_' + {1356, 5, 4, 6, 0, -15}, // 0x60 '`' + {1359, 10, 11, 10, 1, -10}, // 0x61 'a' + {1373, 10, 17, 12, 1, -16}, // 0x62 'b' + {1395, 8, 11, 11, 1, -10}, // 0x63 'c' + {1406, 10, 17, 12, 1, -16}, // 0x64 'd' + {1428, 10, 11, 11, 1, -10}, // 0x65 'e' + {1442, 9, 17, 9, 0, -16}, // 0x66 'f' + {1462, 12, 16, 11, 0, -10}, // 0x67 'g' + {1486, 11, 17, 12, 0, -16}, // 0x68 'h' + {1510, 5, 16, 7, 0, -15}, // 0x69 'i' + {1520, 6, 21, 8, 0, -15}, // 0x6A 'j' + {1536, 11, 17, 12, 1, -16}, // 0x6B 'k' + {1560, 5, 17, 6, 0, -16}, // 0x6C 'l' + {1571, 18, 11, 19, 0, -10}, // 0x6D 'm' + {1596, 11, 11, 12, 0, -10}, // 0x6E 'n' + {1612, 10, 11, 12, 1, -10}, // 0x6F 'o' + {1626, 11, 16, 12, 0, -10}, // 0x70 'p' + {1648, 10, 16, 12, 1, -10}, // 0x71 'q' + {1668, 8, 11, 8, 0, -10}, // 0x72 'r' + {1679, 7, 11, 9, 1, -10}, // 0x73 's' + {1689, 6, 13, 7, 1, -12}, // 0x74 't' + {1699, 10, 11, 12, 1, -10}, // 0x75 'u' + {1713, 11, 11, 11, 0, -10}, // 0x76 'v' + {1729, 16, 11, 16, 0, -10}, // 0x77 'w' + {1751, 11, 11, 12, 0, -10}, // 0x78 'x' + {1767, 11, 16, 11, 0, -10}, // 0x79 'y' + {1789, 10, 11, 10, 0, -10}, // 0x7A 'z' + {1803, 5, 21, 12, 2, -16}, // 0x7B '{' + {1817, 1, 17, 5, 2, -16}, // 0x7C '|' + {1820, 5, 21, 12, 5, -15}, // 0x7D '}' + {1834, 12, 3, 12, 0, -6}}; // 0x7E '~' + +const GFXfont FreeSerif12pt7b PROGMEM = {(uint8_t *)FreeSerif12pt7bBitmaps, + (GFXglyph *)FreeSerif12pt7bGlyphs, + 0x20, 0x7E, 29}; + +// Approx. 2511 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerif18pt7b.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerif18pt7b.h new file mode 100644 index 0000000..3fd1ba5 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerif18pt7b.h @@ -0,0 +1,431 @@ +#pragma once +#include + +const uint8_t FreeSerif18pt7bBitmaps[] PROGMEM = { + 0x6F, 0xFF, 0xFF, 0xFE, 0x66, 0x66, 0x66, 0x64, 0x40, 0x00, 0x6F, 0xF6, + 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0x46, 0x42, 0x42, 0x42, 0x03, 0x06, 0x01, + 0x83, 0x00, 0xC1, 0x80, 0x61, 0xC0, 0x30, 0xC0, 0x38, 0x60, 0x18, 0x30, + 0xFF, 0xFF, 0x7F, 0xFF, 0x83, 0x06, 0x01, 0x86, 0x00, 0xC3, 0x00, 0xC1, + 0x87, 0xFF, 0xFF, 0xFF, 0xFE, 0x18, 0x30, 0x0C, 0x18, 0x06, 0x18, 0x06, + 0x0C, 0x03, 0x06, 0x01, 0x83, 0x00, 0xC1, 0x80, 0x60, 0xC0, 0x02, 0x00, + 0x10, 0x03, 0xE0, 0x64, 0xE6, 0x23, 0x61, 0x1B, 0x08, 0x58, 0x42, 0xE2, + 0x03, 0x90, 0x1F, 0x80, 0x7E, 0x00, 0xFC, 0x01, 0xF0, 0x0F, 0xC0, 0x4E, + 0x02, 0x38, 0x10, 0xE0, 0x87, 0x04, 0x3C, 0x21, 0xE1, 0x1B, 0xC9, 0xCF, + 0xFC, 0x1F, 0x80, 0x10, 0x00, 0x80, 0x07, 0x80, 0x20, 0x0F, 0xF0, 0x70, + 0x0F, 0x07, 0xD0, 0x0F, 0x02, 0x18, 0x07, 0x01, 0x18, 0x07, 0x00, 0x8C, + 0x03, 0x80, 0x4C, 0x01, 0x80, 0x44, 0x00, 0xC0, 0x26, 0x00, 0x60, 0x22, + 0x0F, 0x30, 0x33, 0x1F, 0xCC, 0x73, 0x1E, 0x37, 0xF1, 0x8E, 0x19, 0xE1, + 0x8E, 0x04, 0x00, 0x86, 0x02, 0x00, 0xC7, 0x01, 0x00, 0xC3, 0x80, 0x80, + 0x61, 0x80, 0x80, 0x60, 0xC0, 0x40, 0x30, 0x60, 0x40, 0x30, 0x38, 0xE0, + 0x30, 0x0F, 0xE0, 0x18, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x00, 0x7E, 0x00, + 0x00, 0x61, 0x80, 0x00, 0x60, 0x60, 0x00, 0x30, 0x30, 0x00, 0x18, 0x18, + 0x00, 0x0C, 0x0C, 0x00, 0x06, 0x0C, 0x00, 0x03, 0x8E, 0x00, 0x01, 0xCE, + 0x00, 0x00, 0x7C, 0x3F, 0xC0, 0x38, 0x07, 0x80, 0x3E, 0x03, 0x80, 0x77, + 0x01, 0x80, 0x73, 0xC0, 0x80, 0xF0, 0xF0, 0xC0, 0x70, 0x7C, 0xC0, 0x78, + 0x1E, 0x40, 0x3C, 0x07, 0xC0, 0x1E, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x0F, + 0xC0, 0xFF, 0x0D, 0xF0, 0xC7, 0xFC, 0x7F, 0xC1, 0xFC, 0x1F, 0x80, 0x3C, + 0x00, 0xFF, 0xFE, 0x92, 0x40, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0xC0, + 0xC0, 0x60, 0x70, 0x30, 0x18, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, + 0x70, 0x38, 0x0C, 0x06, 0x03, 0x80, 0xC0, 0x60, 0x18, 0x0C, 0x03, 0x00, + 0xC0, 0x30, 0x0C, 0x80, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x60, 0x18, 0x0C, + 0x07, 0x01, 0x80, 0xC0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, + 0xE0, 0x60, 0x30, 0x38, 0x18, 0x0C, 0x0C, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x00, 0x0C, 0x00, 0xC0, 0x0C, 0x0C, 0x46, 0xE4, 0xF7, 0x5E, 0x1F, 0x00, + 0xC0, 0x17, 0x8E, 0x4E, 0xE4, 0xFC, 0xC6, 0x0C, 0x00, 0xC0, 0x01, 0x80, + 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, + 0x01, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, + 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x6F, 0xFF, + 0x11, 0x24, 0x80, 0xFF, 0xFF, 0x6F, 0xF6, 0x00, 0xC0, 0x60, 0x18, 0x06, + 0x03, 0x80, 0xC0, 0x30, 0x1C, 0x06, 0x01, 0x80, 0xE0, 0x30, 0x0C, 0x07, + 0x01, 0x80, 0x60, 0x38, 0x0C, 0x03, 0x01, 0xC0, 0x60, 0x18, 0x0E, 0x03, + 0x00, 0x03, 0xE0, 0x0E, 0x70, 0x1C, 0x38, 0x38, 0x1C, 0x38, 0x1C, 0x78, + 0x1E, 0x70, 0x0E, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, + 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0x70, 0x0E, 0x70, + 0x0E, 0x78, 0x1E, 0x38, 0x1C, 0x38, 0x1C, 0x1C, 0x38, 0x0C, 0x30, 0x03, + 0xC0, 0x06, 0x03, 0x83, 0xE3, 0x38, 0x0E, 0x03, 0x80, 0xE0, 0x38, 0x0E, + 0x03, 0x80, 0xE0, 0x38, 0x0E, 0x03, 0x80, 0xE0, 0x38, 0x0E, 0x03, 0x80, + 0xE0, 0x38, 0x0E, 0x03, 0x81, 0xE1, 0xFF, 0x07, 0xC0, 0x1F, 0xF0, 0x3F, + 0xF8, 0x70, 0xF8, 0x60, 0x3C, 0xC0, 0x3C, 0x80, 0x1C, 0x00, 0x1C, 0x00, + 0x1C, 0x00, 0x18, 0x00, 0x18, 0x00, 0x30, 0x00, 0x30, 0x00, 0x60, 0x00, + 0xC0, 0x00, 0x80, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x01, 0x10, + 0x02, 0x3F, 0xFE, 0x7F, 0xFC, 0xFF, 0xFC, 0x0F, 0xC0, 0xFF, 0x0C, 0x3C, + 0x80, 0xE4, 0x03, 0x00, 0x18, 0x00, 0xC0, 0x04, 0x00, 0x40, 0x04, 0x00, + 0xF8, 0x1F, 0xE0, 0x0F, 0x00, 0x1C, 0x00, 0xE0, 0x03, 0x00, 0x18, 0x00, + 0xC0, 0x06, 0x00, 0x60, 0x03, 0x78, 0x73, 0xFF, 0x0F, 0xC0, 0x00, 0x30, + 0x00, 0x30, 0x00, 0x70, 0x00, 0xF0, 0x00, 0xB0, 0x01, 0x30, 0x03, 0x30, + 0x06, 0x30, 0x04, 0x30, 0x08, 0x30, 0x18, 0x30, 0x10, 0x30, 0x20, 0x30, + 0x60, 0x30, 0xC0, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x30, 0x00, 0x30, + 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x7F, 0xC3, + 0xFE, 0x1F, 0xE1, 0x80, 0x08, 0x00, 0xC0, 0x07, 0xC0, 0x7F, 0x81, 0xFF, + 0x00, 0xFC, 0x01, 0xE0, 0x07, 0x80, 0x1C, 0x00, 0x60, 0x03, 0x00, 0x18, + 0x00, 0xC0, 0x06, 0x00, 0x60, 0x07, 0x78, 0x73, 0xFF, 0x0F, 0xC0, 0x00, + 0x0E, 0x00, 0xF8, 0x03, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x3C, + 0x00, 0x7C, 0x00, 0x79, 0xF0, 0x7F, 0xFC, 0xF8, 0x3C, 0xF0, 0x1E, 0xF0, + 0x1F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0x70, 0x0F, 0x78, + 0x0F, 0x78, 0x0E, 0x3C, 0x1E, 0x1E, 0x3C, 0x0F, 0xF8, 0x07, 0xE0, 0x3F, + 0xFD, 0xFF, 0xF7, 0xFF, 0xF0, 0x06, 0x80, 0x18, 0x00, 0x60, 0x03, 0x00, + 0x0C, 0x00, 0x30, 0x01, 0x80, 0x06, 0x00, 0x18, 0x00, 0xE0, 0x03, 0x00, + 0x0C, 0x00, 0x70, 0x01, 0x80, 0x06, 0x00, 0x38, 0x00, 0xC0, 0x03, 0x00, + 0x1C, 0x00, 0x60, 0x00, 0x0F, 0x83, 0xFC, 0x70, 0xE6, 0x07, 0xC0, 0x3C, + 0x03, 0xC0, 0x3E, 0x03, 0x70, 0x67, 0x8C, 0x3D, 0x81, 0xF0, 0x0F, 0x81, + 0x7C, 0x21, 0xE6, 0x0E, 0xC0, 0x7C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x36, + 0x06, 0x70, 0xE3, 0xFC, 0x0F, 0x80, 0x07, 0xC0, 0x1F, 0xF0, 0x3C, 0x78, + 0x38, 0x3C, 0x78, 0x1E, 0x70, 0x1E, 0xF0, 0x0E, 0xF0, 0x0F, 0xF0, 0x0F, + 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF8, 0x0F, 0x78, 0x0F, 0x3C, 0x3F, + 0x1F, 0xEE, 0x0F, 0x9E, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x38, 0x00, 0x78, + 0x00, 0xF0, 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x70, 0x00, 0x6F, 0xF6, + 0x00, 0x00, 0x00, 0x00, 0x06, 0xFF, 0x60, 0x67, 0xBC, 0xC0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x19, 0xEF, 0x78, 0x42, 0x22, 0x20, 0x00, 0x00, 0xC0, + 0x00, 0xF0, 0x01, 0xF8, 0x01, 0xF8, 0x01, 0xF8, 0x01, 0xF0, 0x03, 0xF0, + 0x03, 0xF0, 0x00, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, + 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x03, 0xC0, + 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x80, + 0x00, 0x3C, 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x07, 0xC0, 0x00, 0x7C, + 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0x07, 0xC0, 0x00, 0xF0, 0x00, 0xFC, + 0x00, 0xFC, 0x00, 0xF8, 0x01, 0xF8, 0x01, 0xF8, 0x01, 0xF8, 0x00, 0xF0, + 0x00, 0x30, 0x00, 0x00, 0x1F, 0x81, 0xFF, 0x18, 0x7D, 0x81, 0xEC, 0x07, + 0xF0, 0x3F, 0x81, 0xE0, 0x0F, 0x00, 0x70, 0x03, 0x80, 0x38, 0x01, 0x80, + 0x08, 0x00, 0xC0, 0x04, 0x00, 0x20, 0x02, 0x00, 0x10, 0x00, 0x80, 0x00, + 0x00, 0x00, 0x03, 0x00, 0x3C, 0x01, 0xE0, 0x07, 0x00, 0x00, 0x7F, 0x00, + 0x01, 0xFF, 0xC0, 0x07, 0x80, 0xF0, 0x0F, 0x00, 0x38, 0x1C, 0x00, 0x1C, + 0x38, 0x00, 0x0C, 0x38, 0x00, 0x06, 0x70, 0x1E, 0x02, 0x70, 0x3F, 0xE3, + 0xF0, 0x71, 0xE1, 0xE0, 0xE0, 0xC1, 0xE0, 0xC0, 0xC1, 0xE0, 0xC1, 0xC1, + 0xE1, 0x81, 0xC1, 0xE1, 0x81, 0x83, 0xE1, 0x83, 0x82, 0xE1, 0x83, 0x86, + 0x71, 0xC7, 0x8C, 0x70, 0xF9, 0xF8, 0x38, 0xF0, 0xF0, 0x3C, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x07, 0x80, 0x70, 0x03, 0xFF, 0xE0, 0x00, 0x7F, 0x00, + 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x38, 0x00, 0x00, 0x38, 0x00, + 0x00, 0x7C, 0x00, 0x00, 0x5C, 0x00, 0x00, 0xDE, 0x00, 0x00, 0x8E, 0x00, + 0x01, 0x8F, 0x00, 0x01, 0x87, 0x00, 0x03, 0x07, 0x80, 0x03, 0x03, 0x80, + 0x02, 0x03, 0xC0, 0x06, 0x03, 0xC0, 0x07, 0xFF, 0xC0, 0x0F, 0xFF, 0xE0, + 0x0C, 0x01, 0xE0, 0x18, 0x00, 0xF0, 0x18, 0x00, 0xF0, 0x30, 0x00, 0x78, + 0x30, 0x00, 0x78, 0x70, 0x00, 0x7C, 0xFC, 0x01, 0xFF, 0xFF, 0xFC, 0x03, + 0xFF, 0xF8, 0x1E, 0x0F, 0xC1, 0xE0, 0x3C, 0x1E, 0x01, 0xE1, 0xE0, 0x1E, + 0x1E, 0x01, 0xE1, 0xE0, 0x1E, 0x1E, 0x03, 0xC1, 0xE0, 0x78, 0x1F, 0xFE, + 0x01, 0xFF, 0xF0, 0x1E, 0x07, 0xC1, 0xE0, 0x1E, 0x1E, 0x00, 0xF1, 0xE0, + 0x0F, 0x1E, 0x00, 0xF1, 0xE0, 0x0F, 0x1E, 0x00, 0xF1, 0xE0, 0x1E, 0x1E, + 0x07, 0xE3, 0xFF, 0xF8, 0xFF, 0xFE, 0x00, 0x00, 0xFE, 0x08, 0x0F, 0xFF, + 0x60, 0xFC, 0x1F, 0x87, 0xC0, 0x1E, 0x3C, 0x00, 0x38, 0xF0, 0x00, 0x67, + 0x80, 0x01, 0x9E, 0x00, 0x02, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, + 0x00, 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, + 0x3C, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x0F, + 0x00, 0x02, 0x1F, 0x00, 0x38, 0x3F, 0x03, 0x80, 0x7F, 0xFC, 0x00, 0x3F, + 0x80, 0xFF, 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0x78, 0x3F, 0x80, 0xF0, 0x0F, + 0x81, 0xE0, 0x0F, 0x83, 0xC0, 0x0F, 0x07, 0x80, 0x0F, 0x0F, 0x00, 0x1E, + 0x1E, 0x00, 0x1E, 0x3C, 0x00, 0x3C, 0x78, 0x00, 0x78, 0xF0, 0x00, 0xF1, + 0xE0, 0x01, 0xE3, 0xC0, 0x03, 0xC7, 0x80, 0x07, 0x8F, 0x00, 0x1E, 0x1E, + 0x00, 0x3C, 0x3C, 0x00, 0xF0, 0x78, 0x01, 0xE0, 0xF0, 0x0F, 0x81, 0xE0, + 0x7E, 0x07, 0xFF, 0xF0, 0x3F, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x87, 0xFF, + 0xF8, 0x3C, 0x01, 0x83, 0xC0, 0x08, 0x3C, 0x00, 0x83, 0xC0, 0x00, 0x3C, + 0x00, 0x03, 0xC0, 0x00, 0x3C, 0x02, 0x03, 0xC0, 0x60, 0x3F, 0xFE, 0x03, + 0xFF, 0xE0, 0x3C, 0x06, 0x03, 0xC0, 0x20, 0x3C, 0x00, 0x03, 0xC0, 0x00, + 0x3C, 0x00, 0x03, 0xC0, 0x01, 0x3C, 0x00, 0x23, 0xC0, 0x06, 0x3C, 0x01, + 0xE7, 0xFF, 0xFE, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xBF, 0xFF, 0xCF, 0x00, + 0x67, 0x80, 0x13, 0xC0, 0x09, 0xE0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3C, + 0x02, 0x1E, 0x03, 0x0F, 0xFF, 0x87, 0xFF, 0xC3, 0xC0, 0x61, 0xE0, 0x10, + 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x07, 0x80, + 0x03, 0xC0, 0x03, 0xF0, 0x03, 0xFC, 0x00, 0x00, 0xFE, 0x04, 0x07, 0xFF, + 0xB8, 0x1F, 0x03, 0xF0, 0xF8, 0x01, 0xE3, 0xE0, 0x01, 0xC7, 0x80, 0x01, + 0x9E, 0x00, 0x01, 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x03, + 0xC0, 0x00, 0x07, 0x80, 0x07, 0xFF, 0x00, 0x07, 0xDE, 0x00, 0x07, 0xBC, + 0x00, 0x0F, 0x78, 0x00, 0x1E, 0x78, 0x00, 0x3C, 0xF0, 0x00, 0x78, 0xF0, + 0x00, 0xF1, 0xF0, 0x01, 0xE1, 0xF0, 0x03, 0xC1, 0xF8, 0x1F, 0x00, 0xFF, + 0xFC, 0x00, 0x3F, 0x80, 0xFF, 0x03, 0xFD, 0xF8, 0x07, 0xE3, 0xC0, 0x0F, + 0x0F, 0x00, 0x3C, 0x3C, 0x00, 0xF0, 0xF0, 0x03, 0xC3, 0xC0, 0x0F, 0x0F, + 0x00, 0x3C, 0x3C, 0x00, 0xF0, 0xF0, 0x03, 0xC3, 0xFF, 0xFF, 0x0F, 0xFF, + 0xFC, 0x3C, 0x00, 0xF0, 0xF0, 0x03, 0xC3, 0xC0, 0x0F, 0x0F, 0x00, 0x3C, + 0x3C, 0x00, 0xF0, 0xF0, 0x03, 0xC3, 0xC0, 0x0F, 0x0F, 0x00, 0x3C, 0x3C, + 0x00, 0xF1, 0xF8, 0x07, 0xEF, 0xF0, 0x3F, 0xC0, 0xFF, 0xBF, 0x0F, 0x07, + 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xE0, + 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, 0xC3, 0xF3, 0xFE, 0x0F, 0xF0, + 0x7E, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, + 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, + 0x3C, 0x03, 0xC6, 0x38, 0xF3, 0x8F, 0xF0, 0x7C, 0x00, 0xFF, 0x07, 0xFC, + 0xFC, 0x03, 0xC0, 0xF0, 0x07, 0x01, 0xE0, 0x1C, 0x03, 0xC0, 0x60, 0x07, + 0x81, 0x80, 0x0F, 0x06, 0x00, 0x1E, 0x18, 0x00, 0x3C, 0x60, 0x00, 0x79, + 0x80, 0x00, 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x03, 0xDF, 0x00, 0x07, 0x8F, + 0x00, 0x0F, 0x0F, 0x00, 0x1E, 0x0F, 0x00, 0x3C, 0x0F, 0x00, 0x78, 0x0F, + 0x00, 0xF0, 0x1F, 0x01, 0xE0, 0x1F, 0x03, 0xC0, 0x1F, 0x0F, 0xC0, 0x3F, + 0x3F, 0xC1, 0xFF, 0x80, 0xFF, 0x00, 0x0F, 0xC0, 0x00, 0xF0, 0x00, 0x1E, + 0x00, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x3C, + 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0xC0, 0x00, 0x78, + 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x07, 0x80, 0x04, 0xF0, + 0x01, 0x1E, 0x00, 0x63, 0xC0, 0x3C, 0xFF, 0xFF, 0xBF, 0xFF, 0xE0, 0xFC, + 0x00, 0x03, 0xF9, 0xF0, 0x00, 0x1F, 0x87, 0x80, 0x01, 0xF8, 0x3E, 0x00, + 0x0F, 0xC1, 0xF0, 0x00, 0x5E, 0x0B, 0xC0, 0x06, 0xF0, 0x5E, 0x00, 0x37, + 0x82, 0x78, 0x03, 0x3C, 0x13, 0xC0, 0x19, 0xE0, 0x8F, 0x01, 0x8F, 0x04, + 0x78, 0x0C, 0x78, 0x21, 0xE0, 0xC3, 0xC1, 0x0F, 0x06, 0x1E, 0x08, 0x3C, + 0x60, 0xF0, 0x41, 0xE3, 0x07, 0x82, 0x07, 0xB0, 0x3C, 0x10, 0x3D, 0x81, + 0xE0, 0x81, 0xF8, 0x0F, 0x04, 0x07, 0xC0, 0x78, 0x20, 0x3C, 0x03, 0xC1, + 0x00, 0xE0, 0x1E, 0x1C, 0x06, 0x01, 0xFB, 0xF8, 0x10, 0x1F, 0xE0, 0xFC, + 0x00, 0xFE, 0x78, 0x00, 0x70, 0x78, 0x00, 0x40, 0xF8, 0x00, 0x81, 0xF8, + 0x01, 0x02, 0xF8, 0x02, 0x04, 0xF8, 0x04, 0x08, 0xF0, 0x08, 0x11, 0xF0, + 0x10, 0x21, 0xF0, 0x20, 0x41, 0xF0, 0x40, 0x81, 0xF0, 0x81, 0x01, 0xF1, + 0x02, 0x01, 0xE2, 0x04, 0x03, 0xE4, 0x08, 0x03, 0xE8, 0x10, 0x03, 0xF0, + 0x20, 0x03, 0xE0, 0x40, 0x03, 0xC0, 0x80, 0x03, 0x81, 0x00, 0x07, 0x07, + 0x00, 0x06, 0x3F, 0x80, 0x04, 0x00, 0x00, 0xFE, 0x00, 0x07, 0xFF, 0x00, + 0x3E, 0x0F, 0x80, 0xF0, 0x07, 0x83, 0xC0, 0x07, 0x87, 0x80, 0x07, 0x1E, + 0x00, 0x0F, 0x3C, 0x00, 0x1E, 0xF0, 0x00, 0x1F, 0xE0, 0x00, 0x3F, 0xC0, + 0x00, 0x7F, 0x80, 0x00, 0xFF, 0x00, 0x01, 0xFE, 0x00, 0x03, 0xFC, 0x00, + 0x07, 0xF8, 0x00, 0x0F, 0x78, 0x00, 0x3C, 0xF0, 0x00, 0x78, 0xE0, 0x01, + 0xE1, 0xE0, 0x03, 0xC1, 0xE0, 0x0F, 0x01, 0xF0, 0x7C, 0x00, 0xFF, 0xE0, + 0x00, 0x7F, 0x00, 0xFF, 0xF8, 0x1F, 0xFF, 0x83, 0xC1, 0xF0, 0xF0, 0x1E, + 0x3C, 0x07, 0xCF, 0x00, 0xF3, 0xC0, 0x3C, 0xF0, 0x0F, 0x3C, 0x03, 0xCF, + 0x01, 0xF3, 0xC0, 0x78, 0xF0, 0x7C, 0x3F, 0xFE, 0x0F, 0xFE, 0x03, 0xC0, + 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, + 0x3C, 0x00, 0x1F, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x07, 0xFF, + 0x00, 0x3E, 0x0F, 0x80, 0xF0, 0x07, 0x83, 0xC0, 0x07, 0x87, 0x80, 0x0F, + 0x1E, 0x00, 0x0F, 0x3C, 0x00, 0x1E, 0xF0, 0x00, 0x1D, 0xE0, 0x00, 0x3F, + 0xC0, 0x00, 0x7F, 0x80, 0x00, 0xFF, 0x00, 0x01, 0xFE, 0x00, 0x03, 0xFC, + 0x00, 0x07, 0xF8, 0x00, 0x0F, 0x70, 0x00, 0x1C, 0xF0, 0x00, 0x79, 0xE0, + 0x00, 0xF1, 0xE0, 0x03, 0xC1, 0xC0, 0x07, 0x01, 0xC0, 0x1C, 0x01, 0xE0, + 0xF0, 0x00, 0x7F, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7C, + 0x00, 0x00, 0x7E, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x0F, 0xC0, 0xFF, 0xF0, + 0x03, 0xFF, 0xF0, 0x0F, 0x07, 0xC0, 0x78, 0x1E, 0x03, 0xC0, 0x78, 0x1E, + 0x03, 0xC0, 0xF0, 0x1E, 0x07, 0x80, 0xF0, 0x3C, 0x07, 0x81, 0xE0, 0x78, + 0x0F, 0x0F, 0x80, 0x7F, 0xF8, 0x03, 0xFE, 0x00, 0x1E, 0x78, 0x00, 0xF1, + 0xE0, 0x07, 0x87, 0x80, 0x3C, 0x3C, 0x01, 0xE0, 0xF0, 0x0F, 0x03, 0xC0, + 0x78, 0x0F, 0x03, 0xC0, 0x7C, 0x3F, 0x01, 0xF3, 0xFC, 0x07, 0xE0, 0x07, + 0x84, 0x1F, 0xFC, 0x3C, 0x3E, 0x30, 0x0E, 0x70, 0x06, 0x70, 0x06, 0x70, + 0x02, 0x78, 0x00, 0x7C, 0x00, 0x3F, 0x00, 0x1F, 0xC0, 0x0F, 0xE0, 0x03, + 0xF8, 0x00, 0xFC, 0x00, 0x3E, 0x00, 0x1F, 0x80, 0x0F, 0x80, 0x0F, 0xC0, + 0x0F, 0xE0, 0x0F, 0x70, 0x1E, 0x78, 0x3C, 0x4F, 0xF8, 0x43, 0xF0, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xF0, 0x7C, 0x0F, 0x03, 0x80, 0xF0, 0x10, + 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, + 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, + 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, + 0x00, 0x00, 0xF0, 0x00, 0x1F, 0x80, 0x03, 0xFC, 0x00, 0xFF, 0x01, 0xFD, + 0xF8, 0x01, 0xC3, 0xC0, 0x02, 0x0F, 0x00, 0x08, 0x3C, 0x00, 0x20, 0xF0, + 0x00, 0x83, 0xC0, 0x02, 0x0F, 0x00, 0x08, 0x3C, 0x00, 0x20, 0xF0, 0x00, + 0x83, 0xC0, 0x02, 0x0F, 0x00, 0x08, 0x3C, 0x00, 0x20, 0xF0, 0x00, 0x83, + 0xC0, 0x02, 0x0F, 0x00, 0x08, 0x3C, 0x00, 0x20, 0xF0, 0x00, 0x81, 0xE0, + 0x04, 0x07, 0x80, 0x30, 0x0F, 0x81, 0x80, 0x1F, 0xFC, 0x00, 0x1F, 0xC0, + 0x00, 0xFF, 0xC0, 0x7F, 0x3E, 0x00, 0x1E, 0x1E, 0x00, 0x0C, 0x0E, 0x00, + 0x18, 0x0F, 0x00, 0x18, 0x07, 0x00, 0x10, 0x07, 0x80, 0x30, 0x07, 0x80, + 0x30, 0x03, 0xC0, 0x60, 0x03, 0xC0, 0x60, 0x01, 0xE0, 0x40, 0x01, 0xE0, + 0xC0, 0x00, 0xF0, 0xC0, 0x00, 0xF1, 0x80, 0x00, 0x71, 0x80, 0x00, 0x7B, + 0x00, 0x00, 0x3B, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x1E, + 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x08, 0x00, 0xFF, 0x9F, + 0xF0, 0x3F, 0x9F, 0x03, 0xE0, 0x07, 0x07, 0x80, 0xF0, 0x03, 0x03, 0xC0, + 0x78, 0x01, 0x80, 0xE0, 0x1E, 0x00, 0x80, 0x78, 0x0F, 0x00, 0xC0, 0x1C, + 0x03, 0x80, 0x60, 0x0F, 0x01, 0xE0, 0x20, 0x07, 0x81, 0xF0, 0x30, 0x01, + 0xC0, 0xBC, 0x18, 0x00, 0xF0, 0xDE, 0x08, 0x00, 0x78, 0x67, 0x0C, 0x00, + 0x1E, 0x23, 0xC4, 0x00, 0x0F, 0x31, 0xE6, 0x00, 0x03, 0x90, 0x7B, 0x00, + 0x01, 0xF8, 0x3D, 0x00, 0x00, 0xFC, 0x0F, 0x80, 0x00, 0x3C, 0x07, 0xC0, + 0x00, 0x1E, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0xE0, 0x00, 0x03, 0x00, 0x70, + 0x00, 0x01, 0x80, 0x10, 0x00, 0x00, 0x80, 0x08, 0x00, 0x7F, 0xE0, 0xFF, + 0x0F, 0xC0, 0x1E, 0x03, 0xE0, 0x0E, 0x00, 0xF0, 0x06, 0x00, 0x3C, 0x06, + 0x00, 0x0F, 0x06, 0x00, 0x07, 0x86, 0x00, 0x01, 0xE6, 0x00, 0x00, 0x7B, + 0x00, 0x00, 0x3F, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x03, + 0xF0, 0x00, 0x03, 0x78, 0x00, 0x01, 0x9E, 0x00, 0x01, 0x87, 0x80, 0x01, + 0x83, 0xE0, 0x01, 0x80, 0xF0, 0x01, 0x80, 0x3C, 0x01, 0x80, 0x1F, 0x01, + 0xC0, 0x07, 0xC1, 0xE0, 0x03, 0xF3, 0xFE, 0x0F, 0xFE, 0xFF, 0xC0, 0xFF, + 0x7E, 0x00, 0x1C, 0x1E, 0x00, 0x18, 0x1F, 0x00, 0x30, 0x0F, 0x00, 0x60, + 0x07, 0x80, 0x60, 0x03, 0xC0, 0xC0, 0x03, 0xE1, 0x80, 0x01, 0xE1, 0x80, + 0x00, 0xF3, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3C, 0x00, + 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, + 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, + 0x00, 0x7E, 0x00, 0x01, 0xFF, 0x80, 0x3F, 0xFF, 0xF1, 0xFF, 0xFF, 0x9C, + 0x00, 0x78, 0xC0, 0x07, 0x84, 0x00, 0x38, 0x00, 0x03, 0xC0, 0x00, 0x3C, + 0x00, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, + 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, + 0x07, 0x00, 0x00, 0x78, 0x00, 0x47, 0x80, 0x06, 0x78, 0x00, 0x33, 0x80, + 0x07, 0x3F, 0xFF, 0xFB, 0xFF, 0xFF, 0xC0, 0xFF, 0x83, 0x06, 0x0C, 0x18, + 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, + 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x07, 0xF0, 0xC0, 0x18, 0x06, 0x01, + 0x80, 0x70, 0x0C, 0x03, 0x00, 0xE0, 0x18, 0x06, 0x01, 0xC0, 0x30, 0x0C, + 0x03, 0x80, 0x60, 0x18, 0x07, 0x00, 0xC0, 0x30, 0x0E, 0x01, 0x80, 0x60, + 0x1C, 0x03, 0xFE, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, + 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, + 0x0C, 0x1F, 0xF0, 0x03, 0x80, 0x0F, 0x00, 0x1F, 0x00, 0x76, 0x00, 0xCE, + 0x03, 0x8C, 0x06, 0x1C, 0x1C, 0x18, 0x30, 0x30, 0xE0, 0x31, 0x80, 0x67, + 0x00, 0x6C, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xC0, 0xE0, 0x70, + 0x18, 0x0C, 0x03, 0x1F, 0x03, 0x8C, 0x38, 0x31, 0xC1, 0x8E, 0x0C, 0x00, + 0x60, 0x0F, 0x01, 0x98, 0x30, 0xC3, 0x86, 0x38, 0x31, 0xC1, 0x8E, 0x0C, + 0x78, 0xE5, 0xFB, 0xCF, 0x0C, 0x00, 0x00, 0x38, 0x00, 0xF8, 0x00, 0x38, + 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x39, + 0xF0, 0x3B, 0xFC, 0x3C, 0x3E, 0x38, 0x0E, 0x38, 0x0F, 0x38, 0x07, 0x38, + 0x07, 0x38, 0x07, 0x38, 0x07, 0x38, 0x07, 0x38, 0x06, 0x38, 0x0E, 0x38, + 0x0C, 0x3C, 0x1C, 0x1F, 0xF0, 0x07, 0xE0, 0x07, 0xE0, 0x7F, 0xE3, 0x87, + 0xD8, 0x0F, 0x60, 0x1B, 0x00, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x03, 0x00, + 0x0E, 0x00, 0x3C, 0x01, 0x78, 0x19, 0xFF, 0xC3, 0xFE, 0x03, 0xE0, 0x00, + 0x00, 0x00, 0x1C, 0x00, 0x7C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, + 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x07, 0x9C, 0x1F, 0xDC, 0x38, 0x7C, 0x70, + 0x3C, 0x70, 0x1C, 0x60, 0x1C, 0xE0, 0x1C, 0xE0, 0x1C, 0xE0, 0x1C, 0xE0, + 0x1C, 0xE0, 0x1C, 0xF0, 0x1C, 0x70, 0x1C, 0x7C, 0x3E, 0x3F, 0xDF, 0x0F, + 0x90, 0x0F, 0x81, 0xFF, 0x08, 0x3C, 0x80, 0xE7, 0xFF, 0x7F, 0xFF, 0x00, + 0x18, 0x00, 0xC0, 0x07, 0x00, 0x38, 0x03, 0xE0, 0x37, 0x83, 0x3F, 0xF0, + 0xFF, 0x03, 0xF0, 0x01, 0xF0, 0x3F, 0xC3, 0x8E, 0x18, 0x00, 0xC0, 0x0E, + 0x00, 0x70, 0x03, 0x80, 0x1C, 0x03, 0xFE, 0x1F, 0xF0, 0x38, 0x01, 0xC0, + 0x0E, 0x00, 0x70, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x01, + 0xC0, 0x0E, 0x00, 0x70, 0x07, 0xC0, 0xFF, 0x80, 0x0F, 0xC0, 0x1F, 0xFF, + 0x38, 0xFF, 0x70, 0x70, 0x70, 0x70, 0x70, 0x30, 0x70, 0x30, 0x70, 0x30, + 0x38, 0x20, 0x1C, 0x60, 0x0F, 0x80, 0x10, 0x00, 0x20, 0x00, 0x60, 0x00, + 0x7F, 0xE0, 0x3F, 0xFC, 0x1F, 0xFE, 0x20, 0x06, 0x40, 0x02, 0xC0, 0x02, + 0xC0, 0x04, 0xF0, 0x18, 0x7F, 0xF0, 0x1F, 0x80, 0x00, 0x00, 0x38, 0x00, + 0xF8, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, + 0x38, 0x00, 0x38, 0xF0, 0x3B, 0xF8, 0x3E, 0x3C, 0x3C, 0x1C, 0x38, 0x1C, + 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, + 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x7C, 0x3E, 0xFE, 0x7F, 0x18, 0x3C, + 0x3C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x04, 0x3C, 0x7C, 0x1C, 0x1C, 0x1C, + 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x3C, 0xFF, 0x03, 0x03, + 0xC1, 0xE0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0xC3, 0xE0, 0x70, + 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, + 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x37, 0x3B, 0xF8, 0xF8, 0x00, 0x00, + 0x1C, 0x00, 0x3E, 0x00, 0x07, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, + 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x3F, 0x8E, 0x0F, 0x07, 0x06, 0x03, + 0x86, 0x01, 0xC4, 0x00, 0xE4, 0x00, 0x7E, 0x00, 0x3F, 0x80, 0x1D, 0xC0, + 0x0E, 0x70, 0x07, 0x1C, 0x03, 0x8F, 0x01, 0xC3, 0xC0, 0xE0, 0xF0, 0xF8, + 0x3C, 0xFE, 0x7F, 0x80, 0x00, 0x1C, 0x7C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, + 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, + 0x1C, 0x1C, 0x1C, 0x3C, 0xFF, 0x38, 0xF0, 0x7C, 0x3E, 0xFE, 0x7F, 0x83, + 0xE3, 0xF0, 0xE0, 0xE0, 0x70, 0x1C, 0x38, 0x1C, 0x07, 0x0E, 0x07, 0x01, + 0xC3, 0x81, 0xC0, 0x70, 0xE0, 0x70, 0x1C, 0x38, 0x1C, 0x07, 0x0E, 0x07, + 0x01, 0xC3, 0x81, 0xC0, 0x70, 0xE0, 0x70, 0x1C, 0x38, 0x1C, 0x07, 0x0E, + 0x07, 0x01, 0xC3, 0x81, 0xE0, 0x73, 0xF9, 0xFC, 0x7F, 0x38, 0xF0, 0xFB, + 0xF8, 0x3E, 0x3C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, + 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, + 0x1C, 0x78, 0x3C, 0xFE, 0x7F, 0x07, 0xE0, 0x1F, 0xF8, 0x3C, 0x7C, 0x78, + 0x3E, 0x70, 0x1E, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, + 0x0F, 0xF8, 0x0F, 0x78, 0x0E, 0x7C, 0x1C, 0x3E, 0x3C, 0x0F, 0xF0, 0x07, + 0xC0, 0x18, 0xF0, 0xFB, 0xFC, 0x3E, 0x1E, 0x38, 0x0E, 0x38, 0x0F, 0x38, + 0x07, 0x38, 0x07, 0x38, 0x07, 0x38, 0x07, 0x38, 0x07, 0x38, 0x06, 0x38, + 0x0E, 0x38, 0x0C, 0x3E, 0x1C, 0x3B, 0xF8, 0x39, 0xE0, 0x38, 0x00, 0x38, + 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x7C, 0x00, 0xFF, + 0x00, 0x07, 0xC4, 0x1F, 0xEC, 0x3C, 0x3C, 0x70, 0x1C, 0x70, 0x1C, 0x60, + 0x1C, 0xE0, 0x1C, 0xE0, 0x1C, 0xE0, 0x1C, 0xE0, 0x1C, 0xE0, 0x1C, 0xF0, + 0x1C, 0x70, 0x1C, 0x78, 0x3C, 0x3F, 0xDC, 0x1F, 0x1C, 0x00, 0x1C, 0x00, + 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x3E, 0x00, + 0xFF, 0x19, 0xFF, 0x7C, 0xF3, 0x9C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC0, + 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x1F, 0x07, 0xF0, 0x3E, + 0x58, 0x7C, 0x0F, 0x03, 0xC0, 0x7C, 0x07, 0x80, 0xF8, 0x1F, 0x81, 0xF8, + 0x1E, 0x03, 0xC0, 0xF0, 0x3E, 0x1A, 0x7C, 0x10, 0x30, 0x70, 0xFE, 0xFE, + 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x79, + 0x7E, 0x3C, 0xF8, 0x7C, 0x38, 0x3C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, + 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, + 0x38, 0x1C, 0x38, 0x1C, 0x3C, 0x7C, 0x1F, 0xDF, 0x0F, 0x18, 0xFE, 0x1F, + 0x7C, 0x06, 0x38, 0x04, 0x1C, 0x04, 0x1C, 0x0C, 0x0E, 0x08, 0x0E, 0x18, + 0x07, 0x10, 0x07, 0x10, 0x07, 0x20, 0x03, 0xA0, 0x03, 0xE0, 0x01, 0xC0, + 0x01, 0xC0, 0x00, 0x80, 0x00, 0x80, 0xFC, 0x7F, 0x1F, 0x78, 0x3C, 0x06, + 0x38, 0x1C, 0x04, 0x38, 0x1C, 0x04, 0x1C, 0x1C, 0x0C, 0x1C, 0x0E, 0x08, + 0x1C, 0x1E, 0x18, 0x0E, 0x17, 0x10, 0x0E, 0x37, 0x10, 0x07, 0x23, 0x30, + 0x07, 0x63, 0xA0, 0x07, 0x43, 0xE0, 0x03, 0xC1, 0xC0, 0x03, 0x81, 0xC0, + 0x01, 0x80, 0x80, 0x01, 0x00, 0x80, 0x7F, 0x7E, 0x1E, 0x0C, 0x07, 0x8C, + 0x01, 0xC4, 0x00, 0x76, 0x00, 0x3E, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x03, + 0xE0, 0x01, 0x70, 0x01, 0x1C, 0x01, 0x8F, 0x01, 0x83, 0x80, 0x80, 0xE0, + 0xC0, 0x79, 0xF0, 0xFF, 0xFE, 0x0F, 0x7C, 0x06, 0x38, 0x06, 0x1C, 0x04, + 0x1C, 0x0C, 0x0E, 0x0C, 0x0E, 0x08, 0x0F, 0x18, 0x07, 0x10, 0x07, 0x90, + 0x03, 0xB0, 0x03, 0xA0, 0x01, 0xE0, 0x01, 0xE0, 0x00, 0xC0, 0x00, 0xC0, + 0x00, 0x80, 0x00, 0x80, 0x01, 0x80, 0x01, 0x00, 0x03, 0x00, 0x7E, 0x00, + 0x7C, 0x00, 0x78, 0x00, 0x7F, 0xF9, 0xFF, 0xE6, 0x07, 0x10, 0x38, 0x00, + 0xE0, 0x07, 0x00, 0x38, 0x01, 0xE0, 0x07, 0x00, 0x38, 0x01, 0xE0, 0x07, + 0x01, 0x38, 0x0D, 0xC0, 0x3F, 0xFF, 0xBF, 0xFE, 0x07, 0x0E, 0x1C, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x30, 0x60, 0x60, + 0x10, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1C, + 0x0E, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x70, 0x38, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x08, 0x06, 0x06, + 0x08, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x38, + 0x70, 0xE0, 0x3E, 0x00, 0x7F, 0x87, 0xE3, 0xFE, 0x00, 0x7C}; + +const GFXglyph FreeSerif18pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 9, 0, 1}, // 0x20 ' ' + {0, 4, 24, 12, 5, -23}, // 0x21 '!' + {12, 8, 9, 14, 3, -23}, // 0x22 '"' + {21, 17, 23, 17, 0, -22}, // 0x23 '#' + {70, 13, 27, 17, 2, -24}, // 0x24 '$' + {114, 25, 23, 29, 2, -22}, // 0x25 '%' + {186, 25, 25, 27, 1, -24}, // 0x26 '&' + {265, 3, 9, 7, 2, -23}, // 0x27 ''' + {269, 9, 30, 12, 2, -23}, // 0x28 '(' + {303, 9, 30, 12, 1, -22}, // 0x29 ')' + {337, 12, 14, 18, 3, -23}, // 0x2A '*' + {358, 16, 18, 20, 2, -17}, // 0x2B '+' + {394, 4, 9, 9, 2, -3}, // 0x2C ',' + {399, 8, 2, 12, 1, -8}, // 0x2D '-' + {401, 4, 4, 9, 2, -3}, // 0x2E '.' + {403, 10, 24, 10, 0, -23}, // 0x2F '/' + {433, 16, 24, 18, 1, -23}, // 0x30 '0' + {481, 10, 24, 18, 3, -23}, // 0x31 '1' + {511, 16, 24, 17, 1, -23}, // 0x32 '2' + {559, 13, 24, 17, 2, -23}, // 0x33 '3' + {598, 16, 23, 18, 0, -22}, // 0x34 '4' + {644, 13, 24, 17, 2, -23}, // 0x35 '5' + {683, 16, 24, 18, 1, -23}, // 0x36 '6' + {731, 14, 23, 18, 1, -22}, // 0x37 '7' + {772, 12, 25, 18, 2, -24}, // 0x38 '8' + {810, 16, 26, 17, 1, -24}, // 0x39 '9' + {862, 4, 17, 9, 2, -16}, // 0x3A ':' + {871, 5, 22, 9, 2, -16}, // 0x3B ';' + {885, 18, 18, 20, 1, -17}, // 0x3C '<' + {926, 18, 9, 20, 1, -12}, // 0x3D '=' + {947, 18, 18, 20, 1, -17}, // 0x3E '>' + {988, 13, 25, 16, 2, -24}, // 0x3F '?' + {1029, 24, 25, 30, 3, -24}, // 0x40 '@' + {1104, 24, 23, 25, 1, -22}, // 0x41 'A' + {1173, 20, 23, 22, 1, -22}, // 0x42 'B' + {1231, 22, 24, 23, 1, -23}, // 0x43 'C' + {1297, 23, 23, 25, 1, -22}, // 0x44 'D' + {1364, 20, 23, 21, 2, -22}, // 0x45 'E' + {1422, 17, 23, 20, 2, -22}, // 0x46 'F' + {1471, 23, 24, 25, 1, -23}, // 0x47 'G' + {1540, 22, 23, 25, 2, -22}, // 0x48 'H' + {1604, 9, 23, 11, 2, -22}, // 0x49 'I' + {1630, 12, 23, 13, 0, -22}, // 0x4A 'J' + {1665, 23, 23, 25, 2, -22}, // 0x4B 'K' + {1732, 19, 23, 21, 2, -22}, // 0x4C 'L' + {1787, 29, 23, 31, 1, -22}, // 0x4D 'M' + {1871, 23, 23, 25, 1, -22}, // 0x4E 'N' + {1938, 23, 24, 25, 1, -23}, // 0x4F 'O' + {2007, 18, 23, 20, 1, -22}, // 0x50 'P' + {2059, 23, 30, 25, 1, -23}, // 0x51 'Q' + {2146, 21, 23, 23, 2, -22}, // 0x52 'R' + {2207, 16, 24, 19, 1, -23}, // 0x53 'S' + {2255, 20, 23, 21, 1, -22}, // 0x54 'T' + {2313, 22, 23, 25, 2, -22}, // 0x55 'U' + {2377, 24, 23, 25, 0, -22}, // 0x56 'V' + {2446, 33, 23, 33, 0, -22}, // 0x57 'W' + {2541, 25, 23, 25, 0, -22}, // 0x58 'X' + {2613, 24, 23, 25, 1, -22}, // 0x59 'Y' + {2682, 21, 23, 21, 0, -22}, // 0x5A 'Z' + {2743, 7, 28, 12, 3, -22}, // 0x5B '[' + {2768, 10, 24, 10, 0, -23}, // 0x5C '\' + {2798, 7, 28, 12, 2, -22}, // 0x5D ']' + {2823, 15, 13, 16, 1, -22}, // 0x5E '^' + {2848, 18, 2, 17, 0, 3}, // 0x5F '_' + {2853, 8, 6, 9, 1, -23}, // 0x60 '`' + {2859, 13, 16, 15, 2, -15}, // 0x61 'a' + {2885, 16, 25, 17, 1, -24}, // 0x62 'b' + {2935, 14, 16, 16, 1, -15}, // 0x63 'c' + {2963, 16, 25, 17, 1, -24}, // 0x64 'd' + {3013, 13, 16, 16, 1, -15}, // 0x65 'e' + {3039, 13, 25, 13, 0, -24}, // 0x66 'f' + {3080, 16, 24, 16, 1, -15}, // 0x67 'g' + {3128, 16, 25, 17, 1, -24}, // 0x68 'h' + {3178, 8, 24, 10, 0, -23}, // 0x69 'i' + {3202, 9, 32, 12, 0, -23}, // 0x6A 'j' + {3238, 17, 25, 18, 1, -24}, // 0x6B 'k' + {3292, 8, 25, 9, 0, -24}, // 0x6C 'l' + {3317, 26, 16, 27, 1, -15}, // 0x6D 'm' + {3369, 16, 16, 17, 1, -15}, // 0x6E 'n' + {3401, 16, 16, 17, 1, -15}, // 0x6F 'o' + {3433, 16, 24, 17, 1, -15}, // 0x70 'p' + {3481, 16, 24, 17, 1, -15}, // 0x71 'q' + {3529, 11, 16, 12, 1, -15}, // 0x72 'r' + {3551, 10, 16, 13, 1, -15}, // 0x73 's' + {3571, 8, 19, 10, 2, -18}, // 0x74 't' + {3590, 16, 16, 17, 1, -15}, // 0x75 'u' + {3622, 16, 16, 16, 0, -15}, // 0x76 'v' + {3654, 24, 16, 24, 0, -15}, // 0x77 'w' + {3702, 17, 16, 17, 0, -15}, // 0x78 'x' + {3736, 16, 24, 16, 0, -15}, // 0x79 'y' + {3784, 14, 16, 15, 0, -15}, // 0x7A 'z' + {3812, 8, 30, 17, 3, -23}, // 0x7B '{' + {3842, 2, 24, 7, 2, -23}, // 0x7C '|' + {3848, 8, 30, 17, 6, -22}, // 0x7D '}' + {3878, 16, 4, 17, 1, -10}}; // 0x7E '~' + +const GFXfont FreeSerif18pt7b PROGMEM = {(uint8_t *)FreeSerif18pt7bBitmaps, + (GFXglyph *)FreeSerif18pt7bGlyphs, + 0x20, 0x7E, 42}; + +// Approx. 4558 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerif24pt7b.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerif24pt7b.h new file mode 100644 index 0000000..cac1999 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerif24pt7b.h @@ -0,0 +1,692 @@ +#pragma once +#include + +const uint8_t FreeSerif24pt7bBitmaps[] PROGMEM = { + 0x77, 0xBF, 0xFF, 0xFF, 0xFF, 0xFB, 0x9C, 0xE7, 0x39, 0xCE, 0x61, 0x08, + 0x42, 0x10, 0x84, 0x00, 0x00, 0xEF, 0xFF, 0xEE, 0x60, 0x6F, 0x0F, 0xF0, + 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0x60, 0x66, 0x06, 0x60, 0x66, 0x06, 0x60, + 0x66, 0x06, 0x00, 0xE0, 0x70, 0x01, 0xC0, 0xE0, 0x03, 0x81, 0xC0, 0x07, + 0x03, 0x80, 0x0E, 0x06, 0x00, 0x18, 0x0C, 0x00, 0x30, 0x38, 0x00, 0xE0, + 0x70, 0x01, 0xC0, 0xE0, 0x03, 0x81, 0xC1, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, + 0xF0, 0x18, 0x0C, 0x00, 0x70, 0x38, 0x00, 0xE0, 0x70, 0x01, 0xC0, 0xE0, + 0x03, 0x81, 0xC0, 0x07, 0x03, 0x80, 0x0C, 0x06, 0x07, 0xFF, 0xFF, 0xEF, + 0xFF, 0xFF, 0xC0, 0xE0, 0x70, 0x01, 0xC0, 0xE0, 0x03, 0x81, 0xC0, 0x06, + 0x03, 0x80, 0x0C, 0x06, 0x00, 0x38, 0x1C, 0x00, 0x70, 0x38, 0x00, 0xE0, + 0x70, 0x01, 0xC0, 0xE0, 0x03, 0x81, 0xC0, 0x00, 0x00, 0x40, 0x00, 0x08, + 0x00, 0x01, 0x00, 0x01, 0xFC, 0x01, 0xE4, 0xF8, 0x70, 0x87, 0x9C, 0x10, + 0x77, 0x02, 0x06, 0xE0, 0x40, 0xDC, 0x08, 0x0B, 0x81, 0x00, 0x78, 0x20, + 0x07, 0x84, 0x00, 0xFC, 0x80, 0x0F, 0xF0, 0x00, 0xFE, 0x00, 0x07, 0xF0, + 0x00, 0x7F, 0x80, 0x03, 0xFC, 0x00, 0x3F, 0xC0, 0x05, 0xFC, 0x00, 0x8F, + 0x80, 0x10, 0xF8, 0x02, 0x0F, 0x00, 0x40, 0xF0, 0x08, 0x1E, 0x01, 0x03, + 0xE0, 0x20, 0x7C, 0x04, 0x0F, 0xC0, 0x83, 0xBC, 0x10, 0xE3, 0xE2, 0x78, + 0x3F, 0xFE, 0x00, 0xFE, 0x00, 0x01, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x01, 0xF0, 0x00, 0xC0, 0x03, 0xFC, 0x01, 0xE0, 0x03, 0xC7, 0x81, 0xE0, + 0x03, 0xC0, 0x7F, 0x60, 0x03, 0xC0, 0x20, 0x70, 0x01, 0xE0, 0x10, 0x30, + 0x01, 0xE0, 0x08, 0x38, 0x00, 0xE0, 0x04, 0x18, 0x00, 0xF0, 0x02, 0x1C, + 0x00, 0x78, 0x02, 0x0C, 0x00, 0x38, 0x01, 0x0E, 0x00, 0x1C, 0x01, 0x86, + 0x00, 0x0E, 0x00, 0x86, 0x00, 0x07, 0x00, 0x87, 0x03, 0xE1, 0x80, 0xC3, + 0x07, 0xFC, 0xE1, 0xC3, 0x87, 0xC6, 0x3F, 0xC1, 0x87, 0x81, 0x8F, 0x81, + 0xC7, 0x80, 0x40, 0x00, 0xC3, 0xC0, 0x20, 0x00, 0xE3, 0xC0, 0x10, 0x00, + 0x61, 0xC0, 0x08, 0x00, 0x61, 0xE0, 0x04, 0x00, 0x70, 0xF0, 0x06, 0x00, + 0x30, 0x70, 0x02, 0x00, 0x38, 0x38, 0x03, 0x00, 0x18, 0x1C, 0x01, 0x00, + 0x1C, 0x0E, 0x01, 0x80, 0x0C, 0x07, 0x01, 0x80, 0x0E, 0x01, 0xC3, 0x80, + 0x06, 0x00, 0x7F, 0x80, 0x06, 0x00, 0x1F, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x00, 0x1F, 0x00, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0x70, 0xE0, 0x00, + 0x00, 0xE0, 0x60, 0x00, 0x00, 0xC0, 0x30, 0x00, 0x01, 0xC0, 0x30, 0x00, + 0x01, 0xC0, 0x30, 0x00, 0x01, 0xC0, 0x30, 0x00, 0x01, 0xC0, 0x70, 0x00, + 0x01, 0xE0, 0xE0, 0x00, 0x01, 0xE1, 0xC0, 0x00, 0x00, 0xF3, 0x80, 0x00, + 0x00, 0xFF, 0x0F, 0xFC, 0x00, 0xFC, 0x03, 0xF0, 0x00, 0xF8, 0x01, 0xE0, + 0x01, 0xFC, 0x01, 0xC0, 0x07, 0x7C, 0x01, 0xC0, 0x0F, 0x3E, 0x01, 0x80, + 0x1E, 0x3E, 0x03, 0x00, 0x3C, 0x1F, 0x03, 0x00, 0x7C, 0x1F, 0x06, 0x00, + 0x78, 0x0F, 0x86, 0x00, 0x78, 0x07, 0xCC, 0x00, 0xF8, 0x07, 0xE8, 0x00, + 0xF8, 0x03, 0xF8, 0x00, 0xF8, 0x01, 0xF0, 0x00, 0xF8, 0x01, 0xF8, 0x00, + 0xFC, 0x00, 0xFC, 0x01, 0xFC, 0x01, 0xFE, 0x01, 0x7E, 0x03, 0xBF, 0x86, + 0x7F, 0x0F, 0x1F, 0xFE, 0x3F, 0xFC, 0x0F, 0xF8, 0x0F, 0xE0, 0x03, 0xF0, + 0x6F, 0xFF, 0xFF, 0x66, 0x66, 0x66, 0x00, 0x10, 0x02, 0x00, 0xC0, 0x18, + 0x03, 0x00, 0x60, 0x0E, 0x00, 0xC0, 0x1C, 0x03, 0x80, 0x38, 0x03, 0x80, + 0x78, 0x07, 0x00, 0x70, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, + 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x07, 0x00, 0x70, 0x07, 0x80, + 0x38, 0x03, 0x80, 0x38, 0x01, 0xC0, 0x0C, 0x00, 0xC0, 0x06, 0x00, 0x30, + 0x01, 0x80, 0x0C, 0x00, 0x60, 0x03, 0xC0, 0x06, 0x00, 0x30, 0x01, 0x80, + 0x0C, 0x00, 0x60, 0x07, 0x00, 0x30, 0x03, 0x80, 0x1C, 0x01, 0xC0, 0x1C, + 0x01, 0xE0, 0x0E, 0x00, 0xE0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, + 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0E, 0x00, 0xE0, 0x1E, + 0x01, 0xC0, 0x1C, 0x01, 0xC0, 0x38, 0x03, 0x00, 0x70, 0x0E, 0x00, 0xC0, + 0x18, 0x03, 0x00, 0x40, 0x08, 0x00, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, + 0x43, 0x86, 0xE1, 0x0F, 0xF1, 0x1F, 0xF9, 0x3E, 0x3D, 0x78, 0x07, 0xC0, + 0x01, 0x00, 0x07, 0xC0, 0x19, 0x30, 0xF9, 0x1E, 0xF1, 0x0F, 0xE1, 0x07, + 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x00, 0x38, 0x00, 0x00, + 0x70, 0x00, 0x00, 0xE0, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, 0x00, 0x07, + 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x38, 0x00, 0x00, 0x70, + 0x00, 0x00, 0xE0, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x07, 0x00, + 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x38, 0x00, 0x00, 0x70, 0x00, + 0x00, 0xE0, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, 0x00, 0x07, 0x00, 0x00, + 0x0E, 0x00, 0x00, 0x73, 0xEF, 0xFF, 0x7C, 0x10, 0x42, 0x08, 0xC6, 0x00, + 0xFF, 0xFF, 0xFC, 0x77, 0xFF, 0xF7, 0x00, 0x00, 0x1C, 0x00, 0xE0, 0x03, + 0x80, 0x0E, 0x00, 0x70, 0x01, 0xC0, 0x07, 0x00, 0x38, 0x00, 0xE0, 0x03, + 0x80, 0x1C, 0x00, 0x70, 0x01, 0xC0, 0x0E, 0x00, 0x38, 0x01, 0xE0, 0x07, + 0x00, 0x1C, 0x00, 0xF0, 0x03, 0x80, 0x0E, 0x00, 0x78, 0x01, 0xC0, 0x07, + 0x00, 0x3C, 0x00, 0xE0, 0x03, 0x80, 0x1E, 0x00, 0x70, 0x01, 0xC0, 0x0F, + 0x00, 0x38, 0x00, 0x00, 0xFC, 0x00, 0x0E, 0x1C, 0x00, 0x70, 0x38, 0x03, + 0x80, 0x70, 0x1E, 0x01, 0xE0, 0xF0, 0x03, 0x83, 0xC0, 0x0F, 0x0F, 0x00, + 0x3C, 0x7C, 0x00, 0xF9, 0xE0, 0x01, 0xE7, 0x80, 0x07, 0xBE, 0x00, 0x1F, + 0xF8, 0x00, 0x7F, 0xE0, 0x01, 0xFF, 0x80, 0x07, 0xFE, 0x00, 0x1F, 0xF8, + 0x00, 0x7F, 0xE0, 0x01, 0xFF, 0x80, 0x07, 0xFE, 0x00, 0x1F, 0xF8, 0x00, + 0x7F, 0xE0, 0x01, 0xF7, 0x80, 0x07, 0x9E, 0x00, 0x1E, 0x7C, 0x00, 0xF8, + 0xF0, 0x03, 0xC3, 0xC0, 0x0F, 0x07, 0x00, 0x38, 0x1E, 0x01, 0xE0, 0x38, + 0x07, 0x00, 0x70, 0x38, 0x00, 0xE1, 0xC0, 0x00, 0xFC, 0x00, 0x00, 0x80, + 0x1C, 0x03, 0xE0, 0x7F, 0x0C, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x07, + 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, + 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, + 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x3F, + 0x0F, 0xFF, 0x01, 0xF8, 0x00, 0x3F, 0xF0, 0x07, 0xFF, 0xE0, 0x70, 0x3F, + 0x83, 0x00, 0x7C, 0x30, 0x01, 0xF1, 0x00, 0x0F, 0x98, 0x00, 0x3C, 0x80, + 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0x80, 0x00, 0x1C, + 0x00, 0x01, 0xC0, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x07, 0x00, 0x00, + 0x70, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, + 0x03, 0x00, 0x00, 0x30, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, 0x43, 0x00, + 0x02, 0x30, 0x00, 0x23, 0xFF, 0xFF, 0x3F, 0xFF, 0xF3, 0xFF, 0xFF, 0x80, + 0x03, 0xF8, 0x03, 0xFF, 0x01, 0x83, 0xE0, 0x80, 0x3C, 0x40, 0x0F, 0x10, + 0x01, 0xC8, 0x00, 0x70, 0x00, 0x1C, 0x00, 0x06, 0x00, 0x03, 0x00, 0x00, + 0x80, 0x00, 0xC0, 0x00, 0x78, 0x00, 0x7F, 0x80, 0x7F, 0xF0, 0x01, 0xFE, + 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x01, 0xC0, + 0x00, 0x70, 0x00, 0x1C, 0x00, 0x07, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, + 0x30, 0x00, 0x0C, 0x70, 0x06, 0x3F, 0x07, 0x0F, 0xFF, 0x00, 0xFF, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x38, 0x00, 0x01, 0xC0, 0x00, 0x1E, 0x00, 0x01, + 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xDC, 0x00, 0x0C, 0xE0, 0x00, 0x47, 0x00, + 0x06, 0x38, 0x00, 0x61, 0xC0, 0x06, 0x0E, 0x00, 0x30, 0x70, 0x03, 0x03, + 0x80, 0x30, 0x1C, 0x01, 0x80, 0xE0, 0x18, 0x07, 0x01, 0x80, 0x38, 0x08, + 0x01, 0xC0, 0xC0, 0x0E, 0x0C, 0x00, 0x70, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, + 0xE0, 0x00, 0xE0, 0x00, 0x07, 0x00, 0x00, 0x38, 0x00, 0x01, 0xC0, 0x00, + 0x0E, 0x00, 0x00, 0x70, 0x00, 0x03, 0x80, 0x00, 0x1C, 0x00, 0x00, 0x00, + 0x40, 0x7F, 0xF8, 0x1F, 0xFE, 0x03, 0xFF, 0xC0, 0xC0, 0x00, 0x18, 0x00, + 0x06, 0x00, 0x00, 0xC0, 0x00, 0x1C, 0x00, 0x07, 0xF8, 0x00, 0xFF, 0xC0, + 0x3F, 0xFE, 0x00, 0xFF, 0xE0, 0x01, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0x7C, + 0x00, 0x07, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x1C, + 0x00, 0x03, 0x80, 0x00, 0x70, 0x00, 0x0E, 0x00, 0x01, 0xC0, 0x00, 0x30, + 0x00, 0x0E, 0x00, 0x01, 0x80, 0x00, 0x71, 0xE0, 0x1C, 0x3F, 0x07, 0x07, + 0xFF, 0x80, 0x3F, 0x80, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x3E, 0x00, 0x0F, + 0x80, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x01, + 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xFC, 0x00, + 0x07, 0xC7, 0xE0, 0x3E, 0xFF, 0xC3, 0xF8, 0x3F, 0x1F, 0x80, 0x7C, 0xF8, + 0x03, 0xF7, 0xC0, 0x0F, 0xBE, 0x00, 0x7F, 0xF0, 0x01, 0xFF, 0x80, 0x0F, + 0xFC, 0x00, 0x7F, 0xE0, 0x03, 0xFF, 0x00, 0x1F, 0x78, 0x00, 0xFB, 0xE0, + 0x07, 0x9F, 0x00, 0x3C, 0x78, 0x03, 0xE3, 0xE0, 0x1E, 0x0F, 0x81, 0xE0, + 0x3E, 0x1E, 0x00, 0xFF, 0xE0, 0x00, 0xFC, 0x00, 0x3F, 0xFF, 0xF3, 0xFF, + 0xFF, 0x3F, 0xFF, 0xE7, 0x00, 0x0E, 0x40, 0x00, 0xEC, 0x00, 0x1C, 0x80, + 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x03, 0x80, + 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0x70, 0x00, 0x0E, 0x00, 0x00, 0xE0, + 0x00, 0x0E, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x38, + 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x07, 0x00, 0x00, 0x70, 0x00, 0x07, + 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x1E, 0x00, 0x01, + 0xC0, 0x00, 0x03, 0xF0, 0x03, 0xFF, 0x03, 0xC1, 0xE0, 0xC0, 0x1C, 0x70, + 0x07, 0x18, 0x00, 0xEE, 0x00, 0x3B, 0x80, 0x0E, 0xF0, 0x03, 0xBC, 0x00, + 0xE7, 0x80, 0x71, 0xF0, 0x38, 0x3E, 0x1C, 0x07, 0xEE, 0x00, 0xFE, 0x00, + 0x1F, 0xC0, 0x03, 0xF8, 0x03, 0xFF, 0x01, 0xC7, 0xE0, 0xE0, 0xFC, 0x70, + 0x0F, 0x98, 0x01, 0xEE, 0x00, 0x3F, 0x80, 0x0F, 0xE0, 0x01, 0xF8, 0x00, + 0x7E, 0x00, 0x1F, 0xC0, 0x07, 0x70, 0x03, 0x9E, 0x00, 0xE3, 0xE0, 0xF0, + 0x7F, 0xF0, 0x07, 0xF0, 0x00, 0x01, 0xF8, 0x00, 0x3F, 0xF0, 0x03, 0xC3, + 0xE0, 0x3C, 0x0F, 0x83, 0xC0, 0x3C, 0x3E, 0x00, 0xF1, 0xE0, 0x07, 0xCF, + 0x00, 0x3E, 0xF8, 0x00, 0xF7, 0xC0, 0x07, 0xFE, 0x00, 0x3F, 0xF0, 0x01, + 0xFF, 0x80, 0x0F, 0xFC, 0x00, 0x7F, 0xF0, 0x03, 0xEF, 0x80, 0x1F, 0x7C, + 0x00, 0xF9, 0xF0, 0x0F, 0xC7, 0xE1, 0xFC, 0x1F, 0xF9, 0xE0, 0x3F, 0x1F, + 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x78, 0x00, 0x07, 0xC0, 0x00, + 0x7C, 0x00, 0x03, 0xC0, 0x00, 0x3C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, + 0x0F, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x00, 0x77, 0xFF, 0xF7, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xBF, 0xFF, 0xB8, 0x39, 0xF7, + 0xDF, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0xEF, + 0xFF, 0x7C, 0x10, 0x42, 0x08, 0xC6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x7F, 0x00, 0x01, 0xFC, 0x00, 0x07, + 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xE0, + 0x00, 0x3F, 0x80, 0x00, 0xFE, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xFC, 0x00, + 0x00, 0x7F, 0x80, 0x00, 0x1F, 0xE0, 0x00, 0x07, 0xF8, 0x00, 0x00, 0xFE, + 0x00, 0x00, 0x3F, 0x80, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, + 0xFF, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0x00, 0x00, 0x01, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0xE0, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, + 0x00, 0x01, 0xFC, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x07, + 0xF8, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x1F, 0x00, 0x00, + 0x7F, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, + 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xE0, 0x00, 0x3F, 0x80, 0x00, 0xFE, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xE0, + 0x0F, 0xFE, 0x0C, 0x1F, 0x88, 0x03, 0xEC, 0x01, 0xF7, 0x00, 0x7F, 0xC0, + 0x3F, 0xE0, 0x1F, 0x70, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xC0, 0x01, 0xE0, + 0x01, 0xE0, 0x00, 0xF0, 0x00, 0x70, 0x00, 0x70, 0x00, 0x30, 0x00, 0x10, + 0x00, 0x18, 0x00, 0x08, 0x00, 0x04, 0x00, 0x06, 0x00, 0x02, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x3E, 0x00, + 0x1F, 0x00, 0x0F, 0x80, 0x03, 0x80, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x3F, + 0xFF, 0x00, 0x00, 0xFC, 0x07, 0xC0, 0x01, 0xE0, 0x00, 0xE0, 0x07, 0xC0, + 0x00, 0x30, 0x0F, 0x00, 0x00, 0x18, 0x1E, 0x00, 0x00, 0x0C, 0x1E, 0x00, + 0x00, 0x04, 0x3C, 0x00, 0xF8, 0x06, 0x3C, 0x01, 0xFD, 0xC2, 0x78, 0x03, + 0xC7, 0xC3, 0x78, 0x07, 0x07, 0x81, 0xF0, 0x0E, 0x03, 0x81, 0xF0, 0x0E, + 0x03, 0x81, 0xF0, 0x1C, 0x07, 0x81, 0xF0, 0x1C, 0x07, 0x01, 0xF0, 0x38, + 0x07, 0x01, 0xF0, 0x38, 0x07, 0x03, 0xF0, 0x38, 0x0F, 0x02, 0xF0, 0x38, + 0x0E, 0x02, 0xF0, 0x38, 0x1E, 0x04, 0x78, 0x38, 0x1E, 0x0C, 0x78, 0x1C, + 0x6E, 0x18, 0x38, 0x1F, 0xC7, 0xF0, 0x3C, 0x0F, 0x03, 0xE0, 0x1E, 0x00, + 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x07, 0xC0, + 0x00, 0x00, 0x03, 0xE0, 0x00, 0x60, 0x00, 0xFC, 0x03, 0xE0, 0x00, 0x3F, + 0xFF, 0x80, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, + 0x80, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x07, + 0xC0, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x0D, + 0xF0, 0x00, 0x00, 0x0D, 0xF0, 0x00, 0x00, 0x18, 0xF0, 0x00, 0x00, 0x18, + 0xF8, 0x00, 0x00, 0x38, 0x78, 0x00, 0x00, 0x30, 0x7C, 0x00, 0x00, 0x30, + 0x7C, 0x00, 0x00, 0x60, 0x3E, 0x00, 0x00, 0x60, 0x3E, 0x00, 0x00, 0xE0, + 0x1E, 0x00, 0x00, 0xC0, 0x1F, 0x00, 0x00, 0xC0, 0x1F, 0x00, 0x01, 0x80, + 0x0F, 0x80, 0x01, 0xFF, 0xFF, 0x80, 0x03, 0xFF, 0xFF, 0xC0, 0x03, 0x00, + 0x07, 0xC0, 0x07, 0x00, 0x07, 0xC0, 0x06, 0x00, 0x03, 0xE0, 0x06, 0x00, + 0x03, 0xE0, 0x0E, 0x00, 0x01, 0xF0, 0x0C, 0x00, 0x01, 0xF0, 0x1C, 0x00, + 0x01, 0xF8, 0x3C, 0x00, 0x01, 0xF8, 0x7E, 0x00, 0x01, 0xFC, 0xFF, 0x80, + 0x0F, 0xFF, 0xFF, 0xFF, 0xE0, 0x03, 0xFF, 0xFF, 0x80, 0x1F, 0x01, 0xF8, + 0x03, 0xE0, 0x0F, 0x80, 0x7C, 0x00, 0xF8, 0x0F, 0x80, 0x1F, 0x81, 0xF0, + 0x01, 0xF0, 0x3E, 0x00, 0x3E, 0x07, 0xC0, 0x07, 0xC0, 0xF8, 0x00, 0xF8, + 0x1F, 0x00, 0x1F, 0x03, 0xE0, 0x07, 0xC0, 0x7C, 0x01, 0xF0, 0x0F, 0x80, + 0xFC, 0x01, 0xFF, 0xFE, 0x00, 0x3F, 0xFF, 0xC0, 0x07, 0xC0, 0x7F, 0x00, + 0xF8, 0x01, 0xF0, 0x1F, 0x00, 0x1F, 0x03, 0xE0, 0x03, 0xE0, 0x7C, 0x00, + 0x3E, 0x0F, 0x80, 0x07, 0xC1, 0xF0, 0x00, 0xF8, 0x3E, 0x00, 0x1F, 0x07, + 0xC0, 0x03, 0xE0, 0xF8, 0x00, 0xF8, 0x1F, 0x00, 0x1F, 0x03, 0xE0, 0x07, + 0xC0, 0x7C, 0x07, 0xF0, 0x1F, 0xFF, 0xFC, 0x3F, 0xFF, 0xFC, 0x00, 0x00, + 0x1F, 0xF0, 0x20, 0x07, 0xFF, 0xEE, 0x01, 0xF8, 0x1F, 0xE0, 0x3E, 0x00, + 0x7E, 0x07, 0x80, 0x01, 0xE0, 0xF0, 0x00, 0x1E, 0x1F, 0x00, 0x00, 0xE3, + 0xE0, 0x00, 0x06, 0x3C, 0x00, 0x00, 0x67, 0xC0, 0x00, 0x02, 0x7C, 0x00, + 0x00, 0x27, 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, + 0xF8, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x0F, 0x80, + 0x00, 0x00, 0xF8, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, + 0x0F, 0x80, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x7C, + 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x01, 0xF0, 0x00, + 0x02, 0x0F, 0x80, 0x00, 0xE0, 0x7E, 0x00, 0x1C, 0x03, 0xF8, 0x0F, 0x00, + 0x0F, 0xFF, 0xC0, 0x00, 0x1F, 0xE0, 0x00, 0xFF, 0xFF, 0xC0, 0x00, 0x7F, + 0xFF, 0xF8, 0x00, 0x3E, 0x03, 0xFC, 0x00, 0x7C, 0x00, 0xFC, 0x00, 0xF8, + 0x00, 0x7E, 0x01, 0xF0, 0x00, 0x7E, 0x03, 0xE0, 0x00, 0x7C, 0x07, 0xC0, + 0x00, 0x7C, 0x0F, 0x80, 0x00, 0xF8, 0x1F, 0x00, 0x00, 0xF8, 0x3E, 0x00, + 0x01, 0xF0, 0x7C, 0x00, 0x03, 0xF0, 0xF8, 0x00, 0x03, 0xE1, 0xF0, 0x00, + 0x07, 0xC3, 0xE0, 0x00, 0x0F, 0x87, 0xC0, 0x00, 0x1F, 0x0F, 0x80, 0x00, + 0x3E, 0x1F, 0x00, 0x00, 0x7C, 0x3E, 0x00, 0x00, 0xF8, 0x7C, 0x00, 0x01, + 0xF0, 0xF8, 0x00, 0x07, 0xC1, 0xF0, 0x00, 0x0F, 0x83, 0xE0, 0x00, 0x1E, + 0x07, 0xC0, 0x00, 0x7C, 0x0F, 0x80, 0x01, 0xF0, 0x1F, 0x00, 0x03, 0xE0, + 0x3E, 0x00, 0x1F, 0x80, 0x7C, 0x00, 0x7C, 0x00, 0xF8, 0x0F, 0xF0, 0x07, + 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xF0, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x07, + 0xFF, 0xFF, 0xE0, 0x7C, 0x00, 0x1C, 0x0F, 0x80, 0x01, 0x81, 0xF0, 0x00, + 0x30, 0x3E, 0x00, 0x02, 0x07, 0xC0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x20, 0x0F, 0x80, 0x04, + 0x01, 0xF0, 0x01, 0x80, 0x3E, 0x00, 0x70, 0x07, 0xFF, 0xFE, 0x00, 0xFF, + 0xFF, 0xC0, 0x1F, 0x00, 0x38, 0x03, 0xE0, 0x03, 0x00, 0x7C, 0x00, 0x20, + 0x0F, 0x80, 0x04, 0x01, 0xF0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x07, 0xC0, + 0x00, 0x00, 0xF8, 0x00, 0x03, 0x1F, 0x00, 0x00, 0x43, 0xE0, 0x00, 0x18, + 0x7C, 0x00, 0x07, 0x0F, 0x80, 0x01, 0xC1, 0xF0, 0x00, 0xF8, 0x7F, 0xFF, + 0xFF, 0x3F, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0x1F, + 0x00, 0x07, 0x1F, 0x00, 0x03, 0x1F, 0x00, 0x03, 0x1F, 0x00, 0x01, 0x1F, + 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, + 0x00, 0x08, 0x1F, 0x00, 0x08, 0x1F, 0x00, 0x18, 0x1F, 0x00, 0x38, 0x1F, + 0xFF, 0xF8, 0x1F, 0xFF, 0xF8, 0x1F, 0x00, 0x38, 0x1F, 0x00, 0x18, 0x1F, + 0x00, 0x08, 0x1F, 0x00, 0x08, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x3F, 0x80, 0x00, 0xFF, + 0xF0, 0x00, 0x00, 0x0F, 0xF0, 0x08, 0x00, 0xFF, 0xFE, 0x70, 0x07, 0xE0, + 0x1F, 0xE0, 0x1F, 0x00, 0x0F, 0xC0, 0x78, 0x00, 0x07, 0x81, 0xE0, 0x00, + 0x07, 0x07, 0xC0, 0x00, 0x0E, 0x1F, 0x00, 0x00, 0x0C, 0x3E, 0x00, 0x00, + 0x08, 0xF8, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, + 0x0F, 0x80, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, + 0x7C, 0x00, 0x03, 0xFF, 0xF8, 0x00, 0x01, 0xFD, 0xF0, 0x00, 0x01, 0xF3, + 0xE0, 0x00, 0x03, 0xE7, 0xC0, 0x00, 0x07, 0xCF, 0x80, 0x00, 0x0F, 0x8F, + 0x80, 0x00, 0x1F, 0x1F, 0x00, 0x00, 0x3E, 0x3E, 0x00, 0x00, 0x7C, 0x3E, + 0x00, 0x00, 0xF8, 0x7C, 0x00, 0x01, 0xF0, 0x7C, 0x00, 0x03, 0xE0, 0xFC, + 0x00, 0x07, 0xC0, 0xFC, 0x00, 0x0F, 0x80, 0x7C, 0x00, 0x3F, 0x00, 0x7F, + 0x01, 0xFC, 0x00, 0x3F, 0xFF, 0xC0, 0x00, 0x0F, 0xF8, 0x00, 0xFF, 0xE0, + 0x1F, 0xFC, 0xFE, 0x00, 0x1F, 0xC1, 0xF0, 0x00, 0x3E, 0x07, 0xC0, 0x00, + 0xF8, 0x1F, 0x00, 0x03, 0xE0, 0x7C, 0x00, 0x0F, 0x81, 0xF0, 0x00, 0x3E, + 0x07, 0xC0, 0x00, 0xF8, 0x1F, 0x00, 0x03, 0xE0, 0x7C, 0x00, 0x0F, 0x81, + 0xF0, 0x00, 0x3E, 0x07, 0xC0, 0x00, 0xF8, 0x1F, 0x00, 0x03, 0xE0, 0x7C, + 0x00, 0x0F, 0x81, 0xFF, 0xFF, 0xFE, 0x07, 0xFF, 0xFF, 0xF8, 0x1F, 0x00, + 0x03, 0xE0, 0x7C, 0x00, 0x0F, 0x81, 0xF0, 0x00, 0x3E, 0x07, 0xC0, 0x00, + 0xF8, 0x1F, 0x00, 0x03, 0xE0, 0x7C, 0x00, 0x0F, 0x81, 0xF0, 0x00, 0x3E, + 0x07, 0xC0, 0x00, 0xF8, 0x1F, 0x00, 0x03, 0xE0, 0x7C, 0x00, 0x0F, 0x81, + 0xF0, 0x00, 0x3E, 0x07, 0xC0, 0x00, 0xF8, 0x1F, 0x00, 0x03, 0xE0, 0xFE, + 0x00, 0x1F, 0xCF, 0xFE, 0x01, 0xFF, 0xC0, 0xFF, 0xF8, 0xFE, 0x03, 0xE0, + 0x1F, 0x00, 0xF8, 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, + 0xE0, 0x1F, 0x00, 0xF8, 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, + 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, + 0x7C, 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x0F, 0xE3, 0xFF, 0xE0, 0x0F, 0xFF, + 0x80, 0xFE, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, + 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0x00, + 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x7C, + 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, + 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3C, 0x0E, 0x1E, 0x0F, 0x8F, 0x07, + 0xCF, 0x01, 0xFF, 0x00, 0x7E, 0x00, 0xFF, 0xF8, 0x3F, 0xFC, 0x3F, 0xC0, + 0x07, 0xE0, 0x0F, 0x80, 0x07, 0x80, 0x0F, 0x80, 0x07, 0x00, 0x0F, 0x80, + 0x0E, 0x00, 0x0F, 0x80, 0x1C, 0x00, 0x0F, 0x80, 0x38, 0x00, 0x0F, 0x80, + 0x70, 0x00, 0x0F, 0x80, 0xE0, 0x00, 0x0F, 0x81, 0xC0, 0x00, 0x0F, 0x83, + 0x80, 0x00, 0x0F, 0x87, 0x00, 0x00, 0x0F, 0x9E, 0x00, 0x00, 0x0F, 0xBC, + 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x0F, 0xDF, + 0x80, 0x00, 0x0F, 0x8F, 0xC0, 0x00, 0x0F, 0x87, 0xE0, 0x00, 0x0F, 0x83, + 0xF0, 0x00, 0x0F, 0x81, 0xF8, 0x00, 0x0F, 0x80, 0xFC, 0x00, 0x0F, 0x80, + 0x7E, 0x00, 0x0F, 0x80, 0x3F, 0x00, 0x0F, 0x80, 0x3F, 0x80, 0x0F, 0x80, + 0x1F, 0x80, 0x0F, 0x80, 0x0F, 0xC0, 0x0F, 0x80, 0x07, 0xE0, 0x0F, 0x80, + 0x07, 0xF0, 0x1F, 0xC0, 0x07, 0xFC, 0xFF, 0xF8, 0x3F, 0xFF, 0xFF, 0xF0, + 0x00, 0x0F, 0xF0, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x7C, 0x00, 0x00, + 0x1F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x7C, 0x00, + 0x00, 0x1F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x7C, + 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, 0x00, 0x00, + 0x7C, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, 0x00, + 0x00, 0x7C, 0x00, 0x01, 0x1F, 0x00, 0x00, 0xC7, 0xC0, 0x00, 0x21, 0xF0, + 0x00, 0x18, 0x7C, 0x00, 0x0E, 0x1F, 0x00, 0x1F, 0x8F, 0xFF, 0xFF, 0xCF, + 0xFF, 0xFF, 0xF0, 0xFF, 0x80, 0x00, 0x03, 0xFE, 0x7F, 0x80, 0x00, 0x07, + 0xF0, 0x3F, 0x00, 0x00, 0x1F, 0xC0, 0x7E, 0x00, 0x00, 0x3F, 0x80, 0xFE, + 0x00, 0x00, 0xFF, 0x01, 0xFC, 0x00, 0x01, 0xBE, 0x03, 0x7C, 0x00, 0x03, + 0x7C, 0x06, 0xF8, 0x00, 0x0E, 0xF8, 0x0D, 0xF8, 0x00, 0x19, 0xF0, 0x19, + 0xF0, 0x00, 0x73, 0xE0, 0x33, 0xF0, 0x00, 0xC7, 0xC0, 0x63, 0xE0, 0x03, + 0x8F, 0x80, 0xC7, 0xE0, 0x06, 0x1F, 0x01, 0x87, 0xC0, 0x1C, 0x3E, 0x03, + 0x0F, 0xC0, 0x30, 0x7C, 0x06, 0x0F, 0x80, 0x60, 0xF8, 0x0C, 0x1F, 0x81, + 0x81, 0xF0, 0x18, 0x1F, 0x03, 0x03, 0xE0, 0x30, 0x3F, 0x0C, 0x07, 0xC0, + 0x60, 0x3E, 0x18, 0x0F, 0x80, 0xC0, 0x7C, 0x70, 0x1F, 0x01, 0x80, 0x7C, + 0xC0, 0x3E, 0x03, 0x00, 0xFB, 0x80, 0x7C, 0x06, 0x00, 0xFE, 0x00, 0xF8, + 0x0C, 0x01, 0xFC, 0x01, 0xF0, 0x18, 0x03, 0xF0, 0x03, 0xE0, 0x30, 0x03, + 0xE0, 0x07, 0xC0, 0x60, 0x07, 0x80, 0x0F, 0x81, 0xE0, 0x07, 0x00, 0x1F, + 0x07, 0xE0, 0x0C, 0x00, 0xFF, 0x3F, 0xF0, 0x08, 0x07, 0xFF, 0x80, 0xFF, + 0x00, 0x03, 0xFF, 0x3F, 0x80, 0x00, 0xFC, 0x1F, 0xC0, 0x00, 0x78, 0x0F, + 0xC0, 0x00, 0x30, 0x0F, 0xE0, 0x00, 0x30, 0x0F, 0xF0, 0x00, 0x30, 0x0D, + 0xF8, 0x00, 0x30, 0x0D, 0xFC, 0x00, 0x30, 0x0C, 0xFC, 0x00, 0x30, 0x0C, + 0x7E, 0x00, 0x30, 0x0C, 0x3F, 0x00, 0x30, 0x0C, 0x1F, 0x80, 0x30, 0x0C, + 0x1F, 0xC0, 0x30, 0x0C, 0x0F, 0xE0, 0x30, 0x0C, 0x07, 0xE0, 0x30, 0x0C, + 0x03, 0xF0, 0x30, 0x0C, 0x01, 0xF8, 0x30, 0x0C, 0x01, 0xFC, 0x30, 0x0C, + 0x00, 0xFE, 0x30, 0x0C, 0x00, 0x7E, 0x30, 0x0C, 0x00, 0x3F, 0x30, 0x0C, + 0x00, 0x1F, 0xB0, 0x0C, 0x00, 0x0F, 0xF0, 0x0C, 0x00, 0x0F, 0xF0, 0x0C, + 0x00, 0x07, 0xF0, 0x0C, 0x00, 0x03, 0xF0, 0x0C, 0x00, 0x01, 0xF0, 0x0C, + 0x00, 0x00, 0xF0, 0x1E, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x70, 0xFF, + 0xC0, 0x00, 0x30, 0x00, 0x00, 0x00, 0x10, 0x00, 0x1F, 0xE0, 0x00, 0x03, + 0xFF, 0xF0, 0x00, 0x1F, 0x03, 0xE0, 0x01, 0xF0, 0x03, 0xE0, 0x0F, 0x80, + 0x07, 0xC0, 0x7C, 0x00, 0x0F, 0x01, 0xE0, 0x00, 0x1E, 0x0F, 0x80, 0x00, + 0x7C, 0x3C, 0x00, 0x00, 0xF1, 0xF0, 0x00, 0x03, 0xE7, 0xC0, 0x00, 0x0F, + 0x9E, 0x00, 0x00, 0x1E, 0xF8, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0x01, 0xFF, + 0x80, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x7F, 0xE0, + 0x00, 0x01, 0xFF, 0x80, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x1F, 0xF8, 0x00, + 0x00, 0x7D, 0xF0, 0x00, 0x03, 0xE7, 0xC0, 0x00, 0x0F, 0x9F, 0x00, 0x00, + 0x3E, 0x3C, 0x00, 0x00, 0xF0, 0xF8, 0x00, 0x07, 0xC1, 0xE0, 0x00, 0x1E, + 0x07, 0xC0, 0x00, 0xF8, 0x0F, 0x80, 0x07, 0xC0, 0x1F, 0x00, 0x3E, 0x00, + 0x1F, 0x03, 0xE0, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0xFF, + 0xFF, 0x00, 0x7F, 0xFF, 0x80, 0x7C, 0x1F, 0xC0, 0xF8, 0x07, 0xC1, 0xF0, + 0x07, 0xC3, 0xE0, 0x0F, 0x87, 0xC0, 0x0F, 0x8F, 0x80, 0x1F, 0x1F, 0x00, + 0x3E, 0x3E, 0x00, 0x7C, 0x7C, 0x00, 0xF8, 0xF8, 0x01, 0xF1, 0xF0, 0x07, + 0xC3, 0xE0, 0x0F, 0x87, 0xC0, 0x3E, 0x0F, 0x81, 0xF8, 0x1F, 0xFF, 0xC0, + 0x3F, 0xFE, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x03, + 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3E, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x07, 0xF0, + 0x00, 0x3F, 0xFC, 0x00, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFF, 0xF8, + 0x00, 0x07, 0xC0, 0xF8, 0x00, 0x3E, 0x00, 0x7C, 0x00, 0xF8, 0x00, 0x7C, + 0x03, 0xE0, 0x00, 0x7C, 0x07, 0x80, 0x00, 0x78, 0x1F, 0x00, 0x00, 0xF8, + 0x3C, 0x00, 0x00, 0xF0, 0xF8, 0x00, 0x01, 0xF1, 0xF0, 0x00, 0x03, 0xE3, + 0xC0, 0x00, 0x03, 0xCF, 0x80, 0x00, 0x07, 0xDF, 0x00, 0x00, 0x0F, 0xBE, + 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x3E, 0xF8, 0x00, 0x00, 0x7D, 0xF0, + 0x00, 0x00, 0xFB, 0xE0, 0x00, 0x01, 0xF7, 0xC0, 0x00, 0x03, 0xEF, 0x80, + 0x00, 0x07, 0xCF, 0x00, 0x00, 0x1F, 0x1F, 0x00, 0x00, 0x3E, 0x3E, 0x00, + 0x00, 0x7C, 0x3C, 0x00, 0x01, 0xF0, 0x7C, 0x00, 0x03, 0xE0, 0x78, 0x00, + 0x0F, 0x80, 0x78, 0x00, 0x1E, 0x00, 0x78, 0x00, 0x78, 0x00, 0x7C, 0x03, + 0xE0, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x1F, 0xC0, + 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x1F, 0xC0, + 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x03, 0xF8, + 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x1F, + 0x03, 0xF8, 0x01, 0xF0, 0x0F, 0x80, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x03, + 0xE0, 0x1F, 0x00, 0x3E, 0x01, 0xF0, 0x03, 0xE0, 0x1F, 0x00, 0x3E, 0x01, + 0xF0, 0x03, 0xE0, 0x1F, 0x00, 0x3E, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, + 0x7C, 0x01, 0xF0, 0x0F, 0x80, 0x1F, 0x07, 0xF0, 0x01, 0xFF, 0xFC, 0x00, + 0x1F, 0xFE, 0x00, 0x01, 0xF1, 0xF0, 0x00, 0x1F, 0x1F, 0x80, 0x01, 0xF0, + 0xF8, 0x00, 0x1F, 0x07, 0xC0, 0x01, 0xF0, 0x3E, 0x00, 0x1F, 0x03, 0xF0, + 0x01, 0xF0, 0x1F, 0x80, 0x1F, 0x00, 0xFC, 0x01, 0xF0, 0x07, 0xC0, 0x1F, + 0x00, 0x7E, 0x01, 0xF0, 0x03, 0xF0, 0x1F, 0x00, 0x1F, 0x83, 0xF8, 0x00, + 0xFC, 0xFF, 0xF0, 0x0F, 0xF0, 0x03, 0xF0, 0x20, 0x7F, 0xF3, 0x07, 0xC1, + 0xF8, 0x78, 0x03, 0xC3, 0x80, 0x0E, 0x3C, 0x00, 0x31, 0xE0, 0x01, 0xCF, + 0x00, 0x06, 0x7C, 0x00, 0x33, 0xE0, 0x01, 0x9F, 0x80, 0x00, 0x7E, 0x00, + 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xE0, 0x00, 0xFF, 0xC0, 0x01, + 0xFF, 0x00, 0x07, 0xFE, 0x00, 0x0F, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0x7F, + 0x00, 0x01, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xC0, 0x00, 0xFE, 0x00, + 0x07, 0xF8, 0x00, 0x3F, 0xC0, 0x01, 0xEF, 0x00, 0x1F, 0x3C, 0x01, 0xF1, + 0xF8, 0x1F, 0x0C, 0xFF, 0xF0, 0x40, 0xFE, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xC0, 0x7C, 0x07, 0xF0, 0x0F, 0x80, 0x3C, 0x01, 0xF0, + 0x07, 0x00, 0x3E, 0x00, 0x60, 0x07, 0xC0, 0x08, 0x00, 0xF8, 0x00, 0x00, + 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x0F, 0x80, + 0x00, 0x01, 0xF0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, + 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, + 0x00, 0x0F, 0x80, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x07, + 0xC0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x00, + 0x00, 0x7C, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x7F, + 0x00, 0x00, 0x7F, 0xFC, 0x00, 0xFF, 0xF8, 0x03, 0xFF, 0x3F, 0xE0, 0x00, + 0xFC, 0x0F, 0x80, 0x00, 0x78, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, + 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, + 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, + 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, + 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, + 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, + 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, + 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, 0x20, 0x07, 0xC0, 0x00, + 0x60, 0x07, 0xC0, 0x00, 0x60, 0x03, 0xE0, 0x00, 0xC0, 0x03, 0xF0, 0x01, + 0xC0, 0x01, 0xFC, 0x07, 0x80, 0x00, 0x7F, 0xFE, 0x00, 0x00, 0x0F, 0xF8, + 0x00, 0xFF, 0xF8, 0x01, 0xFF, 0x3F, 0xC0, 0x00, 0x7E, 0x0F, 0x80, 0x00, + 0x3C, 0x0F, 0xC0, 0x00, 0x38, 0x07, 0xC0, 0x00, 0x38, 0x07, 0xC0, 0x00, + 0x30, 0x03, 0xE0, 0x00, 0x70, 0x03, 0xE0, 0x00, 0x60, 0x01, 0xF0, 0x00, + 0x60, 0x01, 0xF0, 0x00, 0xE0, 0x01, 0xF8, 0x00, 0xC0, 0x00, 0xF8, 0x01, + 0xC0, 0x00, 0xF8, 0x01, 0x80, 0x00, 0x7C, 0x01, 0x80, 0x00, 0x7C, 0x03, + 0x80, 0x00, 0x3E, 0x03, 0x00, 0x00, 0x3E, 0x07, 0x00, 0x00, 0x1F, 0x06, + 0x00, 0x00, 0x1F, 0x06, 0x00, 0x00, 0x1F, 0x8E, 0x00, 0x00, 0x0F, 0x8C, + 0x00, 0x00, 0x0F, 0x9C, 0x00, 0x00, 0x07, 0xD8, 0x00, 0x00, 0x07, 0xD8, + 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x01, 0xF0, + 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0xE0, + 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x40, 0x00, 0xFF, 0xF1, 0xFF, + 0xF0, 0x1F, 0xF3, 0xF8, 0x07, 0xF8, 0x00, 0x7C, 0x1F, 0x80, 0x3F, 0x00, + 0x03, 0x80, 0xF8, 0x01, 0xF0, 0x00, 0x30, 0x0F, 0x80, 0x1F, 0x00, 0x03, + 0x00, 0x7C, 0x00, 0xF8, 0x00, 0x30, 0x07, 0xC0, 0x0F, 0x80, 0x06, 0x00, + 0x3E, 0x00, 0x7C, 0x00, 0x60, 0x03, 0xE0, 0x07, 0xC0, 0x06, 0x00, 0x3E, + 0x00, 0x7C, 0x00, 0xC0, 0x01, 0xF0, 0x07, 0xE0, 0x0C, 0x00, 0x1F, 0x00, + 0xFE, 0x01, 0xC0, 0x01, 0xF0, 0x0D, 0xE0, 0x18, 0x00, 0x0F, 0x80, 0xDF, + 0x01, 0x80, 0x00, 0xF8, 0x19, 0xF0, 0x30, 0x00, 0x07, 0xC1, 0x8F, 0x83, + 0x00, 0x00, 0x7C, 0x38, 0xF8, 0x30, 0x00, 0x07, 0xC3, 0x0F, 0x86, 0x00, + 0x00, 0x3E, 0x30, 0x7C, 0x60, 0x00, 0x03, 0xE7, 0x07, 0xCE, 0x00, 0x00, + 0x3E, 0x60, 0x3E, 0xC0, 0x00, 0x01, 0xF6, 0x03, 0xEC, 0x00, 0x00, 0x1F, + 0xE0, 0x3F, 0xC0, 0x00, 0x01, 0xFC, 0x01, 0xF8, 0x00, 0x00, 0x0F, 0xC0, + 0x1F, 0x80, 0x00, 0x00, 0xF8, 0x01, 0xF8, 0x00, 0x00, 0x0F, 0x80, 0x0F, + 0x00, 0x00, 0x00, 0x78, 0x00, 0xF0, 0x00, 0x00, 0x07, 0x00, 0x07, 0x00, + 0x00, 0x00, 0x70, 0x00, 0x60, 0x00, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x7F, 0xFE, 0x03, 0xFF, 0x8F, 0xF8, 0x00, + 0x7E, 0x01, 0xFC, 0x00, 0x1C, 0x00, 0x7E, 0x00, 0x1C, 0x00, 0x1F, 0x00, + 0x0C, 0x00, 0x07, 0xC0, 0x0E, 0x00, 0x03, 0xF0, 0x0E, 0x00, 0x00, 0xF8, + 0x0E, 0x00, 0x00, 0x3E, 0x06, 0x00, 0x00, 0x1F, 0x86, 0x00, 0x00, 0x07, + 0xC7, 0x00, 0x00, 0x01, 0xF7, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, + 0x3F, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, + 0x03, 0xF8, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x03, 0x9F, 0x00, 0x00, + 0x01, 0x8F, 0xC0, 0x00, 0x01, 0x83, 0xF0, 0x00, 0x01, 0xC0, 0xF8, 0x00, + 0x01, 0xC0, 0x7E, 0x00, 0x01, 0xC0, 0x1F, 0x80, 0x01, 0xC0, 0x07, 0xC0, + 0x00, 0xC0, 0x03, 0xF0, 0x00, 0xE0, 0x00, 0xFC, 0x00, 0xE0, 0x00, 0x7F, + 0x00, 0xF0, 0x00, 0x1F, 0x80, 0xFC, 0x00, 0x1F, 0xF3, 0xFF, 0x80, 0x7F, + 0xFE, 0xFF, 0xF8, 0x03, 0xFF, 0x3F, 0xE0, 0x00, 0x7C, 0x1F, 0xC0, 0x00, + 0x78, 0x0F, 0xC0, 0x00, 0x70, 0x07, 0xE0, 0x00, 0x60, 0x03, 0xF0, 0x00, + 0xE0, 0x01, 0xF0, 0x01, 0xC0, 0x01, 0xF8, 0x01, 0x80, 0x00, 0xFC, 0x03, + 0x80, 0x00, 0x7C, 0x07, 0x00, 0x00, 0x7E, 0x06, 0x00, 0x00, 0x3F, 0x0E, + 0x00, 0x00, 0x1F, 0x1C, 0x00, 0x00, 0x1F, 0x98, 0x00, 0x00, 0x0F, 0xF8, + 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x03, 0xE0, + 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x03, 0xE0, + 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x03, 0xE0, + 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x03, 0xE0, + 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x07, 0xF0, + 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x3F, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0xF8, + 0xF0, 0x00, 0x3E, 0x38, 0x00, 0x0F, 0x86, 0x00, 0x03, 0xF0, 0xC0, 0x00, + 0x7C, 0x10, 0x00, 0x1F, 0x02, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF8, 0x00, + 0x00, 0x3E, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xFC, + 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF8, 0x00, 0x00, + 0x7E, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xFC, 0x00, + 0x00, 0x1F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x7E, + 0x00, 0x01, 0x0F, 0x80, 0x00, 0x63, 0xF0, 0x00, 0x0C, 0xFC, 0x00, 0x03, + 0xBF, 0x00, 0x00, 0xE7, 0xC0, 0x00, 0x7D, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, + 0xFF, 0xF0, 0xFF, 0xF0, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, + 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x1C, + 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, + 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0F, 0x07, 0xFC, 0xE0, 0x01, 0xC0, + 0x07, 0x00, 0x1C, 0x00, 0x38, 0x00, 0xE0, 0x03, 0x80, 0x07, 0x00, 0x1C, + 0x00, 0x70, 0x00, 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x1C, 0x00, 0x70, 0x01, + 0xC0, 0x03, 0x80, 0x0E, 0x00, 0x38, 0x00, 0x70, 0x01, 0xC0, 0x07, 0x00, + 0x0E, 0x00, 0x38, 0x00, 0xE0, 0x01, 0xC0, 0x07, 0x00, 0x1E, 0x00, 0x38, + 0x00, 0xE0, 0x03, 0xC0, 0x07, 0xFF, 0x83, 0xC0, 0xE0, 0x70, 0x38, 0x1C, + 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, + 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, + 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x3F, 0xFC, + 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x01, 0xF8, 0x00, 0x1F, 0x80, 0x03, 0xDC, + 0x00, 0x39, 0xC0, 0x07, 0x9E, 0x00, 0x70, 0xE0, 0x0F, 0x0F, 0x00, 0xE0, + 0x70, 0x1E, 0x07, 0x81, 0xC0, 0x38, 0x3C, 0x03, 0xC3, 0x80, 0x1C, 0x78, + 0x01, 0xE7, 0x00, 0x0E, 0xF0, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xE0, 0x3C, 0x0F, 0x81, 0xF0, 0x1E, 0x03, 0xC0, 0x38, 0x07, 0x03, + 0xF0, 0x07, 0x0E, 0x03, 0x81, 0xC1, 0xE0, 0x30, 0x78, 0x0E, 0x1E, 0x03, + 0x83, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x3E, 0x00, 0x73, 0x80, 0x70, 0xE0, + 0x70, 0x38, 0x38, 0x0E, 0x1C, 0x03, 0x8F, 0x00, 0xE3, 0xC0, 0x38, 0xF0, + 0x0E, 0x3E, 0x07, 0x8F, 0xC3, 0xE1, 0xFF, 0x3F, 0x1F, 0x07, 0x80, 0x06, + 0x00, 0x01, 0xF0, 0x00, 0x3F, 0x80, 0x00, 0x3C, 0x00, 0x01, 0xE0, 0x00, + 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xF0, + 0x00, 0x07, 0x80, 0x00, 0x3C, 0x7E, 0x01, 0xEF, 0xFC, 0x0F, 0xC3, 0xF0, + 0x7C, 0x07, 0x83, 0xC0, 0x3E, 0x1E, 0x00, 0xF0, 0xF0, 0x07, 0xC7, 0x80, + 0x1E, 0x3C, 0x00, 0xF1, 0xE0, 0x07, 0x8F, 0x00, 0x3C, 0x78, 0x01, 0xE3, + 0xC0, 0x0F, 0x1E, 0x00, 0x70, 0xF0, 0x03, 0x87, 0x80, 0x38, 0x3C, 0x01, + 0xC1, 0xE0, 0x1C, 0x0F, 0xC1, 0xC0, 0x1F, 0xFC, 0x00, 0x3F, 0x80, 0x01, + 0xFC, 0x00, 0xFF, 0xE0, 0x38, 0x3E, 0x0E, 0x03, 0xE3, 0x80, 0x7C, 0xE0, + 0x07, 0x18, 0x00, 0x03, 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, 0x03, 0x80, + 0x00, 0x70, 0x00, 0x0E, 0x00, 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x1B, 0xC0, + 0x02, 0x7C, 0x01, 0x87, 0xE0, 0x60, 0x7F, 0xF8, 0x07, 0xFE, 0x00, 0x3F, + 0x00, 0x00, 0x00, 0x60, 0x00, 0x0F, 0x80, 0x00, 0xFE, 0x00, 0x00, 0x78, + 0x00, 0x01, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x78, 0x00, + 0x01, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x7C, 0x78, 0x07, 0xFD, + 0xE0, 0x3C, 0x3F, 0x81, 0xC0, 0x3E, 0x0E, 0x00, 0xF8, 0x38, 0x01, 0xE1, + 0xE0, 0x07, 0x87, 0x00, 0x1E, 0x3C, 0x00, 0x78, 0xF0, 0x01, 0xE3, 0xC0, + 0x07, 0x8F, 0x00, 0x1E, 0x3C, 0x00, 0x78, 0xF0, 0x01, 0xE3, 0xE0, 0x07, + 0x87, 0x80, 0x1E, 0x1F, 0x00, 0x78, 0x3E, 0x03, 0xE0, 0xFC, 0x1F, 0xF0, + 0xFF, 0xDF, 0x00, 0xFC, 0x60, 0x03, 0xF8, 0x03, 0xFF, 0x01, 0xC1, 0xE0, + 0xC0, 0x3C, 0x70, 0x0F, 0x98, 0x01, 0xE7, 0xFF, 0xFB, 0xFF, 0xFE, 0xE0, + 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xF0, 0x00, 0x3C, 0x00, + 0x1F, 0x00, 0x05, 0xE0, 0x02, 0x7C, 0x01, 0x8F, 0xC1, 0xC3, 0xFF, 0xE0, + 0x7F, 0xF0, 0x07, 0xF0, 0x00, 0x00, 0x7E, 0x00, 0xFF, 0xC0, 0xE3, 0xE0, + 0x60, 0x70, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x1E, 0x00, 0x0F, 0x00, + 0x07, 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x07, 0xFF, 0x83, 0xFF, 0xC0, 0x3C, + 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x07, 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x00, + 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x07, 0x80, + 0x03, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x3F, + 0x00, 0xFF, 0xF0, 0x00, 0x01, 0xF8, 0x00, 0x3F, 0xF0, 0x03, 0xC7, 0xFE, + 0x3C, 0x1F, 0xF1, 0xC0, 0x70, 0x1E, 0x03, 0xC0, 0xF0, 0x0E, 0x07, 0x80, + 0x70, 0x3C, 0x03, 0x81, 0xE0, 0x1C, 0x07, 0x80, 0xC0, 0x3E, 0x0E, 0x00, + 0x78, 0xE0, 0x01, 0xFC, 0x00, 0x18, 0x00, 0x01, 0x80, 0x00, 0x18, 0x00, + 0x01, 0xE0, 0x00, 0x0F, 0xFF, 0xC0, 0x3F, 0xFF, 0x80, 0xFF, 0xFE, 0x0C, + 0x00, 0x38, 0xC0, 0x00, 0x4C, 0x00, 0x02, 0x60, 0x00, 0x17, 0x00, 0x01, + 0x38, 0x00, 0x09, 0xE0, 0x00, 0x87, 0xC0, 0x38, 0x1F, 0xFF, 0x00, 0x3F, + 0xC0, 0x00, 0x06, 0x00, 0x00, 0xF8, 0x00, 0x0F, 0xE0, 0x00, 0x07, 0x80, + 0x00, 0x1E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x80, 0x00, + 0x1E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x87, 0xE0, 0x1E, + 0x7F, 0xC0, 0x7B, 0x0F, 0x81, 0xF8, 0x1E, 0x07, 0x80, 0x3C, 0x1E, 0x00, + 0xF0, 0x78, 0x03, 0xC1, 0xE0, 0x0F, 0x07, 0x80, 0x3C, 0x1E, 0x00, 0xF0, + 0x78, 0x03, 0xC1, 0xE0, 0x0F, 0x07, 0x80, 0x3C, 0x1E, 0x00, 0xF0, 0x78, + 0x03, 0xC1, 0xE0, 0x0F, 0x07, 0x80, 0x3C, 0x1E, 0x00, 0xF0, 0x78, 0x03, + 0xC3, 0xF0, 0x1F, 0x9F, 0xF1, 0xFF, 0x0E, 0x03, 0xE0, 0x7C, 0x0F, 0x80, + 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x70, + 0x7E, 0x1F, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, + 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x07, + 0xE7, 0xFF, 0x00, 0xE0, 0x1F, 0x01, 0xF0, 0x1F, 0x00, 0xE0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x70, 0x3F, 0x07, + 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, + 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, + 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xE0, 0x0E, 0xE0, + 0xEF, 0x1C, 0xFF, 0x87, 0xE0, 0x06, 0x00, 0x00, 0x7C, 0x00, 0x03, 0xF8, + 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x80, + 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x78, 0x00, + 0x00, 0xF0, 0x7F, 0xE1, 0xE0, 0x3E, 0x03, 0xC0, 0x70, 0x07, 0x81, 0x80, + 0x0F, 0x06, 0x00, 0x1E, 0x18, 0x00, 0x3C, 0x60, 0x00, 0x79, 0x80, 0x00, + 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x03, 0xDE, 0x00, 0x07, 0x9E, 0x00, 0x0F, + 0x3E, 0x00, 0x1E, 0x3E, 0x00, 0x3C, 0x3E, 0x00, 0x78, 0x3C, 0x00, 0xF0, + 0x3C, 0x01, 0xE0, 0x7C, 0x03, 0xC0, 0x7C, 0x0F, 0xC0, 0xFE, 0x7F, 0xE3, + 0xFF, 0x03, 0x03, 0xE1, 0xFC, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, + 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, + 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x01, + 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x07, 0xE7, 0xFF, 0x1E, 0x1F, 0x01, + 0xF8, 0x1F, 0xCF, 0xF0, 0xFF, 0x80, 0xFF, 0x0F, 0x70, 0xF8, 0x0F, 0x81, + 0xF8, 0x0F, 0x01, 0xE0, 0x1E, 0x00, 0xF0, 0x3C, 0x03, 0xC0, 0x1E, 0x07, + 0x80, 0x78, 0x03, 0xC0, 0xF0, 0x0F, 0x00, 0x78, 0x1E, 0x01, 0xE0, 0x0F, + 0x03, 0xC0, 0x3C, 0x01, 0xE0, 0x78, 0x07, 0x80, 0x3C, 0x0F, 0x00, 0xF0, + 0x07, 0x81, 0xE0, 0x1E, 0x00, 0xF0, 0x3C, 0x03, 0xC0, 0x1E, 0x07, 0x80, + 0x78, 0x03, 0xC0, 0xF0, 0x0F, 0x00, 0x78, 0x1E, 0x01, 0xE0, 0x0F, 0x03, + 0xC0, 0x3C, 0x01, 0xE0, 0x78, 0x07, 0x80, 0x3C, 0x1F, 0x81, 0xF8, 0x0F, + 0xCF, 0xFC, 0xFF, 0xC7, 0xFE, 0x1E, 0x1F, 0x83, 0xF9, 0xFF, 0x03, 0xFC, + 0x3E, 0x07, 0xC0, 0x7C, 0x1E, 0x00, 0xF0, 0x78, 0x03, 0xC1, 0xE0, 0x0F, + 0x07, 0x80, 0x3C, 0x1E, 0x00, 0xF0, 0x78, 0x03, 0xC1, 0xE0, 0x0F, 0x07, + 0x80, 0x3C, 0x1E, 0x00, 0xF0, 0x78, 0x03, 0xC1, 0xE0, 0x0F, 0x07, 0x80, + 0x3C, 0x1E, 0x00, 0xF0, 0x78, 0x03, 0xC1, 0xE0, 0x0F, 0x0F, 0xC0, 0x7E, + 0x7F, 0xC3, 0xFC, 0x01, 0xFE, 0x00, 0x1F, 0xFE, 0x00, 0xF0, 0x7C, 0x0F, + 0x80, 0xF8, 0x3C, 0x01, 0xF1, 0xE0, 0x03, 0xE7, 0x80, 0x0F, 0xBE, 0x00, + 0x3F, 0xF8, 0x00, 0x7F, 0xE0, 0x01, 0xFF, 0x80, 0x07, 0xFE, 0x00, 0x1F, + 0xF8, 0x00, 0x7F, 0xF0, 0x01, 0xE7, 0xC0, 0x07, 0x9F, 0x80, 0x3E, 0x3E, + 0x00, 0xF0, 0x7C, 0x07, 0x80, 0xF8, 0x3C, 0x01, 0xFF, 0xE0, 0x00, 0xFC, + 0x00, 0x0E, 0x3F, 0x07, 0xF7, 0xFE, 0x07, 0xE0, 0xF8, 0x3E, 0x03, 0xE1, + 0xE0, 0x0F, 0x0F, 0x00, 0x7C, 0x78, 0x03, 0xE3, 0xC0, 0x0F, 0x1E, 0x00, + 0x78, 0xF0, 0x03, 0xC7, 0x80, 0x1E, 0x3C, 0x00, 0xF1, 0xE0, 0x07, 0x8F, + 0x00, 0x38, 0x78, 0x03, 0xC3, 0xC0, 0x1E, 0x1E, 0x00, 0xE0, 0xF8, 0x0E, + 0x07, 0xE0, 0xE0, 0x3D, 0xFE, 0x01, 0xE7, 0xC0, 0x0F, 0x00, 0x00, 0x78, + 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, + 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x1F, 0x80, 0x03, 0xFF, 0x80, 0x00, 0x01, + 0xF8, 0x20, 0x3F, 0xF3, 0x03, 0xC1, 0xF8, 0x3C, 0x07, 0xC3, 0xC0, 0x1E, + 0x1C, 0x00, 0xF1, 0xE0, 0x07, 0x8E, 0x00, 0x3C, 0xF0, 0x01, 0xE7, 0x80, + 0x0F, 0x3C, 0x00, 0x79, 0xE0, 0x03, 0xCF, 0x00, 0x1E, 0x78, 0x00, 0xF3, + 0xE0, 0x07, 0x9F, 0x00, 0x3C, 0x7C, 0x01, 0xE3, 0xE0, 0x1F, 0x0F, 0xC1, + 0xF8, 0x3F, 0xF3, 0xC0, 0x7E, 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x80, + 0x00, 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, + 0xC0, 0x00, 0x1E, 0x00, 0x03, 0xF8, 0x00, 0x7F, 0xE0, 0x06, 0x3C, 0xFC, + 0xFE, 0xFA, 0x78, 0xF8, 0x71, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, 0x00, + 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, + 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x01, 0xF8, 0x0F, 0xFC, + 0x00, 0x1F, 0x91, 0x87, 0x98, 0x1D, 0xC0, 0x6E, 0x03, 0x70, 0x0B, 0xC0, + 0x5F, 0x80, 0x7E, 0x01, 0xFC, 0x07, 0xF0, 0x0F, 0xE0, 0x3F, 0x00, 0x7E, + 0x01, 0xF0, 0x07, 0xC0, 0x3E, 0x01, 0xF8, 0x0D, 0xE0, 0xC8, 0xF8, 0x00, + 0x04, 0x00, 0xC0, 0x0C, 0x01, 0xC0, 0x3C, 0x07, 0xFC, 0xFF, 0xC3, 0xC0, + 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, + 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xE2, + 0x1F, 0xC0, 0xF8, 0xFC, 0x0F, 0xE1, 0xF0, 0x0F, 0x83, 0xC0, 0x1E, 0x0F, + 0x00, 0x78, 0x3C, 0x01, 0xE0, 0xF0, 0x07, 0x83, 0xC0, 0x1E, 0x0F, 0x00, + 0x78, 0x3C, 0x01, 0xE0, 0xF0, 0x07, 0x83, 0xC0, 0x1E, 0x0F, 0x00, 0x78, + 0x3C, 0x01, 0xE0, 0xF0, 0x07, 0x83, 0xC0, 0x1E, 0x0F, 0x00, 0x78, 0x3C, + 0x01, 0xE0, 0xF8, 0x0F, 0x81, 0xF0, 0xFF, 0x03, 0xFE, 0x7F, 0x07, 0xE1, + 0xC0, 0xFF, 0x81, 0xFC, 0xFC, 0x01, 0xC1, 0xE0, 0x07, 0x07, 0x80, 0x18, + 0x0F, 0x00, 0x60, 0x3C, 0x01, 0x00, 0x78, 0x0C, 0x01, 0xE0, 0x30, 0x07, + 0x81, 0x80, 0x0F, 0x06, 0x00, 0x3C, 0x10, 0x00, 0x78, 0xC0, 0x01, 0xE3, + 0x00, 0x03, 0x98, 0x00, 0x0F, 0x60, 0x00, 0x3D, 0x00, 0x00, 0x7C, 0x00, + 0x01, 0xF0, 0x00, 0x03, 0x80, 0x00, 0x0E, 0x00, 0x00, 0x30, 0x00, 0x00, + 0x40, 0x00, 0xFF, 0x8F, 0xF8, 0x3F, 0x7E, 0x07, 0xE0, 0x0E, 0x3E, 0x03, + 0xC0, 0x0C, 0x1E, 0x03, 0xE0, 0x0C, 0x1E, 0x01, 0xE0, 0x0C, 0x1E, 0x01, + 0xE0, 0x18, 0x0F, 0x00, 0xF0, 0x18, 0x0F, 0x01, 0xF0, 0x10, 0x07, 0x81, + 0xF0, 0x30, 0x07, 0x81, 0x78, 0x30, 0x07, 0x83, 0x78, 0x60, 0x03, 0xC3, + 0x38, 0x60, 0x03, 0xC6, 0x3C, 0x40, 0x01, 0xC6, 0x3C, 0xC0, 0x01, 0xEC, + 0x1E, 0xC0, 0x01, 0xEC, 0x1F, 0x80, 0x00, 0xF8, 0x0F, 0x80, 0x00, 0xF8, + 0x0F, 0x00, 0x00, 0x70, 0x0F, 0x00, 0x00, 0x70, 0x07, 0x00, 0x00, 0x60, + 0x06, 0x00, 0x00, 0x20, 0x02, 0x00, 0x7F, 0xE7, 0xF0, 0x7E, 0x0F, 0x00, + 0xF8, 0x38, 0x01, 0xE0, 0xC0, 0x07, 0xC6, 0x00, 0x0F, 0x30, 0x00, 0x1E, + 0xC0, 0x00, 0x7E, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x07, 0xC0, + 0x00, 0x3F, 0x00, 0x00, 0xDE, 0x00, 0x06, 0x7C, 0x00, 0x30, 0xF0, 0x01, + 0xC1, 0xE0, 0x06, 0x07, 0xC0, 0x30, 0x0F, 0x01, 0xC0, 0x1E, 0x0F, 0x00, + 0xFC, 0xFE, 0x07, 0xFC, 0xFF, 0xC0, 0xFC, 0xFC, 0x01, 0xE1, 0xE0, 0x03, + 0x07, 0x80, 0x18, 0x0F, 0x00, 0x60, 0x3C, 0x01, 0x80, 0x78, 0x0C, 0x01, + 0xE0, 0x30, 0x03, 0xC0, 0xC0, 0x0F, 0x06, 0x00, 0x3E, 0x18, 0x00, 0x78, + 0x40, 0x01, 0xF3, 0x00, 0x03, 0xCC, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0x80, + 0x00, 0x7C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x06, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x40, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x60, + 0x00, 0x01, 0x80, 0x00, 0x0C, 0x00, 0x0F, 0xF0, 0x00, 0x7F, 0x80, 0x01, + 0xFC, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7F, 0xFF, 0x9F, 0xFF, 0xE6, 0x00, + 0xF1, 0x00, 0x78, 0x40, 0x3E, 0x00, 0x0F, 0x00, 0x07, 0x80, 0x03, 0xE0, + 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x07, 0x80, 0x03, + 0xE0, 0x01, 0xF0, 0x04, 0x78, 0x01, 0x3E, 0x00, 0xDF, 0x00, 0x37, 0x80, + 0x1F, 0xFF, 0xFE, 0xFF, 0xFF, 0x80, 0x01, 0xE0, 0x78, 0x1C, 0x07, 0x80, + 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, + 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x70, 0x1C, 0x0E, 0x00, 0x70, + 0x07, 0x00, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, + 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x01, 0xC0, + 0x1E, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xE0, 0x0F, 0x00, 0x70, 0x0F, 0x00, 0xE0, 0x1C, 0x03, + 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, + 0x70, 0x0E, 0x01, 0xC0, 0x1C, 0x01, 0xC0, 0x0E, 0x07, 0x01, 0xC0, 0x70, + 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0E, + 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x3C, 0x07, 0x03, 0xC0, 0xF0, 0x00, + 0x1F, 0x80, 0x00, 0xFF, 0x80, 0xC7, 0x0F, 0x87, 0xB8, 0x0F, 0xFC, 0x00, + 0x07, 0xC0}; + +const GFXglyph FreeSerif24pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 12, 0, 1}, // 0x20 ' ' + {0, 5, 32, 16, 6, -31}, // 0x21 '!' + {20, 12, 12, 19, 4, -31}, // 0x22 '"' + {38, 23, 31, 23, 0, -30}, // 0x23 '#' + {128, 19, 37, 24, 2, -33}, // 0x24 '$' + {216, 33, 32, 39, 3, -30}, // 0x25 '%' + {348, 32, 33, 37, 2, -31}, // 0x26 '&' + {480, 4, 12, 9, 3, -31}, // 0x27 ''' + {486, 12, 40, 16, 2, -31}, // 0x28 '(' + {546, 12, 40, 16, 2, -30}, // 0x29 ')' + {606, 16, 19, 24, 4, -30}, // 0x2A '*' + {644, 23, 23, 27, 2, -22}, // 0x2B '+' + {711, 6, 11, 12, 2, -4}, // 0x2C ',' + {720, 11, 2, 16, 2, -10}, // 0x2D '-' + {723, 5, 5, 12, 3, -3}, // 0x2E '.' + {727, 14, 32, 14, 0, -30}, // 0x2F '/' + {783, 22, 33, 23, 1, -31}, // 0x30 '0' + {874, 13, 32, 24, 5, -31}, // 0x31 '1' + {926, 21, 31, 23, 1, -30}, // 0x32 '2' + {1008, 18, 32, 23, 2, -30}, // 0x33 '3' + {1080, 21, 31, 24, 1, -30}, // 0x34 '4' + {1162, 19, 33, 24, 2, -31}, // 0x35 '5' + {1241, 21, 33, 23, 2, -31}, // 0x36 '6' + {1328, 20, 31, 24, 1, -30}, // 0x37 '7' + {1406, 18, 33, 23, 3, -31}, // 0x38 '8' + {1481, 21, 33, 24, 1, -31}, // 0x39 '9' + {1568, 5, 22, 12, 4, -20}, // 0x3A ':' + {1582, 6, 27, 12, 3, -20}, // 0x3B ';' + {1603, 24, 25, 27, 1, -24}, // 0x3C '<' + {1678, 24, 11, 27, 1, -16}, // 0x3D '=' + {1711, 24, 25, 27, 2, -23}, // 0x3E '>' + {1786, 17, 32, 21, 3, -31}, // 0x3F '?' + {1854, 32, 33, 41, 4, -31}, // 0x40 '@' + {1986, 32, 32, 34, 1, -31}, // 0x41 'A' + {2114, 27, 31, 30, 0, -30}, // 0x42 'B' + {2219, 28, 33, 31, 2, -31}, // 0x43 'C' + {2335, 31, 31, 34, 1, -30}, // 0x44 'D' + {2456, 27, 31, 29, 2, -30}, // 0x45 'E' + {2561, 24, 31, 27, 2, -30}, // 0x46 'F' + {2654, 31, 33, 35, 2, -31}, // 0x47 'G' + {2782, 30, 31, 34, 2, -30}, // 0x48 'H' + {2899, 13, 31, 15, 1, -30}, // 0x49 'I' + {2950, 17, 32, 18, 0, -30}, // 0x4A 'J' + {3018, 32, 31, 33, 1, -30}, // 0x4B 'K' + {3142, 26, 31, 29, 2, -30}, // 0x4C 'L' + {3243, 39, 31, 41, 1, -30}, // 0x4D 'M' + {3395, 32, 32, 34, 1, -30}, // 0x4E 'N' + {3523, 30, 33, 34, 2, -31}, // 0x4F 'O' + {3647, 23, 31, 27, 2, -30}, // 0x50 'P' + {3737, 31, 40, 34, 2, -31}, // 0x51 'Q' + {3892, 28, 31, 31, 2, -30}, // 0x52 'R' + {4001, 21, 33, 25, 2, -31}, // 0x53 'S' + {4088, 27, 31, 28, 1, -30}, // 0x54 'T' + {4193, 32, 32, 34, 1, -30}, // 0x55 'U' + {4321, 32, 32, 33, 0, -30}, // 0x56 'V' + {4449, 44, 32, 45, 0, -30}, // 0x57 'W' + {4625, 33, 31, 34, 0, -30}, // 0x58 'X' + {4753, 32, 31, 33, 0, -30}, // 0x59 'Y' + {4877, 27, 31, 29, 1, -30}, // 0x5A 'Z' + {4982, 9, 38, 16, 4, -30}, // 0x5B '[' + {5025, 14, 32, 14, 0, -30}, // 0x5C '\' + {5081, 9, 38, 16, 3, -30}, // 0x5D ']' + {5124, 20, 17, 22, 1, -30}, // 0x5E '^' + {5167, 24, 2, 23, 0, 5}, // 0x5F '_' + {5173, 10, 8, 12, 1, -31}, // 0x60 '`' + {5183, 18, 21, 20, 1, -20}, // 0x61 'a' + {5231, 21, 32, 24, 1, -31}, // 0x62 'b' + {5315, 19, 21, 21, 1, -20}, // 0x63 'c' + {5365, 22, 32, 23, 1, -31}, // 0x64 'd' + {5453, 18, 21, 21, 1, -20}, // 0x65 'e' + {5501, 17, 33, 18, 0, -32}, // 0x66 'f' + {5572, 21, 31, 22, 1, -20}, // 0x67 'g' + {5654, 22, 32, 23, 0, -31}, // 0x68 'h' + {5742, 11, 32, 13, 0, -31}, // 0x69 'i' + {5786, 12, 42, 16, 0, -31}, // 0x6A 'j' + {5849, 23, 32, 24, 1, -31}, // 0x6B 'k' + {5941, 11, 32, 12, 0, -31}, // 0x6C 'l' + {5985, 35, 21, 37, 1, -20}, // 0x6D 'm' + {6077, 22, 21, 23, 0, -20}, // 0x6E 'n' + {6135, 22, 21, 23, 1, -20}, // 0x6F 'o' + {6193, 21, 31, 24, 1, -20}, // 0x70 'p' + {6275, 21, 31, 23, 1, -20}, // 0x71 'q' + {6357, 15, 21, 16, 1, -20}, // 0x72 'r' + {6397, 13, 21, 17, 2, -20}, // 0x73 's' + {6432, 12, 26, 13, 1, -25}, // 0x74 't' + {6471, 22, 21, 23, 1, -20}, // 0x75 'u' + {6529, 22, 22, 22, 0, -20}, // 0x76 'v' + {6590, 32, 22, 32, 0, -20}, // 0x77 'w' + {6678, 22, 21, 23, 0, -20}, // 0x78 'x' + {6736, 22, 31, 22, 0, -20}, // 0x79 'y' + {6822, 18, 21, 20, 1, -20}, // 0x7A 'z' + {6870, 11, 41, 23, 5, -31}, // 0x7B '{' + {6927, 3, 32, 9, 3, -30}, // 0x7C '|' + {6939, 11, 41, 23, 7, -31}, // 0x7D '}' + {6996, 22, 5, 23, 1, -13}}; // 0x7E '~' + +const GFXfont FreeSerif24pt7b PROGMEM = {(uint8_t *)FreeSerif24pt7bBitmaps, + (GFXglyph *)FreeSerif24pt7bGlyphs, + 0x20, 0x7E, 56}; + +// Approx. 7682 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerif9pt7b.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerif9pt7b.h new file mode 100644 index 0000000..22f82e4 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerif9pt7b.h @@ -0,0 +1,197 @@ +#pragma once +#include + +const uint8_t FreeSerif9pt7bBitmaps[] PROGMEM = { + 0xFF, 0xEA, 0x03, 0xDE, 0xF7, 0x20, 0x11, 0x09, 0x04, 0x82, 0x4F, 0xF9, + 0x10, 0x89, 0xFF, 0x24, 0x12, 0x09, 0x0C, 0x80, 0x10, 0x7C, 0xD6, 0xD2, + 0xD0, 0xF0, 0x38, 0x1E, 0x17, 0x93, 0x93, 0xD6, 0x7C, 0x10, 0x38, 0x43, + 0x3C, 0x39, 0x21, 0x8A, 0x0C, 0x50, 0x65, 0x39, 0xCB, 0x20, 0xB9, 0x05, + 0x88, 0x4C, 0x44, 0x64, 0x21, 0xC0, 0x0E, 0x00, 0xC8, 0x06, 0x40, 0x32, + 0x01, 0xA0, 0x07, 0x78, 0x31, 0x87, 0x88, 0x46, 0x86, 0x34, 0x30, 0xC1, + 0xC7, 0x17, 0xCF, 0x00, 0xFE, 0x08, 0x88, 0x84, 0x63, 0x18, 0xC6, 0x10, + 0x82, 0x08, 0x20, 0x82, 0x08, 0x21, 0x0C, 0x63, 0x18, 0xC4, 0x22, 0x22, + 0x00, 0x63, 0x9A, 0xDC, 0x72, 0xB6, 0x08, 0x08, 0x04, 0x02, 0x01, 0x0F, + 0xF8, 0x40, 0x20, 0x10, 0x08, 0x00, 0xD8, 0xF0, 0xF0, 0x08, 0x84, 0x22, + 0x10, 0x8C, 0x42, 0x31, 0x00, 0x1C, 0x31, 0x98, 0xD8, 0x3C, 0x1E, 0x0F, + 0x07, 0x83, 0xC1, 0xE0, 0xD8, 0xC4, 0x61, 0xC0, 0x13, 0x8C, 0x63, 0x18, + 0xC6, 0x31, 0x8C, 0x67, 0x80, 0x3C, 0x4E, 0x86, 0x06, 0x06, 0x04, 0x0C, + 0x08, 0x10, 0x20, 0x41, 0xFE, 0x3C, 0xC6, 0x06, 0x04, 0x1C, 0x3E, 0x07, + 0x03, 0x03, 0x03, 0x06, 0xF8, 0x04, 0x18, 0x71, 0x64, 0xC9, 0xA3, 0x46, + 0xFE, 0x18, 0x30, 0x60, 0x0F, 0x10, 0x20, 0x3C, 0x0E, 0x07, 0x03, 0x03, + 0x03, 0x02, 0x04, 0xF8, 0x07, 0x1C, 0x30, 0x60, 0x60, 0xDC, 0xE6, 0xC3, + 0xC3, 0xC3, 0x43, 0x66, 0x3C, 0x7F, 0x82, 0x02, 0x02, 0x04, 0x04, 0x04, + 0x08, 0x08, 0x08, 0x10, 0x10, 0x3C, 0x8F, 0x1E, 0x3E, 0x4F, 0x06, 0x36, + 0xC7, 0x8F, 0x1B, 0x33, 0xC0, 0x3C, 0x66, 0xC2, 0xC3, 0xC3, 0xC3, 0xC3, + 0x63, 0x3F, 0x06, 0x06, 0x0C, 0x38, 0x60, 0xF0, 0x0F, 0xD8, 0x00, 0x03, + 0x28, 0x01, 0x87, 0x0E, 0x1C, 0x0C, 0x03, 0x80, 0x70, 0x0E, 0x00, 0x80, + 0xFF, 0x80, 0x00, 0x00, 0x0F, 0xF8, 0x80, 0x1C, 0x01, 0xC0, 0x1C, 0x01, + 0xC0, 0xE0, 0xE0, 0xE0, 0xC0, 0x00, 0x79, 0x1A, 0x18, 0x30, 0x60, 0x83, + 0x04, 0x10, 0x20, 0x40, 0x03, 0x00, 0x0F, 0x83, 0x8C, 0x60, 0x26, 0x02, + 0xC7, 0x9C, 0xC9, 0xD8, 0x9D, 0x99, 0xD9, 0x26, 0xEC, 0x60, 0x03, 0x04, + 0x0F, 0x80, 0x02, 0x00, 0x10, 0x01, 0xC0, 0x16, 0x00, 0x98, 0x04, 0xC0, + 0x43, 0x03, 0xF8, 0x20, 0x61, 0x03, 0x18, 0x1D, 0xE1, 0xF0, 0xFF, 0x86, + 0x1C, 0xC1, 0x98, 0x33, 0x0C, 0x7E, 0x0C, 0x31, 0x83, 0x30, 0x66, 0x0C, + 0xC3, 0x7F, 0xC0, 0x1F, 0x26, 0x1D, 0x81, 0xE0, 0x1C, 0x01, 0x80, 0x30, + 0x06, 0x00, 0xC0, 0x0C, 0x00, 0xC1, 0x8F, 0xC0, 0xFF, 0x03, 0x1C, 0x30, + 0x63, 0x07, 0x30, 0x33, 0x03, 0x30, 0x33, 0x03, 0x30, 0x33, 0x06, 0x30, + 0xCF, 0xF0, 0xFF, 0x98, 0x26, 0x01, 0x80, 0x61, 0x1F, 0xC6, 0x11, 0x80, + 0x60, 0x18, 0x16, 0x0F, 0xFE, 0xFF, 0xB0, 0x58, 0x0C, 0x06, 0x13, 0xF9, + 0x84, 0xC0, 0x60, 0x30, 0x18, 0x1E, 0x00, 0x1F, 0x23, 0x0E, 0x60, 0x26, + 0x00, 0xC0, 0x0C, 0x0F, 0xC0, 0x6C, 0x06, 0xC0, 0x66, 0x06, 0x30, 0x60, + 0xF8, 0xF1, 0xEC, 0x19, 0x83, 0x30, 0x66, 0x0C, 0xFF, 0x98, 0x33, 0x06, + 0x60, 0xCC, 0x19, 0x83, 0x78, 0xF0, 0xF6, 0x66, 0x66, 0x66, 0x66, 0x6F, + 0x3C, 0x61, 0x86, 0x18, 0x61, 0x86, 0x18, 0x6D, 0xBC, 0xF3, 0xE6, 0x08, + 0x61, 0x06, 0x20, 0x64, 0x07, 0x80, 0x6C, 0x06, 0x60, 0x63, 0x06, 0x18, + 0x60, 0xCF, 0x3F, 0xF0, 0x18, 0x06, 0x01, 0x80, 0x60, 0x18, 0x06, 0x01, + 0x80, 0x60, 0x18, 0x16, 0x0B, 0xFE, 0xF0, 0x0E, 0x70, 0x38, 0xE0, 0x71, + 0xE1, 0x62, 0xC2, 0xC5, 0xC9, 0x89, 0x93, 0x13, 0x26, 0x23, 0x8C, 0x47, + 0x18, 0x84, 0x33, 0x88, 0xF0, 0xE0, 0xEE, 0x09, 0xC1, 0x2C, 0x25, 0xC4, + 0x9C, 0x91, 0x92, 0x1A, 0x41, 0xC8, 0x19, 0x03, 0x70, 0x20, 0x1F, 0x06, + 0x31, 0x83, 0x20, 0x2C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x68, 0x09, + 0x83, 0x18, 0xC1, 0xF0, 0xFE, 0x31, 0x98, 0x6C, 0x36, 0x1B, 0x19, 0xF8, + 0xC0, 0x60, 0x30, 0x18, 0x1E, 0x00, 0x1F, 0x06, 0x31, 0x83, 0x20, 0x2C, + 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x68, 0x19, 0x83, 0x18, 0xC0, 0xE0, + 0x0E, 0x00, 0xE0, 0x07, 0xFE, 0x0C, 0x61, 0x86, 0x30, 0xC6, 0x18, 0xC6, + 0x1F, 0x83, 0x70, 0x67, 0x0C, 0x71, 0x87, 0x78, 0x70, 0x1D, 0x31, 0x98, + 0x4C, 0x07, 0x80, 0xE0, 0x1C, 0x07, 0x01, 0xA0, 0xD8, 0xCB, 0xC0, 0xFF, + 0xF8, 0xCE, 0x18, 0x83, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, + 0xC0, 0x18, 0x07, 0x80, 0xF0, 0xEC, 0x09, 0x81, 0x30, 0x26, 0x04, 0xC0, + 0x98, 0x13, 0x02, 0x60, 0x4C, 0x08, 0xC2, 0x0F, 0x80, 0xF8, 0x77, 0x02, + 0x30, 0x23, 0x04, 0x18, 0x41, 0x84, 0x0C, 0x80, 0xC8, 0x07, 0x00, 0x70, + 0x02, 0x00, 0x20, 0xFB, 0xE7, 0xB0, 0xC0, 0x8C, 0x20, 0x86, 0x18, 0x41, + 0x8C, 0x40, 0xCB, 0x20, 0x65, 0x90, 0x1A, 0x70, 0x0E, 0x38, 0x03, 0x1C, + 0x01, 0x04, 0x00, 0x82, 0x00, 0xFC, 0xF9, 0x83, 0x06, 0x10, 0x19, 0x00, + 0xD0, 0x03, 0x00, 0x1C, 0x01, 0x30, 0x11, 0xC1, 0x86, 0x08, 0x19, 0xE3, + 0xF0, 0xF8, 0xF6, 0x06, 0x30, 0x41, 0x88, 0x1D, 0x00, 0xD0, 0x06, 0x00, + 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0xF0, 0x3F, 0xCC, 0x11, 0x06, 0x01, + 0x80, 0x70, 0x0C, 0x03, 0x00, 0xE0, 0x38, 0x06, 0x05, 0xC1, 0x7F, 0xE0, + 0xFB, 0x6D, 0xB6, 0xDB, 0x6D, 0xB8, 0x82, 0x10, 0x82, 0x10, 0x86, 0x10, + 0x86, 0x10, 0xED, 0xB6, 0xDB, 0x6D, 0xB6, 0xF8, 0x18, 0x1C, 0x34, 0x26, + 0x62, 0x42, 0xC1, 0xFF, 0x80, 0x84, 0x20, 0x79, 0x98, 0x30, 0xE6, 0xD9, + 0xB3, 0x3F, 0x20, 0x70, 0x18, 0x0C, 0x06, 0x03, 0x71, 0xCC, 0xC3, 0x61, + 0xB0, 0xD8, 0x6C, 0x63, 0xE0, 0x3C, 0xCF, 0x06, 0x0C, 0x18, 0x18, 0x9E, + 0x01, 0x03, 0x80, 0xC0, 0x60, 0x31, 0xD9, 0x9D, 0x86, 0xC3, 0x61, 0xB0, + 0xCC, 0x63, 0xF0, 0x3C, 0x46, 0xFE, 0xC0, 0xC0, 0xE1, 0x62, 0x3C, 0x1E, + 0x41, 0x83, 0x06, 0x1E, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x0F, 0x00, 0x3C, + 0x19, 0xF6, 0x31, 0x8C, 0x1E, 0x08, 0x04, 0x01, 0xFC, 0x40, 0xB0, 0x2E, + 0x11, 0xF8, 0x20, 0x70, 0x18, 0x0C, 0x06, 0x03, 0x71, 0xCC, 0xC6, 0x63, + 0x31, 0x98, 0xCC, 0x6F, 0x78, 0x60, 0x02, 0xE6, 0x66, 0x66, 0xF0, 0x18, + 0x00, 0x33, 0x8C, 0x63, 0x18, 0xC6, 0x31, 0x8B, 0x80, 0x20, 0x70, 0x18, + 0x0C, 0x06, 0x03, 0x3D, 0x88, 0xD8, 0x78, 0x36, 0x19, 0x8C, 0x6F, 0x78, + 0x2E, 0x66, 0x66, 0x66, 0x66, 0x66, 0xF0, 0xEE, 0x71, 0xCE, 0x66, 0x31, + 0x98, 0xC6, 0x63, 0x19, 0x8C, 0x66, 0x31, 0xBD, 0xEF, 0xEE, 0x39, 0x98, + 0xCC, 0x66, 0x33, 0x19, 0x8D, 0xEF, 0x3E, 0x31, 0xB0, 0x78, 0x3C, 0x1E, + 0x0D, 0x8C, 0x7C, 0xEE, 0x39, 0x98, 0x6C, 0x36, 0x1B, 0x0D, 0x8C, 0xFC, + 0x60, 0x30, 0x18, 0x1E, 0x00, 0x3D, 0x31, 0xB0, 0xD8, 0x6C, 0x36, 0x1B, + 0x8C, 0xFE, 0x03, 0x01, 0x80, 0xC0, 0xF0, 0x6D, 0xC6, 0x18, 0x61, 0x86, + 0x3C, 0x76, 0x38, 0x58, 0x3E, 0x38, 0xFE, 0x27, 0x98, 0xC6, 0x31, 0x8C, + 0x38, 0xE7, 0x31, 0x98, 0xCC, 0x66, 0x33, 0x19, 0x8C, 0x7F, 0xF3, 0x61, + 0x22, 0x32, 0x14, 0x1C, 0x08, 0x08, 0xEF, 0x36, 0x61, 0x62, 0x22, 0x32, + 0x35, 0x41, 0x9C, 0x18, 0x81, 0x08, 0xF7, 0x12, 0x0E, 0x03, 0x01, 0xC1, + 0x21, 0x09, 0xCF, 0xF3, 0x61, 0x62, 0x32, 0x34, 0x14, 0x1C, 0x08, 0x08, + 0x08, 0x10, 0xE0, 0xFD, 0x18, 0x60, 0x83, 0x0C, 0x70, 0xFE, 0x19, 0x8C, + 0x63, 0x18, 0xC4, 0x61, 0x8C, 0x63, 0x18, 0xC3, 0xFF, 0xF0, 0xC3, 0x18, + 0xC6, 0x31, 0x84, 0x33, 0x18, 0xC6, 0x31, 0x98, 0x70, 0x24, 0xC1, 0xC0}; + +const GFXglyph FreeSerif9pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 5, 0, 1}, // 0x20 ' ' + {0, 2, 12, 6, 2, -11}, // 0x21 '!' + {3, 5, 4, 7, 1, -11}, // 0x22 '"' + {6, 9, 12, 9, 0, -11}, // 0x23 '#' + {20, 8, 14, 9, 1, -12}, // 0x24 '$' + {34, 13, 12, 15, 1, -11}, // 0x25 '%' + {54, 13, 13, 14, 1, -12}, // 0x26 '&' + {76, 2, 4, 4, 1, -11}, // 0x27 ''' + {77, 5, 15, 6, 1, -11}, // 0x28 '(' + {87, 5, 15, 6, 0, -11}, // 0x29 ')' + {97, 6, 8, 9, 3, -11}, // 0x2A '*' + {103, 9, 9, 10, 0, -8}, // 0x2B '+' + {114, 2, 3, 4, 2, 0}, // 0x2C ',' + {115, 4, 1, 6, 1, -3}, // 0x2D '-' + {116, 2, 2, 5, 1, -1}, // 0x2E '.' + {117, 5, 12, 5, 0, -11}, // 0x2F '/' + {125, 9, 13, 9, 0, -12}, // 0x30 '0' + {140, 5, 13, 9, 2, -12}, // 0x31 '1' + {149, 8, 12, 9, 1, -11}, // 0x32 '2' + {161, 8, 12, 9, 0, -11}, // 0x33 '3' + {173, 7, 12, 9, 1, -11}, // 0x34 '4' + {184, 8, 12, 9, 0, -11}, // 0x35 '5' + {196, 8, 13, 9, 1, -12}, // 0x36 '6' + {209, 8, 12, 9, 0, -11}, // 0x37 '7' + {221, 7, 13, 9, 1, -12}, // 0x38 '8' + {233, 8, 14, 9, 1, -12}, // 0x39 '9' + {247, 2, 8, 5, 1, -7}, // 0x3A ':' + {249, 3, 10, 5, 1, -7}, // 0x3B ';' + {253, 9, 9, 10, 1, -8}, // 0x3C '<' + {264, 9, 5, 10, 1, -6}, // 0x3D '=' + {270, 10, 9, 10, 0, -8}, // 0x3E '>' + {282, 7, 13, 8, 1, -12}, // 0x3F '?' + {294, 12, 13, 16, 2, -12}, // 0x40 '@' + {314, 13, 12, 13, 0, -11}, // 0x41 'A' + {334, 11, 12, 11, 0, -11}, // 0x42 'B' + {351, 11, 12, 12, 1, -11}, // 0x43 'C' + {368, 12, 12, 13, 0, -11}, // 0x44 'D' + {386, 10, 12, 11, 1, -11}, // 0x45 'E' + {401, 9, 12, 10, 1, -11}, // 0x46 'F' + {415, 12, 12, 13, 1, -11}, // 0x47 'G' + {433, 11, 12, 13, 1, -11}, // 0x48 'H' + {450, 4, 12, 6, 1, -11}, // 0x49 'I' + {456, 6, 12, 7, 0, -11}, // 0x4A 'J' + {465, 12, 12, 13, 1, -11}, // 0x4B 'K' + {483, 10, 12, 11, 1, -11}, // 0x4C 'L' + {498, 15, 12, 16, 0, -11}, // 0x4D 'M' + {521, 11, 12, 13, 1, -11}, // 0x4E 'N' + {538, 11, 13, 13, 1, -12}, // 0x4F 'O' + {556, 9, 12, 10, 1, -11}, // 0x50 'P' + {570, 11, 16, 13, 1, -12}, // 0x51 'Q' + {592, 11, 12, 12, 1, -11}, // 0x52 'R' + {609, 9, 12, 10, 0, -11}, // 0x53 'S' + {623, 11, 12, 11, 0, -11}, // 0x54 'T' + {640, 11, 12, 13, 1, -11}, // 0x55 'U' + {657, 12, 12, 13, 0, -11}, // 0x56 'V' + {675, 17, 12, 17, 0, -11}, // 0x57 'W' + {701, 13, 12, 13, 0, -11}, // 0x58 'X' + {721, 12, 12, 13, 0, -11}, // 0x59 'Y' + {739, 11, 12, 11, 0, -11}, // 0x5A 'Z' + {756, 3, 15, 6, 2, -11}, // 0x5B '[' + {762, 5, 12, 5, 0, -11}, // 0x5C '\' + {770, 3, 15, 6, 1, -11}, // 0x5D ']' + {776, 8, 7, 8, 0, -11}, // 0x5E '^' + {783, 9, 1, 9, 0, 2}, // 0x5F '_' + {785, 4, 3, 5, 0, -11}, // 0x60 '`' + {787, 7, 8, 8, 1, -7}, // 0x61 'a' + {794, 9, 13, 9, 0, -12}, // 0x62 'b' + {809, 7, 8, 8, 0, -7}, // 0x63 'c' + {816, 9, 13, 9, 0, -12}, // 0x64 'd' + {831, 8, 8, 8, 0, -7}, // 0x65 'e' + {839, 7, 13, 7, 1, -12}, // 0x66 'f' + {851, 10, 12, 8, 0, -7}, // 0x67 'g' + {866, 9, 13, 9, 0, -12}, // 0x68 'h' + {881, 4, 11, 5, 1, -10}, // 0x69 'i' + {887, 5, 15, 6, 0, -10}, // 0x6A 'j' + {897, 9, 13, 9, 1, -12}, // 0x6B 'k' + {912, 4, 13, 5, 1, -12}, // 0x6C 'l' + {919, 14, 8, 14, 0, -7}, // 0x6D 'm' + {933, 9, 8, 9, 0, -7}, // 0x6E 'n' + {942, 9, 8, 9, 0, -7}, // 0x6F 'o' + {951, 9, 12, 9, 0, -7}, // 0x70 'p' + {965, 9, 12, 9, 0, -7}, // 0x71 'q' + {979, 6, 8, 6, 0, -7}, // 0x72 'r' + {985, 6, 8, 7, 1, -7}, // 0x73 's' + {991, 5, 9, 5, 0, -8}, // 0x74 't' + {997, 9, 8, 9, 0, -7}, // 0x75 'u' + {1006, 8, 8, 8, 0, -7}, // 0x76 'v' + {1014, 12, 8, 12, 0, -7}, // 0x77 'w' + {1026, 9, 8, 9, 0, -7}, // 0x78 'x' + {1035, 8, 12, 8, 0, -7}, // 0x79 'y' + {1047, 7, 8, 7, 1, -7}, // 0x7A 'z' + {1054, 5, 16, 9, 1, -12}, // 0x7B '{' + {1064, 1, 12, 4, 1, -11}, // 0x7C '|' + {1066, 5, 16, 9, 3, -11}, // 0x7D '}' + {1076, 9, 3, 9, 0, -5}}; // 0x7E '~' + +const GFXfont FreeSerif9pt7b PROGMEM = {(uint8_t *)FreeSerif9pt7bBitmaps, + (GFXglyph *)FreeSerif9pt7bGlyphs, 0x20, + 0x7E, 22}; + +// Approx. 1752 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBold12pt7b.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBold12pt7b.h new file mode 100644 index 0000000..9dedae0 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBold12pt7b.h @@ -0,0 +1,273 @@ +#pragma once +#include + +const uint8_t FreeSerifBold12pt7bBitmaps[] PROGMEM = { + 0x7F, 0xFF, 0x77, 0x66, 0x22, 0x00, 0x6F, 0xF7, 0xE3, 0xF1, 0xF8, 0xFC, + 0x7E, 0x3A, 0x09, 0x04, 0x0C, 0x40, 0xCC, 0x0C, 0xC0, 0x8C, 0x18, 0xC7, + 0xFF, 0x18, 0xC1, 0x88, 0x19, 0x81, 0x98, 0xFF, 0xE3, 0x18, 0x31, 0x83, + 0x18, 0x33, 0x03, 0x30, 0x08, 0x01, 0x00, 0xFC, 0x24, 0xEC, 0x8D, 0x90, + 0xBA, 0x07, 0xC0, 0x7E, 0x07, 0xF0, 0x7F, 0x07, 0xF0, 0x9F, 0x11, 0xE2, + 0x3E, 0x46, 0xE9, 0xC7, 0xC0, 0x20, 0x04, 0x00, 0x1E, 0x0C, 0x0E, 0x7F, + 0x07, 0x10, 0x83, 0xC4, 0x40, 0xE1, 0x30, 0x38, 0x88, 0x0E, 0x26, 0x03, + 0x91, 0x1E, 0x78, 0x8E, 0x40, 0x27, 0x10, 0x11, 0xC4, 0x0C, 0xE1, 0x02, + 0x38, 0x81, 0x0E, 0x20, 0x43, 0x90, 0x20, 0x78, 0x03, 0xE0, 0x01, 0x9E, + 0x00, 0xE3, 0x80, 0x38, 0xE0, 0x0F, 0x30, 0x03, 0xF0, 0x00, 0x78, 0x7C, + 0x1F, 0x06, 0x1B, 0xE1, 0x1C, 0x7C, 0x8F, 0x1F, 0x23, 0xC3, 0xF0, 0xF8, + 0x7C, 0x3E, 0x0F, 0x97, 0xC7, 0xFC, 0xFE, 0x3E, 0xFF, 0xFE, 0x90, 0x00, + 0x31, 0x0C, 0x31, 0x86, 0x38, 0xE3, 0x8E, 0x38, 0xE3, 0x86, 0x18, 0x60, + 0xC1, 0x02, 0x04, 0x03, 0x06, 0x0C, 0x30, 0x61, 0x87, 0x1C, 0x71, 0xC7, + 0x1C, 0x71, 0x86, 0x38, 0xC2, 0x10, 0x80, 0x1C, 0x6E, 0xFA, 0xEF, 0xF1, + 0xC7, 0xFF, 0xAF, 0xBB, 0x1C, 0x04, 0x00, 0x06, 0x00, 0x60, 0x06, 0x00, + 0x60, 0x06, 0x0F, 0xFF, 0xFF, 0xF0, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, + 0x60, 0x6F, 0xF7, 0x11, 0x24, 0xFF, 0xFF, 0xC0, 0x6F, 0xF6, 0x03, 0x07, + 0x06, 0x06, 0x0C, 0x0C, 0x0C, 0x18, 0x18, 0x18, 0x30, 0x30, 0x30, 0x60, + 0x60, 0x60, 0xC0, 0x0E, 0x07, 0x71, 0xC7, 0x38, 0xEF, 0x1D, 0xE3, 0xFC, + 0x7F, 0x8F, 0xF1, 0xFE, 0x3F, 0xC7, 0xF8, 0xF7, 0x1C, 0xE3, 0x8E, 0xE0, + 0xF8, 0x06, 0x0F, 0x1F, 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, + 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0xF9, 0xFF, 0x0F, 0x03, 0xFC, 0x7F, 0xC4, + 0x3E, 0x01, 0xE0, 0x1E, 0x01, 0xE0, 0x1C, 0x03, 0x80, 0x30, 0x06, 0x00, + 0xC1, 0x18, 0x13, 0xFE, 0x7F, 0xEF, 0xFE, 0x1F, 0x0C, 0xFA, 0x0F, 0x01, + 0xE0, 0x38, 0x0E, 0x03, 0xE0, 0x3E, 0x03, 0xE0, 0x3C, 0x03, 0x80, 0x70, + 0x0D, 0xC1, 0xBC, 0x43, 0xF0, 0x03, 0x80, 0xE0, 0x78, 0x3E, 0x17, 0x89, + 0xE2, 0x79, 0x1E, 0x87, 0xA1, 0xEF, 0xFF, 0xFF, 0xFF, 0xC1, 0xE0, 0x78, + 0x1E, 0x3F, 0xE7, 0xF8, 0xFF, 0x10, 0x04, 0x00, 0xF8, 0x1F, 0xC7, 0xFC, + 0x1F, 0xC0, 0x78, 0x07, 0x00, 0x60, 0x0D, 0xC1, 0x3C, 0x43, 0xF0, 0x00, + 0xE0, 0xF0, 0x38, 0x1E, 0x07, 0x80, 0xF0, 0x3F, 0xE7, 0x9E, 0xF1, 0xFE, + 0x3F, 0xC7, 0xF8, 0xF7, 0x1E, 0xE3, 0x8E, 0x60, 0xF8, 0x7F, 0xEF, 0xFD, + 0xFF, 0xA0, 0x68, 0x0C, 0x03, 0x80, 0x60, 0x0C, 0x03, 0x00, 0x60, 0x0C, + 0x03, 0x00, 0x60, 0x1C, 0x03, 0x00, 0x60, 0x1F, 0x0E, 0x73, 0x87, 0x70, + 0xEF, 0x1D, 0xF3, 0x1F, 0x81, 0xF8, 0x1F, 0xCC, 0xFB, 0x8F, 0xF0, 0xFE, + 0x1F, 0xC3, 0x9C, 0xF1, 0xF8, 0x1F, 0x06, 0x71, 0xC7, 0x78, 0xEF, 0x1F, + 0xE3, 0xFC, 0x7F, 0x8F, 0x79, 0xE7, 0xFC, 0x0F, 0x01, 0xC0, 0x78, 0x1C, + 0x0F, 0x07, 0x00, 0x6F, 0xF6, 0x00, 0x06, 0xFF, 0x60, 0x6F, 0xF6, 0x00, + 0x06, 0xFF, 0x71, 0x22, 0xC0, 0x00, 0x04, 0x00, 0x70, 0x07, 0xC0, 0xFC, + 0x0F, 0x80, 0xF8, 0x0F, 0x80, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, + 0x00, 0x1F, 0x00, 0x1C, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0x00, 0x03, 0x80, 0x0F, + 0x80, 0x0F, 0x80, 0x0F, 0x80, 0x0F, 0x80, 0x0F, 0x80, 0x1F, 0x01, 0xF0, + 0x1F, 0x03, 0xF0, 0x3E, 0x00, 0xE0, 0x02, 0x00, 0x00, 0x3E, 0x11, 0xEC, + 0x3F, 0x8F, 0xE3, 0xC0, 0xF0, 0x78, 0x18, 0x08, 0x02, 0x00, 0x00, 0x00, + 0x1C, 0x07, 0x81, 0xE0, 0x30, 0x03, 0xF0, 0x0E, 0x18, 0x18, 0x04, 0x30, + 0x66, 0x70, 0xDB, 0x61, 0x99, 0xE3, 0x19, 0xE3, 0x31, 0xE6, 0x31, 0xE6, + 0x31, 0xE6, 0xF2, 0x66, 0xB2, 0x73, 0x3C, 0x38, 0x00, 0x1E, 0x04, 0x03, + 0xF8, 0x00, 0x80, 0x00, 0xC0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x3E, 0x00, + 0x1F, 0x00, 0x1B, 0xC0, 0x09, 0xE0, 0x0C, 0xF8, 0x04, 0x3C, 0x02, 0x1F, + 0x03, 0xFF, 0x81, 0x03, 0xC1, 0x80, 0xF0, 0x80, 0x7D, 0xF0, 0xFF, 0xFF, + 0xC0, 0xF3, 0xC3, 0xC7, 0x8F, 0x1E, 0x3C, 0x78, 0xF1, 0xE3, 0xCE, 0x0F, + 0xF0, 0x3C, 0x70, 0xF0, 0xE3, 0xC3, 0xCF, 0x0F, 0x3C, 0x3C, 0xF0, 0xE3, + 0xC7, 0xBF, 0xF8, 0x07, 0xE2, 0x38, 0x7C, 0xE0, 0x3B, 0xC0, 0x37, 0x00, + 0x7E, 0x00, 0x7C, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x03, + 0x80, 0x07, 0x80, 0x27, 0x00, 0xC7, 0x86, 0x03, 0xF0, 0xFF, 0xE0, 0x1E, + 0x1E, 0x0F, 0x07, 0x87, 0x81, 0xE3, 0xC0, 0xF1, 0xE0, 0x3C, 0xF0, 0x1E, + 0x78, 0x0F, 0x3C, 0x07, 0x9E, 0x03, 0xCF, 0x01, 0xE7, 0x80, 0xE3, 0xC0, + 0xF1, 0xE0, 0xF0, 0xF0, 0xE1, 0xFF, 0xC0, 0xFF, 0xFC, 0x78, 0x38, 0xF0, + 0x31, 0xE0, 0x23, 0xC4, 0x07, 0x88, 0x0F, 0x30, 0x1F, 0xE0, 0x3C, 0xC0, + 0x78, 0x80, 0xF1, 0x01, 0xE0, 0x23, 0xC0, 0x47, 0x81, 0x8F, 0x07, 0x7F, + 0xFE, 0xFF, 0xFC, 0xF0, 0x73, 0xC0, 0xCF, 0x01, 0x3C, 0x40, 0xF1, 0x03, + 0xCC, 0x0F, 0xF0, 0x3C, 0xC0, 0xF1, 0x03, 0xC4, 0x0F, 0x00, 0x3C, 0x00, + 0xF0, 0x03, 0xC0, 0x3F, 0xC0, 0x07, 0xE2, 0x1C, 0x3E, 0x38, 0x0E, 0x78, + 0x06, 0x70, 0x06, 0xF0, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF0, + 0x7F, 0xF0, 0x1E, 0x70, 0x1E, 0x78, 0x1E, 0x38, 0x1E, 0x1E, 0x1E, 0x07, + 0xF0, 0xFE, 0xFF, 0x78, 0x3C, 0x78, 0x3C, 0x78, 0x3C, 0x78, 0x3C, 0x78, + 0x3C, 0x78, 0x3C, 0x7F, 0xFC, 0x78, 0x3C, 0x78, 0x3C, 0x78, 0x3C, 0x78, + 0x3C, 0x78, 0x3C, 0x78, 0x3C, 0x78, 0x3C, 0xFE, 0xFF, 0xFF, 0x3C, 0x3C, + 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, + 0xFF, 0x0F, 0xF0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, + 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0xE3, 0xCE, + 0x38, 0xE3, 0x83, 0xE0, 0xFE, 0x7F, 0x3C, 0x0E, 0x1E, 0x04, 0x0F, 0x04, + 0x07, 0x84, 0x03, 0xCC, 0x01, 0xEE, 0x00, 0xFF, 0x00, 0x7F, 0xC0, 0x3C, + 0xF0, 0x1E, 0x7C, 0x0F, 0x1F, 0x07, 0x87, 0xC3, 0xC1, 0xF1, 0xE0, 0x7D, + 0xFC, 0xFF, 0xFE, 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x01, 0xE0, + 0x07, 0x80, 0x1E, 0x00, 0x78, 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x01, 0x78, + 0x0D, 0xE0, 0x67, 0x83, 0xBF, 0xFE, 0xFC, 0x01, 0xF3, 0xC0, 0x3E, 0x3E, + 0x03, 0xE2, 0xE0, 0x5E, 0x2F, 0x05, 0xE2, 0xF0, 0x5E, 0x27, 0x09, 0xE2, + 0x78, 0x9E, 0x23, 0x91, 0xE2, 0x3D, 0x1E, 0x23, 0xF1, 0xE2, 0x1E, 0x1E, + 0x21, 0xE1, 0xE2, 0x0C, 0x1E, 0x20, 0xC1, 0xEF, 0x88, 0x3F, 0xF8, 0x1E, + 0xF8, 0x18, 0xF8, 0x11, 0xF8, 0x22, 0xF8, 0x45, 0xF0, 0x89, 0xF1, 0x11, + 0xF2, 0x21, 0xF4, 0x41, 0xF8, 0x81, 0xF1, 0x01, 0xE2, 0x03, 0xC4, 0x03, + 0x8C, 0x03, 0x7C, 0x02, 0x07, 0xF0, 0x0F, 0x1E, 0x0E, 0x03, 0x8F, 0x01, + 0xE7, 0x00, 0x77, 0x80, 0x3F, 0xC0, 0x1F, 0xE0, 0x0F, 0xF0, 0x07, 0xF8, + 0x03, 0xFC, 0x01, 0xEE, 0x00, 0xE7, 0x80, 0xF1, 0xC0, 0x70, 0x70, 0x70, + 0x0F, 0xE0, 0xFF, 0x87, 0x9E, 0x78, 0xF7, 0x8F, 0x78, 0xF7, 0x8F, 0x78, + 0xF7, 0x9E, 0x7F, 0x87, 0x80, 0x78, 0x07, 0x80, 0x78, 0x07, 0x80, 0x78, + 0x0F, 0xE0, 0x07, 0xF0, 0x0F, 0x1E, 0x0E, 0x07, 0x8F, 0x01, 0xE7, 0x00, + 0xF7, 0x80, 0x3F, 0xC0, 0x1F, 0xE0, 0x0F, 0xF0, 0x07, 0xF8, 0x03, 0xFC, + 0x01, 0xEE, 0x00, 0xE7, 0x00, 0xF1, 0xC0, 0x70, 0x70, 0x70, 0x1C, 0xF0, + 0x03, 0xE0, 0x01, 0xF8, 0x00, 0x3E, 0x00, 0x07, 0xE0, 0xFF, 0xE0, 0x3C, + 0x78, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x38, 0x3C, + 0x70, 0x3F, 0xC0, 0x3D, 0xE0, 0x3C, 0xF0, 0x3C, 0xF8, 0x3C, 0x78, 0x3C, + 0x3C, 0x3C, 0x3E, 0xFF, 0x1F, 0x1F, 0x27, 0x0E, 0x60, 0x6E, 0x06, 0xF0, + 0x2F, 0x80, 0x7F, 0x07, 0xFC, 0x1F, 0xE0, 0x7E, 0x01, 0xF8, 0x07, 0xC0, + 0x7C, 0x06, 0xF0, 0xC9, 0xF8, 0xFF, 0xFF, 0xC7, 0x9F, 0x0F, 0x1C, 0x1E, + 0x10, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, + 0x0F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x07, 0xF8, 0xFE, + 0x1E, 0xF0, 0x09, 0xE0, 0x13, 0xC0, 0x27, 0x80, 0x4F, 0x00, 0x9E, 0x01, + 0x3C, 0x02, 0x78, 0x04, 0xF0, 0x09, 0xE0, 0x13, 0xC0, 0x27, 0x80, 0x47, + 0x81, 0x07, 0x84, 0x07, 0xF0, 0xFF, 0x0F, 0x9E, 0x03, 0x0F, 0x00, 0x83, + 0xC0, 0x81, 0xE0, 0x40, 0xF8, 0x60, 0x3C, 0x20, 0x1E, 0x10, 0x07, 0x90, + 0x03, 0xC8, 0x00, 0xF4, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x0E, 0x00, 0x07, + 0x00, 0x01, 0x80, 0x00, 0x80, 0x00, 0xFE, 0x7F, 0x9E, 0xF8, 0x3C, 0x08, + 0xF0, 0x78, 0x31, 0xE0, 0xF0, 0x41, 0xE0, 0xF0, 0x83, 0xC3, 0xE3, 0x07, + 0x85, 0xC4, 0x07, 0x93, 0xC8, 0x0F, 0x27, 0xB0, 0x0E, 0x47, 0x40, 0x1F, + 0x0F, 0x80, 0x3E, 0x1F, 0x00, 0x38, 0x1C, 0x00, 0x70, 0x38, 0x00, 0xE0, + 0x30, 0x00, 0x80, 0x40, 0xFF, 0x9F, 0x9F, 0x07, 0x07, 0x83, 0x03, 0xE3, + 0x00, 0xF9, 0x00, 0x3D, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xE0, 0x00, + 0xF8, 0x00, 0xBE, 0x00, 0x8F, 0x00, 0x83, 0xC0, 0xC1, 0xF0, 0xE0, 0xFD, + 0xF8, 0xFF, 0xFF, 0x1F, 0x7C, 0x06, 0x3C, 0x04, 0x3E, 0x0C, 0x1E, 0x08, + 0x0F, 0x10, 0x0F, 0x30, 0x07, 0xA0, 0x07, 0xC0, 0x03, 0xC0, 0x03, 0xC0, + 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x0F, 0xF0, 0x7F, 0xFC, + 0xE0, 0xF1, 0x83, 0xE2, 0x07, 0x84, 0x1E, 0x00, 0x7C, 0x00, 0xF0, 0x03, + 0xC0, 0x0F, 0x80, 0x1E, 0x00, 0x7C, 0x08, 0xF0, 0x13, 0xC0, 0x6F, 0x81, + 0x9E, 0x07, 0x7F, 0xFE, 0xFF, 0x39, 0xCE, 0x73, 0x9C, 0xE7, 0x39, 0xCE, + 0x73, 0x9C, 0xE7, 0x39, 0xF0, 0xC0, 0x60, 0x60, 0x60, 0x30, 0x30, 0x30, + 0x18, 0x18, 0x18, 0x0C, 0x0C, 0x0C, 0x06, 0x06, 0x06, 0x03, 0xF9, 0xCE, + 0x73, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x9C, 0xE7, 0x39, 0xCF, 0xF0, 0x0C, + 0x07, 0x81, 0xE0, 0xCC, 0x33, 0x18, 0x66, 0x1B, 0x87, 0xC0, 0xC0, 0xFF, + 0xF0, 0xC7, 0x1C, 0x30, 0x1F, 0x0E, 0x71, 0xCF, 0x39, 0xE0, 0x3C, 0x1F, + 0x8E, 0xF3, 0x9E, 0xF3, 0xDE, 0x79, 0xFF, 0x80, 0xF8, 0x07, 0x80, 0x78, + 0x07, 0x80, 0x78, 0x07, 0xB8, 0x7D, 0xE7, 0x8E, 0x78, 0xF7, 0x8F, 0x78, + 0xF7, 0x8F, 0x78, 0xF7, 0x8E, 0x79, 0xC4, 0x78, 0x1F, 0x1D, 0xDC, 0xFE, + 0x7F, 0x07, 0x83, 0xC1, 0xE0, 0x78, 0x3C, 0x47, 0xC0, 0x03, 0xE0, 0x1E, + 0x01, 0xE0, 0x1E, 0x01, 0xE1, 0xDE, 0x7B, 0xE7, 0x1E, 0xF1, 0xEF, 0x1E, + 0xF1, 0xEF, 0x1E, 0xF1, 0xE7, 0x1E, 0x7B, 0xE1, 0xDF, 0x1F, 0x0C, 0x67, + 0x1B, 0xC7, 0xFF, 0xFC, 0x0F, 0x03, 0xC0, 0x78, 0x4E, 0x21, 0xF0, 0x1E, + 0x3B, 0x7B, 0x78, 0x78, 0xFC, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0x78, 0x78, 0xFC, 0x3E, 0x0E, 0x7F, 0xCE, 0x79, 0xEF, 0x3C, 0xE7, 0x0F, + 0xC1, 0x00, 0x60, 0x1C, 0x03, 0xFE, 0x7F, 0xE3, 0xFF, 0x80, 0xF0, 0x33, + 0xFC, 0xF8, 0x07, 0x80, 0x78, 0x07, 0x80, 0x78, 0x07, 0xB8, 0x7D, 0xE7, + 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xEF, + 0xFF, 0x31, 0xE7, 0x8C, 0x03, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, + 0xBF, 0x06, 0x0F, 0x0F, 0x06, 0x00, 0x1F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0xCF, 0xCE, 0x7C, 0xF8, 0x03, + 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0xF9, 0xE1, 0x8F, 0x10, 0x79, + 0x03, 0xD8, 0x1F, 0xE0, 0xF7, 0x87, 0x9E, 0x3C, 0x71, 0xE3, 0xDF, 0xBF, + 0xF9, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0xBF, + 0xFB, 0xCF, 0x0F, 0xBE, 0x79, 0xE7, 0x8F, 0x3C, 0xF1, 0xE7, 0x9E, 0x3C, + 0xF3, 0xC7, 0x9E, 0x78, 0xF3, 0xCF, 0x1E, 0x79, 0xE3, 0xCF, 0x3C, 0x7B, + 0xFF, 0xDF, 0x80, 0xFB, 0x87, 0xDE, 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, + 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0xFF, 0xF0, 0x1F, 0x07, 0x71, 0xC7, + 0x78, 0xFF, 0x1F, 0xE3, 0xFC, 0x7F, 0x8F, 0x71, 0xC7, 0x70, 0x7C, 0x00, + 0xFB, 0x87, 0xDE, 0x78, 0xE7, 0x8F, 0x78, 0xF7, 0x8F, 0x78, 0xF7, 0x8F, + 0x78, 0xE7, 0x9E, 0x7F, 0x87, 0x80, 0x78, 0x07, 0x80, 0x78, 0x0F, 0xC0, + 0x1E, 0x23, 0x9E, 0x71, 0xEF, 0x1E, 0xF1, 0xEF, 0x1E, 0xF1, 0xEF, 0x1E, + 0x71, 0xE7, 0x9E, 0x1F, 0xE0, 0x1E, 0x01, 0xE0, 0x1E, 0x01, 0xE0, 0x3F, + 0xF9, 0xDF, 0xF7, 0xDD, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, + 0x0F, 0xC0, 0x3D, 0x43, 0xC3, 0xE0, 0xFC, 0x7E, 0x1F, 0x87, 0x83, 0xC2, + 0xBC, 0x08, 0x18, 0x38, 0x78, 0xFC, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0x78, 0x78, 0x79, 0x3E, 0xFB, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, + 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x3F, 0xF0, 0xFC, 0xEF, 0x08, + 0xE1, 0x1E, 0x41, 0xC8, 0x3D, 0x03, 0xC0, 0x78, 0x0E, 0x00, 0xC0, 0x10, + 0x00, 0xFD, 0xF7, 0xBC, 0x71, 0x9E, 0x38, 0x87, 0x1E, 0x43, 0xCF, 0x40, + 0xEB, 0xA0, 0x7C, 0xF0, 0x1C, 0x70, 0x0E, 0x38, 0x06, 0x08, 0x01, 0x04, + 0x00, 0xFC, 0xF7, 0x84, 0x3C, 0x81, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x80, + 0xBC, 0x13, 0xC2, 0x1E, 0xFB, 0xF0, 0xFC, 0xEF, 0x08, 0xE1, 0x1E, 0x43, + 0xC8, 0x3A, 0x07, 0xC0, 0x78, 0x0E, 0x01, 0xC0, 0x18, 0x02, 0x00, 0x41, + 0xC8, 0x3A, 0x03, 0x80, 0xFF, 0xB1, 0xE8, 0x70, 0x3C, 0x1E, 0x07, 0x83, + 0xC1, 0xE0, 0x78, 0xBC, 0x2F, 0xF8, 0x07, 0x0E, 0x1C, 0x1C, 0x1C, 0x1C, + 0x1C, 0x1C, 0x1C, 0x1C, 0xE0, 0x18, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, + 0x1C, 0x1E, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xE0, 0x70, 0x38, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x18, 0x07, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x38, 0x38, 0x70, 0xE0, 0x70, 0x1F, 0x8B, 0x3F, 0x01, 0xC0}; + +const GFXglyph FreeSerifBold12pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 6, 0, 1}, // 0x20 ' ' + {0, 4, 16, 8, 2, -15}, // 0x21 '!' + {8, 9, 7, 13, 2, -15}, // 0x22 '"' + {16, 12, 16, 12, 0, -15}, // 0x23 '#' + {40, 11, 20, 12, 1, -17}, // 0x24 '$' + {68, 18, 16, 24, 3, -15}, // 0x25 '%' + {104, 18, 16, 20, 1, -15}, // 0x26 '&' + {140, 3, 7, 7, 2, -15}, // 0x27 ''' + {143, 6, 21, 8, 1, -16}, // 0x28 '(' + {159, 6, 21, 8, 1, -16}, // 0x29 ')' + {175, 9, 10, 12, 2, -15}, // 0x2A '*' + {187, 12, 12, 16, 2, -11}, // 0x2B '+' + {205, 4, 8, 6, 1, -3}, // 0x2C ',' + {209, 6, 3, 8, 1, -6}, // 0x2D '-' + {212, 4, 4, 6, 1, -3}, // 0x2E '.' + {214, 8, 17, 7, -1, -15}, // 0x2F '/' + {231, 11, 16, 12, 1, -15}, // 0x30 '0' + {253, 9, 16, 12, 1, -15}, // 0x31 '1' + {271, 12, 16, 12, 0, -15}, // 0x32 '2' + {295, 11, 16, 12, 1, -15}, // 0x33 '3' + {317, 10, 16, 12, 1, -15}, // 0x34 '4' + {337, 11, 16, 12, 1, -15}, // 0x35 '5' + {359, 11, 16, 12, 1, -15}, // 0x36 '6' + {381, 11, 16, 12, 0, -15}, // 0x37 '7' + {403, 11, 16, 12, 1, -15}, // 0x38 '8' + {425, 11, 16, 12, 1, -15}, // 0x39 '9' + {447, 4, 11, 8, 2, -10}, // 0x3A ':' + {453, 4, 15, 8, 2, -10}, // 0x3B ';' + {461, 14, 14, 16, 1, -12}, // 0x3C '<' + {486, 14, 8, 16, 1, -9}, // 0x3D '=' + {500, 14, 14, 16, 1, -12}, // 0x3E '>' + {525, 10, 16, 12, 1, -15}, // 0x3F '?' + {545, 16, 16, 22, 3, -15}, // 0x40 '@' + {577, 17, 16, 17, 0, -15}, // 0x41 'A' + {611, 14, 16, 16, 1, -15}, // 0x42 'B' + {639, 15, 16, 17, 1, -15}, // 0x43 'C' + {669, 17, 16, 18, 0, -15}, // 0x44 'D' + {703, 15, 16, 16, 1, -15}, // 0x45 'E' + {733, 14, 16, 15, 1, -15}, // 0x46 'F' + {761, 16, 16, 19, 1, -15}, // 0x47 'G' + {793, 16, 16, 19, 2, -15}, // 0x48 'H' + {825, 8, 16, 9, 1, -15}, // 0x49 'I' + {841, 12, 18, 12, 0, -15}, // 0x4A 'J' + {868, 17, 16, 19, 2, -15}, // 0x4B 'K' + {902, 14, 16, 16, 2, -15}, // 0x4C 'L' + {930, 20, 16, 23, 1, -15}, // 0x4D 'M' + {970, 15, 16, 17, 1, -15}, // 0x4E 'N' + {1000, 17, 16, 19, 1, -15}, // 0x4F 'O' + {1034, 12, 16, 15, 2, -15}, // 0x50 'P' + {1058, 17, 20, 19, 1, -15}, // 0x51 'Q' + {1101, 16, 16, 17, 1, -15}, // 0x52 'R' + {1133, 12, 16, 14, 1, -15}, // 0x53 'S' + {1157, 15, 16, 15, 0, -15}, // 0x54 'T' + {1187, 15, 16, 17, 1, -15}, // 0x55 'U' + {1217, 17, 17, 17, 0, -15}, // 0x56 'V' + {1254, 23, 16, 24, 0, -15}, // 0x57 'W' + {1300, 17, 16, 17, 0, -15}, // 0x58 'X' + {1334, 16, 16, 17, 1, -15}, // 0x59 'Y' + {1366, 15, 16, 16, 0, -15}, // 0x5A 'Z' + {1396, 5, 20, 8, 2, -15}, // 0x5B '[' + {1409, 8, 17, 7, -1, -15}, // 0x5C '\' + {1426, 5, 20, 8, 2, -15}, // 0x5D ']' + {1439, 10, 9, 14, 2, -15}, // 0x5E '^' + {1451, 12, 1, 12, 0, 4}, // 0x5F '_' + {1453, 5, 4, 8, 0, -16}, // 0x60 '`' + {1456, 11, 11, 12, 1, -10}, // 0x61 'a' + {1472, 12, 16, 13, 1, -15}, // 0x62 'b' + {1496, 9, 11, 10, 1, -10}, // 0x63 'c' + {1509, 12, 16, 13, 1, -15}, // 0x64 'd' + {1533, 10, 11, 11, 1, -10}, // 0x65 'e' + {1547, 8, 16, 9, 1, -15}, // 0x66 'f' + {1563, 11, 16, 12, 1, -10}, // 0x67 'g' + {1585, 12, 16, 13, 1, -15}, // 0x68 'h' + {1609, 6, 16, 7, 1, -15}, // 0x69 'i' + {1621, 8, 21, 10, 0, -15}, // 0x6A 'j' + {1642, 13, 16, 13, 1, -15}, // 0x6B 'k' + {1668, 6, 16, 7, 1, -15}, // 0x6C 'l' + {1680, 19, 11, 20, 1, -10}, // 0x6D 'm' + {1707, 12, 11, 13, 1, -10}, // 0x6E 'n' + {1724, 11, 11, 12, 1, -10}, // 0x6F 'o' + {1740, 12, 16, 13, 1, -10}, // 0x70 'p' + {1764, 12, 16, 13, 1, -10}, // 0x71 'q' + {1788, 10, 11, 10, 1, -10}, // 0x72 'r' + {1802, 8, 11, 10, 1, -10}, // 0x73 's' + {1813, 8, 15, 8, 1, -14}, // 0x74 't' + {1828, 12, 11, 14, 1, -10}, // 0x75 'u' + {1845, 11, 11, 12, 0, -10}, // 0x76 'v' + {1861, 17, 11, 17, 0, -10}, // 0x77 'w' + {1885, 12, 11, 12, 0, -10}, // 0x78 'x' + {1902, 11, 16, 12, 0, -10}, // 0x79 'y' + {1924, 10, 11, 11, 1, -10}, // 0x7A 'z' + {1938, 8, 21, 9, 0, -16}, // 0x7B '{' + {1959, 2, 17, 5, 2, -15}, // 0x7C '|' + {1964, 8, 21, 9, 2, -16}, // 0x7D '}' + {1985, 11, 4, 12, 1, -7}}; // 0x7E '~' + +const GFXfont FreeSerifBold12pt7b PROGMEM = { + (uint8_t *)FreeSerifBold12pt7bBitmaps, + (GFXglyph *)FreeSerifBold12pt7bGlyphs, 0x20, 0x7E, 29}; + +// Approx. 2663 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBold18pt7b.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBold18pt7b.h new file mode 100644 index 0000000..faecf4f --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBold18pt7b.h @@ -0,0 +1,464 @@ +#pragma once +#include + +const uint8_t FreeSerifBold18pt7bBitmaps[] PROGMEM = { + 0x7B, 0xEF, 0xFF, 0xFF, 0xF7, 0x9E, 0x71, 0xC7, 0x0C, 0x20, 0x82, 0x00, + 0x00, 0x07, 0x3E, 0xFF, 0xFF, 0xDC, 0x60, 0x37, 0x83, 0xFC, 0x1F, 0xE0, + 0xFF, 0x07, 0xB8, 0x3D, 0xC0, 0xCC, 0x06, 0x20, 0x31, 0x01, 0x80, 0x03, + 0x8E, 0x00, 0xC3, 0x80, 0x30, 0xE0, 0x1C, 0x38, 0x07, 0x0E, 0x01, 0xC3, + 0x87, 0xFF, 0xFD, 0xFF, 0xFF, 0x7F, 0xFF, 0xC1, 0x87, 0x00, 0xE1, 0xC0, + 0x38, 0x70, 0x0E, 0x1C, 0x03, 0x86, 0x0F, 0xFF, 0xF3, 0xFF, 0xFC, 0xFF, + 0xFF, 0x07, 0x0E, 0x01, 0xC3, 0x80, 0x70, 0xE0, 0x1C, 0x30, 0x07, 0x0C, + 0x01, 0x87, 0x00, 0x61, 0xC0, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0xFF, + 0x03, 0x27, 0x8C, 0x47, 0x38, 0x86, 0x71, 0x0C, 0xF2, 0x09, 0xF4, 0x03, + 0xF8, 0x03, 0xF8, 0x07, 0xFC, 0x03, 0xFC, 0x03, 0xFE, 0x01, 0xFE, 0x03, + 0xFC, 0x04, 0xFC, 0x08, 0xFA, 0x10, 0xF4, 0x21, 0xEC, 0x43, 0xD8, 0x8F, + 0x3D, 0x3C, 0x3F, 0xF0, 0x1F, 0x00, 0x08, 0x00, 0x10, 0x00, 0x03, 0xC0, + 0x18, 0x01, 0xFE, 0x0F, 0x00, 0x7C, 0xFF, 0xC0, 0x1F, 0x0F, 0x90, 0x07, + 0xC1, 0x06, 0x00, 0xF0, 0x21, 0x80, 0x3E, 0x04, 0x30, 0x07, 0x81, 0x8C, + 0x00, 0xF0, 0x21, 0x80, 0x1E, 0x0C, 0x60, 0x03, 0xC1, 0x18, 0x1E, 0x3C, + 0xE3, 0x0F, 0xE7, 0xF8, 0xC3, 0xE6, 0x3C, 0x18, 0xF8, 0x40, 0x06, 0x3E, + 0x08, 0x01, 0x87, 0x81, 0x00, 0x31, 0xF0, 0x20, 0x0C, 0x3E, 0x04, 0x01, + 0x87, 0x81, 0x00, 0x60, 0xF0, 0x60, 0x18, 0x1E, 0x08, 0x03, 0x03, 0xC7, + 0x00, 0xC0, 0x3F, 0xC0, 0x18, 0x03, 0xE0, 0x00, 0x7E, 0x00, 0x00, 0x7F, + 0xE0, 0x00, 0x38, 0xF8, 0x00, 0x1E, 0x1F, 0x00, 0x07, 0x83, 0xC0, 0x01, + 0xF0, 0xF0, 0x00, 0x7C, 0x38, 0x00, 0x1F, 0x9C, 0x00, 0x03, 0xFC, 0x00, + 0x00, 0xFE, 0x0F, 0xF0, 0x3F, 0x80, 0xF0, 0x1F, 0xF0, 0x18, 0x1C, 0xFE, + 0x0C, 0x0E, 0x1F, 0xC3, 0x07, 0x87, 0xF1, 0x81, 0xE0, 0xFE, 0x40, 0xF8, + 0x1F, 0xF0, 0x3F, 0x07, 0xF8, 0x0F, 0xC0, 0xFE, 0x03, 0xF8, 0x1F, 0xC0, + 0xFE, 0x07, 0xF8, 0x9F, 0xE3, 0xFF, 0xE7, 0xFF, 0x9F, 0xF0, 0xFF, 0xC3, + 0xF8, 0x0F, 0x80, 0x3C, 0x00, 0x6F, 0xFF, 0xFF, 0x66, 0x66, 0x00, 0x81, + 0x81, 0x81, 0x81, 0x80, 0xC0, 0xE0, 0x70, 0x70, 0x38, 0x3C, 0x1E, 0x0F, + 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x0E, 0x07, 0x03, 0x80, 0xE0, + 0x70, 0x18, 0x06, 0x01, 0x00, 0x40, 0x10, 0x04, 0x80, 0x30, 0x0C, 0x03, + 0x00, 0xC0, 0x60, 0x38, 0x1C, 0x07, 0x03, 0x81, 0xC0, 0xF0, 0x78, 0x3C, + 0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xE0, 0x70, 0x38, 0x38, 0x1C, 0x0C, + 0x0C, 0x06, 0x04, 0x04, 0x04, 0x00, 0x03, 0x00, 0x1E, 0x00, 0x78, 0x1D, + 0xE6, 0xFB, 0x3D, 0xED, 0xF3, 0xFF, 0x01, 0xC0, 0x7F, 0xF3, 0xED, 0xFF, + 0x33, 0xD9, 0xE6, 0x07, 0x80, 0x1E, 0x00, 0x30, 0x00, 0x00, 0xE0, 0x00, + 0x1C, 0x00, 0x03, 0x80, 0x00, 0x70, 0x00, 0x0E, 0x00, 0x01, 0xC0, 0x00, + 0x38, 0x00, 0x07, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, + 0x70, 0x00, 0x0E, 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x07, 0x00, 0x00, + 0xE0, 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0x73, 0xEF, 0xFF, 0xFD, 0xF0, + 0xC2, 0x18, 0xC6, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0x7B, 0xFF, 0xFF, 0xFD, + 0xE0, 0x00, 0xE0, 0x3C, 0x07, 0x00, 0xE0, 0x1C, 0x07, 0x00, 0xE0, 0x1C, + 0x07, 0x00, 0xE0, 0x1C, 0x07, 0x00, 0xE0, 0x1C, 0x07, 0x00, 0xE0, 0x1C, + 0x07, 0x00, 0xE0, 0x1C, 0x07, 0x00, 0xE0, 0x1C, 0x07, 0x00, 0xE0, 0x00, + 0x03, 0xC0, 0x0E, 0x70, 0x1E, 0x78, 0x3C, 0x3C, 0x3C, 0x3C, 0x7C, 0x3E, + 0x7C, 0x3E, 0x7C, 0x3E, 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, + 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3E, 0x7C, 0x3E, + 0x7C, 0x3E, 0x3C, 0x3C, 0x3C, 0x3C, 0x1E, 0x78, 0x0E, 0x70, 0x03, 0xC0, + 0x00, 0xC0, 0x3C, 0x0F, 0xC3, 0xFC, 0x4F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC, + 0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC, + 0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC, 0x1F, 0xEF, 0xFF, + 0x03, 0xE0, 0x0F, 0xF8, 0x1F, 0xFC, 0x3F, 0xFC, 0x30, 0xFE, 0x60, 0x7E, + 0x40, 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x78, + 0x00, 0x70, 0x00, 0xE0, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, 0x06, 0x01, + 0x0C, 0x03, 0x1F, 0xFF, 0x1F, 0xFF, 0x3F, 0xFE, 0x7F, 0xFE, 0xFF, 0xFE, + 0x03, 0xF0, 0x0F, 0xF8, 0x3F, 0xFC, 0x21, 0xFE, 0x40, 0xFE, 0x00, 0x7E, + 0x00, 0x7E, 0x00, 0x7C, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xFC, 0x03, 0xFE, + 0x00, 0x7E, 0x00, 0x3F, 0x00, 0x1F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, + 0x00, 0x0E, 0x70, 0x0E, 0xFC, 0x1C, 0xFE, 0x38, 0x7F, 0xE0, 0x3F, 0x80, + 0x00, 0x38, 0x00, 0xF0, 0x03, 0xE0, 0x07, 0xC0, 0x1F, 0x80, 0x5F, 0x00, + 0xBE, 0x02, 0x7C, 0x08, 0xF8, 0x31, 0xF0, 0x43, 0xE1, 0x07, 0xC4, 0x0F, + 0x88, 0x1F, 0x20, 0x3E, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, + 0x07, 0xC0, 0x0F, 0x80, 0x1F, 0x00, 0x3E, 0x00, 0x7C, 0x0F, 0xFE, 0x1F, + 0xF8, 0x7F, 0xF0, 0xFF, 0xE1, 0x80, 0x03, 0x00, 0x0C, 0x00, 0x18, 0x00, + 0x3F, 0x80, 0xFF, 0xC1, 0xFF, 0xC3, 0xFF, 0xC3, 0xFF, 0x80, 0x3F, 0x80, + 0x0F, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x18, 0x00, 0x37, 0x80, 0x4F, 0x81, + 0x9F, 0xC6, 0x3F, 0xF8, 0x1F, 0x80, 0x00, 0x07, 0x00, 0x7C, 0x01, 0xF0, + 0x03, 0xC0, 0x0F, 0x80, 0x1F, 0x00, 0x1F, 0x00, 0x3E, 0x00, 0x7E, 0x00, + 0x7F, 0xF0, 0x7F, 0xFC, 0xFC, 0x7E, 0xFC, 0x7E, 0xFC, 0x3F, 0xFC, 0x3F, + 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, 0x7C, 0x3F, 0x7C, 0x3E, 0x3C, 0x3E, + 0x3E, 0x3C, 0x1E, 0x78, 0x07, 0xE0, 0x7F, 0xFF, 0x7F, 0xFE, 0x7F, 0xFE, + 0xFF, 0xFE, 0xFF, 0xFC, 0xC0, 0x1C, 0x80, 0x18, 0x80, 0x38, 0x00, 0x38, + 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, + 0x01, 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x03, 0x80, 0x03, 0x80, 0x07, 0x80, + 0x07, 0x00, 0x07, 0x00, 0x0F, 0x00, 0x0F, 0xE0, 0x38, 0x78, 0x70, 0x3C, + 0xF0, 0x1E, 0xF0, 0x1E, 0xF8, 0x1E, 0xF8, 0x1E, 0xFE, 0x3C, 0x7F, 0xB0, + 0x7F, 0xE0, 0x3F, 0xF0, 0x0F, 0xF8, 0x1F, 0xFC, 0x39, 0xFE, 0x70, 0xFF, + 0xF0, 0x3F, 0xF0, 0x3F, 0xF0, 0x1F, 0xF0, 0x1F, 0xF0, 0x1E, 0x78, 0x3E, + 0x7C, 0x7C, 0x3F, 0xF8, 0x0F, 0xE0, 0x07, 0xE0, 0x1E, 0x78, 0x3C, 0x7C, + 0x7C, 0x3C, 0x7C, 0x3E, 0xFC, 0x3E, 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, + 0xFC, 0x3F, 0xFC, 0x3F, 0x7E, 0x3F, 0x7E, 0x3F, 0x3F, 0xFE, 0x0F, 0xFE, + 0x00, 0x7E, 0x00, 0x7C, 0x00, 0xF8, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xC0, + 0x0F, 0x80, 0x3E, 0x00, 0xE0, 0x00, 0x7B, 0xFF, 0xFF, 0xFD, 0xE0, 0x00, + 0x00, 0x07, 0xBF, 0xFF, 0xFF, 0xDE, 0x39, 0xFB, 0xF7, 0xEF, 0xC7, 0x00, + 0x00, 0x00, 0x01, 0xE7, 0xEF, 0xFF, 0xFF, 0xBF, 0x06, 0x08, 0x30, 0xC2, + 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x0F, 0x80, 0x07, 0xF0, + 0x03, 0xFC, 0x01, 0xFE, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x3F, 0x80, 0x1F, + 0xC0, 0x03, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0xFE, 0x00, 0x07, 0xF0, 0x00, + 0x3F, 0x80, 0x01, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0x7C, 0x00, 0x01, 0x80, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x18, 0x00, 0x03, + 0xE0, 0x00, 0x7F, 0x00, 0x07, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0xFE, 0x00, + 0x07, 0xF0, 0x00, 0x3F, 0x80, 0x01, 0xFC, 0x00, 0x3F, 0x80, 0x1F, 0xC0, + 0x0F, 0xE0, 0x07, 0xF0, 0x07, 0xF8, 0x03, 0xFC, 0x00, 0xFE, 0x00, 0x1F, + 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xC0, 0xFF, 0xC7, 0x1F, + 0xB8, 0x3E, 0xF0, 0xFF, 0xC3, 0xFF, 0x0F, 0xD8, 0x3F, 0x00, 0xF8, 0x07, + 0xC0, 0x1E, 0x00, 0x60, 0x03, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x70, 0x03, 0xE0, 0x1F, 0x80, 0x7E, 0x01, 0xF8, 0x01, + 0xC0, 0x00, 0x7F, 0x00, 0x01, 0xFF, 0xE0, 0x07, 0xC0, 0xF0, 0x0F, 0x00, + 0x38, 0x1E, 0x00, 0x0C, 0x3C, 0x07, 0x06, 0x38, 0x1F, 0x72, 0x78, 0x3C, + 0xF3, 0x78, 0x78, 0xE1, 0xF0, 0x70, 0xE1, 0xF0, 0xF0, 0xE1, 0xF0, 0xE0, + 0xC1, 0xF1, 0xE1, 0xC1, 0xF1, 0xC1, 0xC1, 0xF1, 0xC3, 0x82, 0xF1, 0xC3, + 0x86, 0x71, 0xC7, 0x8C, 0x79, 0xFB, 0xF8, 0x78, 0xF1, 0xF0, 0x3C, 0x00, + 0x00, 0x1E, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x07, 0xC0, 0x78, 0x03, 0xFF, + 0xE0, 0x00, 0x7F, 0x80, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x78, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xFE, + 0x00, 0x00, 0xFE, 0x00, 0x01, 0xBF, 0x00, 0x01, 0xBF, 0x00, 0x01, 0x1F, + 0x00, 0x03, 0x1F, 0x80, 0x02, 0x1F, 0x80, 0x06, 0x0F, 0xC0, 0x06, 0x0F, + 0xC0, 0x04, 0x07, 0xE0, 0x0F, 0xFF, 0xE0, 0x0F, 0xFF, 0xE0, 0x18, 0x03, + 0xF0, 0x18, 0x03, 0xF0, 0x30, 0x01, 0xF8, 0x30, 0x01, 0xF8, 0x70, 0x01, + 0xFC, 0xFE, 0x0F, 0xFF, 0xFF, 0xFE, 0x07, 0xFF, 0xFE, 0x0F, 0xE1, 0xF8, + 0x3F, 0x07, 0xC1, 0xF8, 0x3F, 0x0F, 0xC1, 0xF8, 0x7E, 0x0F, 0xC3, 0xF0, + 0x7E, 0x1F, 0x87, 0xE0, 0xFC, 0x7C, 0x07, 0xFF, 0x00, 0x3F, 0xFF, 0x01, + 0xF8, 0xFE, 0x0F, 0xC1, 0xF8, 0x7E, 0x0F, 0xC3, 0xF0, 0x3F, 0x1F, 0x81, + 0xF8, 0xFC, 0x0F, 0xC7, 0xE0, 0x7E, 0x3F, 0x03, 0xF1, 0xF8, 0x3F, 0x0F, + 0xC3, 0xF0, 0xFF, 0xFF, 0x1F, 0xFF, 0xC0, 0x00, 0x7E, 0x04, 0x07, 0xFF, + 0x18, 0x1F, 0x07, 0xF0, 0x7C, 0x03, 0xE1, 0xF0, 0x03, 0xC7, 0xC0, 0x03, + 0x9F, 0x80, 0x03, 0x3F, 0x00, 0x06, 0x7C, 0x00, 0x05, 0xF8, 0x00, 0x03, + 0xF0, 0x00, 0x07, 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0x1F, 0x80, 0x00, 0x3F, + 0x00, 0x00, 0x7E, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x01, 0xF8, + 0x00, 0x01, 0xF0, 0x00, 0x23, 0xF0, 0x00, 0xC3, 0xF0, 0x07, 0x03, 0xF0, + 0x3C, 0x01, 0xFF, 0xE0, 0x00, 0xFF, 0x00, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, + 0x00, 0x7E, 0x1F, 0x80, 0xFC, 0x1F, 0x81, 0xF8, 0x1F, 0x83, 0xF0, 0x1F, + 0x07, 0xE0, 0x3F, 0x0F, 0xC0, 0x7E, 0x1F, 0x80, 0x7E, 0x3F, 0x00, 0xFC, + 0x7E, 0x01, 0xF8, 0xFC, 0x03, 0xF1, 0xF8, 0x07, 0xE3, 0xF0, 0x0F, 0xC7, + 0xE0, 0x1F, 0x8F, 0xC0, 0x3F, 0x1F, 0x80, 0x7C, 0x3F, 0x01, 0xF8, 0x7E, + 0x03, 0xE0, 0xFC, 0x0F, 0x81, 0xF8, 0x1F, 0x03, 0xF0, 0xFC, 0x0F, 0xFF, + 0xE0, 0x7F, 0xFF, 0x00, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0x0F, 0xC0, 0x78, + 0x7E, 0x01, 0xC3, 0xF0, 0x06, 0x1F, 0x80, 0x10, 0xFC, 0x10, 0x87, 0xE0, + 0x80, 0x3F, 0x0C, 0x01, 0xF8, 0xE0, 0x0F, 0xFF, 0x00, 0x7F, 0xF8, 0x03, + 0xF1, 0xC0, 0x1F, 0x86, 0x00, 0xFC, 0x10, 0x07, 0xE0, 0x80, 0x3F, 0x00, + 0x09, 0xF8, 0x00, 0xCF, 0xC0, 0x0C, 0x7E, 0x00, 0x63, 0xF0, 0x0F, 0x1F, + 0x81, 0xFB, 0xFF, 0xFF, 0xDF, 0xFF, 0xFC, 0xFF, 0xFF, 0xEF, 0xFF, 0xFC, + 0xFC, 0x0F, 0x9F, 0x80, 0x73, 0xF0, 0x06, 0x7E, 0x00, 0x4F, 0xC1, 0x09, + 0xF8, 0x20, 0x3F, 0x0C, 0x07, 0xE3, 0x80, 0xFF, 0xF0, 0x1F, 0xFE, 0x03, + 0xF1, 0xC0, 0x7E, 0x18, 0x0F, 0xC1, 0x01, 0xF8, 0x20, 0x3F, 0x00, 0x07, + 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x1F, + 0xE0, 0x07, 0xFF, 0x00, 0x00, 0x7E, 0x02, 0x01, 0xFF, 0xE3, 0x01, 0xF0, + 0x3F, 0x81, 0xF0, 0x07, 0xC1, 0xF0, 0x01, 0xE1, 0xF0, 0x00, 0x71, 0xF8, + 0x00, 0x18, 0xFC, 0x00, 0x0C, 0x7C, 0x00, 0x02, 0x7E, 0x00, 0x00, 0x3F, + 0x00, 0x00, 0x1F, 0x80, 0x00, 0x0F, 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x03, + 0xF0, 0x0F, 0xFF, 0xF8, 0x01, 0xFE, 0x7C, 0x00, 0x7E, 0x3F, 0x00, 0x3F, + 0x1F, 0x80, 0x1F, 0x87, 0xC0, 0x0F, 0xC1, 0xF0, 0x07, 0xE0, 0xFC, 0x03, + 0xF0, 0x1F, 0x83, 0xF0, 0x07, 0xFF, 0xE0, 0x00, 0x7F, 0x80, 0x00, 0xFF, + 0xC3, 0xFF, 0x7F, 0x81, 0xFE, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, + 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, + 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, 0xFF, 0xFC, 0x3F, 0xFF, 0xFC, 0x3F, + 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, + 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, + 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x7F, 0x81, 0xFE, 0xFF, 0xC3, 0xFF, 0xFF, + 0xEF, 0xF0, 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x07, + 0xE0, 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x07, 0xE0, + 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x1F, 0xE7, 0xFF, 0x07, 0xFF, 0x01, 0xFE, + 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, + 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, + 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, + 0x70, 0xFC, 0xF8, 0xFC, 0xF8, 0xF8, 0xF0, 0xF8, 0x71, 0xF0, 0x7F, 0xE0, + 0x1F, 0x80, 0xFF, 0xC3, 0xFF, 0x3F, 0xC0, 0x3E, 0x0F, 0xC0, 0x1C, 0x07, + 0xE0, 0x18, 0x03, 0xF0, 0x18, 0x01, 0xF8, 0x18, 0x00, 0xFC, 0x18, 0x00, + 0x7E, 0x18, 0x00, 0x3F, 0x18, 0x00, 0x1F, 0x9C, 0x00, 0x0F, 0xDF, 0x00, + 0x07, 0xFF, 0xC0, 0x03, 0xFF, 0xF0, 0x01, 0xF9, 0xF8, 0x00, 0xFC, 0xFE, + 0x00, 0x7E, 0x3F, 0x80, 0x3F, 0x0F, 0xE0, 0x1F, 0x83, 0xF8, 0x0F, 0xC0, + 0xFC, 0x07, 0xE0, 0x7F, 0x03, 0xF0, 0x1F, 0xC1, 0xF8, 0x07, 0xF1, 0xFE, + 0x03, 0xFD, 0xFF, 0x8F, 0xFF, 0xFF, 0xE0, 0x03, 0xFC, 0x00, 0x0F, 0xC0, + 0x00, 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, + 0xE0, 0x00, 0x3F, 0x00, 0x01, 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0x7E, 0x00, + 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x01, 0x3F, + 0x00, 0x19, 0xF8, 0x00, 0xCF, 0xC0, 0x0C, 0x7E, 0x00, 0x63, 0xF0, 0x0F, + 0x1F, 0x81, 0xFB, 0xFF, 0xFF, 0xDF, 0xFF, 0xFE, 0xFF, 0x80, 0x03, 0xFE, + 0x7F, 0x00, 0x07, 0xF8, 0x7E, 0x00, 0x0F, 0xE0, 0xFE, 0x00, 0x3F, 0xC1, + 0x7C, 0x00, 0x5F, 0x82, 0xFC, 0x01, 0xBF, 0x05, 0xF8, 0x02, 0x7E, 0x09, + 0xF8, 0x0C, 0xFC, 0x13, 0xF0, 0x11, 0xF8, 0x23, 0xE0, 0x23, 0xF0, 0x47, + 0xE0, 0xC7, 0xE0, 0x87, 0xC1, 0x0F, 0xC1, 0x0F, 0xC6, 0x1F, 0x82, 0x0F, + 0x88, 0x3F, 0x04, 0x1F, 0xB0, 0x7E, 0x08, 0x3F, 0x60, 0xFC, 0x10, 0x3E, + 0x81, 0xF8, 0x20, 0x7F, 0x03, 0xF0, 0x40, 0x7C, 0x07, 0xE0, 0x80, 0xF8, + 0x0F, 0xC1, 0x00, 0xE0, 0x1F, 0x82, 0x01, 0xC0, 0x3F, 0x0E, 0x03, 0x80, + 0xFF, 0x7F, 0x82, 0x03, 0xFF, 0xFE, 0x00, 0xFE, 0xFE, 0x00, 0x70, 0xFE, + 0x00, 0x40, 0xFE, 0x00, 0x81, 0xFC, 0x01, 0x03, 0xFC, 0x02, 0x05, 0xFC, + 0x04, 0x09, 0xFC, 0x08, 0x11, 0xFC, 0x10, 0x23, 0xF8, 0x20, 0x43, 0xF8, + 0x40, 0x83, 0xF8, 0x81, 0x03, 0xF9, 0x02, 0x03, 0xFA, 0x04, 0x03, 0xF4, + 0x08, 0x07, 0xF8, 0x10, 0x07, 0xF0, 0x20, 0x07, 0xE0, 0x40, 0x07, 0xC0, + 0x80, 0x07, 0x81, 0x00, 0x0F, 0x02, 0x00, 0x0E, 0x0E, 0x00, 0x0C, 0x7F, + 0x00, 0x08, 0x00, 0x7F, 0x00, 0x01, 0xFF, 0xF0, 0x01, 0xF0, 0x7C, 0x01, + 0xF0, 0x1F, 0x01, 0xF0, 0x07, 0xC1, 0xF0, 0x01, 0xF1, 0xF8, 0x00, 0xFC, + 0xFC, 0x00, 0x7E, 0x7C, 0x00, 0x1F, 0x7E, 0x00, 0x0F, 0xFF, 0x00, 0x07, + 0xFF, 0x80, 0x03, 0xFF, 0xC0, 0x01, 0xFF, 0xE0, 0x00, 0xFF, 0xF0, 0x00, + 0x7F, 0xF8, 0x00, 0x3F, 0x7C, 0x00, 0x1F, 0x3E, 0x00, 0x1F, 0x9F, 0x80, + 0x0F, 0xC7, 0xC0, 0x07, 0xC1, 0xF0, 0x07, 0xC0, 0xFC, 0x07, 0xE0, 0x3F, + 0x07, 0xC0, 0x07, 0xFF, 0xC0, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0xFC, 0x0F, + 0xFF, 0xE0, 0xFC, 0x7E, 0x1F, 0x87, 0xE3, 0xF0, 0x7E, 0x7E, 0x0F, 0xCF, + 0xC1, 0xF9, 0xF8, 0x3F, 0x3F, 0x07, 0xE7, 0xE0, 0xFC, 0xFC, 0x3F, 0x1F, + 0x8F, 0xC3, 0xFF, 0xF0, 0x7F, 0xF8, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, + 0x00, 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7E, + 0x00, 0x1F, 0xE0, 0x07, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x01, 0xFF, 0xF0, + 0x01, 0xF0, 0x7C, 0x01, 0xF0, 0x1F, 0x01, 0xF0, 0x07, 0xC1, 0xF0, 0x01, + 0xF1, 0xF8, 0x00, 0xFC, 0xFC, 0x00, 0x7E, 0x7C, 0x00, 0x1F, 0x7E, 0x00, + 0x0F, 0xFF, 0x00, 0x07, 0xFF, 0x80, 0x03, 0xFF, 0xC0, 0x01, 0xFF, 0xE0, + 0x00, 0xFF, 0xF0, 0x00, 0x7F, 0xF8, 0x00, 0x3F, 0x7C, 0x00, 0x1F, 0x3E, + 0x00, 0x0F, 0x9F, 0x80, 0x0F, 0xC7, 0xC0, 0x07, 0xC1, 0xF0, 0x07, 0xC0, + 0x78, 0x03, 0xC0, 0x1E, 0x07, 0xC0, 0x03, 0xFF, 0x80, 0x00, 0x7F, 0x00, + 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFE, 0x00, 0x00, 0xFF, + 0xF8, 0x00, 0x0F, 0xE0, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0x00, 0xFC, 0x3F, + 0x01, 0xF8, 0x3F, 0x03, 0xF0, 0x3F, 0x07, 0xE0, 0x7E, 0x0F, 0xC0, 0xFC, + 0x1F, 0x81, 0xF8, 0x3F, 0x03, 0xF0, 0x7E, 0x07, 0xC0, 0xFC, 0x1F, 0x81, + 0xF8, 0x7E, 0x03, 0xFF, 0xF0, 0x07, 0xFF, 0xC0, 0x0F, 0xDF, 0xC0, 0x1F, + 0x9F, 0x80, 0x3F, 0x1F, 0x80, 0x7E, 0x3F, 0x80, 0xFC, 0x3F, 0x81, 0xF8, + 0x3F, 0x03, 0xF0, 0x7F, 0x07, 0xE0, 0x7F, 0x1F, 0xE0, 0x7F, 0x7F, 0xE0, + 0xFF, 0x07, 0xC2, 0x1F, 0xF2, 0x3C, 0x3E, 0x70, 0x0E, 0xF0, 0x06, 0xF0, + 0x06, 0xF0, 0x02, 0xF8, 0x00, 0xFE, 0x00, 0xFF, 0x80, 0x7F, 0xE0, 0x3F, + 0xF8, 0x1F, 0xFC, 0x0F, 0xFE, 0x03, 0xFE, 0x00, 0xFF, 0x00, 0x3F, 0x80, + 0x1F, 0xC0, 0x0F, 0xC0, 0x0F, 0xE0, 0x0E, 0xF0, 0x1E, 0xF8, 0x3C, 0x9F, + 0xF8, 0x87, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x7E, 0x3F, 0x83, + 0xF0, 0x7C, 0x1F, 0x81, 0xC0, 0xFC, 0x06, 0x07, 0xE0, 0x20, 0x3F, 0x00, + 0x01, 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x1F, + 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x3F, 0x00, 0x01, 0xF8, 0x00, + 0x0F, 0xC0, 0x00, 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, + 0x00, 0x0F, 0xF0, 0x01, 0xFF, 0xE0, 0xFF, 0xC1, 0xFD, 0xFE, 0x01, 0xC3, + 0xF0, 0x02, 0x0F, 0xC0, 0x08, 0x3F, 0x00, 0x20, 0xFC, 0x00, 0x83, 0xF0, + 0x02, 0x0F, 0xC0, 0x08, 0x3F, 0x00, 0x20, 0xFC, 0x00, 0x83, 0xF0, 0x02, + 0x0F, 0xC0, 0x08, 0x3F, 0x00, 0x20, 0xFC, 0x00, 0x83, 0xF0, 0x02, 0x0F, + 0xC0, 0x08, 0x3F, 0x00, 0x20, 0xFC, 0x00, 0x83, 0xF0, 0x02, 0x0F, 0xC0, + 0x18, 0x1F, 0x80, 0x40, 0x7E, 0x03, 0x00, 0xFC, 0x18, 0x01, 0xFF, 0xC0, + 0x00, 0xFC, 0x00, 0xFF, 0xF0, 0x7F, 0x3F, 0xC0, 0x1E, 0x1F, 0x80, 0x0C, + 0x1F, 0x80, 0x08, 0x0F, 0xC0, 0x18, 0x0F, 0xC0, 0x18, 0x07, 0xE0, 0x10, + 0x07, 0xE0, 0x30, 0x07, 0xE0, 0x20, 0x03, 0xF0, 0x60, 0x03, 0xF0, 0x60, + 0x01, 0xF8, 0x40, 0x01, 0xF8, 0xC0, 0x00, 0xF8, 0x80, 0x00, 0xFC, 0x80, + 0x00, 0xFD, 0x80, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3E, 0x00, + 0x00, 0x3E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x1C, 0x00, + 0x00, 0x0C, 0x00, 0xFF, 0xE7, 0xFF, 0x0F, 0xCF, 0xE0, 0x7F, 0x00, 0xE1, + 0xF8, 0x0F, 0xC0, 0x30, 0x7E, 0x03, 0xF0, 0x0C, 0x1F, 0x80, 0x7C, 0x02, + 0x03, 0xE0, 0x1F, 0x81, 0x80, 0xFC, 0x07, 0xE0, 0x60, 0x3F, 0x03, 0xF8, + 0x10, 0x07, 0xC0, 0xBF, 0x0C, 0x01, 0xF8, 0x2F, 0xC3, 0x00, 0x7E, 0x19, + 0xF0, 0x80, 0x0F, 0x84, 0x7C, 0x60, 0x03, 0xF3, 0x0F, 0x98, 0x00, 0xFC, + 0xC3, 0xE4, 0x00, 0x1F, 0x20, 0xFB, 0x00, 0x07, 0xF8, 0x1F, 0xC0, 0x00, + 0xFC, 0x07, 0xE0, 0x00, 0x3F, 0x01, 0xF8, 0x00, 0x0F, 0xC0, 0x3E, 0x00, + 0x01, 0xE0, 0x0F, 0x00, 0x00, 0x78, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x70, + 0x00, 0x03, 0x00, 0x18, 0x00, 0x00, 0xC0, 0x06, 0x00, 0x00, 0x20, 0x00, + 0x80, 0x00, 0xFF, 0xF3, 0xFE, 0x7F, 0x80, 0x78, 0x3F, 0x80, 0x70, 0x1F, + 0xC0, 0x60, 0x0F, 0xC0, 0xC0, 0x0F, 0xE1, 0x80, 0x07, 0xF1, 0x00, 0x03, + 0xF3, 0x00, 0x03, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x00, + 0xFE, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0x80, 0x00, + 0x9F, 0x80, 0x01, 0x8F, 0xC0, 0x03, 0x0F, 0xE0, 0x06, 0x07, 0xE0, 0x06, + 0x07, 0xF0, 0x0C, 0x03, 0xF8, 0x1C, 0x03, 0xF8, 0x3C, 0x03, 0xFC, 0xFF, + 0x0F, 0xFF, 0xFF, 0xF0, 0xFF, 0x7F, 0x80, 0x1E, 0x3F, 0x80, 0x1C, 0x1F, + 0x80, 0x18, 0x1F, 0xC0, 0x10, 0x0F, 0xC0, 0x30, 0x07, 0xE0, 0x20, 0x07, + 0xE0, 0x60, 0x03, 0xF0, 0xC0, 0x03, 0xF0, 0x80, 0x01, 0xF9, 0x80, 0x01, + 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7E, 0x00, 0x00, + 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, + 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0xFF, 0x00, 0x01, + 0xFF, 0x80, 0x7F, 0xFF, 0xF3, 0xFF, 0xFF, 0x9F, 0x01, 0xF8, 0xE0, 0x1F, + 0x86, 0x01, 0xFC, 0x20, 0x0F, 0xC1, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, + 0x7E, 0x00, 0x07, 0xE0, 0x00, 0x3F, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x80, + 0x01, 0xF8, 0x00, 0x1F, 0x80, 0x01, 0xFC, 0x01, 0x0F, 0xC0, 0x18, 0xFC, + 0x00, 0xC7, 0xE0, 0x06, 0x7E, 0x00, 0x77, 0xF0, 0x07, 0x3F, 0x00, 0xFB, + 0xFF, 0xFF, 0xDF, 0xFF, 0xFE, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xFF, 0xFF, 0xE0, 0x1E, + 0x01, 0xC0, 0x38, 0x07, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x1C, 0x03, 0x80, + 0x70, 0x07, 0x00, 0xE0, 0x1C, 0x01, 0xC0, 0x38, 0x07, 0x00, 0x70, 0x0E, + 0x01, 0xC0, 0x1C, 0x03, 0x80, 0x70, 0x0F, 0x00, 0xE0, 0xFF, 0xFF, 0x0F, + 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0xFF, 0xFF, 0x03, 0x80, 0x0F, 0x00, 0x1F, 0x00, 0x7E, 0x00, 0xEE, 0x03, + 0x9C, 0x07, 0x1C, 0x1C, 0x38, 0x38, 0x38, 0xE0, 0x71, 0xC0, 0x77, 0x00, + 0xEE, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xE0, 0xF0, + 0x78, 0x3C, 0x0E, 0x07, 0x0F, 0xE0, 0x3F, 0xF0, 0x78, 0xF8, 0x78, 0x7C, + 0x78, 0x7C, 0x38, 0x7C, 0x00, 0x7C, 0x03, 0xFC, 0x1E, 0x7C, 0x7C, 0x7C, + 0xFC, 0x7C, 0xFC, 0x7C, 0xFC, 0xFC, 0xFF, 0xFD, 0x7F, 0x7F, 0x3C, 0x3C, + 0xFC, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x1F, + 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0xF8, 0x1F, 0x7F, 0x87, 0xE3, + 0xF1, 0xF0, 0x7E, 0x7C, 0x0F, 0x9F, 0x03, 0xF7, 0xC0, 0xFD, 0xF0, 0x3F, + 0x7C, 0x0F, 0xDF, 0x03, 0xF7, 0xC0, 0xFD, 0xF0, 0x3E, 0x7C, 0x1F, 0x1F, + 0x8F, 0xC6, 0x7F, 0xC1, 0x07, 0xC0, 0x07, 0xC0, 0x7F, 0xC3, 0xC7, 0x9F, + 0x1E, 0x78, 0x7B, 0xE1, 0xCF, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, + 0x80, 0x3F, 0x00, 0x7C, 0x00, 0xFC, 0x61, 0xFF, 0x03, 0xF0, 0x00, 0x7F, + 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x07, 0xC0, + 0x01, 0xF0, 0x00, 0x7C, 0x07, 0x9F, 0x07, 0xF7, 0xC3, 0xE3, 0xF1, 0xF8, + 0x7C, 0x7C, 0x1F, 0x3F, 0x07, 0xCF, 0xC1, 0xF3, 0xF0, 0x7C, 0xFC, 0x1F, + 0x3F, 0x07, 0xCF, 0xC1, 0xF1, 0xF0, 0x7C, 0x7E, 0x1F, 0x0F, 0x8F, 0xC1, + 0xFD, 0xFC, 0x3E, 0x70, 0x0F, 0xC0, 0x7F, 0xC3, 0xC7, 0x1E, 0x1E, 0xF8, + 0x7B, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0xC0, 0x1F, + 0x03, 0x7E, 0x18, 0xFF, 0xC1, 0xFE, 0x03, 0xF0, 0x0F, 0x83, 0xF8, 0xF3, + 0xBE, 0xF7, 0xDC, 0xF8, 0x1F, 0x03, 0xE0, 0xFF, 0x1F, 0xE1, 0xF0, 0x3E, + 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, + 0xC0, 0xF8, 0x1F, 0x07, 0xF8, 0x0F, 0xC0, 0x1F, 0xFF, 0xDF, 0x1F, 0xFF, + 0x07, 0x8F, 0x83, 0xE7, 0xC1, 0xF3, 0xE0, 0xF9, 0xF0, 0x7C, 0x78, 0x3C, + 0x1E, 0x3E, 0x03, 0xFC, 0x03, 0x00, 0x07, 0x00, 0x07, 0x80, 0x03, 0xFF, + 0xF1, 0xFF, 0xFE, 0x7F, 0xFF, 0x8F, 0xFF, 0xF8, 0x01, 0xFC, 0x00, 0x7F, + 0x00, 0x73, 0xFF, 0xF0, 0x7F, 0xC0, 0xFC, 0x00, 0x3E, 0x00, 0x1F, 0x00, + 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x7C, + 0x7C, 0x3E, 0xFF, 0x1F, 0xCF, 0xCF, 0x83, 0xE7, 0xC1, 0xF3, 0xE0, 0xF9, + 0xF0, 0x7C, 0xF8, 0x3E, 0x7C, 0x1F, 0x3E, 0x0F, 0x9F, 0x07, 0xCF, 0x83, + 0xE7, 0xC1, 0xF3, 0xE0, 0xF9, 0xF0, 0x7D, 0xFC, 0x7F, 0x39, 0xFB, 0xF7, + 0xE7, 0x80, 0x00, 0x00, 0xFC, 0xF9, 0xF3, 0xE7, 0xCF, 0x9F, 0x3E, 0x7C, + 0xF9, 0xF3, 0xE7, 0xCF, 0x9F, 0x7F, 0x03, 0xC0, 0xFC, 0x1F, 0x83, 0xF0, + 0x3C, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, + 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, + 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7D, 0xCF, 0xF9, 0xEE, 0x7C, 0xFF, 0x0F, + 0x80, 0xFC, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, + 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x7F, 0x9F, 0x07, 0x87, + 0xC1, 0x81, 0xF0, 0xC0, 0x7C, 0x60, 0x1F, 0x30, 0x07, 0xDE, 0x01, 0xFF, + 0xC0, 0x7F, 0xF0, 0x1F, 0x3E, 0x07, 0xCF, 0xC1, 0xF1, 0xF8, 0x7C, 0x3E, + 0x1F, 0x07, 0xC7, 0xC1, 0xFB, 0xF9, 0xFF, 0xFC, 0xF9, 0xF3, 0xE7, 0xCF, + 0x9F, 0x3E, 0x7C, 0xF9, 0xF3, 0xE7, 0xCF, 0x9F, 0x3E, 0x7C, 0xF9, 0xF3, + 0xE7, 0xCF, 0x9F, 0x7F, 0xFC, 0x7C, 0x1F, 0x0F, 0xBF, 0xCF, 0xF1, 0xF8, + 0xFF, 0x3F, 0x3E, 0x0F, 0x83, 0xE7, 0xC1, 0xF0, 0x7C, 0xF8, 0x3E, 0x0F, + 0x9F, 0x07, 0xC1, 0xF3, 0xE0, 0xF8, 0x3E, 0x7C, 0x1F, 0x07, 0xCF, 0x83, + 0xE0, 0xF9, 0xF0, 0x7C, 0x1F, 0x3E, 0x0F, 0x83, 0xE7, 0xC1, 0xF0, 0x7C, + 0xF8, 0x3E, 0x0F, 0x9F, 0x07, 0xC1, 0xF7, 0xF1, 0xFC, 0x7F, 0xFC, 0x7C, + 0x3E, 0xFF, 0x1F, 0xCF, 0xCF, 0x83, 0xE7, 0xC1, 0xF3, 0xE0, 0xF9, 0xF0, + 0x7C, 0xF8, 0x3E, 0x7C, 0x1F, 0x3E, 0x0F, 0x9F, 0x07, 0xCF, 0x83, 0xE7, + 0xC1, 0xF3, 0xE0, 0xF9, 0xF0, 0x7D, 0xFC, 0x7F, 0x07, 0xF0, 0x0F, 0xFE, + 0x0F, 0x8F, 0x8F, 0x87, 0xE7, 0xC1, 0xF7, 0xE0, 0xFF, 0xF0, 0x7F, 0xF8, + 0x3F, 0xFC, 0x1F, 0xFE, 0x0F, 0xFF, 0x07, 0xEF, 0x83, 0xE7, 0xC1, 0xF1, + 0xF1, 0xF0, 0x7F, 0xF0, 0x0F, 0xE0, 0xFE, 0x7C, 0x07, 0xDF, 0xE0, 0xFE, + 0x3E, 0x1F, 0x07, 0xE3, 0xE0, 0x7C, 0x7C, 0x0F, 0xCF, 0x81, 0xF9, 0xF0, + 0x3F, 0x3E, 0x07, 0xE7, 0xC0, 0xFC, 0xF8, 0x1F, 0x9F, 0x03, 0xE3, 0xE0, + 0xFC, 0x7E, 0x3F, 0x0F, 0xBF, 0xC1, 0xF3, 0xE0, 0x3E, 0x00, 0x07, 0xC0, + 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x7E, 0x00, 0x1F, 0xE0, + 0x00, 0x07, 0xC1, 0x0F, 0xF9, 0x8F, 0xCD, 0xCF, 0xC3, 0xE7, 0xC1, 0xF7, + 0xE0, 0xFB, 0xF0, 0x7D, 0xF8, 0x3E, 0xFC, 0x1F, 0x7E, 0x0F, 0xBF, 0x07, + 0xDF, 0x83, 0xE7, 0xE1, 0xF1, 0xF1, 0xF8, 0x7F, 0x7C, 0x1F, 0x3E, 0x00, + 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x01, 0xF8, + 0x01, 0xFE, 0xFC, 0x73, 0xEF, 0xDF, 0xFE, 0xFC, 0xF7, 0xC3, 0xBE, 0x01, + 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x07, 0xC0, 0x3E, + 0x01, 0xF0, 0x1F, 0xE0, 0x1E, 0x23, 0xFE, 0x70, 0xEE, 0x06, 0xE0, 0x2F, + 0x80, 0xFF, 0x07, 0xFC, 0x3F, 0xE0, 0xFF, 0x81, 0xF8, 0x07, 0xC0, 0x7E, + 0x0E, 0xBF, 0xC8, 0xF8, 0x04, 0x03, 0x01, 0xC0, 0xF0, 0x7C, 0x3F, 0xEF, + 0xF9, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, + 0x7C, 0x5F, 0x37, 0xF8, 0xFE, 0x1E, 0x00, 0xFC, 0x7F, 0x1F, 0x07, 0xC7, + 0xC1, 0xF1, 0xF0, 0x7C, 0x7C, 0x1F, 0x1F, 0x07, 0xC7, 0xC1, 0xF1, 0xF0, + 0x7C, 0x7C, 0x1F, 0x1F, 0x07, 0xC7, 0xC1, 0xF1, 0xF0, 0x7C, 0x7C, 0x1F, + 0x1F, 0x8F, 0xC3, 0xFD, 0xFC, 0x7C, 0x60, 0xFF, 0x9F, 0xBF, 0x83, 0x0F, + 0x81, 0x87, 0xE0, 0x81, 0xF0, 0x40, 0xF8, 0x40, 0x3E, 0x20, 0x1F, 0x30, + 0x07, 0xD0, 0x03, 0xF8, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3C, 0x00, 0x0E, + 0x00, 0x07, 0x00, 0x01, 0x00, 0xFF, 0x3F, 0xCF, 0x7E, 0x1F, 0x06, 0x3E, + 0x0F, 0x06, 0x3E, 0x0F, 0x84, 0x1F, 0x0F, 0x8C, 0x1F, 0x1F, 0x88, 0x0F, + 0x17, 0xC8, 0x0F, 0x97, 0xD8, 0x0F, 0xB3, 0xD0, 0x07, 0xE3, 0xF0, 0x07, + 0xE3, 0xE0, 0x03, 0xC1, 0xE0, 0x03, 0xC1, 0xE0, 0x03, 0x81, 0xC0, 0x01, + 0x80, 0xC0, 0x01, 0x80, 0x80, 0xFF, 0x3F, 0x7E, 0x0C, 0x3E, 0x08, 0x3F, + 0x18, 0x1F, 0x30, 0x0F, 0xE0, 0x0F, 0xC0, 0x07, 0xE0, 0x03, 0xE0, 0x03, + 0xF0, 0x05, 0xF8, 0x0C, 0xF8, 0x18, 0xFC, 0x30, 0x7E, 0x70, 0x7E, 0xFC, + 0xFF, 0xFF, 0x3F, 0x7E, 0x0C, 0x7C, 0x0C, 0x3E, 0x08, 0x3E, 0x08, 0x1E, + 0x18, 0x1F, 0x10, 0x0F, 0x30, 0x0F, 0xA0, 0x0F, 0xA0, 0x07, 0xE0, 0x07, + 0xC0, 0x03, 0xC0, 0x03, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x00, 0x01, + 0x00, 0x61, 0x00, 0xF2, 0x00, 0xF6, 0x00, 0xFC, 0x00, 0x78, 0x00, 0x7F, + 0xFD, 0xFF, 0xF7, 0x0F, 0xD0, 0x3E, 0x01, 0xF0, 0x0F, 0xC0, 0x3E, 0x01, + 0xF0, 0x0F, 0xC0, 0x3E, 0x01, 0xF8, 0x0F, 0xC1, 0x3E, 0x05, 0xF8, 0x7F, + 0xFF, 0xFF, 0xFF, 0x01, 0xE0, 0xF8, 0x3E, 0x07, 0x80, 0xF0, 0x1E, 0x03, + 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x07, 0x87, + 0x80, 0x1E, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, + 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF8, 0x0F, 0x80, 0x78, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xF0, 0x0F, 0x80, 0xF0, + 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, + 0x01, 0xE0, 0x3C, 0x03, 0xC0, 0x0F, 0x0F, 0x03, 0xC0, 0x78, 0x0F, 0x01, + 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x03, 0xE0, + 0xF8, 0x3C, 0x00, 0x3E, 0x00, 0x7F, 0xC6, 0xFF, 0xFF, 0x61, 0xFE, 0x00, + 0x7C}; + +const GFXglyph FreeSerifBold18pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 9, 0, 1}, // 0x20 ' ' + {0, 6, 24, 12, 3, -23}, // 0x21 '!' + {18, 13, 10, 19, 3, -23}, // 0x22 '"' + {35, 18, 24, 17, 0, -23}, // 0x23 '#' + {89, 15, 28, 17, 1, -25}, // 0x24 '$' + {142, 27, 24, 35, 4, -23}, // 0x25 '%' + {223, 26, 25, 29, 2, -23}, // 0x26 '&' + {305, 4, 10, 10, 3, -23}, // 0x27 ''' + {310, 9, 30, 12, 2, -23}, // 0x28 '(' + {344, 9, 30, 12, 1, -23}, // 0x29 ')' + {378, 14, 15, 18, 2, -23}, // 0x2A '*' + {405, 19, 19, 24, 2, -17}, // 0x2B '+' + {451, 6, 12, 9, 1, -5}, // 0x2C ',' + {460, 8, 4, 12, 2, -9}, // 0x2D '-' + {464, 6, 6, 9, 1, -5}, // 0x2E '.' + {469, 11, 25, 10, -1, -23}, // 0x2F '/' + {504, 16, 24, 18, 1, -23}, // 0x30 '0' + {552, 12, 24, 18, 3, -23}, // 0x31 '1' + {588, 16, 24, 17, 1, -23}, // 0x32 '2' + {636, 16, 24, 18, 0, -23}, // 0x33 '3' + {684, 15, 24, 18, 1, -23}, // 0x34 '4' + {729, 15, 24, 18, 1, -23}, // 0x35 '5' + {774, 16, 24, 18, 1, -23}, // 0x36 '6' + {822, 16, 24, 17, 1, -23}, // 0x37 '7' + {870, 16, 24, 17, 1, -23}, // 0x38 '8' + {918, 16, 24, 18, 1, -23}, // 0x39 '9' + {966, 6, 16, 12, 3, -15}, // 0x3A ':' + {978, 7, 22, 12, 2, -15}, // 0x3B ';' + {998, 19, 20, 24, 2, -18}, // 0x3C '<' + {1046, 19, 12, 24, 2, -14}, // 0x3D '=' + {1075, 19, 20, 24, 3, -18}, // 0x3E '>' + {1123, 14, 24, 18, 2, -23}, // 0x3F '?' + {1165, 24, 25, 33, 4, -23}, // 0x40 '@' + {1240, 24, 24, 25, 1, -23}, // 0x41 'A' + {1312, 21, 24, 23, 1, -23}, // 0x42 'B' + {1375, 23, 25, 25, 1, -23}, // 0x43 'C' + {1447, 23, 24, 26, 1, -23}, // 0x44 'D' + {1516, 21, 24, 23, 2, -23}, // 0x45 'E' + {1579, 19, 24, 22, 2, -23}, // 0x46 'F' + {1636, 25, 25, 27, 1, -23}, // 0x47 'G' + {1715, 24, 24, 27, 2, -23}, // 0x48 'H' + {1787, 11, 24, 14, 2, -23}, // 0x49 'I' + {1820, 16, 27, 18, 0, -23}, // 0x4A 'J' + {1874, 25, 24, 27, 2, -23}, // 0x4B 'K' + {1949, 21, 24, 23, 2, -23}, // 0x4C 'L' + {2012, 31, 24, 33, 1, -23}, // 0x4D 'M' + {2105, 23, 24, 25, 1, -23}, // 0x4E 'N' + {2174, 25, 25, 27, 1, -23}, // 0x4F 'O' + {2253, 19, 24, 22, 2, -23}, // 0x50 'P' + {2310, 25, 30, 27, 1, -23}, // 0x51 'Q' + {2404, 23, 24, 25, 2, -23}, // 0x52 'R' + {2473, 16, 25, 20, 2, -23}, // 0x53 'S' + {2523, 21, 24, 23, 1, -23}, // 0x54 'T' + {2586, 22, 25, 25, 2, -23}, // 0x55 'U' + {2655, 24, 24, 25, 0, -23}, // 0x56 'V' + {2727, 34, 25, 34, 0, -23}, // 0x57 'W' + {2834, 24, 24, 25, 1, -23}, // 0x58 'X' + {2906, 24, 24, 25, 1, -23}, // 0x59 'Y' + {2978, 21, 24, 23, 1, -23}, // 0x5A 'Z' + {3041, 8, 29, 12, 2, -23}, // 0x5B '[' + {3070, 11, 25, 10, -1, -23}, // 0x5C '\' + {3105, 8, 29, 12, 2, -23}, // 0x5D ']' + {3134, 15, 13, 20, 3, -23}, // 0x5E '^' + {3159, 18, 3, 17, 0, 3}, // 0x5F '_' + {3166, 8, 6, 12, 0, -23}, // 0x60 '`' + {3172, 16, 16, 18, 1, -15}, // 0x61 'a' + {3204, 18, 24, 19, 1, -23}, // 0x62 'b' + {3258, 14, 16, 15, 1, -15}, // 0x63 'c' + {3286, 18, 24, 19, 1, -23}, // 0x64 'd' + {3340, 14, 16, 16, 1, -15}, // 0x65 'e' + {3368, 11, 24, 14, 2, -23}, // 0x66 'f' + {3401, 17, 23, 17, 1, -15}, // 0x67 'g' + {3450, 17, 24, 19, 1, -23}, // 0x68 'h' + {3501, 7, 24, 10, 2, -23}, // 0x69 'i' + {3522, 11, 31, 14, 0, -23}, // 0x6A 'j' + {3565, 18, 24, 19, 1, -23}, // 0x6B 'k' + {3619, 7, 24, 10, 1, -23}, // 0x6C 'l' + {3640, 27, 16, 29, 1, -15}, // 0x6D 'm' + {3694, 17, 16, 19, 1, -15}, // 0x6E 'n' + {3728, 17, 16, 18, 1, -15}, // 0x6F 'o' + {3762, 19, 23, 19, 0, -15}, // 0x70 'p' + {3817, 17, 23, 19, 1, -15}, // 0x71 'q' + {3866, 13, 16, 15, 1, -15}, // 0x72 'r' + {3892, 12, 16, 14, 1, -15}, // 0x73 's' + {3916, 10, 21, 12, 1, -20}, // 0x74 't' + {3943, 18, 16, 20, 1, -15}, // 0x75 'u' + {3979, 17, 16, 17, 0, -15}, // 0x76 'v' + {4013, 24, 16, 25, 0, -15}, // 0x77 'w' + {4061, 16, 16, 18, 1, -15}, // 0x78 'x' + {4093, 16, 23, 17, 0, -15}, // 0x79 'y' + {4139, 14, 16, 16, 0, -15}, // 0x7A 'z' + {4167, 11, 31, 14, 1, -24}, // 0x7B '{' + {4210, 3, 25, 8, 2, -23}, // 0x7C '|' + {4220, 11, 31, 14, 3, -24}, // 0x7D '}' + {4263, 16, 5, 18, 1, -11}}; // 0x7E '~' + +const GFXfont FreeSerifBold18pt7b PROGMEM = { + (uint8_t *)FreeSerifBold18pt7bBitmaps, + (GFXglyph *)FreeSerifBold18pt7bGlyphs, 0x20, 0x7E, 42}; + +// Approx. 4945 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBold24pt7b.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBold24pt7b.h new file mode 100644 index 0000000..e6681f5 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBold24pt7b.h @@ -0,0 +1,761 @@ +#pragma once +#include + +const uint8_t FreeSerifBold24pt7bBitmaps[] PROGMEM = { + 0x3C, 0x7E, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x7E, 0x7C, 0x7C, + 0x3C, 0x3C, 0x38, 0x38, 0x38, 0x38, 0x18, 0x10, 0x10, 0x10, 0x00, 0x00, + 0x00, 0x00, 0x3C, 0x7E, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x3C, 0x70, 0x07, + 0x7C, 0x07, 0xFE, 0x03, 0xFF, 0x01, 0xFF, 0x80, 0xFF, 0xC0, 0x7F, 0xC0, + 0x3E, 0xE0, 0x0E, 0x70, 0x07, 0x38, 0x03, 0x9C, 0x01, 0xC4, 0x00, 0xE2, + 0x00, 0x20, 0x00, 0xF0, 0x70, 0x01, 0xC0, 0xE0, 0x03, 0x81, 0xC0, 0x0F, + 0x07, 0x80, 0x1E, 0x0F, 0x00, 0x3C, 0x1E, 0x00, 0x78, 0x3C, 0x00, 0xF0, + 0x78, 0x01, 0xC0, 0xE0, 0x03, 0x81, 0xC0, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, + 0xF3, 0xFF, 0xFF, 0xE0, 0x78, 0x3C, 0x00, 0xF0, 0x78, 0x01, 0xC0, 0xE0, + 0x03, 0x81, 0xC0, 0x0F, 0x07, 0x80, 0x1E, 0x0F, 0x00, 0x3C, 0x1E, 0x0F, + 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0x03, 0x81, 0xC0, 0x0F, + 0x07, 0x80, 0x1E, 0x0F, 0x00, 0x3C, 0x1E, 0x00, 0x78, 0x3C, 0x00, 0xF0, + 0x78, 0x01, 0xE0, 0xE0, 0x03, 0x81, 0xC0, 0x07, 0x07, 0x80, 0x1E, 0x0F, + 0x00, 0x00, 0x60, 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, 0x00, 0xC0, 0x00, + 0x7F, 0xF0, 0x0F, 0x37, 0xE0, 0xE1, 0x8F, 0x8E, 0x0C, 0x3C, 0x70, 0x60, + 0xE7, 0x83, 0x03, 0x3C, 0x18, 0x19, 0xF0, 0xC0, 0x4F, 0xC6, 0x02, 0x7F, + 0xF0, 0x03, 0xFF, 0x80, 0x0F, 0xFE, 0x00, 0x3F, 0xFC, 0x00, 0xFF, 0xF0, + 0x03, 0xFF, 0xE0, 0x0F, 0xFF, 0x80, 0x1F, 0xFE, 0x00, 0x3F, 0xF8, 0x01, + 0xFF, 0xC0, 0x0C, 0xFF, 0x00, 0x63, 0xFA, 0x03, 0x0F, 0xD0, 0x18, 0x3E, + 0x80, 0xC1, 0xF6, 0x06, 0x0F, 0xB8, 0x30, 0x79, 0xC1, 0x87, 0xCF, 0x0C, + 0x3C, 0x7E, 0x67, 0xC0, 0xFF, 0xF8, 0x00, 0xFE, 0x00, 0x00, 0xC0, 0x00, + 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x30, + 0x00, 0x3E, 0x00, 0x0C, 0x00, 0x0F, 0xF0, 0x03, 0x80, 0x07, 0xE7, 0x03, + 0xE0, 0x01, 0xF8, 0x7F, 0xFC, 0x00, 0x3E, 0x07, 0xF7, 0x00, 0x0F, 0xC0, + 0x80, 0xE0, 0x03, 0xF0, 0x10, 0x38, 0x00, 0x7E, 0x02, 0x07, 0x00, 0x0F, + 0x80, 0x41, 0xC0, 0x03, 0xF0, 0x10, 0x30, 0x00, 0x7E, 0x02, 0x0E, 0x00, + 0x0F, 0x80, 0xC1, 0x80, 0x01, 0xF0, 0x10, 0x70, 0x00, 0x3E, 0x06, 0x1C, + 0x00, 0x07, 0xC1, 0x83, 0x80, 0x00, 0x7C, 0x60, 0xE0, 0x1F, 0x07, 0xF8, + 0x18, 0x0F, 0xF8, 0x7C, 0x07, 0x07, 0xF1, 0x00, 0x00, 0xC1, 0xF8, 0x10, + 0x00, 0x38, 0x3F, 0x02, 0x00, 0x06, 0x0F, 0xC0, 0x40, 0x01, 0xC3, 0xF0, + 0x08, 0x00, 0x30, 0x7E, 0x01, 0x00, 0x0E, 0x1F, 0x80, 0x40, 0x03, 0x83, + 0xF0, 0x08, 0x00, 0x60, 0x7E, 0x01, 0x00, 0x1C, 0x0F, 0x80, 0x40, 0x03, + 0x01, 0xF0, 0x18, 0x00, 0xE0, 0x3E, 0x02, 0x00, 0x18, 0x03, 0xC0, 0xC0, + 0x07, 0x00, 0x7C, 0x70, 0x00, 0xC0, 0x07, 0xFC, 0x00, 0x38, 0x00, 0x7E, + 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x07, 0x8F, + 0xE0, 0x00, 0x03, 0xC1, 0xF8, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x7C, + 0x07, 0xC0, 0x00, 0x1F, 0x01, 0xF0, 0x00, 0x07, 0xE0, 0x7C, 0x00, 0x01, + 0xF8, 0x1E, 0x00, 0x00, 0x7F, 0x07, 0x80, 0x00, 0x1F, 0xE3, 0x80, 0x00, + 0x03, 0xFF, 0xC0, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x1F, 0xE0, 0x3F, + 0xF0, 0x07, 0xFC, 0x01, 0xF0, 0x07, 0xFF, 0x00, 0x78, 0x07, 0xBF, 0xE0, + 0x1C, 0x03, 0x87, 0xFC, 0x07, 0x01, 0xE0, 0xFF, 0x81, 0x80, 0xF0, 0x3F, + 0xE0, 0xC0, 0x7C, 0x07, 0xFC, 0x30, 0x1F, 0x00, 0xFF, 0x98, 0x0F, 0xC0, + 0x3F, 0xFC, 0x03, 0xF0, 0x07, 0xFF, 0x00, 0xFE, 0x00, 0xFF, 0x80, 0x3F, + 0x80, 0x3F, 0xF0, 0x0F, 0xF0, 0x07, 0xFE, 0x03, 0xFC, 0x00, 0xFF, 0x81, + 0x7F, 0x80, 0x3F, 0xF8, 0xDF, 0xF0, 0x1F, 0xFF, 0xE3, 0xFF, 0x0E, 0xFF, + 0xF8, 0xFF, 0xFE, 0x1F, 0xFC, 0x0F, 0xFE, 0x03, 0xFE, 0x00, 0xFE, 0x00, + 0x3E, 0x00, 0x77, 0xFF, 0xFF, 0xFF, 0xEE, 0x73, 0x9C, 0xE2, 0x00, 0x00, + 0x00, 0x03, 0x00, 0x60, 0x1C, 0x03, 0x80, 0x70, 0x06, 0x00, 0xE0, 0x1C, + 0x01, 0xC0, 0x3C, 0x03, 0xC0, 0x78, 0x07, 0x80, 0x78, 0x07, 0x80, 0xF8, + 0x0F, 0x80, 0xF8, 0x0F, 0x80, 0xF8, 0x0F, 0x80, 0xF8, 0x0F, 0x80, 0xF8, + 0x0F, 0x80, 0x78, 0x07, 0x80, 0x78, 0x03, 0xC0, 0x3C, 0x01, 0xC0, 0x1C, + 0x00, 0xE0, 0x0E, 0x00, 0x70, 0x03, 0x00, 0x18, 0x00, 0xC0, 0x03, 0x00, + 0x10, 0x00, 0x0C, 0x00, 0x60, 0x03, 0x00, 0x18, 0x00, 0xC0, 0x06, 0x00, + 0x70, 0x03, 0x80, 0x38, 0x03, 0xC0, 0x3C, 0x03, 0xE0, 0x1E, 0x01, 0xE0, + 0x1E, 0x01, 0xF0, 0x1F, 0x01, 0xF0, 0x1F, 0x01, 0xF0, 0x1F, 0x01, 0xF0, + 0x1F, 0x01, 0xF0, 0x1F, 0x01, 0xE0, 0x1E, 0x01, 0xE0, 0x3C, 0x03, 0xC0, + 0x38, 0x03, 0x80, 0x70, 0x07, 0x00, 0xE0, 0x0C, 0x01, 0x80, 0x30, 0x0C, + 0x00, 0x80, 0x00, 0x01, 0xC0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, + 0x03, 0xE0, 0x3C, 0x78, 0xEF, 0x9C, 0x7B, 0xF7, 0x3F, 0xFE, 0xDF, 0x8F, + 0xFF, 0xC0, 0x7F, 0x00, 0x3F, 0xC0, 0x7E, 0xBF, 0x3F, 0x77, 0xEF, 0x9C, + 0xFF, 0xC7, 0x1E, 0x63, 0xE3, 0x80, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, + 0x01, 0xC0, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xE0, + 0x00, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, + 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x0F, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, + 0x80, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, + 0x07, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, + 0x00, 0x3C, 0x7E, 0xFE, 0xFF, 0xFF, 0xFF, 0x7F, 0x07, 0x06, 0x06, 0x0C, + 0x18, 0x30, 0x60, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x3C, + 0x7E, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x3C, 0x00, 0x1E, 0x00, 0x7C, 0x00, + 0xF0, 0x01, 0xE0, 0x07, 0xC0, 0x0F, 0x00, 0x1E, 0x00, 0x7C, 0x00, 0xF0, + 0x01, 0xE0, 0x07, 0xC0, 0x0F, 0x00, 0x1E, 0x00, 0x7C, 0x00, 0xF0, 0x01, + 0xE0, 0x07, 0xC0, 0x0F, 0x00, 0x1E, 0x00, 0x7C, 0x00, 0xF0, 0x01, 0xE0, + 0x03, 0xC0, 0x0F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0xF0, 0x01, 0xE0, 0x03, + 0xC0, 0x0F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0xF0, 0x00, 0x00, 0xFC, 0x00, + 0x0F, 0x3C, 0x00, 0x78, 0x78, 0x03, 0xE1, 0xF0, 0x1F, 0x03, 0xE0, 0x7C, + 0x0F, 0x83, 0xF0, 0x3F, 0x0F, 0xC0, 0xFC, 0x7F, 0x03, 0xF9, 0xFC, 0x0F, + 0xE7, 0xF0, 0x3F, 0xBF, 0xC0, 0xFE, 0xFF, 0x03, 0xFF, 0xFC, 0x0F, 0xFF, + 0xF0, 0x3F, 0xFF, 0xC0, 0xFF, 0xFF, 0x03, 0xFF, 0xFC, 0x0F, 0xFF, 0xF0, + 0x3F, 0xFF, 0xC0, 0xFF, 0xFF, 0x03, 0xFF, 0xFC, 0x0F, 0xFF, 0xF0, 0x3F, + 0x9F, 0xC0, 0xFE, 0x7F, 0x03, 0xF9, 0xFC, 0x0F, 0xE3, 0xF0, 0x3F, 0x0F, + 0xC0, 0xFC, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x80, 0xF8, 0x7C, 0x01, 0xE1, + 0xE0, 0x03, 0xCF, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x18, 0x00, 0x1E, 0x00, + 0x1F, 0x80, 0x1F, 0xE0, 0x1F, 0xF8, 0x1D, 0xFE, 0x00, 0x3F, 0x80, 0x0F, + 0xE0, 0x03, 0xF8, 0x00, 0xFE, 0x00, 0x3F, 0x80, 0x0F, 0xE0, 0x03, 0xF8, + 0x00, 0xFE, 0x00, 0x3F, 0x80, 0x0F, 0xE0, 0x03, 0xF8, 0x00, 0xFE, 0x00, + 0x3F, 0x80, 0x0F, 0xE0, 0x03, 0xF8, 0x00, 0xFE, 0x00, 0x3F, 0x80, 0x0F, + 0xE0, 0x03, 0xF8, 0x00, 0xFE, 0x00, 0x3F, 0x80, 0x0F, 0xE0, 0x03, 0xF8, + 0x00, 0xFE, 0x00, 0x7F, 0x80, 0x3F, 0xF8, 0xFF, 0xFF, 0xC0, 0x00, 0xFC, + 0x00, 0x1F, 0xF8, 0x03, 0xFF, 0xE0, 0x3F, 0xFF, 0x81, 0xFF, 0xFC, 0x1C, + 0x1F, 0xF1, 0xC0, 0x7F, 0x8C, 0x01, 0xFC, 0x40, 0x0F, 0xE0, 0x00, 0x3F, + 0x00, 0x01, 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, + 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x00, + 0x00, 0x70, 0x00, 0x07, 0x80, 0x00, 0x38, 0x00, 0x03, 0x80, 0x00, 0x38, + 0x01, 0x03, 0x80, 0x18, 0x38, 0x00, 0x81, 0x80, 0x1C, 0x1F, 0xFF, 0xE1, + 0xFF, 0xFF, 0x1F, 0xFF, 0xF9, 0xFF, 0xFF, 0x9F, 0xFF, 0xFC, 0xFF, 0xFF, + 0xE0, 0x00, 0xFE, 0x00, 0x3F, 0xFC, 0x03, 0xFF, 0xF0, 0x30, 0xFF, 0xC2, + 0x01, 0xFE, 0x30, 0x0F, 0xF1, 0x00, 0x3F, 0x80, 0x01, 0xFC, 0x00, 0x0F, + 0xE0, 0x00, 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x01, 0xF0, 0x00, + 0x1F, 0xC0, 0x03, 0xFF, 0x00, 0x3F, 0xFC, 0x00, 0x7F, 0xF0, 0x00, 0xFF, + 0x80, 0x03, 0xFE, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0x80, 0x00, 0xFC, 0x00, + 0x07, 0xE0, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0x80, 0x00, 0x3C, + 0x00, 0x01, 0xC7, 0x80, 0x0E, 0x7F, 0x00, 0xE3, 0xFC, 0x06, 0x1F, 0xF8, + 0xE0, 0x7F, 0xFC, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x1E, + 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x80, 0x01, 0xFC, 0x00, 0x0F, 0xE0, 0x00, + 0xFF, 0x00, 0x0D, 0xF8, 0x00, 0xEF, 0xC0, 0x06, 0x7E, 0x00, 0x63, 0xF0, + 0x07, 0x1F, 0x80, 0x30, 0xFC, 0x03, 0x07, 0xE0, 0x38, 0x3F, 0x03, 0x81, + 0xF8, 0x18, 0x0F, 0xC1, 0xC0, 0x7E, 0x1C, 0x03, 0xF0, 0xC0, 0x1F, 0x8E, + 0x00, 0xFC, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xC0, 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, + 0x07, 0xE0, 0x00, 0x3F, 0x00, 0x01, 0xF8, 0x00, 0x0F, 0xC0, 0x07, 0xFF, + 0xF0, 0x7F, 0xFF, 0x0F, 0xFF, 0xE0, 0xFF, 0xFE, 0x0F, 0xFF, 0xE1, 0xFF, + 0xFC, 0x18, 0x00, 0x01, 0x80, 0x00, 0x18, 0x00, 0x03, 0x00, 0x00, 0x3F, + 0x80, 0x03, 0xFF, 0x80, 0x7F, 0xFE, 0x07, 0xFF, 0xF0, 0x7F, 0xFF, 0x87, + 0xFF, 0xFC, 0x7F, 0xFF, 0xC0, 0x07, 0xFC, 0x00, 0x1F, 0xE0, 0x00, 0x7E, + 0x00, 0x03, 0xE0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 0x00, + 0xC0, 0x00, 0x0C, 0x78, 0x00, 0x8F, 0xE0, 0x18, 0xFF, 0x87, 0x0F, 0xFF, + 0xE0, 0x7F, 0xF8, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x38, 0x00, 0x1F, 0x00, + 0x07, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x0F, 0xC0, + 0x00, 0xFC, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xF0, 0x00, 0x7F, + 0x00, 0x07, 0xF8, 0x00, 0x3F, 0xFF, 0x01, 0xFF, 0xFE, 0x1F, 0xF1, 0xFC, + 0xFF, 0x07, 0xE7, 0xF8, 0x3F, 0xBF, 0xC1, 0xFD, 0xFE, 0x07, 0xFF, 0xF0, + 0x3F, 0xFF, 0x81, 0xFF, 0xFC, 0x0F, 0xFF, 0xE0, 0x7F, 0xFF, 0x03, 0xFB, + 0xF8, 0x1F, 0xDF, 0xC0, 0xFE, 0xFE, 0x07, 0xE3, 0xF0, 0x3F, 0x1F, 0xC1, + 0xF0, 0x7E, 0x0F, 0x01, 0xF0, 0xF8, 0x03, 0xC7, 0x00, 0x07, 0xE0, 0x00, + 0x3F, 0xFF, 0xF9, 0xFF, 0xFF, 0xDF, 0xFF, 0xFE, 0xFF, 0xFF, 0xE7, 0xFF, + 0xFF, 0x3F, 0xFF, 0xF9, 0x80, 0x07, 0x98, 0x00, 0x3C, 0xC0, 0x03, 0xE4, + 0x00, 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, + 0xC0, 0x00, 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, + 0x07, 0x80, 0x00, 0x7C, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x01, 0xF0, + 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x07, 0xC0, 0x00, 0x3C, 0x00, 0x01, + 0xE0, 0x00, 0x1F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, + 0x01, 0xFE, 0x00, 0x38, 0x7C, 0x07, 0x80, 0xF0, 0x78, 0x07, 0xC3, 0xC0, + 0x1F, 0x3E, 0x00, 0xF9, 0xF0, 0x07, 0xCF, 0xC0, 0x3E, 0x7E, 0x01, 0xF3, + 0xF8, 0x0F, 0x1F, 0xE0, 0xF8, 0x7F, 0xC7, 0x83, 0xFF, 0xF0, 0x0F, 0xFE, + 0x00, 0x7F, 0xFC, 0x01, 0xFF, 0xF0, 0x03, 0xFF, 0xC0, 0x1F, 0xFF, 0x03, + 0xBF, 0xFC, 0x7C, 0x7F, 0xE7, 0xC1, 0xFF, 0x3E, 0x07, 0xFF, 0xE0, 0x1F, + 0xFF, 0x00, 0x7F, 0xF8, 0x03, 0xFF, 0xC0, 0x0F, 0xFE, 0x00, 0x7F, 0xF0, + 0x03, 0xE7, 0x80, 0x1F, 0x3E, 0x01, 0xF0, 0xF8, 0x0F, 0x83, 0xE1, 0xF8, + 0x0F, 0xFF, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFC, 0x00, 0x1C, 0x3C, 0x00, + 0xF0, 0x78, 0x07, 0x81, 0xF8, 0x3E, 0x07, 0xE1, 0xF8, 0x0F, 0xC7, 0xE0, + 0x3F, 0x3F, 0x80, 0xFE, 0xFE, 0x03, 0xFB, 0xF8, 0x0F, 0xFF, 0xE0, 0x3F, + 0xFF, 0x80, 0xFF, 0xFE, 0x03, 0xFF, 0xF8, 0x0F, 0xFF, 0xE0, 0x3F, 0xDF, + 0xC0, 0xFF, 0x7F, 0x03, 0xFC, 0xFC, 0x0F, 0xF3, 0xFC, 0x7F, 0x83, 0xFF, + 0xFE, 0x07, 0xF7, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0xFF, 0x00, 0x03, 0xF8, + 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x00, 0x03, 0xF8, 0x00, 0x0F, 0xC0, 0x00, + 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x01, 0xF0, 0x00, 0x3F, 0x00, + 0x03, 0x80, 0x00, 0x00, 0x3C, 0x7E, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x3C, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x7E, 0xFF, 0xFF, + 0xFF, 0xFF, 0x7E, 0x3C, 0x3C, 0x3F, 0x3F, 0xDF, 0xEF, 0xF7, 0xF9, 0xF8, + 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x7F, 0x7F, + 0xBF, 0xFF, 0xFF, 0xFB, 0xFC, 0xFE, 0x07, 0x03, 0x01, 0x81, 0x81, 0x81, + 0x83, 0x81, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xF0, 0x00, 0x00, + 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xC0, 0x01, 0xFF, 0x80, 0x01, + 0xFF, 0x80, 0x01, 0xFF, 0x80, 0x01, 0xFF, 0x80, 0x01, 0xFF, 0x80, 0x01, + 0xFF, 0x80, 0x01, 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x00, 0x3F, 0xE0, 0x00, + 0x07, 0xFE, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x7F, + 0xE0, 0x00, 0x07, 0xFF, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x03, 0xFF, 0x00, + 0x00, 0x3F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x03, + 0xC0, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, + 0xC0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x03, 0xFC, 0x00, + 0x00, 0xFF, 0xC0, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x0F, + 0xFE, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x7F, 0xE0, + 0x00, 0x07, 0xFE, 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x1F, 0xF0, 0x00, 0x1F, + 0xF8, 0x00, 0x1F, 0xF8, 0x00, 0x1F, 0xF8, 0x00, 0x1F, 0xF8, 0x00, 0x1F, + 0xF8, 0x00, 0x1F, 0xF8, 0x00, 0x1F, 0xF8, 0x00, 0x3F, 0xF0, 0x00, 0x0F, + 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x30, 0x00, 0x00, + 0x00, 0x07, 0xF0, 0x07, 0xFF, 0x03, 0x87, 0xE1, 0xC0, 0xFC, 0xF0, 0x3F, + 0xBE, 0x07, 0xEF, 0xC1, 0xFF, 0xF0, 0x7F, 0xFC, 0x1F, 0xDF, 0x07, 0xF7, + 0x81, 0xFC, 0x00, 0xFE, 0x00, 0x3F, 0x80, 0x1F, 0xC0, 0x07, 0xE0, 0x03, + 0xE0, 0x00, 0xF0, 0x00, 0x70, 0x00, 0x18, 0x00, 0x04, 0x00, 0x01, 0x00, + 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3C, 0x00, 0x1F, 0x80, 0x0F, 0xF0, 0x03, 0xFC, 0x00, 0xFF, 0x00, 0x3F, + 0xC0, 0x07, 0xE0, 0x00, 0xF0, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x1F, + 0xFF, 0xC0, 0x00, 0x1F, 0x00, 0xF0, 0x00, 0x3E, 0x00, 0x1E, 0x00, 0x3C, + 0x00, 0x03, 0x80, 0x3C, 0x00, 0x00, 0xE0, 0x3C, 0x00, 0x00, 0x30, 0x3E, + 0x00, 0x00, 0x0C, 0x3E, 0x00, 0x3C, 0x37, 0x1F, 0x00, 0x7E, 0xF1, 0x9F, + 0x00, 0x7C, 0xF8, 0xCF, 0x80, 0x78, 0x7C, 0x37, 0xC0, 0x7C, 0x3C, 0x1F, + 0xC0, 0x3C, 0x1E, 0x0F, 0xE0, 0x3C, 0x0F, 0x07, 0xF0, 0x3E, 0x0F, 0x03, + 0xF8, 0x1E, 0x07, 0x81, 0xFC, 0x0F, 0x03, 0xC0, 0xFE, 0x0F, 0x03, 0xE0, + 0x7F, 0x07, 0x81, 0xE0, 0x6F, 0x83, 0xC1, 0xF0, 0x37, 0xC1, 0xE1, 0x78, + 0x31, 0xF0, 0xF9, 0xBC, 0x18, 0xF8, 0x3F, 0x9E, 0x38, 0x3C, 0x0F, 0x0F, + 0xF8, 0x1F, 0x00, 0x01, 0xF0, 0x07, 0x80, 0x00, 0x00, 0x03, 0xE0, 0x00, + 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x07, 0xC0, + 0x00, 0xC0, 0x01, 0xF8, 0x03, 0xE0, 0x00, 0x3F, 0xFF, 0xC0, 0x00, 0x03, + 0xFF, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, + 0x03, 0x80, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, + 0x07, 0xE0, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, + 0x0F, 0xF0, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, + 0x37, 0xF8, 0x00, 0x00, 0x33, 0xF8, 0x00, 0x00, 0x33, 0xFC, 0x00, 0x00, + 0x61, 0xFC, 0x00, 0x00, 0x61, 0xFE, 0x00, 0x00, 0xC1, 0xFE, 0x00, 0x00, + 0xC0, 0xFF, 0x00, 0x00, 0xC0, 0xFF, 0x00, 0x01, 0x80, 0x7F, 0x00, 0x01, + 0x80, 0x7F, 0x80, 0x03, 0x80, 0x7F, 0x80, 0x03, 0xFF, 0xFF, 0xC0, 0x03, + 0xFF, 0xFF, 0xC0, 0x07, 0x00, 0x3F, 0xC0, 0x06, 0x00, 0x1F, 0xE0, 0x0E, + 0x00, 0x1F, 0xE0, 0x0C, 0x00, 0x0F, 0xF0, 0x0C, 0x00, 0x0F, 0xF0, 0x1C, + 0x00, 0x0F, 0xF8, 0x1C, 0x00, 0x0F, 0xF8, 0x7E, 0x00, 0x0F, 0xFC, 0xFF, + 0x80, 0x7F, 0xFF, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xE0, 0x1F, 0xF8, + 0x7F, 0x00, 0xFF, 0x03, 0xFC, 0x0F, 0xF0, 0x3F, 0xC0, 0xFF, 0x01, 0xFE, + 0x0F, 0xF0, 0x1F, 0xE0, 0xFF, 0x01, 0xFE, 0x0F, 0xF0, 0x1F, 0xE0, 0xFF, + 0x01, 0xFE, 0x0F, 0xF0, 0x1F, 0xC0, 0xFF, 0x03, 0xFC, 0x0F, 0xF0, 0x3F, + 0x00, 0xFF, 0x0F, 0xC0, 0x0F, 0xFF, 0xE0, 0x00, 0xFF, 0xFF, 0xC0, 0x0F, + 0xF0, 0xFF, 0x00, 0xFF, 0x03, 0xFC, 0x0F, 0xF0, 0x1F, 0xE0, 0xFF, 0x01, + 0xFE, 0x0F, 0xF0, 0x0F, 0xF0, 0xFF, 0x00, 0xFF, 0x0F, 0xF0, 0x0F, 0xF0, + 0xFF, 0x00, 0xFF, 0x0F, 0xF0, 0x0F, 0xF0, 0xFF, 0x00, 0xFF, 0x0F, 0xF0, + 0x0F, 0xE0, 0xFF, 0x01, 0xFE, 0x0F, 0xF0, 0x1F, 0xC0, 0xFF, 0x87, 0xF0, + 0x3F, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0x00, 0x00, 0x0F, 0xF0, 0x08, 0x01, + 0xFF, 0xF0, 0x60, 0x0F, 0xC1, 0xF9, 0x80, 0xFC, 0x01, 0xFE, 0x07, 0xE0, + 0x01, 0xF8, 0x3F, 0x00, 0x03, 0xE1, 0xFC, 0x00, 0x07, 0x87, 0xE0, 0x00, + 0x1E, 0x3F, 0x80, 0x00, 0x38, 0xFE, 0x00, 0x00, 0x67, 0xF8, 0x00, 0x01, + 0x9F, 0xC0, 0x00, 0x02, 0x7F, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x0F, + 0xF0, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x03, 0xFC, + 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0xFF, 0x00, + 0x00, 0x03, 0xFC, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x1F, 0xE0, 0x00, + 0x00, 0x7F, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, + 0x87, 0xF0, 0x00, 0x07, 0x0F, 0xE0, 0x00, 0x38, 0x1F, 0x80, 0x01, 0xC0, + 0x3F, 0x00, 0x1E, 0x00, 0x7F, 0x01, 0xE0, 0x00, 0x7F, 0xFF, 0x00, 0x00, + 0x3F, 0xE0, 0x00, 0xFF, 0xFF, 0xE0, 0x00, 0x3F, 0xFF, 0xFE, 0x00, 0x0F, + 0xF8, 0x7F, 0x80, 0x0F, 0xF0, 0x1F, 0xC0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, + 0xF0, 0x07, 0xF0, 0x0F, 0xF0, 0x03, 0xF8, 0x0F, 0xF0, 0x03, 0xFC, 0x0F, + 0xF0, 0x01, 0xFC, 0x0F, 0xF0, 0x01, 0xFE, 0x0F, 0xF0, 0x01, 0xFE, 0x0F, + 0xF0, 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0xFF, 0x0F, + 0xF0, 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0xFF, 0x0F, + 0xF0, 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0xFF, 0x0F, + 0xF0, 0x00, 0xFE, 0x0F, 0xF0, 0x00, 0xFE, 0x0F, 0xF0, 0x01, 0xFE, 0x0F, + 0xF0, 0x01, 0xFC, 0x0F, 0xF0, 0x01, 0xFC, 0x0F, 0xF0, 0x03, 0xF8, 0x0F, + 0xF0, 0x03, 0xF0, 0x0F, 0xF0, 0x07, 0xE0, 0x0F, 0xF0, 0x0F, 0xC0, 0x0F, + 0xF8, 0x3F, 0x80, 0x1F, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0xF0, 0x00, 0xFF, + 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xFC, 0x1F, 0xE0, 0x1F, 0xC1, 0xFE, 0x00, + 0x3C, 0x1F, 0xE0, 0x01, 0xC1, 0xFE, 0x00, 0x0C, 0x1F, 0xE0, 0x00, 0xC1, + 0xFE, 0x00, 0x04, 0x1F, 0xE0, 0x20, 0x41, 0xFE, 0x02, 0x00, 0x1F, 0xE0, + 0x60, 0x01, 0xFE, 0x06, 0x00, 0x1F, 0xE0, 0xE0, 0x01, 0xFE, 0x1E, 0x00, + 0x1F, 0xFF, 0xE0, 0x01, 0xFF, 0xFE, 0x00, 0x1F, 0xE3, 0xE0, 0x01, 0xFE, + 0x0E, 0x00, 0x1F, 0xE0, 0x60, 0x01, 0xFE, 0x06, 0x00, 0x1F, 0xE0, 0x20, + 0x01, 0xFE, 0x02, 0x00, 0x1F, 0xE0, 0x00, 0x11, 0xFE, 0x00, 0x03, 0x1F, + 0xE0, 0x00, 0x71, 0xFE, 0x00, 0x07, 0x1F, 0xE0, 0x00, 0xE1, 0xFE, 0x00, + 0x1E, 0x1F, 0xE0, 0x03, 0xE3, 0xFF, 0x01, 0xFE, 0xFF, 0xFF, 0xFF, 0xEF, + 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF, 0xC7, 0xFC, 0x07, + 0xE3, 0xFC, 0x00, 0xF1, 0xFE, 0x00, 0x38, 0xFF, 0x00, 0x0C, 0x7F, 0x80, + 0x06, 0x3F, 0xC0, 0x01, 0x1F, 0xE0, 0x20, 0x8F, 0xF0, 0x10, 0x07, 0xF8, + 0x18, 0x03, 0xFC, 0x0C, 0x01, 0xFE, 0x0E, 0x00, 0xFF, 0x1F, 0x00, 0x7F, + 0xFF, 0x80, 0x3F, 0xFF, 0xC0, 0x1F, 0xE3, 0xE0, 0x0F, 0xF0, 0x70, 0x07, + 0xF8, 0x18, 0x03, 0xFC, 0x0C, 0x01, 0xFE, 0x02, 0x00, 0xFF, 0x01, 0x00, + 0x7F, 0x80, 0x00, 0x3F, 0xC0, 0x00, 0x1F, 0xE0, 0x00, 0x0F, 0xF0, 0x00, + 0x07, 0xF8, 0x00, 0x03, 0xFC, 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, 0x00, + 0x00, 0xFF, 0xC0, 0x01, 0xFF, 0xFC, 0x00, 0x00, 0x0F, 0xF0, 0x08, 0x00, + 0x3F, 0xFE, 0x0C, 0x00, 0x3F, 0x07, 0xC6, 0x00, 0x7E, 0x00, 0xFF, 0x00, + 0x7E, 0x00, 0x1F, 0x80, 0x7E, 0x00, 0x07, 0xC0, 0x7F, 0x00, 0x01, 0xE0, + 0x3F, 0x00, 0x00, 0x70, 0x3F, 0x80, 0x00, 0x38, 0x1F, 0xC0, 0x00, 0x0C, + 0x1F, 0xE0, 0x00, 0x06, 0x0F, 0xE0, 0x00, 0x01, 0x07, 0xF0, 0x00, 0x00, + 0x07, 0xF8, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, + 0x00, 0xFF, 0x00, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x00, 0x3F, 0xC0, 0x00, + 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x0F, 0xF0, 0x03, 0xFF, 0xFF, 0xF8, 0x00, + 0x3F, 0xF1, 0xFC, 0x00, 0x0F, 0xF0, 0xFF, 0x00, 0x07, 0xF8, 0x7F, 0x80, + 0x03, 0xFC, 0x1F, 0xC0, 0x01, 0xFE, 0x0F, 0xE0, 0x00, 0xFF, 0x03, 0xF8, + 0x00, 0x7F, 0x80, 0xFC, 0x00, 0x3F, 0xC0, 0x3F, 0x00, 0x1F, 0xE0, 0x0F, + 0xC0, 0x0F, 0xF0, 0x03, 0xF8, 0x1F, 0xF0, 0x00, 0x7F, 0xFF, 0xC0, 0x00, + 0x07, 0xFE, 0x00, 0x00, 0xFF, 0xFC, 0x1F, 0xFF, 0x9F, 0xF8, 0x03, 0xFF, + 0x07, 0xF8, 0x00, 0xFF, 0x03, 0xFC, 0x00, 0x7F, 0x81, 0xFE, 0x00, 0x3F, + 0xC0, 0xFF, 0x00, 0x1F, 0xE0, 0x7F, 0x80, 0x0F, 0xF0, 0x3F, 0xC0, 0x07, + 0xF8, 0x1F, 0xE0, 0x03, 0xFC, 0x0F, 0xF0, 0x01, 0xFE, 0x07, 0xF8, 0x00, + 0xFF, 0x03, 0xFC, 0x00, 0x7F, 0x81, 0xFE, 0x00, 0x3F, 0xC0, 0xFF, 0x00, + 0x1F, 0xE0, 0x7F, 0x80, 0x0F, 0xF0, 0x3F, 0xFF, 0xFF, 0xF8, 0x1F, 0xFF, + 0xFF, 0xFC, 0x0F, 0xF0, 0x01, 0xFE, 0x07, 0xF8, 0x00, 0xFF, 0x03, 0xFC, + 0x00, 0x7F, 0x81, 0xFE, 0x00, 0x3F, 0xC0, 0xFF, 0x00, 0x1F, 0xE0, 0x7F, + 0x80, 0x0F, 0xF0, 0x3F, 0xC0, 0x07, 0xF8, 0x1F, 0xE0, 0x03, 0xFC, 0x0F, + 0xF0, 0x01, 0xFE, 0x07, 0xF8, 0x00, 0xFF, 0x03, 0xFC, 0x00, 0x7F, 0x81, + 0xFE, 0x00, 0x3F, 0xC0, 0xFF, 0x00, 0x1F, 0xE0, 0xFF, 0xC0, 0x1F, 0xF9, + 0xFF, 0xF8, 0x3F, 0xFF, 0xFF, 0xFE, 0x7F, 0xE0, 0x7F, 0x80, 0xFF, 0x01, + 0xFE, 0x03, 0xFC, 0x07, 0xF8, 0x0F, 0xF0, 0x1F, 0xE0, 0x3F, 0xC0, 0x7F, + 0x80, 0xFF, 0x01, 0xFE, 0x03, 0xFC, 0x07, 0xF8, 0x0F, 0xF0, 0x1F, 0xE0, + 0x3F, 0xC0, 0x7F, 0x80, 0xFF, 0x01, 0xFE, 0x03, 0xFC, 0x07, 0xF8, 0x0F, + 0xF0, 0x1F, 0xE0, 0x3F, 0xC0, 0x7F, 0x80, 0xFF, 0x01, 0xFE, 0x03, 0xFC, + 0x0F, 0xFC, 0x7F, 0xFF, 0x01, 0xFF, 0xFC, 0x00, 0xFF, 0xC0, 0x01, 0xFE, + 0x00, 0x07, 0xF8, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x80, 0x01, 0xFE, 0x00, + 0x07, 0xF8, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x80, 0x01, 0xFE, 0x00, 0x07, + 0xF8, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x80, 0x01, 0xFE, 0x00, 0x07, 0xF8, + 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x80, 0x01, 0xFE, 0x00, 0x07, 0xF8, 0x00, + 0x1F, 0xE0, 0x00, 0x7F, 0x80, 0x01, 0xFE, 0x00, 0x07, 0xF8, 0x00, 0x1F, + 0xE0, 0x00, 0x7F, 0x80, 0x01, 0xFE, 0x00, 0x07, 0xF8, 0x78, 0x1F, 0xE3, + 0xF0, 0x7F, 0x8F, 0xC1, 0xFC, 0x3F, 0x07, 0xF0, 0xFC, 0x1F, 0xC1, 0xE0, + 0xFE, 0x07, 0xC3, 0xF0, 0x0F, 0xFF, 0x80, 0x07, 0xF0, 0x00, 0xFF, 0xFC, + 0x1F, 0xFF, 0x0F, 0xFC, 0x00, 0xFF, 0x01, 0xFE, 0x00, 0x1E, 0x00, 0x7F, + 0x80, 0x07, 0x00, 0x1F, 0xE0, 0x03, 0x80, 0x07, 0xF8, 0x01, 0xC0, 0x01, + 0xFE, 0x00, 0xE0, 0x00, 0x7F, 0x80, 0x70, 0x00, 0x1F, 0xE0, 0x38, 0x00, + 0x07, 0xF8, 0x1C, 0x00, 0x01, 0xFE, 0x0E, 0x00, 0x00, 0x7F, 0x87, 0x00, + 0x00, 0x1F, 0xE3, 0xC0, 0x00, 0x07, 0xF9, 0xF8, 0x00, 0x01, 0xFE, 0xFE, + 0x00, 0x00, 0x7F, 0xFF, 0xC0, 0x00, 0x1F, 0xFF, 0xF8, 0x00, 0x07, 0xFD, + 0xFF, 0x00, 0x01, 0xFE, 0x7F, 0xE0, 0x00, 0x7F, 0x8F, 0xF8, 0x00, 0x1F, + 0xE1, 0xFF, 0x00, 0x07, 0xF8, 0x3F, 0xE0, 0x01, 0xFE, 0x07, 0xFC, 0x00, + 0x7F, 0x81, 0xFF, 0x80, 0x1F, 0xE0, 0x3F, 0xE0, 0x07, 0xF8, 0x07, 0xFC, + 0x01, 0xFE, 0x00, 0xFF, 0x80, 0x7F, 0x80, 0x1F, 0xF0, 0x1F, 0xE0, 0x07, + 0xFE, 0x07, 0xF8, 0x00, 0xFF, 0x83, 0xFF, 0x00, 0x3F, 0xF3, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x03, 0xFF, 0x00, 0x00, 0x1F, 0xE0, 0x00, + 0x01, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x1F, + 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFE, 0x00, + 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, + 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x1F, 0xE0, + 0x00, 0x01, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, + 0x1F, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x01, 0x1F, 0xE0, 0x00, 0x31, 0xFE, + 0x00, 0x03, 0x1F, 0xE0, 0x00, 0x71, 0xFE, 0x00, 0x07, 0x1F, 0xE0, 0x00, + 0xE1, 0xFE, 0x00, 0x1E, 0x1F, 0xE0, 0x07, 0xE3, 0xFF, 0x01, 0xFE, 0xFF, + 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFE, 0x7F, 0xF0, 0x00, 0x01, 0xFF, 0xE1, + 0xFF, 0x00, 0x00, 0x3F, 0xF0, 0x1F, 0xE0, 0x00, 0x0F, 0xFC, 0x03, 0xFC, + 0x00, 0x01, 0xFF, 0x80, 0x7F, 0xC0, 0x00, 0x2F, 0xF0, 0x0B, 0xF8, 0x00, + 0x0D, 0xFE, 0x01, 0x7F, 0x80, 0x01, 0xBF, 0xC0, 0x27, 0xF0, 0x00, 0x67, + 0xF8, 0x04, 0xFF, 0x00, 0x0C, 0xFF, 0x00, 0x8F, 0xE0, 0x03, 0x1F, 0xE0, + 0x11, 0xFE, 0x00, 0x63, 0xFC, 0x02, 0x3F, 0xC0, 0x08, 0x7F, 0x80, 0x43, + 0xF8, 0x03, 0x0F, 0xF0, 0x08, 0x7F, 0x80, 0x61, 0xFE, 0x01, 0x07, 0xF0, + 0x18, 0x3F, 0xC0, 0x20, 0xFF, 0x03, 0x07, 0xF8, 0x04, 0x0F, 0xE0, 0xC0, + 0xFF, 0x00, 0x81, 0xFE, 0x18, 0x1F, 0xE0, 0x10, 0x3F, 0xC6, 0x03, 0xFC, + 0x02, 0x03, 0xF8, 0xC0, 0x7F, 0x80, 0x40, 0x7F, 0x98, 0x0F, 0xF0, 0x08, + 0x07, 0xF6, 0x01, 0xFE, 0x01, 0x00, 0xFF, 0xC0, 0x3F, 0xC0, 0x20, 0x0F, + 0xF0, 0x07, 0xF8, 0x04, 0x01, 0xFE, 0x00, 0xFF, 0x00, 0x80, 0x1F, 0x80, + 0x1F, 0xE0, 0x10, 0x03, 0xF0, 0x03, 0xFC, 0x02, 0x00, 0x7E, 0x00, 0x7F, + 0x80, 0x40, 0x07, 0x80, 0x0F, 0xF0, 0x0C, 0x00, 0xF0, 0x01, 0xFE, 0x07, + 0xC0, 0x0C, 0x00, 0x7F, 0xE7, 0xFF, 0x01, 0x80, 0x3F, 0xFF, 0xFF, 0xC0, + 0x03, 0xFE, 0xFF, 0xC0, 0x01, 0xF0, 0xFF, 0xC0, 0x01, 0xC0, 0xFF, 0xC0, + 0x01, 0x80, 0xFF, 0x80, 0x03, 0x01, 0xFF, 0x80, 0x06, 0x03, 0xFF, 0x80, + 0x0C, 0x07, 0xFF, 0x80, 0x18, 0x0D, 0xFF, 0x80, 0x30, 0x19, 0xFF, 0x00, + 0x60, 0x31, 0xFF, 0x00, 0xC0, 0x61, 0xFF, 0x01, 0x80, 0xC1, 0xFF, 0x03, + 0x01, 0x83, 0xFF, 0x06, 0x03, 0x03, 0xFE, 0x0C, 0x06, 0x03, 0xFE, 0x18, + 0x0C, 0x03, 0xFE, 0x30, 0x18, 0x03, 0xFE, 0x60, 0x30, 0x03, 0xFE, 0xC0, + 0x60, 0x07, 0xFD, 0x80, 0xC0, 0x07, 0xFF, 0x01, 0x80, 0x07, 0xFE, 0x03, + 0x00, 0x07, 0xFC, 0x06, 0x00, 0x07, 0xF8, 0x0C, 0x00, 0x07, 0xF0, 0x18, + 0x00, 0x0F, 0xE0, 0x30, 0x00, 0x0F, 0xC0, 0x60, 0x00, 0x0F, 0x80, 0xC0, + 0x00, 0x0F, 0x01, 0xC0, 0x00, 0x0E, 0x0F, 0xC0, 0x00, 0x1C, 0x7F, 0xE0, + 0x00, 0x18, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x3F, + 0x07, 0xF0, 0x00, 0x7E, 0x00, 0xFC, 0x00, 0x7E, 0x00, 0x3F, 0x00, 0x7E, + 0x00, 0x1F, 0xC0, 0x7F, 0x00, 0x07, 0xF0, 0x3F, 0x00, 0x03, 0xF8, 0x3F, + 0x80, 0x00, 0xFE, 0x3F, 0xC0, 0x00, 0x7F, 0x1F, 0xE0, 0x00, 0x3F, 0xCF, + 0xE0, 0x00, 0x0F, 0xEF, 0xF0, 0x00, 0x07, 0xF7, 0xF8, 0x00, 0x03, 0xFF, + 0xFC, 0x00, 0x01, 0xFF, 0xFE, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x7F, + 0xFF, 0x80, 0x00, 0x3F, 0xFF, 0xC0, 0x00, 0x1F, 0xFF, 0xE0, 0x00, 0x0F, + 0xFF, 0xF0, 0x00, 0x07, 0xFF, 0xF8, 0x00, 0x03, 0xFD, 0xFC, 0x00, 0x01, + 0xFC, 0xFE, 0x00, 0x01, 0xFE, 0x7F, 0x80, 0x00, 0xFF, 0x1F, 0xC0, 0x00, + 0x7F, 0x0F, 0xE0, 0x00, 0x3F, 0x83, 0xF8, 0x00, 0x3F, 0x80, 0xFC, 0x00, + 0x1F, 0x80, 0x3F, 0x00, 0x1F, 0x80, 0x0F, 0xC0, 0x1F, 0x80, 0x03, 0xF8, + 0x3F, 0x80, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0xFF, + 0xFF, 0xE0, 0x1F, 0xFF, 0xFF, 0x01, 0xFE, 0x1F, 0xE0, 0x7F, 0x81, 0xFC, + 0x1F, 0xE0, 0x7F, 0x87, 0xF8, 0x0F, 0xE1, 0xFE, 0x03, 0xFC, 0x7F, 0x80, + 0xFF, 0x1F, 0xE0, 0x3F, 0xC7, 0xF8, 0x0F, 0xF1, 0xFE, 0x03, 0xFC, 0x7F, + 0x80, 0xFF, 0x1F, 0xE0, 0x3F, 0x87, 0xF8, 0x1F, 0xE1, 0xFE, 0x07, 0xF0, + 0x7F, 0x87, 0xF8, 0x1F, 0xFF, 0xF8, 0x07, 0xFF, 0xF8, 0x01, 0xFE, 0x00, + 0x00, 0x7F, 0x80, 0x00, 0x1F, 0xE0, 0x00, 0x07, 0xF8, 0x00, 0x01, 0xFE, + 0x00, 0x00, 0x7F, 0x80, 0x00, 0x1F, 0xE0, 0x00, 0x07, 0xF8, 0x00, 0x01, + 0xFE, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x1F, 0xE0, 0x00, 0x07, 0xF8, 0x00, + 0x03, 0xFF, 0x00, 0x03, 0xFF, 0xF0, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, + 0x3F, 0xFF, 0x80, 0x00, 0x3F, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0xFC, 0x00, + 0x7E, 0x00, 0x3F, 0x00, 0x7E, 0x00, 0x1F, 0xC0, 0x7F, 0x00, 0x07, 0xF0, + 0x3F, 0x00, 0x03, 0xF8, 0x3F, 0x80, 0x00, 0xFE, 0x1F, 0xC0, 0x00, 0x7F, + 0x1F, 0xE0, 0x00, 0x3F, 0xCF, 0xE0, 0x00, 0x0F, 0xE7, 0xF0, 0x00, 0x07, + 0xF7, 0xF8, 0x00, 0x03, 0xFF, 0xFC, 0x00, 0x01, 0xFF, 0xFE, 0x00, 0x00, + 0xFF, 0xFF, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x3F, 0xFF, 0xC0, 0x00, + 0x1F, 0xFF, 0xE0, 0x00, 0x0F, 0xFF, 0xF0, 0x00, 0x07, 0xFF, 0xF8, 0x00, + 0x03, 0xFD, 0xFC, 0x00, 0x01, 0xFC, 0xFE, 0x00, 0x01, 0xFE, 0x7F, 0x80, + 0x00, 0xFF, 0x1F, 0xC0, 0x00, 0x7F, 0x0F, 0xE0, 0x00, 0x3F, 0x83, 0xF8, + 0x00, 0x3F, 0x80, 0xFC, 0x00, 0x1F, 0x80, 0x3F, 0x00, 0x1F, 0x80, 0x0F, + 0xC0, 0x1F, 0x80, 0x03, 0xF0, 0x1F, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, + 0x0F, 0xFC, 0x00, 0x00, 0x03, 0xFF, 0x00, 0x00, 0x01, 0xFF, 0xC0, 0x00, + 0x00, 0x7F, 0xF0, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x07, 0xFF, 0x80, + 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0xFF, 0xFF, 0xE0, + 0x00, 0xFF, 0xFF, 0xF8, 0x00, 0x7F, 0xC3, 0xFC, 0x00, 0xFF, 0x01, 0xFC, + 0x01, 0xFE, 0x03, 0xFC, 0x03, 0xFC, 0x03, 0xF8, 0x07, 0xF8, 0x07, 0xF8, + 0x0F, 0xF0, 0x0F, 0xF0, 0x1F, 0xE0, 0x1F, 0xE0, 0x3F, 0xC0, 0x3F, 0xC0, + 0x7F, 0x80, 0x7F, 0x80, 0xFF, 0x00, 0xFF, 0x01, 0xFE, 0x01, 0xFC, 0x03, + 0xFC, 0x07, 0xF8, 0x07, 0xF8, 0x1F, 0xE0, 0x0F, 0xF0, 0xFF, 0x00, 0x1F, + 0xFF, 0xF8, 0x00, 0x3F, 0xFF, 0xE0, 0x00, 0x7F, 0x9F, 0xE0, 0x00, 0xFF, + 0x3F, 0xC0, 0x01, 0xFE, 0x3F, 0xC0, 0x03, 0xFC, 0x7F, 0xC0, 0x07, 0xF8, + 0x7F, 0xC0, 0x0F, 0xF0, 0x7F, 0x80, 0x1F, 0xE0, 0xFF, 0x80, 0x3F, 0xC0, + 0xFF, 0x80, 0x7F, 0x80, 0xFF, 0x00, 0xFF, 0x01, 0xFF, 0x01, 0xFE, 0x01, + 0xFF, 0x03, 0xFC, 0x01, 0xFF, 0x0F, 0xFC, 0x03, 0xFE, 0x7F, 0xFE, 0x03, + 0xFF, 0x03, 0xF8, 0x10, 0x7F, 0xF9, 0x87, 0xC1, 0xFC, 0x78, 0x03, 0xE7, + 0x80, 0x0F, 0x3C, 0x00, 0x3B, 0xE0, 0x01, 0xDF, 0x00, 0x06, 0xF8, 0x00, + 0x37, 0xE0, 0x00, 0xBF, 0x80, 0x01, 0xFF, 0x00, 0x0F, 0xFE, 0x00, 0x3F, + 0xFC, 0x01, 0xFF, 0xF8, 0x07, 0xFF, 0xF0, 0x1F, 0xFF, 0xC0, 0x7F, 0xFF, + 0x00, 0xFF, 0xFC, 0x01, 0xFF, 0xE0, 0x03, 0xFF, 0x80, 0x07, 0xFC, 0x00, + 0x1F, 0xF0, 0x00, 0x3F, 0x80, 0x01, 0xFE, 0x00, 0x07, 0xF0, 0x00, 0x3F, + 0xC0, 0x01, 0xEE, 0x00, 0x0F, 0x78, 0x00, 0xF3, 0xE0, 0x0F, 0x9F, 0xC0, + 0xF8, 0x8F, 0xFF, 0x04, 0x0F, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFC, 0x3F, 0xC3, 0xFF, 0x03, 0xFC, 0x0F, 0xE0, 0x3F, 0xC0, + 0x7C, 0x03, 0xFC, 0x03, 0xC0, 0x3F, 0xC0, 0x38, 0x03, 0xFC, 0x01, 0x80, + 0x3F, 0xC0, 0x10, 0x03, 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x03, 0xFC, + 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, + 0x03, 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x3F, + 0xC0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x03, 0xFC, 0x00, + 0x00, 0x3F, 0xC0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x03, + 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x3F, 0xC0, + 0x00, 0x03, 0xFC, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0x3F, 0xFF, 0xC0, 0xFF, + 0xFE, 0x07, 0xFC, 0xFF, 0xC0, 0x07, 0xC1, 0xFE, 0x00, 0x0E, 0x07, 0xF8, + 0x00, 0x18, 0x1F, 0xE0, 0x00, 0x60, 0x7F, 0x80, 0x01, 0x81, 0xFE, 0x00, + 0x06, 0x07, 0xF8, 0x00, 0x18, 0x1F, 0xE0, 0x00, 0x60, 0x7F, 0x80, 0x01, + 0x81, 0xFE, 0x00, 0x06, 0x07, 0xF8, 0x00, 0x18, 0x1F, 0xE0, 0x00, 0x60, + 0x7F, 0x80, 0x01, 0x81, 0xFE, 0x00, 0x06, 0x07, 0xF8, 0x00, 0x18, 0x1F, + 0xE0, 0x00, 0x60, 0x7F, 0x80, 0x01, 0x81, 0xFE, 0x00, 0x06, 0x07, 0xF8, + 0x00, 0x18, 0x1F, 0xE0, 0x00, 0x60, 0x7F, 0x80, 0x01, 0x81, 0xFE, 0x00, + 0x06, 0x07, 0xF8, 0x00, 0x18, 0x1F, 0xE0, 0x00, 0x60, 0x7F, 0x80, 0x03, + 0x00, 0xFF, 0x00, 0x0C, 0x03, 0xFC, 0x00, 0x30, 0x07, 0xF0, 0x01, 0x80, + 0x0F, 0xE0, 0x0E, 0x00, 0x1F, 0xE0, 0xF0, 0x00, 0x1F, 0xFF, 0x00, 0x00, + 0x1F, 0xF0, 0x00, 0xFF, 0xFF, 0x01, 0xFF, 0x9F, 0xFC, 0x00, 0x1F, 0x07, + 0xFC, 0x00, 0x07, 0x01, 0xFE, 0x00, 0x03, 0x00, 0x7F, 0x80, 0x03, 0x80, + 0x3F, 0xC0, 0x01, 0x80, 0x1F, 0xE0, 0x00, 0xC0, 0x07, 0xF8, 0x00, 0xC0, + 0x03, 0xFC, 0x00, 0x60, 0x00, 0xFF, 0x00, 0x30, 0x00, 0x7F, 0x80, 0x30, + 0x00, 0x1F, 0xE0, 0x18, 0x00, 0x0F, 0xF0, 0x18, 0x00, 0x07, 0xF8, 0x0C, + 0x00, 0x01, 0xFE, 0x06, 0x00, 0x00, 0xFF, 0x06, 0x00, 0x00, 0x3F, 0xC3, + 0x00, 0x00, 0x1F, 0xE3, 0x80, 0x00, 0x0F, 0xF1, 0x80, 0x00, 0x03, 0xFC, + 0xC0, 0x00, 0x01, 0xFE, 0xC0, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0x00, 0x3F, + 0xF0, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x03, + 0xF8, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x01, 0x80, 0x00, 0xFF, 0xF8, 0x7F, 0xFF, 0x0F, 0xFB, 0xFF, 0x00, 0xFF, + 0xC0, 0x1F, 0x0F, 0xF0, 0x03, 0xFC, 0x00, 0x70, 0x3F, 0x80, 0x0F, 0xE0, + 0x03, 0x81, 0xFE, 0x00, 0x7F, 0x80, 0x1C, 0x0F, 0xF0, 0x03, 0xFC, 0x00, + 0xC0, 0x3F, 0x80, 0x0F, 0xE0, 0x06, 0x01, 0xFE, 0x00, 0x7F, 0x00, 0x70, + 0x0F, 0xF0, 0x07, 0xFC, 0x03, 0x00, 0x3F, 0x80, 0x3F, 0xE0, 0x18, 0x01, + 0xFE, 0x01, 0xFF, 0x01, 0xC0, 0x0F, 0xF0, 0x1B, 0xFC, 0x0C, 0x00, 0x3F, + 0x80, 0xCF, 0xE0, 0x60, 0x01, 0xFE, 0x06, 0x7F, 0x07, 0x00, 0x0F, 0xF0, + 0x63, 0xFC, 0x30, 0x00, 0x3F, 0x83, 0x0F, 0xE1, 0x80, 0x01, 0xFE, 0x30, + 0x7F, 0x1C, 0x00, 0x07, 0xF1, 0x81, 0xFC, 0xC0, 0x00, 0x3F, 0x8C, 0x0F, + 0xE6, 0x00, 0x01, 0xFE, 0xC0, 0x7F, 0x70, 0x00, 0x07, 0xF6, 0x01, 0xFB, + 0x00, 0x00, 0x3F, 0xE0, 0x0F, 0xF8, 0x00, 0x01, 0xFF, 0x00, 0x7F, 0xC0, + 0x00, 0x07, 0xF8, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x0F, 0xE0, 0x00, + 0x01, 0xFC, 0x00, 0x7F, 0x00, 0x00, 0x07, 0xE0, 0x01, 0xF0, 0x00, 0x00, + 0x3E, 0x00, 0x0F, 0x80, 0x00, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x00, 0x07, + 0x00, 0x01, 0xC0, 0x00, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x00, 0x01, 0xC0, + 0x00, 0x70, 0x00, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0xFF, 0xFF, 0x0F, + 0xFF, 0x3F, 0xF8, 0x01, 0xF8, 0x1F, 0xF8, 0x01, 0xE0, 0x0F, 0xF8, 0x01, + 0xC0, 0x0F, 0xF8, 0x01, 0x80, 0x07, 0xFC, 0x03, 0x80, 0x03, 0xFE, 0x07, + 0x00, 0x03, 0xFE, 0x06, 0x00, 0x01, 0xFF, 0x0C, 0x00, 0x00, 0xFF, 0x9C, + 0x00, 0x00, 0xFF, 0x98, 0x00, 0x00, 0x7F, 0xF0, 0x00, 0x00, 0x3F, 0xF0, + 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0x0F, 0xF0, + 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x0F, 0xFC, + 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x19, 0xFE, 0x00, 0x00, 0x31, 0xFF, + 0x00, 0x00, 0x70, 0xFF, 0x80, 0x00, 0x60, 0x7F, 0x80, 0x00, 0xC0, 0x7F, + 0xC0, 0x01, 0xC0, 0x3F, 0xE0, 0x03, 0x80, 0x1F, 0xE0, 0x07, 0x00, 0x1F, + 0xF0, 0x07, 0x00, 0x0F, 0xF8, 0x0F, 0x00, 0x0F, 0xF8, 0x3F, 0x80, 0x1F, + 0xFC, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0x7F, 0xF0, 0x00, + 0x7E, 0x1F, 0xF0, 0x00, 0x38, 0x1F, 0xF0, 0x00, 0x38, 0x0F, 0xF0, 0x00, + 0x70, 0x0F, 0xF8, 0x00, 0x60, 0x07, 0xF8, 0x00, 0x60, 0x07, 0xFC, 0x00, + 0xC0, 0x03, 0xFC, 0x01, 0xC0, 0x01, 0xFE, 0x01, 0x80, 0x01, 0xFE, 0x03, + 0x00, 0x00, 0xFF, 0x03, 0x00, 0x00, 0xFF, 0x86, 0x00, 0x00, 0x7F, 0x8E, + 0x00, 0x00, 0x7F, 0xCC, 0x00, 0x00, 0x3F, 0xD8, 0x00, 0x00, 0x3F, 0xF8, + 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0x0F, 0xF0, + 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x0F, 0xF0, + 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x0F, 0xF0, + 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x0F, 0xF0, + 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x7F, 0xFE, + 0x00, 0x3F, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0xFC, 0x3F, 0x80, 0x7F, 0xC3, + 0xE0, 0x07, 0xF8, 0x38, 0x00, 0xFF, 0x83, 0x80, 0x0F, 0xF0, 0x30, 0x01, + 0xFE, 0x07, 0x00, 0x3F, 0xE0, 0x60, 0x03, 0xFC, 0x06, 0x00, 0x7F, 0xC0, + 0x00, 0x0F, 0xF8, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x01, + 0xFE, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x7F, 0x80, + 0x00, 0x0F, 0xF8, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x03, + 0xFE, 0x00, 0x00, 0x3F, 0xC0, 0x01, 0x07, 0xFC, 0x00, 0x30, 0xFF, 0x80, + 0x03, 0x0F, 0xF0, 0x00, 0x31, 0xFF, 0x00, 0x07, 0x1F, 0xE0, 0x00, 0xF3, + 0xFE, 0x00, 0x1E, 0x7F, 0xC0, 0x03, 0xE7, 0xF8, 0x01, 0xFE, 0xFF, 0xFF, + 0xFF, 0xEF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xF0, 0x7C, 0x0F, 0x81, + 0xF0, 0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, + 0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, + 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, + 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xFF, 0xFF, 0xF8, 0xF0, + 0x01, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0xC0, 0x07, 0x80, 0x0F, 0x00, + 0x1F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x7C, 0x00, 0x78, 0x00, 0xF0, 0x01, + 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1F, + 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, + 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, + 0x1E, 0xFF, 0xFF, 0xFC, 0x1F, 0x81, 0xF0, 0x3E, 0x07, 0xC0, 0xF8, 0x1F, + 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, + 0xE0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, + 0x7C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, + 0x0F, 0x81, 0xF0, 0x3F, 0xFF, 0xFF, 0xF8, 0x00, 0x78, 0x00, 0x07, 0xC0, + 0x00, 0x3F, 0x00, 0x03, 0xF8, 0x00, 0x1F, 0xE0, 0x01, 0xEF, 0x00, 0x0F, + 0x3C, 0x00, 0xF1, 0xE0, 0x07, 0x87, 0x80, 0x78, 0x3C, 0x03, 0xC0, 0xF0, + 0x3C, 0x07, 0x81, 0xE0, 0x1E, 0x1E, 0x00, 0xF0, 0xF0, 0x07, 0xCF, 0x00, + 0x1E, 0x78, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x70, 0x1F, 0x03, 0xF0, 0x7E, 0x03, 0xE0, 0x3E, 0x01, 0xE0, 0x1E, + 0x00, 0xE0, 0x03, 0xFC, 0x00, 0x3F, 0xFC, 0x03, 0xE1, 0xF8, 0x0F, 0x03, + 0xF0, 0x7C, 0x07, 0xC1, 0xF8, 0x1F, 0x87, 0xE0, 0x7E, 0x1F, 0x81, 0xF8, + 0x3C, 0x07, 0xE0, 0x00, 0x1F, 0x80, 0x01, 0xFE, 0x00, 0x3F, 0xF8, 0x03, + 0xE7, 0xE0, 0x3E, 0x1F, 0x83, 0xF0, 0x7E, 0x1F, 0x81, 0xF8, 0x7E, 0x07, + 0xE3, 0xF8, 0x1F, 0x8F, 0xE0, 0x7E, 0x3F, 0x83, 0xF8, 0xFF, 0x1F, 0xE1, + 0xFF, 0xDF, 0xF7, 0xFE, 0x3F, 0x07, 0xE0, 0xF8, 0xFF, 0x80, 0x00, 0x1F, + 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x03, 0xF0, 0x00, 0x01, 0xF8, 0x00, 0x00, + 0xFC, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x1F, 0x80, 0x00, + 0x0F, 0xC7, 0xF0, 0x07, 0xEF, 0xFE, 0x03, 0xFC, 0x3F, 0x81, 0xFC, 0x0F, + 0xE0, 0xFC, 0x03, 0xF0, 0x7E, 0x01, 0xFC, 0x3F, 0x00, 0xFE, 0x1F, 0x80, + 0x3F, 0x8F, 0xC0, 0x1F, 0xC7, 0xE0, 0x0F, 0xE3, 0xF0, 0x07, 0xF1, 0xF8, + 0x03, 0xF8, 0xFC, 0x01, 0xFC, 0x7E, 0x00, 0xFE, 0x3F, 0x00, 0x7F, 0x1F, + 0x80, 0x3F, 0x0F, 0xC0, 0x1F, 0x87, 0xE0, 0x1F, 0xC3, 0xF0, 0x0F, 0xC1, + 0xF8, 0x07, 0xE0, 0xFE, 0x07, 0xE0, 0x73, 0x87, 0xE0, 0x30, 0xFF, 0xC0, + 0x10, 0x1F, 0x80, 0x00, 0x00, 0xFC, 0x00, 0x7F, 0xE0, 0x3E, 0x3E, 0x0F, + 0x83, 0xE3, 0xE0, 0x7C, 0x7C, 0x0F, 0x9F, 0x01, 0xF3, 0xE0, 0x1C, 0x7C, + 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x01, 0xF8, + 0x00, 0x3F, 0x00, 0x07, 0xF0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x01, 0xFC, + 0x00, 0x1F, 0xC0, 0x21, 0xFE, 0x0C, 0x3F, 0xFF, 0x01, 0xFF, 0x80, 0x0F, + 0xC0, 0x00, 0x1F, 0xF8, 0x00, 0x03, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x01, + 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x01, + 0xF8, 0x00, 0x01, 0xF8, 0x03, 0xF1, 0xF8, 0x07, 0xFD, 0xF8, 0x1F, 0xC7, + 0xF8, 0x1F, 0x83, 0xF8, 0x3F, 0x01, 0xF8, 0x7F, 0x01, 0xF8, 0x7E, 0x01, + 0xF8, 0x7E, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, + 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, + 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0x7E, 0x01, 0xF8, 0x7F, 0x01, + 0xF8, 0x3F, 0x03, 0xF8, 0x3F, 0x03, 0xF8, 0x1F, 0x87, 0xFC, 0x0F, 0xFD, + 0xFF, 0x03, 0xF1, 0xC0, 0x03, 0xF0, 0x03, 0xFF, 0x01, 0xE1, 0xE0, 0xF8, + 0x7C, 0x3C, 0x0F, 0x1F, 0x03, 0xE7, 0xC0, 0xFB, 0xF0, 0x3E, 0xFC, 0x0F, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x0F, + 0xC0, 0x03, 0xF8, 0x00, 0xFE, 0x00, 0x1F, 0x80, 0x07, 0xF0, 0x0C, 0xFC, + 0x06, 0x3F, 0xC3, 0x07, 0xFF, 0x80, 0xFF, 0xC0, 0x0F, 0xC0, 0x00, 0xFC, + 0x01, 0xFF, 0x81, 0xF1, 0xC1, 0xF0, 0xF0, 0xF8, 0xF8, 0xFC, 0x7C, 0x7E, + 0x1C, 0x3F, 0x00, 0x1F, 0x80, 0x0F, 0xC0, 0x07, 0xE0, 0x1F, 0xFF, 0x0F, + 0xFF, 0x80, 0xFC, 0x00, 0x7E, 0x00, 0x3F, 0x00, 0x1F, 0x80, 0x0F, 0xC0, + 0x07, 0xE0, 0x03, 0xF0, 0x01, 0xF8, 0x00, 0xFC, 0x00, 0x7E, 0x00, 0x3F, + 0x00, 0x1F, 0x80, 0x0F, 0xC0, 0x07, 0xE0, 0x03, 0xF0, 0x01, 0xF8, 0x00, + 0xFC, 0x00, 0x7E, 0x00, 0x7F, 0x80, 0xFF, 0xF8, 0x00, 0x07, 0xF0, 0x03, + 0xFF, 0xFC, 0xF8, 0x7F, 0xBE, 0x07, 0x87, 0xC0, 0xF9, 0xF8, 0x1F, 0xBF, + 0x03, 0xF7, 0xE0, 0x7E, 0xFC, 0x0F, 0xDF, 0x81, 0xF9, 0xF0, 0x3F, 0x3E, + 0x07, 0xC3, 0xE1, 0xF8, 0x3C, 0x7E, 0x01, 0xFF, 0x00, 0x60, 0x00, 0x38, + 0x00, 0x0F, 0x00, 0x01, 0xF0, 0x00, 0x7F, 0xFF, 0x0F, 0xFF, 0xF9, 0xFF, + 0xFF, 0x9F, 0xFF, 0xF9, 0xFF, 0xFF, 0x0F, 0xFF, 0xEF, 0x00, 0x3F, 0xC0, + 0x03, 0xF8, 0x00, 0x7F, 0x00, 0x1C, 0xF8, 0x07, 0x0F, 0xFF, 0xC0, 0x7F, + 0xC0, 0xFF, 0x80, 0x00, 0x3F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x80, + 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x80, + 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x87, 0xE0, 0x1F, 0x9F, 0xF0, 0x1F, 0xBF, + 0xF8, 0x1F, 0xF1, 0xF8, 0x1F, 0xC0, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, + 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, + 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, + 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, + 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x3F, 0xC1, 0xFE, 0xFF, 0xE3, + 0xFF, 0x0F, 0x07, 0xE1, 0xFE, 0x3F, 0xC7, 0xF8, 0x7F, 0x03, 0xC0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x7F, 0xC3, 0xF8, 0x3F, 0x07, 0xE0, 0xFC, 0x1F, + 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x07, 0xE0, 0xFC, 0x1F, 0x83, + 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x07, 0xE1, 0xFE, 0xFF, 0xE0, 0x00, + 0x70, 0x07, 0xF0, 0x3F, 0xC0, 0xFF, 0x03, 0xFC, 0x07, 0xF0, 0x0F, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x01, 0xFC, 0x03, 0xF0, + 0x0F, 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFC, + 0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F, + 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F, + 0xDC, 0x3F, 0xF8, 0xFB, 0xE3, 0xEF, 0x0F, 0xBC, 0x7C, 0x7F, 0xE0, 0x7E, + 0x00, 0xFF, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x03, 0xF0, + 0x00, 0x01, 0xF8, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3F, + 0x00, 0x00, 0x1F, 0x80, 0x00, 0x0F, 0xC0, 0x00, 0x07, 0xE1, 0xFF, 0x83, + 0xF0, 0x3F, 0x01, 0xF8, 0x0E, 0x00, 0xFC, 0x06, 0x00, 0x7E, 0x06, 0x00, + 0x3F, 0x06, 0x00, 0x1F, 0x86, 0x00, 0x0F, 0xC7, 0x00, 0x07, 0xE7, 0x80, + 0x03, 0xF7, 0xE0, 0x01, 0xFF, 0xF8, 0x00, 0xFF, 0xFC, 0x00, 0x7E, 0x7F, + 0x00, 0x3F, 0x1F, 0xC0, 0x1F, 0x8F, 0xE0, 0x0F, 0xC3, 0xF8, 0x07, 0xE0, + 0xFE, 0x03, 0xF0, 0x7F, 0x81, 0xF8, 0x1F, 0xC0, 0xFC, 0x0F, 0xF0, 0xFF, + 0x07, 0xFD, 0xFF, 0xC7, 0xFF, 0xFF, 0x87, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, + 0x3F, 0x07, 0xE0, 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, + 0x07, 0xE0, 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x07, + 0xE0, 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x0F, 0xF7, + 0xFF, 0x00, 0x07, 0xE0, 0x3F, 0x07, 0xFC, 0xFF, 0x87, 0xFC, 0x0F, 0xEF, + 0xFE, 0x7F, 0xF0, 0x3F, 0xC3, 0xFF, 0x1F, 0x81, 0xFC, 0x0F, 0xE0, 0x7E, + 0x0F, 0xC0, 0x7E, 0x03, 0xF0, 0x7E, 0x03, 0xF0, 0x1F, 0x83, 0xF0, 0x1F, + 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x07, 0xE0, 0xFC, 0x07, 0xE0, 0x3F, 0x07, + 0xE0, 0x3F, 0x01, 0xF8, 0x3F, 0x01, 0xF8, 0x0F, 0xC1, 0xF8, 0x0F, 0xC0, + 0x7E, 0x0F, 0xC0, 0x7E, 0x03, 0xF0, 0x7E, 0x03, 0xF0, 0x1F, 0x83, 0xF0, + 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x07, 0xE0, 0xFC, 0x07, 0xE0, 0x3F, + 0x07, 0xE0, 0x3F, 0x01, 0xF8, 0x3F, 0x01, 0xF8, 0x0F, 0xC1, 0xF8, 0x0F, + 0xC0, 0x7E, 0x1F, 0xE0, 0xFF, 0x07, 0xFB, 0xFF, 0x8F, 0xFC, 0x7F, 0xE0, + 0x00, 0x07, 0xE0, 0xFF, 0x9F, 0xF0, 0x3F, 0xBF, 0xF8, 0x1F, 0xF1, 0xF8, + 0x1F, 0xC0, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, + 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, + 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, + 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, + 0x1F, 0x80, 0xFC, 0x3F, 0xC1, 0xFE, 0xFF, 0xE3, 0xFF, 0x01, 0xFC, 0x00, + 0x3F, 0xF8, 0x03, 0xE3, 0xE0, 0x3E, 0x0F, 0x83, 0xF0, 0x7E, 0x1F, 0x01, + 0xF1, 0xF8, 0x0F, 0xCF, 0xC0, 0x7E, 0xFE, 0x03, 0xFF, 0xF0, 0x1F, 0xFF, + 0x80, 0xFF, 0xFC, 0x07, 0xFF, 0xE0, 0x3F, 0xFF, 0x01, 0xFF, 0xF8, 0x0F, + 0xFF, 0xC0, 0x7F, 0x7E, 0x03, 0xF3, 0xF0, 0x1F, 0x8F, 0x80, 0xF8, 0x7E, + 0x0F, 0xC1, 0xF0, 0x7C, 0x07, 0xC7, 0xC0, 0x1F, 0xFC, 0x00, 0x3F, 0x80, + 0x00, 0x0F, 0xC0, 0xFF, 0xBF, 0xF0, 0x3F, 0xF1, 0xF8, 0x1F, 0xC0, 0xFC, + 0x1F, 0xC0, 0xFC, 0x1F, 0x80, 0xFE, 0x1F, 0x80, 0x7E, 0x1F, 0x80, 0x7F, + 0x1F, 0x80, 0x7F, 0x1F, 0x80, 0x7F, 0x1F, 0x80, 0x7F, 0x1F, 0x80, 0x7F, + 0x1F, 0x80, 0x7F, 0x1F, 0x80, 0x7F, 0x1F, 0x80, 0x7F, 0x1F, 0x80, 0x7F, + 0x1F, 0x80, 0x7E, 0x1F, 0x80, 0x7E, 0x1F, 0x80, 0xFE, 0x1F, 0x80, 0xFC, + 0x1F, 0xC1, 0xF8, 0x1F, 0xE3, 0xF8, 0x1F, 0xBF, 0xE0, 0x1F, 0x8F, 0xC0, + 0x1F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x80, 0x00, + 0x1F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0xF8, 0x00, + 0x00, 0xF8, 0x08, 0x07, 0xFE, 0x18, 0x0F, 0xC7, 0x38, 0x1F, 0x83, 0xF8, + 0x3F, 0x01, 0xF8, 0x3F, 0x01, 0xF8, 0x7F, 0x01, 0xF8, 0x7E, 0x01, 0xF8, + 0x7E, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, + 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, + 0xFE, 0x01, 0xF8, 0x7E, 0x01, 0xF8, 0x7F, 0x01, 0xF8, 0x7F, 0x01, 0xF8, + 0x3F, 0x83, 0xF8, 0x1F, 0xC7, 0xF8, 0x0F, 0xFD, 0xF8, 0x03, 0xF1, 0xF8, + 0x00, 0x01, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x01, 0xF8, + 0x00, 0x01, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xFF, + 0x00, 0x07, 0x9F, 0xF3, 0xF8, 0xFE, 0xFF, 0x8F, 0xFF, 0xF1, 0xFE, 0x7E, + 0x3F, 0x87, 0x87, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, + 0x7E, 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x00, 0x07, 0xE0, 0x00, + 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x01, + 0xF8, 0x00, 0x7F, 0x80, 0x3F, 0xFC, 0x00, 0x0F, 0x84, 0x3F, 0xF8, 0xE1, + 0xF3, 0x80, 0xEF, 0x00, 0xDE, 0x01, 0xBE, 0x01, 0x7E, 0x00, 0xFF, 0x01, + 0xFF, 0x81, 0xFF, 0xC3, 0xFF, 0xC3, 0xFF, 0xC1, 0xFF, 0x80, 0xFF, 0x80, + 0x7F, 0x80, 0x7F, 0x80, 0x7F, 0x00, 0x7E, 0x00, 0xFE, 0x01, 0xDF, 0x0F, + 0x37, 0xFC, 0x43, 0xF0, 0x01, 0x00, 0x0C, 0x00, 0x70, 0x01, 0xC0, 0x0F, + 0x00, 0x7C, 0x03, 0xF0, 0x1F, 0xC0, 0xFF, 0xF3, 0xFF, 0xC3, 0xF0, 0x0F, + 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFC, 0x03, + 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, + 0xFC, 0x23, 0xF0, 0x8F, 0xE6, 0x1F, 0xF0, 0x7F, 0x80, 0xF8, 0x00, 0xFF, + 0x87, 0xFC, 0x1F, 0xC0, 0xFE, 0x07, 0xE0, 0x3F, 0x03, 0xF0, 0x1F, 0x81, + 0xF8, 0x0F, 0xC0, 0xFC, 0x07, 0xE0, 0x7E, 0x03, 0xF0, 0x3F, 0x01, 0xF8, + 0x1F, 0x80, 0xFC, 0x0F, 0xC0, 0x7E, 0x07, 0xE0, 0x3F, 0x03, 0xF0, 0x1F, + 0x81, 0xF8, 0x0F, 0xC0, 0xFC, 0x07, 0xE0, 0x7E, 0x03, 0xF0, 0x3F, 0x01, + 0xF8, 0x1F, 0x80, 0xFC, 0x0F, 0xC0, 0x7E, 0x07, 0xE0, 0x7F, 0x03, 0xF8, + 0x7F, 0xC0, 0xFF, 0xEF, 0xF8, 0x3F, 0xE7, 0xC0, 0x0F, 0xC2, 0x00, 0xFF, + 0xF1, 0xFC, 0xFF, 0x01, 0xE3, 0xFC, 0x03, 0x07, 0xF0, 0x0C, 0x1F, 0xC0, + 0x60, 0x3F, 0x81, 0x80, 0xFE, 0x04, 0x01, 0xF8, 0x30, 0x07, 0xF0, 0xC0, + 0x1F, 0xC6, 0x00, 0x3F, 0x98, 0x00, 0xFE, 0x40, 0x01, 0xFB, 0x00, 0x07, + 0xFC, 0x00, 0x1F, 0xE0, 0x00, 0x3F, 0x80, 0x00, 0xFE, 0x00, 0x01, 0xF0, + 0x00, 0x07, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, + 0x01, 0x00, 0x00, 0xFF, 0xE7, 0xFF, 0x3F, 0xBF, 0xE0, 0xFE, 0x07, 0x0F, + 0xE0, 0x7F, 0x03, 0x83, 0xF0, 0x1F, 0x81, 0x81, 0xFC, 0x0F, 0xC0, 0xC0, + 0xFE, 0x07, 0xF0, 0x40, 0x3F, 0x03, 0xF8, 0x60, 0x1F, 0xC3, 0xFC, 0x30, + 0x07, 0xE1, 0xFE, 0x10, 0x03, 0xF0, 0x9F, 0x98, 0x01, 0xFC, 0xCF, 0xCC, + 0x00, 0x7E, 0x67, 0xEC, 0x00, 0x3F, 0xE1, 0xFE, 0x00, 0x1F, 0xF0, 0xFE, + 0x00, 0x07, 0xF0, 0x7F, 0x00, 0x03, 0xF8, 0x3F, 0x80, 0x00, 0xFC, 0x0F, + 0x80, 0x00, 0x7C, 0x07, 0xC0, 0x00, 0x3E, 0x03, 0xE0, 0x00, 0x0F, 0x00, + 0xE0, 0x00, 0x07, 0x00, 0x70, 0x00, 0x03, 0x80, 0x38, 0x00, 0x00, 0x80, + 0x08, 0x00, 0xFF, 0xF3, 0xFD, 0xFF, 0x03, 0xC3, 0xFC, 0x0E, 0x07, 0xF0, + 0x30, 0x1F, 0xE1, 0x80, 0x3F, 0x8C, 0x00, 0x7F, 0x70, 0x01, 0xFF, 0x80, + 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x1F, 0xE0, 0x00, 0x3F, 0x80, 0x00, + 0xFF, 0x00, 0x07, 0xFE, 0x00, 0x1B, 0xF8, 0x00, 0xCF, 0xF0, 0x06, 0x1F, + 0xC0, 0x38, 0x3F, 0x80, 0xC0, 0xFF, 0x07, 0x01, 0xFC, 0x3C, 0x07, 0xFB, + 0xFC, 0x7F, 0xF0, 0xFF, 0xE3, 0xFB, 0xFC, 0x07, 0x8F, 0xE0, 0x18, 0x7F, + 0x01, 0x81, 0xF8, 0x0C, 0x0F, 0xE0, 0x60, 0x7F, 0x06, 0x01, 0xF8, 0x30, + 0x0F, 0xE1, 0x80, 0x7F, 0x18, 0x01, 0xF8, 0xC0, 0x0F, 0xE6, 0x00, 0x3F, + 0x60, 0x01, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0x80, 0x01, 0xFC, 0x00, + 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x07, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x60, 0x03, 0x82, 0x00, 0x3E, + 0x30, 0x01, 0xF1, 0x00, 0x0F, 0x98, 0x00, 0x3F, 0x80, 0x00, 0xF0, 0x00, + 0x00, 0x7F, 0xFF, 0xEF, 0xFF, 0xFD, 0xE0, 0x7F, 0x30, 0x1F, 0xC6, 0x07, + 0xF8, 0x80, 0xFE, 0x00, 0x3F, 0xC0, 0x07, 0xF0, 0x01, 0xFC, 0x00, 0x3F, + 0x80, 0x0F, 0xE0, 0x03, 0xFC, 0x00, 0x7F, 0x00, 0x1F, 0xE0, 0x03, 0xF8, + 0x00, 0xFE, 0x03, 0x3F, 0xC0, 0x67, 0xF0, 0x19, 0xFE, 0x07, 0x3F, 0x83, + 0xEF, 0xFF, 0xFD, 0xFF, 0xFF, 0x80, 0x00, 0x7C, 0x07, 0xE0, 0x3E, 0x00, + 0xF8, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, + 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, + 0x1F, 0x00, 0xF8, 0x03, 0xC0, 0x3C, 0x01, 0xF0, 0x00, 0xF0, 0x03, 0xE0, + 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, + 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, + 0x00, 0x3E, 0x00, 0xF8, 0x01, 0xF8, 0x01, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF0, 0xF8, 0x01, 0xF8, 0x01, 0xF0, 0x07, 0xC0, 0x0F, 0x80, 0x3E, 0x00, + 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, + 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0x7C, 0x00, 0xF0, + 0x00, 0xF0, 0x03, 0xE0, 0x3C, 0x01, 0xF0, 0x0F, 0x80, 0x3E, 0x00, 0xF8, + 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, + 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x01, 0xF0, 0x07, 0xC0, 0x7E, + 0x03, 0xE0, 0x00, 0x0F, 0x80, 0x00, 0xFF, 0xC0, 0x47, 0xFF, 0xC3, 0x9F, + 0xFF, 0xFF, 0x70, 0x7F, 0xF8, 0x80, 0x7F, 0xC0, 0x00, 0x3E, 0x00}; + +const GFXglyph FreeSerifBold24pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 12, 0, 1}, // 0x20 ' ' + {0, 8, 34, 16, 4, -32}, // 0x21 '!' + {34, 17, 13, 26, 4, -32}, // 0x22 '"' + {62, 23, 33, 23, 0, -32}, // 0x23 '#' + {157, 21, 39, 24, 1, -34}, // 0x24 '$' + {260, 35, 34, 47, 6, -32}, // 0x25 '%' + {409, 34, 34, 39, 3, -32}, // 0x26 '&' + {554, 5, 13, 13, 4, -32}, // 0x27 ''' + {563, 12, 41, 16, 2, -32}, // 0x28 '(' + {625, 12, 41, 16, 1, -32}, // 0x29 ')' + {687, 18, 21, 24, 3, -32}, // 0x2A '*' + {735, 26, 25, 32, 3, -24}, // 0x2B '+' + {817, 8, 15, 12, 2, -6}, // 0x2C ',' + {832, 11, 5, 16, 2, -12}, // 0x2D '-' + {839, 8, 8, 12, 2, -6}, // 0x2E '.' + {847, 15, 33, 13, -1, -32}, // 0x2F '/' + {909, 22, 34, 23, 1, -32}, // 0x30 '0' + {1003, 18, 33, 23, 3, -32}, // 0x31 '1' + {1078, 21, 33, 24, 1, -32}, // 0x32 '2' + {1165, 21, 34, 24, 1, -32}, // 0x33 '3' + {1255, 21, 33, 24, 1, -32}, // 0x34 '4' + {1342, 20, 32, 23, 2, -31}, // 0x35 '5' + {1422, 21, 34, 24, 1, -32}, // 0x36 '6' + {1512, 21, 32, 23, 1, -31}, // 0x37 '7' + {1596, 21, 34, 23, 1, -32}, // 0x38 '8' + {1686, 22, 34, 23, 1, -32}, // 0x39 '9' + {1780, 8, 24, 16, 4, -22}, // 0x3A ':' + {1804, 9, 31, 16, 3, -22}, // 0x3B ';' + {1839, 26, 26, 32, 3, -24}, // 0x3C '<' + {1924, 26, 17, 32, 3, -20}, // 0x3D '=' + {1980, 26, 26, 32, 3, -24}, // 0x3E '>' + {2065, 18, 34, 24, 3, -32}, // 0x3F '?' + {2142, 33, 34, 44, 5, -32}, // 0x40 '@' + {2283, 32, 33, 34, 1, -32}, // 0x41 'A' + {2415, 28, 32, 31, 1, -31}, // 0x42 'B' + {2527, 30, 34, 33, 2, -32}, // 0x43 'C' + {2655, 32, 32, 34, 1, -31}, // 0x44 'D' + {2783, 28, 32, 32, 2, -31}, // 0x45 'E' + {2895, 25, 32, 29, 2, -31}, // 0x46 'F' + {2995, 33, 34, 36, 2, -32}, // 0x47 'G' + {3136, 33, 32, 37, 2, -31}, // 0x48 'H' + {3268, 15, 32, 18, 2, -31}, // 0x49 'I' + {3328, 22, 37, 24, 0, -31}, // 0x4A 'J' + {3430, 34, 32, 36, 2, -31}, // 0x4B 'K' + {3566, 28, 32, 31, 2, -31}, // 0x4C 'L' + {3678, 43, 32, 45, 0, -31}, // 0x4D 'M' + {3850, 31, 32, 34, 1, -31}, // 0x4E 'N' + {3974, 33, 34, 37, 2, -32}, // 0x4F 'O' + {4115, 26, 32, 30, 2, -31}, // 0x50 'P' + {4219, 33, 41, 37, 2, -32}, // 0x51 'Q' + {4389, 31, 32, 34, 2, -31}, // 0x52 'R' + {4513, 21, 34, 27, 3, -32}, // 0x53 'S' + {4603, 28, 32, 30, 1, -31}, // 0x54 'T' + {4715, 30, 33, 34, 2, -31}, // 0x55 'U' + {4839, 33, 32, 33, 0, -31}, // 0x56 'V' + {4971, 45, 33, 46, 1, -31}, // 0x57 'W' + {5157, 32, 32, 34, 1, -31}, // 0x58 'X' + {5285, 32, 32, 33, 1, -31}, // 0x59 'Y' + {5413, 28, 32, 30, 1, -31}, // 0x5A 'Z' + {5525, 11, 39, 16, 3, -31}, // 0x5B '[' + {5579, 15, 33, 13, -1, -32}, // 0x5C '\' + {5641, 11, 39, 16, 2, -31}, // 0x5D ']' + {5695, 21, 17, 27, 3, -31}, // 0x5E '^' + {5740, 24, 3, 23, 0, 5}, // 0x5F '_' + {5749, 11, 9, 16, 0, -33}, // 0x60 '`' + {5762, 22, 24, 23, 1, -22}, // 0x61 'a' + {5828, 25, 33, 26, 0, -31}, // 0x62 'b' + {5932, 19, 24, 20, 1, -22}, // 0x63 'c' + {5989, 24, 33, 26, 1, -31}, // 0x64 'd' + {6088, 18, 24, 21, 1, -22}, // 0x65 'e' + {6142, 17, 33, 18, 1, -32}, // 0x66 'f' + {6213, 19, 32, 24, 2, -22}, // 0x67 'g' + {6289, 24, 32, 26, 0, -31}, // 0x68 'h' + {6385, 11, 33, 14, 1, -32}, // 0x69 'i' + {6431, 14, 42, 18, 0, -32}, // 0x6A 'j' + {6505, 25, 32, 26, 0, -31}, // 0x6B 'k' + {6605, 11, 32, 13, 0, -31}, // 0x6C 'l' + {6649, 37, 23, 39, 0, -22}, // 0x6D 'm' + {6756, 24, 23, 26, 0, -22}, // 0x6E 'n' + {6825, 21, 24, 24, 1, -22}, // 0x6F 'o' + {6888, 24, 32, 26, 0, -22}, // 0x70 'p' + {6984, 24, 32, 26, 1, -22}, // 0x71 'q' + {7080, 19, 23, 20, 0, -22}, // 0x72 'r' + {7135, 15, 24, 19, 2, -22}, // 0x73 's' + {7180, 14, 31, 16, 1, -29}, // 0x74 't' + {7235, 25, 23, 27, 0, -21}, // 0x75 'u' + {7307, 22, 23, 23, 0, -21}, // 0x76 'v' + {7371, 33, 23, 33, 0, -21}, // 0x77 'w' + {7466, 22, 22, 24, 1, -21}, // 0x78 'x' + {7527, 21, 31, 23, 0, -21}, // 0x79 'y' + {7609, 19, 22, 21, 1, -21}, // 0x7A 'z' + {7662, 14, 42, 19, 1, -33}, // 0x7B '{' + {7736, 4, 33, 10, 3, -32}, // 0x7C '|' + {7753, 14, 42, 19, 4, -33}, // 0x7D '}' + {7827, 22, 7, 24, 1, -14}}; // 0x7E '~' + +const GFXfont FreeSerifBold24pt7b PROGMEM = { + (uint8_t *)FreeSerifBold24pt7bBitmaps, + (GFXglyph *)FreeSerifBold24pt7bGlyphs, 0x20, 0x7E, 56}; + +// Approx. 8519 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBold9pt7b.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBold9pt7b.h new file mode 100644 index 0000000..2f1cf8f --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBold9pt7b.h @@ -0,0 +1,204 @@ +#pragma once +#include + +const uint8_t FreeSerifBold9pt7bBitmaps[] PROGMEM = { + 0xFF, 0xF4, 0x92, 0x1F, 0xF0, 0xCF, 0x3C, 0xE3, 0x88, 0x13, 0x09, 0x84, + 0xC2, 0x47, 0xF9, 0x90, 0xC8, 0x4C, 0xFF, 0x13, 0x09, 0x0C, 0x86, 0x40, + 0x10, 0x38, 0xD6, 0x92, 0xD2, 0xF0, 0x7C, 0x3E, 0x17, 0x93, 0x93, 0xD6, + 0x7C, 0x10, 0x3C, 0x21, 0xCF, 0x0E, 0x24, 0x30, 0xA0, 0xC5, 0x03, 0x34, + 0xE7, 0x26, 0x40, 0xB9, 0x04, 0xC4, 0x23, 0x30, 0x8C, 0x84, 0x1C, 0x0F, + 0x00, 0xCC, 0x06, 0x60, 0x3E, 0x00, 0xE7, 0x8F, 0x18, 0x9C, 0x8C, 0xE4, + 0xE3, 0xC7, 0x9E, 0x3C, 0x72, 0xFD, 0xE0, 0xFF, 0x80, 0x32, 0x44, 0xCC, + 0xCC, 0xCC, 0xC4, 0x62, 0x10, 0x84, 0x22, 0x33, 0x33, 0x33, 0x32, 0x64, + 0x80, 0x31, 0x6B, 0xB1, 0x8E, 0xD6, 0x8C, 0x00, 0x08, 0x04, 0x02, 0x01, + 0x0F, 0xF8, 0x40, 0x20, 0x10, 0x08, 0x00, 0xDF, 0x95, 0x00, 0xFF, 0xFF, + 0x80, 0x0C, 0x21, 0x86, 0x10, 0xC3, 0x08, 0x61, 0x84, 0x30, 0xC0, 0x1C, + 0x33, 0x98, 0xDC, 0x7E, 0x3F, 0x1F, 0x8F, 0xC7, 0xE3, 0xB1, 0x98, 0xC3, + 0x80, 0x08, 0xE3, 0x8E, 0x38, 0xE3, 0x8E, 0x38, 0xE3, 0xBF, 0x3C, 0x3F, + 0x23, 0xC0, 0xE0, 0x70, 0x30, 0x38, 0x18, 0x18, 0x18, 0x5F, 0xDF, 0xE0, + 0x7C, 0x8E, 0x0E, 0x0E, 0x0C, 0x1E, 0x07, 0x03, 0x03, 0x02, 0xE6, 0xF8, + 0x06, 0x0E, 0x0E, 0x3E, 0x2E, 0x4E, 0x8E, 0x8E, 0xFF, 0xFF, 0x0E, 0x0E, + 0x3F, 0x7E, 0x40, 0x40, 0xF8, 0xFC, 0x1E, 0x06, 0x02, 0x02, 0xE4, 0xF8, + 0x07, 0x1C, 0x30, 0x70, 0xFC, 0xE6, 0xE7, 0xE7, 0xE7, 0x67, 0x66, 0x3C, + 0x7F, 0x3F, 0xA0, 0xD0, 0x40, 0x60, 0x30, 0x10, 0x18, 0x0C, 0x04, 0x06, + 0x03, 0x00, 0x3C, 0xC6, 0xC6, 0xC6, 0xFC, 0x7C, 0x3E, 0xCF, 0xC7, 0xC7, + 0xC6, 0x7C, 0x3E, 0x33, 0xB8, 0xDC, 0x7E, 0x3F, 0x1D, 0xCE, 0x7F, 0x07, + 0x07, 0x0F, 0x1C, 0x00, 0xFF, 0x80, 0x3F, 0xE0, 0xFF, 0x80, 0x37, 0xE5, + 0x40, 0x00, 0x00, 0x70, 0x78, 0x78, 0x78, 0x38, 0x03, 0x80, 0x3C, 0x03, + 0xC0, 0x30, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0xFF, 0xC0, 0xC0, 0x3C, 0x03, + 0xC0, 0x1C, 0x01, 0xC1, 0xE1, 0xE1, 0xE0, 0xE0, 0x00, 0x00, 0x3D, 0x9F, + 0x3E, 0x70, 0xE1, 0x04, 0x08, 0x00, 0x70, 0xE1, 0xC0, 0x0F, 0x81, 0x83, + 0x18, 0xC4, 0x89, 0x9C, 0x4C, 0xE4, 0x67, 0x22, 0x39, 0x22, 0x4F, 0xE3, + 0x00, 0x0C, 0x10, 0x1F, 0x00, 0x02, 0x00, 0x30, 0x01, 0xC0, 0x0E, 0x00, + 0xB8, 0x05, 0xC0, 0x4F, 0x02, 0x38, 0x3F, 0xE1, 0x07, 0x18, 0x3D, 0xE3, + 0xF0, 0xFF, 0x87, 0x1C, 0xE3, 0x9C, 0x73, 0x9C, 0x7F, 0x0E, 0x71, 0xC7, + 0x38, 0xE7, 0x1C, 0xE7, 0x7F, 0xC0, 0x1F, 0x26, 0x1D, 0xC1, 0xB0, 0x1E, + 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x0E, 0x04, 0xE1, 0x0F, 0xC0, 0xFF, + 0x0E, 0x71, 0xC7, 0x38, 0x77, 0x0E, 0xE1, 0xDC, 0x3B, 0x87, 0x70, 0xCE, + 0x39, 0xC6, 0x7F, 0x80, 0xFF, 0xCE, 0x19, 0xC1, 0x38, 0x87, 0x30, 0xFE, + 0x1C, 0xC3, 0x88, 0x70, 0x2E, 0x0D, 0xC3, 0x7F, 0xE0, 0xFF, 0xDC, 0x37, + 0x05, 0xC4, 0x73, 0x1F, 0xC7, 0x31, 0xC4, 0x70, 0x1C, 0x07, 0x03, 0xE0, + 0x1F, 0x23, 0x0E, 0x70, 0x6E, 0x02, 0xE0, 0x0E, 0x00, 0xE1, 0xFE, 0x0E, + 0x60, 0xE7, 0x0E, 0x38, 0xE0, 0xF8, 0xF9, 0xF7, 0x0E, 0x70, 0xE7, 0x0E, + 0x70, 0xE7, 0xFE, 0x70, 0xE7, 0x0E, 0x70, 0xE7, 0x0E, 0x70, 0xEF, 0x9F, + 0xFB, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x9D, 0xF0, 0x1F, 0x0E, 0x0E, 0x0E, + 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0xCE, 0xCC, 0x78, 0xF9, 0xF3, + 0x82, 0x1C, 0x20, 0xE2, 0x07, 0x20, 0x3F, 0x01, 0xDC, 0x0E, 0x70, 0x73, + 0xC3, 0x8F, 0x1C, 0x3D, 0xF3, 0xF0, 0xF8, 0x0E, 0x01, 0xC0, 0x38, 0x07, + 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x2E, 0x09, 0xC3, 0x7F, 0xE0, 0xF8, + 0x0F, 0x3C, 0x1E, 0x3C, 0x1E, 0x2E, 0x2E, 0x2E, 0x2E, 0x26, 0x4E, 0x27, + 0x4E, 0x27, 0x4E, 0x23, 0x8E, 0x23, 0x8E, 0x21, 0x0E, 0x71, 0x1F, 0xF0, + 0xEE, 0x09, 0xE1, 0x3E, 0x25, 0xE4, 0x9E, 0x91, 0xD2, 0x1E, 0x43, 0xC8, + 0x39, 0x03, 0x70, 0x20, 0x1F, 0x83, 0x0C, 0x70, 0xEE, 0x07, 0xE0, 0x7E, + 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x77, 0x0E, 0x30, 0xC1, 0xF8, 0xFF, 0x1C, + 0xE7, 0x1D, 0xC7, 0x71, 0xDC, 0xE7, 0xF1, 0xC0, 0x70, 0x1C, 0x07, 0x03, + 0xE0, 0x0F, 0x83, 0x9C, 0x70, 0xE6, 0x06, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, + 0x07, 0xE0, 0x76, 0x06, 0x30, 0xC1, 0x98, 0x0F, 0x00, 0x78, 0x03, 0xE0, + 0xFF, 0x07, 0x38, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x38, 0x7E, 0x07, 0x70, + 0x77, 0x87, 0x3C, 0x71, 0xEF, 0x8F, 0x39, 0x47, 0xC1, 0xC0, 0xF0, 0x7C, + 0x3E, 0x0F, 0x83, 0xC3, 0xC6, 0xBC, 0xFF, 0xFC, 0xE3, 0x8E, 0x10, 0xE0, + 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x01, 0xF0, + 0xF8, 0xEE, 0x09, 0xC1, 0x38, 0x27, 0x04, 0xE0, 0x9C, 0x13, 0x82, 0x70, + 0x4E, 0x08, 0xE2, 0x0F, 0x80, 0xFC, 0x7B, 0xC1, 0x0E, 0x08, 0x70, 0x81, + 0xC4, 0x0E, 0x20, 0x7A, 0x01, 0xD0, 0x0E, 0x80, 0x38, 0x01, 0xC0, 0x04, + 0x00, 0x20, 0x00, 0xFD, 0xFB, 0xDC, 0x38, 0x43, 0x87, 0x10, 0xE1, 0xC4, + 0x38, 0xF2, 0x07, 0x2E, 0x81, 0xD3, 0xA0, 0x34, 0x70, 0x0E, 0x1C, 0x03, + 0x87, 0x00, 0x60, 0x80, 0x10, 0x20, 0xFE, 0xF3, 0xC3, 0x0F, 0x10, 0x39, + 0x00, 0xF0, 0x03, 0x80, 0x1E, 0x01, 0x70, 0x09, 0xC0, 0x8F, 0x08, 0x3D, + 0xF3, 0xF0, 0xFC, 0x7B, 0xC1, 0x8E, 0x08, 0x38, 0x81, 0xE8, 0x07, 0x40, + 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x01, 0xC0, 0x1F, 0x00, 0xFF, 0xD8, + 0x72, 0x1E, 0x43, 0x80, 0xE0, 0x1C, 0x07, 0x01, 0xC0, 0x38, 0x2E, 0x0F, + 0x83, 0x7F, 0xE0, 0xFC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xF0, 0xC1, + 0x06, 0x18, 0x20, 0xC3, 0x04, 0x18, 0x60, 0x83, 0x0C, 0xF3, 0x33, 0x33, + 0x33, 0x33, 0x33, 0x33, 0xF0, 0x18, 0x1C, 0x34, 0x26, 0x62, 0x43, 0xC1, + 0xFF, 0x80, 0xC6, 0x30, 0x7C, 0x63, 0xB1, 0xC0, 0xE1, 0xF3, 0x3B, 0x9D, + 0xCE, 0xFF, 0x80, 0xF0, 0x1C, 0x07, 0x01, 0xDC, 0x7B, 0x9C, 0x77, 0x1D, + 0xC7, 0x71, 0xDC, 0x77, 0x39, 0x3C, 0x3C, 0xED, 0x9F, 0x0E, 0x1C, 0x38, + 0x39, 0x3C, 0x07, 0x80, 0xE0, 0x38, 0xEE, 0x77, 0xB8, 0xEE, 0x3B, 0x8E, + 0xE3, 0xB8, 0xE7, 0x78, 0xEF, 0x3C, 0x66, 0xE6, 0xFE, 0xE0, 0xE0, 0xE0, + 0x72, 0x3C, 0x3E, 0xED, 0xC7, 0xC7, 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xC7, + 0xC0, 0x31, 0xDF, 0xBF, 0x7E, 0xE7, 0x90, 0x60, 0xFC, 0xFE, 0x0C, 0x17, + 0xC0, 0xF0, 0x1C, 0x07, 0x01, 0xDC, 0x7B, 0x9C, 0xE7, 0x39, 0xCE, 0x73, + 0x9C, 0xE7, 0x3B, 0xFF, 0x73, 0x9D, 0xE7, 0x39, 0xCE, 0x73, 0x9D, 0xF0, + 0x1C, 0x71, 0xCF, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x7D, 0xBE, + 0xF0, 0x1C, 0x07, 0x01, 0xCE, 0x71, 0x1C, 0x87, 0x41, 0xF8, 0x77, 0x1C, + 0xE7, 0x1B, 0xEF, 0xF3, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x9D, 0xF0, 0xF7, + 0x38, 0xF7, 0xB9, 0xCE, 0x73, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x9C, 0xE7, + 0x39, 0xCE, 0xFF, 0xFE, 0xF7, 0x1E, 0xE7, 0x39, 0xCE, 0x73, 0x9C, 0xE7, + 0x39, 0xCE, 0xFF, 0xC0, 0x3E, 0x31, 0xB8, 0xFC, 0x7E, 0x3F, 0x1F, 0x8E, + 0xC6, 0x3E, 0x00, 0xF7, 0x1E, 0xE7, 0x1D, 0xC7, 0x71, 0xDC, 0x77, 0x1D, + 0xCE, 0x7F, 0x1C, 0x07, 0x01, 0xC0, 0xF8, 0x00, 0x3C, 0x9C, 0xEE, 0x3B, + 0x8E, 0xE3, 0xB8, 0xEE, 0x39, 0xCE, 0x3F, 0x80, 0xE0, 0x38, 0x0E, 0x07, + 0xC0, 0xF7, 0x7B, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0xF8, 0x7E, 0x73, + 0xC7, 0x8E, 0x39, 0xB0, 0x10, 0xCF, 0x9C, 0x71, 0xC7, 0x1C, 0x71, 0xD3, + 0x80, 0xF7, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x9C, 0xE7, 0x39, 0xCE, 0x3F, + 0xC0, 0xFB, 0xB8, 0x8C, 0x87, 0x43, 0xC0, 0xE0, 0x70, 0x10, 0x08, 0x00, + 0xF7, 0xB6, 0x31, 0x73, 0xA3, 0x3A, 0x3D, 0xA3, 0xDC, 0x18, 0xC1, 0x88, + 0x10, 0x80, 0xFB, 0xB8, 0x8E, 0x83, 0x81, 0xC0, 0xF0, 0x98, 0xCE, 0xEF, + 0x80, 0xF7, 0x62, 0x72, 0x34, 0x34, 0x3C, 0x18, 0x18, 0x10, 0x10, 0x10, + 0xE0, 0xE0, 0xFF, 0x1C, 0x70, 0xE3, 0x87, 0x1C, 0x71, 0xFE, 0x19, 0x8C, + 0x63, 0x18, 0xCC, 0x61, 0x8C, 0x63, 0x18, 0xC3, 0xFF, 0xF8, 0xC3, 0x18, + 0xC6, 0x31, 0x86, 0x33, 0x18, 0xC6, 0x31, 0x98, 0xF0, 0x8E}; + +const GFXglyph FreeSerifBold9pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 5, 0, 1}, // 0x20 ' ' + {0, 3, 12, 6, 1, -11}, // 0x21 '!' + {5, 6, 5, 10, 2, -11}, // 0x22 '"' + {9, 9, 13, 9, 0, -12}, // 0x23 '#' + {24, 8, 14, 9, 1, -12}, // 0x24 '$' + {38, 14, 12, 18, 2, -11}, // 0x25 '%' + {59, 13, 12, 15, 1, -11}, // 0x26 '&' + {79, 2, 5, 5, 1, -11}, // 0x27 ''' + {81, 4, 15, 6, 1, -11}, // 0x28 '(' + {89, 4, 15, 6, 1, -11}, // 0x29 ')' + {97, 7, 7, 9, 2, -11}, // 0x2A '*' + {104, 9, 9, 12, 1, -8}, // 0x2B '+' + {115, 3, 6, 4, 1, -2}, // 0x2C ',' + {118, 4, 2, 6, 1, -4}, // 0x2D '-' + {119, 3, 3, 4, 1, -2}, // 0x2E '.' + {121, 6, 13, 5, 0, -11}, // 0x2F '/' + {131, 9, 12, 9, 0, -11}, // 0x30 '0' + {145, 6, 12, 9, 1, -11}, // 0x31 '1' + {154, 9, 12, 9, 0, -11}, // 0x32 '2' + {168, 8, 12, 9, 0, -11}, // 0x33 '3' + {180, 8, 12, 9, 1, -11}, // 0x34 '4' + {192, 8, 12, 9, 1, -11}, // 0x35 '5' + {204, 8, 12, 9, 1, -11}, // 0x36 '6' + {216, 9, 12, 9, 0, -11}, // 0x37 '7' + {230, 8, 12, 9, 1, -11}, // 0x38 '8' + {242, 9, 12, 9, 0, -11}, // 0x39 '9' + {256, 3, 9, 6, 1, -8}, // 0x3A ':' + {260, 3, 12, 6, 2, -8}, // 0x3B ';' + {265, 10, 10, 12, 1, -9}, // 0x3C '<' + {278, 10, 5, 12, 1, -6}, // 0x3D '=' + {285, 10, 10, 12, 1, -8}, // 0x3E '>' + {298, 7, 12, 9, 1, -11}, // 0x3F '?' + {309, 13, 12, 17, 2, -11}, // 0x40 '@' + {329, 13, 12, 13, 0, -11}, // 0x41 'A' + {349, 11, 12, 12, 0, -11}, // 0x42 'B' + {366, 11, 12, 13, 1, -11}, // 0x43 'C' + {383, 11, 12, 13, 1, -11}, // 0x44 'D' + {400, 11, 12, 12, 1, -11}, // 0x45 'E' + {417, 10, 12, 11, 1, -11}, // 0x46 'F' + {432, 12, 12, 14, 1, -11}, // 0x47 'G' + {450, 12, 12, 14, 1, -11}, // 0x48 'H' + {468, 5, 12, 7, 1, -11}, // 0x49 'I' + {476, 8, 14, 9, 0, -11}, // 0x4A 'J' + {490, 13, 12, 14, 1, -11}, // 0x4B 'K' + {510, 11, 12, 12, 1, -11}, // 0x4C 'L' + {527, 16, 12, 17, 0, -11}, // 0x4D 'M' + {551, 11, 12, 13, 1, -11}, // 0x4E 'N' + {568, 12, 12, 14, 1, -11}, // 0x4F 'O' + {586, 10, 12, 11, 1, -11}, // 0x50 'P' + {601, 12, 15, 14, 1, -11}, // 0x51 'Q' + {624, 12, 12, 13, 1, -11}, // 0x52 'R' + {642, 8, 12, 10, 1, -11}, // 0x53 'S' + {654, 12, 12, 12, 0, -11}, // 0x54 'T' + {672, 11, 12, 13, 1, -11}, // 0x55 'U' + {689, 13, 13, 13, 0, -11}, // 0x56 'V' + {711, 18, 12, 18, 0, -11}, // 0x57 'W' + {738, 13, 12, 13, 0, -11}, // 0x58 'X' + {758, 13, 12, 13, 0, -11}, // 0x59 'Y' + {778, 11, 12, 12, 1, -11}, // 0x5A 'Z' + {795, 4, 15, 6, 1, -11}, // 0x5B '[' + {803, 6, 13, 5, 0, -11}, // 0x5C '\' + {813, 4, 15, 6, 1, -11}, // 0x5D ']' + {821, 8, 7, 10, 1, -11}, // 0x5E '^' + {828, 9, 1, 9, 0, 3}, // 0x5F '_' + {830, 4, 3, 6, 0, -12}, // 0x60 '`' + {832, 9, 9, 9, 0, -8}, // 0x61 'a' + {843, 10, 12, 10, 0, -11}, // 0x62 'b' + {858, 7, 9, 8, 0, -8}, // 0x63 'c' + {866, 10, 12, 10, 0, -11}, // 0x64 'd' + {881, 8, 9, 8, 0, -8}, // 0x65 'e' + {890, 7, 12, 7, 0, -11}, // 0x66 'f' + {901, 7, 13, 9, 1, -8}, // 0x67 'g' + {913, 10, 12, 10, 0, -11}, // 0x68 'h' + {928, 5, 12, 5, 0, -11}, // 0x69 'i' + {936, 6, 16, 7, 0, -11}, // 0x6A 'j' + {948, 10, 12, 10, 0, -11}, // 0x6B 'k' + {963, 5, 12, 5, 0, -11}, // 0x6C 'l' + {971, 15, 9, 15, 0, -8}, // 0x6D 'm' + {988, 10, 9, 10, 0, -8}, // 0x6E 'n' + {1000, 9, 9, 9, 0, -8}, // 0x6F 'o' + {1011, 10, 13, 10, 0, -8}, // 0x70 'p' + {1028, 10, 13, 10, 0, -8}, // 0x71 'q' + {1045, 8, 9, 8, 0, -8}, // 0x72 'r' + {1054, 5, 9, 7, 1, -8}, // 0x73 's' + {1060, 6, 11, 6, 0, -10}, // 0x74 't' + {1069, 10, 9, 10, 0, -8}, // 0x75 'u' + {1081, 9, 9, 9, 0, -8}, // 0x76 'v' + {1092, 12, 9, 13, 0, -8}, // 0x77 'w' + {1106, 9, 9, 9, 0, -8}, // 0x78 'x' + {1117, 8, 13, 9, 0, -8}, // 0x79 'y' + {1130, 7, 9, 8, 1, -8}, // 0x7A 'z' + {1138, 5, 16, 7, 0, -12}, // 0x7B '{' + {1148, 1, 13, 4, 1, -11}, // 0x7C '|' + {1150, 5, 16, 7, 2, -12}, // 0x7D '}' + {1160, 8, 2, 9, 1, -4}}; // 0x7E '~' + +const GFXfont FreeSerifBold9pt7b PROGMEM = { + (uint8_t *)FreeSerifBold9pt7bBitmaps, (GFXglyph *)FreeSerifBold9pt7bGlyphs, + 0x20, 0x7E, 22}; + +// Approx. 1834 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBoldItalic12pt7b.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBoldItalic12pt7b.h new file mode 100644 index 0000000..d6674ce --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBoldItalic12pt7b.h @@ -0,0 +1,294 @@ +#pragma once +#include + +const uint8_t FreeSerifBoldItalic12pt7bBitmaps[] PROGMEM = { + 0x07, 0x07, 0x07, 0x0F, 0x0E, 0x0E, 0x0C, 0x0C, 0x08, 0x18, 0x10, 0x00, + 0x00, 0x60, 0xF0, 0xF0, 0x60, 0x61, 0xF1, 0xF8, 0xF8, 0x6C, 0x34, 0x12, + 0x08, 0x01, 0x8C, 0x06, 0x60, 0x31, 0x80, 0xCC, 0x06, 0x30, 0xFF, 0xF0, + 0xC6, 0x03, 0x18, 0x0C, 0xC0, 0x63, 0x0F, 0xFF, 0x0C, 0x60, 0x33, 0x01, + 0x8C, 0x06, 0x30, 0x19, 0x80, 0x00, 0x80, 0x08, 0x07, 0xC1, 0x96, 0x31, + 0x33, 0x13, 0x3A, 0x23, 0xE0, 0x1E, 0x01, 0xF0, 0x07, 0x80, 0x7C, 0x05, + 0xC4, 0xCC, 0x48, 0xCC, 0x8C, 0xF8, 0x83, 0x30, 0x1E, 0x01, 0x00, 0x00, + 0x02, 0x07, 0x83, 0x03, 0x9F, 0x81, 0xC4, 0x20, 0x71, 0x10, 0x3C, 0x44, + 0x0E, 0x22, 0x03, 0x88, 0x80, 0xE4, 0x40, 0x1E, 0x31, 0xE0, 0x08, 0xE4, + 0x06, 0x71, 0x01, 0x3C, 0x40, 0x8E, 0x10, 0x23, 0x88, 0x10, 0xE2, 0x04, + 0x39, 0x02, 0x07, 0x80, 0x00, 0xF0, 0x01, 0x98, 0x03, 0x98, 0x03, 0x98, + 0x03, 0xB0, 0x03, 0xE0, 0x03, 0x80, 0x0F, 0x9F, 0x19, 0xCE, 0x31, 0xCC, + 0x61, 0xC8, 0xE1, 0xC8, 0xE0, 0xF0, 0xE0, 0xE0, 0xF0, 0x70, 0x78, 0x79, + 0x3F, 0xBE, 0x7F, 0xED, 0x20, 0x02, 0x08, 0x20, 0xC3, 0x0E, 0x18, 0x30, + 0xE1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x20, 0x40, 0x80, 0x81, 0x01, 0x00, + 0x10, 0x10, 0x20, 0x20, 0x40, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x70, 0xE1, + 0x83, 0x0C, 0x18, 0x61, 0x86, 0x00, 0x00, 0x0C, 0x33, 0x6C, 0x9B, 0xAE, + 0x1C, 0x3F, 0xEC, 0x9B, 0x36, 0x0C, 0x02, 0x00, 0x06, 0x00, 0x60, 0x06, + 0x00, 0x60, 0x06, 0x0F, 0xFF, 0xFF, 0xF0, 0x60, 0x06, 0x00, 0x60, 0x06, + 0x00, 0x60, 0x31, 0xCE, 0x31, 0x08, 0x98, 0xFF, 0xFF, 0xC0, 0x6F, 0xF6, + 0x01, 0x80, 0x60, 0x30, 0x0C, 0x07, 0x01, 0x80, 0xE0, 0x30, 0x1C, 0x06, + 0x01, 0x80, 0xC0, 0x30, 0x18, 0x06, 0x03, 0x00, 0x03, 0x81, 0xC8, 0x71, + 0x1C, 0x33, 0x86, 0xE1, 0xDC, 0x3B, 0x87, 0xE0, 0xFC, 0x3B, 0x87, 0x70, + 0xEC, 0x39, 0x87, 0x31, 0xC2, 0x30, 0x3C, 0x00, 0x01, 0xC3, 0xF0, 0x38, + 0x0E, 0x03, 0x81, 0xE0, 0x70, 0x1C, 0x0F, 0x03, 0x80, 0xE0, 0x38, 0x1E, + 0x07, 0x01, 0xC0, 0xF0, 0xFF, 0x80, 0x07, 0x81, 0xF8, 0x47, 0x90, 0x70, + 0x0E, 0x01, 0xC0, 0x30, 0x0E, 0x01, 0x80, 0x60, 0x18, 0x06, 0x01, 0x80, + 0x40, 0x8F, 0xF3, 0xFC, 0xFF, 0x80, 0x07, 0xC3, 0x3C, 0x03, 0x80, 0x70, + 0x0C, 0x03, 0x81, 0xC0, 0xFC, 0x07, 0xC0, 0x78, 0x07, 0x00, 0xE0, 0x1C, + 0x03, 0x30, 0xE7, 0x10, 0x7C, 0x00, 0x00, 0x10, 0x01, 0x80, 0x3C, 0x03, + 0xE0, 0x2E, 0x02, 0x70, 0x23, 0x82, 0x38, 0x21, 0xC2, 0x0E, 0x1F, 0xF9, + 0xFF, 0xC0, 0x38, 0x01, 0xC0, 0x1C, 0x00, 0xE0, 0x07, 0xF0, 0x7E, 0x0F, + 0xE0, 0x80, 0x08, 0x01, 0xE0, 0x1F, 0x83, 0xF8, 0x03, 0xC0, 0x1C, 0x00, + 0xC0, 0x0C, 0x00, 0xC0, 0x08, 0x61, 0x8F, 0x30, 0x7C, 0x00, 0x00, 0x60, + 0x78, 0x1C, 0x0F, 0x01, 0xC0, 0x70, 0x1F, 0xC3, 0x8C, 0xE1, 0xDC, 0x3B, + 0x87, 0x61, 0xEC, 0x3D, 0x87, 0x31, 0xE2, 0x38, 0x3C, 0x00, 0x3F, 0xEF, + 0xF9, 0xFF, 0x60, 0xC8, 0x18, 0x06, 0x00, 0x80, 0x30, 0x0C, 0x01, 0x80, + 0x60, 0x1C, 0x03, 0x00, 0xC0, 0x18, 0x06, 0x00, 0x03, 0x81, 0x88, 0x61, + 0x8C, 0x31, 0x86, 0x38, 0xC7, 0xB0, 0x78, 0x0F, 0x86, 0x71, 0x87, 0x60, + 0x6C, 0x0D, 0x81, 0xB0, 0x63, 0x18, 0x3E, 0x00, 0x07, 0x81, 0xC8, 0x71, + 0x8E, 0x33, 0xC6, 0x70, 0xCE, 0x39, 0xC7, 0x38, 0xE3, 0x38, 0x3F, 0x01, + 0xC0, 0x38, 0x0E, 0x03, 0x81, 0xC0, 0xE0, 0x00, 0x0C, 0x3C, 0x78, 0x60, + 0x00, 0x00, 0x00, 0x61, 0xE3, 0xC3, 0x00, 0x0E, 0x0F, 0x0F, 0x0E, 0x00, + 0x00, 0x00, 0x00, 0x38, 0x38, 0x38, 0x18, 0x10, 0x20, 0x40, 0x00, 0x10, + 0x07, 0x01, 0xF0, 0x7C, 0x3F, 0x0F, 0x80, 0xE0, 0x0F, 0x80, 0x3E, 0x00, + 0xF8, 0x03, 0xE0, 0x07, 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0xFF, 0x80, 0x07, 0x00, 0x3F, 0x00, 0x3E, 0x00, 0x7C, 0x00, + 0xF8, 0x01, 0xE0, 0x1F, 0x07, 0xE0, 0xF8, 0x1F, 0x01, 0xE0, 0x0C, 0x00, + 0x00, 0x1E, 0x19, 0x8C, 0xE6, 0x70, 0x38, 0x38, 0x1C, 0x18, 0x18, 0x08, + 0x08, 0x00, 0x00, 0x03, 0x03, 0xC1, 0xE0, 0x60, 0x00, 0x03, 0xF0, 0x07, + 0x06, 0x06, 0x00, 0x86, 0x0E, 0x66, 0x0D, 0xDB, 0x0C, 0xE7, 0x06, 0x33, + 0x83, 0x31, 0xC3, 0x18, 0xE1, 0x8C, 0x70, 0xCC, 0x4C, 0x66, 0x46, 0x1F, + 0xC1, 0x80, 0x00, 0x30, 0x10, 0x07, 0xF0, 0x00, 0x10, 0x00, 0x30, 0x00, + 0x70, 0x00, 0x70, 0x00, 0xF0, 0x01, 0xF0, 0x01, 0x78, 0x03, 0x78, 0x02, + 0x38, 0x04, 0x38, 0x0C, 0x38, 0x0F, 0xF8, 0x18, 0x3C, 0x30, 0x3C, 0x20, + 0x3C, 0x60, 0x3C, 0xF8, 0x7F, 0x1F, 0xFC, 0x07, 0x9E, 0x07, 0x0F, 0x07, + 0x0F, 0x0F, 0x0F, 0x0F, 0x1E, 0x0E, 0x3C, 0x0F, 0xE0, 0x1E, 0x3C, 0x1E, + 0x1E, 0x1C, 0x1E, 0x3C, 0x1E, 0x3C, 0x1E, 0x3C, 0x3E, 0x38, 0x3C, 0x7C, + 0x78, 0xFF, 0xE0, 0x01, 0xF2, 0x0E, 0x1C, 0x38, 0x18, 0xE0, 0x33, 0xC0, + 0x4F, 0x00, 0x9E, 0x00, 0x7C, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, + 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x1E, 0x04, 0x1E, 0x30, 0x0F, 0x80, 0x1F, + 0xFC, 0x01, 0xE3, 0xC0, 0x70, 0x78, 0x1C, 0x0E, 0x0F, 0x03, 0xC3, 0xC0, + 0xF0, 0xE0, 0x3C, 0x38, 0x0F, 0x1E, 0x03, 0xC7, 0x81, 0xF1, 0xC0, 0x78, + 0xF0, 0x1E, 0x3C, 0x0F, 0x0F, 0x03, 0xC3, 0x81, 0xC1, 0xE1, 0xE0, 0xFF, + 0xE0, 0x00, 0x1F, 0xFF, 0x83, 0xC1, 0xC1, 0xC0, 0x40, 0xE0, 0x20, 0xF0, + 0x00, 0x78, 0xC0, 0x38, 0x40, 0x1F, 0xE0, 0x1E, 0x70, 0x0F, 0x18, 0x07, + 0x08, 0x03, 0x84, 0x03, 0xC0, 0x61, 0xE0, 0x20, 0xE0, 0x30, 0xF8, 0x78, + 0xFF, 0xFC, 0x00, 0x1F, 0xFF, 0x07, 0x87, 0x07, 0x02, 0x07, 0x02, 0x0F, + 0x00, 0x0F, 0x18, 0x0E, 0x10, 0x0F, 0xF0, 0x1E, 0x70, 0x1E, 0x30, 0x1C, + 0x20, 0x1C, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x38, 0x00, 0x7C, 0x00, 0xFE, + 0x00, 0x01, 0xF9, 0x03, 0xC3, 0x83, 0x81, 0xC3, 0x80, 0x43, 0xC0, 0x23, + 0xC0, 0x01, 0xE0, 0x01, 0xF0, 0x00, 0xF0, 0x3F, 0xF8, 0x0F, 0x3C, 0x07, + 0x9E, 0x03, 0xCF, 0x01, 0xC3, 0x80, 0xE1, 0xE0, 0xF0, 0x78, 0x70, 0x0F, + 0xE0, 0x00, 0x1F, 0xE7, 0xF0, 0x78, 0x3C, 0x07, 0x83, 0xC0, 0x70, 0x3C, + 0x0F, 0x03, 0x80, 0xF0, 0x78, 0x0E, 0x07, 0x80, 0xE0, 0x70, 0x1F, 0xFF, + 0x01, 0xE0, 0xF0, 0x1C, 0x0F, 0x03, 0xC0, 0xE0, 0x3C, 0x1E, 0x03, 0xC1, + 0xE0, 0x38, 0x1E, 0x07, 0xC3, 0xE0, 0xFE, 0x7F, 0x00, 0x1F, 0xC1, 0xE0, + 0x70, 0x1C, 0x0F, 0x03, 0xC0, 0xE0, 0x38, 0x1E, 0x07, 0x81, 0xC0, 0x70, + 0x3C, 0x0F, 0x03, 0x81, 0xF0, 0xFE, 0x00, 0x01, 0xFC, 0x03, 0xC0, 0x0F, + 0x00, 0x38, 0x00, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x70, 0x01, 0xC0, 0x0F, + 0x00, 0x3C, 0x00, 0xE0, 0x07, 0x80, 0x1E, 0x0E, 0x70, 0x3B, 0xC0, 0xCE, + 0x01, 0xF0, 0x00, 0x1F, 0xEF, 0x83, 0xC1, 0x81, 0xC1, 0x80, 0xE1, 0x80, + 0xF1, 0x80, 0x79, 0x00, 0x39, 0x00, 0x1F, 0x80, 0x1F, 0xE0, 0x0F, 0x70, + 0x07, 0x3C, 0x07, 0x8E, 0x03, 0xC7, 0x01, 0xE3, 0xC0, 0xE0, 0xE0, 0xF8, + 0x78, 0xFE, 0xFE, 0x00, 0x1F, 0xE0, 0x0F, 0x00, 0x1C, 0x00, 0x38, 0x00, + 0xF0, 0x01, 0xE0, 0x03, 0x80, 0x07, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x70, + 0x00, 0xE0, 0x03, 0xC0, 0x27, 0x00, 0xCE, 0x03, 0x3C, 0x1E, 0xFF, 0xFC, + 0x0F, 0x80, 0x7E, 0x0F, 0x00, 0xF0, 0x1E, 0x03, 0xE0, 0x3C, 0x0F, 0x80, + 0xB8, 0x17, 0x01, 0x70, 0x5E, 0x02, 0xF1, 0xBC, 0x05, 0xE2, 0x70, 0x11, + 0xC8, 0xE0, 0x23, 0xB3, 0xC0, 0x47, 0x47, 0x81, 0x0F, 0x8E, 0x02, 0x1E, + 0x1C, 0x04, 0x38, 0x78, 0x08, 0x70, 0xF0, 0x30, 0xC3, 0xE0, 0xF9, 0x8F, + 0xE0, 0x1F, 0x03, 0xE0, 0xF0, 0x38, 0x1E, 0x02, 0x03, 0xE0, 0xC0, 0xBC, + 0x10, 0x13, 0xC2, 0x02, 0x78, 0x40, 0x47, 0x90, 0x10, 0xF2, 0x02, 0x0F, + 0x40, 0x41, 0xE8, 0x18, 0x1E, 0x02, 0x03, 0xC0, 0x40, 0x38, 0x08, 0x06, + 0x03, 0x00, 0x40, 0x10, 0x08, 0x00, 0x01, 0xF8, 0x07, 0x1C, 0x0E, 0x0E, + 0x1E, 0x0F, 0x3C, 0x0F, 0x3C, 0x0F, 0x78, 0x0F, 0x78, 0x0F, 0xF8, 0x1F, + 0xF0, 0x1E, 0xF0, 0x1E, 0xF0, 0x3C, 0xF0, 0x3C, 0xF0, 0x78, 0x70, 0x70, + 0x38, 0xE0, 0x1F, 0x80, 0x1F, 0xFC, 0x07, 0x9E, 0x07, 0x0F, 0x07, 0x0F, + 0x0F, 0x0F, 0x0F, 0x0F, 0x0E, 0x1E, 0x0E, 0x3C, 0x1F, 0xF0, 0x1E, 0x00, + 0x1C, 0x00, 0x1C, 0x00, 0x3C, 0x00, 0x38, 0x00, 0x38, 0x00, 0x7C, 0x00, + 0xFE, 0x00, 0x01, 0xF8, 0x07, 0x1C, 0x0E, 0x0E, 0x1E, 0x0F, 0x3C, 0x0F, + 0x3C, 0x0F, 0x78, 0x0F, 0x78, 0x1F, 0xF8, 0x1F, 0xF0, 0x1E, 0xF0, 0x1E, + 0xF0, 0x3C, 0xF0, 0x3C, 0xF0, 0x78, 0x70, 0x70, 0x39, 0xC0, 0x0E, 0x00, + 0x08, 0x02, 0x3F, 0x04, 0x7F, 0xF8, 0x83, 0xF0, 0x1F, 0xF8, 0x07, 0x9E, + 0x07, 0x8F, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x1E, 0x0E, 0x3C, + 0x1F, 0xF0, 0x1E, 0xF0, 0x1C, 0xF0, 0x3C, 0xF0, 0x3C, 0x78, 0x3C, 0x78, + 0x3C, 0x78, 0x7C, 0x3C, 0xFE, 0x3E, 0x07, 0x91, 0xC7, 0x18, 0x73, 0x82, + 0x38, 0x23, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x01, 0xE0, 0x1E, + 0x40, 0xE4, 0x0E, 0x60, 0xCE, 0x1C, 0x9F, 0x00, 0x7F, 0xFE, 0xE7, 0x9D, + 0x0E, 0x16, 0x3C, 0x20, 0x78, 0x40, 0xE0, 0x01, 0xC0, 0x07, 0x80, 0x0F, + 0x00, 0x1C, 0x00, 0x38, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0x80, 0x0F, 0x00, + 0x1E, 0x00, 0xFF, 0x00, 0x7F, 0x1F, 0x3C, 0x0E, 0x38, 0x04, 0x38, 0x0C, + 0x78, 0x08, 0x78, 0x08, 0x70, 0x08, 0x70, 0x10, 0xF0, 0x10, 0xF0, 0x10, + 0xF0, 0x10, 0xF0, 0x20, 0xF0, 0x20, 0xF0, 0x20, 0xF0, 0x40, 0x78, 0xC0, + 0x3F, 0x00, 0xFF, 0x1F, 0x3C, 0x06, 0x3C, 0x04, 0x3C, 0x08, 0x3C, 0x08, + 0x3C, 0x10, 0x1C, 0x20, 0x1C, 0x20, 0x1E, 0x40, 0x1E, 0x80, 0x1E, 0x80, + 0x1F, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0C, 0x00, 0x08, 0x00, 0xFE, 0x7C, + 0x79, 0xE1, 0xC1, 0x8F, 0x0E, 0x08, 0x78, 0x70, 0x43, 0xC7, 0x84, 0x1E, + 0x3E, 0x20, 0x72, 0xF2, 0x03, 0x97, 0x90, 0x1D, 0x1D, 0x00, 0xE8, 0xE8, + 0x07, 0x87, 0x80, 0x3C, 0x3C, 0x01, 0xC1, 0xC0, 0x0E, 0x0E, 0x00, 0x20, + 0x60, 0x01, 0x02, 0x00, 0x1F, 0xCF, 0x83, 0xC1, 0x81, 0xE1, 0x80, 0x71, + 0x80, 0x39, 0x80, 0x1F, 0x80, 0x07, 0x80, 0x03, 0x80, 0x01, 0xE0, 0x01, + 0xF0, 0x00, 0xB8, 0x00, 0x9C, 0x00, 0x8F, 0x00, 0x83, 0x80, 0xC1, 0xC0, + 0xE0, 0xF0, 0xF9, 0xFE, 0x00, 0xFE, 0x7C, 0xE0, 0x63, 0x81, 0x0F, 0x08, + 0x1C, 0x40, 0x71, 0x01, 0xE8, 0x03, 0xC0, 0x0E, 0x00, 0x38, 0x01, 0xE0, + 0x07, 0x80, 0x1C, 0x00, 0x70, 0x03, 0xC0, 0x0F, 0x00, 0xFF, 0x00, 0x1F, + 0xFE, 0x38, 0x78, 0x60, 0xF1, 0x83, 0xC2, 0x0F, 0x00, 0x1E, 0x00, 0x78, + 0x01, 0xE0, 0x07, 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xF8, 0x01, 0xE0, 0x47, + 0x81, 0x1F, 0x06, 0x3C, 0x3C, 0xFF, 0xF0, 0x07, 0xC1, 0x80, 0xE0, 0x30, + 0x0C, 0x03, 0x01, 0xC0, 0x60, 0x18, 0x06, 0x03, 0x80, 0xC0, 0x30, 0x0C, + 0x07, 0x01, 0xC0, 0x60, 0x18, 0x0E, 0x03, 0xE0, 0xC3, 0x06, 0x18, 0x61, + 0x83, 0x0C, 0x30, 0xC1, 0x86, 0x18, 0x60, 0xC3, 0x0F, 0x81, 0xC0, 0xE0, + 0x60, 0x30, 0x18, 0x1C, 0x0C, 0x06, 0x03, 0x03, 0x81, 0x80, 0xC0, 0x60, + 0x70, 0x38, 0x18, 0x0C, 0x0E, 0x1F, 0x00, 0x0C, 0x07, 0x81, 0xE0, 0xDC, + 0x33, 0x18, 0xC6, 0x1B, 0x06, 0xC0, 0xC0, 0xFF, 0xF0, 0xC7, 0x0C, 0x30, + 0x07, 0x70, 0xCE, 0x1C, 0xE3, 0x8E, 0x70, 0xC7, 0x0C, 0x71, 0xCE, 0x1C, + 0xE1, 0x8E, 0x79, 0xE9, 0xA7, 0x1C, 0x02, 0x07, 0xC0, 0x38, 0x06, 0x01, + 0xC0, 0x38, 0x06, 0x71, 0xF7, 0x38, 0xE7, 0x1C, 0xC3, 0xB8, 0x77, 0x1C, + 0xE3, 0xB8, 0xE7, 0x18, 0xE6, 0x0F, 0x80, 0x07, 0x0C, 0xCE, 0x66, 0x07, + 0x03, 0x83, 0x81, 0xC0, 0xE0, 0x70, 0xBC, 0x87, 0x80, 0x00, 0x08, 0x03, + 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x70, 0x01, 0xC0, 0x77, 0x03, 0x3C, 0x18, + 0xE0, 0xE3, 0x87, 0x0E, 0x1C, 0x70, 0x71, 0xC3, 0x87, 0x0E, 0x3C, 0x38, + 0xE8, 0xE5, 0xA1, 0xE7, 0x00, 0x07, 0x0C, 0xCE, 0x66, 0x37, 0x33, 0xBB, + 0xB1, 0xE0, 0xE0, 0x70, 0xB8, 0x87, 0x80, 0x00, 0x38, 0x01, 0xB0, 0x0C, + 0xC0, 0x30, 0x01, 0xC0, 0x07, 0x00, 0x7E, 0x00, 0xE0, 0x03, 0x80, 0x0E, + 0x00, 0x30, 0x01, 0xC0, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x03, 0x80, 0x0E, + 0x00, 0x38, 0x00, 0xC0, 0x33, 0x00, 0xD8, 0x01, 0xC0, 0x00, 0x03, 0x80, + 0x73, 0xC7, 0x1C, 0x38, 0xE1, 0xCF, 0x06, 0x70, 0x1E, 0x01, 0x00, 0x1C, + 0x00, 0xF8, 0x07, 0xF0, 0xC7, 0x8C, 0x0C, 0x60, 0x63, 0x86, 0x07, 0xE0, + 0x01, 0x00, 0xF8, 0x01, 0x80, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x31, 0xC3, + 0xBE, 0x1E, 0x70, 0xE3, 0x8F, 0x38, 0x71, 0xC3, 0x8E, 0x1C, 0xE1, 0xC7, + 0x0E, 0x3A, 0x71, 0xD3, 0x0F, 0x00, 0x1C, 0x71, 0xC0, 0x00, 0x6F, 0x8E, + 0x31, 0xC7, 0x18, 0x63, 0x8E, 0xBC, 0xE0, 0x00, 0xE0, 0x1C, 0x03, 0x80, + 0x00, 0x00, 0x0F, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x70, 0x0E, 0x01, 0xC0, + 0x38, 0x0E, 0x01, 0xC0, 0x38, 0x06, 0x01, 0xC3, 0x38, 0x6E, 0x07, 0x80, + 0x01, 0x00, 0xF8, 0x01, 0xC0, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x33, 0xE3, + 0x8C, 0x1C, 0xC0, 0xE4, 0x06, 0x40, 0x7E, 0x03, 0xF0, 0x1D, 0x81, 0xCE, + 0x0E, 0x72, 0x71, 0xA3, 0x8E, 0x00, 0x06, 0x7C, 0x70, 0xE1, 0xC3, 0x0E, + 0x1C, 0x38, 0x61, 0xC3, 0x87, 0x0C, 0x38, 0x72, 0xE9, 0xE0, 0x3C, 0x73, + 0xC7, 0x7D, 0x71, 0xE7, 0x9C, 0xF1, 0xCE, 0x3C, 0xF3, 0x8E, 0x39, 0xC3, + 0x8E, 0x71, 0xC3, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xD7, 0x1C, 0x7B, 0x8E, + 0x1C, 0x3C, 0xF1, 0xD7, 0x1E, 0x73, 0xCE, 0x3C, 0xE3, 0x8E, 0x39, 0xC7, + 0x9C, 0x71, 0xC7, 0x1D, 0x71, 0xEE, 0x1C, 0x0F, 0x06, 0x63, 0x9D, 0xC7, + 0x71, 0xF8, 0x7E, 0x3F, 0x8E, 0xE3, 0xB9, 0xC6, 0x60, 0xF0, 0x0F, 0x38, + 0x1F, 0x70, 0x71, 0xC1, 0xC7, 0x0E, 0x1C, 0x38, 0xF0, 0xE3, 0x83, 0x8E, + 0x1C, 0x70, 0x71, 0xC1, 0xCE, 0x07, 0xE0, 0x38, 0x00, 0xE0, 0x03, 0x80, + 0x3F, 0x00, 0x07, 0x70, 0xCE, 0x18, 0xE3, 0x8E, 0x70, 0xE7, 0x1C, 0xF1, + 0xCE, 0x1C, 0xE3, 0x8E, 0x38, 0xE7, 0x87, 0xB0, 0x07, 0x00, 0x70, 0x0F, + 0x03, 0xF8, 0x0D, 0xDF, 0x71, 0xAC, 0xF0, 0x38, 0x0E, 0x03, 0x81, 0xC0, + 0x70, 0x1C, 0x0E, 0x00, 0x1D, 0x99, 0x8C, 0x46, 0x23, 0x80, 0xE0, 0x70, + 0x1C, 0x06, 0x23, 0x19, 0x17, 0x00, 0x0C, 0x10, 0xE3, 0xF3, 0x86, 0x1C, + 0x38, 0x71, 0xC3, 0x87, 0x0E, 0x9E, 0x38, 0x00, 0xF8, 0xE3, 0x8E, 0x38, + 0xC3, 0x9C, 0x71, 0xC7, 0x18, 0x71, 0x87, 0x38, 0xE3, 0x8E, 0xFA, 0xF3, + 0xAE, 0x3C, 0xF0, 0xDC, 0x33, 0x0C, 0xC2, 0x31, 0x8C, 0xC3, 0x60, 0xF0, + 0x38, 0x0C, 0x02, 0x00, 0xE0, 0x86, 0xE3, 0x0C, 0xC6, 0x19, 0x9C, 0x23, + 0x78, 0xC7, 0xF9, 0x0E, 0x74, 0x1C, 0xF0, 0x31, 0xC0, 0x43, 0x00, 0x84, + 0x00, 0x0E, 0x31, 0xF3, 0x83, 0xA0, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x1C, + 0x00, 0xE0, 0x0B, 0x02, 0x5D, 0x3C, 0xF1, 0xC3, 0x00, 0x04, 0x67, 0x8C, + 0x79, 0x87, 0x10, 0xE2, 0x1C, 0x81, 0x90, 0x3A, 0x07, 0x80, 0xF0, 0x1C, + 0x03, 0x00, 0x40, 0x08, 0x32, 0x07, 0x80, 0x3F, 0xCF, 0xE6, 0x30, 0x08, + 0x04, 0x02, 0x01, 0x00, 0xC0, 0x30, 0x1E, 0x0F, 0x98, 0x76, 0x07, 0x00, + 0x01, 0xE0, 0x70, 0x1C, 0x03, 0x80, 0x60, 0x1C, 0x03, 0x80, 0x60, 0x0C, + 0x03, 0x80, 0xF0, 0x3C, 0x07, 0x00, 0x40, 0x0C, 0x01, 0x80, 0x70, 0x0E, + 0x01, 0xC0, 0x30, 0x03, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0xE0, + 0x18, 0x06, 0x01, 0x80, 0xE0, 0x38, 0x0C, 0x03, 0x00, 0xC0, 0x10, 0x1F, + 0x07, 0x03, 0x80, 0xE0, 0x30, 0x0C, 0x07, 0x01, 0x80, 0xE0, 0xE0, 0x00, + 0x38, 0x0F, 0xCD, 0x1F, 0x80, 0xE0}; + +const GFXglyph FreeSerifBoldItalic12pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 6, 0, 1}, // 0x20 ' ' + {0, 8, 17, 9, 2, -15}, // 0x21 '!' + {17, 9, 7, 13, 4, -15}, // 0x22 '"' + {25, 14, 16, 12, -1, -15}, // 0x23 '#' + {53, 12, 20, 12, 0, -17}, // 0x24 '$' + {83, 18, 18, 20, 1, -16}, // 0x25 '%' + {124, 16, 17, 19, 0, -15}, // 0x26 '&' + {158, 3, 7, 7, 3, -15}, // 0x27 ''' + {161, 7, 21, 8, 1, -15}, // 0x28 '(' + {180, 7, 21, 8, -1, -15}, // 0x29 ')' + {199, 10, 10, 12, 1, -15}, // 0x2A '*' + {212, 12, 12, 14, 1, -11}, // 0x2B '+' + {230, 5, 8, 6, -2, -3}, // 0x2C ',' + {235, 6, 3, 8, 0, -6}, // 0x2D '-' + {238, 4, 4, 6, 0, -2}, // 0x2E '.' + {240, 10, 16, 8, 0, -15}, // 0x2F '/' + {260, 11, 17, 12, 0, -15}, // 0x30 '0' + {284, 10, 17, 12, 0, -15}, // 0x31 '1' + {306, 11, 17, 12, 0, -15}, // 0x32 '2' + {330, 11, 17, 12, 0, -15}, // 0x33 '3' + {354, 13, 16, 12, 0, -15}, // 0x34 '4' + {380, 12, 17, 12, 0, -15}, // 0x35 '5' + {406, 11, 17, 12, 1, -15}, // 0x36 '6' + {430, 11, 16, 12, 2, -15}, // 0x37 '7' + {452, 11, 17, 12, 0, -15}, // 0x38 '8' + {476, 11, 17, 12, 0, -15}, // 0x39 '9' + {500, 7, 12, 6, 0, -10}, // 0x3A ':' + {511, 8, 15, 6, -1, -10}, // 0x3B ';' + {526, 12, 13, 14, 1, -12}, // 0x3C '<' + {546, 12, 6, 14, 2, -8}, // 0x3D '=' + {555, 13, 13, 14, 1, -12}, // 0x3E '>' + {577, 9, 17, 12, 2, -15}, // 0x3F '?' + {597, 17, 16, 20, 1, -15}, // 0x40 '@' + {631, 16, 17, 17, 0, -15}, // 0x41 'A' + {665, 16, 17, 15, 0, -15}, // 0x42 'B' + {699, 15, 17, 15, 1, -15}, // 0x43 'C' + {731, 18, 17, 17, 0, -15}, // 0x44 'D' + {770, 17, 17, 15, 0, -15}, // 0x45 'E' + {807, 16, 17, 15, 0, -15}, // 0x46 'F' + {841, 17, 17, 17, 1, -15}, // 0x47 'G' + {878, 20, 17, 18, 0, -15}, // 0x48 'H' + {921, 10, 17, 9, 0, -15}, // 0x49 'I' + {943, 14, 18, 12, 0, -15}, // 0x4A 'J' + {975, 17, 17, 16, 0, -15}, // 0x4B 'K' + {1012, 15, 17, 15, 0, -15}, // 0x4C 'L' + {1044, 23, 17, 21, 0, -15}, // 0x4D 'M' + {1093, 19, 17, 17, 0, -15}, // 0x4E 'N' + {1134, 16, 17, 16, 1, -15}, // 0x4F 'O' + {1168, 16, 17, 14, 0, -15}, // 0x50 'P' + {1202, 16, 21, 16, 1, -15}, // 0x51 'Q' + {1244, 16, 17, 16, 0, -15}, // 0x52 'R' + {1278, 12, 17, 12, 0, -15}, // 0x53 'S' + {1304, 15, 17, 14, 2, -15}, // 0x54 'T' + {1336, 16, 17, 17, 3, -15}, // 0x55 'U' + {1370, 16, 16, 17, 3, -15}, // 0x56 'V' + {1402, 21, 16, 22, 3, -15}, // 0x57 'W' + {1444, 17, 17, 17, 0, -15}, // 0x58 'X' + {1481, 14, 17, 15, 3, -15}, // 0x59 'Y' + {1511, 15, 17, 13, 0, -15}, // 0x5A 'Z' + {1543, 10, 20, 8, -1, -15}, // 0x5B '[' + {1568, 6, 16, 10, 3, -15}, // 0x5C '\' + {1580, 9, 20, 8, -1, -15}, // 0x5D ']' + {1603, 10, 9, 14, 2, -15}, // 0x5E '^' + {1615, 12, 1, 12, 0, 4}, // 0x5F '_' + {1617, 5, 4, 8, 2, -15}, // 0x60 '`' + {1620, 12, 12, 12, 0, -10}, // 0x61 'a' + {1638, 11, 18, 12, 1, -16}, // 0x62 'b' + {1663, 9, 12, 10, 1, -10}, // 0x63 'c' + {1677, 14, 18, 12, 0, -16}, // 0x64 'd' + {1709, 9, 12, 10, 1, -10}, // 0x65 'e' + {1723, 14, 22, 12, -2, -16}, // 0x66 'f' + {1762, 13, 16, 12, -1, -10}, // 0x67 'g' + {1788, 13, 18, 13, 0, -16}, // 0x68 'h' + {1818, 6, 17, 7, 1, -15}, // 0x69 'i' + {1831, 11, 21, 8, -2, -15}, // 0x6A 'j' + {1860, 13, 18, 12, 0, -16}, // 0x6B 'k' + {1890, 7, 18, 7, 1, -16}, // 0x6C 'l' + {1906, 18, 12, 18, 0, -10}, // 0x6D 'm' + {1933, 12, 12, 13, 0, -10}, // 0x6E 'n' + {1951, 10, 12, 11, 1, -10}, // 0x6F 'o' + {1966, 14, 16, 12, -2, -10}, // 0x70 'p' + {1994, 12, 16, 12, 0, -10}, // 0x71 'q' + {2018, 10, 11, 10, 0, -10}, // 0x72 'r' + {2032, 9, 12, 9, 0, -10}, // 0x73 's' + {2046, 7, 15, 7, 1, -13}, // 0x74 't' + {2060, 12, 12, 13, 1, -10}, // 0x75 'u' + {2078, 10, 11, 11, 1, -10}, // 0x76 'v' + {2092, 15, 11, 16, 1, -10}, // 0x77 'w' + {2113, 13, 12, 11, -1, -10}, // 0x78 'x' + {2133, 11, 16, 10, -1, -10}, // 0x79 'y' + {2155, 10, 13, 10, 0, -10}, // 0x7A 'z' + {2172, 11, 21, 8, 0, -16}, // 0x7B '{' + {2201, 2, 16, 6, 3, -15}, // 0x7C '|' + {2205, 10, 21, 8, -3, -16}, // 0x7D '}' + {2232, 11, 4, 14, 1, -7}}; // 0x7E '~' + +const GFXfont FreeSerifBoldItalic12pt7b PROGMEM = { + (uint8_t *)FreeSerifBoldItalic12pt7bBitmaps, + (GFXglyph *)FreeSerifBoldItalic12pt7bGlyphs, 0x20, 0x7E, 29}; + +// Approx. 2910 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBoldItalic18pt7b.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBoldItalic18pt7b.h new file mode 100644 index 0000000..8e75b24 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBoldItalic18pt7b.h @@ -0,0 +1,502 @@ +#pragma once +#include + +const uint8_t FreeSerifBoldItalic18pt7bBitmaps[] PROGMEM = { + 0x01, 0xC0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, 0x80, 0xF0, 0x3C, 0x07, + 0x80, 0xE0, 0x1C, 0x03, 0x00, 0x60, 0x0C, 0x03, 0x00, 0x60, 0x08, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x81, 0xF8, 0x3F, 0x07, 0xE0, 0x78, 0x00, 0x38, + 0x1D, 0xE0, 0xF7, 0x83, 0xDC, 0x0E, 0x70, 0x39, 0xC0, 0xE6, 0x03, 0x18, + 0x0C, 0x40, 0x23, 0x01, 0x80, 0x00, 0x38, 0x60, 0x07, 0x0E, 0x00, 0x70, + 0xC0, 0x06, 0x1C, 0x00, 0xE1, 0xC0, 0x0E, 0x38, 0x01, 0xC3, 0x81, 0xFF, + 0xFF, 0x1F, 0xFF, 0xE1, 0xFF, 0xFE, 0x03, 0x86, 0x00, 0x30, 0xE0, 0x07, + 0x0E, 0x00, 0x71, 0xC0, 0x0E, 0x1C, 0x0F, 0xFF, 0xF8, 0xFF, 0xFF, 0x0F, + 0xFF, 0xF0, 0x1C, 0x30, 0x01, 0x87, 0x00, 0x38, 0x70, 0x03, 0x0E, 0x00, + 0x70, 0xE0, 0x07, 0x0C, 0x00, 0xE1, 0xC0, 0x00, 0x00, 0x08, 0x00, 0x0C, + 0x00, 0x7E, 0x00, 0xFF, 0xC0, 0xF3, 0x70, 0x71, 0x9C, 0x70, 0xC6, 0x38, + 0x43, 0x1C, 0x61, 0x0F, 0x30, 0x87, 0xD8, 0x03, 0xF8, 0x00, 0xFE, 0x00, + 0x3F, 0x80, 0x0F, 0xE0, 0x03, 0xF8, 0x01, 0xFC, 0x00, 0xDF, 0x10, 0x47, + 0x88, 0x63, 0xCC, 0x31, 0xE6, 0x10, 0xF3, 0x98, 0x71, 0xCC, 0x78, 0x7E, + 0x78, 0x07, 0xF8, 0x03, 0xF0, 0x01, 0x80, 0x00, 0xC0, 0x00, 0x03, 0xC0, + 0x18, 0x01, 0xFE, 0x0F, 0x00, 0x7C, 0xFF, 0xC0, 0x1F, 0x0F, 0x98, 0x07, + 0xC1, 0x06, 0x00, 0xF8, 0x21, 0x80, 0x3E, 0x04, 0x30, 0x07, 0xC1, 0x8C, + 0x00, 0xF0, 0x21, 0x80, 0x1E, 0x0C, 0x60, 0x03, 0xC1, 0x0C, 0x00, 0x78, + 0xC3, 0x03, 0xC7, 0xF8, 0x61, 0xFC, 0x7C, 0x18, 0x7C, 0xC0, 0x06, 0x1F, + 0x08, 0x00, 0xC7, 0xC1, 0x00, 0x30, 0xF0, 0x20, 0x06, 0x3E, 0x04, 0x01, + 0x87, 0xC1, 0x00, 0x30, 0xF0, 0x20, 0x0C, 0x1E, 0x0C, 0x03, 0x03, 0xC1, + 0x00, 0x60, 0x3C, 0xC0, 0x18, 0x07, 0xF8, 0x03, 0x00, 0x7C, 0x00, 0x00, + 0x0F, 0x80, 0x00, 0x1F, 0xF0, 0x00, 0x1E, 0x38, 0x00, 0x0E, 0x0E, 0x00, + 0x0F, 0x07, 0x00, 0x07, 0x83, 0x80, 0x03, 0xC3, 0x80, 0x01, 0xE3, 0x80, + 0x00, 0xF7, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x7F, 0x0F, + 0xF0, 0xE7, 0x81, 0xE0, 0xE3, 0xE0, 0xE0, 0xE1, 0xF0, 0x60, 0xE0, 0x7C, + 0x60, 0xF0, 0x3E, 0x20, 0x78, 0x1F, 0xB0, 0x3C, 0x07, 0xF0, 0x1F, 0x03, + 0xF0, 0x0F, 0x80, 0xFC, 0x03, 0xF0, 0x7F, 0x8D, 0xFF, 0xEF, 0xFC, 0x7F, + 0xE3, 0xFC, 0x0F, 0xC0, 0x78, 0x00, 0x3B, 0xDE, 0xE7, 0x39, 0x8C, 0x46, + 0x00, 0x00, 0x60, 0x18, 0x06, 0x01, 0x80, 0x60, 0x1C, 0x07, 0x01, 0xE0, + 0x38, 0x0F, 0x01, 0xC0, 0x38, 0x0F, 0x01, 0xE0, 0x38, 0x07, 0x00, 0xE0, + 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x06, + 0x00, 0xC0, 0x08, 0x00, 0x80, 0x10, 0x00, 0x06, 0x00, 0x40, 0x04, 0x00, + 0x80, 0x18, 0x01, 0x00, 0x30, 0x06, 0x00, 0xC0, 0x1C, 0x03, 0x80, 0x70, + 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x01, 0xE0, 0x3C, 0x07, 0x00, 0xE0, 0x3C, + 0x07, 0x00, 0xE0, 0x38, 0x06, 0x01, 0xC0, 0x70, 0x18, 0x06, 0x01, 0x80, + 0x00, 0x07, 0x00, 0x38, 0x01, 0xC1, 0x8E, 0x3E, 0x23, 0xF9, 0x3F, 0xEB, + 0xE0, 0xE0, 0xFF, 0xF7, 0x93, 0xF8, 0x9F, 0x8E, 0x60, 0x70, 0x03, 0x80, + 0x08, 0x00, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, + 0x00, 0x0E, 0x00, 0x07, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, + 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x03, 0x80, + 0x01, 0xC0, 0x00, 0x1C, 0x7C, 0xF9, 0xF1, 0xE1, 0xC3, 0x0C, 0x30, 0xC2, + 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xE0, 0x7B, 0xFF, 0xFF, 0x78, 0x00, 0x1C, + 0x00, 0xE0, 0x03, 0x80, 0x1E, 0x00, 0x70, 0x01, 0xC0, 0x0E, 0x00, 0x38, + 0x01, 0xC0, 0x07, 0x00, 0x38, 0x00, 0xE0, 0x07, 0x80, 0x1C, 0x00, 0x70, + 0x03, 0x80, 0x0E, 0x00, 0x70, 0x01, 0xC0, 0x0E, 0x00, 0x38, 0x01, 0xC0, + 0x07, 0x00, 0x1C, 0x00, 0xE0, 0x00, 0x00, 0xF0, 0x07, 0x30, 0x1C, 0x30, + 0x78, 0x60, 0xE0, 0xE3, 0xC1, 0xCF, 0x83, 0x9E, 0x0F, 0x3C, 0x1E, 0xF8, + 0x3D, 0xE0, 0x7B, 0xC1, 0xFF, 0x83, 0xFF, 0x07, 0xBC, 0x0F, 0x78, 0x3E, + 0xF0, 0x7D, 0xE0, 0xF3, 0x81, 0xE7, 0x07, 0x8E, 0x0F, 0x0C, 0x3C, 0x18, + 0x70, 0x19, 0xC0, 0x1E, 0x00, 0x00, 0x06, 0x01, 0xF8, 0x1F, 0xF0, 0x03, + 0xE0, 0x07, 0x80, 0x1F, 0x00, 0x3E, 0x00, 0x7C, 0x00, 0xF0, 0x03, 0xE0, + 0x07, 0xC0, 0x0F, 0x80, 0x1E, 0x00, 0x7C, 0x00, 0xF8, 0x01, 0xE0, 0x07, + 0xC0, 0x0F, 0x80, 0x1F, 0x00, 0x3C, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xE0, + 0x0F, 0xC0, 0xFF, 0xF0, 0x00, 0xF8, 0x01, 0xFC, 0x03, 0xFE, 0x06, 0x3F, + 0x08, 0x1F, 0x18, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0E, + 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x30, 0x00, 0x70, 0x00, 0xC0, + 0x01, 0x80, 0x03, 0x00, 0x06, 0x02, 0x0C, 0x06, 0x08, 0x0C, 0x1F, 0xFC, + 0x3F, 0xFC, 0x7F, 0xF8, 0xFF, 0xF8, 0x00, 0xF0, 0x07, 0xF8, 0x1F, 0xF0, + 0x61, 0xF0, 0x81, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0E, 0x00, 0x3C, 0x00, + 0xE0, 0x07, 0xC0, 0x3F, 0xC0, 0x1F, 0x80, 0x0F, 0x80, 0x1F, 0x00, 0x1E, + 0x00, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xC0, 0x07, 0x9C, 0x0E, 0x3C, + 0x38, 0x7F, 0xE0, 0x7E, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x70, 0x00, 0x3C, + 0x00, 0x1E, 0x00, 0x0F, 0x80, 0x07, 0xE0, 0x02, 0xF8, 0x01, 0x3C, 0x00, + 0x9F, 0x00, 0x47, 0xC0, 0x31, 0xE0, 0x18, 0x78, 0x0C, 0x3E, 0x06, 0x0F, + 0x83, 0x03, 0xC1, 0x80, 0xF0, 0x7F, 0xFF, 0x1F, 0xFF, 0xCF, 0xFF, 0xF0, + 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x07, 0xC0, 0x01, + 0xFF, 0x00, 0xFF, 0x80, 0xFF, 0xC0, 0x7F, 0xE0, 0x60, 0x00, 0x30, 0x00, + 0x10, 0x00, 0x1F, 0x00, 0x0F, 0xE0, 0x0F, 0xF8, 0x07, 0xFE, 0x00, 0x3F, + 0x00, 0x07, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, 0x38, 0x00, 0x1C, 0x00, + 0x0E, 0x00, 0x06, 0x00, 0x03, 0x00, 0x03, 0x87, 0x83, 0x83, 0xE3, 0x81, + 0xFF, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x03, 0x80, 0x0F, 0x80, 0x1F, 0x00, + 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x1F, 0x00, + 0x1F, 0xF0, 0x1F, 0xFE, 0x0F, 0xCF, 0x07, 0xC3, 0xC7, 0xE1, 0xE3, 0xE0, + 0xF1, 0xF0, 0x78, 0xF8, 0x3C, 0x78, 0x3E, 0x3C, 0x1F, 0x1E, 0x0F, 0x0F, + 0x0F, 0x83, 0x87, 0x81, 0xE7, 0x80, 0x7F, 0x80, 0x0F, 0x80, 0x00, 0x3F, + 0xFF, 0x3F, 0xFE, 0x3F, 0xFE, 0x7F, 0xFC, 0x60, 0x1C, 0x80, 0x38, 0x80, + 0x30, 0x00, 0x70, 0x00, 0x60, 0x00, 0xE0, 0x01, 0xC0, 0x01, 0xC0, 0x03, + 0x80, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x1C, + 0x00, 0x38, 0x00, 0x38, 0x00, 0x70, 0x00, 0xF0, 0x00, 0xE0, 0x00, 0x00, + 0xF8, 0x00, 0xFF, 0x00, 0xE1, 0xC0, 0xE0, 0xF0, 0xF0, 0x38, 0x78, 0x1C, + 0x3C, 0x0E, 0x1F, 0x07, 0x0F, 0x87, 0x07, 0xE7, 0x01, 0xFF, 0x00, 0x7E, + 0x00, 0x1F, 0x80, 0x3F, 0xE0, 0x73, 0xF0, 0x70, 0xFC, 0x70, 0x3E, 0x70, + 0x0F, 0x38, 0x07, 0x9C, 0x03, 0xCE, 0x01, 0xE7, 0x00, 0xE1, 0xC0, 0xE0, + 0x70, 0xE0, 0x0F, 0xC0, 0x00, 0x00, 0xF8, 0x01, 0xFF, 0x01, 0xF3, 0xC1, + 0xF0, 0xE1, 0xF0, 0x70, 0xF0, 0x3C, 0xF8, 0x1E, 0x7C, 0x0F, 0x3C, 0x0F, + 0x9E, 0x07, 0xCF, 0x03, 0xE7, 0x83, 0xF3, 0xC1, 0xF0, 0xF1, 0xF8, 0x3F, + 0xF8, 0x0F, 0xFC, 0x00, 0x7C, 0x00, 0x7C, 0x00, 0x7E, 0x00, 0x3E, 0x00, + 0x3C, 0x00, 0x7C, 0x00, 0x7C, 0x00, 0xF0, 0x00, 0xC0, 0x00, 0x00, 0x07, + 0x83, 0xF0, 0xFC, 0x3F, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x78, 0x3F, 0x0F, 0xC3, 0xF0, 0x78, 0x00, 0x03, 0xC0, 0xFC, + 0x1F, 0x83, 0xF0, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0C, 0x03, 0xC0, 0x7C, 0x0F, 0x80, 0xF0, 0x0E, 0x01, 0x80, 0x30, 0x0C, + 0x03, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x7C, 0x00, + 0x7F, 0x00, 0x7F, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFE, 0x00, 0xFE, 0x00, + 0x3E, 0x00, 0x0F, 0xC0, 0x01, 0xFC, 0x00, 0x1F, 0xE0, 0x01, 0xFE, 0x00, + 0x0F, 0xE0, 0x00, 0xFF, 0x00, 0x0F, 0xC0, 0x00, 0xF0, 0x00, 0x04, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, + 0x38, 0x00, 0x0F, 0x80, 0x03, 0xF8, 0x00, 0x3F, 0x80, 0x03, 0xFC, 0x00, + 0x3F, 0xC0, 0x01, 0xFC, 0x00, 0x1F, 0xC0, 0x01, 0xF0, 0x00, 0xFC, 0x00, + 0xFE, 0x01, 0xFE, 0x01, 0xFE, 0x01, 0xFC, 0x03, 0xFC, 0x00, 0xFC, 0x00, + 0x3C, 0x00, 0x08, 0x00, 0x00, 0x07, 0xC0, 0xFF, 0x0E, 0x3C, 0x70, 0xF3, + 0xC7, 0x8C, 0x3C, 0x01, 0xE0, 0x1F, 0x00, 0xF0, 0x07, 0x80, 0x78, 0x07, + 0x80, 0x30, 0x03, 0x00, 0x10, 0x01, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x80, 0x7E, 0x03, 0xF0, 0x1F, 0x80, 0x78, 0x00, 0x00, 0x3F, + 0x80, 0x00, 0xFF, 0xF8, 0x01, 0xF0, 0x1E, 0x01, 0xE0, 0x03, 0x81, 0xC0, + 0x00, 0xE1, 0xC0, 0x18, 0x38, 0xE0, 0x3F, 0xCC, 0xE0, 0x3C, 0xE7, 0x70, + 0x3C, 0x71, 0xF0, 0x1C, 0x30, 0xF8, 0x1E, 0x38, 0x7C, 0x0E, 0x1C, 0x3E, + 0x0F, 0x0E, 0x1F, 0x07, 0x0E, 0x0F, 0x83, 0x87, 0x0D, 0xC1, 0xC7, 0x86, + 0x70, 0xE5, 0xC6, 0x38, 0x7C, 0xFE, 0x1C, 0x1C, 0x3E, 0x07, 0x00, 0x00, + 0x01, 0xC0, 0x00, 0x00, 0x78, 0x00, 0x40, 0x1F, 0x00, 0xE0, 0x03, 0xFF, + 0xE0, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x03, 0x00, 0x00, + 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x03, + 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x17, 0xC0, 0x00, 0x67, 0x80, 0x00, 0x8F, + 0x00, 0x03, 0x1F, 0x00, 0x0C, 0x3E, 0x00, 0x10, 0x7C, 0x00, 0x60, 0xF8, + 0x00, 0x81, 0xF0, 0x03, 0xFF, 0xE0, 0x0F, 0xFF, 0xE0, 0x18, 0x07, 0xC0, + 0x60, 0x0F, 0x81, 0xC0, 0x1F, 0x03, 0x00, 0x3E, 0x0E, 0x00, 0x7C, 0x3C, + 0x00, 0xFC, 0xFE, 0x0F, 0xFE, 0x07, 0xFF, 0xE0, 0x01, 0xFF, 0xFC, 0x01, + 0xF8, 0x7E, 0x01, 0xF8, 0x3F, 0x01, 0xF0, 0x3F, 0x01, 0xF0, 0x3F, 0x01, + 0xF0, 0x3F, 0x03, 0xE0, 0x3F, 0x03, 0xE0, 0x7E, 0x03, 0xE0, 0xFC, 0x03, + 0xE3, 0xF0, 0x07, 0xFF, 0x80, 0x07, 0xC3, 0xE0, 0x07, 0xC1, 0xF8, 0x0F, + 0xC0, 0xF8, 0x0F, 0x80, 0xFC, 0x0F, 0x80, 0xFC, 0x0F, 0x80, 0xFC, 0x1F, + 0x80, 0xFC, 0x1F, 0x01, 0xFC, 0x1F, 0x01, 0xF8, 0x1F, 0x03, 0xF0, 0x3F, + 0x0F, 0xE0, 0x7F, 0xFF, 0xC0, 0xFF, 0xFE, 0x00, 0x00, 0x1F, 0x82, 0x01, + 0xFF, 0xE8, 0x07, 0xE0, 0xF0, 0x3F, 0x80, 0xE0, 0xFE, 0x00, 0xC1, 0xF8, + 0x01, 0x87, 0xE0, 0x02, 0x1F, 0x80, 0x04, 0x3F, 0x00, 0x00, 0xFC, 0x00, + 0x01, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0x80, 0x00, + 0x3F, 0x00, 0x00, 0x7E, 0x00, 0x00, 0xFC, 0x00, 0x01, 0xF8, 0x00, 0x03, + 0xF0, 0x00, 0x03, 0xE0, 0x01, 0x07, 0xE0, 0x06, 0x07, 0xE0, 0x18, 0x07, + 0xE0, 0xE0, 0x07, 0xFF, 0x00, 0x01, 0xF8, 0x00, 0x07, 0xFF, 0xE0, 0x01, + 0xFF, 0xFE, 0x00, 0x1F, 0x87, 0xE0, 0x07, 0xE0, 0x7C, 0x01, 0xF0, 0x1F, + 0x80, 0x7C, 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x0F, 0x80, 0x3F, 0x03, 0xE0, + 0x0F, 0xC0, 0xF8, 0x03, 0xF0, 0x3E, 0x00, 0xFC, 0x1F, 0x00, 0x3F, 0x07, + 0xC0, 0x0F, 0xC1, 0xF0, 0x07, 0xF0, 0xFC, 0x01, 0xF8, 0x3E, 0x00, 0x7E, + 0x0F, 0x80, 0x3F, 0x83, 0xE0, 0x0F, 0xC1, 0xF8, 0x07, 0xF0, 0x7C, 0x01, + 0xF8, 0x1F, 0x00, 0xFC, 0x07, 0xC0, 0x7E, 0x03, 0xF0, 0x7E, 0x01, 0xFF, + 0xFF, 0x00, 0xFF, 0xFE, 0x00, 0x00, 0x07, 0xFF, 0xFE, 0x03, 0xFF, 0xFC, + 0x07, 0xE0, 0x78, 0x0F, 0xC0, 0x60, 0x1F, 0x00, 0x40, 0x3E, 0x00, 0x80, + 0x7C, 0x01, 0x01, 0xF8, 0x10, 0x03, 0xE0, 0x60, 0x07, 0xC3, 0x80, 0x0F, + 0xFF, 0x00, 0x3F, 0xFE, 0x00, 0x7C, 0x38, 0x00, 0xF8, 0x30, 0x03, 0xF0, + 0x60, 0x07, 0xC0, 0x80, 0x0F, 0x81, 0x00, 0x1F, 0x00, 0x10, 0x7E, 0x00, + 0x60, 0xF8, 0x01, 0xC1, 0xF0, 0x07, 0x03, 0xE0, 0x1E, 0x0F, 0xC0, 0xFC, + 0x3F, 0xFF, 0xF8, 0xFF, 0xFF, 0xE0, 0x07, 0xFF, 0xFE, 0x03, 0xFF, 0xFC, + 0x07, 0xE0, 0x78, 0x0F, 0xC0, 0x60, 0x1F, 0x00, 0x40, 0x3E, 0x00, 0x80, + 0x7C, 0x01, 0x01, 0xF8, 0x20, 0x03, 0xE0, 0xC0, 0x07, 0xC3, 0x80, 0x0F, + 0xFE, 0x00, 0x3F, 0xFC, 0x00, 0x7C, 0x38, 0x00, 0xF8, 0x30, 0x03, 0xF0, + 0x60, 0x07, 0xC0, 0x80, 0x0F, 0x81, 0x00, 0x1F, 0x00, 0x00, 0x7E, 0x00, + 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0xC0, 0x00, + 0x3F, 0x80, 0x00, 0xFF, 0xC0, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0xFF, 0xF6, + 0x01, 0xF8, 0x3C, 0x03, 0xE0, 0x1C, 0x0F, 0xC0, 0x0C, 0x0F, 0xC0, 0x08, + 0x1F, 0x80, 0x08, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x7E, 0x00, 0x00, + 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFC, 0x03, 0xFF, + 0xFC, 0x00, 0xFC, 0xFC, 0x00, 0xF8, 0xFC, 0x00, 0xF8, 0xFC, 0x00, 0xF8, + 0xFC, 0x00, 0xF0, 0x7C, 0x01, 0xF0, 0x7E, 0x01, 0xF0, 0x3E, 0x01, 0xF0, + 0x1F, 0x83, 0xE0, 0x0F, 0xFF, 0x80, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x3F, + 0xF8, 0x0F, 0xE0, 0x7F, 0x00, 0x7E, 0x01, 0xF8, 0x03, 0xF0, 0x0F, 0x80, + 0x1F, 0x00, 0x7C, 0x00, 0xF8, 0x07, 0xE0, 0x07, 0xC0, 0x3E, 0x00, 0x7E, + 0x01, 0xF0, 0x03, 0xE0, 0x0F, 0x80, 0x1F, 0x00, 0xF8, 0x00, 0xF8, 0x07, + 0xC0, 0x0F, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xF0, 0x03, 0xE0, 0x1F, 0x00, + 0x3F, 0x00, 0xF8, 0x01, 0xF0, 0x07, 0xC0, 0x0F, 0x80, 0x7E, 0x00, 0x7C, + 0x03, 0xE0, 0x07, 0xE0, 0x1F, 0x00, 0x3E, 0x00, 0xF8, 0x01, 0xF0, 0x0F, + 0xC0, 0x0F, 0x80, 0x7C, 0x00, 0xFC, 0x03, 0xE0, 0x0F, 0xE0, 0x3F, 0x80, + 0xFF, 0xC7, 0xFF, 0x00, 0x07, 0xFE, 0x03, 0xF8, 0x07, 0xE0, 0x0F, 0xC0, + 0x1F, 0x00, 0x3E, 0x00, 0x7C, 0x01, 0xF0, 0x03, 0xE0, 0x07, 0xC0, 0x0F, + 0x80, 0x3E, 0x00, 0x7C, 0x00, 0xF8, 0x03, 0xF0, 0x07, 0xC0, 0x0F, 0x80, + 0x1F, 0x00, 0x7C, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xE0, 0x0F, 0xC0, 0x3F, + 0x80, 0xFF, 0xC0, 0x00, 0x3F, 0xF0, 0x01, 0xFE, 0x00, 0x0F, 0xC0, 0x00, + 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x1F, 0x80, 0x01, 0xF0, 0x00, + 0x1F, 0x00, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, + 0x07, 0xE0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x0F, 0xC0, + 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x61, 0xF0, + 0x0F, 0x3F, 0x00, 0xE7, 0xE0, 0x07, 0xFC, 0x00, 0x3F, 0x00, 0x00, 0x07, + 0xFF, 0x3F, 0x80, 0xFE, 0x07, 0x80, 0x7E, 0x03, 0x00, 0x3F, 0x03, 0x00, + 0x1F, 0x03, 0x00, 0x0F, 0x83, 0x00, 0x07, 0xC3, 0x00, 0x07, 0xE3, 0x00, + 0x03, 0xE3, 0x00, 0x01, 0xF3, 0x00, 0x00, 0xFB, 0x80, 0x00, 0xFB, 0xC0, + 0x00, 0x7F, 0xE0, 0x00, 0x3E, 0xF8, 0x00, 0x3F, 0x7C, 0x00, 0x1F, 0x1F, + 0x00, 0x0F, 0x8F, 0x80, 0x07, 0xC7, 0xE0, 0x07, 0xE1, 0xF0, 0x03, 0xE0, + 0xFC, 0x01, 0xF0, 0x3E, 0x00, 0xF8, 0x1F, 0x00, 0xFC, 0x07, 0xC0, 0xFE, + 0x07, 0xF0, 0xFF, 0xCF, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x07, 0xF0, 0x00, + 0x1F, 0x80, 0x00, 0x7E, 0x00, 0x01, 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x1F, + 0x00, 0x00, 0xF8, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x3E, 0x00, + 0x01, 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x1F, 0x00, 0x00, 0xFC, 0x00, 0x03, + 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x3E, 0x00, 0x11, 0xF0, 0x00, 0xC7, 0xC0, + 0x06, 0x1F, 0x00, 0x38, 0x7C, 0x01, 0xE3, 0xF0, 0x3F, 0x9F, 0xFF, 0xFC, + 0xFF, 0xFF, 0xF0, 0x07, 0xF8, 0x00, 0x7F, 0x80, 0xFC, 0x00, 0x3F, 0x80, + 0x3E, 0x00, 0x3F, 0x80, 0x1F, 0x00, 0x3F, 0x80, 0x1F, 0x80, 0x1F, 0xC0, + 0x0F, 0xE0, 0x1B, 0xE0, 0x07, 0xF0, 0x0D, 0xF0, 0x02, 0xF8, 0x0D, 0xF0, + 0x03, 0x7C, 0x0C, 0xF8, 0x01, 0xBE, 0x06, 0x7C, 0x00, 0xDF, 0x06, 0x7C, + 0x00, 0xCF, 0x83, 0x3E, 0x00, 0x67, 0xC3, 0x1F, 0x00, 0x31, 0xE3, 0x0F, + 0x80, 0x38, 0xF9, 0x8F, 0x80, 0x18, 0x7D, 0x87, 0xC0, 0x0C, 0x3F, 0x83, + 0xE0, 0x06, 0x1F, 0xC1, 0xF0, 0x06, 0x0F, 0xC1, 0xF0, 0x03, 0x07, 0xC0, + 0xF8, 0x01, 0x83, 0xE0, 0x7C, 0x01, 0xC0, 0xE0, 0x7E, 0x00, 0xE0, 0x70, + 0x3F, 0x00, 0xF8, 0x30, 0x3F, 0x80, 0xFF, 0x10, 0x7F, 0xF0, 0x00, 0x07, + 0xF0, 0x0F, 0xE0, 0x3E, 0x00, 0x78, 0x07, 0xE0, 0x06, 0x00, 0x7C, 0x00, + 0xC0, 0x1F, 0xC0, 0x10, 0x03, 0xF8, 0x06, 0x00, 0x6F, 0x80, 0xC0, 0x19, + 0xF0, 0x10, 0x03, 0x3F, 0x02, 0x00, 0x63, 0xE0, 0xC0, 0x0C, 0x7C, 0x18, + 0x03, 0x07, 0xC2, 0x00, 0x60, 0xF8, 0x40, 0x0C, 0x0F, 0x98, 0x03, 0x81, + 0xF3, 0x00, 0x60, 0x3F, 0x40, 0x0C, 0x03, 0xF8, 0x01, 0x80, 0x7F, 0x00, + 0x60, 0x07, 0xC0, 0x0C, 0x00, 0xF8, 0x01, 0x80, 0x0F, 0x00, 0x70, 0x01, + 0xE0, 0x0E, 0x00, 0x18, 0x03, 0xE0, 0x03, 0x00, 0x02, 0x00, 0x60, 0x00, + 0x00, 0x1F, 0xC0, 0x00, 0xFF, 0xC0, 0x07, 0xC3, 0xE0, 0x1F, 0x03, 0xC0, + 0x7C, 0x03, 0xC1, 0xF0, 0x07, 0x87, 0xE0, 0x0F, 0x8F, 0x80, 0x1F, 0x3F, + 0x00, 0x3E, 0x7C, 0x00, 0x7D, 0xF8, 0x01, 0xFB, 0xE0, 0x03, 0xF7, 0xC0, + 0x07, 0xDF, 0x80, 0x1F, 0xBF, 0x00, 0x3F, 0x7C, 0x00, 0x7C, 0xF8, 0x01, + 0xF9, 0xF0, 0x03, 0xE3, 0xE0, 0x0F, 0xC7, 0xC0, 0x1F, 0x07, 0x80, 0x7C, + 0x0F, 0x81, 0xF0, 0x0F, 0x87, 0xC0, 0x0F, 0xFE, 0x00, 0x07, 0xF0, 0x00, + 0x07, 0xFF, 0xE0, 0x03, 0xFF, 0xF0, 0x07, 0xE3, 0xF0, 0x0F, 0x83, 0xE0, + 0x1F, 0x07, 0xE0, 0x3E, 0x0F, 0xC0, 0x7C, 0x1F, 0x81, 0xF0, 0x3F, 0x03, + 0xE0, 0xFE, 0x07, 0xC1, 0xF8, 0x0F, 0x87, 0xF0, 0x3E, 0x1F, 0xC0, 0x7F, + 0xFE, 0x00, 0xFF, 0xF0, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, + 0x00, 0x1F, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, + 0x03, 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x80, 0x00, 0xFF, 0xC0, 0x00, + 0x00, 0x1F, 0xC0, 0x00, 0xFF, 0xC0, 0x07, 0xC3, 0xE0, 0x1F, 0x03, 0xC0, + 0x7C, 0x03, 0xC1, 0xF0, 0x07, 0x87, 0xE0, 0x0F, 0x8F, 0x80, 0x1F, 0x3F, + 0x00, 0x3E, 0x7C, 0x00, 0x7D, 0xF8, 0x01, 0xFB, 0xF0, 0x03, 0xF7, 0xC0, + 0x07, 0xDF, 0x80, 0x0F, 0xBF, 0x00, 0x3F, 0x7C, 0x00, 0x7C, 0xF8, 0x01, + 0xF9, 0xF0, 0x03, 0xE3, 0xE0, 0x07, 0xC7, 0xC0, 0x1F, 0x07, 0x80, 0x7C, + 0x0F, 0x01, 0xF0, 0x0F, 0x07, 0x80, 0x07, 0xFE, 0x00, 0x03, 0x80, 0x00, + 0x0C, 0x00, 0x00, 0x3C, 0x00, 0x20, 0xFF, 0xC1, 0x87, 0xFF, 0xFE, 0x1E, + 0xFF, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0x07, 0xFF, 0xE0, 0x01, 0xFF, 0xFC, + 0x01, 0xF8, 0x7E, 0x01, 0xF8, 0x3F, 0x01, 0xF8, 0x3F, 0x01, 0xF0, 0x3F, + 0x01, 0xF0, 0x3F, 0x03, 0xF0, 0x3F, 0x03, 0xE0, 0x7E, 0x03, 0xE0, 0xFE, + 0x03, 0xE1, 0xF8, 0x07, 0xFF, 0xF0, 0x07, 0xFF, 0x80, 0x07, 0xDF, 0xC0, + 0x0F, 0xCF, 0xC0, 0x0F, 0xCF, 0xC0, 0x0F, 0x8F, 0xE0, 0x0F, 0x87, 0xE0, + 0x1F, 0x87, 0xE0, 0x1F, 0x03, 0xF0, 0x1F, 0x03, 0xF0, 0x1F, 0x03, 0xF0, + 0x3F, 0x01, 0xF8, 0x7F, 0x01, 0xF8, 0xFF, 0xE1, 0xFE, 0x00, 0xF8, 0x40, + 0xFF, 0xB0, 0x38, 0x3C, 0x1C, 0x07, 0x0F, 0x01, 0xC3, 0xC0, 0x20, 0xF0, + 0x08, 0x3E, 0x02, 0x0F, 0xC0, 0x03, 0xF8, 0x00, 0x7F, 0x00, 0x0F, 0xE0, + 0x01, 0xFC, 0x00, 0x3F, 0x80, 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x00, + 0x03, 0xC4, 0x00, 0xF1, 0x00, 0x3C, 0x60, 0x0F, 0x38, 0x07, 0x8F, 0x83, + 0xC2, 0x3F, 0xE0, 0x83, 0xF0, 0x00, 0x3F, 0xFF, 0xF9, 0xFF, 0xFF, 0xCF, + 0x1F, 0x1E, 0x70, 0xF8, 0x77, 0x0F, 0x83, 0x30, 0x7C, 0x09, 0x03, 0xE0, + 0x40, 0x3F, 0x02, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x07, + 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, + 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x03, 0xF0, 0x00, 0x1F, 0x00, 0x00, 0xF8, + 0x00, 0x07, 0xC0, 0x00, 0x7E, 0x00, 0x07, 0xF0, 0x00, 0xFF, 0xF0, 0x00, + 0x7F, 0xF0, 0xFF, 0x1F, 0xC0, 0x3E, 0x1F, 0x80, 0x1C, 0x1F, 0x80, 0x18, + 0x1F, 0x00, 0x18, 0x1F, 0x00, 0x18, 0x1F, 0x00, 0x30, 0x3F, 0x00, 0x30, + 0x3E, 0x00, 0x30, 0x3E, 0x00, 0x30, 0x7E, 0x00, 0x60, 0x7C, 0x00, 0x60, + 0x7C, 0x00, 0x60, 0x7C, 0x00, 0xC0, 0x7C, 0x00, 0xC0, 0xF8, 0x00, 0xC0, + 0xF8, 0x00, 0xC0, 0xF8, 0x01, 0x80, 0xF8, 0x01, 0x80, 0xF8, 0x03, 0x80, + 0xF8, 0x03, 0x00, 0x7C, 0x06, 0x00, 0x7E, 0x1E, 0x00, 0x3F, 0xF8, 0x00, + 0x0F, 0xE0, 0x00, 0xFF, 0xE0, 0x7F, 0x3F, 0x80, 0x1C, 0x1F, 0x80, 0x18, + 0x1F, 0x80, 0x18, 0x1F, 0x80, 0x30, 0x1F, 0x80, 0x30, 0x0F, 0x80, 0x60, + 0x0F, 0x80, 0x40, 0x0F, 0x80, 0xC0, 0x0F, 0x81, 0x80, 0x0F, 0x81, 0x00, + 0x0F, 0xC3, 0x00, 0x0F, 0xC6, 0x00, 0x07, 0xC6, 0x00, 0x07, 0xCC, 0x00, + 0x07, 0xC8, 0x00, 0x07, 0xD8, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF0, 0x00, + 0x07, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0x80, 0x00, + 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0xFF, 0xCF, 0xF8, 0x7E, 0x7F, 0x07, + 0xE0, 0x38, 0x7C, 0x07, 0x80, 0x60, 0xF8, 0x0F, 0x00, 0x81, 0xF0, 0x1E, + 0x03, 0x03, 0xE0, 0x3E, 0x04, 0x07, 0xE0, 0xFC, 0x18, 0x07, 0xC1, 0xF8, + 0x20, 0x0F, 0x87, 0xF0, 0xC0, 0x1F, 0x0B, 0xE1, 0x00, 0x3E, 0x37, 0xC6, + 0x00, 0x7C, 0x47, 0x88, 0x00, 0xF9, 0x8F, 0x30, 0x01, 0xF2, 0x1F, 0x40, + 0x03, 0xEC, 0x3E, 0x80, 0x03, 0xF0, 0x7F, 0x00, 0x07, 0xE0, 0xFC, 0x00, + 0x0F, 0x81, 0xF8, 0x00, 0x1F, 0x03, 0xE0, 0x00, 0x3C, 0x07, 0xC0, 0x00, + 0x78, 0x07, 0x00, 0x00, 0xF0, 0x0E, 0x00, 0x00, 0xC0, 0x18, 0x00, 0x01, + 0x80, 0x30, 0x00, 0x02, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x3F, 0x81, 0xFC, + 0x07, 0x80, 0x7C, 0x03, 0x00, 0x3F, 0x03, 0x00, 0x0F, 0x83, 0x80, 0x07, + 0xC1, 0x80, 0x03, 0xE1, 0x80, 0x00, 0xF9, 0x80, 0x00, 0x7D, 0x80, 0x00, + 0x3F, 0x80, 0x00, 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, 0xE0, 0x00, + 0x01, 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xBE, 0x00, 0x00, 0xCF, 0x00, + 0x00, 0xC7, 0xC0, 0x00, 0xC3, 0xE0, 0x00, 0xC1, 0xF0, 0x00, 0xC0, 0x7C, + 0x00, 0xE0, 0x3E, 0x00, 0xE0, 0x1F, 0x00, 0xF8, 0x1F, 0xE0, 0xFF, 0x1F, + 0xF8, 0x00, 0xFF, 0xC3, 0xF9, 0xF8, 0x07, 0x87, 0xC0, 0x38, 0x3E, 0x01, + 0x81, 0xF0, 0x18, 0x07, 0xC0, 0x80, 0x3E, 0x0C, 0x01, 0xF0, 0xC0, 0x07, + 0xC4, 0x00, 0x3E, 0x60, 0x01, 0xF6, 0x00, 0x07, 0xA0, 0x00, 0x3F, 0x00, + 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xC0, 0x00, 0x3E, + 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x00, + 0x7E, 0x00, 0x07, 0xF0, 0x00, 0xFF, 0xF0, 0x00, 0x07, 0xFF, 0xF8, 0x3F, + 0xFF, 0xC3, 0xE0, 0x7E, 0x1C, 0x07, 0xE0, 0xC0, 0x3E, 0x0C, 0x03, 0xF0, + 0x40, 0x3F, 0x00, 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x01, 0xF8, 0x00, 0x1F, + 0x80, 0x00, 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x0F, 0xC0, 0x00, + 0x7E, 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0x83, 0xE0, 0x0C, 0x3F, 0x00, + 0xC3, 0xF0, 0x0E, 0x1F, 0x00, 0xF1, 0xF8, 0x1F, 0x9F, 0xFF, 0xF8, 0xFF, + 0xFF, 0xC0, 0x01, 0xFC, 0x0F, 0xE0, 0x3C, 0x00, 0xE0, 0x03, 0x80, 0x1E, + 0x00, 0x78, 0x01, 0xC0, 0x07, 0x00, 0x3C, 0x00, 0xF0, 0x03, 0x80, 0x0E, + 0x00, 0x38, 0x01, 0xE0, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x03, 0xC0, 0x0F, + 0x00, 0x38, 0x00, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x70, 0x01, 0xC0, 0x0F, + 0x00, 0x3C, 0x00, 0xFF, 0x03, 0xF8, 0x00, 0xE0, 0x38, 0x07, 0x01, 0xC0, + 0x70, 0x0C, 0x03, 0x80, 0xE0, 0x38, 0x07, 0x01, 0xC0, 0x70, 0x0C, 0x03, + 0x80, 0xE0, 0x38, 0x07, 0x01, 0xC0, 0x70, 0x0C, 0x03, 0x80, 0xE0, 0x38, + 0x07, 0x01, 0xC0, 0x03, 0xFC, 0x0F, 0xF0, 0x03, 0x80, 0x0E, 0x00, 0x38, + 0x01, 0xE0, 0x07, 0x80, 0x1C, 0x00, 0x70, 0x03, 0xC0, 0x0F, 0x00, 0x38, + 0x00, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x70, 0x01, 0xC0, 0x0F, 0x00, 0x3C, + 0x00, 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x78, 0x01, 0xE0, 0x07, 0x00, 0x1C, + 0x00, 0xF0, 0x03, 0xC0, 0xFE, 0x03, 0xF8, 0x00, 0x03, 0xC0, 0x03, 0xC0, + 0x07, 0xE0, 0x07, 0xE0, 0x0E, 0x70, 0x0E, 0x70, 0x1C, 0x78, 0x1C, 0x38, + 0x3C, 0x3C, 0x38, 0x1C, 0x78, 0x1E, 0x70, 0x0E, 0xF0, 0x0E, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xE1, 0xE3, 0xC1, 0xC1, 0xC0, 0xC0, 0x00, + 0xF7, 0x80, 0xFD, 0xE0, 0x7C, 0xF0, 0x3C, 0x3C, 0x1E, 0x0F, 0x0F, 0x83, + 0x83, 0xC1, 0xE1, 0xE0, 0x78, 0x78, 0x1C, 0x3E, 0x0F, 0x0F, 0x03, 0xC3, + 0xC1, 0xF0, 0xF0, 0xFC, 0xFE, 0x6F, 0x6F, 0xF3, 0xF1, 0xF8, 0xF8, 0x3C, + 0x1C, 0x00, 0x01, 0xE0, 0x1F, 0xC0, 0x07, 0xC0, 0x07, 0xC0, 0x07, 0x80, + 0x07, 0x80, 0x0F, 0x80, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x3C, 0x1E, 0xFE, + 0x1F, 0x9F, 0x1F, 0x0F, 0x1E, 0x0F, 0x3E, 0x0F, 0x3C, 0x0F, 0x3C, 0x1F, + 0x78, 0x1E, 0x78, 0x1E, 0x78, 0x3C, 0x78, 0x3C, 0xF0, 0x78, 0xF0, 0xF0, + 0xF1, 0xE0, 0x7F, 0xC0, 0x3F, 0x00, 0x01, 0xF0, 0x3F, 0xC3, 0xCE, 0x3C, + 0xF3, 0xC7, 0x1E, 0x01, 0xE0, 0x0F, 0x00, 0xF8, 0x07, 0x80, 0x3C, 0x01, + 0xE0, 0x0F, 0x03, 0x78, 0x31, 0xE3, 0x0F, 0xF0, 0x1E, 0x00, 0x00, 0x1F, + 0xC0, 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x78, 0x00, 0x0F, + 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x01, 0xEF, 0x00, 0x7F, 0xE0, 0x3E, 0x7C, + 0x07, 0x8F, 0x01, 0xE1, 0xE0, 0x78, 0x3C, 0x0F, 0x0F, 0x83, 0xC1, 0xE0, + 0x78, 0x3C, 0x1E, 0x0F, 0x83, 0xC1, 0xF0, 0x78, 0x7C, 0x0F, 0x0F, 0x91, + 0xE3, 0xF6, 0x3F, 0xDF, 0x83, 0xF3, 0xE0, 0x3C, 0x38, 0x00, 0x01, 0xE0, + 0x3F, 0x83, 0xCE, 0x3C, 0x73, 0xC3, 0x9E, 0x1D, 0xE1, 0xCF, 0x1C, 0xFB, + 0xC7, 0xF8, 0x3C, 0x01, 0xE0, 0x0F, 0x02, 0x78, 0x31, 0xE3, 0x0F, 0xF0, + 0x1E, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x1D, 0xC0, 0x01, 0xCE, 0x00, 0x1C, + 0x70, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x07, 0x80, 0x00, + 0x3C, 0x00, 0x0F, 0xFC, 0x00, 0x7F, 0xE0, 0x00, 0xF0, 0x00, 0x07, 0x80, + 0x00, 0x3C, 0x00, 0x03, 0xE0, 0x00, 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x07, + 0x80, 0x00, 0x7C, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xF0, 0x00, + 0x07, 0x80, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, + 0x00, 0x0F, 0x00, 0x0E, 0x70, 0x00, 0x77, 0x80, 0x03, 0xF8, 0x00, 0x0F, + 0x80, 0x00, 0x00, 0xFE, 0x00, 0x7F, 0xFC, 0x1F, 0x1F, 0x87, 0xC3, 0xC1, + 0xF0, 0x78, 0x3C, 0x1F, 0x07, 0x83, 0xE0, 0xF0, 0xF8, 0x0E, 0x3E, 0x01, + 0xFF, 0x80, 0x3F, 0xC0, 0x0C, 0x00, 0x03, 0xC0, 0x00, 0x7F, 0x80, 0x0F, + 0xFE, 0x00, 0x7F, 0xF0, 0x70, 0xFF, 0x1C, 0x03, 0xE3, 0x80, 0x3C, 0x70, + 0x07, 0x0F, 0x03, 0xE0, 0xFF, 0xF0, 0x07, 0xF0, 0x00, 0x1F, 0xC0, 0x03, + 0xE0, 0x00, 0xF0, 0x00, 0xF8, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1E, 0x00, + 0x1F, 0x00, 0x0F, 0x0E, 0x07, 0x9F, 0x83, 0xDF, 0xC3, 0xE9, 0xE1, 0xE8, + 0xF0, 0xF8, 0xF8, 0x7C, 0x78, 0x7C, 0x3C, 0x3E, 0x3E, 0x1E, 0x1E, 0x1F, + 0x0F, 0x0F, 0x0F, 0x87, 0x87, 0xCB, 0xC3, 0xCB, 0xE1, 0xE9, 0xE0, 0xFC, + 0xF0, 0x38, 0x00, 0x03, 0x03, 0xC1, 0xE0, 0xF0, 0x30, 0x00, 0x00, 0x00, + 0x07, 0x3F, 0x87, 0x83, 0xC1, 0xE0, 0xF0, 0xF0, 0x78, 0x3C, 0x1E, 0x1E, + 0x0F, 0x27, 0x17, 0x93, 0xF1, 0xF8, 0x70, 0x00, 0x00, 0x06, 0x00, 0x0F, + 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x00, 0xFE, 0x00, 0x3E, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x3C, + 0x00, 0x7C, 0x00, 0x78, 0x00, 0x78, 0x00, 0x78, 0x00, 0xF8, 0x00, 0xF0, + 0x00, 0xF0, 0x00, 0xF0, 0x01, 0xF0, 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xE0, + 0x03, 0xC0, 0xE3, 0xC0, 0xE7, 0x80, 0xFF, 0x00, 0x7C, 0x00, 0x1F, 0xC0, + 0x03, 0xE0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1E, + 0x00, 0x1F, 0x00, 0x0F, 0x3F, 0x87, 0x87, 0x83, 0xC3, 0x03, 0xE3, 0x01, + 0xE3, 0x00, 0xF3, 0x00, 0x7B, 0x80, 0x7B, 0xC0, 0x3F, 0xE0, 0x1E, 0xF0, + 0x1F, 0x78, 0x0F, 0x1E, 0x07, 0x8F, 0x13, 0xC7, 0x93, 0xE1, 0xF9, 0xE0, + 0xF8, 0xF0, 0x38, 0x00, 0x1F, 0xC0, 0xF8, 0x1F, 0x03, 0xC0, 0x78, 0x1F, + 0x03, 0xE0, 0x78, 0x0F, 0x01, 0xE0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x0F, + 0x01, 0xE0, 0x3C, 0x0F, 0x81, 0xE0, 0x3C, 0x8F, 0x31, 0xEC, 0x3F, 0x07, + 0xC0, 0x70, 0x00, 0x01, 0x87, 0x07, 0x0F, 0xE7, 0xE7, 0xE0, 0xF3, 0xF9, + 0xF8, 0x3D, 0x9E, 0x9E, 0x0F, 0x47, 0xC7, 0x83, 0xE1, 0xD1, 0xE1, 0xF8, + 0xF8, 0xF0, 0x7C, 0x3C, 0x3C, 0x1F, 0x0F, 0x1F, 0x0F, 0x87, 0xC7, 0x83, + 0xE1, 0xE1, 0xE0, 0xF0, 0x78, 0x78, 0x3C, 0x1E, 0x3C, 0x1F, 0x0F, 0x0F, + 0x27, 0x83, 0xC3, 0xD1, 0xE0, 0xF0, 0xFC, 0xF8, 0x78, 0x1C, 0x00, 0x01, + 0x8F, 0x0F, 0xE7, 0xE0, 0xF3, 0xF8, 0x3C, 0x9E, 0x0F, 0x47, 0x87, 0xA3, + 0xC1, 0xE8, 0xF0, 0x7C, 0x3C, 0x1E, 0x1E, 0x0F, 0x87, 0x83, 0xE1, 0xE0, + 0xF0, 0xF8, 0x3C, 0x3C, 0x1F, 0x0F, 0x27, 0x83, 0xD1, 0xE0, 0xFC, 0x78, + 0x1C, 0x00, 0x01, 0xF0, 0x0E, 0x30, 0x38, 0x70, 0xF0, 0xF3, 0xC1, 0xE7, + 0x83, 0xDE, 0x07, 0xBC, 0x1F, 0xF8, 0x3F, 0xE0, 0x7B, 0xC0, 0xF7, 0x83, + 0xCF, 0x07, 0x9E, 0x1E, 0x1C, 0x38, 0x1C, 0xE0, 0x1F, 0x00, 0x00, 0xE3, + 0x80, 0xFD, 0xF8, 0x0F, 0xFF, 0x81, 0xE8, 0xF0, 0x3E, 0x1E, 0x07, 0x83, + 0xC0, 0xF0, 0x78, 0x3E, 0x1F, 0x07, 0x83, 0xC0, 0xF0, 0x78, 0x1E, 0x1F, + 0x07, 0x83, 0xC0, 0xF0, 0xF8, 0x1E, 0x1E, 0x03, 0xC7, 0x80, 0xFF, 0xE0, + 0x1E, 0xF0, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0xC0, 0x00, + 0xF8, 0x00, 0x3F, 0xC0, 0x00, 0x01, 0xEF, 0x07, 0xFF, 0x0F, 0x1E, 0x1E, + 0x1E, 0x1E, 0x1E, 0x3C, 0x1E, 0x7C, 0x3C, 0x78, 0x3C, 0x78, 0x3C, 0xF0, + 0x7C, 0xF0, 0x78, 0xF0, 0xF8, 0xF0, 0xF8, 0xF1, 0xF0, 0xFE, 0xF0, 0x7E, + 0xF0, 0x39, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x03, 0xC0, 0x03, + 0xC0, 0x1F, 0xF8, 0x03, 0x9C, 0x7F, 0x7C, 0x3D, 0xF8, 0x7A, 0xE0, 0xF8, + 0x03, 0xE0, 0x07, 0xC0, 0x0F, 0x00, 0x3E, 0x00, 0x7C, 0x00, 0xF0, 0x01, + 0xE0, 0x07, 0xC0, 0x0F, 0x00, 0x1E, 0x00, 0x7C, 0x00, 0x07, 0x18, 0xFF, + 0xC7, 0x1C, 0x70, 0x63, 0x81, 0x1E, 0x08, 0xF8, 0x07, 0xE0, 0x1F, 0x00, + 0x7C, 0x01, 0xF0, 0x07, 0x84, 0x3C, 0x20, 0xE1, 0x87, 0x1C, 0x70, 0x9E, + 0x00, 0x00, 0x80, 0x60, 0x30, 0x1C, 0x1F, 0x1F, 0xF7, 0xFC, 0x78, 0x1E, + 0x07, 0x83, 0xC0, 0xF0, 0x3C, 0x1F, 0x07, 0x81, 0xE0, 0x79, 0x3C, 0x4F, + 0x23, 0xF0, 0xFC, 0x1C, 0x00, 0x0F, 0x0F, 0x3F, 0x87, 0x8F, 0x83, 0xC7, + 0xC1, 0xE3, 0xE1, 0xE1, 0xE0, 0xF0, 0xF0, 0x78, 0xF8, 0x78, 0x78, 0x3C, + 0x3C, 0x3E, 0x1E, 0x1F, 0x1E, 0x1F, 0x0F, 0x17, 0x97, 0x9B, 0xCB, 0xF9, + 0xF9, 0xF8, 0xF8, 0x78, 0x38, 0x00, 0x18, 0x37, 0xC3, 0xDE, 0x1E, 0x78, + 0x73, 0xC1, 0x9E, 0x08, 0xF0, 0xC7, 0x84, 0x3C, 0x41, 0xE4, 0x0F, 0x40, + 0x7C, 0x03, 0xC0, 0x1C, 0x00, 0xC0, 0x04, 0x00, 0x38, 0x10, 0xDF, 0x06, + 0x3D, 0xE0, 0xC7, 0xBC, 0x38, 0x73, 0xC7, 0x06, 0x79, 0xF0, 0x8F, 0x3E, + 0x11, 0xEB, 0xC4, 0x3F, 0x79, 0x07, 0xCF, 0x60, 0xF9, 0xE8, 0x1E, 0x3E, + 0x03, 0x87, 0x80, 0x70, 0xF0, 0x0C, 0x0C, 0x01, 0x01, 0x00, 0x03, 0x83, + 0x87, 0xF1, 0xF0, 0x3C, 0xF8, 0x0F, 0x60, 0x03, 0xD0, 0x00, 0xF8, 0x00, + 0x1E, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1F, 0x00, 0x0F, + 0xC0, 0x02, 0xF1, 0x39, 0x3C, 0xCF, 0xCF, 0xE3, 0xE1, 0xF0, 0x70, 0x38, + 0x00, 0x01, 0x83, 0x07, 0xE3, 0xC1, 0xF1, 0xE0, 0x78, 0xF0, 0x3E, 0x18, + 0x1F, 0x08, 0x07, 0x84, 0x03, 0xC6, 0x01, 0xE2, 0x00, 0xFB, 0x00, 0x3D, + 0x00, 0x1F, 0x80, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xC0, 0x01, 0xE0, 0x00, + 0xE0, 0x00, 0x60, 0x00, 0x60, 0x0E, 0x60, 0x0F, 0xE0, 0x07, 0xE0, 0x01, + 0xC0, 0x00, 0x1F, 0xFC, 0x3F, 0xF8, 0x7F, 0xE1, 0x81, 0x82, 0x06, 0x00, + 0x08, 0x00, 0x20, 0x00, 0xC0, 0x03, 0x00, 0x0C, 0x00, 0x10, 0x00, 0x40, + 0x01, 0x80, 0x07, 0xC0, 0x1F, 0x86, 0x3F, 0x8E, 0xCF, 0x9C, 0x07, 0x30, + 0x03, 0xC0, 0x00, 0x1E, 0x00, 0xF8, 0x03, 0xC0, 0x0F, 0x00, 0x1E, 0x00, + 0x38, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x00, 0x1E, 0x00, 0x3C, + 0x00, 0x78, 0x01, 0xE0, 0x03, 0xC0, 0x1F, 0x00, 0x7E, 0x00, 0x30, 0x00, + 0x60, 0x00, 0xE0, 0x01, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x38, + 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x00, 0x0E, 0x00, 0x0C, 0x00, + 0x0F, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, + 0x00, 0xF0, 0x00, 0x70, 0x00, 0x70, 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x80, + 0x07, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xE0, 0x03, 0xC0, 0x07, + 0x80, 0x0F, 0x00, 0x1C, 0x00, 0x18, 0x00, 0x10, 0x00, 0xF0, 0x03, 0xF0, + 0x0F, 0x00, 0x1E, 0x00, 0x38, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, + 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x70, 0x01, 0xE0, 0x0F, 0x80, 0x7C, 0x00, + 0x3E, 0x00, 0x7F, 0xC6, 0xFF, 0xFF, 0x61, 0xFE, 0x00, 0x7C}; + +const GFXglyph FreeSerifBoldItalic18pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 9, 0, 1}, // 0x20 ' ' + {0, 11, 25, 14, 2, -23}, // 0x21 '!' + {35, 14, 10, 19, 4, -23}, // 0x22 '"' + {53, 20, 25, 17, -1, -24}, // 0x23 '#' + {116, 17, 29, 18, 0, -25}, // 0x24 '$' + {178, 27, 25, 29, 1, -23}, // 0x25 '%' + {263, 25, 25, 27, 0, -23}, // 0x26 '&' + {342, 5, 10, 10, 4, -23}, // 0x27 ''' + {349, 11, 30, 12, 1, -23}, // 0x28 '(' + {391, 11, 30, 12, -2, -23}, // 0x29 ')' + {433, 13, 15, 18, 2, -23}, // 0x2A '*' + {458, 17, 17, 20, 1, -16}, // 0x2B '+' + {495, 7, 11, 9, -2, -4}, // 0x2C ',' + {505, 9, 4, 12, 0, -9}, // 0x2D '-' + {510, 6, 5, 9, 0, -3}, // 0x2E '.' + {514, 14, 25, 12, 0, -23}, // 0x2F '/' + {558, 15, 25, 18, 1, -23}, // 0x30 '0' + {605, 15, 25, 17, 0, -23}, // 0x31 '1' + {652, 16, 25, 18, 0, -23}, // 0x32 '2' + {702, 15, 25, 17, 1, -23}, // 0x33 '3' + {749, 18, 24, 17, 0, -23}, // 0x34 '4' + {803, 17, 25, 18, 0, -23}, // 0x35 '5' + {857, 17, 25, 18, 1, -23}, // 0x36 '6' + {911, 16, 24, 17, 3, -23}, // 0x37 '7' + {959, 17, 25, 18, 0, -23}, // 0x38 '8' + {1013, 17, 25, 18, 0, -23}, // 0x39 '9' + {1067, 10, 17, 9, 0, -15}, // 0x3A ':' + {1089, 11, 22, 9, -1, -15}, // 0x3B ';' + {1120, 18, 19, 20, 1, -18}, // 0x3C '<' + {1163, 18, 10, 20, 2, -13}, // 0x3D '=' + {1186, 18, 19, 20, 2, -18}, // 0x3E '>' + {1229, 13, 25, 17, 3, -23}, // 0x3F '?' + {1270, 25, 25, 29, 2, -23}, // 0x40 '@' + {1349, 23, 25, 24, 0, -23}, // 0x41 'A' + {1421, 24, 25, 22, 0, -23}, // 0x42 'B' + {1496, 23, 25, 22, 1, -23}, // 0x43 'C' + {1568, 26, 25, 25, 0, -23}, // 0x44 'D' + {1650, 23, 25, 22, 0, -23}, // 0x45 'E' + {1722, 23, 25, 21, 0, -23}, // 0x46 'F' + {1794, 24, 25, 25, 2, -23}, // 0x47 'G' + {1869, 29, 25, 26, 0, -23}, // 0x48 'H' + {1960, 15, 25, 13, 0, -23}, // 0x49 'I' + {2007, 20, 27, 17, 0, -23}, // 0x4A 'J' + {2075, 25, 25, 23, 0, -23}, // 0x4B 'K' + {2154, 22, 25, 21, 0, -23}, // 0x4C 'L' + {2223, 33, 25, 31, 0, -23}, // 0x4D 'M' + {2327, 27, 25, 25, 0, -23}, // 0x4E 'N' + {2412, 23, 25, 24, 1, -23}, // 0x4F 'O' + {2484, 23, 25, 21, 0, -23}, // 0x50 'P' + {2556, 23, 31, 24, 1, -23}, // 0x51 'Q' + {2646, 24, 25, 23, 0, -23}, // 0x52 'R' + {2721, 18, 25, 18, 0, -23}, // 0x53 'S' + {2778, 21, 25, 21, 3, -23}, // 0x54 'T' + {2844, 24, 25, 25, 4, -23}, // 0x55 'U' + {2919, 24, 25, 25, 4, -23}, // 0x56 'V' + {2994, 31, 25, 32, 4, -23}, // 0x57 'W' + {3091, 25, 25, 24, 0, -23}, // 0x58 'X' + {3170, 21, 25, 22, 4, -23}, // 0x59 'Y' + {3236, 21, 25, 20, 0, -23}, // 0x5A 'Z' + {3302, 14, 30, 12, -1, -23}, // 0x5B '[' + {3355, 10, 25, 14, 4, -23}, // 0x5C '\' + {3387, 14, 30, 12, -2, -23}, // 0x5D ']' + {3440, 16, 13, 20, 2, -23}, // 0x5E '^' + {3466, 18, 3, 17, 0, 3}, // 0x5F '_' + {3473, 7, 6, 12, 3, -23}, // 0x60 '`' + {3479, 18, 17, 18, 0, -15}, // 0x61 'a' + {3518, 16, 26, 17, 1, -24}, // 0x62 'b' + {3570, 13, 17, 15, 1, -15}, // 0x63 'c' + {3598, 19, 25, 18, 1, -23}, // 0x64 'd' + {3658, 13, 17, 15, 1, -15}, // 0x65 'e' + {3686, 21, 32, 17, -3, -24}, // 0x66 'f' + {3770, 19, 23, 17, -1, -15}, // 0x67 'g' + {3825, 17, 25, 19, 1, -23}, // 0x68 'h' + {3879, 9, 25, 10, 1, -23}, // 0x69 'i' + {3908, 16, 31, 12, -3, -23}, // 0x6A 'j' + {3970, 17, 25, 18, 1, -23}, // 0x6B 'k' + {4024, 11, 25, 10, 1, -23}, // 0x6C 'l' + {4059, 26, 17, 27, 0, -15}, // 0x6D 'm' + {4115, 18, 17, 18, 0, -15}, // 0x6E 'n' + {4154, 15, 17, 17, 1, -15}, // 0x6F 'o' + {4186, 19, 23, 17, -2, -15}, // 0x70 'p' + {4241, 16, 23, 17, 1, -15}, // 0x71 'q' + {4287, 15, 16, 14, 0, -15}, // 0x72 'r' + {4317, 13, 17, 12, 0, -15}, // 0x73 's' + {4345, 10, 22, 10, 1, -20}, // 0x74 't' + {4373, 17, 17, 19, 1, -15}, // 0x75 'u' + {4410, 13, 16, 15, 2, -15}, // 0x76 'v' + {4436, 19, 16, 23, 3, -15}, // 0x77 'w' + {4474, 18, 17, 17, -1, -15}, // 0x78 'x' + {4513, 17, 23, 15, -2, -15}, // 0x79 'y' + {4562, 15, 19, 14, 0, -15}, // 0x7A 'z' + {4598, 15, 32, 12, 0, -24}, // 0x7B '{' + {4658, 3, 25, 9, 4, -23}, // 0x7C '|' + {4668, 15, 32, 12, -5, -24}, // 0x7D '}' + {4728, 16, 5, 20, 2, -11}}; // 0x7E '~' + +const GFXfont FreeSerifBoldItalic18pt7b PROGMEM = { + (uint8_t *)FreeSerifBoldItalic18pt7bBitmaps, + (GFXglyph *)FreeSerifBoldItalic18pt7bGlyphs, 0x20, 0x7E, 42}; + +// Approx. 5410 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBoldItalic24pt7b.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBoldItalic24pt7b.h new file mode 100644 index 0000000..e2fa4cb --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBoldItalic24pt7b.h @@ -0,0 +1,795 @@ +#pragma once +#include + +const uint8_t FreeSerifBoldItalic24pt7bBitmaps[] PROGMEM = { + 0x00, 0x3C, 0x00, 0xFC, 0x01, 0xF8, 0x07, 0xF0, 0x0F, 0xE0, 0x1F, 0xC0, + 0x3F, 0x00, 0x7E, 0x00, 0xF8, 0x01, 0xF0, 0x07, 0xC0, 0x0F, 0x80, 0x1E, + 0x00, 0x3C, 0x00, 0x70, 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x00, 0x0E, 0x00, + 0x18, 0x00, 0x30, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xF0, 0x03, 0xF0, 0x0F, 0xF0, 0x1F, 0xE0, 0x3F, 0xC0, 0x3F, 0x00, + 0x3C, 0x00, 0x1C, 0x01, 0xC7, 0xC0, 0x7D, 0xF8, 0x1F, 0xBF, 0x03, 0xF7, + 0xC0, 0x7C, 0xF8, 0x0F, 0x9E, 0x01, 0xE3, 0xC0, 0x3C, 0x70, 0x07, 0x1E, + 0x00, 0xE3, 0x80, 0x38, 0x70, 0x07, 0x0C, 0x00, 0xC0, 0x00, 0x03, 0xC1, + 0xE0, 0x00, 0x70, 0x38, 0x00, 0x1E, 0x0F, 0x00, 0x03, 0xC1, 0xE0, 0x00, + 0x70, 0x38, 0x00, 0x1E, 0x0F, 0x00, 0x03, 0x81, 0xC0, 0x00, 0xF0, 0x78, + 0x00, 0x1E, 0x0F, 0x00, 0x07, 0x83, 0xC0, 0x1F, 0xFF, 0xFF, 0x83, 0xFF, + 0xFF, 0xF0, 0x7F, 0xFF, 0xFC, 0x00, 0xE0, 0x70, 0x00, 0x3C, 0x1E, 0x00, + 0x07, 0x83, 0xC0, 0x00, 0xE0, 0x70, 0x00, 0x3C, 0x1E, 0x00, 0x07, 0x83, + 0xC0, 0x00, 0xE0, 0x70, 0x07, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFC, 0x1F, + 0xFF, 0xFF, 0x00, 0x38, 0x1C, 0x00, 0x0F, 0x07, 0x80, 0x01, 0xE0, 0xF0, + 0x00, 0x38, 0x1C, 0x00, 0x0F, 0x07, 0x80, 0x01, 0xC0, 0xE0, 0x00, 0x78, + 0x3C, 0x00, 0x0F, 0x07, 0x80, 0x01, 0xC0, 0xE0, 0x00, 0x78, 0x3C, 0x00, + 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x1F, + 0xE0, 0x00, 0x7F, 0xF8, 0x01, 0xF1, 0x9E, 0x01, 0xC1, 0x8F, 0x03, 0x83, + 0x8F, 0x03, 0x83, 0x06, 0x07, 0x83, 0x06, 0x07, 0x87, 0x06, 0x07, 0xC7, + 0x04, 0x07, 0xE6, 0x04, 0x07, 0xFE, 0x00, 0x03, 0xFE, 0x00, 0x03, 0xFF, + 0x00, 0x01, 0xFF, 0x80, 0x00, 0xFF, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x1F, + 0xE0, 0x00, 0x1F, 0xF0, 0x00, 0x3F, 0xF0, 0x00, 0x3B, 0xF8, 0x20, 0x31, + 0xF8, 0x20, 0x30, 0xF8, 0x60, 0x70, 0xF8, 0x60, 0x60, 0xF8, 0x60, 0x60, + 0xF8, 0xF0, 0xE0, 0xF0, 0xF0, 0xE1, 0xE0, 0x78, 0xC3, 0xE0, 0x3C, 0xC7, + 0xC0, 0x0F, 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x01, 0x80, 0x00, 0x03, 0x80, + 0x00, 0x03, 0x80, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0xF0, + 0x00, 0x70, 0x00, 0xFF, 0x80, 0x1C, 0x00, 0x3F, 0x38, 0x1F, 0x00, 0x0F, + 0xC7, 0xFF, 0xE0, 0x03, 0xF0, 0x3F, 0xB8, 0x00, 0x7E, 0x04, 0x07, 0x00, + 0x1F, 0x80, 0x81, 0xC0, 0x03, 0xF0, 0x10, 0x38, 0x00, 0xFC, 0x02, 0x0E, + 0x00, 0x1F, 0x80, 0x81, 0x80, 0x03, 0xF0, 0x10, 0x70, 0x00, 0x7C, 0x06, + 0x1C, 0x00, 0x0F, 0x80, 0x83, 0x80, 0x01, 0xF0, 0x30, 0xE0, 0x00, 0x1E, + 0x0C, 0x1C, 0x07, 0xC3, 0xE3, 0x07, 0x03, 0xFC, 0x3F, 0xC0, 0xC0, 0xFC, + 0x43, 0xE0, 0x38, 0x3E, 0x0C, 0x00, 0x0E, 0x0F, 0xC0, 0x80, 0x01, 0xC3, + 0xF0, 0x10, 0x00, 0x70, 0xFC, 0x02, 0x00, 0x0C, 0x1F, 0x80, 0x40, 0x03, + 0x83, 0xE0, 0x08, 0x00, 0x60, 0xFC, 0x02, 0x00, 0x1C, 0x1F, 0x80, 0x40, + 0x07, 0x03, 0xE0, 0x10, 0x00, 0xE0, 0x7C, 0x02, 0x00, 0x38, 0x0F, 0x80, + 0xC0, 0x06, 0x01, 0xF0, 0x30, 0x01, 0xC0, 0x1F, 0x0C, 0x00, 0x30, 0x01, + 0xFF, 0x00, 0x0E, 0x00, 0x1F, 0x80, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, + 0xFF, 0x80, 0x00, 0x01, 0xF1, 0xE0, 0x00, 0x00, 0xF0, 0x78, 0x00, 0x00, + 0xF0, 0x3C, 0x00, 0x00, 0x78, 0x1E, 0x00, 0x00, 0x7C, 0x0F, 0x00, 0x00, + 0x3E, 0x0F, 0x80, 0x00, 0x1F, 0x07, 0x80, 0x00, 0x0F, 0x87, 0x80, 0x00, + 0x07, 0xC7, 0x80, 0x00, 0x03, 0xFF, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, + 0x00, 0xFC, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x01, 0xFF, 0x07, 0xFE, + 0x03, 0xCF, 0xC0, 0xFE, 0x03, 0xC7, 0xE0, 0x3C, 0x07, 0xC3, 0xF0, 0x1C, + 0x07, 0xC0, 0xFC, 0x0C, 0x03, 0xC0, 0x7E, 0x0E, 0x03, 0xE0, 0x3F, 0x0E, + 0x01, 0xF0, 0x1F, 0xC6, 0x01, 0xF8, 0x07, 0xF6, 0x00, 0xFC, 0x03, 0xFF, + 0x00, 0x7E, 0x00, 0xFF, 0x00, 0x3F, 0x80, 0x7F, 0x80, 0x1F, 0xC0, 0x1F, + 0xC0, 0x07, 0xF0, 0x0F, 0xF0, 0x13, 0xFE, 0x0F, 0xFE, 0x18, 0xFF, 0xFE, + 0xFF, 0xF8, 0x3F, 0xFE, 0x3F, 0xF8, 0x07, 0xF8, 0x03, 0xF0, 0x00, 0x1C, + 0x7D, 0xFB, 0xF7, 0xCF, 0x9E, 0x3C, 0x71, 0xE3, 0x87, 0x0C, 0x00, 0x00, + 0x04, 0x00, 0x70, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x3C, 0x01, + 0xE0, 0x0F, 0x00, 0x3C, 0x01, 0xE0, 0x0F, 0x80, 0x3C, 0x00, 0xF0, 0x07, + 0xC0, 0x1E, 0x00, 0x78, 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0xF0, 0x03, + 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x3C, 0x00, + 0x70, 0x01, 0xC0, 0x07, 0x00, 0x1C, 0x00, 0x30, 0x00, 0xE0, 0x01, 0x80, + 0x06, 0x00, 0x0C, 0x00, 0x30, 0x00, 0x60, 0x01, 0x80, 0x00, 0x00, 0x01, + 0x00, 0x06, 0x00, 0x08, 0x00, 0x30, 0x00, 0x40, 0x01, 0x80, 0x06, 0x00, + 0x1C, 0x00, 0x30, 0x00, 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x38, 0x00, 0xF0, + 0x03, 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x7C, + 0x01, 0xF0, 0x07, 0xC0, 0x1E, 0x00, 0x78, 0x03, 0xE0, 0x0F, 0x80, 0x3C, + 0x01, 0xF0, 0x07, 0x80, 0x1E, 0x00, 0xF0, 0x03, 0x80, 0x1E, 0x00, 0xF0, + 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x06, 0x00, 0x30, 0x00, 0x80, 0x00, 0x00, + 0xE0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x07, 0x0E, 0x1D, 0xF1, + 0xC7, 0xFF, 0x11, 0xFF, 0xE2, 0x3F, 0x7E, 0x4F, 0xC0, 0x3E, 0x00, 0x07, + 0xC0, 0x3F, 0x27, 0xEF, 0xC4, 0x7F, 0xF8, 0x8F, 0xFE, 0x38, 0xFB, 0x87, + 0x0E, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0x70, 0x00, 0x00, + 0x78, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x78, + 0x00, 0x01, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x78, 0x03, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x01, + 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, + 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, + 0x07, 0x80, 0x00, 0x0F, 0x07, 0xE1, 0xFC, 0x7F, 0x1F, 0xC3, 0xF0, 0x7C, + 0x0E, 0x03, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x1C, 0x04, 0x00, 0x7F, 0xF7, + 0xFF, 0x7F, 0xEF, 0xFE, 0xFF, 0xE0, 0x3C, 0x7E, 0xFF, 0xFF, 0xFF, 0x7E, + 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, + 0x78, 0x00, 0x1E, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x07, + 0xC0, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x3C, + 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x01, 0xE0, + 0x00, 0x7C, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x0F, 0x00, + 0x03, 0xC0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x03, 0xC0, 0x00, 0xF8, 0x00, + 0x1E, 0x00, 0x07, 0xC0, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x00, + 0xE3, 0x80, 0x0F, 0x07, 0x00, 0x7C, 0x1C, 0x03, 0xE0, 0x78, 0x0F, 0x81, + 0xE0, 0x7C, 0x07, 0x83, 0xF0, 0x1F, 0x0F, 0xC0, 0xFC, 0x7E, 0x03, 0xF1, + 0xF8, 0x0F, 0xCF, 0xE0, 0x3F, 0x3F, 0x00, 0xFD, 0xFC, 0x07, 0xF7, 0xF0, + 0x1F, 0xDF, 0xC0, 0x7F, 0x7E, 0x01, 0xFB, 0xF8, 0x0F, 0xEF, 0xE0, 0x3F, + 0xBF, 0x80, 0xFE, 0xFC, 0x03, 0xF3, 0xF0, 0x1F, 0xCF, 0xC0, 0x7F, 0x3F, + 0x01, 0xF8, 0xFC, 0x07, 0xE3, 0xE0, 0x3F, 0x0F, 0x80, 0xFC, 0x1E, 0x07, + 0xE0, 0x78, 0x1F, 0x00, 0xE0, 0x78, 0x03, 0x83, 0xC0, 0x07, 0x1E, 0x00, + 0x07, 0xE0, 0x00, 0x00, 0x00, 0x70, 0x01, 0xFE, 0x01, 0xFF, 0xE0, 0x00, + 0xFE, 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x0F, 0xC0, 0x01, 0xFC, 0x00, + 0x1F, 0x80, 0x01, 0xF8, 0x00, 0x3F, 0x80, 0x03, 0xF8, 0x00, 0x3F, 0x00, + 0x03, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0x07, 0xE0, + 0x00, 0xFE, 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x1F, 0xC0, 0x01, 0xFC, + 0x00, 0x1F, 0x80, 0x01, 0xF8, 0x00, 0x3F, 0x80, 0x03, 0xF0, 0x00, 0x3F, + 0x00, 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x1F, 0xF8, 0x0F, 0xFF, 0xF0, 0x00, + 0x0F, 0x80, 0x01, 0xFF, 0x80, 0x0F, 0xFF, 0x00, 0x7F, 0xFE, 0x03, 0x83, + 0xF8, 0x0C, 0x07, 0xF0, 0x60, 0x1F, 0xC3, 0x00, 0x3F, 0x00, 0x00, 0xFC, + 0x00, 0x03, 0xF0, 0x00, 0x0F, 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF8, 0x00, + 0x07, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x1E, + 0x00, 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x3C, 0x00, 0x01, 0xE0, 0x00, + 0x0E, 0x00, 0x00, 0x70, 0x06, 0x03, 0x80, 0x10, 0x1C, 0x00, 0xC0, 0xE0, + 0x06, 0x07, 0xFF, 0xF8, 0x3F, 0xFF, 0xE1, 0xFF, 0xFF, 0x0F, 0xFF, 0xFC, + 0x3F, 0xFF, 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0xFF, 0xC0, 0x0F, 0xFF, 0x80, + 0x60, 0xFE, 0x03, 0x01, 0xFC, 0x08, 0x03, 0xF0, 0x00, 0x0F, 0xC0, 0x00, + 0x3F, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0xFC, + 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x07, 0xF8, 0x00, 0x7F, 0xF0, 0x00, + 0x7F, 0xE0, 0x00, 0x3F, 0xC0, 0x00, 0x7F, 0x00, 0x01, 0xFC, 0x00, 0x03, + 0xF0, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xE0, + 0x00, 0x0F, 0x80, 0x00, 0x3C, 0x1C, 0x01, 0xF0, 0xF8, 0x07, 0x83, 0xF0, + 0x3C, 0x0F, 0xE1, 0xE0, 0x1F, 0xFE, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x07, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x07, 0xE0, 0x00, + 0x07, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF8, 0x00, 0x07, 0xFC, 0x00, + 0x06, 0xFC, 0x00, 0x06, 0x7E, 0x00, 0x06, 0x3F, 0x00, 0x06, 0x3F, 0x00, + 0x06, 0x1F, 0x80, 0x06, 0x0F, 0xC0, 0x06, 0x07, 0xE0, 0x03, 0x07, 0xE0, + 0x03, 0x03, 0xF0, 0x03, 0x01, 0xF8, 0x03, 0x01, 0xFC, 0x03, 0x00, 0xFC, + 0x03, 0x00, 0x7E, 0x03, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, + 0xF0, 0xFF, 0xFF, 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x07, 0xE0, 0x00, 0x03, + 0xF0, 0x00, 0x01, 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x00, + 0x7E, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, + 0x7F, 0xFC, 0x00, 0xFF, 0xFC, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x01, + 0x80, 0x00, 0x03, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x07, 0xFE, 0x00, 0x07, + 0xFF, 0x00, 0x07, 0xFF, 0x80, 0x0F, 0xFF, 0xC0, 0x00, 0xFF, 0xE0, 0x00, + 0x1F, 0xE0, 0x00, 0x0F, 0xF0, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xF0, 0x00, + 0x03, 0xF0, 0x00, 0x01, 0xF0, 0x00, 0x01, 0xF0, 0x00, 0x01, 0xF0, 0x00, + 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x03, 0xC0, 0x78, 0x03, 0xC0, 0xFC, + 0x07, 0x80, 0xFC, 0x0F, 0x00, 0xFE, 0x1E, 0x00, 0x7F, 0xF8, 0x00, 0x1F, + 0xC0, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x01, 0xF8, 0x00, 0x0F, 0x80, 0x00, + 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x01, 0xFC, + 0x00, 0x03, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x3F, 0x80, 0x00, 0xFE, 0x00, + 0x01, 0xFF, 0xF0, 0x07, 0xFF, 0xF0, 0x0F, 0xE1, 0xF0, 0x3F, 0x81, 0xF0, + 0x7F, 0x03, 0xF0, 0xFC, 0x07, 0xE3, 0xF8, 0x0F, 0xC7, 0xF0, 0x1F, 0x8F, + 0xC0, 0x7F, 0x1F, 0x80, 0xFE, 0x3F, 0x01, 0xFC, 0x7C, 0x03, 0xF0, 0xF8, + 0x0F, 0xE1, 0xF0, 0x1F, 0xC1, 0xE0, 0x3F, 0x03, 0xC0, 0xFC, 0x07, 0x81, + 0xF0, 0x07, 0x87, 0xC0, 0x07, 0xFF, 0x00, 0x03, 0xF8, 0x00, 0x0F, 0xFF, + 0xFC, 0x1F, 0xFF, 0xF8, 0x3F, 0xFF, 0xE0, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, + 0x07, 0x00, 0x1C, 0x08, 0x00, 0x78, 0x30, 0x01, 0xE0, 0x40, 0x03, 0xC0, + 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, + 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x78, 0x00, 0x01, + 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x78, + 0x00, 0x01, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, + 0x00, 0x78, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x80, 0x00, + 0x1E, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x03, 0xFE, 0x00, 0x3C, 0x78, + 0x03, 0xC1, 0xE0, 0x3C, 0x07, 0x81, 0xE0, 0x3C, 0x1F, 0x01, 0xE0, 0xF8, + 0x0F, 0x07, 0xC0, 0x78, 0x3F, 0x03, 0xC1, 0xF8, 0x3C, 0x0F, 0xE1, 0xE0, + 0x3F, 0x9E, 0x01, 0xFF, 0xC0, 0x07, 0xFC, 0x00, 0x3F, 0xC0, 0x00, 0xFF, + 0x00, 0x1F, 0xFC, 0x03, 0xCF, 0xF0, 0x3C, 0x3F, 0x83, 0xC0, 0xFC, 0x3C, + 0x03, 0xF1, 0xE0, 0x1F, 0x9E, 0x00, 0x7C, 0xF0, 0x03, 0xE7, 0x80, 0x1F, + 0x3C, 0x00, 0xF9, 0xE0, 0x07, 0x87, 0x00, 0x3C, 0x3C, 0x03, 0xC0, 0xF0, + 0x3C, 0x03, 0xC3, 0xC0, 0x07, 0xF0, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0xFF, + 0xE0, 0x03, 0xF1, 0xE0, 0x0F, 0xC1, 0xC0, 0x3F, 0x03, 0xC0, 0xFE, 0x07, + 0x81, 0xF8, 0x0F, 0x87, 0xF0, 0x1F, 0x0F, 0xC0, 0x3E, 0x3F, 0x80, 0xFC, + 0x7F, 0x01, 0xF8, 0xFC, 0x03, 0xF1, 0xF8, 0x07, 0xE3, 0xF0, 0x1F, 0xC7, + 0xE0, 0x3F, 0x8F, 0xC0, 0x7E, 0x0F, 0x81, 0xFC, 0x1F, 0x03, 0xF8, 0x1F, + 0x0F, 0xE0, 0x1F, 0xFF, 0xC0, 0x1F, 0xFF, 0x00, 0x00, 0xFE, 0x00, 0x03, + 0xF8, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0x7E, 0x00, 0x01, 0xF8, + 0x00, 0x07, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, + 0x1F, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x01, 0xE0, 0x1F, 0x81, 0xFE, 0x0F, + 0xF0, 0x7F, 0x81, 0xF8, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x7E, 0x07, 0xF8, 0x3F, + 0xC1, 0xFE, 0x07, 0xE0, 0x1E, 0x00, 0x00, 0x78, 0x01, 0xF8, 0x07, 0xF8, + 0x0F, 0xF0, 0x1F, 0xE0, 0x1F, 0x80, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, + 0x1F, 0x80, 0x3F, 0x80, 0x7F, 0x00, 0xFE, 0x00, 0xFC, 0x00, 0xF8, 0x00, + 0xE0, 0x01, 0xC0, 0x07, 0x00, 0x0C, 0x00, 0x30, 0x01, 0xC0, 0x0E, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x07, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x7F, 0x00, 0x03, 0xFF, 0x00, 0x0F, 0xFC, 0x00, 0x3F, 0xF0, + 0x01, 0xFF, 0xC0, 0x07, 0xFE, 0x00, 0x1F, 0xF8, 0x00, 0x7F, 0xE0, 0x00, + 0xFF, 0x80, 0x00, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xE0, 0x00, + 0x1F, 0xF8, 0x00, 0x07, 0xFE, 0x00, 0x01, 0xFF, 0xC0, 0x00, 0x3F, 0xF0, + 0x00, 0x0F, 0xFC, 0x00, 0x03, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x07, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x80, 0x00, 0x00, 0xE0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xFF, 0x00, 0x00, + 0xFF, 0xC0, 0x00, 0x3F, 0xF0, 0x00, 0x0F, 0xFC, 0x00, 0x03, 0xFF, 0x80, + 0x00, 0x7F, 0xE0, 0x00, 0x1F, 0xF8, 0x00, 0x07, 0xFF, 0x00, 0x00, 0xFF, + 0x00, 0x00, 0x3F, 0x00, 0x00, 0xFF, 0x00, 0x03, 0xFF, 0x00, 0x1F, 0xFC, + 0x00, 0x7F, 0xE0, 0x01, 0xFF, 0x80, 0x0F, 0xFE, 0x00, 0x3F, 0xF0, 0x00, + 0xFF, 0xC0, 0x00, 0xFF, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xE0, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x01, 0xF8, 0x01, 0xFF, 0x80, 0xF1, 0xF0, 0x38, 0x3E, + 0x1E, 0x0F, 0xC7, 0xC3, 0xF1, 0xF0, 0xFC, 0x7C, 0x3F, 0x0E, 0x0F, 0xC0, + 0x07, 0xF0, 0x01, 0xF8, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x1F, 0x00, 0x07, + 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x0C, 0x00, + 0x06, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0xC0, 0x01, 0xF8, 0x00, 0xFF, 0x00, 0x3F, 0xC0, 0x0F, 0xF0, + 0x01, 0xF8, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x1F, + 0xFF, 0xC0, 0x00, 0x3F, 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x7C, + 0x00, 0x03, 0x80, 0x7C, 0x00, 0x00, 0xE0, 0x7C, 0x00, 0x00, 0x38, 0x3C, + 0x00, 0xF0, 0x4C, 0x3E, 0x00, 0xFD, 0xE7, 0x1E, 0x00, 0xF3, 0xF1, 0x9F, + 0x00, 0xF1, 0xF0, 0xEF, 0x80, 0xF0, 0x78, 0x3F, 0x80, 0xF0, 0x3C, 0x1F, + 0xC0, 0x78, 0x1E, 0x0F, 0xE0, 0x78, 0x1E, 0x07, 0xF0, 0x3C, 0x0F, 0x03, + 0xF8, 0x3E, 0x07, 0x81, 0xFC, 0x1E, 0x07, 0x81, 0xFE, 0x0F, 0x03, 0xC0, + 0xDF, 0x07, 0x83, 0xC0, 0x6F, 0x83, 0xC3, 0xE0, 0x63, 0xE1, 0xF3, 0xF0, + 0x71, 0xF0, 0x7E, 0x78, 0x70, 0xF8, 0x1E, 0x3F, 0xF0, 0x3E, 0x00, 0x07, + 0xE0, 0x0F, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x01, 0xF0, 0x00, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x03, 0x80, 0x03, 0xF0, + 0x07, 0xC0, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x00, 0xF0, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, + 0x1F, 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x03, + 0x7E, 0x00, 0x00, 0x06, 0xFC, 0x00, 0x00, 0x19, 0xF8, 0x00, 0x00, 0x63, + 0xF8, 0x00, 0x00, 0xC7, 0xF0, 0x00, 0x03, 0x07, 0xE0, 0x00, 0x06, 0x0F, + 0xC0, 0x00, 0x18, 0x1F, 0x80, 0x00, 0x60, 0x3F, 0x00, 0x00, 0xC0, 0x7F, + 0x00, 0x03, 0x00, 0xFE, 0x00, 0x0F, 0xFF, 0xFC, 0x00, 0x1F, 0xFF, 0xF8, + 0x00, 0x60, 0x03, 0xF0, 0x00, 0xC0, 0x07, 0xE0, 0x03, 0x00, 0x0F, 0xE0, + 0x0E, 0x00, 0x1F, 0xC0, 0x18, 0x00, 0x3F, 0x80, 0x70, 0x00, 0x7F, 0x01, + 0xC0, 0x00, 0xFE, 0x03, 0x80, 0x01, 0xFE, 0x1F, 0x80, 0x07, 0xFE, 0x7F, + 0xC0, 0x3F, 0xFF, 0x01, 0xFF, 0xFF, 0x80, 0x00, 0xFF, 0xFF, 0xE0, 0x00, + 0xFE, 0x1F, 0xE0, 0x01, 0xFC, 0x1F, 0xE0, 0x03, 0xF8, 0x1F, 0xE0, 0x0F, + 0xE0, 0x3F, 0xC0, 0x1F, 0xC0, 0x7F, 0x80, 0x3F, 0x80, 0xFF, 0x00, 0x7F, + 0x01, 0xFE, 0x01, 0xFC, 0x03, 0xF8, 0x03, 0xF8, 0x0F, 0xF0, 0x07, 0xF0, + 0x1F, 0xC0, 0x0F, 0xC0, 0x7F, 0x00, 0x3F, 0x87, 0xF0, 0x00, 0x7F, 0xFF, + 0x00, 0x00, 0xFE, 0x1F, 0xC0, 0x03, 0xF8, 0x0F, 0xE0, 0x07, 0xF0, 0x0F, + 0xE0, 0x0F, 0xE0, 0x1F, 0xC0, 0x1F, 0xC0, 0x3F, 0xC0, 0x7F, 0x00, 0x7F, + 0x80, 0xFE, 0x00, 0xFF, 0x01, 0xFC, 0x01, 0xFE, 0x03, 0xF0, 0x07, 0xFC, + 0x0F, 0xE0, 0x0F, 0xF0, 0x1F, 0xC0, 0x3F, 0xE0, 0x3F, 0x80, 0x7F, 0x80, + 0xFE, 0x01, 0xFE, 0x01, 0xFE, 0x0F, 0xF8, 0x07, 0xFF, 0xFF, 0xC0, 0x3F, + 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x01, 0xFE, 0x08, 0x00, 0x7F, 0xFE, 0xC0, + 0x0F, 0xF0, 0x7E, 0x00, 0xFE, 0x01, 0xF0, 0x1F, 0xE0, 0x07, 0x01, 0xFE, + 0x00, 0x38, 0x1F, 0xE0, 0x00, 0xC0, 0xFE, 0x00, 0x06, 0x0F, 0xF0, 0x00, + 0x30, 0xFF, 0x00, 0x01, 0x07, 0xF8, 0x00, 0x08, 0x7F, 0x80, 0x00, 0x03, + 0xFC, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x0F, 0xF0, + 0x00, 0x00, 0xFF, 0x80, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, + 0x01, 0xFE, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x03, + 0xFC, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x03, 0xF8, + 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x60, 0x7F, 0x00, 0x06, 0x03, 0xFC, 0x00, + 0x70, 0x0F, 0xE0, 0x07, 0x00, 0x1F, 0xC0, 0xE0, 0x00, 0x7F, 0xFE, 0x00, + 0x00, 0x7F, 0x80, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x00, 0x3F, 0xFF, 0xFE, + 0x00, 0x00, 0xFE, 0x07, 0xF0, 0x00, 0x1F, 0xC0, 0x3F, 0x00, 0x03, 0xF8, + 0x07, 0xF0, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x1F, 0xC0, 0x07, 0xF0, 0x03, + 0xF8, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x1F, 0xC0, 0x1F, 0xC0, 0x03, 0xFC, + 0x03, 0xF8, 0x00, 0x7F, 0x80, 0x7F, 0x00, 0x0F, 0xF0, 0x0F, 0xC0, 0x01, + 0xFE, 0x03, 0xF8, 0x00, 0x3F, 0xC0, 0x7F, 0x00, 0x07, 0xF8, 0x0F, 0xE0, + 0x01, 0xFF, 0x03, 0xF8, 0x00, 0x3F, 0xE0, 0x7F, 0x00, 0x07, 0xF8, 0x0F, + 0xE0, 0x00, 0xFF, 0x01, 0xFC, 0x00, 0x3F, 0xE0, 0x7F, 0x00, 0x07, 0xF8, + 0x0F, 0xE0, 0x01, 0xFF, 0x01, 0xFC, 0x00, 0x3F, 0xC0, 0x3F, 0x00, 0x0F, + 0xF0, 0x0F, 0xE0, 0x01, 0xFC, 0x01, 0xFC, 0x00, 0x7F, 0x00, 0x3F, 0x80, + 0x1F, 0xC0, 0x0F, 0xE0, 0x0F, 0xF0, 0x01, 0xFE, 0x07, 0xF8, 0x00, 0x7F, + 0xFF, 0xFC, 0x00, 0x3F, 0xFF, 0xF8, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFF, + 0x00, 0x7F, 0xFF, 0xFF, 0x00, 0x3F, 0xC0, 0x7E, 0x00, 0x3F, 0x80, 0x1E, + 0x00, 0x3F, 0x80, 0x0E, 0x00, 0x7F, 0x00, 0x06, 0x00, 0x7F, 0x00, 0x04, + 0x00, 0x7F, 0x00, 0x04, 0x00, 0x7F, 0x00, 0x00, 0x00, 0xFE, 0x01, 0x80, + 0x00, 0xFE, 0x01, 0x00, 0x00, 0xFE, 0x03, 0x00, 0x00, 0xFC, 0x0F, 0x00, + 0x01, 0xFF, 0xFF, 0x00, 0x01, 0xFF, 0xFE, 0x00, 0x01, 0xFC, 0x3E, 0x00, + 0x03, 0xF8, 0x1E, 0x00, 0x03, 0xF8, 0x0C, 0x00, 0x03, 0xF8, 0x0C, 0x00, + 0x03, 0xF8, 0x0C, 0x00, 0x07, 0xF0, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x08, + 0x07, 0xF0, 0x00, 0x18, 0x07, 0xE0, 0x00, 0x30, 0x0F, 0xE0, 0x00, 0x30, + 0x0F, 0xE0, 0x00, 0x70, 0x0F, 0xE0, 0x01, 0xE0, 0x1F, 0xC0, 0x07, 0xE0, + 0x1F, 0xE0, 0x3F, 0xE0, 0x3F, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0xC0, + 0x01, 0xFF, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0xFC, 0x00, 0xFF, 0x03, 0xF0, + 0x01, 0xFC, 0x01, 0xE0, 0x03, 0xF8, 0x01, 0xC0, 0x0F, 0xE0, 0x01, 0x80, + 0x1F, 0xC0, 0x02, 0x00, 0x3F, 0x80, 0x04, 0x00, 0x7F, 0x00, 0x00, 0x01, + 0xFC, 0x03, 0x00, 0x03, 0xF8, 0x04, 0x00, 0x07, 0xF0, 0x18, 0x00, 0x0F, + 0xC0, 0xF0, 0x00, 0x3F, 0xFF, 0xE0, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0xFE, + 0x1F, 0x00, 0x03, 0xF8, 0x1E, 0x00, 0x07, 0xF0, 0x18, 0x00, 0x0F, 0xE0, + 0x30, 0x00, 0x1F, 0xC0, 0x60, 0x00, 0x7F, 0x00, 0x80, 0x00, 0xFE, 0x01, + 0x00, 0x01, 0xFC, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x0F, 0xE0, 0x00, + 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0xFF, 0x00, 0x00, + 0x01, 0xFE, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xFF, 0x02, 0x00, 0x0F, 0xFF, 0xEE, 0x00, 0x3F, 0xC0, + 0xFC, 0x00, 0x7F, 0x00, 0x7C, 0x01, 0xFE, 0x00, 0x3C, 0x03, 0xFC, 0x00, + 0x38, 0x07, 0xF8, 0x00, 0x18, 0x07, 0xF0, 0x00, 0x18, 0x0F, 0xF0, 0x00, + 0x10, 0x1F, 0xE0, 0x00, 0x10, 0x1F, 0xE0, 0x00, 0x00, 0x3F, 0xC0, 0x00, + 0x00, 0x3F, 0xC0, 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x00, 0x7F, 0x80, 0x00, + 0x00, 0x7F, 0x80, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0xFF, 0x80, 0x1F, + 0xFF, 0xFF, 0x00, 0x07, 0xFC, 0xFF, 0x00, 0x03, 0xF8, 0xFF, 0x00, 0x03, + 0xF8, 0xFF, 0x00, 0x03, 0xF0, 0xFF, 0x00, 0x03, 0xF0, 0xFF, 0x00, 0x07, + 0xF0, 0x7F, 0x00, 0x07, 0xF0, 0x7F, 0x00, 0x07, 0xE0, 0x7F, 0x80, 0x07, + 0xE0, 0x3F, 0x80, 0x0F, 0xE0, 0x1F, 0xC0, 0x0F, 0xC0, 0x0F, 0xE0, 0x0F, + 0xC0, 0x07, 0xF0, 0x3F, 0x80, 0x01, 0xFF, 0xFE, 0x00, 0x00, 0x3F, 0xE0, + 0x00, 0x01, 0xFF, 0xFC, 0x7F, 0xFE, 0x00, 0xFF, 0xC0, 0x3F, 0xF0, 0x00, + 0xFE, 0x00, 0x3F, 0xC0, 0x01, 0xFC, 0x00, 0x7F, 0x00, 0x03, 0xF8, 0x00, + 0xFE, 0x00, 0x0F, 0xE0, 0x01, 0xFC, 0x00, 0x1F, 0xC0, 0x07, 0xF0, 0x00, + 0x3F, 0x80, 0x0F, 0xE0, 0x00, 0x7F, 0x00, 0x1F, 0xC0, 0x01, 0xFC, 0x00, + 0x7F, 0x00, 0x03, 0xF8, 0x00, 0xFE, 0x00, 0x07, 0xF0, 0x01, 0xFC, 0x00, + 0x0F, 0xC0, 0x03, 0xF8, 0x00, 0x3F, 0x80, 0x0F, 0xE0, 0x00, 0x7F, 0xFF, + 0xFF, 0xC0, 0x00, 0xFF, 0xFF, 0xFF, 0x80, 0x03, 0xF8, 0x00, 0x7F, 0x00, + 0x07, 0xF0, 0x01, 0xFC, 0x00, 0x0F, 0xE0, 0x03, 0xF8, 0x00, 0x1F, 0xC0, + 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x1F, 0xC0, 0x00, 0xFE, 0x00, 0x3F, 0x80, + 0x01, 0xFC, 0x00, 0x7F, 0x00, 0x03, 0xF0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, + 0x03, 0xF8, 0x00, 0x1F, 0xC0, 0x07, 0xF0, 0x00, 0x3F, 0x80, 0x0F, 0xE0, + 0x00, 0xFF, 0x00, 0x3F, 0xC0, 0x01, 0xFE, 0x00, 0x7F, 0x80, 0x07, 0xFC, + 0x01, 0xFF, 0x00, 0x3F, 0xFF, 0x1F, 0xFF, 0xC0, 0x00, 0x01, 0xFF, 0xF8, + 0x03, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0x7F, 0x00, 0x03, 0xF8, 0x00, 0x3F, + 0x80, 0x01, 0xFC, 0x00, 0x0F, 0xE0, 0x00, 0x7E, 0x00, 0x07, 0xF0, 0x00, + 0x3F, 0x80, 0x01, 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0xFE, 0x00, 0x07, 0xF0, + 0x00, 0x3F, 0x80, 0x03, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0xFE, 0x00, 0x07, + 0xE0, 0x00, 0x7F, 0x00, 0x03, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0xFC, 0x00, + 0x0F, 0xE0, 0x00, 0x7F, 0x00, 0x03, 0xF8, 0x00, 0x3F, 0xC0, 0x01, 0xFC, + 0x00, 0x1F, 0xF0, 0x03, 0xFF, 0xF0, 0x00, 0x00, 0x07, 0xFF, 0xE0, 0x00, + 0x3F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x0F, 0xE0, + 0x00, 0x01, 0xFC, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x01, + 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x0F, 0xE0, 0x00, 0x01, 0xFC, 0x00, + 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, + 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, + 0x07, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, + 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x07, 0xF0, 0x00, 0x00, + 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x07, 0x03, 0xF0, 0x01, 0xF0, 0xFE, 0x00, + 0x3E, 0x1F, 0xC0, 0x07, 0xC3, 0xF0, 0x00, 0xF8, 0xFC, 0x00, 0x0F, 0x3F, + 0x80, 0x00, 0xFF, 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x01, 0xFF, 0xF8, + 0xFF, 0xC0, 0x1F, 0xF8, 0x0F, 0xC0, 0x03, 0xF8, 0x01, 0xC0, 0x00, 0xFE, + 0x00, 0xE0, 0x00, 0x3F, 0x80, 0x70, 0x00, 0x1F, 0xC0, 0x38, 0x00, 0x07, + 0xF0, 0x1C, 0x00, 0x01, 0xFC, 0x0E, 0x00, 0x00, 0x7F, 0x07, 0x00, 0x00, + 0x3F, 0x83, 0x80, 0x00, 0x0F, 0xE1, 0xC0, 0x00, 0x03, 0xF8, 0xE0, 0x00, + 0x00, 0xFC, 0x60, 0x00, 0x00, 0x7F, 0x7C, 0x00, 0x00, 0x1F, 0xFF, 0x00, + 0x00, 0x07, 0xFF, 0xE0, 0x00, 0x03, 0xFB, 0xF8, 0x00, 0x00, 0xFE, 0x7F, + 0x00, 0x00, 0x3F, 0x9F, 0xC0, 0x00, 0x0F, 0xE3, 0xF8, 0x00, 0x07, 0xF0, + 0xFE, 0x00, 0x01, 0xFC, 0x1F, 0xC0, 0x00, 0x7F, 0x07, 0xF0, 0x00, 0x1F, + 0x80, 0xFE, 0x00, 0x0F, 0xE0, 0x3F, 0x80, 0x03, 0xF8, 0x0F, 0xE0, 0x00, + 0xFE, 0x01, 0xFC, 0x00, 0x7F, 0x00, 0x7F, 0x00, 0x1F, 0xE0, 0x0F, 0xE0, + 0x0F, 0xF8, 0x07, 0xFC, 0x0F, 0xFF, 0xC7, 0xFF, 0xC0, 0x01, 0xFF, 0xF8, + 0x00, 0x03, 0xFF, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x7F, 0x00, 0x00, + 0x03, 0xF8, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x0F, + 0xE0, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x3F, 0x80, + 0x00, 0x01, 0xFC, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0xFE, 0x00, 0x00, + 0x07, 0xF0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x1F, + 0xC0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x7F, 0x00, + 0x00, 0x03, 0xF8, 0x00, 0x04, 0x1F, 0xC0, 0x00, 0x60, 0xFC, 0x00, 0x06, + 0x0F, 0xE0, 0x00, 0x30, 0x7F, 0x00, 0x03, 0x83, 0xF8, 0x00, 0x7C, 0x3F, + 0x80, 0x0F, 0xC1, 0xFE, 0x03, 0xFE, 0x1F, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, + 0xFF, 0x00, 0x01, 0xFF, 0xC0, 0x00, 0x3F, 0xF0, 0x03, 0xFC, 0x00, 0x03, + 0xFC, 0x00, 0x3F, 0xC0, 0x00, 0x7F, 0x80, 0x03, 0xFC, 0x00, 0x0F, 0xF8, + 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0x80, 0x03, 0xFC, 0x00, 0x1F, 0xF0, 0x00, + 0x6F, 0xC0, 0x03, 0xFF, 0x00, 0x06, 0xFC, 0x00, 0x37, 0xF0, 0x00, 0x6F, + 0xE0, 0x06, 0x7E, 0x00, 0x04, 0xFE, 0x00, 0xEF, 0xE0, 0x00, 0xCF, 0xE0, + 0x0C, 0xFE, 0x00, 0x0C, 0xFE, 0x01, 0x8F, 0xE0, 0x00, 0xCF, 0xE0, 0x38, + 0xFC, 0x00, 0x18, 0x7E, 0x03, 0x1F, 0xC0, 0x01, 0x87, 0xE0, 0x61, 0xFC, + 0x00, 0x18, 0x7E, 0x0E, 0x1F, 0xC0, 0x01, 0x87, 0xE0, 0xC3, 0xF8, 0x00, + 0x30, 0x7F, 0x18, 0x3F, 0x80, 0x03, 0x07, 0xF3, 0x83, 0xF8, 0x00, 0x30, + 0x7F, 0x30, 0x3F, 0x00, 0x06, 0x07, 0xF7, 0x07, 0xF0, 0x00, 0x60, 0x3F, + 0xE0, 0x7F, 0x00, 0x06, 0x03, 0xFC, 0x07, 0xF0, 0x00, 0xE0, 0x3F, 0xC0, + 0x7E, 0x00, 0x0C, 0x03, 0xF8, 0x0F, 0xE0, 0x00, 0xC0, 0x3F, 0x00, 0xFE, + 0x00, 0x0C, 0x03, 0xF0, 0x0F, 0xE0, 0x01, 0xC0, 0x3E, 0x01, 0xFC, 0x00, + 0x1C, 0x03, 0xC0, 0x1F, 0xC0, 0x07, 0xE0, 0x3C, 0x03, 0xFE, 0x00, 0xFF, + 0xC1, 0x81, 0xFF, 0xFC, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x03, 0xFF, + 0x00, 0x1F, 0xF8, 0x03, 0xF8, 0x00, 0x3F, 0x00, 0x0F, 0xE0, 0x00, 0xF0, + 0x00, 0x7F, 0x00, 0x07, 0x00, 0x03, 0xFC, 0x00, 0x38, 0x00, 0x1F, 0xE0, + 0x01, 0x80, 0x01, 0xBF, 0x80, 0x0C, 0x00, 0x0D, 0xFC, 0x00, 0x60, 0x00, + 0x67, 0xF0, 0x07, 0x00, 0x02, 0x3F, 0x80, 0x30, 0x00, 0x30, 0xFE, 0x01, + 0x80, 0x01, 0x87, 0xF0, 0x0C, 0x00, 0x0C, 0x1F, 0xC0, 0xC0, 0x00, 0xC0, + 0xFE, 0x06, 0x00, 0x06, 0x07, 0xF8, 0x30, 0x00, 0x30, 0x1F, 0xC1, 0x80, + 0x01, 0x80, 0xFF, 0x18, 0x00, 0x18, 0x03, 0xF8, 0xC0, 0x00, 0xC0, 0x1F, + 0xC6, 0x00, 0x06, 0x00, 0x7F, 0x60, 0x00, 0x60, 0x03, 0xFB, 0x00, 0x03, + 0x00, 0x0F, 0xF8, 0x00, 0x18, 0x00, 0x7F, 0xC0, 0x01, 0xC0, 0x01, 0xFC, + 0x00, 0x0C, 0x00, 0x0F, 0xE0, 0x00, 0x60, 0x00, 0x3F, 0x00, 0x03, 0x00, + 0x01, 0xF0, 0x00, 0x38, 0x00, 0x07, 0x80, 0x01, 0xC0, 0x00, 0x3C, 0x00, + 0x3F, 0x00, 0x01, 0xE0, 0x03, 0xFF, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0x7E, + 0x1F, 0x80, 0x01, 0xF0, 0x0F, 0x80, 0x0F, 0xC0, 0x1F, 0x80, 0x3F, 0x00, + 0x1F, 0x80, 0xFE, 0x00, 0x3F, 0x03, 0xF8, 0x00, 0x7E, 0x07, 0xF0, 0x00, + 0xFE, 0x1F, 0xC0, 0x01, 0xFC, 0x7F, 0x80, 0x03, 0xF8, 0xFE, 0x00, 0x07, + 0xF3, 0xFC, 0x00, 0x1F, 0xE7, 0xF0, 0x00, 0x3F, 0xDF, 0xE0, 0x00, 0x7F, + 0xBF, 0xC0, 0x00, 0xFE, 0x7F, 0x80, 0x03, 0xFC, 0xFE, 0x00, 0x07, 0xFB, + 0xFC, 0x00, 0x0F, 0xF7, 0xF8, 0x00, 0x3F, 0xCF, 0xF0, 0x00, 0x7F, 0x9F, + 0xC0, 0x00, 0xFE, 0x3F, 0x80, 0x03, 0xFC, 0x7F, 0x00, 0x07, 0xF0, 0xFE, + 0x00, 0x1F, 0xC0, 0xFC, 0x00, 0x3F, 0x81, 0xF8, 0x00, 0xFE, 0x03, 0xF0, + 0x03, 0xF8, 0x03, 0xF0, 0x07, 0xE0, 0x03, 0xE0, 0x1F, 0x00, 0x03, 0xE0, + 0xFC, 0x00, 0x03, 0xFF, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x01, 0xFF, + 0xFF, 0x80, 0x00, 0xFF, 0xFF, 0xE0, 0x00, 0xFE, 0x1F, 0xE0, 0x01, 0xFC, + 0x1F, 0xE0, 0x03, 0xF0, 0x1F, 0xC0, 0x0F, 0xE0, 0x3F, 0xC0, 0x1F, 0xC0, + 0x7F, 0x80, 0x3F, 0x80, 0xFF, 0x00, 0x7E, 0x01, 0xFE, 0x01, 0xFC, 0x03, + 0xFC, 0x03, 0xF8, 0x0F, 0xF8, 0x07, 0xF0, 0x1F, 0xE0, 0x0F, 0xC0, 0x7F, + 0x80, 0x3F, 0x81, 0xFE, 0x00, 0x7F, 0x07, 0xF8, 0x00, 0xFF, 0xFF, 0xC0, + 0x03, 0xFF, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, + 0x1F, 0x80, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x01, + 0xFC, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x1F, + 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x01, 0xFC, + 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x7E, 0x1F, 0x80, 0x01, + 0xF0, 0x0F, 0x80, 0x0F, 0xC0, 0x1F, 0x80, 0x3F, 0x80, 0x1F, 0x80, 0xFE, + 0x00, 0x3F, 0x03, 0xF8, 0x00, 0x7E, 0x07, 0xF0, 0x00, 0xFE, 0x1F, 0xC0, + 0x01, 0xFC, 0x7F, 0x80, 0x03, 0xF8, 0xFE, 0x00, 0x07, 0xF3, 0xFC, 0x00, + 0x1F, 0xE7, 0xF8, 0x00, 0x3F, 0xDF, 0xE0, 0x00, 0x7F, 0xBF, 0xC0, 0x00, + 0xFF, 0x7F, 0x80, 0x01, 0xFC, 0xFE, 0x00, 0x07, 0xFB, 0xFC, 0x00, 0x0F, + 0xF7, 0xF8, 0x00, 0x1F, 0xCF, 0xF0, 0x00, 0x7F, 0x9F, 0xC0, 0x00, 0xFE, + 0x3F, 0x80, 0x01, 0xFC, 0x7F, 0x00, 0x07, 0xF0, 0xFE, 0x00, 0x0F, 0xE1, + 0xFC, 0x00, 0x3F, 0x81, 0xF8, 0x00, 0x7E, 0x03, 0xF0, 0x01, 0xF8, 0x03, + 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x1F, 0x80, 0x03, 0xE0, 0x7E, 0x00, 0x03, + 0xF3, 0xF0, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x06, + 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0xC0, 0x7F, 0xE0, 0x03, 0x03, 0xFF, + 0xF8, 0x1C, 0x0F, 0xFF, 0xFF, 0xF0, 0x3F, 0xFF, 0xFF, 0xC0, 0xE0, 0x3F, + 0xFF, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x01, 0xFF, 0xFF, 0xC0, 0x00, 0x7F, + 0xFF, 0xF8, 0x00, 0x3F, 0xC3, 0xFC, 0x00, 0x3F, 0x81, 0xFE, 0x00, 0x3F, + 0x80, 0xFF, 0x00, 0x7F, 0x80, 0xFF, 0x00, 0x7F, 0x00, 0xFF, 0x00, 0x7F, + 0x00, 0xFF, 0x00, 0x7F, 0x00, 0xFF, 0x00, 0xFF, 0x01, 0xFE, 0x00, 0xFE, + 0x01, 0xFE, 0x00, 0xFE, 0x03, 0xFC, 0x00, 0xFE, 0x07, 0xF8, 0x01, 0xFC, + 0x1F, 0xF0, 0x01, 0xFF, 0xFF, 0xC0, 0x01, 0xFF, 0xFE, 0x00, 0x03, 0xFD, + 0xFE, 0x00, 0x03, 0xF8, 0xFF, 0x00, 0x03, 0xF8, 0xFF, 0x00, 0x03, 0xF8, + 0xFF, 0x00, 0x07, 0xF8, 0x7F, 0x80, 0x07, 0xF0, 0x7F, 0x80, 0x07, 0xF0, + 0x3F, 0x80, 0x07, 0xF0, 0x3F, 0xC0, 0x0F, 0xE0, 0x3F, 0xC0, 0x0F, 0xE0, + 0x1F, 0xC0, 0x0F, 0xE0, 0x1F, 0xE0, 0x1F, 0xE0, 0x1F, 0xE0, 0x1F, 0xE0, + 0x0F, 0xF0, 0x3F, 0xF0, 0x0F, 0xF8, 0xFF, 0xFC, 0x0F, 0xFE, 0x00, 0x1F, + 0x83, 0x00, 0x7F, 0xF7, 0x00, 0xF8, 0x7E, 0x01, 0xE0, 0x1E, 0x03, 0xC0, + 0x0E, 0x03, 0xC0, 0x0E, 0x07, 0xC0, 0x0E, 0x07, 0xC0, 0x04, 0x07, 0xC0, + 0x04, 0x07, 0xE0, 0x04, 0x07, 0xF0, 0x00, 0x07, 0xF8, 0x00, 0x03, 0xFC, + 0x00, 0x03, 0xFF, 0x00, 0x01, 0xFF, 0x80, 0x00, 0xFF, 0xC0, 0x00, 0x7F, + 0xE0, 0x00, 0x3F, 0xE0, 0x00, 0x1F, 0xF0, 0x00, 0x0F, 0xF0, 0x00, 0x07, + 0xF8, 0x00, 0x03, 0xF8, 0x00, 0x01, 0xF8, 0x20, 0x00, 0xF8, 0x20, 0x00, + 0xF8, 0x20, 0x00, 0xF8, 0x70, 0x00, 0xF8, 0x70, 0x00, 0xF0, 0x78, 0x01, + 0xF0, 0x78, 0x03, 0xE0, 0x7E, 0x07, 0xC0, 0x47, 0xFF, 0x80, 0xC0, 0xFC, + 0x00, 0x3F, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xFC, 0xFE, 0x3F, 0x8F, 0x9E, + 0x07, 0xF0, 0xF3, 0x81, 0xFC, 0x0E, 0x60, 0x3F, 0x81, 0x98, 0x07, 0xF0, + 0x13, 0x00, 0xFC, 0x02, 0x00, 0x3F, 0x80, 0x40, 0x07, 0xF0, 0x00, 0x00, + 0xFE, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, 0xFE, 0x00, + 0x00, 0x1F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, + 0xC0, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, + 0x03, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xF8, + 0x00, 0x00, 0x7E, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xF8, 0x00, 0x00, + 0xFF, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x3F, 0xFF, 0xC0, 0x00, 0x7F, 0xFF, + 0x03, 0xFF, 0x0F, 0xFC, 0x00, 0xFC, 0x07, 0xF0, 0x00, 0x38, 0x07, 0xF0, + 0x00, 0x38, 0x07, 0xF0, 0x00, 0x30, 0x0F, 0xE0, 0x00, 0x30, 0x0F, 0xE0, + 0x00, 0x70, 0x0F, 0xE0, 0x00, 0x60, 0x0F, 0xE0, 0x00, 0x60, 0x1F, 0xC0, + 0x00, 0xE0, 0x1F, 0xC0, 0x00, 0xC0, 0x1F, 0xC0, 0x00, 0xC0, 0x3F, 0x80, + 0x00, 0xC0, 0x3F, 0x80, 0x01, 0x80, 0x3F, 0x80, 0x01, 0x80, 0x3F, 0x80, + 0x01, 0x80, 0x7F, 0x00, 0x01, 0x80, 0x7F, 0x00, 0x03, 0x00, 0x7F, 0x00, + 0x03, 0x00, 0x7E, 0x00, 0x03, 0x00, 0xFE, 0x00, 0x06, 0x00, 0xFE, 0x00, + 0x06, 0x00, 0xFC, 0x00, 0x06, 0x00, 0xFC, 0x00, 0x0E, 0x00, 0xFC, 0x00, + 0x0C, 0x00, 0xFC, 0x00, 0x1C, 0x00, 0xFC, 0x00, 0x18, 0x00, 0x7E, 0x00, + 0x38, 0x00, 0x7E, 0x00, 0x70, 0x00, 0x3F, 0x81, 0xE0, 0x00, 0x0F, 0xFF, + 0x80, 0x00, 0x03, 0xFE, 0x00, 0x00, 0xFF, 0xFC, 0x03, 0xFE, 0x7F, 0xE0, + 0x01, 0xF8, 0x7F, 0x80, 0x01, 0xC0, 0xFF, 0x00, 0x03, 0x80, 0xFE, 0x00, + 0x0E, 0x01, 0xFC, 0x00, 0x18, 0x03, 0xF8, 0x00, 0x70, 0x07, 0xF0, 0x00, + 0xC0, 0x0F, 0xF0, 0x03, 0x80, 0x1F, 0xE0, 0x0E, 0x00, 0x1F, 0xC0, 0x18, + 0x00, 0x3F, 0x80, 0x70, 0x00, 0x7F, 0x00, 0xC0, 0x00, 0xFE, 0x03, 0x00, + 0x01, 0xFC, 0x0E, 0x00, 0x03, 0xF8, 0x18, 0x00, 0x07, 0xF8, 0x60, 0x00, + 0x07, 0xF1, 0xC0, 0x00, 0x0F, 0xE3, 0x00, 0x00, 0x1F, 0xCC, 0x00, 0x00, + 0x3F, 0xB8, 0x00, 0x00, 0x7F, 0x60, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x00, + 0xFF, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x07, + 0xE0, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0xFF, 0xF8, + 0xFF, 0xF0, 0xFF, 0x9F, 0xF8, 0x1F, 0xE0, 0x0F, 0x87, 0xF8, 0x07, 0xE0, + 0x07, 0x03, 0xF8, 0x03, 0xF0, 0x03, 0x80, 0xFE, 0x01, 0xF8, 0x01, 0x80, + 0x7F, 0x00, 0xFC, 0x00, 0xC0, 0x3F, 0x80, 0x7F, 0x00, 0xC0, 0x1F, 0xC0, + 0x7F, 0x80, 0x60, 0x0F, 0xE0, 0x3F, 0xC0, 0x60, 0x07, 0xF0, 0x37, 0xE0, + 0x30, 0x03, 0xF8, 0x1B, 0xF0, 0x30, 0x00, 0xFC, 0x19, 0xF8, 0x18, 0x00, + 0x7E, 0x0C, 0xFE, 0x18, 0x00, 0x3F, 0x84, 0x7F, 0x0C, 0x00, 0x1F, 0xC6, + 0x3F, 0x8C, 0x00, 0x0F, 0xE2, 0x1F, 0xC6, 0x00, 0x07, 0xF3, 0x07, 0xE6, + 0x00, 0x03, 0xF9, 0x83, 0xF3, 0x00, 0x01, 0xFD, 0x81, 0xFB, 0x00, 0x00, + 0x7E, 0xC0, 0xFD, 0x80, 0x00, 0x3F, 0xC0, 0x7F, 0x80, 0x00, 0x1F, 0xE0, + 0x3F, 0xC0, 0x00, 0x0F, 0xE0, 0x1F, 0xC0, 0x00, 0x07, 0xF0, 0x0F, 0xE0, + 0x00, 0x03, 0xF0, 0x07, 0xE0, 0x00, 0x01, 0xF8, 0x01, 0xF0, 0x00, 0x00, + 0x78, 0x00, 0xF0, 0x00, 0x00, 0x3C, 0x00, 0x78, 0x00, 0x00, 0x1C, 0x00, + 0x38, 0x00, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x00, 0x06, 0x00, 0x0C, 0x00, + 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x03, 0xFF, 0xF0, 0xFF, 0xC0, 0x3F, + 0xE0, 0x0F, 0xC0, 0x03, 0xF8, 0x01, 0xE0, 0x00, 0xFE, 0x00, 0xE0, 0x00, + 0x3F, 0x80, 0x70, 0x00, 0x07, 0xE0, 0x18, 0x00, 0x01, 0xFC, 0x0C, 0x00, + 0x00, 0x7F, 0x06, 0x00, 0x00, 0x0F, 0xC3, 0x00, 0x00, 0x03, 0xF9, 0x80, + 0x00, 0x00, 0xFE, 0xC0, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x07, 0xF8, + 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x0F, + 0xC0, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, + 0xFF, 0x80, 0x00, 0x00, 0x77, 0xF0, 0x00, 0x00, 0x39, 0xFC, 0x00, 0x00, + 0x1C, 0x3F, 0x00, 0x00, 0x06, 0x0F, 0xE0, 0x00, 0x03, 0x03, 0xF8, 0x00, + 0x01, 0x80, 0x7E, 0x00, 0x00, 0xE0, 0x1F, 0xC0, 0x00, 0x70, 0x07, 0xF0, + 0x00, 0x38, 0x01, 0xFC, 0x00, 0x1E, 0x00, 0x7F, 0x80, 0x1F, 0xC0, 0x1F, + 0xF0, 0x0F, 0xFC, 0x3F, 0xFF, 0x80, 0xFF, 0xF8, 0x3F, 0xF3, 0xFC, 0x00, + 0xFC, 0x1F, 0xC0, 0x07, 0x81, 0xFC, 0x00, 0x70, 0x0F, 0xC0, 0x0E, 0x00, + 0xFE, 0x00, 0xC0, 0x0F, 0xE0, 0x1C, 0x00, 0x7E, 0x03, 0x80, 0x07, 0xF0, + 0x30, 0x00, 0x7F, 0x06, 0x00, 0x03, 0xF0, 0xE0, 0x00, 0x3F, 0x8C, 0x00, + 0x03, 0xF9, 0x80, 0x00, 0x1F, 0xB0, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x1F, + 0xE0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x01, 0xFC, 0x00, + 0x00, 0x1F, 0x80, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, + 0xF8, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x7F, 0x00, + 0x00, 0x07, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x01, + 0xFF, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xF0, 0x3F, + 0xFF, 0xFF, 0x03, 0xF8, 0x0F, 0xF0, 0x7C, 0x01, 0xFE, 0x07, 0x80, 0x3F, + 0xC0, 0x70, 0x03, 0xF8, 0x06, 0x00, 0x7F, 0x80, 0xC0, 0x0F, 0xF0, 0x08, + 0x01, 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x7F, + 0x80, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, + 0x03, 0xFC, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x07, 0xF8, 0x00, 0x00, 0xFF, + 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, + 0x07, 0xF8, 0x00, 0xC0, 0xFF, 0x00, 0x0C, 0x1F, 0xE0, 0x01, 0x81, 0xFE, + 0x00, 0x38, 0x3F, 0xC0, 0x07, 0x87, 0xF8, 0x01, 0xF0, 0xFF, 0x00, 0xFF, + 0x0F, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x7F, 0xE0, 0x0F, + 0xFC, 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, + 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF0, + 0x00, 0x1E, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x1E, 0x00, 0x03, 0xC0, + 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x1F, 0x00, + 0x03, 0xE0, 0x00, 0x78, 0x00, 0x0F, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, + 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xE0, 0x00, + 0x3C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xFE, 0x01, + 0xFF, 0xC0, 0x00, 0xF0, 0x07, 0x80, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x1C, + 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, + 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x07, 0x00, 0x3C, 0x01, 0xE0, 0x0F, 0x00, + 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x01, + 0xC0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x0F, 0x00, 0x78, 0x00, 0x7F, 0xE0, + 0x0F, 0xFC, 0x00, 0x0F, 0x80, 0x01, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, + 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, + 0x07, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF0, 0x00, + 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x1E, 0x00, 0x07, 0xC0, 0x00, + 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xC0, 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, + 0xE0, 0x00, 0x78, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x0F, + 0x00, 0x01, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xE0, 0x07, 0xFC, + 0x01, 0xFF, 0x80, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x7F, 0x00, + 0x03, 0xF8, 0x00, 0x3F, 0xC0, 0x01, 0xEF, 0x00, 0x1E, 0x78, 0x00, 0xF1, + 0xE0, 0x0F, 0x0F, 0x00, 0x78, 0x3C, 0x07, 0xC1, 0xE0, 0x3C, 0x07, 0x83, + 0xE0, 0x3C, 0x1E, 0x00, 0xF1, 0xF0, 0x07, 0x8F, 0x00, 0x1E, 0xF8, 0x00, + 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x70, 0x3E, + 0x0F, 0x83, 0xF0, 0x3E, 0x07, 0x80, 0xF0, 0x0E, 0x01, 0xC0, 0x00, 0x3C, + 0x0C, 0x03, 0xF9, 0xF0, 0x1F, 0x3F, 0x80, 0xF8, 0x7E, 0x07, 0xC1, 0xF8, + 0x3F, 0x07, 0xC0, 0xF8, 0x1F, 0x07, 0xE0, 0x7C, 0x3F, 0x01, 0xF0, 0xFC, + 0x0F, 0x87, 0xE0, 0x3E, 0x1F, 0x80, 0xF8, 0x7E, 0x03, 0xC3, 0xF8, 0x1F, + 0x0F, 0xC0, 0x7C, 0x3F, 0x03, 0xF0, 0xFC, 0x0F, 0x83, 0xF0, 0x7E, 0x3F, + 0xC2, 0xF8, 0xBF, 0x9B, 0xE4, 0x7F, 0xCF, 0xE0, 0xFE, 0x3F, 0x01, 0xE0, + 0x78, 0x00, 0x00, 0x7C, 0x00, 0x3F, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0x7E, + 0x00, 0x01, 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x1F, 0x00, 0x00, 0x7C, 0x00, + 0x03, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x3E, 0x3E, 0x01, 0xF9, 0xFC, 0x07, + 0xEF, 0xF8, 0x1F, 0x47, 0xF0, 0x7E, 0x0F, 0xC3, 0xF8, 0x3F, 0x0F, 0xC0, + 0xFC, 0x3F, 0x03, 0xF1, 0xF8, 0x0F, 0xC7, 0xE0, 0x3F, 0x1F, 0x01, 0xF8, + 0x7C, 0x07, 0xE3, 0xF0, 0x1F, 0x8F, 0xC0, 0xFC, 0x3E, 0x03, 0xF1, 0xF8, + 0x0F, 0x87, 0xE0, 0x7C, 0x1F, 0x03, 0xE0, 0xFC, 0x0F, 0x03, 0xF0, 0x78, + 0x0F, 0xC7, 0xC0, 0x1F, 0xFE, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x3F, 0x00, + 0x3F, 0xE0, 0x1E, 0x3C, 0x0F, 0x0F, 0x07, 0x87, 0xC3, 0xE1, 0xF1, 0xF0, + 0x38, 0xFC, 0x00, 0x3E, 0x00, 0x1F, 0x80, 0x07, 0xE0, 0x01, 0xF8, 0x00, + 0xFC, 0x00, 0x3F, 0x00, 0x0F, 0xC0, 0x03, 0xF0, 0x00, 0xFC, 0x03, 0x3F, + 0x00, 0xCF, 0xE0, 0x61, 0xFC, 0x70, 0x3F, 0xF8, 0x07, 0xFC, 0x00, 0xFC, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xC0, 0x00, 0x7F, 0xE0, 0x00, + 0x07, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x01, 0xF8, 0x00, 0x00, 0xFC, 0x00, + 0x00, 0x7C, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x1F, 0x80, + 0x07, 0x9F, 0x80, 0x0F, 0xFF, 0xC0, 0x0F, 0x9F, 0xE0, 0x0F, 0x87, 0xF0, + 0x0F, 0x83, 0xF0, 0x0F, 0xC1, 0xF8, 0x07, 0xC0, 0xFC, 0x07, 0xE0, 0x7C, + 0x07, 0xE0, 0x7E, 0x03, 0xF0, 0x3F, 0x03, 0xF0, 0x1F, 0x81, 0xF8, 0x0F, + 0x80, 0xFC, 0x0F, 0xC0, 0xFE, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x3F, 0x03, + 0xF0, 0x1F, 0x83, 0xF8, 0x0F, 0xC1, 0xF8, 0xC7, 0xE1, 0xFC, 0xC3, 0xF9, + 0xBE, 0xC0, 0xFF, 0x9F, 0xC0, 0x7F, 0x8F, 0xC0, 0x0F, 0x83, 0xC0, 0x00, + 0x00, 0x3F, 0x00, 0x3F, 0xE0, 0x1E, 0x3C, 0x0F, 0x0F, 0x07, 0x83, 0xC3, + 0xE0, 0xF1, 0xF0, 0x3C, 0xFC, 0x1E, 0x3F, 0x0F, 0x9F, 0x83, 0xC7, 0xE3, + 0xE1, 0xFB, 0xE0, 0xFF, 0xE0, 0x3F, 0xC0, 0x0F, 0xC0, 0x03, 0xF0, 0x00, + 0xFC, 0x03, 0x3F, 0x01, 0x8F, 0xC0, 0xC1, 0xF8, 0x70, 0x7F, 0xF8, 0x07, + 0xFC, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x03, 0xCE, 0x00, + 0x00, 0x78, 0xF0, 0x00, 0x0F, 0x8F, 0x00, 0x00, 0xF0, 0xF0, 0x00, 0x1F, + 0x06, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x03, 0xE0, 0x00, + 0x00, 0x3E, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x03, 0xFF, 0xC0, 0x00, 0x3F, + 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0xF8, 0x00, + 0x00, 0x0F, 0x80, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x01, + 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x3F, 0x00, + 0x00, 0x03, 0xF0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, + 0x7E, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x07, 0xC0, + 0x00, 0x00, 0xFC, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, + 0x0F, 0x80, 0x00, 0x01, 0xF0, 0x00, 0x06, 0x1F, 0x00, 0x00, 0xF1, 0xE0, + 0x00, 0x0F, 0x3E, 0x00, 0x00, 0xF3, 0xC0, 0x00, 0x07, 0xF8, 0x00, 0x00, + 0x3E, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x7F, 0xF0, 0x00, 0x7E, + 0x3F, 0xE0, 0x7C, 0x0F, 0xF0, 0x7E, 0x07, 0xC0, 0x7E, 0x03, 0xE0, 0x3F, + 0x01, 0xF0, 0x1F, 0x01, 0xF8, 0x0F, 0x80, 0xFC, 0x07, 0xC0, 0xFC, 0x01, + 0xE0, 0xFC, 0x00, 0x78, 0xFC, 0x00, 0x1F, 0xFC, 0x00, 0x0F, 0xF0, 0x00, + 0x1C, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x0F, 0xF8, 0x00, + 0x07, 0xFF, 0x80, 0x01, 0xFF, 0xF8, 0x00, 0x7F, 0xFE, 0x00, 0x77, 0xFF, + 0x80, 0xF0, 0x7F, 0xC0, 0xF0, 0x07, 0xE0, 0xF0, 0x01, 0xF0, 0x78, 0x00, + 0xF8, 0x3C, 0x00, 0x78, 0x1F, 0x00, 0x7C, 0x07, 0xC0, 0x78, 0x01, 0xFF, + 0xF8, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x1F, + 0xF0, 0x00, 0x07, 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x7E, + 0x00, 0x00, 0xFC, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0xC0, + 0x00, 0x1F, 0x87, 0xC0, 0x3E, 0x1F, 0xC0, 0xFC, 0x7F, 0x81, 0xF9, 0x9F, + 0x03, 0xE6, 0x3E, 0x07, 0xD8, 0x7C, 0x1F, 0xA0, 0xF8, 0x3F, 0x83, 0xF0, + 0x7F, 0x07, 0xE0, 0xFC, 0x0F, 0xC3, 0xF8, 0x3F, 0x07, 0xE0, 0x7E, 0x0F, + 0xC0, 0xFC, 0x3F, 0x03, 0xF0, 0x7E, 0x07, 0xE0, 0xFC, 0x0F, 0xC1, 0xF0, + 0x3F, 0x17, 0xE0, 0x7E, 0x6F, 0xC0, 0xF9, 0x9F, 0x01, 0xF6, 0x3E, 0x03, + 0xF8, 0xFC, 0x07, 0xF1, 0xC0, 0x07, 0x80, 0x01, 0xE0, 0x3F, 0x03, 0xF0, + 0x3F, 0x03, 0xF0, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC7, + 0xFC, 0x1F, 0xC0, 0xF8, 0x0F, 0x81, 0xF8, 0x1F, 0x81, 0xF0, 0x1F, 0x03, + 0xF0, 0x3E, 0x03, 0xE0, 0x3E, 0x07, 0xE0, 0x7C, 0x07, 0xC0, 0xFC, 0x2F, + 0x84, 0xF8, 0xCF, 0x98, 0xFF, 0x0F, 0xE0, 0x78, 0x00, 0x00, 0x00, 0x78, + 0x00, 0x03, 0xF0, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0xFC, 0x00, + 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0xFC, 0x00, 0x1F, 0xF0, 0x00, 0x1F, 0xC0, + 0x00, 0x3E, 0x00, 0x01, 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x1F, 0x80, 0x00, + 0x7C, 0x00, 0x03, 0xF0, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0xF8, + 0x00, 0x07, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0x7E, 0x00, 0x01, 0xF0, 0x00, + 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xE0, 0x00, 0x1F, + 0x80, 0x00, 0x7E, 0x00, 0x01, 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x3F, 0x00, + 0x60, 0xF8, 0x03, 0xC3, 0xC0, 0x0F, 0x1F, 0x00, 0x3C, 0xF8, 0x00, 0x7F, + 0xC0, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0xFC, 0x00, 0x07, + 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x01, + 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x01, 0xF0, 0x00, 0x03, + 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xE3, 0xFF, 0x03, 0xE0, 0xFC, 0x07, + 0xE0, 0xF0, 0x07, 0xE0, 0xE0, 0x07, 0xC1, 0xC0, 0x0F, 0xC3, 0x80, 0x0F, + 0xC7, 0x00, 0x0F, 0x8E, 0x00, 0x0F, 0xBE, 0x00, 0x1F, 0xFE, 0x00, 0x1F, + 0xFE, 0x00, 0x1F, 0xFE, 0x00, 0x1F, 0x3E, 0x00, 0x3F, 0x3F, 0x00, 0x3F, + 0x1F, 0x00, 0x3E, 0x1F, 0x00, 0x7E, 0x1F, 0x04, 0x7E, 0x1F, 0x8C, 0x7E, + 0x0F, 0x98, 0x7C, 0x0F, 0xF0, 0xFC, 0x07, 0xE0, 0xE0, 0x03, 0xC0, 0x00, + 0x08, 0x0F, 0xC7, 0xFE, 0x07, 0xF0, 0x3F, 0x01, 0xF8, 0x0F, 0xC0, 0x7C, + 0x07, 0xE0, 0x3F, 0x01, 0xF8, 0x0F, 0x80, 0x7C, 0x07, 0xE0, 0x3E, 0x01, + 0xF0, 0x1F, 0x80, 0xFC, 0x07, 0xC0, 0x3E, 0x03, 0xF0, 0x1F, 0x80, 0xF8, + 0x0F, 0xC0, 0x7E, 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x8F, 0x8C, 0x7C, 0x43, + 0xE4, 0x1F, 0xE0, 0xFE, 0x03, 0xC0, 0x00, 0x00, 0x70, 0x78, 0x0F, 0x83, + 0xFE, 0x3F, 0x87, 0xF8, 0x1F, 0xCF, 0xF1, 0xFF, 0x03, 0xF1, 0x3E, 0x73, + 0xE0, 0x7E, 0x47, 0xD8, 0x7C, 0x0F, 0xD0, 0xFB, 0x1F, 0x81, 0xF4, 0x3E, + 0xC3, 0xF0, 0x3E, 0x87, 0xF0, 0x7C, 0x0F, 0xE0, 0xFE, 0x1F, 0x81, 0xF4, + 0x1F, 0x83, 0xF0, 0x3F, 0x07, 0xE0, 0x7C, 0x07, 0xE0, 0xFC, 0x1F, 0x81, + 0xF8, 0x1F, 0x83, 0xF0, 0x3F, 0x07, 0xE0, 0x7C, 0x07, 0xE0, 0xFC, 0x0F, + 0x80, 0xF8, 0x1F, 0x03, 0xF0, 0x3F, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0xFC, + 0x0F, 0x88, 0xF8, 0x1F, 0x81, 0xF3, 0x3F, 0x03, 0xE0, 0x3E, 0x47, 0xE0, + 0xFC, 0x07, 0xF0, 0xFC, 0x1F, 0x80, 0xFE, 0x18, 0x00, 0x00, 0x0F, 0x00, + 0x00, 0x70, 0xF8, 0x7F, 0xC3, 0xF8, 0x1F, 0x8F, 0xF0, 0x3F, 0x33, 0xE0, + 0x7C, 0x87, 0xC1, 0xF9, 0x0F, 0x83, 0xF4, 0x1F, 0x07, 0xD0, 0x3E, 0x0F, + 0xE0, 0xFC, 0x3F, 0x81, 0xF8, 0x7F, 0x03, 0xE0, 0xFC, 0x0F, 0xC1, 0xF8, + 0x1F, 0x87, 0xE0, 0x3E, 0x0F, 0xC0, 0xFC, 0x1F, 0x81, 0xF0, 0x3E, 0x03, + 0xE0, 0xFC, 0x0F, 0xC9, 0xF8, 0x1F, 0x33, 0xE0, 0x3E, 0x47, 0xC0, 0x7F, + 0x1F, 0x80, 0xFE, 0x38, 0x00, 0xF0, 0x00, 0x00, 0x3F, 0x00, 0x0E, 0x38, + 0x03, 0xC1, 0xC0, 0x78, 0x1E, 0x0F, 0x81, 0xF0, 0xF0, 0x1F, 0x1F, 0x01, + 0xF3, 0xE0, 0x1F, 0x3E, 0x03, 0xF7, 0xC0, 0x3F, 0x7C, 0x03, 0xF7, 0xC0, + 0x3E, 0xFC, 0x03, 0xEF, 0xC0, 0x7E, 0xF8, 0x07, 0xCF, 0x80, 0x7C, 0xF8, + 0x0F, 0x8F, 0x80, 0xF8, 0xF8, 0x1F, 0x07, 0x81, 0xE0, 0x78, 0x3C, 0x03, + 0xC7, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x0F, 0x1F, 0x00, 0x3F, 0xE7, 0xF8, + 0x01, 0xF9, 0xFF, 0x00, 0x1F, 0x47, 0xF0, 0x07, 0xF0, 0x7E, 0x00, 0xFE, + 0x0F, 0xC0, 0x1F, 0x81, 0xF8, 0x03, 0xF0, 0x3F, 0x00, 0xFC, 0x07, 0xE0, + 0x1F, 0x81, 0xFC, 0x03, 0xE0, 0x3F, 0x00, 0x7C, 0x07, 0xE0, 0x1F, 0x81, + 0xFC, 0x03, 0xF0, 0x3F, 0x00, 0x7C, 0x07, 0xE0, 0x0F, 0x81, 0xF8, 0x03, + 0xF0, 0x3E, 0x00, 0x7E, 0x0F, 0xC0, 0x0F, 0x81, 0xF0, 0x01, 0xF0, 0x7C, + 0x00, 0x7F, 0x1F, 0x00, 0x0F, 0xFF, 0xC0, 0x01, 0xF3, 0xE0, 0x00, 0x3E, + 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x3E, 0x00, 0x00, + 0x0F, 0xC0, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0xFC, + 0x00, 0x00, 0x00, 0x3E, 0x00, 0x03, 0xF9, 0xF0, 0x1F, 0x1F, 0xC0, 0xF8, + 0x7E, 0x07, 0xC1, 0xF8, 0x3F, 0x07, 0xE0, 0xF8, 0x1F, 0x87, 0xE0, 0x7C, + 0x3F, 0x01, 0xF0, 0xFC, 0x0F, 0xC7, 0xE0, 0x3E, 0x1F, 0x80, 0xF8, 0x7E, + 0x07, 0xE3, 0xF0, 0x1F, 0x8F, 0xC0, 0x7C, 0x3F, 0x03, 0xF0, 0xFC, 0x0F, + 0xC3, 0xF0, 0x7E, 0x0F, 0xC3, 0xF8, 0x3F, 0x9B, 0xE0, 0x7F, 0xDF, 0x01, + 0xFE, 0x7C, 0x01, 0xF1, 0xF0, 0x00, 0x0F, 0xC0, 0x00, 0x3E, 0x00, 0x00, + 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0x7C, 0x00, 0x03, 0xF8, + 0x00, 0x7F, 0xF8, 0x00, 0x00, 0x71, 0xE1, 0xFF, 0x3E, 0x07, 0xE7, 0xF0, + 0x7E, 0xFF, 0x07, 0xE9, 0xE0, 0x7D, 0x0E, 0x07, 0xD0, 0x00, 0xFE, 0x00, + 0x0F, 0xE0, 0x00, 0xFC, 0x00, 0x0F, 0xC0, 0x01, 0xFC, 0x00, 0x1F, 0x80, + 0x01, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x03, 0xF0, + 0x00, 0x7E, 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0x07, 0xC0, 0x00, 0x01, + 0xF1, 0x07, 0xFF, 0x0F, 0x0F, 0x0E, 0x07, 0x1E, 0x06, 0x1E, 0x06, 0x1F, + 0x02, 0x1F, 0x02, 0x1F, 0x80, 0x0F, 0xC0, 0x0F, 0xE0, 0x0F, 0xF0, 0x07, + 0xF8, 0x03, 0xF8, 0x01, 0xFC, 0x00, 0xFC, 0x40, 0x7C, 0x40, 0x7C, 0x60, + 0x3C, 0xE0, 0x38, 0xF0, 0x38, 0xF8, 0xF0, 0xDF, 0xC0, 0x00, 0x20, 0x03, + 0x00, 0x38, 0x03, 0x80, 0x3C, 0x03, 0xE0, 0x7F, 0x07, 0xFF, 0x3F, 0xF8, + 0x7C, 0x07, 0xE0, 0x3F, 0x01, 0xF0, 0x0F, 0x80, 0xFC, 0x07, 0xC0, 0x3E, + 0x03, 0xF0, 0x1F, 0x80, 0xF8, 0x07, 0xC0, 0x7E, 0x03, 0xF1, 0x1F, 0x08, + 0xF8, 0x87, 0xC8, 0x3F, 0xC1, 0xFC, 0x07, 0x80, 0x00, 0x00, 0x40, 0x00, + 0x1F, 0x03, 0xF7, 0xF8, 0x0F, 0x87, 0xE0, 0x3E, 0x1F, 0x81, 0xF8, 0x7E, + 0x07, 0xC1, 0xF0, 0x1F, 0x07, 0xC0, 0xFC, 0x3F, 0x03, 0xE0, 0xF8, 0x0F, + 0x83, 0xE0, 0x7E, 0x0F, 0x81, 0xF8, 0x7E, 0x0F, 0xC1, 0xF0, 0x3F, 0x07, + 0xC1, 0xFC, 0x1F, 0x07, 0xE0, 0xF8, 0x2F, 0x83, 0xE1, 0x3C, 0x6F, 0x8D, + 0xF1, 0x3E, 0x67, 0xC8, 0xFF, 0x1F, 0xE3, 0xF8, 0x7F, 0x07, 0xC0, 0xF0, + 0x00, 0x06, 0x07, 0x1F, 0x07, 0xBF, 0x83, 0xE7, 0xC1, 0xF3, 0xE0, 0xF9, + 0xF8, 0x3C, 0x7C, 0x0C, 0x3E, 0x06, 0x1F, 0x03, 0x0F, 0x83, 0x07, 0xC1, + 0x83, 0xE1, 0x81, 0xF1, 0x80, 0xF9, 0x80, 0x7C, 0xC0, 0x3E, 0xC0, 0x1F, + 0xC0, 0x0F, 0xC0, 0x07, 0xC0, 0x03, 0xC0, 0x01, 0xC0, 0x00, 0xC0, 0x00, + 0x40, 0x00, 0x06, 0x01, 0x81, 0xC7, 0xC0, 0x30, 0x7F, 0xF8, 0x0E, 0x0F, + 0x9F, 0x01, 0xC1, 0xF3, 0xE0, 0x78, 0x3E, 0x7C, 0x1F, 0x03, 0xCF, 0xC3, + 0xE0, 0x30, 0xF8, 0xFC, 0x06, 0x1F, 0x1F, 0xC0, 0x83, 0xE7, 0xF8, 0x30, + 0x7C, 0xFF, 0x04, 0x0F, 0xB7, 0xE1, 0x81, 0xF6, 0xFC, 0x60, 0x3F, 0x8F, + 0x98, 0x07, 0xE1, 0xF3, 0x00, 0xFC, 0x3E, 0xC0, 0x1F, 0x07, 0xF0, 0x03, + 0xE0, 0xFC, 0x00, 0x78, 0x1F, 0x80, 0x0F, 0x03, 0xE0, 0x01, 0xC0, 0x78, + 0x00, 0x30, 0x0E, 0x00, 0x06, 0x01, 0x80, 0x00, 0x00, 0xF0, 0x1E, 0x0F, + 0xF0, 0x3E, 0x01, 0xF8, 0x7F, 0x01, 0xF8, 0xFF, 0x00, 0xF9, 0x8E, 0x00, + 0xFB, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7C, 0x00, 0x00, + 0x7C, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, + 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xBF, 0x00, 0x01, + 0xBF, 0x08, 0x73, 0x1F, 0x18, 0xFF, 0x1F, 0x30, 0xFE, 0x1F, 0xE0, 0xFC, + 0x0F, 0xC0, 0x78, 0x07, 0x80, 0x00, 0x30, 0x1C, 0x0F, 0xF0, 0x7C, 0x07, + 0xE0, 0xF8, 0x0F, 0xC1, 0xF0, 0x0F, 0xC1, 0xE0, 0x1F, 0x81, 0xC0, 0x3F, + 0x03, 0x00, 0x3E, 0x06, 0x00, 0x7E, 0x08, 0x00, 0xFC, 0x30, 0x01, 0xF8, + 0x60, 0x01, 0xF1, 0x80, 0x03, 0xE3, 0x00, 0x07, 0xCC, 0x00, 0x0F, 0xD8, + 0x00, 0x1F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0x7E, 0x00, + 0x00, 0xF8, 0x00, 0x01, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x00, 0x00, + 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x60, 0x01, 0xC1, 0x80, 0x07, 0xE6, + 0x00, 0x0F, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x07, + 0xFF, 0xE1, 0xFF, 0xF8, 0x3F, 0xFF, 0x07, 0xFF, 0xC0, 0x80, 0x70, 0x30, + 0x1C, 0x04, 0x07, 0x00, 0x00, 0xC0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, + 0x80, 0x00, 0x60, 0x00, 0x18, 0x00, 0x06, 0x00, 0x01, 0xC0, 0x00, 0x30, + 0x00, 0x0C, 0x00, 0x03, 0xE0, 0x00, 0xFE, 0x00, 0x1F, 0xE0, 0xC7, 0xFC, + 0x3D, 0xCF, 0xC7, 0x90, 0xF8, 0xF0, 0x07, 0x9C, 0x00, 0x3E, 0x00, 0x00, + 0x01, 0xF0, 0x00, 0xFC, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, + 0x07, 0xC0, 0x00, 0x78, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x80, + 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x03, 0xE0, + 0x00, 0x3E, 0x00, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x0F, 0xC0, + 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, + 0x80, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x03, + 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, + 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7E, 0x00, + 0x03, 0xF0, 0x00, 0x07, 0xC0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, + 0x3E, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xE0, + 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, + 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, + 0x80, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x00, + 0xF8, 0x00, 0x03, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x03, 0xE0, 0x00, + 0x7C, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, + 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, + 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x0F, 0x80, + 0x03, 0xF0, 0x00, 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x03, 0xFF, 0x01, 0x3F, + 0xFE, 0x1D, 0xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0x00, 0x1F, 0xF0, 0x00, 0x1F, + 0x00}; + +const GFXglyph FreeSerifBoldItalic24pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 12, 0, 1}, // 0x20 ' ' + {0, 15, 33, 18, 3, -31}, // 0x21 '!' + {62, 19, 13, 26, 6, -31}, // 0x22 '"' + {93, 27, 33, 23, -2, -32}, // 0x23 '#' + {205, 24, 39, 24, -1, -33}, // 0x24 '$' + {322, 35, 32, 39, 2, -30}, // 0x25 '%' + {462, 33, 33, 37, 0, -31}, // 0x26 '&' + {599, 7, 13, 13, 6, -31}, // 0x27 ''' + {611, 14, 41, 16, 1, -31}, // 0x28 '(' + {683, 14, 41, 16, -2, -31}, // 0x29 ')' + {755, 19, 20, 23, 3, -31}, // 0x2A '*' + {803, 22, 23, 27, 2, -22}, // 0x2B '+' + {867, 10, 15, 12, -3, -5}, // 0x2C ',' + {886, 12, 5, 16, 0, -12}, // 0x2D '-' + {894, 8, 7, 12, 0, -5}, // 0x2E '.' + {901, 19, 33, 16, 0, -31}, // 0x2F '/' + {980, 22, 33, 23, 1, -31}, // 0x30 '0' + {1071, 20, 32, 23, 0, -31}, // 0x31 '1' + {1151, 22, 32, 23, 1, -31}, // 0x32 '2' + {1239, 22, 33, 24, 0, -31}, // 0x33 '3' + {1330, 25, 32, 23, 0, -31}, // 0x34 '4' + {1430, 24, 32, 24, 0, -30}, // 0x35 '5' + {1526, 23, 32, 24, 1, -30}, // 0x36 '6' + {1618, 23, 31, 23, 3, -30}, // 0x37 '7' + {1708, 21, 33, 23, 1, -31}, // 0x38 '8' + {1795, 23, 33, 23, 0, -31}, // 0x39 '9' + {1890, 13, 22, 12, 0, -20}, // 0x3A ':' + {1926, 15, 30, 12, -2, -20}, // 0x3B ';' + {1983, 24, 25, 27, 1, -23}, // 0x3C '<' + {2058, 24, 14, 27, 3, -18}, // 0x3D '=' + {2100, 24, 25, 27, 3, -23}, // 0x3E '>' + {2175, 18, 33, 24, 4, -31}, // 0x3F '?' + {2250, 33, 33, 39, 3, -31}, // 0x40 '@' + {2387, 31, 32, 33, 0, -31}, // 0x41 'A' + {2511, 31, 31, 30, 0, -30}, // 0x42 'B' + {2632, 29, 33, 29, 2, -31}, // 0x43 'C' + {2752, 35, 31, 34, 0, -30}, // 0x44 'D' + {2888, 32, 31, 30, 0, -30}, // 0x45 'E' + {3012, 31, 31, 29, 0, -30}, // 0x46 'F' + {3133, 32, 33, 33, 2, -31}, // 0x47 'G' + {3265, 39, 31, 35, 0, -30}, // 0x48 'H' + {3417, 21, 31, 18, 0, -30}, // 0x49 'I' + {3499, 27, 36, 23, 0, -30}, // 0x4A 'J' + {3621, 34, 31, 31, 0, -30}, // 0x4B 'K' + {3753, 29, 31, 29, 0, -30}, // 0x4C 'L' + {3866, 44, 32, 41, 0, -30}, // 0x4D 'M' + {4042, 37, 32, 33, 0, -30}, // 0x4E 'N' + {4190, 31, 33, 32, 2, -31}, // 0x4F 'O' + {4318, 31, 31, 28, 0, -30}, // 0x50 'P' + {4439, 31, 42, 32, 2, -31}, // 0x51 'Q' + {4602, 32, 31, 31, 0, -30}, // 0x52 'R' + {4726, 24, 33, 24, 0, -31}, // 0x53 'S' + {4825, 27, 31, 28, 4, -30}, // 0x54 'T' + {4930, 32, 32, 34, 5, -30}, // 0x55 'U' + {5058, 31, 32, 33, 6, -30}, // 0x56 'V' + {5182, 41, 32, 44, 6, -30}, // 0x57 'W' + {5346, 34, 31, 33, 0, -30}, // 0x58 'X' + {5478, 28, 31, 30, 6, -30}, // 0x59 'Y' + {5587, 28, 31, 26, 0, -30}, // 0x5A 'Z' + {5696, 19, 38, 16, -2, -30}, // 0x5B '[' + {5787, 13, 33, 19, 6, -31}, // 0x5C '\' + {5841, 19, 38, 16, -3, -30}, // 0x5D ']' + {5932, 21, 17, 27, 3, -30}, // 0x5E '^' + {5977, 24, 3, 23, 0, 5}, // 0x5F '_' + {5986, 10, 9, 16, 4, -32}, // 0x60 '`' + {5998, 22, 23, 24, 1, -21}, // 0x61 'a' + {6062, 22, 33, 23, 1, -31}, // 0x62 'b' + {6153, 18, 23, 20, 1, -21}, // 0x63 'c' + {6205, 25, 34, 24, 1, -32}, // 0x64 'd' + {6312, 18, 23, 20, 1, -21}, // 0x65 'e' + {6364, 28, 41, 23, -4, -31}, // 0x66 'f' + {6508, 25, 31, 23, -1, -21}, // 0x67 'g' + {6605, 23, 34, 26, 1, -32}, // 0x68 'h' + {6703, 12, 33, 14, 2, -31}, // 0x69 'i' + {6753, 22, 42, 16, -4, -31}, // 0x6A 'j' + {6869, 24, 34, 24, 1, -32}, // 0x6B 'k' + {6971, 13, 34, 14, 2, -32}, // 0x6C 'l' + {7027, 35, 23, 36, 0, -21}, // 0x6D 'm' + {7128, 23, 23, 25, 0, -21}, // 0x6E 'n' + {7195, 20, 23, 22, 1, -21}, // 0x6F 'o' + {7253, 27, 31, 23, -4, -21}, // 0x70 'p' + {7358, 22, 31, 23, 1, -21}, // 0x71 'q' + {7444, 20, 22, 19, 0, -21}, // 0x72 'r' + {7499, 16, 23, 17, 0, -21}, // 0x73 's' + {7545, 13, 29, 13, 2, -27}, // 0x74 't' + {7593, 22, 23, 25, 2, -21}, // 0x75 'u' + {7657, 17, 23, 21, 3, -21}, // 0x76 'v' + {7706, 27, 23, 31, 3, -21}, // 0x77 'w' + {7784, 24, 23, 22, -1, -21}, // 0x78 'x' + {7853, 23, 31, 20, -3, -21}, // 0x79 'y' + {7943, 19, 25, 19, 0, -20}, // 0x7A 'z' + {8003, 20, 41, 16, 0, -31}, // 0x7B '{' + {8106, 4, 33, 13, 5, -31}, // 0x7C '|' + {8123, 20, 41, 16, -6, -31}, // 0x7D '}' + {8226, 21, 7, 27, 3, -14}}; // 0x7E '~' + +const GFXfont FreeSerifBoldItalic24pt7b PROGMEM = { + (uint8_t *)FreeSerifBoldItalic24pt7bBitmaps, + (GFXglyph *)FreeSerifBoldItalic24pt7bGlyphs, 0x20, 0x7E, 56}; + +// Approx. 8917 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBoldItalic9pt7b.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBoldItalic9pt7b.h new file mode 100644 index 0000000..b5d9a55 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBoldItalic9pt7b.h @@ -0,0 +1,217 @@ +#pragma once +#include + +const uint8_t FreeSerifBoldItalic9pt7bBitmaps[] PROGMEM = { + 0x0C, 0x31, 0xC6, 0x18, 0x41, 0x08, 0x20, 0x0E, 0x38, 0xE0, 0xCF, 0x38, + 0xA2, 0x88, 0x02, 0x40, 0xC8, 0x13, 0x06, 0x43, 0xFC, 0x32, 0x06, 0x40, + 0x98, 0x7F, 0x84, 0xC0, 0x90, 0x32, 0x04, 0xC0, 0x01, 0x01, 0xF0, 0x4B, + 0x99, 0x33, 0x24, 0x78, 0x07, 0x80, 0x38, 0x0B, 0x89, 0x31, 0x26, 0x64, + 0xC7, 0x30, 0x3C, 0x04, 0x00, 0x38, 0x41, 0x9F, 0x06, 0x48, 0x31, 0x60, + 0xCD, 0x03, 0x2C, 0x07, 0x27, 0x81, 0x39, 0x05, 0xC4, 0x26, 0x10, 0x98, + 0x84, 0x66, 0x10, 0xE0, 0x03, 0x80, 0x22, 0x03, 0x10, 0x19, 0x00, 0xF0, + 0x0F, 0x3C, 0xF8, 0xCC, 0xC4, 0xE7, 0x47, 0x3E, 0x38, 0xE1, 0xE7, 0x97, + 0xCF, 0x00, 0xFA, 0x80, 0x08, 0x88, 0x84, 0x62, 0x10, 0x84, 0x21, 0x08, + 0x41, 0x00, 0x20, 0x84, 0x10, 0x84, 0x21, 0x08, 0xC6, 0x23, 0x11, 0x00, + 0x18, 0x18, 0xD6, 0x38, 0x18, 0xF7, 0x18, 0x18, 0x08, 0x04, 0x02, 0x01, + 0x0F, 0xF8, 0x40, 0x20, 0x10, 0x08, 0x00, 0x6D, 0x95, 0x00, 0xFF, 0xC0, + 0xFF, 0x80, 0x06, 0x0C, 0x30, 0x60, 0x83, 0x04, 0x18, 0x20, 0xC1, 0x06, + 0x00, 0x0F, 0x0C, 0x8C, 0x6E, 0x37, 0x1B, 0x1F, 0x8F, 0xC7, 0xC7, 0x63, + 0xB1, 0x89, 0x83, 0x80, 0x06, 0x1E, 0x0E, 0x0E, 0x0C, 0x0C, 0x1C, 0x18, + 0x18, 0x18, 0x38, 0x38, 0xFC, 0x1F, 0x13, 0xD0, 0xE0, 0x70, 0x38, 0x38, + 0x18, 0x18, 0x18, 0x08, 0x08, 0x4F, 0xCF, 0xE0, 0x1F, 0x11, 0xC0, 0xE0, + 0x60, 0xC1, 0xF0, 0x38, 0x0C, 0x06, 0x03, 0x01, 0x19, 0x8F, 0x00, 0x00, + 0x80, 0xC0, 0xE1, 0xE0, 0xB0, 0x98, 0x9C, 0x8C, 0xFF, 0x07, 0x03, 0x01, + 0x80, 0x0F, 0x88, 0x08, 0x07, 0x83, 0xE0, 0x78, 0x1C, 0x06, 0x03, 0x01, + 0x80, 0x9C, 0x87, 0x80, 0x03, 0x87, 0x07, 0x07, 0x07, 0x03, 0xE3, 0x99, + 0xCC, 0xC6, 0x63, 0x33, 0x89, 0x87, 0x80, 0x3F, 0xBF, 0x90, 0x80, 0xC0, + 0x40, 0x60, 0x20, 0x30, 0x30, 0x10, 0x18, 0x08, 0x00, 0x1E, 0x13, 0x31, + 0x31, 0x3A, 0x1C, 0x1C, 0x6E, 0xC6, 0xC6, 0xC6, 0x44, 0x38, 0x0E, 0x1C, + 0x8C, 0x6C, 0x36, 0x3B, 0x1D, 0x8E, 0x7E, 0x0E, 0x07, 0x07, 0x0E, 0x0C, + 0x00, 0x39, 0xCE, 0x00, 0x03, 0x9C, 0xE0, 0x39, 0xCE, 0x00, 0x01, 0x8C, + 0x22, 0x20, 0x00, 0x01, 0xC3, 0xC7, 0x8E, 0x06, 0x01, 0xE0, 0x3C, 0x07, + 0x80, 0x40, 0xFF, 0x80, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x60, 0x1E, 0x03, + 0xC0, 0x78, 0x1C, 0x3C, 0x78, 0xF0, 0x40, 0x00, 0x1C, 0x27, 0x37, 0x07, + 0x0E, 0x1C, 0x30, 0x60, 0x40, 0x00, 0xE0, 0xE0, 0xE0, 0x0F, 0x80, 0xC3, + 0x08, 0x04, 0xC3, 0x3C, 0x24, 0xE2, 0x27, 0x33, 0x39, 0x11, 0xC9, 0x93, + 0x77, 0x18, 0x00, 0x70, 0x40, 0xFC, 0x00, 0x00, 0x80, 0x18, 0x01, 0x80, + 0x38, 0x05, 0x80, 0x5C, 0x09, 0xC1, 0x1C, 0x1F, 0xC2, 0x0C, 0x20, 0xC4, + 0x0E, 0xF3, 0xF0, 0x3F, 0xE0, 0xC7, 0x0C, 0x71, 0xC7, 0x1C, 0xE1, 0xF0, + 0x39, 0xC3, 0x8E, 0x38, 0xE3, 0x0E, 0x71, 0xE7, 0x1C, 0xFF, 0x00, 0x07, + 0xD1, 0xC7, 0x38, 0x27, 0x02, 0x70, 0x0F, 0x00, 0xE0, 0x0E, 0x00, 0xE0, + 0x0E, 0x00, 0x60, 0x87, 0x18, 0x1E, 0x00, 0x3F, 0xE0, 0x30, 0xE0, 0xC1, + 0x87, 0x07, 0x1C, 0x1C, 0x60, 0x73, 0x81, 0xCE, 0x07, 0x38, 0x38, 0xC0, + 0xE7, 0x07, 0x1C, 0x78, 0xFF, 0x80, 0x1F, 0xF8, 0x61, 0xC3, 0x04, 0x38, + 0x81, 0xCC, 0x0F, 0xE0, 0xE2, 0x07, 0x10, 0x38, 0x81, 0x81, 0x1C, 0x18, + 0xE3, 0x8F, 0xFC, 0x00, 0x3F, 0xF8, 0x61, 0xC3, 0x04, 0x38, 0x81, 0xCC, + 0x0F, 0xE0, 0xE2, 0x07, 0x10, 0x38, 0x81, 0x80, 0x1C, 0x00, 0xE0, 0x0F, + 0x80, 0x00, 0x07, 0x91, 0xC7, 0x38, 0x27, 0x00, 0x70, 0x0F, 0x00, 0xE1, + 0xFE, 0x0E, 0xE0, 0xCE, 0x0C, 0x60, 0xC7, 0x1C, 0x1F, 0x00, 0x1F, 0x7E, + 0x1C, 0x38, 0x30, 0x60, 0xE1, 0xC1, 0xC3, 0x83, 0x06, 0x0F, 0xFC, 0x1C, + 0x38, 0x38, 0x70, 0x60, 0xC1, 0xC3, 0x83, 0x87, 0x0F, 0x9F, 0x00, 0x3F, + 0x0C, 0x0C, 0x1C, 0x1C, 0x18, 0x38, 0x38, 0x38, 0x30, 0x70, 0x70, 0xF8, + 0x07, 0xC0, 0xE0, 0x38, 0x0C, 0x07, 0x01, 0xC0, 0x70, 0x18, 0x0E, 0x03, + 0x80, 0xC3, 0x30, 0xDC, 0x1E, 0x00, 0x1F, 0x78, 0x71, 0x83, 0x18, 0x39, + 0x81, 0xD0, 0x0D, 0x00, 0xFC, 0x07, 0x60, 0x3B, 0x81, 0x8C, 0x1C, 0x70, + 0xE1, 0x8F, 0xBE, 0x00, 0x1F, 0x00, 0xC0, 0x0C, 0x01, 0xC0, 0x1C, 0x01, + 0x80, 0x38, 0x03, 0x80, 0x38, 0x03, 0x01, 0x70, 0x37, 0x0E, 0xFF, 0xE0, + 0x1E, 0x07, 0x87, 0x07, 0x83, 0x83, 0x82, 0xC3, 0xC1, 0x62, 0xE0, 0xB1, + 0x70, 0x99, 0x30, 0x4D, 0xB8, 0x27, 0x9C, 0x13, 0x8C, 0x11, 0xC6, 0x0C, + 0xC7, 0x0F, 0x47, 0xC0, 0x3C, 0x3C, 0x38, 0x20, 0xE0, 0x85, 0xC4, 0x13, + 0x10, 0x4E, 0x42, 0x3A, 0x08, 0x78, 0x21, 0xE0, 0x83, 0x84, 0x0C, 0x18, + 0x10, 0x00, 0x40, 0x07, 0xC1, 0xCE, 0x38, 0x73, 0x87, 0x70, 0x77, 0x07, + 0xF0, 0xFE, 0x0E, 0xE0, 0xEE, 0x1C, 0xE1, 0xC6, 0x38, 0x3E, 0x00, 0x3F, + 0xC0, 0xC7, 0x0C, 0x71, 0xC7, 0x1C, 0x71, 0x8E, 0x3F, 0xC3, 0x80, 0x30, + 0x03, 0x00, 0x70, 0x07, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0xCE, 0x38, 0x73, + 0x87, 0x70, 0x77, 0x07, 0xF0, 0x7E, 0x0E, 0xE0, 0xEE, 0x0C, 0xE1, 0xC6, + 0x38, 0x36, 0x01, 0x80, 0x3C, 0x2D, 0xFC, 0x3F, 0xC0, 0xE7, 0x0C, 0x71, + 0xC7, 0x1C, 0x71, 0x8E, 0x3F, 0x83, 0xB8, 0x3B, 0x83, 0x3C, 0x71, 0xC7, + 0x1C, 0xF9, 0xF0, 0x0C, 0x89, 0x8C, 0x46, 0x23, 0x80, 0xE0, 0x78, 0x0E, + 0x03, 0x21, 0x90, 0xCC, 0xC9, 0xC0, 0x7F, 0xE9, 0xDF, 0x31, 0x4E, 0x21, + 0xC0, 0x38, 0x06, 0x01, 0xC0, 0x38, 0x06, 0x00, 0xC0, 0x38, 0x0F, 0xC0, + 0x7C, 0xF3, 0x82, 0x30, 0x27, 0x04, 0x70, 0x46, 0x04, 0xE0, 0x4E, 0x08, + 0xE0, 0x8E, 0x08, 0xE1, 0x0F, 0x30, 0x3C, 0x00, 0xFC, 0x73, 0x82, 0x38, + 0x23, 0x84, 0x38, 0x83, 0x90, 0x39, 0x01, 0xA0, 0x1C, 0x01, 0xC0, 0x18, + 0x01, 0x00, 0xF9, 0xF7, 0x30, 0xE2, 0x30, 0xC2, 0x38, 0xC4, 0x3B, 0xC4, + 0x3A, 0xE8, 0x3C, 0xE8, 0x3C, 0xF0, 0x18, 0xF0, 0x18, 0x60, 0x10, 0x60, + 0x10, 0x40, 0x3F, 0x78, 0x61, 0x83, 0x98, 0x1D, 0x00, 0x70, 0x03, 0x80, + 0x1C, 0x01, 0x60, 0x0B, 0x80, 0x9C, 0x08, 0x60, 0xC3, 0x8F, 0x7E, 0x00, + 0xF9, 0xE6, 0x18, 0xC2, 0x1C, 0x81, 0xA0, 0x34, 0x07, 0x00, 0xC0, 0x18, + 0x07, 0x00, 0xE0, 0x1C, 0x0F, 0xC0, 0x3F, 0xE6, 0x19, 0x87, 0x21, 0xC0, + 0x30, 0x0E, 0x03, 0x80, 0x60, 0x1C, 0x07, 0x05, 0xC1, 0x38, 0xEF, 0xFC, + 0x0E, 0x08, 0x18, 0x18, 0x18, 0x10, 0x30, 0x30, 0x30, 0x20, 0x60, 0x60, + 0x60, 0x40, 0xF0, 0xC6, 0x10, 0xC6, 0x10, 0x86, 0x30, 0x86, 0x30, 0x1E, + 0x0C, 0x18, 0x20, 0xC1, 0x83, 0x04, 0x18, 0x30, 0x60, 0x83, 0x06, 0x3C, + 0x00, 0x18, 0x1C, 0x34, 0x26, 0x66, 0x43, 0xC3, 0xFF, 0x80, 0xC6, 0x30, + 0x0D, 0x9D, 0x8C, 0xCC, 0x6E, 0x26, 0x33, 0x19, 0xBE, 0x66, 0x00, 0x00, + 0x78, 0x18, 0x30, 0x30, 0x3E, 0x73, 0x63, 0x63, 0x63, 0xC6, 0xC6, 0xCC, + 0x70, 0x0F, 0x3B, 0x70, 0x70, 0xE0, 0xE0, 0xE2, 0xE4, 0x78, 0x00, 0x00, + 0xF0, 0x1C, 0x06, 0x01, 0x83, 0xE3, 0x30, 0xCC, 0x63, 0x19, 0xCC, 0x63, + 0x38, 0xCF, 0x1D, 0x80, 0x0E, 0x75, 0xCB, 0xBE, 0xDE, 0x38, 0x72, 0x78, + 0x00, 0xE0, 0x34, 0x0C, 0x01, 0x80, 0x30, 0x1F, 0x01, 0x80, 0x30, 0x06, + 0x01, 0xC0, 0x30, 0x06, 0x00, 0xC0, 0x30, 0x06, 0x04, 0x80, 0xE0, 0x00, + 0x1C, 0x19, 0xD8, 0xCC, 0x66, 0x60, 0xE1, 0x80, 0xF0, 0x7E, 0x43, 0x21, + 0x8F, 0x00, 0x00, 0x1E, 0x07, 0x03, 0x01, 0x80, 0xD8, 0xFC, 0x76, 0x33, + 0x19, 0x99, 0xCC, 0xD6, 0x77, 0x30, 0x39, 0xC0, 0x0F, 0x31, 0x8C, 0xC6, + 0x31, 0xAE, 0x00, 0x03, 0x81, 0xC0, 0x00, 0x00, 0xE0, 0x30, 0x18, 0x18, + 0x0C, 0x06, 0x03, 0x03, 0x01, 0x80, 0xC2, 0xC1, 0xC0, 0x00, 0x0F, 0x00, + 0xC0, 0x60, 0x18, 0x06, 0xF3, 0x90, 0xC8, 0x34, 0x0F, 0x06, 0xC1, 0x98, + 0x66, 0xB9, 0xC0, 0x03, 0xCC, 0x63, 0x39, 0x8C, 0x66, 0x31, 0x8E, 0x70, + 0x7B, 0x99, 0xAF, 0xCE, 0x66, 0x63, 0x67, 0x33, 0x31, 0x99, 0x8C, 0xCC, + 0xE7, 0xC6, 0x30, 0x73, 0x7F, 0x73, 0x73, 0x63, 0x67, 0xE6, 0xC7, 0xC6, + 0x1E, 0x33, 0x63, 0x63, 0xC3, 0xC6, 0xC6, 0xCC, 0x78, 0x1D, 0xC3, 0xB1, + 0xCC, 0x63, 0x19, 0xCE, 0x63, 0x18, 0xCC, 0x3E, 0x1C, 0x06, 0x03, 0xE0, + 0x0D, 0x99, 0x8C, 0xCC, 0x6E, 0x76, 0x33, 0x19, 0x9C, 0x7C, 0x06, 0x07, + 0x07, 0xC0, 0x76, 0x3A, 0x30, 0x70, 0x60, 0x60, 0x60, 0xE0, 0x3D, 0x14, + 0x58, 0x38, 0x60, 0xA2, 0xF0, 0x08, 0xCC, 0xF6, 0x31, 0x98, 0xC6, 0x35, + 0xC0, 0xE3, 0x63, 0x66, 0x66, 0x66, 0xCC, 0xCC, 0xFE, 0xEC, 0xE6, 0xCD, + 0x8B, 0x26, 0x8E, 0x18, 0x20, 0xE4, 0xD9, 0x36, 0xE5, 0xDA, 0x77, 0x19, + 0xC6, 0x61, 0x10, 0x39, 0xC7, 0xB0, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xE1, + 0x5A, 0x67, 0x00, 0x39, 0x8C, 0xC3, 0x21, 0xA0, 0xD0, 0x68, 0x38, 0x0C, + 0x04, 0x04, 0x14, 0x0C, 0x00, 0x3E, 0x46, 0x0C, 0x08, 0x10, 0x20, 0x70, + 0x1A, 0x0E, 0x03, 0x0E, 0x0C, 0x0C, 0x08, 0x18, 0x18, 0x10, 0x60, 0x30, + 0x30, 0x30, 0x60, 0x60, 0x60, 0x30, 0xFF, 0xF0, 0x0C, 0x06, 0x06, 0x06, + 0x04, 0x0C, 0x0C, 0x0C, 0x06, 0x18, 0x18, 0x18, 0x30, 0x30, 0x30, 0xE0, + 0x71, 0x8F}; + +const GFXglyph FreeSerifBoldItalic9pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 5, 0, 1}, // 0x20 ' ' + {0, 6, 13, 7, 1, -11}, // 0x21 '!' + {10, 6, 5, 10, 3, -11}, // 0x22 '"' + {14, 11, 13, 9, -1, -12}, // 0x23 '#' + {32, 11, 15, 9, -1, -12}, // 0x24 '$' + {53, 14, 13, 15, 1, -11}, // 0x25 '%' + {76, 13, 13, 14, 0, -11}, // 0x26 '&' + {98, 2, 5, 5, 3, -11}, // 0x27 ''' + {100, 5, 16, 6, 1, -11}, // 0x28 '(' + {110, 5, 16, 6, -1, -11}, // 0x29 ')' + {120, 8, 8, 9, 1, -11}, // 0x2A '*' + {128, 9, 9, 10, 0, -8}, // 0x2B '+' + {139, 3, 6, 5, -1, -2}, // 0x2C ',' + {142, 5, 2, 6, 0, -4}, // 0x2D '-' + {144, 3, 3, 4, 0, -1}, // 0x2E '.' + {146, 7, 12, 6, 0, -11}, // 0x2F '/' + {157, 9, 13, 9, 0, -11}, // 0x30 '0' + {172, 8, 13, 9, 0, -11}, // 0x31 '1' + {185, 9, 13, 9, 0, -11}, // 0x32 '2' + {200, 9, 13, 9, 0, -11}, // 0x33 '3' + {215, 9, 12, 9, 0, -11}, // 0x34 '4' + {229, 9, 13, 9, 0, -11}, // 0x35 '5' + {244, 9, 13, 9, 1, -11}, // 0x36 '6' + {259, 9, 12, 9, 1, -11}, // 0x37 '7' + {273, 8, 13, 9, 0, -11}, // 0x38 '8' + {286, 9, 13, 9, 0, -11}, // 0x39 '9' + {301, 5, 9, 5, 0, -7}, // 0x3A ':' + {307, 5, 11, 5, 0, -7}, // 0x3B ';' + {314, 9, 10, 10, 1, -9}, // 0x3C '<' + {326, 9, 5, 10, 1, -6}, // 0x3D '=' + {332, 9, 10, 10, 1, -9}, // 0x3E '>' + {344, 8, 13, 9, 1, -11}, // 0x3F '?' + {357, 13, 13, 15, 1, -12}, // 0x40 '@' + {379, 12, 13, 13, 0, -11}, // 0x41 'A' + {399, 12, 13, 12, 0, -11}, // 0x42 'B' + {419, 12, 13, 11, 1, -11}, // 0x43 'C' + {439, 14, 13, 13, 0, -11}, // 0x44 'D' + {462, 13, 13, 11, 0, -11}, // 0x45 'E' + {484, 13, 13, 11, 0, -11}, // 0x46 'F' + {506, 12, 13, 13, 1, -11}, // 0x47 'G' + {526, 15, 13, 14, 0, -11}, // 0x48 'H' + {551, 8, 13, 7, 0, -11}, // 0x49 'I' + {564, 10, 14, 9, 0, -11}, // 0x4A 'J' + {582, 13, 13, 12, 0, -11}, // 0x4B 'K' + {604, 12, 13, 11, 0, -11}, // 0x4C 'L' + {624, 17, 13, 16, 0, -11}, // 0x4D 'M' + {652, 14, 13, 13, 0, -11}, // 0x4E 'N' + {675, 12, 13, 12, 1, -11}, // 0x4F 'O' + {695, 12, 13, 11, 0, -11}, // 0x50 'P' + {715, 12, 16, 12, 1, -11}, // 0x51 'Q' + {739, 12, 13, 12, 0, -11}, // 0x52 'R' + {759, 9, 13, 9, 0, -11}, // 0x53 'S' + {774, 11, 13, 11, 2, -11}, // 0x54 'T' + {792, 12, 13, 13, 2, -11}, // 0x55 'U' + {812, 12, 12, 13, 2, -11}, // 0x56 'V' + {830, 16, 12, 17, 2, -11}, // 0x57 'W' + {854, 13, 13, 13, 0, -11}, // 0x58 'X' + {876, 11, 13, 11, 2, -11}, // 0x59 'Y' + {894, 11, 13, 10, 0, -11}, // 0x5A 'Z' + {912, 8, 15, 6, -1, -11}, // 0x5B '[' + {927, 5, 12, 7, 2, -11}, // 0x5C '\' + {935, 7, 15, 6, -1, -11}, // 0x5D ']' + {949, 8, 7, 10, 1, -11}, // 0x5E '^' + {956, 9, 1, 9, 0, 3}, // 0x5F '_' + {958, 4, 3, 6, 2, -11}, // 0x60 '`' + {960, 9, 9, 9, 0, -7}, // 0x61 'a' + {971, 8, 14, 9, 0, -12}, // 0x62 'b' + {985, 8, 9, 8, 0, -7}, // 0x63 'c' + {994, 10, 14, 9, 0, -12}, // 0x64 'd' + {1012, 7, 9, 7, 0, -7}, // 0x65 'e' + {1020, 11, 17, 9, -2, -12}, // 0x66 'f' + {1044, 9, 12, 9, 0, -7}, // 0x67 'g' + {1058, 9, 14, 10, 0, -12}, // 0x68 'h' + {1074, 5, 13, 5, 1, -11}, // 0x69 'i' + {1083, 9, 16, 6, -1, -11}, // 0x6A 'j' + {1101, 10, 14, 9, 0, -12}, // 0x6B 'k' + {1119, 5, 14, 5, 1, -12}, // 0x6C 'l' + {1128, 13, 9, 14, 0, -7}, // 0x6D 'm' + {1143, 8, 9, 9, 0, -7}, // 0x6E 'n' + {1152, 8, 9, 9, 0, -7}, // 0x6F 'o' + {1161, 10, 12, 9, -2, -7}, // 0x70 'p' + {1176, 9, 12, 9, 0, -7}, // 0x71 'q' + {1190, 8, 8, 7, 0, -7}, // 0x72 'r' + {1198, 6, 9, 6, 0, -7}, // 0x73 's' + {1205, 5, 12, 5, 1, -10}, // 0x74 't' + {1213, 8, 9, 10, 1, -7}, // 0x75 'u' + {1222, 7, 8, 8, 1, -7}, // 0x76 'v' + {1229, 10, 8, 12, 1, -7}, // 0x77 'w' + {1239, 10, 9, 9, -1, -7}, // 0x78 'x' + {1251, 9, 12, 8, -1, -7}, // 0x79 'y' + {1265, 8, 9, 7, 0, -7}, // 0x7A 'z' + {1274, 8, 16, 6, 0, -12}, // 0x7B '{' + {1290, 1, 12, 5, 2, -11}, // 0x7C '|' + {1292, 8, 16, 6, -2, -12}, // 0x7D '}' + {1308, 8, 2, 10, 1, -4}}; // 0x7E '~' + +const GFXfont FreeSerifBoldItalic9pt7b PROGMEM = { + (uint8_t *)FreeSerifBoldItalic9pt7bBitmaps, + (GFXglyph *)FreeSerifBoldItalic9pt7bGlyphs, 0x20, 0x7E, 22}; + +// Approx. 1982 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifItalic12pt7b.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifItalic12pt7b.h new file mode 100644 index 0000000..85de005 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifItalic12pt7b.h @@ -0,0 +1,273 @@ +#pragma once +#include + +const uint8_t FreeSerifItalic12pt7bBitmaps[] PROGMEM = { + 0x0C, 0x31, 0xC6, 0x18, 0x43, 0x0C, 0x20, 0x84, 0x10, 0x03, 0x0C, 0x30, + 0x66, 0xCD, 0x12, 0x24, 0x51, 0x00, 0x03, 0x10, 0x11, 0x80, 0x8C, 0x0C, + 0x40, 0x46, 0x1F, 0xFC, 0x21, 0x01, 0x18, 0x18, 0x80, 0x84, 0x3F, 0xF8, + 0x62, 0x02, 0x30, 0x31, 0x01, 0x08, 0x08, 0xC0, 0x00, 0x40, 0x08, 0x07, + 0xC0, 0xCA, 0x18, 0xA1, 0x92, 0x19, 0x01, 0xD0, 0x0F, 0x00, 0x78, 0x03, + 0xC0, 0x2E, 0x02, 0x64, 0x46, 0x44, 0x64, 0x46, 0x64, 0xC1, 0xF0, 0x08, + 0x00, 0x80, 0x00, 0x08, 0x0F, 0x0C, 0x0C, 0x7C, 0x0C, 0x22, 0x06, 0x12, + 0x06, 0x09, 0x03, 0x09, 0x01, 0x84, 0x80, 0xC4, 0x8F, 0x3C, 0x4C, 0x40, + 0x4C, 0x20, 0x4E, 0x10, 0x26, 0x08, 0x23, 0x08, 0x11, 0x84, 0x10, 0xC4, + 0x08, 0x3C, 0x00, 0x00, 0xE0, 0x02, 0x60, 0x0C, 0xC0, 0x19, 0x80, 0x36, + 0x00, 0x70, 0x00, 0xC0, 0x07, 0x9F, 0x33, 0x08, 0xC3, 0x13, 0x06, 0x46, + 0x0D, 0x0C, 0x0C, 0x18, 0x1C, 0x1C, 0x5C, 0x9F, 0x1E, 0xFA, 0xA0, 0x02, + 0x08, 0x20, 0xC3, 0x06, 0x18, 0x30, 0xE1, 0x83, 0x06, 0x0C, 0x18, 0x30, + 0x60, 0x40, 0x80, 0x81, 0x00, 0x08, 0x10, 0x10, 0x20, 0x40, 0xC1, 0x83, + 0x06, 0x0C, 0x18, 0x70, 0xC1, 0x83, 0x0C, 0x10, 0x41, 0x04, 0x00, 0x18, + 0x18, 0x18, 0x93, 0x74, 0x38, 0xD7, 0x93, 0x18, 0x18, 0x04, 0x00, 0x80, + 0x10, 0x02, 0x00, 0x41, 0xFF, 0xC1, 0x00, 0x20, 0x04, 0x00, 0x80, 0x10, + 0x00, 0x6C, 0x95, 0x00, 0xF8, 0xFC, 0x00, 0x40, 0x18, 0x02, 0x00, 0xC0, + 0x30, 0x06, 0x01, 0x80, 0x20, 0x0C, 0x01, 0x00, 0x60, 0x18, 0x03, 0x00, + 0xC0, 0x10, 0x06, 0x00, 0x07, 0x81, 0x98, 0x61, 0x18, 0x33, 0x06, 0xC0, + 0xD8, 0x1B, 0x03, 0xE0, 0xF8, 0x1F, 0x03, 0x60, 0x6C, 0x19, 0x83, 0x10, + 0xC3, 0x30, 0x3C, 0x00, 0x01, 0x87, 0xC0, 0xC0, 0x60, 0x30, 0x18, 0x18, + 0x0C, 0x06, 0x07, 0x03, 0x01, 0x80, 0xC0, 0xC0, 0x60, 0x30, 0xFE, 0x00, + 0x0F, 0x0C, 0x64, 0x0C, 0x03, 0x00, 0xC0, 0x20, 0x18, 0x0C, 0x02, 0x01, + 0x00, 0x80, 0x40, 0x20, 0x10, 0x2F, 0xF0, 0x07, 0x86, 0x30, 0x0C, 0x03, + 0x01, 0x81, 0x81, 0xF0, 0x1E, 0x03, 0x80, 0x60, 0x18, 0x06, 0x01, 0x00, + 0xCC, 0x63, 0xE0, 0x00, 0x20, 0x0C, 0x03, 0x80, 0xA0, 0x2C, 0x09, 0x82, + 0x30, 0x84, 0x31, 0x8C, 0x33, 0x06, 0x7F, 0xE0, 0x30, 0x06, 0x00, 0x80, + 0x30, 0x03, 0xE1, 0x80, 0x20, 0x06, 0x00, 0xF0, 0x0F, 0x00, 0x60, 0x06, + 0x00, 0xC0, 0x18, 0x03, 0x00, 0x40, 0x18, 0x02, 0x30, 0x87, 0xE0, 0x00, + 0x70, 0x3C, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x7F, 0x07, 0x18, 0x60, + 0xCE, 0x0C, 0xC0, 0xCC, 0x0C, 0xC0, 0xCC, 0x18, 0x41, 0x86, 0x30, 0x3E, + 0x00, 0x7F, 0xF0, 0x18, 0x03, 0x00, 0xC0, 0x10, 0x06, 0x01, 0x80, 0x30, + 0x0C, 0x01, 0x00, 0x60, 0x08, 0x03, 0x00, 0xC0, 0x10, 0x06, 0x00, 0x0F, + 0x83, 0x18, 0xC1, 0x98, 0x33, 0x06, 0x71, 0x87, 0x60, 0x70, 0x17, 0x0C, + 0x71, 0x07, 0x60, 0x6C, 0x0D, 0x81, 0xB0, 0x63, 0x1C, 0x3E, 0x00, 0x07, + 0x83, 0x18, 0xC1, 0x18, 0x36, 0x06, 0xC0, 0xD8, 0x1B, 0x07, 0x60, 0xE6, + 0x38, 0x7F, 0x00, 0xC0, 0x30, 0x0C, 0x07, 0x03, 0xC0, 0xC0, 0x00, 0x33, + 0x30, 0x00, 0x00, 0xCC, 0xC0, 0x18, 0xC6, 0x00, 0x00, 0x00, 0x03, 0x18, + 0x44, 0x40, 0x00, 0x00, 0x03, 0x00, 0xF0, 0x38, 0x1E, 0x07, 0x80, 0xE0, + 0x0F, 0x00, 0x1C, 0x00, 0x78, 0x01, 0xE0, 0x07, 0x00, 0x10, 0xFF, 0xF0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x0C, 0x00, 0xF0, 0x01, + 0xC0, 0x07, 0x80, 0x1E, 0x00, 0x70, 0x0F, 0x03, 0xC1, 0xE0, 0x78, 0x0E, + 0x00, 0x80, 0x00, 0x3E, 0x21, 0x90, 0x60, 0x30, 0x38, 0x38, 0x30, 0x30, + 0x20, 0x20, 0x10, 0x00, 0x00, 0x06, 0x03, 0x01, 0x80, 0x07, 0xE0, 0x1C, + 0x18, 0x30, 0x04, 0x60, 0x02, 0x61, 0xDA, 0xC3, 0x31, 0xC6, 0x31, 0xC4, + 0x31, 0xCC, 0x31, 0xCC, 0x21, 0xCC, 0x62, 0x6C, 0xE4, 0x67, 0x38, 0x30, + 0x00, 0x1C, 0x08, 0x07, 0xF0, 0x00, 0x20, 0x00, 0xC0, 0x03, 0x80, 0x0B, + 0x00, 0x16, 0x00, 0x4E, 0x00, 0x9C, 0x02, 0x18, 0x08, 0x30, 0x1F, 0xE0, + 0x40, 0xC1, 0x81, 0xC2, 0x03, 0x8C, 0x07, 0x3C, 0x1F, 0x80, 0x1F, 0xF0, + 0x1C, 0x60, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x38, 0x60, 0xC3, 0x03, 0xF0, + 0x1C, 0x30, 0x60, 0x61, 0x81, 0x86, 0x06, 0x38, 0x18, 0xC0, 0xC3, 0x06, + 0x3F, 0xF0, 0x01, 0xF9, 0x06, 0x0F, 0x1C, 0x06, 0x38, 0x02, 0x30, 0x02, + 0x60, 0x00, 0x60, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, + 0xC0, 0x00, 0xC0, 0x08, 0x60, 0x10, 0x30, 0x60, 0x1F, 0x80, 0x1F, 0xF0, + 0x07, 0x0C, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x0E, 0x03, 0x0C, 0x03, + 0x0C, 0x03, 0x1C, 0x03, 0x1C, 0x07, 0x18, 0x06, 0x18, 0x06, 0x38, 0x0C, + 0x30, 0x18, 0x30, 0x70, 0xFF, 0x80, 0x1F, 0xFF, 0x07, 0x07, 0x06, 0x02, + 0x06, 0x02, 0x06, 0x00, 0x0E, 0x10, 0x0C, 0x30, 0x0F, 0xF0, 0x1C, 0x20, + 0x18, 0x20, 0x18, 0x00, 0x18, 0x00, 0x38, 0x04, 0x30, 0x08, 0x30, 0x38, + 0xFF, 0xF8, 0x1F, 0xFF, 0x07, 0x07, 0x07, 0x02, 0x06, 0x02, 0x06, 0x00, + 0x0E, 0x10, 0x0C, 0x30, 0x0F, 0xF0, 0x1C, 0x20, 0x1C, 0x20, 0x18, 0x00, + 0x18, 0x00, 0x38, 0x00, 0x30, 0x00, 0x30, 0x00, 0xFC, 0x00, 0x01, 0xF1, + 0x06, 0x0F, 0x18, 0x07, 0x38, 0x02, 0x30, 0x02, 0x60, 0x00, 0x60, 0x00, + 0xE0, 0x00, 0xC0, 0x7F, 0xC0, 0x1C, 0xC0, 0x1C, 0xC0, 0x18, 0xC0, 0x18, + 0x60, 0x18, 0x30, 0x38, 0x0F, 0xC0, 0x1F, 0xC7, 0xE0, 0xE0, 0x70, 0x18, + 0x0E, 0x03, 0x01, 0x80, 0x60, 0x30, 0x1C, 0x0E, 0x03, 0x01, 0x80, 0x7F, + 0xF0, 0x1C, 0x06, 0x03, 0x01, 0xC0, 0x60, 0x30, 0x0C, 0x06, 0x03, 0x81, + 0xC0, 0x60, 0x38, 0x0C, 0x06, 0x07, 0xE3, 0xF0, 0x1F, 0x83, 0x81, 0x80, + 0xC0, 0x60, 0x70, 0x30, 0x18, 0x1C, 0x0C, 0x06, 0x03, 0x03, 0x81, 0x80, + 0xC1, 0xF8, 0x03, 0xF0, 0x0C, 0x00, 0xC0, 0x1C, 0x01, 0x80, 0x18, 0x03, + 0x80, 0x30, 0x03, 0x00, 0x30, 0x07, 0x00, 0x60, 0x06, 0x0C, 0xE0, 0xCC, + 0x07, 0x80, 0x1F, 0xCF, 0x83, 0x83, 0x81, 0x81, 0x00, 0xC3, 0x00, 0x62, + 0x00, 0x72, 0x00, 0x36, 0x00, 0x1E, 0x00, 0x1D, 0x80, 0x0C, 0xE0, 0x06, + 0x30, 0x03, 0x1C, 0x03, 0x87, 0x01, 0x81, 0x80, 0xC0, 0xE1, 0xF9, 0xFC, + 0x1F, 0xC0, 0x1C, 0x00, 0x60, 0x01, 0x80, 0x06, 0x00, 0x38, 0x00, 0xC0, + 0x03, 0x00, 0x1C, 0x00, 0x60, 0x01, 0x80, 0x06, 0x00, 0x38, 0x0C, 0xC0, + 0x23, 0x03, 0xBF, 0xFE, 0x0F, 0x00, 0x78, 0x38, 0x07, 0x81, 0xC0, 0x38, + 0x0E, 0x02, 0xC0, 0x70, 0x3E, 0x05, 0xC1, 0x70, 0x2E, 0x13, 0x01, 0x31, + 0x98, 0x11, 0x89, 0xC0, 0x8C, 0x8C, 0x04, 0x6C, 0x60, 0x23, 0x43, 0x02, + 0x1C, 0x38, 0x10, 0xE1, 0x81, 0x86, 0x1C, 0x1F, 0x23, 0xF8, 0x1E, 0x07, + 0xC1, 0xC0, 0x60, 0x70, 0x10, 0x1C, 0x0C, 0x05, 0x82, 0x02, 0x60, 0x80, + 0x9C, 0x60, 0x23, 0x10, 0x10, 0xC4, 0x04, 0x19, 0x01, 0x06, 0xC0, 0x40, + 0xE0, 0x20, 0x38, 0x08, 0x0E, 0x06, 0x01, 0x03, 0xE0, 0x40, 0x01, 0xF0, + 0x0C, 0x10, 0x30, 0x10, 0xC0, 0x33, 0x00, 0x6E, 0x00, 0xD8, 0x01, 0xF0, + 0x03, 0xC0, 0x0D, 0x80, 0x1B, 0x00, 0x76, 0x00, 0xCC, 0x03, 0x08, 0x0C, + 0x18, 0x70, 0x0F, 0x80, 0x1F, 0xF0, 0x1C, 0x60, 0x60, 0xC1, 0x83, 0x06, + 0x0C, 0x38, 0x30, 0xC1, 0x83, 0x0E, 0x1F, 0xE0, 0x60, 0x01, 0x80, 0x06, + 0x00, 0x38, 0x00, 0xC0, 0x03, 0x00, 0x3F, 0x00, 0x01, 0xF0, 0x06, 0x10, + 0x30, 0x30, 0xC0, 0x33, 0x00, 0x66, 0x00, 0xD8, 0x01, 0xB0, 0x03, 0xE0, + 0x0F, 0x80, 0x1B, 0x00, 0x36, 0x00, 0xCC, 0x03, 0x98, 0x06, 0x18, 0x18, + 0x18, 0xC0, 0x0E, 0x00, 0x20, 0x01, 0xF8, 0x36, 0x7F, 0x80, 0x1F, 0xF0, + 0x1C, 0x60, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x38, 0x70, 0xC3, 0x83, 0xF8, + 0x1D, 0xC0, 0x63, 0x01, 0x8C, 0x06, 0x18, 0x38, 0x60, 0xC1, 0xC3, 0x03, + 0x3F, 0x0F, 0x07, 0x90, 0xC7, 0x18, 0x21, 0x82, 0x18, 0x01, 0xC0, 0x0E, + 0x00, 0x70, 0x03, 0x80, 0x1C, 0x00, 0xC4, 0x0C, 0x40, 0xC6, 0x08, 0xE1, + 0x89, 0xE0, 0x7F, 0xFE, 0xC7, 0x1D, 0x0C, 0x14, 0x18, 0x20, 0x70, 0x00, + 0xE0, 0x01, 0x80, 0x03, 0x00, 0x0E, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, + 0x01, 0xC0, 0x03, 0x00, 0x0E, 0x00, 0x7F, 0x80, 0x7E, 0x1F, 0x38, 0x0C, + 0x38, 0x0C, 0x30, 0x08, 0x30, 0x08, 0x70, 0x08, 0x70, 0x10, 0x60, 0x10, + 0x60, 0x10, 0xE0, 0x10, 0xC0, 0x20, 0xC0, 0x20, 0xC0, 0x60, 0xC0, 0x40, + 0x61, 0x80, 0x3F, 0x00, 0xFC, 0x3E, 0xE0, 0x18, 0xC0, 0x21, 0x80, 0xC3, + 0x81, 0x07, 0x04, 0x0E, 0x08, 0x0C, 0x20, 0x18, 0x80, 0x31, 0x00, 0x64, + 0x00, 0xF0, 0x01, 0xE0, 0x01, 0x80, 0x02, 0x00, 0x04, 0x00, 0xFD, 0xF8, + 0xF7, 0x07, 0x06, 0x30, 0x60, 0x63, 0x07, 0x04, 0x30, 0x70, 0x83, 0x8F, + 0x08, 0x38, 0xB1, 0x03, 0x93, 0x10, 0x19, 0x32, 0x01, 0xA3, 0x20, 0x1A, + 0x34, 0x01, 0xC3, 0x40, 0x1C, 0x38, 0x01, 0x83, 0x00, 0x18, 0x30, 0x01, + 0x02, 0x00, 0x1F, 0x9F, 0x0E, 0x06, 0x06, 0x04, 0x07, 0x08, 0x03, 0x10, + 0x03, 0x20, 0x03, 0xC0, 0x01, 0x80, 0x01, 0xC0, 0x03, 0xC0, 0x06, 0xE0, + 0x0C, 0x60, 0x18, 0x60, 0x30, 0x70, 0x70, 0x78, 0xF8, 0xFC, 0xFC, 0xFB, + 0x81, 0x8C, 0x08, 0x60, 0x83, 0x8C, 0x0C, 0xC0, 0x64, 0x03, 0xC0, 0x0C, + 0x00, 0xE0, 0x07, 0x00, 0x30, 0x01, 0x80, 0x1C, 0x00, 0xC0, 0x1F, 0xC0, + 0x1F, 0xFE, 0x30, 0x38, 0xC0, 0xF1, 0x01, 0xC0, 0x07, 0x00, 0x1C, 0x00, + 0x70, 0x01, 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x38, 0x00, 0xE0, 0x01, 0xC0, + 0x47, 0x01, 0x1C, 0x06, 0x7F, 0xF8, 0x07, 0x04, 0x08, 0x08, 0x08, 0x18, + 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x80, 0x80, + 0x80, 0xE0, 0xC0, 0xC0, 0x40, 0x60, 0x20, 0x30, 0x30, 0x18, 0x18, 0x08, + 0x0C, 0x04, 0x06, 0x06, 0x03, 0x03, 0x0E, 0x04, 0x08, 0x10, 0x60, 0x81, + 0x02, 0x04, 0x18, 0x20, 0x40, 0x81, 0x02, 0x08, 0x10, 0x20, 0x47, 0x80, + 0x0C, 0x03, 0x81, 0xE0, 0x4C, 0x33, 0x08, 0x66, 0x19, 0x03, 0xC0, 0xC0, + 0xFF, 0xF0, 0xCE, 0x63, 0x07, 0xA0, 0xCE, 0x18, 0x63, 0x04, 0x60, 0xC6, + 0x0C, 0xC0, 0xCC, 0x18, 0xC3, 0x8C, 0x5A, 0x79, 0xC0, 0x38, 0x06, 0x01, + 0x80, 0x40, 0x30, 0x0C, 0xE3, 0xCC, 0xC3, 0x70, 0xD8, 0x36, 0x19, 0x06, + 0xC3, 0x30, 0x8C, 0xC3, 0xE0, 0x0F, 0x0C, 0xCC, 0x6C, 0x06, 0x06, 0x03, + 0x01, 0x80, 0xC0, 0x73, 0x1E, 0x00, 0x00, 0x70, 0x01, 0x80, 0x0C, 0x00, + 0x60, 0x02, 0x03, 0xF0, 0x31, 0x83, 0x08, 0x30, 0xC3, 0x06, 0x18, 0x31, + 0x81, 0x8C, 0x18, 0x61, 0xCB, 0x16, 0x8F, 0x38, 0x07, 0x19, 0x31, 0x63, + 0x62, 0xEC, 0xD0, 0xC0, 0xC0, 0xE6, 0x78, 0x00, 0x38, 0x01, 0x30, 0x0C, + 0x00, 0x20, 0x01, 0x80, 0x06, 0x00, 0xFE, 0x00, 0x40, 0x03, 0x00, 0x0C, + 0x00, 0x30, 0x00, 0x80, 0x06, 0x00, 0x18, 0x00, 0x60, 0x01, 0x80, 0x04, + 0x00, 0x30, 0x00, 0xC0, 0x02, 0x00, 0x90, 0x03, 0x80, 0x00, 0x07, 0xC0, + 0xC7, 0x18, 0x61, 0x86, 0x18, 0xE1, 0x8C, 0x07, 0x80, 0x80, 0x1C, 0x00, + 0xF0, 0x33, 0x84, 0x18, 0x80, 0x88, 0x08, 0x61, 0x03, 0xE0, 0x1C, 0x00, + 0xC0, 0x0C, 0x00, 0xC0, 0x18, 0x01, 0x8E, 0x1B, 0x61, 0xC6, 0x38, 0x63, + 0x8C, 0x30, 0xC3, 0x0C, 0x60, 0xC6, 0x1A, 0x61, 0xA4, 0x1C, 0x18, 0xC6, + 0x00, 0x0B, 0xC6, 0x23, 0x18, 0x8C, 0x63, 0x5C, 0x01, 0x80, 0xC0, 0x60, + 0x00, 0x00, 0x0C, 0x1E, 0x02, 0x03, 0x01, 0x80, 0xC0, 0x40, 0x60, 0x30, + 0x18, 0x08, 0x0C, 0x06, 0x02, 0x1B, 0x0F, 0x00, 0x1C, 0x01, 0x80, 0x30, + 0x06, 0x01, 0x80, 0x33, 0xC6, 0x30, 0x88, 0x32, 0x06, 0x80, 0xF0, 0x1B, + 0x06, 0x60, 0xC4, 0x18, 0xD2, 0x0C, 0x3C, 0x61, 0x86, 0x18, 0xC3, 0x0C, + 0x21, 0x86, 0x18, 0x43, 0x2D, 0x38, 0x78, 0xE7, 0x0D, 0xB5, 0x8D, 0x1C, + 0xC7, 0x0C, 0x63, 0x8E, 0x31, 0x86, 0x30, 0xC3, 0x18, 0xC1, 0x0C, 0x61, + 0x84, 0xB0, 0xC6, 0xB0, 0x63, 0x80, 0x78, 0xE1, 0xB6, 0x14, 0x63, 0x84, + 0x38, 0xC3, 0x0C, 0x70, 0x86, 0x18, 0x61, 0x96, 0x1A, 0xC1, 0xC0, 0x0F, + 0x06, 0x63, 0x0D, 0x83, 0x60, 0xF0, 0x3C, 0x1B, 0x06, 0xC3, 0x39, 0x87, + 0x80, 0x1E, 0xF0, 0x39, 0xC1, 0x86, 0x0C, 0x30, 0xC1, 0x86, 0x0C, 0x30, + 0xC3, 0x06, 0x18, 0x60, 0xC6, 0x07, 0xC0, 0x60, 0x03, 0x00, 0x18, 0x00, + 0xC0, 0x1F, 0x00, 0x07, 0x81, 0x9C, 0x63, 0x98, 0x76, 0x0C, 0xC1, 0xB0, + 0x76, 0x0E, 0xC3, 0x98, 0xB1, 0xE6, 0x00, 0x80, 0x30, 0x06, 0x00, 0xC0, + 0xFC, 0x79, 0x8F, 0xC5, 0x07, 0x03, 0x01, 0x80, 0xC0, 0xC0, 0x60, 0x30, + 0x10, 0x00, 0x1E, 0x98, 0xCC, 0x27, 0x11, 0x80, 0xE0, 0x39, 0x0C, 0x86, + 0x62, 0x2E, 0x00, 0x08, 0x67, 0xCC, 0x30, 0xC6, 0x18, 0x61, 0x8C, 0x34, + 0xE0, 0xF0, 0xCC, 0x19, 0x83, 0x30, 0xC6, 0x18, 0x87, 0x31, 0x66, 0x3C, + 0xCB, 0x1A, 0x6B, 0x8E, 0x00, 0x70, 0xCC, 0x33, 0x04, 0xC2, 0x18, 0x86, + 0x41, 0x90, 0x68, 0x1C, 0x06, 0x01, 0x00, 0x61, 0x0F, 0x84, 0x36, 0x30, + 0xDC, 0xC1, 0x35, 0x08, 0xD4, 0x23, 0x91, 0x0E, 0x48, 0x30, 0xE0, 0xC3, + 0x02, 0x08, 0x00, 0x0C, 0x63, 0x4A, 0x07, 0x00, 0x70, 0x06, 0x00, 0x20, + 0x07, 0x00, 0xB0, 0x0B, 0x21, 0x14, 0xE1, 0x80, 0x38, 0x63, 0x0C, 0x30, + 0x86, 0x10, 0xC4, 0x0C, 0x81, 0xA0, 0x34, 0x07, 0x00, 0x60, 0x08, 0x02, + 0x00, 0x40, 0x10, 0x04, 0x07, 0x00, 0x1F, 0x90, 0x80, 0x80, 0xC0, 0xC0, + 0x40, 0x60, 0x60, 0x60, 0x38, 0x3E, 0x03, 0xA0, 0x60, 0x00, 0x83, 0x81, + 0x01, 0x80, 0xC0, 0x40, 0x60, 0x30, 0x10, 0x10, 0x1C, 0x06, 0x03, 0x03, + 0x01, 0x80, 0xC0, 0x40, 0x60, 0x30, 0x18, 0x07, 0x00, 0xFF, 0xFF, 0x07, + 0x00, 0xC0, 0x60, 0x30, 0x10, 0x18, 0x0C, 0x06, 0x06, 0x03, 0x01, 0x80, + 0x60, 0x40, 0x60, 0x30, 0x10, 0x18, 0x0C, 0x06, 0x06, 0x06, 0x00, 0x78, + 0x18, 0x8C, 0x0F, 0x00}; + +const GFXglyph FreeSerifItalic12pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 6, 0, 1}, // 0x20 ' ' + {0, 6, 16, 8, 1, -15}, // 0x21 '!' + {12, 7, 6, 8, 3, -15}, // 0x22 '"' + {18, 13, 16, 12, 0, -15}, // 0x23 '#' + {44, 12, 20, 12, 0, -17}, // 0x24 '$' + {74, 17, 17, 20, 2, -16}, // 0x25 '%' + {111, 15, 16, 19, 2, -15}, // 0x26 '&' + {141, 2, 6, 5, 4, -15}, // 0x27 ''' + {143, 7, 20, 8, 1, -15}, // 0x28 '(' + {161, 7, 20, 8, 0, -15}, // 0x29 ')' + {179, 8, 10, 12, 4, -15}, // 0x2A '*' + {189, 11, 11, 16, 2, -10}, // 0x2B '+' + {205, 3, 6, 6, 0, -2}, // 0x2C ',' + {208, 5, 1, 8, 1, -5}, // 0x2D '-' + {209, 2, 3, 6, 1, -2}, // 0x2E '.' + {210, 11, 16, 7, 0, -15}, // 0x2F '/' + {232, 11, 17, 12, 1, -16}, // 0x30 '0' + {256, 9, 17, 12, 1, -16}, // 0x31 '1' + {276, 10, 15, 12, 1, -14}, // 0x32 '2' + {295, 10, 16, 12, 1, -15}, // 0x33 '3' + {315, 11, 16, 12, 0, -15}, // 0x34 '4' + {337, 11, 16, 12, 0, -15}, // 0x35 '5' + {359, 12, 17, 12, 1, -16}, // 0x36 '6' + {385, 11, 16, 12, 2, -15}, // 0x37 '7' + {407, 11, 17, 12, 1, -16}, // 0x38 '8' + {431, 11, 17, 12, 1, -16}, // 0x39 '9' + {455, 4, 11, 6, 1, -10}, // 0x3A ':' + {461, 5, 14, 6, 0, -10}, // 0x3B ';' + {470, 12, 13, 14, 1, -12}, // 0x3C '<' + {490, 12, 6, 16, 2, -8}, // 0x3D '=' + {499, 12, 13, 14, 2, -12}, // 0x3E '>' + {519, 9, 16, 11, 3, -15}, // 0x3F '?' + {537, 16, 16, 19, 2, -15}, // 0x40 '@' + {569, 15, 15, 16, 0, -14}, // 0x41 'A' + {598, 14, 16, 14, 0, -15}, // 0x42 'B' + {626, 16, 16, 15, 1, -15}, // 0x43 'C' + {658, 16, 16, 17, 0, -15}, // 0x44 'D' + {690, 16, 16, 14, 0, -15}, // 0x45 'E' + {722, 16, 16, 14, 0, -15}, // 0x46 'F' + {754, 16, 16, 17, 1, -15}, // 0x47 'G' + {786, 19, 16, 17, 0, -15}, // 0x48 'H' + {824, 9, 16, 8, 0, -15}, // 0x49 'I' + {842, 12, 16, 10, 0, -15}, // 0x4A 'J' + {866, 17, 16, 15, 0, -15}, // 0x4B 'K' + {900, 14, 16, 14, 0, -15}, // 0x4C 'L' + {928, 21, 16, 20, 0, -15}, // 0x4D 'M' + {970, 18, 16, 16, 0, -15}, // 0x4E 'N' + {1006, 15, 16, 16, 1, -15}, // 0x4F 'O' + {1036, 14, 16, 14, 0, -15}, // 0x50 'P' + {1064, 15, 20, 16, 1, -15}, // 0x51 'Q' + {1102, 14, 16, 15, 0, -15}, // 0x52 'R' + {1130, 12, 16, 11, 0, -15}, // 0x53 'S' + {1154, 15, 16, 14, 2, -15}, // 0x54 'T' + {1184, 16, 16, 17, 3, -15}, // 0x55 'U' + {1216, 15, 16, 16, 3, -15}, // 0x56 'V' + {1246, 20, 16, 21, 3, -15}, // 0x57 'W' + {1286, 16, 16, 16, 0, -15}, // 0x58 'X' + {1318, 13, 16, 14, 3, -15}, // 0x59 'Y' + {1344, 15, 16, 14, 0, -15}, // 0x5A 'Z' + {1374, 8, 20, 9, 1, -15}, // 0x5B '[' + {1394, 8, 16, 12, 3, -15}, // 0x5C '\' + {1410, 7, 20, 9, 1, -15}, // 0x5D ']' + {1428, 10, 9, 10, 0, -15}, // 0x5E '^' + {1440, 12, 1, 12, 0, 3}, // 0x5F '_' + {1442, 4, 4, 6, 3, -15}, // 0x60 '`' + {1444, 12, 11, 12, 0, -10}, // 0x61 'a' + {1461, 10, 16, 11, 1, -15}, // 0x62 'b' + {1481, 9, 11, 10, 1, -10}, // 0x63 'c' + {1494, 13, 16, 12, 0, -15}, // 0x64 'd' + {1520, 8, 11, 10, 1, -10}, // 0x65 'e' + {1531, 14, 22, 10, -2, -16}, // 0x66 'f' + {1570, 12, 16, 11, -1, -10}, // 0x67 'g' + {1594, 12, 16, 12, 0, -15}, // 0x68 'h' + {1618, 5, 16, 6, 1, -15}, // 0x69 'i' + {1628, 9, 21, 7, -2, -15}, // 0x6A 'j' + {1652, 11, 16, 11, 0, -15}, // 0x6B 'k' + {1674, 6, 16, 6, 1, -15}, // 0x6C 'l' + {1686, 17, 11, 17, 0, -10}, // 0x6D 'm' + {1710, 12, 11, 12, 0, -10}, // 0x6E 'n' + {1727, 10, 11, 11, 1, -10}, // 0x6F 'o' + {1741, 13, 16, 11, -2, -10}, // 0x70 'p' + {1767, 11, 16, 12, 0, -10}, // 0x71 'q' + {1789, 9, 11, 9, 0, -10}, // 0x72 'r' + {1802, 9, 11, 8, 0, -10}, // 0x73 's' + {1815, 6, 13, 6, 1, -12}, // 0x74 't' + {1825, 11, 11, 12, 1, -10}, // 0x75 'u' + {1841, 10, 11, 11, 1, -10}, // 0x76 'v' + {1855, 14, 11, 16, 2, -10}, // 0x77 'w' + {1875, 12, 11, 10, -1, -10}, // 0x78 'x' + {1892, 11, 16, 11, 0, -10}, // 0x79 'y' + {1914, 9, 13, 9, 0, -10}, // 0x7A 'z' + {1929, 9, 21, 10, 1, -16}, // 0x7B '{' + {1953, 1, 16, 7, 3, -15}, // 0x7C '|' + {1955, 9, 21, 10, 0, -16}, // 0x7D '}' + {1979, 11, 3, 13, 1, -6}}; // 0x7E '~' + +const GFXfont FreeSerifItalic12pt7b PROGMEM = { + (uint8_t *)FreeSerifItalic12pt7bBitmaps, + (GFXglyph *)FreeSerifItalic12pt7bGlyphs, 0x20, 0x7E, 29}; + +// Approx. 2656 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifItalic18pt7b.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifItalic18pt7b.h new file mode 100644 index 0000000..c25db35 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifItalic18pt7b.h @@ -0,0 +1,452 @@ +#pragma once +#include + +const uint8_t FreeSerifItalic18pt7bBitmaps[] PROGMEM = { + 0x01, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0x81, 0xE0, 0x70, 0x1C, 0x06, 0x01, + 0x80, 0xC0, 0x30, 0x0C, 0x02, 0x01, 0x80, 0x40, 0x10, 0x00, 0x00, 0x01, + 0x80, 0xF0, 0x3C, 0x06, 0x00, 0x38, 0x77, 0x8F, 0x78, 0xF7, 0x0E, 0x60, + 0xE6, 0x0C, 0xC1, 0x8C, 0x18, 0x81, 0x00, 0x00, 0x60, 0xC0, 0x0C, 0x38, + 0x03, 0x86, 0x00, 0x60, 0xC0, 0x0C, 0x38, 0x03, 0x06, 0x00, 0x60, 0xC0, + 0xFF, 0xFF, 0x1F, 0xFF, 0xE0, 0x61, 0xC0, 0x1C, 0x30, 0x03, 0x06, 0x00, + 0x61, 0xC0, 0x18, 0x30, 0x3F, 0xFF, 0xC7, 0xFF, 0xF8, 0x18, 0x30, 0x03, + 0x0E, 0x00, 0xE1, 0x80, 0x18, 0x30, 0x03, 0x0C, 0x00, 0xC1, 0x80, 0x18, + 0x70, 0x00, 0x00, 0x08, 0x00, 0x30, 0x00, 0x40, 0x0F, 0xC0, 0x61, 0xE1, + 0x86, 0xC6, 0x0D, 0x8C, 0x1A, 0x18, 0x24, 0x38, 0xC0, 0x39, 0x80, 0x7F, + 0x00, 0x7E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x7C, 0x00, 0xDC, 0x03, 0x38, + 0x06, 0x32, 0x0C, 0x64, 0x18, 0xDC, 0x71, 0xB8, 0xC6, 0x39, 0x8C, 0x3F, + 0x30, 0x1F, 0x80, 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, 0x07, 0x80, 0x60, + 0x0F, 0xE0, 0xE0, 0x0F, 0x0F, 0xB0, 0x0E, 0x04, 0x30, 0x07, 0x02, 0x18, + 0x07, 0x01, 0x18, 0x03, 0x00, 0x8C, 0x01, 0x80, 0x8C, 0x00, 0xC0, 0x4C, + 0x00, 0x60, 0x66, 0x1F, 0x30, 0x66, 0x1F, 0xCC, 0x63, 0x1C, 0x67, 0xE3, + 0x1C, 0x19, 0xE1, 0x1C, 0x04, 0x01, 0x8C, 0x02, 0x00, 0x8E, 0x01, 0x00, + 0xC7, 0x00, 0x80, 0xC3, 0x00, 0x80, 0x61, 0x80, 0xC0, 0x60, 0xC0, 0xC0, + 0x20, 0x70, 0xE0, 0x30, 0x1F, 0xC0, 0x10, 0x07, 0xC0, 0x00, 0x1E, 0x00, + 0x00, 0xFC, 0x00, 0x07, 0x18, 0x00, 0x18, 0x60, 0x00, 0xE1, 0x80, 0x03, + 0x8C, 0x00, 0x0E, 0x60, 0x00, 0x3B, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x80, + 0x00, 0x7F, 0x1F, 0xC3, 0x3C, 0x1C, 0x38, 0x70, 0x61, 0xE1, 0xE3, 0x87, + 0x07, 0x8C, 0x3C, 0x0F, 0x60, 0xF0, 0x3D, 0x03, 0xC0, 0x78, 0x0F, 0x01, + 0xE0, 0x3E, 0x07, 0xC0, 0x7C, 0x77, 0x84, 0xFF, 0x8F, 0xE1, 0xF8, 0x0F, + 0x00, 0x3B, 0xDE, 0xE7, 0x33, 0x18, 0x80, 0x00, 0x80, 0x80, 0x80, 0x80, + 0xC0, 0xC0, 0xE0, 0x60, 0x70, 0x38, 0x18, 0x0C, 0x0E, 0x07, 0x03, 0x01, + 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x01, 0x00, 0x80, 0x40, 0x30, + 0x08, 0x04, 0x02, 0x00, 0x04, 0x01, 0x00, 0x80, 0x60, 0x10, 0x08, 0x04, + 0x03, 0x01, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x0E, 0x07, 0x03, 0x81, + 0x80, 0xC0, 0xE0, 0x60, 0x30, 0x30, 0x18, 0x18, 0x08, 0x08, 0x08, 0x08, + 0x00, 0x06, 0x00, 0x60, 0x06, 0x0C, 0x43, 0xE4, 0xF1, 0x58, 0x0E, 0x00, + 0xF0, 0x74, 0xEE, 0x47, 0xC4, 0x30, 0x60, 0x06, 0x00, 0x60, 0x01, 0x80, + 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, + 0x01, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, + 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x31, 0xCE, + 0x31, 0x08, 0x98, 0xFF, 0xFF, 0x6F, 0xF6, 0x00, 0x06, 0x00, 0x0E, 0x00, + 0x0C, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x30, 0x00, 0x70, 0x00, 0x60, 0x00, + 0xE0, 0x00, 0xC0, 0x01, 0xC0, 0x03, 0x80, 0x03, 0x00, 0x07, 0x00, 0x06, + 0x00, 0x0E, 0x00, 0x0C, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x30, 0x00, 0x70, + 0x00, 0x60, 0x00, 0xE0, 0x00, 0x00, 0x78, 0x00, 0xC3, 0x00, 0xC1, 0xC0, + 0xC0, 0x60, 0xE0, 0x30, 0xE0, 0x1C, 0x70, 0x0E, 0x70, 0x07, 0x38, 0x03, + 0xBC, 0x01, 0xDC, 0x01, 0xEE, 0x00, 0xFF, 0x00, 0x7F, 0x80, 0x3B, 0x80, + 0x1D, 0xC0, 0x1E, 0xE0, 0x0E, 0x70, 0x0F, 0x38, 0x07, 0x1C, 0x07, 0x06, + 0x03, 0x83, 0x83, 0x80, 0xC3, 0x00, 0x1F, 0x00, 0x00, 0xF0, 0x7F, 0x00, + 0x70, 0x07, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x01, 0xC0, 0x1C, 0x01, + 0xC0, 0x38, 0x03, 0x80, 0x38, 0x03, 0x80, 0x70, 0x07, 0x00, 0x70, 0x0E, + 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x1E, 0x0F, 0xF8, 0x01, 0xF0, 0x07, 0xFC, + 0x0C, 0x3E, 0x10, 0x1F, 0x20, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, + 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x30, 0x00, 0x70, 0x00, 0xE0, + 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x04, + 0x30, 0x0C, 0x7F, 0xF8, 0xFF, 0xF0, 0x00, 0x7C, 0x00, 0xFF, 0x00, 0xC3, + 0xC0, 0x80, 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1C, 0x00, 0x1C, 0x00, + 0x38, 0x00, 0xF0, 0x03, 0xFC, 0x00, 0x1F, 0x00, 0x03, 0xC0, 0x01, 0xE0, + 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x06, 0x00, 0x07, + 0x00, 0x03, 0x07, 0x87, 0x03, 0xFF, 0x00, 0xFC, 0x00, 0x00, 0x01, 0x80, + 0x01, 0x80, 0x01, 0xC0, 0x01, 0xE0, 0x01, 0xF0, 0x01, 0xB0, 0x01, 0xB8, + 0x01, 0x9C, 0x01, 0x8C, 0x00, 0x86, 0x00, 0x87, 0x00, 0x83, 0x80, 0x81, + 0x80, 0x81, 0xC0, 0xC0, 0xE0, 0xC0, 0x70, 0xFF, 0xFF, 0x7F, 0xFF, 0x00, + 0x1C, 0x00, 0x0C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x03, 0x80, 0x01, 0x80, + 0x01, 0xFF, 0x01, 0xFF, 0x02, 0x00, 0x02, 0x00, 0x06, 0x00, 0x07, 0x00, + 0x0F, 0xC0, 0x0F, 0xF0, 0x00, 0xF8, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x1C, + 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x18, + 0x00, 0x30, 0x00, 0x30, 0x70, 0xE0, 0xFF, 0x80, 0x7E, 0x00, 0x00, 0x03, + 0x80, 0x1F, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, + 0x00, 0x3C, 0x00, 0x3D, 0xF0, 0x1F, 0xFE, 0x1F, 0x0F, 0x8E, 0x03, 0xC7, + 0x00, 0xF7, 0x00, 0x7B, 0x80, 0x3D, 0x80, 0x1E, 0xC0, 0x0F, 0x60, 0x0F, + 0xB0, 0x07, 0x98, 0x03, 0xC4, 0x03, 0xC3, 0x03, 0xC0, 0xC3, 0x80, 0x1F, + 0x00, 0x3F, 0xFF, 0x7F, 0xFE, 0x40, 0x0E, 0x80, 0x0C, 0x00, 0x18, 0x00, + 0x18, 0x00, 0x30, 0x00, 0x70, 0x00, 0x60, 0x00, 0xC0, 0x01, 0xC0, 0x01, + 0x80, 0x03, 0x80, 0x03, 0x00, 0x06, 0x00, 0x0E, 0x00, 0x0C, 0x00, 0x1C, + 0x00, 0x18, 0x00, 0x30, 0x00, 0x70, 0x00, 0x60, 0x00, 0xE0, 0x00, 0x00, + 0xF8, 0x03, 0x0E, 0x06, 0x06, 0x0C, 0x03, 0x0C, 0x03, 0x0C, 0x03, 0x0C, + 0x03, 0x0E, 0x06, 0x07, 0x8E, 0x07, 0xD8, 0x03, 0xE0, 0x07, 0xF0, 0x1C, + 0xF8, 0x30, 0x3C, 0x60, 0x1C, 0x60, 0x0E, 0xC0, 0x06, 0xC0, 0x06, 0xC0, + 0x06, 0xC0, 0x06, 0xE0, 0x0C, 0x60, 0x18, 0x38, 0x30, 0x0F, 0xC0, 0x01, + 0xF8, 0x07, 0x8C, 0x0E, 0x06, 0x1E, 0x02, 0x3C, 0x03, 0x3C, 0x03, 0x78, + 0x03, 0x78, 0x03, 0x78, 0x03, 0x78, 0x07, 0x78, 0x07, 0x78, 0x07, 0x3C, + 0x0E, 0x3E, 0x1E, 0x1F, 0xEE, 0x07, 0x9C, 0x00, 0x38, 0x00, 0x78, 0x00, + 0x70, 0x01, 0xE0, 0x03, 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xE0, 0x00, 0x0C, + 0x3C, 0x78, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x1E, 0x18, + 0x00, 0x07, 0x03, 0xC1, 0xE0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x03, 0x81, 0xC0, 0xE0, 0x30, 0x10, 0x10, 0x10, 0x00, 0x00, + 0x00, 0x00, 0xC0, 0x01, 0xF0, 0x01, 0xF8, 0x01, 0xF8, 0x01, 0xF0, 0x01, + 0xF0, 0x03, 0xF0, 0x03, 0xF0, 0x00, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xE0, + 0x00, 0x7E, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xF0, 0x00, 0x3F, + 0x00, 0x03, 0xC0, 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFF, + 0xFF, 0xC0, 0xC0, 0x00, 0x3C, 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0x07, + 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x3F, 0x00, 0x03, 0xC0, 0x01, + 0xF0, 0x01, 0xF8, 0x01, 0xF8, 0x01, 0xF0, 0x01, 0xF0, 0x03, 0xF0, 0x03, + 0xF0, 0x00, 0xF0, 0x00, 0x20, 0x00, 0x00, 0x0F, 0x81, 0x86, 0x30, 0x33, + 0x03, 0x30, 0x30, 0x03, 0x00, 0x60, 0x0E, 0x01, 0xC0, 0x38, 0x06, 0x00, + 0xC0, 0x08, 0x01, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, + 0x00, 0xF0, 0x0F, 0x00, 0x60, 0x00, 0x00, 0x7F, 0x00, 0x03, 0xFF, 0xE0, + 0x07, 0x80, 0xF0, 0x0E, 0x00, 0x38, 0x1C, 0x00, 0x0C, 0x38, 0x0E, 0x06, + 0x70, 0x3F, 0xE2, 0x70, 0x71, 0xE3, 0xF0, 0x60, 0xE1, 0xE0, 0xC0, 0xC1, + 0xE0, 0xC0, 0xC1, 0xE1, 0x81, 0xC1, 0xE1, 0x81, 0xC1, 0xE1, 0x81, 0x82, + 0xE1, 0x83, 0x82, 0x71, 0x83, 0x86, 0x71, 0xC7, 0x8C, 0x38, 0xF9, 0xF8, + 0x3C, 0xF0, 0xF0, 0x1E, 0x00, 0x00, 0x0F, 0x80, 0x30, 0x03, 0xFF, 0xE0, + 0x00, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, 0x01, 0xC0, 0x00, + 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x5E, 0x00, 0x04, 0xF0, + 0x00, 0x63, 0x80, 0x02, 0x1C, 0x00, 0x20, 0xE0, 0x01, 0x07, 0x00, 0x10, + 0x3C, 0x01, 0xFF, 0xE0, 0x0F, 0xFF, 0x00, 0xC0, 0x38, 0x04, 0x01, 0xC0, + 0x60, 0x0E, 0x06, 0x00, 0x78, 0x30, 0x03, 0xC3, 0x00, 0x1E, 0x38, 0x00, + 0xFB, 0xF0, 0x1F, 0xE0, 0x07, 0xFF, 0x80, 0x0F, 0xFF, 0x00, 0x78, 0x3C, + 0x03, 0xC0, 0xF0, 0x1E, 0x07, 0x80, 0xE0, 0x3C, 0x07, 0x01, 0xE0, 0x78, + 0x1E, 0x03, 0x83, 0xE0, 0x1F, 0xF8, 0x01, 0xFF, 0xC0, 0x0F, 0x0F, 0x00, + 0x70, 0x3C, 0x03, 0x80, 0xF0, 0x3C, 0x07, 0x81, 0xC0, 0x3C, 0x0E, 0x01, + 0xE0, 0xF0, 0x0F, 0x07, 0x80, 0xF0, 0x38, 0x0F, 0x81, 0xC1, 0xF8, 0x1F, + 0xFF, 0x83, 0xFF, 0xE0, 0x00, 0x00, 0x3F, 0x08, 0x07, 0xFF, 0xC0, 0xF8, + 0x3E, 0x0F, 0x00, 0x70, 0xF0, 0x03, 0x8F, 0x00, 0x08, 0xF0, 0x00, 0x47, + 0x80, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x01, 0xE0, 0x00, + 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xF0, + 0x00, 0x03, 0x80, 0x02, 0x1E, 0x00, 0x20, 0x78, 0x02, 0x03, 0xE0, 0x60, + 0x07, 0xFE, 0x00, 0x0F, 0xC0, 0x00, 0x07, 0xFF, 0xC0, 0x00, 0xFF, 0xFC, + 0x00, 0x78, 0x1F, 0x00, 0x3C, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x0E, 0x00, + 0x78, 0x07, 0x00, 0x1E, 0x07, 0x80, 0x0F, 0x03, 0x80, 0x07, 0x81, 0xC0, + 0x03, 0xC1, 0xE0, 0x01, 0xE0, 0xF0, 0x00, 0xF0, 0x70, 0x00, 0x78, 0x38, + 0x00, 0x78, 0x3C, 0x00, 0x3C, 0x1E, 0x00, 0x3E, 0x0E, 0x00, 0x1E, 0x0F, + 0x00, 0x1E, 0x07, 0x80, 0x1E, 0x03, 0x80, 0x3E, 0x01, 0xC0, 0x7E, 0x01, + 0xFF, 0xFC, 0x03, 0xFF, 0xF0, 0x00, 0x07, 0xFF, 0xFC, 0x07, 0xFF, 0xF0, + 0x1E, 0x01, 0xC0, 0x78, 0x02, 0x01, 0xE0, 0x08, 0x07, 0x00, 0x00, 0x1C, + 0x08, 0x00, 0xF0, 0x60, 0x03, 0x83, 0x80, 0x0F, 0xFC, 0x00, 0x7F, 0xF0, + 0x01, 0xE0, 0xC0, 0x07, 0x03, 0x00, 0x1C, 0x08, 0x00, 0xF0, 0x20, 0x03, + 0x80, 0x00, 0x0E, 0x00, 0x00, 0x78, 0x00, 0x81, 0xE0, 0x06, 0x07, 0x00, + 0x38, 0x1C, 0x03, 0xC0, 0xFF, 0xFF, 0x0F, 0xFF, 0xFC, 0x00, 0x07, 0xFF, + 0xFC, 0x07, 0xFF, 0xF0, 0x1E, 0x01, 0xC0, 0x78, 0x02, 0x01, 0xE0, 0x08, + 0x07, 0x00, 0x20, 0x1C, 0x00, 0x00, 0xF0, 0x20, 0x03, 0x81, 0x80, 0x0E, + 0x0C, 0x00, 0x7F, 0xF0, 0x01, 0xFF, 0xC0, 0x07, 0x03, 0x00, 0x1C, 0x0C, + 0x00, 0xF0, 0x20, 0x03, 0xC0, 0x00, 0x0E, 0x00, 0x00, 0x78, 0x00, 0x01, + 0xE0, 0x00, 0x07, 0x00, 0x00, 0x1C, 0x00, 0x00, 0xF8, 0x00, 0x0F, 0xF8, + 0x00, 0x00, 0x00, 0x3F, 0x02, 0x01, 0xFF, 0x88, 0x0F, 0x81, 0xF0, 0x3C, + 0x01, 0xE0, 0xF0, 0x01, 0xC3, 0xC0, 0x01, 0x0F, 0x80, 0x02, 0x1E, 0x00, + 0x00, 0x7C, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x07, 0xC0, 0x00, + 0x0F, 0x00, 0x3F, 0xFE, 0x00, 0x1E, 0x3C, 0x00, 0x38, 0x78, 0x00, 0x70, + 0xF0, 0x00, 0xE0, 0xE0, 0x01, 0xC1, 0xE0, 0x07, 0x01, 0xE0, 0x0E, 0x01, + 0xF0, 0x3C, 0x01, 0xFF, 0xF0, 0x00, 0xFF, 0x00, 0x00, 0x07, 0xFC, 0x3F, + 0xE0, 0x3E, 0x00, 0xF0, 0x07, 0x80, 0x1C, 0x00, 0xF0, 0x03, 0x80, 0x1C, + 0x00, 0xF0, 0x03, 0x80, 0x1E, 0x00, 0x70, 0x03, 0x80, 0x1E, 0x00, 0x70, + 0x03, 0x80, 0x1E, 0x00, 0x70, 0x03, 0x80, 0x1F, 0xFF, 0xF0, 0x03, 0xFF, + 0xFE, 0x00, 0x70, 0x03, 0xC0, 0x0E, 0x00, 0x70, 0x03, 0xC0, 0x0E, 0x00, + 0x70, 0x03, 0xC0, 0x0E, 0x00, 0x78, 0x03, 0xC0, 0x0E, 0x00, 0x78, 0x01, + 0xC0, 0x0E, 0x00, 0x78, 0x01, 0xC0, 0x0E, 0x00, 0x78, 0x03, 0xE0, 0x3F, + 0xE1, 0xFF, 0x00, 0x07, 0xFC, 0x07, 0xC0, 0x1E, 0x00, 0x78, 0x01, 0xC0, + 0x07, 0x00, 0x1C, 0x00, 0xF0, 0x03, 0x80, 0x0E, 0x00, 0x78, 0x01, 0xE0, + 0x07, 0x00, 0x1C, 0x00, 0xF0, 0x03, 0x80, 0x0E, 0x00, 0x78, 0x01, 0xE0, + 0x07, 0x00, 0x1C, 0x00, 0xF0, 0x0F, 0xF8, 0x00, 0x00, 0xFF, 0x80, 0x0F, + 0x00, 0x07, 0x80, 0x03, 0x80, 0x01, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, + 0x70, 0x00, 0x38, 0x00, 0x3C, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x0F, 0x00, + 0x07, 0x80, 0x03, 0x80, 0x01, 0xC0, 0x01, 0xE0, 0x00, 0xE0, 0x00, 0x70, + 0x1E, 0x78, 0x0F, 0x38, 0x07, 0xF8, 0x01, 0xF0, 0x00, 0x07, 0xFC, 0x7F, + 0x80, 0xF8, 0x0F, 0x00, 0x38, 0x07, 0x00, 0x3C, 0x07, 0x00, 0x1C, 0x06, + 0x00, 0x0E, 0x06, 0x00, 0x07, 0x0C, 0x00, 0x07, 0x8C, 0x00, 0x03, 0x9C, + 0x00, 0x01, 0xD8, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x73, + 0x80, 0x00, 0x39, 0xE0, 0x00, 0x3C, 0x78, 0x00, 0x1C, 0x1C, 0x00, 0x0E, + 0x0F, 0x00, 0x07, 0x03, 0x80, 0x07, 0x81, 0xE0, 0x03, 0x80, 0x70, 0x01, + 0xC0, 0x3C, 0x01, 0xE0, 0x1F, 0x03, 0xFE, 0x3F, 0xE0, 0x07, 0xFC, 0x00, + 0x1F, 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, + 0x01, 0xC0, 0x00, 0x3C, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x07, 0x80, + 0x00, 0x78, 0x00, 0x07, 0x00, 0x00, 0x70, 0x00, 0x0F, 0x00, 0x00, 0xE0, + 0x00, 0x0E, 0x00, 0x11, 0xE0, 0x03, 0x1E, 0x00, 0x61, 0xC0, 0x06, 0x1C, + 0x01, 0xE3, 0xFF, 0xFC, 0xFF, 0xFF, 0xC0, 0x07, 0xF0, 0x00, 0x7E, 0x03, + 0xE0, 0x01, 0xF0, 0x03, 0xC0, 0x03, 0xE0, 0x07, 0x80, 0x0F, 0x80, 0x1F, + 0x00, 0x37, 0x00, 0x2E, 0x00, 0x5E, 0x00, 0x5C, 0x01, 0xB8, 0x01, 0xB8, + 0x06, 0x70, 0x02, 0x78, 0x09, 0xE0, 0x04, 0x70, 0x33, 0xC0, 0x08, 0xE0, + 0xC7, 0x00, 0x31, 0xC1, 0x0E, 0x00, 0x43, 0x86, 0x3C, 0x00, 0x87, 0x18, + 0x70, 0x03, 0x0E, 0x20, 0xE0, 0x06, 0x1C, 0xC3, 0xC0, 0x08, 0x3B, 0x07, + 0x80, 0x10, 0x7C, 0x0E, 0x00, 0x60, 0x78, 0x1C, 0x00, 0x80, 0xE0, 0x78, + 0x03, 0x01, 0x80, 0xF0, 0x07, 0x03, 0x03, 0xE0, 0x3F, 0x84, 0x1F, 0xF0, + 0x00, 0x07, 0xC0, 0x3F, 0xC0, 0x78, 0x03, 0xE0, 0x0E, 0x00, 0x70, 0x03, + 0xC0, 0x18, 0x01, 0xF0, 0x0E, 0x00, 0x6C, 0x03, 0x00, 0x1B, 0x80, 0xC0, + 0x0C, 0xE0, 0x30, 0x03, 0x18, 0x1C, 0x00, 0xC7, 0x06, 0x00, 0x30, 0xC1, + 0x80, 0x18, 0x38, 0xE0, 0x06, 0x06, 0x30, 0x01, 0x81, 0x8C, 0x00, 0xC0, + 0x73, 0x00, 0x30, 0x0D, 0xC0, 0x0C, 0x03, 0xE0, 0x03, 0x00, 0x78, 0x01, + 0x80, 0x1E, 0x00, 0x60, 0x07, 0x00, 0x38, 0x00, 0xC0, 0x0E, 0x00, 0x30, + 0x0F, 0xE0, 0x04, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0xFF, 0xE0, 0x07, 0xC1, + 0xE0, 0x1E, 0x01, 0xE0, 0x78, 0x01, 0xC1, 0xE0, 0x03, 0xC7, 0x80, 0x07, + 0x9F, 0x00, 0x0F, 0x3C, 0x00, 0x1E, 0xF8, 0x00, 0x3D, 0xE0, 0x00, 0xFF, + 0xC0, 0x01, 0xEF, 0x80, 0x03, 0xDE, 0x00, 0x0F, 0xBC, 0x00, 0x1E, 0x78, + 0x00, 0x7C, 0xF0, 0x00, 0xF1, 0xE0, 0x03, 0xC1, 0xC0, 0x0F, 0x03, 0xC0, + 0x3C, 0x03, 0xC1, 0xF0, 0x03, 0xFF, 0x80, 0x01, 0xFC, 0x00, 0x00, 0x07, + 0xFF, 0xC0, 0x07, 0xFF, 0xC0, 0x0E, 0x0F, 0x80, 0x78, 0x1F, 0x01, 0xC0, + 0x3C, 0x07, 0x00, 0xF0, 0x1C, 0x03, 0xC0, 0xF0, 0x0F, 0x03, 0x80, 0x78, + 0x0E, 0x01, 0xE0, 0x78, 0x1F, 0x01, 0xFF, 0xF8, 0x07, 0x7F, 0x00, 0x1C, + 0x00, 0x00, 0xF0, 0x00, 0x03, 0x80, 0x00, 0x0E, 0x00, 0x00, 0x78, 0x00, + 0x01, 0xE0, 0x00, 0x07, 0x00, 0x00, 0x1C, 0x00, 0x00, 0xF0, 0x00, 0x0F, + 0xF0, 0x00, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0xFF, 0xE0, 0x03, 0xC1, 0xE0, + 0x1E, 0x01, 0xC0, 0x78, 0x03, 0xC1, 0xE0, 0x03, 0x87, 0x80, 0x07, 0x8F, + 0x00, 0x0F, 0x3C, 0x00, 0x1E, 0x78, 0x00, 0x3D, 0xE0, 0x00, 0x7B, 0xC0, + 0x01, 0xFF, 0x80, 0x03, 0xDE, 0x00, 0x07, 0xBC, 0x00, 0x1F, 0x78, 0x00, + 0x3C, 0xF0, 0x00, 0xF1, 0xE0, 0x01, 0xE3, 0xC0, 0x07, 0x83, 0x80, 0x1E, + 0x07, 0x80, 0x78, 0x07, 0x01, 0xC0, 0x03, 0xDE, 0x00, 0x01, 0xC0, 0x00, + 0x06, 0x00, 0x00, 0x18, 0x00, 0x10, 0x7F, 0xC0, 0xC3, 0xFF, 0xFF, 0x08, + 0x07, 0xF0, 0x00, 0x07, 0xFF, 0x80, 0x0F, 0xFF, 0x00, 0x78, 0x3C, 0x03, + 0xC0, 0xF0, 0x1E, 0x07, 0x80, 0xE0, 0x3C, 0x07, 0x01, 0xE0, 0x78, 0x1E, + 0x03, 0x83, 0xF0, 0x1F, 0xFE, 0x01, 0xFF, 0xC0, 0x0F, 0x38, 0x00, 0x71, + 0xE0, 0x03, 0x87, 0x00, 0x3C, 0x38, 0x01, 0xC1, 0xE0, 0x0E, 0x07, 0x00, + 0xF0, 0x3C, 0x07, 0x81, 0xE0, 0x38, 0x07, 0x01, 0xC0, 0x3C, 0x1E, 0x00, + 0xF3, 0xFC, 0x07, 0xC0, 0x00, 0xF8, 0x81, 0xFF, 0xC1, 0xE1, 0xE1, 0xE0, + 0x70, 0xF0, 0x10, 0x78, 0x08, 0x3C, 0x00, 0x1F, 0x00, 0x07, 0x80, 0x01, + 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0xF8, + 0x80, 0x3C, 0x40, 0x1E, 0x20, 0x0F, 0x38, 0x07, 0x9E, 0x07, 0x8F, 0x87, + 0x84, 0x7F, 0xC2, 0x0F, 0x80, 0x3F, 0xFF, 0xF7, 0xFF, 0xFF, 0x70, 0x78, + 0x76, 0x07, 0x02, 0xC0, 0x70, 0x28, 0x0F, 0x02, 0x00, 0xF0, 0x00, 0x0E, + 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x03, + 0xC0, 0x00, 0x3C, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x07, 0x80, 0x00, + 0x70, 0x00, 0x07, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x01, 0xF0, 0x00, + 0xFF, 0xE0, 0x00, 0x7F, 0xE0, 0xFE, 0x3F, 0x00, 0x78, 0x3C, 0x00, 0x60, + 0xF0, 0x01, 0x81, 0xE0, 0x03, 0x03, 0xC0, 0x06, 0x07, 0x00, 0x08, 0x1E, + 0x00, 0x30, 0x3C, 0x00, 0x60, 0x70, 0x00, 0x81, 0xE0, 0x01, 0x03, 0xC0, + 0x06, 0x07, 0x80, 0x0C, 0x0E, 0x00, 0x10, 0x3C, 0x00, 0x60, 0x78, 0x00, + 0xC0, 0xF0, 0x01, 0x01, 0xE0, 0x06, 0x03, 0xC0, 0x08, 0x03, 0xC0, 0x30, + 0x07, 0xC1, 0xC0, 0x07, 0xFF, 0x00, 0x03, 0xF8, 0x00, 0x00, 0xFF, 0x01, + 0xFB, 0xE0, 0x07, 0x8E, 0x00, 0x18, 0x78, 0x01, 0x83, 0xC0, 0x0C, 0x1E, + 0x00, 0xC0, 0xF0, 0x06, 0x03, 0x80, 0x60, 0x1C, 0x02, 0x00, 0xE0, 0x30, + 0x07, 0x83, 0x00, 0x3C, 0x10, 0x01, 0xE1, 0x80, 0x07, 0x08, 0x00, 0x38, + 0x80, 0x01, 0xC4, 0x00, 0x0E, 0x40, 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, + 0x0E, 0x00, 0x00, 0x70, 0x00, 0x03, 0x00, 0x00, 0x10, 0x00, 0x00, 0xFF, + 0x3F, 0xC3, 0xFB, 0xE0, 0x78, 0x07, 0x8E, 0x03, 0xC0, 0x18, 0x78, 0x0E, + 0x01, 0x83, 0xC0, 0x70, 0x0C, 0x1E, 0x03, 0x80, 0x40, 0xF0, 0x3C, 0x06, + 0x03, 0x81, 0xE0, 0x60, 0x1C, 0x17, 0x83, 0x00, 0xE0, 0xBC, 0x30, 0x07, + 0x09, 0xE1, 0x00, 0x38, 0x47, 0x18, 0x01, 0xE4, 0x38, 0x80, 0x0F, 0x21, + 0xCC, 0x00, 0x7A, 0x0E, 0x40, 0x01, 0xD0, 0x76, 0x00, 0x0F, 0x03, 0xA0, + 0x00, 0x78, 0x1F, 0x00, 0x03, 0x80, 0xF0, 0x00, 0x1C, 0x07, 0x00, 0x00, + 0xC0, 0x38, 0x00, 0x06, 0x00, 0x80, 0x00, 0x20, 0x04, 0x00, 0x00, 0x0F, + 0xF8, 0x7F, 0x03, 0xE0, 0x3E, 0x01, 0xC0, 0x18, 0x01, 0xE0, 0x30, 0x01, + 0xE0, 0x60, 0x00, 0xE0, 0xC0, 0x00, 0xF1, 0xC0, 0x00, 0x71, 0x80, 0x00, + 0x7B, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00, + 0x3C, 0x00, 0x00, 0x7E, 0x00, 0x00, 0xCE, 0x00, 0x01, 0x8F, 0x00, 0x01, + 0x07, 0x00, 0x03, 0x07, 0x00, 0x06, 0x07, 0x80, 0x0C, 0x03, 0x80, 0x18, + 0x03, 0xC0, 0x78, 0x03, 0xE0, 0xFE, 0x1F, 0xF8, 0xFF, 0x87, 0xE7, 0xC0, + 0x38, 0x70, 0x06, 0x0E, 0x01, 0x81, 0xE0, 0x30, 0x1C, 0x0C, 0x03, 0x83, + 0x00, 0x78, 0xC0, 0x07, 0x30, 0x00, 0xE4, 0x00, 0x1D, 0x80, 0x03, 0xE0, + 0x00, 0x38, 0x00, 0x0F, 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x07, 0x00, + 0x01, 0xE0, 0x00, 0x38, 0x00, 0x07, 0x00, 0x01, 0xE0, 0x00, 0x7C, 0x00, + 0x3F, 0xF0, 0x00, 0x07, 0xFF, 0xFC, 0x3F, 0xFF, 0xE0, 0xE0, 0x0F, 0x82, + 0x00, 0x3C, 0x18, 0x01, 0xE0, 0x40, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, + 0xC0, 0x00, 0x0E, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, + 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x1C, 0x00, 0x00, 0xF0, 0x00, 0x07, + 0x80, 0x00, 0x3C, 0x00, 0xC1, 0xE0, 0x02, 0x0F, 0x00, 0x18, 0x38, 0x01, + 0xE1, 0xFF, 0xFF, 0x0F, 0xFF, 0xFC, 0x00, 0x01, 0xF8, 0x0C, 0x00, 0xC0, + 0x06, 0x00, 0x30, 0x01, 0x80, 0x18, 0x00, 0xC0, 0x06, 0x00, 0x30, 0x03, + 0x00, 0x18, 0x00, 0xC0, 0x06, 0x00, 0x60, 0x03, 0x00, 0x18, 0x01, 0xC0, + 0x0C, 0x00, 0x60, 0x03, 0x00, 0x30, 0x01, 0x80, 0x0C, 0x00, 0x60, 0x06, + 0x00, 0x30, 0x01, 0xF8, 0x00, 0xE0, 0x0E, 0x00, 0x60, 0x07, 0x00, 0x30, + 0x03, 0x80, 0x18, 0x01, 0xC0, 0x0C, 0x00, 0xC0, 0x0E, 0x00, 0x60, 0x07, + 0x00, 0x30, 0x03, 0x80, 0x18, 0x01, 0xC0, 0x0C, 0x00, 0xC0, 0x0E, 0x00, + 0x60, 0x07, 0x00, 0x30, 0x03, 0xF0, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, + 0x0E, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x01, 0x80, 0x18, 0x01, 0x80, + 0x18, 0x03, 0x00, 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, 0x60, 0x06, 0x00, + 0x60, 0x06, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x0F, 0xC0, 0x03, 0x80, + 0x07, 0x00, 0x1F, 0x00, 0x36, 0x00, 0xCE, 0x01, 0x8C, 0x06, 0x1C, 0x0C, + 0x18, 0x38, 0x38, 0x60, 0x31, 0xC0, 0x73, 0x00, 0x6E, 0x00, 0xE0, 0xFF, + 0xFF, 0xFF, 0xFF, 0xF0, 0xE3, 0x8F, 0x0E, 0x18, 0x30, 0x01, 0xEC, 0x0E, + 0x58, 0x30, 0x70, 0xE0, 0xC3, 0x81, 0x86, 0x07, 0x1C, 0x0C, 0x38, 0x18, + 0xE0, 0x71, 0xC0, 0xE3, 0x83, 0x87, 0x0B, 0x2F, 0x36, 0xCF, 0xCF, 0x1F, + 0x1C, 0x00, 0x03, 0x00, 0x1F, 0x00, 0x07, 0x00, 0x07, 0x00, 0x06, 0x00, + 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0C, 0x00, 0x1C, 0x7C, 0x1C, 0xFE, + 0x19, 0x8F, 0x1A, 0x07, 0x3C, 0x07, 0x38, 0x07, 0x38, 0x07, 0x70, 0x0E, + 0x70, 0x0E, 0x70, 0x1C, 0x60, 0x18, 0xE0, 0x30, 0xE0, 0x60, 0xE1, 0xC0, + 0x3F, 0x00, 0x01, 0xF0, 0x38, 0xC3, 0x8E, 0x78, 0x73, 0x80, 0x3C, 0x01, + 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x47, 0x84, 0x3F, + 0xC0, 0x7C, 0x00, 0x00, 0x01, 0x80, 0x07, 0xC0, 0x00, 0xE0, 0x00, 0x60, + 0x00, 0x30, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0C, 0x00, 0x06, 0x00, 0xF7, + 0x01, 0xC7, 0x81, 0xC3, 0x81, 0xC1, 0xC1, 0xE0, 0xE0, 0xE0, 0x60, 0xF0, + 0x30, 0x78, 0x38, 0x78, 0x18, 0x3C, 0x0C, 0x1E, 0x0C, 0x0F, 0x0E, 0x27, + 0xCB, 0x21, 0xF9, 0xE0, 0x78, 0xE0, 0x00, 0xF0, 0x1C, 0xC3, 0x86, 0x38, + 0x33, 0xC3, 0x1C, 0x31, 0xE3, 0x1F, 0xE0, 0xF0, 0x07, 0x80, 0x3C, 0x01, + 0xE0, 0x47, 0x84, 0x3F, 0xC0, 0x7C, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x33, + 0x00, 0x06, 0x30, 0x00, 0xC0, 0x00, 0x0C, 0x00, 0x01, 0xC0, 0x00, 0x18, + 0x00, 0x01, 0x80, 0x00, 0x38, 0x00, 0x3F, 0xF8, 0x03, 0xFF, 0x80, 0x03, + 0x00, 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0x70, 0x00, 0x06, 0x00, 0x00, + 0x60, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x0C, 0x00, 0x00, 0xC0, 0x00, + 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x18, 0x00, 0x01, 0x80, 0x00, 0x18, 0x00, + 0x03, 0x00, 0x00, 0x30, 0x00, 0xC6, 0x00, 0x0C, 0xC0, 0x00, 0x78, 0x00, + 0x00, 0x01, 0xF8, 0x07, 0x1F, 0x0E, 0x0F, 0x0C, 0x0E, 0x18, 0x0E, 0x18, + 0x0E, 0x18, 0x1E, 0x18, 0x3C, 0x0C, 0x78, 0x07, 0xE0, 0x08, 0x00, 0x18, + 0x00, 0x1E, 0x00, 0x0F, 0xE0, 0x13, 0xF0, 0x60, 0x78, 0xC0, 0x38, 0xC0, + 0x18, 0xC0, 0x18, 0xC0, 0x30, 0x60, 0x60, 0x3F, 0x80, 0x03, 0x00, 0x1F, + 0x00, 0x07, 0x00, 0x07, 0x00, 0x06, 0x00, 0x06, 0x00, 0x0E, 0x00, 0x0E, + 0x00, 0x0C, 0x00, 0x1C, 0x38, 0x1C, 0x7C, 0x1C, 0xCC, 0x19, 0x0C, 0x3A, + 0x0C, 0x3C, 0x1C, 0x3C, 0x18, 0x38, 0x18, 0x70, 0x38, 0x70, 0x38, 0x70, + 0x30, 0x60, 0x72, 0xE0, 0x76, 0xE0, 0x7C, 0xC0, 0x70, 0x03, 0x03, 0xC1, + 0xE0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x7E, 0x0F, 0x03, 0x81, 0x81, + 0xC0, 0xE0, 0x70, 0x30, 0x38, 0x1C, 0x1C, 0x4C, 0x47, 0xC3, 0xC0, 0x00, + 0x0C, 0x00, 0x3C, 0x00, 0x78, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x18, 0x03, 0xF0, 0x00, 0xE0, 0x01, 0x80, 0x03, 0x00, + 0x0E, 0x00, 0x1C, 0x00, 0x30, 0x00, 0x60, 0x01, 0xC0, 0x03, 0x80, 0x06, + 0x00, 0x0C, 0x00, 0x38, 0x00, 0x70, 0x00, 0xC0, 0x03, 0x80, 0x06, 0x00, + 0x0C, 0x06, 0x30, 0x0C, 0xC0, 0x0F, 0x00, 0x00, 0x03, 0x00, 0x3E, 0x00, + 0x1C, 0x00, 0x38, 0x00, 0x60, 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0C, + 0x00, 0x38, 0xFC, 0x70, 0x60, 0xE1, 0x81, 0x86, 0x07, 0x10, 0x0E, 0x40, + 0x1B, 0x80, 0x3F, 0x00, 0xE7, 0x01, 0xCE, 0x03, 0x0C, 0x06, 0x1C, 0x5C, + 0x1D, 0x38, 0x3E, 0x60, 0x38, 0x03, 0x1F, 0x07, 0x07, 0x06, 0x0E, 0x0E, + 0x0E, 0x0C, 0x1C, 0x1C, 0x18, 0x38, 0x38, 0x38, 0x30, 0x70, 0x70, 0x70, + 0x64, 0xE4, 0xE8, 0xF0, 0xE0, 0x00, 0x06, 0x18, 0x1E, 0x3E, 0x3C, 0x3F, + 0x0E, 0x4C, 0x47, 0x0C, 0x8C, 0x8E, 0x1D, 0x0D, 0x0E, 0x1E, 0x1A, 0x0E, + 0x1C, 0x1E, 0x0C, 0x3C, 0x1C, 0x1C, 0x38, 0x38, 0x1C, 0x38, 0x38, 0x1C, + 0x30, 0x38, 0x18, 0x70, 0x30, 0x39, 0x70, 0x70, 0x32, 0x60, 0x70, 0x3C, + 0x60, 0x60, 0x38, 0x06, 0x0E, 0x1F, 0x1F, 0x83, 0x99, 0xC1, 0x98, 0xC1, + 0xD8, 0xE0, 0xE8, 0x70, 0x78, 0x30, 0x38, 0x38, 0x3C, 0x1C, 0x1C, 0x0E, + 0x0E, 0x06, 0x0E, 0x03, 0x17, 0x01, 0xB3, 0x80, 0xF1, 0x80, 0x70, 0x01, + 0xF0, 0x0E, 0x38, 0x38, 0x30, 0xE0, 0x73, 0x80, 0xEE, 0x01, 0xDC, 0x03, + 0xF8, 0x0F, 0xE0, 0x1D, 0xC0, 0x3B, 0x80, 0xE7, 0x03, 0x8E, 0x06, 0x0E, + 0x38, 0x07, 0xC0, 0x00, 0x00, 0xE7, 0xC0, 0x7C, 0xFE, 0x01, 0xD1, 0xF0, + 0x1E, 0x0F, 0x01, 0xC0, 0xF0, 0x38, 0x0F, 0x03, 0x80, 0xF0, 0x38, 0x0E, + 0x03, 0x01, 0xE0, 0x70, 0x1C, 0x07, 0x03, 0xC0, 0x60, 0x78, 0x06, 0x0F, + 0x00, 0xE1, 0xC0, 0x0F, 0xF0, 0x00, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xC0, + 0x00, 0x1C, 0x00, 0x01, 0x80, 0x00, 0x38, 0x00, 0x0F, 0xF0, 0x00, 0x00, + 0xF7, 0x03, 0xCE, 0x0F, 0x06, 0x1E, 0x06, 0x1C, 0x04, 0x3C, 0x04, 0x78, + 0x04, 0x78, 0x0C, 0xF0, 0x08, 0xF0, 0x18, 0xF0, 0x38, 0xF0, 0xF0, 0xF9, + 0x70, 0x7E, 0x70, 0x3C, 0x70, 0x00, 0x60, 0x00, 0xE0, 0x00, 0xE0, 0x00, + 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x0F, 0xF0, 0x7C, 0x70, 0xE7, 0xC7, 0x4C, + 0x34, 0x01, 0xA0, 0x1E, 0x00, 0xF0, 0x07, 0x00, 0x78, 0x03, 0x80, 0x1C, + 0x00, 0xC0, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x00, 0x07, 0x88, 0x63, 0x86, + 0x0C, 0x30, 0x21, 0xC1, 0x0E, 0x00, 0x38, 0x00, 0xE0, 0x03, 0x80, 0x1C, + 0x10, 0x60, 0x83, 0x06, 0x18, 0x71, 0x82, 0x78, 0x00, 0x02, 0x03, 0x03, + 0x07, 0xF7, 0xF8, 0xE0, 0x60, 0x70, 0x38, 0x1C, 0x0C, 0x0E, 0x07, 0x03, + 0x01, 0x91, 0xC8, 0xF8, 0x78, 0x00, 0x1C, 0x0D, 0xF8, 0x38, 0x60, 0x70, + 0xC1, 0xC3, 0x83, 0x87, 0x07, 0x0C, 0x1E, 0x38, 0x78, 0x70, 0xB0, 0xE2, + 0x61, 0x8D, 0xC7, 0x33, 0x2C, 0xC6, 0x5F, 0x0F, 0x38, 0x1C, 0x00, 0x18, + 0x1B, 0xE0, 0x73, 0x81, 0xC6, 0x03, 0x18, 0x0C, 0x70, 0x21, 0xC1, 0x83, + 0x0C, 0x0C, 0x20, 0x31, 0x00, 0xC8, 0x03, 0x40, 0x0E, 0x00, 0x30, 0x00, + 0x80, 0x00, 0x18, 0x04, 0x1B, 0xE0, 0x30, 0x71, 0x80, 0xC1, 0xC6, 0x07, + 0x01, 0x1C, 0x2C, 0x08, 0x70, 0xB0, 0x20, 0xC4, 0xC1, 0x03, 0x21, 0x84, + 0x0D, 0x86, 0x20, 0x34, 0x19, 0x00, 0xE0, 0x68, 0x03, 0x81, 0xA0, 0x0C, + 0x07, 0x00, 0x30, 0x18, 0x00, 0x80, 0x40, 0x00, 0x03, 0x07, 0x0F, 0x8F, + 0x13, 0x93, 0x01, 0xB0, 0x01, 0xE0, 0x01, 0xC0, 0x00, 0xC0, 0x00, 0xC0, + 0x01, 0xC0, 0x03, 0xE0, 0x02, 0x60, 0x04, 0x62, 0x08, 0x64, 0xF0, 0x7C, + 0xE0, 0x30, 0x06, 0x06, 0x3F, 0x07, 0x07, 0x07, 0x07, 0x03, 0x03, 0x81, + 0x03, 0x82, 0x01, 0x82, 0x01, 0xC4, 0x01, 0xC4, 0x01, 0xC8, 0x00, 0xC8, + 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xE0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0x80, + 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x78, 0x00, 0x70, 0x00, 0x1F, 0xFC, + 0x7F, 0xE1, 0x01, 0x08, 0x08, 0x00, 0x40, 0x02, 0x00, 0x10, 0x00, 0x80, + 0x06, 0x00, 0x10, 0x00, 0x80, 0x04, 0x00, 0x38, 0x01, 0xF0, 0x0B, 0xE0, + 0x01, 0xC6, 0x03, 0x98, 0x03, 0x80, 0x00, 0x70, 0x0C, 0x01, 0x80, 0x38, + 0x03, 0x80, 0x30, 0x07, 0x00, 0x70, 0x07, 0x00, 0x60, 0x0E, 0x00, 0xE0, + 0x0C, 0x01, 0xC0, 0x1C, 0x07, 0x80, 0x30, 0x04, 0x00, 0x20, 0x03, 0x00, + 0x30, 0x07, 0x00, 0x70, 0x06, 0x00, 0x60, 0x0E, 0x00, 0xE0, 0x0C, 0x00, + 0xC0, 0x07, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0xC0, 0x06, + 0x00, 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, 0x70, 0x07, 0x00, 0x70, 0x06, + 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0C, 0x00, 0x40, 0x04, 0x00, 0xC0, 0x1E, + 0x03, 0x80, 0x38, 0x03, 0x00, 0x70, 0x07, 0x00, 0x70, 0x06, 0x00, 0xE0, + 0x0E, 0x00, 0xC0, 0x1C, 0x01, 0x80, 0x70, 0x00, 0x1E, 0x00, 0x3F, 0xE1, + 0xF8, 0x7F, 0xC0, 0x07, 0x80}; + +const GFXglyph FreeSerifItalic18pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 9, 0, 1}, // 0x20 ' ' + {0, 10, 23, 12, 1, -22}, // 0x21 '!' + {29, 12, 9, 12, 4, -22}, // 0x22 '"' + {43, 19, 23, 17, 0, -22}, // 0x23 '#' + {98, 15, 29, 17, 1, -25}, // 0x24 '$' + {153, 25, 23, 29, 3, -22}, // 0x25 '%' + {225, 22, 23, 27, 3, -22}, // 0x26 '&' + {289, 5, 9, 7, 4, -22}, // 0x27 ''' + {295, 9, 29, 12, 1, -22}, // 0x28 '(' + {328, 9, 29, 12, 1, -22}, // 0x29 ')' + {361, 12, 14, 18, 5, -22}, // 0x2A '*' + {382, 16, 18, 24, 4, -17}, // 0x2B '+' + {418, 5, 8, 9, -1, -2}, // 0x2C ',' + {423, 8, 2, 12, 2, -8}, // 0x2D '-' + {425, 4, 4, 9, 1, -3}, // 0x2E '.' + {427, 16, 23, 10, 0, -22}, // 0x2F '/' + {473, 17, 24, 17, 1, -23}, // 0x30 '0' + {524, 12, 24, 17, 2, -23}, // 0x31 '1' + {560, 16, 23, 17, 1, -22}, // 0x32 '2' + {606, 17, 24, 18, 0, -23}, // 0x33 '3' + {657, 17, 24, 17, 0, -23}, // 0x34 '4' + {708, 16, 23, 18, 0, -22}, // 0x35 '5' + {754, 17, 24, 18, 1, -23}, // 0x36 '6' + {805, 16, 23, 17, 3, -22}, // 0x37 '7' + {851, 16, 24, 18, 1, -23}, // 0x38 '8' + {899, 16, 24, 17, 1, -23}, // 0x39 '9' + {947, 7, 15, 9, 2, -14}, // 0x3A ':' + {961, 9, 20, 9, 1, -14}, // 0x3B ';' + {984, 18, 18, 20, 2, -17}, // 0x3C '<' + {1025, 18, 9, 23, 3, -12}, // 0x3D '=' + {1046, 18, 18, 20, 2, -17}, // 0x3E '>' + {1087, 12, 23, 16, 4, -22}, // 0x3F '?' + {1122, 24, 23, 27, 2, -22}, // 0x40 '@' + {1191, 21, 23, 23, 0, -22}, // 0x41 'A' + {1252, 21, 23, 21, 0, -22}, // 0x42 'B' + {1313, 21, 23, 21, 2, -22}, // 0x43 'C' + {1374, 25, 23, 25, 0, -22}, // 0x44 'D' + {1446, 22, 23, 20, 0, -22}, // 0x45 'E' + {1510, 22, 23, 20, 0, -22}, // 0x46 'F' + {1574, 23, 23, 24, 2, -22}, // 0x47 'G' + {1641, 27, 23, 25, 0, -22}, // 0x48 'H' + {1719, 14, 23, 11, 0, -22}, // 0x49 'I' + {1760, 17, 23, 15, 0, -22}, // 0x4A 'J' + {1809, 25, 23, 22, 0, -22}, // 0x4B 'K' + {1881, 20, 23, 20, 0, -22}, // 0x4C 'L' + {1939, 31, 23, 29, 0, -22}, // 0x4D 'M' + {2029, 26, 23, 24, 0, -22}, // 0x4E 'N' + {2104, 23, 23, 23, 1, -22}, // 0x4F 'O' + {2171, 22, 23, 20, 0, -22}, // 0x50 'P' + {2235, 23, 29, 23, 1, -22}, // 0x51 'Q' + {2319, 21, 23, 22, 0, -22}, // 0x52 'R' + {2380, 17, 23, 16, 0, -22}, // 0x53 'S' + {2429, 20, 23, 21, 3, -22}, // 0x54 'T' + {2487, 23, 23, 25, 4, -22}, // 0x55 'U' + {2554, 21, 23, 23, 5, -22}, // 0x56 'V' + {2615, 29, 23, 31, 5, -22}, // 0x57 'W' + {2699, 24, 23, 23, 0, -22}, // 0x58 'X' + {2768, 19, 23, 21, 4, -22}, // 0x59 'Y' + {2823, 22, 23, 20, 0, -22}, // 0x5A 'Z' + {2887, 13, 28, 14, 1, -22}, // 0x5B '[' + {2933, 12, 23, 17, 4, -22}, // 0x5C '\' + {2968, 12, 28, 14, 1, -22}, // 0x5D ']' + {3010, 15, 13, 15, 0, -22}, // 0x5E '^' + {3035, 18, 2, 17, 0, 3}, // 0x5F '_' + {3040, 6, 6, 9, 5, -22}, // 0x60 '`' + {3045, 15, 15, 17, 1, -14}, // 0x61 'a' + {3074, 16, 24, 17, 1, -23}, // 0x62 'b' + {3122, 13, 15, 14, 1, -14}, // 0x63 'c' + {3147, 17, 24, 18, 1, -23}, // 0x64 'd' + {3198, 13, 15, 14, 1, -14}, // 0x65 'e' + {3223, 20, 31, 15, -3, -23}, // 0x66 'f' + {3301, 16, 22, 15, -1, -14}, // 0x67 'g' + {3345, 16, 24, 17, 1, -23}, // 0x68 'h' + {3393, 9, 23, 9, 1, -22}, // 0x69 'i' + {3419, 15, 30, 10, -3, -22}, // 0x6A 'j' + {3476, 15, 24, 16, 1, -23}, // 0x6B 'k' + {3521, 8, 25, 9, 1, -23}, // 0x6C 'l' + {3546, 24, 15, 25, 0, -14}, // 0x6D 'm' + {3591, 17, 15, 17, 0, -14}, // 0x6E 'n' + {3623, 15, 15, 17, 1, -14}, // 0x6F 'o' + {3652, 20, 22, 16, -3, -14}, // 0x70 'p' + {3707, 16, 22, 17, 1, -14}, // 0x71 'q' + {3751, 13, 15, 13, 1, -14}, // 0x72 'r' + {3776, 13, 15, 12, 0, -14}, // 0x73 's' + {3801, 9, 18, 8, 1, -17}, // 0x74 't' + {3822, 15, 15, 17, 1, -14}, // 0x75 'u' + {3851, 14, 15, 16, 2, -14}, // 0x76 'v' + {3878, 22, 15, 24, 1, -14}, // 0x77 'w' + {3920, 16, 15, 15, -1, -14}, // 0x78 'x' + {3950, 16, 22, 16, 0, -14}, // 0x79 'y' + {3994, 14, 18, 14, 0, -14}, // 0x7A 'z' + {4026, 12, 30, 14, 2, -23}, // 0x7B '{' + {4071, 2, 23, 10, 4, -22}, // 0x7C '|' + {4077, 12, 31, 14, 0, -24}, // 0x7D '}' + {4124, 17, 4, 19, 1, -10}}; // 0x7E '~' + +const GFXfont FreeSerifItalic18pt7b PROGMEM = { + (uint8_t *)FreeSerifItalic18pt7bBitmaps, + (GFXglyph *)FreeSerifItalic18pt7bGlyphs, 0x20, 0x7E, 42}; + +// Approx. 4805 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifItalic24pt7b.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifItalic24pt7b.h new file mode 100644 index 0000000..98233a7 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifItalic24pt7b.h @@ -0,0 +1,739 @@ +#pragma once +#include + +const uint8_t FreeSerifItalic24pt7bBitmaps[] PROGMEM = { + 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x01, 0xF0, 0x1E, 0x01, 0xE0, 0x1C, + 0x01, 0xC0, 0x3C, 0x03, 0x80, 0x38, 0x03, 0x80, 0x30, 0x07, 0x00, 0x60, + 0x06, 0x00, 0x60, 0x04, 0x00, 0x40, 0x0C, 0x00, 0x80, 0x08, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0xF8, 0x0F, 0x80, 0xF8, 0x07, 0x00, + 0x38, 0x1D, 0xE0, 0x77, 0x83, 0xDC, 0x0E, 0x70, 0x39, 0xC1, 0xEE, 0x07, + 0x38, 0x1C, 0xC0, 0x63, 0x01, 0x8C, 0x06, 0x20, 0x10, 0x00, 0x06, 0x03, + 0x00, 0x07, 0x03, 0x80, 0x03, 0x81, 0xC0, 0x03, 0x81, 0xC0, 0x01, 0xC0, + 0xE0, 0x00, 0xE0, 0x70, 0x00, 0xE0, 0x70, 0x00, 0x70, 0x38, 0x00, 0x30, + 0x18, 0x00, 0x38, 0x1C, 0x03, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0xF0, 0x0E, + 0x07, 0x00, 0x06, 0x03, 0x00, 0x07, 0x03, 0x80, 0x03, 0x81, 0xC0, 0x03, + 0x81, 0xC0, 0x01, 0xC0, 0xE0, 0x00, 0xE0, 0x70, 0x1F, 0xFF, 0xFF, 0x8F, + 0xFF, 0xFF, 0x80, 0x70, 0x38, 0x00, 0x38, 0x1C, 0x00, 0x1C, 0x0C, 0x00, + 0x1C, 0x0E, 0x00, 0x0E, 0x07, 0x00, 0x0E, 0x07, 0x00, 0x07, 0x03, 0x80, + 0x03, 0x81, 0xC0, 0x03, 0x81, 0xC0, 0x01, 0xC0, 0xE0, 0x00, 0x00, 0x01, + 0x00, 0x00, 0x18, 0x00, 0x00, 0xC0, 0x00, 0xFF, 0x80, 0x1C, 0x2F, 0x01, + 0x83, 0x3C, 0x1C, 0x18, 0xE1, 0xC0, 0xC3, 0x0E, 0x06, 0x18, 0x70, 0x60, + 0x83, 0x83, 0x04, 0x1E, 0x18, 0x00, 0xF8, 0xC0, 0x03, 0xEC, 0x00, 0x0F, + 0xE0, 0x00, 0x3F, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xF0, 0x00, 0x0F, 0xC0, + 0x00, 0x7F, 0x00, 0x03, 0x7C, 0x00, 0x19, 0xE0, 0x01, 0x87, 0x80, 0x0C, + 0x3C, 0x00, 0x60, 0xE2, 0x03, 0x07, 0x10, 0x30, 0x39, 0x81, 0x81, 0xCE, + 0x0C, 0x0C, 0x70, 0x60, 0xE3, 0xC6, 0x06, 0x0F, 0x30, 0x60, 0x1F, 0x9E, + 0x00, 0x3F, 0x80, 0x00, 0xC0, 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, + 0x80, 0x00, 0x01, 0xF0, 0x00, 0xC0, 0x03, 0xFE, 0x01, 0xE0, 0x03, 0xC7, + 0x83, 0xE0, 0x03, 0xC0, 0x7F, 0x60, 0x03, 0xC0, 0x20, 0x70, 0x01, 0xC0, + 0x10, 0x30, 0x01, 0xE0, 0x08, 0x38, 0x00, 0xE0, 0x04, 0x18, 0x00, 0xF0, + 0x02, 0x1C, 0x00, 0x70, 0x02, 0x0C, 0x00, 0x38, 0x01, 0x0E, 0x00, 0x1C, + 0x01, 0x8E, 0x00, 0x0E, 0x00, 0x86, 0x00, 0x07, 0x00, 0x87, 0x03, 0xE1, + 0x80, 0xC3, 0x07, 0xFC, 0xE1, 0xC3, 0x87, 0xC6, 0x3F, 0x81, 0x87, 0x81, + 0x8F, 0x81, 0xC7, 0x80, 0x40, 0x00, 0xC3, 0xC0, 0x20, 0x00, 0xE3, 0xC0, + 0x10, 0x00, 0x61, 0xC0, 0x08, 0x00, 0x61, 0xE0, 0x04, 0x00, 0x70, 0xF0, + 0x06, 0x00, 0x30, 0x70, 0x02, 0x00, 0x38, 0x38, 0x03, 0x00, 0x18, 0x1C, + 0x01, 0x00, 0x1C, 0x0E, 0x01, 0x80, 0x0C, 0x07, 0x01, 0x80, 0x0E, 0x01, + 0xC3, 0x80, 0x06, 0x00, 0x7F, 0x80, 0x06, 0x00, 0x1F, 0x00, 0x07, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x71, + 0xC0, 0x00, 0x01, 0xC3, 0x80, 0x00, 0x0E, 0x0E, 0x00, 0x00, 0x38, 0x38, + 0x00, 0x01, 0xE0, 0xE0, 0x00, 0x07, 0x87, 0x00, 0x00, 0x1E, 0x18, 0x00, + 0x00, 0x78, 0xC0, 0x00, 0x01, 0xE6, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, + 0x1F, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x7F, + 0xC1, 0xFE, 0x03, 0x9F, 0x03, 0xE0, 0x3C, 0x3C, 0x07, 0x01, 0xE0, 0xF8, + 0x1C, 0x0F, 0x03, 0xE0, 0xE0, 0x7C, 0x07, 0x83, 0x01, 0xE0, 0x1F, 0x1C, + 0x07, 0x80, 0x7C, 0x60, 0x3E, 0x00, 0xFB, 0x00, 0xF8, 0x03, 0xFC, 0x03, + 0xE0, 0x07, 0xE0, 0x0F, 0x80, 0x1F, 0x00, 0x3F, 0x00, 0x3E, 0x00, 0x7C, + 0x00, 0xFC, 0x01, 0xF8, 0x0F, 0xF0, 0x03, 0xF0, 0xF3, 0xF0, 0x87, 0xFF, + 0x07, 0xFC, 0x07, 0xF0, 0x07, 0xC0, 0x39, 0xDE, 0xE7, 0x3B, 0x9C, 0xC6, + 0x31, 0x00, 0x00, 0x10, 0x01, 0x00, 0x18, 0x01, 0x80, 0x18, 0x01, 0x80, + 0x1C, 0x00, 0xC0, 0x0E, 0x00, 0xE0, 0x07, 0x00, 0x78, 0x03, 0x80, 0x3C, + 0x01, 0xE0, 0x0E, 0x00, 0x70, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0E, 0x00, + 0x70, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x01, 0xC0, 0x0E, + 0x00, 0x30, 0x01, 0x80, 0x0C, 0x00, 0x60, 0x01, 0x80, 0x0C, 0x00, 0x60, + 0x01, 0x00, 0x0C, 0x00, 0x20, 0x00, 0x00, 0x80, 0x06, 0x00, 0x10, 0x00, + 0x80, 0x06, 0x00, 0x30, 0x00, 0xC0, 0x06, 0x00, 0x30, 0x01, 0x80, 0x0C, + 0x00, 0x70, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x01, 0xC0, + 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xC0, 0x1E, 0x00, 0xF0, 0x07, + 0x80, 0x38, 0x03, 0xC0, 0x1C, 0x00, 0xE0, 0x0E, 0x00, 0x60, 0x07, 0x00, + 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, 0x10, 0x01, 0x00, 0x00, 0x01, 0x00, + 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0xE1, 0x07, 0xE1, 0x0F, + 0xF1, 0x1F, 0x19, 0x30, 0x07, 0xC0, 0x03, 0x80, 0x0D, 0x60, 0x79, 0x3C, + 0xF1, 0x1F, 0xE1, 0x0F, 0xE1, 0x07, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, + 0x03, 0x00, 0x00, 0x38, 0x00, 0x00, 0x70, 0x00, 0x00, 0xE0, 0x00, 0x01, + 0xC0, 0x00, 0x03, 0x80, 0x00, 0x07, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1C, + 0x00, 0x00, 0x38, 0x00, 0x00, 0x70, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xE0, 0x07, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x00, + 0x00, 0x38, 0x00, 0x00, 0x70, 0x00, 0x00, 0xE0, 0x00, 0x01, 0xC0, 0x00, + 0x03, 0x80, 0x00, 0x07, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x7C, 0xF9, + 0xF1, 0xE1, 0xC3, 0x0C, 0x10, 0xC1, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, + 0x77, 0xFF, 0xF7, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x80, 0x00, 0x3C, + 0x00, 0x01, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 0x00, + 0xF0, 0x00, 0x07, 0x00, 0x00, 0x78, 0x00, 0x03, 0x80, 0x00, 0x3C, 0x00, + 0x01, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x70, + 0x00, 0x07, 0x80, 0x00, 0x38, 0x00, 0x03, 0x80, 0x00, 0x3C, 0x00, 0x01, + 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x70, 0x00, + 0x07, 0x80, 0x00, 0x38, 0x00, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xE0, + 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x1F, 0x80, 0x03, 0x86, + 0x00, 0x30, 0x18, 0x03, 0x00, 0xC0, 0x38, 0x03, 0x03, 0x80, 0x18, 0x38, + 0x00, 0xC1, 0xC0, 0x07, 0x1C, 0x00, 0x38, 0xE0, 0x01, 0xCF, 0x00, 0x0E, + 0x70, 0x00, 0x77, 0x80, 0x07, 0xBC, 0x00, 0x3D, 0xE0, 0x01, 0xEE, 0x00, + 0x0F, 0xF0, 0x00, 0x77, 0x80, 0x07, 0xBC, 0x00, 0x3D, 0xC0, 0x01, 0xCE, + 0x00, 0x1E, 0x70, 0x00, 0xF3, 0x80, 0x07, 0x1C, 0x00, 0x78, 0xE0, 0x03, + 0x83, 0x00, 0x38, 0x18, 0x03, 0x80, 0xE0, 0x18, 0x03, 0x01, 0x80, 0x0C, + 0x38, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x80, 0x1F, 0xC0, 0x3F, 0xE0, + 0x01, 0xF0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1C, 0x00, 0x1E, + 0x00, 0x0F, 0x00, 0x07, 0x80, 0x07, 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x00, + 0xF0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x1E, 0x00, + 0x0F, 0x00, 0x07, 0x80, 0x07, 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x01, 0xE0, + 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x3F, 0x01, 0xFF, + 0xF0, 0x00, 0x3F, 0x00, 0x07, 0xFE, 0x00, 0x7F, 0xF8, 0x07, 0x07, 0xE0, + 0x60, 0x1F, 0x06, 0x00, 0x7C, 0x20, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, + 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xE0, 0x00, 0x0E, 0x00, + 0x00, 0xF0, 0x00, 0x07, 0x00, 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0x70, + 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, 0x03, + 0x00, 0x00, 0x30, 0x00, 0x03, 0x00, 0x00, 0x30, 0x01, 0x03, 0x00, 0x08, + 0x30, 0x00, 0xC3, 0xFF, 0xFC, 0x3F, 0xFF, 0xE3, 0xFF, 0xFE, 0x00, 0x00, + 0x0F, 0xC0, 0x00, 0xFF, 0xC0, 0x06, 0x0F, 0x80, 0x30, 0x1E, 0x01, 0x80, + 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x78, + 0x00, 0x01, 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xF0, 0x00, 0x0E, 0x00, 0x01, + 0xF8, 0x00, 0x3F, 0xF8, 0x00, 0x0F, 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x0F, + 0x80, 0x00, 0x3E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x80, + 0x00, 0x1E, 0x00, 0x00, 0x70, 0x00, 0x01, 0xC0, 0x00, 0x07, 0x00, 0x00, + 0x38, 0x00, 0x00, 0xC0, 0x70, 0x06, 0x03, 0xF8, 0x70, 0x07, 0xFF, 0x00, + 0x0F, 0xF0, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x70, 0x00, 0x03, 0xC0, + 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x37, 0x80, 0x00, + 0xDC, 0x00, 0x06, 0x70, 0x00, 0x33, 0xC0, 0x01, 0x8F, 0x00, 0x0C, 0x38, + 0x00, 0x60, 0xE0, 0x03, 0x07, 0x80, 0x18, 0x1E, 0x00, 0xC0, 0x70, 0x06, + 0x03, 0xC0, 0x30, 0x0F, 0x01, 0x80, 0x38, 0x0C, 0x00, 0xE0, 0x70, 0x07, + 0x81, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFE, 0x00, 0x0F, 0x00, + 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x00, + 0x70, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3F, 0xFC, 0x00, 0xFF, + 0xF0, 0x07, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x40, 0x00, 0x02, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x70, 0x00, 0x01, 0xF8, 0x00, 0x0F, 0xF0, 0x00, 0x3F, + 0xF0, 0x00, 0x1F, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, 0x03, 0x80, 0x00, 0x0E, 0x00, + 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x03, 0x80, 0x00, 0x0C, 0x00, 0x00, + 0x70, 0x00, 0x01, 0xC0, 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, 0x80, + 0x70, 0x0E, 0x03, 0xF0, 0xE0, 0x07, 0xFF, 0x00, 0x0F, 0xE0, 0x00, 0x00, + 0x00, 0x0E, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x03, + 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x7C, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xC0, + 0x00, 0x0F, 0x80, 0x00, 0x3E, 0x00, 0x00, 0xF9, 0xF8, 0x01, 0xFF, 0xFC, + 0x07, 0xE0, 0x7C, 0x0F, 0x80, 0x7C, 0x3E, 0x00, 0x78, 0x78, 0x00, 0x78, + 0xF0, 0x00, 0xF3, 0xC0, 0x01, 0xE7, 0x80, 0x03, 0xCF, 0x00, 0x07, 0x9C, + 0x00, 0x0F, 0x38, 0x00, 0x3E, 0x70, 0x00, 0x78, 0xE0, 0x00, 0xF1, 0xC0, + 0x03, 0xC1, 0x80, 0x07, 0x83, 0x00, 0x1E, 0x03, 0x00, 0x38, 0x06, 0x01, + 0xE0, 0x03, 0x07, 0x00, 0x01, 0xF8, 0x00, 0x1F, 0xFF, 0xF9, 0xFF, 0xFF, + 0xCF, 0xFF, 0xFC, 0xE0, 0x00, 0xCC, 0x00, 0x0E, 0x40, 0x00, 0x60, 0x00, + 0x07, 0x00, 0x00, 0x70, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x01, 0x80, + 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x07, + 0x00, 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0x38, 0x00, 0x03, 0x80, 0x00, + 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, + 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0x78, 0x00, 0x03, 0x80, 0x00, 0x38, + 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x03, 0x83, + 0x80, 0x1C, 0x03, 0x00, 0xE0, 0x0E, 0x07, 0x00, 0x1C, 0x1C, 0x00, 0x70, + 0x70, 0x01, 0xC1, 0xC0, 0x07, 0x07, 0x80, 0x1C, 0x1E, 0x00, 0xE0, 0x3C, + 0x07, 0x80, 0xFC, 0x38, 0x01, 0xFB, 0xC0, 0x03, 0xF8, 0x00, 0x0F, 0xE0, + 0x00, 0x7F, 0xC0, 0x07, 0x1F, 0x80, 0x78, 0x3F, 0x03, 0x80, 0x7C, 0x1E, + 0x00, 0xF8, 0x70, 0x01, 0xE3, 0x80, 0x03, 0xCE, 0x00, 0x07, 0x38, 0x00, + 0x1C, 0xE0, 0x00, 0x73, 0x80, 0x01, 0xCE, 0x00, 0x06, 0x1C, 0x00, 0x38, + 0x70, 0x01, 0xC0, 0xE0, 0x0E, 0x01, 0xE0, 0xE0, 0x01, 0xFE, 0x00, 0x00, + 0x1F, 0x80, 0x03, 0xC3, 0x00, 0x1C, 0x02, 0x00, 0xE0, 0x0C, 0x07, 0x00, + 0x18, 0x3C, 0x00, 0x60, 0xE0, 0x01, 0xC7, 0x80, 0x07, 0x1E, 0x00, 0x1C, + 0xF0, 0x00, 0x73, 0xC0, 0x01, 0xCF, 0x00, 0x07, 0x3C, 0x00, 0x3C, 0xF0, + 0x00, 0xF3, 0xC0, 0x03, 0xCF, 0x00, 0x1E, 0x1E, 0x00, 0x78, 0x7C, 0x03, + 0xE0, 0xF8, 0x3F, 0x01, 0xFF, 0xBC, 0x03, 0xF1, 0xE0, 0x00, 0x0F, 0x80, + 0x00, 0x3C, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x03, + 0xE0, 0x00, 0x1F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x78, 0x00, + 0x0F, 0x80, 0x00, 0xE0, 0x00, 0x00, 0x07, 0x07, 0xC3, 0xE1, 0xF0, 0x70, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x38, 0x3E, 0x1F, 0x0F, 0x83, 0x80, 0x01, 0xC0, 0x7C, 0x0F, 0x81, + 0xF0, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x07, 0x80, 0xF8, 0x1F, 0x01, 0xE0, + 0x1C, 0x03, 0x00, 0xC0, 0x18, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0C, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x3F, 0xC0, + 0x01, 0xFC, 0x00, 0x0F, 0xE0, 0x00, 0xFF, 0x00, 0x07, 0xF8, 0x00, 0x3F, + 0xC0, 0x01, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x1F, 0x80, + 0x00, 0x3F, 0xC0, 0x00, 0x1F, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xF8, + 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x1F, + 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x07, 0x00, 0x00, 0x02, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, + 0xE0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x3F, 0x80, 0x00, + 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x1F, 0xC0, + 0x00, 0x07, 0xF0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x3F, 0x00, 0x00, 0xFE, 0x00, 0x07, 0xF8, 0x00, 0x1F, 0xE0, + 0x00, 0x7F, 0x80, 0x01, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x3F, 0xC0, 0x00, + 0xFF, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x80, 0x00, 0x00, + 0x03, 0xF0, 0x06, 0x1C, 0x0C, 0x0E, 0x1C, 0x06, 0x1C, 0x07, 0x1C, 0x07, + 0x1C, 0x07, 0x00, 0x07, 0x00, 0x0F, 0x00, 0x0E, 0x00, 0x1E, 0x00, 0x3C, + 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x80, 0x03, 0x00, + 0x06, 0x00, 0x04, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xF8, 0x00, + 0xF8, 0x00, 0xF8, 0x00, 0x70, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x1F, + 0xFF, 0x80, 0x00, 0x3F, 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x7C, + 0x00, 0x07, 0x80, 0x7C, 0x00, 0x00, 0xE0, 0x3C, 0x00, 0x00, 0x38, 0x3C, + 0x00, 0x00, 0x0C, 0x3C, 0x00, 0x78, 0x07, 0x1E, 0x00, 0xFE, 0xE1, 0x9E, + 0x00, 0xF1, 0xF0, 0xEF, 0x00, 0xE0, 0xF0, 0x37, 0x80, 0xE0, 0x38, 0x1F, + 0x80, 0x70, 0x1C, 0x0F, 0xC0, 0x70, 0x1E, 0x07, 0xE0, 0x38, 0x0F, 0x03, + 0xF0, 0x18, 0x07, 0x01, 0xF8, 0x1C, 0x03, 0x80, 0xFC, 0x0E, 0x01, 0xC0, + 0xDE, 0x07, 0x01, 0xE0, 0x6F, 0x03, 0x80, 0xE0, 0x73, 0xC1, 0xC0, 0xF0, + 0x31, 0xE0, 0xF0, 0xF8, 0x30, 0xF0, 0x38, 0xDC, 0x30, 0x3C, 0x1F, 0xC7, + 0xF0, 0x0E, 0x07, 0x81, 0xF0, 0x07, 0x80, 0x00, 0x00, 0x01, 0xE0, 0x00, + 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x01, 0x00, 0x03, 0xF0, + 0x0F, 0x80, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, + 0x00, 0x18, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, + 0xF0, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x03, 0xF0, + 0x00, 0x00, 0x37, 0x80, 0x00, 0x03, 0x3C, 0x00, 0x00, 0x19, 0xE0, 0x00, + 0x01, 0x8F, 0x80, 0x00, 0x08, 0x7C, 0x00, 0x00, 0xC3, 0xE0, 0x00, 0x0C, + 0x0F, 0x00, 0x00, 0x60, 0x78, 0x00, 0x06, 0x03, 0xC0, 0x00, 0x20, 0x1F, + 0x00, 0x03, 0x00, 0xF8, 0x00, 0x3F, 0xFF, 0xC0, 0x01, 0xFF, 0xFE, 0x00, + 0x18, 0x00, 0xF0, 0x00, 0xC0, 0x07, 0x80, 0x0C, 0x00, 0x3E, 0x00, 0xE0, + 0x01, 0xF0, 0x06, 0x00, 0x0F, 0x80, 0x70, 0x00, 0x3C, 0x03, 0x00, 0x01, + 0xE0, 0x38, 0x00, 0x0F, 0x83, 0xC0, 0x00, 0x7C, 0x3E, 0x00, 0x07, 0xF3, + 0xFC, 0x01, 0xFF, 0xE0, 0x03, 0xFF, 0xFE, 0x00, 0x07, 0xFF, 0xF8, 0x00, + 0x3E, 0x07, 0xC0, 0x03, 0xE0, 0x3E, 0x00, 0x3E, 0x01, 0xF0, 0x03, 0xC0, + 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x78, 0x01, 0xF0, + 0x07, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x7C, 0x00, 0xF0, + 0x3F, 0x00, 0x1F, 0xFF, 0x80, 0x01, 0xFF, 0xFC, 0x00, 0x1F, 0x07, 0xE0, + 0x01, 0xE0, 0x1F, 0x00, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x07, 0xC0, 0x3C, + 0x00, 0x7C, 0x03, 0xC0, 0x07, 0xC0, 0x7C, 0x00, 0x7C, 0x07, 0xC0, 0x07, + 0xC0, 0x78, 0x00, 0x7C, 0x0F, 0x80, 0x0F, 0x80, 0xF8, 0x00, 0xF8, 0x0F, + 0x00, 0x1F, 0x00, 0xF0, 0x03, 0xE0, 0x1F, 0x81, 0xFC, 0x03, 0xFF, 0xFF, + 0x80, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x01, 0xFE, 0x04, 0x00, 0x3F, 0xFF, + 0xE0, 0x03, 0xF0, 0x1F, 0x80, 0x1F, 0x00, 0x3E, 0x00, 0xF0, 0x00, 0x78, + 0x0F, 0x80, 0x00, 0xE0, 0x3C, 0x00, 0x03, 0x81, 0xF0, 0x00, 0x04, 0x0F, + 0x80, 0x00, 0x10, 0x7C, 0x00, 0x00, 0x41, 0xF0, 0x00, 0x00, 0x0F, 0x80, + 0x00, 0x00, 0x3E, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x07, 0xC0, 0x00, + 0x00, 0x1F, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, + 0x0F, 0x80, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x03, + 0xE0, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0xF8, + 0x00, 0x00, 0x01, 0xF0, 0x00, 0x02, 0x07, 0xC0, 0x00, 0x18, 0x0F, 0x80, + 0x00, 0xC0, 0x3E, 0x00, 0x06, 0x00, 0x7C, 0x00, 0x70, 0x00, 0xFC, 0x07, + 0x00, 0x00, 0xFF, 0xF8, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x03, 0xFF, 0xFF, + 0x00, 0x00, 0x3F, 0xFF, 0xE0, 0x00, 0x0F, 0xC0, 0xFC, 0x00, 0x07, 0xC0, + 0x1F, 0x00, 0x03, 0xE0, 0x07, 0xC0, 0x01, 0xE0, 0x01, 0xF0, 0x01, 0xF0, + 0x00, 0x7C, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x7C, 0x00, 0x0F, 0x00, 0x3C, + 0x00, 0x07, 0xC0, 0x3E, 0x00, 0x03, 0xE0, 0x1F, 0x00, 0x01, 0xF0, 0x0F, + 0x00, 0x00, 0xF8, 0x0F, 0x80, 0x00, 0x7C, 0x07, 0xC0, 0x00, 0x3E, 0x03, + 0xE0, 0x00, 0x1F, 0x01, 0xE0, 0x00, 0x1F, 0x81, 0xF0, 0x00, 0x0F, 0x80, + 0xF8, 0x00, 0x07, 0xC0, 0x78, 0x00, 0x03, 0xE0, 0x3C, 0x00, 0x03, 0xE0, + 0x3E, 0x00, 0x01, 0xF0, 0x1F, 0x00, 0x01, 0xF0, 0x0F, 0x00, 0x01, 0xF0, + 0x0F, 0x80, 0x01, 0xF8, 0x07, 0xC0, 0x01, 0xF0, 0x03, 0xE0, 0x01, 0xF0, + 0x01, 0xE0, 0x03, 0xF0, 0x01, 0xF8, 0x0F, 0xE0, 0x01, 0xFF, 0xFF, 0xC0, + 0x03, 0xFF, 0xFE, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xF8, 0x03, 0xFF, 0xFF, + 0xC0, 0x0F, 0x80, 0x1E, 0x00, 0x7C, 0x00, 0x30, 0x03, 0xE0, 0x01, 0x00, + 0x1E, 0x00, 0x08, 0x01, 0xF0, 0x00, 0x40, 0x0F, 0x80, 0x00, 0x00, 0x78, + 0x00, 0x00, 0x03, 0xC0, 0x10, 0x00, 0x3E, 0x01, 0x80, 0x01, 0xF0, 0x08, + 0x00, 0x0F, 0x01, 0xC0, 0x00, 0xFF, 0xFE, 0x00, 0x07, 0xFF, 0xF0, 0x00, + 0x3E, 0x07, 0x00, 0x01, 0xE0, 0x18, 0x00, 0x1F, 0x00, 0xC0, 0x00, 0xF8, + 0x04, 0x00, 0x07, 0x80, 0x20, 0x00, 0x3C, 0x00, 0x00, 0x03, 0xE0, 0x00, + 0x00, 0x1F, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x08, 0x0F, 0x80, 0x00, 0xC0, + 0x7C, 0x00, 0x0E, 0x03, 0xC0, 0x00, 0xE0, 0x1E, 0x00, 0x0F, 0x01, 0xF8, + 0x03, 0xF8, 0x1F, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0xFC, 0x00, 0x03, 0xFF, + 0xFF, 0xF8, 0x03, 0xFF, 0xFF, 0xC0, 0x0F, 0x80, 0x1E, 0x00, 0x7C, 0x00, + 0x30, 0x03, 0xE0, 0x01, 0x00, 0x1E, 0x00, 0x08, 0x01, 0xF0, 0x00, 0x40, + 0x0F, 0x80, 0x02, 0x00, 0x7C, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x3E, + 0x00, 0x80, 0x01, 0xF0, 0x0C, 0x00, 0x0F, 0x00, 0xC0, 0x00, 0xF8, 0x0E, + 0x00, 0x07, 0xFF, 0xF0, 0x00, 0x3F, 0xFF, 0x00, 0x01, 0xE0, 0x18, 0x00, + 0x1F, 0x00, 0xC0, 0x00, 0xF8, 0x06, 0x00, 0x07, 0xC0, 0x20, 0x00, 0x3C, + 0x01, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0xF0, 0x00, + 0x00, 0x0F, 0x80, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xFF, + 0xC0, 0x00, 0x00, 0x00, 0x01, 0xFE, 0x02, 0x00, 0x1F, 0xFF, 0x8C, 0x00, + 0xFC, 0x07, 0xF8, 0x03, 0xE0, 0x03, 0xF0, 0x0F, 0x00, 0x03, 0xC0, 0x3C, + 0x00, 0x03, 0x80, 0xF0, 0x00, 0x07, 0x03, 0xC0, 0x00, 0x0E, 0x0F, 0x80, + 0x00, 0x08, 0x3E, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x00, 0x01, 0xF0, 0x00, + 0x00, 0x03, 0xE0, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x1F, 0x00, 0x00, + 0x00, 0x3E, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x3F, + 0xFF, 0xE0, 0x00, 0x0F, 0xE7, 0xC0, 0x00, 0x0F, 0x0F, 0x80, 0x00, 0x1E, + 0x1F, 0x00, 0x00, 0x7C, 0x3E, 0x00, 0x00, 0xF0, 0x7C, 0x00, 0x01, 0xE0, + 0x78, 0x00, 0x03, 0xC0, 0xF8, 0x00, 0x0F, 0x01, 0xF0, 0x00, 0x1E, 0x01, + 0xF0, 0x00, 0x3C, 0x01, 0xE0, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xE0, 0x01, + 0xF8, 0x0F, 0x80, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x03, + 0xFF, 0xE0, 0x7F, 0xF0, 0x07, 0xF8, 0x01, 0xFC, 0x00, 0x3E, 0x00, 0x0F, + 0x80, 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, + 0x00, 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, + 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0xF8, 0x00, 0x3E, + 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x1F, 0x00, + 0x03, 0xC0, 0x01, 0xFF, 0xFF, 0xFC, 0x00, 0x1F, 0xFF, 0xFF, 0x80, 0x01, + 0xE0, 0x00, 0x78, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF8, + 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x7C, 0x00, + 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x0F, + 0x80, 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x03, 0xC0, + 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x03, 0xF8, 0x00, + 0xFE, 0x00, 0xFF, 0xE0, 0x7F, 0xFC, 0x00, 0x01, 0xFF, 0xC0, 0x1F, 0xE0, + 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x07, 0xC0, 0x01, + 0xF0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF0, + 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xE0, 0x00, 0xF8, 0x00, + 0x3E, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x1E, + 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x1F, 0x00, + 0x0F, 0xE0, 0x0F, 0xFE, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x07, 0xF0, 0x00, + 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x3C, 0x00, 0x00, + 0xF8, 0x00, 0x01, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1F, + 0x00, 0x00, 0x3C, 0x00, 0x00, 0x78, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xE0, + 0x00, 0x07, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x78, 0x00, + 0x00, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF0, 0x01, 0xC1, 0xE0, 0x07, 0xC7, + 0x80, 0x0F, 0x8F, 0x00, 0x1F, 0x3C, 0x00, 0x1F, 0xF0, 0x00, 0x0F, 0x80, + 0x00, 0x01, 0xFF, 0xE1, 0xFF, 0x80, 0x3F, 0xC0, 0x1F, 0x80, 0x0F, 0x80, + 0x0F, 0x00, 0x07, 0xC0, 0x0F, 0x00, 0x03, 0xC0, 0x0F, 0x00, 0x01, 0xE0, + 0x0E, 0x00, 0x01, 0xF0, 0x0E, 0x00, 0x00, 0xF8, 0x0E, 0x00, 0x00, 0x78, + 0x1C, 0x00, 0x00, 0x3C, 0x1C, 0x00, 0x00, 0x3E, 0x3C, 0x00, 0x00, 0x1F, + 0x38, 0x00, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x07, + 0xFE, 0x00, 0x00, 0x03, 0xDF, 0x00, 0x00, 0x01, 0xE7, 0xC0, 0x00, 0x01, + 0xF3, 0xE0, 0x00, 0x00, 0xF8, 0xF8, 0x00, 0x00, 0x78, 0x3C, 0x00, 0x00, + 0x3C, 0x1F, 0x00, 0x00, 0x3E, 0x07, 0xC0, 0x00, 0x1F, 0x03, 0xE0, 0x00, + 0x0F, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x3C, 0x00, 0x07, 0xC0, 0x1F, 0x00, + 0x03, 0xC0, 0x07, 0x80, 0x01, 0xE0, 0x03, 0xE0, 0x01, 0xF0, 0x01, 0xF8, + 0x01, 0xFC, 0x01, 0xFE, 0x03, 0xFF, 0xC3, 0xFF, 0xE0, 0x03, 0xFF, 0xE0, + 0x00, 0x0F, 0xF0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, + 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x00, + 0x00, 0x78, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, + 0x00, 0x00, 0x0F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, + 0x0F, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x0F, 0x80, + 0x00, 0x01, 0xE0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x01, + 0xF0, 0x00, 0x08, 0x3C, 0x00, 0x03, 0x0F, 0x80, 0x00, 0x41, 0xF0, 0x00, + 0x18, 0x3C, 0x00, 0x07, 0x07, 0x80, 0x01, 0xC1, 0xF8, 0x01, 0xF8, 0x7F, + 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xC0, 0x01, 0xFF, 0x00, 0x00, 0x3F, 0xC0, + 0x0F, 0xC0, 0x00, 0x1F, 0xC0, 0x01, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0xFC, + 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x01, 0xFC, 0x00, 0x0F, 0xC0, 0x00, + 0xFF, 0x00, 0x02, 0xF0, 0x00, 0x37, 0x80, 0x01, 0xBC, 0x00, 0x19, 0xE0, + 0x00, 0x6F, 0x80, 0x0E, 0xF8, 0x00, 0x1B, 0xE0, 0x03, 0x3E, 0x00, 0x04, + 0x78, 0x01, 0x8F, 0x00, 0x03, 0x1E, 0x00, 0xE7, 0xC0, 0x00, 0xC7, 0x80, + 0x31, 0xF0, 0x00, 0x21, 0xE0, 0x18, 0x78, 0x00, 0x18, 0x78, 0x0E, 0x1E, + 0x00, 0x06, 0x1E, 0x03, 0x0F, 0x80, 0x01, 0x87, 0x81, 0x83, 0xE0, 0x00, + 0x41, 0xF0, 0xE0, 0xF0, 0x00, 0x30, 0x7C, 0x30, 0x3C, 0x00, 0x0C, 0x0F, + 0x18, 0x1F, 0x00, 0x03, 0x03, 0xCE, 0x07, 0xC0, 0x01, 0x80, 0xF3, 0x01, + 0xE0, 0x00, 0x60, 0x3D, 0x80, 0xF8, 0x00, 0x18, 0x0F, 0xE0, 0x3E, 0x00, + 0x0C, 0x03, 0xF0, 0x0F, 0x00, 0x03, 0x00, 0xF8, 0x03, 0xC0, 0x00, 0xC0, + 0x3E, 0x01, 0xF0, 0x00, 0x70, 0x0F, 0x00, 0x7C, 0x00, 0x1C, 0x01, 0x80, + 0x3F, 0x00, 0x0F, 0x80, 0x60, 0x1F, 0xC0, 0x0F, 0xF8, 0x10, 0x1F, 0xFE, + 0x00, 0x03, 0xFC, 0x00, 0x3F, 0xE0, 0x1F, 0xC0, 0x01, 0xF8, 0x00, 0xF8, + 0x00, 0x1C, 0x00, 0x1F, 0x00, 0x03, 0x80, 0x03, 0xF0, 0x00, 0x60, 0x00, + 0x7E, 0x00, 0x0C, 0x00, 0x0B, 0xE0, 0x03, 0x80, 0x03, 0x7C, 0x00, 0x60, + 0x00, 0x67, 0x80, 0x0C, 0x00, 0x0C, 0xF8, 0x03, 0x80, 0x03, 0x0F, 0x00, + 0x70, 0x00, 0x61, 0xF0, 0x0C, 0x00, 0x0C, 0x3E, 0x01, 0x80, 0x01, 0x83, + 0xC0, 0x70, 0x00, 0x60, 0x7C, 0x0C, 0x00, 0x0C, 0x07, 0x81, 0x80, 0x01, + 0x80, 0xF8, 0x30, 0x00, 0x60, 0x0F, 0x0E, 0x00, 0x0C, 0x01, 0xE1, 0x80, + 0x01, 0x80, 0x3E, 0x30, 0x00, 0x30, 0x03, 0xCE, 0x00, 0x0C, 0x00, 0x7D, + 0x80, 0x01, 0x80, 0x07, 0xB0, 0x00, 0x30, 0x00, 0xF6, 0x00, 0x0E, 0x00, + 0x1F, 0xC0, 0x01, 0x80, 0x01, 0xF0, 0x00, 0x30, 0x00, 0x3E, 0x00, 0x0E, + 0x00, 0x03, 0xC0, 0x01, 0xC0, 0x00, 0x70, 0x00, 0x7C, 0x00, 0x06, 0x00, + 0x3F, 0xE0, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0xFE, + 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x01, 0xF0, 0x7C, 0x00, 0x0F, 0x00, 0x78, + 0x00, 0x78, 0x00, 0xF0, 0x07, 0xC0, 0x03, 0xE0, 0x3E, 0x00, 0x07, 0x81, + 0xF0, 0x00, 0x1E, 0x07, 0xC0, 0x00, 0x7C, 0x3E, 0x00, 0x01, 0xF1, 0xF0, + 0x00, 0x07, 0xC7, 0xC0, 0x00, 0x1F, 0x3F, 0x00, 0x00, 0x7C, 0xF8, 0x00, + 0x01, 0xF7, 0xE0, 0x00, 0x0F, 0xDF, 0x00, 0x00, 0x3F, 0x7C, 0x00, 0x00, + 0xFB, 0xF0, 0x00, 0x07, 0xEF, 0xC0, 0x00, 0x1F, 0xBE, 0x00, 0x00, 0x7C, + 0xF8, 0x00, 0x03, 0xF3, 0xE0, 0x00, 0x0F, 0x8F, 0x80, 0x00, 0x3E, 0x3E, + 0x00, 0x01, 0xF0, 0xF8, 0x00, 0x0F, 0x81, 0xE0, 0x00, 0x3E, 0x07, 0x80, + 0x01, 0xF0, 0x1F, 0x00, 0x0F, 0x80, 0x3C, 0x00, 0x7C, 0x00, 0x78, 0x03, + 0xC0, 0x00, 0xF8, 0x3E, 0x00, 0x01, 0xFF, 0xE0, 0x00, 0x01, 0xFC, 0x00, + 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x0F, 0x81, 0xF8, + 0x00, 0x7C, 0x03, 0xE0, 0x03, 0xE0, 0x1F, 0x00, 0x1E, 0x00, 0x7C, 0x01, + 0xF0, 0x03, 0xE0, 0x0F, 0x80, 0x1F, 0x00, 0x78, 0x00, 0xF8, 0x03, 0xC0, + 0x07, 0xC0, 0x3E, 0x00, 0x3C, 0x01, 0xF0, 0x03, 0xE0, 0x0F, 0x00, 0x3E, + 0x00, 0xF8, 0x03, 0xF0, 0x07, 0xC0, 0x7E, 0x00, 0x3F, 0xFF, 0xE0, 0x01, + 0xEF, 0xF8, 0x00, 0x1F, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x07, 0x80, + 0x00, 0x00, 0x3C, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x1F, 0x00, 0x00, + 0x00, 0xF0, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x03, + 0xC0, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x1F, 0xC0, + 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, + 0xFE, 0x00, 0x00, 0xF0, 0x7C, 0x00, 0x0F, 0x00, 0x78, 0x00, 0x78, 0x00, + 0xF0, 0x03, 0xC0, 0x03, 0xE0, 0x1E, 0x00, 0x07, 0x80, 0xF0, 0x00, 0x1E, + 0x07, 0xC0, 0x00, 0x7C, 0x3E, 0x00, 0x01, 0xF1, 0xF8, 0x00, 0x07, 0xC7, + 0xC0, 0x00, 0x1F, 0x3F, 0x00, 0x00, 0x7C, 0xF8, 0x00, 0x01, 0xF7, 0xE0, + 0x00, 0x0F, 0xDF, 0x80, 0x00, 0x3F, 0x7C, 0x00, 0x00, 0xFB, 0xF0, 0x00, + 0x03, 0xEF, 0xC0, 0x00, 0x1F, 0xBE, 0x00, 0x00, 0x7C, 0xF8, 0x00, 0x01, + 0xF3, 0xE0, 0x00, 0x0F, 0x8F, 0x80, 0x00, 0x3E, 0x3E, 0x00, 0x01, 0xF0, + 0xF8, 0x00, 0x07, 0xC3, 0xE0, 0x00, 0x3E, 0x07, 0x80, 0x01, 0xF0, 0x1F, + 0x00, 0x07, 0x80, 0x3C, 0x00, 0x3C, 0x00, 0xF8, 0x01, 0xE0, 0x01, 0xE0, + 0x1E, 0x00, 0x01, 0xF3, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x03, 0x00, + 0x00, 0x00, 0x18, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x04, 0x0F, 0xF0, 0x00, + 0x60, 0x7F, 0xFC, 0x07, 0x03, 0xFF, 0xFF, 0xF8, 0x38, 0x1F, 0xFF, 0x80, + 0x00, 0x07, 0xF8, 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x07, 0xFF, 0xF8, 0x00, + 0x3E, 0x0F, 0xC0, 0x03, 0xE0, 0x3E, 0x00, 0x3E, 0x01, 0xF0, 0x03, 0xC0, + 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x78, 0x01, 0xF0, + 0x07, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x7C, 0x00, 0xF0, + 0x1F, 0x80, 0x1F, 0xFF, 0xE0, 0x01, 0xFF, 0xF0, 0x00, 0x1E, 0x1E, 0x00, + 0x01, 0xE1, 0xE0, 0x00, 0x3E, 0x1F, 0x00, 0x03, 0xE0, 0xF0, 0x00, 0x3C, + 0x0F, 0x00, 0x03, 0xC0, 0xF8, 0x00, 0x7C, 0x07, 0x80, 0x07, 0xC0, 0x7C, + 0x00, 0x78, 0x03, 0xC0, 0x0F, 0x80, 0x3C, 0x00, 0xF8, 0x03, 0xE0, 0x0F, + 0x00, 0x1E, 0x00, 0xF0, 0x01, 0xE0, 0x1F, 0x00, 0x1F, 0x03, 0xF8, 0x00, + 0xF8, 0xFF, 0xE0, 0x0F, 0xE0, 0x00, 0x3F, 0x06, 0x01, 0xFF, 0xDC, 0x07, + 0xC1, 0xF0, 0x1E, 0x01, 0xE0, 0x3C, 0x01, 0xC0, 0xF0, 0x03, 0x81, 0xE0, + 0x03, 0x03, 0xC0, 0x04, 0x07, 0x80, 0x08, 0x0F, 0x80, 0x00, 0x1F, 0x00, + 0x00, 0x1F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, + 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, + 0x00, 0x3E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7C, 0x08, 0x00, 0x78, 0x10, + 0x00, 0xF0, 0x20, 0x01, 0xE0, 0xC0, 0x03, 0xC1, 0x80, 0x07, 0x83, 0x80, + 0x1E, 0x07, 0x00, 0x3C, 0x0F, 0x00, 0xF0, 0x1F, 0x87, 0xC0, 0x23, 0xFF, + 0x00, 0x81, 0xF8, 0x00, 0x3F, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xFD, 0xF0, + 0x3E, 0x07, 0xB8, 0x07, 0xC0, 0x76, 0x00, 0xF8, 0x04, 0x80, 0x3E, 0x00, + 0xB0, 0x07, 0xC0, 0x14, 0x00, 0xF8, 0x02, 0x00, 0x1E, 0x00, 0x00, 0x07, + 0xC0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xC0, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0xF8, + 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, + 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x0F, 0x00, + 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x03, + 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x3F, 0xFF, 0x00, + 0x00, 0x7F, 0xFE, 0x03, 0xFE, 0x1F, 0xE0, 0x01, 0xF8, 0x1F, 0x80, 0x01, + 0xC0, 0x3E, 0x00, 0x03, 0x80, 0x7C, 0x00, 0x07, 0x00, 0xF8, 0x00, 0x0C, + 0x03, 0xE0, 0x00, 0x18, 0x07, 0xC0, 0x00, 0x70, 0x0F, 0x80, 0x00, 0xC0, + 0x1F, 0x00, 0x01, 0x80, 0x7C, 0x00, 0x03, 0x00, 0xF8, 0x00, 0x0E, 0x01, + 0xF0, 0x00, 0x18, 0x07, 0xC0, 0x00, 0x30, 0x0F, 0x80, 0x00, 0x60, 0x1F, + 0x00, 0x01, 0x80, 0x3E, 0x00, 0x03, 0x00, 0xF8, 0x00, 0x06, 0x01, 0xF0, + 0x00, 0x18, 0x03, 0xE0, 0x00, 0x30, 0x07, 0xC0, 0x00, 0x60, 0x1F, 0x00, + 0x00, 0xC0, 0x3E, 0x00, 0x03, 0x00, 0x7C, 0x00, 0x06, 0x00, 0xF8, 0x00, + 0x18, 0x01, 0xF0, 0x00, 0x30, 0x03, 0xE0, 0x00, 0xC0, 0x03, 0xE0, 0x03, + 0x80, 0x03, 0xE0, 0x0E, 0x00, 0x03, 0xF0, 0x78, 0x00, 0x03, 0xFF, 0xC0, + 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, 0xE0, 0x0F, 0xF9, 0xFC, 0x00, 0x1F, + 0x07, 0xC0, 0x00, 0x78, 0x3E, 0x00, 0x03, 0x81, 0xF0, 0x00, 0x18, 0x0F, + 0x80, 0x01, 0xC0, 0x7C, 0x00, 0x0C, 0x01, 0xE0, 0x00, 0xC0, 0x0F, 0x80, + 0x06, 0x00, 0x7C, 0x00, 0x60, 0x03, 0xE0, 0x07, 0x00, 0x1F, 0x00, 0x30, + 0x00, 0xF8, 0x03, 0x00, 0x03, 0xC0, 0x18, 0x00, 0x1E, 0x01, 0x80, 0x00, + 0xF8, 0x1C, 0x00, 0x07, 0xC0, 0xC0, 0x00, 0x3E, 0x0C, 0x00, 0x01, 0xF0, + 0x60, 0x00, 0x07, 0x86, 0x00, 0x00, 0x3C, 0x30, 0x00, 0x01, 0xE3, 0x00, + 0x00, 0x0F, 0xB0, 0x00, 0x00, 0x7D, 0x80, 0x00, 0x03, 0xF8, 0x00, 0x00, + 0x0F, 0xC0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x1E, + 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, + 0x00, 0xFF, 0xE3, 0xFF, 0x81, 0xFE, 0x7F, 0x01, 0xFC, 0x00, 0xF8, 0x7C, + 0x01, 0xF0, 0x00, 0xE0, 0xF8, 0x03, 0xE0, 0x01, 0x81, 0xF0, 0x03, 0xC0, + 0x07, 0x03, 0xE0, 0x07, 0x80, 0x0C, 0x03, 0xC0, 0x0F, 0x00, 0x18, 0x07, + 0x80, 0x1E, 0x00, 0x60, 0x0F, 0x00, 0x7E, 0x00, 0xC0, 0x1F, 0x00, 0xFC, + 0x03, 0x00, 0x3E, 0x03, 0xF8, 0x06, 0x00, 0x7C, 0x05, 0xF0, 0x18, 0x00, + 0xF8, 0x1B, 0xE0, 0x30, 0x01, 0xF0, 0x33, 0xC0, 0xC0, 0x01, 0xE0, 0xC7, + 0x83, 0x80, 0x03, 0xC1, 0x8F, 0x06, 0x00, 0x07, 0x86, 0x1E, 0x1C, 0x00, + 0x0F, 0x0C, 0x3C, 0x30, 0x00, 0x1F, 0x30, 0x7C, 0xE0, 0x00, 0x3E, 0x60, + 0xF9, 0x80, 0x00, 0x7D, 0x81, 0xF7, 0x00, 0x00, 0xFB, 0x03, 0xEC, 0x00, + 0x01, 0xFC, 0x03, 0xF8, 0x00, 0x01, 0xF8, 0x07, 0xE0, 0x00, 0x03, 0xE0, + 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x1F, 0x00, 0x00, 0x0F, 0x00, 0x3C, 0x00, + 0x00, 0x1E, 0x00, 0x78, 0x00, 0x00, 0x38, 0x00, 0xE0, 0x00, 0x00, 0x70, + 0x01, 0xC0, 0x00, 0x00, 0xC0, 0x03, 0x00, 0x00, 0x00, 0x80, 0x06, 0x00, + 0x00, 0x07, 0xFF, 0x83, 0xFF, 0x01, 0xFE, 0x00, 0xFE, 0x00, 0x7C, 0x00, + 0x78, 0x00, 0x7C, 0x00, 0x70, 0x00, 0x3C, 0x00, 0xE0, 0x00, 0x3E, 0x01, + 0xC0, 0x00, 0x3E, 0x01, 0x80, 0x00, 0x1F, 0x03, 0x00, 0x00, 0x1F, 0x07, + 0x00, 0x00, 0x0F, 0x0E, 0x00, 0x00, 0x0F, 0x9C, 0x00, 0x00, 0x0F, 0xB8, + 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x03, 0xC0, + 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x07, 0xF0, + 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x1C, 0xF0, 0x00, 0x00, 0x38, 0xF8, + 0x00, 0x00, 0x30, 0xF8, 0x00, 0x00, 0x60, 0x7C, 0x00, 0x00, 0xC0, 0x7C, + 0x00, 0x01, 0xC0, 0x3C, 0x00, 0x03, 0x80, 0x3E, 0x00, 0x07, 0x00, 0x3E, + 0x00, 0x0E, 0x00, 0x1F, 0x00, 0x1E, 0x00, 0x1F, 0x00, 0x7F, 0x00, 0x3F, + 0xC0, 0xFF, 0xC1, 0xFF, 0xF0, 0x7F, 0xF0, 0x7F, 0xC7, 0xF0, 0x03, 0xE0, + 0xF8, 0x00, 0x70, 0x3E, 0x00, 0x38, 0x07, 0x80, 0x0C, 0x01, 0xE0, 0x07, + 0x00, 0x7C, 0x03, 0x80, 0x1F, 0x00, 0xC0, 0x03, 0xC0, 0x60, 0x00, 0xF0, + 0x30, 0x00, 0x3E, 0x1C, 0x00, 0x07, 0x8E, 0x00, 0x01, 0xE3, 0x00, 0x00, + 0x7D, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xF8, 0x00, + 0x00, 0x3C, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, + 0x00, 0x00, 0x78, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, + 0xC0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, 0x00, 0x00, + 0x0F, 0xC0, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0x03, 0xFF, + 0xFF, 0xF8, 0x1F, 0xFF, 0xFF, 0x81, 0xF0, 0x00, 0xFC, 0x0E, 0x00, 0x0F, + 0xC0, 0x60, 0x00, 0xFC, 0x06, 0x00, 0x0F, 0xC0, 0x20, 0x00, 0x7C, 0x00, + 0x00, 0x07, 0xE0, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, + 0x7E, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x03, 0xF0, + 0x00, 0x00, 0x3F, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x1F, 0x00, 0x00, + 0x01, 0xF8, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x1F, + 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0xFC, 0x00, + 0x08, 0x0F, 0xC0, 0x00, 0x80, 0xFC, 0x00, 0x0C, 0x07, 0xC0, 0x00, 0x60, + 0x7E, 0x00, 0x07, 0x07, 0xE0, 0x01, 0xF0, 0x7F, 0xFF, 0xFF, 0x83, 0xFF, + 0xFF, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x3C, 0x00, 0x1C, 0x00, 0x0E, 0x00, + 0x07, 0x00, 0x07, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0xE0, + 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, + 0x00, 0x03, 0x80, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, + 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x07, 0x00, + 0x03, 0x80, 0x01, 0xC0, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x38, + 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x07, 0x80, 0x03, + 0xFC, 0x00, 0xF0, 0x00, 0x38, 0x00, 0x1E, 0x00, 0x07, 0x00, 0x03, 0x80, + 0x01, 0xE0, 0x00, 0x70, 0x00, 0x3C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x03, + 0xC0, 0x00, 0xE0, 0x00, 0x78, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x03, 0x80, + 0x01, 0xC0, 0x00, 0xF0, 0x00, 0x38, 0x00, 0x1E, 0x00, 0x07, 0x00, 0x03, + 0x80, 0x01, 0xE0, 0x00, 0x70, 0x00, 0x3C, 0x00, 0x0E, 0x00, 0x07, 0x00, + 0x03, 0xC0, 0x00, 0xE0, 0x00, 0x78, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, + 0x80, 0x00, 0xFF, 0x80, 0x07, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0xF0, + 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x07, + 0x00, 0x03, 0x80, 0x01, 0xC0, 0x01, 0xE0, 0x00, 0xE0, 0x00, 0x70, 0x00, + 0x38, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x03, 0x80, + 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x78, 0x00, 0x38, + 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 0x80, 0x01, + 0xC0, 0x00, 0xE0, 0x00, 0xF0, 0x00, 0x70, 0x00, 0x38, 0x03, 0xFC, 0x00, + 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x01, 0xF8, 0x00, 0x1F, 0x80, 0x03, 0xBC, + 0x00, 0x39, 0xC0, 0x07, 0x1E, 0x00, 0x70, 0xE0, 0x0E, 0x0F, 0x00, 0xE0, + 0x70, 0x1E, 0x07, 0x81, 0xC0, 0x38, 0x3C, 0x03, 0xC3, 0x80, 0x1C, 0x78, + 0x01, 0xE7, 0x00, 0x0E, 0xF0, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x60, 0xF0, 0xF8, 0x78, 0x3C, 0x1E, 0x0E, 0x07, 0x00, 0x1E, 0x70, + 0x03, 0x0B, 0x80, 0x70, 0x3C, 0x07, 0x01, 0xE0, 0x70, 0x0E, 0x07, 0x00, + 0x70, 0x78, 0x03, 0x83, 0x80, 0x38, 0x3C, 0x01, 0xC1, 0xC0, 0x0E, 0x1E, + 0x00, 0xF0, 0xF0, 0x07, 0x0F, 0x00, 0x78, 0x78, 0x03, 0xC3, 0xC0, 0x3E, + 0x1E, 0x01, 0x70, 0xF0, 0x17, 0x0F, 0x81, 0x38, 0xBE, 0x11, 0xC8, 0xFF, + 0x0F, 0x83, 0xF0, 0x70, 0x00, 0x00, 0xF0, 0x00, 0x7F, 0x00, 0x00, 0x78, + 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x07, 0x00, 0x00, + 0x78, 0x00, 0x03, 0x80, 0x00, 0x1C, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x0F, + 0x80, 0x71, 0xFE, 0x03, 0x98, 0xF8, 0x3D, 0x03, 0xE1, 0xE8, 0x0F, 0x0E, + 0x80, 0x78, 0x78, 0x03, 0xC7, 0xC0, 0x1E, 0x3C, 0x00, 0xF1, 0xE0, 0x0F, + 0x1E, 0x00, 0x78, 0xF0, 0x03, 0xC7, 0x80, 0x3C, 0x38, 0x01, 0xE3, 0xC0, + 0x1E, 0x1E, 0x00, 0xE0, 0xE0, 0x0E, 0x07, 0x00, 0xF0, 0x78, 0x07, 0x03, + 0xC0, 0xE0, 0x0F, 0x0E, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x3F, 0x00, 0x38, + 0x60, 0x38, 0x1C, 0x1C, 0x0F, 0x0E, 0x03, 0x87, 0x80, 0x03, 0xC0, 0x00, + 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x00, 0x03, 0xC0, 0x00, 0xF0, + 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x02, 0x3E, 0x01, + 0x87, 0x80, 0xC1, 0xF0, 0x60, 0x3F, 0xF0, 0x03, 0xF0, 0x00, 0x00, 0x00, + 0x0E, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x1E, 0x00, 0x00, + 0x1C, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x3C, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x38, 0x00, 0x00, 0x78, 0x00, 0x1E, 0x78, 0x00, 0x71, + 0x70, 0x00, 0xC1, 0x70, 0x03, 0x80, 0xF0, 0x07, 0x80, 0xE0, 0x07, 0x01, + 0xE0, 0x0E, 0x01, 0xE0, 0x1E, 0x01, 0xE0, 0x3C, 0x01, 0xC0, 0x3C, 0x01, + 0xC0, 0x78, 0x03, 0xC0, 0x78, 0x03, 0xC0, 0x78, 0x03, 0x80, 0xF0, 0x07, + 0x80, 0xF0, 0x07, 0x80, 0xF0, 0x0F, 0x80, 0xF0, 0x0F, 0x00, 0xF0, 0x17, + 0x08, 0xF0, 0x27, 0x10, 0x78, 0x47, 0x20, 0x7F, 0x87, 0xC0, 0x1E, 0x07, + 0x00, 0x00, 0x1F, 0x00, 0x1C, 0xF0, 0x1C, 0x1C, 0x0E, 0x07, 0x07, 0x01, + 0xC3, 0xC0, 0xF1, 0xE0, 0x38, 0x70, 0x1C, 0x3C, 0x0E, 0x1F, 0x0F, 0x07, + 0x8F, 0x01, 0xFE, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, + 0x00, 0xF0, 0x01, 0x3C, 0x00, 0xC7, 0x80, 0x61, 0xF0, 0x60, 0x3F, 0xF0, + 0x03, 0xE0, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x03, 0x1C, 0x00, 0x00, + 0xC3, 0x80, 0x00, 0x38, 0x70, 0x00, 0x06, 0x00, 0x00, 0x01, 0xC0, 0x00, + 0x00, 0x30, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x78, + 0x00, 0x00, 0x0E, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x07, 0xFF, 0xC0, 0x00, + 0xFF, 0xF8, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x00, + 0x00, 0x01, 0xE0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, + 0xE0, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0xF0, 0x00, + 0x00, 0x1C, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x1E, + 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x70, 0x00, 0x00, 0x0E, 0x00, 0x00, + 0x03, 0xC0, 0x00, 0x00, 0x70, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x01, 0xC0, + 0x00, 0x00, 0x70, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x01, 0x80, 0x00, 0x38, + 0x60, 0x00, 0x07, 0x0C, 0x00, 0x00, 0xE3, 0x00, 0x00, 0x0F, 0x80, 0x00, + 0x00, 0x00, 0x3F, 0x00, 0x07, 0x0E, 0x00, 0x70, 0x3E, 0x07, 0x01, 0xF0, + 0x70, 0x0E, 0x07, 0x80, 0x70, 0x3C, 0x03, 0x81, 0xC0, 0x1C, 0x0E, 0x01, + 0xE0, 0x70, 0x0E, 0x03, 0x80, 0xF0, 0x0E, 0x0F, 0x00, 0x30, 0xE0, 0x00, + 0xFE, 0x00, 0x0C, 0x00, 0x00, 0xC0, 0x00, 0x0E, 0x00, 0x00, 0x7E, 0x00, + 0x03, 0xFE, 0x00, 0x0F, 0xFC, 0x00, 0x8F, 0xF0, 0x18, 0x0F, 0xC1, 0x80, + 0x1F, 0x18, 0x00, 0x78, 0xC0, 0x01, 0xC6, 0x00, 0x0E, 0x30, 0x00, 0x61, + 0xC0, 0x07, 0x06, 0x00, 0x70, 0x1C, 0x0E, 0x00, 0x3F, 0xC0, 0x00, 0x00, + 0xF0, 0x00, 0x7F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, + 0x00, 0xE0, 0x00, 0x07, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1C, + 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x03, 0x80, 0x78, 0x7E, 0x03, 0x86, 0x70, + 0x3C, 0x43, 0x81, 0xE4, 0x1C, 0x0E, 0x40, 0xE0, 0x74, 0x0E, 0x07, 0xA0, + 0x70, 0x3E, 0x03, 0x81, 0xE0, 0x1C, 0x0F, 0x00, 0xE0, 0xF0, 0x0E, 0x07, + 0x80, 0x70, 0x38, 0x03, 0x81, 0xC0, 0x1C, 0x1E, 0x00, 0xC2, 0xF0, 0x0E, + 0x27, 0x00, 0x73, 0x38, 0x03, 0x93, 0xC0, 0x1F, 0x1E, 0x00, 0xE0, 0x03, + 0x81, 0xF0, 0x7C, 0x1F, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x71, 0xFC, 0x1F, 0x07, 0x81, 0xE0, 0x78, 0x1C, 0x07, 0x03, 0xC0, 0xF0, + 0x38, 0x0E, 0x07, 0x81, 0xE0, 0x70, 0x1C, 0x0F, 0x03, 0x84, 0xE2, 0x39, + 0x0F, 0x81, 0xC0, 0x00, 0x01, 0xC0, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, + 0xF0, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x3F, 0xC0, 0x00, 0xF0, 0x00, 0x1E, + 0x00, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x0E, 0x00, 0x03, 0xC0, 0x00, 0x78, + 0x00, 0x0F, 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x0F, 0x00, 0x01, 0xE0, + 0x00, 0x38, 0x00, 0x07, 0x00, 0x01, 0xE0, 0x00, 0x38, 0x00, 0x07, 0x00, + 0x00, 0xE0, 0x00, 0x3C, 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, + 0x07, 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x01, 0xC7, 0x00, 0x38, 0xC0, 0x07, + 0x30, 0x00, 0x7C, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x7F, 0x00, 0x00, 0x78, + 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x07, 0x00, 0x00, + 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x00, + 0x00, 0x70, 0xFF, 0x83, 0x80, 0xF0, 0x3C, 0x06, 0x01, 0xE0, 0x60, 0x0E, + 0x06, 0x00, 0x70, 0xE0, 0x07, 0x8C, 0x00, 0x3C, 0xC0, 0x01, 0xCC, 0x00, + 0x0F, 0xF0, 0x00, 0xFF, 0x80, 0x07, 0x9E, 0x00, 0x38, 0xF0, 0x01, 0xC3, + 0x80, 0x1E, 0x1E, 0x00, 0xF0, 0x70, 0x07, 0x03, 0xC2, 0x78, 0x0E, 0x13, + 0xC0, 0x79, 0x1E, 0x01, 0xF0, 0x00, 0x07, 0x00, 0x00, 0xE1, 0xFC, 0x0F, + 0x80, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1C, 0x07, 0x80, 0xF0, 0x1E, 0x03, + 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x70, 0x1E, 0x03, 0xC0, 0x78, 0x0E, 0x03, + 0xC0, 0x78, 0x0E, 0x01, 0xC0, 0x78, 0x0F, 0x01, 0xC0, 0x38, 0x4F, 0x11, + 0xE4, 0x39, 0x07, 0xC0, 0x70, 0x00, 0x07, 0x81, 0xC0, 0x78, 0xFE, 0x0F, + 0xC1, 0xF8, 0x3C, 0x33, 0x84, 0x70, 0x78, 0x87, 0x10, 0xE0, 0xF2, 0x0E, + 0x41, 0xC1, 0xC8, 0x39, 0x07, 0x87, 0xA0, 0x74, 0x0F, 0x0F, 0x40, 0xE8, + 0x1E, 0x1F, 0x01, 0xE0, 0x38, 0x3C, 0x07, 0xC0, 0xF0, 0xF8, 0x0F, 0x01, + 0xE1, 0xE0, 0x1E, 0x03, 0xC3, 0xC0, 0x38, 0x07, 0x07, 0x00, 0xF0, 0x1E, + 0x1E, 0x01, 0xE0, 0x3C, 0x3C, 0x03, 0x80, 0x79, 0x70, 0x07, 0x00, 0xE2, + 0xE0, 0x1E, 0x03, 0x8B, 0xC0, 0x3C, 0x07, 0x27, 0x80, 0x70, 0x0F, 0x8E, + 0x00, 0xE0, 0x1E, 0x00, 0x07, 0x81, 0xE3, 0xFC, 0x3F, 0x83, 0xC2, 0x3C, + 0x1E, 0x21, 0xE0, 0xF2, 0x0F, 0x07, 0x20, 0x70, 0x39, 0x07, 0x83, 0xD0, + 0x3C, 0x1F, 0x01, 0xE0, 0xE8, 0x0E, 0x0F, 0x80, 0xF0, 0x78, 0x07, 0x83, + 0xC0, 0x38, 0x1C, 0x01, 0xC1, 0xE0, 0x1E, 0x0F, 0x00, 0xF1, 0x70, 0x07, + 0x0B, 0x80, 0x38, 0xBC, 0x01, 0xC9, 0xE0, 0x0F, 0x8E, 0x00, 0x38, 0x00, + 0x00, 0x1F, 0x80, 0x07, 0x8F, 0x00, 0x70, 0x3C, 0x07, 0x00, 0xE0, 0x70, + 0x07, 0x87, 0x80, 0x3C, 0x78, 0x01, 0xE7, 0x80, 0x0F, 0x3C, 0x00, 0x7B, + 0xC0, 0x03, 0xDE, 0x00, 0x3D, 0xF0, 0x01, 0xEF, 0x80, 0x0F, 0x78, 0x00, + 0xF3, 0xC0, 0x07, 0x9E, 0x00, 0x78, 0xF0, 0x03, 0x87, 0x80, 0x38, 0x1C, + 0x03, 0x80, 0xF0, 0x38, 0x03, 0xC3, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x3C, + 0x3F, 0x00, 0x7F, 0x8F, 0xF0, 0x01, 0xF7, 0x3F, 0x00, 0x1D, 0x83, 0xF0, + 0x07, 0xA0, 0x3E, 0x00, 0xF8, 0x07, 0xC0, 0x1E, 0x00, 0xF8, 0x03, 0xC0, + 0x1F, 0x00, 0xF0, 0x03, 0xE0, 0x1E, 0x00, 0x7C, 0x03, 0xC0, 0x1F, 0x00, + 0x70, 0x03, 0xE0, 0x1E, 0x00, 0x78, 0x03, 0xC0, 0x1F, 0x00, 0x70, 0x03, + 0xC0, 0x0E, 0x00, 0xF8, 0x03, 0xC0, 0x1E, 0x00, 0x78, 0x07, 0x80, 0x0F, + 0x01, 0xE0, 0x01, 0xE0, 0x70, 0x00, 0x7C, 0x3C, 0x00, 0x0F, 0x7C, 0x00, + 0x01, 0xC0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x01, 0xE0, + 0x00, 0x00, 0x38, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, + 0x7E, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x03, 0x8D, + 0xC0, 0x38, 0x2E, 0x07, 0x80, 0xF0, 0x78, 0x07, 0x03, 0x80, 0x38, 0x38, + 0x03, 0xC3, 0xC0, 0x1E, 0x3C, 0x00, 0xE1, 0xE0, 0x07, 0x1E, 0x00, 0x78, + 0xF0, 0x03, 0x87, 0x80, 0x3C, 0x78, 0x01, 0xE3, 0xC0, 0x1F, 0x1E, 0x01, + 0x70, 0xF0, 0x17, 0x87, 0x80, 0xBC, 0x3C, 0x09, 0xC0, 0xF1, 0x8E, 0x07, + 0xF8, 0xF0, 0x1F, 0x07, 0x80, 0x00, 0x38, 0x00, 0x03, 0xC0, 0x00, 0x1E, + 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, + 0x3E, 0x00, 0x0F, 0xFE, 0x00, 0x07, 0x87, 0x3F, 0x87, 0xC3, 0xC7, 0xE1, + 0xE6, 0xF0, 0xF6, 0x00, 0x72, 0x00, 0x3A, 0x00, 0x1D, 0x00, 0x1F, 0x00, + 0x0E, 0x80, 0x07, 0x80, 0x03, 0xC0, 0x03, 0xC0, 0x01, 0xE0, 0x00, 0xF0, + 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1C, 0x00, 0x1E, 0x00, 0x0F, + 0x00, 0x00, 0x01, 0xF8, 0x81, 0x87, 0xC1, 0x80, 0xE1, 0xC0, 0x60, 0xE0, + 0x10, 0x70, 0x08, 0x3C, 0x04, 0x1F, 0x00, 0x07, 0xC0, 0x03, 0xE0, 0x00, + 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x03, 0xC1, 0x01, 0xE0, 0x80, 0x70, + 0x40, 0x38, 0x30, 0x1C, 0x38, 0x0C, 0x1C, 0x0E, 0x0F, 0x0E, 0x04, 0x7C, + 0x00, 0x00, 0xC0, 0x18, 0x03, 0x80, 0x78, 0x1F, 0x03, 0xFF, 0x7F, 0xF0, + 0xF0, 0x0E, 0x00, 0xE0, 0x1E, 0x01, 0xE0, 0x1C, 0x01, 0xC0, 0x3C, 0x03, + 0xC0, 0x38, 0x03, 0x80, 0x78, 0x07, 0x80, 0x70, 0x8F, 0x10, 0xF1, 0x0F, + 0x20, 0xFC, 0x07, 0x80, 0x00, 0x00, 0x00, 0xF0, 0x0E, 0x7F, 0x00, 0xE0, + 0xF0, 0x1E, 0x0E, 0x01, 0xE1, 0xE0, 0x3C, 0x1E, 0x03, 0xC1, 0xE0, 0x3C, + 0x1C, 0x07, 0xC3, 0xC0, 0x78, 0x3C, 0x0F, 0x83, 0xC0, 0xB8, 0x38, 0x1F, + 0x87, 0x83, 0x70, 0x78, 0x27, 0x07, 0x86, 0x70, 0x70, 0xC7, 0x1F, 0x08, + 0xE1, 0xE1, 0x0E, 0x2E, 0x60, 0xE4, 0xFC, 0x0F, 0x87, 0x00, 0x70, 0x1C, + 0x03, 0xBF, 0x00, 0xF1, 0xE0, 0x3C, 0x78, 0x07, 0x1E, 0x00, 0xC3, 0x80, + 0x30, 0xE0, 0x08, 0x38, 0x06, 0x0E, 0x01, 0x03, 0x80, 0xC0, 0xF0, 0x20, + 0x3C, 0x10, 0x07, 0x04, 0x01, 0xC2, 0x00, 0x71, 0x00, 0x1C, 0xC0, 0x07, + 0x60, 0x01, 0xF0, 0x00, 0x78, 0x00, 0x1C, 0x00, 0x06, 0x00, 0x01, 0x00, + 0x00, 0x0C, 0x00, 0x40, 0x3B, 0xF8, 0x01, 0x00, 0xF1, 0xE0, 0x0C, 0x03, + 0xC3, 0x80, 0x78, 0x07, 0x0E, 0x01, 0xE0, 0x0C, 0x38, 0x0F, 0x80, 0x20, + 0xE0, 0x6E, 0x00, 0x83, 0x81, 0x38, 0x04, 0x0F, 0x0C, 0xE0, 0x10, 0x1C, + 0x23, 0x80, 0x80, 0x71, 0x8E, 0x06, 0x01, 0xCC, 0x38, 0x10, 0x07, 0x20, + 0xE0, 0x80, 0x1D, 0x83, 0x86, 0x00, 0x7C, 0x07, 0x30, 0x01, 0xF0, 0x1C, + 0x80, 0x07, 0x80, 0x74, 0x00, 0x1E, 0x01, 0xF0, 0x00, 0x70, 0x07, 0x80, + 0x01, 0xC0, 0x1C, 0x00, 0x06, 0x00, 0x60, 0x00, 0x10, 0x01, 0x00, 0x00, + 0x00, 0xE0, 0x38, 0x1F, 0x81, 0xF0, 0x8F, 0x09, 0x80, 0x3C, 0x40, 0x00, + 0x72, 0x00, 0x01, 0xD0, 0x00, 0x07, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0x38, + 0x00, 0x00, 0xE0, 0x00, 0x03, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x7C, 0x00, + 0x01, 0x70, 0x00, 0x09, 0xC0, 0x00, 0x67, 0x00, 0x01, 0x1E, 0x10, 0x08, + 0x38, 0x40, 0x40, 0xE2, 0x39, 0x03, 0xD0, 0xF8, 0x0F, 0x83, 0xC0, 0x1C, + 0x00, 0x07, 0x80, 0x33, 0xFC, 0x03, 0xC1, 0xE0, 0x1E, 0x07, 0x80, 0x70, + 0x3C, 0x01, 0x80, 0xE0, 0x0C, 0x07, 0x80, 0x40, 0x3C, 0x02, 0x00, 0xE0, + 0x20, 0x07, 0x81, 0x00, 0x3C, 0x18, 0x01, 0xE0, 0x80, 0x07, 0x0C, 0x00, + 0x38, 0x40, 0x01, 0xE4, 0x00, 0x0F, 0x60, 0x00, 0x3A, 0x00, 0x01, 0xF0, + 0x00, 0x0F, 0x00, 0x00, 0x70, 0x00, 0x03, 0x80, 0x00, 0x18, 0x00, 0x00, + 0x80, 0x00, 0x0C, 0x00, 0x00, 0x40, 0x00, 0x04, 0x00, 0x00, 0x40, 0x00, + 0x04, 0x00, 0x0E, 0x40, 0x00, 0x7C, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x0F, + 0xFF, 0x87, 0xFF, 0x82, 0x00, 0x83, 0x00, 0xC1, 0x00, 0xC0, 0x00, 0xC0, + 0x00, 0xC0, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x20, + 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x18, 0x00, 0x1E, + 0x00, 0x1F, 0xC0, 0x1F, 0xF0, 0xE8, 0xFC, 0x70, 0x1E, 0x38, 0x03, 0x88, + 0x00, 0x78, 0x00, 0x0F, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x0E, 0x00, 0x0F, + 0x00, 0x07, 0x80, 0x03, 0x80, 0x01, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, + 0x70, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x0F, 0x00, + 0x07, 0x80, 0x07, 0x80, 0x03, 0xC0, 0x07, 0xC0, 0x07, 0xC0, 0x00, 0x80, + 0x00, 0x60, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x0F, 0x00, 0x07, + 0x80, 0x03, 0x80, 0x01, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, 0x70, 0x00, + 0x38, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x01, 0x80, + 0x00, 0x70, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xE0, 0x00, 0x18, 0x00, 0x0E, 0x00, 0x06, 0x00, 0x07, + 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0E, + 0x00, 0x0E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x3C, + 0x00, 0x3C, 0x00, 0x38, 0x00, 0x38, 0x00, 0x18, 0x00, 0x08, 0x00, 0x1C, + 0x00, 0x7E, 0x00, 0x78, 0x00, 0xF0, 0x00, 0xE0, 0x01, 0xE0, 0x01, 0xE0, + 0x01, 0xC0, 0x01, 0xC0, 0x03, 0xC0, 0x03, 0x80, 0x03, 0x80, 0x07, 0x80, + 0x07, 0x80, 0x07, 0x00, 0x07, 0x00, 0x0F, 0x00, 0x0E, 0x00, 0x1C, 0x00, + 0xF8, 0x00, 0x1F, 0x80, 0x00, 0xFF, 0x80, 0xC7, 0xFF, 0x87, 0xBC, 0x3F, + 0xFE, 0x60, 0x3F, 0xF0, 0x00, 0x1F, 0x00}; + +const GFXglyph FreeSerifItalic24pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 12, 0, 1}, // 0x20 ' ' + {0, 12, 32, 16, 2, -30}, // 0x21 '!' + {48, 14, 12, 16, 6, -31}, // 0x22 '"' + {69, 25, 31, 23, 0, -30}, // 0x23 '#' + {166, 21, 38, 24, 2, -33}, // 0x24 '$' + {266, 33, 32, 39, 4, -30}, // 0x25 '%' + {398, 30, 33, 37, 4, -31}, // 0x26 '&' + {522, 5, 12, 9, 6, -31}, // 0x27 ''' + {530, 13, 39, 16, 2, -30}, // 0x28 '(' + {594, 13, 39, 16, 0, -30}, // 0x29 ')' + {658, 16, 20, 23, 7, -31}, // 0x2A '*' + {698, 23, 23, 32, 4, -22}, // 0x2B '+' + {765, 7, 11, 12, -1, -4}, // 0x2C ',' + {775, 11, 3, 16, 2, -11}, // 0x2D '-' + {780, 5, 5, 12, 1, -3}, // 0x2E '.' + {784, 21, 33, 14, 0, -31}, // 0x2F '/' + {871, 21, 31, 23, 2, -30}, // 0x30 '0' + {953, 17, 32, 23, 2, -31}, // 0x31 '1' + {1021, 21, 31, 24, 0, -30}, // 0x32 '2' + {1103, 22, 32, 23, 0, -31}, // 0x33 '3' + {1191, 22, 32, 23, 0, -31}, // 0x34 '4' + {1279, 22, 32, 24, 0, -31}, // 0x35 '5' + {1367, 23, 32, 23, 1, -31}, // 0x36 '6' + {1459, 21, 32, 23, 4, -31}, // 0x37 '7' + {1543, 22, 32, 23, 1, -31}, // 0x38 '8' + {1631, 22, 33, 23, 1, -31}, // 0x39 '9' + {1722, 9, 22, 12, 2, -20}, // 0x3A ':' + {1747, 11, 27, 12, 1, -20}, // 0x3B ';' + {1785, 23, 25, 27, 3, -24}, // 0x3C '<' + {1857, 24, 12, 31, 4, -17}, // 0x3D '=' + {1893, 24, 25, 27, 3, -24}, // 0x3E '>' + {1968, 16, 33, 21, 6, -31}, // 0x3F '?' + {2034, 33, 33, 37, 3, -31}, // 0x40 '@' + {2171, 29, 31, 31, 0, -30}, // 0x41 'A' + {2284, 28, 31, 28, 0, -30}, // 0x42 'B' + {2393, 30, 33, 29, 2, -31}, // 0x43 'C' + {2517, 33, 31, 33, 0, -30}, // 0x44 'D' + {2645, 29, 31, 27, 0, -30}, // 0x45 'E' + {2758, 29, 31, 27, 0, -30}, // 0x46 'F' + {2871, 31, 33, 32, 2, -31}, // 0x47 'G' + {2999, 36, 31, 33, 0, -30}, // 0x48 'H' + {3139, 18, 31, 15, 0, -30}, // 0x49 'I' + {3209, 23, 32, 20, 0, -30}, // 0x4A 'J' + {3301, 33, 31, 30, 0, -30}, // 0x4B 'K' + {3429, 27, 31, 27, 0, -30}, // 0x4C 'L' + {3534, 42, 31, 39, 0, -30}, // 0x4D 'M' + {3697, 35, 32, 32, 0, -30}, // 0x4E 'N' + {3837, 30, 33, 31, 2, -31}, // 0x4F 'O' + {3961, 29, 31, 27, 0, -30}, // 0x50 'P' + {4074, 30, 41, 31, 2, -31}, // 0x51 'Q' + {4228, 28, 31, 29, 0, -30}, // 0x52 'R' + {4337, 23, 33, 21, 0, -31}, // 0x53 'S' + {4432, 27, 31, 28, 4, -30}, // 0x54 'T' + {4537, 31, 32, 33, 5, -30}, // 0x55 'U' + {4661, 29, 32, 31, 6, -30}, // 0x56 'V' + {4777, 39, 32, 42, 6, -30}, // 0x57 'W' + {4933, 32, 31, 31, 0, -30}, // 0x58 'X' + {5057, 26, 31, 28, 5, -30}, // 0x59 'Y' + {5158, 29, 31, 26, 0, -30}, // 0x5A 'Z' + {5271, 17, 39, 18, 1, -31}, // 0x5B '[' + {5354, 17, 33, 23, 5, -31}, // 0x5C '\' + {5425, 17, 39, 18, 1, -31}, // 0x5D ']' + {5508, 20, 17, 20, 0, -31}, // 0x5E '^' + {5551, 24, 2, 23, 0, 5}, // 0x5F '_' + {5557, 8, 8, 12, 6, -31}, // 0x60 '`' + {5565, 21, 21, 23, 1, -20}, // 0x61 'a' + {5621, 21, 33, 22, 1, -31}, // 0x62 'b' + {5708, 18, 22, 19, 1, -20}, // 0x63 'c' + {5758, 24, 33, 23, 1, -31}, // 0x64 'd' + {5857, 18, 22, 19, 1, -20}, // 0x65 'e' + {5907, 27, 42, 20, -4, -31}, // 0x66 'f' + {6049, 21, 31, 21, -1, -20}, // 0x67 'g' + {6131, 21, 32, 23, 1, -31}, // 0x68 'h' + {6215, 10, 32, 12, 2, -30}, // 0x69 'i' + {6255, 19, 41, 13, -3, -30}, // 0x6A 'j' + {6353, 21, 33, 21, 1, -31}, // 0x6B 'k' + {6440, 11, 33, 12, 2, -31}, // 0x6C 'l' + {6486, 31, 21, 34, 1, -20}, // 0x6D 'm' + {6568, 21, 21, 23, 1, -20}, // 0x6E 'n' + {6624, 21, 22, 22, 1, -20}, // 0x6F 'o' + {6682, 27, 31, 22, -4, -20}, // 0x70 'p' + {6787, 21, 31, 23, 1, -20}, // 0x71 'q' + {6869, 17, 21, 17, 1, -20}, // 0x72 'r' + {6914, 17, 22, 16, 0, -20}, // 0x73 's' + {6961, 12, 26, 11, 1, -24}, // 0x74 't' + {7000, 20, 22, 23, 1, -20}, // 0x75 'u' + {7055, 18, 22, 21, 3, -20}, // 0x76 'v' + {7105, 30, 22, 32, 2, -20}, // 0x77 'w' + {7188, 22, 22, 20, -1, -20}, // 0x78 'x' + {7249, 21, 31, 22, 1, -20}, // 0x79 'y' + {7331, 17, 24, 18, 0, -19}, // 0x7A 'z' + {7382, 17, 40, 19, 2, -31}, // 0x7B '{' + {7467, 3, 33, 13, 5, -31}, // 0x7C '|' + {7480, 16, 41, 19, 0, -32}, // 0x7D '}' + {7562, 22, 6, 25, 2, -14}}; // 0x7E '~' + +const GFXfont FreeSerifItalic24pt7b PROGMEM = { + (uint8_t *)FreeSerifItalic24pt7bBitmaps, + (GFXglyph *)FreeSerifItalic24pt7bGlyphs, 0x20, 0x7E, 56}; + +// Approx. 8251 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifItalic9pt7b.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifItalic9pt7b.h new file mode 100644 index 0000000..be4ad05 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifItalic9pt7b.h @@ -0,0 +1,204 @@ +#pragma once +#include + +const uint8_t FreeSerifItalic9pt7bBitmaps[] PROGMEM = { + 0x11, 0x12, 0x22, 0x24, 0x40, 0x0C, 0xDE, 0xE5, 0x40, 0x04, 0x82, 0x20, + 0x98, 0x24, 0x7F, 0xC4, 0x82, 0x23, 0xFC, 0x24, 0x11, 0x04, 0x83, 0x20, + 0x1C, 0x1B, 0x99, 0x4D, 0x26, 0x81, 0xC0, 0x70, 0x1C, 0x13, 0x49, 0xA4, + 0xDA, 0xC7, 0xC1, 0x00, 0x80, 0x1C, 0x61, 0xCF, 0x0E, 0x28, 0x30, 0xA0, + 0xC5, 0x03, 0x34, 0xE7, 0xAE, 0x40, 0xB1, 0x05, 0x84, 0x26, 0x20, 0x99, + 0x84, 0x3C, 0x03, 0x80, 0x6C, 0x06, 0xC0, 0x78, 0x06, 0x01, 0xEF, 0x66, + 0x24, 0x24, 0xC3, 0x8C, 0x10, 0xE3, 0x87, 0xCE, 0xFA, 0x08, 0x21, 0x08, + 0x61, 0x8C, 0x30, 0xC3, 0x0C, 0x30, 0x41, 0x02, 0x00, 0x10, 0x40, 0x82, + 0x0C, 0x30, 0xC3, 0x0C, 0x61, 0x84, 0x21, 0x08, 0x00, 0x30, 0xCA, 0x5E, + 0x6A, 0x93, 0x08, 0x08, 0x04, 0x02, 0x01, 0x0F, 0xF8, 0x40, 0x20, 0x10, + 0x08, 0x00, 0x56, 0xF0, 0xF0, 0x03, 0x02, 0x06, 0x04, 0x08, 0x08, 0x10, + 0x30, 0x20, 0x60, 0x40, 0xC0, 0x0E, 0x0C, 0x8C, 0x6C, 0x36, 0x1F, 0x0F, + 0x07, 0x87, 0xC3, 0x61, 0xB1, 0x88, 0x83, 0x80, 0x04, 0x70, 0xC3, 0x08, + 0x21, 0x86, 0x10, 0x43, 0x08, 0xF8, 0x1C, 0x67, 0x83, 0x03, 0x02, 0x06, + 0x0C, 0x08, 0x10, 0x20, 0x42, 0xFC, 0x0F, 0x08, 0xC0, 0x60, 0xC1, 0xE0, + 0x38, 0x0C, 0x06, 0x03, 0x01, 0x01, 0x1F, 0x00, 0x01, 0x01, 0x81, 0x41, + 0x61, 0x21, 0x11, 0x18, 0x88, 0xFF, 0x02, 0x03, 0x01, 0x00, 0x0F, 0x84, + 0x04, 0x03, 0x80, 0x60, 0x18, 0x0C, 0x06, 0x03, 0x03, 0x03, 0x1E, 0x00, + 0x01, 0x83, 0x87, 0x07, 0x03, 0x03, 0x73, 0xCD, 0x86, 0xC3, 0x61, 0xB1, + 0x88, 0xC3, 0xC0, 0x7F, 0x40, 0x80, 0x80, 0x40, 0x40, 0x60, 0x20, 0x20, + 0x10, 0x10, 0x18, 0x08, 0x00, 0x1E, 0x19, 0xCC, 0x66, 0x33, 0xB0, 0xE0, + 0x50, 0xCC, 0xC3, 0x61, 0xB0, 0xCC, 0xC3, 0xC0, 0x0E, 0x19, 0x8C, 0x6C, + 0x36, 0x1B, 0x0D, 0x86, 0xE6, 0x3F, 0x03, 0x03, 0x06, 0x0C, 0x00, 0x33, + 0x00, 0x00, 0xCC, 0x33, 0x00, 0x00, 0x44, 0x48, 0x01, 0x83, 0x86, 0x1C, + 0x0C, 0x03, 0x80, 0x30, 0x07, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x00, 0x0F, + 0xF8, 0xC0, 0x1C, 0x03, 0x80, 0x70, 0x18, 0x38, 0x70, 0xC0, 0x80, 0x00, + 0x3C, 0x8C, 0x18, 0x30, 0xC3, 0x0C, 0x20, 0x40, 0x80, 0x06, 0x00, 0x0F, + 0xC0, 0xC3, 0x0C, 0x04, 0xC7, 0xBC, 0x64, 0xE2, 0x27, 0x31, 0x39, 0x91, + 0xCC, 0x93, 0x3B, 0x0E, 0x00, 0x1F, 0x80, 0x01, 0x00, 0x60, 0x14, 0x04, + 0xC0, 0x98, 0x23, 0x07, 0xE1, 0x04, 0x20, 0x88, 0x1B, 0x8F, 0x80, 0x3F, + 0xC1, 0x8C, 0x21, 0x8C, 0x31, 0x8C, 0x3E, 0x04, 0x61, 0x86, 0x30, 0xC4, + 0x19, 0x86, 0x7F, 0x80, 0x07, 0x91, 0x86, 0x30, 0x26, 0x02, 0x60, 0x0C, + 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0x61, 0x83, 0xE0, 0x3F, 0xC0, + 0x63, 0x82, 0x0C, 0x30, 0x31, 0x81, 0x8C, 0x0C, 0x40, 0x66, 0x07, 0x30, + 0x31, 0x03, 0x18, 0x71, 0xFE, 0x00, 0x3F, 0xF0, 0xC2, 0x08, 0x21, 0x80, + 0x19, 0x81, 0xF8, 0x11, 0x03, 0x10, 0x30, 0x02, 0x04, 0x60, 0x8F, 0xF8, + 0x3F, 0xF0, 0xC2, 0x08, 0x21, 0x80, 0x19, 0x81, 0xF8, 0x11, 0x03, 0x10, + 0x30, 0x02, 0x00, 0x60, 0x0F, 0x80, 0x07, 0x91, 0x87, 0x30, 0x26, 0x02, + 0x60, 0x0C, 0x00, 0xC1, 0xFC, 0x0C, 0xC0, 0xCC, 0x0C, 0x60, 0x83, 0xF0, + 0x3E, 0x3C, 0x30, 0x60, 0x81, 0x06, 0x0C, 0x18, 0x30, 0x7F, 0x81, 0x06, + 0x0C, 0x18, 0x30, 0x60, 0x81, 0x06, 0x0C, 0x3C, 0x78, 0x1E, 0x18, 0x20, + 0xC1, 0x83, 0x04, 0x18, 0x30, 0x41, 0x87, 0x80, 0x0F, 0x81, 0x80, 0x80, + 0xC0, 0x60, 0x20, 0x30, 0x18, 0x0C, 0x04, 0x36, 0x1E, 0x00, 0x3E, 0x78, + 0x61, 0x82, 0x10, 0x31, 0x01, 0xB0, 0x0E, 0x00, 0x58, 0x06, 0x60, 0x33, + 0x01, 0x0C, 0x18, 0x61, 0xE7, 0xC0, 0x3E, 0x01, 0x80, 0x20, 0x0C, 0x01, + 0x80, 0x30, 0x04, 0x01, 0x80, 0x30, 0x04, 0x0D, 0x83, 0x7F, 0xE0, 0x1C, + 0x07, 0x0C, 0x0E, 0x0C, 0x14, 0x14, 0x1C, 0x14, 0x2C, 0x16, 0x4C, 0x26, + 0x48, 0x26, 0x98, 0x27, 0x18, 0x27, 0x10, 0x42, 0x30, 0xF4, 0x7C, 0x38, + 0x78, 0x60, 0x83, 0x04, 0x2C, 0x41, 0x22, 0x09, 0x10, 0x4D, 0x84, 0x28, + 0x21, 0x41, 0x06, 0x10, 0x21, 0xE1, 0x00, 0x07, 0x83, 0x18, 0xC1, 0xB0, + 0x36, 0x07, 0xC0, 0xF0, 0x3E, 0x06, 0xC0, 0xD8, 0x31, 0x8C, 0x1E, 0x00, + 0x3F, 0xC1, 0x9C, 0x21, 0x8C, 0x31, 0x86, 0x31, 0x87, 0xE1, 0x80, 0x30, + 0x04, 0x01, 0x80, 0x78, 0x00, 0x07, 0x83, 0x18, 0xC1, 0x98, 0x36, 0x07, + 0xC0, 0xF0, 0x1E, 0x06, 0xC0, 0xD8, 0x31, 0x04, 0x13, 0x01, 0x80, 0x70, + 0xB7, 0xE0, 0x3F, 0xC1, 0x8C, 0x21, 0x8C, 0x31, 0x8C, 0x3F, 0x04, 0xC1, + 0x98, 0x31, 0x84, 0x31, 0x86, 0x78, 0x70, 0x1E, 0x4C, 0x63, 0x08, 0xC0, + 0x38, 0x07, 0x00, 0x60, 0x0C, 0x43, 0x10, 0xC6, 0x62, 0x70, 0x7F, 0xE9, + 0x8E, 0x31, 0x04, 0x01, 0x80, 0x30, 0x06, 0x00, 0x80, 0x30, 0x06, 0x00, + 0x80, 0x7E, 0x00, 0x7C, 0xF3, 0x02, 0x30, 0x46, 0x04, 0x60, 0x46, 0x04, + 0x40, 0x8C, 0x08, 0xC0, 0x8C, 0x10, 0xE3, 0x03, 0xC0, 0xF8, 0xEC, 0x0C, + 0x81, 0x18, 0x43, 0x08, 0x62, 0x0C, 0x81, 0x90, 0x14, 0x03, 0x00, 0x60, + 0x08, 0x00, 0xFB, 0xCE, 0x43, 0x0C, 0x86, 0x11, 0x8C, 0x43, 0x38, 0x86, + 0xB2, 0x0D, 0x24, 0x1C, 0x50, 0x38, 0xA0, 0x21, 0x80, 0x42, 0x01, 0x04, + 0x00, 0x3E, 0x71, 0x82, 0x0C, 0x40, 0xC8, 0x07, 0x00, 0x60, 0x06, 0x00, + 0xB0, 0x13, 0x02, 0x18, 0x61, 0x8F, 0x3E, 0xF9, 0xC8, 0x23, 0x10, 0xC8, + 0x34, 0x05, 0x01, 0x80, 0x40, 0x30, 0x0C, 0x03, 0x03, 0xE0, 0x3F, 0xE4, + 0x19, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0x40, 0x18, 0x06, 0x05, + 0x81, 0x7F, 0xE0, 0x0E, 0x10, 0x20, 0x81, 0x02, 0x04, 0x10, 0x20, 0x40, + 0x82, 0x04, 0x08, 0x1C, 0x00, 0x81, 0x04, 0x18, 0x20, 0xC1, 0x04, 0x08, + 0x20, 0x41, 0x38, 0x20, 0x82, 0x08, 0x41, 0x04, 0x10, 0xC2, 0x08, 0x20, + 0x8C, 0x00, 0x18, 0x18, 0x2C, 0x24, 0x46, 0x42, 0x83, 0xFF, 0x80, 0xD8, + 0x80, 0x1F, 0x98, 0x98, 0x4C, 0x2C, 0x36, 0x33, 0x3A, 0xEE, 0x38, 0x08, + 0x04, 0x02, 0x03, 0x71, 0xCC, 0xC6, 0xC3, 0x63, 0x21, 0x93, 0x8F, 0x00, + 0x1F, 0x33, 0x60, 0xC0, 0xC0, 0xC0, 0xC4, 0x78, 0x01, 0x80, 0x40, 0x60, + 0x20, 0xF1, 0x89, 0x8C, 0xC4, 0xC2, 0x63, 0x33, 0xAE, 0xE0, 0x0E, 0x65, + 0x8B, 0x2F, 0x98, 0x31, 0x3C, 0x01, 0xE0, 0x40, 0x08, 0x02, 0x00, 0x40, + 0x3E, 0x03, 0x00, 0x40, 0x08, 0x01, 0x00, 0x60, 0x0C, 0x01, 0x00, 0x20, + 0x04, 0x01, 0x00, 0xC0, 0x00, 0x1E, 0x19, 0xD8, 0xCC, 0xE1, 0xC3, 0x01, + 0xE0, 0xBC, 0x82, 0x41, 0x31, 0x0F, 0x00, 0x38, 0x08, 0x04, 0x02, 0x03, + 0x39, 0x6C, 0xC6, 0x46, 0x63, 0x21, 0x11, 0xB8, 0xE0, 0x30, 0x00, 0xE2, + 0x44, 0xC8, 0xCE, 0x06, 0x00, 0x00, 0x00, 0xC0, 0x83, 0x04, 0x08, 0x10, + 0x60, 0x81, 0x02, 0x04, 0x70, 0x38, 0x10, 0x10, 0x10, 0x37, 0x22, 0x24, + 0x38, 0x78, 0x48, 0x4D, 0xC6, 0x73, 0x32, 0x26, 0x64, 0x4C, 0xDE, 0x77, + 0x39, 0x5E, 0xCC, 0xCC, 0xCE, 0x66, 0x62, 0x22, 0x11, 0x11, 0xB9, 0x8E, + 0x77, 0x3B, 0x33, 0x62, 0x62, 0x42, 0x4D, 0xCE, 0x0F, 0x18, 0xD8, 0x7C, + 0x3C, 0x3E, 0x1B, 0x18, 0xF0, 0x3B, 0x87, 0x31, 0x8C, 0x43, 0x31, 0x88, + 0x62, 0x30, 0xF0, 0x60, 0x10, 0x04, 0x03, 0x80, 0x0F, 0x18, 0x98, 0x4C, + 0x2C, 0x26, 0x33, 0x38, 0xEC, 0x04, 0x02, 0x03, 0x03, 0xC0, 0x76, 0x50, + 0xC1, 0x06, 0x08, 0x10, 0x60, 0x1A, 0x6C, 0xC8, 0xC0, 0xD1, 0xB3, 0x5C, + 0x23, 0xC8, 0xC4, 0x21, 0x18, 0xE0, 0xC3, 0x42, 0x42, 0xC6, 0x86, 0x8C, + 0x9D, 0xEE, 0x62, 0xC4, 0x89, 0xA3, 0x47, 0x0C, 0x10, 0xE2, 0x2C, 0x44, + 0xD8, 0x9D, 0x23, 0xA4, 0x65, 0x0C, 0xC1, 0x10, 0x19, 0x95, 0x43, 0x01, + 0x80, 0xC0, 0xA0, 0x91, 0x8E, 0x70, 0x88, 0x46, 0x23, 0x20, 0x90, 0x50, + 0x28, 0x18, 0x08, 0x08, 0x08, 0x18, 0x00, 0x3F, 0x42, 0x04, 0x08, 0x10, + 0x20, 0x40, 0x72, 0x0E, 0x08, 0x61, 0x04, 0x30, 0x86, 0x08, 0x61, 0x04, + 0x30, 0xC3, 0x8F, 0x00, 0xFF, 0xF0, 0x1E, 0x0C, 0x10, 0x20, 0xC1, 0x82, + 0x04, 0x1C, 0x30, 0x40, 0x83, 0x04, 0x08, 0x20, 0x60, 0x99, 0x8E}; + +const GFXglyph FreeSerifItalic9pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 5, 0, 1}, // 0x20 ' ' + {0, 4, 12, 6, 1, -11}, // 0x21 '!' + {6, 5, 4, 6, 3, -11}, // 0x22 '"' + {9, 10, 12, 9, 0, -11}, // 0x23 '#' + {24, 9, 15, 9, 1, -12}, // 0x24 '$' + {41, 14, 12, 15, 1, -11}, // 0x25 '%' + {62, 12, 12, 14, 1, -11}, // 0x26 '&' + {80, 2, 4, 4, 3, -11}, // 0x27 ''' + {81, 6, 15, 6, 1, -11}, // 0x28 '(' + {93, 6, 15, 6, 0, -11}, // 0x29 ')' + {105, 6, 8, 9, 3, -11}, // 0x2A '*' + {111, 9, 9, 12, 1, -8}, // 0x2B '+' + {122, 2, 4, 5, 0, -1}, // 0x2C ',' + {123, 4, 1, 6, 1, -3}, // 0x2D '-' + {124, 2, 2, 5, 0, -1}, // 0x2E '.' + {125, 8, 12, 5, 0, -11}, // 0x2F '/' + {137, 9, 13, 9, 1, -12}, // 0x30 '0' + {152, 6, 13, 9, 1, -12}, // 0x31 '1' + {162, 8, 12, 9, 1, -11}, // 0x32 '2' + {174, 9, 12, 9, 0, -11}, // 0x33 '3' + {188, 9, 12, 9, 0, -11}, // 0x34 '4' + {202, 9, 12, 9, 0, -11}, // 0x35 '5' + {216, 9, 13, 9, 1, -12}, // 0x36 '6' + {231, 9, 12, 9, 1, -11}, // 0x37 '7' + {245, 9, 13, 9, 1, -12}, // 0x38 '8' + {260, 9, 13, 9, 0, -12}, // 0x39 '9' + {275, 4, 8, 4, 1, -7}, // 0x3A ':' + {279, 4, 10, 4, 1, -7}, // 0x3B ';' + {284, 9, 9, 10, 1, -8}, // 0x3C '<' + {295, 9, 5, 12, 2, -6}, // 0x3D '=' + {301, 9, 9, 10, 1, -8}, // 0x3E '>' + {312, 7, 12, 8, 2, -11}, // 0x3F '?' + {323, 13, 12, 14, 1, -11}, // 0x40 '@' + {343, 11, 11, 12, 0, -10}, // 0x41 'A' + {359, 11, 12, 11, 0, -11}, // 0x42 'B' + {376, 12, 12, 11, 1, -11}, // 0x43 'C' + {394, 13, 12, 13, 0, -11}, // 0x44 'D' + {414, 12, 12, 10, 0, -11}, // 0x45 'E' + {432, 12, 12, 10, 0, -11}, // 0x46 'F' + {450, 12, 12, 12, 1, -11}, // 0x47 'G' + {468, 14, 12, 13, 0, -11}, // 0x48 'H' + {489, 7, 12, 6, 0, -11}, // 0x49 'I' + {500, 9, 12, 8, 0, -11}, // 0x4A 'J' + {514, 13, 12, 12, 0, -11}, // 0x4B 'K' + {534, 11, 12, 10, 0, -11}, // 0x4C 'L' + {551, 16, 12, 15, 0, -11}, // 0x4D 'M' + {575, 13, 12, 12, 0, -11}, // 0x4E 'N' + {595, 11, 12, 12, 1, -11}, // 0x4F 'O' + {612, 11, 12, 10, 0, -11}, // 0x50 'P' + {629, 11, 15, 12, 1, -11}, // 0x51 'Q' + {650, 11, 12, 11, 0, -11}, // 0x52 'R' + {667, 10, 12, 8, 0, -11}, // 0x53 'S' + {682, 11, 12, 11, 2, -11}, // 0x54 'T' + {699, 12, 12, 13, 2, -11}, // 0x55 'U' + {717, 11, 12, 12, 2, -11}, // 0x56 'V' + {734, 15, 12, 16, 2, -11}, // 0x57 'W' + {757, 12, 12, 12, 0, -11}, // 0x58 'X' + {775, 10, 12, 11, 2, -11}, // 0x59 'Y' + {790, 11, 12, 10, 0, -11}, // 0x5A 'Z' + {807, 7, 15, 7, 0, -11}, // 0x5B '[' + {821, 6, 12, 9, 2, -11}, // 0x5C '\' + {830, 6, 15, 7, 1, -11}, // 0x5D ']' + {842, 8, 7, 8, 0, -11}, // 0x5E '^' + {849, 9, 1, 9, 0, 2}, // 0x5F '_' + {851, 3, 3, 5, 2, -11}, // 0x60 '`' + {853, 9, 8, 9, 0, -7}, // 0x61 'a' + {862, 9, 12, 9, 0, -11}, // 0x62 'b' + {876, 8, 8, 7, 0, -7}, // 0x63 'c' + {884, 9, 12, 9, 0, -11}, // 0x64 'd' + {898, 7, 8, 7, 0, -7}, // 0x65 'e' + {905, 11, 17, 8, -1, -12}, // 0x66 'f' + {929, 9, 12, 8, 0, -7}, // 0x67 'g' + {943, 9, 12, 9, 0, -11}, // 0x68 'h' + {957, 4, 12, 4, 1, -11}, // 0x69 'i' + {963, 7, 16, 5, -1, -11}, // 0x6A 'j' + {977, 8, 12, 8, 0, -11}, // 0x6B 'k' + {989, 4, 12, 5, 1, -11}, // 0x6C 'l' + {995, 13, 8, 13, 0, -7}, // 0x6D 'm' + {1008, 8, 8, 9, 0, -7}, // 0x6E 'n' + {1016, 9, 8, 9, 0, -7}, // 0x6F 'o' + {1025, 10, 12, 8, -1, -7}, // 0x70 'p' + {1040, 9, 12, 9, 0, -7}, // 0x71 'q' + {1054, 7, 8, 7, 0, -7}, // 0x72 'r' + {1061, 7, 8, 6, 0, -7}, // 0x73 's' + {1068, 5, 9, 4, 0, -8}, // 0x74 't' + {1074, 8, 8, 9, 1, -7}, // 0x75 'u' + {1082, 7, 8, 8, 1, -7}, // 0x76 'v' + {1089, 11, 8, 12, 1, -7}, // 0x77 'w' + {1100, 9, 8, 8, -1, -7}, // 0x78 'x' + {1109, 9, 12, 9, 0, -7}, // 0x79 'y' + {1123, 8, 9, 7, 0, -7}, // 0x7A 'z' + {1132, 6, 15, 7, 1, -11}, // 0x7B '{' + {1144, 1, 12, 5, 2, -11}, // 0x7C '|' + {1146, 7, 16, 7, 0, -12}, // 0x7D '}' + {1160, 8, 3, 10, 1, -5}}; // 0x7E '~' + +const GFXfont FreeSerifItalic9pt7b PROGMEM = { + (uint8_t *)FreeSerifItalic9pt7bBitmaps, + (GFXglyph *)FreeSerifItalic9pt7bGlyphs, 0x20, 0x7E, 22}; + +// Approx. 1835 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/Org_01.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/Org_01.h new file mode 100644 index 0000000..9b80258 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/Org_01.h @@ -0,0 +1,131 @@ +#pragma once +#include + +// Org_v01 by Orgdot (www.orgdot.com/aliasfonts). A tiny, +// stylized font with all characters within a 6 pixel height. + +const uint8_t Org_01Bitmaps[] PROGMEM = { + 0xE8, 0xA0, 0x57, 0xD5, 0xF5, 0x00, 0xFD, 0x3E, 0x5F, 0x80, 0x88, 0x88, + 0x88, 0x80, 0xF4, 0xBF, 0x2E, 0x80, 0x80, 0x6A, 0x40, 0x95, 0x80, 0xAA, + 0x80, 0x5D, 0x00, 0xC0, 0xF0, 0x80, 0x08, 0x88, 0x88, 0x00, 0xFC, 0x63, + 0x1F, 0x80, 0xF8, 0xF8, 0x7F, 0x0F, 0x80, 0xF8, 0x7E, 0x1F, 0x80, 0x8C, + 0x7E, 0x10, 0x80, 0xFC, 0x3E, 0x1F, 0x80, 0xFC, 0x3F, 0x1F, 0x80, 0xF8, + 0x42, 0x10, 0x80, 0xFC, 0x7F, 0x1F, 0x80, 0xFC, 0x7E, 0x1F, 0x80, 0x90, + 0xB0, 0x2A, 0x22, 0xF0, 0xF0, 0x88, 0xA8, 0xF8, 0x4E, 0x02, 0x00, 0xFD, + 0x6F, 0x0F, 0x80, 0xFC, 0x7F, 0x18, 0x80, 0xF4, 0x7D, 0x1F, 0x00, 0xFC, + 0x21, 0x0F, 0x80, 0xF4, 0x63, 0x1F, 0x00, 0xFC, 0x3F, 0x0F, 0x80, 0xFC, + 0x3F, 0x08, 0x00, 0xFC, 0x2F, 0x1F, 0x80, 0x8C, 0x7F, 0x18, 0x80, 0xF9, + 0x08, 0x4F, 0x80, 0x78, 0x85, 0x2F, 0x80, 0x8D, 0xB1, 0x68, 0x80, 0x84, + 0x21, 0x0F, 0x80, 0xFD, 0x6B, 0x5A, 0x80, 0xFC, 0x63, 0x18, 0x80, 0xFC, + 0x63, 0x1F, 0x80, 0xFC, 0x7F, 0x08, 0x00, 0xFC, 0x63, 0x3F, 0x80, 0xFC, + 0x7F, 0x29, 0x00, 0xFC, 0x3E, 0x1F, 0x80, 0xF9, 0x08, 0x42, 0x00, 0x8C, + 0x63, 0x1F, 0x80, 0x8C, 0x62, 0xA2, 0x00, 0xAD, 0x6B, 0x5F, 0x80, 0x8A, + 0x88, 0xA8, 0x80, 0x8C, 0x54, 0x42, 0x00, 0xF8, 0x7F, 0x0F, 0x80, 0xEA, + 0xC0, 0x82, 0x08, 0x20, 0x80, 0xD5, 0xC0, 0x54, 0xF8, 0x80, 0xF1, 0xFF, + 0x8F, 0x99, 0xF0, 0xF8, 0x8F, 0x1F, 0x99, 0xF0, 0xFF, 0x8F, 0x6B, 0xA4, + 0xF9, 0x9F, 0x10, 0x8F, 0x99, 0x90, 0xF0, 0x55, 0xC0, 0x8A, 0xF9, 0x90, + 0xF8, 0xFD, 0x63, 0x10, 0xF9, 0x99, 0xF9, 0x9F, 0xF9, 0x9F, 0x80, 0xF9, + 0x9F, 0x20, 0xF8, 0x88, 0x47, 0x1F, 0x27, 0xC8, 0x42, 0x00, 0x99, 0x9F, + 0x99, 0x97, 0x8C, 0x6B, 0xF0, 0x96, 0x69, 0x99, 0x9F, 0x10, 0x2E, 0x8F, + 0x2B, 0x22, 0xF8, 0x89, 0xA8, 0x0F, 0xE0}; + +const GFXglyph Org_01Glyphs[] PROGMEM = {{0, 0, 0, 6, 0, 1}, // 0x20 ' ' + {0, 1, 5, 2, 0, -4}, // 0x21 '!' + {1, 3, 1, 4, 0, -4}, // 0x22 '"' + {2, 5, 5, 6, 0, -4}, // 0x23 '#' + {6, 5, 5, 6, 0, -4}, // 0x24 '$' + {10, 5, 5, 6, 0, -4}, // 0x25 '%' + {14, 5, 5, 6, 0, -4}, // 0x26 '&' + {18, 1, 1, 2, 0, -4}, // 0x27 ''' + {19, 2, 5, 3, 0, -4}, // 0x28 '(' + {21, 2, 5, 3, 0, -4}, // 0x29 ')' + {23, 3, 3, 4, 0, -3}, // 0x2A '*' + {25, 3, 3, 4, 0, -3}, // 0x2B '+' + {27, 1, 2, 2, 0, 0}, // 0x2C ',' + {28, 4, 1, 5, 0, -2}, // 0x2D '-' + {29, 1, 1, 2, 0, 0}, // 0x2E '.' + {30, 5, 5, 6, 0, -4}, // 0x2F '/' + {34, 5, 5, 6, 0, -4}, // 0x30 '0' + {38, 1, 5, 2, 0, -4}, // 0x31 '1' + {39, 5, 5, 6, 0, -4}, // 0x32 '2' + {43, 5, 5, 6, 0, -4}, // 0x33 '3' + {47, 5, 5, 6, 0, -4}, // 0x34 '4' + {51, 5, 5, 6, 0, -4}, // 0x35 '5' + {55, 5, 5, 6, 0, -4}, // 0x36 '6' + {59, 5, 5, 6, 0, -4}, // 0x37 '7' + {63, 5, 5, 6, 0, -4}, // 0x38 '8' + {67, 5, 5, 6, 0, -4}, // 0x39 '9' + {71, 1, 4, 2, 0, -3}, // 0x3A ':' + {72, 1, 4, 2, 0, -3}, // 0x3B ';' + {73, 3, 5, 4, 0, -4}, // 0x3C '<' + {75, 4, 3, 5, 0, -3}, // 0x3D '=' + {77, 3, 5, 4, 0, -4}, // 0x3E '>' + {79, 5, 5, 6, 0, -4}, // 0x3F '?' + {83, 5, 5, 6, 0, -4}, // 0x40 '@' + {87, 5, 5, 6, 0, -4}, // 0x41 'A' + {91, 5, 5, 6, 0, -4}, // 0x42 'B' + {95, 5, 5, 6, 0, -4}, // 0x43 'C' + {99, 5, 5, 6, 0, -4}, // 0x44 'D' + {103, 5, 5, 6, 0, -4}, // 0x45 'E' + {107, 5, 5, 6, 0, -4}, // 0x46 'F' + {111, 5, 5, 6, 0, -4}, // 0x47 'G' + {115, 5, 5, 6, 0, -4}, // 0x48 'H' + {119, 5, 5, 6, 0, -4}, // 0x49 'I' + {123, 5, 5, 6, 0, -4}, // 0x4A 'J' + {127, 5, 5, 6, 0, -4}, // 0x4B 'K' + {131, 5, 5, 6, 0, -4}, // 0x4C 'L' + {135, 5, 5, 6, 0, -4}, // 0x4D 'M' + {139, 5, 5, 6, 0, -4}, // 0x4E 'N' + {143, 5, 5, 6, 0, -4}, // 0x4F 'O' + {147, 5, 5, 6, 0, -4}, // 0x50 'P' + {151, 5, 5, 6, 0, -4}, // 0x51 'Q' + {155, 5, 5, 6, 0, -4}, // 0x52 'R' + {159, 5, 5, 6, 0, -4}, // 0x53 'S' + {163, 5, 5, 6, 0, -4}, // 0x54 'T' + {167, 5, 5, 6, 0, -4}, // 0x55 'U' + {171, 5, 5, 6, 0, -4}, // 0x56 'V' + {175, 5, 5, 6, 0, -4}, // 0x57 'W' + {179, 5, 5, 6, 0, -4}, // 0x58 'X' + {183, 5, 5, 6, 0, -4}, // 0x59 'Y' + {187, 5, 5, 6, 0, -4}, // 0x5A 'Z' + {191, 2, 5, 3, 0, -4}, // 0x5B '[' + {193, 5, 5, 6, 0, -4}, // 0x5C '\' + {197, 2, 5, 3, 0, -4}, // 0x5D ']' + {199, 3, 2, 4, 0, -4}, // 0x5E '^' + {200, 5, 1, 6, 0, 1}, // 0x5F '_' + {201, 1, 1, 2, 0, -4}, // 0x60 '`' + {202, 4, 4, 5, 0, -3}, // 0x61 'a' + {204, 4, 5, 5, 0, -4}, // 0x62 'b' + {207, 4, 4, 5, 0, -3}, // 0x63 'c' + {209, 4, 5, 5, 0, -4}, // 0x64 'd' + {212, 4, 4, 5, 0, -3}, // 0x65 'e' + {214, 3, 5, 4, 0, -4}, // 0x66 'f' + {216, 4, 5, 5, 0, -3}, // 0x67 'g' + {219, 4, 5, 5, 0, -4}, // 0x68 'h' + {222, 1, 4, 2, 0, -3}, // 0x69 'i' + {223, 2, 5, 3, 0, -3}, // 0x6A 'j' + {225, 4, 5, 5, 0, -4}, // 0x6B 'k' + {228, 1, 5, 2, 0, -4}, // 0x6C 'l' + {229, 5, 4, 6, 0, -3}, // 0x6D 'm' + {232, 4, 4, 5, 0, -3}, // 0x6E 'n' + {234, 4, 4, 5, 0, -3}, // 0x6F 'o' + {236, 4, 5, 5, 0, -3}, // 0x70 'p' + {239, 4, 5, 5, 0, -3}, // 0x71 'q' + {242, 4, 4, 5, 0, -3}, // 0x72 'r' + {244, 4, 4, 5, 0, -3}, // 0x73 's' + {246, 5, 5, 6, 0, -4}, // 0x74 't' + {250, 4, 4, 5, 0, -3}, // 0x75 'u' + {252, 4, 4, 5, 0, -3}, // 0x76 'v' + {254, 5, 4, 6, 0, -3}, // 0x77 'w' + {257, 4, 4, 5, 0, -3}, // 0x78 'x' + {259, 4, 5, 5, 0, -3}, // 0x79 'y' + {262, 4, 4, 5, 0, -3}, // 0x7A 'z' + {264, 3, 5, 4, 0, -4}, // 0x7B '{' + {266, 1, 5, 2, 0, -4}, // 0x7C '|' + {267, 3, 5, 4, 0, -4}, // 0x7D '}' + {269, 5, 3, 6, 0, -3}}; // 0x7E '~' + +const GFXfont Org_01 PROGMEM = {(uint8_t *)Org_01Bitmaps, + (GFXglyph *)Org_01Glyphs, 0x20, 0x7E, 7}; + +// Approx. 943 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/Picopixel.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/Picopixel.h new file mode 100644 index 0000000..463b1b5 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/Picopixel.h @@ -0,0 +1,123 @@ +#pragma once +#include + +// Picopixel by Sebastian Weber. A tiny font +// with all characters within a 6 pixel height. + +const uint8_t PicopixelBitmaps[] PROGMEM = { + 0xE8, 0xB4, 0x57, 0xD5, 0xF5, 0x00, 0x4E, 0x3E, 0x80, 0xA5, 0x4A, 0x4A, + 0x5A, 0x50, 0xC0, 0x6A, 0x40, 0x95, 0x80, 0xAA, 0x80, 0x5D, 0x00, 0x60, + 0xE0, 0x80, 0x25, 0x48, 0x56, 0xD4, 0x75, 0x40, 0xC5, 0x4E, 0xC5, 0x1C, + 0x97, 0x92, 0xF3, 0x1C, 0x53, 0x54, 0xE5, 0x48, 0x55, 0x54, 0x55, 0x94, + 0xA0, 0x46, 0x64, 0xE3, 0x80, 0x98, 0xC5, 0x04, 0x56, 0xC6, 0x57, 0xDA, + 0xD7, 0x5C, 0x72, 0x46, 0xD6, 0xDC, 0xF3, 0xCE, 0xF3, 0x48, 0x72, 0xD4, + 0xB7, 0xDA, 0xF8, 0x24, 0xD4, 0xBB, 0x5A, 0x92, 0x4E, 0x8E, 0xEB, 0x58, + 0x80, 0x9D, 0xB9, 0x90, 0x56, 0xD4, 0xD7, 0x48, 0x56, 0xD4, 0x40, 0xD7, + 0x5A, 0x71, 0x1C, 0xE9, 0x24, 0xB6, 0xD4, 0xB6, 0xA4, 0x8C, 0x6B, 0x55, + 0x00, 0xB5, 0x5A, 0xB5, 0x24, 0xE5, 0x4E, 0xEA, 0xC0, 0x91, 0x12, 0xD5, + 0xC0, 0x54, 0xF0, 0x90, 0xC7, 0xF0, 0x93, 0x5E, 0x71, 0x80, 0x25, 0xDE, + 0x5E, 0x30, 0x6E, 0x80, 0x77, 0x9C, 0x93, 0x5A, 0xB8, 0x45, 0x60, 0x92, + 0xEA, 0xAA, 0x40, 0xD5, 0x6A, 0xD6, 0x80, 0x55, 0x00, 0xD7, 0x40, 0x75, + 0x90, 0xE8, 0x71, 0xE0, 0xBA, 0x40, 0xB5, 0x80, 0xB5, 0x00, 0x8D, 0x54, + 0xAA, 0x80, 0xAC, 0xE0, 0xE5, 0x70, 0x6A, 0x26, 0xFC, 0xC8, 0xAC, 0x5A}; + +const GFXglyph PicopixelGlyphs[] PROGMEM = {{0, 0, 0, 2, 0, 1}, // 0x20 ' ' + {0, 1, 5, 2, 0, -4}, // 0x21 '!' + {1, 3, 2, 4, 0, -4}, // 0x22 '"' + {2, 5, 5, 6, 0, -4}, // 0x23 '#' + {6, 3, 6, 4, 0, -4}, // 0x24 '$' + {9, 3, 5, 4, 0, -4}, // 0x25 '%' + {11, 4, 5, 5, 0, -4}, // 0x26 '&' + {14, 1, 2, 2, 0, -4}, // 0x27 ''' + {15, 2, 5, 3, 0, -4}, // 0x28 '(' + {17, 2, 5, 3, 0, -4}, // 0x29 ')' + {19, 3, 3, 4, 0, -3}, // 0x2A '*' + {21, 3, 3, 4, 0, -3}, // 0x2B '+' + {23, 2, 2, 3, 0, 0}, // 0x2C ',' + {24, 3, 1, 4, 0, -2}, // 0x2D '-' + {25, 1, 1, 2, 0, 0}, // 0x2E '.' + {26, 3, 5, 4, 0, -4}, // 0x2F '/' + {28, 3, 5, 4, 0, -4}, // 0x30 '0' + {30, 2, 5, 3, 0, -4}, // 0x31 '1' + {32, 3, 5, 4, 0, -4}, // 0x32 '2' + {34, 3, 5, 4, 0, -4}, // 0x33 '3' + {36, 3, 5, 4, 0, -4}, // 0x34 '4' + {38, 3, 5, 4, 0, -4}, // 0x35 '5' + {40, 3, 5, 4, 0, -4}, // 0x36 '6' + {42, 3, 5, 4, 0, -4}, // 0x37 '7' + {44, 3, 5, 4, 0, -4}, // 0x38 '8' + {46, 3, 5, 4, 0, -4}, // 0x39 '9' + {48, 1, 3, 2, 0, -3}, // 0x3A ':' + {49, 2, 4, 3, 0, -3}, // 0x3B ';' + {50, 2, 3, 3, 0, -3}, // 0x3C '<' + {51, 3, 3, 4, 0, -3}, // 0x3D '=' + {53, 2, 3, 3, 0, -3}, // 0x3E '>' + {54, 3, 5, 4, 0, -4}, // 0x3F '?' + {56, 3, 5, 4, 0, -4}, // 0x40 '@' + {58, 3, 5, 4, 0, -4}, // 0x41 'A' + {60, 3, 5, 4, 0, -4}, // 0x42 'B' + {62, 3, 5, 4, 0, -4}, // 0x43 'C' + {64, 3, 5, 4, 0, -4}, // 0x44 'D' + {66, 3, 5, 4, 0, -4}, // 0x45 'E' + {68, 3, 5, 4, 0, -4}, // 0x46 'F' + {70, 3, 5, 4, 0, -4}, // 0x47 'G' + {72, 3, 5, 4, 0, -4}, // 0x48 'H' + {74, 1, 5, 2, 0, -4}, // 0x49 'I' + {75, 3, 5, 4, 0, -4}, // 0x4A 'J' + {77, 3, 5, 4, 0, -4}, // 0x4B 'K' + {79, 3, 5, 4, 0, -4}, // 0x4C 'L' + {81, 5, 5, 6, 0, -4}, // 0x4D 'M' + {85, 4, 5, 5, 0, -4}, // 0x4E 'N' + {88, 3, 5, 4, 0, -4}, // 0x4F 'O' + {90, 3, 5, 4, 0, -4}, // 0x50 'P' + {92, 3, 6, 4, 0, -4}, // 0x51 'Q' + {95, 3, 5, 4, 0, -4}, // 0x52 'R' + {97, 3, 5, 4, 0, -4}, // 0x53 'S' + {99, 3, 5, 4, 0, -4}, // 0x54 'T' + {101, 3, 5, 4, 0, -4}, // 0x55 'U' + {103, 3, 5, 4, 0, -4}, // 0x56 'V' + {105, 5, 5, 6, 0, -4}, // 0x57 'W' + {109, 3, 5, 4, 0, -4}, // 0x58 'X' + {111, 3, 5, 4, 0, -4}, // 0x59 'Y' + {113, 3, 5, 4, 0, -4}, // 0x5A 'Z' + {115, 2, 5, 3, 0, -4}, // 0x5B '[' + {117, 3, 5, 4, 0, -4}, // 0x5C '\' + {119, 2, 5, 3, 0, -4}, // 0x5D ']' + {121, 3, 2, 4, 0, -4}, // 0x5E '^' + {122, 4, 1, 4, 0, 1}, // 0x5F '_' + {123, 2, 2, 3, 0, -4}, // 0x60 '`' + {124, 3, 4, 4, 0, -3}, // 0x61 'a' + {126, 3, 5, 4, 0, -4}, // 0x62 'b' + {128, 3, 3, 4, 0, -2}, // 0x63 'c' + {130, 3, 5, 4, 0, -4}, // 0x64 'd' + {132, 3, 4, 4, 0, -3}, // 0x65 'e' + {134, 2, 5, 3, 0, -4}, // 0x66 'f' + {136, 3, 5, 4, 0, -3}, // 0x67 'g' + {138, 3, 5, 4, 0, -4}, // 0x68 'h' + {140, 1, 5, 2, 0, -4}, // 0x69 'i' + {141, 2, 6, 3, 0, -4}, // 0x6A 'j' + {143, 3, 5, 4, 0, -4}, // 0x6B 'k' + {145, 2, 5, 3, 0, -4}, // 0x6C 'l' + {147, 5, 3, 6, 0, -2}, // 0x6D 'm' + {149, 3, 3, 4, 0, -2}, // 0x6E 'n' + {151, 3, 3, 4, 0, -2}, // 0x6F 'o' + {153, 3, 4, 4, 0, -2}, // 0x70 'p' + {155, 3, 4, 4, 0, -2}, // 0x71 'q' + {157, 2, 3, 3, 0, -2}, // 0x72 'r' + {158, 3, 4, 4, 0, -3}, // 0x73 's' + {160, 2, 5, 3, 0, -4}, // 0x74 't' + {162, 3, 3, 4, 0, -2}, // 0x75 'u' + {164, 3, 3, 4, 0, -2}, // 0x76 'v' + {166, 5, 3, 6, 0, -2}, // 0x77 'w' + {168, 3, 3, 4, 0, -2}, // 0x78 'x' + {170, 3, 4, 4, 0, -2}, // 0x79 'y' + {172, 3, 4, 4, 0, -3}, // 0x7A 'z' + {174, 3, 5, 4, 0, -4}, // 0x7B '{' + {176, 1, 6, 2, 0, -4}, // 0x7C '|' + {177, 3, 5, 4, 0, -4}, // 0x7D '}' + {179, 4, 2, 5, 0, -3}}; // 0x7E '~' + +const GFXfont Picopixel PROGMEM = {(uint8_t *)PicopixelBitmaps, + (GFXglyph *)PicopixelGlyphs, 0x20, 0x7E, 7}; + +// Approx. 852 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/Tiny3x3a2pt7b.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/Tiny3x3a2pt7b.h new file mode 100644 index 0000000..5b0ba4a --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/Tiny3x3a2pt7b.h @@ -0,0 +1,133 @@ +#pragma once +#include + +/** +** The FontStruction “Tiny3x3a” +** (https://fontstruct.com/fontstructions/show/670512) by “Michaelangel007” is +** licensed under a Creative Commons Attribution Non-commercial Share Alike +*license +** (http://creativecommons.org/licenses/by-nc-sa/3.0/). +** “Tiny3x3a” was originally cloned (copied) from the FontStruction +** “CHECKER” (https://fontstruct.com/fontstructions/show/2391) by Wolf grant +** Grant, which is licensed under a Creative Commons Attribution Non-commercial +** Share Alike license (http://creativecommons.org/licenses/by-nc-sa/3.0/). +* +* Converted by eadmaster with fontconvert +**/ + +const uint8_t Tiny3x3a2pt7bBitmaps[] PROGMEM = { + 0xC0, 0xB4, 0xBF, 0x80, 0x6B, 0x00, 0xDD, 0x80, 0x59, 0x80, 0x80, 0x64, + 0x98, 0xF0, 0x5D, 0x00, 0xC0, 0xE0, 0x80, 0x2A, 0x00, 0x55, 0x00, 0x94, + 0xC9, 0x80, 0xEF, 0x80, 0xBC, 0x80, 0x6B, 0x00, 0x9F, 0x80, 0xE4, 0x80, + 0x7F, 0x00, 0xFC, 0x80, 0xA0, 0x58, 0x64, 0xE3, 0x80, 0x98, 0xD8, 0xD8, + 0x80, 0x5E, 0x80, 0xDF, 0x80, 0x71, 0x80, 0xD7, 0x00, 0xFB, 0x80, 0xFA, + 0x00, 0xD7, 0x80, 0xBE, 0x80, 0xE0, 0x27, 0x00, 0xBA, 0x80, 0x93, 0x80, + 0xFE, 0x80, 0xF6, 0x80, 0xF7, 0x80, 0xFE, 0x00, 0xF7, 0x00, 0xDE, 0x80, + 0x6B, 0x00, 0xE9, 0x00, 0xB7, 0x80, 0xB5, 0x00, 0xBF, 0x80, 0xAA, 0x80, + 0xA9, 0x00, 0xEB, 0x80, 0xEC, 0x88, 0x80, 0xDC, 0x54, 0xE0, 0x90, 0x70, + 0xBC, 0xF0, 0x7C, 0xB0, 0x68, 0xFC, 0xBC, 0xC0, 0x58, 0x9A, 0x80, 0xA4, + 0xDC, 0xD4, 0xF0, 0xF8, 0xF4, 0xE0, 0x60, 0x59, 0x80, 0xBC, 0xA8, 0xEC, + 0xF0, 0xAC, 0x80, 0x90, 0x79, 0x80, 0xF0, 0xCF, 0x00, 0x78}; + +const GFXglyph Tiny3x3a2pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 4, 0, 1}, // 0x20 ' ' + {0, 1, 2, 3, 1, -2}, // 0x21 '!' + {1, 3, 2, 4, 0, -2}, // 0x22 '"' + {2, 3, 3, 4, 0, -2}, // 0x23 '#' + {4, 3, 3, 4, 0, -2}, // 0x24 '$' + {6, 3, 3, 4, 0, -2}, // 0x25 '%' + {8, 3, 3, 4, 0, -2}, // 0x26 '&' + {10, 1, 1, 3, 1, -2}, // 0x27 ''' + {11, 2, 3, 3, 0, -2}, // 0x28 '(' + {12, 2, 3, 4, 1, -2}, // 0x29 ')' + {13, 2, 2, 4, 1, -2}, // 0x2A '*' + {14, 3, 3, 4, 0, -2}, // 0x2B '+' + {16, 1, 2, 2, 0, 0}, // 0x2C ',' + {17, 3, 1, 4, 0, -1}, // 0x2D '-' + {18, 1, 1, 2, 0, 0}, // 0x2E '.' + {19, 3, 3, 4, 0, -2}, // 0x2F '/' + {21, 3, 3, 4, 0, -2}, // 0x30 '0' + {23, 2, 3, 3, 0, -2}, // 0x31 '1' + {24, 3, 3, 4, 0, -2}, // 0x32 '2' + {26, 3, 3, 4, 0, -2}, // 0x33 '3' + {28, 3, 3, 4, 0, -2}, // 0x34 '4' + {30, 3, 3, 4, 0, -2}, // 0x35 '5' + {32, 3, 3, 4, 0, -2}, // 0x36 '6' + {34, 3, 3, 4, 0, -2}, // 0x37 '7' + {36, 3, 3, 4, 0, -2}, // 0x38 '8' + {38, 3, 3, 4, 0, -2}, // 0x39 '9' + {40, 1, 3, 3, 1, -2}, // 0x3A ':' + {41, 2, 3, 3, 0, -1}, // 0x3B ';' + {42, 2, 3, 3, 0, -2}, // 0x3C '<' + {43, 3, 3, 4, 0, -2}, // 0x3D '=' + {45, 2, 3, 4, 1, -2}, // 0x3E '>' + {46, 2, 3, 4, 1, -2}, // 0x3F '?' + {47, 3, 3, 4, 0, -2}, // 0x40 '@' + {49, 3, 3, 4, 0, -2}, // 0x41 'A' + {51, 3, 3, 4, 0, -2}, // 0x42 'B' + {53, 3, 3, 4, 0, -2}, // 0x43 'C' + {55, 3, 3, 4, 0, -2}, // 0x44 'D' + {57, 3, 3, 4, 0, -2}, // 0x45 'E' + {59, 3, 3, 4, 0, -2}, // 0x46 'F' + {61, 3, 3, 4, 0, -2}, // 0x47 'G' + {63, 3, 3, 4, 0, -2}, // 0x48 'H' + {65, 1, 3, 3, 1, -2}, // 0x49 'I' + {66, 3, 3, 4, 0, -2}, // 0x4A 'J' + {68, 3, 3, 4, 0, -2}, // 0x4B 'K' + {70, 3, 3, 4, 0, -2}, // 0x4C 'L' + {72, 3, 3, 4, 0, -2}, // 0x4D 'M' + {74, 3, 3, 4, 0, -2}, // 0x4E 'N' + {76, 3, 3, 4, 0, -2}, // 0x4F 'O' + {78, 3, 3, 4, 0, -2}, // 0x50 'P' + {80, 3, 3, 4, 0, -2}, // 0x51 'Q' + {82, 3, 3, 4, 0, -2}, // 0x52 'R' + {84, 3, 3, 4, 0, -2}, // 0x53 'S' + {86, 3, 3, 4, 0, -2}, // 0x54 'T' + {88, 3, 3, 4, 0, -2}, // 0x55 'U' + {90, 3, 3, 4, 0, -2}, // 0x56 'V' + {92, 3, 3, 4, 0, -2}, // 0x57 'W' + {94, 3, 3, 4, 0, -2}, // 0x58 'X' + {96, 3, 3, 4, 0, -2}, // 0x59 'Y' + {98, 3, 3, 4, 0, -2}, // 0x5A 'Z' + {100, 2, 3, 3, 0, -2}, // 0x5B '[' + {101, 3, 3, 4, 0, -2}, // 0x5C '\' + {103, 2, 3, 4, 1, -2}, // 0x5D ']' + {104, 3, 2, 4, 0, -2}, // 0x5E '^' + {105, 3, 1, 4, 0, 0}, // 0x5F '_' + {106, 2, 2, 3, 0, -2}, // 0x60 '`' + {107, 2, 2, 3, 0, -1}, // 0x61 'a' + {108, 2, 3, 3, 0, -2}, // 0x62 'b' + {109, 2, 2, 3, 0, -1}, // 0x63 'c' + {110, 2, 3, 3, 0, -2}, // 0x64 'd' + {111, 2, 2, 3, 0, -1}, // 0x65 'e' + {112, 2, 3, 3, 0, -2}, // 0x66 'f' + {113, 2, 3, 3, 0, -1}, // 0x67 'g' + {114, 2, 3, 3, 0, -2}, // 0x68 'h' + {115, 1, 2, 2, 0, -1}, // 0x69 'i' + {116, 2, 3, 3, 0, -1}, // 0x6A 'j' + {117, 3, 3, 4, 0, -2}, // 0x6B 'k' + {119, 2, 3, 3, 0, -2}, // 0x6C 'l' + {120, 3, 2, 4, 0, -1}, // 0x6D 'm' + {121, 3, 2, 4, 0, -1}, // 0x6E 'n' + {122, 2, 2, 3, 0, -1}, // 0x6F 'o' + {123, 2, 3, 3, 0, -1}, // 0x70 'p' + {124, 2, 3, 3, 0, -1}, // 0x71 'q' + {125, 2, 2, 3, 0, -1}, // 0x72 'r' + {126, 2, 2, 3, 0, -1}, // 0x73 's' + {127, 3, 3, 4, 0, -2}, // 0x74 't' + {129, 3, 2, 4, 0, -1}, // 0x75 'u' + {130, 3, 2, 4, 0, -1}, // 0x76 'v' + {131, 3, 2, 4, 0, -1}, // 0x77 'w' + {132, 2, 2, 3, 0, -1}, // 0x78 'x' + {133, 3, 3, 4, 0, -1}, // 0x79 'y' + {135, 2, 2, 3, 0, -1}, // 0x7A 'z' + {136, 3, 3, 4, 0, -2}, // 0x7B '{' + {138, 1, 4, 3, 1, -2}, // 0x7C '|' + {139, 3, 3, 4, 0, -2}, // 0x7D '}' + {141, 3, 2, 4, 0, -2}}; // 0x7E '~' + +const GFXfont Tiny3x3a2pt7b PROGMEM = {(uint8_t *)Tiny3x3a2pt7bBitmaps, + (GFXglyph *)Tiny3x3a2pt7bGlyphs, 0x20, + 0x7E, 4}; + +// Approx. 814 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/TomThumb.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/TomThumb.h new file mode 100644 index 0000000..2155500 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/TomThumb.h @@ -0,0 +1,477 @@ +#pragma once +#include + +/** +** The original 3x5 font is licensed under the 3-clause BSD license: +** +** Copyright 1999 Brian J. Swetland +** Copyright 1999 Vassilii Khachaturov +** Portions (of vt100.c/vt100.h) copyright Dan Marks +** +** All rights reserved. +** +** Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions +** are met: +** 1. Redistributions of source code must retain the above copyright +** notice, this list of conditions, and the following disclaimer. +** 2. 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. +** 3. The name of the authors may not be used to endorse or promote products +** derived from this software without specific prior written permission. +** +** THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. +** +** Modifications to Tom Thumb for improved readability are from Robey Pointer, +** see: +** http://robey.lag.net/2010/01/23/tiny-monospace-font.html +** +** The original author does not have any objection to relicensing of Robey +** Pointer's modifications (in this file) in a more permissive license. See +** the discussion at the above blog, and also here: +** http://opengameart.org/forumtopic/how-to-submit-art-using-the-3-clause-bsd-license +** +** Feb 21, 2016: Conversion from Linux BDF --> Adafruit GFX font, +** with the help of this Python script: +** https://gist.github.com/skelliam/322d421f028545f16f6d +** William Skellenger (williamj@skellenger.net) +** Twitter: @skelliam +** +** Jan 09, 2020: Bitmaps now compressed, to fix the bounding box problem, +** because non-compressed the calculated text width were wrong. +** Andreas Merkle (web@blue-andi.de) +*/ + +#define TOMTHUMB_USE_EXTENDED 0 + +const uint8_t TomThumbBitmaps[] PROGMEM = { + 0x00, /* 0x20 space */ + 0xE8, /* 0x21 exclam */ + 0xB4, /* 0x22 quotedbl */ + 0xBE, 0xFA, /* 0x23 numbersign */ + 0x79, 0xE4, /* 0x24 dollar */ + 0x85, 0x42, /* 0x25 percent */ + 0xDB, 0xD6, /* 0x26 ampersand */ + 0xC0, /* 0x27 quotesingle */ + 0x6A, 0x40, /* 0x28 parenleft */ + 0x95, 0x80, /* 0x29 parenright */ + 0xAA, 0x80, /* 0x2A asterisk */ + 0x5D, 0x00, /* 0x2B plus */ + 0x60, /* 0x2C comma */ + 0xE0, /* 0x2D hyphen */ + 0x80, /* 0x2E period */ + 0x25, 0x48, /* 0x2F slash */ + 0x76, 0xDC, /* 0x30 zero */ + 0x75, 0x40, /* 0x31 one */ + 0xC5, 0x4E, /* 0x32 two */ + 0xC5, 0x1C, /* 0x33 three */ + 0xB7, 0x92, /* 0x34 four */ + 0xF3, 0x1C, /* 0x35 five */ + 0x73, 0xDE, /* 0x36 six */ + 0xE5, 0x48, /* 0x37 seven */ + 0xF7, 0xDE, /* 0x38 eight */ + 0xF7, 0x9C, /* 0x39 nine */ + 0xA0, /* 0x3A colon */ + 0x46, /* 0x3B semicolon */ + 0x2A, 0x22, /* 0x3C less */ + 0xE3, 0x80, /* 0x3D equal */ + 0x88, 0xA8, /* 0x3E greater */ + 0xE5, 0x04, /* 0x3F question */ + 0x57, 0xC6, /* 0x40 at */ + 0x57, 0xDA, /* 0x41 A */ + 0xD7, 0x5C, /* 0x42 B */ + 0x72, 0x46, /* 0x43 C */ + 0xD6, 0xDC, /* 0x44 D */ + 0xF3, 0xCE, /* 0x45 E */ + 0xF3, 0xC8, /* 0x46 F */ + 0x73, 0xD6, /* 0x47 G */ + 0xB7, 0xDA, /* 0x48 H */ + 0xE9, 0x2E, /* 0x49 I */ + 0x24, 0xD4, /* 0x4A J */ + 0xB7, 0x5A, /* 0x4B K */ + 0x92, 0x4E, /* 0x4C L */ + 0xBF, 0xDA, /* 0x4D M */ + 0xBF, 0xFA, /* 0x4E N */ + 0x56, 0xD4, /* 0x4F O */ + 0xD7, 0x48, /* 0x50 P */ + 0x56, 0xF6, /* 0x51 Q */ + 0xD7, 0xEA, /* 0x52 R */ + 0x71, 0x1C, /* 0x53 S */ + 0xE9, 0x24, /* 0x54 T */ + 0xB6, 0xD6, /* 0x55 U */ + 0xB6, 0xA4, /* 0x56 V */ + 0xB7, 0xFA, /* 0x57 W */ + 0xB5, 0x5A, /* 0x58 X */ + 0xB5, 0x24, /* 0x59 Y */ + 0xE5, 0x4E, /* 0x5A Z */ + 0xF2, 0x4E, /* 0x5B bracketleft */ + 0x88, 0x80, /* 0x5C backslash */ + 0xE4, 0x9E, /* 0x5D bracketright */ + 0x54, /* 0x5E asciicircum */ + 0xE0, /* 0x5F underscore */ + 0x90, /* 0x60 grave */ + 0xCE, 0xF0, /* 0x61 a */ + 0x9A, 0xDC, /* 0x62 b */ + 0x72, 0x30, /* 0x63 c */ + 0x2E, 0xD6, /* 0x64 d */ + 0x77, 0x30, /* 0x65 e */ + 0x2B, 0xA4, /* 0x66 f */ + 0x77, 0x94, /* 0x67 g */ + 0x9A, 0xDA, /* 0x68 h */ + 0xB8, /* 0x69 i */ + 0x20, 0x9A, 0x80, /* 0x6A j */ + 0x97, 0x6A, /* 0x6B k */ + 0xC9, 0x2E, /* 0x6C l */ + 0xFF, 0xD0, /* 0x6D m */ + 0xD6, 0xD0, /* 0x6E n */ + 0x56, 0xA0, /* 0x6F o */ + 0xD6, 0xE8, /* 0x70 p */ + 0x76, 0xB2, /* 0x71 q */ + 0x72, 0x40, /* 0x72 r */ + 0x79, 0xE0, /* 0x73 s */ + 0x5D, 0x26, /* 0x74 t */ + 0xB6, 0xB0, /* 0x75 u */ + 0xB7, 0xA0, /* 0x76 v */ + 0xBF, 0xF0, /* 0x77 w */ + 0xA9, 0x50, /* 0x78 x */ + 0xB5, 0x94, /* 0x79 y */ + 0xEF, 0x70, /* 0x7A z */ + 0x6A, 0x26, /* 0x7B braceleft */ + 0xD8, /* 0x7C bar */ + 0xC8, 0xAC, /* 0x7D braceright */ + 0x78, /* 0x7E asciitilde */ +#if (TOMTHUMB_USE_EXTENDED) + 0xB8, /* 0xA1 exclamdown */ + 0x5E, 0x74, /* 0xA2 cent */ + 0x6B, 0xAE, /* 0xA3 sterling */ + 0xAB, 0xAA, /* 0xA4 currency */ + 0xB5, 0x74, /* 0xA5 yen */ + 0xD8, /* 0xA6 brokenbar */ + 0x6A, 0xAC, /* 0xA7 section */ + 0xA0, /* 0xA8 dieresis */ + 0x71, 0x80, /* 0xA9 copyright */ + 0x77, 0x8E, /* 0xAA ordfeminine */ + 0x64, /* 0xAB guillemotleft */ + 0xE4, /* 0xAC logicalnot */ + 0xC0, /* 0xAD softhyphen */ + 0xDA, 0x80, /* 0xAE registered */ + 0xE0, /* 0xAF macron */ + 0x55, 0x00, /* 0xB0 degree */ + 0x5D, 0x0E, /* 0xB1 plusminus */ + 0xC9, 0x80, /* 0xB2 twosuperior */ + 0xEF, 0x80, /* 0xB3 threesuperior */ + 0x60, /* 0xB4 acute */ + 0xB6, 0xE8, /* 0xB5 mu */ + 0x75, 0xB6, /* 0xB6 paragraph */ + 0xFF, 0x80, /* 0xB7 periodcentered */ + 0x47, 0x00, /* 0xB8 cedilla */ + 0xE0, /* 0xB9 onesuperior */ + 0x55, 0x0E, /* 0xBA ordmasculine */ + 0x98, /* 0xBB guillemotright */ + 0x90, 0x32, /* 0xBC onequarter */ + 0x90, 0x66, /* 0xBD onehalf */ + 0xD8, 0x32, /* 0xBE threequarters */ + 0x41, 0x4E, /* 0xBF questiondown */ + 0x45, 0x7A, /* 0xC0 Agrave */ + 0x51, 0x7A, /* 0xC1 Aacute */ + 0xE1, 0x7A, /* 0xC2 Acircumflex */ + 0x79, 0x7A, /* 0xC3 Atilde */ + 0xAA, 0xFA, /* 0xC4 Adieresis */ + 0xDA, 0xFA, /* 0xC5 Aring */ + 0x7B, 0xEE, /* 0xC6 AE */ + 0x72, 0x32, 0x80, /* 0xC7 Ccedilla */ + 0x47, 0xEE, /* 0xC8 Egrave */ + 0x53, 0xEE, /* 0xC9 Eacute */ + 0xE3, 0xEE, /* 0xCA Ecircumflex */ + 0xA3, 0xEE, /* 0xCB Edieresis */ + 0x47, 0xAE, /* 0xCC Igrave */ + 0x53, 0xAE, /* 0xCD Iacute */ + 0xE3, 0xAE, /* 0xCE Icircumflex */ + 0xA3, 0xAE, /* 0xCF Idieresis */ + 0xD7, 0xDC, /* 0xD0 Eth */ + 0xCE, 0xFA, /* 0xD1 Ntilde */ + 0x47, 0xDE, /* 0xD2 Ograve */ + 0x53, 0xDE, /* 0xD3 Oacute */ + 0xE3, 0xDE, /* 0xD4 Ocircumflex */ + 0xCF, 0xDE, /* 0xD5 Otilde */ + 0xA3, 0xDE, /* 0xD6 Odieresis */ + 0xAA, 0x80, /* 0xD7 multiply */ + 0x77, 0xDC, /* 0xD8 Oslash */ + 0x8A, 0xDE, /* 0xD9 Ugrave */ + 0x2A, 0xDE, /* 0xDA Uacute */ + 0xE2, 0xDE, /* 0xDB Ucircumflex */ + 0xA2, 0xDE, /* 0xDC Udieresis */ + 0x2A, 0xF4, /* 0xDD Yacute */ + 0x9E, 0xF8, /* 0xDE Thorn */ + 0x77, 0x5D, 0x00, /* 0xDF germandbls */ + 0x45, 0xDE, /* 0xE0 agrave */ + 0x51, 0xDE, /* 0xE1 aacute */ + 0xE1, 0xDE, /* 0xE2 acircumflex */ + 0x79, 0xDE, /* 0xE3 atilde */ + 0xA1, 0xDE, /* 0xE4 adieresis */ + 0x6D, 0xDE, /* 0xE5 aring */ + 0x7F, 0xE0, /* 0xE6 ae */ + 0x71, 0x94, /* 0xE7 ccedilla */ + 0x45, 0xF6, /* 0xE8 egrave */ + 0x51, 0xF6, /* 0xE9 eacute */ + 0xE1, 0xF6, /* 0xEA ecircumflex */ + 0xA1, 0xF6, /* 0xEB edieresis */ + 0x9A, 0x80, /* 0xEC igrave */ + 0x65, 0x40, /* 0xED iacute */ + 0xE1, 0x24, /* 0xEE icircumflex */ + 0xA1, 0x24, /* 0xEF idieresis */ + 0x79, 0xD6, /* 0xF0 eth */ + 0xCF, 0x5A, /* 0xF1 ntilde */ + 0x45, 0x54, /* 0xF2 ograve */ + 0x51, 0x54, /* 0xF3 oacute */ + 0xE1, 0x54, /* 0xF4 ocircumflex */ + 0xCD, 0x54, /* 0xF5 otilde */ + 0xA1, 0x54, /* 0xF6 odieresis */ + 0x43, 0x84, /* 0xF7 divide */ + 0x7E, 0xE0, /* 0xF8 oslash */ + 0x8A, 0xD6, /* 0xF9 ugrave */ + 0x2A, 0xD6, /* 0xFA uacute */ + 0xE2, 0xD6, /* 0xFB ucircumflex */ + 0xA2, 0xD6, /* 0xFC udieresis */ + 0x2A, 0xB2, 0x80, /* 0xFD yacute */ + 0x9A, 0xE8, /* 0xFE thorn */ + 0xA2, 0xB2, 0x80, /* 0xFF ydieresis */ + 0x00, /* 0x11D gcircumflex */ + 0x7B, 0xE6, /* 0x152 OE */ + 0x7F, 0x70, /* 0x153 oe */ + 0xAF, 0x3C, /* 0x160 Scaron */ + 0xAF, 0x3C, /* 0x161 scaron */ + 0xA2, 0xA4, /* 0x178 Ydieresis */ + 0xBD, 0xEE, /* 0x17D Zcaron */ + 0xBD, 0xEE, /* 0x17E zcaron */ + 0x00, /* 0xEA4 uni0EA4 */ + 0x00, /* 0x13A0 uni13A0 */ + 0x80, /* 0x2022 bullet */ + 0xA0, /* 0x2026 ellipsis */ + 0x7F, 0xE6, /* 0x20AC Euro */ + 0xEA, 0xAA, 0xE0, /* 0xFFFD uniFFFD */ +#endif /* (TOMTHUMB_USE_EXTENDED) */ +}; + +/* {offset, width, height, advance cursor, x offset, y offset} */ +const GFXglyph TomThumbGlyphs[] PROGMEM = { + {0, 1, 1, 2, 0, -5}, /* 0x20 space */ + {1, 1, 5, 2, 0, -5}, /* 0x21 exclam */ + {2, 3, 2, 4, 0, -5}, /* 0x22 quotedbl */ + {3, 3, 5, 4, 0, -5}, /* 0x23 numbersign */ + {5, 3, 5, 4, 0, -5}, /* 0x24 dollar */ + {7, 3, 5, 4, 0, -5}, /* 0x25 percent */ + {9, 3, 5, 4, 0, -5}, /* 0x26 ampersand */ + {11, 1, 2, 2, 0, -5}, /* 0x27 quotesingle */ + {12, 2, 5, 3, 0, -5}, /* 0x28 parenleft */ + {14, 2, 5, 3, 0, -5}, /* 0x29 parenright */ + {16, 3, 3, 4, 0, -5}, /* 0x2A asterisk */ + {18, 3, 3, 4, 0, -4}, /* 0x2B plus */ + {20, 2, 2, 3, 0, -2}, /* 0x2C comma */ + {21, 3, 1, 4, 0, -3}, /* 0x2D hyphen */ + {22, 1, 1, 2, 0, -1}, /* 0x2E period */ + {23, 3, 5, 4, 0, -5}, /* 0x2F slash */ + {25, 3, 5, 4, 0, -5}, /* 0x30 zero */ + {27, 2, 5, 3, 0, -5}, /* 0x31 one */ + {29, 3, 5, 4, 0, -5}, /* 0x32 two */ + {31, 3, 5, 4, 0, -5}, /* 0x33 three */ + {33, 3, 5, 4, 0, -5}, /* 0x34 four */ + {35, 3, 5, 4, 0, -5}, /* 0x35 five */ + {37, 3, 5, 4, 0, -5}, /* 0x36 six */ + {39, 3, 5, 4, 0, -5}, /* 0x37 seven */ + {41, 3, 5, 4, 0, -5}, /* 0x38 eight */ + {43, 3, 5, 4, 0, -5}, /* 0x39 nine */ + {45, 1, 3, 2, 0, -4}, /* 0x3A colon */ + {46, 2, 4, 3, 0, -4}, /* 0x3B semicolon */ + {47, 3, 5, 4, 0, -5}, /* 0x3C less */ + {49, 3, 3, 4, 0, -4}, /* 0x3D equal */ + {51, 3, 5, 4, 0, -5}, /* 0x3E greater */ + {53, 3, 5, 4, 0, -5}, /* 0x3F question */ + {55, 3, 5, 4, 0, -5}, /* 0x40 at */ + {57, 3, 5, 4, 0, -5}, /* 0x41 A */ + {59, 3, 5, 4, 0, -5}, /* 0x42 B */ + {61, 3, 5, 4, 0, -5}, /* 0x43 C */ + {63, 3, 5, 4, 0, -5}, /* 0x44 D */ + {65, 3, 5, 4, 0, -5}, /* 0x45 E */ + {67, 3, 5, 4, 0, -5}, /* 0x46 F */ + {69, 3, 5, 4, 0, -5}, /* 0x47 G */ + {71, 3, 5, 4, 0, -5}, /* 0x48 H */ + {73, 3, 5, 4, 0, -5}, /* 0x49 I */ + {75, 3, 5, 4, 0, -5}, /* 0x4A J */ + {77, 3, 5, 4, 0, -5}, /* 0x4B K */ + {79, 3, 5, 4, 0, -5}, /* 0x4C L */ + {81, 3, 5, 4, 0, -5}, /* 0x4D M */ + {83, 3, 5, 4, 0, -5}, /* 0x4E N */ + {85, 3, 5, 4, 0, -5}, /* 0x4F O */ + {87, 3, 5, 4, 0, -5}, /* 0x50 P */ + {89, 3, 5, 4, 0, -5}, /* 0x51 Q */ + {91, 3, 5, 4, 0, -5}, /* 0x52 R */ + {93, 3, 5, 4, 0, -5}, /* 0x53 S */ + {95, 3, 5, 4, 0, -5}, /* 0x54 T */ + {97, 3, 5, 4, 0, -5}, /* 0x55 U */ + {99, 3, 5, 4, 0, -5}, /* 0x56 V */ + {101, 3, 5, 4, 0, -5}, /* 0x57 W */ + {103, 3, 5, 4, 0, -5}, /* 0x58 X */ + {105, 3, 5, 4, 0, -5}, /* 0x59 Y */ + {107, 3, 5, 4, 0, -5}, /* 0x5A Z */ + {109, 3, 5, 4, 0, -5}, /* 0x5B bracketleft */ + {111, 3, 3, 4, 0, -4}, /* 0x5C backslash */ + {113, 3, 5, 4, 0, -5}, /* 0x5D bracketright */ + {115, 3, 2, 4, 0, -5}, /* 0x5E asciicircum */ + {116, 3, 1, 4, 0, -1}, /* 0x5F underscore */ + {117, 2, 2, 3, 0, -5}, /* 0x60 grave */ + {118, 3, 4, 4, 0, -4}, /* 0x61 a */ + {120, 3, 5, 4, 0, -5}, /* 0x62 b */ + {122, 3, 4, 4, 0, -4}, /* 0x63 c */ + {124, 3, 5, 4, 0, -5}, /* 0x64 d */ + {126, 3, 4, 4, 0, -4}, /* 0x65 e */ + {128, 3, 5, 4, 0, -5}, /* 0x66 f */ + {130, 3, 5, 4, 0, -4}, /* 0x67 g */ + {132, 3, 5, 4, 0, -5}, /* 0x68 h */ + {134, 1, 5, 2, 0, -5}, /* 0x69 i */ + {135, 3, 6, 4, 0, -5}, /* 0x6A j */ + {138, 3, 5, 4, 0, -5}, /* 0x6B k */ + {140, 3, 5, 4, 0, -5}, /* 0x6C l */ + {142, 3, 4, 4, 0, -4}, /* 0x6D m */ + {144, 3, 4, 4, 0, -4}, /* 0x6E n */ + {146, 3, 4, 4, 0, -4}, /* 0x6F o */ + {148, 3, 5, 4, 0, -4}, /* 0x70 p */ + {150, 3, 5, 4, 0, -4}, /* 0x71 q */ + {152, 3, 4, 4, 0, -4}, /* 0x72 r */ + {154, 3, 4, 4, 0, -4}, /* 0x73 s */ + {156, 3, 5, 4, 0, -5}, /* 0x74 t */ + {158, 3, 4, 4, 0, -4}, /* 0x75 u */ + {160, 3, 4, 4, 0, -4}, /* 0x76 v */ + {162, 3, 4, 4, 0, -4}, /* 0x77 w */ + {164, 3, 4, 4, 0, -4}, /* 0x78 x */ + {166, 3, 5, 4, 0, -4}, /* 0x79 y */ + {168, 3, 4, 4, 0, -4}, /* 0x7A z */ + {170, 3, 5, 4, 0, -5}, /* 0x7B braceleft */ + {172, 1, 5, 2, 0, -5}, /* 0x7C bar */ + {173, 3, 5, 4, 0, -5}, /* 0x7D braceright */ + {175, 3, 2, 4, 0, -5}, /* 0x7E asciitilde */ +#if (TOMTHUMB_USE_EXTENDED) + {176, 1, 5, 2, 0, -5}, /* 0xA1 exclamdown */ + {177, 3, 5, 4, 0, -5}, /* 0xA2 cent */ + {179, 3, 5, 4, 0, -5}, /* 0xA3 sterling */ + {181, 3, 5, 4, 0, -5}, /* 0xA4 currency */ + {183, 3, 5, 4, 0, -5}, /* 0xA5 yen */ + {185, 1, 5, 2, 0, -5}, /* 0xA6 brokenbar */ + {186, 3, 5, 4, 0, -5}, /* 0xA7 section */ + {188, 3, 1, 4, 0, -5}, /* 0xA8 dieresis */ + {189, 3, 3, 4, 0, -5}, /* 0xA9 copyright */ + {191, 3, 5, 4, 0, -5}, /* 0xAA ordfeminine */ + {193, 2, 3, 3, 0, -5}, /* 0xAB guillemotleft */ + {194, 3, 2, 4, 0, -4}, /* 0xAC logicalnot */ + {195, 2, 1, 3, 0, -3}, /* 0xAD softhyphen */ + {196, 3, 3, 4, 0, -5}, /* 0xAE registered */ + {198, 3, 1, 4, 0, -5}, /* 0xAF macron */ + {199, 3, 3, 4, 0, -5}, /* 0xB0 degree */ + {201, 3, 5, 4, 0, -5}, /* 0xB1 plusminus */ + {203, 3, 3, 4, 0, -5}, /* 0xB2 twosuperior */ + {205, 3, 3, 4, 0, -5}, /* 0xB3 threesuperior */ + {207, 2, 2, 3, 0, -5}, /* 0xB4 acute */ + {208, 3, 5, 4, 0, -5}, /* 0xB5 mu */ + {210, 3, 5, 4, 0, -5}, /* 0xB6 paragraph */ + {212, 3, 3, 4, 0, -4}, /* 0xB7 periodcentered */ + {214, 3, 3, 4, 0, -3}, /* 0xB8 cedilla */ + {216, 1, 3, 2, 0, -5}, /* 0xB9 onesuperior */ + {217, 3, 5, 4, 0, -5}, /* 0xBA ordmasculine */ + {219, 2, 3, 3, 0, -5}, /* 0xBB guillemotright */ + {220, 3, 5, 4, 0, -5}, /* 0xBC onequarter */ + {222, 3, 5, 4, 0, -5}, /* 0xBD onehalf */ + {224, 3, 5, 4, 0, -5}, /* 0xBE threequarters */ + {226, 3, 5, 4, 0, -5}, /* 0xBF questiondown */ + {228, 3, 5, 4, 0, -5}, /* 0xC0 Agrave */ + {230, 3, 5, 4, 0, -5}, /* 0xC1 Aacute */ + {232, 3, 5, 4, 0, -5}, /* 0xC2 Acircumflex */ + {234, 3, 5, 4, 0, -5}, /* 0xC3 Atilde */ + {236, 3, 5, 4, 0, -5}, /* 0xC4 Adieresis */ + {238, 3, 5, 4, 0, -5}, /* 0xC5 Aring */ + {240, 3, 5, 4, 0, -5}, /* 0xC6 AE */ + {242, 3, 6, 4, 0, -5}, /* 0xC7 Ccedilla */ + {245, 3, 5, 4, 0, -5}, /* 0xC8 Egrave */ + {247, 3, 5, 4, 0, -5}, /* 0xC9 Eacute */ + {249, 3, 5, 4, 0, -5}, /* 0xCA Ecircumflex */ + {251, 3, 5, 4, 0, -5}, /* 0xCB Edieresis */ + {253, 3, 5, 4, 0, -5}, /* 0xCC Igrave */ + {255, 3, 5, 4, 0, -5}, /* 0xCD Iacute */ + {257, 3, 5, 4, 0, -5}, /* 0xCE Icircumflex */ + {259, 3, 5, 4, 0, -5}, /* 0xCF Idieresis */ + {261, 3, 5, 4, 0, -5}, /* 0xD0 Eth */ + {263, 3, 5, 4, 0, -5}, /* 0xD1 Ntilde */ + {265, 3, 5, 4, 0, -5}, /* 0xD2 Ograve */ + {267, 3, 5, 4, 0, -5}, /* 0xD3 Oacute */ + {269, 3, 5, 4, 0, -5}, /* 0xD4 Ocircumflex */ + {271, 3, 5, 4, 0, -5}, /* 0xD5 Otilde */ + {273, 3, 5, 4, 0, -5}, /* 0xD6 Odieresis */ + {275, 3, 3, 4, 0, -4}, /* 0xD7 multiply */ + {277, 3, 5, 4, 0, -5}, /* 0xD8 Oslash */ + {279, 3, 5, 4, 0, -5}, /* 0xD9 Ugrave */ + {281, 3, 5, 4, 0, -5}, /* 0xDA Uacute */ + {283, 3, 5, 4, 0, -5}, /* 0xDB Ucircumflex */ + {285, 3, 5, 4, 0, -5}, /* 0xDC Udieresis */ + {287, 3, 5, 4, 0, -5}, /* 0xDD Yacute */ + {289, 3, 5, 4, 0, -5}, /* 0xDE Thorn */ + {291, 3, 6, 4, 0, -5}, /* 0xDF germandbls */ + {294, 3, 5, 4, 0, -5}, /* 0xE0 agrave */ + {296, 3, 5, 4, 0, -5}, /* 0xE1 aacute */ + {298, 3, 5, 4, 0, -5}, /* 0xE2 acircumflex */ + {300, 3, 5, 4, 0, -5}, /* 0xE3 atilde */ + {302, 3, 5, 4, 0, -5}, /* 0xE4 adieresis */ + {304, 3, 5, 4, 0, -5}, /* 0xE5 aring */ + {306, 3, 4, 4, 0, -4}, /* 0xE6 ae */ + {308, 3, 5, 4, 0, -4}, /* 0xE7 ccedilla */ + {310, 3, 5, 4, 0, -5}, /* 0xE8 egrave */ + {312, 3, 5, 4, 0, -5}, /* 0xE9 eacute */ + {314, 3, 5, 4, 0, -5}, /* 0xEA ecircumflex */ + {316, 3, 5, 4, 0, -5}, /* 0xEB edieresis */ + {318, 2, 5, 3, 0, -5}, /* 0xEC igrave */ + {320, 2, 5, 3, 0, -5}, /* 0xED iacute */ + {322, 3, 5, 4, 0, -5}, /* 0xEE icircumflex */ + {324, 3, 5, 4, 0, -5}, /* 0xEF idieresis */ + {326, 3, 5, 4, 0, -5}, /* 0xF0 eth */ + {328, 3, 5, 4, 0, -5}, /* 0xF1 ntilde */ + {330, 3, 5, 4, 0, -5}, /* 0xF2 ograve */ + {332, 3, 5, 4, 0, -5}, /* 0xF3 oacute */ + {334, 3, 5, 4, 0, -5}, /* 0xF4 ocircumflex */ + {336, 3, 5, 4, 0, -5}, /* 0xF5 otilde */ + {338, 3, 5, 4, 0, -5}, /* 0xF6 odieresis */ + {340, 3, 5, 4, 0, -5}, /* 0xF7 divide */ + {342, 3, 4, 4, 0, -4}, /* 0xF8 oslash */ + {344, 3, 5, 4, 0, -5}, /* 0xF9 ugrave */ + {346, 3, 5, 4, 0, -5}, /* 0xFA uacute */ + {348, 3, 5, 4, 0, -5}, /* 0xFB ucircumflex */ + {350, 3, 5, 4, 0, -5}, /* 0xFC udieresis */ + {352, 3, 6, 4, 0, -5}, /* 0xFD yacute */ + {355, 3, 5, 4, 0, -4}, /* 0xFE thorn */ + {357, 3, 6, 4, 0, -5}, /* 0xFF ydieresis */ + {360, 1, 1, 2, 0, -1}, /* 0x11D gcircumflex */ + {361, 3, 5, 4, 0, -5}, /* 0x152 OE */ + {363, 3, 4, 4, 0, -4}, /* 0x153 oe */ + {365, 3, 5, 4, 0, -5}, /* 0x160 Scaron */ + {367, 3, 5, 4, 0, -5}, /* 0x161 scaron */ + {369, 3, 5, 4, 0, -5}, /* 0x178 Ydieresis */ + {371, 3, 5, 4, 0, -5}, /* 0x17D Zcaron */ + {373, 3, 5, 4, 0, -5}, /* 0x17E zcaron */ + {375, 1, 1, 2, 0, -1}, /* 0xEA4 uni0EA4 */ + {376, 1, 1, 2, 0, -1}, /* 0x13A0 uni13A0 */ + {377, 1, 1, 2, 0, -3}, /* 0x2022 bullet */ + {378, 3, 1, 4, 0, -1}, /* 0x2026 ellipsis */ + {379, 3, 5, 4, 0, -5}, /* 0x20AC Euro */ + {381, 4, 5, 5, 0, -5}, /* 0xFFFD uniFFFD */ +#endif /* (TOMTHUMB_USE_EXTENDED) */ +}; + +const GFXfont TomThumb PROGMEM = {(uint8_t *)TomThumbBitmaps, + (GFXglyph *)TomThumbGlyphs, 0x20, 0x7E, 6}; diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/README.md b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/README.md new file mode 100644 index 0000000..6f36460 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/README.md @@ -0,0 +1,47 @@ +# Adafruit GFX Library ![Build Status](https://github.com/adafruit/Adafruit-GFX-Library/workflows/Arduino%20Library%20CI/badge.svg) + +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 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 must be included in any redistribution. + +Recent Arduino IDE releases include the Library Manager for easy installation. Otherwise, to download, click the DOWNLOAD ZIP button, uncompress and rename the uncompressed folder Adafruit_GFX. Confirm that the Adafruit_GFX folder contains Adafruit_GFX.cpp and Adafruit_GFX.h. Place the Adafruit_GFX library folder your ArduinoSketchFolder/Libraries/ folder. You may need to create the Libraries subfolder if its your first library. Restart the IDE. + +**You will also need to install the latest Adafruit BusIO library.** Search for "Adafruit BusIO" in the library manager, or install by hand from https://github.com/adafruit/Adafruit_BusIO + +# Useful Resources + +- Image2Code: This is a handy Java GUI utility to convert a BMP file into the array code necessary to display the image with the drawBitmap function. Check out the code at ehubin's GitHub repository: https://github.com/ehubin/Adafruit-GFX-Library/tree/master/Img2Code + +- drawXBitmap function: You can use the GIMP photo editor to save a .xbm file and use the array saved in the file to draw a bitmap with the drawXBitmap function. See the pull request here for more details: https://github.com/adafruit/Adafruit-GFX-Library/pull/31 + +- 'Fonts' folder contains bitmap fonts for use with recent (1.1 and later) Adafruit_GFX. 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. + +- 'fontconvert' folder contains a command-line tool for converting TTF fonts to Adafruit_GFX header format. + +- You can also use [this GFX Font Customiser tool](https://github.com/tchapi/Adafruit-GFX-Font-Customiser) (_web version [here](https://tchapi.github.io/Adafruit-GFX-Font-Customiser/)_) to customize or correct the output from [fontconvert](https://github.com/adafruit/Adafruit-GFX-Library/tree/master/fontconvert), and create fonts with only a subset of characters to optimize size. + +--- + +### Roadmap + +The PRIME DIRECTIVE is to maintain backward compatibility with existing Arduino sketches -- many are hosted elsewhere and don't track changes here, some are in print and can never be changed! This "little" library has grown organically over time and sometimes we paint ourselves into a design corner and just have to live with it or add progressively more ungainly workarounds. + +**We are grateful for everyone's contributions, but pull requests for the following will NOT be merged:** + +- Additional or incompatible font formats (see Prime Directive above). There are already two formats and the code is quite bloaty there as it is. This also creates liabilities for tools and documentation. What's there isn't perfect but it does the job. + +- Additional or incompatible bitmap formats, for similar reasons. It's getting messy. + +- Adding background color to custom fonts to erase prior screen contents. The ONLY acceptable methods are to clear the area with a filled rect, or (to avoid flicker) draw text into a GFXcanvas1 and copy to screen with drawBitmap() w/background color. This is on purpose and by design. We've discussed this. Glyphs can overlap. + +- Scrolling, whether hardware- or software-based. Such implementations tend to rely on hardware-specific features (not universally available), read access to the screen's framebuffer (ditto) and/or the addition of virtual functions in GFX which them must be added in *every* subclass, of which there are many. The GFX API is largely "set" at this point and this is just a limitation we live with now. + +- Please don't reformat code for the sake of reformatting code. The resulting large "visual diff" makes it impossible to untangle actual bug fixes from merely rearranged lines. clang-format will be the final arbiter. + +- Please no more pentagram-drawing PRs. Any oddly-specific drawing functions can go in your own code and aren't helpful in a library context. + +If you *must* have one of these features, consider creating a fork with the features required for your project...it's easy to keep synced with the upstream code. diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/component.mk b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/component.mk new file mode 100644 index 0000000..049f190 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/component.mk @@ -0,0 +1 @@ +COMPONENT_ADD_INCLUDEDIRS = . diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/examples/GFXcanvas/GFXcanvas.ino b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/examples/GFXcanvas/GFXcanvas.ino new file mode 100644 index 0000000..d4e3370 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/examples/GFXcanvas/GFXcanvas.ino @@ -0,0 +1,113 @@ +/*** +This example is intended to demonstrate the use of getPixel() versus +getRawPixel() and the fast horizontal and vertical drawing routines +in the GFXcanvas family of classes, + +When using the GFXcanvas* classes as the image buffer for a hardware driver, +there is a need to get individual pixel color values at given physical +coordinates. Rather than subclasses or client classes call getBuffer() and +reinterpret the byte layout of the buffer, two methods are added to each of the +GFXcanvas* classes that allow fetching of specific pixel values. + + * getPixel(x, y) : Gets the pixel color value at the rotated coordinates in +the image. + * getRawPixel(x,y) : Gets the pixel color value at the unrotated coordinates +in the image. This is useful for getting the pixel value to map to a hardware +pixel location. This method was made protected as only the hardware driver +should be accessing it. + +The GFXcanvas*SerialDemo classes in this example will print to Serial the +contents of the underlying GFXcanvas buffer in both the current rotated layout +and the underlying physical layout. +***/ + +#include "GFXcanvasSerialDemo.h" +#include + +void setup() { + Serial.begin(115200); + + // first create a rectangular GFXcanvas8SerialDemo object and draw to it + GFXcanvas8SerialDemo demo8(21, 11); + + demo8.fillScreen(0x00); + demo8.setRotation(1); // now canvas is 11x21 + demo8.fillCircle(5, 10, 5, 0xAA); + demo8.writeFastHLine(0, 0, 11, 0x11); + demo8.writeFastHLine(10, 10, -11, 0x22); + demo8.writeFastHLine(0, 20, 11, 0x33); + demo8.writeFastVLine(0, 0, 21, 0x44); + demo8.writeFastVLine(10, 20, -21, 0x55); + + Serial.println("Demonstrating GFXcanvas rotated and raw pixels.\n"); + + // print it out rotated + + Serial.println("The canvas's content in the rotation of '0':\n"); + demo8.setRotation(0); + demo8.print(true); + Serial.println("\n"); + + Serial.println("The canvas's content in the rotation of '1' (which is what " + "it was drawn in):\n"); + demo8.setRotation(1); + demo8.print(true); + Serial.println("\n"); + + Serial.println("The canvas's content in the rotation of '2':\n"); + demo8.setRotation(2); + demo8.print(true); + Serial.println("\n"); + + Serial.println("The canvas's content in the rotation of '3':\n"); + demo8.setRotation(3); + demo8.print(true); + Serial.println("\n"); + + // print it out unrotated + Serial.println("The canvas's content in it's raw, physical layout:\n"); + demo8.print(false); + Serial.println("\n"); + + // Demonstrate GFXcanvas1SerialDemo + + GFXcanvas1SerialDemo demo1(21, 11); + demo1.fillScreen(0); + demo1.setRotation(0); + demo1.writeFastHLine(0, 0, 9, 1); + demo1.setRotation(1); + demo1.writeFastHLine(0, 0, 9, 1); + demo1.setRotation(2); + demo1.writeFastHLine(0, 0, 9, 1); + demo1.setRotation(3); + demo1.writeFastHLine(0, 0, 9, 1); + demo1.setRotation(1); + demo1.fillRect(3, 8, 5, 5, 1); + + Serial.println("\nThe GFXcanvas1 raw content after drawing a fast horizontal " + "line in each rotation:\n"); + demo1.print(false); + Serial.println("\n"); + + // Demonstrate GFXcanvas16SerialDemo + + GFXcanvas16SerialDemo demo16(21, 11); + demo16.fillScreen(0); + demo16.setRotation(0); + demo16.writeFastHLine(0, 0, 9, 0x1111); + demo16.setRotation(1); + demo16.writeFastHLine(0, 0, 9, 0x2222); + demo16.setRotation(2); + demo16.writeFastHLine(0, 0, 9, 0x3333); + demo16.setRotation(3); + demo16.writeFastHLine(0, 0, 9, 0x4444); + demo16.setRotation(1); + demo16.fillRect(3, 8, 5, 5, 0x8888); + + Serial.println("\nThe GFXcanvas16 raw content after drawing a fast " + "horizontal line in each rotation:\n"); + demo16.print(false); + Serial.println("\n"); +} + +void loop() {} diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/examples/GFXcanvas/GFXcanvasSerialDemo.cpp b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/examples/GFXcanvas/GFXcanvasSerialDemo.cpp new file mode 100644 index 0000000..ed83a96 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/examples/GFXcanvas/GFXcanvasSerialDemo.cpp @@ -0,0 +1,92 @@ +#include "GFXcanvasSerialDemo.h" +#include + +GFXcanvas1SerialDemo::GFXcanvas1SerialDemo(uint16_t w, uint16_t h) + : GFXcanvas1(w, h) {} + +void GFXcanvas1SerialDemo::print(bool rotated) { + char pixel_buffer[8]; + uint16_t width, height; + + if (rotated) { + width = this->width(); + height = this->height(); + } else { + width = this->WIDTH; + height = this->HEIGHT; + } + + for (uint16_t y = 0; y < height; y++) { + for (uint16_t x = 0; x < width; x++) { + bool pixel; + if (rotated) { + pixel = this->getPixel(x, y); + } else { + pixel = this->getRawPixel(x, y); + } + sprintf(pixel_buffer, " %d", pixel); + Serial.print(pixel_buffer); + } + Serial.print("\n"); + } +} + +GFXcanvas8SerialDemo::GFXcanvas8SerialDemo(uint16_t w, uint16_t h) + : GFXcanvas8(w, h) {} + +void GFXcanvas8SerialDemo::print(bool rotated) { + char pixel_buffer[8]; + uint16_t width, height; + + if (rotated) { + width = this->width(); + height = this->height(); + } else { + width = this->WIDTH; + height = this->HEIGHT; + } + + for (uint16_t y = 0; y < height; y++) { + for (uint16_t x = 0; x < width; x++) { + uint8_t pixel; + if (rotated) { + pixel = this->getPixel(x, y); + } else { + pixel = this->getRawPixel(x, y); + } + sprintf(pixel_buffer, " %02x", pixel); + Serial.print(pixel_buffer); + } + Serial.print("\n"); + } +} + +GFXcanvas16SerialDemo::GFXcanvas16SerialDemo(uint16_t w, uint16_t h) + : GFXcanvas16(w, h) {} + +void GFXcanvas16SerialDemo::print(bool rotated) { + char pixel_buffer[8]; + uint16_t width, height; + + if (rotated) { + width = this->width(); + height = this->height(); + } else { + width = this->WIDTH; + height = this->HEIGHT; + } + + for (uint16_t y = 0; y < height; y++) { + for (uint16_t x = 0; x < width; x++) { + uint16_t pixel; + if (rotated) { + pixel = this->getPixel(x, y); + } else { + pixel = this->getRawPixel(x, y); + } + sprintf(pixel_buffer, " %04x", pixel); + Serial.print(pixel_buffer); + } + Serial.print("\n"); + } +} diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/examples/GFXcanvas/GFXcanvasSerialDemo.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/examples/GFXcanvas/GFXcanvasSerialDemo.h new file mode 100644 index 0000000..80589d9 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/examples/GFXcanvas/GFXcanvasSerialDemo.h @@ -0,0 +1,65 @@ +#ifndef __GFXcanvasSerialDemo__ +#define __GFXcanvasSerialDemo__ +#include + +/**********************************************************************/ +/*! + @brief Demonstrates using the GFXconvas classes as the backing store + for a device driver. +*/ +/**********************************************************************/ +class GFXcanvas1SerialDemo : public GFXcanvas1 { +public: + GFXcanvas1SerialDemo(uint16_t w, uint16_t h); + + /**********************************************************************/ + /*! + @brief Prints the current contents of the canvas to Serial + @param rotated true to print according to the current GFX rotation, + false to print to the native rotation of the canvas (or unrotated). + */ + /**********************************************************************/ + void print(bool rotated); +}; + +/**********************************************************************/ +/*! + @brief Demonstrates using the GFXconvas classes as the backing store + for a device driver. +*/ +/**********************************************************************/ +class GFXcanvas8SerialDemo : public GFXcanvas8 { +public: + GFXcanvas8SerialDemo(uint16_t w, uint16_t h); + + /**********************************************************************/ + /*! + @brief Prints the current contents of the canvas to Serial + @param rotated true to print according to the current GFX rotation, + false to print to the native rotation of the canvas (or unrotated). + */ + /**********************************************************************/ + void print(bool rotated); +}; + +/**********************************************************************/ +/*! + @brief Demonstrates using the GFXconvas classes as the backing store + for a device driver. +*/ +/**********************************************************************/ +class GFXcanvas16SerialDemo : public GFXcanvas16 { +public: + GFXcanvas16SerialDemo(uint16_t w, uint16_t h); + + /**********************************************************************/ + /*! + @brief Prints the current contents of the canvas to Serial + @param rotated true to print according to the current GFX rotation, + false to print to the native rotation of the canvas (or unrotated). + */ + /**********************************************************************/ + void print(bool rotated); +}; + +#endif // __GFXcanvasSerialDemo__ diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/examples/mock_ili9341/mock_ili9341.ino b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/examples/mock_ili9341/mock_ili9341.ino new file mode 100644 index 0000000..d141839 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/examples/mock_ili9341/mock_ili9341.ino @@ -0,0 +1,365 @@ +/*************************************************** + This is our GFX example for the Adafruit ILI9341 Breakout and Shield + ----> http://www.adafruit.com/products/1651 + + Check out the links above for our tutorials and wiring diagrams + These displays use SPI to communicate, 4 or 5 pins are required to + interface (RST is optional) + 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. + MIT license, all text above must be included in any redistribution + ****************************************************/ + + +#include "SPI.h" +#include "Adafruit_GFX.h" +#include "Adafruit_ILI9341.h" + +// For the Adafruit shield, these are the default. +#define TFT_DC 9 +#define TFT_CS 10 + +// Use hardware SPI (on Uno, #13, #12, #11) and the above for CS/DC +Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC); +// If using the breakout, change pins as desired +//Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_MOSI, TFT_CLK, TFT_RST, TFT_MISO); + +void setup() { + Serial.begin(9600); + Serial.println("ILI9341 Test!"); + + tft.begin(); + + // read diagnostics (optional but can help debug problems) + uint8_t x = tft.readcommand8(ILI9341_RDMODE); + Serial.print("Display Power Mode: 0x"); Serial.println(x, HEX); + x = tft.readcommand8(ILI9341_RDMADCTL); + Serial.print("MADCTL Mode: 0x"); Serial.println(x, HEX); + x = tft.readcommand8(ILI9341_RDPIXFMT); + Serial.print("Pixel Format: 0x"); Serial.println(x, HEX); + x = tft.readcommand8(ILI9341_RDIMGFMT); + Serial.print("Image Format: 0x"); Serial.println(x, HEX); + x = tft.readcommand8(ILI9341_RDSELFDIAG); + Serial.print("Self Diagnostic: 0x"); Serial.println(x, HEX); + + Serial.println(F("Benchmark Time (microseconds)")); + delay(10); + Serial.print(F("Screen fill ")); + Serial.println(testFillScreen()); + delay(500); + + Serial.print(F("Text ")); + Serial.println(testText()); + delay(3000); + + Serial.print(F("Lines ")); + Serial.println(testLines(ILI9341_CYAN)); + delay(500); + + Serial.print(F("Horiz/Vert Lines ")); + Serial.println(testFastLines(ILI9341_RED, ILI9341_BLUE)); + delay(500); + + Serial.print(F("Rectangles (outline) ")); + Serial.println(testRects(ILI9341_GREEN)); + delay(500); + + Serial.print(F("Rectangles (filled) ")); + Serial.println(testFilledRects(ILI9341_YELLOW, ILI9341_MAGENTA)); + delay(500); + + Serial.print(F("Circles (filled) ")); + Serial.println(testFilledCircles(10, ILI9341_MAGENTA)); + + Serial.print(F("Circles (outline) ")); + Serial.println(testCircles(10, ILI9341_WHITE)); + delay(500); + + Serial.print(F("Triangles (outline) ")); + Serial.println(testTriangles()); + delay(500); + + Serial.print(F("Triangles (filled) ")); + Serial.println(testFilledTriangles()); + delay(500); + + Serial.print(F("Rounded rects (outline) ")); + Serial.println(testRoundRects()); + delay(500); + + Serial.print(F("Rounded rects (filled) ")); + Serial.println(testFilledRoundRects()); + delay(500); + + Serial.println(F("Done!")); + +} + + +void loop(void) { + for(uint8_t rotation=0; rotation<4; rotation++) { + tft.setRotation(rotation); + testText(); + delay(1000); + } +} + +unsigned long testFillScreen() { + unsigned long start = micros(); + tft.fillScreen(ILI9341_BLACK); + yield(); + tft.fillScreen(ILI9341_RED); + yield(); + tft.fillScreen(ILI9341_GREEN); + yield(); + tft.fillScreen(ILI9341_BLUE); + yield(); + tft.fillScreen(ILI9341_BLACK); + yield(); + return micros() - start; +} + +unsigned long testText() { + tft.fillScreen(ILI9341_BLACK); + unsigned long start = micros(); + tft.setCursor(0, 0); + tft.setTextColor(ILI9341_WHITE); tft.setTextSize(1); + tft.println("Hello World!"); + tft.setTextColor(ILI9341_YELLOW); tft.setTextSize(2); + tft.println(1234.56); + tft.setTextColor(ILI9341_RED); tft.setTextSize(3); + tft.println(0xDEADBEEF, HEX); + tft.println(); + tft.setTextColor(ILI9341_GREEN); + tft.setTextSize(5); + tft.println("Groop"); + tft.setTextSize(2); + tft.println("I implore thee,"); + tft.setTextSize(1); + tft.println("my foonting turlingdromes."); + tft.println("And hooptiously drangle me"); + tft.println("with crinkly bindlewurdles,"); + tft.println("Or I will rend thee"); + tft.println("in the gobberwarts"); + tft.println("with my blurglecruncheon,"); + tft.println("see if I don't!"); + return micros() - start; +} + +unsigned long testLines(uint16_t color) { + unsigned long start, t; + int x1, y1, x2, y2, + w = tft.width(), + h = tft.height(); + + tft.fillScreen(ILI9341_BLACK); + yield(); + + x1 = y1 = 0; + y2 = h - 1; + start = micros(); + for(x2=0; x20; i-=6) { + i2 = i / 2; + start = micros(); + tft.fillRect(cx-i2, cy-i2, i, i, color1); + t += micros() - start; + // Outlines are not included in timing results + tft.drawRect(cx-i2, cy-i2, i, i, color2); + yield(); + } + + return t; +} + +unsigned long testFilledCircles(uint8_t radius, uint16_t color) { + unsigned long start; + int x, y, w = tft.width(), h = tft.height(), r2 = radius * 2; + + tft.fillScreen(ILI9341_BLACK); + start = micros(); + for(x=radius; x10; i-=5) { + start = micros(); + tft.fillTriangle(cx, cy - i, cx - i, cy + i, cx + i, cy + i, + tft.color565(0, i*10, i*10)); + t += micros() - start; + tft.drawTriangle(cx, cy - i, cx - i, cy + i, cx + i, cy + i, + tft.color565(i*10, i*10, 0)); + yield(); + } + + return t; +} + +unsigned long testRoundRects() { + unsigned long start; + int w, i, i2, + cx = tft.width() / 2 - 1, + cy = tft.height() / 2 - 1; + + tft.fillScreen(ILI9341_BLACK); + w = min(tft.width(), tft.height()); + start = micros(); + for(i=0; i20; i-=6) { + i2 = i / 2; + tft.fillRoundRect(cx-i2, cy-i2, i, i, i/8, tft.color565(0, i, 0)); + yield(); + } + + return micros() - start; +} diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/fontconvert/Makefile b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/fontconvert/Makefile new file mode 100644 index 0000000..47f5a0e --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/fontconvert/Makefile @@ -0,0 +1,12 @@ +all: fontconvert + +CC = gcc +CFLAGS = -Wall -I/usr/local/include/freetype2 -I/usr/include/freetype2 -I/usr/include +LIBS = -lfreetype + +fontconvert: fontconvert.c + $(CC) $(CFLAGS) $< $(LIBS) -o $@ + strip $@ + +clean: + rm -f fontconvert diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/fontconvert/bdf2adafruit.py b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/fontconvert/bdf2adafruit.py new file mode 100644 index 0000000..9d9ee8a --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/fontconvert/bdf2adafruit.py @@ -0,0 +1,135 @@ +#!/usr/bin/python2 + +# MIT License. + +# Copyright (c) 2016 William Skellenger +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +# IN THE SOFTWARE. + +# This small script is designed to mostly take a BDF file and convert it to a +# format that can largely be cut/pasted as an Adafruit-format font. +# It was written in an hour or so and did what I needed it to do. +# I used it for one file. Maybe it bombs on other files. +# William Skellenger, Feb 2016 +# (email: williamj@skellenger.net) +# (Twitter: @skelliam) +# +# Usage: bdf2adafruit.py > out.txt +# +# Once you have out.txt you can cut/paste the contents into a new font +# header file as part of the Adafruit GFX library. + +import sys + +myfile = open(sys.argv[1]) + +processing = 0 +getting_rows = 0 + +chars = [] +bitmapData = [] + +class Glyph: + encoding = -1 + rows = [] + comment = "" + offset = -1 + width = 0 + height = 0 + advance = 0 + xoffs = 0 + yoffs = 0 + def __init__(self, comment): + self.comment = comment + self.rows = [] + +for line in myfile.readlines(): + if 'STARTCHAR' in line: + processing = 1 + vals = line.split() + g = Glyph(vals[1]) + #g.width = 8 #in this example always 8 bits wide + elif 'ENDCHAR' in line: + dataByteCompressed = 0 + dataByteCompressedIndex = 8 + g.height = len(bitmapData) + for value in bitmapData: + bitIndex = 0 + while bitIndex < g.width: + bit = (value >> (7 - bitIndex)) & 0x01 + dataByteCompressed |= bit << (dataByteCompressedIndex - 1) + dataByteCompressedIndex -= 1 + if dataByteCompressedIndex == 0: + dataByteCompressedIndex = 8 + g.rows.append(dataByteCompressed) + dataByteCompressed = 0 + bitIndex += 1 + if 8 != dataByteCompressedIndex: + g.rows.append(dataByteCompressed) + + chars.append(g) #append the completed glyph into list + processing = 0 + getting_rows = 0 + bitmapData.clear() + + if processing: + if 'ENCODING' in line: + vals = line.split() + g.encoding = int(vals[1]) + elif 'DWIDTH' in line: + vals = line.split() + #g.advance = int(vals[1]) #cursor advance seems to be the first number in DWIDTH + elif 'BBX' in line: + vals = line.split() + g.xoffs = 0 + g.yoffs = -(int(vals[2]) + int(vals[4])) + g.advance = (int(vals[1]) + 1) #x bounding box + 1 + g.width = int(vals[1]) + elif 'BITMAP' in line: + getting_rows = 1 + elif getting_rows: + #g.rows.append(int(line, 16)) #append pixel rows into glyph's list of rows + bitmapData.append(int(line, 16)) + +print + +i=0 +for char in chars: + char.offset = i + print("\t", end='') + num = 3 + for row in char.rows: + if num != 3: + print(" ", end = '') + print("0x%02X," %(row), end = ''), + i+=1 + num-=1 + + if num == 1: + print("\t\t", end = '') + if num == 2: + print("\t\t\t", end = '') + print("\t/* 0x%02X %s */" %(char.encoding, char.comment)) + +for char in chars: + # offset, bit-width, bit-height, advance cursor, x offset, y offset + print("\t{ %d, %d, %d, %d, %d, %d }, /* 0x%02X %s */" %( + char.offset, char.width, char.height, + char.advance, char.xoffs, char.yoffs, + char.encoding, char.comment)) diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/fontconvert/fontconvert.c b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/fontconvert/fontconvert.c new file mode 100644 index 0000000..302d1da --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/fontconvert/fontconvert.c @@ -0,0 +1,291 @@ +/* +TrueType to Adafruit_GFX font converter. Derived from Peter Jakobs' +Adafruit_ftGFX fork & makefont tool, and Paul Kourany's Adafruit_mfGFX. + +NOT AN ARDUINO SKETCH. This is a command-line tool for preprocessing +fonts to be used with the Adafruit_GFX Arduino library. + +For UNIX-like systems. Outputs to stdout; redirect to header file, e.g.: + ./fontconvert ~/Library/Fonts/FreeSans.ttf 18 > FreeSans18pt7b.h + +REQUIRES FREETYPE LIBRARY. www.freetype.org + +Currently this only extracts the printable 7-bit ASCII chars of a font. +Will eventually extend with some int'l chars a la ftGFX, not there yet. +Keep 7-bit fonts around as an option in that case, more compact. + +See notes at end for glyph nomenclature & other tidbits. +*/ +#ifndef ARDUINO + +#include +#include +#include +#include +#include FT_GLYPH_H +#include FT_MODULE_H +#include FT_TRUETYPE_DRIVER_H +#include "../gfxfont.h" // Adafruit_GFX font structures + +#define DPI 141 // Approximate res. of Adafruit 2.8" TFT + +// Accumulate bits for output, with periodic hexadecimal byte write +void enbit(uint8_t value) { + static uint8_t row = 0, sum = 0, bit = 0x80, firstCall = 1; + if (value) + sum |= bit; // Set bit if needed + if (!(bit >>= 1)) { // Advance to next bit, end of byte reached? + if (!firstCall) { // Format output table nicely + if (++row >= 12) { // Last entry on line? + printf(",\n "); // Newline format output + row = 0; // Reset row counter + } else { // Not end of line + printf(", "); // Simple comma delim + } + } + printf("0x%02X", sum); // Write byte value + sum = 0; // Clear for next byte + bit = 0x80; // Reset bit counter + firstCall = 0; // Formatting flag + } +} + +int main(int argc, char *argv[]) { + int i, j, err, size, first = ' ', last = '~', bitmapOffset = 0, x, y, byte; + char *fontName, c, *ptr; + FT_Library library; + FT_Face face; + FT_Glyph glyph; + FT_Bitmap *bitmap; + FT_BitmapGlyphRec *g; + GFXglyph *table; + uint8_t bit; + + // Parse command line. Valid syntaxes are: + // fontconvert [filename] [size] + // fontconvert [filename] [size] [last char] + // fontconvert [filename] [size] [first char] [last char] + // Unless overridden, default first and last chars are + // ' ' (space) and '~', respectively + + if (argc < 3) { + fprintf(stderr, "Usage: %s fontfile size [first] [last]\n", argv[0]); + return 1; + } + + size = atoi(argv[2]); + + if (argc == 4) { + last = atoi(argv[3]); + } else if (argc == 5) { + first = atoi(argv[3]); + last = atoi(argv[4]); + } + + if (last < first) { + i = first; + first = last; + last = i; + } + + ptr = strrchr(argv[1], '/'); // Find last slash in filename + if (ptr) + ptr++; // First character of filename (path stripped) + else + ptr = argv[1]; // No path; font in local dir. + + // Allocate space for font name and glyph table + if ((!(fontName = malloc(strlen(ptr) + 20))) || + (!(table = (GFXglyph *)malloc((last - first + 1) * sizeof(GFXglyph))))) { + fprintf(stderr, "Malloc error\n"); + return 1; + } + + // Derive font table names from filename. Period (filename + // extension) is truncated and replaced with the font size & bits. + strcpy(fontName, ptr); + ptr = strrchr(fontName, '.'); // Find last period (file ext) + if (!ptr) + ptr = &fontName[strlen(fontName)]; // If none, append + // Insert font size and 7/8 bit. fontName was alloc'd w/extra + // space to allow this, we're not sprintfing into Forbidden Zone. + sprintf(ptr, "%dpt%db", size, (last > 127) ? 8 : 7); + // Space and punctuation chars in name replaced w/ underscores. + for (i = 0; (c = fontName[i]); i++) { + if (isspace(c) || ispunct(c)) + fontName[i] = '_'; + } + + // Init FreeType lib, load font + if ((err = FT_Init_FreeType(&library))) { + fprintf(stderr, "FreeType init error: %d", err); + return err; + } + + // Use TrueType engine version 35, without subpixel rendering. + // This improves clarity of fonts since this library does not + // support rendering multiple levels of gray in a glyph. + // See https://github.com/adafruit/Adafruit-GFX-Library/issues/103 + FT_UInt interpreter_version = TT_INTERPRETER_VERSION_35; + FT_Property_Set(library, "truetype", "interpreter-version", + &interpreter_version); + + if ((err = FT_New_Face(library, argv[1], 0, &face))) { + fprintf(stderr, "Font load error: %d", err); + FT_Done_FreeType(library); + return err; + } + + // << 6 because '26dot6' fixed-point format + FT_Set_Char_Size(face, size << 6, 0, DPI, 0); + + // Currently all symbols from 'first' to 'last' are processed. + // Fonts may contain WAY more glyphs than that, but this code + // will need to handle encoding stuff to deal with extracting + // the right symbols, and that's not done yet. + // fprintf(stderr, "%ld glyphs\n", face->num_glyphs); + + printf("const uint8_t %sBitmaps[] PROGMEM = {\n ", fontName); + + // Process glyphs and output huge bitmap data array + for (i = first, j = 0; i <= last; i++, j++) { + // MONO renderer provides clean image with perfect crop + // (no wasted pixels) via bitmap struct. + if ((err = FT_Load_Char(face, i, FT_LOAD_TARGET_MONO))) { + fprintf(stderr, "Error %d loading char '%c'\n", err, i); + continue; + } + + if ((err = FT_Render_Glyph(face->glyph, FT_RENDER_MODE_MONO))) { + fprintf(stderr, "Error %d rendering char '%c'\n", err, i); + continue; + } + + if ((err = FT_Get_Glyph(face->glyph, &glyph))) { + fprintf(stderr, "Error %d getting glyph '%c'\n", err, i); + continue; + } + + bitmap = &face->glyph->bitmap; + g = (FT_BitmapGlyphRec *)glyph; + + // Minimal font and per-glyph information is stored to + // reduce flash space requirements. Glyph bitmaps are + // fully bit-packed; no per-scanline pad, though end of + // each character may be padded to next byte boundary + // when needed. 16-bit offset means 64K max for bitmaps, + // code currently doesn't check for overflow. (Doesn't + // check that size & offsets are within bounds either for + // that matter...please convert fonts responsibly.) + table[j].bitmapOffset = bitmapOffset; + table[j].width = bitmap->width; + table[j].height = bitmap->rows; + table[j].xAdvance = face->glyph->advance.x >> 6; + table[j].xOffset = g->left; + table[j].yOffset = 1 - g->top; + + for (y = 0; y < bitmap->rows; y++) { + for (x = 0; x < bitmap->width; x++) { + byte = x / 8; + bit = 0x80 >> (x & 7); + enbit(bitmap->buffer[y * bitmap->pitch + byte] & bit); + } + } + + // Pad end of char bitmap to next byte boundary if needed + int n = (bitmap->width * bitmap->rows) & 7; + if (n) { // Pixel count not an even multiple of 8? + n = 8 - n; // # bits to next multiple + while (n--) + enbit(0); + } + bitmapOffset += (bitmap->width * bitmap->rows + 7) / 8; + + FT_Done_Glyph(glyph); + } + + printf(" };\n\n"); // End bitmap array + + // Output glyph attributes table (one per character) + printf("const GFXglyph %sGlyphs[] PROGMEM = {\n", fontName); + for (i = first, j = 0; i <= last; i++, j++) { + printf(" { %5d, %3d, %3d, %3d, %4d, %4d }", table[j].bitmapOffset, + table[j].width, table[j].height, table[j].xAdvance, table[j].xOffset, + table[j].yOffset); + if (i < last) { + printf(", // 0x%02X", i); + if ((i >= ' ') && (i <= '~')) { + printf(" '%c'", i); + } + putchar('\n'); + } + } + printf(" }; // 0x%02X", last); + if ((last >= ' ') && (last <= '~')) + printf(" '%c'", last); + printf("\n\n"); + + // Output font structure + printf("const GFXfont %s PROGMEM = {\n", fontName); + printf(" (uint8_t *)%sBitmaps,\n", fontName); + printf(" (GFXglyph *)%sGlyphs,\n", fontName); + if (face->size->metrics.height == 0) { + // No face height info, assume fixed width and get from a glyph. + printf(" 0x%02X, 0x%02X, %d };\n\n", first, last, table[0].height); + } else { + printf(" 0x%02X, 0x%02X, %ld };\n\n", first, last, + face->size->metrics.height >> 6); + } + printf("// Approx. %d bytes\n", bitmapOffset + (last - first + 1) * 7 + 7); + // Size estimate is based on AVR struct and pointer sizes; + // actual size may vary. + + FT_Done_FreeType(library); + + return 0; +} + +/* ------------------------------------------------------------------------- + +Character metrics are slightly different from classic GFX & ftGFX. +In classic GFX: cursor position is the upper-left pixel of each 5x7 +character; lower extent of most glyphs (except those w/descenders) +is +6 pixels in Y direction. +W/new GFX fonts: cursor position is on baseline, where baseline is +'inclusive' (containing the bottom-most row of pixels in most symbols, +except those with descenders; ftGFX is one pixel lower). + +Cursor Y will be moved automatically when switching between classic +and new fonts. If you switch fonts, any print() calls will continue +along the same baseline. + + ...........#####.. -- yOffset + ..........######.. + ..........######.. + .........#######.. + ........#########. + * = Cursor pos. ........#########. + .......##########. + ......#####..####. + ......#####..####. + *.#.. .....#####...####. + .#.#. ....############## + #...# ...############### + #...# ...############### + ##### ..#####......##### + #...# .#####.......##### +====== #...# ====== #*###.........#### ======= Baseline + || xOffset + +glyph->xOffset and yOffset are pixel offsets, in GFX coordinate space +(+Y is down), from the cursor position to the top-left pixel of the +glyph bitmap. i.e. yOffset is typically negative, xOffset is typically +zero but a few glyphs will have other values (even negative xOffsets +sometimes, totally normal). glyph->xAdvance is the distance to move +the cursor on the X axis after drawing the corresponding symbol. + +There's also some changes with regard to 'background' color and new GFX +fonts (classic fonts unchanged). See Adafruit_GFX.cpp for explanation. +*/ + +#endif /* !ARDUINO */ diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/fontconvert/fontconvert_win.md b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/fontconvert/fontconvert_win.md new file mode 100644 index 0000000..1932841 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/fontconvert/fontconvert_win.md @@ -0,0 +1,88 @@ +### A short guide to use fontconvert.c to create your own fonts using MinGW. + +#### STEP 1: INSTALL MinGW + +Install MinGW (Minimalist GNU for Windows) from [MinGW.org](http://www.mingw.org/). +Please read carefully the instructions found on [Getting started page](http://www.mingw.org/wiki/Getting_Started). +I suggest installing with the "Graphical User Interface Installer". +To complete your initial installation you should further install some "packages". +For our purpose you should only install the "Basic Setup" packages. +To do that: + +1. Open the MinGW Installation Manager +2. From the left panel click "Basic Setup". +3. On the right panel choose "mingw32-base", "mingw-gcc-g++", "mingw-gcc-objc" and "msys-base" +and click "Mark for installation" +4. From the Menu click "Installation" and then "Apply changes". In the pop-up window select "Apply". + + +#### STEP 2: INSTALL Freetype Library + +To read about the freetype project visit [freetype.org](https://www.freetype.org/). +To Download the latest version of freetype go to [download page](http://download.savannah.gnu.org/releases/freetype/) +and choose "freetype-2.7.tar.gz" file (or a newer version if available). +To avoid long cd commands later in the command prompt, I suggest you unzip the file in the C:\ directory. +(I also renamed the folder to "ft27") +Before you build the library it's good to read these articles: +* [Using MSYS with MinGW](http://www.mingw.org/wiki/MSYS) +* [Installation and Use of Supplementary Libraries with MinGW](http://www.mingw.org/wiki/LibraryPathHOWTO) +* [Include Path](http://www.mingw.org/wiki/IncludePathHOWTO) + +Inside the unzipped folder there is another folder named "docs". Open it and read the INSTALL.UNIX (using notepad). +Pay attention to paragraph 3 (Build and Install the Library). So, let's begin the installation. +To give the appropriate commands we will use the MSYS command prompt (not cmd.exe of windows) which is UNIX like. +Follow the path C:\MinGW\msys\1.0 and double click "msys.bat". The command prompt environment appears. +Enter "ft27" directory using the cd commands: +``` +cd /c +cd ft27 +``` + +and then type one by one the commands: +``` +./configure --prefix=/mingw +make +make install +``` +Once you're finished, go inside "C:\MinGW\include" and there should be a new folder named "freetype2". +That, hopefully, means that you have installed the library correctly !! + +#### STEP 3: Build fontconvert.c + +Before proceeding I suggest you make a copy of Adafruit_GFX_library folder in C:\ directory. +Then, inside "fontconvert" folder open the "makefile" with an editor ( I used notepad++). +Change the commands so in the end the program looks like : +``` +all: fontconvert + +CC = gcc +CFLAGS = -Wall -I c:/mingw/include/freetype2 +LIBS = -lfreetype + +fontconvert: fontconvert.c + $(CC) $(CFLAGS) $< $(LIBS) -o $@ + +clean: + rm -f fontconvert +``` +Go back in the command prompt and with a cd command enter the fontconvert directory. +``` +cd /c/adafruit_gfx_library\fontconvert +``` +Give the command: +``` +make +``` +This command will, eventually, create a "fontconvert.exe" file inside fontconvert directory. + +#### STEP 4: Create your own font header files + +Now that you have an executable file, you can use it to create your own fonts to work with Adafruit GFX lib. +So, if we suppose that you already have a .ttf file with your favorite fonts, jump to the command prompt and type: +``` +./fontconvert yourfonts.ttf 9 > yourfonts9pt7b.h +``` +You can read more details at: [learn.adafruit](https://learn.adafruit.com/adafruit-gfx-graphics-library/using-fonts). + +Taraaaaaammm !! you've just created your new font header file. Put it inside the "Fonts" folder, grab a cup of coffee +and start playing with your Arduino (or whatever else ....)+ display module project. diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/fontconvert/makefonts.sh b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/fontconvert/makefonts.sh new file mode 100755 index 0000000..35f07ea --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/fontconvert/makefonts.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +# Ugly little Bash script, generates a set of .h files for GFX using +# GNU FreeFont sources. There are three fonts: 'Mono' (Courier-like), +# 'Sans' (Helvetica-like) and 'Serif' (Times-like); four styles: regular, +# bold, oblique or italic, and bold+oblique or bold+italic; and four +# sizes: 9, 12, 18 and 24 point. No real error checking or anything, +# this just powers through all the combinations, calling the fontconvert +# utility and redirecting the output to a .h file for each combo. + +# Adafruit_GFX repository does not include the source outline fonts +# (huge zipfile, different license) but they're easily acquired: +# http://savannah.gnu.org/projects/freefont/ + +convert=./fontconvert +inpath=~/Desktop/freefont/ +outpath=../Fonts/ +fonts=(FreeMono FreeSans FreeSerif) +styles=("" Bold Italic BoldItalic Oblique BoldOblique) +sizes=(9 12 18 24) + +for f in ${fonts[*]} +do + for index in ${!styles[*]} + do + st=${styles[$index]} + for si in ${sizes[*]} + do + infile=$inpath$f$st".ttf" + if [ -f $infile ] # Does source combination exist? + then + outfile=$outpath$f$st$si"pt7b.h" +# printf "%s %s %s > %s\n" $convert $infile $si $outfile + $convert $infile $si > $outfile + fi + done + done +done diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/gfxfont.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/gfxfont.h new file mode 100644 index 0000000..175bad6 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/gfxfont.h @@ -0,0 +1,29 @@ +// 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_ + +/// Font data stored PER GLYPH +typedef struct { + uint16_t bitmapOffset; ///< Pointer into GFXfont->bitmap + uint8_t width; ///< Bitmap dimensions in pixels + uint8_t height; ///< Bitmap dimensions in pixels + uint8_t xAdvance; ///< Distance to advance cursor (x axis) + int8_t xOffset; ///< X dist from cursor pos to UL corner + int8_t yOffset; ///< Y dist from cursor pos to UL corner +} GFXglyph; + +/// Data stored for FONT AS A WHOLE +typedef struct { + uint8_t *bitmap; ///< Glyph bitmaps, concatenated + GFXglyph *glyph; ///< Glyph array + uint16_t first; ///< ASCII extents (first char) + uint16_t last; ///< ASCII extents (last char) + uint8_t yAdvance; ///< Newline distance (y axis) +} GFXfont; + +#endif // _GFXFONT_H_ diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/glcdfont.c b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/glcdfont.c new file mode 100644 index 0000000..535da3a --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/glcdfont.c @@ -0,0 +1,143 @@ +// 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 +#elif defined(__IMXRT1052__) || defined(__IMXRT1062__) +// PROGMEM is defefind for T4 to place data in specific memory section +#undef PROGMEM +#define PROGMEM +#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 +}; + +// allow clean compilation with [-Wunused-const-variable=] and [-Wall] +static inline void avoid_unused_const_variable_compiler_warning(void) { + (void)font; +} + +#endif // FONT5X7_H diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/library.properties b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/library.properties new file mode 100644 index 0000000..3bbb3ff --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/library.properties @@ -0,0 +1,10 @@ +name=Adafruit GFX Library +version=1.12.6 +author=Adafruit +maintainer=Adafruit +sentence=Adafruit GFX graphics core library, this is the 'core' class that all our other graphics libraries derive from. +paragraph=Install this library in addition to the display library for your hardware. +category=Display +url=https://github.com/adafruit/Adafruit-GFX-Library +architectures=* +depends=Adafruit BusIO diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/license.txt b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/license.txt new file mode 100644 index 0000000..7492e93 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit GFX Library/license.txt @@ -0,0 +1,24 @@ +Software License Agreement (BSD License) + +Copyright (c) 2012 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. diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/.github/ISSUE_TEMPLATE.md b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/.github/ISSUE_TEMPLATE.md new file mode 100644 index 0000000..f0e2614 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,46 @@ +Thank you for opening an issue on an Adafruit Arduino library repository. To +improve the speed of resolution please review the following guidelines and +common troubleshooting steps below before creating the issue: + +- **Do not use GitHub issues for troubleshooting projects and issues.** Instead use + the forums at http://forums.adafruit.com to ask questions and troubleshoot why + something isn't working as expected. In many cases the problem is a common issue + that you will more quickly receive help from the forum community. GitHub issues + are meant for known defects in the code. If you don't know if there is a defect + in the code then start with troubleshooting on the forum first. + +- **If following a tutorial or guide be sure you didn't miss a step.** Carefully + check all of the steps and commands to run have been followed. Consult the + forum if you're unsure or have questions about steps in a guide/tutorial. + +- **For Arduino projects check these very common issues to ensure they don't apply**: + + - For uploading sketches or communicating with the board make sure you're using + a **USB data cable** and **not** a **USB charge-only cable**. It is sometimes + very hard to tell the difference between a data and charge cable! Try using the + cable with other devices or swapping to another cable to confirm it is not + the problem. + + - **Be sure you are supplying adequate power to the board.** Check the specs of + your board and plug in an external power supply. In many cases just + plugging a board into your computer is not enough to power it and other + peripherals. + + - **Double check all soldering joints and connections.** Flakey connections + cause many mysterious problems. See the [guide to excellent soldering](https://learn.adafruit.com/adafruit-guide-excellent-soldering/tools) for examples of good solder joints. + + - **Ensure you are using an official Arduino or Adafruit board.** We can't + guarantee a clone board will have the same functionality and work as expected + with this code and don't support them. + +If you're sure this issue is a defect in the code and checked the steps above +please fill in the following fields to provide enough troubleshooting information. +You may delete the guideline and text above to just leave the following details: + +- Arduino board: **INSERT ARDUINO BOARD NAME/TYPE HERE** + +- Arduino IDE version (found in Arduino -> About Arduino menu): **INSERT ARDUINO + VERSION HERE** + +- List the steps to reproduce the problem below (if possible attach a sketch or + copy the sketch code in too): **LIST REPRO STEPS BELOW** diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/.github/PULL_REQUEST_TEMPLATE.md b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..7b641eb --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,26 @@ +Thank you for creating a pull request to contribute to Adafruit's GitHub code! +Before you open the request please review the following guidelines and tips to +help it be more easily integrated: + +- **Describe the scope of your change--i.e. what the change does and what parts + of the code were modified.** This will help us understand any risks of integrating + the code. + +- **Describe any known limitations with your change.** For example if the change + doesn't apply to a supported platform of the library please mention it. + +- **Please run any tests or examples that can exercise your modified code.** We + strive to not break users of the code and running tests/examples helps with this + process. + +Thank you again for contributing! We will try to test and integrate the change +as soon as we can, but be aware we have many GitHub repositories to manage and +can't immediately respond to every request. There is no need to bump or check in +on a pull request (it will clutter the discussion of the request). + +Also don't be worried if the request is closed or not integrated--sometimes the +priorities of Adafruit's GitHub code (education, ease of use) might not match the +priorities of the pull request. Don't fret, the open source community thrives on +forks and GitHub makes it easy to keep your changes in a forked repo. + +After reviewing the guidelines above you can delete this text from the pull request. diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/.github/workflows/githubci.yml b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/.github/workflows/githubci.yml new file mode 100644 index 0000000..32d54d9 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/.github/workflows/githubci.yml @@ -0,0 +1,32 @@ +name: Arduino Library CI + +on: [pull_request, push, repository_dispatch] + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/setup-python@v4 + with: + python-version: '3.x' + - uses: actions/checkout@v3 + - uses: actions/checkout@v3 + with: + repository: adafruit/ci-arduino + path: ci + + - name: pre-install + run: bash ci/actions_install.sh + + - name: test platforms + run: python3 ci/build_platform.py main_platforms + + - name: clang + run: python3 ci/run-clang-format.py -e "ci/*" -e "bin/*" -r . + + - name: doxygen + env: + GH_REPO_TOKEN: ${{ secrets.GH_REPO_TOKEN }} + PRETTYNAME : "Adafruit IS31FL3731 Library" + run: bash ci/doxy_gen_and_deploy.sh diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/.piopm b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/.piopm new file mode 100644 index 0000000..ccf819e --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/.piopm @@ -0,0 +1 @@ +{"type": "library", "name": "Adafruit IS31FL3731 Library", "version": "2.0.2", "spec": {"owner": "adafruit", "id": 1241, "name": "Adafruit IS31FL3731 Library", "requirements": null, "uri": null}} \ No newline at end of file diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/Adafruit_IS31FL3731.cpp b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/Adafruit_IS31FL3731.cpp new file mode 100644 index 0000000..fb1a347 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/Adafruit_IS31FL3731.cpp @@ -0,0 +1,273 @@ +#include + +#ifndef _swap_int16_t +#define _swap_int16_t(a, b) \ + { \ + int16_t t = a; \ + a = b; \ + b = t; \ + } +#endif + +/**************************************************************************/ +/*! + @brief Constructor for breakout version + @param width Desired width of led display + @param height Desired height of led display +*/ +/**************************************************************************/ + +Adafruit_IS31FL3731::Adafruit_IS31FL3731(uint8_t width, uint8_t height) + : Adafruit_GFX(width, height) {} + +/**************************************************************************/ +/*! + @brief Constructor for FeatherWing version (15x7 LEDs) +*/ +/**************************************************************************/ +Adafruit_IS31FL3731_Wing::Adafruit_IS31FL3731_Wing(void) + : Adafruit_IS31FL3731(15, 7) {} + +/**************************************************************************/ +/*! + @brief Initialize hardware and clear display + @param addr The I2C address we expect to find the chip at + @param theWire The TwoWire I2C bus device to use, defaults to &Wire + @returns True on success, false if chip isnt found +*/ +/**************************************************************************/ +bool Adafruit_IS31FL3731::begin(uint8_t addr, TwoWire *theWire) { + if (_i2c_dev) { + delete _i2c_dev; + } + _i2c_dev = new Adafruit_I2CDevice(addr, theWire); + + if (!_i2c_dev->begin()) { + return false; + } + + _i2c_dev->setSpeed(400000); + _frame = 0; + + // shutdown + writeRegister8(ISSI_BANK_FUNCTIONREG, ISSI_REG_SHUTDOWN, 0x00); + + delay(10); + + // out of shutdown + writeRegister8(ISSI_BANK_FUNCTIONREG, ISSI_REG_SHUTDOWN, 0x01); + + // picture mode + writeRegister8(ISSI_BANK_FUNCTIONREG, ISSI_REG_CONFIG, + ISSI_REG_CONFIG_PICTUREMODE); + + displayFrame(_frame); + + // all LEDs on & 0 PWM + clear(); // set each led to 0 PWM + + for (uint8_t f = 0; f < 8; f++) { + for (uint8_t i = 0; i <= 0x11; i++) + writeRegister8(f, i, 0xff); // each 8 LEDs on + } + + audioSync(false); + + return true; +} + +/**************************************************************************/ +/*! + @brief Sets all LEDs on & 0 PWM for current frame. +*/ +/**************************************************************************/ +void Adafruit_IS31FL3731::clear(void) { + selectBank(_frame); + uint8_t erasebuf[25]; + + memset(erasebuf, 0, 25); + + for (uint8_t i = 0; i < 6; i++) { + erasebuf[0] = 0x24 + i * 24; + _i2c_dev->write(erasebuf, 25); + } +} + +/**************************************************************************/ +/*! + @brief Low level accesssor - sets a 8-bit PWM pixel value to a bank location + does not handle rotation, x/y or any rearrangements! + @param lednum The offset into the bank that corresponds to the LED + @param bank The bank/frame we will set the data in + @param pwm brightnes, from 0 (off) to 255 (max on) +*/ +/**************************************************************************/ +void Adafruit_IS31FL3731::setLEDPWM(uint8_t lednum, uint8_t pwm, uint8_t bank) { + if (lednum >= 144) + return; + writeRegister8(bank, 0x24 + lednum, pwm); +} + +/**************************************************************************/ +/*! + @brief Adafruit GFX low level accesssor - sets a 8-bit PWM pixel value + handles rotation and pixel arrangement, unlike setLEDPWM + @param x The x position, starting with 0 for left-most side + @param y The y position, starting with 0 for top-most side + @param color Despite being a 16-bit value, takes 0 (off) to 255 (max on) +*/ +/**************************************************************************/ +void Adafruit_IS31FL3731_Wing::drawPixel(int16_t x, int16_t y, uint16_t color) { + // check rotation, move pixel around if necessary + switch (getRotation()) { + case 1: + _swap_int16_t(x, y); + x = 15 - x - 1; + break; + case 2: + x = 15 - x - 1; + y = 7 - y - 1; + break; + case 3: + _swap_int16_t(x, y); + y = 9 - y - 1; + break; + } + + // charlie wing is smaller: + if ((x < 0) || (x >= 16) || (y < 0) || (y >= 7)) + return; + + if (x > 7) { + x = 15 - x; + y += 8; + } else { + y = 7 - y; + } + + _swap_int16_t(x, y); + + if (color > 255) + color = 255; // PWM 8bit max + + setLEDPWM(x + y * 16, color, _frame); + return; +} + +/**************************************************************************/ +/*! + @brief Adafruit GFX low level accesssor - sets a 8-bit PWM pixel value + handles rotation and pixel arrangement, unlike setLEDPWM + @param x The x position, starting with 0 for left-most side + @param y The y position, starting with 0 for top-most side + @param color Despite being a 16-bit value, takes 0 (off) to 255 (max on) +*/ +/**************************************************************************/ +void Adafruit_IS31FL3731::drawPixel(int16_t x, int16_t y, uint16_t color) { + // check rotation, move pixel around if necessary + switch (getRotation()) { + case 1: + _swap_int16_t(x, y); + x = 16 - x - 1; + break; + case 2: + x = 16 - x - 1; + y = 9 - y - 1; + break; + case 3: + _swap_int16_t(x, y); + y = 9 - y - 1; + break; + } + + if ((x < 0) || (x >= 16)) + return; + if ((y < 0) || (y >= 9)) + return; + if (color > 255) + color = 255; // PWM 8bit max + + setLEDPWM(x + y * 16, color, _frame); + return; +} + +/**************************************************************************/ +/*! + @brief Set's this object's frame tracker (does not talk to the chip) + @param frame Ranges from 0 - 7 for the 8 frames +*/ +/**************************************************************************/ +void Adafruit_IS31FL3731::setFrame(uint8_t frame) { _frame = frame; } + +/**************************************************************************/ +/*! + @brief Have the chip set the display to the contents of a frame + @param frame Ranges from 0 - 7 for the 8 frames +*/ +/**************************************************************************/ +void Adafruit_IS31FL3731::displayFrame(uint8_t frame) { + if (frame > 7) + frame = 0; + writeRegister8(ISSI_BANK_FUNCTIONREG, ISSI_REG_PICTUREFRAME, frame); +} + +/**************************************************************************/ +/*! + @brief Switch to a given bank in the chip memory for future reads + @param bank The IS31 bank to switch to + @returns False if I2C command failed to be ack'd +*/ +/**************************************************************************/ +bool Adafruit_IS31FL3731::selectBank(uint8_t bank) { + uint8_t cmd[2] = {ISSI_COMMANDREGISTER, bank}; + return _i2c_dev->write(cmd, 2); +} + +/**************************************************************************/ +/*! + @brief Enable the audio 'sync' for brightness pulsing (not really tested) + @param sync True to enable, False to disable +*/ +/**************************************************************************/ +void Adafruit_IS31FL3731::audioSync(bool sync) { + if (sync) { + writeRegister8(ISSI_BANK_FUNCTIONREG, ISSI_REG_AUDIOSYNC, 0x1); + } else { + writeRegister8(ISSI_BANK_FUNCTIONREG, ISSI_REG_AUDIOSYNC, 0x0); + } +} + +/**************************************************************************/ +/*! + @brief Write one byte to a register located in a given bank + @param bank The IS31 bank to write the register location + @param reg the offset into the bank to write + @param data The byte value + @returns False if I2C command failed to be ack'd +*/ +/**************************************************************************/ +bool Adafruit_IS31FL3731::writeRegister8(uint8_t bank, uint8_t reg, + uint8_t data) { + selectBank(bank); + + uint8_t cmd[2] = {reg, data}; + return _i2c_dev->write(cmd, 2); +} + +/**************************************************************************/ +/*! + @brief Read one byte from a register located in a given bank + @param bank The IS31 bank to read the register location + @param reg the offset into the bank to read + @return 1 byte value +*/ +/**************************************************************************/ +uint8_t Adafruit_IS31FL3731::readRegister8(uint8_t bank, uint8_t reg) { + uint8_t val = 0xFF; + + selectBank(bank); + + _i2c_dev->write_then_read(®, 1, &val, 1); + + return val; +} diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/Adafruit_IS31FL3731.h b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/Adafruit_IS31FL3731.h new file mode 100644 index 0000000..f530253 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/Adafruit_IS31FL3731.h @@ -0,0 +1,65 @@ +#ifndef _ADAFRUIT_IS31FL3731_H_ +#define _ADAFRUIT_IS31FL3731_H_ + +#include +#include +#include + +#define ISSI_ADDR_DEFAULT 0x74 + +#define ISSI_REG_CONFIG 0x00 +#define ISSI_REG_CONFIG_PICTUREMODE 0x00 +#define ISSI_REG_CONFIG_AUTOPLAYMODE 0x08 +#define ISSI_REG_CONFIG_AUDIOPLAYMODE 0x18 + +#define ISSI_CONF_PICTUREMODE 0x00 +#define ISSI_CONF_AUTOFRAMEMODE 0x04 +#define ISSI_CONF_AUDIOMODE 0x08 + +#define ISSI_REG_PICTUREFRAME 0x01 + +#define ISSI_REG_SHUTDOWN 0x0A +#define ISSI_REG_AUDIOSYNC 0x06 + +#define ISSI_COMMANDREGISTER 0xFD +#define ISSI_BANK_FUNCTIONREG 0x0B // helpfully called 'page nine' + +/**************************************************************************/ +/*! + @brief Constructor for generic IS31FL3731 breakout version +*/ +/**************************************************************************/ +class Adafruit_IS31FL3731 : public Adafruit_GFX { +public: + Adafruit_IS31FL3731(uint8_t x = 16, uint8_t y = 9); + bool begin(uint8_t addr = ISSI_ADDR_DEFAULT, TwoWire *theWire = &Wire); + void drawPixel(int16_t x, int16_t y, uint16_t color); + void clear(void); + + void setLEDPWM(uint8_t lednum, uint8_t pwm, uint8_t bank = 0); + void audioSync(bool sync); + void setFrame(uint8_t b); + void displayFrame(uint8_t frame); + +protected: + bool selectBank(uint8_t bank); + bool writeRegister8(uint8_t bank, uint8_t reg, uint8_t data); + uint8_t readRegister8(uint8_t bank, uint8_t reg); + uint8_t _frame; ///< The frame (of 8) we are currently addressing + +private: + Adafruit_I2CDevice *_i2c_dev = NULL; +}; + +/**************************************************************************/ +/*! + @brief Constructor for FeatherWing IS31FL3731 version +*/ +/**************************************************************************/ +class Adafruit_IS31FL3731_Wing : public Adafruit_IS31FL3731 { +public: + Adafruit_IS31FL3731_Wing(void); + void drawPixel(int16_t x, int16_t y, uint16_t color); +}; + +#endif diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/CODE_OF_CONDUCT.md b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..d885b36 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/CODE_OF_CONDUCT.md @@ -0,0 +1,137 @@ + +# Adafruit Community Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as +contributors and leaders pledge to making participation in our project and +our community a harassment-free experience for everyone, regardless of age, body +size, disability, ethnicity, gender identity and expression, level or type of +experience, education, socio-economic status, nationality, personal appearance, +race, religion, or sexual identity and orientation. + +## Our Standards + +We are committed to providing a friendly, safe and welcoming environment for +all. + +Examples of behavior that contributes to creating a positive environment +include: + +* Be kind and courteous to others +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Collaborating with other community members +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and sexual attention or advances +* The use of inappropriate images, including in a community member's avatar +* The use of inappropriate language, including in a community member's nickname +* Any spamming, flaming, baiting or other attention-stealing behavior +* Excessive or unwelcome helping; answering outside the scope of the question + asked +* Trolling, insulting/derogatory comments, and personal or political attacks +* Promoting or spreading disinformation, lies, or conspiracy theories against + a person, group, organisation, project, or community +* Public or private harassment +* Publishing others' private information, such as a physical or electronic + address, without explicit permission +* Other conduct which could reasonably be considered inappropriate + +The goal of the standards and moderation guidelines outlined here is to build +and maintain a respectful community. We ask that you don’t just aim to be +"technically unimpeachable", but rather try to be your best self. + +We value many things beyond technical expertise, including collaboration and +supporting others within our community. Providing a positive experience for +other community members can have a much more significant impact than simply +providing the correct answer. + +## Our Responsibilities + +Project leaders are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior. + +Project leaders have the right and responsibility to remove, edit, or +reject messages, comments, commits, code, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any community member for other behaviors that they deem +inappropriate, threatening, offensive, or harmful. + +## Moderation + +Instances of behaviors that violate the Adafruit Community Code of Conduct +may be reported by any member of the community. Community members are +encouraged to report these situations, including situations they witness +involving other community members. + +You may report in the following ways: + +In any situation, you may send an email to . + +On the Adafruit Discord, you may send an open message from any channel +to all Community Moderators by tagging @community moderators. You may +also send an open message from any channel, or a direct message to +@kattni#1507, @tannewt#4653, @danh#1614, @cater#2442, +@sommersoft#0222, @Mr. Certainly#0472 or @Andon#8175. + +Email and direct message reports will be kept confidential. + +In situations on Discord where the issue is particularly egregious, possibly +illegal, requires immediate action, or violates the Discord terms of service, +you should also report the message directly to Discord. + +These are the steps for upholding our community’s standards of conduct. + +1. Any member of the community may report any situation that violates the +Adafruit Community Code of Conduct. All reports will be reviewed and +investigated. +2. If the behavior is an egregious violation, the community member who +committed the violation may be banned immediately, without warning. +3. Otherwise, moderators will first respond to such behavior with a warning. +4. Moderators follow a soft "three strikes" policy - the community member may +be given another chance, if they are receptive to the warning and change their +behavior. +5. If the community member is unreceptive or unreasonable when warned by a +moderator, or the warning goes unheeded, they may be banned for a first or +second offense. Repeated offenses will result in the community member being +banned. + +## Scope + +This Code of Conduct and the enforcement policies listed above apply to all +Adafruit Community venues. This includes but is not limited to any community +spaces (both public and private), the entire Adafruit Discord server, and +Adafruit GitHub repositories. Examples of Adafruit Community spaces include +but are not limited to meet-ups, audio chats on the Adafruit Discord, or +interaction at a conference. + +This Code of Conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. As a community +member, you are representing our community, and are expected to behave +accordingly. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant], +version 1.4, available at +, +and the [Rust Code of Conduct](https://www.rust-lang.org/en-US/conduct.html). + +For other projects adopting the Adafruit Community Code of +Conduct, please contact the maintainers of those projects for enforcement. +If you wish to use this code of conduct for your own project, consider +explicitly mentioning your moderation policy or making a copy with your +own moderation policy so as to avoid confusion. + +[Contributor Covenant]: https://www.contributor-covenant.org diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/LICENSE b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/LICENSE new file mode 100644 index 0000000..3f50677 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2020 Ladyada for Adafruit Industries + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/README.md b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/README.md new file mode 100644 index 0000000..7f58723 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/README.md @@ -0,0 +1 @@ +# Adafruit IS31FL3731 [![Build Status](https://github.com/adafruit/Adafruit_IS31FL3731/workflows/Arduino%20Library%20CI/badge.svg)](https://github.com/adafruit/Adafruit_IS31FL3731/actions)[![Documentation](https://github.com/adafruit/ci-arduino/blob/master/assets/doxygen_badge.svg)](http://adafruit.github.io/Adafruit_IS31FL3731/html/index.html) diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/examples/gfxdemo/gfxdemo.ino b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/examples/gfxdemo/gfxdemo.ino new file mode 100644 index 0000000..a0fdcc2 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/examples/gfxdemo/gfxdemo.ino @@ -0,0 +1,107 @@ +#include +#include +#include + +// If you're using the full breakout... +Adafruit_IS31FL3731 matrix = Adafruit_IS31FL3731(); +// If you're using the FeatherWing version +//Adafruit_IS31FL3731_Wing matrix = Adafruit_IS31FL3731_Wing(); + +static const uint8_t PROGMEM + smile_bmp[] = + { 0b00111100, + 0b01000010, + 0b10100101, + 0b10000001, + 0b10100101, + 0b10011001, + 0b01000010, + 0b00111100 }, + neutral_bmp[] = + { 0b00111100, + 0b01000010, + 0b10100101, + 0b10000001, + 0b10111101, + 0b10000001, + 0b01000010, + 0b00111100 }, + frown_bmp[] = + { 0b00111100, + 0b01000010, + 0b10100101, + 0b10000001, + 0b10011001, + 0b10100101, + 0b01000010, + 0b00111100 }; + + +void setup() { + + Serial.begin(9600); + Serial.println("ISSI manual animation test"); + if (! matrix.begin()) { + Serial.println("IS31 not found"); + while (1); + } + Serial.println("IS31 Found!"); + +} + + +void loop() { + matrix.setRotation(0); + + matrix.clear(); + matrix.drawBitmap(3, 0, smile_bmp, 8, 8, 255); + delay(500); + + matrix.clear(); + matrix.drawBitmap(3, 0, neutral_bmp, 8, 8, 64); + delay(500); + + matrix.clear(); + matrix.drawBitmap(3, 0, frown_bmp, 8, 8, 32); + delay(500); + + matrix.clear(); + matrix.drawPixel(0, 0, 255); + delay(500); + + matrix.clear(); + matrix.drawLine(0,0, matrix.width()-1, matrix.height()-1, 127); + delay(500); + + matrix.clear(); + matrix.drawRect(0,0, matrix.width(), matrix.height(), 255); + matrix.fillRect(2,2, matrix.width()-4, matrix.height()-4, 20); + delay(500); + + matrix.clear(); + matrix.drawCircle(8,4, 4, 64); + matrix.drawCircle(8,4, 2, 32); + delay(500); + + + matrix.setTextSize(1); + matrix.setTextWrap(false); // we dont want text to wrap so it scrolls nicely + matrix.setTextColor(100); + for (int8_t x=0; x>=-32; x--) { + matrix.clear(); + matrix.setCursor(x,0); + matrix.print("Hello"); + delay(100); + } + + matrix.setTextSize(2); + matrix.setTextWrap(false); // we dont want text to wrap so it scrolls nicely + matrix.setTextColor(32); + matrix.setRotation(1); + for (int8_t x=7; x>=-64; x--) { + matrix.clear(); + matrix.setCursor(x,0); + matrix.print("World"); + delay(100); + } +} \ No newline at end of file diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/examples/manualanim/manualanim.ino b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/examples/manualanim/manualanim.ino new file mode 100644 index 0000000..2612930 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/examples/manualanim/manualanim.ino @@ -0,0 +1,43 @@ +#include +#include +#include + +// If you're using the full breakout... +Adafruit_IS31FL3731 ledmatrix = Adafruit_IS31FL3731(); +// If you're using the FeatherWing version +//Adafruit_IS31FL3731_Wing ledmatrix = Adafruit_IS31FL3731_Wing(); + +void setup() { + + Serial.begin(9600); + Serial.println("ISSI manual animation test"); + if (! ledmatrix.begin()) { + Serial.println("IS31 not found"); + while (1); + } + Serial.println("IS31 Found!"); + + ledmatrix.setTextWrap(false); + ledmatrix.setTextColor(64); // quarter brightness + ledmatrix.setTextSize(1); + + // fill all 8 frames with some text + for (uint8_t frame = 0; frame < 8; frame++) { + ledmatrix.setFrame(frame); + ledmatrix.clear(); + ledmatrix.setCursor(0,0); + ledmatrix.write('a'+frame*3); + ledmatrix.write('b'+frame*3); + ledmatrix.write('c'+frame*3); + } +} + +int x = 0; + +void loop() { + // display each frame for 250 milliseconds + for (uint8_t frame = 0; frame < 8; frame++) { + ledmatrix.displayFrame(frame); + delay(250); + } +} \ No newline at end of file diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/examples/swirldemo/swirldemo.ino b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/examples/swirldemo/swirldemo.ino new file mode 100644 index 0000000..7b17084 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/examples/swirldemo/swirldemo.ino @@ -0,0 +1,32 @@ +#include +#include +#include + +// If you're using the full breakout... +Adafruit_IS31FL3731 ledmatrix = Adafruit_IS31FL3731(); +// If you're using the FeatherWing version +//Adafruit_IS31FL3731_Wing ledmatrix = Adafruit_IS31FL3731_Wing(); + + +// The lookup table to make the brightness changes be more visible +uint8_t sweep[] = {1, 2, 3, 4, 6, 8, 10, 15, 20, 30, 40, 60, 60, 40, 30, 20, 15, 10, 8, 6, 4, 3, 2, 1}; + +void setup() { + Serial.begin(9600); + Serial.println("ISSI swirl test"); + + if (! ledmatrix.begin()) { + Serial.println("IS31 not found"); + while (1); + } + Serial.println("IS31 found!"); +} + +void loop() { + // animate over all the pixels, and set the brightness from the sweep table + for (uint8_t incr = 0; incr < 24; incr++) + for (uint8_t x = 0; x < 16; x++) + for (uint8_t y = 0; y < 9; y++) + ledmatrix.drawPixel(x, y, sweep[(x+y+incr)%24]); + delay(20); +} \ No newline at end of file diff --git a/hardware_test/.pio/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/library.properties b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/library.properties new file mode 100644 index 0000000..86f5f31 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/library.properties @@ -0,0 +1,10 @@ +name=Adafruit IS31FL3731 Library +version=2.0.2 +author=Adafruit +maintainer=Adafruit +sentence=Arduino library for the Adafruit IS31FL3731 Charlieplex LED driver and CharliePlex FeatherWing. +paragraph=Arduino library for the Adafruit IS31FL3731 Charlieplex LED driver and CharliePlex FeatherWing. +category=Display +url=https://github.com/adafruit/Adafruit_IS31FL3731 +architectures=* +depends=Adafruit GFX Library, Adafruit BusIO diff --git a/hardware_test/.pio/libdeps/rp2040_swd/integrity.dat b/hardware_test/.pio/libdeps/rp2040_swd/integrity.dat new file mode 100644 index 0000000..647b35f --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_swd/integrity.dat @@ -0,0 +1,2 @@ +adafruit/Adafruit BusIO +adafruit/Adafruit IS31FL3731 Library \ No newline at end of file diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/.clang-format b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/.clang-format new file mode 100644 index 0000000..c6cdd16 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/.clang-format @@ -0,0 +1,243 @@ +Language: Cpp +# BasedOnStyle: LLVM +AccessModifierOffset: -2 +AlignAfterOpenBracket: Align +AlignArrayOfStructures: None +AlignConsecutiveAssignments: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + AlignFunctionPointers: false + PadOperators: true +AlignConsecutiveBitFields: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + AlignFunctionPointers: false + PadOperators: false +AlignConsecutiveDeclarations: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + AlignFunctionPointers: false + PadOperators: false +AlignConsecutiveMacros: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + AlignFunctionPointers: false + PadOperators: false +AlignConsecutiveShortCaseStatements: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCaseColons: false +AlignEscapedNewlines: Right +AlignOperands: Align +AlignTrailingComments: + Kind: Always + OverEmptyLines: 0 +AllowAllArgumentsOnNextLine: true +AllowAllParametersOfDeclarationOnNextLine: true +AllowBreakBeforeNoexceptSpecifier: Never +AllowShortBlocksOnASingleLine: Never +AllowShortCaseLabelsOnASingleLine: false +AllowShortCompoundRequirementOnASingleLine: true +AllowShortEnumsOnASingleLine: true +AllowShortFunctionsOnASingleLine: All +AllowShortIfStatementsOnASingleLine: Never +AllowShortLambdasOnASingleLine: All +AllowShortLoopsOnASingleLine: false +AlwaysBreakAfterDefinitionReturnType: None +AlwaysBreakAfterReturnType: None +AlwaysBreakBeforeMultilineStrings: false +AlwaysBreakTemplateDeclarations: MultiLine +AttributeMacros: + - __capability +BinPackArguments: true +BinPackParameters: true +BitFieldColonSpacing: Both +BraceWrapping: + AfterCaseLabel: false + AfterClass: false + AfterControlStatement: Never + AfterEnum: false + AfterExternBlock: false + AfterFunction: false + AfterNamespace: false + AfterObjCDeclaration: false + AfterStruct: false + AfterUnion: false + BeforeCatch: false + BeforeElse: false + BeforeLambdaBody: false + BeforeWhile: false + IndentBraces: false + SplitEmptyFunction: true + SplitEmptyRecord: true + SplitEmptyNamespace: true +BreakAdjacentStringLiterals: true +BreakAfterAttributes: Leave +BreakAfterJavaFieldAnnotations: false +BreakArrays: true +BreakBeforeBinaryOperators: None +BreakBeforeConceptDeclarations: Always +BreakBeforeBraces: Attach +BreakBeforeInlineASMColon: OnlyMultiline +BreakBeforeTernaryOperators: true +BreakConstructorInitializers: BeforeColon +BreakInheritanceList: BeforeColon +BreakStringLiterals: true +ColumnLimit: 80 +CommentPragmas: '^ IWYU pragma:' +CompactNamespaces: false +ConstructorInitializerIndentWidth: 4 +ContinuationIndentWidth: 4 +Cpp11BracedListStyle: true +DerivePointerAlignment: false +DisableFormat: false +EmptyLineAfterAccessModifier: Never +EmptyLineBeforeAccessModifier: LogicalBlock +ExperimentalAutoDetectBinPacking: false +FixNamespaceComments: true +ForEachMacros: + - foreach + - Q_FOREACH + - BOOST_FOREACH +IfMacros: + - KJ_IF_MAYBE +IncludeBlocks: Preserve +IncludeCategories: + - Regex: '^"(llvm|llvm-c|clang|clang-c)/' + Priority: 2 + SortPriority: 0 + CaseSensitive: false + - Regex: '^(<|"(gtest|gmock|isl|json)/)' + Priority: 3 + SortPriority: 0 + CaseSensitive: false + - Regex: '.*' + Priority: 1 + SortPriority: 0 + CaseSensitive: false +IncludeIsMainRegex: '(Test)?$' +IncludeIsMainSourceRegex: '' +IndentAccessModifiers: false +IndentCaseBlocks: false +IndentCaseLabels: false +IndentExternBlock: AfterExternBlock +IndentGotoLabels: true +IndentPPDirectives: None +IndentRequiresClause: true +IndentWidth: 2 +IndentWrappedFunctionNames: false +InsertBraces: false +InsertNewlineAtEOF: false +InsertTrailingCommas: None +IntegerLiteralSeparator: + Binary: 0 + BinaryMinDigits: 0 + Decimal: 0 + DecimalMinDigits: 0 + Hex: 0 + HexMinDigits: 0 +JavaScriptQuotes: Leave +JavaScriptWrapImports: true +KeepEmptyLinesAtTheStartOfBlocks: true +KeepEmptyLinesAtEOF: false +LambdaBodyIndentation: Signature +LineEnding: DeriveLF +MacroBlockBegin: '' +MacroBlockEnd: '' +MaxEmptyLinesToKeep: 1 +NamespaceIndentation: None +ObjCBinPackProtocolList: Auto +ObjCBlockIndentWidth: 2 +ObjCBreakBeforeNestedBlockParam: true +ObjCSpaceAfterProperty: false +ObjCSpaceBeforeProtocolList: true +PackConstructorInitializers: BinPack +PenaltyBreakAssignment: 2 +PenaltyBreakBeforeFirstCallParameter: 19 +PenaltyBreakComment: 300 +PenaltyBreakFirstLessLess: 120 +PenaltyBreakOpenParenthesis: 0 +PenaltyBreakScopeResolution: 500 +PenaltyBreakString: 1000 +PenaltyBreakTemplateDeclaration: 10 +PenaltyExcessCharacter: 1000000 +PenaltyIndentedWhitespace: 0 +PenaltyReturnTypeOnItsOwnLine: 60 +PointerAlignment: Right +PPIndentWidth: -1 +QualifierAlignment: Leave +ReferenceAlignment: Pointer +ReflowComments: true +RemoveBracesLLVM: false +RemoveParentheses: Leave +RemoveSemicolon: false +RequiresClausePosition: OwnLine +RequiresExpressionIndentation: OuterScope +SeparateDefinitionBlocks: Leave +ShortNamespaceLines: 1 +SkipMacroDefinitionBody: false +SortIncludes: CaseSensitive +SortJavaStaticImport: Before +SortUsingDeclarations: LexicographicNumeric +SpaceAfterCStyleCast: false +SpaceAfterLogicalNot: false +SpaceAfterTemplateKeyword: true +SpaceAroundPointerQualifiers: Default +SpaceBeforeAssignmentOperators: true +SpaceBeforeCaseColon: false +SpaceBeforeCpp11BracedList: false +SpaceBeforeCtorInitializerColon: true +SpaceBeforeInheritanceColon: true +SpaceBeforeJsonColon: false +SpaceBeforeParens: ControlStatements +SpaceBeforeParensOptions: + AfterControlStatements: true + AfterForeachMacros: true + AfterFunctionDefinitionName: false + AfterFunctionDeclarationName: false + AfterIfMacros: true + AfterOverloadedOperator: false + AfterPlacementOperator: true + AfterRequiresInClause: false + AfterRequiresInExpression: false + BeforeNonEmptyParentheses: false +SpaceBeforeRangeBasedForLoopColon: true +SpaceBeforeSquareBrackets: false +SpaceInEmptyBlock: false +SpacesBeforeTrailingComments: 1 +SpacesInAngles: Never +SpacesInContainerLiterals: true +SpacesInLineCommentPrefix: + Minimum: 1 + Maximum: -1 +SpacesInParens: Never +SpacesInParensOptions: + InCStyleCasts: false + InConditionalStatements: false + InEmptyParentheses: false + Other: false +SpacesInSquareBrackets: false +Standard: Latest +StatementAttributeLikeMacros: + - Q_EMIT +StatementMacros: + - Q_UNUSED + - QT_REQUIRE_VERSION +TabWidth: 8 +UseTab: Never +VerilogBreakBetweenInstancePorts: true +WhitespaceSensitiveMacros: + - BOOST_PP_STRINGIZE + - CF_SWIFT_NAME + - NS_SWIFT_NAME + - PP_STRINGIZE + - STRINGIZE \ No newline at end of file diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/.github/ISSUE_TEMPLATE.md b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/.github/ISSUE_TEMPLATE.md new file mode 100644 index 0000000..f0e2614 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,46 @@ +Thank you for opening an issue on an Adafruit Arduino library repository. To +improve the speed of resolution please review the following guidelines and +common troubleshooting steps below before creating the issue: + +- **Do not use GitHub issues for troubleshooting projects and issues.** Instead use + the forums at http://forums.adafruit.com to ask questions and troubleshoot why + something isn't working as expected. In many cases the problem is a common issue + that you will more quickly receive help from the forum community. GitHub issues + are meant for known defects in the code. If you don't know if there is a defect + in the code then start with troubleshooting on the forum first. + +- **If following a tutorial or guide be sure you didn't miss a step.** Carefully + check all of the steps and commands to run have been followed. Consult the + forum if you're unsure or have questions about steps in a guide/tutorial. + +- **For Arduino projects check these very common issues to ensure they don't apply**: + + - For uploading sketches or communicating with the board make sure you're using + a **USB data cable** and **not** a **USB charge-only cable**. It is sometimes + very hard to tell the difference between a data and charge cable! Try using the + cable with other devices or swapping to another cable to confirm it is not + the problem. + + - **Be sure you are supplying adequate power to the board.** Check the specs of + your board and plug in an external power supply. In many cases just + plugging a board into your computer is not enough to power it and other + peripherals. + + - **Double check all soldering joints and connections.** Flakey connections + cause many mysterious problems. See the [guide to excellent soldering](https://learn.adafruit.com/adafruit-guide-excellent-soldering/tools) for examples of good solder joints. + + - **Ensure you are using an official Arduino or Adafruit board.** We can't + guarantee a clone board will have the same functionality and work as expected + with this code and don't support them. + +If you're sure this issue is a defect in the code and checked the steps above +please fill in the following fields to provide enough troubleshooting information. +You may delete the guideline and text above to just leave the following details: + +- Arduino board: **INSERT ARDUINO BOARD NAME/TYPE HERE** + +- Arduino IDE version (found in Arduino -> About Arduino menu): **INSERT ARDUINO + VERSION HERE** + +- List the steps to reproduce the problem below (if possible attach a sketch or + copy the sketch code in too): **LIST REPRO STEPS BELOW** diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/.github/PULL_REQUEST_TEMPLATE.md b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..7b641eb --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,26 @@ +Thank you for creating a pull request to contribute to Adafruit's GitHub code! +Before you open the request please review the following guidelines and tips to +help it be more easily integrated: + +- **Describe the scope of your change--i.e. what the change does and what parts + of the code were modified.** This will help us understand any risks of integrating + the code. + +- **Describe any known limitations with your change.** For example if the change + doesn't apply to a supported platform of the library please mention it. + +- **Please run any tests or examples that can exercise your modified code.** We + strive to not break users of the code and running tests/examples helps with this + process. + +Thank you again for contributing! We will try to test and integrate the change +as soon as we can, but be aware we have many GitHub repositories to manage and +can't immediately respond to every request. There is no need to bump or check in +on a pull request (it will clutter the discussion of the request). + +Also don't be worried if the request is closed or not integrated--sometimes the +priorities of Adafruit's GitHub code (education, ease of use) might not match the +priorities of the pull request. Don't fret, the open source community thrives on +forks and GitHub makes it easy to keep your changes in a forked repo. + +After reviewing the guidelines above you can delete this text from the pull request. diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/.github/workflows/githubci.yml b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/.github/workflows/githubci.yml new file mode 100644 index 0000000..8a57d75 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/.github/workflows/githubci.yml @@ -0,0 +1,33 @@ +name: Arduino Library CI + +on: [pull_request, push, repository_dispatch] + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/setup-python@v4 + with: + python-version: '3.x' + - uses: actions/checkout@v3 + - uses: actions/checkout@v3 + with: + repository: adafruit/ci-arduino + path: ci + + - name: Install the prerequisites + run: bash ci/actions_install.sh + + - name: Check for correct code formatting with clang-format + run: python3 ci/run-clang-format.py -e "ci/*" -e "bin/*" -r . + + - name: Check for correct documentation with doxygen + env: + GH_REPO_TOKEN: ${{ secrets.GH_REPO_TOKEN }} + PRETTYNAME : "Adafruit Bus IO Library" + run: bash ci/doxy_gen_and_deploy.sh + + - name: Test the code on supported platforms + run: python3 ci/build_platform.py main_platforms zero feather32u4 + diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/.piopm b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/.piopm new file mode 100644 index 0000000..6bd37c1 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/.piopm @@ -0,0 +1 @@ +{"type": "library", "name": "Adafruit BusIO", "version": "1.17.4", "spec": {"owner": "adafruit", "id": 6214, "name": "Adafruit BusIO", "requirements": null, "uri": null}} \ No newline at end of file diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/Adafruit_BusIO_Register.cpp b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/Adafruit_BusIO_Register.cpp new file mode 100644 index 0000000..f3e8187 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/Adafruit_BusIO_Register.cpp @@ -0,0 +1,384 @@ +#include + +#if !defined(SPI_INTERFACES_COUNT) || \ + (defined(SPI_INTERFACES_COUNT) && (SPI_INTERFACES_COUNT > 0)) + +/*! + * @brief Create a register we access over an I2C Device (which defines the + * bus and address) + * @param i2cdevice The I2CDevice to use for underlying I2C access + * @param reg_addr The address pointer value for the I2C/SMBus register, can + * be 8 or 16 bits + * @param width The width of the register data itself, defaults to 1 byte + * @param byteorder The byte order of the register (used when width is > 1), + * defaults to LSBFIRST + * @param address_width The width of the register address itself, defaults + * to 1 byte + */ +Adafruit_BusIO_Register::Adafruit_BusIO_Register(Adafruit_I2CDevice *i2cdevice, + uint16_t reg_addr, + uint8_t width, + uint8_t byteorder, + uint8_t address_width) { + _i2cdevice = i2cdevice; + _spidevice = nullptr; + _addrwidth = address_width; + _address = reg_addr; + _byteorder = byteorder; + _width = width; +} + +/*! + * @brief Create a register we access over an SPI Device (which defines the + * bus and CS pin) + * @param spidevice The SPIDevice to use for underlying SPI access + * @param reg_addr The address pointer value for the SPI register, can + * be 8 or 16 bits + * @param type The method we use to read/write data to SPI (which is not + * as well defined as I2C) + * @param width The width of the register data itself, defaults to 1 byte + * @param byteorder The byte order of the register (used when width is > 1), + * defaults to LSBFIRST + * @param address_width The width of the register address itself, defaults + * to 1 byte + */ +Adafruit_BusIO_Register::Adafruit_BusIO_Register(Adafruit_SPIDevice *spidevice, + uint16_t reg_addr, + Adafruit_BusIO_SPIRegType type, + uint8_t width, + uint8_t byteorder, + uint8_t address_width) { + _spidevice = spidevice; + _spiregtype = type; + _i2cdevice = nullptr; + _addrwidth = address_width; + _address = reg_addr; + _byteorder = byteorder; + _width = width; +} + +/*! + * @brief Create a register we access over an I2C or SPI Device. This is a + * handy function because we can pass in nullptr for the unused interface, + * allowing libraries to mass-define all the registers + * @param i2cdevice The I2CDevice to use for underlying I2C access, if + * nullptr we use SPI + * @param spidevice The SPIDevice to use for underlying SPI access, if + * nullptr we use I2C + * @param reg_addr The address pointer value for the I2C/SMBus/SPI register, + * can be 8 or 16 bits + * @param type The method we use to read/write data to SPI (which is not + * as well defined as I2C) + * @param width The width of the register data itself, defaults to 1 byte + * @param byteorder The byte order of the register (used when width is > 1), + * defaults to LSBFIRST + * @param address_width The width of the register address itself, defaults + * to 1 byte + */ +Adafruit_BusIO_Register::Adafruit_BusIO_Register( + Adafruit_I2CDevice *i2cdevice, Adafruit_SPIDevice *spidevice, + Adafruit_BusIO_SPIRegType type, uint16_t reg_addr, uint8_t width, + uint8_t byteorder, uint8_t address_width) { + _spidevice = spidevice; + _i2cdevice = i2cdevice; + _spiregtype = type; + _addrwidth = address_width; + _address = reg_addr; + _byteorder = byteorder; + _width = width; +} + +/*! + * @brief Create a register we access over a GenericDevice + * @param genericdevice Generic device to use + * @param reg_addr Register address we will read/write + * @param width Width of the register in bytes (1-4) + * @param byteorder Byte order of register data (LSBFIRST or MSBFIRST) + * @param address_width Width of the register address in bytes (1 or 2) + */ +Adafruit_BusIO_Register::Adafruit_BusIO_Register( + Adafruit_GenericDevice *genericdevice, uint16_t reg_addr, uint8_t width, + uint8_t byteorder, uint8_t address_width) { + _i2cdevice = nullptr; + _spidevice = nullptr; + _genericdevice = genericdevice; + _addrwidth = address_width; + _address = reg_addr; + _byteorder = byteorder; + _width = width; +} + +/*! + * @brief Write a buffer of data to the register location + * @param buffer Pointer to data to write + * @param len Number of bytes to write + * @return True on successful write (only really useful for I2C as SPI is + * uncheckable) + */ +bool Adafruit_BusIO_Register::write(uint8_t *buffer, uint8_t len) { + uint8_t addrbuffer[2] = {(uint8_t)(_address & 0xFF), + (uint8_t)(_address >> 8)}; + if (_i2cdevice) { + return _i2cdevice->write(buffer, len, true, addrbuffer, _addrwidth); + } + if (_spidevice) { + if (_spiregtype == ADDRESSED_OPCODE_BIT0_LOW_TO_WRITE) { + // very special case! + // pass the special opcode address which we set as the high byte of the + // regaddr + addrbuffer[0] = + (uint8_t)(_address >> 8) & ~0x01; // set bottom bit low to write + // the 'actual' reg addr is the second byte then + addrbuffer[1] = (uint8_t)(_address & 0xFF); + // the address appears to be a byte longer + return _spidevice->write(buffer, len, addrbuffer, _addrwidth + 1); + } + if (_spiregtype == ADDRBIT8_HIGH_TOREAD) { + addrbuffer[0] &= ~0x80; + } + if (_spiregtype == ADDRBIT8_HIGH_TOWRITE) { + addrbuffer[0] |= 0x80; + } + if (_spiregtype == AD8_HIGH_TOREAD_AD7_HIGH_TOINC) { + addrbuffer[0] &= ~0x80; + addrbuffer[0] |= 0x40; + } + return _spidevice->write(buffer, len, addrbuffer, _addrwidth); + } + if (_genericdevice) { + return _genericdevice->writeRegister(addrbuffer, _addrwidth, buffer, len); + } + return false; +} + +/*! + * @brief Write up to 4 bytes of data to the register location + * @param value Data to write + * @param numbytes How many bytes from 'value' to write + * @return True on successful write (only really useful for I2C as SPI is + * uncheckable) + */ +bool Adafruit_BusIO_Register::write(uint32_t value, uint8_t numbytes) { + if (numbytes == 0) { + numbytes = _width; + } + if (numbytes > 4) { + return false; + } + + // store a copy + _cached = value; + + for (int i = 0; i < numbytes; i++) { + if (_byteorder == LSBFIRST) { + _buffer[i] = value & 0xFF; + } else { + _buffer[numbytes - i - 1] = value & 0xFF; + } + value >>= 8; + } + return write(_buffer, numbytes); +} + +/*! + * @brief Read data from the register location. This does not do any error + * checking! + * @return Returns 0xFFFFFFFF on failure, value otherwise + */ +uint32_t Adafruit_BusIO_Register::read(void) { + if (!read(_buffer, _width)) { + return -1; + } + + uint32_t value = 0; + + for (int i = 0; i < _width; i++) { + value <<= 8; + if (_byteorder == LSBFIRST) { + value |= _buffer[_width - i - 1]; + } else { + value |= _buffer[i]; + } + } + + return value; +} + +/*! + * @brief Read cached data from last time we wrote to this register + * @return Returns 0xFFFFFFFF on failure, value otherwise + */ +uint32_t Adafruit_BusIO_Register::readCached(void) { return _cached; } + +/*! + @brief Read a number of bytes from a register into a buffer + @param buffer Buffer to read data into + @param len Number of bytes to read into the buffer + @return true on successful read, otherwise false +*/ +bool Adafruit_BusIO_Register::read(uint8_t *buffer, uint8_t len) { + uint8_t addrbuffer[2] = {(uint8_t)(_address & 0xFF), + (uint8_t)(_address >> 8)}; + if (_i2cdevice) { + return _i2cdevice->write_then_read(addrbuffer, _addrwidth, buffer, len); + } + if (_spidevice) { + if (_spiregtype == ADDRESSED_OPCODE_BIT0_LOW_TO_WRITE) { + // very special case! + // pass the special opcode address which we set as the high byte of the + // regaddr + addrbuffer[0] = + (uint8_t)(_address >> 8) | 0x01; // set bottom bit high to read + // the 'actual' reg addr is the second byte then + addrbuffer[1] = (uint8_t)(_address & 0xFF); + // the address appears to be a byte longer + return _spidevice->write_then_read(addrbuffer, _addrwidth + 1, buffer, + len); + } + if (_spiregtype == ADDRBIT8_HIGH_TOREAD) { + addrbuffer[0] |= 0x80; + } + if (_spiregtype == ADDRBIT8_HIGH_TOWRITE) { + addrbuffer[0] &= ~0x80; + } + if (_spiregtype == AD8_HIGH_TOREAD_AD7_HIGH_TOINC) { + addrbuffer[0] |= 0x80 | 0x40; + } + return _spidevice->write_then_read(addrbuffer, _addrwidth, buffer, len); + } + if (_genericdevice) { + return _genericdevice->readRegister(addrbuffer, _addrwidth, buffer, len); + } + return false; +} + +/*! + * @brief Read 2 bytes of data from the register location + * @param value Pointer to uint16_t variable to read into + * @return True on successful write (only really useful for I2C as SPI is + * uncheckable) + */ +bool Adafruit_BusIO_Register::read(uint16_t *value) { + if (!read(_buffer, 2)) { + return false; + } + + if (_byteorder == LSBFIRST) { + *value = _buffer[1]; + *value <<= 8; + *value |= _buffer[0]; + } else { + *value = _buffer[0]; + *value <<= 8; + *value |= _buffer[1]; + } + return true; +} + +/*! + * @brief Read 1 byte of data from the register location + * @param value Pointer to uint8_t variable to read into + * @return True on successful write (only really useful for I2C as SPI is + * uncheckable) + */ +bool Adafruit_BusIO_Register::read(uint8_t *value) { + if (!read(_buffer, 1)) { + return false; + } + + *value = _buffer[0]; + return true; +} + +/*! + * @brief Pretty printer for this register + * @param s The Stream to print to, defaults to &Serial + */ +void Adafruit_BusIO_Register::print(Stream *s) { + uint32_t val = read(); + s->print("0x"); + s->print(val, HEX); +} + +/*! + * @brief Pretty printer for this register + * @param s The Stream to print to, defaults to &Serial + */ +void Adafruit_BusIO_Register::println(Stream *s) { + print(s); + s->println(); +} + +/*! + * @brief Create a slice of the register that we can address without + * touching other bits + * @param reg The Adafruit_BusIO_Register which defines the bus/register + * @param bits The number of bits wide we are slicing + * @param shift The number of bits that our bit-slice is shifted from LSB + */ +Adafruit_BusIO_RegisterBits::Adafruit_BusIO_RegisterBits( + Adafruit_BusIO_Register *reg, uint8_t bits, uint8_t shift) { + _register = reg; + _bits = bits; + _shift = shift; +} + +/*! + * @brief Read 4 bytes of data from the register + * @return data The 4 bytes to read + */ +uint32_t Adafruit_BusIO_RegisterBits::read(void) { + uint32_t val = _register->read(); + val >>= _shift; + return val & ((1 << (_bits)) - 1); +} + +/*! + * @brief Write 4 bytes of data to the register + * @param data The 4 bytes to write + * @return True on successful write (only really useful for I2C as SPI is + * uncheckable) + */ +bool Adafruit_BusIO_RegisterBits::write(uint32_t data) { + uint32_t val = _register->read(); + + // mask off the data before writing + uint32_t mask = (1 << (_bits)) - 1; + data &= mask; + + mask <<= _shift; + val &= ~mask; // remove the current data at that spot + val |= data << _shift; // and add in the new data + + return _register->write(val, _register->width()); +} + +/*! + * @brief The width of the register data, helpful for doing calculations + * @returns The data width used when initializing the register + */ +uint8_t Adafruit_BusIO_Register::width(void) { return _width; } + +/*! + * @brief Set the default width of data + * @param width the default width of data read from register + */ +void Adafruit_BusIO_Register::setWidth(uint8_t width) { _width = width; } + +/*! + * @brief Set register address + * @param address the address from register + */ +void Adafruit_BusIO_Register::setAddress(uint16_t address) { + _address = address; +} + +/*! + * @brief Set the width of register address + * @param address_width the width for register address + */ +void Adafruit_BusIO_Register::setAddressWidth(uint16_t address_width) { + _addrwidth = address_width; +} + +#endif // SPI exists diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/Adafruit_BusIO_Register.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/Adafruit_BusIO_Register.h new file mode 100644 index 0000000..046e04c --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/Adafruit_BusIO_Register.h @@ -0,0 +1,117 @@ +#ifndef Adafruit_BusIO_Register_h +#define Adafruit_BusIO_Register_h + +#include + +#if !defined(SPI_INTERFACES_COUNT) || \ + (defined(SPI_INTERFACES_COUNT) && (SPI_INTERFACES_COUNT > 0)) + +#include +#include +#include + +typedef enum _Adafruit_BusIO_SPIRegType { + ADDRBIT8_HIGH_TOREAD = 0, + /*!< + * ADDRBIT8_HIGH_TOREAD + * When reading a register you must actually send the value 0x80 + register + * address to the device. e.g. To read the register 0x0B the register value + * 0x8B is sent and to write 0x0B is sent. + */ + AD8_HIGH_TOREAD_AD7_HIGH_TOINC = 1, + + /*!< + * ADDRBIT8_HIGH_TOWRITE + * When writing to a register you must actually send the value 0x80 + + * the register address to the device. e.g. To write to the register 0x19 the + * register value 0x99 is sent and to read 0x19 is sent. + */ + ADDRBIT8_HIGH_TOWRITE = 2, + + /*!< + * ADDRESSED_OPCODE_LOWBIT_TO_WRITE + * Used by the MCP23S series, we send 0x40 |'rd with the opcode + * Then set the lowest bit to write + */ + ADDRESSED_OPCODE_BIT0_LOW_TO_WRITE = 3, + +} Adafruit_BusIO_SPIRegType; + +/*! + * @brief The class which defines a device register (a location to read/write + * data from) + */ +class Adafruit_BusIO_Register { +public: + Adafruit_BusIO_Register(Adafruit_I2CDevice *i2cdevice, uint16_t reg_addr, + uint8_t width = 1, uint8_t byteorder = LSBFIRST, + uint8_t address_width = 1); + + Adafruit_BusIO_Register(Adafruit_SPIDevice *spidevice, uint16_t reg_addr, + Adafruit_BusIO_SPIRegType type, uint8_t width = 1, + uint8_t byteorder = LSBFIRST, + uint8_t address_width = 1); + + Adafruit_BusIO_Register(Adafruit_I2CDevice *i2cdevice, + Adafruit_SPIDevice *spidevice, + Adafruit_BusIO_SPIRegType type, uint16_t reg_addr, + uint8_t width = 1, uint8_t byteorder = LSBFIRST, + uint8_t address_width = 1); + + Adafruit_BusIO_Register(Adafruit_GenericDevice *genericdevice, + uint16_t reg_addr, uint8_t width = 1, + uint8_t byteorder = LSBFIRST, + uint8_t address_width = 1); + + bool read(uint8_t *buffer, uint8_t len); + bool read(uint8_t *value); + bool read(uint16_t *value); + uint32_t read(void); + uint32_t readCached(void); + bool write(uint8_t *buffer, uint8_t len); + bool write(uint32_t value, uint8_t numbytes = 0); + + uint8_t width(void); + + void setWidth(uint8_t width); + void setAddress(uint16_t address); + void setAddressWidth(uint16_t address_width); + +#if !defined(NO_GLOBAL_INSTANCES) && !defined(NO_GLOBAL_SERIAL) + void print(Stream *s = &Serial); + void println(Stream *s = &Serial); +#else + void print(Stream *s); + void println(Stream *s); +#endif + +private: + Adafruit_I2CDevice *_i2cdevice; + Adafruit_SPIDevice *_spidevice; + Adafruit_GenericDevice *_genericdevice; + Adafruit_BusIO_SPIRegType _spiregtype; + uint16_t _address; + uint8_t _width, _addrwidth, _byteorder; + uint8_t _buffer[4]; // we won't support anything larger than uint32 for + // non-buffered read + uint32_t _cached = 0; +}; + +/*! + * @brief The class which defines a slice of bits from within a device register + * (a location to read/write data from) + */ +class Adafruit_BusIO_RegisterBits { +public: + Adafruit_BusIO_RegisterBits(Adafruit_BusIO_Register *reg, uint8_t bits, + uint8_t shift); + bool write(uint32_t value); + uint32_t read(void); + +private: + Adafruit_BusIO_Register *_register; + uint8_t _bits, _shift; +}; + +#endif // SPI exists +#endif // BusIO_Register_h diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/Adafruit_GenericDevice.cpp b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/Adafruit_GenericDevice.cpp new file mode 100644 index 0000000..37f9cfd --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/Adafruit_GenericDevice.cpp @@ -0,0 +1,90 @@ +/* + Written with help by Claude! + https://claude.ai/chat/335f50b1-3dd8-435e-9139-57ec7ca26a3c (at this time + chats are not shareable :( +*/ + +#include "Adafruit_GenericDevice.h" + +/*! + * @brief Create a Generic device with the provided read/write functions + * @param obj Pointer to object instance + * @param read_func Function pointer for reading raw data + * @param write_func Function pointer for writing raw data + * @param readreg_func Function pointer for reading registers (optional) + * @param writereg_func Function pointer for writing registers (optional) */ +Adafruit_GenericDevice::Adafruit_GenericDevice( + void *obj, busio_genericdevice_read_t read_func, + busio_genericdevice_write_t write_func, + busio_genericdevice_readreg_t readreg_func, + busio_genericdevice_writereg_t writereg_func) { + _obj = obj; + _read_func = read_func; + _write_func = write_func; + _readreg_func = readreg_func; + _writereg_func = writereg_func; + _begun = false; +} + +/*! @brief Simple begin function (doesn't do much at this time) + @return true always +*/ +bool Adafruit_GenericDevice::begin(void) { + _begun = true; + return true; +} + +/*! +@brief Marks the GenericDevice as no longer in use. +@note: Since this is a GenericDevice, if you are using this with a Serial +object, this does NOT disable serial communication or release the RX/TX pins. +That must be done manually by calling Serial.end(). +*/ +void Adafruit_GenericDevice::end(void) { _begun = false; } + +/*! @brief Write a buffer of data + @param buffer Pointer to buffer of data to write + @param len Number of bytes to write + @return true if write was successful, otherwise false */ +bool Adafruit_GenericDevice::write(const uint8_t *buffer, size_t len) { + if (!_begun) + return false; + return _write_func(_obj, buffer, len); +} + +/*! @brief Read data into a buffer + @param buffer Pointer to buffer to read data into + @param len Number of bytes to read + @return true if read was successful, otherwise false */ +bool Adafruit_GenericDevice::read(uint8_t *buffer, size_t len) { + if (!_begun) + return false; + return _read_func(_obj, buffer, len); +} + +/*! @brief Read from a register location + @param addr_buf Buffer containing register address + @param addrsiz Size of register address in bytes + @param buf Buffer to store read data + @param bufsiz Size of data to read in bytes + @return true if read was successful, otherwise false */ +bool Adafruit_GenericDevice::readRegister(uint8_t *addr_buf, uint8_t addrsiz, + uint8_t *buf, uint16_t bufsiz) { + if (!_begun || !_readreg_func) + return false; + return _readreg_func(_obj, addr_buf, addrsiz, buf, bufsiz); +} + +/*! @brief Write to a register location + @param addr_buf Buffer containing register address + @param addrsiz Size of register address in bytes + @param buf Buffer containing data to write + @param bufsiz Size of data to write in bytes + @return true if write was successful, otherwise false */ +bool Adafruit_GenericDevice::writeRegister(uint8_t *addr_buf, uint8_t addrsiz, + const uint8_t *buf, + uint16_t bufsiz) { + if (!_begun || !_writereg_func) + return false; + return _writereg_func(_obj, addr_buf, addrsiz, buf, bufsiz); +} diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/Adafruit_GenericDevice.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/Adafruit_GenericDevice.h new file mode 100644 index 0000000..d5cb326 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/Adafruit_GenericDevice.h @@ -0,0 +1,56 @@ +#ifndef ADAFRUIT_GENERICDEVICE_H +#define ADAFRUIT_GENERICDEVICE_H + +#include + +typedef bool (*busio_genericdevice_read_t)(void *obj, uint8_t *buffer, + size_t len); +typedef bool (*busio_genericdevice_write_t)(void *obj, const uint8_t *buffer, + size_t len); +typedef bool (*busio_genericdevice_readreg_t)(void *obj, uint8_t *addr_buf, + uint8_t addrsiz, uint8_t *data, + uint16_t datalen); +typedef bool (*busio_genericdevice_writereg_t)(void *obj, uint8_t *addr_buf, + uint8_t addrsiz, + const uint8_t *data, + uint16_t datalen); + +/*! + * @brief Class for communicating with a device via generic read/write functions + */ +class Adafruit_GenericDevice { +public: + Adafruit_GenericDevice( + void *obj, busio_genericdevice_read_t read_func, + busio_genericdevice_write_t write_func, + busio_genericdevice_readreg_t readreg_func = nullptr, + busio_genericdevice_writereg_t writereg_func = nullptr); + + bool begin(void); + void end(void); + + bool read(uint8_t *buffer, size_t len); + bool write(const uint8_t *buffer, size_t len); + bool readRegister(uint8_t *addr_buf, uint8_t addrsiz, uint8_t *buf, + uint16_t bufsiz); + bool writeRegister(uint8_t *addr_buf, uint8_t addrsiz, const uint8_t *buf, + uint16_t bufsiz); + +protected: + /*! @brief Function pointer for reading raw data from the device */ + busio_genericdevice_read_t _read_func; + /*! @brief Function pointer for writing raw data to the device */ + busio_genericdevice_write_t _write_func; + /*! @brief Function pointer for reading a 'register' from the device */ + busio_genericdevice_readreg_t _readreg_func; + /*! @brief Function pointer for writing a 'register' to the device */ + busio_genericdevice_writereg_t _writereg_func; + + bool _begun; ///< whether we have initialized yet (in case the function needs + ///< to do something) + +private: + void *_obj; ///< Pointer to object instance +}; + +#endif // ADAFRUIT_GENERICDEVICE_H diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/Adafruit_I2CDevice.cpp b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/Adafruit_I2CDevice.cpp new file mode 100644 index 0000000..2633cf1 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/Adafruit_I2CDevice.cpp @@ -0,0 +1,320 @@ +#include "Adafruit_I2CDevice.h" + +// #define DEBUG_SERIAL Serial + +/*! + * @brief Create an I2C device at a given address + * @param addr The 7-bit I2C address for the device + * @param theWire The I2C bus to use, defaults to &Wire + */ +Adafruit_I2CDevice::Adafruit_I2CDevice(uint8_t addr, TwoWire *theWire) { + _addr = addr; + _wire = theWire; + _begun = false; +#ifdef ARDUINO_ARCH_SAMD + _maxBufferSize = 250; // as defined in Wire.h's RingBuffer +#elif defined(ESP32) + _maxBufferSize = I2C_BUFFER_LENGTH; +#else + _maxBufferSize = 32; +#endif +} + +/*! + * @brief Initializes and does basic address detection + * @param addr_detect Whether we should attempt to detect the I2C address + * with a scan. 99% of sensors/devices don't mind, but once in a while they + * don't respond well to a scan! + * @return True if I2C initialized and a device with the addr found + */ +bool Adafruit_I2CDevice::begin(bool addr_detect) { + _wire->begin(); + _begun = true; + + if (addr_detect) { + return detected(); + } + return true; +} + +/*! + * @brief De-initialize device, turn off the Wire interface + */ +void Adafruit_I2CDevice::end(void) { + // Not all port implement Wire::end(), such as + // - ESP8266 + // - AVR core without WIRE_HAS_END + // - ESP32: end() is implemented since 2.0.1 which is latest at the moment. + // Temporarily disable for now to give time for user to update. +#if !(defined(ESP8266) || \ + (defined(ARDUINO_ARCH_AVR) && !defined(WIRE_HAS_END)) || \ + defined(ARDUINO_ARCH_ESP32)) + _wire->end(); + _begun = false; +#endif +} + +/*! + * @brief Scans I2C for the address - note will give a false-positive + * if there's no pullups on I2C + * @return True if I2C initialized and a device with the addr found + */ +bool Adafruit_I2CDevice::detected(void) { + // Init I2C if not done yet + if (!_begun && !begin()) { + return false; + } + + // A basic scanner, see if it ACK's + _wire->beginTransmission(_addr); +#ifdef DEBUG_SERIAL + DEBUG_SERIAL.print(F("Address 0x")); + DEBUG_SERIAL.print(_addr, HEX); +#endif +#ifdef ARDUINO_ARCH_MBED + _wire->write(0); // forces a write request instead of a read +#endif + if (_wire->endTransmission() == 0) { +#ifdef DEBUG_SERIAL + DEBUG_SERIAL.println(F(" Detected")); +#endif + return true; + } +#ifdef DEBUG_SERIAL + DEBUG_SERIAL.println(F(" Not detected")); +#endif + return false; +} + +/*! + * @brief Write a buffer or two to the I2C device. Cannot be more than + * maxBufferSize() bytes. + * @param buffer Pointer to buffer of data to write. This is const to + * ensure the content of this buffer doesn't change. + * @param len Number of bytes from buffer to write + * @param prefix_buffer Pointer to optional array of data to write before + * buffer. Cannot be more than maxBufferSize() bytes. This is const to + * ensure the content of this buffer doesn't change. + * @param prefix_len Number of bytes from prefix buffer to write + * @param stop Whether to send an I2C STOP signal on write + * @return True if write was successful, otherwise false. + */ +bool Adafruit_I2CDevice::write(const uint8_t *buffer, size_t len, bool stop, + const uint8_t *prefix_buffer, + size_t prefix_len) { + if ((len + prefix_len) > maxBufferSize()) { + // currently not guaranteed to work if more than 32 bytes! + // we will need to find out if some platforms have larger + // I2C buffer sizes :/ +#ifdef DEBUG_SERIAL + DEBUG_SERIAL.println(F("\tI2CDevice could not write such a large buffer")); +#endif + return false; + } + + _wire->beginTransmission(_addr); + + // Write the prefix data (usually an address) + if ((prefix_len != 0) && (prefix_buffer != nullptr)) { + if (_wire->write(prefix_buffer, prefix_len) != prefix_len) { +#ifdef DEBUG_SERIAL + DEBUG_SERIAL.println(F("\tI2CDevice failed to write")); +#endif + return false; + } + } + + // Write the data itself + if (_wire->write(buffer, len) != len) { +#ifdef DEBUG_SERIAL + DEBUG_SERIAL.println(F("\tI2CDevice failed to write")); +#endif + return false; + } + +#ifdef DEBUG_SERIAL + + DEBUG_SERIAL.print(F("\tI2CWRITE @ 0x")); + DEBUG_SERIAL.print(_addr, HEX); + DEBUG_SERIAL.print(F(" :: ")); + if ((prefix_len != 0) && (prefix_buffer != nullptr)) { + for (uint16_t i = 0; i < prefix_len; i++) { + DEBUG_SERIAL.print(F("0x")); + DEBUG_SERIAL.print(prefix_buffer[i], HEX); + DEBUG_SERIAL.print(F(", ")); + } + } + for (uint16_t i = 0; i < len; i++) { + DEBUG_SERIAL.print(F("0x")); + DEBUG_SERIAL.print(buffer[i], HEX); + DEBUG_SERIAL.print(F(", ")); + if (i % 32 == 31) { + DEBUG_SERIAL.println(); + } + } + + if (stop) { + DEBUG_SERIAL.print("\tSTOP"); + } +#endif + + if (_wire->endTransmission(stop) == 0) { +#ifdef DEBUG_SERIAL + DEBUG_SERIAL.println(); + // DEBUG_SERIAL.println("Sent!"); +#endif + return true; + } else { +#ifdef DEBUG_SERIAL + DEBUG_SERIAL.println("\tFailed to send!"); +#endif + return false; + } +} + +/*! + * @brief Read from I2C into a buffer from the I2C device. + * Cannot be more than maxBufferSize() bytes. + * @param buffer Pointer to buffer of data to read into + * @param len Number of bytes from buffer to read. + * @param stop Whether to send an I2C STOP signal on read + * @return True if read was successful, otherwise false. + */ +bool Adafruit_I2CDevice::read(uint8_t *buffer, size_t len, bool stop) { + size_t pos = 0; + while (pos < len) { + size_t read_len = + ((len - pos) > maxBufferSize()) ? maxBufferSize() : (len - pos); + bool read_stop = (pos < (len - read_len)) ? false : stop; + if (!_read(buffer + pos, read_len, read_stop)) + return false; + pos += read_len; + } + return true; +} + +bool Adafruit_I2CDevice::_read(uint8_t *buffer, size_t len, bool stop) { +#if defined(TinyWireM_h) + size_t recv = _wire->requestFrom((uint8_t)_addr, (uint8_t)len); +#elif defined(ARDUINO_ARCH_MEGAAVR) + size_t recv = _wire->requestFrom(_addr, len, stop); +#else + size_t recv = _wire->requestFrom((uint8_t)_addr, (uint8_t)len, (uint8_t)stop); +#endif + + if (recv != len) { + // Not enough data available to fulfill our obligation! +#ifdef DEBUG_SERIAL + DEBUG_SERIAL.print(F("\tI2CDevice did not receive enough data: ")); + DEBUG_SERIAL.println(recv); +#endif + return false; + } + + for (uint16_t i = 0; i < len; i++) { + buffer[i] = _wire->read(); + } + +#ifdef DEBUG_SERIAL + DEBUG_SERIAL.print(F("\tI2CREAD @ 0x")); + DEBUG_SERIAL.print(_addr, HEX); + DEBUG_SERIAL.print(F(" :: ")); + for (uint16_t i = 0; i < len; i++) { + DEBUG_SERIAL.print(F("0x")); + DEBUG_SERIAL.print(buffer[i], HEX); + DEBUG_SERIAL.print(F(", ")); + if (len % 32 == 31) { + DEBUG_SERIAL.println(); + } + } + DEBUG_SERIAL.println(); +#endif + + return true; +} + +/*! + * @brief Write some data, then read some data from I2C into another buffer. + * Cannot be more than maxBufferSize() bytes. The buffers can point to + * same/overlapping locations. + * @param write_buffer Pointer to buffer of data to write from + * @param write_len Number of bytes from buffer to write. + * @param read_buffer Pointer to buffer of data to read into. + * @param read_len Number of bytes from buffer to read. + * @param stop Whether to send an I2C STOP signal between the write and read + * @return True if write & read was successful, otherwise false. + */ +bool Adafruit_I2CDevice::write_then_read(const uint8_t *write_buffer, + size_t write_len, uint8_t *read_buffer, + size_t read_len, bool stop) { + if (!write(write_buffer, write_len, stop)) { + return false; + } + + return read(read_buffer, read_len); +} + +/*! + * @brief Returns the 7-bit address of this device + * @return The 7-bit address of this device + */ +uint8_t Adafruit_I2CDevice::address(void) { return _addr; } + +/*! + * @brief Change the I2C clock speed to desired (relies on + * underlying Wire support! + * @param desiredclk The desired I2C SCL frequency + * @return True if this platform supports changing I2C speed. + * Not necessarily that the speed was achieved! + */ +bool Adafruit_I2CDevice::setSpeed(uint32_t desiredclk) { +#if defined(__AVR_ATmega328__) || \ + defined(__AVR_ATmega328P__) // fix arduino core set clock + // calculate TWBR correctly + + if ((F_CPU / 18) < desiredclk) { +#ifdef DEBUG_SERIAL + Serial.println(F("I2C.setSpeed too high.")); +#endif + return false; + } + uint32_t atwbr = ((F_CPU / desiredclk) - 16) / 2; + if (atwbr > 16320) { +#ifdef DEBUG_SERIAL + Serial.println(F("I2C.setSpeed too low.")); +#endif + return false; + } + + if (atwbr <= 255) { + atwbr /= 1; + TWSR = 0x0; + } else if (atwbr <= 1020) { + atwbr /= 4; + TWSR = 0x1; + } else if (atwbr <= 4080) { + atwbr /= 16; + TWSR = 0x2; + } else { // if (atwbr <= 16320) + atwbr /= 64; + TWSR = 0x3; + } + TWBR = atwbr; + +#ifdef DEBUG_SERIAL + Serial.print(F("TWSR prescaler = ")); + Serial.println(pow(4, TWSR)); + Serial.print(F("TWBR = ")); + Serial.println(atwbr); +#endif + return true; +#elif (ARDUINO >= 157) && !defined(ARDUINO_STM32_FEATHER) && \ + !defined(TinyWireM_h) + _wire->setClock(desiredclk); + return true; + +#else + (void)desiredclk; + return false; +#endif +} diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/Adafruit_I2CDevice.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/Adafruit_I2CDevice.h new file mode 100644 index 0000000..6bda7ba --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/Adafruit_I2CDevice.h @@ -0,0 +1,36 @@ +#ifndef Adafruit_I2CDevice_h +#define Adafruit_I2CDevice_h + +#include +#include + +///< The class which defines how we will talk to this device over I2C +class Adafruit_I2CDevice { +public: + Adafruit_I2CDevice(uint8_t addr, TwoWire *theWire = &Wire); + uint8_t address(void); + bool begin(bool addr_detect = true); + void end(void); + bool detected(void); + + bool read(uint8_t *buffer, size_t len, bool stop = true); + bool write(const uint8_t *buffer, size_t len, bool stop = true, + const uint8_t *prefix_buffer = nullptr, size_t prefix_len = 0); + bool write_then_read(const uint8_t *write_buffer, size_t write_len, + uint8_t *read_buffer, size_t read_len, + bool stop = false); + bool setSpeed(uint32_t desiredclk); + + /*! @brief How many bytes we can read in a transaction + * @return The size of the Wire receive/transmit buffer */ + size_t maxBufferSize() { return _maxBufferSize; } + +private: + uint8_t _addr; + TwoWire *_wire; + bool _begun; + size_t _maxBufferSize; + bool _read(uint8_t *buffer, size_t len, bool stop); +}; + +#endif // Adafruit_I2CDevice_h diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/Adafruit_I2CRegister.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/Adafruit_I2CRegister.h new file mode 100644 index 0000000..186850f --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/Adafruit_I2CRegister.h @@ -0,0 +1,10 @@ +#ifndef _ADAFRUIT_I2C_REGISTER_H_ +#define _ADAFRUIT_I2C_REGISTER_H_ + +#include +#include + +typedef Adafruit_BusIO_Register Adafruit_I2CRegister; +typedef Adafruit_BusIO_RegisterBits Adafruit_I2CRegisterBits; + +#endif diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/Adafruit_SPIDevice.cpp b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/Adafruit_SPIDevice.cpp new file mode 100644 index 0000000..3283de6 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/Adafruit_SPIDevice.cpp @@ -0,0 +1,512 @@ +#include "Adafruit_SPIDevice.h" + +// #define DEBUG_SERIAL Serial + +#ifdef BUSIO_USE_FAST_PINIO +#define BUSIO_SET_CLOCK_LOW() (*clkPort = *clkPort & ~clkPinMask) +#define BUSIO_SET_CLOCK_HIGH() (*clkPort = *clkPort | clkPinMask) +#define BUSIO_READ_MISO() (*misoPort & misoPinMask) +#define BUSIO_WRITE_MOSI(value) \ + do { \ + if (value) \ + *mosiPort = *mosiPort | mosiPinMask; \ + else \ + *mosiPort = *mosiPort & ~mosiPinMask; \ + } while (0) +#else +#define BUSIO_SET_CLOCK_LOW() digitalWrite(_sck, LOW) +#define BUSIO_SET_CLOCK_HIGH() digitalWrite(_sck, HIGH) +#define BUSIO_READ_MISO() digitalRead(_miso) +#define BUSIO_WRITE_MOSI(value) digitalWrite(_mosi, value) +#endif + +/*! + * @brief Create an SPI device with the given CS pin and settings + * @param cspin The arduino pin number to use for chip select + * @param freq The SPI clock frequency to use, defaults to 1MHz + * @param dataOrder The SPI data order to use for bits within each byte, + * defaults to SPI_BITORDER_MSBFIRST + * @param dataMode The SPI mode to use, defaults to SPI_MODE0 + * @param theSPI The SPI bus to use, defaults to &theSPI + */ +Adafruit_SPIDevice::Adafruit_SPIDevice(int8_t cspin, uint32_t freq, + BusIOBitOrder dataOrder, + uint8_t dataMode, SPIClass *theSPI) { +#ifdef BUSIO_HAS_HW_SPI + _cs = cspin; + _sck = _mosi = _miso = -1; + _spi = theSPI; + _begun = false; + _spiSetting = new SPISettings(freq, dataOrder, dataMode); + _freq = freq; + _dataOrder = dataOrder; + _dataMode = dataMode; +#else + // unused, but needed to suppress compiler warns + (void)cspin; + (void)freq; + (void)dataOrder; + (void)dataMode; + (void)theSPI; +#endif +} + +/*! + * @brief Create an SPI device with the given CS pin and settings + * @param cspin The arduino pin number to use for chip select + * @param sckpin The arduino pin number to use for SCK + * @param misopin The arduino pin number to use for MISO, set to -1 if not + * used + * @param mosipin The arduino pin number to use for MOSI, set to -1 if not + * used + * @param freq The SPI clock frequency to use, defaults to 1MHz + * @param dataOrder The SPI data order to use for bits within each byte, + * defaults to SPI_BITORDER_MSBFIRST + * @param dataMode The SPI mode to use, defaults to SPI_MODE0 + */ +Adafruit_SPIDevice::Adafruit_SPIDevice(int8_t cspin, int8_t sckpin, + int8_t misopin, int8_t mosipin, + uint32_t freq, BusIOBitOrder dataOrder, + uint8_t dataMode) { + _cs = cspin; + _sck = sckpin; + _miso = misopin; + _mosi = mosipin; + +#ifdef BUSIO_USE_FAST_PINIO + csPort = (BusIO_PortReg *)portOutputRegister(digitalPinToPort(cspin)); + csPinMask = digitalPinToBitMask(cspin); + if (mosipin != -1) { + mosiPort = (BusIO_PortReg *)portOutputRegister(digitalPinToPort(mosipin)); + mosiPinMask = digitalPinToBitMask(mosipin); + } + if (misopin != -1) { + misoPort = (BusIO_PortReg *)portInputRegister(digitalPinToPort(misopin)); + misoPinMask = digitalPinToBitMask(misopin); + } + clkPort = (BusIO_PortReg *)portOutputRegister(digitalPinToPort(sckpin)); + clkPinMask = digitalPinToBitMask(sckpin); +#endif + + _freq = freq; + _dataOrder = dataOrder; + _dataMode = dataMode; + _begun = false; +} + +/*! + * @brief Release memory allocated in constructors + */ +Adafruit_SPIDevice::~Adafruit_SPIDevice() { + if (_spiSetting) + delete _spiSetting; +} + +/*! + * @brief Initializes SPI bus and sets CS pin high + * @return Always returns true because there's no way to test success of SPI + * init + */ +bool Adafruit_SPIDevice::begin(void) { + if (_cs != -1) { + pinMode(_cs, OUTPUT); + digitalWrite(_cs, HIGH); + } + + if (_spi) { // hardware SPI +#ifdef BUSIO_HAS_HW_SPI + _spi->begin(); +#endif + } else { + pinMode(_sck, OUTPUT); + + if ((_dataMode == SPI_MODE0) || (_dataMode == SPI_MODE1)) { + // idle low on mode 0 and 1 + digitalWrite(_sck, LOW); + } else { + // idle high on mode 2 or 3 + digitalWrite(_sck, HIGH); + } + if (_mosi != -1) { + pinMode(_mosi, OUTPUT); + digitalWrite(_mosi, HIGH); + } + if (_miso != -1) { + pinMode(_miso, INPUT); + } + } + + _begun = true; + return true; +} + +/*! + * @brief Transfer (send/receive) a buffer over hard/soft SPI, without + * transaction management + * @param buffer The buffer to send and receive at the same time + * @param len The number of bytes to transfer + */ +void Adafruit_SPIDevice::transfer(uint8_t *buffer, size_t len) { + // + // HARDWARE SPI + // + if (_spi) { +#ifdef BUSIO_HAS_HW_SPI +#if defined(SPARK) + _spi->transfer(buffer, buffer, len, nullptr); +#elif defined(STM32) + for (size_t i = 0; i < len; i++) { + _spi->transfer(buffer[i]); + } +#else + _spi->transfer(buffer, len); +#endif + return; +#endif + } + + // + // SOFTWARE SPI + // + uint8_t startbit; + if (_dataOrder == SPI_BITORDER_LSBFIRST) { + startbit = 0x1; + } else { + startbit = 0x80; + } + + bool towrite, lastmosi = !(buffer[0] & startbit); + uint8_t bitdelay_us = (1000000 / _freq) / 2; + + for (size_t i = 0; i < len; i++) { + uint8_t reply = 0; + uint8_t send = buffer[i]; + + /* + Serial.print("\tSending software SPI byte 0x"); + Serial.print(send, HEX); + Serial.print(" -> 0x"); + */ + + // Serial.print(send, HEX); + for (uint8_t b = startbit; b != 0; + b = (_dataOrder == SPI_BITORDER_LSBFIRST) ? b << 1 : b >> 1) { + + if (bitdelay_us) { + delayMicroseconds(bitdelay_us); + } + + if (_dataMode == SPI_MODE0 || _dataMode == SPI_MODE2) { + towrite = send & b; + if ((_mosi != -1) && (lastmosi != towrite)) { + BUSIO_WRITE_MOSI(towrite); + lastmosi = towrite; + } + + BUSIO_SET_CLOCK_HIGH(); + + if (bitdelay_us) { + delayMicroseconds(bitdelay_us); + } + + if (_miso != -1) { + if (BUSIO_READ_MISO()) + reply |= b; + } + + BUSIO_SET_CLOCK_LOW(); + + } else if (_dataMode == SPI_MODE3) { + + if (_mosi != -1) { // transmit on falling edge + BUSIO_WRITE_MOSI(send & b); + } + + BUSIO_SET_CLOCK_LOW(); + + if (bitdelay_us) { + delayMicroseconds(bitdelay_us); + } + + BUSIO_SET_CLOCK_HIGH(); + + if (bitdelay_us) { + delayMicroseconds(bitdelay_us); + } + + if (_miso != -1) { // read on rising edge + if (BUSIO_READ_MISO()) { + reply |= b; + } + } + + } else { // || _dataMode == SPI_MODE1) + + BUSIO_SET_CLOCK_HIGH(); + + if (bitdelay_us) { + delayMicroseconds(bitdelay_us); + } + + if (_mosi != -1) { + BUSIO_WRITE_MOSI(send & b); + } + + BUSIO_SET_CLOCK_LOW(); + + if (_miso != -1) { + if (BUSIO_READ_MISO()) { + reply |= b; + } + } + } + } + if (_miso != -1) { + buffer[i] = reply; + } + } + return; +} + +/*! + * @brief Transfer (send/receive) one byte over hard/soft SPI, without + * transaction management + * @param send The byte to send + * @return The byte received while transmitting + */ +uint8_t Adafruit_SPIDevice::transfer(uint8_t send) { + uint8_t data = send; + transfer(&data, 1); + return data; +} + +/*! + * @brief Manually begin a transaction (calls beginTransaction if hardware + * SPI) + */ +void Adafruit_SPIDevice::beginTransaction(void) { + if (_spi) { +#ifdef BUSIO_HAS_HW_SPI + _spi->beginTransaction(*_spiSetting); +#endif + } +} + +/*! + * @brief Manually end a transaction (calls endTransaction if hardware SPI) + */ +void Adafruit_SPIDevice::endTransaction(void) { + if (_spi) { +#ifdef BUSIO_HAS_HW_SPI + _spi->endTransaction(); +#endif + } +} + +/*! + * @brief Assert/Deassert the CS pin if it is defined + * @param value The state the CS is set to + */ +void Adafruit_SPIDevice::setChipSelect(int value) { + if (_cs != -1) { + digitalWrite(_cs, value); + } +} + +/*! + * @brief Write a buffer or two to the SPI device, with transaction + * management. + * @brief Manually begin a transaction (calls beginTransaction if hardware + * SPI) with asserting the CS pin + */ +void Adafruit_SPIDevice::beginTransactionWithAssertingCS() { + beginTransaction(); + setChipSelect(LOW); +} + +/*! + * @brief Manually end a transaction (calls endTransaction if hardware SPI) + * with deasserting the CS pin + */ +void Adafruit_SPIDevice::endTransactionWithDeassertingCS() { + setChipSelect(HIGH); + endTransaction(); +} + +/*! + * @brief Write a buffer or two to the SPI device, with transaction + * management. + * @param buffer Pointer to buffer of data to write + * @param len Number of bytes from buffer to write + * @param prefix_buffer Pointer to optional array of data to write before + * buffer. + * @param prefix_len Number of bytes from prefix buffer to write + * @return Always returns true because there's no way to test success of SPI + * writes + */ +bool Adafruit_SPIDevice::write(const uint8_t *buffer, size_t len, + const uint8_t *prefix_buffer, + size_t prefix_len) { + beginTransactionWithAssertingCS(); + + // do the writing +#if defined(ARDUINO_ARCH_ESP32) + if (_spi) { + if (prefix_len > 0) { + _spi->transferBytes((uint8_t *)prefix_buffer, nullptr, prefix_len); + } + if (len > 0) { + _spi->transferBytes((uint8_t *)buffer, nullptr, len); + } + } else +#endif + { + for (size_t i = 0; i < prefix_len; i++) { + transfer(prefix_buffer[i]); + } + for (size_t i = 0; i < len; i++) { + transfer(buffer[i]); + } + } + endTransactionWithDeassertingCS(); + +#ifdef DEBUG_SERIAL + DEBUG_SERIAL.print(F("\tSPIDevice Wrote: ")); + if ((prefix_len != 0) && (prefix_buffer != nullptr)) { + for (uint16_t i = 0; i < prefix_len; i++) { + DEBUG_SERIAL.print(F("0x")); + DEBUG_SERIAL.print(prefix_buffer[i], HEX); + DEBUG_SERIAL.print(F(", ")); + } + } + for (uint16_t i = 0; i < len; i++) { + DEBUG_SERIAL.print(F("0x")); + DEBUG_SERIAL.print(buffer[i], HEX); + DEBUG_SERIAL.print(F(", ")); + if (i % 32 == 31) { + DEBUG_SERIAL.println(); + } + } + DEBUG_SERIAL.println(); +#endif + + return true; +} + +/*! + * @brief Read from SPI into a buffer from the SPI device, with transaction + * management. + * @param buffer Pointer to buffer of data to read into + * @param len Number of bytes from buffer to read. + * @param sendvalue The 8-bits of data to write when doing the data read, + * defaults to 0xFF + * @return Always returns true because there's no way to test success of SPI + * writes + */ +bool Adafruit_SPIDevice::read(uint8_t *buffer, size_t len, uint8_t sendvalue) { + memset(buffer, sendvalue, len); // clear out existing buffer + + beginTransactionWithAssertingCS(); + transfer(buffer, len); + endTransactionWithDeassertingCS(); + +#ifdef DEBUG_SERIAL + DEBUG_SERIAL.print(F("\tSPIDevice Read: ")); + for (uint16_t i = 0; i < len; i++) { + DEBUG_SERIAL.print(F("0x")); + DEBUG_SERIAL.print(buffer[i], HEX); + DEBUG_SERIAL.print(F(", ")); + if (len % 32 == 31) { + DEBUG_SERIAL.println(); + } + } + DEBUG_SERIAL.println(); +#endif + + return true; +} + +/*! + * @brief Write some data, then read some data from SPI into another buffer, + * with transaction management. The buffers can point to same/overlapping + * locations. This does not transmit-receive at the same time! + * @param write_buffer Pointer to buffer of data to write from + * @param write_len Number of bytes from buffer to write. + * @param read_buffer Pointer to buffer of data to read into. + * @param read_len Number of bytes from buffer to read. + * @param sendvalue The 8-bits of data to write when doing the data read, + * defaults to 0xFF + * @return Always returns true because there's no way to test success of SPI + * writes + */ +bool Adafruit_SPIDevice::write_then_read(const uint8_t *write_buffer, + size_t write_len, uint8_t *read_buffer, + size_t read_len, uint8_t sendvalue) { + beginTransactionWithAssertingCS(); + // do the writing +#if defined(ARDUINO_ARCH_ESP32) + if (_spi) { + if (write_len > 0) { + _spi->transferBytes((uint8_t *)write_buffer, nullptr, write_len); + } + } else +#endif + { + for (size_t i = 0; i < write_len; i++) { + transfer(write_buffer[i]); + } + } + +#ifdef DEBUG_SERIAL + DEBUG_SERIAL.print(F("\tSPIDevice Wrote: ")); + for (uint16_t i = 0; i < write_len; i++) { + DEBUG_SERIAL.print(F("0x")); + DEBUG_SERIAL.print(write_buffer[i], HEX); + DEBUG_SERIAL.print(F(", ")); + if (write_len % 32 == 31) { + DEBUG_SERIAL.println(); + } + } + DEBUG_SERIAL.println(); +#endif + + // do the reading + for (size_t i = 0; i < read_len; i++) { + read_buffer[i] = transfer(sendvalue); + } + +#ifdef DEBUG_SERIAL + DEBUG_SERIAL.print(F("\tSPIDevice Read: ")); + for (uint16_t i = 0; i < read_len; i++) { + DEBUG_SERIAL.print(F("0x")); + DEBUG_SERIAL.print(read_buffer[i], HEX); + DEBUG_SERIAL.print(F(", ")); + if (read_len % 32 == 31) { + DEBUG_SERIAL.println(); + } + } + DEBUG_SERIAL.println(); +#endif + + endTransactionWithDeassertingCS(); + + return true; +} + +/*! + * @brief Write some data and read some data at the same time from SPI + * into the same buffer, with transaction management. This is basicaly a wrapper + * for transfer() with CS-pin and transaction management. This /does/ + * transmit-receive at the same time! + * @param buffer Pointer to buffer of data to write/read to/from + * @param len Number of bytes from buffer to write/read. + * @return Always returns true because there's no way to test success of SPI + * writes + */ +bool Adafruit_SPIDevice::write_and_read(uint8_t *buffer, size_t len) { + beginTransactionWithAssertingCS(); + transfer(buffer, len); + endTransactionWithDeassertingCS(); + + return true; +} diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/Adafruit_SPIDevice.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/Adafruit_SPIDevice.h new file mode 100644 index 0000000..82a0281 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/Adafruit_SPIDevice.h @@ -0,0 +1,149 @@ +#ifndef Adafruit_SPIDevice_h +#define Adafruit_SPIDevice_h + +#include + +#if !defined(SPI_INTERFACES_COUNT) || \ + (defined(SPI_INTERFACES_COUNT) && (SPI_INTERFACES_COUNT > 0)) +// HW SPI available +#include +#define BUSIO_HAS_HW_SPI +#else +// SW SPI ONLY +enum { SPI_MODE0, SPI_MODE1, SPI_MODE2, SPI_MODE3 }; +typedef uint8_t SPIClass; +#endif + +// some modern SPI definitions don't have BitOrder enum +#if (defined(__AVR__) && !defined(ARDUINO_ARCH_MEGAAVR)) || \ + defined(ESP8266) || defined(TEENSYDUINO) || defined(SPARK) || \ + defined(ARDUINO_ARCH_SPRESENSE) || defined(MEGATINYCORE) || \ + defined(DXCORE) || defined(ARDUINO_AVR_ATmega4809) || \ + defined(ARDUINO_AVR_ATmega4808) || defined(ARDUINO_AVR_ATmega3209) || \ + defined(ARDUINO_AVR_ATmega3208) || defined(ARDUINO_AVR_ATmega1609) || \ + defined(ARDUINO_AVR_ATmega1608) || defined(ARDUINO_AVR_ATmega809) || \ + defined(ARDUINO_AVR_ATmega808) || defined(ARDUINO_ARCH_ARC32) || \ + defined(ARDUINO_ARCH_XMC) + +typedef enum _BitOrder { + SPI_BITORDER_MSBFIRST = MSBFIRST, + SPI_BITORDER_LSBFIRST = LSBFIRST, +} BusIOBitOrder; + +#elif defined(ESP32) || defined(__ASR6501__) || defined(__ASR6502__) + +// some modern SPI definitions don't have BitOrder enum and have different SPI +// mode defines +typedef enum _BitOrder { + SPI_BITORDER_MSBFIRST = SPI_MSBFIRST, + SPI_BITORDER_LSBFIRST = SPI_LSBFIRST, +} BusIOBitOrder; + +#else +// Some platforms have a BitOrder enum but its named MSBFIRST/LSBFIRST +#define SPI_BITORDER_MSBFIRST MSBFIRST +#define SPI_BITORDER_LSBFIRST LSBFIRST +typedef BitOrder BusIOBitOrder; +#endif + +#if defined(__IMXRT1062__) // Teensy 4.x +// *Warning* I disabled the usage of FAST_PINIO as the set/clear operations +// used in the cpp file are not atomic and can effect multiple IO pins +// and if an interrupt happens in between the time the code reads the register +// and writes out the updated value, that changes one or more other IO pins +// on that same IO port, those change will be clobbered when the updated +// values are written back. A fast version can be implemented that uses the +// ports set and clear registers which are atomic. +// typedef volatile uint32_t BusIO_PortReg; +// typedef uint32_t BusIO_PortMask; +// #define BUSIO_USE_FAST_PINIO + +#elif defined(__MBED__) || defined(__ZEPHYR__) +// Boards based on RTOS cores like mbed or Zephyr are not going to expose the +// low level registers needed for fast pin manipulation +#undef BUSIO_USE_FAST_PINIO + +#elif defined(ARDUINO_ARCH_XMC) +#undef BUSIO_USE_FAST_PINIO + +#elif defined(__AVR__) || defined(TEENSYDUINO) +typedef volatile uint8_t BusIO_PortReg; +typedef uint8_t BusIO_PortMask; +#define BUSIO_USE_FAST_PINIO + +#elif defined(ESP8266) || defined(ESP32) || defined(__SAM3X8E__) || \ + defined(ARDUINO_ARCH_SAMD) +typedef volatile uint32_t BusIO_PortReg; +typedef uint32_t BusIO_PortMask; +#define BUSIO_USE_FAST_PINIO + +#elif (defined(__arm__) || defined(ARDUINO_FEATHER52)) && \ + !defined(ARDUINO_ARCH_RP2040) && !defined(ARDUINO_SILABS) && \ + !defined(ARDUINO_UNOR4_MINIMA) && !defined(ARDUINO_UNOR4_WIFI) && \ + !defined(PORTDUINO) +typedef volatile uint32_t BusIO_PortReg; +typedef uint32_t BusIO_PortMask; +#if !defined(__ASR6501__) && !defined(__ASR6502__) +#define BUSIO_USE_FAST_PINIO +#endif + +#else +#undef BUSIO_USE_FAST_PINIO +#endif + +/**! The class which defines how we will talk to this device over SPI **/ +class Adafruit_SPIDevice { +public: +#ifdef BUSIO_HAS_HW_SPI + Adafruit_SPIDevice(int8_t cspin, uint32_t freq = 1000000, + BusIOBitOrder dataOrder = SPI_BITORDER_MSBFIRST, + uint8_t dataMode = SPI_MODE0, SPIClass *theSPI = &SPI); +#else + Adafruit_SPIDevice(int8_t cspin, uint32_t freq = 1000000, + BusIOBitOrder dataOrder = SPI_BITORDER_MSBFIRST, + uint8_t dataMode = SPI_MODE0, SPIClass *theSPI = nullptr); +#endif + Adafruit_SPIDevice(int8_t cspin, int8_t sck, int8_t miso, int8_t mosi, + uint32_t freq = 1000000, + BusIOBitOrder dataOrder = SPI_BITORDER_MSBFIRST, + uint8_t dataMode = SPI_MODE0); + ~Adafruit_SPIDevice(); + + bool begin(void); + bool read(uint8_t *buffer, size_t len, uint8_t sendvalue = 0xFF); + bool write(const uint8_t *buffer, size_t len, + const uint8_t *prefix_buffer = nullptr, size_t prefix_len = 0); + bool write_then_read(const uint8_t *write_buffer, size_t write_len, + uint8_t *read_buffer, size_t read_len, + uint8_t sendvalue = 0xFF); + bool write_and_read(uint8_t *buffer, size_t len); + + uint8_t transfer(uint8_t send); + void transfer(uint8_t *buffer, size_t len); + void beginTransaction(void); + void endTransaction(void); + void beginTransactionWithAssertingCS(); + void endTransactionWithDeassertingCS(); + +private: +#ifdef BUSIO_HAS_HW_SPI + SPIClass *_spi = nullptr; + SPISettings *_spiSetting = nullptr; +#else + uint8_t *_spi = nullptr; + uint8_t *_spiSetting = nullptr; +#endif + uint32_t _freq; + BusIOBitOrder _dataOrder; + uint8_t _dataMode; + void setChipSelect(int value); + + int8_t _cs, _sck, _mosi, _miso; +#ifdef BUSIO_USE_FAST_PINIO + BusIO_PortReg *mosiPort, *clkPort, *misoPort, *csPort; + BusIO_PortMask mosiPinMask, misoPinMask, clkPinMask, csPinMask; +#endif + bool _begun; +}; + +#endif // Adafruit_SPIDevice_h diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/CMakeLists.txt b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/CMakeLists.txt new file mode 100644 index 0000000..3fcb0b8 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/CMakeLists.txt @@ -0,0 +1,11 @@ +# Adafruit Bus IO Library +# https://github.com/adafruit/Adafruit_BusIO +# MIT License + +cmake_minimum_required(VERSION 3.5) + +idf_component_register(SRCS "Adafruit_I2CDevice.cpp" "Adafruit_BusIO_Register.cpp" "Adafruit_SPIDevice.cpp" "Adafruit_GenericDevice.cpp" + INCLUDE_DIRS "." + REQUIRES arduino-esp32) + +project(Adafruit_BusIO) diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/LICENSE b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/LICENSE new file mode 100644 index 0000000..860e3e2 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2017 Adafruit Industries + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/README.md b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/README.md new file mode 100644 index 0000000..59712ff --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/README.md @@ -0,0 +1,8 @@ +# Adafruit Bus IO Library [![Build Status](https://github.com/adafruit/Adafruit_BusIO/workflows/Arduino%20Library%20CI/badge.svg)](https://github.com/adafruit/Adafruit_BusIO/actions) + + +This is a helper library to abstract away I2C, SPI, and 'generic transport' (e.g. UART) transactions and registers + +Adafruit invests time and resources providing this open source code, please support Adafruit and open-source hardware by purchasing products from Adafruit! + +MIT license, all text above must be included in any redistribution diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/component.mk b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/component.mk new file mode 100644 index 0000000..049f190 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/component.mk @@ -0,0 +1 @@ +COMPONENT_ADD_INCLUDEDIRS = . diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/examples/genericdevice_uartregtest/.uno.test.skip b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/examples/genericdevice_uartregtest/.uno.test.skip new file mode 100644 index 0000000..e69de29 diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/examples/genericdevice_uartregtest/genericdevice_uartregtest.ino b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/examples/genericdevice_uartregtest/genericdevice_uartregtest.ino new file mode 100644 index 0000000..59af308 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/examples/genericdevice_uartregtest/genericdevice_uartregtest.ino @@ -0,0 +1,219 @@ +/* + Advanced example of using bstracted transport for reading and writing + register data from a UART-based device such as a TMC2209 + + Written with help by Claude! + https://claude.ai/chat/335f50b1-3dd8-435e-9139-57ec7ca26a3c (at this time + chats are not shareable :( +*/ + +#include "Adafruit_BusIO_Register.h" +#include "Adafruit_GenericDevice.h" + +// Debugging macros +#define DEBUG_SERIAL Serial + +#ifdef DEBUG_SERIAL +#define DEBUG_PRINT(x) DEBUG_SERIAL.print(x) +#define DEBUG_PRINTLN(x) DEBUG_SERIAL.println(x) +#define DEBUG_PRINT_HEX(x) \ + do { \ + if (x < 0x10) \ + DEBUG_SERIAL.print('0'); \ + DEBUG_SERIAL.print(x, HEX); \ + DEBUG_SERIAL.print(' '); \ + } while (0) +#else +#define DEBUG_PRINT(x) +#define DEBUG_PRINTLN(x) +#define DEBUG_PRINT_HEX(x) +#endif + +#define TMC2209_IOIN 0x06 + +class TMC2209_UART { +private: + Stream *_uart_stream; + uint8_t _addr; + + static bool uart_read(void *thiz, uint8_t *buffer, size_t len) { + TMC2209_UART *dev = (TMC2209_UART *)thiz; + uint16_t timeout = 100; + while (dev->_uart_stream->available() < len && timeout--) { + delay(1); + } + if (timeout == 0) { + DEBUG_PRINTLN("Read timeout!"); + return false; + } + + DEBUG_PRINT("Reading: "); + for (size_t i = 0; i < len; i++) { + buffer[i] = dev->_uart_stream->read(); + DEBUG_PRINT_HEX(buffer[i]); + } + DEBUG_PRINTLN(""); + + return true; + } + + static bool uart_write(void *thiz, const uint8_t *buffer, size_t len) { + TMC2209_UART *dev = (TMC2209_UART *)thiz; + DEBUG_PRINT("Writing: "); + for (size_t i = 0; i < len; i++) { + DEBUG_PRINT_HEX(buffer[i]); + } + DEBUG_PRINTLN(""); + + dev->_uart_stream->write(buffer, len); + return true; + } + + static bool uart_readreg(void *thiz, uint8_t *addr_buf, uint8_t addrsiz, + uint8_t *data, uint16_t datalen) { + TMC2209_UART *dev = (TMC2209_UART *)thiz; + while (dev->_uart_stream->available()) + dev->_uart_stream->read(); + + uint8_t packet[4] = {0x05, uint8_t(dev->_addr << 1), addr_buf[0], 0x00}; + + packet[3] = calcCRC(packet, 3); + if (!uart_write(thiz, packet, 4)) + return false; + + // Read back echo + uint8_t echo[4]; + if (!uart_read(thiz, echo, 4)) + return false; + + // Verify echo + for (uint8_t i = 0; i < 4; i++) { + if (echo[i] != packet[i]) { + DEBUG_PRINTLN("Echo mismatch"); + return false; + } + } + + uint8_t response[8]; // sync + 0xFF + reg + 4 data bytes + CRC + if (!uart_read(thiz, response, 8)) + return false; + + // Verify response + if (response[0] != 0x05) { + DEBUG_PRINTLN("Invalid sync byte"); + return false; + } + + if (response[1] != 0xFF) { + DEBUG_PRINTLN("Invalid reply address"); + return false; + } + + if (response[2] != addr_buf[0]) { + DEBUG_PRINTLN("Register mismatch"); + return false; + } + + uint8_t crc = calcCRC(response, 7); + if (crc != response[7]) { + DEBUG_PRINTLN("CRC mismatch"); + return false; + } + + memcpy(data, &response[3], 4); + return true; + } + + static bool uart_writereg(void *thiz, uint8_t *addr_buf, uint8_t addrsiz, + const uint8_t *data, uint16_t datalen) { + TMC2209_UART *dev = (TMC2209_UART *)thiz; + while (dev->_uart_stream->available()) + dev->_uart_stream->read(); + + uint8_t packet[8] = {0x05, + uint8_t(dev->_addr << 1), + uint8_t(addr_buf[0] | 0x80), + data[0], + data[1], + data[2], + data[3], + 0x00}; + + packet[7] = calcCRC(packet, 7); + if (!uart_write(thiz, packet, 8)) + return false; + + uint8_t echo[8]; + if (!uart_read(thiz, echo, 8)) + return false; + + for (uint8_t i = 0; i < 8; i++) { + if (echo[i] != packet[i]) { + DEBUG_PRINTLN("Write echo mismatch"); + return false; + } + } + + return true; + } + + static uint8_t calcCRC(uint8_t *data, uint8_t length) { + uint8_t crc = 0; + for (uint8_t i = 0; i < length; i++) { + uint8_t currentByte = data[i]; + for (uint8_t j = 0; j < 8; j++) { + if ((crc >> 7) ^ (currentByte & 0x01)) { + crc = (crc << 1) ^ 0x07; + } else { + crc = crc << 1; + } + currentByte = currentByte >> 1; + } + } + return crc; + } + +public: + TMC2209_UART(Stream *serial, uint8_t addr) + : _uart_stream(serial), _addr(addr) {} + + Adafruit_GenericDevice *createDevice() { + return new Adafruit_GenericDevice(this, uart_read, uart_write, uart_readreg, + uart_writereg); + } +}; + +void setup() { + Serial.begin(115200); + while (!Serial) + ; + delay(100); + Serial.println("TMC2209 Generic Device register read/write test!"); + + Serial1.begin(115200); + + TMC2209_UART uart(&Serial1, 0); + Adafruit_GenericDevice *device = uart.createDevice(); + device->begin(); + + // Create register object for IOIN + Adafruit_BusIO_Register ioin_reg(device, + TMC2209_IOIN, // device and register address + 4, // width = 4 bytes + MSBFIRST, // byte order + 1); // address width = 1 byte + Serial.print("IOIN = 0x"); + Serial.println(ioin_reg.read(), HEX); + + // Create RegisterBits for VERSION field (bits 31:24) + Adafruit_BusIO_RegisterBits version_bits( + &ioin_reg, 8, 24); // 8 bits wide, starting at bit 24 + + Serial.println("Reading VERSION..."); + uint8_t version = version_bits.read(); + + Serial.print("VERSION = 0x"); + Serial.println(version, HEX); +} + +void loop() { delay(1000); } \ No newline at end of file diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/examples/genericdevice_uarttest/.uno.test.skip b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/examples/genericdevice_uarttest/.uno.test.skip new file mode 100644 index 0000000..e69de29 diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/examples/genericdevice_uarttest/genericdevice_uarttest.ino b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/examples/genericdevice_uarttest/genericdevice_uarttest.ino new file mode 100644 index 0000000..6a11dbf --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/examples/genericdevice_uarttest/genericdevice_uarttest.ino @@ -0,0 +1,98 @@ +/* + Abstracted transport for reading and writing data from a UART-based + device such as a TMC2209 + + Written with help by Claude! + https://claude.ai/chat/335f50b1-3dd8-435e-9139-57ec7ca26a3c (at this time + chats are not shareable :( +*/ + +#include "Adafruit_GenericDevice.h" + +/** + * Basic UART device class that demonstrates using GenericDevice with a Stream + * interface. This example shows how to wrap a Stream (like HardwareSerial or + * SoftwareSerial) with read/write callbacks that can be used by BusIO's + * register functions. + */ +class UARTDevice { +public: + UARTDevice(Stream *serial) : _serial(serial) {} + + // Static callback for writing data to UART + // Called by GenericDevice when data needs to be sent + static bool uart_write(void *thiz, const uint8_t *buffer, size_t len) { + UARTDevice *dev = (UARTDevice *)thiz; + dev->_serial->write(buffer, len); + return true; + } + + // Static callback for reading data from UART + // Includes timeout and will return false if not enough data available + static bool uart_read(void *thiz, uint8_t *buffer, size_t len) { + UARTDevice *dev = (UARTDevice *)thiz; + uint16_t timeout = 100; + while (dev->_serial->available() < len && timeout--) { + delay(1); + } + if (timeout == 0) { + return false; + } + for (size_t i = 0; i < len; i++) { + buffer[i] = dev->_serial->read(); + } + return true; + } + + // Create a GenericDevice instance using our callbacks + Adafruit_GenericDevice *createDevice() { + return new Adafruit_GenericDevice(this, uart_read, uart_write); + } + +private: + Stream *_serial; // Underlying Stream instance (HardwareSerial, etc) +}; + +void setup() { + Serial.begin(115200); + while (!Serial) + ; + delay(100); + + Serial.println("Generic Device test!"); + + // Initialize UART for device communication + Serial1.begin(115200); + + // Create UART wrapper and BusIO device + UARTDevice uart(&Serial1); + Adafruit_GenericDevice *device = uart.createDevice(); + device->begin(); + + // Test write/read cycle + uint8_t write_buf[4] = {0x5, 0x0, 0x0, 0x48}; + uint8_t read_buf[8]; + + Serial.println("Writing data..."); + if (!device->write(write_buf, 4)) { + Serial.println("Write failed!"); + return; + } + + Serial.println("Reading response..."); + if (!device->read(read_buf, 8)) { + Serial.println("Read failed!"); + return; + } + + // Print response bytes + Serial.print("Got response: "); + for (int i = 0; i < 8; i++) { + Serial.print("0x"); + Serial.print(read_buf[i], HEX); + Serial.print(" "); + } + Serial.println(); +} + +void loop() { delay(1000); } \ No newline at end of file diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/examples/i2c_address_detect/i2c_address_detect.ino b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/examples/i2c_address_detect/i2c_address_detect.ino new file mode 100644 index 0000000..f2e6ba7 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/examples/i2c_address_detect/i2c_address_detect.ino @@ -0,0 +1,22 @@ +#include + +Adafruit_I2CDevice i2c_dev = Adafruit_I2CDevice(0x10); + +void setup() { + while (!Serial) { + delay(10); + } + Serial.begin(115200); + Serial.println("I2C address detection test"); + + if (!i2c_dev.begin()) { + Serial.print("Did not find device at 0x"); + Serial.println(i2c_dev.address(), HEX); + while (1) + ; + } + Serial.print("Device found on address 0x"); + Serial.println(i2c_dev.address(), HEX); +} + +void loop() {} diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/examples/i2c_readwrite/i2c_readwrite.ino b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/examples/i2c_readwrite/i2c_readwrite.ino new file mode 100644 index 0000000..4ac2626 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/examples/i2c_readwrite/i2c_readwrite.ino @@ -0,0 +1,45 @@ +#include + +#define I2C_ADDRESS 0x60 +Adafruit_I2CDevice i2c_dev = Adafruit_I2CDevice(I2C_ADDRESS); + +void setup() { + while (!Serial) { + delay(10); + } + Serial.begin(115200); + Serial.println("I2C device read and write test"); + + if (!i2c_dev.begin()) { + Serial.print("Did not find device at 0x"); + Serial.println(i2c_dev.address(), HEX); + while (1) + ; + } + Serial.print("Device found on address 0x"); + Serial.println(i2c_dev.address(), HEX); + + uint8_t buffer[32]; + // Try to read 32 bytes + i2c_dev.read(buffer, 32); + Serial.print("Read: "); + for (uint8_t i = 0; i < 32; i++) { + Serial.print("0x"); + Serial.print(buffer[i], HEX); + Serial.print(", "); + } + Serial.println(); + + // read a register by writing first, then reading + buffer[0] = 0x0C; // we'll reuse the same buffer + i2c_dev.write_then_read(buffer, 1, buffer, 2, false); + Serial.print("Write then Read: "); + for (uint8_t i = 0; i < 2; i++) { + Serial.print("0x"); + Serial.print(buffer[i], HEX); + Serial.print(", "); + } + Serial.println(); +} + +void loop() {} diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/examples/i2c_registers/i2c_registers.ino b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/examples/i2c_registers/i2c_registers.ino new file mode 100644 index 0000000..2d44c83 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/examples/i2c_registers/i2c_registers.ino @@ -0,0 +1,43 @@ +#include +#include + +#define I2C_ADDRESS 0x60 +Adafruit_I2CDevice i2c_dev = Adafruit_I2CDevice(I2C_ADDRESS); + +void setup() { + while (!Serial) { + delay(10); + } + Serial.begin(115200); + Serial.println("I2C device register test"); + + if (!i2c_dev.begin()) { + Serial.print("Did not find device at 0x"); + Serial.println(i2c_dev.address(), HEX); + while (1) + ; + } + Serial.print("Device found on address 0x"); + Serial.println(i2c_dev.address(), HEX); + + Adafruit_BusIO_Register id_reg = + Adafruit_BusIO_Register(&i2c_dev, 0x0C, 2, LSBFIRST); + uint16_t id; + id_reg.read(&id); + Serial.print("ID register = 0x"); + Serial.println(id, HEX); + + Adafruit_BusIO_Register thresh_reg = + Adafruit_BusIO_Register(&i2c_dev, 0x01, 2, LSBFIRST); + uint16_t thresh; + thresh_reg.read(&thresh); + Serial.print("Initial threshold register = 0x"); + Serial.println(thresh, HEX); + + thresh_reg.write(~thresh); + + Serial.print("Post threshold register = 0x"); + Serial.println(thresh_reg.read(), HEX); +} + +void loop() {} \ No newline at end of file diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/examples/i2corspi_register/i2corspi_register.ino b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/examples/i2corspi_register/i2corspi_register.ino new file mode 100644 index 0000000..be04606 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/examples/i2corspi_register/i2corspi_register.ino @@ -0,0 +1,40 @@ +#include + +// Define which interface to use by setting the unused interface to NULL! + +#define SPIDEVICE_CS 10 +Adafruit_SPIDevice *spi_dev = NULL; // new Adafruit_SPIDevice(SPIDEVICE_CS); + +#define I2C_ADDRESS 0x5D +Adafruit_I2CDevice *i2c_dev = new Adafruit_I2CDevice(I2C_ADDRESS); + +void setup() { + while (!Serial) { + delay(10); + } + Serial.begin(115200); + Serial.println("I2C or SPI device register test"); + + if (spi_dev && !spi_dev->begin()) { + Serial.println("Could not initialize SPI device"); + } + + if (i2c_dev) { + if (i2c_dev->begin()) { + Serial.print("Device found on I2C address 0x"); + Serial.println(i2c_dev->address(), HEX); + } else { + Serial.print("Did not find I2C device at 0x"); + Serial.println(i2c_dev->address(), HEX); + } + } + + Adafruit_BusIO_Register id_reg = + Adafruit_BusIO_Register(i2c_dev, spi_dev, ADDRBIT8_HIGH_TOREAD, 0x0F); + uint8_t id = 0; + id_reg.read(&id); + Serial.print("ID register = 0x"); + Serial.println(id, HEX); +} + +void loop() {} diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/examples/spi_modetest/spi_modetest.ino b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/examples/spi_modetest/spi_modetest.ino new file mode 100644 index 0000000..ebf14f9 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/examples/spi_modetest/spi_modetest.ino @@ -0,0 +1,35 @@ +#include + +#define SPIDEVICE_CS 10 +Adafruit_SPIDevice spi_dev = + Adafruit_SPIDevice(SPIDEVICE_CS, 100000, SPI_BITORDER_MSBFIRST, SPI_MODE1); +// Adafruit_SPIDevice spi_dev = Adafruit_SPIDevice(SPIDEVICE_CS, 13, 12, 11, +// 100000, SPI_BITORDER_MSBFIRST, SPI_MODE1); + +void setup() { + while (!Serial) { + delay(10); + } + Serial.begin(115200); + Serial.println("SPI device mode test"); + + if (!spi_dev.begin()) { + Serial.println("Could not initialize SPI device"); + while (1) + ; + } +} + +void loop() { + Serial.println("\n\nTransfer test"); + for (uint16_t x = 0; x <= 0xFF; x++) { + uint8_t i = x; + Serial.print("0x"); + Serial.print(i, HEX); + spi_dev.read(&i, 1, i); + Serial.print("/"); + Serial.print(i, HEX); + Serial.print(", "); + delay(25); + } +} \ No newline at end of file diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/examples/spi_readwrite/spi_readwrite.ino b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/examples/spi_readwrite/spi_readwrite.ino new file mode 100644 index 0000000..4b9ecf1 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/examples/spi_readwrite/spi_readwrite.ino @@ -0,0 +1,43 @@ +#include + +#define SPIDEVICE_CS 10 +Adafruit_SPIDevice spi_dev = Adafruit_SPIDevice(SPIDEVICE_CS); + +void setup() { + while (!Serial) { + delay(10); + } + Serial.begin(115200); + Serial.println("SPI device read and write test"); + + if (!spi_dev.begin()) { + Serial.println("Could not initialize SPI device"); + while (1) + ; + } + + uint8_t buffer[32]; + + // Try to read 32 bytes + spi_dev.read(buffer, 32); + Serial.print("Read: "); + for (uint8_t i = 0; i < 32; i++) { + Serial.print("0x"); + Serial.print(buffer[i], HEX); + Serial.print(", "); + } + Serial.println(); + + // read a register by writing first, then reading + buffer[0] = 0x8F; // we'll reuse the same buffer + spi_dev.write_then_read(buffer, 1, buffer, 2, false); + Serial.print("Write then Read: "); + for (uint8_t i = 0; i < 2; i++) { + Serial.print("0x"); + Serial.print(buffer[i], HEX); + Serial.print(", "); + } + Serial.println(); +} + +void loop() {} diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/examples/spi_register_bits/spi_register_bits.ino b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/examples/spi_register_bits/spi_register_bits.ino new file mode 100644 index 0000000..d11b440 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/examples/spi_register_bits/spi_register_bits.ino @@ -0,0 +1,268 @@ +/*************************************************** + + This is an example for how to use Adafruit_BusIO_RegisterBits from + Adafruit_BusIO library. + + Designed specifically to work with the Adafruit RTD Sensor + ----> https://www.adafruit.com/products/3328 + uisng a MAX31865 RTD-to-Digital Converter + ----> https://datasheets.maximintegrated.com/en/ds/MAX31865.pdf + + This sensor uses SPI to communicate, 4 pins are required to + interface. + A fifth pin helps to detect when a new conversion is ready. + + Adafruit invests time and resources providing this open source code, + please support Adafruit and open-source hardware by purchasing + products from Adafruit! + + Example written (2020/3) by Andreas Hardtung/AnHard. + BSD license, all text above must be included in any redistribution + ****************************************************/ + +#include +#include + +#define MAX31865_SPI_SPEED (5000000) +#define MAX31865_SPI_BITORDER (SPI_BITORDER_MSBFIRST) +#define MAX31865_SPI_MODE (SPI_MODE1) + +#define MAX31865_SPI_CS (10) +#define MAX31865_READY_PIN (2) + +Adafruit_SPIDevice spi_dev = Adafruit_SPIDevice( + MAX31865_SPI_CS, MAX31865_SPI_SPEED, MAX31865_SPI_BITORDER, + MAX31865_SPI_MODE, &SPI); // Hardware SPI +// Adafruit_SPIDevice spi_dev = Adafruit_SPIDevice( MAX31865_SPI_CS, 13, 12, 11, +// MAX31865_SPI_SPEED, MAX31865_SPI_BITORDER, MAX31865_SPI_MODE); // Software +// SPI + +// MAX31865 chip related +// ********************************************************************************************* +Adafruit_BusIO_Register config_reg = + Adafruit_BusIO_Register(&spi_dev, 0x00, ADDRBIT8_HIGH_TOWRITE, 1, MSBFIRST); +Adafruit_BusIO_RegisterBits bias_bit = + Adafruit_BusIO_RegisterBits(&config_reg, 1, 7); +Adafruit_BusIO_RegisterBits auto_bit = + Adafruit_BusIO_RegisterBits(&config_reg, 1, 6); +Adafruit_BusIO_RegisterBits oneS_bit = + Adafruit_BusIO_RegisterBits(&config_reg, 1, 5); +Adafruit_BusIO_RegisterBits wire_bit = + Adafruit_BusIO_RegisterBits(&config_reg, 1, 4); +Adafruit_BusIO_RegisterBits faultT_bits = + Adafruit_BusIO_RegisterBits(&config_reg, 2, 2); +Adafruit_BusIO_RegisterBits faultR_bit = + Adafruit_BusIO_RegisterBits(&config_reg, 1, 1); +Adafruit_BusIO_RegisterBits fi50hz_bit = + Adafruit_BusIO_RegisterBits(&config_reg, 1, 0); + +Adafruit_BusIO_Register rRatio_reg = + Adafruit_BusIO_Register(&spi_dev, 0x01, ADDRBIT8_HIGH_TOWRITE, 2, MSBFIRST); +Adafruit_BusIO_RegisterBits rRatio_bits = + Adafruit_BusIO_RegisterBits(&rRatio_reg, 15, 1); +Adafruit_BusIO_RegisterBits fault_bit = + Adafruit_BusIO_RegisterBits(&rRatio_reg, 1, 0); + +Adafruit_BusIO_Register maxRratio_reg = + Adafruit_BusIO_Register(&spi_dev, 0x03, ADDRBIT8_HIGH_TOWRITE, 2, MSBFIRST); +Adafruit_BusIO_RegisterBits maxRratio_bits = + Adafruit_BusIO_RegisterBits(&maxRratio_reg, 15, 1); + +Adafruit_BusIO_Register minRratio_reg = + Adafruit_BusIO_Register(&spi_dev, 0x05, ADDRBIT8_HIGH_TOWRITE, 2, MSBFIRST); +Adafruit_BusIO_RegisterBits minRratio_bits = + Adafruit_BusIO_RegisterBits(&minRratio_reg, 15, 1); + +Adafruit_BusIO_Register fault_reg = + Adafruit_BusIO_Register(&spi_dev, 0x07, ADDRBIT8_HIGH_TOWRITE, 1, MSBFIRST); +Adafruit_BusIO_RegisterBits range_high_fault_bit = + Adafruit_BusIO_RegisterBits(&fault_reg, 1, 7); +Adafruit_BusIO_RegisterBits range_low_fault_bit = + Adafruit_BusIO_RegisterBits(&fault_reg, 1, 6); +Adafruit_BusIO_RegisterBits refin_high_fault_bit = + Adafruit_BusIO_RegisterBits(&fault_reg, 1, 5); +Adafruit_BusIO_RegisterBits refin_low_fault_bit = + Adafruit_BusIO_RegisterBits(&fault_reg, 1, 4); +Adafruit_BusIO_RegisterBits rtdin_low_fault_bit = + Adafruit_BusIO_RegisterBits(&fault_reg, 1, 3); +Adafruit_BusIO_RegisterBits voltage_fault_bit = + Adafruit_BusIO_RegisterBits(&fault_reg, 1, 2); + +// Print the details of the configuration register. +void printConfig(void) { + Serial.print("BIAS: "); + if (bias_bit.read()) + Serial.print("ON"); + else + Serial.print("OFF"); + Serial.print(", AUTO: "); + if (auto_bit.read()) + Serial.print("ON"); + else + Serial.print("OFF"); + Serial.print(", ONES: "); + if (oneS_bit.read()) + Serial.print("ON"); + else + Serial.print("OFF"); + Serial.print(", WIRE: "); + if (wire_bit.read()) + Serial.print("3"); + else + Serial.print("2/4"); + Serial.print(", FAULTCLEAR: "); + if (faultR_bit.read()) + Serial.print("ON"); + else + Serial.print("OFF"); + Serial.print(", "); + if (fi50hz_bit.read()) + Serial.print("50HZ"); + else + Serial.print("60HZ"); + Serial.println(); +} + +// Check and print faults. Then clear them. +void checkFaults(void) { + if (fault_bit.read()) { + Serial.print("MAX: "); + Serial.println(maxRratio_bits.read()); + Serial.print("VAL: "); + Serial.println(rRatio_bits.read()); + Serial.print("MIN: "); + Serial.println(minRratio_bits.read()); + + if (range_high_fault_bit.read()) + Serial.println("Range high fault"); + if (range_low_fault_bit.read()) + Serial.println("Range low fault"); + if (refin_high_fault_bit.read()) + Serial.println("REFIN high fault"); + if (refin_low_fault_bit.read()) + Serial.println("REFIN low fault"); + if (rtdin_low_fault_bit.read()) + Serial.println("RTDIN low fault"); + if (voltage_fault_bit.read()) + Serial.println("Voltage fault"); + + faultR_bit.write(1); // clear fault + } +} + +void setup() { +#if (MAX31865_1_READY_PIN != -1) + pinMode(MAX31865_READY_PIN, INPUT_PULLUP); +#endif + + while (!Serial) { + delay(10); + } + Serial.begin(115200); + Serial.println("SPI Adafruit_BusIO_RegisterBits test on MAX31865"); + + if (!spi_dev.begin()) { + Serial.println("Could not initialize SPI device"); + while (1) + ; + } + + // Set up for automode 50Hz. We don't care about selfheating. We want the + // highest possible sampling rate. + auto_bit.write(0); // Don't switch filtermode while auto_mode is on. + fi50hz_bit.write(1); // Set filter to 50Hz mode. + faultR_bit.write(1); // Clear faults. + bias_bit.write(1); // In automode we want to have the bias current always on. + delay(5); // Wait until bias current settles down. + // 10.5 time constants of the input RC network is required. + // 10ms worst case for 10kω reference resistor and a 0.1µF capacitor + // across the RTD inputs. Adafruit Module has 0.1µF and only + // 430/4300ω So here 0.43/4.3ms + auto_bit.write( + 1); // Now we can set automode. Automatically starting first conversion. + +// Test the READY_PIN +#if (defined(MAX31865_READY_PIN) && (MAX31865_READY_PIN != -1)) + int i = 0; + while (digitalRead(MAX31865_READY_PIN) && i++ <= 100) { + delay(1); + } + if (i >= 100) { + Serial.print("ERROR: Max31865 Pin detection does not work. PIN:"); + Serial.println(MAX31865_READY_PIN); + } +#else + delay(100); +#endif + + // Set ratio range. + // Setting the temperatures would need some more calculation - not related to + // Adafruit_BusIO_RegisterBits. + uint16_t ratio = rRatio_bits.read(); + maxRratio_bits.write((ratio < 0x8fffu - 1000u) ? ratio + 1000u : 0x8fffu); + minRratio_bits.write((ratio > 1000u) ? ratio - 1000u : 0u); + + printConfig(); + checkFaults(); +} + +void loop() { +#if (defined(MAX31865_READY_PIN) && (MAX31865_1_READY_PIN != -1)) + // Is conversion ready? + if (!digitalRead(MAX31865_READY_PIN)) +#else + // Warant conversion is ready. + delay(21); // 21ms for 50Hz-mode. 19ms in 60Hz-mode. +#endif + { + // Read ratio, calculate temperature, scale, filter and print. + Serial.println(rRatio2C(rRatio_bits.read()) * 100.0f, + 0); // Temperature scaled by 100 + // Check, print, clear faults. + checkFaults(); + } + + // Do something else. + // delay(15000); +} + +// Module/Sensor related. Here Adafruit PT100 module with a 2_Wire PT100 Class C +// ***************************** +float rRatio2C(uint16_t ratio) { + // A simple linear conversion. + const float R0 = 100.0f; + const float Rref = 430.0f; + const float alphaPT = 0.003850f; + const float ADCmax = (1u << 15) - 1.0f; + const float rscale = Rref / ADCmax; + // Measured temperature in boiling water 101.08°C with factor a = 1 and b = 0. + // Rref and MAX at about 22±2°C. Measured temperature in ice/water bath 0.76°C + // with factor a = 1 and b = 0. Rref and MAX at about 22±2°C. + // const float a = 1.0f / (alphaPT * R0); + const float a = (100.0f / 101.08f) / (alphaPT * R0); + // const float b = 0.0f; // 101.08 + const float b = -0.76f; // 100.32 > 101.08 + + return filterRing(((ratio * rscale) - R0) * a + b); +} + +// General purpose +// ********************************************************************************************* +#define RINGLENGTH 250 +float filterRing(float newVal) { + static float ring[RINGLENGTH] = {0.0}; + static uint8_t ringIndex = 0; + static bool ringFull = false; + + if (ringIndex == RINGLENGTH) { + ringFull = true; + ringIndex = 0; + } + ring[ringIndex] = newVal; + uint8_t loopEnd = (ringFull) ? RINGLENGTH : ringIndex + 1; + float ringSum = 0.0f; + for (uint8_t i = 0; i < loopEnd; i++) + ringSum += ring[i]; + ringIndex++; + return ringSum / loopEnd; +} diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/examples/spi_registers/spi_registers.ino b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/examples/spi_registers/spi_registers.ino new file mode 100644 index 0000000..af6069b --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/examples/spi_registers/spi_registers.ino @@ -0,0 +1,40 @@ +#include +#include + +#define SPIDEVICE_CS 10 +Adafruit_SPIDevice spi_dev = Adafruit_SPIDevice(SPIDEVICE_CS); + +void setup() { + while (!Serial) { + delay(10); + } + Serial.begin(115200); + Serial.println("SPI device register test"); + + if (!spi_dev.begin()) { + Serial.println("Could not initialize SPI device"); + while (1) + ; + } + + Adafruit_BusIO_Register id_reg = + Adafruit_BusIO_Register(&spi_dev, 0x0F, ADDRBIT8_HIGH_TOREAD); + uint8_t id = 0; + id_reg.read(&id); + Serial.print("ID register = 0x"); + Serial.println(id, HEX); + + Adafruit_BusIO_Register thresh_reg = Adafruit_BusIO_Register( + &spi_dev, 0x0C, ADDRBIT8_HIGH_TOREAD, 2, LSBFIRST); + uint16_t thresh = 0; + thresh_reg.read(&thresh); + Serial.print("Initial threshold register = 0x"); + Serial.println(thresh, HEX); + + thresh_reg.write(~thresh); + + Serial.print("Post threshold register = 0x"); + Serial.println(thresh_reg.read(), HEX); +} + +void loop() {} diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/library.properties b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/library.properties new file mode 100644 index 0000000..1615468 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit BusIO/library.properties @@ -0,0 +1,9 @@ +name=Adafruit BusIO +version=1.17.4 +author=Adafruit +maintainer=Adafruit +sentence=This is a library for abstracting away UART, I2C and SPI interfacing +paragraph=This is a library for abstracting away UART, I2C and SPI interfacing +category=Signal Input/Output +url=https://github.com/adafruit/Adafruit_BusIO +architectures=* diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/.clang-format b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/.clang-format new file mode 100644 index 0000000..e1b53a0 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/.clang-format @@ -0,0 +1,239 @@ +Language: Cpp +# BasedOnStyle: LLVM +AccessModifierOffset: -2 +AlignAfterOpenBracket: Align +AlignArrayOfStructures: None +AlignConsecutiveAssignments: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + PadOperators: true +AlignConsecutiveBitFields: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + PadOperators: false +AlignConsecutiveDeclarations: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + PadOperators: false +AlignConsecutiveMacros: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + PadOperators: false +AlignConsecutiveShortCaseStatements: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCaseColons: false +AlignEscapedNewlines: Right +AlignOperands: Align +AlignTrailingComments: + Kind: Always + OverEmptyLines: 0 +AllowAllArgumentsOnNextLine: true +AllowAllParametersOfDeclarationOnNextLine: true +AllowBreakBeforeNoexceptSpecifier: Never +AllowShortBlocksOnASingleLine: Never +AllowShortCaseLabelsOnASingleLine: false +AllowShortCompoundRequirementOnASingleLine: true +AllowShortEnumsOnASingleLine: true +AllowShortFunctionsOnASingleLine: All +AllowShortIfStatementsOnASingleLine: Never +AllowShortLambdasOnASingleLine: All +AllowShortLoopsOnASingleLine: false +AlwaysBreakAfterDefinitionReturnType: None +AlwaysBreakAfterReturnType: None +AlwaysBreakBeforeMultilineStrings: false +AlwaysBreakTemplateDeclarations: MultiLine +AttributeMacros: + - __capability +BinPackArguments: true +BinPackParameters: true +BitFieldColonSpacing: Both +BraceWrapping: + AfterCaseLabel: false + AfterClass: false + AfterControlStatement: Never + AfterEnum: false + AfterExternBlock: false + AfterFunction: false + AfterNamespace: false + AfterObjCDeclaration: false + AfterStruct: false + AfterUnion: false + BeforeCatch: false + BeforeElse: false + BeforeLambdaBody: false + BeforeWhile: false + IndentBraces: false + SplitEmptyFunction: true + SplitEmptyRecord: true + SplitEmptyNamespace: true +BreakAdjacentStringLiterals: true +BreakAfterAttributes: Leave +BreakAfterJavaFieldAnnotations: false +BreakArrays: true +BreakBeforeBinaryOperators: None +BreakBeforeConceptDeclarations: Always +BreakBeforeBraces: Attach +BreakBeforeInlineASMColon: OnlyMultiline +BreakBeforeTernaryOperators: true +BreakConstructorInitializers: BeforeColon +BreakInheritanceList: BeforeColon +BreakStringLiterals: true +ColumnLimit: 80 +CommentPragmas: '^ IWYU pragma:' +CompactNamespaces: false +ConstructorInitializerIndentWidth: 4 +ContinuationIndentWidth: 4 +Cpp11BracedListStyle: true +DerivePointerAlignment: false +DisableFormat: false +EmptyLineAfterAccessModifier: Never +EmptyLineBeforeAccessModifier: LogicalBlock +ExperimentalAutoDetectBinPacking: false +FixNamespaceComments: true +ForEachMacros: + - foreach + - Q_FOREACH + - BOOST_FOREACH +IfMacros: + - KJ_IF_MAYBE +IncludeBlocks: Preserve +IncludeCategories: + - Regex: '^"(llvm|llvm-c|clang|clang-c)/' + Priority: 2 + SortPriority: 0 + CaseSensitive: false + - Regex: '^(<|"(gtest|gmock|isl|json)/)' + Priority: 3 + SortPriority: 0 + CaseSensitive: false + - Regex: '.*' + Priority: 1 + SortPriority: 0 + CaseSensitive: false +IncludeIsMainRegex: '(Test)?$' +IncludeIsMainSourceRegex: '' +IndentAccessModifiers: false +IndentCaseBlocks: false +IndentCaseLabels: false +IndentExternBlock: AfterExternBlock +IndentGotoLabels: true +IndentPPDirectives: None +IndentRequiresClause: true +IndentWidth: 2 +IndentWrappedFunctionNames: false +InsertBraces: false +InsertNewlineAtEOF: false +InsertTrailingCommas: None +IntegerLiteralSeparator: + Binary: 0 + BinaryMinDigits: 0 + Decimal: 0 + DecimalMinDigits: 0 + Hex: 0 + HexMinDigits: 0 +JavaScriptQuotes: Leave +JavaScriptWrapImports: true +KeepEmptyLinesAtTheStartOfBlocks: true +KeepEmptyLinesAtEOF: false +LambdaBodyIndentation: Signature +LineEnding: DeriveLF +MacroBlockBegin: '' +MacroBlockEnd: '' +MaxEmptyLinesToKeep: 1 +NamespaceIndentation: None +ObjCBinPackProtocolList: Auto +ObjCBlockIndentWidth: 2 +ObjCBreakBeforeNestedBlockParam: true +ObjCSpaceAfterProperty: false +ObjCSpaceBeforeProtocolList: true +PackConstructorInitializers: BinPack +PenaltyBreakAssignment: 2 +PenaltyBreakBeforeFirstCallParameter: 19 +PenaltyBreakComment: 300 +PenaltyBreakFirstLessLess: 120 +PenaltyBreakOpenParenthesis: 0 +PenaltyBreakScopeResolution: 500 +PenaltyBreakString: 1000 +PenaltyBreakTemplateDeclaration: 10 +PenaltyExcessCharacter: 1000000 +PenaltyIndentedWhitespace: 0 +PenaltyReturnTypeOnItsOwnLine: 60 +PointerAlignment: Right +PPIndentWidth: -1 +QualifierAlignment: Leave +ReferenceAlignment: Pointer +ReflowComments: true +RemoveBracesLLVM: false +RemoveParentheses: Leave +RemoveSemicolon: false +RequiresClausePosition: OwnLine +RequiresExpressionIndentation: OuterScope +SeparateDefinitionBlocks: Leave +ShortNamespaceLines: 1 +SkipMacroDefinitionBody: false +SortIncludes: CaseSensitive +SortJavaStaticImport: Before +SortUsingDeclarations: LexicographicNumeric +SpaceAfterCStyleCast: false +SpaceAfterLogicalNot: false +SpaceAfterTemplateKeyword: true +SpaceAroundPointerQualifiers: Default +SpaceBeforeAssignmentOperators: true +SpaceBeforeCaseColon: false +SpaceBeforeCpp11BracedList: false +SpaceBeforeCtorInitializerColon: true +SpaceBeforeInheritanceColon: true +SpaceBeforeJsonColon: false +SpaceBeforeParens: ControlStatements +SpaceBeforeParensOptions: + AfterControlStatements: true + AfterForeachMacros: true + AfterFunctionDefinitionName: false + AfterFunctionDeclarationName: false + AfterIfMacros: true + AfterOverloadedOperator: false + AfterPlacementOperator: true + AfterRequiresInClause: false + AfterRequiresInExpression: false + BeforeNonEmptyParentheses: false +SpaceBeforeRangeBasedForLoopColon: true +SpaceBeforeSquareBrackets: false +SpaceInEmptyBlock: false +SpacesBeforeTrailingComments: 1 +SpacesInAngles: Never +SpacesInContainerLiterals: true +SpacesInLineCommentPrefix: + Minimum: 1 + Maximum: -1 +SpacesInParens: Never +SpacesInParensOptions: + InCStyleCasts: false + InConditionalStatements: false + InEmptyParentheses: false + Other: false +SpacesInSquareBrackets: false +Standard: Latest +StatementAttributeLikeMacros: + - Q_EMIT +StatementMacros: + - Q_UNUSED + - QT_REQUIRE_VERSION +TabWidth: 8 +UseTab: Never +VerilogBreakBetweenInstancePorts: true +WhitespaceSensitiveMacros: + - BOOST_PP_STRINGIZE + - CF_SWIFT_NAME + - NS_SWIFT_NAME + - PP_STRINGIZE + - STRINGIZE diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/.github/ISSUE_TEMPLATE.md b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/.github/ISSUE_TEMPLATE.md new file mode 100644 index 0000000..f0e2614 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,46 @@ +Thank you for opening an issue on an Adafruit Arduino library repository. To +improve the speed of resolution please review the following guidelines and +common troubleshooting steps below before creating the issue: + +- **Do not use GitHub issues for troubleshooting projects and issues.** Instead use + the forums at http://forums.adafruit.com to ask questions and troubleshoot why + something isn't working as expected. In many cases the problem is a common issue + that you will more quickly receive help from the forum community. GitHub issues + are meant for known defects in the code. If you don't know if there is a defect + in the code then start with troubleshooting on the forum first. + +- **If following a tutorial or guide be sure you didn't miss a step.** Carefully + check all of the steps and commands to run have been followed. Consult the + forum if you're unsure or have questions about steps in a guide/tutorial. + +- **For Arduino projects check these very common issues to ensure they don't apply**: + + - For uploading sketches or communicating with the board make sure you're using + a **USB data cable** and **not** a **USB charge-only cable**. It is sometimes + very hard to tell the difference between a data and charge cable! Try using the + cable with other devices or swapping to another cable to confirm it is not + the problem. + + - **Be sure you are supplying adequate power to the board.** Check the specs of + your board and plug in an external power supply. In many cases just + plugging a board into your computer is not enough to power it and other + peripherals. + + - **Double check all soldering joints and connections.** Flakey connections + cause many mysterious problems. See the [guide to excellent soldering](https://learn.adafruit.com/adafruit-guide-excellent-soldering/tools) for examples of good solder joints. + + - **Ensure you are using an official Arduino or Adafruit board.** We can't + guarantee a clone board will have the same functionality and work as expected + with this code and don't support them. + +If you're sure this issue is a defect in the code and checked the steps above +please fill in the following fields to provide enough troubleshooting information. +You may delete the guideline and text above to just leave the following details: + +- Arduino board: **INSERT ARDUINO BOARD NAME/TYPE HERE** + +- Arduino IDE version (found in Arduino -> About Arduino menu): **INSERT ARDUINO + VERSION HERE** + +- List the steps to reproduce the problem below (if possible attach a sketch or + copy the sketch code in too): **LIST REPRO STEPS BELOW** diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/.github/PULL_REQUEST_TEMPLATE.md b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..7b641eb --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,26 @@ +Thank you for creating a pull request to contribute to Adafruit's GitHub code! +Before you open the request please review the following guidelines and tips to +help it be more easily integrated: + +- **Describe the scope of your change--i.e. what the change does and what parts + of the code were modified.** This will help us understand any risks of integrating + the code. + +- **Describe any known limitations with your change.** For example if the change + doesn't apply to a supported platform of the library please mention it. + +- **Please run any tests or examples that can exercise your modified code.** We + strive to not break users of the code and running tests/examples helps with this + process. + +Thank you again for contributing! We will try to test and integrate the change +as soon as we can, but be aware we have many GitHub repositories to manage and +can't immediately respond to every request. There is no need to bump or check in +on a pull request (it will clutter the discussion of the request). + +Also don't be worried if the request is closed or not integrated--sometimes the +priorities of Adafruit's GitHub code (education, ease of use) might not match the +priorities of the pull request. Don't fret, the open source community thrives on +forks and GitHub makes it easy to keep your changes in a forked repo. + +After reviewing the guidelines above you can delete this text from the pull request. diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/.github/workflows/githubci.yml b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/.github/workflows/githubci.yml new file mode 100644 index 0000000..a04a162 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/.github/workflows/githubci.yml @@ -0,0 +1,36 @@ +name: Arduino Library CI + +on: [pull_request, push, repository_dispatch] + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/setup-python@v4 + with: + python-version: '3.x' + - uses: actions/checkout@v3 + - uses: actions/checkout@v3 + with: + repository: adafruit/ci-arduino + path: ci + + - name: pre-install + run: bash ci/actions_install.sh + + - name: extra libraries + run: | + git clone --quiet https://github.com/adafruit/Adafruit_ILI9341.git /home/runner/Arduino/libraries/Adafruit_ILI9341 + + - name: test platforms + run: python3 ci/build_platform.py main_platforms + + - name: clang + run: python3 ci/run-clang-format.py -e "ci/*" -e "bin/*" -r . + + - name: doxygen + env: + GH_REPO_TOKEN: ${{ secrets.GH_REPO_TOKEN }} + PRETTYNAME : "Adafruit GFX Library" + run: bash ci/doxy_gen_and_deploy.sh diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/.gitignore b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/.gitignore new file mode 100644 index 0000000..469bb73 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/.gitignore @@ -0,0 +1,6 @@ +default.vim +fontconvert/fontconvert +# Our handy .gitignore for automation ease +Doxyfile* +doxygen_sqlite3.db +html \ No newline at end of file diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/.piopm b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/.piopm new file mode 100644 index 0000000..9ed8464 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/.piopm @@ -0,0 +1 @@ +{"type": "library", "name": "Adafruit GFX Library", "version": "1.12.6", "spec": {"owner": "adafruit", "id": 13, "name": "Adafruit GFX Library", "requirements": null, "uri": null}} \ No newline at end of file diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Adafruit_GFX.cpp b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Adafruit_GFX.cpp new file mode 100644 index 0000000..ae26bf1 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Adafruit_GFX.cpp @@ -0,0 +1,2952 @@ +/* +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. + */ + +#include "Adafruit_GFX.h" +#include "glcdfont.c" +#ifdef __AVR__ +#include +#elif defined(ESP8266) || defined(ESP32) +#include +#endif + +// 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 + +inline GFXglyph *pgm_read_glyph_ptr(const GFXfont *gfxFont, uint8_t c) { +#ifdef __AVR__ + return &(((GFXglyph *)pgm_read_pointer(&gfxFont->glyph))[c]); +#else + // expression in __AVR__ section may generate "dereferencing type-punned + // pointer will break strict-aliasing rules" warning In fact, on other + // platforms (such as STM32) there is no need to do this pointer magic as + // program memory may be read in a usual way So expression may be simplified + return gfxFont->glyph + c; +#endif //__AVR__ +} + +inline uint8_t *pgm_read_bitmap_ptr(const GFXfont *gfxFont) { +#ifdef __AVR__ + return (uint8_t *)pgm_read_pointer(&gfxFont->bitmap); +#else + // expression in __AVR__ section generates "dereferencing type-punned pointer + // will break strict-aliasing rules" warning In fact, on other platforms (such + // as STM32) there is no need to do this pointer magic as program memory may + // be read in a usual way So expression may be simplified + return gfxFont->bitmap; +#endif //__AVR__ +} + +#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 + +/**************************************************************************/ +/*! + @brief Instatiate a GFX context for graphics! Can only be done by a + superclass + @param w Display width, in pixels + @param h Display height, in pixels +*/ +/**************************************************************************/ +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_x = textsize_y = 1; + textcolor = textbgcolor = 0xFFFF; + wrap = true; + _cp437 = false; + gfxFont = NULL; +} + +/**************************************************************************/ +/*! + @brief Write a line. Bresenham's algorithm - thx wikpedia + @param x0 Start point x coordinate + @param y0 Start point y coordinate + @param x1 End point x coordinate + @param y1 End point y coordinate + @param color 16-bit 5-6-5 Color to draw with +*/ +/**************************************************************************/ +void Adafruit_GFX::writeLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, + uint16_t color) { +#if defined(ESP8266) + yield(); +#endif + 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) { + writePixel(y0, x0, color); + } else { + writePixel(x0, y0, color); + } + err -= dy; + if (err < 0) { + y0 += ystep; + err += dx; + } + } +} + +/**************************************************************************/ +/*! + @brief Start a display-writing routine, overwrite in subclasses. +*/ +/**************************************************************************/ +void Adafruit_GFX::startWrite() {} + +/**************************************************************************/ +/*! + @brief Write a pixel, overwrite in subclasses if startWrite is defined! + @param x x coordinate + @param y y coordinate + @param color 16-bit 5-6-5 Color to fill with +*/ +/**************************************************************************/ +void Adafruit_GFX::writePixel(int16_t x, int16_t y, uint16_t color) { + drawPixel(x, y, color); +} + +/**************************************************************************/ +/*! + @brief Write a perfectly vertical line, overwrite in subclasses if + startWrite is defined! + @param x Top-most x coordinate + @param y Top-most y coordinate + @param h Height in pixels + @param color 16-bit 5-6-5 Color to fill with +*/ +/**************************************************************************/ +void Adafruit_GFX::writeFastVLine(int16_t x, int16_t y, int16_t h, + uint16_t color) { + // Overwrite in subclasses if startWrite is defined! + // Can be just writeLine(x, y, x, y+h-1, color); + // or writeFillRect(x, y, 1, h, color); + drawFastVLine(x, y, h, color); +} + +/**************************************************************************/ +/*! + @brief Write a perfectly horizontal line, overwrite in subclasses if + startWrite is defined! + @param x Left-most x coordinate + @param y Left-most y coordinate + @param w Width in pixels + @param color 16-bit 5-6-5 Color to fill with +*/ +/**************************************************************************/ +void Adafruit_GFX::writeFastHLine(int16_t x, int16_t y, int16_t w, + uint16_t color) { + // Overwrite in subclasses if startWrite is defined! + // Example: writeLine(x, y, x+w-1, y, color); + // or writeFillRect(x, y, w, 1, color); + drawFastHLine(x, y, w, color); +} + +/**************************************************************************/ +/*! + @brief Write a rectangle completely with one color, overwrite in + subclasses if startWrite is defined! + @param x Top left corner x coordinate + @param y Top left corner y coordinate + @param w Width in pixels + @param h Height in pixels + @param color 16-bit 5-6-5 Color to fill with +*/ +/**************************************************************************/ +void Adafruit_GFX::writeFillRect(int16_t x, int16_t y, int16_t w, int16_t h, + uint16_t color) { + // Overwrite in subclasses if desired! + fillRect(x, y, w, h, color); +} + +/**************************************************************************/ +/*! + @brief End a display-writing routine, overwrite in subclasses if + startWrite is defined! +*/ +/**************************************************************************/ +void Adafruit_GFX::endWrite() {} + +/**************************************************************************/ +/*! + @brief Draw a perfectly vertical line (this is often optimized in a + subclass!) + @param x Top-most x coordinate + @param y Top-most y coordinate + @param h Height in pixels + @param color 16-bit 5-6-5 Color to fill with +*/ +/**************************************************************************/ +void Adafruit_GFX::drawFastVLine(int16_t x, int16_t y, int16_t h, + uint16_t color) { + startWrite(); + writeLine(x, y, x, y + h - 1, color); + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Draw a perfectly horizontal line (this is often optimized in a + subclass!) + @param x Left-most x coordinate + @param y Left-most y coordinate + @param w Width in pixels + @param color 16-bit 5-6-5 Color to fill with +*/ +/**************************************************************************/ +void Adafruit_GFX::drawFastHLine(int16_t x, int16_t y, int16_t w, + uint16_t color) { + startWrite(); + writeLine(x, y, x + w - 1, y, color); + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Fill a rectangle completely with one color. Update in subclasses if + desired! + @param x Top left corner x coordinate + @param y Top left corner y coordinate + @param w Width in pixels + @param h Height in pixels + @param color 16-bit 5-6-5 Color to fill with +*/ +/**************************************************************************/ +void Adafruit_GFX::fillRect(int16_t x, int16_t y, int16_t w, int16_t h, + uint16_t color) { + startWrite(); + for (int16_t i = x; i < x + w; i++) { + writeFastVLine(i, y, h, color); + } + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Fill the screen completely with one color. Update in subclasses if + desired! + @param color 16-bit 5-6-5 Color to fill with +*/ +/**************************************************************************/ +void Adafruit_GFX::fillScreen(uint16_t color) { + fillRect(0, 0, _width, _height, color); +} + +/**************************************************************************/ +/*! + @brief Draw a line + @param x0 Start point x coordinate + @param y0 Start point y coordinate + @param x1 End point x coordinate + @param y1 End point y coordinate + @param color 16-bit 5-6-5 Color to draw with +*/ +/**************************************************************************/ +void Adafruit_GFX::drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, + uint16_t color) { + // Update in subclasses if desired! + if (x0 == x1) { + if (y0 > y1) + _swap_int16_t(y0, y1); + drawFastVLine(x0, y0, y1 - y0 + 1, color); + } else if (y0 == y1) { + if (x0 > x1) + _swap_int16_t(x0, x1); + drawFastHLine(x0, y0, x1 - x0 + 1, color); + } else { + startWrite(); + writeLine(x0, y0, x1, y1, color); + endWrite(); + } +} + +/**************************************************************************/ +/*! + @brief Draw an ellipse outline + @param x0 Center-point x coordinate + @param y0 Center-point y coordinate + @param rw Horizontal radius of ellipse + @param rh Vertical radius of ellipse + @param color 16-bit 5-6-5 Color to draw with +*/ +/**************************************************************************/ +void Adafruit_GFX::drawEllipse(int16_t x0, int16_t y0, int16_t rw, int16_t rh, + uint16_t color) { +#if defined(ESP8266) + yield(); +#endif + // Bresenham's ellipse algorithm + int16_t x = 0, y = rh; + int32_t rw2 = rw * rw, rh2 = rh * rh; + int32_t twoRw2 = 2 * rw2, twoRh2 = 2 * rh2; + + int32_t decision = rh2 - (rw2 * rh) + (rw2 / 4); + + startWrite(); + + // region 1 + while ((twoRh2 * x) < (twoRw2 * y)) { + writePixel(x0 + x, y0 + y, color); + writePixel(x0 - x, y0 + y, color); + writePixel(x0 + x, y0 - y, color); + writePixel(x0 - x, y0 - y, color); + x++; + if (decision < 0) { + decision += rh2 + (twoRh2 * x); + } else { + decision += rh2 + (twoRh2 * x) - (twoRw2 * y); + y--; + } + } + + // region 2 + decision = ((rh2 * (2 * x + 1) * (2 * x + 1)) >> 2) + + (rw2 * (y - 1) * (y - 1)) - (rw2 * rh2); + while (y >= 0) { + writePixel(x0 + x, y0 + y, color); + writePixel(x0 - x, y0 + y, color); + writePixel(x0 + x, y0 - y, color); + writePixel(x0 - x, y0 - y, color); + y--; + if (decision > 0) { + decision += rw2 - (twoRw2 * y); + } else { + decision += rw2 + (twoRh2 * x) - (twoRw2 * y); + x++; + } + } + + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Draw an ellipse with filled colour + @param x0 Center-point x coordinate + @param y0 Center-point y coordinate + @param rw Horizontal radius of ellipse + @param rh Vertical radius of ellipse + @param color 16-bit 5-6-5 Color to draw with +*/ +/**************************************************************************/ +void Adafruit_GFX::fillEllipse(int16_t x0, int16_t y0, int16_t rw, int16_t rh, + uint16_t color) { +#if defined(ESP8266) + yield(); +#endif + // Bresenham's ellipse algorithm + int16_t x = 0, y = rh; + int32_t rw2 = rw * rw, rh2 = rh * rh; + int32_t twoRw2 = 2 * rw2, twoRh2 = 2 * rh2; + + int32_t decision = rh2 - (rw2 * rh) + (rw2 / 4); + + startWrite(); + + // region 1 + while ((twoRh2 * x) < (twoRw2 * y)) { + x++; + if (decision < 0) { + decision += rh2 + (twoRh2 * x); + } else { + decision += rh2 + (twoRh2 * x) - (twoRw2 * y); + drawFastHLine(x0 - (x - 1), y0 + y, 2 * (x - 1) + 1, color); + drawFastHLine(x0 - (x - 1), y0 - y, 2 * (x - 1) + 1, color); + y--; + } + } + + // region 2 + decision = ((rh2 * (2 * x + 1) * (2 * x + 1)) >> 2) + + (rw2 * (y - 1) * (y - 1)) - (rw2 * rh2); + while (y >= 0) { + drawFastHLine(x0 - x, y0 + y, 2 * x + 1, color); + drawFastHLine(x0 - x, y0 - y, 2 * x + 1, color); + + y--; + if (decision > 0) { + decision += rw2 - (twoRw2 * y); + } else { + decision += rw2 + (twoRh2 * x) - (twoRw2 * y); + x++; + } + } + + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Draw a circle outline + @param x0 Center-point x coordinate + @param y0 Center-point y coordinate + @param r Radius of circle + @param color 16-bit 5-6-5 Color to draw with +*/ +/**************************************************************************/ +void Adafruit_GFX::drawCircle(int16_t x0, int16_t y0, int16_t r, + uint16_t color) { +#if defined(ESP8266) + yield(); +#endif + int16_t f = 1 - r; + int16_t ddF_x = 1; + int16_t ddF_y = -2 * r; + int16_t x = 0; + int16_t y = r; + + startWrite(); + writePixel(x0, y0 + r, color); + writePixel(x0, y0 - r, color); + writePixel(x0 + r, y0, color); + writePixel(x0 - r, y0, color); + + while (x < y) { + if (f >= 0) { + y--; + ddF_y += 2; + f += ddF_y; + } + x++; + ddF_x += 2; + f += ddF_x; + + writePixel(x0 + x, y0 + y, color); + writePixel(x0 - x, y0 + y, color); + writePixel(x0 + x, y0 - y, color); + writePixel(x0 - x, y0 - y, color); + writePixel(x0 + y, y0 + x, color); + writePixel(x0 - y, y0 + x, color); + writePixel(x0 + y, y0 - x, color); + writePixel(x0 - y, y0 - x, color); + } + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Quarter-circle drawer, used to do circles and roundrects + @param x0 Center-point x coordinate + @param y0 Center-point y coordinate + @param r Radius of circle + @param cornername Mask bit #1, #2, #4, and #8 to indicate which quarters + of the circle we're doing + @param color 16-bit 5-6-5 Color to draw with +*/ +/**************************************************************************/ +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 < y) { + if (f >= 0) { + y--; + ddF_y += 2; + f += ddF_y; + } + x++; + ddF_x += 2; + f += ddF_x; + if (cornername & 0x4) { + writePixel(x0 + x, y0 + y, color); + writePixel(x0 + y, y0 + x, color); + } + if (cornername & 0x2) { + writePixel(x0 + x, y0 - y, color); + writePixel(x0 + y, y0 - x, color); + } + if (cornername & 0x8) { + writePixel(x0 - y, y0 + x, color); + writePixel(x0 - x, y0 + y, color); + } + if (cornername & 0x1) { + writePixel(x0 - y, y0 - x, color); + writePixel(x0 - x, y0 - y, color); + } + } +} + +/**************************************************************************/ +/*! + @brief Draw a circle with filled color + @param x0 Center-point x coordinate + @param y0 Center-point y coordinate + @param r Radius of circle + @param color 16-bit 5-6-5 Color to fill with +*/ +/**************************************************************************/ +void Adafruit_GFX::fillCircle(int16_t x0, int16_t y0, int16_t r, + uint16_t color) { + startWrite(); + writeFastVLine(x0, y0 - r, 2 * r + 1, color); + fillCircleHelper(x0, y0, r, 3, 0, color); + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Half-circle drawer with fill, used for circles and roundrects + @param x0 Center-point x coordinate + @param y0 Center-point y coordinate + @param r Radius of circle + @param corners Mask bits indicating which sides of the circle we are + doing, left (1) and/or right (2) + @param delta Offset from center-point, used for round-rects + @param color 16-bit 5-6-5 Color to fill with +*/ +/**************************************************************************/ +void Adafruit_GFX::fillCircleHelper(int16_t x0, int16_t y0, int16_t r, + uint8_t corners, 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; + int16_t px = x; + int16_t py = y; + + delta++; // Avoid some +1's in the loop + + while (x < y) { + if (f >= 0) { + y--; + ddF_y += 2; + f += ddF_y; + } + x++; + ddF_x += 2; + f += ddF_x; + // These checks avoid double-drawing certain lines, important + // for the SSD1306 library which has an INVERT drawing mode. + if (x < (y + 1)) { + if (corners & 1) + writeFastVLine(x0 + x, y0 - y, 2 * y + delta, color); + if (corners & 2) + writeFastVLine(x0 - x, y0 - y, 2 * y + delta, color); + } + if (y != py) { + if (corners & 1) + writeFastVLine(x0 + py, y0 - px, 2 * px + delta, color); + if (corners & 2) + writeFastVLine(x0 - py, y0 - px, 2 * px + delta, color); + py = y; + } + px = x; + } +} + +/**************************************************************************/ +/*! + @brief Draw a rectangle with no fill color + @param x Top left corner x coordinate + @param y Top left corner y coordinate + @param w Width in pixels + @param h Height in pixels + @param color 16-bit 5-6-5 Color to draw with +*/ +/**************************************************************************/ +void Adafruit_GFX::drawRect(int16_t x, int16_t y, int16_t w, int16_t h, + uint16_t color) { + startWrite(); + writeFastHLine(x, y, w, color); + writeFastHLine(x, y + h - 1, w, color); + writeFastVLine(x, y, h, color); + writeFastVLine(x + w - 1, y, h, color); + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Draw a rounded rectangle with no fill color + @param x Top left corner x coordinate + @param y Top left corner y coordinate + @param w Width in pixels + @param h Height in pixels + @param r Radius of corner rounding + @param color 16-bit 5-6-5 Color to draw with +*/ +/**************************************************************************/ +void Adafruit_GFX::drawRoundRect(int16_t x, int16_t y, int16_t w, int16_t h, + int16_t r, uint16_t color) { + int16_t max_radius = ((w < h) ? w : h) / 2; // 1/2 minor axis + if (r > max_radius) + r = max_radius; + // smarter version + startWrite(); + writeFastHLine(x + r, y, w - 2 * r, color); // Top + writeFastHLine(x + r, y + h - 1, w - 2 * r, color); // Bottom + writeFastVLine(x, y + r, h - 2 * r, color); // Left + writeFastVLine(x + w - 1, y + r, h - 2 * r, color); // Right + // draw four corners + drawCircleHelper(x + r, y + r, r, 1, color); + drawCircleHelper(x + w - r - 1, y + r, r, 2, color); + drawCircleHelper(x + w - r - 1, y + h - r - 1, r, 4, color); + drawCircleHelper(x + r, y + h - r - 1, r, 8, color); + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Draw a rounded rectangle with fill color + @param x Top left corner x coordinate + @param y Top left corner y coordinate + @param w Width in pixels + @param h Height in pixels + @param r Radius of corner rounding + @param color 16-bit 5-6-5 Color to draw/fill with +*/ +/**************************************************************************/ +void Adafruit_GFX::fillRoundRect(int16_t x, int16_t y, int16_t w, int16_t h, + int16_t r, uint16_t color) { + int16_t max_radius = ((w < h) ? w : h) / 2; // 1/2 minor axis + if (r > max_radius) + r = max_radius; + // smarter version + startWrite(); + writeFillRect(x + r, y, w - 2 * r, h, color); + // draw four corners + fillCircleHelper(x + w - r - 1, y + r, r, 1, h - 2 * r - 1, color); + fillCircleHelper(x + r, y + r, r, 2, h - 2 * r - 1, color); + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Draw a rotated rectangle + @param cenX x coordinate of center of rectangle. + For even width rectangles, this point + represents the pixel to the left of + true center. + @param cenY y coordinate of center of rectangle. + For even height rectangles, this point + represents the pixel above + true center. + @param w width of rectangle + @param h height of rectangle + @param angleDeg angle of rotation of rectangle + @param color 16-bit 5-6-5 Color to fill/draw with +*/ +/**************************************************************************/ +void Adafruit_GFX::drawRotatedRect(int16_t cenX, int16_t cenY, int16_t w, + int16_t h, int16_t angleDeg, + uint16_t color) { + + if (w < 1 || h < 1) + return; // We don't draw zero dimensioned objects + + int16_t W = w - 1; + int16_t H = h - 1; + + int16_t halfW = (W / 2); // Midpoint should always be integer + int16_t halfH = (H / 2); // Midpoint should always be integer + + int16_t x0 = W - halfW; // bottom-right + int16_t y0 = H - halfH; // bottom-right + int16_t x1 = -halfW; // bottom-left + int16_t y1 = H - halfH; // bottom-left + int16_t x2 = -halfW; // top-left + int16_t y2 = -halfH; // top-left + int16_t x3 = W - halfW; // top-right + int16_t y3 = -halfH; // top-right + + rotatePoint(x0, y0, angleDeg); + rotatePoint(x1, y1, angleDeg); + rotatePoint(x2, y2, angleDeg); + rotatePoint(x3, y3, angleDeg); + + x0 += cenX; + x1 += cenX; + x2 += cenX; + x3 += cenX; + + y0 += cenY; + y1 += cenY; + y2 += cenY; + y3 += cenY; + + drawLine(x0, y0, x1, y1, color); // bottom right to bottom left + drawLine(x1, y1, x2, y2, color); // bottom left to top left + drawLine(x2, y2, x3, y3, color); // top left to top right + drawLine(x3, y3, x0, y0, color); // top right to bottom right +} + +/**************************************************************************/ +/*! + @brief Draw a filled rotated rectangle + @param cenX x coordinate of center of rectangle. + For even width rectangles, this point + represents the pixel to the left of + true center. + @param cenY y coordinate of center of rectangle. + For even height rectangles, this point + represents the pixel above + true center. + @param w width of rectangle + @param h height of rectangle + @param angleDeg angle of rotation of rectangle + @param color 16-bit 5-6-5 Color to fill/draw with +*/ +/**************************************************************************/ +void Adafruit_GFX::fillRotatedRect(int16_t cenX, int16_t cenY, int16_t w, + int16_t h, int16_t angleDeg, + uint16_t color) { + + if (w < 1 || h < 1) + return; // We don't draw zero dimensioned objects + + int16_t W = w - 1; + int16_t H = h - 1; + + int16_t halfW = (W / 2); // Midpoint should always be integer + int16_t halfH = (H / 2); // Midpoint should always be integer + + int16_t x0 = W - halfW; // bottom-right + int16_t y0 = H - halfH; // bottom-right + int16_t x1 = -halfW; // bottom-left + int16_t y1 = H - halfH; // bottom-left + int16_t x2 = -halfW; // top-left + int16_t y2 = -halfH; // top-left + int16_t x3 = W - halfW; // top-right + int16_t y3 = -halfH; // top-right + + rotatePoint(x0, y0, angleDeg); + rotatePoint(x1, y1, angleDeg); + rotatePoint(x2, y2, angleDeg); + rotatePoint(x3, y3, angleDeg); + + x0 += cenX; + x1 += cenX; + x2 += cenX; + x3 += cenX; + + y0 += cenY; + y1 += cenY; + y2 += cenY; + y3 += cenY; + + fillTriangle(x0, y0, x1, y1, x2, y2, color); + fillTriangle(x2, y2, x3, y3, x0, y0, color); +} + +/**************************************************************************/ +/*! + @brief Rotate a point in standard position + @param x0 x coordinate of point to rotate. This is passed by reference + and updated upon return + @param y0 y coordinate of point to rotate. This is passed by reference + and updated upon return + @param angleDeg angle to rotate the point by (degrees) +*/ +/**************************************************************************/ +void Adafruit_GFX::rotatePoint(int16_t &x0, int16_t &y0, int16_t angleDeg) { + float angleRad = radians(angleDeg); + float s = sin(angleRad); + float c = cos(angleRad); + + float x = x0; + float y = y0; + + // Rotate point + x0 = (int16_t)((x * c) - (y * s)); + y0 = (int16_t)((x * s) + (y * c)); +} + +/**************************************************************************/ +/*! + @brief Draw a triangle with no fill color + @param x0 Vertex #0 x coordinate + @param y0 Vertex #0 y coordinate + @param x1 Vertex #1 x coordinate + @param y1 Vertex #1 y coordinate + @param x2 Vertex #2 x coordinate + @param y2 Vertex #2 y coordinate + @param color 16-bit 5-6-5 Color to draw with +*/ +/**************************************************************************/ +void Adafruit_GFX::drawTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, + int16_t x2, int16_t y2, uint16_t color) { + drawLine(x0, y0, x1, y1, color); + drawLine(x1, y1, x2, y2, color); + drawLine(x2, y2, x0, y0, color); +} + +/**************************************************************************/ +/*! + @brief Draw a triangle with color-fill + @param x0 Vertex #0 x coordinate + @param y0 Vertex #0 y coordinate + @param x1 Vertex #1 x coordinate + @param y1 Vertex #1 y coordinate + @param x2 Vertex #2 x coordinate + @param y2 Vertex #2 y coordinate + @param color 16-bit 5-6-5 Color to fill/draw with +*/ +/**************************************************************************/ +void Adafruit_GFX::fillTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, + int16_t x2, int16_t y2, uint16_t color) { + + int16_t a, b, y, last; + + // Sort coordinates by Y order (y2 >= 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); + } + + startWrite(); + 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; + writeFastHLine(a, y0, b - a + 1, color); + endWrite(); + 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); + writeFastHLine(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 = (int32_t)dx12 * (y - y1); + sb = (int32_t)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); + writeFastHLine(a, y, b - a + 1, color); + } + endWrite(); +} + +// BITMAP / XBITMAP / GRAYSCALE / RGB BITMAP FUNCTIONS --------------------- + +/**************************************************************************/ +/*! + @brief Draw a PROGMEM-resident 1-bit image at the specified (x,y) + position, using the specified foreground color (unset bits are transparent). + @param x Top left corner x coordinate + @param y Top left corner y coordinate + @param bitmap byte array with monochrome bitmap + @param w Width of bitmap in pixels + @param h Height of bitmap in pixels + @param color 16-bit 5-6-5 Color to draw with +*/ +/**************************************************************************/ +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 byteWidth = (w + 7) / 8; // Bitmap scanline pad = whole byte + uint8_t b = 0; + + startWrite(); + for (int16_t j = 0; j < h; j++, y++) { + for (int16_t i = 0; i < w; i++) { + if (i & 7) + b <<= 1; + else + b = pgm_read_byte(&bitmap[j * byteWidth + i / 8]); + if (b & 0x80) + writePixel(x + i, y, color); + } + } + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Draw a PROGMEM-resident 1-bit image at the specified (x,y) + position, using the specified foreground (for set bits) and background (unset + bits) colors. + @param x Top left corner x coordinate + @param y Top left corner y coordinate + @param bitmap byte array with monochrome bitmap + @param w Width of bitmap in pixels + @param h Height of bitmap in pixels + @param color 16-bit 5-6-5 Color to draw pixels with + @param bg 16-bit 5-6-5 Color to draw background with +*/ +/**************************************************************************/ +void Adafruit_GFX::drawBitmap(int16_t x, int16_t y, const uint8_t bitmap[], + int16_t w, int16_t h, uint16_t color, + uint16_t bg) { + + int16_t byteWidth = (w + 7) / 8; // Bitmap scanline pad = whole byte + uint8_t b = 0; + + startWrite(); + for (int16_t j = 0; j < h; j++, y++) { + for (int16_t i = 0; i < w; i++) { + if (i & 7) + b <<= 1; + else + b = pgm_read_byte(&bitmap[j * byteWidth + i / 8]); + writePixel(x + i, y, (b & 0x80) ? color : bg); + } + } + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Draw a RAM-resident 1-bit image at the specified (x,y) position, + using the specified foreground color (unset bits are transparent). + @param x Top left corner x coordinate + @param y Top left corner y coordinate + @param bitmap byte array with monochrome bitmap + @param w Width of bitmap in pixels + @param h Height of bitmap in pixels + @param color 16-bit 5-6-5 Color to draw with +*/ +/**************************************************************************/ +void Adafruit_GFX::drawBitmap(int16_t x, int16_t y, uint8_t *bitmap, int16_t w, + int16_t h, uint16_t color) { + + int16_t byteWidth = (w + 7) / 8; // Bitmap scanline pad = whole byte + uint8_t b = 0; + + startWrite(); + for (int16_t j = 0; j < h; j++, y++) { + for (int16_t i = 0; i < w; i++) { + if (i & 7) + b <<= 1; + else + b = bitmap[j * byteWidth + i / 8]; + if (b & 0x80) + writePixel(x + i, y, color); + } + } + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Draw a RAM-resident 1-bit image at the specified (x,y) position, + using the specified foreground (for set bits) and background (unset bits) + colors. + @param x Top left corner x coordinate + @param y Top left corner y coordinate + @param bitmap byte array with monochrome bitmap + @param w Width of bitmap in pixels + @param h Height of bitmap in pixels + @param color 16-bit 5-6-5 Color to draw pixels with + @param bg 16-bit 5-6-5 Color to draw background with +*/ +/**************************************************************************/ +void Adafruit_GFX::drawBitmap(int16_t x, int16_t y, uint8_t *bitmap, int16_t w, + int16_t h, uint16_t color, uint16_t bg) { + + int16_t byteWidth = (w + 7) / 8; // Bitmap scanline pad = whole byte + uint8_t b = 0; + + startWrite(); + for (int16_t j = 0; j < h; j++, y++) { + for (int16_t i = 0; i < w; i++) { + if (i & 7) + b <<= 1; + else + b = bitmap[j * byteWidth + i / 8]; + writePixel(x + i, y, (b & 0x80) ? color : bg); + } + } + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Draw PROGMEM-resident XBitMap Files (*.xbm), exported from GIMP. + Usage: Export from GIMP to *.xbm, rename *.xbm to *.c and open in editor. + C Array can be directly used with this function. + There is no RAM-resident version of this function; if generating bitmaps + in RAM, use the format defined by drawBitmap() and call that instead. + @param x Top left corner x coordinate + @param y Top left corner y coordinate + @param bitmap byte array with monochrome bitmap + @param w Width of bitmap in pixels + @param h Height of bitmap in pixels + @param color 16-bit 5-6-5 Color to draw pixels with +*/ +/**************************************************************************/ +void Adafruit_GFX::drawXBitmap(int16_t x, int16_t y, const uint8_t bitmap[], + int16_t w, int16_t h, uint16_t color) { + + int16_t byteWidth = (w + 7) / 8; // Bitmap scanline pad = whole byte + uint8_t b = 0; + + startWrite(); + for (int16_t j = 0; j < h; j++, y++) { + for (int16_t i = 0; i < w; i++) { + if (i & 7) + b >>= 1; + else + b = pgm_read_byte(&bitmap[j * byteWidth + i / 8]); + // Nearly identical to drawBitmap(), only the bit order + // is reversed here (left-to-right = LSB to MSB): + if (b & 0x01) + writePixel(x + i, y, color); + } + } + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Draw a PROGMEM-resident 8-bit image (grayscale) at the specified + (x,y) pos. Specifically for 8-bit display devices such as IS31FL3731; no + color reduction/expansion is performed. + @param x Top left corner x coordinate + @param y Top left corner y coordinate + @param bitmap byte array with grayscale bitmap + @param w Width of bitmap in pixels + @param h Height of bitmap in pixels +*/ +/**************************************************************************/ +void Adafruit_GFX::drawGrayscaleBitmap(int16_t x, int16_t y, + const uint8_t bitmap[], int16_t w, + int16_t h) { + startWrite(); + for (int16_t j = 0; j < h; j++, y++) { + for (int16_t i = 0; i < w; i++) { + writePixel(x + i, y, (uint8_t)pgm_read_byte(&bitmap[j * w + i])); + } + } + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Draw a RAM-resident 8-bit image (grayscale) at the specified (x,y) + pos. Specifically for 8-bit display devices such as IS31FL3731; no color + reduction/expansion is performed. + @param x Top left corner x coordinate + @param y Top left corner y coordinate + @param bitmap byte array with grayscale bitmap + @param w Width of bitmap in pixels + @param h Height of bitmap in pixels +*/ +/**************************************************************************/ +void Adafruit_GFX::drawGrayscaleBitmap(int16_t x, int16_t y, uint8_t *bitmap, + int16_t w, int16_t h) { + startWrite(); + for (int16_t j = 0; j < h; j++, y++) { + for (int16_t i = 0; i < w; i++) { + writePixel(x + i, y, bitmap[j * w + i]); + } + } + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Draw a PROGMEM-resident 8-bit image (grayscale) with a 1-bit mask + (set bits = opaque, unset bits = clear) at the specified (x,y) position. + BOTH buffers (grayscale and mask) must be PROGMEM-resident. + Specifically for 8-bit display devices such as IS31FL3731; no color + reduction/expansion is performed. + @param x Top left corner x coordinate + @param y Top left corner y coordinate + @param bitmap byte array with grayscale bitmap + @param mask byte array with mask bitmap + @param w Width of bitmap in pixels + @param h Height of bitmap in pixels +*/ +/**************************************************************************/ +void Adafruit_GFX::drawGrayscaleBitmap(int16_t x, int16_t y, + const uint8_t bitmap[], + const uint8_t mask[], int16_t w, + int16_t h) { + int16_t bw = (w + 7) / 8; // Bitmask scanline pad = whole byte + uint8_t b = 0; + startWrite(); + for (int16_t j = 0; j < h; j++, y++) { + for (int16_t i = 0; i < w; i++) { + if (i & 7) + b <<= 1; + else + b = pgm_read_byte(&mask[j * bw + i / 8]); + if (b & 0x80) { + writePixel(x + i, y, (uint8_t)pgm_read_byte(&bitmap[j * w + i])); + } + } + } + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Draw a RAM-resident 8-bit image (grayscale) with a 1-bit mask + (set bits = opaque, unset bits = clear) at the specified (x,y) position. + BOTH buffers (grayscale and mask) must be RAM-residentt, no mix-and-match + Specifically for 8-bit display devices such as IS31FL3731; no color + reduction/expansion is performed. + @param x Top left corner x coordinate + @param y Top left corner y coordinate + @param bitmap byte array with grayscale bitmap + @param mask byte array with mask bitmap + @param w Width of bitmap in pixels + @param h Height of bitmap in pixels +*/ +/**************************************************************************/ +void Adafruit_GFX::drawGrayscaleBitmap(int16_t x, int16_t y, uint8_t *bitmap, + uint8_t *mask, int16_t w, int16_t h) { + int16_t bw = (w + 7) / 8; // Bitmask scanline pad = whole byte + uint8_t b = 0; + startWrite(); + for (int16_t j = 0; j < h; j++, y++) { + for (int16_t i = 0; i < w; i++) { + if (i & 7) + b <<= 1; + else + b = mask[j * bw + i / 8]; + if (b & 0x80) { + writePixel(x + i, y, bitmap[j * w + i]); + } + } + } + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Draw a PROGMEM-resident 16-bit image (RGB 5/6/5) at the specified + (x,y) position. For 16-bit display devices; no color reduction performed. + @param x Top left corner x coordinate + @param y Top left corner y coordinate + @param bitmap byte array with 16-bit color bitmap + @param w Width of bitmap in pixels + @param h Height of bitmap in pixels +*/ +/**************************************************************************/ +void Adafruit_GFX::drawRGBBitmap(int16_t x, int16_t y, const uint16_t bitmap[], + int16_t w, int16_t h) { + startWrite(); + for (int16_t j = 0; j < h; j++, y++) { + for (int16_t i = 0; i < w; i++) { + writePixel(x + i, y, pgm_read_word(&bitmap[j * w + i])); + } + } + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Draw a RAM-resident 16-bit image (RGB 5/6/5) at the specified (x,y) + position. For 16-bit display devices; no color reduction performed. + @param x Top left corner x coordinate + @param y Top left corner y coordinate + @param bitmap byte array with 16-bit color bitmap + @param w Width of bitmap in pixels + @param h Height of bitmap in pixels +*/ +/**************************************************************************/ +void Adafruit_GFX::drawRGBBitmap(int16_t x, int16_t y, uint16_t *bitmap, + int16_t w, int16_t h) { + startWrite(); + for (int16_t j = 0; j < h; j++, y++) { + for (int16_t i = 0; i < w; i++) { + writePixel(x + i, y, bitmap[j * w + i]); + } + } + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Draw a PROGMEM-resident 16-bit image (RGB 5/6/5) with a 1-bit mask + (set bits = opaque, unset bits = clear) at the specified (x,y) position. BOTH + buffers (color and mask) must be PROGMEM-resident. For 16-bit display + devices; no color reduction performed. + @param x Top left corner x coordinate + @param y Top left corner y coordinate + @param bitmap byte array with 16-bit color bitmap + @param mask byte array with monochrome mask bitmap + @param w Width of bitmap in pixels + @param h Height of bitmap in pixels +*/ +/**************************************************************************/ +void Adafruit_GFX::drawRGBBitmap(int16_t x, int16_t y, const uint16_t bitmap[], + const uint8_t mask[], int16_t w, int16_t h) { + int16_t bw = (w + 7) / 8; // Bitmask scanline pad = whole byte + uint8_t b = 0; + startWrite(); + for (int16_t j = 0; j < h; j++, y++) { + for (int16_t i = 0; i < w; i++) { + if (i & 7) + b <<= 1; + else + b = pgm_read_byte(&mask[j * bw + i / 8]); + if (b & 0x80) { + writePixel(x + i, y, pgm_read_word(&bitmap[j * w + i])); + } + } + } + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Draw a RAM-resident 16-bit image (RGB 5/6/5) with a 1-bit mask (set + bits = opaque, unset bits = clear) at the specified (x,y) position. BOTH + buffers (color and mask) must be RAM-resident. For 16-bit display devices; no + color reduction performed. + @param x Top left corner x coordinate + @param y Top left corner y coordinate + @param bitmap byte array with 16-bit color bitmap + @param mask byte array with monochrome mask bitmap + @param w Width of bitmap in pixels + @param h Height of bitmap in pixels +*/ +/**************************************************************************/ +void Adafruit_GFX::drawRGBBitmap(int16_t x, int16_t y, uint16_t *bitmap, + uint8_t *mask, int16_t w, int16_t h) { + int16_t bw = (w + 7) / 8; // Bitmask scanline pad = whole byte + uint8_t b = 0; + startWrite(); + for (int16_t j = 0; j < h; j++, y++) { + for (int16_t i = 0; i < w; i++) { + if (i & 7) + b <<= 1; + else + b = mask[j * bw + i / 8]; + if (b & 0x80) { + writePixel(x + i, y, bitmap[j * w + i]); + } + } + } + endWrite(); +} + +// TEXT- AND CHARACTER-HANDLING FUNCTIONS ---------------------------------- + +// Draw a character +/**************************************************************************/ +/*! + @brief Draw a single character + @param x Bottom left corner x coordinate + @param y Bottom left corner y coordinate + @param c The 8-bit font-indexed character (likely ascii) + @param color 16-bit 5-6-5 Color to draw chraracter with + @param bg 16-bit 5-6-5 Color to fill background with (if same as color, + no background) + @param size Font magnification level, 1 is 'original' size +*/ +/**************************************************************************/ +void Adafruit_GFX::drawChar(int16_t x, int16_t y, unsigned char c, + uint16_t color, uint16_t bg, uint8_t size) { + drawChar(x, y, c, color, bg, size, size); +} + +// Draw a character +/**************************************************************************/ +/*! + @brief Draw a single character + @param x Bottom left corner x coordinate + @param y Bottom left corner y coordinate + @param c The 8-bit font-indexed character (likely ascii) + @param color 16-bit 5-6-5 Color to draw chraracter with + @param bg 16-bit 5-6-5 Color to fill background with (if same as color, + no background) + @param size_x Font magnification level in X-axis, 1 is 'original' size + @param size_y Font magnification level in Y-axis, 1 is 'original' size +*/ +/**************************************************************************/ +void Adafruit_GFX::drawChar(int16_t x, int16_t y, unsigned char c, + uint16_t color, uint16_t bg, uint8_t size_x, + uint8_t size_y) { + + if (!gfxFont) { // 'Classic' built-in font + + if ((x >= _width) || // Clip right + (y >= _height) || // Clip bottom + ((x + 6 * size_x - 1) < 0) || // Clip left + ((y + 8 * size_y - 1) < 0)) // Clip top + return; + + if (!_cp437 && (c >= 176)) + c++; // Handle 'classic' charset behavior + + startWrite(); + for (int8_t i = 0; i < 5; i++) { // Char bitmap = 5 columns + uint8_t line = pgm_read_byte(&font[c * 5 + i]); + for (int8_t j = 0; j < 8; j++, line >>= 1) { + if (line & 1) { + if (size_x == 1 && size_y == 1) + writePixel(x + i, y + j, color); + else + writeFillRect(x + i * size_x, y + j * size_y, size_x, size_y, + color); + } else if (bg != color) { + if (size_x == 1 && size_y == 1) + writePixel(x + i, y + j, bg); + else + writeFillRect(x + i * size_x, y + j * size_y, size_x, size_y, bg); + } + } + } + if (bg != color) { // If opaque, draw vertical line for last column + if (size_x == 1 && size_y == 1) + writeFastVLine(x + 5, y, 8, bg); + else + writeFillRect(x + 5 * size_x, y, size_x, 8 * size_y, bg); + } + endWrite(); + + } 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 -= (uint8_t)pgm_read_byte(&gfxFont->first); + GFXglyph *glyph = pgm_read_glyph_ptr(gfxFont, c); + uint8_t *bitmap = pgm_read_bitmap_ptr(gfxFont); + + uint16_t bo = pgm_read_word(&glyph->bitmapOffset); + uint8_t w = pgm_read_byte(&glyph->width), h = pgm_read_byte(&glyph->height); + int8_t xo = pgm_read_byte(&glyph->xOffset), + yo = pgm_read_byte(&glyph->yOffset); + uint8_t xx, yy, bits = 0, bit = 0; + int16_t xo16 = 0, yo16 = 0; + + if (size_x > 1 || size_y > 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. + + startWrite(); + for (yy = 0; yy < h; yy++) { + for (xx = 0; xx < w; xx++) { + if (!(bit++ & 7)) { + bits = pgm_read_byte(&bitmap[bo++]); + } + if (bits & 0x80) { + if (size_x == 1 && size_y == 1) { + writePixel(x + xo + xx, y + yo + yy, color); + } else { + writeFillRect(x + (xo16 + xx) * size_x, y + (yo16 + yy) * size_y, + size_x, size_y, color); + } + } + bits <<= 1; + } + } + endWrite(); + + } // End classic vs custom font +} +/**************************************************************************/ +/*! + @brief Print one byte/character of data, used to support print() + @param c The 8-bit ascii character to write +*/ +/**************************************************************************/ +size_t Adafruit_GFX::write(uint8_t c) { + if (!gfxFont) { // 'Classic' built-in font + + if (c == '\n') { // Newline? + cursor_x = 0; // Reset x to zero, + cursor_y += textsize_y * 8; // advance y one line + } else if (c != '\r') { // Ignore carriage returns + if (wrap && ((cursor_x + textsize_x * 6) > _width)) { // Off right? + cursor_x = 0; // Reset x to zero, + cursor_y += textsize_y * 8; // advance y one line + } + drawChar(cursor_x, cursor_y, c, textcolor, textbgcolor, textsize_x, + textsize_y); + cursor_x += textsize_x * 6; // Advance x one char + } + + } else { // Custom font + + if (c == '\n') { + cursor_x = 0; + cursor_y += + (int16_t)textsize_y * (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))) { + GFXglyph *glyph = pgm_read_glyph_ptr(gfxFont, c - first); + 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_x * (xo + w)) > _width)) { + cursor_x = 0; + cursor_y += (int16_t)textsize_y * + (uint8_t)pgm_read_byte(&gfxFont->yAdvance); + } + drawChar(cursor_x, cursor_y, c, textcolor, textbgcolor, textsize_x, + textsize_y); + } + cursor_x += + (uint8_t)pgm_read_byte(&glyph->xAdvance) * (int16_t)textsize_x; + } + } + } + return 1; +} + +/**************************************************************************/ +/*! + @brief Set text 'magnification' size. Each increase in s makes 1 pixel + that much bigger. + @param s Desired text size. 1 is default 6x8, 2 is 12x16, 3 is 18x24, etc +*/ +/**************************************************************************/ +void Adafruit_GFX::setTextSize(uint8_t s) { setTextSize(s, s); } + +/**************************************************************************/ +/*! + @brief Set text 'magnification' size. Each increase in s makes 1 pixel + that much bigger. + @param s_x Desired text width magnification level in X-axis. 1 is default + @param s_y Desired text width magnification level in Y-axis. 1 is default +*/ +/**************************************************************************/ +void Adafruit_GFX::setTextSize(uint8_t s_x, uint8_t s_y) { + textsize_x = (s_x > 0) ? s_x : 1; + textsize_y = (s_y > 0) ? s_y : 1; +} + +/**************************************************************************/ +/*! + @brief Set rotation setting for display + @param x 0 thru 3 corresponding to 4 cardinal rotations +*/ +/**************************************************************************/ +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; + } +} + +/**************************************************************************/ +/*! + @brief Set the font to display when print()ing, either custom or default + @param f The GFXfont object, if NULL use built in 6x8 font +*/ +/**************************************************************************/ +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; +} + +/**************************************************************************/ +/*! + @brief Helper to determine size of a character with current font/size. + Broke this out as it's used by both the PROGMEM- and RAM-resident + getTextBounds() functions. + @param c The ASCII character in question + @param x Pointer to x location of character. Value is modified by + this function to advance to next character. + @param y Pointer to y location of character. Value is modified by + this function to advance to next character. + @param minx Pointer to minimum X coordinate, passed in to AND returned + by this function -- this is used to incrementally build a + bounding rectangle for a string. + @param miny Pointer to minimum Y coord, passed in AND returned. + @param maxx Pointer to maximum X coord, passed in AND returned. + @param maxy Pointer to maximum Y coord, passed in AND returned. +*/ +/**************************************************************************/ +void Adafruit_GFX::charBounds(unsigned char c, int16_t *x, int16_t *y, + int16_t *minx, int16_t *miny, int16_t *maxx, + int16_t *maxy) { + + if (gfxFont) { + + if (c == '\n') { // Newline? + *x = 0; // Reset x to zero, advance y by one line + *y += textsize_y * (uint8_t)pgm_read_byte(&gfxFont->yAdvance); + } else if (c != '\r') { // Not a carriage return; is normal char + uint8_t first = pgm_read_byte(&gfxFont->first), + last = pgm_read_byte(&gfxFont->last); + if ((c >= first) && (c <= last)) { // Char present in this font? + GFXglyph *glyph = pgm_read_glyph_ptr(gfxFont, c - first); + uint8_t gw = pgm_read_byte(&glyph->width), + gh = 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); + if (wrap && ((*x + (((int16_t)xo + gw) * textsize_x)) > _width)) { + *x = 0; // Reset x to zero, advance y by one line + *y += textsize_y * (uint8_t)pgm_read_byte(&gfxFont->yAdvance); + } + int16_t tsx = (int16_t)textsize_x, tsy = (int16_t)textsize_y, + x1 = *x + xo * tsx, y1 = *y + yo * tsy, x2 = x1 + gw * tsx - 1, + y2 = y1 + gh * tsy - 1; + if (x1 < *minx) + *minx = x1; + if (y1 < *miny) + *miny = y1; + if (x2 > *maxx) + *maxx = x2; + if (y2 > *maxy) + *maxy = y2; + *x += xa * tsx; + } + } + + } else { // Default font + + if (c == '\n') { // Newline? + *x = 0; // Reset x to zero, + *y += textsize_y * 8; // advance y one line + // min/max x/y unchaged -- that waits for next 'normal' character + } else if (c != '\r') { // Normal char; ignore carriage returns + if (wrap && ((*x + textsize_x * 6) > _width)) { // Off right? + *x = 0; // Reset x to zero, + *y += textsize_y * 8; // advance y one line + } + int x2 = *x + textsize_x * 6 - 1, // Lower-right pixel of char + y2 = *y + textsize_y * 8 - 1; + if (x2 > *maxx) + *maxx = x2; // Track max x, y + if (y2 > *maxy) + *maxy = y2; + if (*x < *minx) + *minx = *x; // Track min x, y + if (*y < *miny) + *miny = *y; + *x += textsize_x * 6; // Advance x one char + } + } +} + +/**************************************************************************/ +/*! + @brief Helper to determine size of a string with current font/size. + Pass string and a cursor position, returns UL corner and W,H. + @param str The ASCII string to measure + @param x The current cursor X + @param y The current cursor Y + @param x1 The boundary X coordinate, returned by function + @param y1 The boundary Y coordinate, returned by function + @param w The boundary width, returned by function + @param h The boundary height, returned by function +*/ +/**************************************************************************/ +void Adafruit_GFX::getTextBounds(const 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 + int16_t minx = 0x7FFF, miny = 0x7FFF, maxx = -1, maxy = -1; // Bound rect + // Bound rect is intentionally initialized inverted, so 1st char sets it + + *x1 = x; // Initial position is value passed in + *y1 = y; + *w = *h = 0; // Initial size is zero + + while ((c = *str++)) { + // charBounds() modifies x/y to advance for each character, + // and min/max x/y are updated to incrementally build bounding rect. + charBounds(c, &x, &y, &minx, &miny, &maxx, &maxy); + } + + if (maxx >= minx) { // If legit string bounds were found... + *x1 = minx; // Update x1 to least X coord, + *w = maxx - minx + 1; // And w to bound rect width + } + if (maxy >= miny) { // Same for height + *y1 = miny; + *h = maxy - miny + 1; + } +} + +/**************************************************************************/ +/*! + @brief Helper to determine size of a string with current font/size. Pass + string and a cursor position, returns UL corner and W,H. + @param str The ascii string to measure (as an arduino String() class) + @param x The current cursor X + @param y The current cursor Y + @param x1 The boundary X coordinate, set by function + @param y1 The boundary Y coordinate, set by function + @param w The boundary width, set by function + @param h The boundary height, set by function +*/ +/**************************************************************************/ +void Adafruit_GFX::getTextBounds(const String &str, int16_t x, int16_t y, + int16_t *x1, int16_t *y1, uint16_t *w, + uint16_t *h) { + if (str.length() != 0) { + getTextBounds(const_cast(str.c_str()), x, y, x1, y1, w, h); + } +} + +/**************************************************************************/ +/*! + @brief Helper to determine size of a PROGMEM string with current + font/size. Pass string and a cursor position, returns UL corner and W,H. + @param str The flash-memory ascii string to measure + @param x The current cursor X + @param y The current cursor Y + @param x1 The boundary X coordinate, set by function + @param y1 The boundary Y coordinate, set by function + @param w The boundary width, set by function + @param h The boundary height, set by function +*/ +/**************************************************************************/ +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; + + int16_t minx = _width, miny = _height, maxx = -1, maxy = -1; + + while ((c = pgm_read_byte(s++))) + charBounds(c, &x, &y, &minx, &miny, &maxx, &maxy); + + if (maxx >= minx) { + *x1 = minx; + *w = maxx - minx + 1; + } + if (maxy >= miny) { + *y1 = miny; + *h = maxy - miny + 1; + } +} + +/**************************************************************************/ +/*! + @brief Invert the display (ideally using built-in hardware command) + @param i True if you want to invert, false to make 'normal' +*/ +/**************************************************************************/ +void Adafruit_GFX::invertDisplay(bool i) { + // Do nothing, must be subclassed if supported by hardware + (void)i; // disable -Wunused-parameter warning +} + +/***************************************************************************/ + +/**************************************************************************/ +/*! + @brief Create a simple drawn button UI element +*/ +/**************************************************************************/ +Adafruit_GFX_Button::Adafruit_GFX_Button(void) { _gfx = 0; } + +/**************************************************************************/ +/*! + @brief Initialize button with our desired color/size/settings + @param gfx Pointer to our display so we can draw to it! + @param x The X coordinate of the center of the button + @param y The Y coordinate of the center of the button + @param w Width of the buttton + @param h Height of the buttton + @param outline Color of the outline (16-bit 5-6-5 standard) + @param fill Color of the button fill (16-bit 5-6-5 standard) + @param textcolor Color of the button label (16-bit 5-6-5 standard) + @param label Ascii string of the text inside the button + @param textsize The font magnification of the label text +*/ +/**************************************************************************/ +// Classic initButton() function: pass center & size +void Adafruit_GFX_Button::initButton(Adafruit_GFX *gfx, int16_t x, int16_t y, + uint16_t w, uint16_t h, uint16_t outline, + uint16_t fill, uint16_t textcolor, + char *label, uint8_t textsize) { + // Tweak arguments and pass to the newer initButtonUL() function... + initButtonUL(gfx, x - (w / 2), y - (h / 2), w, h, outline, fill, textcolor, + label, textsize); +} + +/**************************************************************************/ +/*! + @brief Initialize button with our desired color/size/settings + @param gfx Pointer to our display so we can draw to it! + @param x The X coordinate of the center of the button + @param y The Y coordinate of the center of the button + @param w Width of the buttton + @param h Height of the buttton + @param outline Color of the outline (16-bit 5-6-5 standard) + @param fill Color of the button fill (16-bit 5-6-5 standard) + @param textcolor Color of the button label (16-bit 5-6-5 standard) + @param label Ascii string of the text inside the button + @param textsize_x The font magnification in X-axis of the label text + @param textsize_y The font magnification in Y-axis of the label text +*/ +/**************************************************************************/ +// Classic initButton() function: pass center & size +void Adafruit_GFX_Button::initButton(Adafruit_GFX *gfx, int16_t x, int16_t y, + uint16_t w, uint16_t h, uint16_t outline, + uint16_t fill, uint16_t textcolor, + char *label, uint8_t textsize_x, + uint8_t textsize_y) { + // Tweak arguments and pass to the newer initButtonUL() function... + initButtonUL(gfx, x - (w / 2), y - (h / 2), w, h, outline, fill, textcolor, + label, textsize_x, textsize_y); +} + +/**************************************************************************/ +/*! + @brief Initialize button with our desired color/size/settings, with + upper-left coordinates + @param gfx Pointer to our display so we can draw to it! + @param x1 The X coordinate of the Upper-Left corner of the button + @param y1 The Y coordinate of the Upper-Left corner of the button + @param w Width of the buttton + @param h Height of the buttton + @param outline Color of the outline (16-bit 5-6-5 standard) + @param fill Color of the button fill (16-bit 5-6-5 standard) + @param textcolor Color of the button label (16-bit 5-6-5 standard) + @param label Ascii string of the text inside the button + @param textsize The font magnification of the label text +*/ +/**************************************************************************/ +void Adafruit_GFX_Button::initButtonUL(Adafruit_GFX *gfx, int16_t x1, + int16_t y1, uint16_t w, uint16_t h, + uint16_t outline, uint16_t fill, + uint16_t textcolor, char *label, + uint8_t textsize) { + initButtonUL(gfx, x1, y1, w, h, outline, fill, textcolor, label, textsize, + textsize); +} + +/**************************************************************************/ +/*! + @brief Initialize button with our desired color/size/settings, with + upper-left coordinates + @param gfx Pointer to our display so we can draw to it! + @param x1 The X coordinate of the Upper-Left corner of the button + @param y1 The Y coordinate of the Upper-Left corner of the button + @param w Width of the buttton + @param h Height of the buttton + @param outline Color of the outline (16-bit 5-6-5 standard) + @param fill Color of the button fill (16-bit 5-6-5 standard) + @param textcolor Color of the button label (16-bit 5-6-5 standard) + @param label Ascii string of the text inside the button + @param textsize_x The font magnification in X-axis of the label text + @param textsize_y The font magnification in Y-axis of the label text +*/ +/**************************************************************************/ +void Adafruit_GFX_Button::initButtonUL(Adafruit_GFX *gfx, int16_t x1, + int16_t y1, uint16_t w, uint16_t h, + uint16_t outline, uint16_t fill, + uint16_t textcolor, char *label, + uint8_t textsize_x, uint8_t textsize_y) { + _x1 = x1; + _y1 = y1; + _w = w; + _h = h; + _outlinecolor = outline; + _fillcolor = fill; + _textcolor = textcolor; + _textsize_x = textsize_x; + _textsize_y = textsize_y; + _gfx = gfx; + strncpy(_label, label, 9); + _label[9] = 0; // strncpy does not place a null at the end. + // When 'label' is >9 characters, _label is not terminated. +} + +/**************************************************************************/ +/*! + @brief Draw the button on the screen + @param inverted Whether to draw with fill/text swapped to indicate + 'pressed' +*/ +/**************************************************************************/ +void Adafruit_GFX_Button::drawButton(bool inverted) { + uint16_t fill, outline, text; + + if (!inverted) { + fill = _fillcolor; + outline = _outlinecolor; + text = _textcolor; + } else { + fill = _textcolor; + outline = _outlinecolor; + text = _fillcolor; + } + + uint8_t r = min(_w, _h) / 4; // Corner radius + _gfx->fillRoundRect(_x1, _y1, _w, _h, r, fill); + _gfx->drawRoundRect(_x1, _y1, _w, _h, r, outline); + + _gfx->setCursor(_x1 + (_w / 2) - (strlen(_label) * 3 * _textsize_x), + _y1 + (_h / 2) - (4 * _textsize_y)); + _gfx->setTextColor(text); + _gfx->setTextSize(_textsize_x, _textsize_y); + _gfx->print(_label); +} + +/**************************************************************************/ +/*! + @brief Helper to let us know if a coordinate is within the bounds of the + button + @param x The X coordinate to check + @param y The Y coordinate to check + @returns True if within button graphics outline +*/ +/**************************************************************************/ +bool Adafruit_GFX_Button::contains(int16_t x, int16_t y) { + return ((x >= _x1) && (x < (int16_t)(_x1 + _w)) && (y >= _y1) && + (y < (int16_t)(_y1 + _h))); +} + +/**************************************************************************/ +/*! + @brief Query whether the button was pressed since we last checked state + @returns True if was not-pressed before, now is. +*/ +/**************************************************************************/ +bool Adafruit_GFX_Button::justPressed() { return (currstate && !laststate); } + +/**************************************************************************/ +/*! + @brief Query whether the button was released since we last checked state + @returns True if was pressed before, now is not. +*/ +/**************************************************************************/ +bool Adafruit_GFX_Button::justReleased() { return (!currstate && laststate); } + +// ------------------------------------------------------------------------- + +// GFXcanvas1, GFXcanvas8 and GFXcanvas16 (currently a WIP, don't get too +// comfy with the implementation) provide 1-, 8- and 16-bit offscreen +// canvases, the address of which can be passed to drawBitmap() or +// pushColors() (the latter appears only in a couple of GFX-subclassed TFT +// libraries 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 the others are much more likely to +// require at least a Mega or various recent ARM-type boards (recommended, +// as the text+bitmap draw can be pokey). GFXcanvas1 requires 1 bit per +// pixel (rounded up to nearest byte per scanline), GFXcanvas8 is 1 byte +// per pixel (no scanline pad), and GFXcanvas16 uses 2 bytes per pixel (no +// scanline pad). +// NOT EXTENSIVELY TESTED YET. MAY CONTAIN WORST BUGS KNOWN TO HUMANKIND. + +#ifdef __AVR__ +// Bitmask tables of 0x80>>X and ~(0x80>>X), because X>>Y is slow on AVR +const uint8_t PROGMEM GFXcanvas1::GFXsetBit[] = {0x80, 0x40, 0x20, 0x10, + 0x08, 0x04, 0x02, 0x01}; +const uint8_t PROGMEM GFXcanvas1::GFXclrBit[] = {0x7F, 0xBF, 0xDF, 0xEF, + 0xF7, 0xFB, 0xFD, 0xFE}; +#endif + +/**************************************************************************/ +/*! + @brief Instatiate a GFX 1-bit canvas context for graphics + @param w Display width, in pixels + @param h Display height, in pixels + @param allocate_buffer If true, a buffer is allocated with malloc. If + false, the subclass must initialize the buffer before any drawing operation, + and free it in the destructor. If false (the default), the buffer is + allocated and freed by the library. +*/ +/**************************************************************************/ +GFXcanvas1::GFXcanvas1(uint16_t w, uint16_t h, bool allocate_buffer) + : Adafruit_GFX(w, h), buffer_owned(allocate_buffer) { + if (allocate_buffer) { + uint32_t bytes = ((w + 7) / 8) * h; + if ((buffer = (uint8_t *)malloc(bytes))) { + memset(buffer, 0, bytes); + } + } else { + buffer = nullptr; + } +} + +/**************************************************************************/ +/*! + @brief Delete the canvas, free memory +*/ +/**************************************************************************/ +GFXcanvas1::~GFXcanvas1(void) { + if (buffer && buffer_owned) + free(buffer); +} + +/**************************************************************************/ +/*! + @brief Draw a pixel to the canvas framebuffer + @param x x coordinate + @param y y coordinate + @param color Binary (on or off) color to fill with +*/ +/**************************************************************************/ +void GFXcanvas1::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; + } + + uint8_t *ptr = &buffer[(x / 8) + y * ((WIDTH + 7) / 8)]; +#ifdef __AVR__ + if (color) + *ptr |= pgm_read_byte(&GFXsetBit[x & 7]); + else + *ptr &= pgm_read_byte(&GFXclrBit[x & 7]); +#else + if (color) + *ptr |= 0x80 >> (x & 7); + else + *ptr &= ~(0x80 >> (x & 7)); +#endif + } +} + +/**********************************************************************/ +/*! + @brief Get the pixel color value at a given coordinate + @param x x coordinate + @param y y coordinate + @returns The desired pixel's binary color value, either 0x1 (on) or 0x0 + (off) +*/ +/**********************************************************************/ +bool GFXcanvas1::getPixel(int16_t x, int16_t y) const { + 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; + } + return getRawPixel(x, y); +} + +/**********************************************************************/ +/*! + @brief Get the pixel color value at a given, unrotated coordinate. + This method is intended for hardware drivers to get pixel value + in physical coordinates. + @param x x coordinate + @param y y coordinate + @returns The desired pixel's binary color value, either 0x1 (on) or 0x0 + (off) +*/ +/**********************************************************************/ +bool GFXcanvas1::getRawPixel(int16_t x, int16_t y) const { + if ((x < 0) || (y < 0) || (x >= WIDTH) || (y >= HEIGHT)) + return 0; + if (buffer) { + uint8_t *ptr = &buffer[(x / 8) + y * ((WIDTH + 7) / 8)]; + +#ifdef __AVR__ + return ((*ptr) & pgm_read_byte(&GFXsetBit[x & 7])) != 0; +#else + return ((*ptr) & (0x80 >> (x & 7))) != 0; +#endif + } + return 0; +} + +/**************************************************************************/ +/*! + @brief Fill the framebuffer completely with one color + @param color Binary (on or off) color to fill with +*/ +/**************************************************************************/ +void GFXcanvas1::fillScreen(uint16_t color) { + if (buffer) { + uint32_t bytes = ((WIDTH + 7) / 8) * HEIGHT; + memset(buffer, color ? 0xFF : 0x00, bytes); + } +} + +/**************************************************************************/ +/*! + @brief Speed optimized vertical line drawing + @param x Line horizontal start point + @param y Line vertical start point + @param h Length of vertical line to be drawn, including first point + @param color Color to fill with +*/ +/**************************************************************************/ +void GFXcanvas1::drawFastVLine(int16_t x, int16_t y, int16_t h, + uint16_t color) { + + if (h < 0) { // Convert negative heights to positive equivalent + h *= -1; + y -= h - 1; + if (y < 0) { + h += y; + y = 0; + } + } + + // Edge rejection (no-draw if totally off canvas) + if ((x < 0) || (x >= width()) || (y >= height()) || ((y + h - 1) < 0)) { + return; + } + + if (y < 0) { // Clip top + h += y; + y = 0; + } + if (y + h > height()) { // Clip bottom + h = height() - y; + } + + if (getRotation() == 0) { + drawFastRawVLine(x, y, h, color); + } else if (getRotation() == 1) { + int16_t t = x; + x = WIDTH - 1 - y; + y = t; + x -= h - 1; + drawFastRawHLine(x, y, h, color); + } else if (getRotation() == 2) { + x = WIDTH - 1 - x; + y = HEIGHT - 1 - y; + + y -= h - 1; + drawFastRawVLine(x, y, h, color); + } else if (getRotation() == 3) { + int16_t t = x; + x = y; + y = HEIGHT - 1 - t; + drawFastRawHLine(x, y, h, color); + } +} + +/**************************************************************************/ +/*! + @brief Speed optimized horizontal line drawing + @param x Line horizontal start point + @param y Line vertical start point + @param w Length of horizontal line to be drawn, including first point + @param color Color to fill with +*/ +/**************************************************************************/ +void GFXcanvas1::drawFastHLine(int16_t x, int16_t y, int16_t w, + uint16_t color) { + if (w < 0) { // Convert negative widths to positive equivalent + w *= -1; + x -= w - 1; + if (x < 0) { + w += x; + x = 0; + } + } + + // Edge rejection (no-draw if totally off canvas) + if ((y < 0) || (y >= height()) || (x >= width()) || ((x + w - 1) < 0)) { + return; + } + + if (x < 0) { // Clip left + w += x; + x = 0; + } + if (x + w >= width()) { // Clip right + w = width() - x; + } + + if (getRotation() == 0) { + drawFastRawHLine(x, y, w, color); + } else if (getRotation() == 1) { + int16_t t = x; + x = WIDTH - 1 - y; + y = t; + drawFastRawVLine(x, y, w, color); + } else if (getRotation() == 2) { + x = WIDTH - 1 - x; + y = HEIGHT - 1 - y; + + x -= w - 1; + drawFastRawHLine(x, y, w, color); + } else if (getRotation() == 3) { + int16_t t = x; + x = y; + y = HEIGHT - 1 - t; + y -= w - 1; + drawFastRawVLine(x, y, w, color); + } +} + +/**************************************************************************/ +/*! + @brief Speed optimized vertical line drawing into the raw canvas buffer + @param x Line horizontal start point + @param y Line vertical start point + @param h length of vertical line to be drawn, including first point + @param color Binary (on or off) color to fill with +*/ +/**************************************************************************/ +void GFXcanvas1::drawFastRawVLine(int16_t x, int16_t y, int16_t h, + uint16_t color) { + // x & y already in raw (rotation 0) coordinates, no need to transform. + int16_t row_bytes = ((WIDTH + 7) / 8); + uint8_t *ptr = &buffer[(x / 8) + y * row_bytes]; + + if (color > 0) { +#ifdef __AVR__ + uint8_t bit_mask = pgm_read_byte(&GFXsetBit[x & 7]); +#else + uint8_t bit_mask = (0x80 >> (x & 7)); +#endif + for (int16_t i = 0; i < h; i++) { + *ptr |= bit_mask; + ptr += row_bytes; + } + } else { +#ifdef __AVR__ + uint8_t bit_mask = pgm_read_byte(&GFXclrBit[x & 7]); +#else + uint8_t bit_mask = ~(0x80 >> (x & 7)); +#endif + for (int16_t i = 0; i < h; i++) { + *ptr &= bit_mask; + ptr += row_bytes; + } + } +} + +/**************************************************************************/ +/*! + @brief Speed optimized horizontal line drawing into the raw canvas buffer + @param x Line horizontal start point + @param y Line vertical start point + @param w length of horizontal line to be drawn, including first point + @param color Binary (on or off) color to fill with +*/ +/**************************************************************************/ +void GFXcanvas1::drawFastRawHLine(int16_t x, int16_t y, int16_t w, + uint16_t color) { + // x & y already in raw (rotation 0) coordinates, no need to transform. + int16_t rowBytes = ((WIDTH + 7) / 8); + uint8_t *ptr = &buffer[(x / 8) + y * rowBytes]; + size_t remainingWidthBits = w; + + // check to see if first byte needs to be partially filled + if ((x & 7) > 0) { + // create bit mask for first byte + uint8_t startByteBitMask = 0x00; + for (int8_t i = (x & 7); ((i < 8) && (remainingWidthBits > 0)); i++) { +#ifdef __AVR__ + startByteBitMask |= pgm_read_byte(&GFXsetBit[i]); +#else + startByteBitMask |= (0x80 >> i); +#endif + remainingWidthBits--; + } + if (color > 0) { + *ptr |= startByteBitMask; + } else { + *ptr &= ~startByteBitMask; + } + + ptr++; + } + + // do the next remainingWidthBits bits + if (remainingWidthBits > 0) { + size_t remainingWholeBytes = remainingWidthBits / 8; + size_t lastByteBits = remainingWidthBits % 8; + uint8_t wholeByteColor = color > 0 ? 0xFF : 0x00; + + memset(ptr, wholeByteColor, remainingWholeBytes); + + if (lastByteBits > 0) { + uint8_t lastByteBitMask = 0x00; + for (size_t i = 0; i < lastByteBits; i++) { +#ifdef __AVR__ + lastByteBitMask |= pgm_read_byte(&GFXsetBit[i]); +#else + lastByteBitMask |= (0x80 >> i); +#endif + } + ptr += remainingWholeBytes; + + if (color > 0) { + *ptr |= lastByteBitMask; + } else { + *ptr &= ~lastByteBitMask; + } + } + } +} + +/**************************************************************************/ +/*! + @brief Instatiate a GFX 8-bit canvas context for graphics + @param w Display width, in pixels + @param h Display height, in pixels + @param allocate_buffer If true, a buffer is allocated with malloc. If + false, the subclass must initialize the buffer before any drawing operation, + and free it in the destructor. If false (the default), the buffer is + allocated and freed by the library. +*/ +/**************************************************************************/ +GFXcanvas8::GFXcanvas8(uint16_t w, uint16_t h, bool allocate_buffer) + : Adafruit_GFX(w, h), buffer_owned(allocate_buffer) { + if (allocate_buffer) { + uint32_t bytes = w * h; + if ((buffer = (uint8_t *)malloc(bytes))) { + memset(buffer, 0, bytes); + } + } else + buffer = nullptr; +} + +/**************************************************************************/ +/*! + @brief Delete the canvas, free memory +*/ +/**************************************************************************/ +GFXcanvas8::~GFXcanvas8(void) { + if (buffer && buffer_owned) + free(buffer); +} + +/**************************************************************************/ +/*! + @brief Draw a pixel to the canvas framebuffer + @param x x coordinate + @param y y coordinate + @param color 8-bit Color to fill with. Only lower byte of uint16_t is used. +*/ +/**************************************************************************/ +void GFXcanvas8::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; + } +} + +/**********************************************************************/ +/*! + @brief Get the pixel color value at a given coordinate + @param x x coordinate + @param y y coordinate + @returns The desired pixel's 8-bit color value +*/ +/**********************************************************************/ +uint8_t GFXcanvas8::getPixel(int16_t x, int16_t y) const { + 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; + } + return getRawPixel(x, y); +} + +/**********************************************************************/ +/*! + @brief Get the pixel color value at a given, unrotated coordinate. + This method is intended for hardware drivers to get pixel value + in physical coordinates. + @param x x coordinate + @param y y coordinate + @returns The desired pixel's 8-bit color value +*/ +/**********************************************************************/ +uint8_t GFXcanvas8::getRawPixel(int16_t x, int16_t y) const { + if ((x < 0) || (y < 0) || (x >= WIDTH) || (y >= HEIGHT)) + return 0; + if (buffer) { + return buffer[x + y * WIDTH]; + } + return 0; +} + +/**************************************************************************/ +/*! + @brief Fill the framebuffer completely with one color + @param color 8-bit Color to fill with. Only lower byte of uint16_t is used. +*/ +/**************************************************************************/ +void GFXcanvas8::fillScreen(uint16_t color) { + if (buffer) { + memset(buffer, color, WIDTH * HEIGHT); + } +} + +/**************************************************************************/ +/*! + @brief Speed optimized vertical line drawing + @param x Line horizontal start point + @param y Line vertical start point + @param h Length of vertical line to be drawn, including first point + @param color 8-bit Color to fill with. Only lower byte of uint16_t is + used. +*/ +/**************************************************************************/ +void GFXcanvas8::drawFastVLine(int16_t x, int16_t y, int16_t h, + uint16_t color) { + if (h < 0) { // Convert negative heights to positive equivalent + h *= -1; + y -= h - 1; + if (y < 0) { + h += y; + y = 0; + } + } + + // Edge rejection (no-draw if totally off canvas) + if ((x < 0) || (x >= width()) || (y >= height()) || ((y + h - 1) < 0)) { + return; + } + + if (y < 0) { // Clip top + h += y; + y = 0; + } + if (y + h > height()) { // Clip bottom + h = height() - y; + } + + if (getRotation() == 0) { + drawFastRawVLine(x, y, h, color); + } else if (getRotation() == 1) { + int16_t t = x; + x = WIDTH - 1 - y; + y = t; + x -= h - 1; + drawFastRawHLine(x, y, h, color); + } else if (getRotation() == 2) { + x = WIDTH - 1 - x; + y = HEIGHT - 1 - y; + + y -= h - 1; + drawFastRawVLine(x, y, h, color); + } else if (getRotation() == 3) { + int16_t t = x; + x = y; + y = HEIGHT - 1 - t; + drawFastRawHLine(x, y, h, color); + } +} + +/**************************************************************************/ +/*! + @brief Speed optimized horizontal line drawing + @param x Line horizontal start point + @param y Line vertical start point + @param w Length of horizontal line to be drawn, including 1st point + @param color 8-bit Color to fill with. Only lower byte of uint16_t is + used. +*/ +/**************************************************************************/ +void GFXcanvas8::drawFastHLine(int16_t x, int16_t y, int16_t w, + uint16_t color) { + + if (w < 0) { // Convert negative widths to positive equivalent + w *= -1; + x -= w - 1; + if (x < 0) { + w += x; + x = 0; + } + } + + // Edge rejection (no-draw if totally off canvas) + if ((y < 0) || (y >= height()) || (x >= width()) || ((x + w - 1) < 0)) { + return; + } + + if (x < 0) { // Clip left + w += x; + x = 0; + } + if (x + w >= width()) { // Clip right + w = width() - x; + } + + if (getRotation() == 0) { + drawFastRawHLine(x, y, w, color); + } else if (getRotation() == 1) { + int16_t t = x; + x = WIDTH - 1 - y; + y = t; + drawFastRawVLine(x, y, w, color); + } else if (getRotation() == 2) { + x = WIDTH - 1 - x; + y = HEIGHT - 1 - y; + + x -= w - 1; + drawFastRawHLine(x, y, w, color); + } else if (getRotation() == 3) { + int16_t t = x; + x = y; + y = HEIGHT - 1 - t; + y -= w - 1; + drawFastRawVLine(x, y, w, color); + } +} + +/**************************************************************************/ +/*! + @brief Speed optimized vertical line drawing into the raw canvas buffer + @param x Line horizontal start point + @param y Line vertical start point + @param h length of vertical line to be drawn, including first point + @param color 8-bit Color to fill with. Only lower byte of uint16_t is + used. +*/ +/**************************************************************************/ +void GFXcanvas8::drawFastRawVLine(int16_t x, int16_t y, int16_t h, + uint16_t color) { + // x & y already in raw (rotation 0) coordinates, no need to transform. + uint8_t *buffer_ptr = buffer + y * WIDTH + x; + for (int16_t i = 0; i < h; i++) { + (*buffer_ptr) = color; + buffer_ptr += WIDTH; + } +} + +/**************************************************************************/ +/*! + @brief Speed optimized horizontal line drawing into the raw canvas buffer + @param x Line horizontal start point + @param y Line vertical start point + @param w length of horizontal line to be drawn, including first point + @param color 8-bit Color to fill with. Only lower byte of uint16_t is + used. +*/ +/**************************************************************************/ +void GFXcanvas8::drawFastRawHLine(int16_t x, int16_t y, int16_t w, + uint16_t color) { + // x & y already in raw (rotation 0) coordinates, no need to transform. + memset(buffer + y * WIDTH + x, color, w); +} + +/**************************************************************************/ +/*! + @brief Instatiate a GFX 16-bit canvas context for graphics + @param w Display width, in pixels + @param h Display height, in pixels + @param allocate_buffer If true, a buffer is allocated with malloc. If + false, the subclass must initialize the buffer before any drawing operation, + and free it in the destructor. If false (the default), the buffer is + allocated and freed by the library. +*/ +/**************************************************************************/ +GFXcanvas16::GFXcanvas16(uint16_t w, uint16_t h, bool allocate_buffer) + : Adafruit_GFX(w, h), buffer_owned(allocate_buffer) { + if (allocate_buffer) { + uint32_t bytes = w * h * 2; + if ((buffer = (uint16_t *)malloc(bytes))) { + memset(buffer, 0, bytes); + } + } else { + buffer = nullptr; + } +} + +/**************************************************************************/ +/*! + @brief Delete the canvas, free memory +*/ +/**************************************************************************/ +GFXcanvas16::~GFXcanvas16(void) { + if (buffer && buffer_owned) + free(buffer); +} + +/**************************************************************************/ +/*! + @brief Draw a pixel to the canvas framebuffer + @param x x coordinate + @param y y coordinate + @param color 16-bit 5-6-5 Color to fill with +*/ +/**************************************************************************/ +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; + } +} + +/**********************************************************************/ +/*! + @brief Get the pixel color value at a given coordinate + @param x x coordinate + @param y y coordinate + @returns The desired pixel's 16-bit 5-6-5 color value +*/ +/**********************************************************************/ +uint16_t GFXcanvas16::getPixel(int16_t x, int16_t y) const { + 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; + } + return getRawPixel(x, y); +} + +/**********************************************************************/ +/*! + @brief Get the pixel color value at a given, unrotated coordinate. + This method is intended for hardware drivers to get pixel value + in physical coordinates. + @param x x coordinate + @param y y coordinate + @returns The desired pixel's 16-bit 5-6-5 color value +*/ +/**********************************************************************/ +uint16_t GFXcanvas16::getRawPixel(int16_t x, int16_t y) const { + if ((x < 0) || (y < 0) || (x >= WIDTH) || (y >= HEIGHT)) + return 0; + if (buffer) { + return buffer[x + y * WIDTH]; + } + return 0; +} + +/**************************************************************************/ +/*! + @brief Fill the framebuffer completely with one color + @param color 16-bit 5-6-5 Color to fill with +*/ +/**************************************************************************/ +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 { + uint32_t i, pixels = WIDTH * HEIGHT; + for (i = 0; i < pixels; i++) + buffer[i] = color; + } + } +} + +/**************************************************************************/ +/*! + @brief Reverses the "endian-ness" of each 16-bit pixel within the + canvas; little-endian to big-endian, or big-endian to little. + Most microcontrollers (such as SAMD) are little-endian, while + most displays tend toward big-endianness. All the drawing + functions (including RGB bitmap drawing) take care of this + automatically, but some specialized code (usually involving + DMA) can benefit from having pixel data already in the + display-native order. Note that this does NOT convert to a + SPECIFIC endian-ness, it just flips the bytes within each word. +*/ +/**************************************************************************/ +void GFXcanvas16::byteSwap(void) { + if (buffer) { + uint32_t i, pixels = WIDTH * HEIGHT; + for (i = 0; i < pixels; i++) + buffer[i] = __builtin_bswap16(buffer[i]); + } +} + +/**************************************************************************/ +/*! + @brief Speed optimized vertical line drawing + @param x Line horizontal start point + @param y Line vertical start point + @param h length of vertical line to be drawn, including first point + @param color color 16-bit 5-6-5 Color to draw line with +*/ +/**************************************************************************/ +void GFXcanvas16::drawFastVLine(int16_t x, int16_t y, int16_t h, + uint16_t color) { + if (h < 0) { // Convert negative heights to positive equivalent + h *= -1; + y -= h - 1; + if (y < 0) { + h += y; + y = 0; + } + } + + // Edge rejection (no-draw if totally off canvas) + if ((x < 0) || (x >= width()) || (y >= height()) || ((y + h - 1) < 0)) { + return; + } + + if (y < 0) { // Clip top + h += y; + y = 0; + } + if (y + h > height()) { // Clip bottom + h = height() - y; + } + + if (getRotation() == 0) { + drawFastRawVLine(x, y, h, color); + } else if (getRotation() == 1) { + int16_t t = x; + x = WIDTH - 1 - y; + y = t; + x -= h - 1; + drawFastRawHLine(x, y, h, color); + } else if (getRotation() == 2) { + x = WIDTH - 1 - x; + y = HEIGHT - 1 - y; + + y -= h - 1; + drawFastRawVLine(x, y, h, color); + } else if (getRotation() == 3) { + int16_t t = x; + x = y; + y = HEIGHT - 1 - t; + drawFastRawHLine(x, y, h, color); + } +} + +/**************************************************************************/ +/*! + @brief Speed optimized horizontal line drawing + @param x Line horizontal start point + @param y Line vertical start point + @param w Length of horizontal line to be drawn, including 1st point + @param color Color 16-bit 5-6-5 Color to draw line with +*/ +/**************************************************************************/ +void GFXcanvas16::drawFastHLine(int16_t x, int16_t y, int16_t w, + uint16_t color) { + if (w < 0) { // Convert negative widths to positive equivalent + w *= -1; + x -= w - 1; + if (x < 0) { + w += x; + x = 0; + } + } + + // Edge rejection (no-draw if totally off canvas) + if ((y < 0) || (y >= height()) || (x >= width()) || ((x + w - 1) < 0)) { + return; + } + + if (x < 0) { // Clip left + w += x; + x = 0; + } + if (x + w >= width()) { // Clip right + w = width() - x; + } + + if (getRotation() == 0) { + drawFastRawHLine(x, y, w, color); + } else if (getRotation() == 1) { + int16_t t = x; + x = WIDTH - 1 - y; + y = t; + drawFastRawVLine(x, y, w, color); + } else if (getRotation() == 2) { + x = WIDTH - 1 - x; + y = HEIGHT - 1 - y; + + x -= w - 1; + drawFastRawHLine(x, y, w, color); + } else if (getRotation() == 3) { + int16_t t = x; + x = y; + y = HEIGHT - 1 - t; + y -= w - 1; + drawFastRawVLine(x, y, w, color); + } +} + +/**************************************************************************/ +/*! + @brief Speed optimized vertical line drawing into the raw canvas buffer + @param x Line horizontal start point + @param y Line vertical start point + @param h length of vertical line to be drawn, including first point + @param color color 16-bit 5-6-5 Color to draw line with +*/ +/**************************************************************************/ +void GFXcanvas16::drawFastRawVLine(int16_t x, int16_t y, int16_t h, + uint16_t color) { + // x & y already in raw (rotation 0) coordinates, no need to transform. + uint16_t *buffer_ptr = buffer + y * WIDTH + x; + for (int16_t i = 0; i < h; i++) { + (*buffer_ptr) = color; + buffer_ptr += WIDTH; + } +} + +/**************************************************************************/ +/*! + @brief Speed optimized horizontal line drawing into the raw canvas buffer + @param x Line horizontal start point + @param y Line vertical start point + @param w length of horizontal line to be drawn, including first point + @param color color 16-bit 5-6-5 Color to draw line with +*/ +/**************************************************************************/ +void GFXcanvas16::drawFastRawHLine(int16_t x, int16_t y, int16_t w, + uint16_t color) { + // x & y already in raw (rotation 0) coordinates, no need to transform. + uint32_t buffer_index = y * WIDTH + x; + for (uint32_t i = buffer_index; i < buffer_index + w; i++) { + buffer[i] = color; + } +} diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Adafruit_GFX.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Adafruit_GFX.h new file mode 100644 index 0000000..dd9dc0d --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Adafruit_GFX.h @@ -0,0 +1,406 @@ +#ifndef _ADAFRUIT_GFX_H +#define _ADAFRUIT_GFX_H + +#if ARDUINO >= 100 +#include "Arduino.h" +#include "Print.h" +#else +#include "WProgram.h" +#endif +#include "gfxfont.h" + +#include +#include + +/// A generic graphics superclass that can handle all sorts of drawing. At a +/// minimum you can subclass and provide drawPixel(). At a maximum you can do a +/// ton of overriding to optimize. Used for any/all Adafruit displays! +class Adafruit_GFX : public Print { + +public: + Adafruit_GFX(int16_t w, int16_t h); // Constructor + + /**********************************************************************/ + /*! + @brief Draw to the screen/framebuffer/etc. + Must be overridden in subclass. + @param x X coordinate in pixels + @param y Y coordinate in pixels + @param color 16-bit pixel color. + */ + /**********************************************************************/ + virtual void drawPixel(int16_t x, int16_t y, uint16_t color) = 0; + + // TRANSACTION API / CORE DRAW API + // These MAY be overridden by the subclass to provide device-specific + // optimized code. Otherwise 'generic' versions are used. + virtual void startWrite(void); + virtual void writePixel(int16_t x, int16_t y, uint16_t color); + virtual void writeFillRect(int16_t x, int16_t y, int16_t w, int16_t h, + uint16_t color); + virtual void writeFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color); + virtual void writeFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color); + virtual void writeLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, + uint16_t color); + virtual void endWrite(void); + + // CONTROL API + // These MAY be overridden by the subclass to provide device-specific + // optimized code. Otherwise 'generic' versions are used. + virtual void setRotation(uint8_t r); + virtual void invertDisplay(bool i); + + // BASIC DRAW API + // These MAY be overridden by the subclass to provide device-specific + // optimized code. Otherwise 'generic' versions are used. + + // It's good to implement those, even if using transaction API + 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); + virtual void fillRect(int16_t x, int16_t y, int16_t w, int16_t h, + uint16_t color); + virtual void fillScreen(uint16_t color); + // Optional and probably not necessary to change + virtual void drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, + uint16_t color); + virtual void drawRect(int16_t x, int16_t y, int16_t w, int16_t h, + uint16_t color); + + // These exist only with Adafruit_GFX (no subclass overrides) + void drawCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color); + void drawCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername, + uint16_t color); + void fillCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color); + void fillCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername, + int16_t delta, uint16_t color); + void drawEllipse(int16_t x0, int16_t y0, int16_t rw, int16_t rh, + uint16_t color); + void fillEllipse(int16_t x0, int16_t y0, int16_t rw, int16_t rh, + uint16_t color); + void drawTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, + int16_t y2, uint16_t color); + void fillTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, + int16_t y2, uint16_t color); + void drawRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h, + int16_t radius, uint16_t color); + void fillRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h, + int16_t radius, uint16_t color); + void drawRotatedRect(int16_t cenX, int16_t cenY, int16_t w, int16_t h, + int16_t angleDeg, uint16_t color); + void fillRotatedRect(int16_t cenX, int16_t cenY, int16_t w, int16_t h, + int16_t angleDeg, uint16_t color); + void rotatePoint(int16_t &x0, int16_t &y0, int16_t angleDeg); + void drawBitmap(int16_t x, int16_t y, const uint8_t bitmap[], int16_t w, + int16_t h, uint16_t color); + void drawBitmap(int16_t x, int16_t y, const uint8_t bitmap[], int16_t w, + int16_t h, uint16_t color, uint16_t bg); + void drawBitmap(int16_t x, int16_t y, uint8_t *bitmap, int16_t w, int16_t h, + uint16_t color); + void drawBitmap(int16_t x, int16_t y, uint8_t *bitmap, int16_t w, int16_t h, + uint16_t color, uint16_t bg); + void drawXBitmap(int16_t x, int16_t y, const uint8_t bitmap[], int16_t w, + int16_t h, uint16_t color); + void drawGrayscaleBitmap(int16_t x, int16_t y, const uint8_t bitmap[], + int16_t w, int16_t h); + void drawGrayscaleBitmap(int16_t x, int16_t y, uint8_t *bitmap, int16_t w, + int16_t h); + void drawGrayscaleBitmap(int16_t x, int16_t y, const uint8_t bitmap[], + const uint8_t mask[], int16_t w, int16_t h); + void drawGrayscaleBitmap(int16_t x, int16_t y, uint8_t *bitmap, uint8_t *mask, + int16_t w, int16_t h); + void drawRGBBitmap(int16_t x, int16_t y, const uint16_t bitmap[], int16_t w, + int16_t h); + void drawRGBBitmap(int16_t x, int16_t y, uint16_t *bitmap, int16_t w, + int16_t h); + void drawRGBBitmap(int16_t x, int16_t y, const uint16_t bitmap[], + const uint8_t mask[], int16_t w, int16_t h); + void drawRGBBitmap(int16_t x, int16_t y, uint16_t *bitmap, uint8_t *mask, + int16_t w, int16_t h); + void drawChar(int16_t x, int16_t y, unsigned char c, uint16_t color, + uint16_t bg, uint8_t size); + void drawChar(int16_t x, int16_t y, unsigned char c, uint16_t color, + uint16_t bg, uint8_t size_x, uint8_t size_y); + void getTextBounds(const char *string, int16_t x, int16_t y, int16_t *x1, + int16_t *y1, uint16_t *w, uint16_t *h); + void getTextBounds(const __FlashStringHelper *s, int16_t x, int16_t y, + int16_t *x1, int16_t *y1, uint16_t *w, uint16_t *h); + void getTextBounds(const String &str, int16_t x, int16_t y, int16_t *x1, + int16_t *y1, uint16_t *w, uint16_t *h); + void setTextSize(uint8_t s); + void setTextSize(uint8_t sx, uint8_t sy); + void setFont(const GFXfont *f = NULL); + + /**********************************************************************/ + /*! + @brief Set text cursor location + @param x X coordinate in pixels + @param y Y coordinate in pixels + */ + /**********************************************************************/ + void setCursor(int16_t x, int16_t y) { + cursor_x = x; + cursor_y = y; + } + + /**********************************************************************/ + /*! + @brief Set text font color with transparant background + @param c 16-bit 5-6-5 Color to draw text with + @note For 'transparent' background, background and foreground + are set to same color rather than using a separate flag. + */ + /**********************************************************************/ + void setTextColor(uint16_t c) { textcolor = textbgcolor = c; } + + /**********************************************************************/ + /*! + @brief Set text font color with custom background color + @param c 16-bit 5-6-5 Color to draw text with + @param bg 16-bit 5-6-5 Color to draw background/fill with + */ + /**********************************************************************/ + void setTextColor(uint16_t c, uint16_t bg) { + textcolor = c; + textbgcolor = bg; + } + + /**********************************************************************/ + /*! + @brief Set whether text that is too long for the screen width should + automatically wrap around to the next line (else clip right). + @param w true for wrapping, false for clipping + */ + /**********************************************************************/ + void setTextWrap(bool w) { wrap = w; } + + /**********************************************************************/ + /*! + @brief 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. + @param x true = enable (new behavior), false = disable (old behavior) + */ + /**********************************************************************/ + void cp437(bool x = true) { _cp437 = x; } + + using Print::write; +#if ARDUINO >= 100 + virtual size_t write(uint8_t); +#else + virtual void write(uint8_t); +#endif + + /************************************************************************/ + /*! + @brief Get width of the display, accounting for current rotation + @returns Width in pixels + */ + /************************************************************************/ + int16_t width(void) const { return _width; }; + + /************************************************************************/ + /*! + @brief Get height of the display, accounting for current rotation + @returns Height in pixels + */ + /************************************************************************/ + int16_t height(void) const { return _height; } + + /************************************************************************/ + /*! + @brief Get rotation setting for display + @returns 0 thru 3 corresponding to 4 cardinal rotations + */ + /************************************************************************/ + uint8_t getRotation(void) const { return rotation; } + + // get current cursor position (get rotation safe maximum values, + // using: width() for x, height() for y) + /************************************************************************/ + /*! + @brief Get text cursor X location + @returns X coordinate in pixels + */ + /************************************************************************/ + int16_t getCursorX(void) const { return cursor_x; } + + /************************************************************************/ + /*! + @brief Get text cursor Y location + @returns Y coordinate in pixels + */ + /************************************************************************/ + int16_t getCursorY(void) const { return cursor_y; }; + +protected: + void charBounds(unsigned char c, int16_t *x, int16_t *y, int16_t *minx, + int16_t *miny, int16_t *maxx, int16_t *maxy); + int16_t WIDTH; ///< This is the 'raw' display width - never changes + int16_t HEIGHT; ///< This is the 'raw' display height - never changes + int16_t _width; ///< Display width as modified by current rotation + int16_t _height; ///< Display height as modified by current rotation + int16_t cursor_x; ///< x location to start print()ing text + int16_t cursor_y; ///< y location to start print()ing text + uint16_t textcolor; ///< 16-bit background color for print() + uint16_t textbgcolor; ///< 16-bit text color for print() + uint8_t textsize_x; ///< Desired magnification in X-axis of text to print() + uint8_t textsize_y; ///< Desired magnification in Y-axis of text to print() + uint8_t rotation; ///< Display rotation (0 thru 3) + bool wrap; ///< If set, 'wrap' text at right edge of display + bool _cp437; ///< If set, use correct CP437 charset (default is off) + GFXfont *gfxFont; ///< Pointer to special font +}; + +/// A simple drawn button UI element +class Adafruit_GFX_Button { + +public: + Adafruit_GFX_Button(void); + // "Classic" initButton() uses center & size + void initButton(Adafruit_GFX *gfx, int16_t x, int16_t y, uint16_t w, + uint16_t h, uint16_t outline, uint16_t fill, + uint16_t textcolor, char *label, uint8_t textsize); + void initButton(Adafruit_GFX *gfx, int16_t x, int16_t y, uint16_t w, + uint16_t h, uint16_t outline, uint16_t fill, + uint16_t textcolor, char *label, uint8_t textsize_x, + uint8_t textsize_y); + // New/alt initButton() uses upper-left corner & size + void initButtonUL(Adafruit_GFX *gfx, int16_t x1, int16_t y1, uint16_t w, + uint16_t h, uint16_t outline, uint16_t fill, + uint16_t textcolor, char *label, uint8_t textsize); + void initButtonUL(Adafruit_GFX *gfx, int16_t x1, int16_t y1, uint16_t w, + uint16_t h, uint16_t outline, uint16_t fill, + uint16_t textcolor, char *label, uint8_t textsize_x, + uint8_t textsize_y); + void drawButton(bool inverted = false); + bool contains(int16_t x, int16_t y); + + /**********************************************************************/ + /*! + @brief Sets button state, should be done by some touch function + @param p True for pressed, false for not. + */ + /**********************************************************************/ + void press(bool p) { + laststate = currstate; + currstate = p; + } + + bool justPressed(); + bool justReleased(); + + /**********************************************************************/ + /*! + @brief Query whether the button is currently pressed + @returns True if pressed + */ + /**********************************************************************/ + bool isPressed(void) { return currstate; }; + +private: + Adafruit_GFX *_gfx; + int16_t _x1, _y1; // Coordinates of top-left corner + uint16_t _w, _h; + uint8_t _textsize_x; + uint8_t _textsize_y; + uint16_t _outlinecolor, _fillcolor, _textcolor; + char _label[10]; + + bool currstate, laststate; +}; + +/// A GFX 1-bit canvas context for graphics +class GFXcanvas1 : public Adafruit_GFX { +public: + GFXcanvas1(uint16_t w, uint16_t h, bool allocate_buffer = true); + ~GFXcanvas1(void); + void drawPixel(int16_t x, int16_t y, uint16_t color); + void fillScreen(uint16_t color); + void drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color); + void drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color); + bool getPixel(int16_t x, int16_t y) const; + /**********************************************************************/ + /*! + @brief Get a pointer to the internal buffer memory + @returns A pointer to the allocated buffer + */ + /**********************************************************************/ + uint8_t *getBuffer(void) const { return buffer; } + +protected: + bool getRawPixel(int16_t x, int16_t y) const; + void drawFastRawVLine(int16_t x, int16_t y, int16_t h, uint16_t color); + void drawFastRawHLine(int16_t x, int16_t y, int16_t w, uint16_t color); + uint8_t *buffer; ///< Raster data: no longer private, allow subclass access + bool buffer_owned; ///< If true, destructor will free buffer, else it will do + ///< nothing + +private: +#ifdef __AVR__ + // Bitmask tables of 0x80>>X and ~(0x80>>X), because X>>Y is slow on AVR + static const uint8_t PROGMEM GFXsetBit[], GFXclrBit[]; +#endif +}; + +/// A GFX 8-bit canvas context for graphics +class GFXcanvas8 : public Adafruit_GFX { +public: + GFXcanvas8(uint16_t w, uint16_t h, bool allocate_buffer = true); + ~GFXcanvas8(void); + void drawPixel(int16_t x, int16_t y, uint16_t color); + void fillScreen(uint16_t color); + void drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color); + void drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color); + uint8_t getPixel(int16_t x, int16_t y) const; + /**********************************************************************/ + /*! + @brief Get a pointer to the internal buffer memory + @returns A pointer to the allocated buffer + */ + /**********************************************************************/ + uint8_t *getBuffer(void) const { return buffer; } + +protected: + uint8_t getRawPixel(int16_t x, int16_t y) const; + void drawFastRawVLine(int16_t x, int16_t y, int16_t h, uint16_t color); + void drawFastRawHLine(int16_t x, int16_t y, int16_t w, uint16_t color); + uint8_t *buffer; ///< Raster data: no longer private, allow subclass access + bool buffer_owned; ///< If true, destructor will free buffer, else it will do + ///< nothing +}; + +/// A GFX 16-bit canvas context for graphics +class GFXcanvas16 : public Adafruit_GFX { +public: + GFXcanvas16(uint16_t w, uint16_t h, bool allocate_buffer = true); + ~GFXcanvas16(void); + void drawPixel(int16_t x, int16_t y, uint16_t color); + void fillScreen(uint16_t color); + void byteSwap(void); + void drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color); + void drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color); + uint16_t getPixel(int16_t x, int16_t y) const; + /**********************************************************************/ + /*! + @brief Get a pointer to the internal buffer memory + @returns A pointer to the allocated buffer + */ + /**********************************************************************/ + uint16_t *getBuffer(void) const { return buffer; } + +protected: + uint16_t getRawPixel(int16_t x, int16_t y) const; + void drawFastRawVLine(int16_t x, int16_t y, int16_t h, uint16_t color); + void drawFastRawHLine(int16_t x, int16_t y, int16_t w, uint16_t color); + uint16_t *buffer; ///< Raster data: no longer private, allow subclass access + bool buffer_owned; ///< If true, destructor will free buffer, else it will do + ///< nothing +}; + +#endif // _ADAFRUIT_GFX_H diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Adafruit_GrayOLED.cpp b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Adafruit_GrayOLED.cpp new file mode 100644 index 0000000..e3cbc72 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Adafruit_GrayOLED.cpp @@ -0,0 +1,422 @@ +/*! + * @file Adafruit_GrayOLED.cpp + * + * This is documentation for Adafruit's generic library for grayscale + * OLED displays: http://www.adafruit.com/category/63_98 + * + * These displays use I2C or SPI to communicate. I2C requires 2 pins + * (SCL+SDA) and optionally a RESET pin. SPI requires 4 pins (MOSI, SCK, + * select, data/command) and optionally a reset pin. Hardware SPI or + * 'bitbang' software SPI are both supported. + * + * Adafruit invests time and resources providing this open source code, + * please support Adafruit and open-source hardware by purchasing + * products from Adafruit! + * + */ + +// Not for ATtiny, at all +#if !defined(__AVR_ATtiny85__) && !defined(__AVR_ATtiny84__) + +#include "Adafruit_GrayOLED.h" +#include + +// SOME DEFINES AND STATIC VARIABLES USED INTERNALLY ----------------------- + +#define grayoled_swap(a, b) \ + (((a) ^= (b)), ((b) ^= (a)), ((a) ^= (b))) ///< No-temp-var swap operation + +// CONSTRUCTORS, DESTRUCTOR ------------------------------------------------ + +/*! + @brief Constructor for I2C-interfaced OLED displays. + @param bpp Bits per pixel, 1 for monochrome, 4 for 16-gray + @param w + Display width in pixels + @param h + Display height in pixels + @param twi + Pointer to an existing TwoWire instance (e.g. &Wire, the + microcontroller's primary I2C bus). + @param rst_pin + Reset pin (using Arduino pin numbering), or -1 if not used + (some displays might be wired to share the microcontroller's + reset pin). + @param clkDuring + Speed (in Hz) for Wire transmissions in library calls. + Defaults to 400000 (400 KHz), a known 'safe' value for most + microcontrollers, and meets the OLED datasheet spec. + Some systems can operate I2C faster (800 KHz for ESP32, 1 MHz + for many other 32-bit MCUs), and some (perhaps not all) + Many OLED's can work with this -- so it's optionally be specified + here and is not a default behavior. (Ignored if using pre-1.5.7 + Arduino software, which operates I2C at a fixed 100 KHz.) + @param clkAfter + Speed (in Hz) for Wire transmissions following library + calls. Defaults to 100000 (100 KHz), the default Arduino Wire + speed. This is done rather than leaving it at the 'during' speed + because other devices on the I2C bus might not be compatible + with the faster rate. (Ignored if using pre-1.5.7 Arduino + software, which operates I2C at a fixed 100 KHz.) + @note Call the object's begin() function before use -- buffer + allocation is performed there! +*/ +Adafruit_GrayOLED::Adafruit_GrayOLED(uint8_t bpp, uint16_t w, uint16_t h, + TwoWire *twi, int16_t rst_pin, + uint32_t clkDuring, uint32_t clkAfter) + : Adafruit_GFX(w, h), i2c_preclk(clkDuring), i2c_postclk(clkAfter), + buffer(NULL), dcPin(-1), csPin(-1), rstPin(rst_pin), _bpp(bpp) { + i2c_dev = NULL; + _theWire = twi; +} + +/*! + @brief Constructor for SPI GrayOLED displays, using software (bitbang) + SPI. + @param bpp Bits per pixel, 1 for monochrome, 4 for 16-gray + @param w + Display width in pixels + @param h + Display height in pixels + @param mosi_pin + MOSI (master out, slave in) pin (using Arduino pin numbering). + This transfers serial data from microcontroller to display. + @param sclk_pin + SCLK (serial clock) pin (using Arduino pin numbering). + This clocks each bit from MOSI. + @param dc_pin + Data/command pin (using Arduino pin numbering), selects whether + display is receiving commands (low) or data (high). + @param rst_pin + Reset pin (using Arduino pin numbering), or -1 if not used + (some displays might be wired to share the microcontroller's + reset pin). + @param cs_pin + Chip-select pin (using Arduino pin numbering) for sharing the + bus with other devices. Active low. + @note Call the object's begin() function before use -- buffer + allocation is performed there! +*/ +Adafruit_GrayOLED::Adafruit_GrayOLED(uint8_t bpp, uint16_t w, uint16_t h, + int16_t mosi_pin, int16_t sclk_pin, + int16_t dc_pin, int16_t rst_pin, + int16_t cs_pin) + : Adafruit_GFX(w, h), dcPin(dc_pin), csPin(cs_pin), rstPin(rst_pin), + _bpp(bpp) { + + spi_dev = new Adafruit_SPIDevice(cs_pin, sclk_pin, -1, mosi_pin, 1000000); +} + +/*! + @brief Constructor for SPI GrayOLED displays, using native hardware SPI. + @param bpp Bits per pixel, 1 for monochrome, 4 for 16-gray + @param w + Display width in pixels + @param h + Display height in pixels + @param spi + Pointer to an existing SPIClass instance (e.g. &SPI, the + microcontroller's primary SPI bus). + @param dc_pin + Data/command pin (using Arduino pin numbering), selects whether + display is receiving commands (low) or data (high). + @param rst_pin + Reset pin (using Arduino pin numbering), or -1 if not used + (some displays might be wired to share the microcontroller's + reset pin). + @param cs_pin + Chip-select pin (using Arduino pin numbering) for sharing the + bus with other devices. Active low. + @param bitrate + SPI clock rate for transfers to this display. Default if + unspecified is 8000000UL (8 MHz). + @note Call the object's begin() function before use -- buffer + allocation is performed there! +*/ +Adafruit_GrayOLED::Adafruit_GrayOLED(uint8_t bpp, uint16_t w, uint16_t h, + SPIClass *spi, int16_t dc_pin, + int16_t rst_pin, int16_t cs_pin, + uint32_t bitrate) + : Adafruit_GFX(w, h), dcPin(dc_pin), csPin(cs_pin), rstPin(rst_pin), + _bpp(bpp) { + + spi_dev = new Adafruit_SPIDevice(cs_pin, bitrate, SPI_BITORDER_MSBFIRST, + SPI_MODE0, spi); +} + +/*! + @brief Destructor for Adafruit_GrayOLED object. +*/ +Adafruit_GrayOLED::~Adafruit_GrayOLED(void) { + if (buffer) { + free(buffer); + buffer = NULL; + } + if (spi_dev) + delete spi_dev; + if (i2c_dev) + delete i2c_dev; +} + +// LOW-LEVEL UTILS --------------------------------------------------------- + +/*! + @brief Issue single command byte to OLED, using I2C or hard/soft SPI as + needed. + @param c The single byte command +*/ +void Adafruit_GrayOLED::oled_command(uint8_t c) { + if (i2c_dev) { // I2C + uint8_t buf[2] = {0x00, c}; // Co = 0, D/C = 0 + i2c_dev->write(buf, 2); + } else { // SPI (hw or soft) -- transaction started in calling function + digitalWrite(dcPin, LOW); + spi_dev->write(&c, 1); + } +} + +// Issue list of commands to GrayOLED +/*! + @brief Issue multiple bytes of commands OLED, using I2C or hard/soft SPI as + needed. + @param c Pointer to the command array + @param n The number of bytes in the command array + @returns True for success on ability to write the data in I2C. +*/ + +bool Adafruit_GrayOLED::oled_commandList(const uint8_t *c, uint8_t n) { + if (i2c_dev) { // I2C + uint8_t dc_byte = 0x00; // Co = 0, D/C = 0 + if (!i2c_dev->write((uint8_t *)c, n, true, &dc_byte, 1)) { + return false; + } + } else { // SPI -- transaction started in calling function + digitalWrite(dcPin, LOW); + if (!spi_dev->write((uint8_t *)c, n)) { + return false; + } + } + return true; +} + +// ALLOCATE & INIT DISPLAY ------------------------------------------------- + +/*! + @brief Allocate RAM for image buffer, initialize peripherals and pins. + Note that subclasses must call this before other begin() init + @param addr + I2C address of corresponding oled display. + SPI displays (hardware or software) do not use addresses, but + this argument is still required. Default if unspecified is 0x3C. + @param reset + If true, and if the reset pin passed to the constructor is + valid, a hard reset will be performed before initializing the + display. If using multiple oled displays on the same bus, and + if they all share the same reset pin, you should only pass true + on the first display being initialized, false on all others, + else the already-initialized displays would be reset. Default if + unspecified is true. + @return true on successful allocation/init, false otherwise. + Well-behaved code should check the return value before + proceeding. + @note MUST call this function before any drawing or updates! +*/ +bool Adafruit_GrayOLED::_init(uint8_t addr, bool reset) { + + // attempt to malloc the bitmap framebuffer + if ((!buffer) && + !(buffer = (uint8_t *)malloc(_bpp * WIDTH * ((HEIGHT + 7) / 8)))) { + return false; + } + + // Reset OLED if requested and reset pin specified in constructor + if (reset && (rstPin >= 0)) { + pinMode(rstPin, OUTPUT); + digitalWrite(rstPin, HIGH); + delay(10); // VDD goes high at start, pause + digitalWrite(rstPin, LOW); // Bring reset low + delay(10); // Wait 10 ms + digitalWrite(rstPin, HIGH); // Bring out of reset + delay(10); + } + + // Setup pin directions + if (_theWire) { // using I2C + i2c_dev = new Adafruit_I2CDevice(addr, _theWire); + // look for i2c address: + if (!i2c_dev || !i2c_dev->begin()) { + return false; + } + } else { // Using one of the SPI modes, either soft or hardware + if (!spi_dev || !spi_dev->begin()) { + return false; + } + pinMode(dcPin, OUTPUT); // Set data/command pin as output + } + + clearDisplay(); + + // set max dirty window + window_x1 = 0; + window_y1 = 0; + window_x2 = WIDTH - 1; + window_y2 = HEIGHT - 1; + + return true; // Success +} + +// DRAWING FUNCTIONS ------------------------------------------------------- + +/*! + @brief Set/clear/invert a single pixel. This is also invoked by the + Adafruit_GFX library in generating many higher-level graphics + primitives. + @param x + Column of display -- 0 at left to (screen width - 1) at right. + @param y + Row of display -- 0 at top to (screen height -1) at bottom. + @param color + Pixel color, one of: MONOOLED_BLACK, MONOOLED_WHITE or + MONOOLED_INVERT. + @note Changes buffer contents only, no immediate effect on display. + Follow up with a call to display(), or with other graphics + commands as needed by one's own application. +*/ +void Adafruit_GrayOLED::drawPixel(int16_t x, int16_t y, uint16_t color) { + if ((x >= 0) && (x < width()) && (y >= 0) && (y < height())) { + // Pixel is in-bounds. Rotate coordinates if needed. + switch (getRotation()) { + case 1: + grayoled_swap(x, y); + x = WIDTH - x - 1; + break; + case 2: + x = WIDTH - x - 1; + y = HEIGHT - y - 1; + break; + case 3: + grayoled_swap(x, y); + y = HEIGHT - y - 1; + break; + } + + // adjust dirty window + window_x1 = min(window_x1, x); + window_y1 = min(window_y1, y); + window_x2 = max(window_x2, x); + window_y2 = max(window_y2, y); + + if (_bpp == 1) { + switch (color) { + case MONOOLED_WHITE: + buffer[x + (y / 8) * WIDTH] |= (1 << (y & 7)); + break; + case MONOOLED_BLACK: + buffer[x + (y / 8) * WIDTH] &= ~(1 << (y & 7)); + break; + case MONOOLED_INVERSE: + buffer[x + (y / 8) * WIDTH] ^= (1 << (y & 7)); + break; + } + } + if (_bpp == 4) { + uint8_t *pixelptr = &buffer[x / 2 + (y * WIDTH / 2)]; + // Serial.printf("(%d, %d) -> offset %d\n", x, y, x/2 + (y * WIDTH / 2)); + if (x % 2 == 0) { // even, left nibble + uint8_t t = pixelptr[0] & 0x0F; + t |= (color & 0xF) << 4; + pixelptr[0] = t; + } else { // odd, right lower nibble + uint8_t t = pixelptr[0] & 0xF0; + t |= color & 0xF; + pixelptr[0] = t; + } + } + } +} + +/*! + @brief Clear contents of display buffer (set all pixels to off). + @note Changes buffer contents only, no immediate effect on display. + Follow up with a call to display(), or with other graphics + commands as needed by one's own application. +*/ +void Adafruit_GrayOLED::clearDisplay(void) { + memset(buffer, 0, _bpp * WIDTH * ((HEIGHT + 7) / 8)); + // set max dirty window + window_x1 = 0; + window_y1 = 0; + window_x2 = WIDTH - 1; + window_y2 = HEIGHT - 1; +} + +/*! + @brief Return color of a single pixel in display buffer. + @param x + Column of display -- 0 at left to (screen width - 1) at right. + @param y + Row of display -- 0 at top to (screen height -1) at bottom. + @return true if pixel is set (usually MONOOLED_WHITE, unless display invert + mode is enabled), false if clear (MONOOLED_BLACK). + @note Reads from buffer contents; may not reflect current contents of + screen if display() has not been called. +*/ +bool Adafruit_GrayOLED::getPixel(int16_t x, int16_t y) { + if ((x >= 0) && (x < width()) && (y >= 0) && (y < height())) { + // Pixel is in-bounds. Rotate coordinates if needed. + switch (getRotation()) { + case 1: + grayoled_swap(x, y); + x = WIDTH - x - 1; + break; + case 2: + x = WIDTH - x - 1; + y = HEIGHT - y - 1; + break; + case 3: + grayoled_swap(x, y); + y = HEIGHT - y - 1; + break; + } + return (buffer[x + (y / 8) * WIDTH] & (1 << (y & 7))); + } + return false; // Pixel out of bounds +} + +/*! + @brief Get base address of display buffer for direct reading or writing. + @return Pointer to an unsigned 8-bit array, column-major, columns padded + to full byte boundary if needed. +*/ +uint8_t *Adafruit_GrayOLED::getBuffer(void) { return buffer; } + +// OTHER HARDWARE SETTINGS ------------------------------------------------- + +/*! + @brief Enable or disable display invert mode (white-on-black vs + black-on-white). Handy for testing! + @param i + If true, switch to invert mode (black-on-white), else normal + mode (white-on-black). + @note This has an immediate effect on the display, no need to call the + display() function -- buffer contents are not changed, rather a + different pixel mode of the display hardware is used. When + enabled, drawing MONOOLED_BLACK (value 0) pixels will actually draw + white, MONOOLED_WHITE (value 1) will draw black. +*/ +void Adafruit_GrayOLED::invertDisplay(bool i) { + oled_command(i ? GRAYOLED_INVERTDISPLAY : GRAYOLED_NORMALDISPLAY); +} + +/*! + @brief Adjust the display contrast. + @param level The contrast level from 0 to 0x7F + @note This has an immediate effect on the display, no need to call the + display() function -- buffer contents are not changed. +*/ +void Adafruit_GrayOLED::setContrast(uint8_t level) { + uint8_t cmd[] = {GRAYOLED_SETCONTRAST, level}; + oled_commandList(cmd, 2); +} + +#endif /* ATTIN85 not supported */ diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Adafruit_GrayOLED.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Adafruit_GrayOLED.h new file mode 100644 index 0000000..4c836a4 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Adafruit_GrayOLED.h @@ -0,0 +1,101 @@ +/*! + * @file Adafruit_GrayOLED.h + * + * This is part of for Adafruit's GFX library, supplying generic support + * for grayscale OLED displays: http://www.adafruit.com/category/63_98 + * + * These displays use I2C or SPI to communicate. I2C requires 2 pins + * (SCL+SDA) and optionally a RESET pin. SPI requires 4 pins (MOSI, SCK, + * select, data/command) and optionally a reset pin. Hardware SPI or + * 'bitbang' software SPI are both supported. + * + * 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, with + * contributions from the open source community. + * + * BSD license, all text above, and the splash screen header file, + * must be included in any redistribution. + * + */ + +#ifndef _Adafruit_GRAYOLED_H_ +#define _Adafruit_GRAYOLED_H_ + +// Not for ATtiny, at all +#if !defined(__AVR_ATtiny85__) && !defined(__AVR_ATtiny84__) + +#include +#include +#include +#include +#include + +#define GRAYOLED_SETCONTRAST 0x81 ///< Generic contrast for almost all OLEDs +#define GRAYOLED_NORMALDISPLAY 0xA6 ///< Generic non-invert for almost all OLEDs +#define GRAYOLED_INVERTDISPLAY 0xA7 ///< Generic invert for almost all OLEDs + +#define MONOOLED_BLACK 0 ///< Default black 'color' for monochrome OLEDS +#define MONOOLED_WHITE 1 ///< Default white 'color' for monochrome OLEDS +#define MONOOLED_INVERSE 2 ///< Default inversion command for monochrome OLEDS + +/*! + @brief Class that stores state and functions for interacting with + generic grayscale OLED displays. +*/ +class Adafruit_GrayOLED : public Adafruit_GFX { +public: + Adafruit_GrayOLED(uint8_t bpp, uint16_t w, uint16_t h, TwoWire *twi = &Wire, + int16_t rst_pin = -1, uint32_t preclk = 400000, + uint32_t postclk = 100000); + Adafruit_GrayOLED(uint8_t bpp, uint16_t w, uint16_t h, int16_t mosi_pin, + int16_t sclk_pin, int16_t dc_pin, int16_t rst_pin, + int16_t cs_pin); + Adafruit_GrayOLED(uint8_t bpp, uint16_t w, uint16_t h, SPIClass *spi, + int16_t dc_pin, int16_t rst_pin, int16_t cs_pin, + uint32_t bitrate = 8000000UL); + + ~Adafruit_GrayOLED(void); + + /** + @brief The function that sub-classes define that writes out the buffer to + the display over I2C or SPI + **/ + virtual void display(void) = 0; + void clearDisplay(void); + void invertDisplay(bool i); + void setContrast(uint8_t contrastlevel); + void drawPixel(int16_t x, int16_t y, uint16_t color); + bool getPixel(int16_t x, int16_t y); + uint8_t *getBuffer(void); + + void oled_command(uint8_t c); + bool oled_commandList(const uint8_t *c, uint8_t n); + +protected: + bool _init(uint8_t i2caddr = 0x3C, bool reset = true); + + Adafruit_SPIDevice *spi_dev = NULL; ///< The SPI interface BusIO device + Adafruit_I2CDevice *i2c_dev = NULL; ///< The I2C interface BusIO device + int32_t i2c_preclk = 400000, ///< Configurable 'high speed' I2C rate + i2c_postclk = 100000; ///< Configurable 'low speed' I2C rate + uint8_t *buffer = NULL; ///< Internal 1:1 framebuffer of display mem + + int16_t window_x1, ///< Dirty tracking window minimum x + window_y1, ///< Dirty tracking window minimum y + window_x2, ///< Dirty tracking window maximum x + window_y2; ///< Dirty tracking window maximum y + + int dcPin, ///< The Arduino pin connected to D/C (for SPI) + csPin, ///< The Arduino pin connected to CS (for SPI) + rstPin; ///< The Arduino pin connected to reset (-1 if unused) + + uint8_t _bpp = 1; ///< Bits per pixel color for this display +private: + TwoWire *_theWire = NULL; ///< The underlying hardware I2C +}; + +#endif // end __AVR_ATtiny85__ __AVR_ATtiny84__ +#endif // _Adafruit_GrayOLED_H_ diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Adafruit_SPITFT.cpp b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Adafruit_SPITFT.cpp new file mode 100644 index 0000000..870979b --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Adafruit_SPITFT.cpp @@ -0,0 +1,2621 @@ +/*! + * @file Adafruit_SPITFT.cpp + * + * @mainpage Adafruit SPI TFT Displays (and some others) + * + * @section intro_sec Introduction + * + * Part of Adafruit's GFX graphics library. Originally this class was + * written to handle a range of color TFT displays connected via SPI, + * but over time this library and some display-specific subclasses have + * mutated to include some color OLEDs as well as parallel-interfaced + * displays. The name's been kept for the sake of older code. + * + * Adafruit invests time and resources providing this open source code, + * please support Adafruit and open-source hardware by purchasing + * products from Adafruit! + + * @section dependencies Dependencies + * + * This library depends on + * Adafruit_GFX + * being present on your system. Please make sure you have installed the latest + * version before using this library. + * + * @section author Author + * + * Written by Limor "ladyada" Fried for Adafruit Industries, + * with contributions from the open source community. + * + * @section license License + * + * BSD license, all text here must be included in any redistribution. + */ + +// Not for ATtiny, at all +#if !defined(__AVR_ATtiny85__) && !defined(__AVR_ATtiny84__) + +#include "Adafruit_SPITFT.h" + +#if defined(__AVR__) +#if defined(__AVR_XMEGA__) // only tested with __AVR_ATmega4809__ +#define AVR_WRITESPI(x) \ + for (SPI0_DATA = (x); (!(SPI0_INTFLAGS & _BV(SPI_IF_bp)));) +#elif defined(__LGT8F__) +#define AVR_WRITESPI(x) \ + SPDR = (x); \ + asm volatile("nop"); \ + while ((SPFR & _BV(RDEMPT))) \ + ; \ + SPFR = _BV(RDEMPT) | _BV(WREMPT) +#else +#define AVR_WRITESPI(x) for (SPDR = (x); (!(SPSR & _BV(SPIF)));) +#endif +#endif + +#if defined(PORT_IOBUS) +// On SAMD21, redefine digitalPinToPort() to use the slightly-faster +// PORT_IOBUS rather than PORT (not needed on SAMD51). +#undef digitalPinToPort +#define digitalPinToPort(P) (&(PORT_IOBUS->Group[g_APinDescription[P].ulPort])) +#endif // end PORT_IOBUS + +#if defined(USE_SPI_DMA) && (defined(__SAMD51__) || defined(ARDUINO_SAMD_ZERO)) +// #pragma message ("GFX DMA IS ENABLED. HIGHLY EXPERIMENTAL.") +#include "wiring_private.h" // pinPeripheral() function +#include +#include // memalign() function +#define tcNum 2 // Timer/Counter for parallel write strobe PWM +#define wrPeripheral PIO_CCL // Use CCL to invert write strobe + +// DMA transfer-in-progress indicator and callback +static volatile bool dma_busy = false; +static void dma_callback(Adafruit_ZeroDMA *dma) { dma_busy = false; } + +#if defined(__SAMD51__) +// Timer/counter info by index # +static const struct { + Tc *tc; // -> Timer/Counter base address + int gclk; // GCLK ID + int evu; // EVSYS user ID +} tcList[] = {{TC0, TC0_GCLK_ID, EVSYS_ID_USER_TC0_EVU}, + {TC1, TC1_GCLK_ID, EVSYS_ID_USER_TC1_EVU}, + {TC2, TC2_GCLK_ID, EVSYS_ID_USER_TC2_EVU}, + {TC3, TC3_GCLK_ID, EVSYS_ID_USER_TC3_EVU}, +#if defined(TC4) + {TC4, TC4_GCLK_ID, EVSYS_ID_USER_TC4_EVU}, +#endif +#if defined(TC5) + {TC5, TC5_GCLK_ID, EVSYS_ID_USER_TC5_EVU}, +#endif +#if defined(TC6) + {TC6, TC6_GCLK_ID, EVSYS_ID_USER_TC6_EVU}, +#endif +#if defined(TC7) + {TC7, TC7_GCLK_ID, EVSYS_ID_USER_TC7_EVU} +#endif +}; +#define NUM_TIMERS (sizeof tcList / sizeof tcList[0]) ///< # timer/counters +#endif // end __SAMD51__ + +#endif // end USE_SPI_DMA + +// Possible values for Adafruit_SPITFT.connection: +#define TFT_HARD_SPI 0 ///< Display interface = hardware SPI +#define TFT_SOFT_SPI 1 ///< Display interface = software SPI +#define TFT_PARALLEL 2 ///< Display interface = 8- or 16-bit parallel + +// CONSTRUCTORS ------------------------------------------------------------ + +/*! + @brief Adafruit_SPITFT constructor for software (bitbang) SPI. + @param w Display width in pixels at default rotation setting (0). + @param h Display height in pixels at default rotation setting (0). + @param cs Arduino pin # for chip-select (-1 if unused, tie CS low). + @param dc Arduino pin # for data/command select (required). + @param mosi Arduino pin # for bitbang SPI MOSI signal (required). + @param sck Arduino pin # for bitbang SPI SCK signal (required). + @param rst Arduino pin # for display reset (optional, display reset + can be tied to MCU reset, default of -1 means unused). + @param miso Arduino pin # for bitbang SPI MISO signal (optional, + -1 default, many displays don't support SPI read). + @note Output pins are not initialized; application typically will + need to call subclass' begin() function, which in turn calls + this library's initSPI() function to initialize pins. +*/ +Adafruit_SPITFT::Adafruit_SPITFT(uint16_t w, uint16_t h, int8_t cs, int8_t dc, + int8_t mosi, int8_t sck, int8_t rst, + int8_t miso) + : Adafruit_GFX(w, h), connection(TFT_SOFT_SPI), _rst(rst), _cs(cs), + _dc(dc) { + swspi._sck = sck; + swspi._mosi = mosi; + swspi._miso = miso; +#if defined(USE_FAST_PINIO) +#if defined(HAS_PORT_SET_CLR) +#if defined(CORE_TEENSY) +#if !defined(KINETISK) + dcPinMask = digitalPinToBitMask(dc); + swspi.sckPinMask = digitalPinToBitMask(sck); + swspi.mosiPinMask = digitalPinToBitMask(mosi); +#endif + dcPortSet = portSetRegister(dc); + dcPortClr = portClearRegister(dc); + swspi.sckPortSet = portSetRegister(sck); + swspi.sckPortClr = portClearRegister(sck); + swspi.mosiPortSet = portSetRegister(mosi); + swspi.mosiPortClr = portClearRegister(mosi); + if (cs >= 0) { +#if !defined(KINETISK) + csPinMask = digitalPinToBitMask(cs); +#endif + csPortSet = portSetRegister(cs); + csPortClr = portClearRegister(cs); + } else { +#if !defined(KINETISK) + csPinMask = 0; +#endif + csPortSet = dcPortSet; + csPortClr = dcPortClr; + } + if (miso >= 0) { + swspi.misoPort = portInputRegister(miso); +#if !defined(KINETISK) + swspi.misoPinMask = digitalPinToBitMask(miso); +#endif + } else { + swspi.misoPort = portInputRegister(dc); + } +#else // !CORE_TEENSY + dcPinMask = digitalPinToBitMask(dc); + swspi.sckPinMask = digitalPinToBitMask(sck); + swspi.mosiPinMask = digitalPinToBitMask(mosi); + dcPortSet = &(PORT->Group[g_APinDescription[dc].ulPort].OUTSET.reg); + dcPortClr = &(PORT->Group[g_APinDescription[dc].ulPort].OUTCLR.reg); + swspi.sckPortSet = &(PORT->Group[g_APinDescription[sck].ulPort].OUTSET.reg); + swspi.sckPortClr = &(PORT->Group[g_APinDescription[sck].ulPort].OUTCLR.reg); + swspi.mosiPortSet = &(PORT->Group[g_APinDescription[mosi].ulPort].OUTSET.reg); + swspi.mosiPortClr = &(PORT->Group[g_APinDescription[mosi].ulPort].OUTCLR.reg); + if (cs >= 0) { + csPinMask = digitalPinToBitMask(cs); + csPortSet = &(PORT->Group[g_APinDescription[cs].ulPort].OUTSET.reg); + csPortClr = &(PORT->Group[g_APinDescription[cs].ulPort].OUTCLR.reg); + } else { + // No chip-select line defined; might be permanently tied to GND. + // Assign a valid GPIO register (though not used for CS), and an + // empty pin bitmask...the nonsense bit-twiddling might be faster + // than checking _cs and possibly branching. + csPortSet = dcPortSet; + csPortClr = dcPortClr; + csPinMask = 0; + } + if (miso >= 0) { + swspi.misoPinMask = digitalPinToBitMask(miso); + swspi.misoPort = (PORTreg_t)portInputRegister(digitalPinToPort(miso)); + } else { + swspi.misoPinMask = 0; + swspi.misoPort = (PORTreg_t)portInputRegister(digitalPinToPort(dc)); + } +#endif // end !CORE_TEENSY +#else // !HAS_PORT_SET_CLR + dcPort = (PORTreg_t)portOutputRegister(digitalPinToPort(dc)); + dcPinMaskSet = digitalPinToBitMask(dc); + swspi.sckPort = (PORTreg_t)portOutputRegister(digitalPinToPort(sck)); + swspi.sckPinMaskSet = digitalPinToBitMask(sck); + swspi.mosiPort = (PORTreg_t)portOutputRegister(digitalPinToPort(mosi)); + swspi.mosiPinMaskSet = digitalPinToBitMask(mosi); + if (cs >= 0) { + csPort = (PORTreg_t)portOutputRegister(digitalPinToPort(cs)); + csPinMaskSet = digitalPinToBitMask(cs); + } else { + // No chip-select line defined; might be permanently tied to GND. + // Assign a valid GPIO register (though not used for CS), and an + // empty pin bitmask...the nonsense bit-twiddling might be faster + // than checking _cs and possibly branching. + csPort = dcPort; + csPinMaskSet = 0; + } + if (miso >= 0) { + swspi.misoPort = (PORTreg_t)portInputRegister(digitalPinToPort(miso)); + swspi.misoPinMask = digitalPinToBitMask(miso); + } else { + swspi.misoPort = (PORTreg_t)portInputRegister(digitalPinToPort(dc)); + swspi.misoPinMask = 0; + } + csPinMaskClr = ~csPinMaskSet; + dcPinMaskClr = ~dcPinMaskSet; + swspi.sckPinMaskClr = ~swspi.sckPinMaskSet; + swspi.mosiPinMaskClr = ~swspi.mosiPinMaskSet; +#endif // !end HAS_PORT_SET_CLR +#endif // end USE_FAST_PINIO +} + +/*! + @brief Adafruit_SPITFT constructor for hardware SPI using the board's + default SPI peripheral. + @param w Display width in pixels at default rotation setting (0). + @param h Display height in pixels at default rotation setting (0). + @param cs Arduino pin # for chip-select (-1 if unused, tie CS low). + @param dc Arduino pin # for data/command select (required). + @param rst Arduino pin # for display reset (optional, display reset + can be tied to MCU reset, default of -1 means unused). + @note Output pins are not initialized; application typically will + need to call subclass' begin() function, which in turn calls + this library's initSPI() function to initialize pins. +*/ +#if defined(ESP8266) // See notes below +Adafruit_SPITFT::Adafruit_SPITFT(uint16_t w, uint16_t h, int8_t cs, int8_t dc, + int8_t rst) + : Adafruit_GFX(w, h), connection(TFT_HARD_SPI), _rst(rst), _cs(cs), + _dc(dc) { + hwspi._spi = &SPI; +} +#else // !ESP8266 +Adafruit_SPITFT::Adafruit_SPITFT(uint16_t w, uint16_t h, int8_t cs, int8_t dc, + int8_t rst) + : Adafruit_SPITFT(w, h, &SPI, cs, dc, rst) { + // This just invokes the hardware SPI constructor below, + // passing the default SPI device (&SPI). +} +#endif // end !ESP8266 + +#if !defined(ESP8266) +// ESP8266 compiler freaks out at this constructor -- it can't disambiguate +// beteween the SPIClass pointer (argument #3) and a regular integer. +// Solution here it to just not offer this variant on the ESP8266. You can +// use the default hardware SPI peripheral, or you can use software SPI, +// but if there's any library out there that creates a 'virtual' SPIClass +// peripheral and drives it with software bitbanging, that's not supported. +/*! + @brief Adafruit_SPITFT constructor for hardware SPI using a specific + SPI peripheral. + @param w Display width in pixels at default rotation (0). + @param h Display height in pixels at default rotation (0). + @param spiClass Pointer to SPIClass type (e.g. &SPI or &SPI1). + @param cs Arduino pin # for chip-select (-1 if unused, tie CS low). + @param dc Arduino pin # for data/command select (required). + @param rst Arduino pin # for display reset (optional, display reset + can be tied to MCU reset, default of -1 means unused). + @note Output pins are not initialized in constructor; application + typically will need to call subclass' begin() function, which + in turn calls this library's initSPI() function to initialize + pins. EXCEPT...if you have built your own SERCOM SPI peripheral + (calling the SPIClass constructor) rather than one of the + built-in SPI devices (e.g. &SPI, &SPI1 and so forth), you will + need to call the begin() function for your object as well as + pinPeripheral() for the MOSI, MISO and SCK pins to configure + GPIO manually. Do this BEFORE calling the display-specific + begin or init function. Unfortunate but unavoidable. +*/ +Adafruit_SPITFT::Adafruit_SPITFT(uint16_t w, uint16_t h, SPIClass *spiClass, + int8_t cs, int8_t dc, int8_t rst) + : Adafruit_GFX(w, h), connection(TFT_HARD_SPI), _rst(rst), _cs(cs), + _dc(dc) { + hwspi._spi = spiClass; +#if defined(USE_FAST_PINIO) +#if defined(HAS_PORT_SET_CLR) +#if defined(CORE_TEENSY) +#if !defined(KINETISK) + dcPinMask = digitalPinToBitMask(dc); +#endif + dcPortSet = portSetRegister(dc); + dcPortClr = portClearRegister(dc); + if (cs >= 0) { +#if !defined(KINETISK) + csPinMask = digitalPinToBitMask(cs); +#endif + csPortSet = portSetRegister(cs); + csPortClr = portClearRegister(cs); + } else { // see comments below +#if !defined(KINETISK) + csPinMask = 0; +#endif + csPortSet = dcPortSet; + csPortClr = dcPortClr; + } +#else // !CORE_TEENSY + dcPinMask = digitalPinToBitMask(dc); + dcPortSet = &(PORT->Group[g_APinDescription[dc].ulPort].OUTSET.reg); + dcPortClr = &(PORT->Group[g_APinDescription[dc].ulPort].OUTCLR.reg); + if (cs >= 0) { + csPinMask = digitalPinToBitMask(cs); + csPortSet = &(PORT->Group[g_APinDescription[cs].ulPort].OUTSET.reg); + csPortClr = &(PORT->Group[g_APinDescription[cs].ulPort].OUTCLR.reg); + } else { + // No chip-select line defined; might be permanently tied to GND. + // Assign a valid GPIO register (though not used for CS), and an + // empty pin bitmask...the nonsense bit-twiddling might be faster + // than checking _cs and possibly branching. + csPortSet = dcPortSet; + csPortClr = dcPortClr; + csPinMask = 0; + } +#endif // end !CORE_TEENSY +#else // !HAS_PORT_SET_CLR + dcPort = (PORTreg_t)portOutputRegister(digitalPinToPort(dc)); + dcPinMaskSet = digitalPinToBitMask(dc); + if (cs >= 0) { + csPort = (PORTreg_t)portOutputRegister(digitalPinToPort(cs)); + csPinMaskSet = digitalPinToBitMask(cs); + } else { + // No chip-select line defined; might be permanently tied to GND. + // Assign a valid GPIO register (though not used for CS), and an + // empty pin bitmask...the nonsense bit-twiddling might be faster + // than checking _cs and possibly branching. + csPort = dcPort; + csPinMaskSet = 0; + } + csPinMaskClr = ~csPinMaskSet; + dcPinMaskClr = ~dcPinMaskSet; +#endif // end !HAS_PORT_SET_CLR +#endif // end USE_FAST_PINIO +} +#endif // end !ESP8266 + +/*! + @brief Adafruit_SPITFT constructor for parallel display connection. + @param w Display width in pixels at default rotation (0). + @param h Display height in pixels at default rotation (0). + @param busWidth If tft16 (enumeration in header file), is a 16-bit + parallel connection, else 8-bit. + 16-bit isn't fully implemented or tested yet so + applications should pass "tft8bitbus" for now...needed to + stick a required enum argument in there to + disambiguate this constructor from the soft-SPI case. + Argument is ignored on 8-bit architectures (no 'wide' + support there since PORTs are 8 bits anyway). + @param d0 Arduino pin # for data bit 0 (1+ are extrapolated). + The 8 (or 16) data bits MUST be contiguous and byte- + aligned (or word-aligned for wide interface) within + the same PORT register (might not correspond to + Arduino pin sequence). + @param wr Arduino pin # for write strobe (required). + @param dc Arduino pin # for data/command select (required). + @param cs Arduino pin # for chip-select (optional, -1 if unused, + tie CS low). + @param rst Arduino pin # for display reset (optional, display reset + can be tied to MCU reset, default of -1 means unused). + @param rd Arduino pin # for read strobe (optional, -1 if unused). + @note Output pins are not initialized; application typically will need + to call subclass' begin() function, which in turn calls this + library's initSPI() function to initialize pins. + Yes, the name is a misnomer...this library originally handled + only SPI displays, parallel being a recent addition (but not + wanting to break existing code). +*/ +Adafruit_SPITFT::Adafruit_SPITFT(uint16_t w, uint16_t h, tftBusWidth busWidth, + int8_t d0, int8_t wr, int8_t dc, int8_t cs, + int8_t rst, int8_t rd) + : Adafruit_GFX(w, h), connection(TFT_PARALLEL), _rst(rst), _cs(cs), + _dc(dc) { + tft8._d0 = d0; + tft8._wr = wr; + tft8._rd = rd; + tft8.wide = (busWidth == tft16bitbus); +#if defined(USE_FAST_PINIO) +#if defined(HAS_PORT_SET_CLR) +#if defined(CORE_TEENSY) + tft8.wrPortSet = portSetRegister(wr); + tft8.wrPortClr = portClearRegister(wr); +#if !defined(KINETISK) + dcPinMask = digitalPinToBitMask(dc); +#endif + dcPortSet = portSetRegister(dc); + dcPortClr = portClearRegister(dc); + if (cs >= 0) { +#if !defined(KINETISK) + csPinMask = digitalPinToBitMask(cs); +#endif + csPortSet = portSetRegister(cs); + csPortClr = portClearRegister(cs); + } else { // see comments below +#if !defined(KINETISK) + csPinMask = 0; +#endif + csPortSet = dcPortSet; + csPortClr = dcPortClr; + } + if (rd >= 0) { // if read-strobe pin specified... +#if defined(KINETISK) + tft8.rdPinMask = 1; +#else // !KINETISK + tft8.rdPinMask = digitalPinToBitMask(rd); +#endif + tft8.rdPortSet = portSetRegister(rd); + tft8.rdPortClr = portClearRegister(rd); + } else { + tft8.rdPinMask = 0; + tft8.rdPortSet = dcPortSet; + tft8.rdPortClr = dcPortClr; + } + // These are all uint8_t* pointers -- elsewhere they're recast + // as necessary if a 'wide' 16-bit interface is in use. + tft8.writePort = portOutputRegister(d0); + tft8.readPort = portInputRegister(d0); + tft8.dirSet = portModeRegister(d0); + tft8.dirClr = portModeRegister(d0); +#else // !CORE_TEENSY + tft8.wrPinMask = digitalPinToBitMask(wr); + tft8.wrPortSet = &(PORT->Group[g_APinDescription[wr].ulPort].OUTSET.reg); + tft8.wrPortClr = &(PORT->Group[g_APinDescription[wr].ulPort].OUTCLR.reg); + dcPinMask = digitalPinToBitMask(dc); + dcPortSet = &(PORT->Group[g_APinDescription[dc].ulPort].OUTSET.reg); + dcPortClr = &(PORT->Group[g_APinDescription[dc].ulPort].OUTCLR.reg); + if (cs >= 0) { + csPinMask = digitalPinToBitMask(cs); + csPortSet = &(PORT->Group[g_APinDescription[cs].ulPort].OUTSET.reg); + csPortClr = &(PORT->Group[g_APinDescription[cs].ulPort].OUTCLR.reg); + } else { + // No chip-select line defined; might be permanently tied to GND. + // Assign a valid GPIO register (though not used for CS), and an + // empty pin bitmask...the nonsense bit-twiddling might be faster + // than checking _cs and possibly branching. + csPortSet = dcPortSet; + csPortClr = dcPortClr; + csPinMask = 0; + } + if (rd >= 0) { // if read-strobe pin specified... + tft8.rdPinMask = digitalPinToBitMask(rd); + tft8.rdPortSet = &(PORT->Group[g_APinDescription[rd].ulPort].OUTSET.reg); + tft8.rdPortClr = &(PORT->Group[g_APinDescription[rd].ulPort].OUTCLR.reg); + } else { + tft8.rdPinMask = 0; + tft8.rdPortSet = dcPortSet; + tft8.rdPortClr = dcPortClr; + } + // Get pointers to PORT write/read/dir bytes within 32-bit PORT + uint8_t dBit = g_APinDescription[d0].ulPin; // d0 bit # in PORT + PortGroup *p = (&(PORT->Group[g_APinDescription[d0].ulPort])); + uint8_t offset = dBit / 8; // d[7:0] byte # within PORT + if (tft8.wide) + offset &= ~1; // d[15:8] byte # within PORT + // These are all uint8_t* pointers -- elsewhere they're recast + // as necessary if a 'wide' 16-bit interface is in use. + tft8.writePort = (volatile uint8_t *)&(p->OUT.reg) + offset; + tft8.readPort = (volatile uint8_t *)&(p->IN.reg) + offset; + tft8.dirSet = (volatile uint8_t *)&(p->DIRSET.reg) + offset; + tft8.dirClr = (volatile uint8_t *)&(p->DIRCLR.reg) + offset; +#endif // end !CORE_TEENSY +#else // !HAS_PORT_SET_CLR + tft8.wrPort = (PORTreg_t)portOutputRegister(digitalPinToPort(wr)); + tft8.wrPinMaskSet = digitalPinToBitMask(wr); + dcPort = (PORTreg_t)portOutputRegister(digitalPinToPort(dc)); + dcPinMaskSet = digitalPinToBitMask(dc); + if (cs >= 0) { + csPort = (PORTreg_t)portOutputRegister(digitalPinToPort(cs)); + csPinMaskSet = digitalPinToBitMask(cs); + } else { + // No chip-select line defined; might be permanently tied to GND. + // Assign a valid GPIO register (though not used for CS), and an + // empty pin bitmask...the nonsense bit-twiddling might be faster + // than checking _cs and possibly branching. + csPort = dcPort; + csPinMaskSet = 0; + } + if (rd >= 0) { // if read-strobe pin specified... + tft8.rdPort = (PORTreg_t)portOutputRegister(digitalPinToPort(rd)); + tft8.rdPinMaskSet = digitalPinToBitMask(rd); + } else { + tft8.rdPort = dcPort; + tft8.rdPinMaskSet = 0; + } + csPinMaskClr = ~csPinMaskSet; + dcPinMaskClr = ~dcPinMaskSet; + tft8.wrPinMaskClr = ~tft8.wrPinMaskSet; + tft8.rdPinMaskClr = ~tft8.rdPinMaskSet; + tft8.writePort = (PORTreg_t)portOutputRegister(digitalPinToPort(d0)); + tft8.readPort = (PORTreg_t)portInputRegister(digitalPinToPort(d0)); + tft8.portDir = (PORTreg_t)portModeRegister(digitalPinToPort(d0)); +#endif // end !HAS_PORT_SET_CLR +#endif // end USE_FAST_PINIO +} + +// end constructors ------- + +// CLASS MEMBER FUNCTIONS -------------------------------------------------- + +// begin() and setAddrWindow() MUST be declared by any subclass. + +/*! + @brief Configure microcontroller pins for TFT interfacing. Typically + called by a subclass' begin() function. + @param freq SPI frequency when using hardware SPI. If default (0) + is passed, will fall back on a device-specific value. + Value is ignored when using software SPI or parallel + connection. + @param spiMode SPI mode when using hardware SPI. MUST be one of the + values SPI_MODE0, SPI_MODE1, SPI_MODE2 or SPI_MODE3 + defined in SPI.h. Do NOT attempt to pass '0' for + SPI_MODE0 and so forth...the values are NOT the same! + Use ONLY the defines! (Pity it's not an enum.) + @note Another anachronistically-named function; this is called even + when the display connection is parallel (not SPI). Also, this + could probably be made private...quite a few class functions + were generously put in the public section. +*/ +void Adafruit_SPITFT::initSPI(uint32_t freq, uint8_t spiMode) { + + if (!freq) + freq = DEFAULT_SPI_FREQ; // If no freq specified, use default + + // Init basic control pins common to all connection types + if (_cs >= 0) { + pinMode(_cs, OUTPUT); + digitalWrite(_cs, HIGH); // Deselect + } + pinMode(_dc, OUTPUT); + digitalWrite(_dc, HIGH); // Data mode + + if (connection == TFT_HARD_SPI) { + +#if defined(SPI_HAS_TRANSACTION) + hwspi.settings = SPISettings(freq, MSBFIRST, spiMode); +#else + hwspi._freq = freq; // Save freq value for later +#endif + hwspi._mode = spiMode; // Save spiMode value for later + // Call hwspi._spi->begin() ONLY if this is among the 'established' + // SPI interfaces in variant.h. For DIY roll-your-own SERCOM SPIs, + // begin() and pinPeripheral() calls MUST be made in one's calling + // code, BEFORE the screen-specific begin/init function is called. + // Reason for this is that SPI::begin() makes its own calls to + // pinPeripheral() based on g_APinDescription[n].ulPinType, which + // on non-established SPI interface pins will always be PIO_DIGITAL + // or similar, while we need PIO_SERCOM or PIO_SERCOM_ALT...it's + // highly unique between devices and variants for each pin or + // SERCOM so we can't make those calls ourselves here. And the SPI + // device needs to be set up before calling this because it's + // immediately followed with initialization commands. Blargh. + if ( +#if !defined(SPI_INTERFACES_COUNT) + 1 +#else +#if SPI_INTERFACES_COUNT > 0 + (hwspi._spi == &SPI) +#endif +#if SPI_INTERFACES_COUNT > 1 + || (hwspi._spi == &SPI1) +#endif +#if SPI_INTERFACES_COUNT > 2 + || (hwspi._spi == &SPI2) +#endif +#if SPI_INTERFACES_COUNT > 3 + || (hwspi._spi == &SPI3) +#endif +#if SPI_INTERFACES_COUNT > 4 + || (hwspi._spi == &SPI4) +#endif +#if SPI_INTERFACES_COUNT > 5 + || (hwspi._spi == &SPI5) +#endif +#endif // end SPI_INTERFACES_COUNT + ) { + hwspi._spi->begin(); + } + } else if (connection == TFT_SOFT_SPI) { + + pinMode(swspi._mosi, OUTPUT); + digitalWrite(swspi._mosi, LOW); + pinMode(swspi._sck, OUTPUT); + digitalWrite(swspi._sck, LOW); + if (swspi._miso >= 0) { + pinMode(swspi._miso, INPUT); + } + + } else { // TFT_PARALLEL + // Initialize data pins. We were only passed d0, so scan + // the pin description list looking for the other pins. + // They'll be on the same PORT, and within the next 7 (or 15) bits + // (because we need to write to a contiguous PORT byte or word). +#if defined(__AVR__) + // PORT registers are 8 bits wide, so just need a register match... + for (uint8_t i = 0; i < NUM_DIGITAL_PINS; i++) { + if ((PORTreg_t)portOutputRegister(digitalPinToPort(i)) == + tft8.writePort) { + pinMode(i, OUTPUT); + digitalWrite(i, LOW); + } + } +#elif defined(USE_FAST_PINIO) +#if defined(CORE_TEENSY) + if (!tft8.wide) { + *tft8.dirSet = 0xFF; // Set port to output + *tft8.writePort = 0x00; // Write all 0s + } else { + *(volatile uint16_t *)tft8.dirSet = 0xFFFF; + *(volatile uint16_t *)tft8.writePort = 0x0000; + } +#else // !CORE_TEENSY + uint8_t portNum = g_APinDescription[tft8._d0].ulPort, // d0 PORT # + dBit = g_APinDescription[tft8._d0].ulPin, // d0 bit in PORT + lastBit = dBit + (tft8.wide ? 15 : 7); + for (uint8_t i = 0; i < PINS_COUNT; i++) { + if ((g_APinDescription[i].ulPort == portNum) && + (g_APinDescription[i].ulPin >= dBit) && + (g_APinDescription[i].ulPin <= (uint32_t)lastBit)) { + pinMode(i, OUTPUT); + digitalWrite(i, LOW); + } + } +#endif // end !CORE_TEENSY +#endif + pinMode(tft8._wr, OUTPUT); + digitalWrite(tft8._wr, HIGH); + if (tft8._rd >= 0) { + pinMode(tft8._rd, OUTPUT); + digitalWrite(tft8._rd, HIGH); + } + } + + if (_rst >= 0) { + // Toggle _rst low to reset + pinMode(_rst, OUTPUT); + digitalWrite(_rst, HIGH); + delay(100); + digitalWrite(_rst, LOW); + delay(100); + digitalWrite(_rst, HIGH); + delay(200); + } + +#if defined(USE_SPI_DMA) && (defined(__SAMD51__) || defined(ARDUINO_SAMD_ZERO)) + if (((connection == TFT_HARD_SPI) || (connection == TFT_PARALLEL)) && + (dma.allocate() == DMA_STATUS_OK)) { // Allocate channel + // The DMA library needs to alloc at least one valid descriptor, + // so we do that here. It's not used in the usual sense though, + // just before a transfer we copy descriptor[0] to this address. + if (dptr = dma.addDescriptor(NULL, NULL, 42, DMA_BEAT_SIZE_BYTE, false, + false)) { + // Alloc 2 scanlines worth of pixels on display's major axis, + // whichever that is, rounding each up to 2-pixel boundary. + int major = (WIDTH > HEIGHT) ? WIDTH : HEIGHT; + major += (major & 1); // -> next 2-pixel bound, if needed. + maxFillLen = major * 2; // 2 scanlines + // Note to future self: if you decide to make the pixel buffer + // much larger, remember that DMA transfer descriptors can't + // exceed 65,535 bytes (not 65,536), meaning 32,767 pixels max. + // Not that we have that kind of RAM to throw around right now. + if ((pixelBuf[0] = (uint16_t *)malloc(maxFillLen * sizeof(uint16_t)))) { + // Alloc OK. Get pointer to start of second scanline. + pixelBuf[1] = &pixelBuf[0][major]; + // Determine number of DMA descriptors needed to cover + // entire screen when entire 2-line pixelBuf is used + // (round up for fractional last descriptor). + int numDescriptors = (WIDTH * HEIGHT + (maxFillLen - 1)) / maxFillLen; + // DMA descriptors MUST be 128-bit (16 byte) aligned. + // memalign() is considered obsolete but it's replacements + // (aligned_alloc() or posix_memalign()) are not currently + // available in the version of ARM GCC in use, but this + // is, so here we are. + if ((descriptor = (DmacDescriptor *)memalign( + 16, numDescriptors * sizeof(DmacDescriptor)))) { + int dmac_id; + volatile uint32_t *data_reg; + + if (connection == TFT_HARD_SPI) { + // THIS IS AN AFFRONT TO NATURE, but I don't know + // any "clean" way to get the sercom number from the + // the SPIClass pointer (e.g. &SPI or &SPI1), which + // is all we have to work with. SPIClass does contain + // a SERCOM pointer but it is a PRIVATE member! + // Doing an UNSPEAKABLY HORRIBLE THING here, directly + // accessing the first 32-bit value in the SPIClass + // structure, knowing that's (currently) where the + // SERCOM pointer lives, but this ENTIRELY DEPENDS on + // that structure not changing nor the compiler + // rearranging things. Oh the humanity! + + if (*(SERCOM **)hwspi._spi == &sercom0) { + dmac_id = SERCOM0_DMAC_ID_TX; + data_reg = &SERCOM0->SPI.DATA.reg; +#if defined SERCOM1 + } else if (*(SERCOM **)hwspi._spi == &sercom1) { + dmac_id = SERCOM1_DMAC_ID_TX; + data_reg = &SERCOM1->SPI.DATA.reg; +#endif +#if defined SERCOM2 + } else if (*(SERCOM **)hwspi._spi == &sercom2) { + dmac_id = SERCOM2_DMAC_ID_TX; + data_reg = &SERCOM2->SPI.DATA.reg; +#endif +#if defined SERCOM3 + } else if (*(SERCOM **)hwspi._spi == &sercom3) { + dmac_id = SERCOM3_DMAC_ID_TX; + data_reg = &SERCOM3->SPI.DATA.reg; +#endif +#if defined SERCOM4 + } else if (*(SERCOM **)hwspi._spi == &sercom4) { + dmac_id = SERCOM4_DMAC_ID_TX; + data_reg = &SERCOM4->SPI.DATA.reg; +#endif +#if defined SERCOM5 + } else if (*(SERCOM **)hwspi._spi == &sercom5) { + dmac_id = SERCOM5_DMAC_ID_TX; + data_reg = &SERCOM5->SPI.DATA.reg; +#endif +#if defined SERCOM6 + } else if (*(SERCOM **)hwspi._spi == &sercom6) { + dmac_id = SERCOM6_DMAC_ID_TX; + data_reg = &SERCOM6->SPI.DATA.reg; +#endif +#if defined SERCOM7 + } else if (*(SERCOM **)hwspi._spi == &sercom7) { + dmac_id = SERCOM7_DMAC_ID_TX; + data_reg = &SERCOM7->SPI.DATA.reg; +#endif + } + dma.setPriority(DMA_PRIORITY_3); + dma.setTrigger(dmac_id); + dma.setAction(DMA_TRIGGER_ACTON_BEAT); + + // Initialize descriptor list. + for (int d = 0; d < numDescriptors; d++) { + // No need to set SRCADDR, DESCADDR or BTCNT -- + // those are done in the pixel-writing functions. + descriptor[d].BTCTRL.bit.VALID = true; + descriptor[d].BTCTRL.bit.EVOSEL = DMA_EVENT_OUTPUT_DISABLE; + descriptor[d].BTCTRL.bit.BLOCKACT = DMA_BLOCK_ACTION_NOACT; + descriptor[d].BTCTRL.bit.BEATSIZE = DMA_BEAT_SIZE_BYTE; + descriptor[d].BTCTRL.bit.DSTINC = 0; + descriptor[d].BTCTRL.bit.STEPSEL = DMA_STEPSEL_SRC; + descriptor[d].BTCTRL.bit.STEPSIZE = + DMA_ADDRESS_INCREMENT_STEP_SIZE_1; + descriptor[d].DSTADDR.reg = (uint32_t)data_reg; + } + + } else { // Parallel connection + +#if defined(__SAMD51__) + int dmaChannel = dma.getChannel(); + // Enable event output, use EVOSEL output + DMAC->Channel[dmaChannel].CHEVCTRL.bit.EVOE = 1; + DMAC->Channel[dmaChannel].CHEVCTRL.bit.EVOMODE = 0; + + // CONFIGURE TIMER/COUNTER (for write strobe) + + Tc *timer = tcList[tcNum].tc; // -> Timer struct + int id = tcList[tcNum].gclk; // Timer GCLK ID + GCLK_PCHCTRL_Type pchctrl; + + // Set up timer clock source from GCLK + GCLK->PCHCTRL[id].bit.CHEN = 0; // Stop timer + while (GCLK->PCHCTRL[id].bit.CHEN) + ; // Wait for it + pchctrl.bit.GEN = GCLK_PCHCTRL_GEN_GCLK0_Val; + pchctrl.bit.CHEN = 1; // Enable + GCLK->PCHCTRL[id].reg = pchctrl.reg; + while (!GCLK->PCHCTRL[id].bit.CHEN) + ; // Wait for it + + // Disable timer/counter before configuring it + timer->COUNT8.CTRLA.bit.ENABLE = 0; + while (timer->COUNT8.SYNCBUSY.bit.STATUS) + ; + + timer->COUNT8.WAVE.bit.WAVEGEN = 2; // NPWM + timer->COUNT8.CTRLA.bit.MODE = 1; // 8-bit + timer->COUNT8.CTRLA.bit.PRESCALER = 0; // 1:1 + while (timer->COUNT8.SYNCBUSY.bit.STATUS) + ; + + timer->COUNT8.CTRLBCLR.bit.DIR = 1; // Count UP + while (timer->COUNT8.SYNCBUSY.bit.CTRLB) + ; + timer->COUNT8.CTRLBSET.bit.ONESHOT = 1; // One-shot + while (timer->COUNT8.SYNCBUSY.bit.CTRLB) + ; + timer->COUNT8.PER.reg = 6; // PWM top + while (timer->COUNT8.SYNCBUSY.bit.PER) + ; + timer->COUNT8.CC[0].reg = 2; // Compare + while (timer->COUNT8.SYNCBUSY.bit.CC0) + ; + // Enable async input events, + // event action = restart. + timer->COUNT8.EVCTRL.bit.TCEI = 1; + timer->COUNT8.EVCTRL.bit.EVACT = 1; + + // Enable timer + timer->COUNT8.CTRLA.reg |= TC_CTRLA_ENABLE; + while (timer->COUNT8.SYNCBUSY.bit.STATUS) + ; + +#if (wrPeripheral == PIO_CCL) + // CONFIGURE CCL (inverts timer/counter output) + + MCLK->APBCMASK.bit.CCL_ = 1; // Enable CCL clock + CCL->CTRL.bit.ENABLE = 0; // Disable to config + CCL->CTRL.bit.SWRST = 1; // Reset CCL registers + CCL->LUTCTRL[tcNum].bit.ENABLE = 0; // Disable LUT + CCL->LUTCTRL[tcNum].bit.FILTSEL = 0; // No filter + CCL->LUTCTRL[tcNum].bit.INSEL0 = 6; // TC input + CCL->LUTCTRL[tcNum].bit.INSEL1 = 0; // MASK + CCL->LUTCTRL[tcNum].bit.INSEL2 = 0; // MASK + CCL->LUTCTRL[tcNum].bit.TRUTH = 1; // Invert in 0 + CCL->LUTCTRL[tcNum].bit.ENABLE = 1; // Enable LUT + CCL->CTRL.bit.ENABLE = 1; // Enable CCL +#endif + + // CONFIGURE EVENT SYSTEM + + // Set up event system clock source from GCLK... + // Disable EVSYS, wait for disable + GCLK->PCHCTRL[EVSYS_GCLK_ID_0].bit.CHEN = 0; + while (GCLK->PCHCTRL[EVSYS_GCLK_ID_0].bit.CHEN) + ; + pchctrl.bit.GEN = GCLK_PCHCTRL_GEN_GCLK0_Val; + pchctrl.bit.CHEN = 1; // Re-enable + GCLK->PCHCTRL[EVSYS_GCLK_ID_0].reg = pchctrl.reg; + // Wait for it, then enable EVSYS clock + while (!GCLK->PCHCTRL[EVSYS_GCLK_ID_0].bit.CHEN) + ; + MCLK->APBBMASK.bit.EVSYS_ = 1; + + // Connect Timer EVU to ch 0 + EVSYS->USER[tcList[tcNum].evu].reg = 1; + // Datasheet recommends single write operation; + // reg instead of bit. Also datasheet: PATH bits + // must be zero when using async! + EVSYS_CHANNEL_Type ev; + ev.reg = 0; + ev.bit.PATH = 2; // Asynchronous + ev.bit.EVGEN = 0x22 + dmaChannel; // DMA channel 0+ + EVSYS->Channel[0].CHANNEL.reg = ev.reg; + + // Initialize descriptor list. + for (int d = 0; d < numDescriptors; d++) { + // No need to set SRCADDR, DESCADDR or BTCNT -- + // those are done in the pixel-writing functions. + descriptor[d].BTCTRL.bit.VALID = true; + // Event strobe on beat xfer: + descriptor[d].BTCTRL.bit.EVOSEL = 0x3; + descriptor[d].BTCTRL.bit.BLOCKACT = DMA_BLOCK_ACTION_NOACT; + descriptor[d].BTCTRL.bit.BEATSIZE = + tft8.wide ? DMA_BEAT_SIZE_HWORD : DMA_BEAT_SIZE_BYTE; + descriptor[d].BTCTRL.bit.SRCINC = 1; + descriptor[d].BTCTRL.bit.DSTINC = 0; + descriptor[d].BTCTRL.bit.STEPSEL = DMA_STEPSEL_SRC; + descriptor[d].BTCTRL.bit.STEPSIZE = + DMA_ADDRESS_INCREMENT_STEP_SIZE_1; + descriptor[d].DSTADDR.reg = (uint32_t)tft8.writePort; + } +#endif // __SAMD51 + } // end parallel-specific DMA setup + + lastFillColor = 0x0000; + lastFillLen = 0; + dma.setCallback(dma_callback); + return; // Success! + // else clean up any partial allocation... + } // end descriptor memalign() + free(pixelBuf[0]); + pixelBuf[0] = pixelBuf[1] = NULL; + } // end pixelBuf malloc() + // Don't currently have a descriptor delete function in + // ZeroDMA lib, but if we did, it would be called here. + } // end addDescriptor() + dma.free(); // Deallocate DMA channel + } +#endif // end USE_SPI_DMA +} + +/*! + @brief Allow changing the SPI clock speed after initialization + @param freq Desired frequency of SPI clock, may not be the + end frequency you get based on what the chip can do! +*/ +void Adafruit_SPITFT::setSPISpeed(uint32_t freq) { +#if defined(SPI_HAS_TRANSACTION) + hwspi.settings = SPISettings(freq, MSBFIRST, hwspi._mode); +#else + hwspi._freq = freq; // Save freq value for later +#endif +} + +/*! + @brief Call before issuing command(s) or data to display. Performs + chip-select (if required) and starts an SPI transaction (if + using hardware SPI and transactions are supported). Required + for all display types; not an SPI-specific function. +*/ +void Adafruit_SPITFT::startWrite(void) { + SPI_BEGIN_TRANSACTION(); + if (_cs >= 0) + SPI_CS_LOW(); +} + +/*! + @brief Call after issuing command(s) or data to display. Performs + chip-deselect (if required) and ends an SPI transaction (if + using hardware SPI and transactions are supported). Required + for all display types; not an SPI-specific function. +*/ +void Adafruit_SPITFT::endWrite(void) { + if (_cs >= 0) + SPI_CS_HIGH(); + SPI_END_TRANSACTION(); +} + +// ------------------------------------------------------------------------- +// Lower-level graphics operations. These functions require a chip-select +// and/or SPI transaction around them (via startWrite(), endWrite() above). +// Higher-level graphics primitives might start a single transaction and +// then make multiple calls to these functions (e.g. circle or text +// rendering might make repeated lines or rects) before ending the +// transaction. It's more efficient than starting a transaction every time. + +/*! + @brief Draw a single pixel to the display at requested coordinates. + Not self-contained; should follow a startWrite() call. + @param x Horizontal position (0 = left). + @param y Vertical position (0 = top). + @param color 16-bit pixel color in '565' RGB format. +*/ +void Adafruit_SPITFT::writePixel(int16_t x, int16_t y, uint16_t color) { + if ((x >= 0) && (x < _width) && (y >= 0) && (y < _height)) { + setAddrWindow(x, y, 1, 1); + SPI_WRITE16(color); + } +} + +/*! + @brief Swap bytes in an array of pixels; converts little-to-big or + big-to-little endian. Used by writePixels() below in some + situations, but may also be helpful for user code occasionally. + @param src Source address of 16-bit pixels buffer. + @param len Number of pixels to byte-swap. + @param dest Optional destination address if different than src -- + otherwise, if NULL (default) or same address is passed, + pixel buffer is overwritten in-place. +*/ +void Adafruit_SPITFT::swapBytes(uint16_t *src, uint32_t len, uint16_t *dest) { + if (!dest) + dest = src; // NULL -> overwrite src buffer + for (uint32_t i = 0; i < len; i++) { + dest[i] = __builtin_bswap16(src[i]); + } +} + +/*! + @brief Issue a series of pixels from memory to the display. Not self- + contained; should follow startWrite() and setAddrWindow() calls. + @param colors Pointer to array of 16-bit pixel values in '565' RGB + format. + @param len Number of elements in 'colors' array. + @param block If true (default case if unspecified), function blocks + until DMA transfer is complete. This is simply IGNORED + if DMA is not enabled. If false, the function returns + immediately after the last DMA transfer is started, + and one should use the dmaWait() function before + doing ANY other display-related activities (or even + any SPI-related activities, if using an SPI display + that shares the bus with other devices). + @param bigEndian If true, bitmap in memory is in big-endian order (most + significant byte first). By default this is false, as + most microcontrollers seem to be little-endian and + 16-bit pixel values must be byte-swapped before + issuing to the display (which tend toward big-endian + when using SPI or 8-bit parallel). If an application + can optimize around this -- for example, a bitmap in a + uint16_t array having the byte values already ordered + big-endian, this can save time here, ESPECIALLY if + using this function's non-blocking DMA mode. +*/ +void Adafruit_SPITFT::writePixels(uint16_t *colors, uint32_t len, bool block, + bool bigEndian) { + + if (!len) + return; // Avoid 0-byte transfers + + // avoid paramater-not-used complaints + (void)block; + (void)bigEndian; + +#if defined(ESP32) + if (connection == TFT_HARD_SPI) { + if (!bigEndian) { + hwspi._spi->writePixels(colors, len * 2); // Inbuilt endian-swap + } else { + hwspi._spi->writeBytes((uint8_t *)colors, len * 2); // Issue bytes direct + } + return; + } +#elif defined(ARDUINO_NRF52_ADAFRUIT) && \ + defined(NRF52840_XXAA) // Adafruit nRF52 use SPIM3 DMA at 32Mhz + if (!bigEndian) { + swapBytes(colors, len); // convert little-to-big endian for display + } + hwspi._spi->transfer(colors, NULL, 2 * len); // NULL RX to avoid overwrite + if (!bigEndian) { + swapBytes(colors, len); // big-to-little endian to restore pixel buffer + } + + return; +#elif defined(ARDUINO_ARCH_RP2040) + spi_inst_t *pi_spi = hwspi._spi == &SPI ? __SPI0_DEVICE : __SPI1_DEVICE; + + if (!bigEndian) { + // switch to 16-bit writes + hw_write_masked(&spi_get_hw(pi_spi)->cr0, 15 << SPI_SSPCR0_DSS_LSB, + SPI_SSPCR0_DSS_BITS); + spi_write16_blocking(pi_spi, colors, len); + // switch back to 8-bit + hw_write_masked(&spi_get_hw(pi_spi)->cr0, 7 << SPI_SSPCR0_DSS_LSB, + SPI_SSPCR0_DSS_BITS); + } else { + spi_write_blocking(pi_spi, (uint8_t *)colors, len * 2); + } + return; +#elif defined(ARDUINO_ARCH_RTTHREAD) + if (!bigEndian) { + swapBytes(colors, len); // convert little-to-big endian for display + } + hwspi._spi->transfer(colors, 2 * len); + if (!bigEndian) { + swapBytes(colors, len); // big-to-little endian to restore pixel buffer + } + return; +#elif defined(USE_SPI_DMA) && \ + (defined(__SAMD51__) || defined(ARDUINO_SAMD_ZERO)) + if ((connection == TFT_HARD_SPI) || (connection == TFT_PARALLEL)) { + int maxSpan = maxFillLen / 2; // One scanline max + uint8_t pixelBufIdx = 0; // Active pixel buffer number +#if defined(__SAMD51__) + if (connection == TFT_PARALLEL) { + // Switch WR pin to PWM or CCL + pinPeripheral(tft8._wr, wrPeripheral); + } +#endif // end __SAMD51__ + if (!bigEndian) { // Normal little-endian situation... + while (len) { + int count = (len < maxSpan) ? len : maxSpan; + + // Because TFT and SAMD endianisms are different, must swap + // bytes from the 'colors' array passed into a DMA working + // buffer. This can take place while the prior DMA transfer + // is in progress, hence the need for two pixelBufs. + swapBytes(colors, count, pixelBuf[pixelBufIdx]); + colors += count; + + // The transfers themselves are relatively small, so we don't + // need a long descriptor list. We just alternate between the + // first two, sharing pixelBufIdx for that purpose. + descriptor[pixelBufIdx].SRCADDR.reg = + (uint32_t)pixelBuf[pixelBufIdx] + count * 2; + descriptor[pixelBufIdx].BTCTRL.bit.SRCINC = 1; + descriptor[pixelBufIdx].BTCNT.reg = count * 2; + descriptor[pixelBufIdx].DESCADDR.reg = 0; + + while (dma_busy) + ; // Wait for prior line to finish + + // Move new descriptor into place... + memcpy(dptr, &descriptor[pixelBufIdx], sizeof(DmacDescriptor)); + dma_busy = true; + dma.startJob(); // Trigger SPI DMA transfer + if (connection == TFT_PARALLEL) + dma.trigger(); + pixelBufIdx = 1 - pixelBufIdx; // Swap DMA pixel buffers + + len -= count; + } + } else { // bigEndian == true + // With big-endian pixel data, this can be handled as a single + // DMA transfer using chained descriptors. Even full screen, this + // needs only a relatively short descriptor list, each + // transferring a max of 32,767 (not 32,768) pixels. The list + // was allocated large enough to accommodate a full screen's + // worth of data, so this won't run past the end of the list. + int d, numDescriptors = (len + 32766) / 32767; + for (d = 0; d < numDescriptors; d++) { + int count = (len < 32767) ? len : 32767; + descriptor[d].SRCADDR.reg = (uint32_t)colors + count * 2; + descriptor[d].BTCTRL.bit.SRCINC = 1; + descriptor[d].BTCNT.reg = count * 2; + descriptor[d].DESCADDR.reg = (uint32_t)&descriptor[d + 1]; + len -= count; + colors += count; + } + descriptor[d - 1].DESCADDR.reg = 0; + + while (dma_busy) + ; // Wait for prior transfer (if any) to finish + + // Move first descriptor into place and start transfer... + memcpy(dptr, &descriptor[0], sizeof(DmacDescriptor)); + dma_busy = true; + dma.startJob(); // Trigger SPI DMA transfer + if (connection == TFT_PARALLEL) + dma.trigger(); + } // end bigEndian + + lastFillColor = 0x0000; // pixelBuf has been sullied + lastFillLen = 0; + if (block) { + while (dma_busy) + ; // Wait for last line to complete +#if defined(__SAMD51__) || defined(ARDUINO_SAMD_ZERO) + if (connection == TFT_HARD_SPI) { + // See SAMD51/21 note in writeColor() + hwspi._spi->setDataMode(hwspi._mode); + } else { + pinPeripheral(tft8._wr, PIO_OUTPUT); // Switch WR back to GPIO + } +#endif // end __SAMD51__ || ARDUINO_SAMD_ZERO + } + return; + } +#endif // end USE_SPI_DMA + + // All other cases (bitbang SPI or non-DMA hard SPI or parallel), + // use a loop with the normal 16-bit data write function: + + if (!bigEndian) { + while (len--) { + SPI_WRITE16(*colors++); + } + } else { + // Well this is awkward. SPI_WRITE16() was designed for little-endian + // hosts and big-endian displays as that's nearly always the typical + // case. If the bigEndian flag was set, data is already in display's + // order...so each pixel needs byte-swapping before being issued. + // Rather than having a separate big-endian SPI_WRITE16 (adding more + // bloat), it's preferred if calling function is smart and only uses + // bigEndian where DMA is supported. But we gotta handle this... + while (len--) { + SPI_WRITE16(__builtin_bswap16(*colors++)); + } + } +} + +/*! + @brief Wait for the last DMA transfer in a prior non-blocking + writePixels() call to complete. This does nothing if DMA + is not enabled, and is not needed if blocking writePixels() + was used (as is the default case). +*/ +void Adafruit_SPITFT::dmaWait(void) { +#if defined(USE_SPI_DMA) && (defined(__SAMD51__) || defined(ARDUINO_SAMD_ZERO)) + while (dma_busy) + ; +#if defined(__SAMD51__) || defined(ARDUINO_SAMD_ZERO) + if (connection == TFT_HARD_SPI) { + // See SAMD51/21 note in writeColor() + hwspi._spi->setDataMode(hwspi._mode); + } else { + pinPeripheral(tft8._wr, PIO_OUTPUT); // Switch WR back to GPIO + } +#endif // end __SAMD51__ || ARDUINO_SAMD_ZERO +#endif +} + +/*! + @brief Check if DMA transfer is active. Always returts false if DMA + is not enabled. + @return true if DMA is enabled and transmitting data, false otherwise. +*/ +bool Adafruit_SPITFT::dmaBusy(void) const { +#if defined(USE_SPI_DMA) && (defined(__SAMD51__) || defined(ARDUINO_SAMD_ZERO)) + return dma_busy; +#else + return false; +#endif +} + +/*! + @brief Issue a series of pixels, all the same color. Not self- + contained; should follow startWrite() and setAddrWindow() calls. + @param color 16-bit pixel color in '565' RGB format. + @param len Number of pixels to draw. +*/ +void Adafruit_SPITFT::writeColor(uint16_t color, uint32_t len) { + + if (!len) + return; // Avoid 0-byte transfers + + uint8_t hi = color >> 8, lo = color; + +#if defined(ESP32) // ESP32 has a special SPI pixel-writing function... + if (connection == TFT_HARD_SPI) { +#define SPI_MAX_PIXELS_AT_ONCE 32 +#define TMPBUF_LONGWORDS (SPI_MAX_PIXELS_AT_ONCE + 1) / 2 +#define TMPBUF_PIXELS (TMPBUF_LONGWORDS * 2) + static uint32_t temp[TMPBUF_LONGWORDS]; + uint32_t c32 = color * 0x00010001; + uint16_t bufLen = (len < TMPBUF_PIXELS) ? len : TMPBUF_PIXELS, xferLen, + fillLen; + // Fill temp buffer 32 bits at a time + fillLen = (bufLen + 1) / 2; // Round up to next 32-bit boundary + for (uint32_t t = 0; t < fillLen; t++) { + temp[t] = c32; + } + // Issue pixels in blocks from temp buffer + while (len) { // While pixels remain + xferLen = (bufLen < len) ? bufLen : len; // How many this pass? + writePixels((uint16_t *)temp, xferLen); + len -= xferLen; + } + return; + } +#elif defined(ARDUINO_NRF52_ADAFRUIT) && \ + defined(NRF52840_XXAA) // Adafruit nRF52840 use SPIM3 DMA at 32Mhz + // at most 2 scan lines + uint32_t const pixbufcount = min(len, ((uint32_t)2 * width())); + uint16_t *pixbuf = (uint16_t *)rtos_malloc(2 * pixbufcount); + + // use SPI3 DMA if we could allocate buffer, else fall back to writing each + // pixel loop below + if (pixbuf) { + uint16_t const swap_color = __builtin_bswap16(color); + + // fill buffer with color + for (uint32_t i = 0; i < pixbufcount; i++) { + pixbuf[i] = swap_color; + } + + while (len) { + uint32_t const count = min(len, pixbufcount); + writePixels(pixbuf, count, true, true); + len -= count; + } + + rtos_free(pixbuf); + return; + } +#elif defined(ARDUINO_ARCH_RTTHREAD) + uint16_t pixbufcount; + uint16_t *pixbuf; + int16_t lines = height() / 4; +#define QUICKPATH_MAX_LEN 16 + uint16_t quickpath_buffer[QUICKPATH_MAX_LEN]; + + do { + pixbufcount = min(len, (lines * width())); + if (pixbufcount > QUICKPATH_MAX_LEN) { + pixbuf = (uint16_t *)rt_malloc(2 * pixbufcount); + } else { + pixbuf = quickpath_buffer; + } + lines -= 2; + } while (!pixbuf && lines > 0); + + if (pixbuf) { + uint16_t const swap_color = __builtin_bswap16(color); + + while (len) { + uint16_t count = min(len, pixbufcount); + // fill buffer with color + for (uint16_t i = 0; i < count; i++) { + pixbuf[i] = swap_color; + } + // Don't need to swap color inside the function + // It has been done outside this function + writePixels(pixbuf, count, true, true); + len -= count; + } + if (pixbufcount > QUICKPATH_MAX_LEN) { + rt_free(pixbuf); + } +#undef QUICKPATH_MAX_LEN + return; + } +#else // !ESP32 +#if defined(USE_SPI_DMA) && (defined(__SAMD51__) || defined(ARDUINO_SAMD_ZERO)) + if (((connection == TFT_HARD_SPI) || (connection == TFT_PARALLEL)) && + (len >= 16)) { // Don't bother with DMA on short pixel runs + int i, d, numDescriptors; + if (hi == lo) { // If high & low bytes are same... + onePixelBuf = color; + // Can do this with a relatively short descriptor list, + // each transferring a max of 32,767 (not 32,768) pixels. + // This won't run off the end of the allocated descriptor list, + // since we're using much larger chunks per descriptor here. + numDescriptors = (len + 32766) / 32767; + for (d = 0; d < numDescriptors; d++) { + int count = (len < 32767) ? len : 32767; + descriptor[d].SRCADDR.reg = (uint32_t)&onePixelBuf; + descriptor[d].BTCTRL.bit.SRCINC = 0; + descriptor[d].BTCNT.reg = count * 2; + descriptor[d].DESCADDR.reg = (uint32_t)&descriptor[d + 1]; + len -= count; + } + descriptor[d - 1].DESCADDR.reg = 0; + } else { + // If high and low bytes are distinct, it's necessary to fill + // a buffer with pixel data (swapping high and low bytes because + // TFT and SAMD are different endianisms) and create a longer + // descriptor list pointing repeatedly to this data. We can do + // this slightly faster working 2 pixels (32 bits) at a time. + uint32_t *pixelPtr = (uint32_t *)pixelBuf[0], + twoPixels = __builtin_bswap16(color) * 0x00010001; + // We can avoid some or all of the buffer-filling if the color + // is the same as last time... + if (color == lastFillColor) { + // If length is longer than prior instance, fill only the + // additional pixels in the buffer and update lastFillLen. + if (len > lastFillLen) { + int fillStart = lastFillLen / 2, + fillEnd = (((len < maxFillLen) ? len : maxFillLen) + 1) / 2; + for (i = fillStart; i < fillEnd; i++) + pixelPtr[i] = twoPixels; + lastFillLen = fillEnd * 2; + } // else do nothing, don't set pixels or change lastFillLen + } else { + int fillEnd = (((len < maxFillLen) ? len : maxFillLen) + 1) / 2; + for (i = 0; i < fillEnd; i++) + pixelPtr[i] = twoPixels; + lastFillLen = fillEnd * 2; + lastFillColor = color; + } + + numDescriptors = (len + maxFillLen - 1) / maxFillLen; + for (d = 0; d < numDescriptors; d++) { + int pixels = (len < maxFillLen) ? len : maxFillLen, bytes = pixels * 2; + descriptor[d].SRCADDR.reg = (uint32_t)pixelPtr + bytes; + descriptor[d].BTCTRL.bit.SRCINC = 1; + descriptor[d].BTCNT.reg = bytes; + descriptor[d].DESCADDR.reg = (uint32_t)&descriptor[d + 1]; + len -= pixels; + } + descriptor[d - 1].DESCADDR.reg = 0; + } + memcpy(dptr, &descriptor[0], sizeof(DmacDescriptor)); +#if defined(__SAMD51__) + if (connection == TFT_PARALLEL) { + // Switch WR pin to PWM or CCL + pinPeripheral(tft8._wr, wrPeripheral); + } +#endif // end __SAMD51__ + + dma_busy = true; + dma.startJob(); + if (connection == TFT_PARALLEL) + dma.trigger(); + while (dma_busy) + ; // Wait for completion + // Unfortunately blocking is necessary. An earlier version returned + // immediately and checked dma_busy on startWrite() instead, but it + // turns out to be MUCH slower on many graphics operations (as when + // drawing lines, pixel-by-pixel), perhaps because it's a volatile + // type and doesn't cache. Working on this. +#if defined(__SAMD51__) || defined(ARDUINO_SAMD_ZERO) + if (connection == TFT_HARD_SPI) { + // SAMD51: SPI DMA seems to leave the SPI peripheral in a freaky + // state on completion. Workaround is to explicitly set it back... + // (5/17/2019: apparently SAMD21 too, in certain cases, observed + // with ST7789 display.) + hwspi._spi->setDataMode(hwspi._mode); + } else { + pinPeripheral(tft8._wr, PIO_OUTPUT); // Switch WR back to GPIO + } +#endif // end __SAMD51__ + return; + } +#endif // end USE_SPI_DMA +#endif // end !ESP32 + + // All other cases (non-DMA hard SPI, bitbang SPI, parallel)... + + if (connection == TFT_HARD_SPI) { +#if defined(ESP8266) + do { + uint32_t pixelsThisPass = len; + if (pixelsThisPass > 50000) + pixelsThisPass = 50000; + len -= pixelsThisPass; + delay(1); // Periodic delay on long fills + while (pixelsThisPass--) { + hwspi._spi->write(hi); + hwspi._spi->write(lo); + } + } while (len); +#elif defined(ARDUINO_ARCH_RP2040) + spi_inst_t *pi_spi = hwspi._spi == &SPI ? __SPI0_DEVICE : __SPI1_DEVICE; + color = __builtin_bswap16(color); + + while (len--) + spi_write_blocking(pi_spi, (uint8_t *)&color, 2); +#else // !ESP8266 && !ARDUINO_ARCH_RP2040 + while (len--) { +#if defined(__AVR__) + AVR_WRITESPI(hi); + AVR_WRITESPI(lo); +#elif defined(ESP32) + hwspi._spi->write(hi); + hwspi._spi->write(lo); +#else + hwspi._spi->transfer(hi); + hwspi._spi->transfer(lo); +#endif + } +#endif // end !ESP8266 + } else if (connection == TFT_SOFT_SPI) { +#if defined(ESP8266) + do { + uint32_t pixelsThisPass = len; + if (pixelsThisPass > 20000) + pixelsThisPass = 20000; + len -= pixelsThisPass; + yield(); // Periodic yield() on long fills + while (pixelsThisPass--) { + for (uint16_t bit = 0, x = color; bit < 16; bit++) { + if (x & 0x8000) + SPI_MOSI_HIGH(); + else + SPI_MOSI_LOW(); + SPI_SCK_HIGH(); + SPI_SCK_LOW(); + x <<= 1; + } + } + } while (len); +#else // !ESP8266 + while (len--) { +#if defined(__AVR__) + for (uint8_t bit = 0, x = hi; bit < 8; bit++) { + if (x & 0x80) + SPI_MOSI_HIGH(); + else + SPI_MOSI_LOW(); + SPI_SCK_HIGH(); + SPI_SCK_LOW(); + x <<= 1; + } + for (uint8_t bit = 0, x = lo; bit < 8; bit++) { + if (x & 0x80) + SPI_MOSI_HIGH(); + else + SPI_MOSI_LOW(); + SPI_SCK_HIGH(); + SPI_SCK_LOW(); + x <<= 1; + } +#else // !__AVR__ + for (uint16_t bit = 0, x = color; bit < 16; bit++) { + if (x & 0x8000) + SPI_MOSI_HIGH(); + else + SPI_MOSI_LOW(); + SPI_SCK_HIGH(); + x <<= 1; + SPI_SCK_LOW(); + } +#endif // end !__AVR__ + } +#endif // end !ESP8266 + } else { // PARALLEL + if (hi == lo) { +#if defined(__AVR__) + len *= 2; + *tft8.writePort = hi; + while (len--) { + TFT_WR_STROBE(); + } +#elif defined(USE_FAST_PINIO) + if (!tft8.wide) { + len *= 2; + *tft8.writePort = hi; + } else { + *(volatile uint16_t *)tft8.writePort = color; + } + while (len--) { + TFT_WR_STROBE(); + } +#endif + } else { + while (len--) { +#if defined(__AVR__) + *tft8.writePort = hi; + TFT_WR_STROBE(); + *tft8.writePort = lo; +#elif defined(USE_FAST_PINIO) + if (!tft8.wide) { + *tft8.writePort = hi; + TFT_WR_STROBE(); + *tft8.writePort = lo; + } else { + *(volatile uint16_t *)tft8.writePort = color; + } +#endif + TFT_WR_STROBE(); + } + } + } +} + +/*! + @brief Draw a filled rectangle to the display. Not self-contained; + should follow startWrite(). Typically used by higher-level + graphics primitives; user code shouldn't need to call this and + is likely to use the self-contained fillRect() instead. + writeFillRect() performs its own edge clipping and rejection; + see writeFillRectPreclipped() for a more 'raw' implementation. + @param x Horizontal position of first corner. + @param y Vertical position of first corner. + @param w Rectangle width in pixels (positive = right of first + corner, negative = left of first corner). + @param h Rectangle height in pixels (positive = below first + corner, negative = above first corner). + @param color 16-bit fill color in '565' RGB format. + @note Written in this deep-nested way because C by definition will + optimize for the 'if' case, not the 'else' -- avoids branches + and rejects clipped rectangles at the least-work possibility. +*/ +void Adafruit_SPITFT::writeFillRect(int16_t x, int16_t y, int16_t w, int16_t h, + uint16_t color) { + if (w && h) { // Nonzero width and height? + if (w < 0) { // If negative width... + x += w + 1; // Move X to left edge + w = -w; // Use positive width + } + if (x < _width) { // Not off right + if (h < 0) { // If negative height... + y += h + 1; // Move Y to top edge + h = -h; // Use positive height + } + if (y < _height) { // Not off bottom + int16_t x2 = x + w - 1; + if (x2 >= 0) { // Not off left + int16_t y2 = y + h - 1; + if (y2 >= 0) { // Not off top + // Rectangle partly or fully overlaps screen + if (x < 0) { + x = 0; + w = x2 + 1; + } // Clip left + if (y < 0) { + y = 0; + h = y2 + 1; + } // Clip top + if (x2 >= _width) { + w = _width - x; + } // Clip right + if (y2 >= _height) { + h = _height - y; + } // Clip bottom + writeFillRectPreclipped(x, y, w, h, color); + } + } + } + } + } +} + +/*! + @brief Draw a horizontal line on the display. Performs edge clipping + and rejection. Not self-contained; should follow startWrite(). + Typically used by higher-level graphics primitives; user code + shouldn't need to call this and is likely to use the self- + contained drawFastHLine() instead. + @param x Horizontal position of first point. + @param y Vertical position of first point. + @param w Line width in pixels (positive = right of first point, + negative = point of first corner). + @param color 16-bit line color in '565' RGB format. +*/ +void inline Adafruit_SPITFT::writeFastHLine(int16_t x, int16_t y, int16_t w, + uint16_t color) { + if ((y >= 0) && (y < _height) && w) { // Y on screen, nonzero width + if (w < 0) { // If negative width... + x += w + 1; // Move X to left edge + w = -w; // Use positive width + } + if (x < _width) { // Not off right + int16_t x2 = x + w - 1; + if (x2 >= 0) { // Not off left + // Line partly or fully overlaps screen + if (x < 0) { + x = 0; + w = x2 + 1; + } // Clip left + if (x2 >= _width) { + w = _width - x; + } // Clip right + writeFillRectPreclipped(x, y, w, 1, color); + } + } + } +} + +/*! + @brief Draw a vertical line on the display. Performs edge clipping and + rejection. Not self-contained; should follow startWrite(). + Typically used by higher-level graphics primitives; user code + shouldn't need to call this and is likely to use the self- + contained drawFastVLine() instead. + @param x Horizontal position of first point. + @param y Vertical position of first point. + @param h Line height in pixels (positive = below first point, + negative = above first point). + @param color 16-bit line color in '565' RGB format. +*/ +void inline Adafruit_SPITFT::writeFastVLine(int16_t x, int16_t y, int16_t h, + uint16_t color) { + if ((x >= 0) && (x < _width) && h) { // X on screen, nonzero height + if (h < 0) { // If negative height... + y += h + 1; // Move Y to top edge + h = -h; // Use positive height + } + if (y < _height) { // Not off bottom + int16_t y2 = y + h - 1; + if (y2 >= 0) { // Not off top + // Line partly or fully overlaps screen + if (y < 0) { + y = 0; + h = y2 + 1; + } // Clip top + if (y2 >= _height) { + h = _height - y; + } // Clip bottom + writeFillRectPreclipped(x, y, 1, h, color); + } + } + } +} + +/*! + @brief A lower-level version of writeFillRect(). This version requires + all inputs are in-bounds, that width and height are positive, + and no part extends offscreen. NO EDGE CLIPPING OR REJECTION IS + PERFORMED. If higher-level graphics primitives are written to + handle their own clipping earlier in the drawing process, this + can avoid unnecessary function calls and repeated clipping + operations in the lower-level functions. + @param x Horizontal position of first corner. MUST BE WITHIN + SCREEN BOUNDS. + @param y Vertical position of first corner. MUST BE WITHIN SCREEN + BOUNDS. + @param w Rectangle width in pixels. MUST BE POSITIVE AND NOT + EXTEND OFF SCREEN. + @param h Rectangle height in pixels. MUST BE POSITIVE AND NOT + EXTEND OFF SCREEN. + @param color 16-bit fill color in '565' RGB format. + @note This is a new function, no graphics primitives besides rects + and horizontal/vertical lines are written to best use this yet. +*/ +inline void Adafruit_SPITFT::writeFillRectPreclipped(int16_t x, int16_t y, + int16_t w, int16_t h, + uint16_t color) { + setAddrWindow(x, y, w, h); + writeColor(color, (uint32_t)w * h); +} + +// ------------------------------------------------------------------------- +// Ever-so-slightly higher-level graphics operations. Similar to the 'write' +// functions above, but these contain their own chip-select and SPI +// transactions as needed (via startWrite(), endWrite()). They're typically +// used solo -- as graphics primitives in themselves, not invoked by higher- +// level primitives (which should use the functions above for better +// performance). + +/*! + @brief Draw a single pixel to the display at requested coordinates. + Self-contained and provides its own transaction as needed + (see writePixel(x,y,color) for a lower-level variant). + Edge clipping is performed here. + @param x Horizontal position (0 = left). + @param y Vertical position (0 = top). + @param color 16-bit pixel color in '565' RGB format. +*/ +void Adafruit_SPITFT::drawPixel(int16_t x, int16_t y, uint16_t color) { + // Clip first... + if ((x >= 0) && (x < _width) && (y >= 0) && (y < _height)) { + // THEN set up transaction (if needed) and draw... + startWrite(); + setAddrWindow(x, y, 1, 1); + SPI_WRITE16(color); + endWrite(); + } +} + +/*! + @brief Draw a filled rectangle to the display. Self-contained and + provides its own transaction as needed (see writeFillRect() or + writeFillRectPreclipped() for lower-level variants). Edge + clipping and rejection is performed here. + @param x Horizontal position of first corner. + @param y Vertical position of first corner. + @param w Rectangle width in pixels (positive = right of first + corner, negative = left of first corner). + @param h Rectangle height in pixels (positive = below first + corner, negative = above first corner). + @param color 16-bit fill color in '565' RGB format. + @note This repeats the writeFillRect() function almost in its entirety, + with the addition of a transaction start/end. It's done this way + (rather than starting the transaction and calling writeFillRect() + to handle clipping and so forth) so that the transaction isn't + performed at all if the rectangle is rejected. It's really not + that much code. +*/ +void Adafruit_SPITFT::fillRect(int16_t x, int16_t y, int16_t w, int16_t h, + uint16_t color) { + if (w && h) { // Nonzero width and height? + if (w < 0) { // If negative width... + x += w + 1; // Move X to left edge + w = -w; // Use positive width + } + if (x < _width) { // Not off right + if (h < 0) { // If negative height... + y += h + 1; // Move Y to top edge + h = -h; // Use positive height + } + if (y < _height) { // Not off bottom + int16_t x2 = x + w - 1; + if (x2 >= 0) { // Not off left + int16_t y2 = y + h - 1; + if (y2 >= 0) { // Not off top + // Rectangle partly or fully overlaps screen + if (x < 0) { + x = 0; + w = x2 + 1; + } // Clip left + if (y < 0) { + y = 0; + h = y2 + 1; + } // Clip top + if (x2 >= _width) { + w = _width - x; + } // Clip right + if (y2 >= _height) { + h = _height - y; + } // Clip bottom + startWrite(); + writeFillRectPreclipped(x, y, w, h, color); + endWrite(); + } + } + } + } + } +} + +/*! + @brief Draw a horizontal line on the display. Self-contained and + provides its own transaction as needed (see writeFastHLine() for + a lower-level variant). Edge clipping and rejection is performed + here. + @param x Horizontal position of first point. + @param y Vertical position of first point. + @param w Line width in pixels (positive = right of first point, + negative = point of first corner). + @param color 16-bit line color in '565' RGB format. + @note This repeats the writeFastHLine() function almost in its + entirety, with the addition of a transaction start/end. It's + done this way (rather than starting the transaction and calling + writeFastHLine() to handle clipping and so forth) so that the + transaction isn't performed at all if the line is rejected. +*/ +void Adafruit_SPITFT::drawFastHLine(int16_t x, int16_t y, int16_t w, + uint16_t color) { + if ((y >= 0) && (y < _height) && w) { // Y on screen, nonzero width + if (w < 0) { // If negative width... + x += w + 1; // Move X to left edge + w = -w; // Use positive width + } + if (x < _width) { // Not off right + int16_t x2 = x + w - 1; + if (x2 >= 0) { // Not off left + // Line partly or fully overlaps screen + if (x < 0) { + x = 0; + w = x2 + 1; + } // Clip left + if (x2 >= _width) { + w = _width - x; + } // Clip right + startWrite(); + writeFillRectPreclipped(x, y, w, 1, color); + endWrite(); + } + } + } +} + +/*! + @brief Draw a vertical line on the display. Self-contained and provides + its own transaction as needed (see writeFastHLine() for a lower- + level variant). Edge clipping and rejection is performed here. + @param x Horizontal position of first point. + @param y Vertical position of first point. + @param h Line height in pixels (positive = below first point, + negative = above first point). + @param color 16-bit line color in '565' RGB format. + @note This repeats the writeFastVLine() function almost in its + entirety, with the addition of a transaction start/end. It's + done this way (rather than starting the transaction and calling + writeFastVLine() to handle clipping and so forth) so that the + transaction isn't performed at all if the line is rejected. +*/ +void Adafruit_SPITFT::drawFastVLine(int16_t x, int16_t y, int16_t h, + uint16_t color) { + if ((x >= 0) && (x < _width) && h) { // X on screen, nonzero height + if (h < 0) { // If negative height... + y += h + 1; // Move Y to top edge + h = -h; // Use positive height + } + if (y < _height) { // Not off bottom + int16_t y2 = y + h - 1; + if (y2 >= 0) { // Not off top + // Line partly or fully overlaps screen + if (y < 0) { + y = 0; + h = y2 + 1; + } // Clip top + if (y2 >= _height) { + h = _height - y; + } // Clip bottom + startWrite(); + writeFillRectPreclipped(x, y, 1, h, color); + endWrite(); + } + } + } +} + +/*! + @brief Essentially writePixel() with a transaction around it. I don't + think this is in use by any of our code anymore (believe it was + for some older BMP-reading examples), but is kept here in case + any user code relies on it. Consider it DEPRECATED. + @param color 16-bit pixel color in '565' RGB format. +*/ +void Adafruit_SPITFT::pushColor(uint16_t color) { + startWrite(); + SPI_WRITE16(color); + endWrite(); +} + +/*! + @brief Draw a 16-bit image (565 RGB) at the specified (x,y) position. + For 16-bit display devices; no color reduction performed. + Adapted from https://github.com/PaulStoffregen/ILI9341_t3 + by Marc MERLIN. See examples/pictureEmbed to use this. + 5/6/2017: function name and arguments have changed for + compatibility with current GFX library and to avoid naming + problems in prior implementation. Formerly drawBitmap() with + arguments in different order. Handles its own transaction and + edge clipping/rejection. + @param x Top left corner horizontal coordinate. + @param y Top left corner vertical coordinate. + @param pcolors Pointer to 16-bit array of pixel values. + @param w Width of bitmap in pixels. + @param h Height of bitmap in pixels. +*/ +void Adafruit_SPITFT::drawRGBBitmap(int16_t x, int16_t y, uint16_t *pcolors, + int16_t w, int16_t h) { + + int16_t x2, y2; // Lower-right coord + if ((x >= _width) || // Off-edge right + (y >= _height) || // " top + ((x2 = (x + w - 1)) < 0) || // " left + ((y2 = (y + h - 1)) < 0)) + return; // " bottom + + int16_t bx1 = 0, by1 = 0, // Clipped top-left within bitmap + saveW = w; // Save original bitmap width value + if (x < 0) { // Clip left + w += x; + bx1 = -x; + x = 0; + } + if (y < 0) { // Clip top + h += y; + by1 = -y; + y = 0; + } + if (x2 >= _width) + w = _width - x; // Clip right + if (y2 >= _height) + h = _height - y; // Clip bottom + + pcolors += by1 * saveW + bx1; // Offset bitmap ptr to clipped top-left + startWrite(); + setAddrWindow(x, y, w, h); // Clipped area + while (h--) { // For each (clipped) scanline... + writePixels(pcolors, w); // Push one (clipped) row + pcolors += saveW; // Advance pointer by one full (unclipped) line + } + endWrite(); +} + +// ------------------------------------------------------------------------- +// Miscellaneous class member functions that don't draw anything. + +/*! + @brief Invert the colors of the display (if supported by hardware). + Self-contained, no transaction setup required. + @param i true = inverted display, false = normal display. +*/ +void Adafruit_SPITFT::invertDisplay(bool i) { + startWrite(); + writeCommand(i ? invertOnCommand : invertOffCommand); + endWrite(); +} + +/*! + @brief Given 8-bit red, green and blue values, return a 'packed' + 16-bit color value in '565' RGB format (5 bits red, 6 bits + green, 5 bits blue). This is just a mathematical operation, + no hardware is touched. + @param red 8-bit red brightnesss (0 = off, 255 = max). + @param green 8-bit green brightnesss (0 = off, 255 = max). + @param blue 8-bit blue brightnesss (0 = off, 255 = max). + @return 'Packed' 16-bit color value (565 format). +*/ +uint16_t Adafruit_SPITFT::color565(uint8_t red, uint8_t green, uint8_t blue) { + return ((red & 0xF8) << 8) | ((green & 0xFC) << 3) | (blue >> 3); +} + +/*! +@brief Adafruit_SPITFT Send Command handles complete sending of commands and +data +@param commandByte The Command Byte +@param dataBytes A pointer to the Data bytes to send +@param numDataBytes The number of bytes we should send +*/ +void Adafruit_SPITFT::sendCommand(uint8_t commandByte, uint8_t *dataBytes, + uint8_t numDataBytes) { + SPI_BEGIN_TRANSACTION(); + if (_cs >= 0) + SPI_CS_LOW(); + + SPI_DC_LOW(); // Command mode + spiWrite(commandByte); // Send the command byte + + SPI_DC_HIGH(); + for (int i = 0; i < numDataBytes; i++) { + if ((connection == TFT_PARALLEL) && tft8.wide) { + SPI_WRITE16(*(uint16_t *)dataBytes); + dataBytes += 2; + } else { + spiWrite(*dataBytes); // Send the data bytes + dataBytes++; + } + } + + if (_cs >= 0) + SPI_CS_HIGH(); + SPI_END_TRANSACTION(); +} + +/*! + @brief Adafruit_SPITFT Send Command handles complete sending of commands and + data + @param commandByte The Command Byte + @param dataBytes A pointer to the Data bytes to send + @param numDataBytes The number of bytes we should send + */ +void Adafruit_SPITFT::sendCommand(uint8_t commandByte, const uint8_t *dataBytes, + uint8_t numDataBytes) { + SPI_BEGIN_TRANSACTION(); + if (_cs >= 0) + SPI_CS_LOW(); + + SPI_DC_LOW(); // Command mode + spiWrite(commandByte); // Send the command byte + + SPI_DC_HIGH(); + for (int i = 0; i < numDataBytes; i++) { + if ((connection == TFT_PARALLEL) && tft8.wide) { + SPI_WRITE16(*(uint16_t *)dataBytes); + dataBytes += 2; + } else { + spiWrite(pgm_read_byte(dataBytes++)); + } + } + + if (_cs >= 0) + SPI_CS_HIGH(); + SPI_END_TRANSACTION(); +} + +/*! + @brief Adafruit_SPITFT sendCommand16 handles complete sending of + commands and data for 16-bit parallel displays. Currently somewhat + rigged for the NT35510, which has the odd behavior of wanting + commands 16-bit, but subsequent data as 8-bit values, despite + the 16-bit bus (high byte is always 0). Also seems to require + issuing and incrementing address with each transfer. + @param commandWord The command word (16 bits) + @param dataBytes A pointer to the data bytes to send + @param numDataBytes The number of bytes we should send + */ +void Adafruit_SPITFT::sendCommand16(uint16_t commandWord, + const uint8_t *dataBytes, + uint8_t numDataBytes) { + SPI_BEGIN_TRANSACTION(); + if (_cs >= 0) + SPI_CS_LOW(); + + if (numDataBytes == 0) { + SPI_DC_LOW(); // Command mode + SPI_WRITE16(commandWord); // Send the command word + SPI_DC_HIGH(); // Data mode + } + for (int i = 0; i < numDataBytes; i++) { + SPI_DC_LOW(); // Command mode + SPI_WRITE16(commandWord); // Send the command word + SPI_DC_HIGH(); // Data mode + commandWord++; + SPI_WRITE16((uint16_t)pgm_read_byte(dataBytes++)); + } + + if (_cs >= 0) + SPI_CS_HIGH(); + SPI_END_TRANSACTION(); +} + +/*! + @brief Read 8 bits of data from display configuration memory (not RAM). + This is highly undocumented/supported and should be avoided, + function is only included because some of the examples use it. + @param commandByte + The command register to read data from. + @param index + The byte index into the command to read from. + @return Unsigned 8-bit data read from display register. + */ +/**************************************************************************/ +uint8_t Adafruit_SPITFT::readcommand8(uint8_t commandByte, uint8_t index) { + uint8_t result; + startWrite(); + SPI_DC_LOW(); // Command mode + spiWrite(commandByte); + SPI_DC_HIGH(); // Data mode + do { + result = spiRead(); + } while (index--); // Discard bytes up to index'th + endWrite(); + return result; +} + +/*! + @brief Read 16 bits of data from display register. + For 16-bit parallel displays only. + @param addr Command/register to access. + @return Unsigned 16-bit data. + */ +uint16_t Adafruit_SPITFT::readcommand16(uint16_t addr) { +#if defined(USE_FAST_PINIO) // NOT SUPPORTED without USE_FAST_PINIO + uint16_t result = 0; + if ((connection == TFT_PARALLEL) && tft8.wide) { + startWrite(); + SPI_DC_LOW(); // Command mode + SPI_WRITE16(addr); + SPI_DC_HIGH(); // Data mode + TFT_RD_LOW(); // Read line LOW +#if defined(HAS_PORT_SET_CLR) + *(volatile uint16_t *)tft8.dirClr = 0xFFFF; // Input state + result = *(volatile uint16_t *)tft8.readPort; // 16-bit read + *(volatile uint16_t *)tft8.dirSet = 0xFFFF; // Output state +#else // !HAS_PORT_SET_CLR + *(volatile uint16_t *)tft8.portDir = 0x0000; // Input state + result = *(volatile uint16_t *)tft8.readPort; // 16-bit read + *(volatile uint16_t *)tft8.portDir = 0xFFFF; // Output state +#endif // end !HAS_PORT_SET_CLR + TFT_RD_HIGH(); // Read line HIGH + endWrite(); + } + return result; +#else + (void)addr; // disable -Wunused-parameter warning + return 0; +#endif // end !USE_FAST_PINIO +} + +// ------------------------------------------------------------------------- +// Lowest-level hardware-interfacing functions. Many of these are inline and +// compile to different things based on #defines -- typically just a few +// instructions. Others, not so much, those are not inlined. + +/*! + @brief Start an SPI transaction if using the hardware SPI interface to + the display. If using an earlier version of the Arduino platform + (before the addition of SPI transactions), this instead attempts + to set up the SPI clock and mode. No action is taken if the + connection is not hardware SPI-based. This does NOT include a + chip-select operation -- see startWrite() for a function that + encapsulated both actions. +*/ +inline void Adafruit_SPITFT::SPI_BEGIN_TRANSACTION(void) { + if (connection == TFT_HARD_SPI) { +#if defined(SPI_HAS_TRANSACTION) + hwspi._spi->beginTransaction(hwspi.settings); +#else // No transactions, configure SPI manually... +#if defined(__AVR__) || defined(TEENSYDUINO) || defined(ARDUINO_ARCH_STM32F1) + hwspi._spi->setClockDivider(SPI_CLOCK_DIV2); +#elif defined(__arm__) + hwspi._spi->setClockDivider(11); +#elif defined(ESP8266) || defined(ESP32) + hwspi._spi->setFrequency(hwspi._freq); +#elif defined(RASPI) || defined(ARDUINO_ARCH_STM32F1) + hwspi._spi->setClock(hwspi._freq); +#endif + hwspi._spi->setBitOrder(MSBFIRST); + hwspi._spi->setDataMode(hwspi._mode); +#endif // end !SPI_HAS_TRANSACTION + } +} + +/*! + @brief End an SPI transaction if using the hardware SPI interface to + the display. No action is taken if the connection is not + hardware SPI-based or if using an earlier version of the Arduino + platform (before the addition of SPI transactions). This does + NOT include a chip-deselect operation -- see endWrite() for a + function that encapsulated both actions. +*/ +inline void Adafruit_SPITFT::SPI_END_TRANSACTION(void) { +#if defined(SPI_HAS_TRANSACTION) + if (connection == TFT_HARD_SPI) { + hwspi._spi->endTransaction(); + } +#endif +} + +/*! + @brief Issue a single 8-bit value to the display. Chip-select, + transaction and data/command selection must have been + previously set -- this ONLY issues the byte. This is another of + those functions in the library with a now-not-accurate name + that's being maintained for compatibility with outside code. + This function is used even if display connection is parallel. + @param b 8-bit value to write. +*/ +void Adafruit_SPITFT::spiWrite(uint8_t b) { + if (connection == TFT_HARD_SPI) { +#if defined(__AVR__) + AVR_WRITESPI(b); +#elif defined(ESP8266) || defined(ESP32) + hwspi._spi->write(b); +#elif defined(ARDUINO_ARCH_RP2040) + spi_inst_t *pi_spi = hwspi._spi == &SPI ? __SPI0_DEVICE : __SPI1_DEVICE; + spi_write_blocking(pi_spi, &b, 1); +#else + hwspi._spi->transfer(b); +#endif + } else if (connection == TFT_SOFT_SPI) { + for (uint8_t bit = 0; bit < 8; bit++) { + if (b & 0x80) + SPI_MOSI_HIGH(); + else + SPI_MOSI_LOW(); + SPI_SCK_HIGH(); + b <<= 1; + SPI_SCK_LOW(); + } + } else { // TFT_PARALLEL +#if defined(__AVR__) + *tft8.writePort = b; +#elif defined(USE_FAST_PINIO) + if (!tft8.wide) + *tft8.writePort = b; + else + *(volatile uint16_t *)tft8.writePort = b; +#endif + TFT_WR_STROBE(); + } +} + +/*! + @brief Write a single command byte to the display. Chip-select and + transaction must have been previously set -- this ONLY sets + the device to COMMAND mode, issues the byte and then restores + DATA mode. There is no corresponding explicit writeData() + function -- just use spiWrite(). + @param cmd 8-bit command to write. +*/ +void Adafruit_SPITFT::writeCommand(uint8_t cmd) { + SPI_DC_LOW(); + spiWrite(cmd); + SPI_DC_HIGH(); +} + +/*! + @brief Read a single 8-bit value from the display. Chip-select and + transaction must have been previously set -- this ONLY reads + the byte. This is another of those functions in the library + with a now-not-accurate name that's being maintained for + compatibility with outside code. This function is used even if + display connection is parallel. + @return Unsigned 8-bit value read (always zero if USE_FAST_PINIO is + not supported by the MCU architecture). +*/ +uint8_t Adafruit_SPITFT::spiRead(void) { + uint8_t b = 0; + uint16_t w = 0; + if (connection == TFT_HARD_SPI) { + return hwspi._spi->transfer((uint8_t)0); + } else if (connection == TFT_SOFT_SPI) { + if (swspi._miso >= 0) { + for (uint8_t i = 0; i < 8; i++) { + SPI_SCK_HIGH(); + b <<= 1; + if (SPI_MISO_READ()) + b++; + SPI_SCK_LOW(); + } + } + return b; + } else { // TFT_PARALLEL + if (tft8._rd >= 0) { +#if defined(USE_FAST_PINIO) + TFT_RD_LOW(); // Read line LOW +#if defined(__AVR__) + *tft8.portDir = 0x00; // Set port to input state + w = *tft8.readPort; // Read value from port + *tft8.portDir = 0xFF; // Restore port to output +#else // !__AVR__ + if (!tft8.wide) { // 8-bit TFT connection +#if defined(HAS_PORT_SET_CLR) + *tft8.dirClr = 0xFF; // Set port to input state + w = *tft8.readPort; // Read value from port + *tft8.dirSet = 0xFF; // Restore port to output +#else // !HAS_PORT_SET_CLR + *tft8.portDir = 0x00; // Set port to input state + w = *tft8.readPort; // Read value from port + *tft8.portDir = 0xFF; // Restore port to output +#endif // end HAS_PORT_SET_CLR + } else { // 16-bit TFT connection +#if defined(HAS_PORT_SET_CLR) + *(volatile uint16_t *)tft8.dirClr = 0xFFFF; // Input state + w = *(volatile uint16_t *)tft8.readPort; // 16-bit read + *(volatile uint16_t *)tft8.dirSet = 0xFFFF; // Output state +#else // !HAS_PORT_SET_CLR + *(volatile uint16_t *)tft8.portDir = 0x0000; // Input state + w = *(volatile uint16_t *)tft8.readPort; // 16-bit read + *(volatile uint16_t *)tft8.portDir = 0xFFFF; // Output state +#endif // end !HAS_PORT_SET_CLR + } + TFT_RD_HIGH(); // Read line HIGH +#endif // end !__AVR__ +#else // !USE_FAST_PINIO + w = 0; // Parallel TFT is NOT SUPPORTED without USE_FAST_PINIO +#endif // end !USE_FAST_PINIO + } + return w; + } +} + +/*! + @brief Issue a single 16-bit value to the display. Chip-select, + transaction and data/command selection must have been + previously set -- this ONLY issues the word. + Thus operates ONLY on 'wide' (16-bit) parallel displays! + @param w 16-bit value to write. +*/ +void Adafruit_SPITFT::write16(uint16_t w) { + if (connection == TFT_PARALLEL) { +#if defined(USE_FAST_PINIO) + if (tft8.wide) + *(volatile uint16_t *)tft8.writePort = w; +#else + (void)w; // disable -Wunused-parameter warning +#endif + TFT_WR_STROBE(); + } +} + +/*! + @brief Write a single command word to the display. Chip-select and + transaction must have been previously set -- this ONLY sets + the device to COMMAND mode, issues the byte and then restores + DATA mode. This operates ONLY on 'wide' (16-bit) parallel + displays! + @param cmd 16-bit command to write. +*/ +void Adafruit_SPITFT::writeCommand16(uint16_t cmd) { + SPI_DC_LOW(); + write16(cmd); + SPI_DC_HIGH(); +} + +/*! + @brief Read a single 16-bit value from the display. Chip-select and + transaction must have been previously set -- this ONLY reads + the byte. This operates ONLY on 'wide' (16-bit) parallel + displays! + @return Unsigned 16-bit value read (always zero if USE_FAST_PINIO is + not supported by the MCU architecture). +*/ +uint16_t Adafruit_SPITFT::read16(void) { + uint16_t w = 0; + if (connection == TFT_PARALLEL) { + if (tft8._rd >= 0) { +#if defined(USE_FAST_PINIO) + TFT_RD_LOW(); // Read line LOW + if (tft8.wide) { // 16-bit TFT connection +#if defined(HAS_PORT_SET_CLR) + *(volatile uint16_t *)tft8.dirClr = 0xFFFF; // Input state + w = *(volatile uint16_t *)tft8.readPort; // 16-bit read + *(volatile uint16_t *)tft8.dirSet = 0xFFFF; // Output state +#else // !HAS_PORT_SET_CLR + *(volatile uint16_t *)tft8.portDir = 0x0000; // Input state + w = *(volatile uint16_t *)tft8.readPort; // 16-bit read + *(volatile uint16_t *)tft8.portDir = 0xFFFF; // Output state +#endif // end !HAS_PORT_SET_CLR + } + TFT_RD_HIGH(); // Read line HIGH +#else // !USE_FAST_PINIO + w = 0; // Parallel TFT is NOT SUPPORTED without USE_FAST_PINIO +#endif // end !USE_FAST_PINIO + } + } + return w; +} + +/*! + @brief Set the software (bitbang) SPI MOSI line HIGH. +*/ +inline void Adafruit_SPITFT::SPI_MOSI_HIGH(void) { +#if defined(USE_FAST_PINIO) +#if defined(HAS_PORT_SET_CLR) +#if defined(KINETISK) + *swspi.mosiPortSet = 1; +#else // !KINETISK + *swspi.mosiPortSet = swspi.mosiPinMask; +#endif +#else // !HAS_PORT_SET_CLR + *swspi.mosiPort |= swspi.mosiPinMaskSet; +#endif // end !HAS_PORT_SET_CLR +#else // !USE_FAST_PINIO + digitalWrite(swspi._mosi, HIGH); +#endif // end !USE_FAST_PINIO +} + +/*! + @brief Set the software (bitbang) SPI MOSI line LOW. +*/ +inline void Adafruit_SPITFT::SPI_MOSI_LOW(void) { +#if defined(USE_FAST_PINIO) +#if defined(HAS_PORT_SET_CLR) +#if defined(KINETISK) + *swspi.mosiPortClr = 1; +#else // !KINETISK + *swspi.mosiPortClr = swspi.mosiPinMask; +#endif +#else // !HAS_PORT_SET_CLR + *swspi.mosiPort &= swspi.mosiPinMaskClr; +#endif // end !HAS_PORT_SET_CLR +#else // !USE_FAST_PINIO + digitalWrite(swspi._mosi, LOW); +#endif // end !USE_FAST_PINIO +} + +/*! + @brief Set the software (bitbang) SPI SCK line HIGH. +*/ +inline void Adafruit_SPITFT::SPI_SCK_HIGH(void) { +#if defined(USE_FAST_PINIO) +#if defined(HAS_PORT_SET_CLR) +#if defined(KINETISK) + *swspi.sckPortSet = 1; +#else // !KINETISK + *swspi.sckPortSet = swspi.sckPinMask; +#endif +#else // !HAS_PORT_SET_CLR + *swspi.sckPort |= swspi.sckPinMaskSet; +#endif // end !HAS_PORT_SET_CLR +#else // !USE_FAST_PINIO + digitalWrite(swspi._sck, HIGH); +#endif // end !USE_FAST_PINIO +} + +/*! + @brief Set the software (bitbang) SPI SCK line LOW. +*/ +inline void Adafruit_SPITFT::SPI_SCK_LOW(void) { +#if defined(USE_FAST_PINIO) +#if defined(HAS_PORT_SET_CLR) +#if defined(KINETISK) + *swspi.sckPortClr = 1; +#else // !KINETISK + *swspi.sckPortClr = swspi.sckPinMask; +#endif +#else // !HAS_PORT_SET_CLR + *swspi.sckPort &= swspi.sckPinMaskClr; +#endif // end !HAS_PORT_SET_CLR +#else // !USE_FAST_PINIO + digitalWrite(swspi._sck, LOW); +#endif // end !USE_FAST_PINIO +} + +/*! + @brief Read the state of the software (bitbang) SPI MISO line. + @return true if HIGH, false if LOW. +*/ +inline bool Adafruit_SPITFT::SPI_MISO_READ(void) { +#if defined(USE_FAST_PINIO) +#if defined(KINETISK) + return *swspi.misoPort; +#else // !KINETISK + return *swspi.misoPort & swspi.misoPinMask; +#endif // end !KINETISK +#else // !USE_FAST_PINIO + return digitalRead(swspi._miso); +#endif // end !USE_FAST_PINIO +} + +/*! + @brief Issue a single 16-bit value to the display. Chip-select, + transaction and data/command selection must have been + previously set -- this ONLY issues the word. Despite the name, + this function is used even if display connection is parallel; + name was maintaned for backward compatibility. Naming is also + not consistent with the 8-bit version, spiWrite(). Sorry about + that. Again, staying compatible with outside code. + @param w 16-bit value to write. +*/ +void Adafruit_SPITFT::SPI_WRITE16(uint16_t w) { + if (connection == TFT_HARD_SPI) { +#if defined(__AVR__) + AVR_WRITESPI(w >> 8); + AVR_WRITESPI(w); +#elif defined(ESP8266) || defined(ESP32) + hwspi._spi->write16(w); +#elif defined(ARDUINO_ARCH_RP2040) + spi_inst_t *pi_spi = hwspi._spi == &SPI ? __SPI0_DEVICE : __SPI1_DEVICE; + w = __builtin_bswap16(w); + spi_write_blocking(pi_spi, (uint8_t *)&w, 2); +#elif defined(ARDUINO_ARCH_RTTHREAD) + hwspi._spi->transfer16(w); +#else + // MSB, LSB because TFTs are generally big-endian + hwspi._spi->transfer(w >> 8); + hwspi._spi->transfer(w); +#endif + } else if (connection == TFT_SOFT_SPI) { + for (uint8_t bit = 0; bit < 16; bit++) { + if (w & 0x8000) + SPI_MOSI_HIGH(); + else + SPI_MOSI_LOW(); + SPI_SCK_HIGH(); + SPI_SCK_LOW(); + w <<= 1; + } + } else { // TFT_PARALLEL +#if defined(__AVR__) + *tft8.writePort = w >> 8; + TFT_WR_STROBE(); + *tft8.writePort = w; +#elif defined(USE_FAST_PINIO) + if (!tft8.wide) { + *tft8.writePort = w >> 8; + TFT_WR_STROBE(); + *tft8.writePort = w; + } else { + *(volatile uint16_t *)tft8.writePort = w; + } +#endif + TFT_WR_STROBE(); + } +} + +/*! + @brief Issue a single 32-bit value to the display. Chip-select, + transaction and data/command selection must have been + previously set -- this ONLY issues the longword. Despite the + name, this function is used even if display connection is + parallel; name was maintaned for backward compatibility. Naming + is also not consistent with the 8-bit version, spiWrite(). + Sorry about that. Again, staying compatible with outside code. + @param l 32-bit value to write. +*/ +void Adafruit_SPITFT::SPI_WRITE32(uint32_t l) { + if (connection == TFT_HARD_SPI) { +#if defined(__AVR__) + AVR_WRITESPI(l >> 24); + AVR_WRITESPI(l >> 16); + AVR_WRITESPI(l >> 8); + AVR_WRITESPI(l); +#elif defined(ESP8266) || defined(ESP32) + hwspi._spi->write32(l); +#elif defined(ARDUINO_ARCH_RP2040) + spi_inst_t *pi_spi = hwspi._spi == &SPI ? __SPI0_DEVICE : __SPI1_DEVICE; + l = __builtin_bswap32(l); + spi_write_blocking(pi_spi, (uint8_t *)&l, 4); +#elif defined(ARDUINO_ARCH_RTTHREAD) + hwspi._spi->transfer16(l >> 16); + hwspi._spi->transfer16(l); +#else + hwspi._spi->transfer(l >> 24); + hwspi._spi->transfer(l >> 16); + hwspi._spi->transfer(l >> 8); + hwspi._spi->transfer(l); +#endif + } else if (connection == TFT_SOFT_SPI) { + for (uint8_t bit = 0; bit < 32; bit++) { + if (l & 0x80000000) + SPI_MOSI_HIGH(); + else + SPI_MOSI_LOW(); + SPI_SCK_HIGH(); + SPI_SCK_LOW(); + l <<= 1; + } + } else { // TFT_PARALLEL +#if defined(__AVR__) + *tft8.writePort = l >> 24; + TFT_WR_STROBE(); + *tft8.writePort = l >> 16; + TFT_WR_STROBE(); + *tft8.writePort = l >> 8; + TFT_WR_STROBE(); + *tft8.writePort = l; +#elif defined(USE_FAST_PINIO) + if (!tft8.wide) { + *tft8.writePort = l >> 24; + TFT_WR_STROBE(); + *tft8.writePort = l >> 16; + TFT_WR_STROBE(); + *tft8.writePort = l >> 8; + TFT_WR_STROBE(); + *tft8.writePort = l; + } else { + *(volatile uint16_t *)tft8.writePort = l >> 16; + TFT_WR_STROBE(); + *(volatile uint16_t *)tft8.writePort = l; + } +#endif + TFT_WR_STROBE(); + } +} + +/*! + @brief Set the WR line LOW, then HIGH. Used for parallel-connected + interfaces when writing data. +*/ +inline void Adafruit_SPITFT::TFT_WR_STROBE(void) { +#if defined(USE_FAST_PINIO) +#if defined(HAS_PORT_SET_CLR) +#if defined(KINETISK) + *tft8.wrPortClr = 1; + *tft8.wrPortSet = 1; +#else // !KINETISK + *tft8.wrPortClr = tft8.wrPinMask; + *tft8.wrPortSet = tft8.wrPinMask; +#endif // end !KINETISK +#else // !HAS_PORT_SET_CLR + *tft8.wrPort &= tft8.wrPinMaskClr; + *tft8.wrPort |= tft8.wrPinMaskSet; +#endif // end !HAS_PORT_SET_CLR +#else // !USE_FAST_PINIO + digitalWrite(tft8._wr, LOW); + digitalWrite(tft8._wr, HIGH); +#endif // end !USE_FAST_PINIO +} + +/*! + @brief Set the RD line HIGH. Used for parallel-connected interfaces + when reading data. +*/ +inline void Adafruit_SPITFT::TFT_RD_HIGH(void) { +#if defined(USE_FAST_PINIO) +#if defined(HAS_PORT_SET_CLR) + *tft8.rdPortSet = tft8.rdPinMask; +#else // !HAS_PORT_SET_CLR + *tft8.rdPort |= tft8.rdPinMaskSet; +#endif // end !HAS_PORT_SET_CLR +#else // !USE_FAST_PINIO + digitalWrite(tft8._rd, HIGH); +#endif // end !USE_FAST_PINIO +} + +/*! + @brief Set the RD line LOW. Used for parallel-connected interfaces + when reading data. +*/ +inline void Adafruit_SPITFT::TFT_RD_LOW(void) { +#if defined(USE_FAST_PINIO) +#if defined(HAS_PORT_SET_CLR) + *tft8.rdPortClr = tft8.rdPinMask; +#else // !HAS_PORT_SET_CLR + *tft8.rdPort &= tft8.rdPinMaskClr; +#endif // end !HAS_PORT_SET_CLR +#else // !USE_FAST_PINIO + digitalWrite(tft8._rd, LOW); +#endif // end !USE_FAST_PINIO +} + +#endif // end __AVR_ATtiny85__ __AVR_ATtiny84__ diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Adafruit_SPITFT.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Adafruit_SPITFT.h new file mode 100644 index 0000000..7d0843e --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Adafruit_SPITFT.h @@ -0,0 +1,541 @@ +/*! + * @file Adafruit_SPITFT.h + * + * Part of Adafruit's GFX graphics library. Originally this class was + * written to handle a range of color TFT displays connected via SPI, + * but over time this library and some display-specific subclasses have + * mutated to include some color OLEDs as well as parallel-interfaced + * displays. The name's been kept for the sake of older code. + * + * 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 "ladyada" Fried for Adafruit Industries, + * with contributions from the open source community. + * + * BSD license, all text here must be included in any redistribution. + */ + +#ifndef _ADAFRUIT_SPITFT_H_ +#define _ADAFRUIT_SPITFT_H_ + +// Not for ATtiny, at all +#if !defined(__AVR_ATtiny85__) && !defined(__AVR_ATtiny84__) + +#include "Adafruit_GFX.h" +#include + +// HARDWARE CONFIG --------------------------------------------------------- + +#if defined(__AVR__) +typedef uint8_t ADAGFX_PORT_t; ///< PORT values are 8-bit +#define USE_FAST_PINIO ///< Use direct PORT register access +#elif defined(ARDUINO_STM32_FEATHER) // WICED +typedef class HardwareSPI SPIClass; ///< SPI is a bit odd on WICED +typedef uint32_t ADAGFX_PORT_t; ///< PORT values are 32-bit +#elif defined(__arm__) +#if defined(ARDUINO_ARCH_SAMD) +// Adafruit M0, M4 +typedef uint32_t ADAGFX_PORT_t; ///< PORT values are 32-bit +#define USE_FAST_PINIO ///< Use direct PORT register access +#define HAS_PORT_SET_CLR ///< PORTs have set & clear registers +#elif defined(CORE_TEENSY) +// PJRC Teensy 4.x +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) // Teensy 4.x +typedef uint32_t ADAGFX_PORT_t; ///< PORT values are 32-bit + // PJRC Teensy 3.x +#else +typedef uint8_t ADAGFX_PORT_t; ///< PORT values are 8-bit +#endif +#define USE_FAST_PINIO ///< Use direct PORT register access +#define HAS_PORT_SET_CLR ///< PORTs have set & clear registers +#else +// Arduino Due? +typedef uint32_t ADAGFX_PORT_t; ///< PORT values are 32-bit +// USE_FAST_PINIO not available here (yet)...Due has a totally different +// GPIO register set and will require some changes elsewhere (e.g. in +// constructors especially). +#endif +#else // !ARM +// Probably ESP8266 or ESP32. USE_FAST_PINIO is not available here (yet) +// but don't worry about it too much...the digitalWrite() implementation +// on these platforms is reasonably efficient and already RAM-resident, +// only gotcha then is no parallel connection support for now. +typedef uint32_t ADAGFX_PORT_t; ///< PORT values are 32-bit +#endif // end !ARM +typedef volatile ADAGFX_PORT_t *PORTreg_t; ///< PORT register type + +#if defined(__AVR__) && !defined(__LGT8F__) +#define DEFAULT_SPI_FREQ 8000000L ///< Hardware SPI default speed +#else +#define DEFAULT_SPI_FREQ 16000000L ///< Hardware SPI default speed +#endif + +#if defined(ADAFRUIT_PYPORTAL) || defined(ADAFRUIT_PYPORTAL_M4_TITANO) || \ + defined(ADAFRUIT_PYBADGE_M4_EXPRESS) || \ + defined(ADAFRUIT_PYGAMER_M4_EXPRESS) || \ + defined(ADAFRUIT_MONSTER_M4SK_EXPRESS) || defined(NRF52_SERIES) || \ + defined(ADAFRUIT_CIRCUITPLAYGROUND_M0) +#define USE_SPI_DMA ///< Auto DMA +#else + // #define USE_SPI_DMA ///< If set, + // use DMA if available +#endif +// Another "oops" name -- this now also handles parallel DMA. +// If DMA is enabled, Arduino sketch MUST #include +// Estimated RAM usage: +// 4 bytes/pixel on display major axis + 8 bytes/pixel on minor axis, +// e.g. 320x240 pixels = 320 * 4 + 240 * 8 = 3,200 bytes. + +#if defined(USE_SPI_DMA) && (defined(__SAMD51__) || defined(ARDUINO_SAMD_ZERO)) +#include +#endif + +// This is kind of a kludge. Needed a way to disambiguate the software SPI +// and parallel constructors via their argument lists. Originally tried a +// bool as the first argument to the parallel constructor (specifying 8-bit +// vs 16-bit interface) but the compiler regards this as equivalent to an +// integer and thus still ambiguous. SO...the parallel constructor requires +// an enumerated type as the first argument: tft8 (for 8-bit parallel) or +// tft16 (for 16-bit)...even though 16-bit isn't fully implemented or tested +// and might never be, still needed that disambiguation from soft SPI. +/*! For first arg to parallel constructor */ +enum tftBusWidth { tft8bitbus, tft16bitbus }; + +// SPI defaults for RP2040 +#if defined(ARDUINO_ARCH_RP2040) +#ifndef __SPI0_DEVICE +#define __SPI0_DEVICE spi0 +#endif +#ifndef __SPI1_DEVICE +#define __SPI1_DEVICE spi1 +#endif +#endif + +// CLASS DEFINITION -------------------------------------------------------- + +/*! + @brief Adafruit_SPITFT is an intermediary class between Adafruit_GFX + and various hardware-specific subclasses for different displays. + It handles certain operations that are common to a range of + displays (address window, area fills, etc.). Originally these were + all color TFT displays interfaced via SPI, but it's since expanded + to include color OLEDs and parallel-interfaced TFTs. THE NAME HAS + BEEN KEPT TO AVOID BREAKING A LOT OF SUBCLASSES AND EXAMPLE CODE. + Many of the class member functions similarly live on with names + that don't necessarily accurately describe what they're doing, + again to avoid breaking a lot of other code. If in doubt, read + the comments. +*/ +class Adafruit_SPITFT : public Adafruit_GFX { + +public: + // CONSTRUCTORS -------------------------------------------------------- + + // Software SPI constructor: expects width & height (at default rotation + // setting 0), 4 signal pins (cs, dc, mosi, sclk), 2 optional pins + // (reset, miso). cs argument is required but can be -1 if unused -- + // rather than moving it to the optional arguments, it was done this way + // to avoid breaking existing code (-1 option was a later addition). + Adafruit_SPITFT(uint16_t w, uint16_t h, int8_t cs, int8_t dc, int8_t mosi, + int8_t sck, int8_t rst = -1, int8_t miso = -1); + + // Hardware SPI constructor using the default SPI port: expects width & + // height (at default rotation setting 0), 2 signal pins (cs, dc), + // optional reset pin. cs is required but can be -1 if unused -- rather + // than moving it to the optional arguments, it was done this way to + // avoid breaking existing code (-1 option was a later addition). + Adafruit_SPITFT(uint16_t w, uint16_t h, int8_t cs, int8_t dc, + int8_t rst = -1); + +#if !defined(ESP8266) // See notes in .cpp + // Hardware SPI constructor using an arbitrary SPI peripheral: expects + // width & height (rotation 0), SPIClass pointer, 2 signal pins (cs, dc) + // and optional reset pin. cs is required but can be -1 if unused. + Adafruit_SPITFT(uint16_t w, uint16_t h, SPIClass *spiClass, int8_t cs, + int8_t dc, int8_t rst = -1); +#endif // end !ESP8266 + + // Parallel constructor: expects width & height (rotation 0), flag + // indicating whether 16-bit (true) or 8-bit (false) interface, 3 signal + // pins (d0, wr, dc), 3 optional pins (cs, rst, rd). 16-bit parallel + // isn't even fully implemented but the 'wide' flag was added as a + // required argument to avoid ambiguity with other constructors. + Adafruit_SPITFT(uint16_t w, uint16_t h, tftBusWidth busWidth, int8_t d0, + int8_t wr, int8_t dc, int8_t cs = -1, int8_t rst = -1, + int8_t rd = -1); + + // DESTRUCTOR ---------------------------------------------------------- + + ~Adafruit_SPITFT(){}; + + // CLASS MEMBER FUNCTIONS ---------------------------------------------- + + // These first two functions MUST be declared by subclasses: + + /*! + @brief Display-specific initialization function. + @param freq SPI frequency, in hz (or 0 for default or unused). + */ + virtual void begin(uint32_t freq) = 0; + + /*! + @brief Set up the specific display hardware's "address window" + for subsequent pixel-pushing operations. + @param x Leftmost pixel of area to be drawn (MUST be within + display bounds at current rotation setting). + @param y Topmost pixel of area to be drawn (MUST be within + display bounds at current rotation setting). + @param w Width of area to be drawn, in pixels (MUST be >0 and, + added to x, within display bounds at current rotation). + @param h Height of area to be drawn, in pixels (MUST be >0 and, + added to x, within display bounds at current rotation). + */ + virtual void setAddrWindow(uint16_t x, uint16_t y, uint16_t w, + uint16_t h) = 0; + + // Remaining functions do not need to be declared in subclasses + // unless they wish to provide hardware-specific optimizations. + // Brief comments here...documented more thoroughly in .cpp file. + + // Subclass' begin() function invokes this to initialize hardware. + // freq=0 to use default SPI speed. spiMode must be one of the SPI_MODEn + // values defined in SPI.h, which are NOT the same as 0 for SPI_MODE0, + // 1 for SPI_MODE1, etc...use ONLY the SPI_MODEn defines! Only! + // Name is outdated (interface may be parallel) but for compatibility: + void initSPI(uint32_t freq = 0, uint8_t spiMode = SPI_MODE0); + void setSPISpeed(uint32_t freq); + // Chip select and/or hardware SPI transaction start as needed: + void startWrite(void); + // Chip deselect and/or hardware SPI transaction end as needed: + void endWrite(void); + void sendCommand(uint8_t commandByte, uint8_t *dataBytes, + uint8_t numDataBytes); + void sendCommand(uint8_t commandByte, const uint8_t *dataBytes = NULL, + uint8_t numDataBytes = 0); + void sendCommand16(uint16_t commandWord, const uint8_t *dataBytes = NULL, + uint8_t numDataBytes = 0); + uint8_t readcommand8(uint8_t commandByte, uint8_t index = 0); + uint16_t readcommand16(uint16_t addr); + + // These functions require a chip-select and/or SPI transaction + // around them. Higher-level graphics primitives might start a + // single transaction and then make multiple calls to these functions + // (e.g. circle or text rendering might make repeated lines or rects) + // before ending the transaction. It's more efficient than starting a + // transaction every time. + void writePixel(int16_t x, int16_t y, uint16_t color); + void writePixels(uint16_t *colors, uint32_t len, bool block = true, + bool bigEndian = false); + void writeColor(uint16_t color, uint32_t len); + void writeFillRect(int16_t x, int16_t y, int16_t w, int16_t h, + uint16_t color); + void writeFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color); + void writeFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color); + // This is a new function, similar to writeFillRect() except that + // all arguments MUST be onscreen, sorted and clipped. If higher-level + // primitives can handle their own sorting/clipping, it avoids repeating + // such operations in the low-level code, making it potentially faster. + // CALLING THIS WITH UNCLIPPED OR NEGATIVE VALUES COULD BE DISASTROUS. + inline void writeFillRectPreclipped(int16_t x, int16_t y, int16_t w, + int16_t h, uint16_t color); + // Another new function, companion to the new non-blocking + // writePixels() variant. + void dmaWait(void); + // Used by writePixels() in some situations, but might have rare need in + // user code, so it's public... + bool dmaBusy(void) const; // true if DMA is used and busy, false otherwise + void swapBytes(uint16_t *src, uint32_t len, uint16_t *dest = NULL); + + // These functions are similar to the 'write' functions above, but with + // a chip-select and/or SPI transaction built-in. They're typically used + // solo -- that is, as graphics primitives in themselves, not invoked by + // higher-level primitives (which should use the functions above). + void drawPixel(int16_t x, int16_t y, uint16_t color); + void fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); + void drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color); + void drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color); + // A single-pixel push encapsulated in a transaction. I don't think + // this is used anymore (BMP demos might've used it?) but is provided + // for backward compatibility, consider it deprecated: + void pushColor(uint16_t color); + + using Adafruit_GFX::drawRGBBitmap; // Check base class first + void drawRGBBitmap(int16_t x, int16_t y, uint16_t *pcolors, int16_t w, + int16_t h); + + void invertDisplay(bool i); + uint16_t color565(uint8_t r, uint8_t g, uint8_t b); + + // Despite parallel additions, function names kept for compatibility: + void spiWrite(uint8_t b); // Write single byte as DATA + void writeCommand(uint8_t cmd); // Write single byte as COMMAND + uint8_t spiRead(void); // Read single byte of data + void write16(uint16_t w); // Write 16-bit value as DATA + void writeCommand16(uint16_t cmd); // Write 16-bit value as COMMAND + uint16_t read16(void); // Read single 16-bit value + + // Most of these low-level functions were formerly macros in + // Adafruit_SPITFT_Macros.h. Some have been made into inline functions + // to avoid macro mishaps. Despite the addition of code for a parallel + // display interface, the names have been kept for backward + // compatibility (some subclasses may be invoking these): + void SPI_WRITE16(uint16_t w); // Not inline + void SPI_WRITE32(uint32_t l); // Not inline + // Old code had both a spiWrite16() function and SPI_WRITE16 macro + // in addition to the SPI_WRITE32 macro. The latter two have been + // made into functions here, and spiWrite16() removed (use SPI_WRITE16() + // instead). It looks like most subclasses had gotten comfortable with + // SPI_WRITE16 and SPI_WRITE32 anyway so those names were kept rather + // than the less-obnoxious camelcase variants, oh well. + + // Placing these functions entirely in the class definition inlines + // them implicitly them while allowing their use in other code: + + /*! + @brief Set the chip-select line HIGH. Does NOT check whether CS pin + is set (>=0), that should be handled in calling function. + Despite function name, this is used even if the display + connection is parallel. + */ + void SPI_CS_HIGH(void) { +#if defined(USE_FAST_PINIO) +#if defined(HAS_PORT_SET_CLR) +#if defined(KINETISK) + *csPortSet = 1; +#else // !KINETISK + *csPortSet = csPinMask; +#endif // end !KINETISK +#else // !HAS_PORT_SET_CLR + *csPort |= csPinMaskSet; +#endif // end !HAS_PORT_SET_CLR +#else // !USE_FAST_PINIO + digitalWrite(_cs, HIGH); +#endif // end !USE_FAST_PINIO + } + + /*! + @brief Set the chip-select line LOW. Does NOT check whether CS pin + is set (>=0), that should be handled in calling function. + Despite function name, this is used even if the display + connection is parallel. + */ + void SPI_CS_LOW(void) { +#if defined(USE_FAST_PINIO) +#if defined(HAS_PORT_SET_CLR) +#if defined(KINETISK) + *csPortClr = 1; +#else // !KINETISK + *csPortClr = csPinMask; +#endif // end !KINETISK +#else // !HAS_PORT_SET_CLR + *csPort &= csPinMaskClr; +#endif // end !HAS_PORT_SET_CLR +#else // !USE_FAST_PINIO + digitalWrite(_cs, LOW); +#endif // end !USE_FAST_PINIO + } + + /*! + @brief Set the data/command line HIGH (data mode). + */ + void SPI_DC_HIGH(void) { +#if defined(USE_FAST_PINIO) +#if defined(HAS_PORT_SET_CLR) +#if defined(KINETISK) + *dcPortSet = 1; +#else // !KINETISK + *dcPortSet = dcPinMask; +#endif // end !KINETISK +#else // !HAS_PORT_SET_CLR + *dcPort |= dcPinMaskSet; +#endif // end !HAS_PORT_SET_CLR +#else // !USE_FAST_PINIO + digitalWrite(_dc, HIGH); +#endif // end !USE_FAST_PINIO + } + + /*! + @brief Set the data/command line LOW (command mode). + */ + void SPI_DC_LOW(void) { +#if defined(USE_FAST_PINIO) +#if defined(HAS_PORT_SET_CLR) +#if defined(KINETISK) + *dcPortClr = 1; +#else // !KINETISK + *dcPortClr = dcPinMask; +#endif // end !KINETISK +#else // !HAS_PORT_SET_CLR + *dcPort &= dcPinMaskClr; +#endif // end !HAS_PORT_SET_CLR +#else // !USE_FAST_PINIO + digitalWrite(_dc, LOW); +#endif // end !USE_FAST_PINIO + } + +protected: + // A few more low-level member functions -- some may have previously + // been macros. Shouldn't have a need to access these externally, so + // they've been moved to the protected section. Additionally, they're + // declared inline here and the code is in the .cpp file, since outside + // code doesn't need to see these. + inline void SPI_MOSI_HIGH(void); + inline void SPI_MOSI_LOW(void); + inline void SPI_SCK_HIGH(void); + inline void SPI_SCK_LOW(void); + inline bool SPI_MISO_READ(void); + inline void SPI_BEGIN_TRANSACTION(void); + inline void SPI_END_TRANSACTION(void); + inline void TFT_WR_STROBE(void); // Parallel interface write strobe + inline void TFT_RD_HIGH(void); // Parallel interface read high + inline void TFT_RD_LOW(void); // Parallel interface read low + + // CLASS INSTANCE VARIABLES -------------------------------------------- + + // Here be dragons! There's a big union of three structures here -- + // one each for hardware SPI, software (bitbang) SPI, and parallel + // interfaces. This is to save some memory, since a display's connection + // will be only one of these. The order of some things is a little weird + // in an attempt to get values to align and pack better in RAM. + +#if defined(USE_FAST_PINIO) +#if defined(HAS_PORT_SET_CLR) + PORTreg_t csPortSet; ///< PORT register for chip select SET + PORTreg_t csPortClr; ///< PORT register for chip select CLEAR + PORTreg_t dcPortSet; ///< PORT register for data/command SET + PORTreg_t dcPortClr; ///< PORT register for data/command CLEAR +#else // !HAS_PORT_SET_CLR + PORTreg_t csPort; ///< PORT register for chip select + PORTreg_t dcPort; ///< PORT register for data/command +#endif // end HAS_PORT_SET_CLR +#endif // end USE_FAST_PINIO +#if defined(__cplusplus) && (__cplusplus >= 201100) + union { +#endif + struct { // Values specific to HARDWARE SPI: + SPIClass *_spi; ///< SPI class pointer +#if defined(SPI_HAS_TRANSACTION) + SPISettings settings; ///< SPI transaction settings +#else + uint32_t _freq; ///< SPI bitrate (if no SPI transactions) +#endif + uint32_t _mode; ///< SPI data mode (transactions or no) + } hwspi; ///< Hardware SPI values + struct { // Values specific to SOFTWARE SPI: +#if defined(USE_FAST_PINIO) + PORTreg_t misoPort; ///< PORT (PIN) register for MISO +#if defined(HAS_PORT_SET_CLR) + PORTreg_t mosiPortSet; ///< PORT register for MOSI SET + PORTreg_t mosiPortClr; ///< PORT register for MOSI CLEAR + PORTreg_t sckPortSet; ///< PORT register for SCK SET + PORTreg_t sckPortClr; ///< PORT register for SCK CLEAR +#if !defined(KINETISK) + ADAGFX_PORT_t mosiPinMask; ///< Bitmask for MOSI + ADAGFX_PORT_t sckPinMask; ///< Bitmask for SCK +#endif // end !KINETISK +#else // !HAS_PORT_SET_CLR + PORTreg_t mosiPort; ///< PORT register for MOSI + PORTreg_t sckPort; ///< PORT register for SCK + ADAGFX_PORT_t mosiPinMaskSet; ///< Bitmask for MOSI SET (OR) + ADAGFX_PORT_t mosiPinMaskClr; ///< Bitmask for MOSI CLEAR (AND) + ADAGFX_PORT_t sckPinMaskSet; ///< Bitmask for SCK SET (OR bitmask) + ADAGFX_PORT_t sckPinMaskClr; ///< Bitmask for SCK CLEAR (AND) +#endif // end HAS_PORT_SET_CLR +#if !defined(KINETISK) + ADAGFX_PORT_t misoPinMask; ///< Bitmask for MISO +#endif // end !KINETISK +#endif // end USE_FAST_PINIO + int8_t _mosi; ///< MOSI pin # + int8_t _miso; ///< MISO pin # + int8_t _sck; ///< SCK pin # + } swspi; ///< Software SPI values + struct { // Values specific to 8-bit parallel: +#if defined(USE_FAST_PINIO) + +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) // Teensy 4.x + volatile uint32_t *writePort; ///< PORT register for DATA WRITE + volatile uint32_t *readPort; ///< PORT (PIN) register for DATA READ +#else + volatile uint8_t *writePort; ///< PORT register for DATA WRITE + volatile uint8_t *readPort; ///< PORT (PIN) register for DATA READ +#endif +#if defined(HAS_PORT_SET_CLR) + // Port direction register pointers are always 8-bit regardless of + // PORTreg_t -- even if 32-bit port, we modify a byte-aligned 8 bits. +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) // Teensy 4.x + volatile uint32_t *dirSet; ///< PORT byte data direction SET + volatile uint32_t *dirClr; ///< PORT byte data direction CLEAR +#else + volatile uint8_t *dirSet; ///< PORT byte data direction SET + volatile uint8_t *dirClr; ///< PORT byte data direction CLEAR +#endif + PORTreg_t wrPortSet; ///< PORT register for write strobe SET + PORTreg_t wrPortClr; ///< PORT register for write strobe CLEAR + PORTreg_t rdPortSet; ///< PORT register for read strobe SET + PORTreg_t rdPortClr; ///< PORT register for read strobe CLEAR +#if !defined(KINETISK) + ADAGFX_PORT_t wrPinMask; ///< Bitmask for write strobe +#endif // end !KINETISK + ADAGFX_PORT_t rdPinMask; ///< Bitmask for read strobe +#else // !HAS_PORT_SET_CLR + // Port direction register pointer is always 8-bit regardless of + // PORTreg_t -- even if 32-bit port, we modify a byte-aligned 8 bits. + volatile uint8_t *portDir; ///< PORT direction register + PORTreg_t wrPort; ///< PORT register for write strobe + PORTreg_t rdPort; ///< PORT register for read strobe + ADAGFX_PORT_t wrPinMaskSet; ///< Bitmask for write strobe SET (OR) + ADAGFX_PORT_t wrPinMaskClr; ///< Bitmask for write strobe CLEAR (AND) + ADAGFX_PORT_t rdPinMaskSet; ///< Bitmask for read strobe SET (OR) + ADAGFX_PORT_t rdPinMaskClr; ///< Bitmask for read strobe CLEAR (AND) +#endif // end HAS_PORT_SET_CLR +#endif // end USE_FAST_PINIO + int8_t _d0; ///< Data pin 0 # + int8_t _wr; ///< Write strobe pin # + int8_t _rd; ///< Read strobe pin # (or -1) + bool wide = 0; ///< If true, is 16-bit interface + } tft8; ///< Parallel interface settings +#if defined(__cplusplus) && (__cplusplus >= 201100) + }; ///< Only one interface is active +#endif +#if defined(USE_SPI_DMA) && \ + (defined(__SAMD51__) || \ + defined(ARDUINO_SAMD_ZERO)) // Used by hardware SPI and tft8 + Adafruit_ZeroDMA dma; ///< DMA instance + DmacDescriptor *dptr = NULL; ///< 1st descriptor + DmacDescriptor *descriptor = NULL; ///< Allocated descriptor list + uint16_t *pixelBuf[2]; ///< Working buffers + uint16_t maxFillLen; ///< Max pixels per DMA xfer + uint16_t lastFillColor = 0; ///< Last color used w/fill + uint32_t lastFillLen = 0; ///< # of pixels w/last fill + uint8_t onePixelBuf; ///< For hi==lo fill +#endif +#if defined(USE_FAST_PINIO) +#if defined(HAS_PORT_SET_CLR) +#if !defined(KINETISK) + ADAGFX_PORT_t csPinMask; ///< Bitmask for chip select + ADAGFX_PORT_t dcPinMask; ///< Bitmask for data/command +#endif // end !KINETISK +#else // !HAS_PORT_SET_CLR + ADAGFX_PORT_t csPinMaskSet; ///< Bitmask for chip select SET (OR) + ADAGFX_PORT_t csPinMaskClr; ///< Bitmask for chip select CLEAR (AND) + ADAGFX_PORT_t dcPinMaskSet; ///< Bitmask for data/command SET (OR) + ADAGFX_PORT_t dcPinMaskClr; ///< Bitmask for data/command CLEAR (AND) +#endif // end HAS_PORT_SET_CLR +#endif // end USE_FAST_PINIO + uint8_t connection; ///< TFT_HARD_SPI, TFT_SOFT_SPI, etc. + int8_t _rst; ///< Reset pin # (or -1) + int8_t _cs; ///< Chip select pin # (or -1) + int8_t _dc; ///< Data/command pin # + + int16_t _xstart = 0; ///< Internal framebuffer X offset + int16_t _ystart = 0; ///< Internal framebuffer Y offset + uint8_t invertOnCommand = 0; ///< Command to enable invert mode + uint8_t invertOffCommand = 0; ///< Command to disable invert mode + + uint32_t _freq = 0; ///< Dummy var to keep subclasses happy +}; + +#endif // end __AVR_ATtiny85__ __AVR_ATtiny84__ +#endif // end _ADAFRUIT_SPITFT_H_ diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Adafruit_SPITFT_Macros.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Adafruit_SPITFT_Macros.h new file mode 100644 index 0000000..fcd6253 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Adafruit_SPITFT_Macros.h @@ -0,0 +1,6 @@ +// THIS FILE INTENTIONALLY LEFT BLANK. + +// Macros previously #defined here have been made into (mostly) inline +// functions in the Adafruit_SPITFT class. Other libraries might still +// contain code trying to #include this header file, so until everything's +// updated this file still exists (but doing nothing) to avoid trouble. diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/CMakeLists.txt b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/CMakeLists.txt new file mode 100644 index 0000000..531c721 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/CMakeLists.txt @@ -0,0 +1,11 @@ +# Adafruit GFX Library +# https://github.com/adafruit/Adafruit-GFX-Library +# BSD License + +cmake_minimum_required(VERSION 3.5) + +idf_component_register(SRCS "Adafruit_GFX.cpp" "Adafruit_GrayOLED.cpp" "Adafruit_SPITFT.cpp" "glcdfont.c" + INCLUDE_DIRS "." + REQUIRES arduino Adafruit_BusIO) + +project(Adafruit-GFX-Library) diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMono12pt7b.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMono12pt7b.h new file mode 100644 index 0000000..d124f20 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMono12pt7b.h @@ -0,0 +1,229 @@ +#pragma once +#include + +const uint8_t FreeMono12pt7bBitmaps[] PROGMEM = { + 0x49, 0x24, 0x92, 0x48, 0x01, 0xF8, 0xE7, 0xE7, 0x67, 0x42, 0x42, 0x42, + 0x42, 0x09, 0x02, 0x41, 0x10, 0x44, 0x11, 0x1F, 0xF1, 0x10, 0x4C, 0x12, + 0x3F, 0xE1, 0x20, 0x48, 0x12, 0x04, 0x81, 0x20, 0x48, 0x04, 0x07, 0xA2, + 0x19, 0x02, 0x40, 0x10, 0x03, 0x00, 0x3C, 0x00, 0x80, 0x10, 0x06, 0x01, + 0xE0, 0xA7, 0xC0, 0x40, 0x10, 0x04, 0x00, 0x3C, 0x19, 0x84, 0x21, 0x08, + 0x66, 0x0F, 0x00, 0x0C, 0x1C, 0x78, 0x01, 0xE0, 0xCC, 0x21, 0x08, 0x43, + 0x30, 0x78, 0x3E, 0x30, 0x10, 0x08, 0x02, 0x03, 0x03, 0x47, 0x14, 0x8A, + 0x43, 0x11, 0x8F, 0x60, 0xFD, 0xA4, 0x90, 0x05, 0x25, 0x24, 0x92, 0x48, + 0x92, 0x24, 0x11, 0x24, 0x89, 0x24, 0x92, 0x92, 0x90, 0x00, 0x04, 0x02, + 0x11, 0x07, 0xF0, 0xC0, 0x50, 0x48, 0x42, 0x00, 0x08, 0x04, 0x02, 0x01, + 0x00, 0x87, 0xFC, 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, 0x3B, 0x9C, 0xCE, + 0x62, 0x00, 0xFF, 0xE0, 0xFF, 0x80, 0x00, 0x80, 0xC0, 0x40, 0x20, 0x20, + 0x10, 0x10, 0x08, 0x08, 0x04, 0x04, 0x02, 0x02, 0x01, 0x01, 0x00, 0x80, + 0x80, 0x40, 0x00, 0x1C, 0x31, 0x90, 0x58, 0x38, 0x0C, 0x06, 0x03, 0x01, + 0x80, 0xC0, 0x60, 0x30, 0x34, 0x13, 0x18, 0x70, 0x30, 0xE1, 0x44, 0x81, + 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x81, 0x1F, 0xC0, 0x1E, 0x10, 0x90, + 0x68, 0x10, 0x08, 0x0C, 0x04, 0x04, 0x04, 0x06, 0x06, 0x06, 0x06, 0x0E, + 0x07, 0xFE, 0x3E, 0x10, 0x40, 0x08, 0x02, 0x00, 0x80, 0x40, 0xE0, 0x04, + 0x00, 0x80, 0x10, 0x04, 0x01, 0x00, 0xD8, 0x63, 0xE0, 0x06, 0x0A, 0x0A, + 0x12, 0x22, 0x22, 0x42, 0x42, 0x82, 0x82, 0xFF, 0x02, 0x02, 0x02, 0x0F, + 0x7F, 0x20, 0x10, 0x08, 0x04, 0x02, 0xF1, 0x8C, 0x03, 0x00, 0x80, 0x40, + 0x20, 0x18, 0x16, 0x18, 0xF0, 0x0F, 0x8C, 0x08, 0x08, 0x04, 0x04, 0x02, + 0x79, 0x46, 0xC1, 0xE0, 0x60, 0x28, 0x14, 0x19, 0x08, 0x78, 0xFF, 0x81, + 0x81, 0x02, 0x02, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, + 0x08, 0x3E, 0x31, 0xB0, 0x70, 0x18, 0x0C, 0x05, 0x8C, 0x38, 0x63, 0x40, + 0x60, 0x30, 0x18, 0x1B, 0x18, 0xF8, 0x3C, 0x31, 0x30, 0x50, 0x28, 0x0C, + 0x0F, 0x06, 0x85, 0x3C, 0x80, 0x40, 0x40, 0x20, 0x20, 0x63, 0xE0, 0xFF, + 0x80, 0x07, 0xFC, 0x39, 0xCE, 0x00, 0x00, 0x06, 0x33, 0x98, 0xC4, 0x00, + 0x00, 0xC0, 0x60, 0x18, 0x0C, 0x06, 0x01, 0x80, 0x0C, 0x00, 0x60, 0x03, + 0x00, 0x30, 0x01, 0x00, 0xFF, 0xF0, 0x00, 0x00, 0x0F, 0xFF, 0xC0, 0x06, + 0x00, 0x30, 0x01, 0x80, 0x18, 0x01, 0x80, 0xC0, 0x30, 0x18, 0x0C, 0x02, + 0x00, 0x00, 0x3E, 0x60, 0xA0, 0x20, 0x10, 0x08, 0x08, 0x18, 0x10, 0x08, + 0x00, 0x00, 0x00, 0x01, 0xC0, 0xE0, 0x1C, 0x31, 0x10, 0x50, 0x28, 0x14, + 0x3A, 0x25, 0x22, 0x91, 0x4C, 0xA3, 0xF0, 0x08, 0x02, 0x01, 0x80, 0x7C, + 0x3F, 0x00, 0x0C, 0x00, 0x48, 0x01, 0x20, 0x04, 0x40, 0x21, 0x00, 0x84, + 0x04, 0x08, 0x1F, 0xE0, 0x40, 0x82, 0x01, 0x08, 0x04, 0x20, 0x13, 0xE1, + 0xF0, 0xFF, 0x08, 0x11, 0x01, 0x20, 0x24, 0x04, 0x81, 0x1F, 0xC2, 0x06, + 0x40, 0x68, 0x05, 0x00, 0xA0, 0x14, 0x05, 0xFF, 0x00, 0x1E, 0x48, 0x74, + 0x05, 0x01, 0x80, 0x20, 0x08, 0x02, 0x00, 0x80, 0x20, 0x04, 0x01, 0x01, + 0x30, 0x87, 0xC0, 0xFE, 0x10, 0x44, 0x09, 0x02, 0x40, 0x50, 0x14, 0x05, + 0x01, 0x40, 0x50, 0x14, 0x0D, 0x02, 0x41, 0x3F, 0x80, 0xFF, 0xC8, 0x09, + 0x01, 0x20, 0x04, 0x00, 0x88, 0x1F, 0x02, 0x20, 0x40, 0x08, 0x01, 0x00, + 0xA0, 0x14, 0x03, 0xFF, 0xC0, 0xFF, 0xE8, 0x05, 0x00, 0xA0, 0x04, 0x00, + 0x88, 0x1F, 0x02, 0x20, 0x40, 0x08, 0x01, 0x00, 0x20, 0x04, 0x01, 0xF0, + 0x00, 0x1F, 0x46, 0x19, 0x01, 0x60, 0x28, 0x01, 0x00, 0x20, 0x04, 0x00, + 0x83, 0xF0, 0x0B, 0x01, 0x20, 0x23, 0x0C, 0x3E, 0x00, 0xE1, 0xD0, 0x24, + 0x09, 0x02, 0x40, 0x90, 0x27, 0xF9, 0x02, 0x40, 0x90, 0x24, 0x09, 0x02, + 0x40, 0xB8, 0x70, 0xFE, 0x20, 0x40, 0x81, 0x02, 0x04, 0x08, 0x10, 0x20, + 0x40, 0x81, 0x1F, 0xC0, 0x0F, 0xE0, 0x10, 0x02, 0x00, 0x40, 0x08, 0x01, + 0x00, 0x20, 0x04, 0x80, 0x90, 0x12, 0x02, 0x40, 0xC6, 0x30, 0x7C, 0x00, + 0xF1, 0xE4, 0x0C, 0x41, 0x04, 0x20, 0x44, 0x04, 0x80, 0x5C, 0x06, 0x60, + 0x43, 0x04, 0x10, 0x40, 0x84, 0x08, 0x40, 0xCF, 0x07, 0xF8, 0x04, 0x00, + 0x80, 0x10, 0x02, 0x00, 0x40, 0x08, 0x01, 0x00, 0x20, 0x04, 0x04, 0x80, + 0x90, 0x12, 0x03, 0xFF, 0xC0, 0xE0, 0x3B, 0x01, 0x94, 0x14, 0xA0, 0xA4, + 0x89, 0x24, 0x49, 0x14, 0x48, 0xA2, 0x45, 0x12, 0x10, 0x90, 0x04, 0x80, + 0x24, 0x01, 0x78, 0x3C, 0xE0, 0xF6, 0x02, 0x50, 0x25, 0x02, 0x48, 0x24, + 0xC2, 0x44, 0x24, 0x22, 0x43, 0x24, 0x12, 0x40, 0xA4, 0x0A, 0x40, 0x6F, + 0x06, 0x0F, 0x03, 0x0C, 0x60, 0x64, 0x02, 0x80, 0x18, 0x01, 0x80, 0x18, + 0x01, 0x80, 0x18, 0x01, 0x40, 0x26, 0x06, 0x30, 0xC0, 0xF0, 0xFF, 0x10, + 0x64, 0x05, 0x01, 0x40, 0x50, 0x34, 0x19, 0xFC, 0x40, 0x10, 0x04, 0x01, + 0x00, 0x40, 0x3E, 0x00, 0x0F, 0x03, 0x0C, 0x60, 0x64, 0x02, 0x80, 0x18, + 0x01, 0x80, 0x18, 0x01, 0x80, 0x18, 0x01, 0x40, 0x26, 0x06, 0x30, 0xC1, + 0xF0, 0x0C, 0x01, 0xF1, 0x30, 0xE0, 0xFF, 0x04, 0x18, 0x40, 0xC4, 0x04, + 0x40, 0x44, 0x0C, 0x41, 0x87, 0xE0, 0x43, 0x04, 0x10, 0x40, 0x84, 0x04, + 0x40, 0x4F, 0x03, 0x1F, 0x48, 0x34, 0x05, 0x01, 0x40, 0x08, 0x01, 0xC0, + 0x0E, 0x00, 0x40, 0x18, 0x06, 0x01, 0xE1, 0xA7, 0xC0, 0xFF, 0xF0, 0x86, + 0x10, 0x82, 0x00, 0x40, 0x08, 0x01, 0x00, 0x20, 0x04, 0x00, 0x80, 0x10, + 0x02, 0x00, 0x40, 0x7F, 0x00, 0xF0, 0xF4, 0x02, 0x40, 0x24, 0x02, 0x40, + 0x24, 0x02, 0x40, 0x24, 0x02, 0x40, 0x24, 0x02, 0x40, 0x22, 0x04, 0x30, + 0xC0, 0xF0, 0xF8, 0x7C, 0x80, 0x22, 0x01, 0x04, 0x04, 0x10, 0x20, 0x40, + 0x80, 0x82, 0x02, 0x10, 0x08, 0x40, 0x11, 0x00, 0x48, 0x01, 0xA0, 0x03, + 0x00, 0x0C, 0x00, 0xF8, 0x7C, 0x80, 0x22, 0x00, 0x88, 0xC2, 0x23, 0x10, + 0x8E, 0x42, 0x29, 0x09, 0x24, 0x24, 0x90, 0x91, 0x41, 0x85, 0x06, 0x14, + 0x18, 0x70, 0x60, 0x80, 0xF0, 0xF2, 0x06, 0x30, 0x41, 0x08, 0x09, 0x80, + 0x50, 0x06, 0x00, 0x60, 0x0D, 0x00, 0x88, 0x10, 0xC2, 0x04, 0x60, 0x2F, + 0x0F, 0xF0, 0xF2, 0x02, 0x10, 0x41, 0x04, 0x08, 0x80, 0x50, 0x05, 0x00, + 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x01, 0xFC, 0xFF, 0x40, + 0xA0, 0x90, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x10, 0x50, 0x30, 0x18, + 0x0F, 0xFC, 0xF2, 0x49, 0x24, 0x92, 0x49, 0x24, 0x9C, 0x80, 0x60, 0x10, + 0x08, 0x02, 0x01, 0x00, 0x40, 0x20, 0x08, 0x04, 0x01, 0x00, 0x80, 0x20, + 0x10, 0x04, 0x02, 0x00, 0x80, 0x40, 0xE4, 0x92, 0x49, 0x24, 0x92, 0x49, + 0x3C, 0x08, 0x0C, 0x09, 0x0C, 0x4C, 0x14, 0x04, 0xFF, 0xFC, 0x84, 0x21, + 0x3E, 0x00, 0x60, 0x08, 0x02, 0x3F, 0x98, 0x28, 0x0A, 0x02, 0xC3, 0x9F, + 0x30, 0xE0, 0x01, 0x00, 0x08, 0x00, 0x40, 0x02, 0x00, 0x13, 0xE0, 0xA0, + 0x86, 0x02, 0x20, 0x09, 0x00, 0x48, 0x02, 0x40, 0x13, 0x01, 0x14, 0x1B, + 0x9F, 0x00, 0x1F, 0x4C, 0x19, 0x01, 0x40, 0x28, 0x01, 0x00, 0x20, 0x02, + 0x00, 0x60, 0x43, 0xF0, 0x00, 0xC0, 0x08, 0x01, 0x00, 0x20, 0x04, 0x3C, + 0x98, 0x52, 0x06, 0x80, 0x50, 0x0A, 0x01, 0x40, 0x24, 0x0C, 0xC2, 0x87, + 0x98, 0x3F, 0x18, 0x68, 0x06, 0x01, 0xFF, 0xE0, 0x08, 0x03, 0x00, 0x60, + 0xC7, 0xC0, 0x0F, 0x98, 0x08, 0x04, 0x02, 0x07, 0xF8, 0x80, 0x40, 0x20, + 0x10, 0x08, 0x04, 0x02, 0x01, 0x03, 0xF8, 0x1E, 0x6C, 0x39, 0x03, 0x40, + 0x28, 0x05, 0x00, 0xA0, 0x12, 0x06, 0x61, 0x43, 0xC8, 0x01, 0x00, 0x20, + 0x08, 0x3E, 0x00, 0xC0, 0x10, 0x04, 0x01, 0x00, 0x40, 0x13, 0x87, 0x11, + 0x82, 0x40, 0x90, 0x24, 0x09, 0x02, 0x40, 0x90, 0x2E, 0x1C, 0x08, 0x04, + 0x02, 0x00, 0x00, 0x03, 0xC0, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x00, + 0x80, 0x43, 0xFE, 0x04, 0x08, 0x10, 0x00, 0x1F, 0xC0, 0x81, 0x02, 0x04, + 0x08, 0x10, 0x20, 0x40, 0x81, 0x02, 0x0B, 0xE0, 0xE0, 0x02, 0x00, 0x20, + 0x02, 0x00, 0x20, 0x02, 0x3C, 0x21, 0x02, 0x60, 0x2C, 0x03, 0x80, 0x24, + 0x02, 0x20, 0x21, 0x02, 0x08, 0xE1, 0xF0, 0x78, 0x04, 0x02, 0x01, 0x00, + 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x00, 0x80, 0x43, 0xFE, + 0xDC, 0xE3, 0x19, 0x90, 0x84, 0x84, 0x24, 0x21, 0x21, 0x09, 0x08, 0x48, + 0x42, 0x42, 0x17, 0x18, 0xC0, 0x67, 0x83, 0x84, 0x20, 0x22, 0x02, 0x20, + 0x22, 0x02, 0x20, 0x22, 0x02, 0x20, 0x2F, 0x07, 0x1F, 0x04, 0x11, 0x01, + 0x40, 0x18, 0x03, 0x00, 0x60, 0x0A, 0x02, 0x20, 0x83, 0xE0, 0xCF, 0x85, + 0x06, 0x60, 0x24, 0x01, 0x40, 0x14, 0x01, 0x40, 0x16, 0x02, 0x50, 0x44, + 0xF8, 0x40, 0x04, 0x00, 0x40, 0x0F, 0x00, 0x1E, 0x6C, 0x3B, 0x03, 0x40, + 0x28, 0x05, 0x00, 0xA0, 0x12, 0x06, 0x61, 0x43, 0xC8, 0x01, 0x00, 0x20, + 0x04, 0x03, 0xC0, 0xE3, 0x8B, 0x13, 0x80, 0x80, 0x20, 0x08, 0x02, 0x00, + 0x80, 0x20, 0x3F, 0x80, 0x1F, 0x58, 0x34, 0x05, 0x80, 0x1E, 0x00, 0x60, + 0x06, 0x01, 0xC0, 0xAF, 0xC0, 0x20, 0x04, 0x00, 0x80, 0x10, 0x0F, 0xF0, + 0x40, 0x08, 0x01, 0x00, 0x20, 0x04, 0x00, 0x80, 0x10, 0x03, 0x04, 0x3F, + 0x00, 0xC1, 0xC8, 0x09, 0x01, 0x20, 0x24, 0x04, 0x80, 0x90, 0x12, 0x02, + 0x61, 0xC7, 0xCC, 0xF8, 0xF9, 0x01, 0x08, 0x10, 0x60, 0x81, 0x08, 0x08, + 0x40, 0x22, 0x01, 0x20, 0x05, 0x00, 0x30, 0x00, 0xF0, 0x7A, 0x01, 0x10, + 0x08, 0x8C, 0x42, 0x62, 0x12, 0x90, 0xA5, 0x05, 0x18, 0x28, 0xC0, 0x86, + 0x00, 0x78, 0xF3, 0x04, 0x18, 0x80, 0xD0, 0x06, 0x00, 0x70, 0x09, 0x81, + 0x0C, 0x20, 0x6F, 0x8F, 0xF0, 0xF2, 0x02, 0x20, 0x41, 0x04, 0x10, 0x80, + 0x88, 0x09, 0x00, 0x50, 0x06, 0x00, 0x20, 0x04, 0x00, 0x40, 0x08, 0x0F, + 0xE0, 0xFF, 0x41, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x40, 0xBF, + 0xC0, 0x19, 0x08, 0x42, 0x10, 0x84, 0x64, 0x18, 0x42, 0x10, 0x84, 0x20, + 0xC0, 0xFF, 0xFF, 0xC0, 0xC1, 0x08, 0x42, 0x10, 0x84, 0x10, 0x4C, 0x42, + 0x10, 0x84, 0x26, 0x00, 0x38, 0x13, 0x38, 0x38}; + +const GFXglyph FreeMono12pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 14, 0, 1}, // 0x20 ' ' + {0, 3, 15, 14, 6, -14}, // 0x21 '!' + {6, 8, 7, 14, 3, -14}, // 0x22 '"' + {13, 10, 16, 14, 2, -14}, // 0x23 '#' + {33, 10, 17, 14, 2, -14}, // 0x24 '$' + {55, 10, 15, 14, 2, -14}, // 0x25 '%' + {74, 9, 12, 14, 3, -11}, // 0x26 '&' + {88, 3, 7, 14, 5, -14}, // 0x27 ''' + {91, 3, 18, 14, 7, -14}, // 0x28 '(' + {98, 3, 18, 14, 4, -14}, // 0x29 ')' + {105, 9, 9, 14, 3, -14}, // 0x2A '*' + {116, 9, 11, 14, 3, -11}, // 0x2B '+' + {129, 5, 7, 14, 3, -3}, // 0x2C ',' + {134, 11, 1, 14, 2, -6}, // 0x2D '-' + {136, 3, 3, 14, 5, -2}, // 0x2E '.' + {138, 9, 18, 14, 3, -15}, // 0x2F '/' + {159, 9, 15, 14, 3, -14}, // 0x30 '0' + {176, 7, 14, 14, 4, -13}, // 0x31 '1' + {189, 9, 15, 14, 2, -14}, // 0x32 '2' + {206, 10, 15, 14, 2, -14}, // 0x33 '3' + {225, 8, 15, 14, 3, -14}, // 0x34 '4' + {240, 9, 15, 14, 3, -14}, // 0x35 '5' + {257, 9, 15, 14, 3, -14}, // 0x36 '6' + {274, 8, 15, 14, 3, -14}, // 0x37 '7' + {289, 9, 15, 14, 3, -14}, // 0x38 '8' + {306, 9, 15, 14, 3, -14}, // 0x39 '9' + {323, 3, 10, 14, 5, -9}, // 0x3A ':' + {327, 5, 13, 14, 3, -9}, // 0x3B ';' + {336, 11, 11, 14, 2, -11}, // 0x3C '<' + {352, 12, 4, 14, 1, -8}, // 0x3D '=' + {358, 11, 11, 14, 2, -11}, // 0x3E '>' + {374, 9, 14, 14, 3, -13}, // 0x3F '?' + {390, 9, 16, 14, 3, -14}, // 0x40 '@' + {408, 14, 14, 14, 0, -13}, // 0x41 'A' + {433, 11, 14, 14, 2, -13}, // 0x42 'B' + {453, 10, 14, 14, 2, -13}, // 0x43 'C' + {471, 10, 14, 14, 2, -13}, // 0x44 'D' + {489, 11, 14, 14, 2, -13}, // 0x45 'E' + {509, 11, 14, 14, 2, -13}, // 0x46 'F' + {529, 11, 14, 14, 2, -13}, // 0x47 'G' + {549, 10, 14, 14, 2, -13}, // 0x48 'H' + {567, 7, 14, 14, 4, -13}, // 0x49 'I' + {580, 11, 14, 14, 2, -13}, // 0x4A 'J' + {600, 12, 14, 14, 2, -13}, // 0x4B 'K' + {621, 11, 14, 14, 2, -13}, // 0x4C 'L' + {641, 13, 14, 14, 1, -13}, // 0x4D 'M' + {664, 12, 14, 14, 1, -13}, // 0x4E 'N' + {685, 12, 14, 14, 1, -13}, // 0x4F 'O' + {706, 10, 14, 14, 2, -13}, // 0x50 'P' + {724, 12, 17, 14, 1, -13}, // 0x51 'Q' + {750, 12, 14, 14, 2, -13}, // 0x52 'R' + {771, 10, 14, 14, 2, -13}, // 0x53 'S' + {789, 11, 14, 14, 2, -13}, // 0x54 'T' + {809, 12, 14, 14, 1, -13}, // 0x55 'U' + {830, 14, 14, 14, 0, -13}, // 0x56 'V' + {855, 14, 14, 14, 0, -13}, // 0x57 'W' + {880, 12, 14, 14, 1, -13}, // 0x58 'X' + {901, 12, 14, 14, 1, -13}, // 0x59 'Y' + {922, 9, 14, 14, 3, -13}, // 0x5A 'Z' + {938, 3, 18, 14, 7, -14}, // 0x5B '[' + {945, 9, 18, 14, 3, -15}, // 0x5C '\' + {966, 3, 18, 14, 5, -14}, // 0x5D ']' + {973, 9, 6, 14, 3, -14}, // 0x5E '^' + {980, 14, 1, 14, 0, 3}, // 0x5F '_' + {982, 4, 4, 14, 4, -15}, // 0x60 '`' + {984, 10, 10, 14, 2, -9}, // 0x61 'a' + {997, 13, 15, 14, 0, -14}, // 0x62 'b' + {1022, 11, 10, 14, 2, -9}, // 0x63 'c' + {1036, 11, 15, 14, 2, -14}, // 0x64 'd' + {1057, 10, 10, 14, 2, -9}, // 0x65 'e' + {1070, 9, 15, 14, 4, -14}, // 0x66 'f' + {1087, 11, 14, 14, 2, -9}, // 0x67 'g' + {1107, 10, 15, 14, 2, -14}, // 0x68 'h' + {1126, 9, 15, 14, 3, -14}, // 0x69 'i' + {1143, 7, 19, 14, 3, -14}, // 0x6A 'j' + {1160, 12, 15, 14, 1, -14}, // 0x6B 'k' + {1183, 9, 15, 14, 3, -14}, // 0x6C 'l' + {1200, 13, 10, 14, 1, -9}, // 0x6D 'm' + {1217, 12, 10, 14, 1, -9}, // 0x6E 'n' + {1232, 11, 10, 14, 2, -9}, // 0x6F 'o' + {1246, 12, 14, 14, 1, -9}, // 0x70 'p' + {1267, 11, 14, 14, 2, -9}, // 0x71 'q' + {1287, 10, 10, 14, 3, -9}, // 0x72 'r' + {1300, 10, 10, 14, 2, -9}, // 0x73 's' + {1313, 11, 14, 14, 1, -13}, // 0x74 't' + {1333, 11, 10, 14, 2, -9}, // 0x75 'u' + {1347, 13, 10, 14, 1, -9}, // 0x76 'v' + {1364, 13, 10, 14, 1, -9}, // 0x77 'w' + {1381, 12, 10, 14, 1, -9}, // 0x78 'x' + {1396, 12, 14, 14, 1, -9}, // 0x79 'y' + {1417, 9, 10, 14, 3, -9}, // 0x7A 'z' + {1429, 5, 18, 14, 5, -14}, // 0x7B '{' + {1441, 1, 18, 14, 7, -14}, // 0x7C '|' + {1444, 5, 18, 14, 5, -14}, // 0x7D '}' + {1456, 10, 3, 14, 2, -7}}; // 0x7E '~' + +const GFXfont FreeMono12pt7b PROGMEM = {(uint8_t *)FreeMono12pt7bBitmaps, + (GFXglyph *)FreeMono12pt7bGlyphs, 0x20, + 0x7E, 24}; + +// Approx. 2132 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMono18pt7b.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMono18pt7b.h new file mode 100644 index 0000000..6a3641c --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMono18pt7b.h @@ -0,0 +1,365 @@ +#pragma once +#include + +const uint8_t FreeMono18pt7bBitmaps[] PROGMEM = { + 0x27, 0x77, 0x77, 0x77, 0x77, 0x22, 0x22, 0x20, 0x00, 0x6F, 0xF6, 0xF1, + 0xFE, 0x3F, 0xC7, 0xF8, 0xFF, 0x1E, 0xC3, 0x98, 0x33, 0x06, 0x60, 0xCC, + 0x18, 0x04, 0x20, 0x10, 0x80, 0x42, 0x01, 0x08, 0x04, 0x20, 0x10, 0x80, + 0x42, 0x01, 0x10, 0x04, 0x41, 0xFF, 0xF0, 0x44, 0x02, 0x10, 0x08, 0x40, + 0x21, 0x0F, 0xFF, 0xC2, 0x10, 0x08, 0x40, 0x21, 0x00, 0x84, 0x02, 0x10, + 0x08, 0x40, 0x23, 0x00, 0x88, 0x02, 0x20, 0x02, 0x00, 0x10, 0x00, 0x80, + 0x1F, 0xA3, 0x07, 0x10, 0x09, 0x00, 0x48, 0x00, 0x40, 0x03, 0x00, 0x0C, + 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x18, 0x00, 0x20, 0x01, 0x80, 0x0C, 0x00, + 0x70, 0x05, 0xE0, 0xC9, 0xF8, 0x01, 0x00, 0x08, 0x00, 0x40, 0x02, 0x00, + 0x10, 0x00, 0x1E, 0x00, 0x42, 0x01, 0x02, 0x02, 0x04, 0x04, 0x08, 0x08, + 0x10, 0x08, 0x40, 0x0F, 0x00, 0x00, 0x1E, 0x01, 0xF0, 0x1F, 0x01, 0xE0, + 0x0E, 0x00, 0x00, 0x3C, 0x00, 0x86, 0x02, 0x06, 0x04, 0x04, 0x08, 0x08, + 0x10, 0x30, 0x10, 0xC0, 0x1E, 0x00, 0x0F, 0xC1, 0x00, 0x20, 0x02, 0x00, + 0x20, 0x02, 0x00, 0x10, 0x01, 0x00, 0x08, 0x03, 0xC0, 0x6C, 0x3C, 0x62, + 0x82, 0x68, 0x34, 0x81, 0xCC, 0x08, 0x61, 0xC3, 0xE7, 0xFF, 0xFF, 0xF6, + 0x66, 0x66, 0x08, 0xC4, 0x62, 0x31, 0x8C, 0xC6, 0x31, 0x8C, 0x63, 0x18, + 0xC3, 0x18, 0xC2, 0x18, 0xC3, 0x18, 0x86, 0x10, 0xC2, 0x18, 0xC6, 0x10, + 0xC6, 0x31, 0x8C, 0x63, 0x18, 0x8C, 0x62, 0x31, 0x98, 0x80, 0x02, 0x00, + 0x10, 0x00, 0x80, 0x04, 0x0C, 0x21, 0x9D, 0x70, 0x1C, 0x00, 0xA0, 0x0D, + 0x80, 0xC6, 0x04, 0x10, 0x40, 0x80, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, + 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0xFF, 0xFE, 0x02, + 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, + 0x01, 0x00, 0x3E, 0x78, 0xF3, 0xC7, 0x8E, 0x18, 0x70, 0xC1, 0x80, 0xFF, + 0xFE, 0x77, 0xFF, 0xF7, 0x00, 0x00, 0x08, 0x00, 0xC0, 0x04, 0x00, 0x60, + 0x02, 0x00, 0x30, 0x01, 0x00, 0x18, 0x00, 0x80, 0x0C, 0x00, 0x40, 0x02, + 0x00, 0x20, 0x01, 0x00, 0x10, 0x00, 0x80, 0x08, 0x00, 0x40, 0x04, 0x00, + 0x20, 0x02, 0x00, 0x10, 0x01, 0x00, 0x08, 0x00, 0x80, 0x04, 0x00, 0x00, + 0x0F, 0x81, 0x82, 0x08, 0x08, 0x80, 0x24, 0x01, 0x60, 0x0E, 0x00, 0x30, + 0x01, 0x80, 0x0C, 0x00, 0x60, 0x03, 0x00, 0x18, 0x00, 0xC0, 0x06, 0x00, + 0x30, 0x03, 0x40, 0x12, 0x00, 0x88, 0x08, 0x60, 0xC0, 0xF8, 0x00, 0x06, + 0x00, 0x70, 0x06, 0x80, 0x64, 0x06, 0x20, 0x31, 0x00, 0x08, 0x00, 0x40, + 0x02, 0x00, 0x10, 0x00, 0x80, 0x04, 0x00, 0x20, 0x01, 0x00, 0x08, 0x00, + 0x40, 0x02, 0x00, 0x10, 0x00, 0x80, 0x04, 0x0F, 0xFF, 0x80, 0x0F, 0x80, + 0xC3, 0x08, 0x04, 0x80, 0x24, 0x00, 0x80, 0x04, 0x00, 0x20, 0x02, 0x00, + 0x10, 0x01, 0x00, 0x10, 0x01, 0x80, 0x18, 0x01, 0x80, 0x18, 0x01, 0x80, + 0x18, 0x01, 0x80, 0x58, 0x03, 0x80, 0x1F, 0xFF, 0x80, 0x0F, 0xC0, 0xC0, + 0x86, 0x01, 0x00, 0x02, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, 0x04, 0x00, + 0x20, 0x0F, 0x00, 0x06, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x40, + 0x01, 0x00, 0x04, 0x00, 0x2C, 0x01, 0x9C, 0x0C, 0x0F, 0xC0, 0x01, 0xC0, + 0x14, 0x02, 0x40, 0x64, 0x04, 0x40, 0xC4, 0x08, 0x41, 0x84, 0x10, 0x42, + 0x04, 0x20, 0x44, 0x04, 0x40, 0x48, 0x04, 0xFF, 0xF0, 0x04, 0x00, 0x40, + 0x04, 0x00, 0x40, 0x04, 0x07, 0xF0, 0x3F, 0xF0, 0x80, 0x02, 0x00, 0x08, + 0x00, 0x20, 0x00, 0x80, 0x02, 0x00, 0x0B, 0xF0, 0x30, 0x30, 0x00, 0x60, + 0x00, 0x80, 0x01, 0x00, 0x04, 0x00, 0x10, 0x00, 0x40, 0x01, 0x00, 0x0E, + 0x00, 0x2C, 0x01, 0x0C, 0x18, 0x0F, 0xC0, 0x01, 0xF0, 0x60, 0x18, 0x03, + 0x00, 0x20, 0x04, 0x00, 0x40, 0x0C, 0x00, 0x80, 0x08, 0xF8, 0x98, 0x4A, + 0x02, 0xE0, 0x3C, 0x01, 0x80, 0x14, 0x01, 0x40, 0x14, 0x03, 0x20, 0x21, + 0x0C, 0x0F, 0x80, 0xFF, 0xF8, 0x01, 0x80, 0x18, 0x03, 0x00, 0x20, 0x02, + 0x00, 0x20, 0x04, 0x00, 0x40, 0x04, 0x00, 0xC0, 0x08, 0x00, 0x80, 0x18, + 0x01, 0x00, 0x10, 0x01, 0x00, 0x30, 0x02, 0x00, 0x20, 0x02, 0x00, 0x0F, + 0x81, 0x83, 0x10, 0x05, 0x80, 0x38, 0x00, 0xC0, 0x06, 0x00, 0x30, 0x03, + 0x40, 0x11, 0x83, 0x07, 0xF0, 0x60, 0xC4, 0x01, 0x60, 0x0E, 0x00, 0x30, + 0x01, 0x80, 0x0E, 0x00, 0xD0, 0x04, 0x60, 0xC1, 0xFC, 0x00, 0x1F, 0x03, + 0x08, 0x40, 0x4C, 0x02, 0x80, 0x28, 0x02, 0x80, 0x18, 0x03, 0xC0, 0x74, + 0x05, 0x21, 0x91, 0xF1, 0x00, 0x10, 0x03, 0x00, 0x20, 0x02, 0x00, 0x40, + 0x0C, 0x01, 0x80, 0x60, 0xF8, 0x00, 0x77, 0xFF, 0xF7, 0x00, 0x00, 0x00, + 0x1D, 0xFF, 0xFD, 0xC0, 0x1C, 0x7C, 0xF9, 0xF1, 0xC0, 0x00, 0x00, 0x00, + 0x00, 0xF1, 0xE3, 0x8F, 0x1C, 0x38, 0xE1, 0xC3, 0x06, 0x00, 0x00, 0x06, + 0x00, 0x18, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x01, 0xC0, 0x06, 0x00, 0x38, + 0x00, 0xE0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x18, 0x00, 0x1C, 0x00, 0x0E, + 0x00, 0x07, 0x00, 0x03, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0xFF, 0xFC, 0xC0, 0x00, 0xC0, 0x00, 0xE0, 0x00, 0x70, + 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0C, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x70, + 0x03, 0x80, 0x0C, 0x00, 0x70, 0x03, 0x80, 0x1C, 0x00, 0x60, 0x00, 0x3F, + 0x8E, 0x0C, 0x80, 0x28, 0x01, 0x80, 0x10, 0x01, 0x00, 0x10, 0x02, 0x00, + 0xC0, 0x38, 0x06, 0x00, 0x40, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, + 0x01, 0xF0, 0x1F, 0x00, 0xE0, 0x0F, 0x01, 0x86, 0x08, 0x08, 0x80, 0x24, + 0x01, 0x40, 0x0A, 0x00, 0x50, 0x1E, 0x83, 0x14, 0x20, 0xA2, 0x05, 0x10, + 0x28, 0x81, 0x46, 0x0A, 0x18, 0x50, 0x3F, 0x80, 0x04, 0x00, 0x10, 0x00, + 0x80, 0x02, 0x00, 0x18, 0x18, 0x3F, 0x00, 0x1F, 0xF0, 0x00, 0x06, 0x80, + 0x00, 0x34, 0x00, 0x01, 0x30, 0x00, 0x18, 0x80, 0x00, 0x86, 0x00, 0x04, + 0x30, 0x00, 0x60, 0x80, 0x02, 0x06, 0x00, 0x10, 0x10, 0x01, 0x80, 0x80, + 0x08, 0x06, 0x00, 0x7F, 0xF0, 0x06, 0x00, 0x80, 0x20, 0x06, 0x01, 0x00, + 0x10, 0x18, 0x00, 0xC0, 0x80, 0x06, 0x04, 0x00, 0x11, 0xFC, 0x0F, 0xF0, + 0xFF, 0xF8, 0x04, 0x01, 0x01, 0x00, 0x20, 0x40, 0x04, 0x10, 0x01, 0x04, + 0x00, 0x41, 0x00, 0x10, 0x40, 0x08, 0x10, 0x0C, 0x07, 0xFF, 0x01, 0x00, + 0x70, 0x40, 0x06, 0x10, 0x00, 0x84, 0x00, 0x11, 0x00, 0x04, 0x40, 0x01, + 0x10, 0x00, 0x44, 0x00, 0x21, 0x00, 0x33, 0xFF, 0xF8, 0x03, 0xF1, 0x06, + 0x0E, 0x8C, 0x01, 0xC4, 0x00, 0x64, 0x00, 0x12, 0x00, 0x0A, 0x00, 0x01, + 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x01, 0x00, 0x00, 0x80, 0x00, 0x20, 0x01, 0x88, 0x01, 0x83, + 0x03, 0x80, 0x7E, 0x00, 0xFF, 0xE0, 0x20, 0x18, 0x20, 0x0C, 0x20, 0x04, + 0x20, 0x02, 0x20, 0x02, 0x20, 0x01, 0x20, 0x01, 0x20, 0x01, 0x20, 0x01, + 0x20, 0x01, 0x20, 0x01, 0x20, 0x01, 0x20, 0x01, 0x20, 0x02, 0x20, 0x02, + 0x20, 0x04, 0x20, 0x0C, 0x20, 0x18, 0xFF, 0xE0, 0xFF, 0xFF, 0x08, 0x00, + 0x84, 0x00, 0x42, 0x00, 0x21, 0x00, 0x10, 0x80, 0x00, 0x40, 0x00, 0x20, + 0x40, 0x10, 0x20, 0x0F, 0xF0, 0x04, 0x08, 0x02, 0x04, 0x01, 0x00, 0x00, + 0x80, 0x00, 0x40, 0x02, 0x20, 0x01, 0x10, 0x00, 0x88, 0x00, 0x44, 0x00, + 0x3F, 0xFF, 0xF0, 0xFF, 0xFF, 0x88, 0x00, 0x44, 0x00, 0x22, 0x00, 0x11, + 0x00, 0x08, 0x80, 0x00, 0x40, 0x00, 0x20, 0x40, 0x10, 0x20, 0x0F, 0xF0, + 0x04, 0x08, 0x02, 0x04, 0x01, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, + 0x00, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x1F, 0xF8, 0x00, 0x03, 0xF9, + 0x06, 0x07, 0x84, 0x00, 0xC4, 0x00, 0x24, 0x00, 0x12, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, 0x10, 0x0F, 0xF8, + 0x00, 0x14, 0x00, 0x09, 0x00, 0x04, 0x80, 0x02, 0x20, 0x01, 0x18, 0x00, + 0x83, 0x01, 0xC0, 0x7F, 0x00, 0xFC, 0x3F, 0x20, 0x04, 0x20, 0x04, 0x20, + 0x04, 0x20, 0x04, 0x20, 0x04, 0x20, 0x04, 0x20, 0x04, 0x20, 0x04, 0x3F, + 0xFC, 0x20, 0x04, 0x20, 0x04, 0x20, 0x04, 0x20, 0x04, 0x20, 0x04, 0x20, + 0x04, 0x20, 0x04, 0x20, 0x04, 0x20, 0x04, 0xFC, 0x3F, 0xFF, 0xF8, 0x10, + 0x00, 0x80, 0x04, 0x00, 0x20, 0x01, 0x00, 0x08, 0x00, 0x40, 0x02, 0x00, + 0x10, 0x00, 0x80, 0x04, 0x00, 0x20, 0x01, 0x00, 0x08, 0x00, 0x40, 0x02, + 0x00, 0x10, 0x00, 0x81, 0xFF, 0xF0, 0x03, 0xFF, 0x80, 0x04, 0x00, 0x02, + 0x00, 0x01, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, 0x10, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x02, 0x10, 0x01, 0x08, 0x00, 0x84, 0x00, 0x42, + 0x00, 0x21, 0x00, 0x10, 0x80, 0x10, 0x20, 0x18, 0x0C, 0x18, 0x01, 0xF0, + 0x00, 0xFF, 0x1F, 0x84, 0x01, 0x81, 0x00, 0xC0, 0x40, 0x60, 0x10, 0x30, + 0x04, 0x18, 0x01, 0x0C, 0x00, 0x46, 0x00, 0x13, 0x00, 0x05, 0xF0, 0x01, + 0xC6, 0x00, 0x60, 0xC0, 0x10, 0x18, 0x04, 0x06, 0x01, 0x00, 0xC0, 0x40, + 0x30, 0x10, 0x04, 0x04, 0x01, 0x81, 0x00, 0x23, 0xFC, 0x0F, 0xFF, 0x80, + 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0x01, 0x00, 0x02, 0x00, 0x04, + 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0x01, 0x00, + 0x42, 0x00, 0x84, 0x01, 0x08, 0x02, 0x10, 0x04, 0x20, 0x0F, 0xFF, 0xF0, + 0xF0, 0x01, 0xE7, 0x00, 0x70, 0xA0, 0x0A, 0x16, 0x03, 0x42, 0x40, 0x48, + 0x4C, 0x19, 0x08, 0x82, 0x21, 0x10, 0x44, 0x23, 0x18, 0x84, 0x22, 0x10, + 0x86, 0xC2, 0x10, 0x50, 0x42, 0x0E, 0x08, 0x41, 0xC1, 0x08, 0x00, 0x21, + 0x00, 0x04, 0x20, 0x00, 0x84, 0x00, 0x10, 0x80, 0x02, 0x7F, 0x03, 0xF0, + 0xF8, 0x1F, 0xC6, 0x00, 0x41, 0xC0, 0x10, 0x50, 0x04, 0x12, 0x01, 0x04, + 0xC0, 0x41, 0x10, 0x10, 0x46, 0x04, 0x10, 0x81, 0x04, 0x10, 0x41, 0x04, + 0x10, 0x40, 0x84, 0x10, 0x31, 0x04, 0x04, 0x41, 0x01, 0x90, 0x40, 0x24, + 0x10, 0x05, 0x04, 0x01, 0xC1, 0x00, 0x31, 0xFC, 0x0C, 0x03, 0xE0, 0x06, + 0x0C, 0x04, 0x01, 0x04, 0x00, 0x46, 0x00, 0x32, 0x00, 0x0B, 0x00, 0x05, + 0x00, 0x01, 0x80, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x18, 0x00, + 0x0E, 0x00, 0x0D, 0x00, 0x04, 0xC0, 0x06, 0x20, 0x02, 0x08, 0x02, 0x03, + 0x06, 0x00, 0x7C, 0x00, 0xFF, 0xF0, 0x10, 0x0C, 0x10, 0x02, 0x10, 0x03, + 0x10, 0x01, 0x10, 0x01, 0x10, 0x01, 0x10, 0x03, 0x10, 0x06, 0x10, 0x0C, + 0x1F, 0xF0, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, + 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0xFF, 0xC0, 0x03, 0xE0, 0x06, 0x0C, + 0x04, 0x01, 0x04, 0x00, 0x46, 0x00, 0x32, 0x00, 0x0B, 0x00, 0x07, 0x00, + 0x01, 0x80, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x18, 0x00, 0x0E, + 0x00, 0x0D, 0x00, 0x04, 0xC0, 0x06, 0x20, 0x02, 0x08, 0x02, 0x03, 0x06, + 0x00, 0xFC, 0x00, 0x30, 0x00, 0x30, 0x00, 0x7F, 0xC6, 0x38, 0x1E, 0xFF, + 0xF0, 0x02, 0x01, 0x80, 0x40, 0x08, 0x08, 0x01, 0x81, 0x00, 0x10, 0x20, + 0x02, 0x04, 0x00, 0x40, 0x80, 0x18, 0x10, 0x06, 0x02, 0x03, 0x80, 0x7F, + 0xC0, 0x08, 0x18, 0x01, 0x01, 0x80, 0x20, 0x18, 0x04, 0x01, 0x80, 0x80, + 0x10, 0x10, 0x03, 0x02, 0x00, 0x20, 0x40, 0x06, 0x7F, 0x80, 0x70, 0x0F, + 0xC8, 0x61, 0xE2, 0x01, 0x90, 0x02, 0x40, 0x09, 0x00, 0x04, 0x00, 0x08, + 0x00, 0x38, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x18, + 0x00, 0x60, 0x01, 0x80, 0x0F, 0x00, 0x2B, 0x03, 0x23, 0xF0, 0xFF, 0xFF, + 0x02, 0x06, 0x04, 0x0C, 0x08, 0x18, 0x10, 0x20, 0x20, 0x00, 0x40, 0x00, + 0x80, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, + 0x00, 0x40, 0x00, 0x80, 0x01, 0x00, 0x02, 0x00, 0x04, 0x01, 0xFF, 0xC0, + 0xFC, 0x1F, 0x90, 0x01, 0x08, 0x00, 0x84, 0x00, 0x42, 0x00, 0x21, 0x00, + 0x10, 0x80, 0x08, 0x40, 0x04, 0x20, 0x02, 0x10, 0x01, 0x08, 0x00, 0x84, + 0x00, 0x42, 0x00, 0x21, 0x00, 0x10, 0x80, 0x08, 0x40, 0x04, 0x10, 0x04, + 0x0C, 0x06, 0x03, 0x06, 0x00, 0x7C, 0x00, 0xFE, 0x03, 0xF8, 0x80, 0x02, + 0x04, 0x00, 0x10, 0x30, 0x01, 0x80, 0x80, 0x08, 0x06, 0x00, 0xC0, 0x30, + 0x06, 0x00, 0x80, 0x20, 0x06, 0x03, 0x00, 0x30, 0x10, 0x00, 0x80, 0x80, + 0x06, 0x0C, 0x00, 0x10, 0x40, 0x00, 0x86, 0x00, 0x06, 0x20, 0x00, 0x11, + 0x00, 0x00, 0xD8, 0x00, 0x06, 0x80, 0x00, 0x1C, 0x00, 0x00, 0xE0, 0x00, + 0xFC, 0x0F, 0xE8, 0x00, 0x19, 0x00, 0x03, 0x10, 0x00, 0x62, 0x00, 0x08, + 0x41, 0x81, 0x08, 0x28, 0x21, 0x05, 0x04, 0x21, 0xA0, 0x84, 0x36, 0x30, + 0x84, 0x46, 0x08, 0x88, 0xC1, 0x31, 0x18, 0x24, 0x12, 0x04, 0x82, 0x40, + 0xB0, 0x48, 0x14, 0x09, 0x02, 0x80, 0xA0, 0x30, 0x1C, 0x06, 0x03, 0x80, + 0x7E, 0x0F, 0xC2, 0x00, 0x60, 0x60, 0x0C, 0x06, 0x03, 0x00, 0x60, 0xC0, + 0x0C, 0x10, 0x00, 0xC6, 0x00, 0x0D, 0x80, 0x00, 0xA0, 0x00, 0x1C, 0x00, + 0x03, 0x80, 0x00, 0xD8, 0x00, 0x11, 0x00, 0x06, 0x30, 0x01, 0x83, 0x00, + 0x60, 0x30, 0x08, 0x06, 0x03, 0x00, 0x60, 0xC0, 0x06, 0x7F, 0x07, 0xF0, + 0xFC, 0x1F, 0x98, 0x03, 0x04, 0x01, 0x03, 0x01, 0x80, 0xC1, 0x80, 0x20, + 0x80, 0x18, 0xC0, 0x04, 0x40, 0x03, 0x60, 0x00, 0xE0, 0x00, 0x20, 0x00, + 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x80, + 0x00, 0x40, 0x00, 0x20, 0x03, 0xFF, 0x80, 0xFF, 0xF4, 0x00, 0xA0, 0x09, + 0x00, 0x48, 0x04, 0x40, 0x40, 0x02, 0x00, 0x20, 0x02, 0x00, 0x10, 0x01, + 0x00, 0x10, 0x00, 0x80, 0x08, 0x04, 0x80, 0x24, 0x01, 0x40, 0x0C, 0x00, + 0x60, 0x03, 0xFF, 0xF0, 0xFC, 0x21, 0x08, 0x42, 0x10, 0x84, 0x21, 0x08, + 0x42, 0x10, 0x84, 0x21, 0x08, 0x42, 0x10, 0xF8, 0x80, 0x02, 0x00, 0x10, + 0x00, 0xC0, 0x02, 0x00, 0x18, 0x00, 0x40, 0x03, 0x00, 0x08, 0x00, 0x40, + 0x01, 0x00, 0x08, 0x00, 0x20, 0x01, 0x00, 0x04, 0x00, 0x20, 0x00, 0x80, + 0x04, 0x00, 0x10, 0x00, 0x80, 0x02, 0x00, 0x10, 0x00, 0x40, 0x02, 0x00, + 0x08, 0x00, 0x40, 0xF8, 0x42, 0x10, 0x84, 0x21, 0x08, 0x42, 0x10, 0x84, + 0x21, 0x08, 0x42, 0x10, 0x84, 0x21, 0xF8, 0x02, 0x00, 0x38, 0x03, 0x60, + 0x11, 0x01, 0x8C, 0x18, 0x31, 0x80, 0xD8, 0x03, 0x80, 0x08, 0xFF, 0xFF, + 0xF8, 0xC1, 0x83, 0x06, 0x0C, 0x0F, 0xC0, 0x70, 0x30, 0x00, 0x10, 0x00, + 0x08, 0x00, 0x08, 0x00, 0x08, 0x0F, 0xF8, 0x30, 0x08, 0x40, 0x08, 0x80, + 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x38, 0x60, 0xE8, 0x3F, 0x8F, 0xF0, + 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x40, 0x00, 0x10, 0x00, 0x04, 0x00, + 0x01, 0x0F, 0x80, 0x4C, 0x18, 0x14, 0x01, 0x06, 0x00, 0x21, 0x80, 0x08, + 0x40, 0x01, 0x10, 0x00, 0x44, 0x00, 0x11, 0x00, 0x04, 0x40, 0x01, 0x18, + 0x00, 0x86, 0x00, 0x21, 0xC0, 0x10, 0x5C, 0x18, 0xF1, 0xF8, 0x00, 0x07, + 0xE4, 0x30, 0x78, 0x80, 0x32, 0x00, 0x24, 0x00, 0x50, 0x00, 0x20, 0x00, + 0x40, 0x00, 0x80, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x12, 0x00, 0xC3, + 0x07, 0x01, 0xF8, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x80, 0x00, 0x20, 0x00, + 0x08, 0x00, 0x02, 0x00, 0x00, 0x80, 0x7C, 0x20, 0x60, 0xC8, 0x20, 0x0A, + 0x10, 0x01, 0x84, 0x00, 0x62, 0x00, 0x08, 0x80, 0x02, 0x20, 0x00, 0x88, + 0x00, 0x22, 0x00, 0x08, 0xC0, 0x06, 0x10, 0x01, 0x82, 0x00, 0xE0, 0x60, + 0xE8, 0x0F, 0xE3, 0xC0, 0x07, 0xE0, 0x1C, 0x18, 0x30, 0x0C, 0x60, 0x06, + 0x40, 0x03, 0xC0, 0x03, 0xC0, 0x01, 0xFF, 0xFF, 0xC0, 0x00, 0xC0, 0x00, + 0x40, 0x00, 0x60, 0x00, 0x30, 0x03, 0x0C, 0x0E, 0x03, 0xF0, 0x03, 0xFC, + 0x18, 0x00, 0x80, 0x02, 0x00, 0x08, 0x00, 0x20, 0x0F, 0xFF, 0x82, 0x00, + 0x08, 0x00, 0x20, 0x00, 0x80, 0x02, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, + 0x02, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, 0x02, 0x00, 0xFF, 0xF0, 0x0F, + 0xC7, 0x9C, 0x3A, 0x18, 0x07, 0x08, 0x01, 0x8C, 0x00, 0xC4, 0x00, 0x22, + 0x00, 0x11, 0x00, 0x08, 0x80, 0x04, 0x40, 0x02, 0x10, 0x03, 0x08, 0x01, + 0x82, 0x01, 0x40, 0xC3, 0x20, 0x3F, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x7F, 0x00, 0xF0, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x80, 0x00, 0x47, + 0xC0, 0x2C, 0x18, 0x1C, 0x04, 0x0C, 0x01, 0x04, 0x00, 0x82, 0x00, 0x41, + 0x00, 0x20, 0x80, 0x10, 0x40, 0x08, 0x20, 0x04, 0x10, 0x02, 0x08, 0x01, + 0x04, 0x00, 0x82, 0x00, 0x47, 0xC0, 0xF8, 0x06, 0x00, 0x18, 0x00, 0x60, + 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x80, 0x02, 0x00, 0x08, + 0x00, 0x20, 0x00, 0x80, 0x02, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, 0x02, + 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, 0x02, 0x03, 0xFF, 0xF0, 0x03, 0x00, + 0xC0, 0x30, 0x0C, 0x00, 0x00, 0x00, 0x03, 0xFF, 0x00, 0x40, 0x10, 0x04, + 0x01, 0x00, 0x40, 0x10, 0x04, 0x01, 0x00, 0x40, 0x10, 0x04, 0x01, 0x00, + 0x40, 0x10, 0x04, 0x01, 0x00, 0x40, 0x10, 0x08, 0x06, 0xFE, 0x00, 0xF0, + 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, + 0xFE, 0x10, 0x30, 0x10, 0xE0, 0x11, 0xC0, 0x13, 0x00, 0x16, 0x00, 0x1E, + 0x00, 0x1B, 0x00, 0x11, 0x80, 0x10, 0xC0, 0x10, 0x60, 0x10, 0x30, 0x10, + 0x18, 0x10, 0x1C, 0xF0, 0x3F, 0x7E, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, + 0x02, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, 0x02, 0x00, 0x08, 0x00, 0x20, + 0x00, 0x80, 0x02, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, 0x02, 0x00, 0x08, + 0x00, 0x20, 0x00, 0x80, 0xFF, 0xFC, 0xEF, 0x9E, 0x07, 0x1E, 0x20, 0xC1, + 0x82, 0x10, 0x20, 0x42, 0x04, 0x08, 0x40, 0x81, 0x08, 0x10, 0x21, 0x02, + 0x04, 0x20, 0x40, 0x84, 0x08, 0x10, 0x81, 0x02, 0x10, 0x20, 0x42, 0x04, + 0x08, 0x40, 0x81, 0x3E, 0x1C, 0x38, 0x71, 0xF0, 0x0B, 0x06, 0x07, 0x01, + 0x03, 0x00, 0x41, 0x00, 0x20, 0x80, 0x10, 0x40, 0x08, 0x20, 0x04, 0x10, + 0x02, 0x08, 0x01, 0x04, 0x00, 0x82, 0x00, 0x41, 0x00, 0x20, 0x80, 0x13, + 0xF0, 0x3E, 0x07, 0xC0, 0x30, 0x60, 0x80, 0x22, 0x00, 0x24, 0x00, 0x50, + 0x00, 0x60, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, 0x05, 0x00, 0x12, 0x00, + 0x22, 0x00, 0x83, 0x06, 0x01, 0xF0, 0x00, 0xF1, 0xFC, 0x05, 0xC1, 0x81, + 0xC0, 0x10, 0x60, 0x02, 0x18, 0x00, 0xC4, 0x00, 0x11, 0x00, 0x04, 0x40, + 0x01, 0x10, 0x00, 0x44, 0x00, 0x11, 0x80, 0x08, 0x60, 0x02, 0x14, 0x01, + 0x04, 0xC1, 0x81, 0x0F, 0x80, 0x40, 0x00, 0x10, 0x00, 0x04, 0x00, 0x01, + 0x00, 0x00, 0x40, 0x00, 0x10, 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xE3, 0xC6, + 0x0E, 0x86, 0x00, 0xE1, 0x00, 0x18, 0xC0, 0x06, 0x20, 0x00, 0x88, 0x00, + 0x22, 0x00, 0x08, 0x80, 0x02, 0x20, 0x00, 0x84, 0x00, 0x61, 0x00, 0x18, + 0x20, 0x0A, 0x06, 0x0C, 0x80, 0x7C, 0x20, 0x00, 0x08, 0x00, 0x02, 0x00, + 0x00, 0x80, 0x00, 0x20, 0x00, 0x08, 0x00, 0x02, 0x00, 0x0F, 0xF0, 0xF8, + 0x7C, 0x11, 0x8C, 0x2C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x02, 0x00, + 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0x01, + 0x00, 0x3F, 0xFC, 0x00, 0x0F, 0xD1, 0x83, 0x98, 0x04, 0x80, 0x24, 0x00, + 0x30, 0x00, 0xF0, 0x00, 0xFC, 0x00, 0x30, 0x00, 0xE0, 0x03, 0x00, 0x1C, + 0x01, 0xF0, 0x1A, 0x7F, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, + 0x00, 0x08, 0x00, 0xFF, 0xFC, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, + 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, + 0x00, 0x08, 0x00, 0x08, 0x01, 0x06, 0x0F, 0x03, 0xF8, 0xF0, 0x3E, 0x08, + 0x01, 0x04, 0x00, 0x82, 0x00, 0x41, 0x00, 0x20, 0x80, 0x10, 0x40, 0x08, + 0x20, 0x04, 0x10, 0x02, 0x08, 0x01, 0x04, 0x00, 0x82, 0x00, 0x41, 0x00, + 0xE0, 0x41, 0xD0, 0x1F, 0x8E, 0xFE, 0x0F, 0xE2, 0x00, 0x20, 0x60, 0x0C, + 0x0C, 0x01, 0x80, 0x80, 0x20, 0x18, 0x0C, 0x01, 0x01, 0x00, 0x30, 0x60, + 0x02, 0x08, 0x00, 0x41, 0x00, 0x0C, 0x60, 0x00, 0x88, 0x00, 0x19, 0x00, + 0x01, 0x40, 0x00, 0x38, 0x00, 0xFC, 0x07, 0xE4, 0x00, 0x10, 0x80, 0x02, + 0x18, 0x20, 0xC3, 0x0E, 0x18, 0x21, 0x42, 0x04, 0x28, 0x40, 0x8D, 0x88, + 0x19, 0x93, 0x03, 0x22, 0x60, 0x2C, 0x68, 0x05, 0x85, 0x00, 0xA0, 0xA0, + 0x1C, 0x1C, 0x01, 0x81, 0x80, 0x7C, 0x1F, 0x18, 0x03, 0x06, 0x03, 0x01, + 0x83, 0x00, 0x63, 0x00, 0x1B, 0x00, 0x07, 0x00, 0x03, 0x80, 0x03, 0x60, + 0x03, 0x18, 0x03, 0x06, 0x03, 0x01, 0x83, 0x00, 0x61, 0x00, 0x33, 0xF0, + 0x7E, 0xFC, 0x1F, 0x90, 0x01, 0x8C, 0x00, 0x86, 0x00, 0xC1, 0x80, 0x40, + 0xC0, 0x60, 0x20, 0x20, 0x18, 0x30, 0x04, 0x10, 0x03, 0x08, 0x00, 0x8C, + 0x00, 0x64, 0x00, 0x16, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x01, 0x00, 0x01, + 0x80, 0x00, 0x80, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x20, 0x07, 0xFE, 0x00, + 0xFF, 0xF4, 0x01, 0x20, 0x09, 0x00, 0x80, 0x08, 0x00, 0x80, 0x08, 0x00, + 0xC0, 0x04, 0x00, 0x40, 0x04, 0x00, 0x40, 0x14, 0x00, 0xA0, 0x07, 0xFF, + 0xE0, 0x07, 0x0C, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x30, 0xC0, 0x30, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x0C, 0x07, 0xFF, 0xFF, 0xFF, 0x80, 0xE0, 0x30, 0x10, 0x10, 0x10, 0x10, + 0x10, 0x10, 0x10, 0x10, 0x10, 0x08, 0x07, 0x0C, 0x10, 0x10, 0x10, 0x10, + 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0xE0, 0x1C, 0x00, 0x44, 0x0D, 0x84, + 0x36, 0x04, 0x40, 0x07, 0x00}; + +const GFXglyph FreeMono18pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 21, 0, 1}, // 0x20 ' ' + {0, 4, 22, 21, 8, -21}, // 0x21 '!' + {11, 11, 10, 21, 5, -20}, // 0x22 '"' + {25, 14, 24, 21, 3, -21}, // 0x23 '#' + {67, 13, 26, 21, 4, -22}, // 0x24 '$' + {110, 15, 21, 21, 3, -20}, // 0x25 '%' + {150, 12, 18, 21, 4, -17}, // 0x26 '&' + {177, 4, 10, 21, 8, -20}, // 0x27 ''' + {182, 5, 25, 21, 10, -20}, // 0x28 '(' + {198, 5, 25, 21, 6, -20}, // 0x29 ')' + {214, 13, 12, 21, 4, -20}, // 0x2A '*' + {234, 15, 17, 21, 3, -17}, // 0x2B '+' + {266, 7, 10, 21, 5, -4}, // 0x2C ',' + {275, 15, 1, 21, 3, -9}, // 0x2D '-' + {277, 5, 5, 21, 8, -4}, // 0x2E '.' + {281, 13, 26, 21, 4, -22}, // 0x2F '/' + {324, 13, 21, 21, 4, -20}, // 0x30 '0' + {359, 13, 21, 21, 4, -20}, // 0x31 '1' + {394, 13, 21, 21, 3, -20}, // 0x32 '2' + {429, 14, 21, 21, 3, -20}, // 0x33 '3' + {466, 12, 21, 21, 4, -20}, // 0x34 '4' + {498, 14, 21, 21, 3, -20}, // 0x35 '5' + {535, 12, 21, 21, 5, -20}, // 0x36 '6' + {567, 12, 21, 21, 4, -20}, // 0x37 '7' + {599, 13, 21, 21, 4, -20}, // 0x38 '8' + {634, 12, 21, 21, 5, -20}, // 0x39 '9' + {666, 5, 15, 21, 8, -14}, // 0x3A ':' + {676, 7, 20, 21, 5, -14}, // 0x3B ';' + {694, 15, 16, 21, 3, -17}, // 0x3C '<' + {724, 17, 6, 21, 2, -12}, // 0x3D '=' + {737, 15, 16, 21, 3, -17}, // 0x3E '>' + {767, 12, 20, 21, 5, -19}, // 0x3F '?' + {797, 13, 23, 21, 4, -20}, // 0x40 '@' + {835, 21, 20, 21, 0, -19}, // 0x41 'A' + {888, 18, 20, 21, 1, -19}, // 0x42 'B' + {933, 17, 20, 21, 2, -19}, // 0x43 'C' + {976, 16, 20, 21, 2, -19}, // 0x44 'D' + {1016, 17, 20, 21, 1, -19}, // 0x45 'E' + {1059, 17, 20, 21, 1, -19}, // 0x46 'F' + {1102, 17, 20, 21, 2, -19}, // 0x47 'G' + {1145, 16, 20, 21, 2, -19}, // 0x48 'H' + {1185, 13, 20, 21, 4, -19}, // 0x49 'I' + {1218, 17, 20, 21, 3, -19}, // 0x4A 'J' + {1261, 18, 20, 21, 1, -19}, // 0x4B 'K' + {1306, 15, 20, 21, 3, -19}, // 0x4C 'L' + {1344, 19, 20, 21, 1, -19}, // 0x4D 'M' + {1392, 18, 20, 21, 1, -19}, // 0x4E 'N' + {1437, 17, 20, 21, 2, -19}, // 0x4F 'O' + {1480, 16, 20, 21, 1, -19}, // 0x50 'P' + {1520, 17, 24, 21, 2, -19}, // 0x51 'Q' + {1571, 19, 20, 21, 1, -19}, // 0x52 'R' + {1619, 14, 20, 21, 3, -19}, // 0x53 'S' + {1654, 15, 20, 21, 3, -19}, // 0x54 'T' + {1692, 17, 20, 21, 2, -19}, // 0x55 'U' + {1735, 21, 20, 21, 0, -19}, // 0x56 'V' + {1788, 19, 20, 21, 1, -19}, // 0x57 'W' + {1836, 19, 20, 21, 1, -19}, // 0x58 'X' + {1884, 17, 20, 21, 2, -19}, // 0x59 'Y' + {1927, 13, 20, 21, 4, -19}, // 0x5A 'Z' + {1960, 5, 25, 21, 10, -20}, // 0x5B '[' + {1976, 13, 26, 21, 4, -22}, // 0x5C '\' + {2019, 5, 25, 21, 6, -20}, // 0x5D ']' + {2035, 13, 9, 21, 4, -20}, // 0x5E '^' + {2050, 21, 1, 21, 0, 4}, // 0x5F '_' + {2053, 6, 5, 21, 5, -21}, // 0x60 '`' + {2057, 16, 15, 21, 3, -14}, // 0x61 'a' + {2087, 18, 21, 21, 1, -20}, // 0x62 'b' + {2135, 15, 15, 21, 3, -14}, // 0x63 'c' + {2164, 18, 21, 21, 2, -20}, // 0x64 'd' + {2212, 16, 15, 21, 2, -14}, // 0x65 'e' + {2242, 14, 21, 21, 4, -20}, // 0x66 'f' + {2279, 17, 22, 21, 2, -14}, // 0x67 'g' + {2326, 17, 21, 21, 1, -20}, // 0x68 'h' + {2371, 14, 22, 21, 4, -21}, // 0x69 'i' + {2410, 10, 29, 21, 5, -21}, // 0x6A 'j' + {2447, 16, 21, 21, 2, -20}, // 0x6B 'k' + {2489, 14, 21, 21, 4, -20}, // 0x6C 'l' + {2526, 19, 15, 21, 1, -14}, // 0x6D 'm' + {2562, 17, 15, 21, 1, -14}, // 0x6E 'n' + {2594, 15, 15, 21, 3, -14}, // 0x6F 'o' + {2623, 18, 22, 21, 1, -14}, // 0x70 'p' + {2673, 18, 22, 21, 2, -14}, // 0x71 'q' + {2723, 15, 15, 21, 3, -14}, // 0x72 'r' + {2752, 13, 15, 21, 4, -14}, // 0x73 's' + {2777, 16, 20, 21, 1, -19}, // 0x74 't' + {2817, 17, 15, 21, 1, -14}, // 0x75 'u' + {2849, 19, 15, 21, 1, -14}, // 0x76 'v' + {2885, 19, 15, 21, 1, -14}, // 0x77 'w' + {2921, 17, 15, 21, 2, -14}, // 0x78 'x' + {2953, 17, 22, 21, 2, -14}, // 0x79 'y' + {3000, 13, 15, 21, 4, -14}, // 0x7A 'z' + {3025, 8, 25, 21, 6, -20}, // 0x7B '{' + {3050, 1, 25, 21, 10, -20}, // 0x7C '|' + {3054, 8, 25, 21, 7, -20}, // 0x7D '}' + {3079, 15, 5, 21, 3, -11}}; // 0x7E '~' + +const GFXfont FreeMono18pt7b PROGMEM = {(uint8_t *)FreeMono18pt7bBitmaps, + (GFXglyph *)FreeMono18pt7bGlyphs, 0x20, + 0x7E, 35}; + +// Approx. 3761 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMono24pt7b.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMono24pt7b.h new file mode 100644 index 0000000..2540ed4 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMono24pt7b.h @@ -0,0 +1,579 @@ +#pragma once +#include + +const uint8_t FreeMono24pt7bBitmaps[] PROGMEM = { + 0x73, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x9C, 0xE7, 0x10, 0x84, 0x21, 0x08, + 0x00, 0x00, 0x00, 0x03, 0xBF, 0xFF, 0xB8, 0xFE, 0x7F, 0x7C, 0x3E, 0x7C, + 0x3E, 0x7C, 0x3E, 0x7C, 0x3E, 0x7C, 0x3E, 0x7C, 0x3E, 0x7C, 0x3E, 0x3C, + 0x3E, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x01, + 0x86, 0x00, 0x30, 0xC0, 0x06, 0x18, 0x00, 0xC3, 0x00, 0x18, 0x60, 0x03, + 0x0C, 0x00, 0x61, 0x80, 0x0C, 0x70, 0x01, 0x8C, 0x00, 0x61, 0x80, 0x0C, + 0x30, 0x3F, 0xFF, 0xF7, 0xFF, 0xFE, 0x06, 0x18, 0x00, 0xC3, 0x00, 0x18, + 0x60, 0x03, 0x0C, 0x00, 0x61, 0x80, 0x0C, 0x30, 0x7F, 0xFF, 0xEF, 0xFF, + 0xFC, 0x06, 0x18, 0x00, 0xC7, 0x00, 0x38, 0xC0, 0x06, 0x18, 0x00, 0xC3, + 0x00, 0x18, 0x60, 0x03, 0x0C, 0x00, 0x61, 0x80, 0x0C, 0x30, 0x01, 0x86, + 0x00, 0x30, 0xC0, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x0C, 0x00, 0x0F, 0xC0, + 0x0F, 0xFD, 0x87, 0x03, 0xE3, 0x80, 0x39, 0xC0, 0x06, 0x60, 0x01, 0x98, + 0x00, 0x06, 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x07, 0xC0, 0x00, 0x7F, + 0x80, 0x03, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0x60, 0x00, 0x1C, 0x00, 0x03, + 0x80, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x1F, 0x80, 0x0E, 0xFC, 0x0F, 0x37, + 0xFF, 0x80, 0x7F, 0x80, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x0C, + 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x07, 0x80, 0x01, 0xFE, 0x00, 0x38, + 0x70, 0x03, 0x03, 0x00, 0x60, 0x18, 0x06, 0x01, 0x80, 0x60, 0x18, 0x06, + 0x01, 0x80, 0x30, 0x30, 0x03, 0x87, 0x00, 0x1F, 0xE0, 0x30, 0x78, 0x1F, + 0x00, 0x1F, 0x80, 0x0F, 0xC0, 0x07, 0xE0, 0x03, 0xF0, 0x00, 0xF8, 0x00, + 0x0C, 0x01, 0xE0, 0x00, 0x7F, 0x80, 0x0E, 0x1C, 0x00, 0xC0, 0xC0, 0x18, + 0x06, 0x01, 0x80, 0x60, 0x18, 0x06, 0x01, 0x80, 0x60, 0x0C, 0x0E, 0x00, + 0xE1, 0xC0, 0x07, 0xF8, 0x00, 0x1E, 0x00, 0x03, 0xEC, 0x01, 0xFF, 0x00, + 0xE1, 0x00, 0x70, 0x00, 0x18, 0x00, 0x06, 0x00, 0x01, 0x80, 0x00, 0x30, + 0x00, 0x0C, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, 0x7C, 0x00, 0x3B, 0x83, + 0xD8, 0x60, 0xFE, 0x0C, 0x33, 0x03, 0x98, 0xC0, 0x66, 0x30, 0x0D, 0x8C, + 0x03, 0xC3, 0x00, 0x70, 0x60, 0x1C, 0x1C, 0x0F, 0x03, 0x87, 0x7C, 0x7F, + 0x9F, 0x07, 0x80, 0x00, 0xFE, 0xF9, 0xF3, 0xE7, 0xCF, 0x9F, 0x3E, 0x3C, + 0x70, 0xE1, 0xC3, 0x87, 0x00, 0x06, 0x1C, 0x30, 0xE1, 0x87, 0x0E, 0x18, + 0x70, 0xE1, 0xC3, 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xC3, 0x87, 0x0E, 0x0C, + 0x1C, 0x38, 0x70, 0x60, 0xE1, 0xC1, 0x83, 0x83, 0x06, 0x06, 0x04, 0xC1, + 0xC1, 0x83, 0x83, 0x07, 0x0E, 0x0C, 0x1C, 0x38, 0x70, 0xE0, 0xE1, 0xC3, + 0x87, 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0x87, 0x0E, 0x1C, 0x30, 0x61, 0xC3, + 0x0E, 0x18, 0x70, 0xC1, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x0C, 0x00, + 0x03, 0x00, 0x00, 0xC0, 0x10, 0x30, 0x3F, 0x8C, 0x7C, 0xFF, 0xFC, 0x07, + 0xF8, 0x00, 0x78, 0x00, 0x1F, 0x00, 0x0C, 0xC0, 0x06, 0x18, 0x03, 0x87, + 0x00, 0xC0, 0xC0, 0x60, 0x18, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, 0x60, + 0x00, 0x06, 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, 0x60, 0x00, 0x06, + 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, + 0x60, 0x00, 0x06, 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, 0x60, 0x00, + 0x06, 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, + 0x1F, 0x8F, 0x87, 0xC7, 0xC3, 0xE1, 0xE1, 0xF0, 0xF0, 0x78, 0x38, 0x3C, + 0x1C, 0x0E, 0x06, 0x00, 0x7F, 0xFF, 0xFD, 0xFF, 0xFF, 0xF0, 0x7D, 0xFF, + 0xFF, 0xFF, 0xEF, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x70, 0x00, 0x18, 0x00, + 0x06, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x18, 0x00, 0x0C, + 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, 0x30, 0x00, 0x0C, 0x00, + 0x06, 0x00, 0x01, 0x80, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x18, 0x00, 0x06, + 0x00, 0x03, 0x80, 0x00, 0xC0, 0x00, 0x70, 0x00, 0x18, 0x00, 0x0E, 0x00, + 0x03, 0x00, 0x01, 0xC0, 0x00, 0x60, 0x00, 0x38, 0x00, 0x0C, 0x00, 0x07, + 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, 0x30, 0x00, 0x0C, 0x00, 0x00, 0x03, + 0xF0, 0x03, 0xFF, 0x01, 0xE1, 0xE0, 0xE0, 0x18, 0x30, 0x03, 0x1C, 0x00, + 0xE6, 0x00, 0x19, 0x80, 0x06, 0xE0, 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x0F, + 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, + 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF8, 0x00, + 0x76, 0x00, 0x19, 0x80, 0x06, 0x70, 0x03, 0x8C, 0x00, 0xC3, 0x80, 0x60, + 0x78, 0x78, 0x0F, 0xFC, 0x00, 0xFC, 0x00, 0x03, 0x80, 0x07, 0x80, 0x0F, + 0x80, 0x1D, 0x80, 0x39, 0x80, 0x71, 0x80, 0xE1, 0x80, 0xC1, 0x80, 0x01, + 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, + 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, + 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, + 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xF0, 0x03, 0xFF, 0x01, 0xC0, 0xE0, + 0xC0, 0x1C, 0x60, 0x03, 0xB8, 0x00, 0x6C, 0x00, 0x0F, 0x00, 0x03, 0x00, + 0x00, 0xC0, 0x00, 0x30, 0x00, 0x18, 0x00, 0x06, 0x00, 0x03, 0x00, 0x01, + 0x80, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x18, 0x00, 0x0C, 0x00, + 0x06, 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x30, + 0x00, 0xD0, 0x00, 0x38, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x03, + 0xF8, 0x01, 0xFF, 0xC0, 0x70, 0x3C, 0x18, 0x01, 0xC6, 0x00, 0x18, 0x00, + 0x01, 0x80, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0xC0, 0x00, 0x18, 0x00, + 0x06, 0x00, 0x01, 0xC0, 0x00, 0x70, 0x01, 0xFC, 0x00, 0x3F, 0x00, 0x00, + 0x78, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, + 0x06, 0x00, 0x00, 0xC0, 0x00, 0x18, 0x00, 0x03, 0x00, 0x00, 0xD8, 0x00, + 0x3B, 0x80, 0x0E, 0x3E, 0x07, 0x81, 0xFF, 0xE0, 0x07, 0xE0, 0x00, 0x00, + 0x3C, 0x00, 0x7C, 0x00, 0x6C, 0x00, 0xCC, 0x00, 0x8C, 0x01, 0x8C, 0x03, + 0x0C, 0x03, 0x0C, 0x06, 0x0C, 0x04, 0x0C, 0x0C, 0x0C, 0x08, 0x0C, 0x10, + 0x0C, 0x30, 0x0C, 0x20, 0x0C, 0x60, 0x0C, 0x40, 0x0C, 0x80, 0x0C, 0xFF, + 0xFF, 0xFF, 0xFF, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, + 0x0C, 0x00, 0x0C, 0x00, 0xFF, 0x00, 0xFF, 0x3F, 0xFF, 0x07, 0xFF, 0xE0, + 0xC0, 0x00, 0x18, 0x00, 0x03, 0x00, 0x00, 0x60, 0x00, 0x0C, 0x00, 0x01, + 0x80, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0xC7, 0xE0, 0x1F, 0xFF, 0x03, + 0x80, 0x70, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0x60, + 0x00, 0x0C, 0x00, 0x01, 0x80, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0xC0, + 0x00, 0x30, 0x00, 0x06, 0xC0, 0x01, 0xDC, 0x00, 0x71, 0xF0, 0x3C, 0x0F, + 0xFF, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x80, 0x3F, 0xF0, 0x3E, 0x00, 0x1E, + 0x00, 0x0E, 0x00, 0x07, 0x00, 0x03, 0x80, 0x00, 0xC0, 0x00, 0x70, 0x00, + 0x18, 0x00, 0x06, 0x00, 0x03, 0x80, 0x00, 0xC1, 0xF8, 0x31, 0xFF, 0x0C, + 0xF0, 0xF3, 0x70, 0x0C, 0xD8, 0x01, 0xBC, 0x00, 0x6E, 0x00, 0x0F, 0x80, + 0x03, 0xC0, 0x00, 0xD8, 0x00, 0x36, 0x00, 0x0D, 0x80, 0x03, 0x30, 0x01, + 0x8E, 0x00, 0x61, 0xC0, 0x30, 0x38, 0x38, 0x07, 0xFC, 0x00, 0x7C, 0x00, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x01, 0xC0, + 0x00, 0x60, 0x00, 0x18, 0x00, 0x0E, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, + 0x30, 0x00, 0x18, 0x00, 0x06, 0x00, 0x01, 0x80, 0x00, 0xC0, 0x00, 0x30, + 0x00, 0x0C, 0x00, 0x06, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, 0x30, 0x00, + 0x0C, 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, 0x18, 0x00, 0x0C, + 0x00, 0x03, 0x00, 0x03, 0xF0, 0x03, 0xFF, 0x03, 0xC0, 0xF1, 0xC0, 0x0E, + 0x60, 0x01, 0xB8, 0x00, 0x7C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, + 0x00, 0x36, 0x00, 0x18, 0xC0, 0x0C, 0x1C, 0x0E, 0x03, 0xFF, 0x00, 0xFF, + 0xC0, 0x70, 0x38, 0x30, 0x03, 0x18, 0x00, 0x66, 0x00, 0x1B, 0x00, 0x03, + 0xC0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0x60, 0x01, 0x98, + 0x00, 0xE3, 0x00, 0x70, 0x70, 0x38, 0x0F, 0xFC, 0x00, 0xFC, 0x00, 0x07, + 0xE0, 0x03, 0xFE, 0x01, 0xC1, 0xC0, 0xC0, 0x38, 0x60, 0x07, 0x18, 0x00, + 0xCC, 0x00, 0x1B, 0x00, 0x06, 0xC0, 0x01, 0xB0, 0x00, 0x3C, 0x00, 0x1F, + 0x00, 0x07, 0x60, 0x03, 0xD8, 0x01, 0xB3, 0x00, 0xCC, 0xF0, 0xF3, 0x0F, + 0xF8, 0xC1, 0xF8, 0x30, 0x00, 0x1C, 0x00, 0x06, 0x00, 0x01, 0x80, 0x00, + 0xE0, 0x00, 0x30, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x07, 0x80, + 0x07, 0xC0, 0xFF, 0xC0, 0x1F, 0xC0, 0x00, 0x7D, 0xFF, 0xFF, 0xFF, 0xEF, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xFF, 0xFF, 0xFF, + 0xF7, 0xC0, 0x0F, 0x87, 0xF1, 0xFC, 0x7F, 0x1F, 0xC3, 0xE0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF1, 0xF8, 0x7C, 0x3F, 0x0F, + 0x83, 0xE0, 0xF0, 0x7C, 0x1E, 0x07, 0x81, 0xC0, 0xF0, 0x38, 0x04, 0x00, + 0x00, 0x00, 0x18, 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, + 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x00, + 0x00, 0x78, 0x00, 0x07, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x1E, 0x00, 0x00, + 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x20, 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, + 0xFF, 0x7F, 0xFF, 0xFF, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x0F, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x38, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x03, + 0xC0, 0x00, 0x07, 0x80, 0x00, 0x0E, 0x00, 0x00, 0x3C, 0x00, 0x01, 0xE0, + 0x00, 0x3C, 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x01, 0xE0, + 0x00, 0x3C, 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x0E, 0x00, 0x00, 0x60, + 0x00, 0x00, 0x07, 0xF0, 0x1F, 0xFE, 0x3E, 0x07, 0x98, 0x00, 0xEC, 0x00, + 0x36, 0x00, 0x0F, 0x00, 0x06, 0x00, 0x03, 0x00, 0x01, 0x80, 0x01, 0xC0, + 0x00, 0xC0, 0x01, 0xC0, 0x03, 0xC0, 0x07, 0xC0, 0x07, 0x00, 0x03, 0x00, + 0x01, 0x80, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x80, 0x07, 0xE0, 0x03, 0xF0, 0x01, 0xF8, 0x00, + 0x78, 0x00, 0x03, 0xF0, 0x03, 0xFF, 0x01, 0xE0, 0xE0, 0xE0, 0x1C, 0x30, + 0x03, 0x1C, 0x00, 0x66, 0x00, 0x19, 0x80, 0x06, 0xC0, 0x01, 0xB0, 0x07, + 0xEC, 0x07, 0xFB, 0x03, 0xC6, 0xC1, 0xC1, 0xB0, 0xE0, 0x6C, 0x30, 0x1B, + 0x0C, 0x06, 0xC3, 0x01, 0xB0, 0xC0, 0x6C, 0x18, 0x1B, 0x07, 0x86, 0xC0, + 0xFF, 0xF0, 0x0F, 0xFC, 0x00, 0x03, 0x00, 0x00, 0x60, 0x00, 0x18, 0x00, + 0x07, 0x00, 0x00, 0xC0, 0x00, 0x38, 0x00, 0x07, 0x80, 0xC0, 0xFF, 0xF0, + 0x0F, 0xE0, 0x07, 0xFF, 0x00, 0x00, 0x7F, 0xF0, 0x00, 0x00, 0x1B, 0x00, + 0x00, 0x01, 0x98, 0x00, 0x00, 0x11, 0x80, 0x00, 0x03, 0x0C, 0x00, 0x00, + 0x30, 0xC0, 0x00, 0x06, 0x0C, 0x00, 0x00, 0x60, 0x60, 0x00, 0x06, 0x06, + 0x00, 0x00, 0xC0, 0x30, 0x00, 0x0C, 0x03, 0x00, 0x00, 0x80, 0x30, 0x00, + 0x18, 0x01, 0x80, 0x01, 0x80, 0x18, 0x00, 0x3F, 0xFF, 0x80, 0x03, 0xFF, + 0xFC, 0x00, 0x20, 0x00, 0xC0, 0x06, 0x00, 0x06, 0x00, 0x60, 0x00, 0x60, + 0x0C, 0x00, 0x06, 0x00, 0xC0, 0x00, 0x30, 0x0C, 0x00, 0x03, 0x01, 0x80, + 0x00, 0x18, 0x7F, 0xC0, 0x3F, 0xF7, 0xFC, 0x03, 0xFF, 0xFF, 0xFF, 0x03, + 0xFF, 0xFF, 0x01, 0x80, 0x0E, 0x06, 0x00, 0x1C, 0x18, 0x00, 0x38, 0x60, + 0x00, 0x61, 0x80, 0x01, 0x86, 0x00, 0x06, 0x18, 0x00, 0x38, 0x60, 0x01, + 0xC1, 0x80, 0x1E, 0x07, 0xFF, 0xE0, 0x1F, 0xFF, 0xC0, 0x60, 0x03, 0xC1, + 0x80, 0x03, 0x86, 0x00, 0x06, 0x18, 0x00, 0x1C, 0x60, 0x00, 0x31, 0x80, + 0x00, 0xC6, 0x00, 0x03, 0x18, 0x00, 0x0C, 0x60, 0x00, 0x61, 0x80, 0x03, + 0x86, 0x00, 0x1C, 0xFF, 0xFF, 0xE3, 0xFF, 0xFE, 0x00, 0x00, 0xFC, 0x00, + 0x0F, 0xFE, 0x60, 0xF0, 0x3D, 0x87, 0x00, 0x3E, 0x38, 0x00, 0x38, 0xC0, + 0x00, 0xE7, 0x00, 0x01, 0x98, 0x00, 0x06, 0x60, 0x00, 0x03, 0x00, 0x00, + 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x0C, + 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, + 0x00, 0x18, 0x00, 0x00, 0x60, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, 0x00, + 0xC7, 0x00, 0x06, 0x0E, 0x00, 0x70, 0x1E, 0x07, 0x80, 0x3F, 0xFC, 0x00, + 0x1F, 0x80, 0xFF, 0xFE, 0x03, 0xFF, 0xFE, 0x03, 0x00, 0x3C, 0x0C, 0x00, + 0x38, 0x30, 0x00, 0x70, 0xC0, 0x00, 0xC3, 0x00, 0x03, 0x8C, 0x00, 0x06, + 0x30, 0x00, 0x1C, 0xC0, 0x00, 0x33, 0x00, 0x00, 0xCC, 0x00, 0x03, 0x30, + 0x00, 0x0C, 0xC0, 0x00, 0x33, 0x00, 0x00, 0xCC, 0x00, 0x03, 0x30, 0x00, + 0x0C, 0xC0, 0x00, 0x33, 0x00, 0x01, 0x8C, 0x00, 0x06, 0x30, 0x00, 0x30, + 0xC0, 0x01, 0xC3, 0x00, 0x0E, 0x0C, 0x00, 0xF0, 0xFF, 0xFF, 0x83, 0xFF, + 0xF8, 0x00, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xE1, 0x80, 0x01, 0x86, 0x00, + 0x06, 0x18, 0x00, 0x18, 0x60, 0x00, 0x61, 0x80, 0x01, 0x86, 0x00, 0x00, + 0x18, 0x0C, 0x00, 0x60, 0x30, 0x01, 0x80, 0xC0, 0x07, 0xFF, 0x00, 0x1F, + 0xFC, 0x00, 0x60, 0x30, 0x01, 0x80, 0xC0, 0x06, 0x03, 0x00, 0x18, 0x00, + 0x00, 0x60, 0x00, 0x01, 0x80, 0x00, 0xC6, 0x00, 0x03, 0x18, 0x00, 0x0C, + 0x60, 0x00, 0x31, 0x80, 0x00, 0xC6, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0x80, 0x00, 0xC6, 0x00, + 0x03, 0x18, 0x00, 0x0C, 0x60, 0x00, 0x31, 0x80, 0x00, 0xC6, 0x00, 0x00, + 0x18, 0x0C, 0x00, 0x60, 0x30, 0x01, 0x80, 0xC0, 0x07, 0xFF, 0x00, 0x1F, + 0xFC, 0x00, 0x60, 0x30, 0x01, 0x80, 0xC0, 0x06, 0x03, 0x00, 0x18, 0x00, + 0x00, 0x60, 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0x18, 0x00, 0x00, + 0x60, 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0xFF, 0xF0, 0x03, 0xFF, + 0xC0, 0x00, 0x00, 0xFF, 0x00, 0x07, 0xFF, 0x98, 0x1E, 0x03, 0xF0, 0x70, + 0x01, 0xE1, 0x80, 0x01, 0xC6, 0x00, 0x01, 0x9C, 0x00, 0x03, 0x30, 0x00, + 0x00, 0x60, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, + 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, 0x03, 0xFF, + 0xC0, 0x07, 0xFF, 0x80, 0x00, 0x1B, 0x00, 0x00, 0x37, 0x00, 0x00, 0x66, + 0x00, 0x00, 0xCC, 0x00, 0x01, 0x8C, 0x00, 0x03, 0x1C, 0x00, 0x06, 0x1E, + 0x00, 0x0C, 0x0F, 0x00, 0xF8, 0x0F, 0xFF, 0xC0, 0x03, 0xFC, 0x00, 0x7F, + 0x01, 0xFC, 0xFE, 0x03, 0xF8, 0x60, 0x00, 0xC0, 0xC0, 0x01, 0x81, 0x80, + 0x03, 0x03, 0x00, 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x18, 0x00, + 0x30, 0x30, 0x00, 0x60, 0x60, 0x00, 0xC0, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, + 0x03, 0x00, 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x18, 0x00, 0x30, + 0x30, 0x00, 0x60, 0x60, 0x00, 0xC0, 0xC0, 0x01, 0x81, 0x80, 0x03, 0x03, + 0x00, 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0xFF, 0x01, 0xFF, 0xFE, + 0x03, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, + 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, + 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, + 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, + 0x01, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFE, 0x01, 0xFF, 0xFC, + 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x18, 0x00, + 0x00, 0x30, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, + 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, + 0x30, 0x60, 0x00, 0x60, 0xC0, 0x00, 0xC1, 0x80, 0x01, 0x83, 0x00, 0x03, + 0x06, 0x00, 0x06, 0x0C, 0x00, 0x0C, 0x18, 0x00, 0x30, 0x38, 0x00, 0x60, + 0x38, 0x01, 0x80, 0x3C, 0x0E, 0x00, 0x3F, 0xF8, 0x00, 0x0F, 0xC0, 0x00, + 0xFF, 0x81, 0xFE, 0xFF, 0x81, 0xFE, 0x18, 0x00, 0x30, 0x18, 0x00, 0xE0, + 0x18, 0x01, 0xC0, 0x18, 0x03, 0x80, 0x18, 0x07, 0x00, 0x18, 0x0E, 0x00, + 0x18, 0x18, 0x00, 0x18, 0x70, 0x00, 0x18, 0xE0, 0x00, 0x19, 0xE0, 0x00, + 0x1B, 0xF8, 0x00, 0x1F, 0x1C, 0x00, 0x1C, 0x06, 0x00, 0x18, 0x03, 0x00, + 0x18, 0x03, 0x80, 0x18, 0x01, 0x80, 0x18, 0x00, 0xC0, 0x18, 0x00, 0xC0, + 0x18, 0x00, 0x60, 0x18, 0x00, 0x60, 0x18, 0x00, 0x70, 0x18, 0x00, 0x30, + 0xFF, 0x80, 0x3F, 0xFF, 0x80, 0x1F, 0xFF, 0xF0, 0x07, 0xFF, 0x80, 0x01, + 0x80, 0x00, 0x0C, 0x00, 0x00, 0x60, 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, + 0x00, 0xC0, 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, 0x80, 0x00, 0x0C, + 0x00, 0x00, 0x60, 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, 0x00, 0xC0, 0x00, + 0x06, 0x00, 0x18, 0x30, 0x00, 0xC1, 0x80, 0x06, 0x0C, 0x00, 0x30, 0x60, + 0x01, 0x83, 0x00, 0x0C, 0x18, 0x00, 0x60, 0xC0, 0x03, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xC0, 0xFC, 0x00, 0x0F, 0xFF, 0x00, 0x03, 0xF3, 0x60, 0x01, + 0xB0, 0xD8, 0x00, 0x6C, 0x33, 0x00, 0x33, 0x0C, 0xC0, 0x0C, 0xC3, 0x38, + 0x07, 0x30, 0xC6, 0x01, 0x8C, 0x31, 0xC0, 0xE3, 0x0C, 0x30, 0x30, 0xC3, + 0x0C, 0x0C, 0x30, 0xC1, 0x86, 0x0C, 0x30, 0x61, 0x83, 0x0C, 0x0C, 0xC0, + 0xC3, 0x03, 0x30, 0x30, 0xC0, 0x78, 0x0C, 0x30, 0x1E, 0x03, 0x0C, 0x03, + 0x00, 0xC3, 0x00, 0x00, 0x30, 0xC0, 0x00, 0x0C, 0x30, 0x00, 0x03, 0x0C, + 0x00, 0x00, 0xC3, 0x00, 0x00, 0x30, 0xC0, 0x00, 0x0C, 0xFF, 0x00, 0x3F, + 0xFF, 0xC0, 0x0F, 0xF0, 0xFC, 0x00, 0xFF, 0xFC, 0x00, 0xFF, 0x1E, 0x00, + 0x0C, 0x1F, 0x00, 0x0C, 0x1B, 0x00, 0x0C, 0x19, 0x80, 0x0C, 0x19, 0xC0, + 0x0C, 0x18, 0xC0, 0x0C, 0x18, 0x60, 0x0C, 0x18, 0x60, 0x0C, 0x18, 0x30, + 0x0C, 0x18, 0x38, 0x0C, 0x18, 0x18, 0x0C, 0x18, 0x0C, 0x0C, 0x18, 0x0E, + 0x0C, 0x18, 0x06, 0x0C, 0x18, 0x03, 0x0C, 0x18, 0x03, 0x0C, 0x18, 0x01, + 0x8C, 0x18, 0x01, 0xCC, 0x18, 0x00, 0xCC, 0x18, 0x00, 0x6C, 0x18, 0x00, + 0x7C, 0x18, 0x00, 0x3C, 0x7F, 0x80, 0x1C, 0x7F, 0x80, 0x1C, 0x00, 0x7E, + 0x00, 0x01, 0xFF, 0xC0, 0x07, 0x81, 0xE0, 0x0E, 0x00, 0x70, 0x1C, 0x00, + 0x38, 0x38, 0x00, 0x1C, 0x30, 0x00, 0x0C, 0x70, 0x00, 0x0E, 0x60, 0x00, + 0x06, 0x60, 0x00, 0x06, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, + 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, + 0x03, 0xC0, 0x00, 0x03, 0x60, 0x00, 0x06, 0x60, 0x00, 0x06, 0x70, 0x00, + 0x0E, 0x30, 0x00, 0x0C, 0x38, 0x00, 0x1C, 0x1C, 0x00, 0x38, 0x0E, 0x00, + 0x70, 0x07, 0x81, 0xE0, 0x03, 0xFF, 0xC0, 0x00, 0x7E, 0x00, 0xFF, 0xFF, + 0x07, 0xFF, 0xFE, 0x06, 0x00, 0x78, 0x30, 0x00, 0xE1, 0x80, 0x03, 0x0C, + 0x00, 0x0C, 0x60, 0x00, 0x63, 0x00, 0x03, 0x18, 0x00, 0x18, 0xC0, 0x01, + 0xC6, 0x00, 0x0C, 0x30, 0x00, 0xC1, 0x80, 0x1E, 0x0F, 0xFF, 0xC0, 0x7F, + 0xF8, 0x03, 0x00, 0x00, 0x18, 0x00, 0x00, 0xC0, 0x00, 0x06, 0x00, 0x00, + 0x30, 0x00, 0x01, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x60, 0x00, 0x03, 0x00, + 0x00, 0xFF, 0xF0, 0x07, 0xFF, 0x80, 0x00, 0x00, 0x7E, 0x00, 0x01, 0xFF, + 0x80, 0x07, 0x81, 0xE0, 0x0E, 0x00, 0x70, 0x1C, 0x00, 0x38, 0x38, 0x00, + 0x1C, 0x30, 0x00, 0x0C, 0x70, 0x00, 0x0E, 0x60, 0x00, 0x06, 0x60, 0x00, + 0x06, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, + 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, + 0x03, 0x60, 0x00, 0x06, 0x60, 0x00, 0x06, 0x70, 0x00, 0x0E, 0x30, 0x00, + 0x0C, 0x18, 0x00, 0x1C, 0x0C, 0x00, 0x38, 0x06, 0x00, 0x70, 0x03, 0x81, + 0xE0, 0x00, 0xFF, 0xC0, 0x00, 0x7E, 0x00, 0x00, 0xE0, 0x00, 0x03, 0xFF, + 0x87, 0x07, 0xFF, 0xFE, 0x07, 0x00, 0xF8, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, + 0x80, 0x18, 0x03, 0xC0, 0x18, 0x00, 0xE0, 0x18, 0x00, 0x60, 0x18, 0x00, + 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, + 0x70, 0x18, 0x00, 0x60, 0x18, 0x01, 0xC0, 0x18, 0x07, 0x80, 0x1F, 0xFF, + 0x00, 0x1F, 0xFC, 0x00, 0x18, 0x0E, 0x00, 0x18, 0x07, 0x00, 0x18, 0x03, + 0x80, 0x18, 0x01, 0xC0, 0x18, 0x00, 0xE0, 0x18, 0x00, 0x60, 0x18, 0x00, + 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, 0x18, 0xFF, 0x80, 0x1F, 0xFF, 0x80, + 0x0F, 0x03, 0xF8, 0x00, 0xFF, 0xE6, 0x1E, 0x07, 0xE3, 0x80, 0x1E, 0x30, + 0x00, 0xE6, 0x00, 0x06, 0x60, 0x00, 0x66, 0x00, 0x06, 0x60, 0x00, 0x07, + 0x00, 0x00, 0x30, 0x00, 0x01, 0xC0, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0xC0, + 0x00, 0x3F, 0x80, 0x00, 0x1C, 0x00, 0x00, 0xE0, 0x00, 0x07, 0x00, 0x00, + 0x30, 0x00, 0x03, 0xC0, 0x00, 0x3C, 0x00, 0x03, 0xE0, 0x00, 0x7E, 0x00, + 0x06, 0xF8, 0x01, 0xED, 0xE0, 0x7C, 0xCF, 0xFF, 0x00, 0x3F, 0xC0, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x03, 0x00, 0xF0, 0x0C, 0x03, 0xC0, 0x30, + 0x0F, 0x00, 0xC0, 0x3C, 0x03, 0x00, 0xC0, 0x0C, 0x00, 0x00, 0x30, 0x00, + 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, + 0xC0, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, + 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, + 0x03, 0x00, 0x00, 0x0C, 0x00, 0x0F, 0xFF, 0xC0, 0x3F, 0xFF, 0x00, 0xFF, + 0x01, 0xFF, 0xFE, 0x03, 0xFC, 0xC0, 0x00, 0x61, 0x80, 0x00, 0xC3, 0x00, + 0x01, 0x86, 0x00, 0x03, 0x0C, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x30, 0x00, + 0x18, 0x60, 0x00, 0x30, 0xC0, 0x00, 0x61, 0x80, 0x00, 0xC3, 0x00, 0x01, + 0x86, 0x00, 0x03, 0x0C, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x30, 0x00, 0x18, + 0x60, 0x00, 0x30, 0xC0, 0x00, 0x61, 0x80, 0x00, 0xC3, 0x80, 0x03, 0x83, + 0x00, 0x06, 0x07, 0x00, 0x1C, 0x07, 0x00, 0x70, 0x07, 0x83, 0xC0, 0x07, + 0xFF, 0x00, 0x03, 0xF8, 0x00, 0x7F, 0xC0, 0x3F, 0xF7, 0xFC, 0x03, 0xFF, + 0x18, 0x00, 0x01, 0x80, 0xC0, 0x00, 0x30, 0x0C, 0x00, 0x03, 0x00, 0x60, + 0x00, 0x30, 0x06, 0x00, 0x06, 0x00, 0x60, 0x00, 0x60, 0x03, 0x00, 0x0C, + 0x00, 0x30, 0x00, 0xC0, 0x03, 0x80, 0x0C, 0x00, 0x18, 0x01, 0x80, 0x01, + 0x80, 0x18, 0x00, 0x0C, 0x03, 0x00, 0x00, 0xC0, 0x30, 0x00, 0x0E, 0x03, + 0x00, 0x00, 0x60, 0x60, 0x00, 0x06, 0x06, 0x00, 0x00, 0x30, 0xC0, 0x00, + 0x03, 0x0C, 0x00, 0x00, 0x30, 0x80, 0x00, 0x01, 0x98, 0x00, 0x00, 0x19, + 0x80, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0xE0, 0x00, + 0xFF, 0x80, 0x7F, 0xFF, 0xE0, 0x1F, 0xF3, 0x00, 0x00, 0x30, 0xC0, 0x00, + 0x0C, 0x30, 0x00, 0x03, 0x0C, 0x03, 0x80, 0xC3, 0x01, 0xE0, 0x30, 0x60, + 0x78, 0x0C, 0x18, 0x1F, 0x02, 0x06, 0x04, 0xC0, 0x81, 0x83, 0x30, 0x60, + 0x60, 0xCC, 0x18, 0x18, 0x31, 0x86, 0x06, 0x18, 0x61, 0x81, 0x86, 0x18, + 0x60, 0x71, 0x87, 0x18, 0x0C, 0x40, 0xC6, 0x03, 0x30, 0x31, 0x00, 0xCC, + 0x0C, 0xC0, 0x33, 0x01, 0xB0, 0x0D, 0x80, 0x6C, 0x03, 0x60, 0x1B, 0x00, + 0xD8, 0x06, 0xC0, 0x34, 0x00, 0xF0, 0x07, 0x00, 0x3C, 0x01, 0xC0, 0x0E, + 0x00, 0x7F, 0x00, 0xFF, 0x7F, 0x00, 0xFF, 0x18, 0x00, 0x18, 0x0C, 0x00, + 0x38, 0x0E, 0x00, 0x70, 0x07, 0x00, 0x60, 0x03, 0x00, 0xC0, 0x01, 0x81, + 0x80, 0x01, 0xC3, 0x80, 0x00, 0xE7, 0x00, 0x00, 0x76, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0x18, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x66, + 0x00, 0x00, 0xC3, 0x00, 0x01, 0x81, 0x80, 0x03, 0x81, 0xC0, 0x07, 0x00, + 0xE0, 0x06, 0x00, 0x60, 0x0C, 0x00, 0x30, 0x18, 0x00, 0x18, 0x38, 0x00, + 0x1C, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, + 0xFF, 0x18, 0x00, 0x18, 0x0C, 0x00, 0x30, 0x0E, 0x00, 0x70, 0x06, 0x00, + 0x60, 0x03, 0x00, 0xC0, 0x03, 0x81, 0xC0, 0x01, 0x81, 0x80, 0x00, 0xC3, + 0x00, 0x00, 0xE7, 0x00, 0x00, 0x66, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, + 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, + 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x07, 0xFF, 0xE0, 0x07, 0xFF, + 0xE0, 0x7F, 0xFF, 0x9F, 0xFF, 0xE6, 0x00, 0x19, 0x80, 0x0C, 0x60, 0x07, + 0x18, 0x03, 0x86, 0x00, 0xC1, 0x80, 0x70, 0x00, 0x38, 0x00, 0x0C, 0x00, + 0x07, 0x00, 0x03, 0x80, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x38, 0x00, 0x1C, + 0x00, 0x06, 0x00, 0x03, 0x80, 0x31, 0xC0, 0x0C, 0x60, 0x03, 0x30, 0x00, + 0xDC, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, + 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, + 0x0C, 0x18, 0x30, 0x60, 0xFF, 0xFC, 0xC0, 0x00, 0x30, 0x00, 0x06, 0x00, + 0x01, 0x80, 0x00, 0x30, 0x00, 0x0C, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, + 0x0C, 0x00, 0x03, 0x00, 0x00, 0x60, 0x00, 0x18, 0x00, 0x03, 0x00, 0x00, + 0xC0, 0x00, 0x18, 0x00, 0x06, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x06, + 0x00, 0x01, 0x80, 0x00, 0x30, 0x00, 0x0C, 0x00, 0x03, 0x80, 0x00, 0x60, + 0x00, 0x1C, 0x00, 0x03, 0x00, 0x00, 0xE0, 0x00, 0x18, 0x00, 0x07, 0x00, + 0x00, 0xC0, 0x00, 0x30, 0x00, 0x06, 0x00, 0x01, 0x80, 0x00, 0x30, 0x00, + 0x0C, 0xFF, 0xFC, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, + 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, + 0x18, 0x30, 0x60, 0xC1, 0x83, 0xFF, 0xFC, 0x00, 0x40, 0x00, 0x30, 0x00, + 0x1E, 0x00, 0x0E, 0xC0, 0x07, 0x38, 0x01, 0x87, 0x00, 0xC0, 0xC0, 0x60, + 0x18, 0x38, 0x03, 0x1C, 0x00, 0xE6, 0x00, 0x1F, 0x00, 0x03, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xE0, 0x70, 0x3C, 0x0E, 0x07, 0x03, + 0x01, 0xFC, 0x00, 0x7F, 0xFC, 0x01, 0xC0, 0x3C, 0x00, 0x00, 0x30, 0x00, + 0x00, 0x60, 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0x18, 0x00, 0x00, + 0x60, 0x0F, 0xF9, 0x81, 0xFF, 0xFE, 0x0F, 0x80, 0x38, 0x70, 0x00, 0x63, + 0x80, 0x01, 0x8C, 0x00, 0x06, 0x30, 0x00, 0x18, 0xC0, 0x00, 0xE3, 0x00, + 0x07, 0x86, 0x00, 0x76, 0x1E, 0x07, 0x9F, 0x3F, 0xF8, 0x7C, 0x3F, 0x80, + 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, + 0x01, 0x80, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x1F, 0x80, + 0x18, 0xFF, 0xC0, 0x33, 0x81, 0xC0, 0x6E, 0x01, 0xC0, 0xF0, 0x00, 0xC1, + 0xE0, 0x01, 0xC3, 0x80, 0x01, 0x87, 0x00, 0x03, 0x8C, 0x00, 0x03, 0x18, + 0x00, 0x06, 0x30, 0x00, 0x0C, 0x60, 0x00, 0x18, 0xC0, 0x00, 0x31, 0x80, + 0x00, 0x63, 0x80, 0x01, 0x87, 0x00, 0x03, 0x0F, 0x00, 0x0E, 0x1F, 0x00, + 0x38, 0x37, 0x00, 0xE3, 0xE7, 0x03, 0x87, 0xC7, 0xFE, 0x00, 0x03, 0xF0, + 0x00, 0x01, 0xFC, 0x00, 0x3F, 0xF9, 0x83, 0xC0, 0xFC, 0x38, 0x01, 0xE3, + 0x00, 0x07, 0x38, 0x00, 0x19, 0x80, 0x00, 0xDC, 0x00, 0x06, 0xC0, 0x00, + 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x60, + 0x00, 0x03, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x70, 0x00, 0x01, 0x80, 0x00, + 0xC7, 0x00, 0x1E, 0x1E, 0x03, 0xC0, 0x7F, 0xFC, 0x00, 0xFF, 0x00, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, + 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x01, 0xF8, 0x18, 0x07, + 0xFE, 0x18, 0x0F, 0x07, 0x98, 0x1C, 0x01, 0xD8, 0x38, 0x00, 0xF8, 0x70, + 0x00, 0x78, 0x60, 0x00, 0x38, 0xE0, 0x00, 0x38, 0xC0, 0x00, 0x18, 0xC0, + 0x00, 0x18, 0xC0, 0x00, 0x18, 0xC0, 0x00, 0x18, 0xC0, 0x00, 0x18, 0xC0, + 0x00, 0x18, 0x60, 0x00, 0x38, 0x60, 0x00, 0x38, 0x70, 0x00, 0x78, 0x38, + 0x00, 0xD8, 0x1C, 0x01, 0xD8, 0x0F, 0x07, 0x9F, 0x07, 0xFE, 0x1F, 0x01, + 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x3F, 0xF8, 0x07, 0x80, 0xF0, 0x70, 0x01, + 0xC3, 0x00, 0x07, 0x30, 0x00, 0x19, 0x80, 0x00, 0x78, 0x00, 0x03, 0xC0, + 0x00, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x0C, 0x00, 0x00, + 0x60, 0x00, 0x01, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, 0x01, 0xC0, + 0x00, 0xC7, 0x00, 0x0E, 0x1E, 0x03, 0xE0, 0x3F, 0xFC, 0x00, 0x7F, 0x00, + 0x00, 0x7F, 0xC0, 0x3F, 0xFC, 0x0E, 0x00, 0x03, 0x80, 0x00, 0x60, 0x00, + 0x0C, 0x00, 0x01, 0x80, 0x00, 0x30, 0x00, 0xFF, 0xFF, 0x9F, 0xFF, 0xF0, + 0x18, 0x00, 0x03, 0x00, 0x00, 0x60, 0x00, 0x0C, 0x00, 0x01, 0x80, 0x00, + 0x30, 0x00, 0x06, 0x00, 0x00, 0xC0, 0x00, 0x18, 0x00, 0x03, 0x00, 0x00, + 0x60, 0x00, 0x0C, 0x00, 0x01, 0x80, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, + 0xC0, 0x03, 0xFF, 0xFC, 0x7F, 0xFF, 0x80, 0x01, 0xF8, 0x00, 0x0F, 0xFC, + 0x7C, 0x38, 0x1C, 0xF8, 0xE0, 0x0D, 0x83, 0x00, 0x0F, 0x0E, 0x00, 0x1E, + 0x18, 0x00, 0x1C, 0x70, 0x00, 0x38, 0xC0, 0x00, 0x31, 0x80, 0x00, 0x63, + 0x00, 0x00, 0xC6, 0x00, 0x01, 0x8C, 0x00, 0x03, 0x18, 0x00, 0x06, 0x18, + 0x00, 0x1C, 0x30, 0x00, 0x38, 0x30, 0x00, 0xF0, 0x70, 0x03, 0x60, 0x78, + 0x1C, 0xC0, 0x3F, 0xF1, 0x80, 0x1F, 0x83, 0x00, 0x00, 0x06, 0x00, 0x00, + 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x03, + 0x80, 0x00, 0x0E, 0x00, 0x3F, 0xF8, 0x00, 0x7F, 0xC0, 0x00, 0xF8, 0x00, + 0x01, 0xF0, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, + 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x3F, 0x00, 0x18, 0xFF, 0x80, + 0x37, 0x03, 0x80, 0x7C, 0x03, 0x80, 0xF0, 0x03, 0x81, 0xC0, 0x03, 0x03, + 0x00, 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x18, 0x00, 0x30, 0x30, + 0x00, 0x60, 0x60, 0x00, 0xC0, 0xC0, 0x01, 0x81, 0x80, 0x03, 0x03, 0x00, + 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x18, 0x00, 0x30, 0x30, 0x00, + 0x63, 0xFC, 0x07, 0xFF, 0xF8, 0x0F, 0xF0, 0x01, 0xC0, 0x00, 0x70, 0x00, + 0x1C, 0x00, 0x07, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0F, 0xF0, 0x03, 0xFC, 0x00, 0x03, 0x00, 0x00, 0xC0, + 0x00, 0x30, 0x00, 0x0C, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, + 0x0C, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x0C, 0x00, 0x03, + 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x0C, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, + 0xC0, 0x00, 0x70, 0x01, 0xC0, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xC0, 0x03, 0x00, 0x0C, + 0x00, 0x30, 0x00, 0xC0, 0x03, 0x00, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x03, + 0x00, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x03, 0x00, 0x0C, 0x00, 0x30, 0x00, + 0xC0, 0x03, 0x00, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x03, 0x00, 0x0C, 0x00, + 0x70, 0x03, 0x80, 0x1C, 0xFF, 0xE3, 0xFF, 0x00, 0xF8, 0x00, 0x03, 0xE0, + 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0x18, 0x00, 0x00, 0x60, 0x00, + 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0x18, 0x1F, 0xE0, 0x60, 0x7F, 0x81, + 0x80, 0x60, 0x06, 0x07, 0x00, 0x18, 0x38, 0x00, 0x61, 0xC0, 0x01, 0x8E, + 0x00, 0x06, 0x70, 0x00, 0x1B, 0x80, 0x00, 0x7F, 0x00, 0x01, 0xCE, 0x00, + 0x06, 0x1C, 0x00, 0x18, 0x38, 0x00, 0x60, 0x70, 0x01, 0x80, 0xE0, 0x06, + 0x01, 0xC0, 0x18, 0x03, 0x80, 0x60, 0x07, 0x0F, 0x80, 0x7F, 0xFE, 0x01, + 0xFF, 0x3F, 0xC0, 0x0F, 0xF0, 0x00, 0x0C, 0x00, 0x03, 0x00, 0x00, 0xC0, + 0x00, 0x30, 0x00, 0x0C, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, + 0x0C, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x0C, 0x00, 0x03, + 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x0C, 0x00, 0x03, 0x00, 0x00, 0xC0, + 0x00, 0x30, 0x00, 0x0C, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x0F, + 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xF0, 0x3C, 0x0F, 0x9F, 0x87, 0xE0, 0xFB, + 0x1C, 0xC7, 0x01, 0xE0, 0xD8, 0x38, 0x1C, 0x07, 0x01, 0x81, 0x80, 0x60, + 0x18, 0x18, 0x06, 0x01, 0x81, 0x80, 0x60, 0x18, 0x18, 0x06, 0x01, 0x81, + 0x80, 0x60, 0x18, 0x18, 0x06, 0x01, 0x81, 0x80, 0x60, 0x18, 0x18, 0x06, + 0x01, 0x81, 0x80, 0x60, 0x18, 0x18, 0x06, 0x01, 0x81, 0x80, 0x60, 0x18, + 0x18, 0x06, 0x01, 0x81, 0x80, 0x60, 0x18, 0x18, 0x06, 0x01, 0x8F, 0xE0, + 0x7C, 0x1F, 0xFE, 0x07, 0xC1, 0xF0, 0x00, 0x1F, 0x00, 0xF8, 0xFF, 0x81, + 0xF3, 0x83, 0x80, 0x6C, 0x03, 0x80, 0xF0, 0x03, 0x81, 0xC0, 0x03, 0x03, + 0x00, 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x18, 0x00, 0x30, 0x30, + 0x00, 0x60, 0x60, 0x00, 0xC0, 0xC0, 0x01, 0x81, 0x80, 0x03, 0x03, 0x00, + 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x18, 0x00, 0x30, 0x30, 0x00, + 0x67, 0xFC, 0x03, 0xFF, 0xF8, 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0xFE, + 0x00, 0xF0, 0x3C, 0x07, 0x00, 0x38, 0x38, 0x00, 0x71, 0xC0, 0x00, 0xE6, + 0x00, 0x01, 0x98, 0x00, 0x06, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, + 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x36, 0x00, 0x01, + 0x98, 0x00, 0x06, 0x70, 0x00, 0x38, 0xE0, 0x01, 0xC1, 0xC0, 0x0E, 0x03, + 0xC0, 0xF0, 0x07, 0xFF, 0x80, 0x03, 0xF0, 0x00, 0x00, 0x3F, 0x01, 0xF1, + 0xFF, 0x83, 0xE7, 0x03, 0x80, 0xD8, 0x01, 0x81, 0xE0, 0x01, 0x83, 0xC0, + 0x03, 0x87, 0x00, 0x03, 0x0E, 0x00, 0x07, 0x18, 0x00, 0x06, 0x30, 0x00, + 0x0C, 0x60, 0x00, 0x18, 0xC0, 0x00, 0x31, 0x80, 0x00, 0x63, 0x00, 0x00, + 0xC7, 0x00, 0x03, 0x0E, 0x00, 0x06, 0x1E, 0x00, 0x18, 0x36, 0x00, 0x70, + 0x67, 0x03, 0xC0, 0xC7, 0xFE, 0x01, 0x83, 0xF0, 0x03, 0x00, 0x00, 0x06, + 0x00, 0x00, 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, + 0x00, 0x00, 0xC0, 0x00, 0x0F, 0xFC, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x01, + 0xF8, 0x00, 0x07, 0xFF, 0x1F, 0x0F, 0x07, 0x9F, 0x1C, 0x01, 0xD8, 0x38, + 0x00, 0x78, 0x70, 0x00, 0x78, 0x60, 0x00, 0x38, 0xE0, 0x00, 0x38, 0xC0, + 0x00, 0x18, 0xC0, 0x00, 0x18, 0xC0, 0x00, 0x18, 0xC0, 0x00, 0x18, 0xC0, + 0x00, 0x18, 0xC0, 0x00, 0x18, 0x60, 0x00, 0x38, 0x70, 0x00, 0x78, 0x30, + 0x00, 0x78, 0x1C, 0x01, 0xD8, 0x0F, 0x07, 0x98, 0x07, 0xFF, 0x18, 0x01, + 0xFC, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, + 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, + 0x03, 0xFF, 0x00, 0x03, 0xFF, 0x7E, 0x03, 0xC3, 0xF0, 0x7F, 0x81, 0x8F, + 0x0E, 0x0C, 0xE0, 0x00, 0x7E, 0x00, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x00, + 0xC0, 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, 0x80, 0x00, 0x0C, 0x00, + 0x00, 0x60, 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, 0x00, 0xC0, 0x00, 0x06, + 0x00, 0x00, 0x30, 0x00, 0x3F, 0xFF, 0xC1, 0xFF, 0xFE, 0x00, 0x07, 0xF0, + 0x07, 0xFF, 0x63, 0xC0, 0xF9, 0xC0, 0x0E, 0x60, 0x01, 0x98, 0x00, 0x66, + 0x00, 0x19, 0xC0, 0x00, 0x38, 0x00, 0x07, 0xC0, 0x00, 0x7F, 0xC0, 0x00, + 0x7C, 0x00, 0x03, 0x80, 0x00, 0x70, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, + 0xF8, 0x00, 0x7F, 0x00, 0x3B, 0xF0, 0x3C, 0xDF, 0xFE, 0x00, 0xFE, 0x00, + 0x0C, 0x00, 0x00, 0x60, 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, 0x00, 0xC0, + 0x00, 0x06, 0x00, 0x03, 0xFF, 0xFE, 0x1F, 0xFF, 0xF0, 0x0C, 0x00, 0x00, + 0x60, 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, 0x00, 0xC0, 0x00, 0x06, 0x00, + 0x00, 0x30, 0x00, 0x01, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x60, 0x00, 0x03, + 0x00, 0x00, 0x18, 0x00, 0x00, 0xC0, 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, + 0x00, 0xC0, 0x07, 0x07, 0x01, 0xF0, 0x1F, 0xFF, 0x00, 0x3F, 0x80, 0xF8, + 0x03, 0xF1, 0xF0, 0x07, 0xE0, 0x60, 0x00, 0xC0, 0xC0, 0x01, 0x81, 0x80, + 0x03, 0x03, 0x00, 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x18, 0x00, + 0x30, 0x30, 0x00, 0x60, 0x60, 0x00, 0xC0, 0xC0, 0x01, 0x81, 0x80, 0x03, + 0x03, 0x00, 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x38, 0x18, 0x00, 0xF0, + 0x18, 0x03, 0x60, 0x38, 0x3C, 0xF8, 0x3F, 0xF1, 0xF0, 0x1F, 0x00, 0x00, + 0x7F, 0xC0, 0xFF, 0xDF, 0xF0, 0x3F, 0xF0, 0xC0, 0x00, 0xC0, 0x30, 0x00, + 0x30, 0x06, 0x00, 0x1C, 0x01, 0x80, 0x06, 0x00, 0x30, 0x01, 0x80, 0x0C, + 0x00, 0xC0, 0x03, 0x80, 0x30, 0x00, 0x60, 0x18, 0x00, 0x18, 0x06, 0x00, + 0x03, 0x03, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x18, 0x30, 0x00, 0x06, 0x18, + 0x00, 0x00, 0xC6, 0x00, 0x00, 0x33, 0x00, 0x00, 0x0E, 0xC0, 0x00, 0x01, + 0xE0, 0x00, 0x00, 0x78, 0x00, 0x7F, 0x00, 0x3F, 0xDF, 0xC0, 0x0F, 0xF1, + 0x80, 0x00, 0x20, 0x60, 0x00, 0x18, 0x18, 0x00, 0x06, 0x06, 0x03, 0x01, + 0x80, 0x81, 0xE0, 0x60, 0x30, 0x78, 0x10, 0x0C, 0x1E, 0x0C, 0x03, 0x0C, + 0xC3, 0x00, 0xC3, 0x30, 0xC0, 0x10, 0xCC, 0x30, 0x06, 0x61, 0x98, 0x01, + 0x98, 0x66, 0x00, 0x66, 0x19, 0x80, 0x0B, 0x03, 0x60, 0x03, 0xC0, 0xD0, + 0x00, 0xF0, 0x1C, 0x00, 0x38, 0x07, 0x00, 0x0E, 0x01, 0xC0, 0x3F, 0x81, + 0xFE, 0x3F, 0x81, 0xFE, 0x0C, 0x00, 0x38, 0x06, 0x00, 0x70, 0x03, 0x00, + 0xE0, 0x01, 0x81, 0xC0, 0x00, 0xC3, 0x80, 0x00, 0x67, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0x18, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x67, 0x00, 0x00, 0xC3, + 0x80, 0x01, 0x81, 0xC0, 0x03, 0x00, 0xE0, 0x06, 0x00, 0x70, 0x0C, 0x00, + 0x38, 0x18, 0x00, 0x1C, 0x7F, 0x81, 0xFF, 0x7F, 0x81, 0xFF, 0x7F, 0x00, + 0xFF, 0x7F, 0x00, 0xFF, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x18, 0x0C, 0x00, + 0x18, 0x0C, 0x00, 0x30, 0x06, 0x00, 0x30, 0x06, 0x00, 0x60, 0x03, 0x00, + 0x60, 0x03, 0x00, 0xC0, 0x01, 0x80, 0xC0, 0x01, 0x81, 0x80, 0x00, 0xC1, + 0x80, 0x00, 0xC3, 0x00, 0x00, 0x63, 0x00, 0x00, 0x66, 0x00, 0x00, 0x36, + 0x00, 0x00, 0x34, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, + 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, + 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x7F, 0xFC, 0x00, 0x7F, 0xFC, + 0x00, 0xFF, 0xFF, 0x7F, 0xFF, 0xB0, 0x01, 0x98, 0x01, 0xCC, 0x01, 0xC0, + 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xE0, + 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x03, 0x70, + 0x01, 0xB0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0xE0, 0x7C, 0x0C, + 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x03, + 0x00, 0x60, 0x0C, 0x03, 0x00, 0xE0, 0xF0, 0x1E, 0x00, 0x70, 0x06, 0x00, + 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, + 0x0C, 0x01, 0x80, 0x18, 0x03, 0xE0, 0x1C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xF0, 0xE0, 0x1F, 0x00, 0x60, 0x06, 0x00, 0xC0, 0x18, + 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x01, + 0x80, 0x38, 0x01, 0xE0, 0x3C, 0x1C, 0x03, 0x00, 0xC0, 0x18, 0x03, 0x00, + 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0xC0, + 0xF8, 0x1C, 0x00, 0x0F, 0x00, 0x03, 0xFC, 0x03, 0x70, 0xE0, 0x76, 0x07, + 0x8E, 0xC0, 0x1F, 0xC0, 0x00, 0xF0}; + +const GFXglyph FreeMono24pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 28, 0, 1}, // 0x20 ' ' + {0, 5, 30, 28, 11, -28}, // 0x21 '!' + {19, 16, 14, 28, 6, -28}, // 0x22 '"' + {47, 19, 32, 28, 4, -29}, // 0x23 '#' + {123, 18, 33, 28, 5, -29}, // 0x24 '$' + {198, 20, 29, 28, 4, -27}, // 0x25 '%' + {271, 18, 25, 28, 5, -23}, // 0x26 '&' + {328, 7, 14, 28, 11, -28}, // 0x27 ''' + {341, 7, 34, 28, 14, -27}, // 0x28 '(' + {371, 7, 34, 28, 8, -27}, // 0x29 ')' + {401, 18, 16, 28, 5, -27}, // 0x2A '*' + {437, 20, 22, 28, 4, -23}, // 0x2B '+' + {492, 9, 14, 28, 6, -6}, // 0x2C ',' + {508, 22, 2, 28, 3, -13}, // 0x2D '-' + {514, 7, 6, 28, 11, -4}, // 0x2E '.' + {520, 18, 35, 28, 5, -30}, // 0x2F '/' + {599, 18, 30, 28, 5, -28}, // 0x30 '0' + {667, 16, 29, 28, 6, -28}, // 0x31 '1' + {725, 18, 29, 28, 5, -28}, // 0x32 '2' + {791, 19, 30, 28, 5, -28}, // 0x33 '3' + {863, 16, 28, 28, 6, -27}, // 0x34 '4' + {919, 19, 29, 28, 5, -27}, // 0x35 '5' + {988, 18, 30, 28, 6, -28}, // 0x36 '6' + {1056, 18, 28, 28, 5, -27}, // 0x37 '7' + {1119, 18, 30, 28, 5, -28}, // 0x38 '8' + {1187, 18, 30, 28, 6, -28}, // 0x39 '9' + {1255, 7, 21, 28, 11, -19}, // 0x3A ':' + {1274, 10, 27, 28, 7, -19}, // 0x3B ';' + {1308, 22, 22, 28, 3, -23}, // 0x3C '<' + {1369, 24, 9, 28, 2, -17}, // 0x3D '=' + {1396, 21, 22, 28, 4, -23}, // 0x3E '>' + {1454, 17, 28, 28, 6, -26}, // 0x3F '?' + {1514, 18, 32, 28, 5, -28}, // 0x40 '@' + {1586, 28, 26, 28, 0, -25}, // 0x41 'A' + {1677, 22, 26, 28, 3, -25}, // 0x42 'B' + {1749, 22, 28, 28, 3, -26}, // 0x43 'C' + {1826, 22, 26, 28, 3, -25}, // 0x44 'D' + {1898, 22, 26, 28, 3, -25}, // 0x45 'E' + {1970, 22, 26, 28, 3, -25}, // 0x46 'F' + {2042, 23, 28, 28, 3, -26}, // 0x47 'G' + {2123, 23, 26, 28, 3, -25}, // 0x48 'H' + {2198, 16, 26, 28, 6, -25}, // 0x49 'I' + {2250, 23, 27, 28, 4, -25}, // 0x4A 'J' + {2328, 24, 26, 28, 3, -25}, // 0x4B 'K' + {2406, 21, 26, 28, 4, -25}, // 0x4C 'L' + {2475, 26, 26, 28, 1, -25}, // 0x4D 'M' + {2560, 24, 26, 28, 2, -25}, // 0x4E 'N' + {2638, 24, 28, 28, 2, -26}, // 0x4F 'O' + {2722, 21, 26, 28, 3, -25}, // 0x50 'P' + {2791, 24, 32, 28, 2, -26}, // 0x51 'Q' + {2887, 24, 26, 28, 3, -25}, // 0x52 'R' + {2965, 20, 28, 28, 4, -26}, // 0x53 'S' + {3035, 22, 26, 28, 3, -25}, // 0x54 'T' + {3107, 23, 27, 28, 3, -25}, // 0x55 'U' + {3185, 28, 26, 28, 0, -25}, // 0x56 'V' + {3276, 26, 26, 28, 1, -25}, // 0x57 'W' + {3361, 24, 26, 28, 2, -25}, // 0x58 'X' + {3439, 24, 26, 28, 2, -25}, // 0x59 'Y' + {3517, 18, 26, 28, 5, -25}, // 0x5A 'Z' + {3576, 7, 34, 28, 13, -27}, // 0x5B '[' + {3606, 18, 35, 28, 5, -30}, // 0x5C '\' + {3685, 7, 34, 28, 8, -27}, // 0x5D ']' + {3715, 18, 12, 28, 5, -28}, // 0x5E '^' + {3742, 28, 2, 28, 0, 5}, // 0x5F '_' + {3749, 8, 7, 28, 7, -29}, // 0x60 '`' + {3756, 22, 22, 28, 3, -20}, // 0x61 'a' + {3817, 23, 29, 28, 2, -27}, // 0x62 'b' + {3901, 21, 22, 28, 4, -20}, // 0x63 'c' + {3959, 24, 29, 28, 3, -27}, // 0x64 'd' + {4046, 21, 22, 28, 3, -20}, // 0x65 'e' + {4104, 19, 28, 28, 6, -27}, // 0x66 'f' + {4171, 23, 30, 28, 3, -20}, // 0x67 'g' + {4258, 23, 28, 28, 3, -27}, // 0x68 'h' + {4339, 18, 29, 28, 5, -28}, // 0x69 'i' + {4405, 14, 38, 28, 6, -28}, // 0x6A 'j' + {4472, 22, 28, 28, 4, -27}, // 0x6B 'k' + {4549, 18, 28, 28, 5, -27}, // 0x6C 'l' + {4612, 28, 21, 28, 0, -20}, // 0x6D 'm' + {4686, 23, 21, 28, 2, -20}, // 0x6E 'n' + {4747, 22, 22, 28, 3, -20}, // 0x6F 'o' + {4808, 23, 30, 28, 2, -20}, // 0x70 'p' + {4895, 24, 30, 28, 3, -20}, // 0x71 'q' + {4985, 21, 20, 28, 5, -19}, // 0x72 'r' + {5038, 18, 22, 28, 5, -20}, // 0x73 's' + {5088, 21, 27, 28, 3, -25}, // 0x74 't' + {5159, 23, 21, 28, 3, -19}, // 0x75 'u' + {5220, 26, 20, 28, 1, -19}, // 0x76 'v' + {5285, 26, 20, 28, 1, -19}, // 0x77 'w' + {5350, 24, 20, 28, 2, -19}, // 0x78 'x' + {5410, 24, 29, 28, 2, -19}, // 0x79 'y' + {5497, 17, 20, 28, 6, -19}, // 0x7A 'z' + {5540, 11, 34, 28, 8, -27}, // 0x7B '{' + {5587, 2, 34, 28, 13, -27}, // 0x7C '|' + {5596, 11, 34, 28, 9, -27}, // 0x7D '}' + {5643, 20, 6, 28, 4, -15}}; // 0x7E '~' + +const GFXfont FreeMono24pt7b PROGMEM = {(uint8_t *)FreeMono24pt7bBitmaps, + (GFXglyph *)FreeMono24pt7bGlyphs, 0x20, + 0x7E, 47}; + +// Approx. 6330 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMono9pt7b.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMono9pt7b.h new file mode 100644 index 0000000..a2e9a00 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMono9pt7b.h @@ -0,0 +1,178 @@ +#pragma once +#include + +const uint8_t FreeMono9pt7bBitmaps[] PROGMEM = { + 0xAA, 0xA8, 0x0C, 0xED, 0x24, 0x92, 0x48, 0x24, 0x48, 0x91, 0x2F, 0xE4, + 0x89, 0x7F, 0x28, 0x51, 0x22, 0x40, 0x08, 0x3E, 0x62, 0x40, 0x30, 0x0E, + 0x01, 0x81, 0xC3, 0xBE, 0x08, 0x08, 0x71, 0x12, 0x23, 0x80, 0x23, 0xB8, + 0x0E, 0x22, 0x44, 0x70, 0x38, 0x81, 0x02, 0x06, 0x1A, 0x65, 0x46, 0xC8, + 0xEC, 0xE9, 0x24, 0x5A, 0xAA, 0xA9, 0x40, 0xA9, 0x55, 0x5A, 0x80, 0x10, + 0x22, 0x4B, 0xE3, 0x05, 0x11, 0x00, 0x10, 0x20, 0x47, 0xF1, 0x02, 0x04, + 0x00, 0x6B, 0x48, 0xFF, 0x00, 0xF0, 0x02, 0x08, 0x10, 0x60, 0x81, 0x04, + 0x08, 0x20, 0x41, 0x02, 0x08, 0x00, 0x38, 0x8A, 0x0C, 0x18, 0x30, 0x60, + 0xC1, 0x82, 0x88, 0xE0, 0x27, 0x28, 0x42, 0x10, 0x84, 0x21, 0x3E, 0x38, + 0x8A, 0x08, 0x10, 0x20, 0x82, 0x08, 0x61, 0x03, 0xF8, 0x7C, 0x06, 0x02, + 0x02, 0x1C, 0x06, 0x01, 0x01, 0x01, 0x42, 0x3C, 0x18, 0xA2, 0x92, 0x8A, + 0x28, 0xBF, 0x08, 0x21, 0xC0, 0x7C, 0x81, 0x03, 0xE4, 0x40, 0x40, 0x81, + 0x03, 0x88, 0xE0, 0x1E, 0x41, 0x04, 0x0B, 0x98, 0xB0, 0xC1, 0xC2, 0x88, + 0xE0, 0xFE, 0x04, 0x08, 0x20, 0x40, 0x82, 0x04, 0x08, 0x20, 0x40, 0x38, + 0x8A, 0x0C, 0x14, 0x47, 0x11, 0x41, 0x83, 0x8C, 0xE0, 0x38, 0x8A, 0x1C, + 0x18, 0x68, 0xCE, 0x81, 0x04, 0x13, 0xC0, 0xF0, 0x0F, 0x6C, 0x00, 0xD2, + 0xD2, 0x00, 0x03, 0x04, 0x18, 0x60, 0x60, 0x18, 0x04, 0x03, 0xFF, 0x80, + 0x00, 0x1F, 0xF0, 0x40, 0x18, 0x03, 0x00, 0x60, 0x20, 0x60, 0xC0, 0x80, + 0x3D, 0x84, 0x08, 0x30, 0xC2, 0x00, 0x00, 0x00, 0x30, 0x3C, 0x46, 0x82, + 0x8E, 0xB2, 0xA2, 0xA2, 0x9F, 0x80, 0x80, 0x40, 0x3C, 0x3C, 0x01, 0x40, + 0x28, 0x09, 0x01, 0x10, 0x42, 0x0F, 0xC1, 0x04, 0x40, 0x9E, 0x3C, 0xFE, + 0x21, 0x90, 0x48, 0x67, 0xE2, 0x09, 0x02, 0x81, 0x41, 0xFF, 0x80, 0x3E, + 0xB0, 0xF0, 0x30, 0x08, 0x04, 0x02, 0x00, 0x80, 0x60, 0x8F, 0x80, 0xFE, + 0x21, 0x90, 0x68, 0x14, 0x0A, 0x05, 0x02, 0x83, 0x43, 0x7F, 0x00, 0xFF, + 0x20, 0x90, 0x08, 0x87, 0xC2, 0x21, 0x00, 0x81, 0x40, 0xFF, 0xC0, 0xFF, + 0xA0, 0x50, 0x08, 0x87, 0xC2, 0x21, 0x00, 0x80, 0x40, 0x78, 0x00, 0x1E, + 0x98, 0x6C, 0x0A, 0x00, 0x80, 0x20, 0xF8, 0x0B, 0x02, 0x60, 0x87, 0xC0, + 0xE3, 0xA0, 0x90, 0x48, 0x27, 0xF2, 0x09, 0x04, 0x82, 0x41, 0x71, 0xC0, + 0xF9, 0x08, 0x42, 0x10, 0x84, 0x27, 0xC0, 0x1F, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x82, 0x82, 0xC6, 0x78, 0xE3, 0xA1, 0x11, 0x09, 0x05, 0x83, 0x21, + 0x08, 0x84, 0x41, 0x70, 0xC0, 0xE0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x41, + 0x41, 0x41, 0xFF, 0xE0, 0xEC, 0x19, 0x45, 0x28, 0xA4, 0xA4, 0x94, 0x91, + 0x12, 0x02, 0x40, 0x5C, 0x1C, 0xC3, 0xB0, 0x94, 0x4A, 0x24, 0x92, 0x49, + 0x14, 0x8A, 0x43, 0x70, 0x80, 0x1E, 0x31, 0x90, 0x50, 0x18, 0x0C, 0x06, + 0x02, 0x82, 0x63, 0x0F, 0x00, 0xFE, 0x43, 0x41, 0x41, 0x42, 0x7C, 0x40, + 0x40, 0x40, 0xF0, 0x1C, 0x31, 0x90, 0x50, 0x18, 0x0C, 0x06, 0x02, 0x82, + 0x63, 0x1F, 0x04, 0x07, 0x92, 0x30, 0xFE, 0x21, 0x90, 0x48, 0x24, 0x23, + 0xE1, 0x10, 0x84, 0x41, 0x70, 0xC0, 0x3A, 0xCD, 0x0A, 0x03, 0x01, 0x80, + 0xC1, 0xC7, 0x78, 0xFF, 0xC4, 0x62, 0x21, 0x00, 0x80, 0x40, 0x20, 0x10, + 0x08, 0x1F, 0x00, 0xE3, 0xA0, 0x90, 0x48, 0x24, 0x12, 0x09, 0x04, 0x82, + 0x22, 0x0E, 0x00, 0xF1, 0xE8, 0x10, 0x82, 0x10, 0x42, 0x10, 0x22, 0x04, + 0x80, 0x50, 0x0C, 0x00, 0x80, 0xF1, 0xE8, 0x09, 0x11, 0x25, 0x44, 0xA8, + 0x55, 0x0C, 0xA1, 0x8C, 0x31, 0x84, 0x30, 0xE3, 0xA0, 0x88, 0x82, 0x80, + 0x80, 0xC0, 0x90, 0x44, 0x41, 0x71, 0xC0, 0xE3, 0xA0, 0x88, 0x82, 0x81, + 0x40, 0x40, 0x20, 0x10, 0x08, 0x1F, 0x00, 0xFD, 0x0A, 0x20, 0x81, 0x04, + 0x10, 0x21, 0x83, 0xFC, 0xEA, 0xAA, 0xAA, 0xC0, 0x80, 0x81, 0x03, 0x02, + 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0xD5, 0x55, 0x55, 0xC0, + 0x10, 0x51, 0x22, 0x28, 0x20, 0xFF, 0xE0, 0x88, 0x80, 0x7E, 0x00, 0x80, + 0x47, 0xEC, 0x14, 0x0A, 0x0C, 0xFB, 0xC0, 0x20, 0x10, 0x0B, 0xC6, 0x12, + 0x05, 0x02, 0x81, 0x40, 0xB0, 0xB7, 0x80, 0x3A, 0x8E, 0x0C, 0x08, 0x10, + 0x10, 0x9E, 0x03, 0x00, 0x80, 0x47, 0xA4, 0x34, 0x0A, 0x05, 0x02, 0x81, + 0x21, 0x8F, 0x60, 0x3C, 0x43, 0x81, 0xFF, 0x80, 0x80, 0x61, 0x3E, 0x3D, + 0x04, 0x3E, 0x41, 0x04, 0x10, 0x41, 0x0F, 0x80, 0x3D, 0xA1, 0xA0, 0x50, + 0x28, 0x14, 0x09, 0x0C, 0x7A, 0x01, 0x01, 0x87, 0x80, 0xC0, 0x20, 0x10, + 0x0B, 0xC6, 0x32, 0x09, 0x04, 0x82, 0x41, 0x20, 0xB8, 0xE0, 0x10, 0x01, + 0xC0, 0x81, 0x02, 0x04, 0x08, 0x11, 0xFC, 0x10, 0x3E, 0x10, 0x84, 0x21, + 0x08, 0x42, 0x3F, 0x00, 0xC0, 0x40, 0x40, 0x4F, 0x44, 0x58, 0x70, 0x48, + 0x44, 0x42, 0xC7, 0x70, 0x20, 0x40, 0x81, 0x02, 0x04, 0x08, 0x10, 0x23, + 0xF8, 0xB7, 0x64, 0x62, 0x31, 0x18, 0x8C, 0x46, 0x23, 0x91, 0x5E, 0x31, + 0x90, 0x48, 0x24, 0x12, 0x09, 0x05, 0xC7, 0x3E, 0x31, 0xA0, 0x30, 0x18, + 0x0C, 0x05, 0x8C, 0x7C, 0xDE, 0x30, 0x90, 0x28, 0x14, 0x0A, 0x05, 0x84, + 0xBC, 0x40, 0x20, 0x38, 0x00, 0x3D, 0xA1, 0xA0, 0x50, 0x28, 0x14, 0x09, + 0x0C, 0x7A, 0x01, 0x00, 0x80, 0xE0, 0xCE, 0xA1, 0x82, 0x04, 0x08, 0x10, + 0x7C, 0x3A, 0x8D, 0x0B, 0x80, 0xF0, 0x70, 0xDE, 0x40, 0x40, 0xFC, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x41, 0x3E, 0xC3, 0x41, 0x41, 0x41, 0x41, 0x41, + 0x43, 0x3D, 0xE3, 0xA0, 0x90, 0x84, 0x42, 0x20, 0xA0, 0x50, 0x10, 0xE3, + 0xC0, 0x92, 0x4B, 0x25, 0x92, 0xA9, 0x98, 0x44, 0xE3, 0x31, 0x05, 0x01, + 0x01, 0x41, 0x11, 0x05, 0xC7, 0xE3, 0xA0, 0x90, 0x84, 0x42, 0x40, 0xA0, + 0x60, 0x10, 0x10, 0x08, 0x3E, 0x00, 0xFD, 0x08, 0x20, 0x82, 0x08, 0x10, + 0xBF, 0x29, 0x24, 0xA2, 0x49, 0x26, 0xFF, 0xF8, 0x89, 0x24, 0x8A, 0x49, + 0x2C, 0x61, 0x24, 0x30}; + +const GFXglyph FreeMono9pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 11, 0, 1}, // 0x20 ' ' + {0, 2, 11, 11, 4, -10}, // 0x21 '!' + {3, 6, 5, 11, 2, -10}, // 0x22 '"' + {7, 7, 12, 11, 2, -10}, // 0x23 '#' + {18, 8, 12, 11, 1, -10}, // 0x24 '$' + {30, 7, 11, 11, 2, -10}, // 0x25 '%' + {40, 7, 10, 11, 2, -9}, // 0x26 '&' + {49, 3, 5, 11, 4, -10}, // 0x27 ''' + {51, 2, 13, 11, 5, -10}, // 0x28 '(' + {55, 2, 13, 11, 4, -10}, // 0x29 ')' + {59, 7, 7, 11, 2, -10}, // 0x2A '*' + {66, 7, 7, 11, 2, -8}, // 0x2B '+' + {73, 3, 5, 11, 2, -1}, // 0x2C ',' + {75, 9, 1, 11, 1, -5}, // 0x2D '-' + {77, 2, 2, 11, 4, -1}, // 0x2E '.' + {78, 7, 13, 11, 2, -11}, // 0x2F '/' + {90, 7, 11, 11, 2, -10}, // 0x30 '0' + {100, 5, 11, 11, 3, -10}, // 0x31 '1' + {107, 7, 11, 11, 2, -10}, // 0x32 '2' + {117, 8, 11, 11, 1, -10}, // 0x33 '3' + {128, 6, 11, 11, 3, -10}, // 0x34 '4' + {137, 7, 11, 11, 2, -10}, // 0x35 '5' + {147, 7, 11, 11, 2, -10}, // 0x36 '6' + {157, 7, 11, 11, 2, -10}, // 0x37 '7' + {167, 7, 11, 11, 2, -10}, // 0x38 '8' + {177, 7, 11, 11, 2, -10}, // 0x39 '9' + {187, 2, 8, 11, 4, -7}, // 0x3A ':' + {189, 3, 11, 11, 3, -7}, // 0x3B ';' + {194, 8, 8, 11, 1, -8}, // 0x3C '<' + {202, 9, 4, 11, 1, -6}, // 0x3D '=' + {207, 9, 8, 11, 1, -8}, // 0x3E '>' + {216, 7, 10, 11, 2, -9}, // 0x3F '?' + {225, 8, 12, 11, 2, -10}, // 0x40 '@' + {237, 11, 10, 11, 0, -9}, // 0x41 'A' + {251, 9, 10, 11, 1, -9}, // 0x42 'B' + {263, 9, 10, 11, 1, -9}, // 0x43 'C' + {275, 9, 10, 11, 1, -9}, // 0x44 'D' + {287, 9, 10, 11, 1, -9}, // 0x45 'E' + {299, 9, 10, 11, 1, -9}, // 0x46 'F' + {311, 10, 10, 11, 1, -9}, // 0x47 'G' + {324, 9, 10, 11, 1, -9}, // 0x48 'H' + {336, 5, 10, 11, 3, -9}, // 0x49 'I' + {343, 8, 10, 11, 2, -9}, // 0x4A 'J' + {353, 9, 10, 11, 1, -9}, // 0x4B 'K' + {365, 8, 10, 11, 2, -9}, // 0x4C 'L' + {375, 11, 10, 11, 0, -9}, // 0x4D 'M' + {389, 9, 10, 11, 1, -9}, // 0x4E 'N' + {401, 9, 10, 11, 1, -9}, // 0x4F 'O' + {413, 8, 10, 11, 1, -9}, // 0x50 'P' + {423, 9, 13, 11, 1, -9}, // 0x51 'Q' + {438, 9, 10, 11, 1, -9}, // 0x52 'R' + {450, 7, 10, 11, 2, -9}, // 0x53 'S' + {459, 9, 10, 11, 1, -9}, // 0x54 'T' + {471, 9, 10, 11, 1, -9}, // 0x55 'U' + {483, 11, 10, 11, 0, -9}, // 0x56 'V' + {497, 11, 10, 11, 0, -9}, // 0x57 'W' + {511, 9, 10, 11, 1, -9}, // 0x58 'X' + {523, 9, 10, 11, 1, -9}, // 0x59 'Y' + {535, 7, 10, 11, 2, -9}, // 0x5A 'Z' + {544, 2, 13, 11, 5, -10}, // 0x5B '[' + {548, 7, 13, 11, 2, -11}, // 0x5C '\' + {560, 2, 13, 11, 4, -10}, // 0x5D ']' + {564, 7, 5, 11, 2, -10}, // 0x5E '^' + {569, 11, 1, 11, 0, 2}, // 0x5F '_' + {571, 3, 3, 11, 3, -11}, // 0x60 '`' + {573, 9, 8, 11, 1, -7}, // 0x61 'a' + {582, 9, 11, 11, 1, -10}, // 0x62 'b' + {595, 7, 8, 11, 2, -7}, // 0x63 'c' + {602, 9, 11, 11, 1, -10}, // 0x64 'd' + {615, 8, 8, 11, 1, -7}, // 0x65 'e' + {623, 6, 11, 11, 3, -10}, // 0x66 'f' + {632, 9, 11, 11, 1, -7}, // 0x67 'g' + {645, 9, 11, 11, 1, -10}, // 0x68 'h' + {658, 7, 10, 11, 2, -9}, // 0x69 'i' + {667, 5, 13, 11, 3, -9}, // 0x6A 'j' + {676, 8, 11, 11, 2, -10}, // 0x6B 'k' + {687, 7, 11, 11, 2, -10}, // 0x6C 'l' + {697, 9, 8, 11, 1, -7}, // 0x6D 'm' + {706, 9, 8, 11, 1, -7}, // 0x6E 'n' + {715, 9, 8, 11, 1, -7}, // 0x6F 'o' + {724, 9, 11, 11, 1, -7}, // 0x70 'p' + {737, 9, 11, 11, 1, -7}, // 0x71 'q' + {750, 7, 8, 11, 3, -7}, // 0x72 'r' + {757, 7, 8, 11, 2, -7}, // 0x73 's' + {764, 8, 10, 11, 2, -9}, // 0x74 't' + {774, 8, 8, 11, 1, -7}, // 0x75 'u' + {782, 9, 8, 11, 1, -7}, // 0x76 'v' + {791, 9, 8, 11, 1, -7}, // 0x77 'w' + {800, 9, 8, 11, 1, -7}, // 0x78 'x' + {809, 9, 11, 11, 1, -7}, // 0x79 'y' + {822, 7, 8, 11, 2, -7}, // 0x7A 'z' + {829, 3, 13, 11, 4, -10}, // 0x7B '{' + {834, 1, 13, 11, 5, -10}, // 0x7C '|' + {836, 3, 13, 11, 4, -10}, // 0x7D '}' + {841, 7, 3, 11, 2, -6}}; // 0x7E '~' + +const GFXfont FreeMono9pt7b PROGMEM = {(uint8_t *)FreeMono9pt7bBitmaps, + (GFXglyph *)FreeMono9pt7bGlyphs, 0x20, + 0x7E, 18}; + +// Approx. 1516 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMonoBold12pt7b.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMonoBold12pt7b.h new file mode 100644 index 0000000..a205386 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMonoBold12pt7b.h @@ -0,0 +1,252 @@ +#pragma once +#include + +const uint8_t FreeMonoBold12pt7bBitmaps[] PROGMEM = { + 0xFF, 0xFF, 0xFF, 0xF6, 0x66, 0x60, 0x6F, 0x60, 0xE7, 0xE7, 0x62, 0x42, + 0x42, 0x42, 0x42, 0x11, 0x87, 0x30, 0xC6, 0x18, 0xC3, 0x31, 0xFF, 0xFF, + 0xF9, 0x98, 0x33, 0x06, 0x60, 0xCC, 0x7F, 0xEF, 0xFC, 0x66, 0x0C, 0xC3, + 0x98, 0x63, 0x04, 0x40, 0x0C, 0x03, 0x00, 0xC0, 0xFE, 0x7F, 0x9C, 0x66, + 0x09, 0x80, 0x78, 0x0F, 0xE0, 0x7F, 0x03, 0xE0, 0xF8, 0x7F, 0xFB, 0xFC, + 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x38, 0x1F, 0x0C, 0x42, 0x10, 0xC4, 0x1F, + 0x03, 0x9C, 0x3C, 0x7F, 0x33, 0xE0, 0x8C, 0x21, 0x08, 0xC3, 0xE0, 0x70, + 0x3E, 0x1F, 0xC6, 0x61, 0x80, 0x70, 0x0C, 0x07, 0x83, 0xEE, 0xDF, 0xB3, + 0xCC, 0x73, 0xFE, 0x7F, 0x80, 0xFD, 0x24, 0x90, 0x39, 0xDC, 0xE6, 0x73, + 0x18, 0xC6, 0x31, 0x8C, 0x31, 0x8E, 0x31, 0xC4, 0xE7, 0x1C, 0xE3, 0x1C, + 0x63, 0x18, 0xC6, 0x31, 0x98, 0xCE, 0x67, 0x10, 0x0C, 0x03, 0x00, 0xC3, + 0xB7, 0xFF, 0xDF, 0xE1, 0xE0, 0xFC, 0x33, 0x0C, 0xC0, 0x06, 0x00, 0x60, + 0x06, 0x00, 0x60, 0x06, 0x0F, 0xFF, 0xFF, 0xF0, 0x60, 0x06, 0x00, 0x60, + 0x06, 0x00, 0x60, 0x06, 0x00, 0x3B, 0x9C, 0xCE, 0x62, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x80, 0x00, 0x40, 0x30, 0x1C, 0x07, 0x03, 0x80, 0xE0, 0x30, + 0x1C, 0x06, 0x03, 0x80, 0xC0, 0x70, 0x18, 0x0E, 0x03, 0x01, 0xC0, 0x60, + 0x38, 0x0E, 0x01, 0x00, 0x1E, 0x0F, 0xC6, 0x1B, 0x87, 0xC0, 0xF0, 0x3C, + 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x87, 0x61, 0x8F, 0xC1, 0xE0, 0x1C, + 0x0F, 0x0F, 0xC3, 0xB0, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, + 0xC0, 0x30, 0x0C, 0x3F, 0xFF, 0xFC, 0x1F, 0x1F, 0xEE, 0x1F, 0x83, 0xC0, + 0xC0, 0x70, 0x38, 0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xE3, 0xF0, 0xFF, 0xFF, + 0xFC, 0x3F, 0x0F, 0xF1, 0x87, 0x00, 0x60, 0x0C, 0x03, 0x83, 0xE0, 0x7C, + 0x01, 0xC0, 0x0C, 0x01, 0x80, 0x3C, 0x0F, 0xFF, 0x9F, 0xC0, 0x07, 0x07, + 0x83, 0xC3, 0xE1, 0xB1, 0xD8, 0xCC, 0xC6, 0xE3, 0x7F, 0xFF, 0xE0, 0x61, + 0xF8, 0xFC, 0x7F, 0x9F, 0xE6, 0x01, 0x80, 0x60, 0x1F, 0x87, 0xF9, 0x86, + 0x00, 0xC0, 0x30, 0x0C, 0x03, 0xC1, 0xBF, 0xE7, 0xE0, 0x07, 0xC7, 0xF3, + 0xC1, 0xC0, 0x60, 0x38, 0x0E, 0xF3, 0xFE, 0xF1, 0xF8, 0x3E, 0x0F, 0x83, + 0x71, 0xCF, 0xE1, 0xF0, 0xFF, 0xFF, 0xFC, 0x1F, 0x07, 0x01, 0x80, 0x60, + 0x38, 0x0C, 0x03, 0x01, 0xC0, 0x60, 0x18, 0x0E, 0x03, 0x00, 0xC0, 0x1E, + 0x1F, 0xEE, 0x1F, 0x03, 0xC0, 0xF0, 0x36, 0x19, 0xFE, 0x7F, 0xB8, 0x7C, + 0x0F, 0x03, 0xE1, 0xDF, 0xE3, 0xF0, 0x3E, 0x1F, 0xCE, 0x3B, 0x07, 0xC1, + 0xF0, 0x7E, 0x3D, 0xFF, 0x3D, 0xC0, 0x70, 0x18, 0x0E, 0x0F, 0x3F, 0x8F, + 0x80, 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x77, 0x70, 0x00, 0x00, 0x76, 0x6C, + 0xC8, 0x80, 0x00, 0x30, 0x0F, 0x03, 0xE0, 0xF8, 0x3E, 0x0F, 0x80, 0x3E, + 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x00, 0x20, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xF0, 0x60, 0x0F, 0x80, 0x3E, 0x00, 0xF8, + 0x03, 0xE0, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x0F, 0x00, 0x40, 0x00, 0x7C, + 0x7F, 0xB0, 0xF8, 0x30, 0x18, 0x1C, 0x3C, 0x3C, 0x18, 0x08, 0x00, 0x07, + 0x03, 0x81, 0xC0, 0x1E, 0x07, 0xF1, 0xC7, 0x30, 0x6C, 0x0D, 0x87, 0xB3, + 0xF6, 0xE6, 0xD8, 0xDB, 0x1B, 0x73, 0x67, 0xFC, 0x7F, 0x80, 0x30, 0x03, + 0x00, 0x71, 0xC7, 0xF8, 0x7C, 0x00, 0x3F, 0x80, 0x7F, 0x80, 0x1F, 0x00, + 0x76, 0x00, 0xEE, 0x01, 0x8C, 0x07, 0x18, 0x0E, 0x38, 0x1F, 0xF0, 0x7F, + 0xF0, 0xC0, 0x61, 0x80, 0xCF, 0xC7, 0xFF, 0x8F, 0xC0, 0xFF, 0xC7, 0xFF, + 0x0C, 0x1C, 0x60, 0x63, 0x03, 0x18, 0x38, 0xFF, 0x87, 0xFE, 0x30, 0x39, + 0x80, 0xCC, 0x06, 0x60, 0x7F, 0xFF, 0x7F, 0xF0, 0x0F, 0xF3, 0xFF, 0x70, + 0x76, 0x03, 0xC0, 0x3C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0x60, + 0x37, 0x07, 0x3F, 0xF0, 0xFC, 0xFF, 0x0F, 0xFC, 0x60, 0xE6, 0x06, 0x60, + 0x36, 0x03, 0x60, 0x36, 0x03, 0x60, 0x36, 0x03, 0x60, 0x76, 0x0E, 0xFF, + 0xCF, 0xF8, 0xFF, 0xF7, 0xFF, 0x8C, 0x0C, 0x60, 0x63, 0x1B, 0x18, 0xC0, + 0xFE, 0x07, 0xF0, 0x31, 0x81, 0x8C, 0xCC, 0x06, 0x60, 0x3F, 0xFF, 0xFF, + 0xFC, 0xFF, 0xFF, 0xFF, 0xCC, 0x06, 0x60, 0x33, 0x19, 0x98, 0xC0, 0xFE, + 0x07, 0xF0, 0x31, 0x81, 0x8C, 0x0C, 0x00, 0x60, 0x0F, 0xF0, 0x7F, 0x80, + 0x0F, 0xF1, 0xFF, 0x9C, 0x1C, 0xC0, 0x6C, 0x03, 0x60, 0x03, 0x00, 0x18, + 0x7F, 0xC3, 0xFE, 0x01, 0xB8, 0x0C, 0xE0, 0xE3, 0xFF, 0x07, 0xE0, 0x7C, + 0xF9, 0xF3, 0xE3, 0x03, 0x0C, 0x0C, 0x30, 0x30, 0xC0, 0xC3, 0xFF, 0x0F, + 0xFC, 0x30, 0x30, 0xC0, 0xC3, 0x03, 0x0C, 0x0C, 0xFC, 0xFF, 0xF3, 0xF0, + 0xFF, 0xFF, 0xF0, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, + 0x00, 0xC0, 0x30, 0xFF, 0xFF, 0xF0, 0x0F, 0xF8, 0x7F, 0xC0, 0x30, 0x01, + 0x80, 0x0C, 0x00, 0x60, 0x03, 0x18, 0x18, 0xC0, 0xC6, 0x06, 0x30, 0x31, + 0xC3, 0x0F, 0xF8, 0x1F, 0x00, 0xFC, 0xFB, 0xF3, 0xE3, 0x0E, 0x0C, 0x70, + 0x33, 0x80, 0xFC, 0x03, 0xF0, 0x0F, 0xE0, 0x39, 0xC0, 0xC3, 0x03, 0x0E, + 0x0C, 0x18, 0xFC, 0x7F, 0xF0, 0xF0, 0xFF, 0x0F, 0xF0, 0x18, 0x01, 0x80, + 0x18, 0x01, 0x80, 0x18, 0x01, 0x80, 0x18, 0x31, 0x83, 0x18, 0x31, 0x83, + 0xFF, 0xFF, 0xFF, 0xF0, 0x3F, 0xC0, 0xF7, 0x87, 0x9E, 0x1E, 0x7C, 0xF9, + 0xB3, 0xE6, 0xFD, 0x99, 0xF6, 0x67, 0x99, 0x8E, 0x66, 0x31, 0x98, 0x06, + 0xFC, 0xFF, 0xF3, 0xF0, 0xF1, 0xFF, 0xCF, 0xCF, 0x0C, 0x78, 0x63, 0xE3, + 0x1B, 0x18, 0xDC, 0xC6, 0x76, 0x31, 0xB1, 0x8F, 0x8C, 0x3C, 0x61, 0xE7, + 0xE7, 0x3F, 0x18, 0x0F, 0x03, 0xFC, 0x70, 0xE6, 0x06, 0xE0, 0x7C, 0x03, + 0xC0, 0x3C, 0x03, 0xC0, 0x3E, 0x07, 0x60, 0x67, 0x0E, 0x3F, 0xC0, 0xF0, + 0xFF, 0x8F, 0xFE, 0x30, 0x73, 0x03, 0x30, 0x33, 0x03, 0x30, 0x73, 0xFE, + 0x3F, 0x83, 0x00, 0x30, 0x03, 0x00, 0xFF, 0x0F, 0xF0, 0x0F, 0x03, 0xFC, + 0x70, 0xE6, 0x06, 0xE0, 0x7C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3E, 0x07, + 0x60, 0x67, 0x0E, 0x3F, 0xC1, 0xF0, 0x18, 0x33, 0xFF, 0x3F, 0xE0, 0xFF, + 0x83, 0xFF, 0x83, 0x07, 0x0C, 0x0C, 0x30, 0x30, 0xC1, 0xC3, 0xFE, 0x0F, + 0xF0, 0x31, 0xE0, 0xC3, 0x83, 0x07, 0x0C, 0x0C, 0xFE, 0x3F, 0xF8, 0x70, + 0x3F, 0xDF, 0xFE, 0x1F, 0x03, 0xC0, 0xF8, 0x07, 0xE0, 0x7E, 0x01, 0xF0, + 0x3C, 0x0F, 0x87, 0xFF, 0xBF, 0xC0, 0xFF, 0xFF, 0xFF, 0xC6, 0x3C, 0x63, + 0xC6, 0x3C, 0x63, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, + 0x3F, 0xC3, 0xFC, 0xFF, 0xFF, 0xFF, 0x60, 0x66, 0x06, 0x60, 0x66, 0x06, + 0x60, 0x66, 0x06, 0x60, 0x66, 0x06, 0x60, 0x63, 0x9C, 0x1F, 0xC0, 0xF0, + 0xFC, 0x3F, 0xFC, 0x3F, 0x30, 0x0C, 0x38, 0x1C, 0x18, 0x18, 0x1C, 0x38, + 0x1C, 0x38, 0x0E, 0x70, 0x0E, 0x70, 0x0F, 0x60, 0x07, 0xE0, 0x07, 0xE0, + 0x03, 0xC0, 0x03, 0xC0, 0xFC, 0xFF, 0xF3, 0xF6, 0x01, 0xDC, 0xC6, 0x77, + 0x99, 0xDE, 0x67, 0x79, 0x8D, 0xFE, 0x3F, 0xF8, 0xF3, 0xE3, 0xCF, 0x8F, + 0x3C, 0x38, 0x70, 0xE1, 0xC0, 0xF8, 0xFB, 0xE3, 0xE3, 0x86, 0x0F, 0x38, + 0x1F, 0xC0, 0x3E, 0x00, 0x70, 0x03, 0xE0, 0x0F, 0x80, 0x77, 0x03, 0x8E, + 0x1E, 0x1C, 0xFC, 0xFF, 0xF3, 0xF0, 0xF9, 0xFF, 0x9F, 0x30, 0xC3, 0x9C, + 0x19, 0x81, 0xF8, 0x0F, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, + 0x3F, 0xC3, 0xFC, 0xFF, 0xBF, 0xEC, 0x3B, 0x0C, 0xC6, 0x33, 0x80, 0xC0, + 0x60, 0x38, 0xCC, 0x36, 0x0F, 0x03, 0xFF, 0xFF, 0xF0, 0xFF, 0xF1, 0x8C, + 0x63, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0xC7, 0xFE, 0x40, 0x30, 0x0E, + 0x01, 0x80, 0x70, 0x0C, 0x03, 0x80, 0x60, 0x1C, 0x03, 0x00, 0xE0, 0x18, + 0x07, 0x00, 0xC0, 0x38, 0x0E, 0x01, 0xC0, 0x70, 0x0C, 0x01, 0xFF, 0xC6, + 0x31, 0x8C, 0x63, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x1F, 0xFE, 0x04, 0x03, + 0x01, 0xE0, 0xFC, 0x7B, 0x9C, 0x7E, 0x1F, 0x03, 0xFF, 0xFF, 0xFF, 0xF0, + 0xCE, 0x73, 0x3F, 0x07, 0xF8, 0x00, 0xC0, 0x0C, 0x1F, 0xC7, 0xFC, 0x60, + 0xCC, 0x0C, 0xC1, 0xCF, 0xFF, 0x3F, 0xF0, 0xF0, 0x07, 0x80, 0x0C, 0x00, + 0x60, 0x03, 0x7C, 0x1F, 0xF8, 0xF1, 0xC7, 0x07, 0x30, 0x19, 0x80, 0xCC, + 0x06, 0x60, 0x73, 0xC7, 0x7F, 0xFB, 0xDF, 0x00, 0x1F, 0xB3, 0xFF, 0x70, + 0xFE, 0x07, 0xC0, 0x3C, 0x00, 0xC0, 0x0C, 0x00, 0x70, 0x77, 0xFF, 0x1F, + 0xC0, 0x01, 0xE0, 0x0F, 0x00, 0x18, 0x00, 0xC1, 0xF6, 0x3F, 0xF1, 0xC7, + 0x9C, 0x1C, 0xC0, 0x66, 0x03, 0x30, 0x19, 0x81, 0xC7, 0x1E, 0x3F, 0xFC, + 0x7D, 0xE0, 0x1F, 0x83, 0xFC, 0x70, 0xEE, 0x07, 0xFF, 0xFF, 0xFF, 0xE0, + 0x0E, 0x00, 0x70, 0x73, 0xFF, 0x1F, 0xC0, 0x07, 0xC3, 0xFC, 0x60, 0x0C, + 0x0F, 0xFD, 0xFF, 0x86, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, + 0x81, 0xFF, 0xBF, 0xF0, 0x1F, 0x79, 0xFF, 0xDC, 0x79, 0x81, 0xCC, 0x06, + 0x60, 0x33, 0x01, 0x9C, 0x1C, 0x71, 0xE1, 0xFF, 0x07, 0xD8, 0x00, 0xC0, + 0x06, 0x00, 0x70, 0x7F, 0x03, 0xF0, 0xF0, 0x03, 0xC0, 0x03, 0x00, 0x0C, + 0x00, 0x37, 0xC0, 0xFF, 0x83, 0xC7, 0x0C, 0x0C, 0x30, 0x30, 0xC0, 0xC3, + 0x03, 0x0C, 0x0C, 0x30, 0x33, 0xF3, 0xFF, 0xCF, 0xC0, 0x06, 0x00, 0xC0, + 0x00, 0x3F, 0x07, 0xE0, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, + 0x03, 0x0F, 0xFF, 0xFF, 0xC0, 0x06, 0x06, 0x00, 0xFF, 0xFF, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x07, 0xFE, 0xFC, + 0xF0, 0x07, 0x80, 0x0C, 0x00, 0x60, 0x03, 0x3F, 0x19, 0xF8, 0xDE, 0x07, + 0xE0, 0x3E, 0x01, 0xF0, 0x0F, 0xC0, 0x6F, 0x03, 0x1C, 0x78, 0xFF, 0xC7, + 0xE0, 0x7E, 0x0F, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, + 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x61, 0xFF, 0xFF, 0xF8, 0xFE, 0xF1, + 0xFF, 0xF1, 0xCE, 0x63, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0xC6, 0x31, + 0x8C, 0x63, 0x19, 0xF7, 0xBF, 0xEF, 0x78, 0x77, 0xC1, 0xFF, 0x83, 0xC7, + 0x0C, 0x0C, 0x30, 0x30, 0xC0, 0xC3, 0x03, 0x0C, 0x0C, 0x30, 0x33, 0xF1, + 0xFF, 0xC7, 0xC0, 0x1F, 0x83, 0xFC, 0x70, 0xEE, 0x07, 0xC0, 0x3C, 0x03, + 0xC0, 0x3E, 0x07, 0x70, 0xE3, 0xFC, 0x1F, 0x80, 0xF7, 0xE3, 0xFF, 0xC3, + 0xC3, 0x8E, 0x07, 0x30, 0x0C, 0xC0, 0x33, 0x00, 0xCE, 0x07, 0x3C, 0x38, + 0xFF, 0xC3, 0x7E, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x0F, 0xE0, 0x3F, 0x80, + 0x1F, 0xBC, 0xFF, 0xF7, 0x0F, 0x38, 0x1C, 0xC0, 0x33, 0x00, 0xCC, 0x03, + 0x38, 0x1C, 0x70, 0xF0, 0xFF, 0xC1, 0xFB, 0x00, 0x0C, 0x00, 0x30, 0x00, + 0xC0, 0x1F, 0xC0, 0x7F, 0x79, 0xE7, 0xFF, 0x1F, 0x31, 0xC0, 0x18, 0x01, + 0x80, 0x18, 0x01, 0x80, 0x18, 0x0F, 0xFC, 0xFF, 0xC0, 0x3F, 0x9F, 0xFE, + 0x1F, 0x82, 0xFE, 0x1F, 0xE0, 0xFF, 0x03, 0xE0, 0xFF, 0xFF, 0xF0, 0x30, + 0x06, 0x00, 0xC0, 0x7F, 0xEF, 0xFC, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, + 0x00, 0xC0, 0x18, 0x71, 0xFE, 0x1F, 0x00, 0xF1, 0xF7, 0x8F, 0x8C, 0x0C, + 0x60, 0x63, 0x03, 0x18, 0x18, 0xC0, 0xC6, 0x06, 0x38, 0xF0, 0xFF, 0xC3, + 0xEE, 0xFC, 0xFF, 0xF3, 0xF3, 0x87, 0x0E, 0x1C, 0x1C, 0x60, 0x73, 0x80, + 0xEC, 0x03, 0xF0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x00, 0xF8, 0x7F, 0xE1, + 0xF7, 0x39, 0x8C, 0xE6, 0x37, 0xB0, 0xFF, 0xC3, 0xFF, 0x07, 0xBC, 0x1C, + 0xF0, 0x73, 0x81, 0x86, 0x00, 0x7C, 0xF9, 0xF3, 0xE3, 0xCF, 0x07, 0xF8, + 0x0F, 0xC0, 0x1E, 0x00, 0xFC, 0x07, 0x38, 0x38, 0x73, 0xF3, 0xFF, 0xCF, + 0xC0, 0xF9, 0xFF, 0x9F, 0x70, 0xE3, 0x0C, 0x39, 0xC1, 0x98, 0x19, 0x81, + 0xF8, 0x0F, 0x00, 0xF0, 0x06, 0x00, 0x60, 0x0E, 0x00, 0xC0, 0xFF, 0x0F, + 0xF0, 0x7F, 0xCF, 0xF9, 0x8E, 0x33, 0x80, 0x70, 0x1C, 0x07, 0x01, 0xC6, + 0x70, 0xFF, 0xFF, 0xFF, 0x80, 0x0E, 0x3C, 0x60, 0xC1, 0x83, 0x06, 0x0C, + 0x39, 0xE3, 0xC0, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x3C, 0x38, 0xFF, 0xFF, + 0xFF, 0xFF, 0xF0, 0xE1, 0xC0, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x3C, + 0x79, 0x83, 0x06, 0x0C, 0x18, 0x31, 0xE3, 0x80, 0x3C, 0x37, 0xE7, 0x67, + 0xE6, 0x1C}; + +const GFXglyph FreeMonoBold12pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 14, 0, 1}, // 0x20 ' ' + {0, 4, 15, 14, 5, -14}, // 0x21 '!' + {8, 8, 7, 14, 3, -13}, // 0x22 '"' + {15, 11, 18, 14, 2, -15}, // 0x23 '#' + {40, 10, 20, 14, 2, -16}, // 0x24 '$' + {65, 10, 15, 14, 2, -14}, // 0x25 '%' + {84, 10, 13, 14, 2, -12}, // 0x26 '&' + {101, 3, 7, 14, 5, -13}, // 0x27 ''' + {104, 5, 19, 14, 6, -14}, // 0x28 '(' + {116, 5, 19, 14, 3, -14}, // 0x29 ')' + {128, 10, 10, 14, 2, -14}, // 0x2A '*' + {141, 12, 13, 14, 1, -12}, // 0x2B '+' + {161, 5, 7, 14, 4, -2}, // 0x2C ',' + {166, 12, 2, 14, 1, -7}, // 0x2D '-' + {169, 3, 3, 14, 5, -2}, // 0x2E '.' + {171, 10, 20, 14, 2, -16}, // 0x2F '/' + {196, 10, 15, 14, 2, -14}, // 0x30 '0' + {215, 10, 15, 14, 2, -14}, // 0x31 '1' + {234, 10, 15, 14, 2, -14}, // 0x32 '2' + {253, 11, 15, 14, 1, -14}, // 0x33 '3' + {274, 9, 14, 14, 2, -13}, // 0x34 '4' + {290, 10, 15, 14, 2, -14}, // 0x35 '5' + {309, 10, 15, 14, 2, -14}, // 0x36 '6' + {328, 10, 15, 14, 2, -14}, // 0x37 '7' + {347, 10, 15, 14, 2, -14}, // 0x38 '8' + {366, 10, 15, 14, 3, -14}, // 0x39 '9' + {385, 3, 11, 14, 5, -10}, // 0x3A ':' + {390, 4, 15, 14, 4, -10}, // 0x3B ';' + {398, 12, 11, 14, 1, -11}, // 0x3C '<' + {415, 12, 7, 14, 1, -9}, // 0x3D '=' + {426, 12, 11, 14, 1, -11}, // 0x3E '>' + {443, 9, 14, 14, 3, -13}, // 0x3F '?' + {459, 11, 19, 14, 2, -14}, // 0x40 '@' + {486, 15, 14, 14, -1, -13}, // 0x41 'A' + {513, 13, 14, 14, 0, -13}, // 0x42 'B' + {536, 12, 14, 14, 1, -13}, // 0x43 'C' + {557, 12, 14, 14, 1, -13}, // 0x44 'D' + {578, 13, 14, 14, 0, -13}, // 0x45 'E' + {601, 13, 14, 14, 0, -13}, // 0x46 'F' + {624, 13, 14, 14, 1, -13}, // 0x47 'G' + {647, 14, 14, 14, 0, -13}, // 0x48 'H' + {672, 10, 14, 14, 2, -13}, // 0x49 'I' + {690, 13, 14, 14, 1, -13}, // 0x4A 'J' + {713, 14, 14, 14, 0, -13}, // 0x4B 'K' + {738, 12, 14, 14, 1, -13}, // 0x4C 'L' + {759, 14, 14, 14, 0, -13}, // 0x4D 'M' + {784, 13, 14, 14, 0, -13}, // 0x4E 'N' + {807, 12, 14, 14, 1, -13}, // 0x4F 'O' + {828, 12, 14, 14, 0, -13}, // 0x50 'P' + {849, 12, 17, 14, 1, -13}, // 0x51 'Q' + {875, 14, 14, 14, 0, -13}, // 0x52 'R' + {900, 10, 14, 14, 2, -13}, // 0x53 'S' + {918, 12, 14, 14, 1, -13}, // 0x54 'T' + {939, 12, 14, 14, 1, -13}, // 0x55 'U' + {960, 16, 14, 14, -1, -13}, // 0x56 'V' + {988, 14, 14, 14, 0, -13}, // 0x57 'W' + {1013, 14, 14, 14, 0, -13}, // 0x58 'X' + {1038, 12, 14, 14, 1, -13}, // 0x59 'Y' + {1059, 10, 14, 14, 2, -13}, // 0x5A 'Z' + {1077, 5, 19, 14, 6, -14}, // 0x5B '[' + {1089, 10, 20, 14, 2, -16}, // 0x5C '\' + {1114, 5, 19, 14, 3, -14}, // 0x5D ']' + {1126, 10, 8, 14, 2, -15}, // 0x5E '^' + {1136, 14, 2, 14, 0, 4}, // 0x5F '_' + {1140, 4, 4, 14, 4, -15}, // 0x60 '`' + {1142, 12, 11, 14, 1, -10}, // 0x61 'a' + {1159, 13, 15, 14, 0, -14}, // 0x62 'b' + {1184, 12, 11, 14, 1, -10}, // 0x63 'c' + {1201, 13, 15, 14, 1, -14}, // 0x64 'd' + {1226, 12, 11, 14, 1, -10}, // 0x65 'e' + {1243, 11, 15, 14, 2, -14}, // 0x66 'f' + {1264, 13, 16, 14, 1, -10}, // 0x67 'g' + {1290, 14, 15, 14, 0, -14}, // 0x68 'h' + {1317, 11, 14, 14, 1, -13}, // 0x69 'i' + {1337, 8, 19, 15, 3, -13}, // 0x6A 'j' + {1356, 13, 15, 14, 1, -14}, // 0x6B 'k' + {1381, 11, 15, 14, 1, -14}, // 0x6C 'l' + {1402, 15, 11, 14, 0, -10}, // 0x6D 'm' + {1423, 14, 11, 14, 0, -10}, // 0x6E 'n' + {1443, 12, 11, 14, 1, -10}, // 0x6F 'o' + {1460, 14, 16, 14, 0, -10}, // 0x70 'p' + {1488, 14, 16, 14, 0, -10}, // 0x71 'q' + {1516, 12, 11, 14, 1, -10}, // 0x72 'r' + {1533, 10, 11, 14, 2, -10}, // 0x73 's' + {1547, 11, 14, 14, 1, -13}, // 0x74 't' + {1567, 13, 11, 14, 0, -10}, // 0x75 'u' + {1585, 14, 11, 14, 0, -10}, // 0x76 'v' + {1605, 14, 11, 14, 0, -10}, // 0x77 'w' + {1625, 14, 11, 14, 0, -10}, // 0x78 'x' + {1645, 12, 16, 14, 1, -10}, // 0x79 'y' + {1669, 11, 11, 14, 1, -10}, // 0x7A 'z' + {1685, 7, 19, 14, 3, -14}, // 0x7B '{' + {1702, 2, 19, 14, 6, -14}, // 0x7C '|' + {1707, 7, 19, 14, 4, -14}, // 0x7D '}' + {1724, 12, 4, 14, 1, -7}}; // 0x7E '~' + +const GFXfont FreeMonoBold12pt7b PROGMEM = { + (uint8_t *)FreeMonoBold12pt7bBitmaps, (GFXglyph *)FreeMonoBold12pt7bGlyphs, + 0x20, 0x7E, 24}; + +// Approx. 2402 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMonoBold18pt7b.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMonoBold18pt7b.h new file mode 100644 index 0000000..36664c1 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMonoBold18pt7b.h @@ -0,0 +1,425 @@ +#pragma once +#include + +const uint8_t FreeMonoBold18pt7bBitmaps[] PROGMEM = { + 0x77, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0x9C, 0xE7, 0x39, 0xC4, 0x03, 0xBF, + 0xFF, 0xB8, 0xF1, 0xFE, 0x3F, 0xC7, 0xF8, 0xFF, 0x1E, 0xC1, 0x98, 0x33, + 0x06, 0x60, 0xCC, 0x18, 0x0E, 0x1C, 0x0F, 0x3C, 0x1F, 0x3C, 0x1E, 0x3C, + 0x1E, 0x3C, 0x1E, 0x78, 0x1E, 0x78, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0x1E, 0x78, 0x1E, 0x78, 0x1E, 0x78, 0x7F, 0xFE, 0x7F, 0xFE, + 0x7F, 0xFE, 0x7F, 0xFE, 0x3C, 0x78, 0x3C, 0x78, 0x3C, 0x78, 0x3C, 0xF0, + 0x3C, 0xF0, 0x3C, 0xF0, 0x3C, 0xF0, 0x03, 0x00, 0x1E, 0x00, 0x78, 0x01, + 0xE0, 0x1F, 0xF1, 0xFF, 0xE7, 0xFF, 0xBE, 0x1E, 0xF0, 0x3B, 0xC0, 0xCF, + 0xE0, 0x3F, 0xF8, 0x7F, 0xF0, 0x7F, 0xE0, 0x1F, 0xF0, 0x0F, 0xE0, 0x3F, + 0x80, 0xFF, 0x87, 0xFF, 0xFE, 0xFF, 0xF3, 0x7F, 0x80, 0x78, 0x01, 0xE0, + 0x07, 0x80, 0x1E, 0x00, 0x78, 0x00, 0xC0, 0x1E, 0x00, 0xFF, 0x03, 0x86, + 0x06, 0x06, 0x0C, 0x0C, 0x18, 0x18, 0x38, 0x70, 0x3F, 0xC2, 0x1E, 0x3E, + 0x03, 0xF8, 0x3F, 0x83, 0xF8, 0x0F, 0x8F, 0x18, 0x7F, 0x01, 0xC7, 0x03, + 0x06, 0x06, 0x0C, 0x0C, 0x18, 0x1C, 0x70, 0x1F, 0xC0, 0x0F, 0x00, 0x03, + 0xD0, 0x1F, 0xF0, 0x7F, 0xE1, 0xFF, 0xC3, 0xE6, 0x07, 0x80, 0x0F, 0x00, + 0x0F, 0x00, 0x1F, 0x00, 0x3E, 0x00, 0xFE, 0x03, 0xFE, 0xFF, 0xBD, 0xFE, + 0x3F, 0xFC, 0x3F, 0x7C, 0x7C, 0xFF, 0xFE, 0xFF, 0xFC, 0xFF, 0xF8, 0x7E, + 0xF0, 0xFF, 0xFF, 0xF6, 0x66, 0x66, 0x07, 0x0F, 0x1F, 0x1E, 0x3E, 0x3C, + 0x78, 0x78, 0x78, 0x70, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0x78, 0x78, 0x78, 0x3C, 0x3C, 0x1E, 0x1F, 0x0F, 0x07, 0xE0, 0xF0, 0xF8, + 0x78, 0x7C, 0x3C, 0x3E, 0x1E, 0x1E, 0x1E, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x0F, 0x0F, 0x0E, 0x1E, 0x1E, 0x1E, 0x3C, 0x3C, 0x78, 0xF8, 0xF0, 0xE0, + 0x01, 0x80, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0xFF, 0xFF, + 0xFF, 0xFF, 0x7F, 0xFE, 0x1F, 0xF8, 0x07, 0xE0, 0x0F, 0xF0, 0x1F, 0xF8, + 0x1E, 0x78, 0x1C, 0x38, 0x18, 0x18, 0x01, 0xC0, 0x03, 0xC0, 0x03, 0xC0, + 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, + 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x01, 0x80, 0x3E, 0x78, 0xF3, 0xC7, + 0x8E, 0x1C, 0x70, 0xE1, 0x80, 0x7F, 0xFF, 0xDF, 0xFF, 0xF9, 0xFF, 0xFF, + 0x3F, 0xFF, 0xE0, 0x77, 0xFF, 0xF7, 0x00, 0x00, 0x0E, 0x00, 0x3C, 0x00, + 0x78, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x00, 0x1E, 0x00, 0x38, 0x00, 0xF0, + 0x01, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x3C, 0x00, 0x78, 0x01, 0xE0, 0x03, + 0xC0, 0x0F, 0x00, 0x1E, 0x00, 0x78, 0x00, 0xF0, 0x03, 0xC0, 0x07, 0x80, + 0x1E, 0x00, 0x3C, 0x00, 0x70, 0x01, 0xE0, 0x03, 0x80, 0x03, 0x00, 0x00, + 0x07, 0xE0, 0x1F, 0xF8, 0x3F, 0xFC, 0x3F, 0xFC, 0x7C, 0x3E, 0x78, 0x1E, + 0xF8, 0x1F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, + 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF8, 0x1F, 0x78, 0x1E, + 0x7C, 0x3E, 0x3F, 0xFC, 0x3F, 0xFC, 0x1F, 0xF8, 0x07, 0xE0, 0x07, 0xC0, + 0x1F, 0x80, 0xFF, 0x03, 0xFE, 0x0F, 0xBC, 0x0C, 0x78, 0x00, 0xF0, 0x01, + 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, + 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x81, 0xFF, 0xFB, 0xFF, 0xF7, + 0xFF, 0xE7, 0xFF, 0x80, 0x0F, 0xC0, 0x7F, 0xE1, 0xFF, 0xE3, 0xFF, 0xEF, + 0x87, 0xDE, 0x07, 0xF8, 0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x7C, 0x01, + 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, + 0x78, 0x03, 0xE0, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, + 0x0F, 0xC0, 0x7F, 0xF0, 0xFF, 0xF8, 0xFF, 0xFC, 0x70, 0x3E, 0x00, 0x1E, + 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x3C, 0x03, 0xFC, 0x03, 0xF0, 0x03, 0xF0, + 0x03, 0xFC, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, + 0xE0, 0x3F, 0xFF, 0xFE, 0xFF, 0xFC, 0x7F, 0xF8, 0x1F, 0xE0, 0x00, 0xF8, + 0x03, 0xF0, 0x07, 0xE0, 0x1F, 0xC0, 0x77, 0x80, 0xEF, 0x03, 0x9E, 0x0F, + 0x3C, 0x1C, 0x78, 0x70, 0xF1, 0xE1, 0xE3, 0x83, 0xCF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x78, 0x07, 0xFC, 0x0F, 0xF8, 0x1F, 0xF0, + 0x1F, 0xC0, 0x3F, 0xFC, 0x1F, 0xFE, 0x0F, 0xFF, 0x07, 0xFF, 0x83, 0xC0, + 0x01, 0xE0, 0x00, 0xF0, 0x00, 0x7B, 0xE0, 0x3F, 0xFC, 0x1F, 0xFF, 0x0F, + 0xFF, 0xC3, 0x83, 0xE0, 0x00, 0xF8, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x0F, + 0x00, 0x0F, 0xB8, 0x0F, 0xBF, 0xFF, 0xCF, 0xFF, 0xC3, 0xFF, 0xC0, 0x7F, + 0x80, 0x00, 0xFC, 0x07, 0xFC, 0x3F, 0xF8, 0xFF, 0xF1, 0xF8, 0x07, 0xC0, + 0x1F, 0x00, 0x3C, 0x00, 0xF0, 0x01, 0xE7, 0xC3, 0xDF, 0xC7, 0x7F, 0xCF, + 0xFF, 0xDF, 0x8F, 0xFC, 0x07, 0xF0, 0x0F, 0xF0, 0x1F, 0xE0, 0x3D, 0xE0, + 0xFB, 0xFF, 0xE3, 0xFF, 0xC3, 0xFF, 0x01, 0xF8, 0x00, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x01, 0xE0, 0x03, 0x80, 0x0F, 0x00, 0x1E, + 0x00, 0x38, 0x00, 0xF0, 0x01, 0xE0, 0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, + 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x38, + 0x00, 0x70, 0x00, 0x07, 0xC0, 0x3F, 0xE0, 0xFF, 0xE3, 0xFF, 0xEF, 0x83, + 0xFE, 0x03, 0xFC, 0x07, 0xF8, 0x0F, 0xF0, 0x1E, 0xF0, 0x78, 0xFF, 0xE0, + 0xFF, 0x81, 0xFF, 0x0F, 0xFF, 0x9E, 0x0F, 0x78, 0x0F, 0xF0, 0x1F, 0xE0, + 0x3F, 0xE0, 0xFB, 0xFF, 0xE7, 0xFF, 0xC7, 0xFF, 0x03, 0xF8, 0x00, 0x0F, + 0xC0, 0x3F, 0xE0, 0xFF, 0xE3, 0xFF, 0xEF, 0xC3, 0xDF, 0x03, 0xBC, 0x07, + 0xF8, 0x0F, 0xF0, 0x1F, 0xF0, 0x3D, 0xF1, 0xFB, 0xFF, 0xF3, 0xFE, 0xE3, + 0xFB, 0xC3, 0xE7, 0x80, 0x1E, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xE7, 0xFF, + 0x8F, 0xFE, 0x1F, 0xF0, 0x1F, 0x80, 0x00, 0x77, 0xFF, 0xF7, 0x00, 0x00, + 0x00, 0x00, 0xEF, 0xFF, 0xEE, 0x1C, 0x7C, 0xF9, 0xF1, 0xC0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xF3, 0xC7, 0x8E, 0x3C, 0x70, 0xE1, 0x87, 0x0C, 0x00, + 0x00, 0x00, 0x00, 0x80, 0x00, 0xF0, 0x00, 0xFC, 0x00, 0xFE, 0x00, 0xFE, + 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x07, 0xF0, 0x00, + 0x7F, 0x00, 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xF0, 0x00, 0x7C, 0x00, + 0x07, 0x7F, 0xFF, 0xDF, 0xFF, 0xF9, 0xFF, 0xFF, 0x3F, 0xFF, 0xE0, 0x00, + 0x00, 0x00, 0x00, 0x1F, 0xFF, 0xF7, 0xFF, 0xFE, 0x7F, 0xFF, 0xCF, 0xFF, + 0xF8, 0x00, 0x00, 0x3C, 0x00, 0x0F, 0xC0, 0x01, 0xFC, 0x00, 0x1F, 0xC0, + 0x01, 0xFC, 0x00, 0x1F, 0xC0, 0x01, 0xFC, 0x00, 0x3F, 0x80, 0x3F, 0x80, + 0x3F, 0x80, 0x3F, 0x80, 0x3F, 0x80, 0x3F, 0x80, 0x0F, 0x80, 0x03, 0x80, + 0x00, 0x1F, 0xC0, 0xFF, 0xE3, 0xFF, 0xF7, 0xFF, 0xEF, 0x07, 0xFE, 0x03, + 0xDC, 0x07, 0x80, 0x0F, 0x00, 0x7C, 0x03, 0xF8, 0x1F, 0xC0, 0x1E, 0x00, + 0x30, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x1F, 0x00, 0x3E, + 0x00, 0x7C, 0x00, 0x70, 0x00, 0x07, 0xE0, 0x1F, 0xE0, 0x7F, 0xE1, 0xE1, + 0xC7, 0x83, 0xCE, 0x03, 0xBC, 0x07, 0x70, 0x0E, 0xE0, 0x7D, 0xC3, 0xFB, + 0x8F, 0xF7, 0x3C, 0xEE, 0x71, 0xDC, 0xE3, 0xB9, 0xC7, 0x73, 0xCE, 0xE3, + 0xFF, 0xC3, 0xFF, 0x83, 0xFF, 0x00, 0x07, 0x00, 0x0E, 0x00, 0x1E, 0x02, + 0x1E, 0x1E, 0x3F, 0xFC, 0x1F, 0xF0, 0x1F, 0x80, 0x0F, 0xF8, 0x00, 0x7F, + 0xF0, 0x01, 0xFF, 0xC0, 0x03, 0xFF, 0x00, 0x01, 0xFE, 0x00, 0x07, 0xF8, + 0x00, 0x1C, 0xF0, 0x00, 0xF3, 0xC0, 0x03, 0xCF, 0x00, 0x1E, 0x1E, 0x00, + 0x78, 0x78, 0x03, 0xC0, 0xF0, 0x0F, 0xFF, 0xC0, 0x3F, 0xFF, 0x01, 0xFF, + 0xFE, 0x07, 0xFF, 0xF8, 0x3C, 0x00, 0xF3, 0xFC, 0x1F, 0xEF, 0xF8, 0x7F, + 0xFF, 0xE1, 0xFF, 0x7F, 0x03, 0xF8, 0x7F, 0xFC, 0x0F, 0xFF, 0xF0, 0xFF, + 0xFF, 0x8F, 0xFF, 0xF8, 0x3C, 0x07, 0xC3, 0xC0, 0x3C, 0x3C, 0x03, 0xC3, + 0xC0, 0x7C, 0x3F, 0xFF, 0x83, 0xFF, 0xF0, 0x3F, 0xFF, 0x83, 0xFF, 0xFE, + 0x3C, 0x03, 0xE3, 0xC0, 0x1F, 0x3C, 0x00, 0xF3, 0xC0, 0x0F, 0x3C, 0x01, + 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xEF, 0xFF, 0xFC, 0x7F, 0xFF, 0x00, 0x01, + 0xF8, 0xC1, 0xFF, 0xFC, 0x7F, 0xFF, 0x9F, 0xFF, 0xF7, 0xE0, 0x7E, 0xF8, + 0x07, 0xFE, 0x00, 0x7F, 0x80, 0x0E, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0xC0, + 0x00, 0x78, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xE0, + 0x07, 0x7F, 0x03, 0xE7, 0xFF, 0xFC, 0x7F, 0xFF, 0x03, 0xFF, 0xC0, 0x1F, + 0xE0, 0xFF, 0xF0, 0x3F, 0xFF, 0x0F, 0xFF, 0xE3, 0xFF, 0xFC, 0x78, 0x1F, + 0x9E, 0x03, 0xE7, 0x80, 0x79, 0xE0, 0x0F, 0x78, 0x03, 0xDE, 0x00, 0xF7, + 0x80, 0x3D, 0xE0, 0x0F, 0x78, 0x03, 0xDE, 0x00, 0xF7, 0x80, 0x7D, 0xE0, + 0x1E, 0x78, 0x1F, 0xBF, 0xFF, 0xCF, 0xFF, 0xF3, 0xFF, 0xF0, 0x7F, 0xF0, + 0x00, 0x7F, 0xFF, 0xDF, 0xFF, 0xFB, 0xFF, 0xFF, 0x7F, 0xFF, 0xE3, 0xC0, + 0x3C, 0x78, 0x07, 0x8F, 0x1C, 0xF1, 0xE3, 0xCC, 0x3F, 0xF8, 0x07, 0xFF, + 0x00, 0xFF, 0xE0, 0x1F, 0xFC, 0x03, 0xC7, 0x80, 0x78, 0xF1, 0x8F, 0x0C, + 0x79, 0xE0, 0x0F, 0x3C, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF7, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF3, 0xC0, 0x1E, 0x78, 0x63, 0xCF, 0x1E, 0x79, 0xE3, 0xC6, 0x3F, 0xF8, + 0x07, 0xFF, 0x00, 0xFF, 0xE0, 0x1F, 0xFC, 0x03, 0xC7, 0x80, 0x78, 0xE0, + 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x1F, 0xFC, 0x03, 0xFF, 0x80, + 0x7F, 0xF0, 0x07, 0xFC, 0x00, 0x01, 0xFC, 0xE0, 0x7F, 0xFE, 0x1F, 0xFF, + 0xE3, 0xFF, 0xFE, 0x7F, 0x03, 0xE7, 0xC0, 0x1E, 0xF8, 0x00, 0xEF, 0x00, + 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x03, 0xFE, 0xF0, + 0x3F, 0xFF, 0x03, 0xFF, 0xF8, 0x3F, 0xF7, 0x80, 0x1E, 0x7E, 0x01, 0xE3, + 0xFF, 0xFE, 0x1F, 0xFF, 0xE0, 0xFF, 0xF8, 0x01, 0xFE, 0x00, 0x7F, 0x0F, + 0xE3, 0xFC, 0x7F, 0x9F, 0xE3, 0xFC, 0x7F, 0x1F, 0xC1, 0xE0, 0x3C, 0x0F, + 0x01, 0xE0, 0x78, 0x0F, 0x03, 0xC0, 0x78, 0x1E, 0x03, 0xC0, 0xFF, 0xFE, + 0x07, 0xFF, 0xF0, 0x3F, 0xFF, 0x81, 0xFF, 0xFC, 0x0F, 0x01, 0xE0, 0x78, + 0x0F, 0x03, 0xC0, 0x78, 0x1E, 0x03, 0xC3, 0xFC, 0x7F, 0xBF, 0xE3, 0xFF, + 0xFF, 0x1F, 0xF7, 0xF0, 0x7F, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x00, + 0x78, 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x01, 0xE0, 0x07, 0x83, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xF8, 0x01, 0xFF, 0xE0, 0x3F, 0xFC, + 0x07, 0xFF, 0x80, 0xFF, 0xF0, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0xC0, + 0x00, 0x78, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x3C, 0x38, 0x07, 0x8F, + 0x00, 0xF1, 0xE0, 0x1E, 0x3C, 0x03, 0xC7, 0x80, 0xF8, 0xF8, 0x3F, 0x1F, + 0xFF, 0xC3, 0xFF, 0xF0, 0x1F, 0xFC, 0x00, 0x7E, 0x00, 0xFF, 0x0F, 0xCF, + 0xF9, 0xFE, 0xFF, 0x9F, 0xEF, 0xF8, 0xFC, 0x3C, 0x1F, 0x03, 0xC3, 0xE0, + 0x3C, 0x7C, 0x03, 0xCF, 0x80, 0x3D, 0xF0, 0x03, 0xFE, 0x00, 0x3F, 0xF8, + 0x03, 0xFF, 0x80, 0x3E, 0x7C, 0x03, 0xC3, 0xE0, 0x3C, 0x1E, 0x03, 0xC0, + 0xF0, 0x3C, 0x0F, 0x0F, 0xF8, 0x7E, 0xFF, 0x87, 0xFF, 0xF8, 0x7F, 0x7F, + 0x03, 0xE0, 0xFF, 0xC0, 0x3F, 0xF0, 0x0F, 0xFC, 0x03, 0xFF, 0x00, 0x1E, + 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, + 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x01, 0x87, 0x80, 0xF1, 0xE0, 0x3C, + 0x78, 0x0F, 0x1E, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, + 0xFF, 0xC0, 0x3E, 0x00, 0xF8, 0xFC, 0x01, 0xF9, 0xFC, 0x07, 0xF3, 0xF8, + 0x0F, 0xE3, 0xF8, 0x3F, 0x87, 0xF0, 0x7F, 0x0F, 0xF1, 0xFE, 0x1F, 0xE3, + 0xFC, 0x3D, 0xE7, 0x78, 0x7B, 0xDE, 0xF0, 0xF7, 0xBD, 0xE1, 0xE7, 0xF3, + 0xC3, 0xCF, 0xE7, 0x87, 0x8F, 0x8F, 0x0F, 0x1F, 0x1E, 0x1E, 0x1E, 0x3C, + 0x3C, 0x00, 0x79, 0xFF, 0x07, 0xFF, 0xFE, 0x0F, 0xFF, 0xFC, 0x1F, 0xF7, + 0xF0, 0x1F, 0xC0, 0xFC, 0x1F, 0xEF, 0xE1, 0xFF, 0xFE, 0x1F, 0xFF, 0xF1, + 0xFF, 0x3F, 0x83, 0xC3, 0xF8, 0x3C, 0x3F, 0xC3, 0xC3, 0xFC, 0x3C, 0x3D, + 0xE3, 0xC3, 0xDE, 0x3C, 0x3C, 0xF3, 0xC3, 0xC7, 0xBC, 0x3C, 0x7B, 0xC3, + 0xC3, 0xFC, 0x3C, 0x3F, 0xC3, 0xC1, 0xFC, 0x3C, 0x1F, 0xCF, 0xF8, 0xFC, + 0xFF, 0x87, 0xCF, 0xF8, 0x7C, 0x7F, 0x03, 0xC0, 0x01, 0xF8, 0x00, 0x7F, + 0xE0, 0x0F, 0xFF, 0x81, 0xFF, 0xFC, 0x3F, 0x0F, 0xC7, 0xC0, 0x3E, 0x78, + 0x01, 0xEF, 0x80, 0x1F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, + 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x80, 0x1F, 0x78, 0x01, 0xE7, 0xC0, 0x3E, + 0x3F, 0x0F, 0xC1, 0xFF, 0xF8, 0x1F, 0xFF, 0x00, 0x7F, 0xE0, 0x01, 0xF8, + 0x00, 0x7F, 0xF8, 0x3F, 0xFF, 0x8F, 0xFF, 0xF3, 0xFF, 0xFE, 0x3C, 0x0F, + 0xCF, 0x00, 0xF3, 0xC0, 0x3C, 0xF0, 0x0F, 0x3C, 0x03, 0xCF, 0x03, 0xF3, + 0xFF, 0xF8, 0xFF, 0xFC, 0x3F, 0xFE, 0x0F, 0xFE, 0x03, 0xC0, 0x00, 0xF0, + 0x00, 0x3C, 0x00, 0x3F, 0xF8, 0x0F, 0xFE, 0x03, 0xFF, 0x80, 0x7F, 0xC0, + 0x00, 0x01, 0xF8, 0x00, 0x7F, 0xE0, 0x0F, 0xFF, 0x01, 0xFF, 0xF8, 0x3F, + 0x0F, 0xC7, 0xC0, 0x3E, 0x78, 0x01, 0xEF, 0x80, 0x1F, 0xF0, 0x00, 0xFF, + 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x80, 0x1F, + 0x78, 0x01, 0xE7, 0xC0, 0x3E, 0x3F, 0x0F, 0xC1, 0xFF, 0xF8, 0x0F, 0xFF, + 0x00, 0x7F, 0xE0, 0x03, 0xF8, 0x00, 0x3F, 0x8E, 0x07, 0xFF, 0xF0, 0xFF, + 0xFF, 0x0F, 0xFF, 0xE0, 0x60, 0x78, 0x7F, 0xF8, 0x07, 0xFF, 0xF0, 0x3F, + 0xFF, 0xE0, 0xFF, 0xFF, 0x01, 0xE0, 0x7C, 0x0F, 0x01, 0xE0, 0x78, 0x0F, + 0x03, 0xC0, 0x78, 0x1E, 0x0F, 0xC0, 0xFF, 0xFC, 0x07, 0xFF, 0xC0, 0x3F, + 0xF8, 0x01, 0xFF, 0xE0, 0x0F, 0x0F, 0x80, 0x78, 0x3C, 0x03, 0xC0, 0xF0, + 0x1E, 0x07, 0xC3, 0xFE, 0x1F, 0xBF, 0xF0, 0x7F, 0xFF, 0x83, 0xF7, 0xF8, + 0x0F, 0x00, 0x07, 0xE7, 0x07, 0xFF, 0x8F, 0xFF, 0xC7, 0xFF, 0xE7, 0xC1, + 0xF3, 0xC0, 0x79, 0xE0, 0x3C, 0xF8, 0x00, 0x7F, 0x80, 0x1F, 0xFC, 0x07, + 0xFF, 0x81, 0xFF, 0xE0, 0x0F, 0xFB, 0x00, 0x7F, 0xC0, 0x1F, 0xE0, 0x0F, + 0xFC, 0x1F, 0xFF, 0xFF, 0xBF, 0xFF, 0x8D, 0xFF, 0x80, 0x3F, 0x00, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x1F, 0xE1, + 0xE3, 0xFC, 0x3C, 0x7F, 0x87, 0x8F, 0x60, 0xF0, 0xC0, 0x1E, 0x00, 0x03, + 0xC0, 0x00, 0x78, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x07, + 0x80, 0x00, 0xF0, 0x01, 0xFF, 0xE0, 0x3F, 0xFC, 0x07, 0xFF, 0x80, 0x7F, + 0xE0, 0xFF, 0x0F, 0xF7, 0xFC, 0x7F, 0xFF, 0xE3, 0xFE, 0xFF, 0x1F, 0xF3, + 0xC0, 0x1E, 0x1E, 0x00, 0xF0, 0xF0, 0x07, 0x87, 0x80, 0x3C, 0x3C, 0x01, + 0xE1, 0xE0, 0x0F, 0x0F, 0x00, 0x78, 0x78, 0x03, 0xC3, 0xC0, 0x1E, 0x1E, + 0x00, 0xF0, 0xF0, 0x07, 0x87, 0xC0, 0x7C, 0x1F, 0x07, 0xC0, 0xFF, 0xFE, + 0x03, 0xFF, 0xE0, 0x0F, 0xFE, 0x00, 0x1F, 0xC0, 0x00, 0xFF, 0x03, 0xFD, + 0xFF, 0x07, 0xFF, 0xFE, 0x0F, 0xFB, 0xF8, 0x1F, 0xE1, 0xC0, 0x07, 0x03, + 0xC0, 0x1E, 0x07, 0x80, 0x3C, 0x07, 0x80, 0xF0, 0x0F, 0x01, 0xE0, 0x0F, + 0x03, 0x80, 0x1E, 0x0F, 0x00, 0x3E, 0x1E, 0x00, 0x3C, 0x78, 0x00, 0x78, + 0xF0, 0x00, 0x7B, 0xC0, 0x00, 0xF7, 0x80, 0x01, 0xFF, 0x00, 0x01, 0xFC, + 0x00, 0x03, 0xF8, 0x00, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0xFF, 0x0F, + 0xF7, 0xFC, 0x7F, 0xFF, 0xE3, 0xFF, 0xFE, 0x0F, 0xF7, 0x80, 0x0F, 0x3C, + 0x38, 0x78, 0xE3, 0xE3, 0x87, 0x1F, 0x1C, 0x38, 0xF8, 0xE1, 0xEF, 0xE7, + 0x0F, 0x7F, 0x78, 0x7B, 0xBB, 0xC3, 0xFD, 0xFE, 0x0F, 0xEF, 0xF0, 0x7E, + 0x3F, 0x03, 0xF1, 0xF8, 0x1F, 0x8F, 0xC0, 0xFC, 0x3E, 0x07, 0xC1, 0xF0, + 0x3E, 0x0F, 0x81, 0xF0, 0x7C, 0x00, 0x7E, 0x0F, 0xDF, 0xE3, 0xFF, 0xFC, + 0x7F, 0xBF, 0x07, 0xE1, 0xE0, 0xF8, 0x3E, 0x3E, 0x03, 0xEF, 0x80, 0x3D, + 0xE0, 0x03, 0xF8, 0x00, 0x3E, 0x00, 0x03, 0xC0, 0x00, 0xF8, 0x00, 0x3F, + 0x80, 0x0F, 0x78, 0x03, 0xC7, 0x80, 0xF8, 0x78, 0x3E, 0x0F, 0x8F, 0xE3, + 0xFF, 0xFC, 0x7F, 0xFF, 0x8F, 0xF7, 0xE0, 0xFC, 0x7E, 0x07, 0xEF, 0xF0, + 0xFF, 0xFF, 0x0F, 0xF7, 0xE0, 0x7E, 0x1E, 0x07, 0x81, 0xF0, 0xF8, 0x0F, + 0x0F, 0x00, 0x79, 0xE0, 0x07, 0xFE, 0x00, 0x3F, 0xC0, 0x01, 0xF8, 0x00, + 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, + 0x00, 0xF0, 0x00, 0xFF, 0xE0, 0x0F, 0xFF, 0x00, 0xFF, 0xF0, 0x07, 0xFE, + 0x00, 0xFF, 0xFC, 0xFF, 0xFC, 0xFF, 0xFC, 0xFF, 0xFC, 0xF0, 0x3C, 0xF0, + 0x78, 0xF0, 0xF0, 0x70, 0xE0, 0x01, 0xE0, 0x03, 0xC0, 0x03, 0x80, 0x07, + 0x00, 0x0F, 0x00, 0x1E, 0x0E, 0x1C, 0x0F, 0x38, 0x0F, 0x78, 0x0F, 0x7F, + 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xFE, 0xFF, 0xFF, 0xFE, 0xE0, 0x01, + 0xE0, 0x03, 0xC0, 0x03, 0xC0, 0x07, 0x80, 0x07, 0x00, 0x0F, 0x00, 0x0E, + 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x3C, 0x00, 0x78, 0x00, 0x78, 0x00, 0xF0, + 0x00, 0xF0, 0x01, 0xE0, 0x01, 0xE0, 0x03, 0xC0, 0x03, 0xC0, 0x07, 0x80, + 0x07, 0x80, 0x0F, 0x00, 0x0F, 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x3C, 0x00, + 0x38, 0x00, 0x70, 0x7F, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x0F, 0x0F, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x07, 0x00, 0x1F, 0x00, + 0x7F, 0x00, 0xFE, 0x03, 0xDE, 0x0F, 0x1E, 0x3E, 0x3E, 0xF8, 0x3F, 0xE0, + 0x3F, 0x80, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xF0, 0xC3, 0x87, 0x0E, 0x1C, 0x30, 0x01, 0xFC, 0x01, 0xFF, 0xC0, + 0x3F, 0xFC, 0x07, 0xFF, 0xC0, 0x00, 0x78, 0x0F, 0xFF, 0x07, 0xFF, 0xE1, + 0xFF, 0xFC, 0x7F, 0xFF, 0x9F, 0x80, 0xF3, 0xC0, 0x1E, 0x78, 0x0F, 0xCF, + 0xFF, 0xFE, 0xFF, 0xFF, 0xCF, 0xFF, 0xF8, 0x7F, 0x3E, 0x7C, 0x00, 0x1F, + 0x80, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x0F, + 0x3F, 0x01, 0xFF, 0xF8, 0x3F, 0xFF, 0x87, 0xFF, 0xF0, 0xFC, 0x1F, 0x1F, + 0x01, 0xF3, 0xC0, 0x1E, 0x78, 0x03, 0xCF, 0x00, 0x79, 0xE0, 0x0F, 0x3E, + 0x03, 0xE7, 0xE0, 0xFB, 0xFF, 0xFF, 0x7F, 0xFF, 0xCF, 0xFF, 0xF0, 0xF9, + 0xF8, 0x00, 0x03, 0xF3, 0x87, 0xFF, 0xCF, 0xFF, 0xEF, 0xFF, 0xF7, 0xE0, + 0xFF, 0xC0, 0x3F, 0xC0, 0x0F, 0xE0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3E, + 0x00, 0x4F, 0x80, 0xF7, 0xFF, 0xF9, 0xFF, 0xF8, 0x7F, 0xF8, 0x0F, 0xF0, + 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x03, + 0xC0, 0x00, 0x3C, 0x03, 0xF3, 0xC0, 0xFF, 0xBC, 0x1F, 0xFF, 0xC3, 0xFF, + 0xFC, 0x7E, 0x0F, 0xC7, 0x80, 0x7C, 0xF0, 0x03, 0xCF, 0x00, 0x3C, 0xF0, + 0x03, 0xCF, 0x00, 0x3C, 0xF8, 0x07, 0xC7, 0xE0, 0xFC, 0x7F, 0xFF, 0xF3, + 0xFF, 0xFF, 0x0F, 0xFF, 0xF0, 0x3F, 0x3E, 0x03, 0xF0, 0x03, 0xFF, 0x01, + 0xFF, 0xE0, 0xFF, 0xFC, 0x7E, 0x0F, 0x9E, 0x01, 0xEF, 0x00, 0x3F, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xE0, 0x00, 0x7F, 0xFF, + 0xCF, 0xFF, 0xF1, 0xFF, 0xF8, 0x0F, 0xF0, 0x03, 0xFC, 0x07, 0xFF, 0x0F, + 0xFF, 0x1F, 0xFF, 0x1E, 0x00, 0x1E, 0x00, 0xFF, 0xF8, 0xFF, 0xFC, 0xFF, + 0xFC, 0xFF, 0xF8, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, + 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0xFF, 0xF8, 0xFF, 0xF8, 0xFF, + 0xF8, 0xFF, 0xF8, 0x07, 0xE7, 0xC3, 0xFF, 0xFC, 0xFF, 0xFF, 0xBF, 0xFF, + 0xF7, 0xC1, 0xF9, 0xF0, 0x1F, 0x3C, 0x01, 0xE7, 0x80, 0x3C, 0xF0, 0x07, + 0x9E, 0x00, 0xF3, 0xE0, 0x3E, 0x3E, 0x0F, 0xC7, 0xFF, 0xF8, 0x7F, 0xFF, + 0x07, 0xFD, 0xE0, 0x3F, 0x3C, 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x3E, + 0x03, 0xFF, 0x80, 0x7F, 0xF0, 0x0F, 0xFC, 0x00, 0xFE, 0x00, 0x3E, 0x00, + 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x01, 0xE0, 0x00, 0x0F, + 0x00, 0x00, 0x78, 0xF8, 0x03, 0xDF, 0xE0, 0x1F, 0xFF, 0x80, 0xFF, 0xFE, + 0x07, 0xE1, 0xF0, 0x3E, 0x07, 0x81, 0xE0, 0x3C, 0x0F, 0x01, 0xE0, 0x78, + 0x0F, 0x03, 0xC0, 0x78, 0x1E, 0x03, 0xC0, 0xF0, 0x1E, 0x1F, 0xC1, 0xFD, + 0xFE, 0x0F, 0xFF, 0xF0, 0x7F, 0xBF, 0x01, 0xF8, 0x03, 0xC0, 0x03, 0xC0, + 0x03, 0xC0, 0x03, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xC0, 0x3F, 0xC0, + 0x3F, 0xC0, 0x3F, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, + 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0xFF, 0xFE, 0xFF, 0xFF, + 0xFF, 0xFF, 0x7F, 0xFE, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x00, 0x00, + 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0x00, 0xF0, 0x0F, 0x00, 0xF0, + 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, + 0x0F, 0x00, 0xF0, 0x0F, 0x01, 0xFF, 0xFE, 0xFF, 0xEF, 0xFC, 0x7F, 0x00, + 0x7C, 0x00, 0x3F, 0x00, 0x0F, 0xC0, 0x03, 0xF0, 0x00, 0x3C, 0x00, 0x0F, + 0x00, 0x03, 0xC7, 0xF0, 0xF3, 0xFC, 0x3C, 0xFF, 0x0F, 0x3F, 0x83, 0xDF, + 0x00, 0xFF, 0x80, 0x3F, 0xC0, 0x0F, 0xE0, 0x03, 0xFC, 0x00, 0xF7, 0x80, + 0x3C, 0xF0, 0x0F, 0x1F, 0x0F, 0xC3, 0xFB, 0xF1, 0xFF, 0xFC, 0x7F, 0xDF, + 0x0F, 0xE0, 0x3F, 0xC0, 0x3F, 0xC0, 0x3F, 0xC0, 0x3F, 0xC0, 0x03, 0xC0, + 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, + 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, + 0x03, 0xC0, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFE, 0x3D, 0xE3, + 0xC1, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0x1F, 0xFF, 0xFE, 0x3E, 0x3C, 0x78, + 0xF0, 0xF1, 0xE3, 0xC3, 0xC7, 0x8F, 0x0F, 0x1E, 0x3C, 0x3C, 0x78, 0xF0, + 0xF1, 0xE3, 0xC3, 0xC7, 0x8F, 0x0F, 0x1E, 0xFE, 0x3E, 0x7F, 0xF8, 0xF9, + 0xFF, 0xE3, 0xE7, 0xDF, 0x0F, 0x1E, 0x1E, 0x7C, 0x03, 0xEF, 0xF0, 0x3F, + 0xFF, 0x83, 0xFF, 0xFC, 0x1F, 0x87, 0xC1, 0xE0, 0x3C, 0x1E, 0x03, 0xC1, + 0xE0, 0x3C, 0x1E, 0x03, 0xC1, 0xE0, 0x3C, 0x1E, 0x03, 0xC1, 0xE0, 0x3C, + 0x7F, 0x0F, 0xFF, 0xF0, 0xFF, 0xFF, 0x0F, 0xF7, 0xE0, 0x7E, 0x03, 0xF8, + 0x01, 0xFF, 0xC0, 0x7F, 0xFC, 0x1F, 0xFF, 0xC7, 0xE0, 0xFD, 0xF0, 0x07, + 0xFC, 0x00, 0x7F, 0x80, 0x0F, 0xF0, 0x01, 0xFE, 0x00, 0x3F, 0xE0, 0x0F, + 0xBF, 0x07, 0xE3, 0xFF, 0xF8, 0x3F, 0xFE, 0x03, 0xFF, 0x80, 0x1F, 0xC0, + 0x3E, 0x7E, 0x03, 0xF7, 0xFC, 0x1F, 0xFF, 0xF0, 0xFF, 0xFF, 0xC1, 0xF8, + 0x3F, 0x0F, 0x80, 0x7C, 0x78, 0x01, 0xE3, 0xC0, 0x0F, 0x1E, 0x00, 0x78, + 0xF0, 0x03, 0xC7, 0xC0, 0x3E, 0x3F, 0x07, 0xE1, 0xFF, 0xFE, 0x0F, 0xFF, + 0xE0, 0x7B, 0xFE, 0x03, 0xCF, 0xC0, 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x07, + 0x80, 0x00, 0xFF, 0x80, 0x0F, 0xFC, 0x00, 0x7F, 0xE0, 0x01, 0xFE, 0x00, + 0x00, 0x03, 0xF3, 0xE0, 0x7F, 0xDF, 0x87, 0xFF, 0xFC, 0x7F, 0xFF, 0xE7, + 0xE0, 0xFC, 0x7C, 0x03, 0xE3, 0xC0, 0x0F, 0x1E, 0x00, 0x78, 0xF0, 0x03, + 0xC7, 0x80, 0x1E, 0x3E, 0x01, 0xF0, 0xFC, 0x1F, 0x83, 0xFF, 0xFC, 0x1F, + 0xFF, 0xE0, 0x3F, 0xEF, 0x00, 0x7E, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, + 0x00, 0x00, 0xF0, 0x00, 0x3F, 0xE0, 0x01, 0xFF, 0x80, 0x0F, 0xFC, 0x00, + 0x3F, 0xC0, 0x7E, 0x1E, 0x7F, 0x3F, 0xFF, 0xBF, 0xFF, 0xFF, 0xF1, 0xFE, + 0x00, 0xFC, 0x00, 0x7C, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x07, + 0x80, 0x03, 0xC0, 0x0F, 0xFF, 0x87, 0xFF, 0xC3, 0xFF, 0xE1, 0xFF, 0xE0, + 0x07, 0xE6, 0x1F, 0xFE, 0x7F, 0xFE, 0x7F, 0xFE, 0x78, 0x1E, 0x78, 0x0E, + 0x7F, 0xE0, 0x3F, 0xFC, 0x03, 0xFE, 0x60, 0x1F, 0xE0, 0x0F, 0xF8, 0x1F, + 0xFF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFC, 0x07, 0xE0, 0x0C, 0x00, 0x0F, 0x00, + 0x07, 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x07, 0xFF, 0xF3, 0xFF, 0xF9, 0xFF, + 0xFC, 0xFF, 0xFC, 0x0F, 0x00, 0x07, 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x00, + 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1E, 0x07, 0x8F, 0xFF, 0xC3, 0xFF, + 0xC1, 0xFF, 0xC0, 0x3F, 0x80, 0xFC, 0x1F, 0xBF, 0x0F, 0xEF, 0xC3, 0xFB, + 0xF0, 0xFE, 0x3C, 0x07, 0x8F, 0x01, 0xE3, 0xC0, 0x78, 0xF0, 0x1E, 0x3C, + 0x07, 0x8F, 0x01, 0xE3, 0xC0, 0x78, 0xF8, 0x7E, 0x3F, 0xFF, 0xC7, 0xFF, + 0xF0, 0xFF, 0x7C, 0x0F, 0x9E, 0x7F, 0x07, 0xF7, 0xFC, 0x7F, 0xFF, 0xE3, + 0xFE, 0xFE, 0x0F, 0xE1, 0xE0, 0x3C, 0x0F, 0x01, 0xE0, 0x3C, 0x1E, 0x01, + 0xE0, 0xF0, 0x07, 0x8F, 0x00, 0x3E, 0x78, 0x00, 0xF7, 0x80, 0x07, 0xFC, + 0x00, 0x1F, 0xC0, 0x00, 0xFE, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x7E, + 0x03, 0xF7, 0xF8, 0x3F, 0xFF, 0xC1, 0xFE, 0xFC, 0x07, 0xF3, 0xC7, 0x0F, + 0x1E, 0x7C, 0xF0, 0x73, 0xE7, 0x83, 0x9F, 0x7C, 0x1F, 0xFF, 0xC0, 0xFF, + 0xFE, 0x03, 0xF7, 0xF0, 0x1F, 0xBF, 0x80, 0xFC, 0xF8, 0x07, 0xC7, 0xC0, + 0x1E, 0x3E, 0x00, 0xE0, 0xE0, 0x7E, 0x0F, 0xDF, 0xE3, 0xFF, 0xFC, 0x7F, + 0xBF, 0x07, 0xE1, 0xF1, 0xF0, 0x1F, 0xFC, 0x01, 0xFF, 0x00, 0x1F, 0xC0, + 0x07, 0xF8, 0x01, 0xFF, 0xC0, 0x7E, 0xFC, 0x1F, 0x8F, 0xC7, 0xE0, 0xFD, + 0xFE, 0x3F, 0xFF, 0xC7, 0xFF, 0xF0, 0x7F, 0x7E, 0x0F, 0xDF, 0xE3, 0xFF, + 0xFC, 0x7F, 0xBF, 0x07, 0xE3, 0xC0, 0x78, 0x3C, 0x0E, 0x07, 0x83, 0xC0, + 0x78, 0x70, 0x0F, 0x1E, 0x00, 0xE3, 0x80, 0x1E, 0xF0, 0x01, 0xDC, 0x00, + 0x3F, 0x80, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x07, 0x00, 0x01, 0xE0, 0x00, + 0x38, 0x00, 0x0F, 0x00, 0x3F, 0xF0, 0x0F, 0xFF, 0x01, 0xFF, 0xE0, 0x1F, + 0xF8, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF9, 0xC7, + 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x78, 0x03, 0xC0, 0x1E, 0x07, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x81, 0xF0, 0xFC, 0x7E, 0x1F, + 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0xF8, 0xFC, 0x3E, 0x0F, + 0x83, 0xF0, 0x3E, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xF0, 0x7E, + 0x0F, 0xC3, 0xF0, 0x38, 0x6F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x70, 0x3E, 0x0F, 0xC1, 0xF8, 0x3E, + 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x7C, 0x0F, 0xC1, 0xF0, + 0x7C, 0x3F, 0x1F, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x83, 0xE1, 0xF8, + 0xFC, 0x3F, 0x07, 0x00, 0x1E, 0x00, 0x1F, 0xC0, 0x1F, 0xF0, 0xDF, 0xFC, + 0xFF, 0x3F, 0xFB, 0x0F, 0xF8, 0x03, 0xF8, 0x00, 0x78}; + +const GFXglyph FreeMonoBold18pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 21, 0, 1}, // 0x20 ' ' + {0, 5, 22, 21, 8, -21}, // 0x21 '!' + {14, 11, 10, 21, 5, -20}, // 0x22 '"' + {28, 16, 25, 21, 3, -22}, // 0x23 '#' + {78, 14, 28, 21, 4, -23}, // 0x24 '$' + {127, 15, 21, 21, 3, -20}, // 0x25 '%' + {167, 15, 20, 21, 3, -19}, // 0x26 '&' + {205, 4, 10, 21, 8, -20}, // 0x27 ''' + {210, 8, 27, 21, 9, -21}, // 0x28 '(' + {237, 8, 27, 21, 4, -21}, // 0x29 ')' + {264, 16, 15, 21, 3, -21}, // 0x2A '*' + {294, 16, 19, 21, 3, -18}, // 0x2B '+' + {332, 7, 10, 21, 5, -3}, // 0x2C ',' + {341, 19, 4, 21, 1, -11}, // 0x2D '-' + {351, 5, 5, 21, 8, -4}, // 0x2E '.' + {355, 15, 28, 21, 3, -23}, // 0x2F '/' + {408, 16, 23, 21, 3, -22}, // 0x30 '0' + {454, 15, 22, 21, 3, -21}, // 0x31 '1' + {496, 15, 23, 21, 3, -22}, // 0x32 '2' + {540, 16, 23, 21, 3, -22}, // 0x33 '3' + {586, 15, 21, 21, 3, -20}, // 0x34 '4' + {626, 17, 22, 21, 2, -21}, // 0x35 '5' + {673, 15, 23, 21, 4, -22}, // 0x36 '6' + {717, 15, 22, 21, 3, -21}, // 0x37 '7' + {759, 15, 23, 21, 3, -22}, // 0x38 '8' + {803, 15, 23, 21, 4, -22}, // 0x39 '9' + {847, 5, 16, 21, 8, -15}, // 0x3A ':' + {857, 7, 22, 21, 5, -15}, // 0x3B ';' + {877, 18, 16, 21, 1, -17}, // 0x3C '<' + {913, 19, 10, 21, 1, -14}, // 0x3D '=' + {937, 18, 16, 21, 2, -17}, // 0x3E '>' + {973, 15, 21, 21, 4, -20}, // 0x3F '?' + {1013, 15, 27, 21, 3, -21}, // 0x40 '@' + {1064, 22, 21, 21, -1, -20}, // 0x41 'A' + {1122, 20, 21, 21, 1, -20}, // 0x42 'B' + {1175, 19, 21, 21, 1, -20}, // 0x43 'C' + {1225, 18, 21, 21, 2, -20}, // 0x44 'D' + {1273, 19, 21, 21, 1, -20}, // 0x45 'E' + {1323, 19, 21, 21, 1, -20}, // 0x46 'F' + {1373, 20, 21, 21, 1, -20}, // 0x47 'G' + {1426, 21, 21, 21, 0, -20}, // 0x48 'H' + {1482, 14, 21, 21, 4, -20}, // 0x49 'I' + {1519, 19, 21, 21, 2, -20}, // 0x4A 'J' + {1569, 20, 21, 21, 1, -20}, // 0x4B 'K' + {1622, 18, 21, 21, 2, -20}, // 0x4C 'L' + {1670, 23, 21, 21, -1, -20}, // 0x4D 'M' + {1731, 20, 21, 21, 1, -20}, // 0x4E 'N' + {1784, 20, 21, 21, 1, -20}, // 0x4F 'O' + {1837, 18, 21, 21, 1, -20}, // 0x50 'P' + {1885, 20, 26, 21, 1, -20}, // 0x51 'Q' + {1950, 21, 21, 21, 0, -20}, // 0x52 'R' + {2006, 17, 21, 21, 2, -20}, // 0x53 'S' + {2051, 19, 21, 21, 1, -20}, // 0x54 'T' + {2101, 21, 21, 21, 0, -20}, // 0x55 'U' + {2157, 23, 21, 21, -1, -20}, // 0x56 'V' + {2218, 21, 21, 21, 0, -20}, // 0x57 'W' + {2274, 19, 21, 21, 1, -20}, // 0x58 'X' + {2324, 20, 21, 21, 1, -20}, // 0x59 'Y' + {2377, 16, 21, 21, 3, -20}, // 0x5A 'Z' + {2419, 8, 27, 21, 9, -21}, // 0x5B '[' + {2446, 15, 28, 21, 3, -23}, // 0x5C '\' + {2499, 8, 27, 21, 4, -21}, // 0x5D ']' + {2526, 15, 11, 21, 3, -21}, // 0x5E '^' + {2547, 21, 4, 21, 0, 4}, // 0x5F '_' + {2558, 6, 6, 21, 6, -22}, // 0x60 '`' + {2563, 19, 16, 21, 1, -15}, // 0x61 'a' + {2601, 19, 22, 21, 1, -21}, // 0x62 'b' + {2654, 17, 16, 21, 2, -15}, // 0x63 'c' + {2688, 20, 22, 21, 1, -21}, // 0x64 'd' + {2743, 18, 16, 21, 1, -15}, // 0x65 'e' + {2779, 16, 22, 21, 4, -21}, // 0x66 'f' + {2823, 19, 23, 21, 1, -15}, // 0x67 'g' + {2878, 21, 22, 21, 0, -21}, // 0x68 'h' + {2936, 16, 22, 21, 3, -21}, // 0x69 'i' + {2980, 12, 29, 21, 5, -21}, // 0x6A 'j' + {3024, 18, 22, 21, 2, -21}, // 0x6B 'k' + {3074, 16, 22, 21, 3, -21}, // 0x6C 'l' + {3118, 22, 16, 21, -1, -15}, // 0x6D 'm' + {3162, 20, 16, 21, 0, -15}, // 0x6E 'n' + {3202, 19, 16, 21, 1, -15}, // 0x6F 'o' + {3240, 21, 23, 21, 0, -15}, // 0x70 'p' + {3301, 21, 23, 22, 1, -15}, // 0x71 'q' + {3362, 17, 16, 21, 3, -15}, // 0x72 'r' + {3396, 16, 16, 21, 3, -15}, // 0x73 's' + {3428, 17, 21, 21, 1, -20}, // 0x74 't' + {3473, 18, 16, 21, 1, -15}, // 0x75 'u' + {3509, 21, 16, 21, 0, -15}, // 0x76 'v' + {3551, 21, 16, 21, 0, -15}, // 0x77 'w' + {3593, 19, 16, 21, 1, -15}, // 0x78 'x' + {3631, 19, 23, 21, 1, -15}, // 0x79 'y' + {3686, 14, 16, 21, 3, -15}, // 0x7A 'z' + {3714, 10, 27, 21, 6, -21}, // 0x7B '{' + {3748, 4, 27, 21, 9, -21}, // 0x7C '|' + {3762, 10, 27, 21, 6, -21}, // 0x7D '}' + {3796, 17, 8, 21, 2, -13}}; // 0x7E '~' + +const GFXfont FreeMonoBold18pt7b PROGMEM = { + (uint8_t *)FreeMonoBold18pt7bBitmaps, (GFXglyph *)FreeMonoBold18pt7bGlyphs, + 0x20, 0x7E, 35}; + +// Approx. 4485 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMonoBold24pt7b.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMonoBold24pt7b.h new file mode 100644 index 0000000..eb79d6e --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMonoBold24pt7b.h @@ -0,0 +1,674 @@ +#pragma once +#include + +const uint8_t FreeMonoBold24pt7bBitmaps[] PROGMEM = { + 0x38, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xF3, 0xE7, 0xCF, + 0x9F, 0x3E, 0x7C, 0xF9, 0xF3, 0xE3, 0x82, 0x00, 0x00, 0x00, 0x71, 0xF7, + 0xFF, 0xEF, 0x9E, 0x00, 0xFC, 0x7E, 0xF8, 0x7D, 0xF0, 0xFB, 0xE1, 0xF7, + 0xC3, 0xEF, 0x87, 0xDF, 0x0F, 0xBE, 0x1F, 0x38, 0x1C, 0x70, 0x38, 0xE0, + 0x71, 0xC0, 0xE3, 0x81, 0xC7, 0x03, 0x80, 0x01, 0xC1, 0xC0, 0x0F, 0x8F, + 0x80, 0x3E, 0x3E, 0x00, 0xF8, 0xF8, 0x03, 0xE3, 0xE0, 0x0F, 0x8F, 0x80, + 0x7E, 0x3E, 0x01, 0xF0, 0xF8, 0x07, 0xC7, 0xC0, 0x1F, 0x1F, 0x03, 0xFF, + 0xFF, 0x9F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFD, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, + 0x81, 0xF1, 0xF0, 0x07, 0xC7, 0xC0, 0x1F, 0x1F, 0x00, 0x7C, 0x7C, 0x1F, + 0xFF, 0xFC, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0x9F, 0xFF, + 0xFC, 0x0F, 0x8F, 0x80, 0x3E, 0x3E, 0x00, 0xF8, 0xF8, 0x03, 0xE3, 0xE0, + 0x0F, 0x8F, 0x80, 0x3E, 0x3E, 0x00, 0xF8, 0xF8, 0x03, 0xE3, 0xE0, 0x0F, + 0x8F, 0x80, 0x3C, 0x3C, 0x00, 0x00, 0xE0, 0x00, 0x3E, 0x00, 0x07, 0xC0, + 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x1F, 0xFF, 0x07, 0xFF, 0xF1, 0xFF, 0xFE, + 0x7F, 0xFF, 0xDF, 0xC1, 0xFB, 0xF0, 0x1F, 0x7C, 0x01, 0xEF, 0x80, 0x39, + 0xF8, 0x00, 0x3F, 0xF8, 0x03, 0xFF, 0xE0, 0x3F, 0xFF, 0x03, 0xFF, 0xF0, + 0x0F, 0xFF, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0xC0, 0x07, 0xF8, 0x00, 0xFF, + 0x80, 0x1F, 0xF8, 0x07, 0xFF, 0x81, 0xFB, 0xFF, 0xFF, 0x7F, 0xFF, 0xCF, + 0xFF, 0xF1, 0xDF, 0xFC, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, + 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x01, 0xC0, 0x00, + 0x0F, 0x80, 0x00, 0xFF, 0x00, 0x1F, 0xFC, 0x00, 0xF0, 0xE0, 0x0F, 0x07, + 0x80, 0x70, 0x1C, 0x03, 0x80, 0xE0, 0x1C, 0x07, 0x00, 0xF0, 0x78, 0x03, + 0xC3, 0x80, 0x1F, 0xFC, 0x00, 0x7F, 0xC1, 0xF0, 0xF8, 0x7F, 0x00, 0x3F, + 0xF0, 0x0F, 0xFC, 0x03, 0xFF, 0x00, 0xFF, 0xC0, 0x07, 0xE0, 0xF8, 0x38, + 0x1F, 0xE0, 0x01, 0xFF, 0x80, 0x0F, 0x1E, 0x00, 0xF0, 0x78, 0x07, 0x01, + 0xC0, 0x38, 0x0E, 0x01, 0xC0, 0x70, 0x0F, 0x07, 0x80, 0x38, 0x78, 0x01, + 0xFF, 0xC0, 0x07, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x1F, 0xFC, + 0x01, 0xFF, 0xE0, 0x1F, 0xFF, 0x00, 0xFF, 0xF8, 0x0F, 0xC7, 0x00, 0x7C, + 0x10, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xF0, 0x00, + 0x1F, 0x80, 0x00, 0xFE, 0x00, 0x0F, 0xF8, 0x00, 0xFF, 0xC7, 0xCF, 0xFF, + 0x3F, 0x7E, 0xFF, 0xFF, 0xE7, 0xFF, 0xBE, 0x1F, 0xF9, 0xF0, 0x7F, 0x8F, + 0x83, 0xFC, 0x7C, 0x0F, 0xE3, 0xF0, 0x7F, 0xCF, 0xFF, 0xFF, 0x7F, 0xFF, + 0xF9, 0xFF, 0xFF, 0xC7, 0xFF, 0xFC, 0x0F, 0xE0, 0x00, 0xFD, 0xF7, 0xDF, + 0x7D, 0xF7, 0xDF, 0x38, 0xE3, 0x8E, 0x38, 0xE0, 0x01, 0x80, 0xF0, 0x7C, + 0x3F, 0x0F, 0xC7, 0xE1, 0xF8, 0xFC, 0x3E, 0x0F, 0x87, 0xC1, 0xF0, 0x7C, + 0x1F, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, + 0x81, 0xF0, 0x7C, 0x1F, 0x07, 0xC0, 0xF8, 0x3E, 0x0F, 0xC1, 0xF0, 0x7E, + 0x0F, 0x83, 0xF0, 0x7C, 0x1F, 0x03, 0xC0, 0x60, 0x3C, 0x0F, 0x83, 0xF0, + 0xFC, 0x1F, 0x83, 0xE0, 0xFC, 0x1F, 0x07, 0xC1, 0xF8, 0x3E, 0x0F, 0x83, + 0xE0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, + 0x1E, 0x0F, 0x83, 0xE0, 0xF8, 0x7C, 0x1F, 0x0F, 0xC3, 0xE1, 0xF8, 0x7C, + 0x3F, 0x0F, 0x83, 0xE0, 0xF0, 0x00, 0x00, 0x70, 0x00, 0x07, 0xC0, 0x00, + 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x10, 0x7C, 0x11, 0xF3, 0xE7, + 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0x87, 0xFF, 0xF0, 0x07, + 0xFC, 0x00, 0x3F, 0xE0, 0x03, 0xFF, 0x80, 0x3F, 0x7E, 0x01, 0xFB, 0xF0, + 0x1F, 0x8F, 0xC0, 0xF8, 0x3E, 0x03, 0x80, 0xE0, 0x00, 0x38, 0x00, 0x00, + 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, + 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, + 0x01, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xDF, 0xFF, 0xFF, 0x00, 0x3E, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, + 0x01, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, + 0x1F, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x70, 0x00, 0x1F, + 0x8F, 0x87, 0xC7, 0xC3, 0xE1, 0xE1, 0xF0, 0xF0, 0x78, 0x38, 0x3C, 0x1C, + 0x0E, 0x06, 0x00, 0x7F, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFE, 0x7D, 0xFF, 0xFF, 0xFF, 0xEF, 0x80, + 0x00, 0x00, 0x60, 0x00, 0x0F, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x01, + 0xF0, 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, + 0xF8, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, + 0x3E, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x0F, 0xC0, 0x00, 0xF8, 0x00, + 0x1F, 0x80, 0x01, 0xF0, 0x00, 0x3F, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, + 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x1F, 0x00, + 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x07, 0xC0, + 0x00, 0xFC, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x00, 0x00, 0x01, + 0xFC, 0x00, 0x3F, 0xF8, 0x03, 0xFF, 0xE0, 0x3F, 0xFF, 0x83, 0xFF, 0xFE, + 0x1F, 0x83, 0xF1, 0xF8, 0x0F, 0xCF, 0x80, 0x3E, 0x7C, 0x01, 0xF7, 0xC0, + 0x07, 0xFE, 0x00, 0x3F, 0xF0, 0x01, 0xFF, 0x80, 0x0F, 0xFC, 0x00, 0x7F, + 0xE0, 0x03, 0xFF, 0x00, 0x1F, 0xF8, 0x00, 0xFF, 0xC0, 0x07, 0xFE, 0x00, + 0x3F, 0xF0, 0x01, 0xFF, 0x80, 0x0F, 0xFC, 0x00, 0x7D, 0xF0, 0x07, 0xCF, + 0x80, 0x3E, 0x7E, 0x03, 0xF1, 0xF8, 0x3F, 0x0F, 0xFF, 0xF8, 0x3F, 0xFF, + 0x80, 0xFF, 0xF8, 0x03, 0xFF, 0x80, 0x07, 0xF0, 0x00, 0x01, 0xF8, 0x00, + 0x3F, 0x80, 0x0F, 0xF8, 0x01, 0xFF, 0x80, 0x7F, 0xF8, 0x0F, 0xEF, 0x80, + 0xFC, 0xF8, 0x07, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, + 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, + 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, + 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x3F, 0xFF, 0xE7, + 0xFF, 0xFF, 0x7F, 0xFF, 0xF7, 0xFF, 0xFF, 0x3F, 0xFF, 0xE0, 0x01, 0xFC, + 0x00, 0x3F, 0xF8, 0x07, 0xFF, 0xF0, 0x7F, 0xFF, 0xC7, 0xFF, 0xFF, 0x3F, + 0x03, 0xFB, 0xF0, 0x07, 0xFF, 0x00, 0x1F, 0xF8, 0x00, 0xFB, 0x80, 0x07, + 0xC0, 0x00, 0x3E, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x03, 0xF8, 0x00, + 0x3F, 0x80, 0x03, 0xF8, 0x00, 0x3F, 0x80, 0x03, 0xF8, 0x00, 0x3F, 0x00, + 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xE0, + 0x0E, 0xFE, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x03, 0xF8, 0x00, 0xFF, 0xF8, 0x0F, 0xFF, + 0xE0, 0xFF, 0xFF, 0x8F, 0xFF, 0xFE, 0x7E, 0x03, 0xF1, 0xC0, 0x0F, 0xC0, + 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xFC, 0x00, 0x0F, + 0xC0, 0x0F, 0xFC, 0x00, 0xFF, 0xC0, 0x07, 0xFC, 0x00, 0x3F, 0xF0, 0x00, + 0xFF, 0xC0, 0x00, 0x7F, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xF0, 0x00, 0x0F, + 0x80, 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x01, 0xFF, 0xC0, + 0x3F, 0xBF, 0xFF, 0xFD, 0xFF, 0xFF, 0xC7, 0xFF, 0xFC, 0x1F, 0xFF, 0xC0, + 0x1F, 0xF0, 0x00, 0x00, 0x3F, 0x80, 0x03, 0xF8, 0x00, 0x7F, 0x80, 0x07, + 0xF8, 0x00, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xEF, 0x80, 0x3E, 0xF8, 0x03, + 0xCF, 0x80, 0x7C, 0xF8, 0x0F, 0x8F, 0x80, 0xF0, 0xF8, 0x1F, 0x0F, 0x81, + 0xE0, 0xF8, 0x3E, 0x0F, 0x87, 0xC0, 0xF8, 0x78, 0x0F, 0x8F, 0xFF, 0xFE, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x0F, + 0x80, 0x07, 0xFE, 0x00, 0xFF, 0xF0, 0x0F, 0xFF, 0x00, 0xFF, 0xF0, 0x07, + 0xFE, 0x3F, 0xFF, 0xC1, 0xFF, 0xFF, 0x0F, 0xFF, 0xF8, 0x7F, 0xFF, 0xC3, + 0xFF, 0xFC, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, + 0x01, 0xF0, 0x00, 0x0F, 0xBF, 0x00, 0x7F, 0xFF, 0x03, 0xFF, 0xFC, 0x1F, + 0xFF, 0xF0, 0xFF, 0xFF, 0x83, 0xC0, 0xFE, 0x00, 0x01, 0xF0, 0x00, 0x0F, + 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, + 0x03, 0xE0, 0x00, 0x3F, 0xF0, 0x03, 0xF7, 0xE0, 0x3F, 0xBF, 0xFF, 0xF9, + 0xFF, 0xFF, 0xC7, 0xFF, 0xFC, 0x1F, 0xFF, 0x80, 0x1F, 0xF0, 0x00, 0x00, + 0x1F, 0xC0, 0x0F, 0xFF, 0x01, 0xFF, 0xF0, 0x7F, 0xFF, 0x0F, 0xFF, 0xE1, + 0xFF, 0x00, 0x1F, 0xC0, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x07, 0xE0, 0x00, + 0x7C, 0x00, 0x0F, 0x8F, 0xC0, 0xF9, 0xFF, 0x0F, 0xFF, 0xF8, 0xFF, 0xFF, + 0xCF, 0xFF, 0xFC, 0xFF, 0x0F, 0xEF, 0xE0, 0x3E, 0xFC, 0x03, 0xFF, 0x80, + 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xF7, 0xC0, 0x3F, 0x7E, + 0x03, 0xF3, 0xF0, 0x7E, 0x3F, 0xFF, 0xE1, 0xFF, 0xFC, 0x0F, 0xFF, 0x80, + 0x7F, 0xF0, 0x01, 0xFC, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x1F, 0xF0, 0x03, 0xE0, 0x00, + 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, + 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x1F, 0x00, + 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x07, 0xC0, + 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, + 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x06, 0x00, 0x01, 0xF8, 0x00, 0xFF, + 0xF0, 0x1F, 0xFF, 0x83, 0xFF, 0xFC, 0x7F, 0xFF, 0xE7, 0xE0, 0x7E, 0xFC, + 0x03, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xF7, + 0xC0, 0x3E, 0x7E, 0x07, 0xE3, 0xFF, 0xFC, 0x0F, 0xFF, 0x00, 0xFF, 0xF0, + 0x1F, 0xFF, 0x83, 0xFF, 0xFC, 0x7F, 0x0F, 0xE7, 0xC0, 0x3E, 0xF8, 0x01, + 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xFC, 0x03, 0xF7, 0xE0, + 0x7E, 0x7F, 0xFF, 0xE3, 0xFF, 0xFC, 0x1F, 0xFF, 0x80, 0xFF, 0xF0, 0x03, + 0xFC, 0x00, 0x03, 0xF8, 0x00, 0xFF, 0xE0, 0x1F, 0xFF, 0x83, 0xFF, 0xF8, + 0x7F, 0xFF, 0xC7, 0xE0, 0xFE, 0xFC, 0x03, 0xEF, 0x80, 0x3E, 0xF8, 0x01, + 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x3F, 0xFC, 0x07, 0xF7, 0xE0, + 0xFF, 0x7F, 0xFF, 0xF3, 0xFF, 0xFF, 0x1F, 0xFF, 0xF0, 0xFF, 0x9F, 0x03, + 0xF1, 0xF0, 0x00, 0x3F, 0x00, 0x03, 0xE0, 0x00, 0x7E, 0x00, 0x0F, 0xC0, + 0x01, 0xFC, 0x00, 0x3F, 0x80, 0x0F, 0xF0, 0x7F, 0xFE, 0x0F, 0xFF, 0xC0, + 0xFF, 0xF8, 0x0F, 0xFF, 0x00, 0x3F, 0x80, 0x00, 0x7D, 0xFF, 0xFF, 0xFF, + 0xEF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xFF, + 0xFF, 0xFF, 0xEF, 0x80, 0x0F, 0x87, 0xF1, 0xFC, 0x7F, 0x1F, 0xC3, 0xE0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, + 0x1F, 0x87, 0xE1, 0xF0, 0xFC, 0x3E, 0x0F, 0x03, 0xC1, 0xE0, 0x78, 0x1C, + 0x07, 0x01, 0x80, 0x00, 0x00, 0x04, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x7F, + 0x00, 0x01, 0xFE, 0x00, 0x07, 0xFC, 0x00, 0x1F, 0xF0, 0x00, 0x7F, 0xC0, + 0x01, 0xFF, 0x00, 0x07, 0xFE, 0x00, 0x1F, 0xF8, 0x00, 0x7F, 0xE0, 0x00, + 0xFF, 0xE0, 0x00, 0x1F, 0xF8, 0x00, 0x07, 0xFE, 0x00, 0x01, 0xFF, 0x80, + 0x00, 0x7F, 0xE0, 0x00, 0x1F, 0xF8, 0x00, 0x07, 0xFC, 0x00, 0x01, 0xFE, + 0x00, 0x00, 0x7F, 0x00, 0x00, 0x1E, 0x7F, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFE, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFE, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFE, + 0x00, 0x00, 0x01, 0xE0, 0x00, 0x03, 0xF0, 0x00, 0x07, 0xF8, 0x00, 0x07, + 0xFC, 0x00, 0x03, 0xFE, 0x00, 0x01, 0xFF, 0x00, 0x00, 0xFF, 0x80, 0x00, + 0x7F, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x3F, 0xF0, 0x00, 0x3F, 0xF0, 0x01, + 0xFF, 0x00, 0x0F, 0xF8, 0x00, 0x7F, 0xC0, 0x03, 0xFE, 0x00, 0x1F, 0xF0, + 0x00, 0xFF, 0x80, 0x03, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x0F, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0xF8, 0x01, 0xFF, 0xF0, 0xFF, 0xFF, 0x8F, + 0xFF, 0xFC, 0xFF, 0xFF, 0xEF, 0xC0, 0x7E, 0xF8, 0x03, 0xFF, 0x80, 0x1F, + 0x70, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x3F, + 0xE0, 0x0F, 0xFC, 0x01, 0xFF, 0x00, 0x0F, 0xC0, 0x00, 0xF0, 0x00, 0x0F, + 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1F, 0x00, 0x03, 0xF8, 0x00, 0x3F, 0x80, 0x03, 0xF8, 0x00, + 0x3F, 0x80, 0x01, 0xF0, 0x00, 0x01, 0xF0, 0x00, 0xFF, 0x80, 0x3F, 0xF8, + 0x0F, 0xFF, 0x83, 0xE0, 0xF8, 0x78, 0x07, 0x1E, 0x00, 0xF3, 0x80, 0x0E, + 0x70, 0x01, 0xDE, 0x00, 0x3B, 0x80, 0x3F, 0x70, 0x1F, 0xEE, 0x07, 0xFD, + 0xC1, 0xFF, 0xB8, 0x7E, 0x77, 0x0F, 0x0E, 0xE3, 0xC1, 0xDC, 0x70, 0x3B, + 0x8E, 0x07, 0x71, 0xC0, 0xEE, 0x3C, 0x1D, 0xC3, 0xC3, 0xB8, 0x7F, 0xF7, + 0x07, 0xFF, 0xE0, 0x7F, 0xFC, 0x03, 0xFB, 0xC0, 0x00, 0x38, 0x00, 0x07, + 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x61, 0xF0, 0x3E, 0x1F, 0xFF, 0xC3, + 0xFF, 0xF0, 0x1F, 0xFC, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x80, 0x00, 0x7F, + 0xFE, 0x00, 0x03, 0xFF, 0xF0, 0x00, 0x1F, 0xFF, 0xC0, 0x00, 0x7F, 0xFE, + 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x01, 0xF7, 0xC0, 0x00, 0x0F, 0xBE, 0x00, + 0x00, 0x7D, 0xF8, 0x00, 0x07, 0xC7, 0xC0, 0x00, 0x3E, 0x3E, 0x00, 0x03, + 0xE0, 0xF8, 0x00, 0x1F, 0x07, 0xC0, 0x00, 0xF0, 0x3F, 0x00, 0x0F, 0x80, + 0xF8, 0x00, 0x7F, 0xFF, 0xC0, 0x07, 0xFF, 0xFF, 0x00, 0x3F, 0xFF, 0xF8, + 0x03, 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xFF, 0x00, 0xF8, 0x00, 0xF8, 0x0F, + 0x80, 0x03, 0xE1, 0xFF, 0x80, 0xFF, 0xDF, 0xFE, 0x0F, 0xFF, 0xFF, 0xF0, + 0x7F, 0xFF, 0xFF, 0x83, 0xFF, 0xDF, 0xF8, 0x0F, 0xFC, 0x7F, 0xFF, 0xC0, + 0x3F, 0xFF, 0xFC, 0x0F, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xF8, 0x7F, 0xFF, + 0xFE, 0x07, 0xC0, 0x1F, 0xC1, 0xF0, 0x01, 0xF0, 0x7C, 0x00, 0x7C, 0x1F, + 0x00, 0x1F, 0x07, 0xC0, 0x0F, 0xC1, 0xF0, 0x07, 0xE0, 0x7F, 0xFF, 0xF0, + 0x1F, 0xFF, 0xF8, 0x07, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, + 0xFC, 0x1F, 0x00, 0x3F, 0x87, 0xC0, 0x03, 0xF1, 0xF0, 0x00, 0x7C, 0x7C, + 0x00, 0x1F, 0x1F, 0x00, 0x07, 0xC7, 0xC0, 0x03, 0xF7, 0xFF, 0xFF, 0xFB, + 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, + 0x00, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0xE7, 0x01, 0xFF, 0xFF, 0xC1, 0xFF, + 0xFF, 0xE1, 0xFF, 0xFF, 0xF1, 0xFE, 0x07, 0xF8, 0xFC, 0x01, 0xFC, 0xFC, + 0x00, 0x7E, 0x7C, 0x00, 0x1F, 0x7E, 0x00, 0x0F, 0xBE, 0x00, 0x03, 0x9F, + 0x00, 0x00, 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, + 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x3E, 0x00, 0x00, + 0x1F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, 0xF0, 0x00, 0x39, 0xFC, 0x00, + 0x7C, 0x7F, 0x80, 0xFF, 0x1F, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0x81, 0xFF, + 0xFF, 0x00, 0x3F, 0xFF, 0x00, 0x07, 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0x7F, + 0xFF, 0xF0, 0x3F, 0xFF, 0xFC, 0x1F, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xC1, + 0xF0, 0x0F, 0xF0, 0xF8, 0x01, 0xF8, 0x7C, 0x00, 0x7E, 0x3E, 0x00, 0x1F, + 0x1F, 0x00, 0x0F, 0xCF, 0x80, 0x03, 0xE7, 0xC0, 0x01, 0xF3, 0xE0, 0x00, + 0xF9, 0xF0, 0x00, 0x7C, 0xF8, 0x00, 0x3E, 0x7C, 0x00, 0x1F, 0x3E, 0x00, + 0x0F, 0x9F, 0x00, 0x07, 0xCF, 0x80, 0x07, 0xE7, 0xC0, 0x03, 0xE3, 0xE0, + 0x03, 0xF1, 0xF0, 0x07, 0xF1, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xF8, 0xFF, + 0xFF, 0xF8, 0x7F, 0xFF, 0xF0, 0x1F, 0xFF, 0xE0, 0x00, 0x7F, 0xFF, 0xFF, + 0x7F, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, + 0xF0, 0xF8, 0x00, 0xF8, 0x7C, 0x00, 0x7C, 0x3E, 0x0E, 0x3E, 0x1F, 0x0F, + 0x9F, 0x0F, 0x87, 0xC7, 0x07, 0xC3, 0xE0, 0x03, 0xFF, 0xF0, 0x01, 0xFF, + 0xF8, 0x00, 0xFF, 0xFC, 0x00, 0x7F, 0xFE, 0x00, 0x3F, 0xFF, 0x00, 0x1F, + 0x0F, 0x80, 0x0F, 0x87, 0xC3, 0x87, 0xC1, 0xC3, 0xE3, 0xE0, 0x01, 0xF1, + 0xF0, 0x00, 0xF8, 0xF8, 0x00, 0x7D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, + 0xFF, 0xF8, 0xF8, 0x00, 0x7C, 0x7C, 0x00, 0x3E, 0x3E, 0x00, 0x1F, 0x1F, + 0x07, 0x0F, 0x8F, 0x87, 0xC3, 0x87, 0xC3, 0xE0, 0x03, 0xFF, 0xF0, 0x01, + 0xFF, 0xF8, 0x00, 0xFF, 0xFC, 0x00, 0x7F, 0xFE, 0x00, 0x3F, 0xFF, 0x00, + 0x1F, 0x0F, 0x80, 0x0F, 0x87, 0xC0, 0x07, 0xC3, 0xE0, 0x03, 0xE0, 0xE0, + 0x01, 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xFF, 0xF0, 0x01, 0xFF, 0xFC, + 0x00, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, + 0x7F, 0x8E, 0x00, 0xFF, 0xF7, 0x81, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0xE1, + 0xFF, 0xFF, 0xF1, 0xFE, 0x03, 0xF8, 0xFC, 0x00, 0xFC, 0xFC, 0x00, 0x3E, + 0x7C, 0x00, 0x1F, 0x7E, 0x00, 0x07, 0x3E, 0x00, 0x00, 0x1F, 0x00, 0x00, + 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, 0xF0, 0x0F, + 0xFE, 0xF8, 0x0F, 0xFF, 0xFC, 0x07, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, 0x00, + 0xFF, 0xFF, 0xC0, 0x01, 0xF3, 0xF0, 0x00, 0xF9, 0xFC, 0x00, 0x7C, 0x7F, + 0x80, 0xFE, 0x3F, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0x80, + 0x7F, 0xFF, 0x00, 0x07, 0xFC, 0x00, 0x3F, 0xE1, 0xFF, 0x1F, 0xFC, 0xFF, + 0xE7, 0xFF, 0x3F, 0xF9, 0xFF, 0xCF, 0xFE, 0x3F, 0xE1, 0xFF, 0x07, 0xC0, + 0x0F, 0x81, 0xF0, 0x03, 0xE0, 0x7C, 0x00, 0xF8, 0x1F, 0x00, 0x3E, 0x07, + 0xC0, 0x0F, 0x81, 0xF0, 0x03, 0xE0, 0x7F, 0xFF, 0xF8, 0x1F, 0xFF, 0xFE, + 0x07, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, 0xF8, 0x1F, 0x00, + 0x3E, 0x07, 0xC0, 0x0F, 0x81, 0xF0, 0x03, 0xE0, 0x7C, 0x00, 0xF8, 0x1F, + 0x00, 0x3E, 0x07, 0xC0, 0x0F, 0x87, 0xFE, 0x1F, 0xFB, 0xFF, 0xCF, 0xFF, + 0xFF, 0xF3, 0xFF, 0xFF, 0xFC, 0xFF, 0xF7, 0xFE, 0x1F, 0xF8, 0x7F, 0xFF, + 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFC, 0x03, 0xE0, + 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, + 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, + 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x1F, 0x00, + 0x03, 0xE0, 0x1F, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, + 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xC0, 0x7F, 0xFF, + 0xE0, 0x3F, 0xFF, 0xF0, 0x0F, 0xFF, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x07, + 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x00, + 0x7C, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x0F, 0x80, 0x00, + 0x07, 0xC0, 0xE0, 0x03, 0xE0, 0xF8, 0x01, 0xF0, 0x7C, 0x00, 0xF8, 0x3E, + 0x00, 0x7C, 0x1F, 0x00, 0x3E, 0x0F, 0x80, 0x1F, 0x07, 0xC0, 0x1F, 0x83, + 0xF8, 0x3F, 0x81, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, 0xC0, + 0x07, 0xFF, 0xC0, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0xE0, 0xFF, 0x9F, 0xFE, + 0x3F, 0xFB, 0xFF, 0xC7, 0xFF, 0x7F, 0xF8, 0xFF, 0xE7, 0xFE, 0x0F, 0xF8, + 0x3E, 0x01, 0xF8, 0x07, 0xC0, 0xFE, 0x00, 0xF8, 0x3F, 0x80, 0x1F, 0x0F, + 0xE0, 0x03, 0xE3, 0xF8, 0x00, 0x7D, 0xFC, 0x00, 0x0F, 0xFF, 0x00, 0x01, + 0xFF, 0xF0, 0x00, 0x3F, 0xFF, 0x00, 0x07, 0xFF, 0xF0, 0x00, 0xFE, 0x7F, + 0x00, 0x1F, 0x87, 0xF0, 0x03, 0xE0, 0x7E, 0x00, 0x7C, 0x07, 0xE0, 0x0F, + 0x80, 0x7E, 0x01, 0xF0, 0x0F, 0xC0, 0x3E, 0x00, 0xF8, 0x1F, 0xF8, 0x1F, + 0xF7, 0xFF, 0x81, 0xFF, 0xFF, 0xF0, 0x3F, 0xFF, 0xFE, 0x07, 0xFD, 0xFF, + 0x80, 0x7F, 0x00, 0x7F, 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0x3F, 0xFF, 0x80, + 0x1F, 0xFF, 0xC0, 0x07, 0xFF, 0xC0, 0x00, 0x3E, 0x00, 0x00, 0x1F, 0x00, + 0x00, 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, 0xF0, + 0x00, 0x00, 0xF8, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x0F, 0x80, 0x0E, 0x07, 0xC0, 0x0F, 0x83, 0xE0, 0x07, 0xC1, + 0xF0, 0x03, 0xE0, 0xF8, 0x01, 0xF0, 0x7C, 0x00, 0xF8, 0x3E, 0x00, 0x7D, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xDF, 0xFF, 0xFF, 0xE0, 0x3F, 0x80, 0x03, 0xF8, 0xFF, 0x80, 0x0F, 0xF9, + 0xFF, 0x00, 0x1F, 0xF3, 0xFF, 0x00, 0x7F, 0xE3, 0xFE, 0x00, 0xFF, 0x83, + 0xFE, 0x03, 0xFE, 0x07, 0xFC, 0x07, 0xFC, 0x0F, 0xFC, 0x1F, 0xF8, 0x1F, + 0xF8, 0x3F, 0xF0, 0x3F, 0xF0, 0x7F, 0xE0, 0x7D, 0xF1, 0xF7, 0xC0, 0xFB, + 0xE3, 0xEF, 0x81, 0xF7, 0xEF, 0xDF, 0x03, 0xE7, 0xDF, 0x3E, 0x07, 0xCF, + 0xFE, 0x7C, 0x0F, 0x8F, 0xF8, 0xF8, 0x1F, 0x1F, 0xF1, 0xF0, 0x3E, 0x1F, + 0xE3, 0xE0, 0x7C, 0x3F, 0x87, 0xC0, 0xF8, 0x3F, 0x0F, 0x81, 0xF0, 0x00, + 0x1F, 0x03, 0xE0, 0x00, 0x3E, 0x1F, 0xF8, 0x03, 0xFF, 0x7F, 0xF8, 0x0F, + 0xFF, 0xFF, 0xF0, 0x1F, 0xFF, 0xFF, 0xE0, 0x3F, 0xFD, 0xFF, 0x80, 0x3F, + 0xF0, 0x7F, 0x00, 0x7F, 0xEF, 0xF8, 0x0F, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, + 0xFC, 0x0F, 0xFF, 0x7F, 0xE0, 0x7F, 0xE1, 0xFF, 0x00, 0xF8, 0x1F, 0xF0, + 0x0F, 0x81, 0xFF, 0x80, 0xF8, 0x1F, 0xFC, 0x0F, 0x81, 0xFF, 0xC0, 0xF8, + 0x1F, 0x7E, 0x0F, 0x81, 0xF3, 0xF0, 0xF8, 0x1F, 0x3F, 0x0F, 0x81, 0xF1, + 0xF8, 0xF8, 0x1F, 0x0F, 0xCF, 0x81, 0xF0, 0xFC, 0xF8, 0x1F, 0x07, 0xEF, + 0x81, 0xF0, 0x3F, 0xF8, 0x1F, 0x03, 0xFF, 0x81, 0xF0, 0x1F, 0xF8, 0x1F, + 0x00, 0xFF, 0x81, 0xF0, 0x0F, 0xF8, 0x7F, 0xE0, 0x7F, 0x8F, 0xFF, 0x03, + 0xF8, 0xFF, 0xF0, 0x3F, 0x8F, 0xFF, 0x01, 0xF8, 0x7F, 0xE0, 0x0F, 0x80, + 0x00, 0x3F, 0x80, 0x00, 0x3F, 0xFC, 0x00, 0x0F, 0xFF, 0xE0, 0x03, 0xFF, + 0xFE, 0x00, 0xFF, 0xFF, 0xE0, 0x3F, 0xC1, 0xFE, 0x0F, 0xE0, 0x0F, 0xE1, + 0xF8, 0x00, 0xFC, 0x7E, 0x00, 0x0F, 0xCF, 0x80, 0x00, 0xFB, 0xF0, 0x00, + 0x1F, 0xFC, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x3F, 0xF0, 0x00, 0x07, 0xFE, + 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x1F, 0xF8, 0x00, 0x03, 0xFF, 0x00, 0x00, + 0x7F, 0xF0, 0x00, 0x1F, 0xBE, 0x00, 0x03, 0xE7, 0xE0, 0x00, 0xFC, 0x7E, + 0x00, 0x3F, 0x0F, 0xE0, 0x0F, 0xE0, 0xFF, 0x07, 0xF8, 0x0F, 0xFF, 0xFE, + 0x00, 0xFF, 0xFF, 0x80, 0x0F, 0xFF, 0xE0, 0x00, 0xFF, 0xF8, 0x00, 0x03, + 0xF8, 0x00, 0x7F, 0xFF, 0x80, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xF8, 0xFF, + 0xFF, 0xFC, 0x7F, 0xFF, 0xFE, 0x1F, 0x00, 0xFE, 0x1F, 0x00, 0x3F, 0x1F, + 0x00, 0x1F, 0x1F, 0x00, 0x1F, 0x1F, 0x00, 0x1F, 0x1F, 0x00, 0x1F, 0x1F, + 0x00, 0x3F, 0x1F, 0x00, 0x7E, 0x1F, 0xFF, 0xFE, 0x1F, 0xFF, 0xFC, 0x1F, + 0xFF, 0xF8, 0x1F, 0xFF, 0xF0, 0x1F, 0xFF, 0x80, 0x1F, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x7F, 0xFC, 0x00, 0xFF, + 0xFE, 0x00, 0xFF, 0xFE, 0x00, 0xFF, 0xFE, 0x00, 0x7F, 0xFC, 0x00, 0x00, + 0x3F, 0x80, 0x00, 0x3F, 0xFC, 0x00, 0x0F, 0xFF, 0xE0, 0x03, 0xFF, 0xFE, + 0x00, 0xFF, 0xFF, 0xE0, 0x3F, 0xC1, 0xFE, 0x0F, 0xE0, 0x0F, 0xE1, 0xF8, + 0x00, 0xFC, 0x7E, 0x00, 0x0F, 0xCF, 0x80, 0x00, 0xFB, 0xF0, 0x00, 0x1F, + 0xFC, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x3F, 0xF0, 0x00, 0x07, 0xFE, 0x00, + 0x00, 0xFF, 0xC0, 0x00, 0x1F, 0xF8, 0x00, 0x03, 0xFF, 0x80, 0x00, 0xFD, + 0xF0, 0x00, 0x1F, 0x3F, 0x00, 0x07, 0xE7, 0xF0, 0x01, 0xF8, 0x7F, 0x00, + 0x7F, 0x07, 0xF8, 0x3F, 0xC0, 0xFF, 0xFF, 0xF0, 0x07, 0xFF, 0xFC, 0x00, + 0x7F, 0xFF, 0x00, 0x07, 0xFF, 0xC0, 0x00, 0x7F, 0xC0, 0x00, 0x0F, 0x00, + 0x00, 0x03, 0xFF, 0x87, 0x80, 0xFF, 0xFF, 0xF8, 0x3F, 0xFF, 0xFF, 0x07, + 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xF0, 0x0F, 0x01, 0xF8, 0x00, 0x7F, 0xFF, + 0x80, 0x0F, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, 0xC0, + 0x7F, 0xFF, 0xFE, 0x00, 0xF8, 0x07, 0xE0, 0x0F, 0x80, 0x3F, 0x00, 0xF8, + 0x01, 0xF0, 0x0F, 0x80, 0x1F, 0x00, 0xF8, 0x01, 0xF0, 0x0F, 0x80, 0x3F, + 0x00, 0xF8, 0x0F, 0xE0, 0x0F, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0xC0, 0x0F, + 0xFF, 0xF0, 0x00, 0xFF, 0xFE, 0x00, 0x0F, 0xFF, 0xF0, 0x00, 0xF8, 0x3F, + 0x80, 0x0F, 0x81, 0xFC, 0x00, 0xF8, 0x0F, 0xE0, 0x0F, 0x80, 0x7E, 0x00, + 0xF8, 0x03, 0xF0, 0x7F, 0xF0, 0x1F, 0xEF, 0xFF, 0x81, 0xFF, 0xFF, 0xF8, + 0x0F, 0xFF, 0xFF, 0x80, 0x7F, 0x7F, 0xF0, 0x07, 0xE0, 0x01, 0xFC, 0x70, + 0x1F, 0xFD, 0xE0, 0xFF, 0xFF, 0x87, 0xFF, 0xFE, 0x3F, 0xFF, 0xF8, 0xFC, + 0x0F, 0xE7, 0xE0, 0x1F, 0x9F, 0x00, 0x3E, 0x7C, 0x00, 0xF9, 0xF0, 0x01, + 0xC7, 0xF0, 0x00, 0x0F, 0xF8, 0x00, 0x3F, 0xFF, 0x00, 0x7F, 0xFF, 0x00, + 0xFF, 0xFF, 0x00, 0xFF, 0xFC, 0x00, 0x1F, 0xF8, 0x00, 0x07, 0xE0, 0x00, + 0x0F, 0xDC, 0x00, 0x1F, 0xF8, 0x00, 0x7F, 0xE0, 0x01, 0xFF, 0xC0, 0x0F, + 0xFF, 0xC0, 0xFE, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xCF, 0xFF, 0xFE, 0x1C, + 0xFF, 0xF0, 0x00, 0xFE, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0xF0, 0x7F, + 0xE0, 0xF8, 0x3F, 0xF0, 0x7C, 0x1F, 0xF8, 0x3E, 0x0F, 0xFC, 0x1F, 0x07, + 0xFE, 0x0F, 0x83, 0xEE, 0x07, 0xC0, 0xE0, 0x03, 0xE0, 0x00, 0x01, 0xF0, + 0x00, 0x00, 0xF8, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, + 0xF0, 0x00, 0x0F, 0xFF, 0x80, 0x0F, 0xFF, 0xE0, 0x07, 0xFF, 0xF0, 0x03, + 0xFF, 0xF8, 0x00, 0xFF, 0xF8, 0x00, 0x7F, 0xE0, 0x7F, 0xEF, 0xFF, 0x0F, + 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0x7F, 0xE0, 0x7F, 0xE1, + 0xF0, 0x00, 0xF8, 0x1F, 0x00, 0x0F, 0x81, 0xF0, 0x00, 0xF8, 0x1F, 0x00, + 0x0F, 0x81, 0xF0, 0x00, 0xF8, 0x1F, 0x00, 0x0F, 0x81, 0xF0, 0x00, 0xF8, + 0x1F, 0x00, 0x0F, 0x81, 0xF0, 0x00, 0xF8, 0x1F, 0x00, 0x0F, 0x81, 0xF0, + 0x00, 0xF8, 0x1F, 0x00, 0x0F, 0x81, 0xF0, 0x00, 0xF8, 0x1F, 0x00, 0x0F, + 0x81, 0xF0, 0x00, 0xF8, 0x1F, 0x80, 0x1F, 0x80, 0xF8, 0x01, 0xF0, 0x0F, + 0xE0, 0x7F, 0x00, 0x7F, 0xFF, 0xE0, 0x03, 0xFF, 0xFE, 0x00, 0x1F, 0xFF, + 0x80, 0x00, 0xFF, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x7F, 0xE0, 0x1F, 0xFB, + 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xFC, 0x0F, 0xFF, 0x7F, + 0xE0, 0x1F, 0xF8, 0x7C, 0x00, 0x0F, 0x80, 0xF8, 0x00, 0x7C, 0x03, 0xE0, + 0x01, 0xF0, 0x07, 0xC0, 0x0F, 0x80, 0x1F, 0x00, 0x3E, 0x00, 0x7E, 0x00, + 0xF8, 0x00, 0xF8, 0x07, 0xC0, 0x03, 0xF0, 0x1F, 0x00, 0x07, 0xC0, 0xF8, + 0x00, 0x1F, 0x03, 0xE0, 0x00, 0x7E, 0x1F, 0x00, 0x00, 0xF8, 0x7C, 0x00, + 0x03, 0xF3, 0xF0, 0x00, 0x07, 0xCF, 0x80, 0x00, 0x1F, 0xBE, 0x00, 0x00, + 0x3F, 0xF0, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x07, + 0xF8, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0xFC, + 0x00, 0x00, 0x7F, 0xE0, 0x7F, 0xEF, 0xFF, 0x0F, 0xFF, 0xFF, 0xF0, 0xFF, + 0xFF, 0xFF, 0x0F, 0xFF, 0x7F, 0xE0, 0x7F, 0xE3, 0xE0, 0x00, 0x3C, 0x3E, + 0x0F, 0x83, 0xC3, 0xE1, 0xF8, 0x3C, 0x3E, 0x1F, 0x87, 0xC3, 0xE1, 0xFC, + 0x7C, 0x3E, 0x3F, 0xC7, 0xC1, 0xE3, 0xFC, 0x7C, 0x1F, 0x3F, 0xE7, 0xC1, + 0xF7, 0xFE, 0x78, 0x1F, 0x7F, 0xE7, 0x81, 0xF7, 0x9F, 0xF8, 0x1F, 0xF9, + 0xFF, 0x81, 0xFF, 0x9F, 0xF8, 0x0F, 0xF9, 0xFF, 0x80, 0xFF, 0x0F, 0xF8, + 0x0F, 0xF0, 0xFF, 0x80, 0xFF, 0x0F, 0xF0, 0x0F, 0xE0, 0x7F, 0x00, 0xFE, + 0x07, 0xF0, 0x0F, 0xE0, 0x7F, 0x00, 0xFC, 0x03, 0xF0, 0x07, 0xC0, 0x3F, + 0x00, 0x7F, 0x80, 0xFF, 0x3F, 0xF0, 0x7F, 0xEF, 0xFC, 0x1F, 0xFB, 0xFF, + 0x07, 0xFE, 0x7F, 0x80, 0xFF, 0x07, 0xE0, 0x3F, 0x00, 0xFC, 0x0F, 0x80, + 0x1F, 0x87, 0xC0, 0x03, 0xF3, 0xE0, 0x00, 0xFF, 0xF8, 0x00, 0x1F, 0xFC, + 0x00, 0x03, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x07, + 0xF0, 0x00, 0x03, 0xFE, 0x00, 0x01, 0xFF, 0xC0, 0x00, 0xFC, 0xF8, 0x00, + 0x7E, 0x3F, 0x00, 0x3F, 0x07, 0xE0, 0x1F, 0x80, 0xFC, 0x07, 0xE0, 0x1F, + 0x07, 0xFC, 0x0F, 0xFB, 0xFF, 0x87, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0xF8, + 0x7F, 0xF7, 0xFC, 0x0F, 0xF8, 0x7F, 0x80, 0x7F, 0xBF, 0xF0, 0x3F, 0xFF, + 0xFC, 0x0F, 0xFF, 0xFF, 0x03, 0xFF, 0x7F, 0x80, 0x7F, 0x87, 0xE0, 0x1F, + 0x80, 0xFC, 0x07, 0xC0, 0x1F, 0x03, 0xE0, 0x03, 0xE1, 0xF8, 0x00, 0xFC, + 0x7C, 0x00, 0x1F, 0xBE, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x7F, 0xC0, 0x00, + 0x1F, 0xE0, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, 0x00, + 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x07, 0xC0, 0x00, 0x1F, 0xFF, 0x00, 0x0F, 0xFF, 0xE0, 0x03, + 0xFF, 0xF8, 0x00, 0xFF, 0xFE, 0x00, 0x1F, 0xFF, 0x00, 0x7F, 0xFF, 0xF3, + 0xFF, 0xFF, 0x9F, 0xFF, 0xFC, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0x3E, 0x03, + 0xF1, 0xF0, 0x1F, 0x8F, 0x81, 0xF8, 0x7C, 0x1F, 0x83, 0xE1, 0xF8, 0x0E, + 0x1F, 0x80, 0x01, 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x0F, 0xC0, + 0x00, 0xFC, 0x00, 0x0F, 0xE0, 0x70, 0x7E, 0x07, 0xC7, 0xE0, 0x3E, 0x7E, + 0x01, 0xF7, 0xE0, 0x0F, 0xFF, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xBF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xBE, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, + 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, + 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, + 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x60, 0x00, 0x0F, 0x00, 0x00, + 0xF8, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7E, 0x00, + 0x03, 0xE0, 0x00, 0x3F, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x00, 0xF8, + 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x03, + 0xE0, 0x00, 0x1F, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, + 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xF0, + 0x00, 0x1F, 0x00, 0x01, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x07, + 0xC0, 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, + 0x1F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, + 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, + 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, + 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x7F, 0xFF, + 0xFF, 0xFF, 0xFF, 0x7F, 0xC0, 0x00, 0x40, 0x00, 0x06, 0x00, 0x00, 0xF0, + 0x00, 0x1F, 0x80, 0x03, 0xFC, 0x00, 0x7F, 0xE0, 0x0F, 0xFF, 0x00, 0xFF, + 0xF8, 0x1F, 0x9F, 0x83, 0xF0, 0xFC, 0x7E, 0x07, 0xEF, 0xC0, 0x3F, 0xF8, + 0x01, 0xFF, 0x80, 0x0F, 0x70, 0x00, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF0, 0xE0, 0x78, 0x3E, 0x0F, 0xC3, 0xF0, 0x7C, 0x1E, 0x06, 0x01, 0xFF, + 0x00, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0xE0, 0x1F, 0xFF, 0xF0, 0x0F, 0xFF, + 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x01, 0xFF, + 0xF8, 0x07, 0xFF, 0xF8, 0x1F, 0xFF, 0xF8, 0x3F, 0xFF, 0xF8, 0x7F, 0xFF, + 0xF8, 0x7F, 0x00, 0xF8, 0xFC, 0x00, 0xF8, 0xF8, 0x00, 0xF8, 0xF8, 0x03, + 0xF8, 0xFC, 0x0F, 0xFE, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x3F, 0xFF, + 0xFF, 0x1F, 0xFE, 0xFE, 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x00, 0x1F, 0xE0, + 0x00, 0x03, 0xFC, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, + 0x3E, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x1F, 0x0F, + 0xE0, 0x03, 0xEF, 0xFF, 0x00, 0x7F, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, 0x81, + 0xFF, 0xFF, 0xF8, 0x3F, 0xE0, 0x7F, 0x07, 0xF0, 0x03, 0xF0, 0xFC, 0x00, + 0x3E, 0x1F, 0x80, 0x07, 0xE3, 0xE0, 0x00, 0x7C, 0x7C, 0x00, 0x0F, 0x8F, + 0x80, 0x01, 0xF1, 0xF0, 0x00, 0x3E, 0x3E, 0x00, 0x07, 0xC7, 0xE0, 0x01, + 0xF8, 0xFC, 0x00, 0x3E, 0x1F, 0xC0, 0x0F, 0xCF, 0xFE, 0x07, 0xF3, 0xFF, + 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0x8F, 0xFF, 0xFF, 0xE0, 0xFE, 0x7F, 0xF0, + 0x00, 0x03, 0xF8, 0x00, 0x00, 0xFF, 0x18, 0x03, 0xFF, 0xFC, 0x0F, 0xFF, + 0xFC, 0x1F, 0xFF, 0xFC, 0x3F, 0xFF, 0xFC, 0x3F, 0x81, 0xFC, 0x7E, 0x00, + 0x7C, 0x7C, 0x00, 0x7C, 0xFC, 0x00, 0x3C, 0xF8, 0x00, 0x38, 0xF8, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xFC, 0x00, + 0x00, 0x7C, 0x00, 0x06, 0x7E, 0x00, 0x1F, 0x7F, 0x80, 0x7F, 0x3F, 0xFF, + 0xFF, 0x1F, 0xFF, 0xFE, 0x0F, 0xFF, 0xFC, 0x07, 0xFF, 0xF8, 0x00, 0xFF, + 0xC0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x1F, 0xE0, 0x00, + 0x07, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, 0xE0, + 0x00, 0x00, 0xF8, 0x00, 0xFE, 0x3E, 0x00, 0xFF, 0xEF, 0x80, 0xFF, 0xFF, + 0xE0, 0x7F, 0xFF, 0xF8, 0x3F, 0xFF, 0xFE, 0x1F, 0xE0, 0xFF, 0x87, 0xE0, + 0x0F, 0xE1, 0xF0, 0x01, 0xF8, 0xFC, 0x00, 0x7E, 0x3E, 0x00, 0x0F, 0x8F, + 0x80, 0x03, 0xE3, 0xE0, 0x00, 0xF8, 0xF8, 0x00, 0x3E, 0x3E, 0x00, 0x0F, + 0x8F, 0xC0, 0x07, 0xE1, 0xF0, 0x01, 0xF8, 0x7E, 0x00, 0xFE, 0x0F, 0xE0, + 0x7F, 0xE3, 0xFF, 0xFF, 0xFC, 0x7F, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xC0, + 0xFF, 0xEF, 0xE0, 0x0F, 0xC0, 0x00, 0x00, 0xFE, 0x00, 0x03, 0xFF, 0xC0, + 0x0F, 0xFF, 0xE0, 0x1F, 0xFF, 0xF0, 0x3F, 0xFF, 0xF8, 0x7F, 0x81, 0xFC, + 0x7E, 0x00, 0x7E, 0xFC, 0x00, 0x3E, 0xF8, 0x00, 0x3E, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF8, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7F, 0x80, 0x7E, + 0x3F, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0x0F, 0xFF, 0xFE, 0x07, 0xFF, 0xF8, + 0x00, 0xFF, 0x80, 0x00, 0x3F, 0xE0, 0x03, 0xFF, 0xE0, 0x1F, 0xFF, 0xC0, + 0xFF, 0xFF, 0x07, 0xFF, 0xF8, 0x1F, 0x80, 0x00, 0x7C, 0x00, 0x01, 0xF0, + 0x00, 0x07, 0xC0, 0x01, 0xFF, 0xFF, 0x0F, 0xFF, 0xFE, 0x3F, 0xFF, 0xF8, + 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0x00, 0x7C, 0x00, 0x01, 0xF0, 0x00, 0x07, + 0xC0, 0x00, 0x1F, 0x00, 0x00, 0x7C, 0x00, 0x01, 0xF0, 0x00, 0x07, 0xC0, + 0x00, 0x1F, 0x00, 0x00, 0x7C, 0x00, 0x01, 0xF0, 0x00, 0x07, 0xC0, 0x01, + 0xFF, 0xFF, 0x0F, 0xFF, 0xFE, 0x3F, 0xFF, 0xF8, 0xFF, 0xFF, 0xE1, 0xFF, + 0xFF, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xFF, 0xBF, 0x83, 0xFF, 0xFF, 0xE3, + 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xFB, 0xFC, 0x3F, 0xF9, 0xF8, 0x07, 0xF0, + 0xF8, 0x01, 0xF8, 0xFC, 0x00, 0xFC, 0x7C, 0x00, 0x3E, 0x3E, 0x00, 0x1F, + 0x1F, 0x00, 0x0F, 0x8F, 0x80, 0x07, 0xC7, 0xC0, 0x03, 0xE3, 0xF0, 0x03, + 0xF0, 0xF8, 0x01, 0xF8, 0x7E, 0x01, 0xFC, 0x3F, 0xC3, 0xFE, 0x0F, 0xFF, + 0xFF, 0x03, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xC0, 0x3F, 0xFB, 0xE0, 0x07, + 0xF1, 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xFE, 0x00, + 0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0x00, 0x3F, 0xFE, 0x00, + 0x0F, 0xFC, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, + 0x03, 0xFC, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, 0x0F, 0xC0, 0x07, 0xCF, 0xFC, 0x01, + 0xF7, 0xFF, 0x80, 0x7F, 0xFF, 0xF0, 0x1F, 0xFF, 0xFC, 0x07, 0xFC, 0x1F, + 0x81, 0xFC, 0x03, 0xE0, 0x7E, 0x00, 0xF8, 0x1F, 0x00, 0x3E, 0x07, 0xC0, + 0x0F, 0x81, 0xF0, 0x03, 0xE0, 0x7C, 0x00, 0xF8, 0x1F, 0x00, 0x3E, 0x07, + 0xC0, 0x0F, 0x81, 0xF0, 0x03, 0xE0, 0x7C, 0x00, 0xF8, 0x1F, 0x00, 0x3E, + 0x1F, 0xF0, 0x3F, 0xEF, 0xFE, 0x1F, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0xE1, + 0xFF, 0xDF, 0xF0, 0x3F, 0xE0, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, + 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1F, 0xF8, 0x01, 0xFF, 0xC0, 0x0F, 0xFE, 0x00, 0x7F, 0xF0, + 0x01, 0xFF, 0x80, 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x00, + 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, + 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x7F, 0xFF, 0xF7, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0x00, 0x00, 0x7C, + 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, + 0xFF, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, + 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, + 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, + 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x3F, 0x00, 0x3F, 0xBF, 0xFF, 0xBF, 0xFF, + 0x9F, 0xFF, 0xCF, 0xFF, 0x83, 0xFF, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x80, + 0x00, 0x3F, 0xC0, 0x00, 0x1F, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x00, 0xF8, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x0F, + 0x87, 0xFC, 0x07, 0xC7, 0xFF, 0x03, 0xE3, 0xFF, 0x81, 0xF1, 0xFF, 0xC0, + 0xF8, 0x7F, 0xC0, 0x7C, 0xFE, 0x00, 0x3E, 0xFE, 0x00, 0x1F, 0xFE, 0x00, + 0x0F, 0xFE, 0x00, 0x07, 0xFE, 0x00, 0x03, 0xFF, 0x80, 0x01, 0xFF, 0xE0, + 0x00, 0xFF, 0xF8, 0x00, 0x7C, 0xFE, 0x00, 0x3E, 0x3F, 0x80, 0x1F, 0x0F, + 0xE0, 0x3F, 0x81, 0xFF, 0xBF, 0xC1, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xF0, + 0x7F, 0xFB, 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, 0x01, 0xFF, 0xC0, 0x0F, 0xFE, + 0x00, 0x7F, 0xF0, 0x01, 0xFF, 0x80, 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, + 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, + 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x00, + 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, + 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x03, 0xFF, + 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xF8, + 0x00, 0x3C, 0x1F, 0x00, 0xFD, 0xFC, 0xFF, 0x07, 0xFF, 0xFF, 0xFE, 0x1F, + 0xFF, 0xFF, 0xF8, 0x7F, 0xFF, 0xFF, 0xF0, 0xFF, 0x1F, 0x87, 0xC1, 0xF8, + 0x7E, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, + 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, + 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, + 0x1F, 0x07, 0xC1, 0xF1, 0xFE, 0x1F, 0x87, 0xEF, 0xFC, 0x7F, 0x1F, 0xFF, + 0xF1, 0xFC, 0x7F, 0xFF, 0xC7, 0xF1, 0xFD, 0xFE, 0x1F, 0x87, 0xE0, 0x00, + 0x1F, 0x80, 0x1F, 0x9F, 0xF8, 0x1F, 0xDF, 0xFE, 0x0F, 0xFF, 0xFF, 0x87, + 0xFF, 0xFF, 0xC1, 0xFF, 0x07, 0xF0, 0x7F, 0x01, 0xF8, 0x3F, 0x00, 0x7C, + 0x1F, 0x00, 0x3E, 0x0F, 0x80, 0x1F, 0x07, 0xC0, 0x0F, 0x83, 0xE0, 0x07, + 0xC1, 0xF0, 0x03, 0xE0, 0xF8, 0x01, 0xF0, 0x7C, 0x00, 0xF8, 0x3E, 0x00, + 0x7C, 0x1F, 0x00, 0x3E, 0x3F, 0xE0, 0x7F, 0xBF, 0xF8, 0x7F, 0xFF, 0xFC, + 0x3F, 0xFF, 0xFE, 0x1F, 0xFB, 0xFE, 0x07, 0xF8, 0x00, 0x7F, 0x00, 0x01, + 0xFF, 0xF0, 0x01, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0xC1, + 0xFE, 0x0F, 0xF1, 0xFC, 0x01, 0xFC, 0xFC, 0x00, 0x7E, 0xFC, 0x00, 0x1F, + 0xFC, 0x00, 0x07, 0xFE, 0x00, 0x03, 0xFF, 0x00, 0x01, 0xFF, 0x80, 0x00, + 0xFF, 0xC0, 0x00, 0x7F, 0xF0, 0x00, 0x7E, 0xF8, 0x00, 0x7E, 0x7F, 0x00, + 0x7F, 0x1F, 0xC0, 0xFF, 0x07, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0x80, 0x7F, + 0xFF, 0x00, 0x1F, 0xFF, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x07, 0xE0, 0x03, + 0xF9, 0xFF, 0xC0, 0x7F, 0xBF, 0xFE, 0x07, 0xFF, 0xFF, 0xF8, 0x7F, 0xFF, + 0xFF, 0xC3, 0xFF, 0x83, 0xFC, 0x0F, 0xE0, 0x0F, 0xE0, 0xFC, 0x00, 0x7E, + 0x0F, 0xC0, 0x03, 0xF0, 0xF8, 0x00, 0x1F, 0x0F, 0x80, 0x01, 0xF0, 0xF8, + 0x00, 0x1F, 0x0F, 0x80, 0x01, 0xF0, 0xF8, 0x00, 0x3F, 0x0F, 0xC0, 0x03, + 0xF0, 0xFE, 0x00, 0x7E, 0x0F, 0xF8, 0x1F, 0xE0, 0xFF, 0xFF, 0xFC, 0x0F, + 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xF0, 0x0F, 0x9F, 0xFC, 0x00, 0xF8, 0x7F, + 0x00, 0x0F, 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, + 0xF8, 0x00, 0x00, 0x7F, 0xF8, 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0xFF, 0xFC, + 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0x7F, 0xF8, 0x00, 0x00, 0x00, 0x7E, 0x00, + 0x00, 0x3F, 0xF9, 0xFC, 0x0F, 0xFF, 0xDF, 0xE1, 0xFF, 0xFF, 0xFE, 0x3F, + 0xFF, 0xFF, 0xE3, 0xF8, 0x1F, 0xFC, 0x7F, 0x00, 0x7F, 0x07, 0xC0, 0x03, + 0xF0, 0xFC, 0x00, 0x3F, 0x0F, 0x80, 0x01, 0xF0, 0xF8, 0x00, 0x1F, 0x0F, + 0x80, 0x01, 0xF0, 0xF8, 0x00, 0x1F, 0x0F, 0xC0, 0x01, 0xF0, 0xFC, 0x00, + 0x3F, 0x07, 0xE0, 0x07, 0xF0, 0x7F, 0x81, 0xFF, 0x03, 0xFF, 0xFF, 0xF0, + 0x1F, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xF0, 0x03, 0xFF, 0x9F, 0x00, 0x0F, + 0xE1, 0xF0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x01, 0xF0, 0x00, 0x01, 0xFF, 0xE0, 0x00, 0x3F, 0xFF, 0x00, + 0x03, 0xFF, 0xF0, 0x00, 0x3F, 0xFF, 0x00, 0x01, 0xFF, 0xE0, 0x00, 0x01, + 0xF0, 0x3F, 0xC7, 0xFC, 0x7F, 0xCF, 0xFE, 0x7F, 0xDF, 0xFF, 0x7F, 0xFF, + 0xFF, 0x3F, 0xFF, 0x0E, 0x07, 0xFC, 0x00, 0x07, 0xF8, 0x00, 0x07, 0xF0, + 0x00, 0x07, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x07, 0xC0, 0x00, 0x07, 0xC0, + 0x00, 0x07, 0xC0, 0x00, 0x07, 0xC0, 0x00, 0x07, 0xC0, 0x00, 0x07, 0xC0, + 0x00, 0x7F, 0xFF, 0xC0, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, + 0xE0, 0x7F, 0xFF, 0xC0, 0x03, 0xFC, 0x60, 0x7F, 0xFF, 0x87, 0xFF, 0xFC, + 0x7F, 0xFF, 0xE7, 0xFF, 0xFF, 0x3F, 0x01, 0xF9, 0xF0, 0x07, 0xCF, 0xC0, + 0x1C, 0x7F, 0xF0, 0x03, 0xFF, 0xF8, 0x0F, 0xFF, 0xF0, 0x3F, 0xFF, 0xC0, + 0x3F, 0xFF, 0x00, 0x0F, 0xFD, 0xC0, 0x07, 0xFE, 0x00, 0x1F, 0xF8, 0x00, + 0xFF, 0xF0, 0x1F, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xEF, 0xFF, 0xFE, 0x3F, + 0xFF, 0xC0, 0x07, 0xF8, 0x00, 0x07, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x3E, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0xFF, + 0xF8, 0x7F, 0xFF, 0xF8, 0xFF, 0xFF, 0xF1, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, + 0x80, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xE0, 0x00, + 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3E, 0x00, 0x00, + 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x03, 0x83, 0xF0, 0x1F, 0x87, + 0xFF, 0xFF, 0x07, 0xFF, 0xFE, 0x0F, 0xFF, 0xF8, 0x07, 0xFF, 0xC0, 0x03, + 0xFC, 0x00, 0x7F, 0x01, 0xFE, 0x7F, 0x81, 0xFF, 0x3F, 0xC0, 0xFF, 0x9F, + 0xE0, 0x7F, 0xC7, 0xF0, 0x1F, 0xE0, 0xF8, 0x01, 0xF0, 0x7C, 0x00, 0xF8, + 0x3E, 0x00, 0x7C, 0x1F, 0x00, 0x3E, 0x0F, 0x80, 0x1F, 0x07, 0xC0, 0x0F, + 0x83, 0xE0, 0x07, 0xC1, 0xF0, 0x03, 0xE0, 0xF8, 0x01, 0xF0, 0x7C, 0x01, + 0xF8, 0x3F, 0x01, 0xFC, 0x1F, 0xC1, 0xFF, 0x07, 0xFF, 0xFF, 0xC3, 0xFF, + 0xFF, 0xE0, 0xFF, 0xF7, 0xF0, 0x3F, 0xF3, 0xF0, 0x03, 0xF0, 0x00, 0x7F, + 0xE0, 0x7F, 0xEF, 0xFF, 0x0F, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0x0F, + 0xFF, 0x7F, 0xE0, 0x7F, 0xE0, 0xF8, 0x01, 0xF0, 0x0F, 0xC0, 0x1F, 0x00, + 0x7C, 0x03, 0xE0, 0x07, 0xE0, 0x3E, 0x00, 0x3E, 0x07, 0xC0, 0x03, 0xF0, + 0x7C, 0x00, 0x1F, 0x0F, 0x80, 0x01, 0xF8, 0xF8, 0x00, 0x0F, 0x9F, 0x00, + 0x00, 0xFD, 0xF0, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0x03, + 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x1F, 0x80, + 0x00, 0x7F, 0x80, 0x1F, 0xEF, 0xFC, 0x03, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, + 0xFC, 0x03, 0xFF, 0x7F, 0x80, 0x1F, 0xE1, 0xF0, 0xF8, 0x7C, 0x1F, 0x1F, + 0x87, 0xC1, 0xF1, 0xF8, 0xFC, 0x1F, 0x1F, 0xCF, 0x80, 0xFB, 0xFC, 0xF8, + 0x0F, 0xBF, 0xDF, 0x80, 0xFB, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0x00, 0x7F, + 0xDF, 0xF0, 0x07, 0xF9, 0xFF, 0x00, 0x7F, 0x9F, 0xE0, 0x07, 0xF0, 0xFE, + 0x00, 0x3F, 0x0F, 0xE0, 0x03, 0xF0, 0x7E, 0x00, 0x3E, 0x07, 0xC0, 0x03, + 0xE0, 0x3C, 0x00, 0x3F, 0xC0, 0xFF, 0x1F, 0xF8, 0x7F, 0xE7, 0xFE, 0x1F, + 0xF9, 0xFF, 0x87, 0xFE, 0x3F, 0xC0, 0xFF, 0x03, 0xF8, 0x7F, 0x00, 0x7F, + 0x3F, 0x80, 0x0F, 0xFF, 0xC0, 0x01, 0xFF, 0xE0, 0x00, 0x3F, 0xE0, 0x00, + 0x07, 0xF8, 0x00, 0x07, 0xFF, 0x00, 0x03, 0xFF, 0xE0, 0x01, 0xFF, 0xFE, + 0x00, 0xFE, 0x1F, 0xC0, 0x7F, 0x03, 0xF8, 0x7F, 0xC0, 0xFF, 0xBF, 0xF8, + 0x7F, 0xFF, 0xFE, 0x1F, 0xFF, 0xFF, 0x87, 0xFF, 0x7F, 0xC0, 0xFF, 0x80, + 0x7F, 0x80, 0x7F, 0xBF, 0xF0, 0x3F, 0xFF, 0xFC, 0x0F, 0xFF, 0xFF, 0x03, + 0xFF, 0x7F, 0x80, 0x7F, 0x8F, 0xC0, 0x07, 0x81, 0xF0, 0x03, 0xE0, 0x7E, + 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xF0, 0x3E, 0x00, 0x7C, 0x0F, 0x80, + 0x0F, 0x87, 0xC0, 0x03, 0xE1, 0xF0, 0x00, 0x7C, 0xF8, 0x00, 0x1F, 0xFE, + 0x00, 0x03, 0xFF, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x1F, 0xE0, 0x00, 0x07, + 0xF0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x1F, 0x80, 0x00, + 0x07, 0xC0, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x1F, 0xFF, 0x80, + 0x0F, 0xFF, 0xF0, 0x03, 0xFF, 0xFC, 0x00, 0xFF, 0xFF, 0x00, 0x1F, 0xFF, + 0x80, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xF0, 0x3F, 0xBE, 0x0F, 0xC3, 0x83, 0xF0, 0x00, 0xFC, 0x00, + 0x3F, 0x00, 0x0F, 0xC0, 0x03, 0xF0, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x0F, + 0xC0, 0x3B, 0xF0, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x78, 0x03, 0xF0, 0x1F, 0xC0, 0xFF, 0x07, + 0xF8, 0x1F, 0x80, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, + 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x0F, 0x81, 0xFE, 0x0F, + 0xF0, 0x3F, 0x80, 0xFF, 0x01, 0xFE, 0x00, 0xFC, 0x01, 0xF0, 0x07, 0xC0, + 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, 0xF8, + 0x07, 0xF8, 0x0F, 0xF0, 0x3F, 0xC0, 0x7F, 0x00, 0x78, 0x77, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xE0, 0x78, 0x03, 0xF0, 0x0F, + 0xE0, 0x3F, 0xC0, 0x7F, 0x00, 0x7E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, + 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, + 0x07, 0xC0, 0x1F, 0xE0, 0x3F, 0xC0, 0x7F, 0x03, 0xFC, 0x1F, 0xE0, 0xFC, + 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, + 0x00, 0xF8, 0x07, 0xE0, 0x7F, 0x83, 0xFC, 0x0F, 0xF0, 0x3F, 0x80, 0x78, + 0x00, 0x07, 0x80, 0x00, 0x7F, 0x80, 0x03, 0xFF, 0x03, 0x9F, 0xFE, 0x1F, + 0xFF, 0xFC, 0xFF, 0xF3, 0xFF, 0xFF, 0x87, 0xFF, 0x9C, 0x0F, 0xFC, 0x00, + 0x0F, 0xE0, 0x00, 0x1F, 0x00}; + +const GFXglyph FreeMonoBold24pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 28, 0, 1}, // 0x20 ' ' + {0, 7, 31, 28, 10, -29}, // 0x21 '!' + {28, 15, 14, 28, 6, -28}, // 0x22 '"' + {55, 22, 34, 28, 3, -30}, // 0x23 '#' + {149, 19, 38, 28, 5, -31}, // 0x24 '$' + {240, 21, 30, 28, 4, -28}, // 0x25 '%' + {319, 21, 28, 28, 4, -26}, // 0x26 '&' + {393, 6, 14, 28, 11, -28}, // 0x27 ''' + {404, 10, 37, 28, 12, -29}, // 0x28 '(' + {451, 10, 37, 28, 6, -29}, // 0x29 ')' + {498, 21, 19, 28, 4, -28}, // 0x2A '*' + {548, 23, 26, 28, 3, -25}, // 0x2B '+' + {623, 9, 14, 28, 7, -6}, // 0x2C ',' + {639, 24, 5, 28, 2, -15}, // 0x2D '-' + {654, 7, 6, 28, 11, -4}, // 0x2E '.' + {660, 20, 38, 28, 4, -32}, // 0x2F '/' + {755, 21, 31, 28, 4, -29}, // 0x30 '0' + {837, 20, 29, 28, 4, -28}, // 0x31 '1' + {910, 21, 30, 28, 3, -29}, // 0x32 '2' + {989, 21, 31, 28, 4, -29}, // 0x33 '3' + {1071, 20, 28, 28, 4, -27}, // 0x34 '4' + {1141, 21, 31, 28, 4, -29}, // 0x35 '5' + {1223, 20, 31, 28, 5, -29}, // 0x36 '6' + {1301, 20, 30, 28, 4, -29}, // 0x37 '7' + {1376, 20, 31, 28, 4, -29}, // 0x38 '8' + {1454, 20, 31, 28, 5, -29}, // 0x39 '9' + {1532, 7, 22, 28, 11, -20}, // 0x3A ':' + {1552, 10, 28, 28, 6, -20}, // 0x3B ';' + {1587, 24, 21, 28, 2, -23}, // 0x3C '<' + {1650, 24, 14, 28, 2, -19}, // 0x3D '=' + {1692, 23, 22, 28, 3, -23}, // 0x3E '>' + {1756, 20, 29, 28, 5, -27}, // 0x3F '?' + {1829, 19, 36, 28, 4, -28}, // 0x40 '@' + {1915, 29, 27, 28, -1, -26}, // 0x41 'A' + {2013, 26, 27, 28, 1, -26}, // 0x42 'B' + {2101, 25, 29, 28, 2, -27}, // 0x43 'C' + {2192, 25, 27, 28, 1, -26}, // 0x44 'D' + {2277, 25, 27, 28, 1, -26}, // 0x45 'E' + {2362, 25, 27, 28, 1, -26}, // 0x46 'F' + {2447, 25, 29, 28, 2, -27}, // 0x47 'G' + {2538, 26, 27, 28, 1, -26}, // 0x48 'H' + {2626, 19, 27, 28, 5, -26}, // 0x49 'I' + {2691, 25, 28, 28, 3, -26}, // 0x4A 'J' + {2779, 27, 27, 28, 1, -26}, // 0x4B 'K' + {2871, 25, 27, 28, 2, -26}, // 0x4C 'L' + {2956, 31, 27, 28, -1, -26}, // 0x4D 'M' + {3061, 28, 27, 28, 0, -26}, // 0x4E 'N' + {3156, 27, 29, 28, 1, -27}, // 0x4F 'O' + {3254, 24, 27, 28, 1, -26}, // 0x50 'P' + {3335, 27, 35, 28, 1, -27}, // 0x51 'Q' + {3454, 28, 27, 28, 0, -26}, // 0x52 'R' + {3549, 22, 29, 28, 3, -27}, // 0x53 'S' + {3629, 25, 27, 28, 2, -26}, // 0x54 'T' + {3714, 28, 28, 28, 0, -26}, // 0x55 'U' + {3812, 30, 27, 28, -1, -26}, // 0x56 'V' + {3914, 28, 27, 28, 0, -26}, // 0x57 'W' + {4009, 26, 27, 28, 1, -26}, // 0x58 'X' + {4097, 26, 27, 28, 1, -26}, // 0x59 'Y' + {4185, 21, 27, 28, 4, -26}, // 0x5A 'Z' + {4256, 10, 37, 28, 12, -29}, // 0x5B '[' + {4303, 20, 38, 28, 4, -32}, // 0x5C '\' + {4398, 10, 37, 28, 6, -29}, // 0x5D ']' + {4445, 20, 15, 28, 4, -29}, // 0x5E '^' + {4483, 28, 5, 28, 0, 5}, // 0x5F '_' + {4501, 9, 8, 28, 8, -30}, // 0x60 '`' + {4510, 24, 23, 28, 2, -21}, // 0x61 'a' + {4579, 27, 31, 28, 0, -29}, // 0x62 'b' + {4684, 24, 23, 28, 3, -21}, // 0x63 'c' + {4753, 26, 31, 28, 2, -29}, // 0x64 'd' + {4854, 24, 23, 28, 2, -21}, // 0x65 'e' + {4923, 22, 30, 28, 4, -29}, // 0x66 'f' + {5006, 25, 31, 28, 2, -21}, // 0x67 'g' + {5103, 26, 30, 28, 1, -29}, // 0x68 'h' + {5201, 21, 29, 28, 4, -28}, // 0x69 'i' + {5278, 17, 38, 28, 5, -28}, // 0x6A 'j' + {5359, 25, 30, 28, 2, -29}, // 0x6B 'k' + {5453, 21, 30, 28, 4, -29}, // 0x6C 'l' + {5532, 30, 22, 28, -1, -21}, // 0x6D 'm' + {5615, 25, 22, 28, 1, -21}, // 0x6E 'n' + {5684, 25, 23, 28, 2, -21}, // 0x6F 'o' + {5756, 28, 31, 28, 0, -21}, // 0x70 'p' + {5865, 28, 31, 28, 1, -21}, // 0x71 'q' + {5974, 24, 22, 28, 3, -21}, // 0x72 'r' + {6040, 21, 23, 28, 4, -21}, // 0x73 's' + {6101, 23, 28, 28, 1, -26}, // 0x74 't' + {6182, 25, 22, 28, 1, -20}, // 0x75 'u' + {6251, 28, 21, 28, 0, -20}, // 0x76 'v' + {6325, 28, 21, 28, 0, -20}, // 0x77 'w' + {6399, 26, 21, 28, 1, -20}, // 0x78 'x' + {6468, 26, 30, 28, 1, -20}, // 0x79 'y' + {6566, 19, 21, 28, 5, -20}, // 0x7A 'z' + {6616, 14, 37, 28, 7, -29}, // 0x7B '{' + {6681, 5, 36, 28, 12, -28}, // 0x7C '|' + {6704, 14, 37, 28, 8, -29}, // 0x7D '}' + {6769, 22, 10, 28, 3, -17}}; // 0x7E '~' + +const GFXfont FreeMonoBold24pt7b PROGMEM = { + (uint8_t *)FreeMonoBold24pt7bBitmaps, (GFXglyph *)FreeMonoBold24pt7bGlyphs, + 0x20, 0x7E, 47}; + +// Approx. 7469 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMonoBold9pt7b.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMonoBold9pt7b.h new file mode 100644 index 0000000..44320f8 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMonoBold9pt7b.h @@ -0,0 +1,191 @@ +#pragma once +#include + +const uint8_t FreeMonoBold9pt7bBitmaps[] PROGMEM = { + 0xFF, 0xFF, 0xD2, 0x1F, 0x80, 0xEC, 0x89, 0x12, 0x24, 0x40, 0x36, 0x36, + 0x36, 0x7F, 0x7F, 0x36, 0xFF, 0xFF, 0x3C, 0x3C, 0x3C, 0x00, 0x18, 0xFF, + 0xFE, 0x3C, 0x1F, 0x1F, 0x83, 0x46, 0x8D, 0xF0, 0xC1, 0x83, 0x00, 0x61, + 0x22, 0x44, 0x86, 0x67, 0x37, 0x11, 0x22, 0x4C, 0x70, 0x3C, 0x7E, 0x60, + 0x60, 0x30, 0x7B, 0xDF, 0xCE, 0xFF, 0x7F, 0xC9, 0x24, 0x37, 0x66, 0xCC, + 0xCC, 0xCC, 0x66, 0x31, 0xCE, 0x66, 0x33, 0x33, 0x33, 0x66, 0xC8, 0x18, + 0x18, 0xFF, 0xFF, 0x3C, 0x3C, 0x66, 0x18, 0x18, 0x18, 0xFF, 0xFF, 0x18, + 0x18, 0x18, 0x18, 0x6B, 0x48, 0xFF, 0xFF, 0xC0, 0xF0, 0x02, 0x0C, 0x18, + 0x60, 0xC3, 0x06, 0x0C, 0x30, 0x61, 0x83, 0x0C, 0x18, 0x20, 0x00, 0x38, + 0xFB, 0xBE, 0x3C, 0x78, 0xF1, 0xE3, 0xC7, 0xDD, 0xF1, 0xC0, 0x38, 0xF3, + 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0xFD, 0xF8, 0x3C, 0xFE, 0xC7, 0x03, + 0x03, 0x06, 0x0C, 0x18, 0x70, 0xE3, 0xFF, 0xFF, 0x7C, 0xFE, 0x03, 0x03, + 0x03, 0x1E, 0x1E, 0x07, 0x03, 0x03, 0xFE, 0x7C, 0x1C, 0x38, 0xB1, 0x64, + 0xD9, 0xBF, 0xFF, 0x3E, 0x7C, 0x7E, 0x3F, 0x18, 0x0F, 0xC7, 0xF3, 0x1C, + 0x06, 0x03, 0xC3, 0xFF, 0x9F, 0x80, 0x0F, 0x3F, 0x30, 0x60, 0x60, 0xDC, + 0xFE, 0xE3, 0xC3, 0x63, 0x7E, 0x3C, 0xFF, 0xFF, 0xC3, 0x03, 0x06, 0x06, + 0x06, 0x0C, 0x0C, 0x0C, 0x18, 0x38, 0xFB, 0x1E, 0x3C, 0x6F, 0x9F, 0x63, + 0xC7, 0x8F, 0xF1, 0xC0, 0x3C, 0x7E, 0xE6, 0xC3, 0xC3, 0xE7, 0x7F, 0x3B, + 0x06, 0x0E, 0xFC, 0xF0, 0xF0, 0x0F, 0x6C, 0x00, 0x1A, 0xD2, 0x00, 0x01, + 0x83, 0x87, 0x0E, 0x0F, 0x80, 0xE0, 0x1C, 0x03, 0xFF, 0xFF, 0xC0, 0x00, + 0x0F, 0xFF, 0xFC, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0xF9, 0xE3, 0xC1, 0x80, + 0x7C, 0xFE, 0xC7, 0x03, 0x0E, 0x1C, 0x00, 0x00, 0x00, 0x30, 0x30, 0x1E, + 0x1F, 0x1C, 0xDC, 0x6C, 0x76, 0x7B, 0x6D, 0xB6, 0xDB, 0x6F, 0xF3, 0xFC, + 0x06, 0x33, 0xF8, 0x78, 0x3C, 0x07, 0xC0, 0x38, 0x05, 0x81, 0xB0, 0x36, + 0x0F, 0xE1, 0xFC, 0x71, 0xDF, 0x7F, 0xEF, 0x80, 0xFF, 0x3F, 0xE6, 0x19, + 0x86, 0x7F, 0x1F, 0xE6, 0x1D, 0x83, 0x60, 0xFF, 0xFF, 0xF0, 0x1F, 0xBF, + 0xD8, 0xF8, 0x3C, 0x06, 0x03, 0x01, 0x80, 0x61, 0xBF, 0xC7, 0xC0, 0xFE, + 0x3F, 0xE6, 0x19, 0x83, 0x60, 0xD8, 0x36, 0x0D, 0x83, 0x61, 0xBF, 0xEF, + 0xE0, 0xFF, 0xFF, 0xD8, 0x6D, 0xB7, 0xC3, 0xE1, 0xB0, 0xC3, 0x61, 0xFF, + 0xFF, 0xE0, 0xFF, 0xFF, 0xD8, 0x6D, 0xB7, 0xC3, 0xE1, 0xB0, 0xC0, 0x60, + 0x7C, 0x3E, 0x00, 0x1F, 0x9F, 0xE6, 0x1B, 0x06, 0xC0, 0x30, 0x0C, 0x7F, + 0x1F, 0xE1, 0x9F, 0xE3, 0xF0, 0xF7, 0xFB, 0xD8, 0xCC, 0x66, 0x33, 0xF9, + 0xFC, 0xC6, 0x63, 0x7B, 0xFD, 0xE0, 0xFF, 0xF3, 0x0C, 0x30, 0xC3, 0x0C, + 0x33, 0xFF, 0xC0, 0x1F, 0xC7, 0xF0, 0x30, 0x0C, 0x03, 0x00, 0xCC, 0x33, + 0x0C, 0xC7, 0x3F, 0x87, 0xC0, 0xF7, 0xBD, 0xE6, 0x61, 0xB0, 0x78, 0x1F, + 0x06, 0xE1, 0x98, 0x63, 0x3C, 0xFF, 0x3C, 0xFC, 0x7E, 0x0C, 0x06, 0x03, + 0x01, 0x80, 0xC6, 0x63, 0x31, 0xFF, 0xFF, 0xE0, 0xE0, 0xFE, 0x3D, 0xC7, + 0x3D, 0xE7, 0xBC, 0xD7, 0x9B, 0xB3, 0x76, 0x60, 0xDE, 0x3F, 0xC7, 0x80, + 0xE1, 0xFE, 0x3D, 0xE3, 0x3C, 0x66, 0xCC, 0xDD, 0x99, 0xB3, 0x1E, 0x63, + 0xDE, 0x3B, 0xC3, 0x00, 0x1F, 0x07, 0xF1, 0xC7, 0x70, 0x7C, 0x07, 0x80, + 0xF0, 0x1F, 0x07, 0x71, 0xC7, 0xF0, 0x7C, 0x00, 0xFE, 0x7F, 0x98, 0x6C, + 0x36, 0x1B, 0xF9, 0xF8, 0xC0, 0x60, 0x7C, 0x3E, 0x00, 0x1F, 0x07, 0xF1, + 0xC7, 0x70, 0x7C, 0x07, 0x80, 0xF0, 0x1F, 0x07, 0x71, 0xC7, 0xF0, 0x7C, + 0x0C, 0x33, 0xFE, 0x7F, 0x80, 0xFC, 0x7F, 0x18, 0xCC, 0x66, 0x73, 0xF1, + 0xF0, 0xCC, 0x63, 0x7D, 0xFE, 0x60, 0x3F, 0xBF, 0xF0, 0x78, 0x0F, 0x03, + 0xF8, 0x3F, 0x83, 0xC3, 0xFF, 0xBF, 0x80, 0xFF, 0xFF, 0xF6, 0x7B, 0x3D, + 0x98, 0xC0, 0x60, 0x30, 0x18, 0x3F, 0x1F, 0x80, 0xF1, 0xFE, 0x3D, 0x83, + 0x30, 0x66, 0x0C, 0xC1, 0x98, 0x33, 0x06, 0x60, 0xC7, 0xF0, 0x7C, 0x00, + 0xFB, 0xFF, 0x7D, 0xC3, 0x18, 0xC3, 0x18, 0x36, 0x06, 0xC0, 0x50, 0x0E, + 0x01, 0xC0, 0x10, 0x00, 0xFB, 0xFE, 0xF6, 0x0D, 0x93, 0x6E, 0xDB, 0xB7, + 0xAD, 0xEE, 0x7B, 0x8E, 0xE3, 0x18, 0xF3, 0xFC, 0xF7, 0x38, 0xFC, 0x1E, + 0x03, 0x01, 0xE0, 0xCC, 0x73, 0xBC, 0xFF, 0x3C, 0xF3, 0xFC, 0xF7, 0x38, + 0xCC, 0x1E, 0x07, 0x80, 0xC0, 0x30, 0x0C, 0x0F, 0xC3, 0xF0, 0xFE, 0xFE, + 0xC6, 0xCC, 0x18, 0x18, 0x30, 0x63, 0xC3, 0xFF, 0xFF, 0xFF, 0xCC, 0xCC, + 0xCC, 0xCC, 0xCC, 0xFF, 0x01, 0x03, 0x06, 0x06, 0x0C, 0x0C, 0x18, 0x18, + 0x30, 0x30, 0x60, 0x60, 0xC0, 0x80, 0xFF, 0x33, 0x33, 0x33, 0x33, 0x33, + 0xFF, 0x10, 0x71, 0xE3, 0x6C, 0x70, 0x40, 0xFF, 0xFF, 0xFC, 0x88, 0x80, + 0x7E, 0x3F, 0x8F, 0xCF, 0xEE, 0x36, 0x1B, 0xFE, 0xFF, 0xE0, 0x38, 0x06, + 0x01, 0xBC, 0x7F, 0x9C, 0x76, 0x0D, 0x83, 0x71, 0xFF, 0xEE, 0xF0, 0x3F, + 0xBF, 0xF8, 0x78, 0x3C, 0x07, 0x05, 0xFE, 0x7E, 0x03, 0x80, 0xE0, 0x18, + 0xF6, 0x7F, 0xB8, 0xEC, 0x1B, 0x06, 0xE3, 0x9F, 0xF3, 0xFC, 0x3E, 0x3F, + 0xB0, 0xFF, 0xFF, 0xFE, 0x01, 0xFE, 0x7E, 0x1F, 0x3F, 0x30, 0x7E, 0x7E, + 0x30, 0x30, 0x30, 0x30, 0xFE, 0xFE, 0x3F, 0xBF, 0xF9, 0xD8, 0x6C, 0x37, + 0x39, 0xFC, 0x76, 0x03, 0x01, 0x8F, 0xC7, 0xC0, 0xE0, 0x70, 0x18, 0x0D, + 0xC7, 0xF3, 0x99, 0x8C, 0xC6, 0x63, 0x7B, 0xFD, 0xE0, 0x18, 0x18, 0x00, + 0x78, 0x78, 0x18, 0x18, 0x18, 0x18, 0xFF, 0xFF, 0x18, 0x60, 0x3F, 0xFC, + 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0F, 0xFF, 0x80, 0xE0, 0x70, 0x18, 0x0D, + 0xE6, 0xF3, 0xE1, 0xE0, 0xF8, 0x6E, 0x73, 0xF9, 0xE0, 0x78, 0x78, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xFF, 0xFF, 0xFD, 0x9F, 0xF9, 0x9B, + 0x33, 0x66, 0x6C, 0xCD, 0xBD, 0xFF, 0xBF, 0xEE, 0x7F, 0x98, 0xCC, 0x66, + 0x33, 0x1B, 0xDF, 0xEF, 0x3E, 0x3F, 0xB8, 0xF8, 0x3C, 0x1F, 0x1D, 0xFC, + 0x7C, 0xEF, 0x1F, 0xF9, 0xC3, 0xB0, 0x36, 0x06, 0xE1, 0xDF, 0xF3, 0x78, + 0x60, 0x0C, 0x03, 0xE0, 0x7C, 0x00, 0x1E, 0xEF, 0xFF, 0x87, 0x60, 0x6C, + 0x0D, 0xC3, 0x9F, 0xF0, 0xF6, 0x00, 0xC0, 0x18, 0x0F, 0x81, 0xF0, 0x77, + 0xBF, 0xCF, 0x06, 0x03, 0x01, 0x83, 0xF9, 0xFC, 0x3F, 0xFF, 0xC3, 0xFC, + 0x3F, 0xC3, 0xFF, 0xFC, 0x60, 0x60, 0x60, 0xFE, 0xFE, 0x60, 0x60, 0x60, + 0x61, 0x7F, 0x3E, 0xE7, 0x73, 0x98, 0xCC, 0x66, 0x33, 0x19, 0xFE, 0x7F, + 0xFB, 0xFF, 0x7C, 0xC6, 0x18, 0xC1, 0xB0, 0x36, 0x03, 0x80, 0x70, 0xF1, + 0xFE, 0x3D, 0xBB, 0x37, 0x63, 0xF8, 0x77, 0x0E, 0xE1, 0x8C, 0xF7, 0xFB, + 0xCD, 0x83, 0x83, 0xC3, 0xBB, 0xDF, 0xEF, 0xF3, 0xFC, 0xF6, 0x18, 0xCC, + 0x33, 0x07, 0x81, 0xE0, 0x30, 0x0C, 0x06, 0x0F, 0xC3, 0xF0, 0xFF, 0xFF, + 0x30, 0xC3, 0x0C, 0x7F, 0xFF, 0x37, 0x66, 0x66, 0xCC, 0x66, 0x66, 0x73, + 0xFF, 0xFF, 0xFF, 0xF0, 0xCE, 0x66, 0x66, 0x33, 0x66, 0x66, 0xEC, 0x70, + 0x7C, 0xF3, 0xC0, 0xC0}; + +const GFXglyph FreeMonoBold9pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 11, 0, 1}, // 0x20 ' ' + {0, 3, 11, 11, 4, -10}, // 0x21 '!' + {5, 7, 5, 11, 2, -10}, // 0x22 '"' + {10, 8, 12, 11, 1, -10}, // 0x23 '#' + {22, 7, 14, 11, 2, -11}, // 0x24 '$' + {35, 7, 11, 11, 2, -10}, // 0x25 '%' + {45, 8, 10, 11, 1, -9}, // 0x26 '&' + {55, 3, 5, 11, 4, -10}, // 0x27 ''' + {57, 4, 14, 11, 5, -10}, // 0x28 '(' + {64, 4, 14, 11, 2, -10}, // 0x29 ')' + {71, 8, 7, 11, 2, -10}, // 0x2A '*' + {78, 8, 9, 11, 2, -8}, // 0x2B '+' + {87, 3, 5, 11, 3, -1}, // 0x2C ',' + {89, 9, 2, 11, 1, -5}, // 0x2D '-' + {92, 2, 2, 11, 4, -1}, // 0x2E '.' + {93, 7, 15, 11, 2, -12}, // 0x2F '/' + {107, 7, 12, 11, 2, -11}, // 0x30 '0' + {118, 7, 11, 11, 2, -10}, // 0x31 '1' + {128, 8, 12, 11, 1, -11}, // 0x32 '2' + {140, 8, 12, 11, 2, -11}, // 0x33 '3' + {152, 7, 10, 11, 2, -9}, // 0x34 '4' + {161, 9, 11, 11, 1, -10}, // 0x35 '5' + {174, 8, 12, 11, 2, -11}, // 0x36 '6' + {186, 8, 11, 11, 1, -10}, // 0x37 '7' + {197, 7, 12, 11, 2, -11}, // 0x38 '8' + {208, 8, 12, 11, 2, -11}, // 0x39 '9' + {220, 2, 8, 11, 4, -7}, // 0x3A ':' + {222, 3, 11, 11, 3, -7}, // 0x3B ';' + {227, 9, 8, 11, 1, -8}, // 0x3C '<' + {236, 9, 6, 11, 1, -7}, // 0x3D '=' + {243, 9, 8, 11, 1, -8}, // 0x3E '>' + {252, 8, 11, 11, 2, -10}, // 0x3F '?' + {263, 9, 15, 11, 1, -11}, // 0x40 '@' + {280, 11, 11, 11, 0, -10}, // 0x41 'A' + {296, 10, 11, 11, 1, -10}, // 0x42 'B' + {310, 9, 11, 11, 1, -10}, // 0x43 'C' + {323, 10, 11, 11, 0, -10}, // 0x44 'D' + {337, 9, 11, 11, 1, -10}, // 0x45 'E' + {350, 9, 11, 11, 1, -10}, // 0x46 'F' + {363, 10, 11, 11, 1, -10}, // 0x47 'G' + {377, 9, 11, 11, 1, -10}, // 0x48 'H' + {390, 6, 11, 11, 3, -10}, // 0x49 'I' + {399, 10, 11, 11, 1, -10}, // 0x4A 'J' + {413, 10, 11, 11, 1, -10}, // 0x4B 'K' + {427, 9, 11, 11, 1, -10}, // 0x4C 'L' + {440, 11, 11, 11, 0, -10}, // 0x4D 'M' + {456, 11, 11, 11, 0, -10}, // 0x4E 'N' + {472, 11, 11, 11, 0, -10}, // 0x4F 'O' + {488, 9, 11, 11, 1, -10}, // 0x50 'P' + {501, 11, 14, 11, 0, -10}, // 0x51 'Q' + {521, 9, 11, 11, 1, -10}, // 0x52 'R' + {534, 9, 11, 11, 1, -10}, // 0x53 'S' + {547, 9, 11, 11, 1, -10}, // 0x54 'T' + {560, 11, 11, 11, 0, -10}, // 0x55 'U' + {576, 11, 11, 11, 0, -10}, // 0x56 'V' + {592, 10, 11, 11, 0, -10}, // 0x57 'W' + {606, 10, 11, 11, 0, -10}, // 0x58 'X' + {620, 10, 11, 11, 0, -10}, // 0x59 'Y' + {634, 8, 11, 11, 2, -10}, // 0x5A 'Z' + {645, 4, 14, 11, 5, -10}, // 0x5B '[' + {652, 7, 15, 11, 2, -12}, // 0x5C '\' + {666, 4, 14, 11, 2, -10}, // 0x5D ']' + {673, 7, 6, 11, 2, -11}, // 0x5E '^' + {679, 11, 2, 11, 0, 3}, // 0x5F '_' + {682, 3, 3, 11, 3, -11}, // 0x60 '`' + {684, 9, 8, 11, 1, -7}, // 0x61 'a' + {693, 10, 11, 11, 0, -10}, // 0x62 'b' + {707, 9, 8, 11, 1, -7}, // 0x63 'c' + {716, 10, 11, 11, 1, -10}, // 0x64 'd' + {730, 9, 8, 11, 1, -7}, // 0x65 'e' + {739, 8, 11, 11, 2, -10}, // 0x66 'f' + {750, 9, 12, 11, 1, -7}, // 0x67 'g' + {764, 9, 11, 11, 1, -10}, // 0x68 'h' + {777, 8, 11, 11, 2, -10}, // 0x69 'i' + {788, 6, 15, 11, 2, -10}, // 0x6A 'j' + {800, 9, 11, 11, 1, -10}, // 0x6B 'k' + {813, 8, 11, 11, 2, -10}, // 0x6C 'l' + {824, 11, 8, 11, 0, -7}, // 0x6D 'm' + {835, 9, 8, 11, 1, -7}, // 0x6E 'n' + {844, 9, 8, 11, 1, -7}, // 0x6F 'o' + {853, 11, 12, 11, 0, -7}, // 0x70 'p' + {870, 11, 12, 11, 0, -7}, // 0x71 'q' + {887, 9, 8, 11, 1, -7}, // 0x72 'r' + {896, 8, 8, 11, 2, -7}, // 0x73 's' + {904, 8, 11, 11, 1, -10}, // 0x74 't' + {915, 9, 8, 11, 1, -7}, // 0x75 'u' + {924, 11, 8, 11, 0, -7}, // 0x76 'v' + {935, 11, 8, 11, 0, -7}, // 0x77 'w' + {946, 9, 8, 11, 1, -7}, // 0x78 'x' + {955, 10, 12, 11, 0, -7}, // 0x79 'y' + {970, 7, 8, 11, 2, -7}, // 0x7A 'z' + {977, 4, 14, 11, 3, -10}, // 0x7B '{' + {984, 2, 14, 11, 5, -10}, // 0x7C '|' + {988, 4, 14, 11, 4, -10}, // 0x7D '}' + {995, 9, 4, 11, 1, -6}}; // 0x7E '~' + +const GFXfont FreeMonoBold9pt7b PROGMEM = {(uint8_t *)FreeMonoBold9pt7bBitmaps, + (GFXglyph *)FreeMonoBold9pt7bGlyphs, + 0x20, 0x7E, 18}; + +// Approx. 1672 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMonoBoldOblique12pt7b.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMonoBoldOblique12pt7b.h new file mode 100644 index 0000000..095fdd3 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMonoBoldOblique12pt7b.h @@ -0,0 +1,271 @@ +#pragma once +#include + +const uint8_t FreeMonoBoldOblique12pt7bBitmaps[] PROGMEM = { + 0x1C, 0xF3, 0xCE, 0x38, 0xE7, 0x1C, 0x61, 0x86, 0x00, 0x63, 0x8C, 0x00, + 0xE7, 0xE7, 0xE6, 0xC6, 0xC6, 0xC4, 0x84, 0x03, 0x30, 0x19, 0x81, 0xDC, + 0x0C, 0xE0, 0x66, 0x1F, 0xFC, 0xFF, 0xE1, 0x98, 0x0C, 0xC0, 0xEE, 0x06, + 0x70, 0xFF, 0xCF, 0xFE, 0x1D, 0xC0, 0xCC, 0x06, 0x60, 0x77, 0x03, 0x30, + 0x00, 0x01, 0x00, 0x70, 0x0C, 0x07, 0xF1, 0xFE, 0x71, 0xCC, 0x11, 0x80, + 0x3F, 0x03, 0xF0, 0x0F, 0x20, 0x6E, 0x0D, 0xC3, 0x3F, 0xE7, 0xF8, 0x1C, + 0x03, 0x00, 0x60, 0x0C, 0x00, 0x0E, 0x03, 0xE0, 0xC4, 0x10, 0x82, 0x30, + 0x7C, 0x07, 0x78, 0x7C, 0x7F, 0x19, 0xF0, 0x62, 0x08, 0x41, 0x18, 0x3E, + 0x03, 0x80, 0x07, 0xC1, 0xF8, 0x62, 0x0C, 0x01, 0x80, 0x38, 0x0F, 0x03, + 0xF7, 0x6F, 0xD8, 0xF3, 0x1E, 0x7F, 0xE7, 0xF8, 0xFF, 0x6D, 0x20, 0x06, + 0x1C, 0x70, 0xC3, 0x06, 0x18, 0x30, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, + 0x70, 0x60, 0xC1, 0x00, 0x0C, 0x18, 0x38, 0x30, 0x60, 0xC1, 0x83, 0x06, + 0x0C, 0x30, 0x61, 0xC3, 0x0E, 0x38, 0x61, 0xC2, 0x00, 0x06, 0x00, 0xC0, + 0x18, 0x3F, 0x7F, 0xFE, 0xFF, 0x07, 0x81, 0xF8, 0x77, 0x0C, 0x60, 0x03, + 0x00, 0x70, 0x07, 0x00, 0x60, 0x06, 0x0F, 0xFF, 0xFF, 0xF0, 0xE0, 0x0C, + 0x00, 0xC0, 0x0C, 0x01, 0xC0, 0x18, 0x00, 0x1C, 0xE3, 0x1C, 0x63, 0x08, + 0x00, 0x7F, 0xFF, 0xFF, 0xC0, 0x7F, 0x00, 0x00, 0x08, 0x00, 0x70, 0x01, + 0x80, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x0C, 0x00, 0x70, 0x03, 0x80, 0x0C, + 0x00, 0x70, 0x03, 0x80, 0x0C, 0x00, 0x70, 0x03, 0x80, 0x0C, 0x00, 0x70, + 0x03, 0x80, 0x0C, 0x00, 0x20, 0x00, 0x07, 0x83, 0xF8, 0xE3, 0x98, 0x37, + 0x06, 0xC0, 0xD8, 0x1B, 0x03, 0xE0, 0xF8, 0x1B, 0x03, 0x60, 0xEE, 0x38, + 0xFE, 0x0F, 0x00, 0x03, 0xC1, 0xF0, 0x7E, 0x0C, 0xC0, 0x38, 0x07, 0x00, + 0xC0, 0x18, 0x07, 0x00, 0xE0, 0x18, 0x03, 0x00, 0x61, 0xFF, 0xFF, 0xF0, + 0x03, 0xE0, 0x3F, 0x83, 0x8E, 0x38, 0x31, 0x81, 0x80, 0x18, 0x01, 0xC0, + 0x1C, 0x01, 0xC0, 0x38, 0x03, 0x80, 0x38, 0x47, 0x87, 0x3F, 0xF3, 0xFF, + 0x80, 0x07, 0xC1, 0xFF, 0x18, 0x70, 0x03, 0x00, 0x30, 0x06, 0x07, 0xC0, + 0x7C, 0x00, 0xE0, 0x06, 0x00, 0x60, 0x06, 0xC1, 0xCF, 0xF8, 0x7E, 0x00, + 0x01, 0xE0, 0x3C, 0x0F, 0x03, 0x60, 0xCC, 0x3B, 0x8E, 0x63, 0x8C, 0x61, + 0x9F, 0xFB, 0xFF, 0x01, 0x81, 0xF8, 0x3F, 0x00, 0x0F, 0xF1, 0xFE, 0x18, + 0x01, 0x80, 0x18, 0x03, 0xF8, 0x3F, 0xC3, 0x8E, 0x00, 0x60, 0x06, 0x00, + 0x60, 0x0C, 0xC1, 0xCF, 0xF8, 0x7E, 0x00, 0x03, 0xE1, 0xFC, 0x70, 0x1C, + 0x03, 0x00, 0xC0, 0x1B, 0xC7, 0xFC, 0xF3, 0x98, 0x33, 0x06, 0x60, 0xCE, + 0x30, 0xFC, 0x0F, 0x00, 0xFF, 0xFF, 0xFB, 0x07, 0x60, 0xC0, 0x38, 0x06, + 0x01, 0xC0, 0x30, 0x0E, 0x01, 0x80, 0x70, 0x1C, 0x03, 0x80, 0x60, 0x08, + 0x00, 0x07, 0x83, 0xF8, 0xE3, 0xB0, 0x36, 0x06, 0xC0, 0xDC, 0x31, 0xFC, + 0x3F, 0x8C, 0x3B, 0x03, 0x60, 0x6C, 0x39, 0xFE, 0x1F, 0x00, 0x07, 0x81, + 0xF8, 0x63, 0x98, 0x33, 0x06, 0x60, 0xCE, 0x79, 0xFF, 0x1E, 0xC0, 0x18, + 0x06, 0x01, 0xC0, 0x71, 0xFC, 0x3E, 0x00, 0x19, 0xCC, 0x00, 0x00, 0x00, + 0x67, 0x30, 0x06, 0x1C, 0x30, 0x00, 0x00, 0x00, 0x00, 0x38, 0x71, 0xC3, + 0x0E, 0x18, 0x20, 0x00, 0x00, 0x18, 0x03, 0xC0, 0x7C, 0x1F, 0x03, 0xE0, + 0x3E, 0x00, 0x7C, 0x01, 0xF0, 0x03, 0xE0, 0x07, 0x80, 0x08, 0x7F, 0xFB, + 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFB, 0xFF, 0xC0, 0x30, 0x01, + 0xE0, 0x07, 0xC0, 0x0F, 0x00, 0x3E, 0x00, 0x7C, 0x1F, 0x03, 0xE0, 0x7C, + 0x07, 0x80, 0x20, 0x00, 0x3E, 0x7F, 0xB0, 0xF8, 0x30, 0x18, 0x1C, 0x1C, + 0x3C, 0x38, 0x18, 0x00, 0x06, 0x07, 0x03, 0x00, 0x03, 0xC0, 0x7E, 0x0C, + 0x71, 0x83, 0x30, 0x33, 0x0F, 0x33, 0xE6, 0x76, 0x6C, 0x66, 0xC6, 0x6C, + 0x6C, 0xFC, 0xC7, 0xEC, 0x00, 0xC0, 0x0C, 0x00, 0xE3, 0x07, 0xF0, 0x3C, + 0x00, 0x07, 0xF0, 0x1F, 0xE0, 0x07, 0xC0, 0x1F, 0x80, 0x3B, 0x00, 0xE7, + 0x01, 0x8E, 0x07, 0x1C, 0x1F, 0xF8, 0x3F, 0xF0, 0xE0, 0x71, 0x80, 0xEF, + 0xC7, 0xFF, 0x8F, 0xC0, 0x3F, 0xF1, 0xFF, 0xC3, 0x06, 0x38, 0x31, 0xC1, + 0x8C, 0x18, 0x7F, 0xC3, 0xFE, 0x38, 0x39, 0xC0, 0xCC, 0x06, 0x60, 0x6F, + 0xFF, 0x7F, 0xE0, 0x03, 0xEC, 0x3F, 0xF1, 0xC3, 0x8C, 0x06, 0x60, 0x19, + 0x80, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x03, 0x00, 0x0C, 0x03, 0x3C, 0x1C, + 0x7F, 0xE0, 0x7E, 0x00, 0x3F, 0xE1, 0xFF, 0x87, 0x0C, 0x30, 0x31, 0x81, + 0x8C, 0x0C, 0xE0, 0x67, 0x03, 0x30, 0x31, 0x81, 0x8C, 0x0C, 0xE1, 0xCF, + 0xFC, 0x7F, 0x80, 0x1F, 0xFE, 0x3F, 0xFC, 0x38, 0x38, 0x70, 0x70, 0xCC, + 0xC1, 0x98, 0x03, 0xF0, 0x0F, 0xE0, 0x1D, 0x80, 0x31, 0x18, 0x60, 0x70, + 0xC0, 0xE7, 0xFF, 0x9F, 0xFF, 0x00, 0x1F, 0xFF, 0x1F, 0xFE, 0x0E, 0x06, + 0x0C, 0x0E, 0x0C, 0xC4, 0x0C, 0xC0, 0x1F, 0xC0, 0x1F, 0xC0, 0x19, 0xC0, + 0x19, 0x80, 0x18, 0x00, 0x38, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x07, 0xEC, + 0x7F, 0xF3, 0x83, 0x9C, 0x06, 0x60, 0x19, 0x80, 0x0C, 0x00, 0x30, 0xFE, + 0xC3, 0xFB, 0x01, 0xCC, 0x07, 0x3C, 0x38, 0x7F, 0xE0, 0x7E, 0x00, 0x0F, + 0xBF, 0x1F, 0xBE, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x1C, 0x0C, 0x1C, 0x1F, + 0xF8, 0x1F, 0xF8, 0x18, 0x18, 0x18, 0x38, 0x18, 0x38, 0x38, 0x30, 0x7C, + 0xFC, 0xFC, 0xF8, 0x3F, 0xF3, 0xFF, 0x03, 0x00, 0x70, 0x07, 0x00, 0x60, + 0x06, 0x00, 0x60, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xC0, 0xFF, 0xCF, 0xFC, + 0x03, 0xFF, 0x03, 0xFF, 0x00, 0x38, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, + 0x00, 0x70, 0x20, 0x70, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xE1, 0xC0, + 0xFF, 0x80, 0x3F, 0x00, 0x1F, 0x9F, 0x1F, 0x9E, 0x0E, 0x38, 0x0C, 0x70, + 0x0C, 0xE0, 0x0F, 0xC0, 0x1F, 0xC0, 0x1F, 0xE0, 0x1C, 0xE0, 0x18, 0x60, + 0x18, 0x70, 0x38, 0x70, 0xFE, 0x3C, 0xFC, 0x3C, 0x3F, 0xC1, 0xFE, 0x01, + 0x80, 0x1C, 0x00, 0xE0, 0x06, 0x00, 0x30, 0x01, 0x80, 0x1C, 0x18, 0xE0, + 0xC6, 0x06, 0x30, 0x7F, 0xFF, 0xFF, 0xF8, 0x1E, 0x07, 0x87, 0x81, 0xE0, + 0xF0, 0xF0, 0x7C, 0x7C, 0x1F, 0x1F, 0x06, 0xCF, 0x81, 0xBF, 0x60, 0xEF, + 0x98, 0x3B, 0xEE, 0x0C, 0x73, 0x83, 0x1C, 0xC0, 0xC0, 0x30, 0xFC, 0x7E, + 0x3F, 0x1F, 0x80, 0x3C, 0x3F, 0x3E, 0x3F, 0x1E, 0x0C, 0x1F, 0x1C, 0x1F, + 0x1C, 0x1B, 0x98, 0x3B, 0x98, 0x3B, 0x98, 0x31, 0xF8, 0x31, 0xF8, 0x30, + 0xF0, 0x70, 0xF0, 0xFC, 0x70, 0xF8, 0x70, 0x03, 0xE0, 0x3F, 0xE1, 0xC3, + 0x8C, 0x07, 0x60, 0x0D, 0x80, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x1B, 0x00, + 0x6E, 0x03, 0x1C, 0x38, 0x7F, 0xC0, 0x7C, 0x00, 0x3F, 0xE1, 0xFF, 0x83, + 0x0E, 0x38, 0x31, 0xC1, 0x8C, 0x0C, 0x60, 0xC3, 0xFC, 0x3F, 0xC1, 0xC0, + 0x0C, 0x00, 0x60, 0x0F, 0xF0, 0x7F, 0x80, 0x03, 0xE0, 0x3F, 0xE1, 0xC3, + 0x8C, 0x07, 0x60, 0x0D, 0x80, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x1B, 0x00, + 0x6E, 0x03, 0x1C, 0x38, 0x7F, 0xC0, 0xFC, 0x03, 0x02, 0x1F, 0xFC, 0xFF, + 0xE0, 0x1F, 0xF0, 0x3F, 0xF0, 0x38, 0x70, 0x60, 0x60, 0xC0, 0xC1, 0x87, + 0x07, 0xFC, 0x0F, 0xF0, 0x18, 0xF0, 0x30, 0xE0, 0x60, 0xC1, 0xC1, 0xCF, + 0xE1, 0xFF, 0xC3, 0xC0, 0x0F, 0xB1, 0xFF, 0x30, 0xE6, 0x06, 0x60, 0x67, + 0x80, 0x7F, 0x01, 0xFC, 0x01, 0xC4, 0x0C, 0xC0, 0xCE, 0x18, 0xFF, 0x8B, + 0xE0, 0x7F, 0xFB, 0xFF, 0xD9, 0xCF, 0xCE, 0x7C, 0x63, 0x63, 0x18, 0x18, + 0x01, 0xC0, 0x0E, 0x00, 0x60, 0x03, 0x00, 0x18, 0x0F, 0xF8, 0x7F, 0xC0, + 0x7E, 0xFF, 0xF3, 0xF3, 0x03, 0x1C, 0x0C, 0x60, 0x31, 0x81, 0xC6, 0x06, + 0x38, 0x18, 0xE0, 0x63, 0x03, 0x8C, 0x0C, 0x30, 0x70, 0x7F, 0x80, 0xF8, + 0x00, 0xFC, 0x7F, 0xF8, 0xFD, 0xC0, 0x61, 0x81, 0xC3, 0x87, 0x07, 0x0C, + 0x0E, 0x38, 0x0C, 0x60, 0x19, 0xC0, 0x3F, 0x00, 0x7C, 0x00, 0xF8, 0x00, + 0xE0, 0x01, 0x80, 0x00, 0x7E, 0x7E, 0xFC, 0xFD, 0xC0, 0x73, 0x9C, 0xE7, + 0x79, 0x8E, 0xF7, 0x1B, 0xEE, 0x36, 0xD8, 0x7D, 0xF0, 0xF3, 0xE1, 0xE7, + 0x83, 0x8F, 0x07, 0x1E, 0x1C, 0x38, 0x00, 0x1F, 0x1F, 0x1F, 0x1F, 0x0E, + 0x1C, 0x07, 0x38, 0x07, 0x70, 0x03, 0xE0, 0x03, 0xC0, 0x03, 0xC0, 0x07, + 0xE0, 0x0E, 0xE0, 0x1C, 0x70, 0x38, 0x70, 0xFC, 0xFC, 0xFC, 0xFC, 0xF8, + 0xFF, 0xC7, 0xCC, 0x38, 0x73, 0x83, 0x9C, 0x0F, 0xC0, 0x7C, 0x01, 0xC0, + 0x0C, 0x00, 0x60, 0x03, 0x00, 0x38, 0x0F, 0xF8, 0x7F, 0x80, 0x0F, 0xF8, + 0x7F, 0xE1, 0xC7, 0x86, 0x1C, 0x18, 0xE0, 0x07, 0x00, 0x38, 0x01, 0xC0, + 0x0E, 0x00, 0x70, 0xC3, 0x83, 0x1C, 0x1C, 0x7F, 0xF3, 0xFF, 0x80, 0x0F, + 0x87, 0xC3, 0x03, 0x81, 0xC0, 0xC0, 0x60, 0x30, 0x38, 0x1C, 0x0C, 0x06, + 0x03, 0x03, 0x81, 0xC0, 0xC0, 0x60, 0x3E, 0x3F, 0x00, 0x41, 0xC3, 0x83, + 0x07, 0x0E, 0x1C, 0x18, 0x38, 0x70, 0xE0, 0xC1, 0xC3, 0x83, 0x06, 0x0E, + 0x1C, 0x18, 0x20, 0x1F, 0x0F, 0x80, 0xC0, 0xE0, 0x70, 0x30, 0x18, 0x0C, + 0x0E, 0x07, 0x03, 0x01, 0x80, 0xC0, 0xE0, 0x70, 0x30, 0x18, 0x7C, 0x3E, + 0x00, 0x02, 0x01, 0x80, 0xF0, 0x7E, 0x3B, 0x9C, 0x7E, 0x1F, 0x03, 0xFF, + 0xFF, 0xFF, 0xFC, 0xCE, 0x73, 0x1F, 0xC3, 0xFE, 0x00, 0x60, 0x06, 0x0F, + 0xE3, 0xFE, 0x70, 0xCC, 0x0C, 0xC3, 0xCF, 0xFF, 0x7F, 0xF0, 0x1E, 0x00, + 0x3C, 0x00, 0x38, 0x00, 0x70, 0x00, 0xDF, 0x81, 0xFF, 0x83, 0xC3, 0x8F, + 0x03, 0x1C, 0x06, 0x38, 0x0C, 0x70, 0x18, 0xE0, 0x63, 0xE1, 0x9F, 0xFE, + 0x3D, 0xF8, 0x00, 0x0F, 0xF3, 0xFF, 0x30, 0x76, 0x07, 0xE0, 0x6C, 0x00, + 0xC0, 0x0C, 0x00, 0xE0, 0x67, 0xFE, 0x3F, 0x80, 0x00, 0x3C, 0x00, 0xF0, + 0x01, 0xC0, 0x06, 0x07, 0xD8, 0x7F, 0xE3, 0x0F, 0x98, 0x1E, 0x60, 0x73, + 0x01, 0xCC, 0x07, 0x30, 0x3C, 0xE1, 0xF1, 0xFF, 0xE3, 0xF7, 0x80, 0x0F, + 0xC1, 0xFE, 0x78, 0x76, 0x03, 0xFF, 0xFF, 0xFF, 0xC0, 0x0C, 0x00, 0xE0, + 0xE7, 0xFE, 0x1F, 0x80, 0x00, 0xFC, 0x07, 0xF8, 0x0C, 0x00, 0x38, 0x01, + 0xFF, 0x07, 0xFE, 0x01, 0x80, 0x07, 0x00, 0x0E, 0x00, 0x18, 0x00, 0x30, + 0x00, 0x60, 0x01, 0xC0, 0x1F, 0xF8, 0x3F, 0xF0, 0x00, 0x0F, 0xBC, 0x7F, + 0xF3, 0x0F, 0x18, 0x1C, 0xC0, 0x73, 0x01, 0x8C, 0x0E, 0x30, 0x38, 0xE3, + 0xE1, 0xFF, 0x83, 0xEC, 0x00, 0x30, 0x01, 0xC0, 0x06, 0x07, 0xF0, 0x1F, + 0x80, 0x1E, 0x01, 0xF0, 0x03, 0x00, 0x18, 0x00, 0xDE, 0x0F, 0xF8, 0x78, + 0xC3, 0x86, 0x18, 0x30, 0xC1, 0x8E, 0x1C, 0x70, 0xE3, 0x06, 0x7E, 0xFF, + 0xE7, 0xE0, 0x03, 0x80, 0x70, 0x00, 0x0F, 0xC1, 0xF0, 0x06, 0x00, 0xC0, + 0x38, 0x07, 0x00, 0xC0, 0x18, 0x03, 0x0F, 0xFF, 0xFF, 0xC0, 0x00, 0x70, + 0x07, 0x00, 0x00, 0xFF, 0x1F, 0xF0, 0x07, 0x00, 0x70, 0x06, 0x00, 0x60, + 0x06, 0x00, 0xE0, 0x0E, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x1C, 0x03, 0x87, + 0xF0, 0xFE, 0x00, 0x1E, 0x00, 0x78, 0x00, 0xE0, 0x03, 0x80, 0x0C, 0xFC, + 0x33, 0xE0, 0xDE, 0x07, 0xE0, 0x1F, 0x00, 0x7C, 0x01, 0xF8, 0x06, 0xF0, + 0x39, 0xC3, 0xE7, 0xEF, 0x1F, 0x80, 0x0F, 0x81, 0xF0, 0x06, 0x01, 0xC0, + 0x38, 0x06, 0x00, 0xC0, 0x18, 0x07, 0x00, 0xE0, 0x18, 0x03, 0x00, 0x61, + 0xFF, 0xFF, 0xF8, 0x3F, 0xBC, 0x7F, 0xFC, 0xF3, 0x98, 0xC6, 0x33, 0x9C, + 0xE7, 0x39, 0xCC, 0x63, 0x18, 0xC6, 0x31, 0x8D, 0xF7, 0xBF, 0xEF, 0x78, + 0x3D, 0xE1, 0xFF, 0x8F, 0x8C, 0x38, 0x61, 0x83, 0x0C, 0x18, 0xE1, 0xC7, + 0x0E, 0x30, 0x67, 0xEF, 0xFE, 0x7E, 0x07, 0xC1, 0xFE, 0x38, 0x76, 0x03, + 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x06, 0xE1, 0xC7, 0xF8, 0x3E, 0x00, 0x1E, + 0xFC, 0x1F, 0xFE, 0x0F, 0x87, 0x0F, 0x03, 0x0E, 0x03, 0x0E, 0x03, 0x0E, + 0x07, 0x0E, 0x06, 0x1F, 0x0C, 0x1F, 0xF8, 0x19, 0xF0, 0x18, 0x00, 0x18, + 0x00, 0x38, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0x0F, 0xDE, 0x3F, 0xFC, 0xC3, + 0xE3, 0x03, 0x84, 0x07, 0x18, 0x0E, 0x30, 0x1C, 0x60, 0x78, 0xE1, 0xE0, + 0xFF, 0xC0, 0xF9, 0x80, 0x03, 0x00, 0x0E, 0x00, 0x1C, 0x01, 0xFC, 0x03, + 0xF8, 0x1E, 0x78, 0x7F, 0xF0, 0x7C, 0xC3, 0xC0, 0x0E, 0x00, 0x30, 0x00, + 0xC0, 0x03, 0x00, 0x1C, 0x03, 0xFF, 0x0F, 0xFC, 0x00, 0x07, 0xF1, 0xFF, + 0x30, 0x73, 0x86, 0x3F, 0x81, 0xFE, 0x03, 0xE6, 0x06, 0xE0, 0xEF, 0xFC, + 0xFF, 0x00, 0x0C, 0x07, 0x01, 0x83, 0xFF, 0xFF, 0xCE, 0x03, 0x00, 0xC0, + 0x30, 0x1C, 0x07, 0x01, 0x83, 0x7F, 0xCF, 0xC0, 0xF0, 0xFF, 0x1F, 0x60, + 0x76, 0x07, 0x60, 0x76, 0x06, 0x60, 0x66, 0x0E, 0x61, 0xE7, 0xFF, 0x3E, + 0xF0, 0x7E, 0x7E, 0xFC, 0xFC, 0xE0, 0xC0, 0xC3, 0x81, 0x86, 0x03, 0x98, + 0x07, 0x70, 0x06, 0xC0, 0x0F, 0x80, 0x1E, 0x00, 0x38, 0x00, 0xF8, 0x7F, + 0xE3, 0xE6, 0x63, 0x1B, 0xDC, 0x6F, 0x61, 0xFF, 0x87, 0xFC, 0x1E, 0xF0, + 0x73, 0x81, 0xCE, 0x06, 0x38, 0x00, 0x3E, 0x7C, 0xF9, 0xF1, 0xE7, 0x03, + 0xF8, 0x07, 0xC0, 0x1F, 0x01, 0xFC, 0x0F, 0x38, 0x78, 0xFB, 0xF7, 0xEF, + 0x9F, 0x80, 0x1F, 0x1F, 0x3E, 0x1F, 0x1C, 0x1C, 0x0C, 0x18, 0x0E, 0x38, + 0x0E, 0x70, 0x06, 0x60, 0x07, 0xE0, 0x07, 0xC0, 0x07, 0xC0, 0x03, 0x80, + 0x07, 0x00, 0x07, 0x00, 0x0E, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x1F, 0xF1, + 0xFF, 0x38, 0xE3, 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC6, 0x38, 0x67, + 0xFE, 0x7F, 0xE0, 0x01, 0xC0, 0xF0, 0x70, 0x18, 0x06, 0x03, 0x80, 0xE0, + 0x30, 0x1C, 0x3E, 0x0F, 0x00, 0x60, 0x18, 0x06, 0x03, 0x80, 0xC0, 0x30, + 0x0F, 0x01, 0xC0, 0x0C, 0x71, 0xC7, 0x18, 0x63, 0x8E, 0x30, 0xC3, 0x1C, + 0x71, 0x86, 0x38, 0xE3, 0x04, 0x00, 0x0E, 0x07, 0x80, 0xC0, 0x60, 0x70, + 0x30, 0x18, 0x0C, 0x06, 0x01, 0xC1, 0xE1, 0xC0, 0xC0, 0xE0, 0x70, 0x30, + 0x38, 0x78, 0x38, 0x00, 0x3C, 0x27, 0xE6, 0xEF, 0xCC, 0x38}; + +const GFXglyph FreeMonoBoldOblique12pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 14, 0, 1}, // 0x20 ' ' + {0, 6, 15, 14, 6, -14}, // 0x21 '!' + {12, 8, 7, 14, 6, -13}, // 0x22 '"' + {19, 13, 18, 14, 2, -15}, // 0x23 '#' + {49, 11, 20, 14, 3, -16}, // 0x24 '$' + {77, 11, 15, 14, 3, -14}, // 0x25 '%' + {98, 11, 13, 14, 2, -12}, // 0x26 '&' + {116, 3, 7, 14, 8, -13}, // 0x27 ''' + {119, 7, 19, 14, 7, -14}, // 0x28 '(' + {136, 7, 19, 14, 2, -14}, // 0x29 ')' + {153, 11, 10, 14, 4, -14}, // 0x2A '*' + {167, 12, 13, 14, 3, -12}, // 0x2B '+' + {187, 6, 7, 14, 3, -2}, // 0x2C ',' + {193, 13, 2, 14, 2, -7}, // 0x2D '-' + {197, 3, 3, 14, 6, -2}, // 0x2E '.' + {199, 14, 20, 14, 2, -16}, // 0x2F '/' + {234, 11, 15, 14, 3, -14}, // 0x30 '0' + {255, 11, 15, 14, 2, -14}, // 0x31 '1' + {276, 13, 15, 14, 1, -14}, // 0x32 '2' + {301, 12, 15, 14, 2, -14}, // 0x33 '3' + {324, 11, 14, 14, 3, -13}, // 0x34 '4' + {344, 12, 15, 14, 2, -14}, // 0x35 '5' + {367, 11, 15, 14, 4, -14}, // 0x36 '6' + {388, 11, 15, 14, 4, -14}, // 0x37 '7' + {409, 11, 15, 14, 3, -14}, // 0x38 '8' + {430, 11, 15, 14, 3, -14}, // 0x39 '9' + {451, 5, 11, 14, 5, -10}, // 0x3A ':' + {458, 7, 15, 14, 3, -10}, // 0x3B ';' + {472, 13, 11, 14, 2, -11}, // 0x3C '<' + {490, 13, 7, 14, 2, -9}, // 0x3D '=' + {502, 13, 11, 14, 2, -11}, // 0x3E '>' + {520, 9, 14, 14, 5, -13}, // 0x3F '?' + {536, 12, 19, 14, 2, -14}, // 0x40 '@' + {565, 15, 14, 14, 0, -13}, // 0x41 'A' + {592, 13, 14, 14, 1, -13}, // 0x42 'B' + {615, 14, 14, 14, 2, -13}, // 0x43 'C' + {640, 13, 14, 14, 1, -13}, // 0x44 'D' + {663, 15, 14, 14, 0, -13}, // 0x45 'E' + {690, 16, 14, 14, 0, -13}, // 0x46 'F' + {718, 14, 14, 14, 1, -13}, // 0x47 'G' + {743, 16, 14, 14, 0, -13}, // 0x48 'H' + {771, 12, 14, 14, 2, -13}, // 0x49 'I' + {792, 16, 14, 14, 0, -13}, // 0x4A 'J' + {820, 16, 14, 14, 0, -13}, // 0x4B 'K' + {848, 13, 14, 14, 1, -13}, // 0x4C 'L' + {871, 18, 14, 14, 0, -13}, // 0x4D 'M' + {903, 16, 14, 14, 1, -13}, // 0x4E 'N' + {931, 14, 14, 14, 1, -13}, // 0x4F 'O' + {956, 13, 14, 14, 1, -13}, // 0x50 'P' + {979, 14, 17, 14, 1, -13}, // 0x51 'Q' + {1009, 15, 14, 14, 0, -13}, // 0x52 'R' + {1036, 12, 14, 14, 3, -13}, // 0x53 'S' + {1057, 13, 14, 14, 2, -13}, // 0x54 'T' + {1080, 14, 14, 14, 2, -13}, // 0x55 'U' + {1105, 15, 14, 14, 1, -13}, // 0x56 'V' + {1132, 15, 14, 14, 1, -13}, // 0x57 'W' + {1159, 16, 14, 14, 0, -13}, // 0x58 'X' + {1187, 13, 14, 14, 2, -13}, // 0x59 'Y' + {1210, 14, 14, 14, 1, -13}, // 0x5A 'Z' + {1235, 9, 19, 14, 5, -14}, // 0x5B '[' + {1257, 7, 20, 14, 5, -16}, // 0x5C '\' + {1275, 9, 19, 14, 3, -14}, // 0x5D ']' + {1297, 10, 8, 14, 4, -15}, // 0x5E '^' + {1307, 15, 2, 14, -1, 4}, // 0x5F '_' + {1311, 4, 4, 14, 7, -15}, // 0x60 '`' + {1313, 12, 11, 14, 2, -10}, // 0x61 'a' + {1330, 15, 15, 14, -1, -14}, // 0x62 'b' + {1359, 12, 11, 14, 2, -10}, // 0x63 'c' + {1376, 14, 15, 14, 2, -14}, // 0x64 'd' + {1403, 12, 11, 14, 2, -10}, // 0x65 'e' + {1420, 15, 15, 14, 2, -14}, // 0x66 'f' + {1449, 14, 16, 14, 2, -10}, // 0x67 'g' + {1477, 13, 15, 14, 1, -14}, // 0x68 'h' + {1502, 11, 14, 14, 2, -13}, // 0x69 'i' + {1522, 12, 19, 14, 1, -13}, // 0x6A 'j' + {1551, 14, 15, 14, 1, -14}, // 0x6B 'k' + {1578, 11, 15, 14, 2, -14}, // 0x6C 'l' + {1599, 15, 11, 14, 0, -10}, // 0x6D 'm' + {1620, 13, 11, 14, 1, -10}, // 0x6E 'n' + {1638, 12, 11, 14, 2, -10}, // 0x6F 'o' + {1655, 16, 16, 14, -1, -10}, // 0x70 'p' + {1687, 15, 16, 14, 1, -10}, // 0x71 'q' + {1717, 14, 11, 14, 1, -10}, // 0x72 'r' + {1737, 12, 11, 14, 2, -10}, // 0x73 's' + {1754, 10, 14, 14, 2, -13}, // 0x74 't' + {1772, 12, 11, 14, 2, -10}, // 0x75 'u' + {1789, 15, 11, 14, 1, -10}, // 0x76 'v' + {1810, 14, 11, 14, 2, -10}, // 0x77 'w' + {1830, 14, 11, 14, 1, -10}, // 0x78 'x' + {1850, 16, 16, 14, 0, -10}, // 0x79 'y' + {1882, 12, 11, 14, 2, -10}, // 0x7A 'z' + {1899, 10, 19, 14, 4, -14}, // 0x7B '{' + {1923, 6, 19, 14, 5, -14}, // 0x7C '|' + {1938, 9, 19, 14, 3, -14}, // 0x7D '}' + {1960, 12, 4, 14, 3, -7}}; // 0x7E '~' + +const GFXfont FreeMonoBoldOblique12pt7b PROGMEM = { + (uint8_t *)FreeMonoBoldOblique12pt7bBitmaps, + (GFXglyph *)FreeMonoBoldOblique12pt7bGlyphs, 0x20, 0x7E, 24}; + +// Approx. 2638 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMonoBoldOblique18pt7b.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMonoBoldOblique18pt7b.h new file mode 100644 index 0000000..0400f25 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMonoBoldOblique18pt7b.h @@ -0,0 +1,462 @@ +#pragma once +#include + +const uint8_t FreeMonoBoldOblique18pt7bBitmaps[] PROGMEM = { + 0x0F, 0x07, 0xC7, 0xE3, 0xF1, 0xF0, 0xF8, 0xFC, 0x7C, 0x3E, 0x1F, 0x0F, + 0x07, 0x87, 0xC3, 0xC1, 0xE0, 0x60, 0x00, 0x38, 0x3E, 0x1F, 0x0F, 0x83, + 0x80, 0xF8, 0xFF, 0x0E, 0xF1, 0xEF, 0x1E, 0xE1, 0xCE, 0x1C, 0xC1, 0xCC, + 0x18, 0xC1, 0x88, 0x18, 0x00, 0xE3, 0x80, 0x79, 0xE0, 0x1C, 0x70, 0x07, + 0x1C, 0x03, 0xCF, 0x00, 0xF3, 0xC0, 0x38, 0xE0, 0x7F, 0xFF, 0x3F, 0xFF, + 0xCF, 0xFF, 0xF3, 0xFF, 0xF8, 0x3C, 0xF0, 0x0F, 0x3C, 0x03, 0x8E, 0x0F, + 0xFF, 0xE3, 0xFF, 0xFC, 0xFF, 0xFF, 0x3F, 0xFF, 0x83, 0xCF, 0x00, 0xF3, + 0xC0, 0x38, 0xE0, 0x1E, 0x78, 0x07, 0x9E, 0x01, 0xC7, 0x00, 0x71, 0xC0, + 0x00, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x07, 0x80, 0x03, 0xF0, 0x03, 0xFF, + 0x81, 0xFF, 0xF0, 0xFF, 0xF8, 0x3C, 0x1E, 0x1E, 0x07, 0x87, 0x80, 0x01, + 0xF0, 0x00, 0x7F, 0xC0, 0x0F, 0xFC, 0x01, 0xFF, 0x80, 0x07, 0xF0, 0x00, + 0x3C, 0x70, 0x0F, 0x3C, 0x03, 0xCF, 0x83, 0xE3, 0xFF, 0xF8, 0xFF, 0xFC, + 0x3F, 0xFE, 0x0C, 0xFE, 0x00, 0x1C, 0x00, 0x07, 0x00, 0x03, 0xC0, 0x00, + 0xF0, 0x00, 0x18, 0x00, 0x03, 0xC0, 0x0F, 0xE0, 0x1C, 0x70, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x70, 0x38, 0xE0, 0x1F, 0xC3, 0x0F, 0x1F, 0x01, 0xFC, + 0x0F, 0xE0, 0x7F, 0x00, 0xF8, 0xF0, 0x83, 0xF8, 0x07, 0x1C, 0x0E, 0x0C, + 0x0C, 0x0C, 0x0C, 0x1C, 0x0E, 0x38, 0x07, 0xF0, 0x03, 0xC0, 0x00, 0x7A, + 0x01, 0xFF, 0x03, 0xFF, 0x07, 0xFE, 0x0F, 0x9C, 0x0F, 0x00, 0x0F, 0x00, + 0x0F, 0x00, 0x07, 0x80, 0x1F, 0x80, 0x3F, 0xC0, 0x7F, 0xCF, 0x79, 0xFF, + 0xF1, 0xFE, 0xF1, 0xFC, 0xF0, 0xF8, 0xFF, 0xFE, 0xFF, 0xFE, 0x7F, 0xFE, + 0x1F, 0xBC, 0x7B, 0xFD, 0xEF, 0x73, 0x9C, 0xC6, 0x00, 0x01, 0xC0, 0xF0, + 0x3C, 0x1E, 0x0F, 0x03, 0xC1, 0xE0, 0x70, 0x3C, 0x0F, 0x07, 0x81, 0xE0, + 0x78, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3E, + 0x07, 0x81, 0xE0, 0x7C, 0x1F, 0x03, 0x80, 0x07, 0x03, 0xC0, 0xF8, 0x3E, + 0x07, 0x81, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, + 0xF0, 0x78, 0x1E, 0x07, 0x81, 0xC0, 0xF0, 0x3C, 0x1E, 0x07, 0x83, 0xC1, + 0xE0, 0x78, 0x3C, 0x0E, 0x00, 0x00, 0xC0, 0x03, 0xC0, 0x07, 0x00, 0x0E, + 0x02, 0x3C, 0x0F, 0xFF, 0xFF, 0xFF, 0xBF, 0xFE, 0x1F, 0xF0, 0x1F, 0x80, + 0x7F, 0x81, 0xEF, 0x07, 0x8F, 0x0F, 0x1E, 0x08, 0x10, 0x00, 0x00, 0x70, + 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xE0, 0x00, 0x38, 0x00, + 0x1E, 0x03, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x0F, + 0x00, 0x03, 0xC0, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x07, 0x80, + 0x01, 0xC0, 0x00, 0x70, 0x00, 0x0F, 0x87, 0x87, 0x83, 0x83, 0xC1, 0xC1, + 0xC0, 0xC0, 0xE0, 0x60, 0x00, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0x77, 0xFF, 0xF7, 0x00, 0x00, 0x00, 0x38, 0x00, 0x03, 0xC0, + 0x00, 0x1C, 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, 0xE0, 0x00, 0x0F, + 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x07, 0x80, 0x00, + 0x78, 0x00, 0x03, 0xC0, 0x00, 0x3C, 0x00, 0x03, 0xC0, 0x00, 0x1C, 0x00, + 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0xF0, + 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x07, 0x80, 0x00, 0x78, 0x00, 0x03, + 0xC0, 0x00, 0x3C, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0xFC, 0x01, 0xFF, + 0x01, 0xFF, 0xC1, 0xFF, 0xE1, 0xF1, 0xF9, 0xE0, 0x7C, 0xF0, 0x1E, 0xF0, + 0x0F, 0x78, 0x07, 0xB8, 0x03, 0x9C, 0x03, 0xDE, 0x01, 0xCF, 0x00, 0xE7, + 0x00, 0x73, 0xC0, 0x79, 0xE0, 0x3C, 0xF0, 0x1C, 0x78, 0x1E, 0x3E, 0x1E, + 0x0F, 0xFF, 0x07, 0xFF, 0x01, 0xFF, 0x00, 0x7E, 0x00, 0x00, 0x7C, 0x03, + 0xF8, 0x0F, 0xE0, 0x7F, 0xC0, 0xF7, 0x81, 0x8F, 0x00, 0x1C, 0x00, 0x38, + 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x00, 0x0E, 0x00, 0x3C, 0x00, + 0x78, 0x00, 0xF0, 0x01, 0xC0, 0x03, 0x81, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xEF, 0xFF, 0xC0, 0x00, 0x1F, 0x00, 0x07, 0xFC, 0x00, 0xFF, 0xE0, 0x1F, + 0xFF, 0x03, 0xC1, 0xF0, 0x78, 0x0F, 0x07, 0x80, 0xF0, 0x70, 0x0F, 0x00, + 0x01, 0xE0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x3F, 0x00, + 0x07, 0xE0, 0x01, 0xFC, 0x00, 0x3F, 0x80, 0x07, 0xE0, 0x01, 0xF8, 0x00, + 0x3F, 0x03, 0x87, 0xFF, 0xF8, 0x7F, 0xFF, 0x87, 0xFF, 0xF8, 0xFF, 0xFF, + 0x00, 0x00, 0xFE, 0x00, 0xFF, 0xC0, 0x7F, 0xF8, 0x3F, 0xFF, 0x0E, 0x07, + 0xC0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x1F, 0x00, 0x07, 0x80, 0x1F, 0xC0, + 0x0F, 0xE0, 0x03, 0xF0, 0x00, 0xFF, 0x00, 0x03, 0xE0, 0x00, 0x78, 0x00, + 0x1E, 0x00, 0x07, 0x80, 0x03, 0xC0, 0x03, 0xF1, 0xFF, 0xF8, 0xFF, 0xFC, + 0x3F, 0xFE, 0x03, 0xFE, 0x00, 0x00, 0x1F, 0x00, 0x3F, 0x00, 0x7F, 0x00, + 0xFE, 0x00, 0xFE, 0x01, 0xEE, 0x03, 0xDE, 0x07, 0x9E, 0x0F, 0x1C, 0x1E, + 0x1C, 0x3C, 0x3C, 0x78, 0x3C, 0xFF, 0xFE, 0xFF, 0xFE, 0xFF, 0xFE, 0xFF, + 0xFC, 0x00, 0x70, 0x03, 0xFC, 0x07, 0xFC, 0x07, 0xFC, 0x07, 0xF8, 0x07, + 0xFF, 0xC1, 0xFF, 0xF0, 0x7F, 0xFC, 0x3F, 0xFE, 0x0F, 0x00, 0x03, 0xC0, + 0x00, 0xE0, 0x00, 0x3B, 0xE0, 0x1F, 0xFE, 0x07, 0xFF, 0xC1, 0xFF, 0xF8, + 0x78, 0x3E, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, + 0x0F, 0x18, 0x0F, 0xCF, 0xFF, 0xE3, 0xFF, 0xF0, 0x7F, 0xF8, 0x07, 0xF0, + 0x00, 0x00, 0x0F, 0xC0, 0x0F, 0xFC, 0x03, 0xFF, 0x81, 0xFF, 0xE0, 0x7F, + 0x00, 0x1F, 0x80, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x9F, + 0x01, 0xEF, 0xF0, 0x3F, 0xFF, 0x0F, 0xFF, 0xF1, 0xFC, 0x3E, 0x3E, 0x03, + 0xC7, 0x80, 0x78, 0xF0, 0x0F, 0x1E, 0x03, 0xC3, 0xE0, 0xF8, 0x7F, 0xFE, + 0x07, 0xFF, 0x80, 0x7F, 0xE0, 0x07, 0xF0, 0x00, 0x7F, 0xFF, 0x7F, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x0E, 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x3C, + 0x00, 0x78, 0x00, 0x70, 0x00, 0xF0, 0x00, 0xE0, 0x01, 0xE0, 0x01, 0xC0, + 0x03, 0xC0, 0x07, 0x80, 0x07, 0x80, 0x0F, 0x00, 0x0E, 0x00, 0x1E, 0x00, + 0x1C, 0x00, 0x1C, 0x00, 0x00, 0x7E, 0x00, 0x3F, 0xF0, 0x0F, 0xFF, 0x03, + 0xFF, 0xF0, 0xF8, 0x3E, 0x3E, 0x03, 0xC7, 0x80, 0x78, 0xF0, 0x0F, 0x1E, + 0x03, 0xC3, 0xE0, 0xF0, 0x3F, 0xFC, 0x03, 0xFF, 0x00, 0xFF, 0xE0, 0x7F, + 0xFE, 0x1F, 0x83, 0xE3, 0xC0, 0x3C, 0xF0, 0x07, 0x9E, 0x01, 0xF3, 0xE0, + 0x7C, 0x7F, 0xFF, 0x87, 0xFF, 0xE0, 0x7F, 0xF0, 0x03, 0xF8, 0x00, 0x00, + 0x7E, 0x00, 0x7F, 0xC0, 0x3F, 0xF8, 0x1F, 0xFE, 0x0F, 0x87, 0xC3, 0xC0, + 0xF1, 0xE0, 0x3C, 0x78, 0x0F, 0x1E, 0x03, 0xC7, 0x81, 0xF1, 0xF1, 0xFC, + 0x7F, 0xFE, 0x0F, 0xFF, 0x81, 0xFD, 0xE0, 0x3E, 0xF0, 0x00, 0x7C, 0x00, + 0x3E, 0x00, 0x1F, 0x00, 0x1F, 0x81, 0xFF, 0xC0, 0xFF, 0xE0, 0x3F, 0xE0, + 0x07, 0xE0, 0x00, 0x1C, 0x7C, 0xF9, 0xF1, 0xC0, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x8F, 0x9F, 0x3E, 0x38, 0x01, 0xC0, 0x7C, 0x0F, 0x81, 0xF0, 0x3C, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xC0, 0xF0, 0x1E, + 0x07, 0x80, 0xE0, 0x38, 0x07, 0x01, 0xC0, 0x30, 0x0E, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xFC, 0x00, 0xFE, 0x00, 0xFE, 0x00, + 0xFE, 0x01, 0xFE, 0x01, 0xFE, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, + 0x00, 0x1F, 0xC0, 0x01, 0xFC, 0x00, 0x1F, 0xC0, 0x01, 0xF0, 0x00, 0x38, + 0x3F, 0xFF, 0xEF, 0xFF, 0xFD, 0xFF, 0xFF, 0x9F, 0xFF, 0xE0, 0x00, 0x00, + 0x00, 0x00, 0x1F, 0xFF, 0xF7, 0xFF, 0xFE, 0xFF, 0xFF, 0xDF, 0xFF, 0xF0, + 0x00, 0x00, 0x03, 0x80, 0x00, 0xFC, 0x00, 0x0F, 0xE0, 0x00, 0x7F, 0x00, + 0x07, 0xF0, 0x00, 0x3F, 0x80, 0x01, 0xFC, 0x00, 0x1F, 0xC0, 0x0F, 0xE0, + 0x07, 0xF0, 0x07, 0xF8, 0x03, 0xF8, 0x01, 0xFC, 0x00, 0x3E, 0x00, 0x07, + 0x00, 0x00, 0x07, 0xE0, 0xFF, 0xC7, 0xFF, 0xBF, 0xFF, 0xF0, 0x7F, 0x80, + 0xFE, 0x03, 0xC0, 0x0F, 0x00, 0x78, 0x0F, 0xE1, 0xFE, 0x0F, 0xF0, 0x7E, + 0x01, 0xE0, 0x07, 0x00, 0x00, 0x00, 0x70, 0x03, 0xE0, 0x0F, 0x80, 0x3E, + 0x00, 0x70, 0x00, 0x00, 0x3E, 0x00, 0x3F, 0xE0, 0x1F, 0xF8, 0x0F, 0x0F, + 0x07, 0x01, 0xC3, 0x80, 0x71, 0xE0, 0x1C, 0x70, 0x0E, 0x18, 0x0F, 0x8E, + 0x1F, 0xE3, 0x8F, 0xF0, 0xE7, 0x9C, 0x33, 0xC7, 0x1C, 0xE1, 0xC7, 0x38, + 0x71, 0xCF, 0x18, 0x73, 0xFE, 0x38, 0x7F, 0xCE, 0x0F, 0xF3, 0x80, 0x00, + 0xE0, 0x00, 0x38, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0xC0, 0x7F, 0xF0, 0x0F, + 0xF8, 0x01, 0xF8, 0x00, 0x01, 0xFF, 0x80, 0x07, 0xFE, 0x00, 0x1F, 0xF8, + 0x00, 0x7F, 0xE0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0x00, 0x07, 0xBC, 0x00, + 0x1C, 0xF0, 0x00, 0xF3, 0xC0, 0x07, 0x87, 0x80, 0x1E, 0x1E, 0x00, 0xF0, + 0x78, 0x07, 0xFF, 0xE0, 0x1F, 0xFF, 0x80, 0xFF, 0xFF, 0x07, 0xFF, 0xFC, + 0x1E, 0x00, 0xF1, 0xFE, 0x1F, 0xFF, 0xF8, 0x7F, 0xFF, 0xE1, 0xFF, 0xFF, + 0x07, 0xF8, 0x0F, 0xFF, 0xC0, 0x7F, 0xFF, 0x87, 0xFF, 0xFC, 0x1F, 0xFF, + 0xF0, 0x38, 0x0F, 0x81, 0xC0, 0x3C, 0x1E, 0x01, 0xE0, 0xF0, 0x3E, 0x07, + 0xFF, 0xE0, 0x3F, 0xFE, 0x03, 0xFF, 0xF8, 0x1F, 0xFF, 0xE0, 0xE0, 0x1F, + 0x87, 0x00, 0x3C, 0x38, 0x01, 0xE3, 0xC0, 0x0F, 0x1E, 0x00, 0xF3, 0xFF, + 0xFF, 0xBF, 0xFF, 0xF9, 0xFF, 0xFF, 0x8F, 0xFF, 0xF0, 0x00, 0x00, 0x7F, + 0x30, 0x0F, 0xFF, 0xC1, 0xFF, 0xFE, 0x1F, 0xFF, 0xF1, 0xF8, 0x3F, 0x1F, + 0x00, 0x78, 0xF0, 0x03, 0xCF, 0x80, 0x1C, 0x78, 0x00, 0x03, 0xC0, 0x00, + 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, + 0x00, 0x1F, 0x00, 0x38, 0x7E, 0x07, 0xC3, 0xFF, 0xFC, 0x0F, 0xFF, 0xC0, + 0x3F, 0xFC, 0x00, 0x7F, 0x80, 0x00, 0x0F, 0xFF, 0x80, 0x7F, 0xFE, 0x07, + 0xFF, 0xF8, 0x1F, 0xFF, 0xE0, 0x78, 0x1F, 0x03, 0x80, 0x7C, 0x1C, 0x01, + 0xE1, 0xE0, 0x0F, 0x0F, 0x00, 0x78, 0x70, 0x03, 0xC3, 0x80, 0x1E, 0x1C, + 0x00, 0xF1, 0xE0, 0x0F, 0x0F, 0x00, 0x78, 0x70, 0x07, 0xC3, 0x80, 0x7C, + 0x3C, 0x07, 0xC3, 0xFF, 0xFC, 0x3F, 0xFF, 0xC1, 0xFF, 0xFC, 0x0F, 0xFF, + 0x80, 0x00, 0x07, 0xFF, 0xFC, 0x3F, 0xFF, 0xF0, 0xFF, 0xFF, 0xC3, 0xFF, + 0xFF, 0x03, 0xC0, 0x3C, 0x0F, 0x00, 0xE0, 0x3C, 0x73, 0x80, 0xE3, 0xCC, + 0x03, 0xFF, 0x00, 0x1F, 0xFC, 0x00, 0x7F, 0xE0, 0x01, 0xFF, 0x80, 0x07, + 0x1E, 0x00, 0x3C, 0x70, 0x00, 0xF0, 0x07, 0x03, 0xC0, 0x1C, 0x0E, 0x00, + 0xF1, 0xFF, 0xFF, 0xC7, 0xFF, 0xFE, 0x3F, 0xFF, 0xF8, 0x7F, 0xFF, 0xE0, + 0x07, 0xFF, 0xFE, 0x1F, 0xFF, 0xFC, 0x3F, 0xFF, 0xF0, 0x7F, 0xFF, 0xE0, + 0x3C, 0x01, 0xC0, 0x70, 0x07, 0x80, 0xE1, 0x8E, 0x03, 0xC7, 0x1C, 0x07, + 0xFE, 0x00, 0x0F, 0xFC, 0x00, 0x1F, 0xF8, 0x00, 0x3F, 0xF0, 0x00, 0xF1, + 0xC0, 0x01, 0xE3, 0x80, 0x03, 0x80, 0x00, 0x07, 0x00, 0x00, 0x1E, 0x00, + 0x00, 0xFF, 0xE0, 0x03, 0xFF, 0xC0, 0x07, 0xFF, 0x80, 0x0F, 0xFE, 0x00, + 0x00, 0x00, 0x3F, 0x18, 0x0F, 0xFF, 0xC0, 0xFF, 0xFE, 0x0F, 0xFF, 0xF0, + 0xFC, 0x0F, 0x0F, 0x80, 0x38, 0xF8, 0x01, 0x87, 0x80, 0x00, 0x78, 0x00, + 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x7F, 0xEF, 0x07, 0xFF, 0x78, + 0x3F, 0xFB, 0xC0, 0xFF, 0x9E, 0x00, 0x38, 0xFC, 0x03, 0xC3, 0xFF, 0xFE, + 0x1F, 0xFF, 0xE0, 0x3F, 0xFC, 0x00, 0x7F, 0x80, 0x00, 0x03, 0xF8, 0xFE, + 0x0F, 0xF3, 0xFC, 0x1F, 0xE7, 0xF8, 0x3F, 0x8F, 0xE0, 0x3C, 0x07, 0x80, + 0x70, 0x0E, 0x00, 0xE0, 0x1C, 0x03, 0xC0, 0x78, 0x07, 0x80, 0xF0, 0x0F, + 0xFF, 0xC0, 0x1F, 0xFF, 0x80, 0x3F, 0xFF, 0x00, 0xFF, 0xFE, 0x01, 0xE0, + 0x3C, 0x03, 0x80, 0x70, 0x07, 0x00, 0xE0, 0x1E, 0x03, 0xC0, 0xFF, 0x1F, + 0xE1, 0xFE, 0x7F, 0xC7, 0xFC, 0xFF, 0x87, 0xF1, 0xFE, 0x00, 0x07, 0xFF, + 0xE1, 0xFF, 0xFC, 0x3F, 0xFF, 0x87, 0xFF, 0xE0, 0x07, 0x80, 0x00, 0xE0, + 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0x80, + 0x00, 0x70, 0x00, 0x1E, 0x00, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x0E, 0x00, + 0x01, 0xC0, 0x0F, 0xFF, 0xC3, 0xFF, 0xF8, 0x7F, 0xFF, 0x07, 0xFF, 0xE0, + 0x00, 0x3F, 0xFE, 0x00, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, 0x03, 0xFF, 0xE0, + 0x00, 0x1C, 0x00, 0x00, 0x38, 0x00, 0x00, 0x70, 0x00, 0x01, 0xE0, 0x00, + 0x03, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x0E, 0x00, 0x80, 0x1C, 0x03, 0x80, + 0x78, 0x0F, 0x00, 0xF0, 0x1E, 0x01, 0xC0, 0x38, 0x07, 0x80, 0x70, 0x1F, + 0x01, 0xFF, 0xFC, 0x03, 0xFF, 0xF0, 0x03, 0xFF, 0xC0, 0x00, 0xFC, 0x00, + 0x00, 0x07, 0xF8, 0xFC, 0x1F, 0xFB, 0xFC, 0x3F, 0xE7, 0xF0, 0x7F, 0xCF, + 0xE0, 0x3C, 0x1E, 0x00, 0x70, 0xF8, 0x00, 0xE3, 0xE0, 0x03, 0xCF, 0x00, + 0x07, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x1F, 0xF0, 0x00, 0x3F, 0xF0, 0x00, + 0xF9, 0xF0, 0x01, 0xE1, 0xE0, 0x03, 0x83, 0xE0, 0x07, 0x03, 0xC0, 0x1E, + 0x07, 0x80, 0xFF, 0x8F, 0xE3, 0xFF, 0x0F, 0xC7, 0xFE, 0x1F, 0x8F, 0xF8, + 0x3E, 0x00, 0x0F, 0xFE, 0x00, 0xFF, 0xF0, 0x1F, 0xFE, 0x00, 0xFF, 0xE0, + 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x03, 0xC0, + 0x00, 0x3C, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x07, 0x80, 0x60, 0x78, + 0x0F, 0x07, 0x80, 0xF0, 0x70, 0x0E, 0x07, 0x00, 0xE7, 0xFF, 0xFE, 0xFF, + 0xFF, 0xEF, 0xFF, 0xFE, 0xFF, 0xFF, 0xC0, 0x0F, 0xC0, 0x1F, 0x87, 0xE0, + 0x0F, 0xC7, 0xF8, 0x0F, 0xE1, 0xFC, 0x0F, 0xE0, 0x7E, 0x07, 0xE0, 0x3F, + 0x07, 0xF0, 0x3F, 0xC7, 0xF8, 0x1F, 0xE3, 0xF8, 0x0E, 0xF3, 0xDC, 0x07, + 0x7B, 0xDE, 0x03, 0x9F, 0xEF, 0x03, 0xCF, 0xE7, 0x81, 0xE7, 0xE3, 0x80, + 0xE3, 0xF1, 0xC0, 0x70, 0xF1, 0xE0, 0x38, 0x70, 0xF0, 0x3C, 0x00, 0x70, + 0x3F, 0xC1, 0xFE, 0x3F, 0xE1, 0xFF, 0x1F, 0xF0, 0xFF, 0x8F, 0xF0, 0x7F, + 0x80, 0x0F, 0xC1, 0xFE, 0x1F, 0xC1, 0xFF, 0x1F, 0xC3, 0xFE, 0x1F, 0xE1, + 0xFE, 0x07, 0xE0, 0x38, 0x07, 0xF0, 0x78, 0x07, 0xF0, 0x78, 0x0F, 0xF8, + 0x70, 0x0F, 0x78, 0x70, 0x0E, 0x78, 0xF0, 0x0E, 0x7C, 0xF0, 0x1E, 0x3C, + 0xF0, 0x1E, 0x3E, 0xE0, 0x1E, 0x1E, 0xE0, 0x1C, 0x1F, 0xE0, 0x1C, 0x0F, + 0xE0, 0x3C, 0x0F, 0xE0, 0x7F, 0x87, 0xC0, 0xFF, 0x87, 0xC0, 0xFF, 0x87, + 0xC0, 0xFF, 0x03, 0xC0, 0x00, 0x7E, 0x00, 0x1F, 0xF8, 0x07, 0xFF, 0xC0, + 0xFF, 0xFE, 0x1F, 0x87, 0xE3, 0xE0, 0x1F, 0x3C, 0x01, 0xF7, 0xC0, 0x0F, + 0x78, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x01, + 0xEF, 0x00, 0x3E, 0xF8, 0x03, 0xCF, 0x80, 0x7C, 0x7C, 0x1F, 0x87, 0xFF, + 0xF0, 0x3F, 0xFE, 0x01, 0xFF, 0x80, 0x07, 0xE0, 0x00, 0x0F, 0xFF, 0x80, + 0x7F, 0xFF, 0x07, 0xFF, 0xFC, 0x1F, 0xFF, 0xF0, 0x38, 0x0F, 0x81, 0xC0, + 0x3C, 0x1E, 0x01, 0xE0, 0xF0, 0x0F, 0x07, 0x00, 0xF0, 0x38, 0x0F, 0x83, + 0xFF, 0xF8, 0x1F, 0xFF, 0x80, 0xFF, 0xF8, 0x07, 0xFF, 0x00, 0x38, 0x00, + 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x03, 0xFF, 0x80, 0x3F, 0xFC, 0x01, 0xFF, + 0xE0, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x1F, 0xF8, 0x07, 0xFF, + 0xC0, 0xFF, 0xFE, 0x1F, 0x87, 0xE3, 0xE0, 0x1F, 0x3C, 0x01, 0xF7, 0xC0, + 0x0F, 0x78, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, + 0x01, 0xEF, 0x00, 0x3E, 0xF8, 0x03, 0xCF, 0x80, 0x7C, 0x7C, 0x1F, 0x87, + 0xFF, 0xF0, 0x3F, 0xFE, 0x01, 0xFF, 0x80, 0x07, 0xE0, 0x01, 0xFE, 0x30, + 0x3F, 0xFF, 0x87, 0xFF, 0xF0, 0x7F, 0xFF, 0x07, 0x83, 0xC0, 0x07, 0xFF, + 0x80, 0x3F, 0xFF, 0x80, 0xFF, 0xFF, 0x03, 0xFF, 0xFE, 0x03, 0xC0, 0xF8, + 0x0E, 0x01, 0xE0, 0x38, 0x07, 0x81, 0xE0, 0x3E, 0x07, 0x83, 0xF0, 0x1F, + 0xFF, 0x80, 0x7F, 0xFC, 0x01, 0xFF, 0xC0, 0x0F, 0xFF, 0x80, 0x3C, 0x3E, + 0x00, 0xE0, 0x7C, 0x03, 0x80, 0xF0, 0x1E, 0x03, 0xE1, 0xFF, 0x07, 0xFF, + 0xFC, 0x1F, 0xFF, 0xF0, 0x3F, 0xFF, 0x80, 0xF8, 0x00, 0x7C, 0xE0, 0x7F, + 0xFC, 0x1F, 0xFF, 0x87, 0xFF, 0xE0, 0xF8, 0x7C, 0x3C, 0x07, 0x87, 0x80, + 0xE0, 0xF0, 0x00, 0x1F, 0x00, 0x03, 0xFE, 0x00, 0x3F, 0xF8, 0x03, 0xFF, + 0x80, 0x07, 0xF8, 0x40, 0x1F, 0x3C, 0x01, 0xE7, 0x80, 0x3C, 0xFC, 0x1F, + 0x1F, 0xFF, 0xE3, 0xFF, 0xF8, 0x7F, 0xFE, 0x00, 0x7E, 0x00, 0x7F, 0xFF, + 0xEF, 0xFF, 0xFD, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0x0E, 0x1F, 0xE1, 0xC3, + 0xBC, 0x78, 0x77, 0x0F, 0x1E, 0xE1, 0xC1, 0x80, 0x38, 0x00, 0x0F, 0x00, + 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, 0x3C, 0x00, + 0x07, 0x80, 0x0F, 0xFE, 0x03, 0xFF, 0xE0, 0x7F, 0xFC, 0x0F, 0xFF, 0x00, + 0x7F, 0x8F, 0xF3, 0xFE, 0x7F, 0xDF, 0xF7, 0xFC, 0xFF, 0x1F, 0xE3, 0xC0, + 0x3C, 0x1C, 0x01, 0xE0, 0xE0, 0x0F, 0x0F, 0x00, 0x70, 0x78, 0x03, 0x83, + 0xC0, 0x3C, 0x1C, 0x01, 0xE0, 0xE0, 0x0E, 0x0F, 0x00, 0x70, 0x78, 0x03, + 0x83, 0xC0, 0x3C, 0x1F, 0x01, 0xC0, 0xFC, 0x3E, 0x03, 0xFF, 0xE0, 0x1F, + 0xFE, 0x00, 0x7F, 0xE0, 0x00, 0xFC, 0x00, 0x00, 0x7F, 0x81, 0xFE, 0xFF, + 0x87, 0xFF, 0xFF, 0x0F, 0xFB, 0xFC, 0x1F, 0xE1, 0xC0, 0x0F, 0x03, 0xC0, + 0x1C, 0x07, 0x80, 0x78, 0x0F, 0x01, 0xE0, 0x1E, 0x03, 0x80, 0x1E, 0x0F, + 0x00, 0x3C, 0x3C, 0x00, 0x78, 0x70, 0x00, 0xF1, 0xE0, 0x01, 0xE7, 0x80, + 0x01, 0xEF, 0x00, 0x03, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, + 0x0F, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x7F, 0x87, 0xFF, + 0xFF, 0x1F, 0xFF, 0xF8, 0x7F, 0xFF, 0xE1, 0xFE, 0x78, 0x00, 0xF1, 0xE3, + 0xC3, 0x87, 0x8F, 0x0E, 0x1E, 0x7C, 0x78, 0x79, 0xF9, 0xC1, 0xEF, 0xEF, + 0x07, 0xBF, 0xBC, 0x1D, 0xFE, 0xE0, 0x77, 0x7F, 0x81, 0xFD, 0xFE, 0x07, + 0xE3, 0xF0, 0x3F, 0x8F, 0xC0, 0xFC, 0x3F, 0x03, 0xF0, 0xF8, 0x0F, 0x83, + 0xE0, 0x3E, 0x0F, 0x80, 0xF0, 0x3C, 0x00, 0x07, 0xE0, 0x7E, 0x0F, 0xF0, + 0xFF, 0x0F, 0xF0, 0xFE, 0x0F, 0xE0, 0xFE, 0x03, 0xC0, 0xF8, 0x01, 0xE1, + 0xE0, 0x01, 0xF3, 0xC0, 0x00, 0xF7, 0x80, 0x00, 0x7F, 0x00, 0x00, 0x7E, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFF, 0x00, 0x03, 0xEF, + 0x00, 0x07, 0xCF, 0x80, 0x0F, 0x87, 0xC0, 0x1F, 0x03, 0xC0, 0x7F, 0x07, + 0xF0, 0xFF, 0x8F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xE0, 0x7E, 0x0F, + 0xEF, 0xF0, 0xFF, 0xFF, 0x0F, 0xEF, 0xE0, 0xFE, 0x3C, 0x0F, 0x01, 0xE1, + 0xE0, 0x1E, 0x3E, 0x00, 0xF7, 0xC0, 0x0F, 0xF8, 0x00, 0x7F, 0x00, 0x07, + 0xE0, 0x00, 0x3C, 0x00, 0x03, 0x80, 0x00, 0x78, 0x00, 0x07, 0x80, 0x00, + 0x78, 0x00, 0x07, 0x00, 0x07, 0xFF, 0x00, 0xFF, 0xF8, 0x0F, 0xFF, 0x00, + 0xFF, 0xF0, 0x00, 0x07, 0xFF, 0xE0, 0xFF, 0xFC, 0x3F, 0xFF, 0x87, 0xFF, + 0xF0, 0xF0, 0x7C, 0x1C, 0x1F, 0x03, 0x87, 0xC0, 0x61, 0xF0, 0x00, 0x7C, + 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x07, + 0x07, 0xC0, 0xE1, 0xF0, 0x3C, 0x7C, 0x07, 0x9F, 0xFF, 0xF3, 0xFF, 0xFC, + 0x7F, 0xFF, 0x8F, 0xFF, 0xF0, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xE0, + 0x70, 0x07, 0x80, 0x3C, 0x01, 0xC0, 0x0E, 0x00, 0xF0, 0x07, 0x80, 0x3C, + 0x01, 0xC0, 0x0E, 0x00, 0xF0, 0x07, 0x80, 0x38, 0x01, 0xC0, 0x0E, 0x00, + 0xF0, 0x07, 0x80, 0x38, 0x01, 0xC0, 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3F, + 0x80, 0xE0, 0x38, 0x0F, 0x03, 0xC0, 0xF0, 0x1C, 0x07, 0x81, 0xE0, 0x78, + 0x0E, 0x03, 0xC0, 0xF0, 0x3C, 0x07, 0x01, 0xE0, 0x78, 0x1E, 0x03, 0x80, + 0xF0, 0x3C, 0x0F, 0x01, 0xE0, 0x78, 0x1E, 0x03, 0x80, 0xF0, 0x3C, 0x06, + 0x07, 0xF8, 0x3F, 0xC1, 0xFC, 0x0F, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, + 0x1C, 0x00, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0x80, 0x1C, 0x01, 0xE0, 0x0F, + 0x00, 0x78, 0x03, 0x80, 0x1C, 0x01, 0xE0, 0x0F, 0x00, 0x70, 0x03, 0x80, + 0x1C, 0x0F, 0xE0, 0xFF, 0x07, 0xF0, 0x3F, 0x80, 0x00, 0x40, 0x01, 0x80, + 0x07, 0x80, 0x3F, 0x80, 0xFF, 0x03, 0xFF, 0x0F, 0x9F, 0x3E, 0x1E, 0xF8, + 0x3F, 0xE0, 0x3F, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xF0, 0xC3, 0xC7, 0x0E, 0x3C, 0x30, 0x00, 0xFE, 0x00, + 0x7F, 0xF0, 0x1F, 0xFF, 0x03, 0xFF, 0xE0, 0x00, 0x3C, 0x07, 0xFF, 0x83, + 0xFF, 0xF0, 0xFF, 0xFC, 0x3F, 0xFF, 0x8F, 0x80, 0xF3, 0xE0, 0x1E, 0x78, + 0x1F, 0x8F, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xF8, 0xFE, 0x7E, 0x07, + 0xE0, 0x00, 0x3F, 0x80, 0x00, 0xFC, 0x00, 0x03, 0xF0, 0x00, 0x01, 0xC0, + 0x00, 0x0F, 0x00, 0x00, 0x3C, 0xFC, 0x00, 0xEF, 0xFC, 0x03, 0xFF, 0xF8, + 0x1F, 0xFF, 0xE0, 0x7E, 0x0F, 0xC1, 0xE0, 0x1F, 0x07, 0x00, 0x3C, 0x1C, + 0x00, 0xF0, 0xE0, 0x03, 0xC3, 0x80, 0x1E, 0x0F, 0x00, 0xF8, 0x3E, 0x07, + 0xC7, 0xFF, 0xFF, 0x3F, 0xFF, 0xF8, 0xFF, 0xFF, 0x81, 0xF1, 0xF8, 0x00, + 0x00, 0xFE, 0x60, 0xFF, 0xFC, 0x3F, 0xFF, 0x8F, 0xFF, 0xF3, 0xF0, 0x3C, + 0xF8, 0x03, 0x9E, 0x00, 0x67, 0x80, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, + 0xC0, 0x00, 0x7E, 0x01, 0xC7, 0xFF, 0xF8, 0xFF, 0xFE, 0x0F, 0xFF, 0x80, + 0x7F, 0x80, 0x00, 0x01, 0xF8, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, + 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x70, 0x07, 0xE3, 0x80, 0xFF, 0xDC, 0x0F, + 0xFF, 0xE0, 0xFF, 0xFF, 0x0F, 0xC1, 0xF0, 0xF8, 0x07, 0x87, 0x80, 0x1C, + 0x78, 0x00, 0xE3, 0xC0, 0x0F, 0x1E, 0x00, 0x70, 0xF0, 0x07, 0x87, 0xE0, + 0xFC, 0x1F, 0xFF, 0xF8, 0xFF, 0xFF, 0xC3, 0xFF, 0xFE, 0x07, 0xE3, 0xE0, + 0x00, 0xFC, 0x01, 0xFF, 0xC0, 0xFF, 0xF8, 0x7F, 0xFE, 0x3E, 0x0F, 0xCE, + 0x00, 0xF7, 0x00, 0x3D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xE0, 0x1E, 0xFF, 0xFF, 0x9F, 0xFF, 0xE3, 0xFF, 0xF0, 0x3F, 0xF0, + 0x00, 0x0F, 0xF0, 0x01, 0xFF, 0xC0, 0x1F, 0xFE, 0x01, 0xFF, 0xE0, 0x0F, + 0x00, 0x00, 0xF0, 0x00, 0x3F, 0xFF, 0x03, 0xFF, 0xF8, 0x1F, 0xFF, 0xC0, + 0xFF, 0xFC, 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x38, 0x00, 0x01, 0xC0, + 0x00, 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x00, 0x00, 0x38, 0x00, 0x1F, + 0xFF, 0x81, 0xFF, 0xFC, 0x0F, 0xFF, 0xE0, 0x7F, 0xFE, 0x00, 0x01, 0xF9, + 0xF8, 0x3F, 0xFF, 0xC3, 0xFF, 0xFE, 0x7F, 0xFF, 0xE3, 0xE0, 0xFC, 0x3E, + 0x03, 0xE1, 0xE0, 0x0E, 0x1E, 0x00, 0x70, 0xF0, 0x03, 0x87, 0x80, 0x3C, + 0x3E, 0x03, 0xE1, 0xF8, 0x7E, 0x07, 0xFF, 0xF0, 0x3F, 0xFF, 0x80, 0xFF, + 0xFC, 0x01, 0xF9, 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x80, + 0x7F, 0xF8, 0x07, 0xFF, 0x80, 0x3F, 0xF8, 0x00, 0xFF, 0x00, 0x00, 0x0F, + 0xC0, 0x00, 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x03, 0xC0, 0x00, + 0x38, 0x00, 0x03, 0x9F, 0x00, 0x7F, 0xFC, 0x07, 0xFF, 0xC0, 0x7F, 0xFE, + 0x07, 0xC3, 0xE0, 0x70, 0x1E, 0x0F, 0x01, 0xC0, 0xF0, 0x1C, 0x0E, 0x03, + 0xC0, 0xE0, 0x3C, 0x1E, 0x03, 0x81, 0xE0, 0x38, 0x7F, 0x0F, 0xFF, 0xF8, + 0xFF, 0xFF, 0x8F, 0xF7, 0xF0, 0xFE, 0x00, 0x78, 0x00, 0x78, 0x00, 0x78, + 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF0, 0x0F, 0xF0, 0x1F, 0xF0, + 0x0F, 0xF0, 0x00, 0xF0, 0x00, 0xE0, 0x00, 0xE0, 0x01, 0xE0, 0x01, 0xE0, + 0x01, 0xE0, 0x01, 0xC0, 0x01, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0xF8, 0x00, 0x3C, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFC, 0x3F, 0xFE, 0x0F, 0xFF, 0x81, 0xFF, + 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x00, 0x01, 0xC0, 0x00, 0xF0, + 0x00, 0x3C, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, 0x78, 0x00, + 0x1E, 0x00, 0x07, 0x00, 0x01, 0xC0, 0x00, 0xF0, 0x00, 0x7C, 0x1F, 0xFE, + 0x0F, 0xFF, 0x03, 0xFF, 0x80, 0x7F, 0x80, 0x00, 0x07, 0xE0, 0x00, 0xFE, + 0x00, 0x0F, 0xE0, 0x00, 0x7C, 0x00, 0x01, 0xC0, 0x00, 0x3C, 0x00, 0x03, + 0xCF, 0xF0, 0x3C, 0xFF, 0x03, 0x9F, 0xF0, 0x38, 0xFE, 0x07, 0xBF, 0x00, + 0x7F, 0xC0, 0x07, 0xF8, 0x00, 0x7F, 0x00, 0x07, 0xF8, 0x00, 0xFF, 0xC0, + 0x0F, 0x7E, 0x00, 0xE3, 0xF0, 0x7E, 0x1F, 0xE7, 0xE1, 0xFE, 0xFE, 0x3F, + 0xE7, 0xE1, 0xFC, 0x03, 0xFC, 0x07, 0xFC, 0x07, 0xF8, 0x07, 0xF8, 0x00, + 0x78, 0x00, 0x78, 0x00, 0x78, 0x00, 0x70, 0x00, 0x70, 0x00, 0xF0, 0x00, + 0xF0, 0x00, 0xE0, 0x00, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x01, + 0xC0, 0x01, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x1F, + 0x7C, 0x78, 0x7F, 0xFF, 0xF8, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xF0, 0xF1, + 0xF1, 0xE1, 0xC3, 0x83, 0xC7, 0x87, 0x07, 0x8F, 0x0E, 0x0E, 0x1C, 0x3C, + 0x1C, 0x38, 0x78, 0x78, 0x70, 0xE0, 0xF1, 0xE1, 0xC1, 0xC7, 0xE3, 0xC3, + 0xFF, 0xCF, 0xC7, 0xFF, 0x9F, 0x9F, 0xFF, 0x3E, 0x3E, 0x0F, 0x8F, 0x80, + 0xFD, 0xFF, 0x07, 0xFF, 0xF8, 0x3F, 0xFF, 0xE0, 0x7E, 0x1F, 0x07, 0xC0, + 0x78, 0x3C, 0x03, 0x81, 0xE0, 0x1C, 0x0E, 0x01, 0xE0, 0x70, 0x0F, 0x07, + 0x80, 0x70, 0x3C, 0x03, 0x87, 0xF0, 0x3F, 0x7F, 0xC3, 0xFF, 0xFE, 0x1F, + 0xEF, 0xE0, 0xFE, 0x01, 0xFC, 0x01, 0xFF, 0x80, 0xFF, 0xF8, 0x7F, 0xFE, + 0x3E, 0x0F, 0xDF, 0x01, 0xF7, 0x80, 0x3F, 0xC0, 0x0F, 0xF0, 0x03, 0xFC, + 0x01, 0xEF, 0x80, 0xFB, 0xF0, 0x7C, 0x7F, 0xFF, 0x1F, 0xFF, 0x03, 0xFF, + 0x80, 0x3F, 0x80, 0x07, 0xC7, 0xE0, 0x1F, 0xBF, 0xF0, 0x3F, 0xFF, 0xF0, + 0x7F, 0xFF, 0xE0, 0x3F, 0x07, 0xE0, 0x78, 0x03, 0xC0, 0xE0, 0x07, 0x81, + 0xC0, 0x0F, 0x07, 0x00, 0x1E, 0x0F, 0x00, 0x78, 0x1E, 0x01, 0xF0, 0x3E, + 0x07, 0xC0, 0xFF, 0xFF, 0x81, 0xFF, 0xFE, 0x03, 0xDF, 0xF0, 0x07, 0x1F, + 0x80, 0x0E, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x78, 0x00, 0x03, 0xFE, 0x00, + 0x0F, 0xFE, 0x00, 0x1F, 0xF8, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x01, 0xF8, + 0xF8, 0x1F, 0xFF, 0xF1, 0xFF, 0xFF, 0xCF, 0xFF, 0xFE, 0x3E, 0x07, 0xC1, + 0xF0, 0x0F, 0x07, 0x80, 0x1C, 0x3C, 0x00, 0x70, 0xF0, 0x03, 0x83, 0xC0, + 0x0E, 0x0F, 0x80, 0x78, 0x3F, 0x07, 0xE0, 0x7F, 0xFF, 0x81, 0xFF, 0xFC, + 0x03, 0xFF, 0x70, 0x03, 0xF3, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, + 0x00, 0xE0, 0x00, 0x3F, 0xE0, 0x01, 0xFF, 0xC0, 0x07, 0xFF, 0x00, 0x1F, + 0xF8, 0x00, 0x0F, 0xC3, 0xC1, 0xFC, 0xFF, 0x1F, 0xFF, 0xF1, 0xFF, 0xFE, + 0x03, 0xFC, 0x00, 0x3F, 0x00, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x07, 0x80, + 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0xF0, 0x00, 0xFF, 0xFC, 0x0F, 0xFF, + 0xE0, 0xFF, 0xFC, 0x0F, 0xFF, 0xC0, 0x03, 0xF3, 0x0F, 0xFF, 0x3F, 0xFF, + 0x3F, 0xFF, 0x7C, 0x0E, 0x78, 0x00, 0x7F, 0xE0, 0x3F, 0xFC, 0x1F, 0xFF, + 0x00, 0x3F, 0x70, 0x0F, 0xF8, 0x1F, 0xFF, 0xFE, 0xFF, 0xFC, 0xFF, 0xF8, + 0x0F, 0xE0, 0x06, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0E, 0x00, 0x0E, 0x00, + 0x7F, 0xFE, 0xFF, 0xFE, 0xFF, 0xFE, 0xFF, 0xFC, 0x1C, 0x00, 0x3C, 0x00, + 0x3C, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x78, 0x00, 0x7C, 0x0E, + 0x7F, 0xFF, 0x7F, 0xFE, 0x3F, 0xFC, 0x0F, 0xE0, 0x7C, 0x0F, 0xFF, 0x07, + 0xFF, 0x81, 0xFF, 0xE0, 0x7E, 0x78, 0x03, 0x9E, 0x00, 0xE7, 0x80, 0x79, + 0xE0, 0x1E, 0x78, 0x07, 0x1E, 0x01, 0xC7, 0x80, 0xF1, 0xE0, 0xFC, 0x7F, + 0xFF, 0x9F, 0xFF, 0xE3, 0xFF, 0xF8, 0x3E, 0x7C, 0x7F, 0x87, 0xFF, 0xFC, + 0x7F, 0xFF, 0xE3, 0xFF, 0xFF, 0x1F, 0xE1, 0xE0, 0x3C, 0x0F, 0x03, 0xC0, + 0x78, 0x3C, 0x01, 0xE1, 0xC0, 0x0F, 0x1E, 0x00, 0x79, 0xE0, 0x03, 0xCE, + 0x00, 0x0F, 0xF0, 0x00, 0x7F, 0x00, 0x03, 0xF0, 0x00, 0x0F, 0x80, 0x00, + 0x78, 0x00, 0x7E, 0x03, 0xF7, 0xF0, 0x3F, 0xFF, 0x81, 0xFD, 0xF8, 0x0F, + 0xE7, 0x8E, 0x1C, 0x3C, 0xF9, 0xE1, 0xE7, 0xCE, 0x0F, 0x7E, 0xF0, 0x7B, + 0xF7, 0x03, 0xFF, 0xF8, 0x1F, 0xDF, 0x80, 0xFC, 0xFC, 0x07, 0xE7, 0xE0, + 0x3E, 0x3E, 0x01, 0xF1, 0xF0, 0x0F, 0x07, 0x00, 0x0F, 0xE3, 0xF8, 0xFF, + 0x1F, 0xC7, 0xF9, 0xFE, 0x1F, 0x87, 0xF0, 0x7E, 0x7C, 0x01, 0xFF, 0xC0, + 0x07, 0xFC, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x1F, 0xF0, 0x01, 0xF7, + 0xC0, 0x1F, 0x1F, 0x03, 0xF0, 0x7C, 0x7F, 0xCF, 0xFB, 0xFE, 0x7F, 0xDF, + 0xE3, 0xFC, 0x07, 0xF0, 0x7F, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x07, + 0xE0, 0xFE, 0x03, 0xC0, 0x78, 0x03, 0xC0, 0x78, 0x03, 0xC0, 0xF0, 0x01, + 0xE1, 0xE0, 0x01, 0xE1, 0xC0, 0x01, 0xE3, 0xC0, 0x00, 0xF7, 0x80, 0x00, + 0xFF, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7C, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x70, 0x00, 0x00, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x7F, + 0xF0, 0x00, 0xFF, 0xF8, 0x00, 0xFF, 0xF0, 0x00, 0x7F, 0xF0, 0x00, 0x1F, + 0xFF, 0xC7, 0xFF, 0xF1, 0xFF, 0xF8, 0xFF, 0xFE, 0x3C, 0x1F, 0x0E, 0x1F, + 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, + 0xF8, 0x3C, 0xFF, 0xFF, 0x3F, 0xFF, 0xCF, 0xFF, 0xE3, 0xFF, 0xF8, 0x00, + 0xF0, 0x1F, 0x03, 0xF0, 0x7E, 0x07, 0x80, 0x70, 0x0F, 0x00, 0xF0, 0x0E, + 0x00, 0xE0, 0x1E, 0x01, 0xC0, 0xFC, 0x0F, 0x80, 0xF8, 0x0F, 0xC0, 0x3C, + 0x03, 0xC0, 0x38, 0x03, 0x80, 0x78, 0x07, 0x80, 0x78, 0x07, 0xE0, 0x7E, + 0x03, 0xE0, 0x1C, 0x00, 0x02, 0x07, 0x07, 0x0F, 0x0F, 0x0E, 0x0E, 0x0E, + 0x1E, 0x1E, 0x1C, 0x1C, 0x1C, 0x3C, 0x3C, 0x38, 0x38, 0x38, 0x78, 0x78, + 0x70, 0x70, 0x70, 0xF0, 0xF0, 0xE0, 0xE0, 0x01, 0xC0, 0x1F, 0x00, 0xFC, + 0x07, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1C, 0x00, 0xE0, 0x0F, 0x00, + 0x78, 0x03, 0xC0, 0x1F, 0x80, 0x7C, 0x03, 0xE0, 0x3F, 0x03, 0xC0, 0x1C, + 0x00, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0x80, 0x3C, 0x0F, 0xE0, 0x7E, 0x07, + 0xE0, 0x1E, 0x00, 0x0F, 0x00, 0x1F, 0xC0, 0x1F, 0xF0, 0xFF, 0xFC, 0xFF, + 0x3F, 0xFF, 0x0F, 0xF8, 0x03, 0xF8, 0x00, 0xF0}; + +const GFXglyph FreeMonoBoldOblique18pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 21, 0, 1}, // 0x20 ' ' + {0, 9, 22, 21, 9, -21}, // 0x21 '!' + {25, 12, 10, 21, 9, -20}, // 0x22 '"' + {40, 18, 25, 21, 4, -22}, // 0x23 '#' + {97, 18, 28, 21, 4, -23}, // 0x24 '$' + {160, 16, 21, 21, 5, -20}, // 0x25 '%' + {202, 16, 20, 21, 4, -19}, // 0x26 '&' + {242, 5, 10, 21, 12, -20}, // 0x27 ''' + {249, 10, 27, 21, 11, -21}, // 0x28 '(' + {283, 10, 27, 21, 4, -21}, // 0x29 ')' + {317, 15, 15, 21, 6, -21}, // 0x2A '*' + {346, 18, 19, 21, 4, -18}, // 0x2B '+' + {389, 9, 10, 21, 4, -3}, // 0x2C ',' + {401, 18, 4, 21, 4, -11}, // 0x2D '-' + {410, 5, 5, 21, 8, -4}, // 0x2E '.' + {414, 21, 28, 21, 2, -23}, // 0x2F '/' + {488, 17, 23, 21, 5, -22}, // 0x30 '0' + {537, 15, 22, 21, 3, -21}, // 0x31 '1' + {579, 20, 23, 21, 2, -22}, // 0x32 '2' + {637, 18, 23, 21, 3, -22}, // 0x33 '3' + {689, 16, 21, 21, 4, -20}, // 0x34 '4' + {731, 18, 22, 21, 4, -21}, // 0x35 '5' + {781, 19, 23, 21, 5, -22}, // 0x36 '6' + {836, 16, 22, 21, 6, -21}, // 0x37 '7' + {880, 19, 23, 21, 3, -22}, // 0x38 '8' + {935, 18, 23, 21, 4, -22}, // 0x39 '9' + {987, 7, 16, 21, 9, -15}, // 0x3A ':' + {1001, 11, 22, 21, 4, -15}, // 0x3B ';' + {1032, 18, 16, 21, 4, -17}, // 0x3C '<' + {1068, 19, 10, 21, 3, -14}, // 0x3D '=' + {1092, 19, 16, 21, 3, -17}, // 0x3E '>' + {1130, 14, 21, 21, 8, -20}, // 0x3F '?' + {1167, 18, 27, 21, 3, -21}, // 0x40 '@' + {1228, 22, 21, 21, 0, -20}, // 0x41 'A' + {1286, 21, 21, 21, 1, -20}, // 0x42 'B' + {1342, 21, 21, 21, 2, -20}, // 0x43 'C' + {1398, 21, 21, 21, 1, -20}, // 0x44 'D' + {1454, 22, 21, 21, 0, -20}, // 0x45 'E' + {1512, 23, 21, 21, 0, -20}, // 0x46 'F' + {1573, 21, 21, 21, 2, -20}, // 0x47 'G' + {1629, 23, 21, 21, 0, -20}, // 0x48 'H' + {1690, 19, 21, 21, 2, -20}, // 0x49 'I' + {1740, 23, 21, 21, 0, -20}, // 0x4A 'J' + {1801, 23, 21, 21, 0, -20}, // 0x4B 'K' + {1862, 20, 21, 21, 1, -20}, // 0x4C 'L' + {1915, 25, 21, 21, 0, -20}, // 0x4D 'M' + {1981, 24, 21, 21, 1, -20}, // 0x4E 'N' + {2044, 20, 21, 21, 2, -20}, // 0x4F 'O' + {2097, 21, 21, 21, 1, -20}, // 0x50 'P' + {2153, 20, 26, 21, 2, -20}, // 0x51 'Q' + {2218, 22, 21, 21, 0, -20}, // 0x52 'R' + {2276, 19, 21, 21, 3, -20}, // 0x53 'S' + {2326, 19, 21, 21, 3, -20}, // 0x54 'T' + {2376, 21, 21, 21, 3, -20}, // 0x55 'U' + {2432, 23, 21, 21, 1, -20}, // 0x56 'V' + {2493, 22, 21, 21, 2, -20}, // 0x57 'W' + {2551, 24, 21, 21, 0, -20}, // 0x58 'X' + {2614, 20, 21, 21, 3, -20}, // 0x59 'Y' + {2667, 19, 21, 21, 2, -20}, // 0x5A 'Z' + {2717, 13, 27, 21, 8, -21}, // 0x5B '[' + {2761, 10, 28, 21, 8, -23}, // 0x5C '\' + {2796, 13, 27, 21, 4, -21}, // 0x5D ']' + {2840, 15, 11, 21, 6, -21}, // 0x5E '^' + {2861, 21, 4, 21, -1, 4}, // 0x5F '_' + {2872, 6, 6, 21, 10, -22}, // 0x60 '`' + {2877, 19, 16, 21, 2, -15}, // 0x61 'a' + {2915, 22, 22, 21, 0, -21}, // 0x62 'b' + {2976, 19, 16, 21, 3, -15}, // 0x63 'c' + {3014, 21, 22, 21, 3, -21}, // 0x64 'd' + {3072, 18, 16, 21, 3, -15}, // 0x65 'e' + {3108, 21, 22, 21, 3, -21}, // 0x66 'f' + {3166, 21, 23, 21, 2, -15}, // 0x67 'g' + {3227, 20, 22, 21, 1, -21}, // 0x68 'h' + {3282, 16, 22, 21, 3, -21}, // 0x69 'i' + {3326, 18, 29, 21, 2, -21}, // 0x6A 'j' + {3392, 20, 22, 21, 1, -21}, // 0x6B 'k' + {3447, 16, 22, 21, 3, -21}, // 0x6C 'l' + {3491, 23, 16, 21, 0, -15}, // 0x6D 'm' + {3537, 21, 16, 21, 1, -15}, // 0x6E 'n' + {3579, 18, 16, 21, 3, -15}, // 0x6F 'o' + {3615, 23, 23, 21, -1, -15}, // 0x70 'p' + {3682, 22, 23, 21, 2, -15}, // 0x71 'q' + {3746, 20, 16, 21, 2, -15}, // 0x72 'r' + {3786, 16, 16, 21, 4, -15}, // 0x73 's' + {3818, 16, 21, 21, 4, -20}, // 0x74 't' + {3860, 18, 16, 21, 3, -15}, // 0x75 'u' + {3896, 21, 16, 21, 2, -15}, // 0x76 'v' + {3938, 21, 16, 21, 3, -15}, // 0x77 'w' + {3980, 21, 16, 21, 1, -15}, // 0x78 'x' + {4022, 24, 23, 21, -1, -15}, // 0x79 'y' + {4091, 18, 16, 21, 3, -15}, // 0x7A 'z' + {4127, 12, 27, 21, 8, -21}, // 0x7B '{' + {4168, 8, 27, 21, 8, -21}, // 0x7C '|' + {4195, 13, 27, 21, 4, -21}, // 0x7D '}' + {4239, 17, 8, 21, 4, -13}}; // 0x7E '~' + +const GFXfont FreeMonoBoldOblique18pt7b PROGMEM = { + (uint8_t *)FreeMonoBoldOblique18pt7bBitmaps, + (GFXglyph *)FreeMonoBoldOblique18pt7bGlyphs, 0x20, 0x7E, 35}; + +// Approx. 4928 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMonoBoldOblique24pt7b.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMonoBoldOblique24pt7b.h new file mode 100644 index 0000000..ac923bf --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMonoBoldOblique24pt7b.h @@ -0,0 +1,744 @@ +#pragma once +#include + +const uint8_t FreeMonoBoldOblique24pt7bBitmaps[] PROGMEM = { + 0x01, 0xE0, 0x3F, 0x07, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xE0, 0xFE, + 0x0F, 0xE0, 0xFE, 0x0F, 0xC0, 0xFC, 0x1F, 0xC1, 0xF8, 0x1F, 0x81, 0xF8, + 0x1F, 0x81, 0xF0, 0x1F, 0x01, 0xF0, 0x1E, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x03, 0xC0, 0x7E, 0x0F, 0xE0, 0xFE, 0x0F, 0xC0, 0x78, 0x00, 0x7E, + 0x1F, 0xBF, 0x0F, 0xDF, 0x87, 0xCF, 0x83, 0xE7, 0xC1, 0xF3, 0xE0, 0xF1, + 0xE0, 0xF8, 0xF0, 0x7C, 0x78, 0x3C, 0x38, 0x1E, 0x1C, 0x0F, 0x0E, 0x07, + 0x0E, 0x03, 0x83, 0x01, 0x80, 0x00, 0x1C, 0x1C, 0x00, 0x3E, 0x3E, 0x00, + 0x3E, 0x3E, 0x00, 0x3C, 0x3C, 0x00, 0x7C, 0x7C, 0x00, 0x7C, 0x7C, 0x00, + 0x7C, 0x7C, 0x00, 0xF8, 0xF8, 0x00, 0xF8, 0xF8, 0x00, 0xF8, 0xF8, 0x0F, + 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0x1F, + 0xFF, 0xFE, 0x03, 0xE3, 0xE0, 0x03, 0xE3, 0xE0, 0x03, 0xC3, 0xC0, 0x07, + 0xC7, 0xC0, 0x7F, 0xFF, 0xF8, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFC, 0xFF, + 0xFF, 0xF8, 0xFF, 0xFF, 0xF0, 0x0F, 0x0F, 0x00, 0x1F, 0x1F, 0x00, 0x1F, + 0x1F, 0x00, 0x1F, 0x1F, 0x00, 0x3E, 0x1E, 0x00, 0x3E, 0x3E, 0x00, 0x3E, + 0x3E, 0x00, 0x3C, 0x3C, 0x00, 0x7C, 0x7C, 0x00, 0x38, 0x38, 0x00, 0x00, + 0x00, 0xE0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x7C, 0x00, + 0x00, 0xFF, 0x00, 0x01, 0xFF, 0xFC, 0x03, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, + 0x01, 0xFF, 0xFF, 0x81, 0xFC, 0x1F, 0xC1, 0xF8, 0x03, 0xC0, 0xF8, 0x01, + 0xE0, 0x7C, 0x00, 0x40, 0x3F, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x0F, 0xFF, + 0x80, 0x03, 0xFF, 0xF8, 0x00, 0xFF, 0xFE, 0x00, 0x0F, 0xFF, 0x00, 0x00, + 0x7F, 0xC0, 0x00, 0x07, 0xE0, 0xE0, 0x01, 0xF0, 0xF0, 0x00, 0xF8, 0xF8, + 0x00, 0xFC, 0x7E, 0x00, 0xFC, 0x3F, 0x81, 0xFE, 0x1F, 0xFF, 0xFE, 0x0F, + 0xFF, 0xFE, 0x0F, 0xFF, 0xFE, 0x03, 0xFF, 0xFC, 0x00, 0x07, 0xF0, 0x00, + 0x01, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x7C, 0x00, + 0x00, 0x3E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0xF8, + 0x00, 0x0F, 0xF8, 0x00, 0x7F, 0xE0, 0x03, 0xC3, 0xC0, 0x0E, 0x07, 0x00, + 0x70, 0x1C, 0x01, 0xC0, 0x70, 0x07, 0x01, 0xC0, 0x1C, 0x0E, 0x00, 0x78, + 0x78, 0x00, 0xFF, 0xC0, 0x03, 0xFE, 0x1F, 0x03, 0xE3, 0xFC, 0x00, 0x7F, + 0xC0, 0x0F, 0xF8, 0x03, 0xFF, 0x00, 0x7F, 0xC0, 0x03, 0xF8, 0x7C, 0x0F, + 0x07, 0xFC, 0x00, 0x3F, 0xF0, 0x01, 0xE1, 0xE0, 0x07, 0x03, 0x80, 0x38, + 0x0E, 0x00, 0xE0, 0x38, 0x03, 0x80, 0xE0, 0x0E, 0x07, 0x00, 0x3C, 0x3C, + 0x00, 0x7F, 0xE0, 0x01, 0xFF, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x1F, 0x00, + 0x01, 0xFF, 0x80, 0x3F, 0xFC, 0x03, 0xFF, 0xE0, 0x1F, 0xFE, 0x01, 0xF1, + 0xE0, 0x1F, 0x04, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x01, + 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x07, 0xF8, 0x00, 0x7F, 0xE3, + 0xE7, 0xFF, 0x3F, 0x7E, 0xFF, 0xFB, 0xE7, 0xFF, 0x9E, 0x1F, 0xF1, 0xF0, + 0xFF, 0x8F, 0x83, 0xF8, 0x7C, 0x1F, 0xC3, 0xF0, 0xFF, 0x9F, 0xFF, 0xFC, + 0x7F, 0xFF, 0xE3, 0xFF, 0xFF, 0x0F, 0xFD, 0xF0, 0x1F, 0x80, 0x00, 0x7E, + 0xFD, 0xF3, 0xE7, 0xCF, 0x3E, 0x7C, 0xF1, 0xE3, 0xC7, 0x0E, 0x18, 0x00, + 0x00, 0x18, 0x00, 0xF0, 0x07, 0xC0, 0x3F, 0x01, 0xF8, 0x07, 0xC0, 0x3E, + 0x01, 0xF8, 0x07, 0xC0, 0x3E, 0x00, 0xF8, 0x07, 0xC0, 0x1F, 0x00, 0xF8, + 0x03, 0xE0, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x3E, 0x00, 0xF8, + 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, + 0x00, 0xFC, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x80, 0x7E, 0x00, 0xFC, 0x03, + 0xF0, 0x07, 0xC0, 0x1E, 0x00, 0x00, 0xC0, 0x07, 0x80, 0x3F, 0x00, 0xFC, + 0x03, 0xF0, 0x07, 0xE0, 0x1F, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xF0, 0x07, + 0xC0, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, + 0xF0, 0x07, 0xC0, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x1F, 0x00, 0x7C, 0x01, + 0xF0, 0x0F, 0x80, 0x3E, 0x01, 0xF0, 0x0F, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, + 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x3E, 0x00, 0xF0, 0x00, 0x00, 0x3C, + 0x00, 0x01, 0xE0, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x08, + 0x3C, 0x09, 0xF9, 0xE7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, + 0x87, 0xFF, 0xE0, 0x07, 0xF8, 0x00, 0x7F, 0xC0, 0x07, 0xFF, 0x00, 0x7F, + 0xF8, 0x07, 0xE7, 0xE0, 0x3E, 0x3F, 0x01, 0xE0, 0xF8, 0x0E, 0x07, 0x80, + 0x00, 0x07, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x0F, 0x00, + 0x00, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1E, 0x00, + 0x00, 0x3E, 0x00, 0x00, 0x3E, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x7C, 0x00, + 0x00, 0x78, 0x00, 0x00, 0x78, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xF0, 0x00, + 0x01, 0xF0, 0x00, 0x00, 0xE0, 0x00, 0x03, 0xF0, 0x7E, 0x07, 0xC0, 0xFC, + 0x0F, 0x81, 0xF0, 0x1E, 0x03, 0xE0, 0x3C, 0x07, 0x80, 0x78, 0x0F, 0x00, + 0xE0, 0x0C, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x3C, 0xFF, 0xFF, 0xFF, 0xCF, 0x00, + 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x01, 0xF0, 0x00, + 0x00, 0x3E, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x0F, + 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x00, + 0x00, 0x3E, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x1F, + 0x80, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x07, 0xE0, 0x00, + 0x00, 0x7C, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x07, 0xC0, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x3E, + 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x0F, 0x80, 0x00, + 0x01, 0xF0, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, + 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x07, 0x00, 0x00, + 0x00, 0x00, 0x0F, 0xC0, 0x00, 0xFF, 0xE0, 0x03, 0xFF, 0xE0, 0x1F, 0xFF, + 0xE0, 0x7F, 0xFF, 0xC0, 0xFC, 0x1F, 0x83, 0xF0, 0x1F, 0x8F, 0xC0, 0x1F, + 0x1F, 0x00, 0x3E, 0x7C, 0x00, 0x7C, 0xF8, 0x00, 0xF9, 0xF0, 0x01, 0xF3, + 0xC0, 0x07, 0xCF, 0x80, 0x0F, 0x9F, 0x00, 0x1E, 0x3E, 0x00, 0x3C, 0x78, + 0x00, 0xF8, 0xF0, 0x01, 0xF3, 0xE0, 0x03, 0xE7, 0xC0, 0x07, 0x8F, 0x80, + 0x1F, 0x1F, 0x00, 0x3E, 0x3E, 0x00, 0xF8, 0x7C, 0x01, 0xF0, 0xFC, 0x07, + 0xC1, 0xFC, 0x3F, 0x81, 0xFF, 0xFE, 0x03, 0xFF, 0xF8, 0x03, 0xFF, 0xE0, + 0x03, 0xFF, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x7E, + 0x00, 0x0F, 0xF0, 0x01, 0xFF, 0x80, 0x1F, 0xFC, 0x03, 0xFB, 0xE0, 0x1F, + 0x9E, 0x00, 0xF1, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x03, 0xE0, + 0x00, 0x1E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x03, + 0xC0, 0x00, 0x1E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, + 0x03, 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, + 0x01, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, + 0xFF, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0x03, 0xFF, 0x80, 0x03, 0xFF, 0xF0, + 0x01, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0x80, 0x7F, 0x07, 0xF0, 0x1F, 0x00, + 0xFC, 0x0F, 0x80, 0x1F, 0x03, 0xE0, 0x07, 0xC0, 0xF0, 0x01, 0xF0, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0xC0, + 0x00, 0x0F, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF8, 0x00, 0x03, 0xF8, + 0x00, 0x03, 0xFC, 0x00, 0x01, 0xFE, 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, + 0x00, 0x00, 0xFF, 0x00, 0x00, 0x7F, 0x80, 0x70, 0x3F, 0x80, 0x3E, 0x1F, + 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFC, + 0x3F, 0xFF, 0xFF, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x0F, 0xFE, 0x00, 0x1F, + 0xFF, 0x80, 0x1F, 0xFF, 0xE0, 0x1F, 0xFF, 0xF8, 0x0F, 0x81, 0xFC, 0x07, + 0x00, 0x3E, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x0F, 0xC0, + 0x00, 0x07, 0xC0, 0x00, 0x0F, 0xC0, 0x01, 0xFF, 0xC0, 0x01, 0xFF, 0xC0, + 0x00, 0xFF, 0x80, 0x00, 0x7F, 0xE0, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0xFE, + 0x00, 0x00, 0x1F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, + 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xFC, 0x3C, 0x01, + 0xFC, 0x3F, 0xFF, 0xFC, 0x1F, 0xFF, 0xFC, 0x0F, 0xFF, 0xFC, 0x03, 0xFF, + 0xFC, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x07, 0xF0, 0x00, + 0x3F, 0xC0, 0x01, 0xFE, 0x00, 0x0F, 0xF8, 0x00, 0x7F, 0xE0, 0x03, 0xFF, + 0x80, 0x1F, 0xBE, 0x00, 0x7C, 0xF0, 0x03, 0xE7, 0xC0, 0x1F, 0x1F, 0x00, + 0xF8, 0x7C, 0x07, 0xE1, 0xE0, 0x3F, 0x07, 0x81, 0xF8, 0x3E, 0x07, 0xC0, + 0xF8, 0x3E, 0x03, 0xC1, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFE, + 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0x80, 0x00, 0xF8, 0x00, 0x3F, 0xF8, 0x01, + 0xFF, 0xE0, 0x07, 0xFF, 0x80, 0x1F, 0xFE, 0x00, 0x7F, 0xF0, 0x01, 0xFF, + 0xFF, 0x00, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0xC0, 0x3F, 0xFF, 0xE0, 0x3F, + 0xFF, 0xE0, 0x1F, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, + 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, 0xF7, 0xF0, 0x00, 0xFF, 0xFE, 0x00, + 0x7F, 0xFF, 0x80, 0x3F, 0xFF, 0xE0, 0x1F, 0xFF, 0xF0, 0x0F, 0x01, 0xFC, + 0x00, 0x00, 0x7E, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x07, + 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, 0xF0, 0x00, 0x01, 0xF0, 0x00, 0x00, + 0xF8, 0x00, 0x00, 0xF8, 0x3C, 0x03, 0xFC, 0x3F, 0xFF, 0xFC, 0x1F, 0xFF, + 0xFC, 0x0F, 0xFF, 0xFC, 0x03, 0xFF, 0xF8, 0x00, 0x3F, 0xE0, 0x00, 0x00, + 0x01, 0xFC, 0x00, 0x07, 0xFE, 0x00, 0x1F, 0xFF, 0x00, 0x7F, 0xFF, 0x00, + 0xFF, 0xFE, 0x01, 0xFE, 0x1C, 0x03, 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x0F, + 0xC0, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3E, 0x3E, 0x00, 0x3E, + 0xFF, 0x80, 0x7D, 0xFF, 0xC0, 0x7F, 0xFF, 0xE0, 0x7F, 0xFF, 0xE0, 0x7F, + 0x87, 0xF0, 0xFF, 0x03, 0xF0, 0xFC, 0x01, 0xF0, 0xF8, 0x01, 0xF0, 0xF8, + 0x01, 0xF0, 0xF8, 0x01, 0xF0, 0xF8, 0x03, 0xE0, 0xF8, 0x03, 0xE0, 0xFC, + 0x07, 0xC0, 0xFE, 0x0F, 0xC0, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, 0x00, 0x3F, + 0xFE, 0x00, 0x1F, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x7F, 0xFF, 0xFD, 0xFF, + 0xFF, 0xE7, 0xFF, 0xFF, 0xBF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFB, 0xE0, 0x07, + 0xCF, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x00, + 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x01, + 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, + 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x00, + 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xE0, + 0x00, 0x1F, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0xFF, + 0xE0, 0x07, 0xFF, 0xE0, 0x1F, 0xFF, 0xE0, 0x7F, 0xFF, 0xC0, 0xFC, 0x1F, + 0xC3, 0xF0, 0x1F, 0x8F, 0xC0, 0x1F, 0x1F, 0x00, 0x3E, 0x3E, 0x00, 0x7C, + 0x7C, 0x01, 0xF0, 0xFC, 0x07, 0xE0, 0xFC, 0x1F, 0x81, 0xFF, 0xFE, 0x01, + 0xFF, 0xF0, 0x01, 0xFF, 0xE0, 0x0F, 0xFF, 0xE0, 0x3F, 0xFF, 0xE0, 0xFE, + 0x0F, 0xC3, 0xF0, 0x0F, 0xC7, 0xC0, 0x0F, 0x9F, 0x00, 0x1F, 0x3E, 0x00, + 0x3E, 0x7C, 0x00, 0xFC, 0xFC, 0x03, 0xF1, 0xFC, 0x1F, 0xE3, 0xFF, 0xFF, + 0x83, 0xFF, 0xFE, 0x03, 0xFF, 0xF8, 0x03, 0xFF, 0xC0, 0x01, 0xFC, 0x00, + 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x3F, 0xF8, 0x00, 0xFF, 0xFC, 0x01, 0xFF, + 0xFE, 0x03, 0xFF, 0xFE, 0x03, 0xF0, 0x7F, 0x07, 0xE0, 0x3F, 0x07, 0xC0, + 0x1F, 0x0F, 0xC0, 0x1F, 0x0F, 0x80, 0x1F, 0x0F, 0x80, 0x1F, 0x0F, 0x80, + 0x3F, 0x0F, 0xC0, 0x7F, 0x0F, 0xE1, 0xFF, 0x07, 0xFF, 0xFE, 0x07, 0xFF, + 0xFE, 0x03, 0xFF, 0xBE, 0x01, 0xFF, 0x7C, 0x00, 0xFC, 0x7C, 0x00, 0x00, + 0xFC, 0x00, 0x01, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x03, 0xF0, 0x00, 0x0F, + 0xE0, 0x00, 0x1F, 0xC0, 0x38, 0x7F, 0x80, 0x7F, 0xFF, 0x00, 0xFF, 0xFE, + 0x00, 0xFF, 0xF8, 0x00, 0x7F, 0xE0, 0x00, 0x3F, 0x80, 0x00, 0x07, 0x83, + 0xF1, 0xFC, 0x7F, 0x1F, 0x83, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x1F, 0x8F, 0xE3, 0xF8, 0xFC, + 0x1E, 0x00, 0x00, 0x3C, 0x00, 0xFC, 0x03, 0xF8, 0x07, 0xF0, 0x0F, 0xC0, + 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x03, 0xE0, 0x0F, 0xC0, + 0x1F, 0x00, 0x7C, 0x00, 0xF0, 0x03, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x38, + 0x00, 0xF0, 0x01, 0xC0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x03, 0xC0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xF0, 0x00, 0x3F, 0xE0, 0x00, + 0x7F, 0xC0, 0x00, 0xFF, 0x80, 0x03, 0xFF, 0x00, 0x07, 0xFE, 0x00, 0x0F, + 0xFC, 0x00, 0x1F, 0xF0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0xFF, 0x00, 0x00, + 0x3F, 0xE0, 0x00, 0x0F, 0xFC, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x3F, 0xE0, + 0x00, 0x07, 0xFC, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, + 0x80, 0x1F, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xFC, 0xFF, + 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, + 0xF3, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0x80, 0x00, + 0x00, 0x00, 0x07, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, + 0xFF, 0x80, 0x00, 0x1F, 0xF0, 0x00, 0x07, 0xFE, 0x00, 0x00, 0xFF, 0xC0, + 0x00, 0x1F, 0xF0, 0x00, 0x07, 0xFE, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x7F, + 0xE0, 0x00, 0xFF, 0xC0, 0x01, 0xFF, 0x80, 0x03, 0xFE, 0x00, 0x07, 0xFC, + 0x00, 0x1F, 0xF8, 0x00, 0x3F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0x1F, 0x80, + 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x01, 0xFF, + 0xE1, 0xFF, 0xFE, 0x3F, 0xFF, 0xE7, 0xFF, 0xFF, 0xF8, 0x1F, 0xFE, 0x00, + 0xFF, 0x80, 0x1F, 0xF0, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x0F, + 0xE0, 0x07, 0xF8, 0x07, 0xFE, 0x01, 0xFF, 0x80, 0x7F, 0xC0, 0x0F, 0xE0, + 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xF0, 0x00, 0x3F, 0x00, 0x0F, 0xE0, 0x01, 0xFC, 0x00, + 0x3F, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x7F, 0xF0, 0x01, + 0xFF, 0xF0, 0x0F, 0xFF, 0xE0, 0x3F, 0x07, 0xE0, 0x7C, 0x07, 0xC1, 0xE0, + 0x07, 0x87, 0xC0, 0x0F, 0x0F, 0x00, 0x1C, 0x3C, 0x00, 0x78, 0x78, 0x07, + 0xF1, 0xE0, 0x3F, 0xE3, 0xC1, 0xFF, 0x87, 0x87, 0xFF, 0x0E, 0x1F, 0x9E, + 0x3C, 0x7C, 0x3C, 0x78, 0xF0, 0x78, 0xF3, 0xC0, 0xE1, 0xC7, 0x83, 0xC3, + 0x8F, 0x07, 0x8F, 0x1E, 0x0F, 0x1E, 0x3E, 0x1C, 0x3C, 0x7F, 0xFC, 0x78, + 0x7F, 0xFC, 0xF0, 0x7F, 0xF1, 0xE0, 0x3F, 0xE3, 0xC0, 0x00, 0x07, 0x80, + 0x00, 0x0F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x3F, 0x01, + 0xC0, 0x7F, 0xFF, 0x80, 0x7F, 0xFE, 0x00, 0x7F, 0xF8, 0x00, 0x3F, 0x80, + 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x01, 0xFF, 0xF8, 0x00, 0x07, 0xFF, 0xE0, + 0x00, 0x1F, 0xFF, 0x80, 0x00, 0x7F, 0xFE, 0x00, 0x00, 0x0F, 0xFC, 0x00, + 0x00, 0x7F, 0xF0, 0x00, 0x01, 0xE7, 0xC0, 0x00, 0x0F, 0x9F, 0x00, 0x00, + 0x7C, 0x7C, 0x00, 0x01, 0xE1, 0xF8, 0x00, 0x0F, 0x87, 0xE0, 0x00, 0x7C, + 0x0F, 0x80, 0x01, 0xF0, 0x3E, 0x00, 0x0F, 0x80, 0xF8, 0x00, 0x3F, 0xFF, + 0xF0, 0x01, 0xFF, 0xFF, 0xC0, 0x0F, 0xFF, 0xFF, 0x00, 0x3F, 0xFF, 0xFC, + 0x01, 0xFF, 0xFF, 0xF8, 0x0F, 0xC0, 0x07, 0xE0, 0x3E, 0x00, 0x0F, 0x87, + 0xFF, 0x03, 0xFF, 0xBF, 0xFC, 0x1F, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xFF, + 0xC1, 0xFF, 0xEF, 0xFE, 0x07, 0xFF, 0x00, 0x03, 0xFF, 0xFF, 0x80, 0x3F, + 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0xFC, 0x0F, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, + 0xFF, 0x80, 0x7C, 0x00, 0xFC, 0x03, 0xE0, 0x03, 0xE0, 0x1E, 0x00, 0x1F, + 0x01, 0xF0, 0x00, 0xF8, 0x0F, 0x80, 0x0F, 0x80, 0x7C, 0x01, 0xF8, 0x03, + 0xFF, 0xFF, 0x80, 0x1F, 0xFF, 0xF8, 0x01, 0xFF, 0xFF, 0xC0, 0x0F, 0xFF, + 0xFF, 0x80, 0x7F, 0xFF, 0xFC, 0x03, 0xC0, 0x0F, 0xF0, 0x3E, 0x00, 0x1F, + 0x81, 0xF0, 0x00, 0x7C, 0x0F, 0x80, 0x03, 0xE0, 0x78, 0x00, 0x1F, 0x03, + 0xC0, 0x03, 0xF1, 0xFF, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, + 0xFF, 0x87, 0xFF, 0xFF, 0xF0, 0x1F, 0xFF, 0xFE, 0x00, 0x00, 0x07, 0xF0, + 0x00, 0x03, 0xFF, 0xE6, 0x00, 0x7F, 0xFF, 0xF0, 0x1F, 0xFF, 0xFF, 0x03, + 0xFF, 0xFF, 0xF0, 0x7F, 0x81, 0xFF, 0x0F, 0xE0, 0x07, 0xE1, 0xF8, 0x00, + 0x3E, 0x1F, 0x00, 0x03, 0xE3, 0xF0, 0x00, 0x3C, 0x3E, 0x00, 0x03, 0xC7, + 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x7C, 0x00, + 0x00, 0x0F, 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, + 0xF8, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x0F, 0xC0, + 0x00, 0x70, 0x7E, 0x00, 0x1F, 0x07, 0xF8, 0x07, 0xF0, 0x3F, 0xFF, 0xFF, + 0x03, 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xF8, 0x00, 0x7F, 0xFE, 0x00, 0x00, + 0xFF, 0x00, 0x00, 0x03, 0xFF, 0xFC, 0x00, 0x7F, 0xFF, 0xF0, 0x07, 0xFF, + 0xFF, 0x80, 0x7F, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0xE0, 0x1F, 0x00, 0xFE, + 0x01, 0xF0, 0x07, 0xE0, 0x1E, 0x00, 0x3F, 0x01, 0xE0, 0x01, 0xF0, 0x3E, + 0x00, 0x1F, 0x03, 0xE0, 0x01, 0xF0, 0x3E, 0x00, 0x1F, 0x03, 0xC0, 0x01, + 0xF0, 0x7C, 0x00, 0x1F, 0x07, 0xC0, 0x03, 0xF0, 0x7C, 0x00, 0x3E, 0x07, + 0x80, 0x03, 0xE0, 0x78, 0x00, 0x7E, 0x0F, 0x80, 0x07, 0xC0, 0xF8, 0x00, + 0xFC, 0x0F, 0x80, 0x1F, 0x80, 0xF0, 0x07, 0xF0, 0x7F, 0xFF, 0xFE, 0x07, + 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, + 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xF8, 0x3F, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, + 0xFE, 0x1F, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, 0xFF, 0x00, 0x78, 0x00, 0xF8, + 0x07, 0xC0, 0x07, 0xC0, 0x3E, 0x00, 0x3E, 0x01, 0xF0, 0xF1, 0xE0, 0x0F, + 0x0F, 0x8E, 0x00, 0x78, 0x7C, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0x3F, 0xFE, + 0x00, 0x01, 0xFF, 0xF0, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0xFF, 0xFC, 0x00, + 0x07, 0xC3, 0xC0, 0x00, 0x3E, 0x1E, 0x1E, 0x01, 0xE0, 0xE0, 0xF0, 0x0F, + 0x00, 0x0F, 0x80, 0xF8, 0x00, 0x7C, 0x07, 0xC0, 0x03, 0xE1, 0xFF, 0xFF, + 0xFE, 0x1F, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0xFC, + 0x3F, 0xFF, 0xFF, 0xC0, 0x03, 0xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0xF8, + 0x1F, 0xFF, 0xFF, 0xF0, 0x3F, 0xFF, 0xFF, 0xE0, 0x3F, 0xFF, 0xFF, 0xC0, + 0x1F, 0x00, 0x0F, 0x80, 0x3E, 0x00, 0x1E, 0x00, 0x78, 0x00, 0x7C, 0x00, + 0xF0, 0x70, 0xF8, 0x03, 0xE1, 0xF0, 0xE0, 0x07, 0xC3, 0xC0, 0x00, 0x0F, + 0xFF, 0x80, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x7F, 0xFE, 0x00, 0x00, 0xFF, + 0xFC, 0x00, 0x01, 0xFF, 0xF0, 0x00, 0x03, 0xC3, 0xE0, 0x00, 0x07, 0x87, + 0xC0, 0x00, 0x1F, 0x07, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x7C, 0x00, + 0x00, 0x00, 0xF0, 0x00, 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0x3F, 0xFF, 0x80, + 0x00, 0xFF, 0xFF, 0x00, 0x01, 0xFF, 0xFE, 0x00, 0x01, 0xFF, 0xF8, 0x00, + 0x00, 0x00, 0x07, 0xF8, 0x60, 0x03, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0xF0, + 0x1F, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xE0, 0x7F, 0x80, 0xFE, 0x0F, 0xE0, + 0x03, 0xE0, 0xF8, 0x00, 0x3C, 0x1F, 0x00, 0x03, 0xC3, 0xF0, 0x00, 0x00, + 0x3E, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x07, 0xC0, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0x07, 0xC0, 0x7F, 0xFC, 0xF8, 0x0F, 0xFF, + 0xEF, 0x80, 0xFF, 0xFE, 0xF8, 0x0F, 0xFF, 0xCF, 0x80, 0x7F, 0xF8, 0xF8, + 0x00, 0x1F, 0x0F, 0xC0, 0x01, 0xF0, 0xFE, 0x00, 0x1F, 0x07, 0xF8, 0x07, + 0xE0, 0x7F, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xFC, 0x00, + 0x7F, 0xFE, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x01, 0xFF, 0x0F, 0xF8, 0x0F, + 0xFC, 0x7F, 0xF0, 0x7F, 0xF1, 0xFF, 0xC1, 0xFF, 0xC7, 0xFE, 0x03, 0xFE, + 0x1F, 0xF0, 0x07, 0xC0, 0x0F, 0x80, 0x1F, 0x00, 0x3C, 0x00, 0x78, 0x00, + 0xF0, 0x01, 0xE0, 0x07, 0xC0, 0x0F, 0x80, 0x1F, 0x00, 0x3E, 0x00, 0x7C, + 0x00, 0xFF, 0xFF, 0xE0, 0x03, 0xFF, 0xFF, 0x80, 0x1F, 0xFF, 0xFE, 0x00, + 0x7F, 0xFF, 0xF8, 0x01, 0xFF, 0xFF, 0xC0, 0x07, 0x80, 0x1F, 0x00, 0x1E, + 0x00, 0x7C, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xE0, 0x07, 0xC0, 0x0F, 0x80, + 0x1E, 0x00, 0x3C, 0x00, 0xF8, 0x07, 0xFE, 0x1F, 0xF8, 0x3F, 0xF8, 0xFF, + 0xF0, 0xFF, 0xE3, 0xFF, 0xC3, 0xFF, 0x8F, 0xFE, 0x0F, 0xFC, 0x3F, 0xF8, + 0x00, 0x03, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0xE0, 0xFF, + 0xFF, 0xF0, 0x7F, 0xFF, 0xF0, 0x00, 0x7C, 0x00, 0x00, 0x3E, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x00, + 0x03, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, 0xF0, 0x00, 0x00, 0xF8, 0x00, + 0x00, 0x7C, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x1F, 0x00, + 0x00, 0x0F, 0x80, 0x00, 0x07, 0x80, 0x00, 0x07, 0xC0, 0x01, 0xFF, 0xFF, + 0xC1, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xF8, 0x1F, 0xFF, + 0xF8, 0x00, 0x00, 0x07, 0xFF, 0xFE, 0x00, 0x1F, 0xFF, 0xFC, 0x00, 0x3F, + 0xFF, 0xF8, 0x00, 0x7F, 0xFF, 0xF0, 0x00, 0x7F, 0xFF, 0xC0, 0x00, 0x01, + 0xF0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x0F, + 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0xF8, + 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x07, 0xC0, 0x07, 0x00, 0x0F, 0x80, + 0x1F, 0x00, 0x1F, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x78, 0x00, 0x78, 0x01, + 0xF0, 0x01, 0xF0, 0x03, 0xE0, 0x03, 0xE0, 0x07, 0xC0, 0x0F, 0x80, 0x0F, + 0x80, 0x3F, 0x00, 0x1F, 0xC0, 0xFC, 0x00, 0x7F, 0xFF, 0xF8, 0x00, 0xFF, + 0xFF, 0xE0, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x3F, 0xFC, 0x00, 0x00, 0x1F, + 0xC0, 0x00, 0x00, 0x03, 0xFF, 0xC3, 0xFE, 0x0F, 0xFF, 0x8F, 0xFC, 0x1F, + 0xFF, 0x3F, 0xF8, 0x3F, 0xFE, 0x7F, 0xF0, 0x7F, 0xF8, 0x7F, 0xC0, 0x1F, + 0x01, 0xFC, 0x00, 0x3E, 0x07, 0xF0, 0x00, 0x78, 0x3F, 0x80, 0x01, 0xF0, + 0xFE, 0x00, 0x03, 0xE3, 0xF0, 0x00, 0x07, 0xDF, 0xC0, 0x00, 0x0F, 0xFE, + 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x7F, 0xFE, 0x00, 0x00, 0xFF, 0xFE, + 0x00, 0x01, 0xFC, 0xFC, 0x00, 0x03, 0xE0, 0xFC, 0x00, 0x0F, 0x81, 0xF8, + 0x00, 0x1F, 0x01, 0xF8, 0x00, 0x3E, 0x03, 0xF0, 0x00, 0x78, 0x03, 0xE0, + 0x00, 0xF0, 0x07, 0xE0, 0x1F, 0xFE, 0x0F, 0xF8, 0x7F, 0xFC, 0x1F, 0xF8, + 0xFF, 0xF8, 0x1F, 0xF1, 0xFF, 0xF0, 0x3F, 0xE1, 0xFF, 0xC0, 0x7F, 0x80, + 0x03, 0xFF, 0xF8, 0x00, 0xFF, 0xFF, 0x00, 0x1F, 0xFF, 0xE0, 0x03, 0xFF, + 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x0F, 0x80, 0x00, + 0x01, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x01, 0xF0, + 0x00, 0x00, 0x3C, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xF0, 0x00, 0x00, + 0x3E, 0x00, 0x00, 0x07, 0xC0, 0x0E, 0x00, 0xF0, 0x01, 0xE0, 0x3E, 0x00, + 0x7C, 0x07, 0xC0, 0x0F, 0x80, 0xF8, 0x01, 0xF0, 0x1E, 0x00, 0x7C, 0x07, + 0xC0, 0x0F, 0x9F, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, + 0x9F, 0xFF, 0xFF, 0xF1, 0xFF, 0xFF, 0xFE, 0x00, 0x03, 0xFC, 0x00, 0x3F, + 0xC1, 0xFF, 0x00, 0x1F, 0xF0, 0x7F, 0xC0, 0x07, 0xFC, 0x1F, 0xF0, 0x03, + 0xFE, 0x01, 0xFE, 0x01, 0xFE, 0x00, 0xFF, 0x80, 0xFF, 0x80, 0x3F, 0xE0, + 0x3F, 0xE0, 0x0F, 0xF8, 0x1F, 0xF0, 0x03, 0xFF, 0x0F, 0xFC, 0x00, 0xF7, + 0xC3, 0xFF, 0x00, 0x7D, 0xF1, 0xF7, 0xC0, 0x1F, 0x7C, 0xFD, 0xF0, 0x07, + 0xDF, 0xBE, 0x78, 0x01, 0xE3, 0xFF, 0x3E, 0x00, 0x78, 0xFF, 0xCF, 0x80, + 0x3E, 0x3F, 0xE3, 0xE0, 0x0F, 0x87, 0xF0, 0xF8, 0x03, 0xE1, 0xFC, 0x3C, + 0x00, 0xF0, 0x7E, 0x1F, 0x00, 0x7C, 0x1F, 0x07, 0xC0, 0x1F, 0x00, 0x01, + 0xF0, 0x07, 0xC0, 0x00, 0x78, 0x07, 0xFE, 0x01, 0xFF, 0x83, 0xFF, 0xC0, + 0xFF, 0xF0, 0xFF, 0xF0, 0x7F, 0xFC, 0x3F, 0xF8, 0x1F, 0xFE, 0x0F, 0xFC, + 0x03, 0xFF, 0x00, 0x07, 0xF8, 0x07, 0xFF, 0x0F, 0xFC, 0x0F, 0xFF, 0x0F, + 0xFC, 0x0F, 0xFF, 0x0F, 0xFC, 0x0F, 0xFF, 0x0F, 0xFE, 0x0F, 0xFE, 0x01, + 0xFE, 0x00, 0xF8, 0x01, 0xFF, 0x00, 0xF0, 0x01, 0xFF, 0x01, 0xF0, 0x03, + 0xFF, 0x81, 0xF0, 0x03, 0xFF, 0x81, 0xF0, 0x03, 0xEF, 0xC1, 0xF0, 0x03, + 0xCF, 0xC1, 0xE0, 0x07, 0xC7, 0xE3, 0xE0, 0x07, 0xC7, 0xE3, 0xE0, 0x07, + 0xC3, 0xF3, 0xE0, 0x07, 0xC3, 0xF3, 0xC0, 0x07, 0x81, 0xF7, 0xC0, 0x0F, + 0x81, 0xFF, 0xC0, 0x0F, 0x80, 0xFF, 0xC0, 0x0F, 0x80, 0xFF, 0xC0, 0x0F, + 0x00, 0xFF, 0x80, 0x0F, 0x00, 0x7F, 0x80, 0x7F, 0xF0, 0x7F, 0x80, 0xFF, + 0xF0, 0x3F, 0x80, 0xFF, 0xF0, 0x3F, 0x00, 0xFF, 0xF0, 0x1F, 0x00, 0x7F, + 0xE0, 0x1F, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xFF, 0x80, 0x01, 0xFF, + 0xF8, 0x00, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xF8, 0x0F, 0xF0, 0x7F, 0x83, + 0xF8, 0x03, 0xF0, 0xFC, 0x00, 0x7E, 0x1F, 0x00, 0x07, 0xE7, 0xE0, 0x00, + 0x7C, 0xF8, 0x00, 0x0F, 0xBE, 0x00, 0x01, 0xF7, 0xC0, 0x00, 0x3E, 0xF0, + 0x00, 0x07, 0xFE, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x3E, 0xF8, 0x00, 0x07, + 0xDF, 0x00, 0x00, 0xFB, 0xE0, 0x00, 0x3E, 0x7C, 0x00, 0x0F, 0xCF, 0xC0, + 0x01, 0xF0, 0xF8, 0x00, 0x7E, 0x1F, 0x80, 0x3F, 0x83, 0xFC, 0x1F, 0xE0, + 0x3F, 0xFF, 0xF8, 0x03, 0xFF, 0xFE, 0x00, 0x3F, 0xFF, 0x00, 0x03, 0xFF, + 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xF8, + 0x07, 0xFF, 0xFF, 0xC0, 0x7F, 0xFF, 0xFE, 0x07, 0xFF, 0xFF, 0xF0, 0x0F, + 0x80, 0x7F, 0x00, 0xF8, 0x01, 0xF0, 0x0F, 0x00, 0x1F, 0x01, 0xF0, 0x01, + 0xF0, 0x1F, 0x00, 0x1F, 0x01, 0xF0, 0x03, 0xE0, 0x1E, 0x00, 0x7E, 0x01, + 0xE0, 0x0F, 0xC0, 0x3F, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, + 0xE0, 0x03, 0xFF, 0xFC, 0x00, 0x7F, 0xFE, 0x00, 0x07, 0xC0, 0x00, 0x00, + 0x7C, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x78, 0x00, 0x00, 0x7F, 0xFF, + 0x00, 0x0F, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0x00, 0x0F, 0xFF, 0xF0, 0x00, + 0x7F, 0xFE, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xFF, 0x80, 0x03, + 0xFF, 0xF8, 0x00, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xF8, 0x0F, 0xF0, 0x7F, + 0x83, 0xF8, 0x03, 0xF0, 0xFC, 0x00, 0x3F, 0x1F, 0x00, 0x07, 0xE7, 0xC0, + 0x00, 0x7D, 0xF8, 0x00, 0x0F, 0xBE, 0x00, 0x01, 0xF7, 0xC0, 0x00, 0x3F, + 0xF0, 0x00, 0x07, 0xFE, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x3E, 0xF8, 0x00, + 0x07, 0xDF, 0x00, 0x01, 0xFB, 0xE0, 0x00, 0x3E, 0x7E, 0x00, 0x0F, 0x8F, + 0xC0, 0x03, 0xF0, 0xFC, 0x01, 0xFC, 0x1F, 0xE0, 0xFF, 0x01, 0xFF, 0xFF, + 0xC0, 0x1F, 0xFF, 0xF0, 0x01, 0xFF, 0xFC, 0x00, 0x1F, 0xFE, 0x00, 0x01, + 0xFE, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1F, 0xF8, 0x38, 0x0F, 0xFF, 0xFF, + 0x81, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xFC, 0x0F, 0xFF, 0xFF, 0x00, 0xF0, + 0x1F, 0x80, 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x3F, 0xFF, 0xFC, 0x01, 0xFF, + 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, 0xFF, 0x00, 0x7C, 0x03, + 0xF8, 0x03, 0xE0, 0x07, 0xC0, 0x1E, 0x00, 0x3E, 0x00, 0xF0, 0x01, 0xF0, + 0x0F, 0x80, 0x1F, 0x80, 0x7C, 0x01, 0xF8, 0x03, 0xE0, 0x3F, 0x80, 0x1F, + 0xFF, 0xFC, 0x01, 0xFF, 0xFF, 0x80, 0x0F, 0xFF, 0xF8, 0x00, 0x7F, 0xFF, + 0x00, 0x03, 0xFF, 0xFC, 0x00, 0x1E, 0x07, 0xF0, 0x01, 0xF0, 0x1F, 0xC0, + 0x0F, 0x80, 0x7E, 0x00, 0x7C, 0x03, 0xF8, 0x03, 0xC0, 0x0F, 0xC0, 0xFF, + 0xE0, 0x7F, 0xCF, 0xFF, 0x01, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, 0xC0, + 0x3F, 0xDF, 0xFC, 0x01, 0xFC, 0x00, 0x0F, 0xE1, 0x80, 0x0F, 0xFF, 0xF0, + 0x0F, 0xFF, 0xFC, 0x07, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xC1, 0xFC, 0x0F, + 0xE0, 0x7C, 0x01, 0xF8, 0x3E, 0x00, 0x3E, 0x0F, 0x80, 0x0F, 0x03, 0xE0, + 0x03, 0xC0, 0xFC, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x07, 0xFF, 0x80, 0x01, + 0xFF, 0xFC, 0x00, 0x3F, 0xFF, 0x80, 0x03, 0xFF, 0xF0, 0x00, 0x07, 0xFE, + 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0xE1, 0xE0, 0x00, 0xF8, 0xF8, 0x00, + 0x3E, 0x3E, 0x00, 0x1F, 0x8F, 0xC0, 0x0F, 0xC3, 0xFC, 0x0F, 0xF0, 0xFF, + 0xFF, 0xF8, 0x3F, 0xFF, 0xFC, 0x0F, 0xFF, 0xFE, 0x03, 0x9F, 0xFE, 0x00, + 0x01, 0xFE, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xF7, 0xFF, + 0xFF, 0xFD, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0x9F, 0x07, 0x83, 0xE7, + 0x83, 0xE0, 0xFB, 0xE0, 0xF8, 0x3E, 0xF8, 0x3E, 0x0F, 0x3E, 0x0F, 0x07, + 0xCF, 0x07, 0xC1, 0xF3, 0x81, 0xF0, 0x38, 0x00, 0x7C, 0x00, 0x00, 0x1E, + 0x00, 0x00, 0x07, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0xF8, 0x00, 0x00, + 0x3E, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, 0x00, + 0x00, 0x7C, 0x00, 0x07, 0xFF, 0xF8, 0x01, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, + 0x80, 0x3F, 0xFF, 0xE0, 0x07, 0xFF, 0xF0, 0x00, 0x3F, 0xF0, 0x7F, 0xE7, + 0xFF, 0x8F, 0xFF, 0x7F, 0xF9, 0xFF, 0xF7, 0xFF, 0x1F, 0xFE, 0x7F, 0xF0, + 0xFF, 0xC1, 0xE0, 0x01, 0xF0, 0x1E, 0x00, 0x1F, 0x03, 0xE0, 0x01, 0xF0, + 0x3E, 0x00, 0x1F, 0x03, 0xE0, 0x01, 0xE0, 0x3C, 0x00, 0x3E, 0x07, 0xC0, + 0x03, 0xE0, 0x7C, 0x00, 0x3E, 0x07, 0xC0, 0x03, 0xC0, 0x7C, 0x00, 0x3C, + 0x07, 0x80, 0x07, 0xC0, 0xF8, 0x00, 0x7C, 0x0F, 0x80, 0x07, 0xC0, 0xF8, + 0x00, 0x78, 0x0F, 0x80, 0x0F, 0x80, 0xFC, 0x01, 0xF8, 0x0F, 0xC0, 0x3F, + 0x00, 0xFF, 0x07, 0xE0, 0x07, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xC0, 0x03, + 0xFF, 0xF0, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x7F, 0xF0, + 0x1F, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xFC, 0x0F, + 0xFF, 0x7F, 0xE0, 0x3F, 0xF8, 0x7C, 0x00, 0x1F, 0x01, 0xF0, 0x00, 0xF8, + 0x07, 0xC0, 0x03, 0xE0, 0x1F, 0x80, 0x1F, 0x00, 0x3E, 0x00, 0xF8, 0x00, + 0xF8, 0x03, 0xE0, 0x03, 0xE0, 0x1F, 0x00, 0x0F, 0xC0, 0xFC, 0x00, 0x1F, + 0x03, 0xE0, 0x00, 0x7C, 0x1F, 0x00, 0x01, 0xF0, 0xFC, 0x00, 0x07, 0xC3, + 0xE0, 0x00, 0x1F, 0x9F, 0x00, 0x00, 0x3E, 0xFC, 0x00, 0x00, 0xFB, 0xE0, + 0x00, 0x03, 0xFF, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x3F, 0xE0, 0x00, + 0x00, 0x7F, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, + 0x1F, 0x00, 0x00, 0x00, 0x7F, 0xF0, 0x3F, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, + 0xFC, 0x1F, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFE, 0x07, 0xFF, 0x1E, 0x00, + 0x01, 0xE0, 0xF0, 0x7C, 0x1F, 0x0F, 0x87, 0xE0, 0xF0, 0x7C, 0x3F, 0x0F, + 0x83, 0xE3, 0xF8, 0x7C, 0x1F, 0x1F, 0xE3, 0xC0, 0xF9, 0xFF, 0x3E, 0x07, + 0xCF, 0xF9, 0xF0, 0x3E, 0xFF, 0xCF, 0x01, 0xF7, 0xBE, 0xF8, 0x0F, 0xFD, + 0xF7, 0xC0, 0x7B, 0xCF, 0xFC, 0x03, 0xFE, 0x7F, 0xE0, 0x3F, 0xE3, 0xFF, + 0x01, 0xFF, 0x0F, 0xF0, 0x0F, 0xF0, 0x7F, 0x80, 0x7F, 0x83, 0xFC, 0x03, + 0xF8, 0x1F, 0xC0, 0x1F, 0xC0, 0xFE, 0x00, 0xFC, 0x07, 0xF0, 0x07, 0xE0, + 0x3F, 0x00, 0x3E, 0x01, 0xF8, 0x00, 0x01, 0xFE, 0x03, 0xFE, 0x03, 0xFF, + 0x07, 0xFF, 0x07, 0xFF, 0x07, 0xFF, 0x07, 0xFE, 0x07, 0xFE, 0x03, 0xFC, + 0x03, 0xFC, 0x00, 0xFC, 0x03, 0xF0, 0x00, 0xFE, 0x07, 0xE0, 0x00, 0x7E, + 0x1F, 0xC0, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x1F, + 0xFC, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x07, + 0xE0, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x7F, + 0xF8, 0x00, 0x00, 0xFC, 0xFC, 0x00, 0x01, 0xF8, 0x7E, 0x00, 0x03, 0xF0, + 0x7E, 0x00, 0x07, 0xE0, 0x3F, 0x00, 0x0F, 0xC0, 0x1F, 0x80, 0x7F, 0xE0, + 0x7F, 0xE0, 0xFF, 0xE0, 0xFF, 0xE0, 0xFF, 0xE0, 0xFF, 0xE0, 0xFF, 0xE0, + 0xFF, 0xE0, 0x7F, 0xC0, 0xFF, 0xC0, 0x7F, 0xC0, 0x7F, 0xFF, 0xF0, 0x3F, + 0xFF, 0xFC, 0x0F, 0xFF, 0xFF, 0x03, 0xFF, 0x7F, 0x80, 0xFF, 0x87, 0xC0, + 0x1F, 0x01, 0xF8, 0x0F, 0x80, 0x3E, 0x07, 0xC0, 0x0F, 0xC3, 0xE0, 0x01, + 0xF1, 0xF0, 0x00, 0x7E, 0xF8, 0x00, 0x0F, 0xFC, 0x00, 0x03, 0xFE, 0x00, + 0x00, 0x7F, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x00, 0xF0, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, + 0xE0, 0x00, 0x00, 0x78, 0x00, 0x07, 0xFF, 0xF0, 0x03, 0xFF, 0xFE, 0x00, + 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xC0, 0x0F, 0xFF, 0xE0, 0x00, 0x01, 0xFF, + 0xFF, 0xC0, 0x3F, 0xFF, 0xF8, 0x07, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xE0, + 0x3F, 0xFF, 0xFC, 0x07, 0xC0, 0x3F, 0x00, 0xF8, 0x0F, 0xC0, 0x1F, 0x03, + 0xF0, 0x03, 0xC0, 0xFC, 0x00, 0xF8, 0x3F, 0x00, 0x0E, 0x0F, 0xC0, 0x00, + 0x03, 0xF0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x1F, 0x80, + 0x00, 0x07, 0xE0, 0x00, 0x01, 0xF8, 0x0E, 0x00, 0x7E, 0x03, 0xE0, 0x1F, + 0x80, 0x7C, 0x07, 0xE0, 0x0F, 0x01, 0xF8, 0x03, 0xE0, 0x7E, 0x00, 0x7C, + 0x1F, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xFC, 0x0F, 0xFF, + 0xFF, 0x81, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0xFF, 0xC0, 0x3F, 0xF0, 0x0F, + 0xFC, 0x07, 0xFF, 0x01, 0xFF, 0x80, 0x7C, 0x00, 0x1E, 0x00, 0x07, 0x80, + 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x07, 0xC0, 0x01, + 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x07, 0x80, 0x03, 0xE0, 0x00, 0xF8, + 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, + 0x1F, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, + 0x80, 0x03, 0xC0, 0x01, 0xF0, 0x00, 0x7F, 0xE0, 0x1F, 0xF8, 0x07, 0xFE, + 0x01, 0xFF, 0x80, 0xFF, 0xC0, 0x00, 0x20, 0x03, 0xC0, 0x3E, 0x01, 0xF0, + 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x3E, 0x01, 0xF0, 0x0F, 0x80, + 0x7C, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x0F, 0x80, 0x7C, 0x03, + 0xE0, 0x1F, 0x80, 0x7C, 0x03, 0xE0, 0x1F, 0x00, 0x7C, 0x03, 0xE0, 0x1F, + 0x00, 0xF8, 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x07, 0xC0, 0x1F, 0x00, 0xF8, + 0x07, 0xC0, 0x3E, 0x00, 0xF0, 0x07, 0x80, 0x38, 0x00, 0xFF, 0xC0, 0x7F, + 0xE0, 0x1F, 0xF8, 0x07, 0xFE, 0x01, 0xFF, 0x80, 0x03, 0xE0, 0x00, 0xF0, + 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xE0, 0x00, 0x78, 0x00, + 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x1F, + 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x78, 0x00, 0x3E, 0x00, 0x0F, 0x80, + 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3C, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, + 0xF0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x0F, 0x80, 0x7F, 0xE0, 0x3F, 0xF8, + 0x0F, 0xFC, 0x03, 0xFF, 0x00, 0xFF, 0xC0, 0x00, 0x00, 0x08, 0x00, 0x01, + 0xC0, 0x00, 0x3C, 0x00, 0x07, 0xE0, 0x00, 0xFE, 0x00, 0x1F, 0xF0, 0x03, + 0xFF, 0x80, 0xFF, 0xF8, 0x1F, 0xCF, 0xC3, 0xF8, 0xFE, 0x7E, 0x07, 0xEF, + 0xC0, 0x3F, 0xF8, 0x03, 0xFF, 0x00, 0x1F, 0xE0, 0x00, 0xE0, 0x7F, 0xFF, + 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xEF, 0xFF, 0xFF, 0xFF, 0x00, 0x60, 0xF0, 0xF8, 0x7C, 0x3E, 0x1F, 0x0F, + 0x06, 0x00, 0x3F, 0xE0, 0x03, 0xFF, 0xF8, 0x07, 0xFF, 0xFC, 0x07, 0xFF, + 0xFE, 0x07, 0xFF, 0xFE, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3E, 0x00, 0x00, + 0x3E, 0x00, 0x7F, 0xFE, 0x03, 0xFF, 0xFC, 0x0F, 0xFF, 0xFC, 0x1F, 0xFF, + 0xFC, 0x3F, 0xFF, 0xFC, 0x7F, 0x00, 0x78, 0x7C, 0x00, 0x78, 0xF8, 0x00, + 0xF8, 0xF8, 0x03, 0xF8, 0xFC, 0x0F, 0xFE, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, + 0xFF, 0x7F, 0xFF, 0xFF, 0x3F, 0xFD, 0xFE, 0x0F, 0xE0, 0x00, 0x03, 0xFC, + 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x0F, 0xF0, 0x00, + 0x00, 0x3F, 0x80, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, + 0x1F, 0x00, 0x00, 0x00, 0xF0, 0xFE, 0x00, 0x0F, 0xBF, 0xFC, 0x00, 0x7F, + 0xFF, 0xF8, 0x03, 0xFF, 0xFF, 0xC0, 0x1F, 0xFF, 0xFF, 0x00, 0xFF, 0x03, + 0xF8, 0x0F, 0xE0, 0x07, 0xE0, 0x7E, 0x00, 0x3F, 0x03, 0xE0, 0x00, 0xF8, + 0x1F, 0x00, 0x07, 0xC0, 0xF0, 0x00, 0x3E, 0x0F, 0x80, 0x01, 0xF0, 0x7C, + 0x00, 0x1F, 0x03, 0xE0, 0x00, 0xF8, 0x1F, 0x00, 0x0F, 0xC0, 0xFC, 0x00, + 0x7C, 0x0F, 0xE0, 0x07, 0xE3, 0xFF, 0xC0, 0xFE, 0x3F, 0xFF, 0xFF, 0xE1, + 0xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0xE0, 0x7F, 0x9F, 0xFC, 0x00, 0x00, + 0x3F, 0x80, 0x00, 0x00, 0x1F, 0xE3, 0x80, 0x7F, 0xFF, 0xC0, 0x7F, 0xFF, + 0xE0, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xF8, 0xFF, 0x01, 0xFC, 0x7E, 0x00, + 0x7C, 0x7E, 0x00, 0x3E, 0x3E, 0x00, 0x0E, 0x3E, 0x00, 0x00, 0x1F, 0x00, + 0x00, 0x1F, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, 0xE0, + 0x00, 0x01, 0xF0, 0x00, 0x00, 0xFC, 0x00, 0x0C, 0x7F, 0x80, 0x3F, 0x1F, + 0xFF, 0xFF, 0x8F, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0x00, + 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x01, 0xFE, 0x00, 0x00, + 0x1F, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x3E, + 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x7C, 0x00, 0x3F, 0x87, 0xC0, 0x0F, + 0xFF, 0x7C, 0x03, 0xFF, 0xFF, 0xC0, 0x7F, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, + 0x81, 0xFC, 0x0F, 0xF8, 0x3F, 0x00, 0x3F, 0x83, 0xE0, 0x01, 0xF0, 0x7C, + 0x00, 0x1F, 0x07, 0xC0, 0x01, 0xF0, 0xF8, 0x00, 0x1F, 0x0F, 0x80, 0x01, + 0xF0, 0xF8, 0x00, 0x1E, 0x0F, 0x80, 0x03, 0xE0, 0xF8, 0x00, 0x3E, 0x0F, + 0xC0, 0x07, 0xE0, 0xFC, 0x00, 0xFE, 0x07, 0xF0, 0x3F, 0xF8, 0x7F, 0xFF, + 0xFF, 0xC3, 0xFF, 0xFF, 0xFC, 0x3F, 0xFF, 0xFF, 0xC0, 0xFF, 0xE7, 0xF8, + 0x03, 0xF8, 0x00, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0xFF, 0xF0, 0x03, 0xFF, + 0xF8, 0x07, 0xFF, 0xFC, 0x0F, 0xFF, 0xFE, 0x1F, 0xE0, 0x7E, 0x3F, 0x80, + 0x1F, 0x3F, 0x00, 0x0F, 0x7E, 0x00, 0x0F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x00, + 0x00, 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x1C, 0x7F, 0x01, 0xFE, 0x7F, 0xFF, + 0xFE, 0x3F, 0xFF, 0xFE, 0x1F, 0xFF, 0xFC, 0x0F, 0xFF, 0xF0, 0x03, 0xFF, + 0x00, 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x3F, 0xFF, 0x00, 0x07, 0xFF, 0xF0, + 0x00, 0xFF, 0xFF, 0x00, 0x1F, 0xFF, 0xE0, 0x01, 0xF0, 0x00, 0x00, 0x3E, + 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x7F, 0xFF, 0xF0, + 0x0F, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0x00, 0xFF, + 0xFF, 0xE0, 0x00, 0x78, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0xF8, 0x00, + 0x00, 0x0F, 0x80, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, + 0xF0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x1E, 0x00, + 0x00, 0x03, 0xE0, 0x00, 0x07, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xF0, 0x0F, + 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xF0, 0x07, 0xFF, 0xFE, 0x00, 0x00, 0x3F, + 0x80, 0x00, 0x0F, 0xFE, 0xFF, 0x03, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xFF, + 0x0F, 0xFF, 0xFF, 0xF1, 0xFC, 0x1F, 0xFE, 0x3F, 0x80, 0x7F, 0x03, 0xE0, + 0x03, 0xF0, 0x7E, 0x00, 0x3E, 0x07, 0xC0, 0x03, 0xE0, 0xF8, 0x00, 0x3E, + 0x0F, 0x80, 0x03, 0xE0, 0xF8, 0x00, 0x3E, 0x0F, 0x80, 0x03, 0xC0, 0xF8, + 0x00, 0x7C, 0x0F, 0xC0, 0x0F, 0xC0, 0xFC, 0x01, 0xFC, 0x07, 0xF0, 0x7F, + 0x80, 0x7F, 0xFF, 0xF8, 0x03, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xF8, 0x00, + 0xFF, 0xEF, 0x80, 0x03, 0xF0, 0xF0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, + 0xF0, 0x00, 0x00, 0x7E, 0x00, 0x1F, 0xFF, 0xE0, 0x03, 0xFF, 0xFC, 0x00, + 0x3F, 0xFF, 0x80, 0x03, 0xFF, 0xE0, 0x00, 0x3F, 0xF8, 0x00, 0x00, 0x03, + 0xF8, 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x3F, 0xE0, 0x00, + 0x07, 0xF0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0xC0, + 0x00, 0x01, 0xF1, 0xF8, 0x00, 0x79, 0xFF, 0x80, 0x1E, 0xFF, 0xF0, 0x0F, + 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0x80, 0xFF, 0x07, 0xE0, 0x3F, 0x00, 0xF8, + 0x1F, 0x80, 0x3E, 0x07, 0xC0, 0x0F, 0x81, 0xF0, 0x03, 0xC0, 0x7C, 0x00, + 0xF0, 0x1E, 0x00, 0x7C, 0x0F, 0x80, 0x1F, 0x03, 0xE0, 0x07, 0xC0, 0xF8, + 0x01, 0xE0, 0x3C, 0x00, 0xF8, 0x0F, 0x00, 0x3E, 0x1F, 0xF8, 0x3F, 0xEF, + 0xFE, 0x1F, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0xF0, 0x3F, + 0xE0, 0x00, 0x07, 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0x1F, 0x80, 0x00, 0x3E, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0xFF, 0xC0, 0x07, 0xFF, 0x80, 0x0F, 0xFE, 0x00, 0x1F, 0xFC, 0x00, + 0x3F, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x80, 0x00, + 0x1F, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF0, 0x00, 0x01, + 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x00, 0x3F, 0xFF, + 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, + 0x80, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xF0, 0x00, 0x07, + 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0xFF, 0xFE, 0x07, 0xFF, 0xFC, 0x0F, 0xFF, 0xF8, 0x1F, 0xFF, 0xF0, + 0x3F, 0xFF, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3E, 0x00, + 0x00, 0x7C, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x07, 0xC0, 0x00, + 0x0F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xF8, 0x00, 0x01, + 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x3E, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0xC0, + 0xFF, 0xFF, 0x03, 0xFF, 0xFC, 0x07, 0xFF, 0xF0, 0x0F, 0xFF, 0xC0, 0x0F, + 0xFC, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x7F, 0xC0, + 0x00, 0x1F, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x0F, + 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x3C, 0x3F, 0xF0, + 0x1F, 0x1F, 0xFC, 0x07, 0xC7, 0xFF, 0x01, 0xF1, 0xFF, 0xC0, 0x78, 0x7F, + 0xE0, 0x1E, 0x7F, 0x80, 0x0F, 0xBF, 0x80, 0x03, 0xFF, 0xC0, 0x00, 0xFF, + 0xC0, 0x00, 0x3F, 0xE0, 0x00, 0x0F, 0xFC, 0x00, 0x07, 0xFF, 0x80, 0x01, + 0xF7, 0xF0, 0x00, 0x7C, 0xFE, 0x00, 0x1E, 0x1F, 0xC0, 0x0F, 0x83, 0xF8, + 0x1F, 0xE0, 0xFF, 0xEF, 0xF8, 0x3F, 0xFB, 0xFE, 0x1F, 0xFE, 0xFF, 0x07, + 0xFF, 0x9F, 0xC0, 0xFF, 0xC0, 0x00, 0x7F, 0xF0, 0x01, 0xFF, 0xC0, 0x03, + 0xFF, 0x80, 0x07, 0xFF, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x7C, 0x00, 0x00, + 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1F, + 0x00, 0x00, 0x3C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xE0, + 0x00, 0x07, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x7C, 0x00, + 0x00, 0xF8, 0x00, 0x01, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x80, 0x00, + 0x1F, 0x00, 0x00, 0x3E, 0x00, 0x7F, 0xFF, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0x00, 0x00, 0x07, 0x81, 0xE0, + 0x3F, 0xBF, 0x9F, 0xE1, 0xFF, 0xFE, 0xFF, 0x87, 0xFF, 0xFF, 0xFF, 0x1F, + 0xFF, 0xFF, 0xFC, 0x7F, 0xC7, 0xF1, 0xF0, 0x7E, 0x1F, 0x87, 0xC1, 0xF0, + 0x7C, 0x1F, 0x07, 0x81, 0xE0, 0x7C, 0x1E, 0x0F, 0x81, 0xE0, 0xF8, 0x3E, + 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3C, 0x0F, 0x03, + 0xC1, 0xF0, 0x7C, 0x0F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF1, + 0xFE, 0x1F, 0x87, 0xEF, 0xFC, 0x7F, 0x1F, 0xFF, 0xF3, 0xFC, 0x7F, 0xFF, + 0xCF, 0xF3, 0xFF, 0xFE, 0x3F, 0x8F, 0xE0, 0x00, 0x01, 0xF8, 0x01, 0xF9, + 0xFF, 0x80, 0xFE, 0xFF, 0xF0, 0x7F, 0xFF, 0xFC, 0x1F, 0xFF, 0xFF, 0x83, + 0xFF, 0x07, 0xE0, 0x3F, 0x00, 0xF8, 0x1F, 0x80, 0x3E, 0x07, 0xC0, 0x0F, + 0x81, 0xF0, 0x03, 0xC0, 0x7C, 0x00, 0xF0, 0x1E, 0x00, 0x7C, 0x0F, 0x80, + 0x1F, 0x03, 0xE0, 0x07, 0xC0, 0xF8, 0x01, 0xE0, 0x3C, 0x00, 0xF8, 0x0F, + 0x00, 0x3E, 0x1F, 0xF8, 0x3F, 0xEF, 0xFE, 0x1F, 0xFF, 0xFF, 0x87, 0xFF, + 0xFF, 0xE1, 0xFF, 0xFF, 0xF0, 0x3F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0x7F, + 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xF0, 0xFF, + 0x03, 0xF8, 0xFE, 0x00, 0xFE, 0x7C, 0x00, 0x3F, 0x7C, 0x00, 0x0F, 0xBE, + 0x00, 0x07, 0xFE, 0x00, 0x03, 0xFF, 0x00, 0x01, 0xFF, 0x80, 0x00, 0xFF, + 0xC0, 0x00, 0xFB, 0xE0, 0x00, 0xFD, 0xF8, 0x00, 0x7C, 0xFE, 0x00, 0xFE, + 0x3F, 0x81, 0xFE, 0x1F, 0xFF, 0xFE, 0x07, 0xFF, 0xFE, 0x01, 0xFF, 0xFC, + 0x00, 0x7F, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x07, + 0xF9, 0xFF, 0xC0, 0x1F, 0xF7, 0xFF, 0xC0, 0x3F, 0xFF, 0xFF, 0xC0, 0x7F, + 0xFF, 0xFF, 0xC0, 0x7F, 0xF0, 0x3F, 0x80, 0x3F, 0x80, 0x1F, 0x80, 0x7E, + 0x00, 0x3F, 0x00, 0xF8, 0x00, 0x3E, 0x01, 0xF0, 0x00, 0x7C, 0x03, 0xC0, + 0x00, 0xF8, 0x0F, 0x80, 0x01, 0xF0, 0x1F, 0x00, 0x07, 0xE0, 0x3E, 0x00, + 0x0F, 0x80, 0x7C, 0x00, 0x3F, 0x01, 0xFC, 0x00, 0xFC, 0x03, 0xFE, 0x07, + 0xF8, 0x07, 0xFF, 0xFF, 0xE0, 0x0F, 0xFF, 0xFF, 0x80, 0x1E, 0xFF, 0xFC, + 0x00, 0x7C, 0xFF, 0xF0, 0x00, 0xF8, 0x7F, 0x00, 0x01, 0xF0, 0x00, 0x00, + 0x03, 0xE0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, + 0xFF, 0xF0, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0x1F, + 0xFF, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, + 0x07, 0xFF, 0x3F, 0xC0, 0xFF, 0xFD, 0xFE, 0x0F, 0xFF, 0xFF, 0xF0, 0xFF, + 0xFF, 0xFF, 0x8F, 0xE0, 0x7F, 0xF8, 0xFC, 0x00, 0xFE, 0x07, 0xC0, 0x03, + 0xE0, 0x7C, 0x00, 0x1F, 0x03, 0xE0, 0x00, 0xF8, 0x1E, 0x00, 0x07, 0xC1, + 0xF0, 0x00, 0x3E, 0x0F, 0x80, 0x01, 0xE0, 0x7C, 0x00, 0x1F, 0x03, 0xF0, + 0x01, 0xF8, 0x1F, 0x80, 0x1F, 0xC0, 0xFF, 0x03, 0xFC, 0x03, 0xFF, 0xFF, + 0xE0, 0x1F, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0xF8, 0x00, 0xFF, 0xE7, 0xC0, + 0x01, 0xFC, 0x3C, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x1F, 0x00, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x07, 0xFF, 0x80, 0x00, 0x7F, + 0xFE, 0x00, 0x07, 0xFF, 0xF0, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0xFF, 0xF0, + 0x00, 0x00, 0x00, 0x0F, 0x80, 0x3F, 0xC3, 0xFE, 0x07, 0xFC, 0xFF, 0xE0, + 0x7F, 0xDF, 0xFF, 0x07, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, 0x1C, 0x00, 0x7F, + 0xC0, 0x00, 0x07, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x0F, 0xC0, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x01, 0xE0, 0x00, + 0x07, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0x00, 0xFF, + 0xFF, 0xF0, 0x07, 0xFF, 0xFE, 0x00, 0x00, 0x3F, 0xCE, 0x03, 0xFF, 0xFC, + 0x0F, 0xFF, 0xF8, 0x3F, 0xFF, 0xF0, 0xFF, 0xFF, 0xC3, 0xF8, 0x0F, 0x87, + 0xC0, 0x0E, 0x0F, 0x80, 0x00, 0x1F, 0xF0, 0x00, 0x3F, 0xFF, 0x80, 0x3F, + 0xFF, 0xC0, 0x3F, 0xFF, 0xC0, 0x1F, 0xFF, 0xC0, 0x01, 0xFF, 0x80, 0x00, + 0x3F, 0x1C, 0x00, 0x3E, 0x7C, 0x00, 0x7C, 0xFC, 0x03, 0xF3, 0xFF, 0xFF, + 0xE7, 0xFF, 0xFF, 0x8F, 0xFF, 0xFE, 0x1F, 0xFF, 0xF0, 0x00, 0xFF, 0x00, + 0x00, 0x03, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, + 0x80, 0x00, 0x78, 0x00, 0x7F, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xE0, 0x00, + 0x1E, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x3C, 0x00, + 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7E, 0x00, 0xF7, 0xFF, + 0xFF, 0x7F, 0xFF, 0xF3, 0xFF, 0xFE, 0x1F, 0xFF, 0x80, 0x7F, 0x80, 0x7F, + 0x01, 0xFF, 0xFE, 0x07, 0xFF, 0xF8, 0x1F, 0xFF, 0xF0, 0x3F, 0xFF, 0xE0, + 0x3F, 0xC7, 0xC0, 0x07, 0x8F, 0x80, 0x1F, 0x3E, 0x00, 0x3E, 0x7C, 0x00, + 0x7C, 0xF8, 0x00, 0xF1, 0xF0, 0x03, 0xE3, 0xE0, 0x07, 0xC7, 0xC0, 0x0F, + 0x8F, 0x80, 0x1F, 0x1F, 0x00, 0x7C, 0x3E, 0x01, 0xF8, 0x7E, 0x0F, 0xFC, + 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xF1, 0xFF, 0xEF, 0xE1, 0xFF, 0xBF, 0x80, + 0xFC, 0x00, 0x00, 0x7F, 0xF0, 0x7F, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xE0, 0xFF, 0xE1, 0xF8, 0x03, 0xE0, + 0x0F, 0x80, 0x3E, 0x00, 0xF8, 0x07, 0xC0, 0x0F, 0x80, 0xF8, 0x00, 0xFC, + 0x1F, 0x80, 0x07, 0xC1, 0xF0, 0x00, 0x7C, 0x3E, 0x00, 0x07, 0xE7, 0xE0, + 0x00, 0x3E, 0x7C, 0x00, 0x03, 0xEF, 0x80, 0x00, 0x3F, 0xF0, 0x00, 0x03, + 0xFF, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x1F, 0xC0, + 0x00, 0x00, 0xF8, 0x00, 0x00, 0x7F, 0xC0, 0x1F, 0xEF, 0xFC, 0x03, 0xFF, + 0xFF, 0xC0, 0x7F, 0xFF, 0xFC, 0x07, 0xFE, 0x7F, 0x80, 0x3F, 0xC3, 0xE1, + 0xF0, 0xF8, 0x3E, 0x3F, 0x0F, 0x03, 0xE3, 0xF1, 0xF0, 0x3E, 0x7F, 0x1E, + 0x03, 0xE7, 0xF3, 0xE0, 0x3E, 0xFF, 0xBC, 0x03, 0xFF, 0xFF, 0xC0, 0x3F, + 0xFF, 0xFC, 0x03, 0xFE, 0xFF, 0x80, 0x3F, 0xEF, 0xF8, 0x03, 0xFC, 0xFF, + 0x00, 0x3F, 0x8F, 0xF0, 0x03, 0xF8, 0x7E, 0x00, 0x3F, 0x07, 0xE0, 0x01, + 0xF0, 0x7C, 0x00, 0x1E, 0x07, 0xC0, 0x00, 0x03, 0xFE, 0x0F, 0xF8, 0x3F, + 0xF0, 0xFF, 0xC1, 0xFF, 0x8F, 0xFE, 0x0F, 0xFC, 0x7F, 0xF0, 0x7F, 0xC1, + 0xFF, 0x00, 0xFE, 0x1F, 0xC0, 0x03, 0xF9, 0xFC, 0x00, 0x0F, 0xFF, 0xC0, + 0x00, 0x3F, 0xF8, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x07, 0xF8, 0x00, 0x00, + 0x7F, 0xE0, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0xFE, 0xFE, 0x00, 0x0F, 0xE3, + 0xF8, 0x00, 0xFE, 0x0F, 0xE0, 0x3F, 0xE0, 0x7F, 0xC3, 0xFF, 0x87, 0xFF, + 0x3F, 0xFC, 0x7F, 0xF9, 0xFF, 0xE3, 0xFF, 0x87, 0xFE, 0x0F, 0xF8, 0x00, + 0x01, 0xFE, 0x03, 0xFE, 0x03, 0xFF, 0x07, 0xFF, 0x07, 0xFF, 0x07, 0xFF, + 0x07, 0xFF, 0x07, 0xFE, 0x03, 0xFC, 0x03, 0xFC, 0x01, 0xF8, 0x01, 0xF0, + 0x00, 0xF8, 0x03, 0xF0, 0x00, 0xF8, 0x03, 0xE0, 0x00, 0xFC, 0x07, 0xC0, + 0x00, 0x7C, 0x0F, 0x80, 0x00, 0x7C, 0x0F, 0x80, 0x00, 0x7E, 0x1F, 0x00, + 0x00, 0x7E, 0x3E, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x00, 0x3E, 0x7C, 0x00, + 0x00, 0x3F, 0xF8, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0x1F, 0xE0, 0x00, + 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x0F, 0x80, 0x00, + 0x00, 0x1F, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, + 0x00, 0x7C, 0x00, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, + 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x7F, 0xFE, 0x00, 0x00, + 0x07, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, + 0xE0, 0xFF, 0xFF, 0xE0, 0x7C, 0x0F, 0xE0, 0x3C, 0x0F, 0xE0, 0x1E, 0x0F, + 0xC0, 0x00, 0x1F, 0xC0, 0x00, 0x1F, 0xC0, 0x00, 0x1F, 0xC0, 0x00, 0x1F, + 0x80, 0x00, 0x3F, 0x80, 0x00, 0x3F, 0x80, 0x00, 0x3F, 0x80, 0xF0, 0x3F, + 0x00, 0xF8, 0x3F, 0xFF, 0xFC, 0x3F, 0xFF, 0xFE, 0x1F, 0xFF, 0xFE, 0x0F, + 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0x80, 0x00, 0x0F, 0x00, 0x1F, 0xC0, 0x1F, + 0xE0, 0x1F, 0xF0, 0x0F, 0xE0, 0x0F, 0xC0, 0x07, 0xC0, 0x07, 0xC0, 0x03, + 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x78, 0x00, 0x7C, 0x00, 0x3E, 0x00, + 0x1F, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x3F, 0x80, 0x3F, 0xC0, 0x1F, 0xC0, + 0x0F, 0xE0, 0x07, 0xF8, 0x00, 0xFC, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, + 0x80, 0x07, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, + 0x7E, 0x00, 0x3F, 0x80, 0x1F, 0xE0, 0x07, 0xF0, 0x03, 0xF8, 0x00, 0x78, + 0x00, 0x01, 0xE0, 0x3C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, 0x80, 0xF0, 0x3E, + 0x07, 0xC0, 0xF0, 0x1E, 0x03, 0xC0, 0xF8, 0x1F, 0x03, 0xC0, 0x78, 0x0F, + 0x03, 0xE0, 0x7C, 0x0F, 0x01, 0xE0, 0x3C, 0x0F, 0x81, 0xF0, 0x3C, 0x07, + 0x80, 0xF0, 0x3E, 0x07, 0xC0, 0xF0, 0x1E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, + 0xC0, 0x70, 0x00, 0x00, 0xF0, 0x00, 0xFC, 0x00, 0x7F, 0x00, 0x3F, 0xC0, + 0x0F, 0xE0, 0x03, 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, + 0x00, 0x0F, 0x80, 0x07, 0x80, 0x03, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, + 0xF8, 0x00, 0x7E, 0x00, 0x3F, 0xC0, 0x0F, 0xE0, 0x07, 0xF0, 0x07, 0xF8, + 0x07, 0xF8, 0x03, 0xE0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF0, 0x00, 0x78, + 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x00, 0x1F, 0x80, 0x7F, + 0xC0, 0x7F, 0xC0, 0x3F, 0xC0, 0x1F, 0xC0, 0x07, 0x80, 0x00, 0x03, 0xE0, + 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0xE0, 0x39, 0xFF, 0xE0, 0xF7, 0xFF, 0xE7, + 0xFF, 0xCF, 0xFF, 0xFE, 0x0F, 0xFF, 0x38, 0x0F, 0xFC, 0x00, 0x0F, 0xE0, + 0x00, 0x0F, 0x80}; + +const GFXglyph FreeMonoBoldOblique24pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 28, 0, 1}, // 0x20 ' ' + {0, 12, 31, 28, 12, -29}, // 0x21 '!' + {47, 17, 14, 28, 11, -28}, // 0x22 '"' + {77, 24, 34, 28, 5, -30}, // 0x23 '#' + {179, 25, 38, 28, 4, -31}, // 0x24 '$' + {298, 22, 30, 28, 6, -28}, // 0x25 '%' + {381, 21, 28, 28, 5, -26}, // 0x26 '&' + {455, 7, 14, 28, 16, -28}, // 0x27 ''' + {468, 14, 37, 28, 14, -29}, // 0x28 '(' + {533, 14, 37, 28, 5, -29}, // 0x29 ')' + {598, 21, 19, 28, 8, -28}, // 0x2A '*' + {648, 24, 26, 28, 5, -25}, // 0x2B '+' + {726, 12, 14, 28, 6, -6}, // 0x2C ',' + {747, 24, 5, 28, 5, -15}, // 0x2D '-' + {762, 7, 6, 28, 11, -4}, // 0x2E '.' + {768, 28, 38, 28, 3, -32}, // 0x2F '/' + {901, 23, 31, 28, 6, -29}, // 0x30 '0' + {991, 21, 30, 28, 4, -29}, // 0x31 '1' + {1070, 26, 30, 28, 3, -29}, // 0x32 '2' + {1168, 25, 31, 28, 4, -29}, // 0x33 '3' + {1265, 22, 28, 28, 5, -27}, // 0x34 '4' + {1342, 25, 31, 28, 4, -29}, // 0x35 '5' + {1439, 24, 31, 28, 7, -29}, // 0x36 '6' + {1532, 22, 30, 28, 9, -29}, // 0x37 '7' + {1615, 23, 31, 28, 6, -29}, // 0x38 '8' + {1705, 24, 31, 28, 5, -29}, // 0x39 '9' + {1798, 10, 22, 28, 11, -20}, // 0x3A ':' + {1826, 15, 28, 28, 5, -20}, // 0x3B ';' + {1879, 25, 21, 28, 5, -23}, // 0x3C '<' + {1945, 26, 14, 28, 4, -19}, // 0x3D '=' + {1991, 25, 22, 28, 4, -23}, // 0x3E '>' + {2060, 19, 29, 28, 10, -27}, // 0x3F '?' + {2129, 23, 36, 28, 5, -28}, // 0x40 '@' + {2233, 30, 27, 28, 0, -26}, // 0x41 'A' + {2335, 29, 27, 28, 1, -26}, // 0x42 'B' + {2433, 28, 29, 28, 3, -27}, // 0x43 'C' + {2535, 28, 27, 28, 1, -26}, // 0x44 'D' + {2630, 29, 27, 28, 1, -26}, // 0x45 'E' + {2728, 31, 27, 28, 0, -26}, // 0x46 'F' + {2833, 28, 29, 28, 3, -27}, // 0x47 'G' + {2935, 30, 27, 28, 1, -26}, // 0x48 'H' + {3037, 25, 27, 28, 3, -26}, // 0x49 'I' + {3122, 31, 28, 28, 0, -26}, // 0x4A 'J' + {3231, 31, 27, 28, 0, -26}, // 0x4B 'K' + {3336, 27, 27, 28, 1, -26}, // 0x4C 'L' + {3428, 34, 27, 28, 0, -26}, // 0x4D 'M' + {3543, 32, 27, 28, 1, -26}, // 0x4E 'N' + {3651, 27, 29, 28, 3, -27}, // 0x4F 'O' + {3749, 28, 27, 28, 1, -26}, // 0x50 'P' + {3844, 27, 35, 28, 3, -27}, // 0x51 'Q' + {3963, 29, 27, 28, 0, -26}, // 0x52 'R' + {4061, 26, 29, 28, 3, -27}, // 0x53 'S' + {4156, 26, 27, 28, 4, -26}, // 0x54 'T' + {4244, 28, 28, 28, 4, -26}, // 0x55 'U' + {4342, 30, 27, 28, 2, -26}, // 0x56 'V' + {4444, 29, 27, 28, 3, -26}, // 0x57 'W' + {4542, 32, 27, 28, 0, -26}, // 0x58 'X' + {4650, 26, 27, 28, 4, -26}, // 0x59 'Y' + {4738, 27, 27, 28, 2, -26}, // 0x5A 'Z' + {4830, 18, 37, 28, 10, -29}, // 0x5B '[' + {4914, 13, 38, 28, 10, -32}, // 0x5C '\' + {4976, 18, 37, 28, 5, -29}, // 0x5D ']' + {5060, 20, 15, 28, 8, -29}, // 0x5E '^' + {5098, 29, 5, 28, -2, 5}, // 0x5F '_' + {5117, 8, 8, 28, 13, -30}, // 0x60 '`' + {5125, 24, 23, 28, 3, -21}, // 0x61 'a' + {5194, 29, 31, 28, 0, -29}, // 0x62 'b' + {5307, 25, 23, 28, 3, -21}, // 0x63 'c' + {5379, 28, 31, 28, 3, -29}, // 0x64 'd' + {5488, 24, 23, 28, 3, -21}, // 0x65 'e' + {5557, 28, 30, 28, 4, -29}, // 0x66 'f' + {5662, 28, 31, 28, 3, -21}, // 0x67 'g' + {5771, 26, 30, 28, 2, -29}, // 0x68 'h' + {5869, 23, 29, 28, 3, -28}, // 0x69 'i' + {5953, 23, 38, 28, 3, -28}, // 0x6A 'j' + {6063, 26, 30, 28, 2, -29}, // 0x6B 'k' + {6161, 23, 30, 28, 3, -29}, // 0x6C 'l' + {6248, 30, 22, 28, 0, -21}, // 0x6D 'm' + {6331, 26, 22, 28, 2, -21}, // 0x6E 'n' + {6403, 25, 23, 28, 3, -21}, // 0x6F 'o' + {6475, 31, 31, 28, -1, -21}, // 0x70 'p' + {6596, 29, 31, 28, 2, -21}, // 0x71 'q' + {6709, 28, 22, 28, 2, -21}, // 0x72 'r' + {6786, 23, 23, 28, 4, -21}, // 0x73 's' + {6853, 20, 28, 28, 5, -26}, // 0x74 't' + {6923, 23, 22, 28, 5, -20}, // 0x75 'u' + {6987, 28, 21, 28, 3, -20}, // 0x76 'v' + {7061, 28, 21, 28, 3, -20}, // 0x77 'w' + {7135, 29, 21, 28, 1, -20}, // 0x78 'x' + {7212, 32, 30, 28, -1, -20}, // 0x79 'y' + {7332, 25, 21, 28, 4, -20}, // 0x7A 'z' + {7398, 17, 37, 28, 10, -29}, // 0x7B '{' + {7477, 11, 36, 28, 11, -28}, // 0x7C '|' + {7527, 17, 37, 28, 6, -29}, // 0x7D '}' + {7606, 23, 10, 28, 5, -17}}; // 0x7E '~' + +const GFXfont FreeMonoBoldOblique24pt7b PROGMEM = { + (uint8_t *)FreeMonoBoldOblique24pt7bBitmaps, + (GFXglyph *)FreeMonoBoldOblique24pt7bGlyphs, 0x20, 0x7E, 47}; + +// Approx. 8307 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMonoBoldOblique9pt7b.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMonoBoldOblique9pt7b.h new file mode 100644 index 0000000..86d3e9c --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMonoBoldOblique9pt7b.h @@ -0,0 +1,205 @@ +#pragma once +#include + +const uint8_t FreeMonoBoldOblique9pt7bBitmaps[] PROGMEM = { + 0x39, 0xCC, 0x67, 0x31, 0x8C, 0x07, 0x38, 0x6C, 0xD9, 0x36, 0x48, 0x80, + 0x09, 0x0D, 0x86, 0xCF, 0xF7, 0xF9, 0xB3, 0xFD, 0xFE, 0x6C, 0x36, 0x1B, + 0x00, 0x00, 0x06, 0x07, 0x07, 0xE6, 0x33, 0x01, 0xE0, 0x7C, 0x06, 0x43, + 0x33, 0xBF, 0x83, 0x03, 0x00, 0x80, 0x1C, 0x11, 0x10, 0x88, 0x83, 0xB8, + 0xF3, 0xB8, 0x22, 0x21, 0x11, 0x07, 0x00, 0x0F, 0x1F, 0x30, 0x30, 0x38, + 0x7B, 0xDF, 0xCE, 0xFF, 0x7E, 0xFA, 0x80, 0x19, 0x8C, 0xC6, 0x63, 0x18, + 0xC6, 0x31, 0xC6, 0x30, 0x31, 0xC6, 0x31, 0x8C, 0x63, 0x31, 0x98, 0xCC, + 0x40, 0x08, 0x08, 0xFF, 0xFF, 0x38, 0x6C, 0x6C, 0x0C, 0x06, 0x03, 0x1F, + 0xFF, 0xF8, 0xC0, 0x60, 0x30, 0x10, 0x00, 0x36, 0x4C, 0x80, 0xFF, 0xFF, + 0xC0, 0xFC, 0x00, 0x00, 0x0C, 0x03, 0x00, 0xC0, 0x18, 0x06, 0x01, 0x80, + 0x30, 0x0C, 0x03, 0x00, 0x60, 0x18, 0x06, 0x00, 0xC0, 0x30, 0x00, 0x0F, + 0x0F, 0xCC, 0x6C, 0x36, 0x1B, 0x0D, 0x05, 0x86, 0xC3, 0x63, 0x3F, 0x8F, + 0x00, 0x06, 0x1C, 0x3C, 0x6C, 0x0C, 0x0C, 0x08, 0x18, 0x18, 0x18, 0xFE, + 0xFE, 0x07, 0x83, 0xF1, 0x8C, 0x43, 0x00, 0xC0, 0xE0, 0x70, 0x38, 0x38, + 0x1C, 0x6F, 0xF3, 0xFC, 0x1F, 0x1F, 0xC0, 0x60, 0x30, 0x30, 0x70, 0x38, + 0x06, 0x03, 0x03, 0xBF, 0x9F, 0x80, 0x03, 0x07, 0x0B, 0x1B, 0x32, 0x66, + 0xFF, 0xFF, 0x1E, 0x1E, 0x3F, 0x9F, 0x98, 0x0F, 0xC7, 0xF3, 0x18, 0x0C, + 0x06, 0x06, 0x7F, 0x1E, 0x00, 0x07, 0x87, 0xCE, 0x06, 0x06, 0x03, 0xF3, + 0xFD, 0xC6, 0xC3, 0x63, 0xBF, 0x8F, 0x80, 0xFF, 0xFF, 0xC3, 0x06, 0x06, + 0x0C, 0x18, 0x18, 0x30, 0x30, 0x60, 0x1F, 0x1F, 0xDC, 0x6C, 0x36, 0x31, + 0xF1, 0xF8, 0xC6, 0xC3, 0x63, 0xBF, 0x8F, 0x80, 0x1E, 0x3F, 0x33, 0x63, + 0x63, 0x67, 0x7F, 0x3E, 0x06, 0x1C, 0xF8, 0xF0, 0x77, 0x00, 0x00, 0xEE, + 0x1C, 0x70, 0x00, 0x00, 0x03, 0x0C, 0x61, 0x08, 0x00, 0x00, 0xC1, 0xE1, + 0xE1, 0xE0, 0xF0, 0x07, 0x00, 0xF0, 0x0C, 0x7F, 0xDF, 0xF0, 0x00, 0x00, + 0x7F, 0xFF, 0xF0, 0x30, 0x0F, 0x00, 0xE0, 0x1E, 0x07, 0xC7, 0x87, 0x83, + 0x00, 0x7D, 0xFF, 0x18, 0x30, 0xE3, 0x9C, 0x30, 0x01, 0xC3, 0x80, 0x0F, + 0x0F, 0xCC, 0x6C, 0x36, 0x72, 0x79, 0x7D, 0xB6, 0xDA, 0x6F, 0xB3, 0xD8, + 0x0C, 0x07, 0xE1, 0xE0, 0x0F, 0x83, 0xF0, 0x1E, 0x03, 0xC0, 0xD8, 0x31, + 0x87, 0xF1, 0xFE, 0x30, 0xDF, 0x3F, 0xC7, 0x80, 0x3F, 0xC7, 0xFC, 0x61, + 0x8C, 0x31, 0xFC, 0x3F, 0x84, 0x19, 0x83, 0x30, 0x6F, 0xFB, 0xFE, 0x00, + 0x0F, 0xF1, 0xFF, 0x30, 0x66, 0x06, 0x60, 0x0C, 0x00, 0xC0, 0x0C, 0x00, + 0xE0, 0xC7, 0xF8, 0x3F, 0x00, 0x3F, 0x87, 0xF8, 0x63, 0x8C, 0x31, 0x06, + 0x60, 0xCC, 0x19, 0x86, 0x31, 0xCF, 0xF3, 0xF8, 0x00, 0x3F, 0xE3, 0xFE, + 0x18, 0x61, 0xB6, 0x1F, 0x01, 0xF0, 0x32, 0x03, 0x00, 0x30, 0x4F, 0xFC, + 0xFF, 0xC0, 0x3F, 0xF3, 0xFE, 0x18, 0x61, 0xB6, 0x1F, 0x03, 0xF0, 0x32, + 0x03, 0x00, 0x30, 0x0F, 0xC0, 0xFC, 0x00, 0x0F, 0xE3, 0xFC, 0xC1, 0x30, + 0x06, 0x01, 0x80, 0x31, 0xF6, 0x3E, 0xE1, 0x9F, 0xF0, 0xF8, 0x00, 0x1E, + 0xF3, 0xCF, 0x18, 0x61, 0x84, 0x10, 0xC3, 0xFC, 0x3F, 0xC3, 0x08, 0x31, + 0x8F, 0xBC, 0xFB, 0xC0, 0x3F, 0xCF, 0xF0, 0x60, 0x10, 0x0C, 0x03, 0x00, + 0xC0, 0x20, 0x18, 0x3F, 0xCF, 0xF0, 0x07, 0xF0, 0x7F, 0x00, 0x80, 0x18, + 0x01, 0x80, 0x18, 0x61, 0x84, 0x10, 0xC3, 0x0F, 0xE0, 0x7C, 0x00, 0x3E, + 0xE7, 0xFC, 0x66, 0x0D, 0x81, 0x60, 0x7C, 0x0E, 0xC1, 0x98, 0x31, 0x1F, + 0x3B, 0xE7, 0x00, 0x3F, 0x07, 0xE0, 0x30, 0x06, 0x00, 0xC0, 0x10, 0x06, + 0x00, 0xC3, 0x18, 0x6F, 0xFB, 0xFF, 0x00, 0x38, 0x39, 0xC3, 0xC7, 0x3C, + 0x79, 0xE3, 0xDA, 0x1F, 0xF0, 0x9D, 0x8C, 0xCC, 0x60, 0x67, 0xCF, 0x3C, + 0x78, 0x3C, 0xF9, 0xE7, 0x87, 0x18, 0x3C, 0xC1, 0x66, 0x1B, 0xB0, 0xCD, + 0x06, 0x78, 0x31, 0xC3, 0xCE, 0x3E, 0x30, 0x0F, 0x0F, 0xE7, 0x1D, 0x83, + 0xC0, 0xF0, 0x3C, 0x0F, 0x06, 0xE3, 0x9F, 0xC3, 0xC0, 0x3F, 0xC7, 0xFC, + 0x61, 0x8C, 0x31, 0x8E, 0x3F, 0x87, 0xE1, 0x80, 0x30, 0x0F, 0xC3, 0xF0, + 0x00, 0x0F, 0x0F, 0xE7, 0x1D, 0x83, 0xC0, 0xF0, 0x3C, 0x0F, 0x06, 0xE3, + 0x1F, 0xC3, 0xC0, 0x80, 0x7F, 0x3F, 0xC0, 0x3F, 0xC3, 0xFE, 0x18, 0x61, + 0x86, 0x10, 0xE3, 0xFC, 0x3F, 0x83, 0x18, 0x31, 0xCF, 0x8F, 0xF8, 0x70, + 0x1E, 0xCF, 0xF7, 0x19, 0x80, 0x70, 0x1F, 0x81, 0xF3, 0x0C, 0xC3, 0x3F, + 0x8B, 0xC0, 0x7F, 0xCF, 0xF9, 0x93, 0x66, 0x60, 0xC0, 0x18, 0x02, 0x00, + 0xC0, 0x18, 0x0F, 0xC1, 0xF8, 0x00, 0xF9, 0xFF, 0x7D, 0x83, 0x30, 0x64, + 0x09, 0x83, 0x30, 0x66, 0x0C, 0xE3, 0x0F, 0xC0, 0xF0, 0x00, 0xF9, 0xFE, + 0x3D, 0x83, 0x30, 0xC6, 0x30, 0xE6, 0x0D, 0x81, 0xB0, 0x3C, 0x07, 0x00, + 0x60, 0x00, 0xF9, 0xFF, 0x3D, 0x83, 0x36, 0x64, 0xC8, 0xBF, 0x35, 0xE7, + 0xB8, 0xE7, 0x1C, 0xE3, 0x18, 0x00, 0x3C, 0xF3, 0xCF, 0x1C, 0xC0, 0xD8, + 0x0F, 0x00, 0x60, 0x0F, 0x01, 0xB8, 0x31, 0x8F, 0x3C, 0xF3, 0xC0, 0x79, + 0xEE, 0x38, 0xC6, 0x19, 0x81, 0xE0, 0x38, 0x06, 0x00, 0xC0, 0x18, 0x0F, + 0xC3, 0xF8, 0x00, 0x3F, 0xCF, 0xF3, 0x18, 0xCC, 0x06, 0x03, 0x01, 0x80, + 0xC6, 0x61, 0xBF, 0xCF, 0xF0, 0x1E, 0x3C, 0xC1, 0x83, 0x06, 0x08, 0x30, + 0x60, 0xC1, 0x06, 0x0F, 0x1E, 0x00, 0x06, 0x31, 0x86, 0x31, 0x8C, 0x31, + 0x8C, 0x61, 0x8C, 0x60, 0x1E, 0x78, 0x30, 0x60, 0xC1, 0x86, 0x0C, 0x18, + 0x30, 0x41, 0x8F, 0x1E, 0x00, 0x08, 0x1C, 0x3C, 0x76, 0xE7, 0xC3, 0x7F, + 0xFF, 0xFC, 0x88, 0x80, 0x0F, 0x07, 0xE1, 0xF9, 0xFE, 0xE3, 0x30, 0xCF, + 0xFD, 0xFF, 0x38, 0x07, 0x00, 0x60, 0x0F, 0xC1, 0xFC, 0x71, 0xCC, 0x19, + 0x83, 0x30, 0xDF, 0xFB, 0xBC, 0x00, 0x1F, 0xCF, 0xF6, 0x1B, 0x00, 0xC0, + 0x30, 0x0F, 0xF1, 0xF8, 0x01, 0xE0, 0x38, 0x03, 0x0F, 0x63, 0xFC, 0xC3, + 0x30, 0x66, 0x0C, 0xC3, 0x9F, 0xF9, 0xF7, 0x00, 0x1F, 0x1F, 0xD8, 0x3F, + 0xFF, 0xFE, 0x1B, 0xFC, 0xF8, 0x07, 0xC3, 0xF1, 0x81, 0xFE, 0x7F, 0x84, + 0x03, 0x00, 0xC0, 0x30, 0x3F, 0x8F, 0xE0, 0x1E, 0xE7, 0xFD, 0x86, 0x60, + 0xCC, 0x19, 0xC6, 0x3F, 0xC1, 0xD8, 0x03, 0x00, 0xE1, 0xF8, 0x3E, 0x00, + 0x38, 0x1E, 0x01, 0x00, 0xDC, 0x3F, 0x8C, 0x62, 0x19, 0x84, 0x63, 0x3D, + 0xFF, 0x7C, 0x06, 0x03, 0x00, 0x03, 0xC3, 0xE0, 0x20, 0x30, 0x18, 0x0C, + 0x3F, 0xFF, 0xE0, 0x01, 0x81, 0x80, 0x07, 0xF3, 0xF8, 0x0C, 0x04, 0x06, + 0x03, 0x01, 0x80, 0xC0, 0x40, 0x67, 0xE3, 0xE0, 0x38, 0x0E, 0x01, 0x80, + 0x4F, 0x37, 0xCF, 0x83, 0xC0, 0xF0, 0x26, 0x39, 0xEE, 0x78, 0x1F, 0x0F, + 0x01, 0x80, 0xC0, 0x60, 0x20, 0x30, 0x18, 0x0C, 0x3F, 0xFF, 0xE0, 0x7E, + 0xE7, 0xFF, 0x33, 0x32, 0x63, 0x66, 0x36, 0x62, 0xF7, 0x7F, 0x67, 0x77, + 0x8F, 0xF8, 0xC3, 0x10, 0x66, 0x08, 0xC3, 0x3C, 0x7F, 0x8F, 0x1F, 0x0F, + 0xE6, 0x1F, 0x03, 0xC0, 0xF8, 0x67, 0xF0, 0xF8, 0x3F, 0xE3, 0xFF, 0x1C, + 0x31, 0x83, 0x18, 0x31, 0x86, 0x3F, 0xE3, 0x78, 0x30, 0x03, 0x00, 0xFC, + 0x0F, 0x80, 0x1E, 0xEF, 0xFD, 0x86, 0x60, 0xCC, 0x19, 0xC7, 0x3F, 0xE1, + 0xE8, 0x03, 0x00, 0x60, 0x3E, 0x07, 0xC0, 0x39, 0xDF, 0xF1, 0xC0, 0x60, + 0x10, 0x0C, 0x0F, 0xF3, 0xF8, 0x1F, 0x7F, 0x63, 0x7E, 0x1F, 0xC3, 0xFE, + 0xFC, 0x10, 0x08, 0x0C, 0x1F, 0xEF, 0xF1, 0x80, 0x80, 0xC0, 0x60, 0x3F, + 0x8F, 0x80, 0xF3, 0xFC, 0xF6, 0x09, 0x86, 0x61, 0x98, 0xE7, 0xF8, 0xFE, + 0xFB, 0xFF, 0x7C, 0xC6, 0x19, 0x83, 0x60, 0x6C, 0x07, 0x00, 0xC0, 0xF1, + 0xFE, 0x3D, 0xB3, 0x37, 0xC7, 0xF8, 0xEE, 0x1D, 0xC3, 0x30, 0x79, 0xEF, + 0x38, 0xEE, 0x0F, 0x01, 0xE0, 0x6E, 0x3C, 0xE7, 0xBC, 0x3C, 0xF3, 0x8F, + 0x18, 0xC1, 0x9C, 0x19, 0x81, 0xF0, 0x0E, 0x00, 0xE0, 0x0C, 0x01, 0x80, + 0xFC, 0x0F, 0xC0, 0x7F, 0xBF, 0xD9, 0xC1, 0x83, 0x83, 0x1B, 0xFD, 0xFE, + 0x06, 0x1C, 0x60, 0xC1, 0x86, 0x3C, 0x70, 0x30, 0x41, 0x83, 0x07, 0x06, + 0x00, 0x33, 0x32, 0x26, 0x66, 0x44, 0xCC, 0xC8, 0x0C, 0x0E, 0x04, 0x0C, + 0x0C, 0x0C, 0x0F, 0x0F, 0x18, 0x18, 0x10, 0x30, 0xF0, 0xE0, 0x38, 0x7C, + 0xF7, 0xC1, 0xC0}; + +const GFXglyph FreeMonoBoldOblique9pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 11, 0, 1}, // 0x20 ' ' + {0, 5, 11, 11, 4, -10}, // 0x21 '!' + {7, 7, 5, 11, 4, -10}, // 0x22 '"' + {12, 9, 12, 11, 2, -10}, // 0x23 '#' + {26, 9, 14, 11, 2, -11}, // 0x24 '$' + {42, 9, 11, 11, 2, -10}, // 0x25 '%' + {55, 8, 10, 11, 2, -9}, // 0x26 '&' + {65, 2, 5, 11, 6, -10}, // 0x27 ''' + {67, 5, 14, 11, 5, -10}, // 0x28 '(' + {76, 5, 14, 11, 2, -10}, // 0x29 ')' + {85, 8, 7, 11, 3, -10}, // 0x2A '*' + {92, 9, 9, 11, 2, -8}, // 0x2B '+' + {103, 4, 5, 11, 2, -1}, // 0x2C ',' + {106, 9, 2, 11, 2, -5}, // 0x2D '-' + {109, 3, 2, 11, 4, -1}, // 0x2E '.' + {110, 11, 15, 11, 1, -12}, // 0x2F '/' + {131, 9, 12, 11, 2, -11}, // 0x30 '0' + {145, 8, 12, 11, 2, -11}, // 0x31 '1' + {157, 10, 12, 11, 1, -11}, // 0x32 '2' + {172, 9, 12, 11, 2, -11}, // 0x33 '3' + {186, 8, 10, 11, 2, -9}, // 0x34 '4' + {196, 9, 11, 11, 3, -10}, // 0x35 '5' + {209, 9, 12, 11, 3, -11}, // 0x36 '6' + {223, 8, 11, 11, 3, -10}, // 0x37 '7' + {234, 9, 12, 11, 2, -11}, // 0x38 '8' + {248, 8, 12, 11, 3, -11}, // 0x39 '9' + {260, 4, 8, 11, 4, -7}, // 0x3A ':' + {264, 6, 11, 11, 2, -7}, // 0x3B ';' + {273, 10, 8, 11, 2, -8}, // 0x3C '<' + {283, 10, 6, 11, 1, -7}, // 0x3D '=' + {291, 10, 8, 11, 1, -8}, // 0x3E '>' + {301, 7, 11, 11, 4, -10}, // 0x3F '?' + {311, 9, 15, 11, 2, -11}, // 0x40 '@' + {328, 11, 11, 11, 0, -10}, // 0x41 'A' + {344, 11, 11, 11, 0, -10}, // 0x42 'B' + {360, 12, 11, 11, 1, -10}, // 0x43 'C' + {377, 11, 11, 11, 0, -10}, // 0x44 'D' + {393, 12, 11, 11, 0, -10}, // 0x45 'E' + {410, 12, 11, 11, 0, -10}, // 0x46 'F' + {427, 11, 11, 11, 1, -10}, // 0x47 'G' + {443, 12, 11, 11, 0, -10}, // 0x48 'H' + {460, 10, 11, 11, 1, -10}, // 0x49 'I' + {474, 12, 11, 11, 0, -10}, // 0x4A 'J' + {491, 11, 11, 11, 0, -10}, // 0x4B 'K' + {507, 11, 11, 11, 0, -10}, // 0x4C 'L' + {523, 13, 11, 11, 0, -10}, // 0x4D 'M' + {541, 13, 11, 11, 0, -10}, // 0x4E 'N' + {559, 10, 11, 11, 1, -10}, // 0x4F 'O' + {573, 11, 11, 11, 0, -10}, // 0x50 'P' + {589, 10, 14, 11, 1, -10}, // 0x51 'Q' + {607, 12, 11, 11, 0, -10}, // 0x52 'R' + {624, 10, 11, 11, 2, -10}, // 0x53 'S' + {638, 11, 11, 11, 1, -10}, // 0x54 'T' + {654, 11, 11, 11, 1, -10}, // 0x55 'U' + {670, 11, 11, 11, 1, -10}, // 0x56 'V' + {686, 11, 11, 11, 1, -10}, // 0x57 'W' + {702, 12, 11, 11, 0, -10}, // 0x58 'X' + {719, 11, 11, 11, 1, -10}, // 0x59 'Y' + {735, 10, 11, 11, 1, -10}, // 0x5A 'Z' + {749, 7, 14, 11, 4, -10}, // 0x5B '[' + {762, 5, 15, 11, 4, -12}, // 0x5C '\' + {772, 7, 14, 11, 2, -10}, // 0x5D ']' + {785, 8, 6, 11, 3, -11}, // 0x5E '^' + {791, 11, 2, 11, -1, 3}, // 0x5F '_' + {794, 3, 3, 11, 5, -11}, // 0x60 '`' + {796, 10, 8, 11, 1, -7}, // 0x61 'a' + {806, 11, 11, 11, 0, -10}, // 0x62 'b' + {822, 10, 8, 11, 1, -7}, // 0x63 'c' + {832, 11, 11, 11, 1, -10}, // 0x64 'd' + {848, 9, 8, 11, 1, -7}, // 0x65 'e' + {857, 10, 11, 11, 2, -10}, // 0x66 'f' + {871, 11, 12, 11, 1, -7}, // 0x67 'g' + {888, 10, 11, 11, 1, -10}, // 0x68 'h' + {902, 9, 11, 11, 1, -10}, // 0x69 'i' + {915, 9, 15, 11, 1, -10}, // 0x6A 'j' + {932, 10, 11, 11, 1, -10}, // 0x6B 'k' + {946, 9, 11, 11, 1, -10}, // 0x6C 'l' + {959, 12, 8, 11, 0, -7}, // 0x6D 'm' + {971, 11, 8, 11, 1, -7}, // 0x6E 'n' + {982, 10, 8, 11, 1, -7}, // 0x6F 'o' + {992, 12, 12, 11, -1, -7}, // 0x70 'p' + {1010, 11, 12, 11, 1, -7}, // 0x71 'q' + {1027, 10, 8, 11, 1, -7}, // 0x72 'r' + {1037, 8, 8, 11, 2, -7}, // 0x73 's' + {1045, 9, 11, 11, 1, -10}, // 0x74 't' + {1058, 10, 8, 11, 1, -7}, // 0x75 'u' + {1068, 11, 8, 11, 1, -7}, // 0x76 'v' + {1079, 11, 8, 11, 1, -7}, // 0x77 'w' + {1090, 11, 8, 11, 1, -7}, // 0x78 'x' + {1101, 12, 12, 11, 0, -7}, // 0x79 'y' + {1119, 9, 8, 11, 2, -7}, // 0x7A 'z' + {1128, 7, 14, 11, 3, -10}, // 0x7B '{' + {1141, 4, 14, 11, 4, -10}, // 0x7C '|' + {1148, 8, 14, 11, 2, -10}, // 0x7D '}' + {1162, 9, 4, 11, 2, -6}}; // 0x7E '~' + +const GFXfont FreeMonoBoldOblique9pt7b PROGMEM = { + (uint8_t *)FreeMonoBoldOblique9pt7bBitmaps, + (GFXglyph *)FreeMonoBoldOblique9pt7bGlyphs, 0x20, 0x7E, 18}; + +// Approx. 1839 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMonoOblique12pt7b.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMonoOblique12pt7b.h new file mode 100644 index 0000000..0617603 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMonoOblique12pt7b.h @@ -0,0 +1,250 @@ +#pragma once +#include + +const uint8_t FreeMonoOblique12pt7bBitmaps[] PROGMEM = { + 0x11, 0x11, 0x12, 0x22, 0x22, 0x00, 0x0E, 0xE0, 0xE7, 0xE7, 0xC6, 0xC6, + 0xC6, 0x84, 0x84, 0x02, 0x40, 0x88, 0x12, 0x02, 0x40, 0x48, 0x7F, 0xC2, + 0x40, 0x48, 0x11, 0x1F, 0xF8, 0x48, 0x09, 0x02, 0x40, 0x48, 0x09, 0x02, + 0x20, 0x02, 0x01, 0x00, 0xF4, 0xC3, 0x60, 0x50, 0x04, 0x00, 0xC0, 0x0F, + 0x00, 0x60, 0x0A, 0x02, 0x81, 0x30, 0xC7, 0xC0, 0x80, 0x20, 0x08, 0x00, + 0x0E, 0x02, 0x20, 0x84, 0x10, 0x82, 0x20, 0x38, 0x00, 0x38, 0x38, 0x38, + 0x08, 0xE0, 0x22, 0x08, 0x41, 0x08, 0x22, 0x03, 0x80, 0x07, 0x84, 0x04, + 0x02, 0x01, 0x00, 0xC1, 0xA2, 0x8A, 0x85, 0x43, 0x31, 0x8F, 0x60, 0xFF, + 0x6D, 0x20, 0x00, 0x44, 0x42, 0x21, 0x08, 0x84, 0x21, 0x08, 0x42, 0x10, + 0x42, 0x00, 0x00, 0x84, 0x10, 0x84, 0x21, 0x08, 0x46, 0x21, 0x10, 0x88, + 0x44, 0x00, 0x04, 0x02, 0x02, 0x1D, 0x13, 0xF0, 0x40, 0x50, 0x48, 0x44, + 0x00, 0x02, 0x00, 0x40, 0x08, 0x02, 0x00, 0x41, 0xFF, 0xC1, 0x00, 0x20, + 0x08, 0x01, 0x00, 0x20, 0x00, 0x1C, 0xE3, 0x18, 0x63, 0x08, 0x00, 0xFF, + 0xE0, 0x7F, 0x00, 0x00, 0x08, 0x00, 0x80, 0x04, 0x00, 0x40, 0x04, 0x00, + 0x60, 0x02, 0x00, 0x20, 0x03, 0x00, 0x10, 0x01, 0x00, 0x18, 0x00, 0x80, + 0x08, 0x00, 0x80, 0x04, 0x00, 0x40, 0x04, 0x00, 0x00, 0x07, 0x06, 0x23, + 0x04, 0x81, 0x40, 0x50, 0x14, 0x06, 0x02, 0x80, 0xA0, 0x28, 0x0A, 0x04, + 0x83, 0x11, 0x83, 0x80, 0x03, 0x03, 0x83, 0x83, 0x43, 0x20, 0x10, 0x08, + 0x08, 0x04, 0x02, 0x01, 0x01, 0x00, 0x80, 0x43, 0xFE, 0x01, 0xC0, 0x62, + 0x0C, 0x10, 0x81, 0x00, 0x10, 0x02, 0x00, 0x60, 0x0C, 0x01, 0x00, 0x20, + 0x0C, 0x01, 0x80, 0x20, 0x04, 0x04, 0xFF, 0xC0, 0x07, 0xC3, 0x0C, 0x00, + 0x80, 0x10, 0x06, 0x01, 0x81, 0xC0, 0x0C, 0x00, 0x40, 0x08, 0x01, 0x00, + 0x20, 0x09, 0x86, 0x0F, 0x00, 0x00, 0xC0, 0x50, 0x24, 0x12, 0x04, 0x82, + 0x21, 0x08, 0x82, 0x21, 0x10, 0x4F, 0xF8, 0x04, 0x01, 0x00, 0x80, 0xF8, + 0x0F, 0xE2, 0x00, 0x40, 0x08, 0x01, 0x00, 0x4E, 0x0E, 0x20, 0x02, 0x00, + 0x40, 0x08, 0x01, 0x00, 0x40, 0x19, 0x06, 0x1F, 0x00, 0x01, 0xE0, 0xC0, + 0x60, 0x18, 0x02, 0x00, 0x80, 0x13, 0xC5, 0x88, 0xE0, 0x98, 0x12, 0x02, + 0x40, 0x48, 0x10, 0x84, 0x0F, 0x00, 0xFF, 0xA0, 0x20, 0x08, 0x04, 0x01, + 0x00, 0x80, 0x20, 0x10, 0x04, 0x02, 0x00, 0x80, 0x40, 0x10, 0x08, 0x02, + 0x00, 0x07, 0x81, 0x08, 0x40, 0x90, 0x12, 0x02, 0x40, 0x84, 0x20, 0x78, + 0x30, 0x88, 0x0A, 0x01, 0x40, 0x28, 0x08, 0x82, 0x0F, 0x80, 0x07, 0x81, + 0x08, 0x40, 0x90, 0x12, 0x02, 0x40, 0xC8, 0x39, 0x8D, 0x1E, 0x40, 0x08, + 0x02, 0x00, 0xC0, 0x30, 0x18, 0x3E, 0x00, 0x19, 0xCC, 0x00, 0x00, 0x0C, + 0xE6, 0x00, 0x06, 0x1C, 0x30, 0x00, 0x00, 0x00, 0x1C, 0x30, 0xE1, 0x86, + 0x08, 0x00, 0x00, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x06, 0x00, 0x30, + 0x00, 0xC0, 0x06, 0x00, 0x18, 0x00, 0xC0, 0x7F, 0xF8, 0x00, 0x00, 0x01, + 0xFF, 0xE0, 0x18, 0x00, 0xC0, 0x03, 0x00, 0x18, 0x00, 0x60, 0x03, 0x00, + 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x00, 0x3E, 0xC3, 0x81, 0x01, 0x03, + 0x06, 0x18, 0x20, 0x20, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0x07, 0x82, 0x31, + 0x04, 0x81, 0x20, 0x48, 0x74, 0x65, 0x21, 0x48, 0x92, 0x28, 0x7A, 0x00, + 0x80, 0x20, 0x04, 0x00, 0xF8, 0x07, 0xE0, 0x02, 0x80, 0x0A, 0x00, 0x48, + 0x01, 0x20, 0x08, 0x40, 0x41, 0x01, 0x04, 0x0F, 0xF0, 0x20, 0x41, 0x01, + 0x04, 0x02, 0x20, 0x0B, 0xE1, 0xF0, 0x1F, 0xF0, 0x40, 0xC2, 0x02, 0x10, + 0x10, 0x81, 0x84, 0x18, 0x7F, 0x82, 0x02, 0x10, 0x08, 0x80, 0x44, 0x02, + 0x60, 0x22, 0x03, 0x7F, 0xE0, 0x07, 0x91, 0x87, 0x20, 0x34, 0x02, 0x40, + 0x08, 0x00, 0x80, 0x08, 0x00, 0x80, 0x08, 0x00, 0x80, 0x04, 0x04, 0x61, + 0x81, 0xE0, 0x1F, 0xE0, 0x41, 0x82, 0x06, 0x10, 0x11, 0x00, 0x88, 0x04, + 0x40, 0x22, 0x01, 0x10, 0x11, 0x00, 0x88, 0x08, 0x40, 0xC2, 0x0C, 0x7F, + 0x80, 0x1F, 0xFC, 0x20, 0x10, 0x80, 0x82, 0x00, 0x08, 0x00, 0x22, 0x01, + 0xF8, 0x04, 0x20, 0x10, 0x00, 0x40, 0x01, 0x01, 0x0C, 0x04, 0x20, 0x13, + 0xFF, 0xC0, 0x1F, 0xFC, 0x20, 0x10, 0x80, 0x42, 0x01, 0x08, 0x00, 0x22, + 0x01, 0xF8, 0x04, 0x20, 0x10, 0x00, 0x40, 0x01, 0x00, 0x0C, 0x00, 0x20, + 0x03, 0xF8, 0x00, 0x07, 0xD0, 0x83, 0x30, 0x12, 0x00, 0x40, 0x04, 0x00, + 0x80, 0x08, 0x00, 0x83, 0xE8, 0x04, 0x80, 0x4C, 0x04, 0x60, 0x41, 0xF8, + 0x0F, 0x3C, 0x08, 0x10, 0x20, 0x20, 0x40, 0x40, 0x81, 0x01, 0x02, 0x03, + 0xFC, 0x08, 0x08, 0x10, 0x10, 0x20, 0x40, 0x40, 0x80, 0x81, 0x02, 0x02, + 0x1F, 0x1E, 0x00, 0x3F, 0xE0, 0x40, 0x08, 0x01, 0x00, 0x20, 0x08, 0x01, + 0x00, 0x20, 0x04, 0x00, 0x80, 0x20, 0x04, 0x00, 0x81, 0xFF, 0x00, 0x03, + 0xFE, 0x00, 0x20, 0x00, 0x80, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, + 0x00, 0x20, 0x40, 0x40, 0x80, 0x81, 0x01, 0x02, 0x04, 0x06, 0x10, 0x07, + 0xC0, 0x00, 0x1F, 0x1E, 0x10, 0x10, 0x20, 0xC0, 0x43, 0x00, 0x88, 0x01, + 0x20, 0x07, 0xC0, 0x0C, 0x40, 0x10, 0x40, 0x20, 0x80, 0x41, 0x01, 0x81, + 0x02, 0x02, 0x1F, 0x87, 0x00, 0x3F, 0x80, 0x40, 0x04, 0x00, 0x40, 0x08, + 0x00, 0x80, 0x08, 0x00, 0x80, 0x08, 0x01, 0x01, 0x10, 0x11, 0x02, 0x10, + 0x2F, 0xFE, 0x1C, 0x03, 0x85, 0x03, 0x02, 0x82, 0x81, 0x41, 0x40, 0xA1, + 0x20, 0x89, 0x30, 0x44, 0x90, 0x22, 0x88, 0x11, 0x44, 0x08, 0x42, 0x08, + 0x03, 0x04, 0x01, 0x02, 0x00, 0x87, 0xC3, 0xE0, 0x3C, 0x3E, 0x18, 0x08, + 0x38, 0x20, 0x50, 0x41, 0x20, 0x82, 0x61, 0x04, 0x42, 0x08, 0x88, 0x10, + 0x90, 0x41, 0x20, 0x83, 0x41, 0x02, 0x82, 0x06, 0x1F, 0x04, 0x00, 0x03, + 0xC0, 0x61, 0x84, 0x04, 0x40, 0x14, 0x00, 0xA0, 0x06, 0x00, 0x30, 0x01, + 0x80, 0x14, 0x00, 0xA0, 0x08, 0x80, 0x86, 0x18, 0x0F, 0x00, 0x1F, 0xE0, + 0x40, 0x82, 0x02, 0x10, 0x10, 0x80, 0x84, 0x08, 0x40, 0x83, 0xF8, 0x10, + 0x00, 0x80, 0x04, 0x00, 0x60, 0x02, 0x00, 0x7F, 0x00, 0x03, 0xC0, 0x61, + 0x84, 0x04, 0x40, 0x14, 0x00, 0xA0, 0x06, 0x00, 0x30, 0x01, 0x80, 0x14, + 0x00, 0xA0, 0x08, 0x80, 0x86, 0x18, 0x1F, 0x00, 0x40, 0x0F, 0xC4, 0x41, + 0xC0, 0x1F, 0xE0, 0x40, 0x82, 0x02, 0x10, 0x10, 0x80, 0x84, 0x08, 0x60, + 0x83, 0xF8, 0x10, 0xC0, 0x82, 0x04, 0x08, 0x40, 0x42, 0x03, 0x7E, 0x0C, + 0x07, 0xA3, 0x0C, 0x40, 0x90, 0x12, 0x00, 0x40, 0x06, 0x00, 0x3C, 0x00, + 0x40, 0x0A, 0x01, 0x40, 0x4C, 0x11, 0x7C, 0x00, 0xFF, 0xE8, 0x42, 0x84, + 0x20, 0x40, 0x04, 0x00, 0x80, 0x08, 0x00, 0x80, 0x08, 0x00, 0x80, 0x10, + 0x01, 0x00, 0x10, 0x0F, 0xE0, 0xF8, 0xF9, 0x00, 0x88, 0x08, 0x80, 0x44, + 0x02, 0x20, 0x11, 0x01, 0x08, 0x08, 0x80, 0x44, 0x02, 0x20, 0x31, 0x01, + 0x04, 0x30, 0x1E, 0x00, 0xF8, 0x7D, 0x00, 0x42, 0x01, 0x08, 0x08, 0x20, + 0x40, 0x81, 0x02, 0x08, 0x08, 0x20, 0x11, 0x00, 0x48, 0x01, 0x20, 0x05, + 0x00, 0x14, 0x00, 0x60, 0x00, 0xF8, 0x7D, 0x00, 0x44, 0x01, 0x11, 0x84, + 0x46, 0x21, 0x18, 0x84, 0xA2, 0x12, 0x90, 0x91, 0x42, 0x45, 0x0A, 0x14, + 0x28, 0x60, 0xC1, 0x83, 0x06, 0x00, 0x1E, 0x1E, 0x10, 0x10, 0x10, 0x40, + 0x21, 0x00, 0x24, 0x00, 0x78, 0x00, 0x60, 0x01, 0xC0, 0x06, 0x80, 0x09, + 0x80, 0x21, 0x00, 0x81, 0x02, 0x02, 0x1E, 0x1F, 0x00, 0xF0, 0xF4, 0x04, + 0x20, 0x82, 0x18, 0x11, 0x01, 0x20, 0x1C, 0x00, 0x80, 0x08, 0x00, 0x80, + 0x10, 0x01, 0x00, 0x10, 0x0F, 0xE0, 0x0F, 0xF1, 0x01, 0x10, 0x21, 0x04, + 0x00, 0x80, 0x10, 0x02, 0x00, 0x40, 0x0C, 0x01, 0x82, 0x10, 0x22, 0x04, + 0x40, 0x47, 0xFC, 0x0E, 0x20, 0x40, 0x81, 0x02, 0x08, 0x10, 0x20, 0x40, + 0x82, 0x04, 0x08, 0x10, 0x20, 0x81, 0xE0, 0x84, 0x20, 0x84, 0x20, 0x84, + 0x21, 0x04, 0x21, 0x08, 0x21, 0x08, 0x40, 0x1E, 0x04, 0x08, 0x20, 0x40, + 0x81, 0x02, 0x04, 0x10, 0x20, 0x40, 0x81, 0x02, 0x08, 0x11, 0xE0, 0x04, + 0x06, 0x04, 0x84, 0x44, 0x14, 0x0C, 0xFF, 0xFE, 0x99, 0x90, 0x1F, 0xC0, + 0x06, 0x00, 0x20, 0x02, 0x1F, 0xE6, 0x04, 0xC0, 0x48, 0x04, 0x81, 0xC7, + 0xEF, 0x18, 0x00, 0x40, 0x02, 0x00, 0x10, 0x00, 0x80, 0x09, 0xF0, 0x50, + 0xC3, 0x03, 0x10, 0x08, 0x80, 0x48, 0x02, 0x40, 0x23, 0x03, 0x1C, 0x33, + 0xBE, 0x00, 0x0F, 0xD3, 0x07, 0x60, 0x24, 0x02, 0x80, 0x08, 0x00, 0x80, + 0x08, 0x06, 0x41, 0xC3, 0xF0, 0x00, 0x38, 0x00, 0x40, 0x02, 0x00, 0x20, + 0x01, 0x07, 0xC8, 0x43, 0x44, 0x0E, 0x40, 0x24, 0x01, 0x20, 0x09, 0x00, + 0xC8, 0x0E, 0x20, 0xE0, 0xF9, 0xC0, 0x0F, 0x86, 0x09, 0x00, 0xA0, 0x1F, + 0xFF, 0x00, 0x20, 0x06, 0x00, 0x60, 0xC7, 0xE0, 0x01, 0xF8, 0x10, 0x01, + 0x00, 0x08, 0x00, 0x40, 0x1F, 0xF0, 0x20, 0x01, 0x00, 0x08, 0x00, 0x40, + 0x04, 0x00, 0x20, 0x01, 0x00, 0x08, 0x03, 0xFE, 0x00, 0x0F, 0x31, 0x86, + 0x10, 0x10, 0x80, 0x88, 0x04, 0x40, 0x22, 0x02, 0x10, 0x10, 0x43, 0x81, + 0xE4, 0x00, 0x40, 0x02, 0x00, 0x20, 0x3E, 0x00, 0x1C, 0x00, 0x20, 0x03, + 0x00, 0x10, 0x00, 0x80, 0x05, 0xF0, 0x30, 0xC3, 0x02, 0x10, 0x10, 0x80, + 0x84, 0x0C, 0x20, 0x63, 0x02, 0x10, 0x13, 0xE3, 0xE0, 0x01, 0x80, 0x40, + 0x10, 0x00, 0x00, 0x07, 0xC0, 0x20, 0x08, 0x02, 0x00, 0x80, 0x20, 0x10, + 0x04, 0x01, 0x0F, 0xFC, 0x00, 0x40, 0x10, 0x0C, 0x00, 0x00, 0x07, 0xF0, + 0x04, 0x01, 0x00, 0x40, 0x20, 0x08, 0x02, 0x00, 0x80, 0x20, 0x10, 0x04, + 0x01, 0x00, 0x8F, 0xC0, 0x18, 0x00, 0x80, 0x08, 0x00, 0x80, 0x08, 0x01, + 0x1F, 0x10, 0x81, 0x30, 0x14, 0x01, 0xC0, 0x26, 0x02, 0x20, 0x21, 0x02, + 0x08, 0xE1, 0xE0, 0x0F, 0x80, 0x40, 0x10, 0x04, 0x01, 0x00, 0x40, 0x20, + 0x08, 0x02, 0x00, 0x80, 0x20, 0x10, 0x04, 0x01, 0x0F, 0xFC, 0x3B, 0xB8, + 0x33, 0x91, 0x08, 0x44, 0x21, 0x10, 0x84, 0x42, 0x12, 0x10, 0x48, 0x42, + 0x21, 0x0B, 0xC6, 0x30, 0x19, 0xE0, 0xE3, 0x08, 0x11, 0x01, 0x10, 0x11, + 0x02, 0x10, 0x21, 0x02, 0x20, 0x2F, 0x87, 0x0F, 0x86, 0x19, 0x80, 0xA0, + 0x18, 0x03, 0x00, 0x60, 0x14, 0x06, 0x61, 0x87, 0xC0, 0x19, 0xF0, 0x28, + 0x20, 0xC0, 0x42, 0x01, 0x10, 0x04, 0x40, 0x11, 0x00, 0x86, 0x06, 0x14, + 0x30, 0xCF, 0x02, 0x00, 0x08, 0x00, 0x20, 0x03, 0xF0, 0x00, 0x0F, 0x39, + 0x85, 0x18, 0x18, 0x80, 0x88, 0x04, 0x40, 0x22, 0x01, 0x18, 0x18, 0x63, + 0x81, 0xE4, 0x00, 0x20, 0x01, 0x00, 0x10, 0x07, 0xE0, 0x1C, 0x78, 0x2C, + 0x01, 0x80, 0x18, 0x00, 0x80, 0x04, 0x00, 0x20, 0x02, 0x00, 0x10, 0x07, + 0xFC, 0x00, 0x0F, 0x44, 0x32, 0x04, 0x80, 0x1E, 0x00, 0x60, 0x0A, 0x02, + 0xC1, 0x2F, 0x80, 0x10, 0x08, 0x04, 0x02, 0x0F, 0xF9, 0x00, 0x80, 0x40, + 0x20, 0x20, 0x10, 0x08, 0x04, 0x19, 0xF0, 0xE0, 0xF2, 0x02, 0x40, 0x24, + 0x02, 0x40, 0x24, 0x06, 0x40, 0x44, 0x04, 0x41, 0xC3, 0xE6, 0xF8, 0xFA, + 0x01, 0x08, 0x10, 0x41, 0x02, 0x08, 0x10, 0x80, 0x48, 0x02, 0x40, 0x14, + 0x00, 0xC0, 0x00, 0xE0, 0x7A, 0x01, 0x10, 0x08, 0x8C, 0x84, 0xA4, 0x25, + 0x21, 0x4A, 0x0A, 0x50, 0x63, 0x02, 0x18, 0x00, 0x1E, 0x3C, 0x20, 0x40, + 0x46, 0x00, 0xB0, 0x03, 0x00, 0x0E, 0x00, 0xC8, 0x06, 0x10, 0x20, 0x23, + 0xE3, 0xC0, 0x3C, 0x3C, 0x40, 0x20, 0x81, 0x02, 0x08, 0x08, 0x20, 0x31, + 0x00, 0x48, 0x01, 0x40, 0x05, 0x00, 0x08, 0x00, 0x40, 0x02, 0x00, 0x08, + 0x03, 0xF0, 0x00, 0x3F, 0xC4, 0x18, 0x06, 0x01, 0x80, 0x60, 0x10, 0x04, + 0x01, 0x00, 0x40, 0x9F, 0xF0, 0x06, 0x10, 0x20, 0x41, 0x02, 0x04, 0x08, + 0x21, 0x80, 0x81, 0x02, 0x08, 0x10, 0x20, 0x40, 0xC0, 0x01, 0x11, 0x12, + 0x22, 0x24, 0x44, 0x44, 0x88, 0x80, 0x0C, 0x08, 0x10, 0x20, 0x40, 0x82, + 0x04, 0x08, 0x0C, 0x20, 0x81, 0x02, 0x04, 0x08, 0x21, 0x80, 0x38, 0x28, + 0x88, 0x0E, 0x00}; + +const GFXglyph FreeMonoOblique12pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 14, 0, 1}, // 0x20 ' ' + {0, 4, 15, 14, 6, -14}, // 0x21 '!' + {8, 8, 7, 14, 5, -14}, // 0x22 '"' + {15, 11, 16, 14, 3, -14}, // 0x23 '#' + {37, 10, 18, 14, 4, -15}, // 0x24 '$' + {60, 11, 15, 14, 3, -14}, // 0x25 '%' + {81, 9, 12, 14, 3, -11}, // 0x26 '&' + {95, 3, 7, 14, 8, -14}, // 0x27 ''' + {98, 5, 18, 14, 8, -14}, // 0x28 '(' + {110, 5, 18, 14, 4, -14}, // 0x29 ')' + {122, 9, 9, 14, 5, -14}, // 0x2A '*' + {133, 11, 11, 14, 3, -11}, // 0x2B '+' + {149, 6, 7, 14, 3, -3}, // 0x2C ',' + {155, 11, 1, 14, 3, -6}, // 0x2D '-' + {157, 3, 3, 14, 6, -2}, // 0x2E '.' + {159, 13, 18, 14, 2, -15}, // 0x2F '/' + {189, 10, 15, 14, 4, -14}, // 0x30 '0' + {208, 9, 15, 14, 3, -14}, // 0x31 '1' + {225, 12, 15, 14, 2, -14}, // 0x32 '2' + {248, 11, 15, 14, 3, -14}, // 0x33 '3' + {269, 10, 15, 14, 3, -14}, // 0x34 '4' + {288, 11, 15, 14, 3, -14}, // 0x35 '5' + {309, 11, 15, 14, 4, -14}, // 0x36 '6' + {330, 10, 15, 14, 5, -14}, // 0x37 '7' + {349, 11, 15, 14, 3, -14}, // 0x38 '8' + {370, 11, 15, 14, 3, -14}, // 0x39 '9' + {391, 5, 10, 14, 5, -9}, // 0x3A ':' + {398, 7, 13, 14, 3, -9}, // 0x3B ';' + {410, 12, 11, 14, 3, -11}, // 0x3C '<' + {427, 13, 4, 14, 2, -8}, // 0x3D '=' + {434, 12, 11, 14, 2, -11}, // 0x3E '>' + {451, 8, 14, 14, 6, -13}, // 0x3F '?' + {465, 10, 16, 14, 3, -14}, // 0x40 '@' + {485, 14, 14, 14, 0, -13}, // 0x41 'A' + {510, 13, 14, 14, 1, -13}, // 0x42 'B' + {533, 12, 14, 14, 3, -13}, // 0x43 'C' + {554, 13, 14, 14, 1, -13}, // 0x44 'D' + {577, 14, 14, 14, 1, -13}, // 0x45 'E' + {602, 14, 14, 14, 1, -13}, // 0x46 'F' + {627, 12, 14, 14, 3, -13}, // 0x47 'G' + {648, 15, 14, 14, 1, -13}, // 0x48 'H' + {675, 11, 14, 14, 3, -13}, // 0x49 'I' + {695, 15, 14, 14, 2, -13}, // 0x4A 'J' + {722, 15, 14, 14, 1, -13}, // 0x4B 'K' + {749, 12, 14, 14, 2, -13}, // 0x4C 'L' + {770, 17, 14, 14, 0, -13}, // 0x4D 'M' + {800, 15, 14, 14, 1, -13}, // 0x4E 'N' + {827, 13, 14, 14, 2, -13}, // 0x4F 'O' + {850, 13, 14, 14, 1, -13}, // 0x50 'P' + {873, 13, 17, 14, 2, -13}, // 0x51 'Q' + {901, 13, 14, 14, 1, -13}, // 0x52 'R' + {924, 11, 14, 14, 3, -13}, // 0x53 'S' + {944, 12, 14, 14, 4, -13}, // 0x54 'T' + {965, 13, 14, 14, 3, -13}, // 0x55 'U' + {988, 14, 14, 14, 3, -13}, // 0x56 'V' + {1013, 14, 14, 14, 3, -13}, // 0x57 'W' + {1038, 15, 14, 14, 1, -13}, // 0x58 'X' + {1065, 12, 14, 14, 4, -13}, // 0x59 'Y' + {1086, 12, 14, 14, 2, -13}, // 0x5A 'Z' + {1107, 7, 18, 14, 6, -14}, // 0x5B '[' + {1123, 5, 18, 14, 6, -15}, // 0x5C '\' + {1135, 7, 18, 14, 3, -14}, // 0x5D ']' + {1151, 9, 6, 14, 5, -14}, // 0x5E '^' + {1158, 15, 1, 14, -1, 3}, // 0x5F '_' + {1160, 3, 4, 14, 6, -15}, // 0x60 '`' + {1162, 12, 10, 14, 2, -9}, // 0x61 'a' + {1177, 13, 15, 14, 1, -14}, // 0x62 'b' + {1202, 12, 10, 14, 3, -9}, // 0x63 'c' + {1217, 13, 15, 14, 2, -14}, // 0x64 'd' + {1242, 11, 10, 14, 3, -9}, // 0x65 'e' + {1256, 13, 15, 14, 3, -14}, // 0x66 'f' + {1281, 13, 14, 14, 3, -9}, // 0x67 'g' + {1304, 13, 15, 14, 1, -14}, // 0x68 'h' + {1329, 10, 15, 14, 2, -14}, // 0x69 'i' + {1348, 10, 19, 14, 2, -14}, // 0x6A 'j' + {1372, 12, 15, 14, 2, -14}, // 0x6B 'k' + {1395, 10, 15, 14, 2, -14}, // 0x6C 'l' + {1414, 14, 10, 14, 0, -9}, // 0x6D 'm' + {1432, 12, 10, 14, 1, -9}, // 0x6E 'n' + {1447, 11, 10, 14, 3, -9}, // 0x6F 'o' + {1461, 14, 14, 14, 0, -9}, // 0x70 'p' + {1486, 13, 14, 14, 3, -9}, // 0x71 'q' + {1509, 13, 10, 14, 2, -9}, // 0x72 'r' + {1526, 10, 10, 14, 3, -9}, // 0x73 's' + {1539, 9, 14, 14, 3, -13}, // 0x74 't' + {1555, 12, 10, 14, 2, -9}, // 0x75 'u' + {1570, 13, 10, 14, 3, -9}, // 0x76 'v' + {1587, 13, 10, 14, 3, -9}, // 0x77 'w' + {1604, 14, 10, 14, 1, -9}, // 0x78 'x' + {1622, 14, 14, 14, 1, -9}, // 0x79 'y' + {1647, 11, 10, 14, 3, -9}, // 0x7A 'z' + {1661, 7, 18, 14, 5, -14}, // 0x7B '{' + {1677, 4, 17, 14, 6, -13}, // 0x7C '|' + {1686, 7, 18, 14, 4, -14}, // 0x7D '}' + {1702, 11, 3, 14, 3, -7}}; // 0x7E '~' + +const GFXfont FreeMonoOblique12pt7b PROGMEM = { + (uint8_t *)FreeMonoOblique12pt7bBitmaps, + (GFXglyph *)FreeMonoOblique12pt7bGlyphs, 0x20, 0x7E, 24}; + +// Approx. 2379 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMonoOblique18pt7b.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMonoOblique18pt7b.h new file mode 100644 index 0000000..c12ae08 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMonoOblique18pt7b.h @@ -0,0 +1,400 @@ +#pragma once +#include + +const uint8_t FreeMonoOblique18pt7bBitmaps[] PROGMEM = { + 0x00, 0x1C, 0x38, 0x70, 0xC1, 0x83, 0x06, 0x18, 0x30, 0x60, 0xC1, 0x02, + 0x04, 0x00, 0x00, 0x01, 0xC7, 0x8F, 0x1C, 0x00, 0x78, 0x7B, 0xC3, 0xFC, + 0x3D, 0xE1, 0xEF, 0x0F, 0x70, 0x73, 0x83, 0x98, 0x18, 0xC0, 0xC6, 0x06, + 0x00, 0x00, 0x8C, 0x01, 0x18, 0x06, 0x20, 0x08, 0x40, 0x11, 0x80, 0x62, + 0x00, 0xC4, 0x01, 0x18, 0x02, 0x30, 0x7F, 0xFC, 0x10, 0x80, 0x23, 0x00, + 0xC4, 0x01, 0x88, 0x3F, 0xFF, 0x04, 0x60, 0x18, 0x80, 0x21, 0x00, 0x46, + 0x01, 0x88, 0x03, 0x10, 0x04, 0x60, 0x08, 0xC0, 0x31, 0x00, 0x00, 0x30, + 0x00, 0x20, 0x00, 0x20, 0x00, 0xF9, 0x03, 0x0F, 0x06, 0x03, 0x04, 0x03, + 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x04, 0x00, 0x03, 0xC0, 0x00, 0x78, + 0x00, 0x0C, 0x00, 0x04, 0x00, 0x04, 0x40, 0x04, 0x40, 0x08, 0x40, 0x18, + 0xF0, 0x60, 0x9F, 0x80, 0x02, 0x00, 0x06, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x04, 0x00, 0x03, 0xC0, 0x0C, 0x60, 0x08, 0x20, 0x10, 0x20, 0x10, 0x20, + 0x10, 0x40, 0x18, 0x80, 0x0F, 0x00, 0x00, 0x0F, 0x00, 0x78, 0x07, 0xC0, + 0x3C, 0x00, 0xE0, 0x00, 0x01, 0xE0, 0x02, 0x18, 0x04, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x10, 0x0C, 0x20, 0x07, 0xC0, 0x01, 0xF0, 0x11, 0x81, + 0x00, 0x10, 0x00, 0x80, 0x04, 0x00, 0x20, 0x01, 0x80, 0x04, 0x00, 0xF0, + 0x09, 0x86, 0x84, 0x48, 0x32, 0x40, 0xA2, 0x07, 0x10, 0x30, 0x43, 0x81, + 0xE7, 0x80, 0x7B, 0xFD, 0xEF, 0x73, 0x98, 0xC6, 0x00, 0x01, 0x02, 0x06, + 0x0C, 0x0C, 0x18, 0x10, 0x30, 0x30, 0x60, 0x60, 0x60, 0xC0, 0xC0, 0xC0, + 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x40, 0x60, 0x60, 0x20, 0x04, 0x06, + 0x06, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x06, + 0x06, 0x06, 0x0C, 0x0C, 0x0C, 0x18, 0x10, 0x30, 0x60, 0x40, 0xC0, 0x01, + 0x00, 0x04, 0x00, 0x10, 0x00, 0xC6, 0xE3, 0xF8, 0x7E, 0x00, 0x70, 0x03, + 0x40, 0x19, 0x80, 0xC2, 0x06, 0x0C, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x02, + 0x00, 0x04, 0x00, 0x08, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0xFF, 0xFE, + 0x02, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0x02, + 0x00, 0x04, 0x00, 0x0F, 0x87, 0x87, 0x83, 0x83, 0xC1, 0xC1, 0xC0, 0xC0, + 0xE0, 0x60, 0x00, 0xFF, 0xFF, 0x77, 0xFF, 0xF7, 0x00, 0x00, 0x00, 0x60, + 0x00, 0x08, 0x00, 0x02, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x04, 0x00, + 0x01, 0x80, 0x00, 0x60, 0x00, 0x08, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, + 0x10, 0x00, 0x06, 0x00, 0x01, 0x80, 0x00, 0x20, 0x00, 0x0C, 0x00, 0x03, + 0x00, 0x00, 0x40, 0x00, 0x18, 0x00, 0x06, 0x00, 0x00, 0x80, 0x00, 0x20, + 0x00, 0x0C, 0x00, 0x03, 0x00, 0x00, 0x40, 0x00, 0x08, 0x00, 0x00, 0x01, + 0xF0, 0x18, 0x60, 0x80, 0x86, 0x01, 0x10, 0x04, 0x80, 0x12, 0x00, 0x50, + 0x01, 0x40, 0x0D, 0x00, 0x24, 0x00, 0xA0, 0x02, 0x80, 0x1A, 0x00, 0x48, + 0x01, 0x20, 0x0C, 0x80, 0x22, 0x01, 0x84, 0x0C, 0x18, 0x60, 0x3E, 0x00, + 0x00, 0x60, 0x07, 0x00, 0x68, 0x06, 0x40, 0xE4, 0x04, 0x20, 0x01, 0x00, + 0x08, 0x00, 0x40, 0x04, 0x00, 0x20, 0x01, 0x00, 0x08, 0x00, 0x80, 0x04, + 0x00, 0x20, 0x01, 0x00, 0x08, 0x00, 0x80, 0x04, 0x0F, 0xFF, 0x80, 0x00, + 0x3C, 0x00, 0x61, 0x80, 0x40, 0x40, 0x40, 0x10, 0x60, 0x08, 0x00, 0x04, + 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x07, 0x00, 0x07, + 0x00, 0x06, 0x00, 0x06, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0C, 0x00, 0x0C, + 0x00, 0x1C, 0x01, 0x1C, 0x00, 0x8F, 0xFF, 0xC0, 0x00, 0xFC, 0x03, 0x06, + 0x06, 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, + 0x00, 0x0C, 0x00, 0xF0, 0x00, 0x18, 0x00, 0x04, 0x00, 0x02, 0x00, 0x02, + 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x04, 0x40, 0x18, 0x70, 0x30, + 0x0F, 0xC0, 0x00, 0x1C, 0x00, 0xD0, 0x06, 0x80, 0x32, 0x00, 0x88, 0x04, + 0x20, 0x30, 0x81, 0x84, 0x04, 0x10, 0x20, 0x41, 0x81, 0x0C, 0x08, 0x60, + 0x21, 0x00, 0x8F, 0xFF, 0x80, 0x18, 0x00, 0x40, 0x01, 0x00, 0x04, 0x00, + 0x10, 0x07, 0xE0, 0x03, 0xFF, 0x03, 0x00, 0x01, 0x80, 0x00, 0x80, 0x00, + 0x40, 0x00, 0x20, 0x00, 0x30, 0x00, 0x1B, 0xE0, 0x0E, 0x0C, 0x00, 0x02, + 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, + 0x08, 0x00, 0x04, 0x60, 0x04, 0x18, 0x04, 0x06, 0x0C, 0x00, 0xF8, 0x00, + 0x00, 0x3F, 0x00, 0xC0, 0x03, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, + 0x30, 0x00, 0x20, 0x00, 0x40, 0x00, 0x43, 0xE0, 0x4C, 0x30, 0xB0, 0x18, + 0xE0, 0x08, 0xC0, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x10, 0xC0, 0x10, + 0x40, 0x20, 0x20, 0xC0, 0x1F, 0x00, 0xFF, 0xFC, 0x00, 0xE0, 0x04, 0x00, + 0x60, 0x02, 0x00, 0x30, 0x01, 0x00, 0x18, 0x00, 0x80, 0x0C, 0x00, 0x40, + 0x06, 0x00, 0x20, 0x03, 0x00, 0x10, 0x01, 0x80, 0x08, 0x00, 0xC0, 0x04, + 0x00, 0x60, 0x02, 0x00, 0x00, 0x00, 0xF0, 0x06, 0x18, 0x10, 0x18, 0x40, + 0x11, 0x00, 0x22, 0x00, 0x44, 0x00, 0x88, 0x02, 0x18, 0x08, 0x18, 0x60, + 0x1F, 0x80, 0xC1, 0x82, 0x01, 0x88, 0x01, 0x20, 0x02, 0x40, 0x04, 0x80, + 0x09, 0x00, 0x23, 0x00, 0x83, 0x06, 0x01, 0xF0, 0x00, 0x00, 0xF0, 0x06, + 0x18, 0x10, 0x10, 0x40, 0x30, 0x80, 0x22, 0x00, 0x44, 0x00, 0x88, 0x03, + 0x10, 0x0E, 0x30, 0x34, 0x30, 0xD0, 0x3E, 0x20, 0x00, 0x40, 0x01, 0x00, + 0x02, 0x00, 0x08, 0x00, 0x20, 0x00, 0xC0, 0x02, 0x00, 0x18, 0x0F, 0xC0, + 0x00, 0x1C, 0x7C, 0xF9, 0xF1, 0xC0, 0x00, 0x00, 0x00, 0x01, 0xC7, 0xCF, + 0x9F, 0x1C, 0x00, 0x01, 0xC0, 0x7C, 0x0F, 0x81, 0xF0, 0x1C, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x07, 0x81, 0xE0, 0x3C, 0x0F, 0x01, + 0xC0, 0x70, 0x0E, 0x03, 0x80, 0x60, 0x00, 0x00, 0x01, 0x80, 0x03, 0x80, + 0x07, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x00, + 0xE0, 0x00, 0x1C, 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x07, + 0x00, 0x00, 0xE0, 0x00, 0x38, 0x7F, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x18, 0x00, 0x03, 0x80, + 0x00, 0x38, 0x00, 0x07, 0x00, 0x00, 0x70, 0x00, 0x0E, 0x00, 0x00, 0xE0, + 0x00, 0x0E, 0x00, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, + 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x00, 0x1F, 0xCE, 0x06, 0x80, + 0x38, 0x01, 0x80, 0x10, 0x01, 0x00, 0x20, 0x04, 0x01, 0x80, 0xF0, 0x18, + 0x01, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0F, 0x80, 0xF8, + 0x07, 0x00, 0x01, 0xF0, 0x0C, 0x30, 0x30, 0x30, 0x40, 0x21, 0x00, 0x44, + 0x00, 0x88, 0x01, 0x10, 0x1E, 0x40, 0xC4, 0x86, 0x11, 0x08, 0x22, 0x20, + 0x48, 0x40, 0x90, 0x82, 0x21, 0x84, 0x40, 0xFC, 0x80, 0x01, 0x00, 0x02, + 0x00, 0x04, 0x00, 0x04, 0x00, 0x0C, 0x18, 0x07, 0xC0, 0x00, 0x01, 0xFE, + 0x00, 0x00, 0x68, 0x00, 0x06, 0x40, 0x00, 0x32, 0x00, 0x03, 0x10, 0x00, + 0x10, 0x80, 0x01, 0x84, 0x00, 0x18, 0x10, 0x00, 0xC0, 0x80, 0x0C, 0x04, + 0x00, 0x60, 0x20, 0x06, 0x01, 0x00, 0x3F, 0xFC, 0x02, 0x00, 0x20, 0x10, + 0x01, 0x01, 0x00, 0x08, 0x08, 0x00, 0x40, 0x80, 0x02, 0x0C, 0x00, 0x09, + 0xFC, 0x07, 0xF0, 0x0F, 0xFF, 0x00, 0x40, 0x60, 0x20, 0x0C, 0x08, 0x01, + 0x02, 0x00, 0x40, 0x80, 0x10, 0x40, 0x08, 0x10, 0x06, 0x04, 0x03, 0x01, + 0xFF, 0x80, 0x40, 0x38, 0x20, 0x02, 0x08, 0x00, 0x42, 0x00, 0x10, 0x80, + 0x04, 0x40, 0x01, 0x10, 0x00, 0x84, 0x00, 0x41, 0x00, 0x23, 0xFF, 0xF0, + 0x00, 0xFC, 0x40, 0xC1, 0xF0, 0xC0, 0x1C, 0x60, 0x06, 0x10, 0x00, 0x88, + 0x00, 0x24, 0x00, 0x01, 0x00, 0x00, 0x40, 0x00, 0x30, 0x00, 0x08, 0x00, + 0x02, 0x00, 0x00, 0x80, 0x00, 0x20, 0x00, 0x08, 0x00, 0x03, 0x00, 0x00, + 0x40, 0x06, 0x08, 0x03, 0x01, 0x83, 0x80, 0x3F, 0x00, 0x0F, 0xFE, 0x00, + 0x80, 0xC0, 0x20, 0x18, 0x10, 0x02, 0x04, 0x00, 0x41, 0x00, 0x10, 0x40, + 0x04, 0x20, 0x01, 0x08, 0x00, 0x42, 0x00, 0x10, 0x80, 0x08, 0x20, 0x02, + 0x10, 0x00, 0x84, 0x00, 0x21, 0x00, 0x10, 0x40, 0x08, 0x20, 0x06, 0x08, + 0x03, 0x02, 0x01, 0x83, 0xFF, 0x80, 0x0F, 0xFF, 0xE0, 0x10, 0x02, 0x02, + 0x00, 0x60, 0x20, 0x06, 0x02, 0x00, 0x60, 0x20, 0x00, 0x04, 0x00, 0x00, + 0x40, 0x80, 0x04, 0x10, 0x00, 0x7F, 0x00, 0x04, 0x10, 0x00, 0x81, 0x00, + 0x08, 0x00, 0x00, 0x80, 0x00, 0x08, 0x00, 0x81, 0x00, 0x08, 0x10, 0x00, + 0x81, 0x00, 0x18, 0x10, 0x01, 0x8F, 0xFF, 0xF0, 0x0F, 0xFF, 0xF0, 0x10, + 0x03, 0x02, 0x00, 0x30, 0x20, 0x03, 0x02, 0x00, 0x20, 0x20, 0x00, 0x04, + 0x00, 0x00, 0x40, 0x80, 0x04, 0x10, 0x00, 0x7F, 0x00, 0x04, 0x10, 0x00, + 0x81, 0x00, 0x08, 0x00, 0x00, 0x80, 0x00, 0x08, 0x00, 0x01, 0x00, 0x00, + 0x10, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0xFE, + 0x40, 0xC0, 0xF0, 0x40, 0x1C, 0x20, 0x03, 0x10, 0x00, 0x88, 0x00, 0x02, + 0x00, 0x01, 0x00, 0x00, 0x40, 0x00, 0x10, 0x00, 0x08, 0x00, 0x02, 0x01, + 0xFE, 0x80, 0x02, 0x20, 0x00, 0x88, 0x00, 0x22, 0x00, 0x08, 0x40, 0x04, + 0x18, 0x01, 0x03, 0x81, 0xC0, 0x3F, 0x80, 0x07, 0xE1, 0xF8, 0x08, 0x02, + 0x00, 0x80, 0x10, 0x04, 0x00, 0x80, 0x20, 0x04, 0x01, 0x00, 0x20, 0x18, + 0x02, 0x00, 0x80, 0x10, 0x04, 0x00, 0x80, 0x3F, 0xFC, 0x01, 0x00, 0x60, + 0x10, 0x02, 0x00, 0x80, 0x10, 0x04, 0x00, 0x80, 0x20, 0x04, 0x02, 0x00, + 0x40, 0x10, 0x02, 0x00, 0x80, 0x10, 0x04, 0x00, 0x81, 0xF8, 0x3F, 0x00, + 0x0F, 0xFF, 0x80, 0x10, 0x00, 0x08, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, + 0x00, 0x01, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, + 0x10, 0x00, 0x08, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x80, 0x1F, 0xFF, 0x00, 0x00, 0xFF, 0xF0, 0x00, 0x20, + 0x00, 0x02, 0x00, 0x00, 0x20, 0x00, 0x02, 0x00, 0x00, 0x20, 0x00, 0x04, + 0x00, 0x00, 0x40, 0x00, 0x04, 0x00, 0x00, 0x40, 0x00, 0x0C, 0x04, 0x00, + 0x80, 0x40, 0x08, 0x08, 0x00, 0x80, 0x80, 0x08, 0x08, 0x01, 0x00, 0x80, + 0x10, 0x0C, 0x02, 0x00, 0x60, 0xC0, 0x01, 0xF0, 0x00, 0x0F, 0xE1, 0xF8, + 0x08, 0x03, 0x00, 0x80, 0x60, 0x04, 0x06, 0x00, 0x20, 0x60, 0x01, 0x06, + 0x00, 0x10, 0xC0, 0x00, 0x8C, 0x00, 0x04, 0xC0, 0x00, 0x2F, 0x80, 0x01, + 0x8E, 0x00, 0x18, 0x30, 0x00, 0x80, 0xC0, 0x04, 0x06, 0x00, 0x20, 0x10, + 0x02, 0x00, 0xC0, 0x10, 0x06, 0x00, 0x80, 0x30, 0x04, 0x00, 0x81, 0xFC, + 0x07, 0x80, 0x07, 0xFC, 0x00, 0x10, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00, + 0x80, 0x00, 0x20, 0x00, 0x08, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x40, + 0x00, 0x10, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00, 0x80, 0x10, 0x20, 0x04, + 0x08, 0x01, 0x04, 0x00, 0x81, 0x00, 0x20, 0x40, 0x0B, 0xFF, 0xFE, 0x0F, + 0x00, 0x1E, 0x03, 0x00, 0x38, 0x05, 0x00, 0x68, 0x04, 0x80, 0x68, 0x04, + 0x80, 0xC8, 0x04, 0x80, 0x90, 0x04, 0x81, 0x90, 0x08, 0x43, 0x10, 0x08, + 0x42, 0x10, 0x08, 0x46, 0x10, 0x08, 0x4C, 0x20, 0x10, 0x2C, 0x20, 0x10, + 0x38, 0x20, 0x10, 0x30, 0x20, 0x10, 0x00, 0x40, 0x10, 0x00, 0x40, 0x20, + 0x00, 0x40, 0x20, 0x00, 0x40, 0x20, 0x00, 0x40, 0xFC, 0x07, 0xE0, 0x1F, + 0x01, 0xFC, 0x0C, 0x00, 0x80, 0x78, 0x02, 0x01, 0xE0, 0x18, 0x04, 0x80, + 0x60, 0x13, 0x01, 0x00, 0x4C, 0x04, 0x03, 0x18, 0x10, 0x0C, 0x60, 0xC0, + 0x20, 0x83, 0x00, 0x83, 0x08, 0x06, 0x0C, 0x20, 0x18, 0x18, 0x80, 0x40, + 0x66, 0x01, 0x00, 0x98, 0x04, 0x03, 0x40, 0x30, 0x0D, 0x00, 0xC0, 0x14, + 0x02, 0x00, 0x70, 0x3F, 0x80, 0xC0, 0x00, 0xF8, 0x01, 0x83, 0x01, 0x00, + 0xC1, 0x00, 0x21, 0x00, 0x19, 0x00, 0x04, 0x80, 0x02, 0x80, 0x01, 0x40, + 0x00, 0xC0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x28, 0x00, 0x14, 0x00, 0x12, + 0x00, 0x09, 0x80, 0x08, 0x40, 0x08, 0x30, 0x08, 0x0C, 0x18, 0x01, 0xF0, + 0x00, 0x0F, 0xFE, 0x00, 0x40, 0x60, 0x20, 0x0C, 0x08, 0x01, 0x02, 0x00, + 0x40, 0x80, 0x10, 0x40, 0x04, 0x10, 0x02, 0x04, 0x01, 0x01, 0x01, 0x80, + 0x7F, 0x80, 0x20, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00, 0x80, 0x00, 0x40, + 0x00, 0x10, 0x00, 0x04, 0x00, 0x01, 0x00, 0x03, 0xFE, 0x00, 0x00, 0xF8, + 0x01, 0x83, 0x01, 0x00, 0xC1, 0x00, 0x21, 0x00, 0x19, 0x00, 0x05, 0x00, + 0x02, 0x80, 0x01, 0x40, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x28, + 0x00, 0x14, 0x00, 0x12, 0x00, 0x09, 0x80, 0x08, 0x40, 0x08, 0x30, 0x08, + 0x0C, 0x18, 0x03, 0xF0, 0x00, 0xC0, 0x01, 0xC0, 0x01, 0xFE, 0x18, 0xC0, + 0xF0, 0x0F, 0xFE, 0x00, 0x40, 0x60, 0x20, 0x0C, 0x08, 0x01, 0x02, 0x00, + 0x40, 0x80, 0x10, 0x40, 0x04, 0x10, 0x02, 0x04, 0x01, 0x01, 0x01, 0x80, + 0x7F, 0x80, 0x20, 0x60, 0x08, 0x0C, 0x02, 0x03, 0x80, 0x80, 0x60, 0x40, + 0x18, 0x10, 0x03, 0x04, 0x00, 0xC1, 0x00, 0x1B, 0xF8, 0x07, 0x00, 0x7E, + 0x40, 0x60, 0xF0, 0x20, 0x1C, 0x10, 0x02, 0x08, 0x00, 0x82, 0x00, 0x00, + 0x80, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xC0, 0x00, + 0x18, 0x00, 0x01, 0x00, 0x00, 0x44, 0x00, 0x11, 0x00, 0x04, 0x40, 0x02, + 0x38, 0x01, 0x0B, 0x81, 0x82, 0x3F, 0x80, 0x3F, 0xFF, 0xA0, 0x20, 0x50, + 0x10, 0x28, 0x08, 0x24, 0x08, 0x10, 0x04, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, 0x10, 0x00, 0x10, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x1F, + 0xFC, 0x00, 0x7E, 0x0F, 0xC4, 0x00, 0x42, 0x00, 0x10, 0x80, 0x08, 0x20, + 0x02, 0x08, 0x00, 0x82, 0x00, 0x21, 0x00, 0x08, 0x40, 0x04, 0x10, 0x01, + 0x04, 0x00, 0x41, 0x00, 0x10, 0x80, 0x0C, 0x20, 0x02, 0x08, 0x00, 0x82, + 0x00, 0x60, 0x80, 0x10, 0x10, 0x08, 0x06, 0x0C, 0x00, 0x7C, 0x00, 0xFE, + 0x03, 0xF9, 0x80, 0x02, 0x0C, 0x00, 0x30, 0x20, 0x01, 0x01, 0x00, 0x10, + 0x08, 0x01, 0x80, 0x60, 0x08, 0x03, 0x00, 0xC0, 0x18, 0x04, 0x00, 0x40, + 0x60, 0x02, 0x06, 0x00, 0x10, 0x20, 0x00, 0xC3, 0x00, 0x06, 0x10, 0x00, + 0x31, 0x80, 0x00, 0x88, 0x00, 0x04, 0x80, 0x00, 0x2C, 0x00, 0x01, 0xC0, + 0x00, 0x0E, 0x00, 0x00, 0x7F, 0x07, 0xF2, 0x00, 0x04, 0x20, 0x00, 0xC2, + 0x00, 0x08, 0x20, 0xC0, 0x82, 0x0C, 0x18, 0x21, 0xA1, 0x02, 0x1A, 0x10, + 0x23, 0x23, 0x04, 0x32, 0x30, 0x46, 0x22, 0x04, 0x62, 0x60, 0x4C, 0x26, + 0x04, 0xC2, 0x40, 0x58, 0x24, 0x05, 0x82, 0xC0, 0x70, 0x28, 0x07, 0x02, + 0x80, 0xE0, 0x38, 0x0E, 0x03, 0x00, 0x0F, 0xC1, 0xF8, 0x30, 0x03, 0x00, + 0xC0, 0x30, 0x06, 0x03, 0x00, 0x18, 0x10, 0x00, 0xC1, 0x00, 0x03, 0x18, + 0x00, 0x09, 0x80, 0x00, 0x78, 0x00, 0x01, 0x80, 0x00, 0x1C, 0x00, 0x01, + 0xA0, 0x00, 0x19, 0x80, 0x01, 0x84, 0x00, 0x18, 0x30, 0x01, 0x80, 0xC0, + 0x08, 0x06, 0x00, 0x80, 0x18, 0x08, 0x00, 0xC1, 0xF8, 0x3F, 0x80, 0x7E, + 0x0F, 0xC4, 0x00, 0xC1, 0x80, 0x60, 0x20, 0x30, 0x0C, 0x08, 0x03, 0x04, + 0x00, 0x43, 0x00, 0x19, 0x80, 0x02, 0xC0, 0x00, 0xE0, 0x00, 0x10, 0x00, + 0x04, 0x00, 0x01, 0x00, 0x00, 0x80, 0x00, 0x20, 0x00, 0x08, 0x00, 0x02, + 0x00, 0x01, 0x00, 0x00, 0x40, 0x03, 0xFF, 0x80, 0x0F, 0xFF, 0x86, 0x00, + 0x82, 0x00, 0x81, 0x00, 0xC1, 0x80, 0xC0, 0xC0, 0xC0, 0x00, 0xC0, 0x00, + 0xC0, 0x00, 0x40, 0x00, 0x40, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x60, 0x10, 0x60, 0x18, 0x20, 0x08, 0x20, 0x04, 0x20, 0x02, 0x30, 0x03, + 0x1F, 0xFF, 0x80, 0x07, 0xE0, 0x80, 0x10, 0x02, 0x00, 0xC0, 0x18, 0x02, + 0x00, 0x40, 0x18, 0x03, 0x00, 0x40, 0x08, 0x01, 0x00, 0x60, 0x0C, 0x01, + 0x00, 0x20, 0x04, 0x01, 0x80, 0x30, 0x04, 0x00, 0x80, 0x10, 0x06, 0x00, + 0xFC, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, + 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, + 0x02, 0x02, 0x02, 0x02, 0x00, 0x07, 0xE0, 0x0C, 0x01, 0x00, 0x20, 0x04, + 0x01, 0x80, 0x30, 0x04, 0x00, 0x80, 0x30, 0x06, 0x00, 0x80, 0x10, 0x02, + 0x00, 0xC0, 0x18, 0x02, 0x00, 0x40, 0x18, 0x03, 0x00, 0x40, 0x08, 0x03, + 0x00, 0x60, 0xF8, 0x00, 0x01, 0x00, 0x1C, 0x01, 0xB0, 0x19, 0x81, 0x86, + 0x18, 0x11, 0x80, 0xD8, 0x03, 0x80, 0x18, 0xFF, 0xFF, 0xF8, 0xC7, 0x1C, + 0x71, 0x80, 0x03, 0xF8, 0x0C, 0x0C, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, + 0x00, 0x02, 0x07, 0xFC, 0x18, 0x0C, 0x20, 0x04, 0x40, 0x04, 0x80, 0x04, + 0x80, 0x08, 0x80, 0x38, 0xC0, 0xE8, 0x3F, 0x0F, 0x0F, 0x00, 0x00, 0x20, + 0x00, 0x04, 0x00, 0x01, 0x80, 0x00, 0x30, 0x00, 0x04, 0x00, 0x00, 0x87, + 0xC0, 0x13, 0x0C, 0x06, 0x80, 0x40, 0xE0, 0x0C, 0x18, 0x00, 0x82, 0x00, + 0x10, 0xC0, 0x02, 0x10, 0x00, 0x42, 0x00, 0x08, 0x40, 0x02, 0x08, 0x00, + 0x43, 0x80, 0x10, 0x70, 0x04, 0x09, 0x83, 0x0F, 0x1F, 0x80, 0x01, 0xFC, + 0x83, 0x03, 0xC6, 0x00, 0xE4, 0x00, 0x22, 0x00, 0x12, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, 0x18, 0x00, 0x64, + 0x00, 0x61, 0x81, 0xC0, 0x7F, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x30, 0x00, + 0x0C, 0x00, 0x02, 0x00, 0x00, 0x80, 0x00, 0x60, 0x3F, 0x18, 0x10, 0x64, + 0x18, 0x0D, 0x08, 0x01, 0xC2, 0x00, 0x71, 0x00, 0x0C, 0x80, 0x02, 0x20, + 0x00, 0x88, 0x00, 0x62, 0x00, 0x18, 0x80, 0x0E, 0x20, 0x03, 0x04, 0x03, + 0x40, 0xC1, 0xB0, 0x1F, 0x8F, 0x00, 0x01, 0xF0, 0x0E, 0x0C, 0x18, 0x06, + 0x30, 0x02, 0x60, 0x01, 0x40, 0x01, 0xC0, 0x01, 0xFF, 0xFF, 0x80, 0x00, + 0x80, 0x00, 0x80, 0x00, 0x40, 0x00, 0x60, 0x06, 0x30, 0x1C, 0x0F, 0xE0, + 0x00, 0x1F, 0xE0, 0x0C, 0x00, 0x03, 0x00, 0x00, 0x40, 0x00, 0x08, 0x00, + 0x02, 0x00, 0x07, 0xFF, 0xC0, 0x08, 0x00, 0x01, 0x00, 0x00, 0x20, 0x00, + 0x08, 0x00, 0x01, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x00, 0x80, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x00, 0x80, 0x00, 0x10, 0x00, 0x04, 0x00, 0x0F, + 0xFF, 0x00, 0x03, 0xE3, 0xE1, 0x83, 0x60, 0x40, 0x38, 0x10, 0x03, 0x04, + 0x00, 0x60, 0x80, 0x0C, 0x20, 0x01, 0x84, 0x00, 0x20, 0x80, 0x04, 0x10, + 0x01, 0x82, 0x00, 0x30, 0x60, 0x0C, 0x04, 0x02, 0x80, 0x61, 0x90, 0x07, + 0xC6, 0x00, 0x00, 0xC0, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x80, 0x00, + 0x30, 0x00, 0x0C, 0x00, 0xFE, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x40, 0x00, + 0x10, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00, 0x80, 0x00, 0x23, 0xE0, 0x0B, + 0x0C, 0x05, 0x00, 0x81, 0x80, 0x20, 0x40, 0x08, 0x10, 0x02, 0x08, 0x00, + 0x82, 0x00, 0x60, 0x80, 0x18, 0x20, 0x06, 0x10, 0x01, 0x84, 0x00, 0x61, + 0x00, 0x30, 0x40, 0x0C, 0xFC, 0x1F, 0xC0, 0x00, 0x30, 0x00, 0x60, 0x00, + 0xC0, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x20, + 0x00, 0x40, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, + 0x40, 0x00, 0x80, 0x01, 0x00, 0x02, 0x00, 0x08, 0x00, 0x10, 0x1F, 0xFF, + 0x80, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, + 0x00, 0x80, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x20, 0x00, + 0x40, 0x00, 0x80, 0x01, 0x00, 0x06, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, + 0x00, 0x80, 0x03, 0x00, 0x0C, 0x0F, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x60, + 0x00, 0x10, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0xC0, 0x00, 0x30, 0xFC, + 0x08, 0x18, 0x02, 0x0C, 0x00, 0x8C, 0x00, 0x66, 0x00, 0x1B, 0x00, 0x05, + 0x80, 0x01, 0xB0, 0x00, 0x46, 0x00, 0x31, 0xC0, 0x0C, 0x30, 0x02, 0x06, + 0x00, 0x80, 0xC0, 0x60, 0x30, 0xF8, 0x1F, 0x80, 0x01, 0xF8, 0x00, 0x20, + 0x00, 0x40, 0x00, 0x80, 0x01, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, + 0x20, 0x00, 0x80, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x20, + 0x00, 0x40, 0x00, 0x80, 0x01, 0x00, 0x04, 0x00, 0x08, 0x0F, 0xFF, 0xC0, + 0x1C, 0xF1, 0xE0, 0xF1, 0xE3, 0x0E, 0x1C, 0x10, 0xC1, 0x81, 0x08, 0x10, + 0x30, 0x81, 0x03, 0x18, 0x10, 0x21, 0x83, 0x02, 0x10, 0x30, 0x21, 0x02, + 0x06, 0x10, 0x20, 0x63, 0x02, 0x04, 0x30, 0x60, 0x42, 0x06, 0x04, 0xF8, + 0x70, 0xF0, 0x0E, 0x3E, 0x01, 0x60, 0x81, 0xC0, 0x20, 0xC0, 0x10, 0x40, + 0x08, 0x20, 0x04, 0x30, 0x02, 0x10, 0x02, 0x08, 0x01, 0x04, 0x00, 0x82, + 0x00, 0x42, 0x00, 0x21, 0x00, 0x20, 0x80, 0x13, 0xF0, 0x3E, 0x01, 0xF0, + 0x06, 0x0C, 0x18, 0x06, 0x20, 0x03, 0x60, 0x01, 0x40, 0x01, 0x80, 0x01, + 0x80, 0x01, 0x80, 0x01, 0x80, 0x02, 0x80, 0x06, 0xC0, 0x04, 0x40, 0x18, + 0x30, 0x60, 0x1F, 0x80, 0x0F, 0x1F, 0x80, 0x16, 0x0C, 0x01, 0xC0, 0x20, + 0x30, 0x03, 0x03, 0x00, 0x10, 0x20, 0x01, 0x02, 0x00, 0x10, 0x40, 0x01, + 0x04, 0x00, 0x10, 0x40, 0x02, 0x06, 0x00, 0x60, 0x60, 0x04, 0x0B, 0x00, + 0x80, 0x98, 0x30, 0x08, 0xFC, 0x00, 0x80, 0x00, 0x08, 0x00, 0x01, 0x00, + 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x0F, 0xF0, 0x00, 0x03, + 0xF1, 0xE1, 0x83, 0x20, 0x40, 0x34, 0x10, 0x03, 0x84, 0x00, 0x30, 0x80, + 0x04, 0x20, 0x00, 0x84, 0x00, 0x10, 0x80, 0x06, 0x10, 0x00, 0xC2, 0x00, + 0x30, 0x60, 0x0E, 0x04, 0x03, 0x40, 0x60, 0xC8, 0x07, 0xE2, 0x00, 0x00, + 0x40, 0x00, 0x08, 0x00, 0x01, 0x00, 0x00, 0x20, 0x00, 0x08, 0x00, 0x01, + 0x00, 0x03, 0xFC, 0x00, 0x0F, 0x87, 0xC0, 0x23, 0x08, 0x04, 0xC0, 0x00, + 0xE0, 0x00, 0x18, 0x00, 0x02, 0x00, 0x00, 0x80, 0x00, 0x10, 0x00, 0x02, + 0x00, 0x00, 0x40, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x40, 0x00, 0x08, + 0x00, 0x3F, 0xFE, 0x00, 0x01, 0xFA, 0x0C, 0x1C, 0x20, 0x08, 0x80, 0x11, + 0x00, 0x03, 0x00, 0x03, 0xF8, 0x00, 0x7C, 0x00, 0x0C, 0x00, 0x09, 0x00, + 0x16, 0x00, 0x2C, 0x00, 0x9E, 0x06, 0x27, 0xF0, 0x00, 0x08, 0x00, 0x40, + 0x02, 0x00, 0x10, 0x00, 0x80, 0x7F, 0xFC, 0x40, 0x02, 0x00, 0x10, 0x00, + 0x80, 0x08, 0x00, 0x40, 0x02, 0x00, 0x10, 0x01, 0x00, 0x08, 0x00, 0x40, + 0x02, 0x00, 0xD8, 0x1C, 0x3F, 0x00, 0xF0, 0x1E, 0x20, 0x04, 0x80, 0x09, + 0x00, 0x12, 0x00, 0x24, 0x00, 0xC8, 0x01, 0x20, 0x02, 0x40, 0x04, 0x80, + 0x09, 0x00, 0x12, 0x00, 0x64, 0x03, 0x8C, 0x1D, 0x0F, 0xC3, 0x80, 0xFE, + 0x0F, 0xE6, 0x00, 0x20, 0x40, 0x08, 0x08, 0x03, 0x01, 0x80, 0x40, 0x30, + 0x18, 0x06, 0x02, 0x00, 0x40, 0x80, 0x08, 0x30, 0x01, 0x84, 0x00, 0x31, + 0x80, 0x02, 0x20, 0x00, 0x48, 0x00, 0x09, 0x00, 0x01, 0xC0, 0x00, 0xF8, + 0x0F, 0xA0, 0x01, 0x90, 0x00, 0x88, 0x40, 0xC4, 0x30, 0x42, 0x18, 0x61, + 0x1A, 0x20, 0x8D, 0x10, 0x4C, 0x98, 0x26, 0x48, 0x16, 0x2C, 0x0B, 0x14, + 0x07, 0x0A, 0x03, 0x07, 0x01, 0x81, 0x00, 0x0F, 0x83, 0xE0, 0xC0, 0x18, + 0x0C, 0x0C, 0x01, 0x83, 0x00, 0x18, 0xC0, 0x01, 0xB0, 0x00, 0x1C, 0x00, + 0x03, 0x00, 0x00, 0xF0, 0x00, 0x63, 0x00, 0x18, 0x30, 0x06, 0x06, 0x01, + 0x80, 0x60, 0x60, 0x06, 0x3F, 0x07, 0xE0, 0x0F, 0xC0, 0xF8, 0x30, 0x01, + 0x00, 0x80, 0x18, 0x04, 0x00, 0x80, 0x30, 0x0C, 0x01, 0x80, 0xC0, 0x04, + 0x04, 0x00, 0x30, 0x60, 0x01, 0x86, 0x00, 0x04, 0x20, 0x00, 0x23, 0x00, + 0x01, 0xB0, 0x00, 0x0D, 0x00, 0x00, 0x38, 0x00, 0x01, 0x80, 0x00, 0x08, + 0x00, 0x00, 0xC0, 0x00, 0x04, 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, + 0x20, 0x00, 0x7F, 0xE0, 0x00, 0x1F, 0xFF, 0x10, 0x06, 0x10, 0x0C, 0x10, + 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, 0x06, + 0x00, 0x0C, 0x00, 0x18, 0x04, 0x30, 0x0C, 0x60, 0x0C, 0xFF, 0xF8, 0x00, + 0xE0, 0x20, 0x08, 0x01, 0x00, 0x20, 0x04, 0x01, 0x00, 0x20, 0x04, 0x00, + 0x80, 0x20, 0x08, 0x0E, 0x00, 0x60, 0x04, 0x00, 0x80, 0x10, 0x02, 0x00, + 0x40, 0x08, 0x02, 0x00, 0x40, 0x08, 0x01, 0x00, 0x18, 0x00, 0x00, 0x10, + 0xC3, 0x08, 0x20, 0x86, 0x18, 0x41, 0x04, 0x30, 0xC2, 0x08, 0x21, 0x86, + 0x10, 0x43, 0x0C, 0x20, 0x06, 0x00, 0x40, 0x10, 0x04, 0x01, 0x00, 0x40, + 0x10, 0x04, 0x02, 0x00, 0x80, 0x20, 0x0C, 0x01, 0xC0, 0xC0, 0x40, 0x10, + 0x04, 0x03, 0x00, 0x80, 0x20, 0x08, 0x02, 0x01, 0x00, 0xC0, 0xE0, 0x00, + 0x1E, 0x02, 0x66, 0x0D, 0x86, 0x16, 0x06, 0x48, 0x07, 0x00}; + +const GFXglyph FreeMonoOblique18pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 21, 0, 1}, // 0x20 ' ' + {0, 7, 22, 21, 9, -21}, // 0x21 '!' + {20, 13, 10, 21, 7, -20}, // 0x22 '"' + {37, 15, 24, 21, 5, -21}, // 0x23 '#' + {82, 16, 26, 21, 4, -22}, // 0x24 '$' + {134, 16, 21, 21, 5, -20}, // 0x25 '%' + {176, 13, 18, 21, 5, -17}, // 0x26 '&' + {206, 5, 10, 21, 12, -20}, // 0x27 ''' + {213, 8, 25, 21, 12, -20}, // 0x28 '(' + {238, 8, 25, 21, 5, -20}, // 0x29 ')' + {263, 14, 11, 21, 7, -19}, // 0x2A '*' + {283, 15, 17, 21, 5, -17}, // 0x2B '+' + {315, 9, 10, 21, 4, -4}, // 0x2C ',' + {327, 16, 1, 21, 5, -9}, // 0x2D '-' + {329, 5, 5, 21, 8, -4}, // 0x2E '.' + {333, 19, 26, 21, 3, -22}, // 0x2F '/' + {395, 14, 21, 21, 5, -20}, // 0x30 '0' + {432, 13, 21, 21, 4, -20}, // 0x31 '1' + {467, 17, 21, 21, 3, -20}, // 0x32 '2' + {512, 16, 21, 21, 3, -20}, // 0x33 '3' + {554, 14, 21, 21, 5, -20}, // 0x34 '4' + {591, 17, 21, 21, 4, -20}, // 0x35 '5' + {636, 16, 21, 21, 6, -20}, // 0x36 '6' + {678, 13, 21, 21, 8, -20}, // 0x37 '7' + {713, 15, 21, 21, 5, -20}, // 0x38 '8' + {753, 15, 21, 21, 5, -20}, // 0x39 '9' + {793, 7, 15, 21, 8, -14}, // 0x3A ':' + {807, 11, 20, 21, 4, -14}, // 0x3B ';' + {835, 17, 16, 21, 5, -17}, // 0x3C '<' + {869, 19, 6, 21, 3, -12}, // 0x3D '=' + {884, 18, 16, 21, 3, -17}, // 0x3E '>' + {920, 12, 20, 21, 8, -19}, // 0x3F '?' + {950, 15, 23, 21, 5, -20}, // 0x40 '@' + {994, 21, 20, 21, 0, -19}, // 0x41 'A' + {1047, 18, 20, 21, 2, -19}, // 0x42 'B' + {1092, 18, 20, 21, 4, -19}, // 0x43 'C' + {1137, 18, 20, 21, 2, -19}, // 0x44 'D' + {1182, 20, 20, 21, 2, -19}, // 0x45 'E' + {1232, 20, 20, 21, 2, -19}, // 0x46 'F' + {1282, 18, 20, 21, 4, -19}, // 0x47 'G' + {1327, 21, 20, 21, 2, -19}, // 0x48 'H' + {1380, 17, 20, 21, 4, -19}, // 0x49 'I' + {1423, 20, 20, 21, 4, -19}, // 0x4A 'J' + {1473, 21, 20, 21, 2, -19}, // 0x4B 'K' + {1526, 18, 20, 21, 2, -19}, // 0x4C 'L' + {1571, 24, 20, 21, 1, -19}, // 0x4D 'M' + {1631, 22, 20, 21, 2, -19}, // 0x4E 'N' + {1686, 17, 20, 21, 4, -19}, // 0x4F 'O' + {1729, 18, 20, 21, 2, -19}, // 0x50 'P' + {1774, 17, 24, 21, 4, -19}, // 0x51 'Q' + {1825, 18, 20, 21, 2, -19}, // 0x52 'R' + {1870, 18, 20, 21, 3, -19}, // 0x53 'S' + {1915, 17, 20, 21, 5, -19}, // 0x54 'T' + {1958, 18, 20, 21, 5, -19}, // 0x55 'U' + {2003, 21, 20, 21, 4, -19}, // 0x56 'V' + {2056, 20, 20, 21, 4, -19}, // 0x57 'W' + {2106, 21, 20, 21, 2, -19}, // 0x58 'X' + {2159, 18, 20, 21, 5, -19}, // 0x59 'Y' + {2204, 17, 20, 21, 4, -19}, // 0x5A 'Z' + {2247, 11, 25, 21, 9, -20}, // 0x5B '[' + {2282, 8, 27, 21, 9, -22}, // 0x5C '\' + {2309, 11, 25, 21, 5, -20}, // 0x5D ']' + {2344, 13, 9, 21, 7, -20}, // 0x5E '^' + {2359, 21, 1, 21, -1, 4}, // 0x5F '_' + {2362, 5, 5, 21, 9, -21}, // 0x60 '`' + {2366, 16, 15, 21, 3, -14}, // 0x61 'a' + {2396, 19, 21, 21, 1, -20}, // 0x62 'b' + {2446, 17, 15, 21, 4, -14}, // 0x63 'c' + {2478, 18, 21, 21, 4, -20}, // 0x64 'd' + {2526, 16, 15, 21, 4, -14}, // 0x65 'e' + {2556, 19, 21, 21, 4, -20}, // 0x66 'f' + {2606, 19, 22, 21, 4, -14}, // 0x67 'g' + {2659, 18, 21, 21, 2, -20}, // 0x68 'h' + {2707, 15, 22, 21, 3, -21}, // 0x69 'i' + {2749, 15, 29, 21, 3, -21}, // 0x6A 'j' + {2804, 18, 21, 21, 2, -20}, // 0x6B 'k' + {2852, 15, 21, 21, 3, -20}, // 0x6C 'l' + {2892, 20, 15, 21, 1, -14}, // 0x6D 'm' + {2930, 17, 15, 21, 2, -14}, // 0x6E 'n' + {2962, 16, 15, 21, 4, -14}, // 0x6F 'o' + {2992, 20, 22, 21, 0, -14}, // 0x70 'p' + {3047, 19, 22, 21, 4, -14}, // 0x71 'q' + {3100, 19, 15, 21, 3, -14}, // 0x72 'r' + {3136, 15, 15, 21, 4, -14}, // 0x73 's' + {3165, 13, 20, 21, 5, -19}, // 0x74 't' + {3198, 15, 15, 21, 4, -14}, // 0x75 'u' + {3227, 19, 15, 21, 4, -14}, // 0x76 'v' + {3263, 17, 15, 21, 5, -14}, // 0x77 'w' + {3295, 19, 15, 21, 2, -14}, // 0x78 'x' + {3331, 21, 22, 21, 1, -14}, // 0x79 'y' + {3389, 16, 15, 21, 4, -14}, // 0x7A 'z' + {3419, 11, 25, 21, 8, -20}, // 0x7B '{' + {3454, 6, 24, 21, 9, -19}, // 0x7C '|' + {3472, 10, 25, 21, 6, -20}, // 0x7D '}' + {3504, 15, 5, 21, 5, -11}}; // 0x7E '~' + +const GFXfont FreeMonoOblique18pt7b PROGMEM = { + (uint8_t *)FreeMonoOblique18pt7bBitmaps, + (GFXglyph *)FreeMonoOblique18pt7bGlyphs, 0x20, 0x7E, 35}; + +// Approx. 4186 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMonoOblique24pt7b.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMonoOblique24pt7b.h new file mode 100644 index 0000000..28bbf9e --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMonoOblique24pt7b.h @@ -0,0 +1,645 @@ +#pragma once +#include + +const uint8_t FreeMonoOblique24pt7bBitmaps[] PROGMEM = { + 0x01, 0xC0, 0xF0, 0x3C, 0x0E, 0x03, 0x81, 0xE0, 0x78, 0x1C, 0x07, 0x01, + 0xC0, 0xE0, 0x38, 0x0E, 0x03, 0x00, 0xC0, 0x70, 0x1C, 0x06, 0x01, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x0F, 0x83, 0xE0, 0xF8, + 0x1C, 0x00, 0x7E, 0x3F, 0x7E, 0x3F, 0x7C, 0x3E, 0x7C, 0x3E, 0x7C, 0x3E, + 0x78, 0x3C, 0xF8, 0x7C, 0xF0, 0x78, 0xF0, 0x78, 0xF0, 0x78, 0xE0, 0x70, + 0xE0, 0x70, 0xE0, 0x70, 0xC0, 0x60, 0x00, 0x18, 0x30, 0x00, 0x61, 0x80, + 0x01, 0x86, 0x00, 0x04, 0x18, 0x00, 0x30, 0xC0, 0x00, 0xC3, 0x00, 0x03, + 0x0C, 0x00, 0x18, 0x30, 0x00, 0x61, 0x80, 0x01, 0x86, 0x00, 0x06, 0x18, + 0x07, 0xFF, 0xFF, 0x1F, 0xFF, 0xFC, 0x03, 0x0C, 0x00, 0x18, 0x30, 0x00, + 0x61, 0x80, 0x01, 0x86, 0x00, 0x06, 0x18, 0x00, 0x30, 0xC0, 0x1F, 0xFF, + 0xF8, 0x7F, 0xFF, 0xE0, 0x18, 0x30, 0x00, 0x61, 0x80, 0x01, 0x86, 0x00, + 0x06, 0x18, 0x00, 0x30, 0x40, 0x00, 0xC3, 0x00, 0x03, 0x0C, 0x00, 0x18, + 0x30, 0x00, 0x61, 0x80, 0x01, 0x86, 0x00, 0x06, 0x18, 0x00, 0x00, 0x03, + 0x00, 0x00, 0x18, 0x00, 0x00, 0x80, 0x00, 0x3F, 0x00, 0x07, 0xFD, 0x80, + 0x70, 0x7C, 0x06, 0x00, 0xE0, 0x60, 0x02, 0x07, 0x00, 0x10, 0x30, 0x00, + 0x01, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x70, 0x00, 0x01, 0xF0, 0x00, 0x07, + 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x18, + 0x00, 0x00, 0xC2, 0x00, 0x06, 0x30, 0x00, 0x61, 0x80, 0x03, 0x1E, 0x00, + 0x30, 0xFC, 0x07, 0x06, 0x7F, 0xF0, 0x00, 0xFE, 0x00, 0x01, 0x80, 0x00, + 0x0C, 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, 0x80, + 0x00, 0x00, 0x78, 0x00, 0x07, 0xF8, 0x00, 0x38, 0x60, 0x01, 0xC0, 0xC0, + 0x06, 0x03, 0x00, 0x30, 0x0C, 0x00, 0xC0, 0x30, 0x03, 0x01, 0x80, 0x0C, + 0x0E, 0x00, 0x38, 0x70, 0x00, 0x7F, 0x81, 0xC0, 0xF8, 0x3F, 0x00, 0x07, + 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x00, 0x07, 0xC0, 0x00, 0x78, 0x00, 0x01, + 0x00, 0x78, 0x00, 0x07, 0xF8, 0x00, 0x38, 0x60, 0x01, 0x80, 0xC0, 0x06, + 0x03, 0x00, 0x30, 0x0C, 0x00, 0xC0, 0x30, 0x03, 0x01, 0x80, 0x0C, 0x0E, + 0x00, 0x18, 0x70, 0x00, 0x7F, 0x80, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, + 0x0F, 0xF8, 0x03, 0x8E, 0x00, 0xC0, 0x00, 0x38, 0x00, 0x06, 0x00, 0x00, + 0xC0, 0x00, 0x18, 0x00, 0x01, 0x00, 0x00, 0x30, 0x00, 0x06, 0x00, 0x03, + 0xE0, 0x01, 0xCC, 0x0E, 0x60, 0xC3, 0xD8, 0x18, 0x63, 0x03, 0x18, 0xC0, + 0x33, 0x18, 0x06, 0xC3, 0x00, 0x70, 0x60, 0x0E, 0x0C, 0x01, 0xC0, 0xC0, + 0x78, 0x1C, 0x3B, 0xE1, 0xFE, 0x3C, 0x1F, 0x00, 0x00, 0x7E, 0xFD, 0xF3, + 0xE7, 0xCF, 0x3E, 0x78, 0xF1, 0xE3, 0x87, 0x0E, 0x18, 0x00, 0x00, 0x60, + 0x18, 0x07, 0x00, 0xC0, 0x30, 0x0E, 0x01, 0x80, 0x70, 0x0C, 0x03, 0x80, + 0x60, 0x1C, 0x03, 0x80, 0xE0, 0x1C, 0x03, 0x80, 0xF0, 0x1C, 0x03, 0x80, + 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x30, + 0x06, 0x00, 0xC0, 0x1C, 0x01, 0x80, 0x30, 0x02, 0x00, 0x01, 0x80, 0x30, + 0x06, 0x00, 0xE0, 0x0C, 0x01, 0x80, 0x30, 0x07, 0x00, 0xE0, 0x1C, 0x03, + 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x38, 0x07, 0x00, + 0xE0, 0x3C, 0x07, 0x00, 0xE0, 0x38, 0x07, 0x01, 0xC0, 0x38, 0x0E, 0x01, + 0x80, 0x70, 0x0C, 0x03, 0x00, 0xC0, 0x10, 0x00, 0x00, 0x20, 0x00, 0x18, + 0x00, 0x06, 0x00, 0x01, 0x80, 0x00, 0xC0, 0x00, 0x30, 0x0E, 0x0C, 0x0B, + 0xF3, 0x3E, 0x3F, 0xFE, 0x01, 0xFC, 0x00, 0x3C, 0x00, 0x1F, 0x00, 0x0E, + 0x60, 0x07, 0x18, 0x01, 0x83, 0x00, 0xC0, 0xC0, 0x60, 0x30, 0x00, 0x00, + 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x18, + 0x00, 0x00, 0x60, 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, + 0x00, 0xC0, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x30, 0x00, 0x01, + 0x80, 0x00, 0x06, 0x00, 0x00, 0x18, 0x00, 0x00, 0x60, 0x00, 0x01, 0x80, + 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, + 0x03, 0xF0, 0x7E, 0x07, 0xC0, 0xF8, 0x0F, 0x81, 0xF0, 0x1E, 0x03, 0xE0, + 0x3C, 0x07, 0x80, 0x70, 0x0F, 0x00, 0xE0, 0x0C, 0x00, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xE0, 0x3C, 0xFF, 0xFF, 0xFF, 0xCF, 0x00, 0x00, 0x00, 0x03, + 0x00, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, + 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, + 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x03, 0x00, + 0x00, 0x07, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x1C, 0x00, + 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x70, 0x00, 0x00, 0x60, 0x00, + 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x03, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, 0x00, 0x00, 0xE0, 0x00, 0x00, + 0xC0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x0F, 0xF8, 0x01, + 0xC1, 0xC0, 0x38, 0x0E, 0x07, 0x00, 0x60, 0xE0, 0x03, 0x0C, 0x00, 0x31, + 0x80, 0x03, 0x18, 0x00, 0x33, 0x00, 0x03, 0x30, 0x00, 0x33, 0x00, 0x03, + 0x20, 0x00, 0x26, 0x00, 0x06, 0x60, 0x00, 0x66, 0x00, 0x06, 0x40, 0x00, + 0x4C, 0x00, 0x0C, 0xC0, 0x00, 0xCC, 0x00, 0x0C, 0xC0, 0x01, 0x8C, 0x00, + 0x18, 0xC0, 0x01, 0x8C, 0x00, 0x30, 0xC0, 0x07, 0x06, 0x00, 0xE0, 0x60, + 0x1C, 0x03, 0x87, 0x80, 0x3F, 0xF0, 0x00, 0xFC, 0x00, 0x00, 0x0E, 0x00, + 0x0F, 0x00, 0x0F, 0x80, 0x0E, 0xC0, 0x1C, 0xC0, 0x1C, 0x60, 0x1C, 0x30, + 0x08, 0x18, 0x00, 0x1C, 0x00, 0x0C, 0x00, 0x06, 0x00, 0x03, 0x00, 0x01, + 0x80, 0x01, 0xC0, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x18, 0x00, + 0x18, 0x00, 0x0C, 0x00, 0x06, 0x00, 0x03, 0x00, 0x01, 0x80, 0x01, 0x80, + 0x00, 0xC0, 0x00, 0x60, 0x00, 0x30, 0x1F, 0xFF, 0xFF, 0xFF, 0xF8, 0x00, + 0x07, 0xE0, 0x00, 0x3F, 0xE0, 0x01, 0xE0, 0xE0, 0x07, 0x00, 0xE0, 0x1C, + 0x00, 0xE0, 0x30, 0x00, 0xC0, 0xC0, 0x01, 0x81, 0x00, 0x03, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x03, + 0x00, 0x00, 0x1C, 0x00, 0x00, 0x70, 0x00, 0x01, 0xC0, 0x00, 0x07, 0x00, + 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x03, 0x80, 0x00, 0x0E, 0x00, 0x00, + 0x70, 0x00, 0x01, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xE0, + 0x00, 0xC3, 0x80, 0x01, 0x87, 0xFF, 0xFF, 0x0F, 0xFF, 0xFC, 0x00, 0x00, + 0x0F, 0xC0, 0x01, 0xFF, 0xC0, 0x1E, 0x07, 0x80, 0xE0, 0x06, 0x03, 0x00, + 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x0C, + 0x00, 0x00, 0x60, 0x00, 0x03, 0x80, 0x00, 0x1C, 0x00, 0x00, 0xE0, 0x00, + 0xFE, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xE0, 0x00, 0x01, + 0x80, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, + 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, 0x00, 0xE3, 0x00, 0x07, 0x0E, 0x00, + 0x38, 0x1E, 0x03, 0xC0, 0x3F, 0xFC, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x03, + 0xE0, 0x00, 0xF8, 0x00, 0x1B, 0x00, 0x06, 0x60, 0x01, 0x8C, 0x00, 0x63, + 0x00, 0x18, 0x60, 0x07, 0x0C, 0x00, 0xC1, 0x80, 0x30, 0x30, 0x0C, 0x0C, + 0x03, 0x01, 0x80, 0xC0, 0x30, 0x18, 0x06, 0x06, 0x00, 0xC1, 0x80, 0x30, + 0x60, 0x06, 0x18, 0x00, 0xC3, 0xFF, 0xFE, 0x7F, 0xFF, 0xC0, 0x00, 0xC0, + 0x00, 0x18, 0x00, 0x03, 0x00, 0x00, 0x60, 0x00, 0x18, 0x00, 0x03, 0x00, + 0x0F, 0xFC, 0x01, 0xFF, 0x80, 0x01, 0xFF, 0xF8, 0x0F, 0xFF, 0xC0, 0x40, + 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, 0x80, 0x00, 0x0C, 0x00, 0x00, + 0xC0, 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, 0xBF, 0xC0, 0x0F, 0xFF, + 0x80, 0xF8, 0x1E, 0x02, 0x00, 0x30, 0x00, 0x01, 0xC0, 0x00, 0x06, 0x00, + 0x00, 0x30, 0x00, 0x01, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x60, 0x00, 0x06, + 0x00, 0x00, 0x30, 0x00, 0x03, 0x80, 0x00, 0x18, 0xC0, 0x01, 0x87, 0x00, + 0x38, 0x1E, 0x07, 0x80, 0x7F, 0xF8, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x03, + 0xF0, 0x00, 0xFF, 0xC0, 0x1F, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x01, + 0x80, 0x00, 0x18, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x00, 0xC0, 0x00, + 0x0E, 0x00, 0x00, 0x60, 0x00, 0x07, 0x0F, 0x80, 0x31, 0xFF, 0x01, 0x9C, + 0x3C, 0x0D, 0x80, 0x60, 0xD8, 0x03, 0x87, 0x80, 0x0C, 0x38, 0x00, 0x61, + 0xC0, 0x03, 0x0C, 0x00, 0x18, 0x60, 0x00, 0xC3, 0x00, 0x0C, 0x18, 0x00, + 0x60, 0xE0, 0x06, 0x03, 0x00, 0x30, 0x1C, 0x07, 0x00, 0x70, 0x70, 0x01, + 0xFF, 0x00, 0x07, 0xE0, 0x00, 0x7F, 0xFF, 0xDF, 0xFF, 0xFC, 0x00, 0x0F, + 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, 0x30, 0x00, 0x18, 0x00, + 0x06, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x18, 0x00, 0x0C, + 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, 0x30, 0x00, 0x0C, 0x00, + 0x06, 0x00, 0x01, 0x80, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x18, 0x00, 0x0C, + 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, 0x00, 0x3F, 0x00, 0x0F, + 0xFC, 0x01, 0xC1, 0xE0, 0x70, 0x06, 0x06, 0x00, 0x30, 0xC0, 0x03, 0x1C, + 0x00, 0x31, 0x80, 0x03, 0x18, 0x00, 0x31, 0x80, 0x06, 0x18, 0x00, 0xE0, + 0xC0, 0x1C, 0x0F, 0x07, 0x80, 0x3F, 0xE0, 0x03, 0xFE, 0x00, 0xE0, 0x70, + 0x18, 0x03, 0x83, 0x00, 0x1C, 0x60, 0x00, 0xC6, 0x00, 0x0C, 0xC0, 0x00, + 0xCC, 0x00, 0x0C, 0xC0, 0x00, 0xCC, 0x00, 0x18, 0xC0, 0x03, 0x8E, 0x00, + 0x70, 0x60, 0x0E, 0x07, 0x83, 0xC0, 0x3F, 0xF0, 0x00, 0xFC, 0x00, 0x00, + 0x0F, 0x80, 0x00, 0xFF, 0x80, 0x0F, 0x07, 0x00, 0x70, 0x0E, 0x03, 0x80, + 0x18, 0x0C, 0x00, 0x70, 0x60, 0x00, 0xC1, 0x80, 0x03, 0x0C, 0x00, 0x0C, + 0x30, 0x00, 0x30, 0xC0, 0x01, 0xC3, 0x00, 0x0F, 0x0C, 0x00, 0x6C, 0x38, + 0x03, 0xF0, 0x60, 0x1D, 0x81, 0xE1, 0xE6, 0x03, 0xFE, 0x18, 0x03, 0xE0, + 0xC0, 0x00, 0x03, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x60, 0x00, 0x03, 0x00, + 0x00, 0x1C, 0x00, 0x00, 0xE0, 0x00, 0x07, 0x00, 0x00, 0x38, 0x00, 0x03, + 0xC0, 0x00, 0x7C, 0x00, 0xFF, 0xC0, 0x01, 0xF8, 0x00, 0x00, 0x07, 0x83, + 0xF1, 0xFC, 0x7F, 0x1F, 0x83, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x7E, 0x3F, 0x8F, 0xE3, 0xF0, 0x78, + 0x00, 0x00, 0x3C, 0x00, 0xFC, 0x03, 0xF8, 0x07, 0xF0, 0x0F, 0xC0, 0x0F, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7E, 0x00, 0xFC, 0x03, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x3E, + 0x00, 0xF8, 0x01, 0xE0, 0x07, 0x80, 0x0F, 0x00, 0x3C, 0x00, 0x70, 0x01, + 0xC0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x3C, 0x00, 0x01, + 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, + 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x03, + 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0xF0, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x78, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x0C, 0x00, 0x3F, 0xFF, 0xFF, 0x9F, + 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, + 0x00, 0x06, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x00, 0xF0, + 0x00, 0x00, 0x3C, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, + 0xC0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x1E, 0x00, 0x00, + 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, + 0x00, 0x70, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x07, 0xF0, 0x3F, 0xFC, 0x78, + 0x1E, 0xC0, 0x07, 0xC0, 0x03, 0xC0, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x1C, 0x00, 0x38, 0x00, 0xE0, 0x07, 0xC0, 0x07, + 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x7E, 0x00, 0xFE, 0x00, 0xFE, + 0x00, 0x7C, 0x00, 0x00, 0x3F, 0x00, 0x1F, 0xF0, 0x07, 0x07, 0x01, 0xC0, + 0x70, 0x60, 0x06, 0x1C, 0x00, 0xC3, 0x00, 0x18, 0xC0, 0x03, 0x18, 0x00, + 0x66, 0x00, 0xFC, 0xC0, 0x7F, 0x98, 0x1C, 0x66, 0x06, 0x0C, 0xC1, 0x81, + 0x98, 0x30, 0x33, 0x0C, 0x0E, 0x61, 0x81, 0x98, 0x30, 0x33, 0x06, 0x06, + 0x60, 0xF0, 0xCC, 0x0F, 0xF9, 0x80, 0x7F, 0x30, 0x00, 0x06, 0x00, 0x00, + 0xC0, 0x00, 0x18, 0x00, 0x03, 0x80, 0x00, 0x30, 0x00, 0x07, 0x00, 0x00, + 0x70, 0x18, 0x0F, 0xFE, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0xF0, 0x00, 0x0F, + 0xFE, 0x00, 0x00, 0x06, 0xC0, 0x00, 0x00, 0xCC, 0x00, 0x00, 0x31, 0x80, + 0x00, 0x06, 0x30, 0x00, 0x01, 0x86, 0x00, 0x00, 0x60, 0xC0, 0x00, 0x0C, + 0x1C, 0x00, 0x03, 0x01, 0x80, 0x00, 0x40, 0x30, 0x00, 0x18, 0x06, 0x00, + 0x06, 0x00, 0xC0, 0x00, 0xC0, 0x18, 0x00, 0x30, 0x01, 0x80, 0x07, 0xFF, + 0xF0, 0x01, 0xFF, 0xFE, 0x00, 0x60, 0x00, 0xC0, 0x0C, 0x00, 0x18, 0x03, + 0x00, 0x03, 0x00, 0x40, 0x00, 0x30, 0x18, 0x00, 0x06, 0x06, 0x00, 0x00, + 0xC0, 0xC0, 0x00, 0x18, 0xFF, 0x80, 0x7F, 0xFF, 0xF0, 0x0F, 0xFC, 0x03, + 0xFF, 0xFC, 0x01, 0xFF, 0xFF, 0xC0, 0x06, 0x00, 0x38, 0x01, 0x80, 0x07, + 0x00, 0xC0, 0x00, 0xC0, 0x30, 0x00, 0x30, 0x0C, 0x00, 0x0C, 0x03, 0x00, + 0x03, 0x00, 0xC0, 0x01, 0x80, 0x60, 0x00, 0xC0, 0x18, 0x01, 0xE0, 0x07, + 0xFF, 0xE0, 0x01, 0xFF, 0xFC, 0x00, 0xE0, 0x03, 0x80, 0x30, 0x00, 0x70, + 0x0C, 0x00, 0x0E, 0x03, 0x00, 0x01, 0x80, 0xC0, 0x00, 0x60, 0x60, 0x00, + 0x18, 0x18, 0x00, 0x06, 0x06, 0x00, 0x03, 0x01, 0x80, 0x01, 0xC0, 0x60, + 0x00, 0xE0, 0x30, 0x00, 0x70, 0xFF, 0xFF, 0xF8, 0x3F, 0xFF, 0xF8, 0x00, + 0x00, 0x0F, 0xE0, 0x00, 0x3F, 0xFC, 0xC0, 0x3C, 0x0F, 0x60, 0x78, 0x01, + 0xF0, 0x70, 0x00, 0x70, 0x70, 0x00, 0x18, 0x30, 0x00, 0x0C, 0x30, 0x00, + 0x06, 0x38, 0x00, 0x02, 0x18, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x0C, 0x00, + 0x00, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, + 0x00, 0x00, 0xC0, 0x00, 0x00, 0x60, 0x00, 0x00, 0x30, 0x00, 0x00, 0x18, + 0x00, 0x00, 0x0C, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x60, + 0x60, 0x00, 0x60, 0x38, 0x00, 0xE0, 0x0F, 0x01, 0xE0, 0x03, 0xFF, 0xC0, + 0x00, 0x3F, 0x00, 0x00, 0x03, 0xFF, 0xF0, 0x01, 0xFF, 0xFF, 0x00, 0x0C, + 0x00, 0xF0, 0x03, 0x00, 0x1C, 0x01, 0xC0, 0x03, 0x80, 0x60, 0x00, 0x60, + 0x18, 0x00, 0x1C, 0x06, 0x00, 0x03, 0x01, 0x80, 0x00, 0xC0, 0xC0, 0x00, + 0x30, 0x30, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0x03, 0x00, 0x00, 0xC0, 0xC0, + 0x00, 0x60, 0x60, 0x00, 0x18, 0x18, 0x00, 0x06, 0x06, 0x00, 0x03, 0x01, + 0x80, 0x00, 0xC0, 0xE0, 0x00, 0x70, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x0C, + 0x03, 0x00, 0x06, 0x00, 0xC0, 0x07, 0x00, 0x60, 0x07, 0x80, 0xFF, 0xFF, + 0xC0, 0x3F, 0xFF, 0x80, 0x00, 0x03, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFC, + 0x01, 0x80, 0x01, 0x80, 0x30, 0x00, 0x60, 0x0C, 0x00, 0x0C, 0x01, 0x80, + 0x01, 0x80, 0x30, 0x00, 0x30, 0x06, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0x00, + 0x30, 0x18, 0x00, 0x06, 0x03, 0x00, 0x00, 0xFF, 0xE0, 0x00, 0x1F, 0xF8, + 0x00, 0x07, 0x03, 0x00, 0x00, 0xC0, 0x60, 0x00, 0x18, 0x0C, 0x00, 0x03, + 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x18, 0x00, 0x0C, 0x03, 0x00, 0x01, + 0x80, 0x60, 0x00, 0x30, 0x0C, 0x00, 0x0C, 0x01, 0x80, 0x01, 0x80, 0x60, + 0x00, 0x30, 0xFF, 0xFF, 0xFE, 0x1F, 0xFF, 0xFF, 0xC0, 0x03, 0xFF, 0xFF, + 0xF0, 0x7F, 0xFF, 0xFF, 0x00, 0x60, 0x00, 0x30, 0x06, 0x00, 0x06, 0x00, + 0xC0, 0x00, 0x60, 0x0C, 0x00, 0x06, 0x00, 0xC0, 0x00, 0x60, 0x0C, 0x00, + 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x18, 0x0C, 0x00, 0x01, 0x80, 0xC0, 0x00, + 0x1F, 0xFC, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x38, 0x18, 0x00, 0x03, 0x01, + 0x80, 0x00, 0x30, 0x18, 0x00, 0x03, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x60, + 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xFF, 0xFC, 0x00, + 0x0F, 0xFF, 0xC0, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x3F, 0xFC, 0xC0, 0x3C, + 0x0F, 0xE0, 0x78, 0x01, 0xF0, 0x70, 0x00, 0x30, 0x70, 0x00, 0x18, 0x70, + 0x00, 0x0C, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, + 0x00, 0x00, 0x0C, 0x00, 0x00, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, + 0x80, 0x00, 0x01, 0x80, 0x1F, 0xFE, 0xC0, 0x0F, 0xFF, 0x60, 0x00, 0x06, + 0x30, 0x00, 0x06, 0x18, 0x00, 0x03, 0x0C, 0x00, 0x01, 0x87, 0x00, 0x00, + 0xC1, 0x80, 0x00, 0xE0, 0xE0, 0x00, 0x60, 0x38, 0x00, 0x70, 0x0F, 0x00, + 0xF8, 0x03, 0xFF, 0xF0, 0x00, 0x3F, 0x80, 0x00, 0x03, 0xFC, 0x1F, 0xE0, + 0x7F, 0x83, 0xFC, 0x03, 0x00, 0x06, 0x00, 0x60, 0x01, 0x80, 0x1C, 0x00, + 0x30, 0x03, 0x00, 0x06, 0x00, 0x60, 0x00, 0xC0, 0x0C, 0x00, 0x38, 0x01, + 0x80, 0x06, 0x00, 0x60, 0x00, 0xC0, 0x0C, 0x00, 0x18, 0x01, 0xFF, 0xFF, + 0x00, 0x3F, 0xFF, 0xC0, 0x06, 0x00, 0x18, 0x01, 0x80, 0x03, 0x00, 0x30, + 0x00, 0x60, 0x06, 0x00, 0x0C, 0x00, 0xC0, 0x03, 0x00, 0x38, 0x00, 0x60, + 0x06, 0x00, 0x0C, 0x00, 0xC0, 0x01, 0x80, 0x18, 0x00, 0x70, 0x03, 0x00, + 0x0C, 0x00, 0xE0, 0x01, 0x80, 0xFF, 0x83, 0xFE, 0x1F, 0xF0, 0x7F, 0xC0, + 0x07, 0xFF, 0xFC, 0x1F, 0xFF, 0xF0, 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, + 0x0C, 0x00, 0x00, 0x70, 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0x18, + 0x00, 0x00, 0x60, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, + 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, 0x00, 0x60, 0x00, 0x01, + 0x80, 0x00, 0x06, 0x00, 0x00, 0x38, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x00, + 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, 0xFF, 0xFF, 0x83, 0xFF, 0xFE, 0x00, + 0x00, 0x0F, 0xFF, 0xF0, 0x01, 0xFF, 0xFF, 0x00, 0x00, 0x0C, 0x00, 0x00, + 0x00, 0xC0, 0x00, 0x00, 0x18, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x18, + 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x38, 0x00, 0x00, 0x03, 0x00, 0x00, + 0x00, 0x30, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x07, + 0x00, 0x20, 0x00, 0x60, 0x06, 0x00, 0x06, 0x00, 0x60, 0x00, 0x60, 0x06, + 0x00, 0x06, 0x00, 0x60, 0x00, 0xC0, 0x0C, 0x00, 0x0C, 0x00, 0xC0, 0x00, + 0xC0, 0x0C, 0x00, 0x18, 0x00, 0xE0, 0x03, 0x00, 0x07, 0x00, 0x70, 0x00, + 0x3C, 0x1C, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x03, + 0xFF, 0x07, 0xF8, 0x3F, 0xF8, 0x3F, 0xC0, 0x18, 0x00, 0x70, 0x00, 0xC0, + 0x07, 0x00, 0x0C, 0x00, 0x60, 0x00, 0x60, 0x0E, 0x00, 0x03, 0x00, 0xE0, + 0x00, 0x18, 0x0C, 0x00, 0x00, 0xC1, 0xC0, 0x00, 0x0C, 0x1C, 0x00, 0x00, + 0x61, 0x80, 0x00, 0x03, 0x3C, 0x00, 0x00, 0x1B, 0x78, 0x00, 0x01, 0xF0, + 0xE0, 0x00, 0x0F, 0x03, 0x80, 0x00, 0x60, 0x0C, 0x00, 0x03, 0x00, 0x70, + 0x00, 0x18, 0x01, 0x80, 0x01, 0x80, 0x0C, 0x00, 0x0C, 0x00, 0x60, 0x00, + 0x60, 0x01, 0x80, 0x03, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x60, 0x01, 0x80, + 0x03, 0x00, 0xFF, 0xE0, 0x1F, 0x87, 0xFF, 0x00, 0x7C, 0x00, 0x07, 0xFF, + 0xE0, 0x03, 0xFF, 0xF0, 0x00, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, + 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x60, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x30, 0x00, 0x00, 0x18, 0x00, 0x00, 0x0C, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, + 0x00, 0xC0, 0x03, 0x00, 0x60, 0x01, 0x80, 0x60, 0x00, 0xC0, 0x30, 0x00, + 0x60, 0x18, 0x00, 0x30, 0x0C, 0x00, 0x30, 0x0E, 0x00, 0x18, 0x06, 0x00, + 0x0C, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0x00, 0x07, 0xF0, 0x00, 0x3F, + 0x07, 0xF0, 0x00, 0x7F, 0x01, 0xB0, 0x00, 0xD8, 0x01, 0xB0, 0x00, 0xD8, + 0x01, 0x98, 0x01, 0x98, 0x01, 0x98, 0x03, 0x30, 0x01, 0x98, 0x03, 0x30, + 0x03, 0x18, 0x06, 0x30, 0x03, 0x1C, 0x0C, 0x30, 0x03, 0x0C, 0x0C, 0x30, + 0x03, 0x0C, 0x18, 0x60, 0x07, 0x0C, 0x30, 0x60, 0x06, 0x0C, 0x30, 0x60, + 0x06, 0x06, 0x60, 0x60, 0x06, 0x06, 0xC0, 0x60, 0x06, 0x06, 0xC0, 0xC0, + 0x0C, 0x07, 0x80, 0xC0, 0x0C, 0x03, 0x00, 0xC0, 0x0C, 0x00, 0x00, 0xC0, + 0x0C, 0x00, 0x01, 0xC0, 0x0C, 0x00, 0x01, 0x80, 0x18, 0x00, 0x01, 0x80, + 0x18, 0x00, 0x01, 0x80, 0x18, 0x00, 0x01, 0x80, 0xFF, 0x80, 0x3F, 0xE0, + 0xFF, 0x80, 0x3F, 0xE0, 0x07, 0xE0, 0x0F, 0xFC, 0x3F, 0x80, 0x3F, 0xF0, + 0x0F, 0x00, 0x06, 0x00, 0x3C, 0x00, 0x10, 0x01, 0x98, 0x00, 0xC0, 0x06, + 0x60, 0x03, 0x00, 0x19, 0xC0, 0x0C, 0x00, 0x63, 0x00, 0x30, 0x01, 0x0C, + 0x01, 0x80, 0x0C, 0x18, 0x06, 0x00, 0x30, 0x60, 0x18, 0x00, 0xC1, 0xC0, + 0x60, 0x03, 0x03, 0x01, 0x00, 0x08, 0x0C, 0x0C, 0x00, 0x60, 0x18, 0x30, + 0x01, 0x80, 0x60, 0xC0, 0x06, 0x01, 0xC3, 0x00, 0x18, 0x03, 0x18, 0x00, + 0xC0, 0x0C, 0x60, 0x03, 0x00, 0x19, 0x80, 0x0C, 0x00, 0x66, 0x00, 0x30, + 0x01, 0xD8, 0x00, 0x80, 0x03, 0xC0, 0x06, 0x00, 0x0F, 0x00, 0xFF, 0xC0, + 0x1C, 0x03, 0xFE, 0x00, 0x70, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x7F, 0xF0, + 0x00, 0xF0, 0x78, 0x03, 0x80, 0x1C, 0x07, 0x00, 0x0E, 0x0E, 0x00, 0x06, + 0x0C, 0x00, 0x06, 0x18, 0x00, 0x07, 0x38, 0x00, 0x03, 0x30, 0x00, 0x03, + 0x60, 0x00, 0x03, 0x60, 0x00, 0x03, 0x60, 0x00, 0x03, 0xC0, 0x00, 0x03, + 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x06, 0xC0, 0x00, 0x06, 0xC0, 0x00, 0x06, + 0xC0, 0x00, 0x0C, 0xC0, 0x00, 0x1C, 0xC0, 0x00, 0x18, 0x60, 0x00, 0x30, + 0x60, 0x00, 0x70, 0x70, 0x00, 0xE0, 0x38, 0x01, 0xC0, 0x1E, 0x0F, 0x00, + 0x0F, 0xFE, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xFF, 0xFC, 0x01, 0xFF, 0xFF, + 0xC0, 0x06, 0x00, 0x78, 0x01, 0x80, 0x06, 0x00, 0xC0, 0x01, 0xC0, 0x30, + 0x00, 0x30, 0x0C, 0x00, 0x0C, 0x03, 0x00, 0x03, 0x00, 0xC0, 0x01, 0xC0, + 0x60, 0x00, 0x60, 0x18, 0x00, 0x30, 0x06, 0x00, 0x18, 0x01, 0x80, 0x3C, + 0x00, 0xFF, 0xFE, 0x00, 0x3F, 0xFC, 0x00, 0x0C, 0x00, 0x00, 0x03, 0x00, + 0x00, 0x00, 0xC0, 0x00, 0x00, 0x60, 0x00, 0x00, 0x18, 0x00, 0x00, 0x06, + 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x60, 0x00, 0x00, 0x30, 0x00, 0x00, + 0xFF, 0xFC, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x7F, + 0xF0, 0x00, 0xF0, 0x78, 0x03, 0x80, 0x1C, 0x07, 0x00, 0x0E, 0x0E, 0x00, + 0x06, 0x0C, 0x00, 0x06, 0x18, 0x00, 0x03, 0x38, 0x00, 0x03, 0x30, 0x00, + 0x03, 0x60, 0x00, 0x03, 0x60, 0x00, 0x03, 0x60, 0x00, 0x03, 0xC0, 0x00, + 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x06, 0xC0, 0x00, 0x06, 0xC0, 0x00, + 0x06, 0xC0, 0x00, 0x0C, 0xC0, 0x00, 0x1C, 0xC0, 0x00, 0x18, 0x60, 0x00, + 0x30, 0x60, 0x00, 0x70, 0x30, 0x00, 0xE0, 0x38, 0x01, 0xC0, 0x0E, 0x0F, + 0x00, 0x07, 0xFE, 0x00, 0x03, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0x1F, 0xF8, + 0x30, 0x3F, 0xFF, 0xF0, 0x78, 0x0F, 0x80, 0x07, 0xFF, 0xFC, 0x01, 0xFF, + 0xFF, 0xC0, 0x06, 0x00, 0x78, 0x01, 0x80, 0x0E, 0x00, 0xC0, 0x01, 0xC0, + 0x30, 0x00, 0x30, 0x0C, 0x00, 0x0C, 0x03, 0x00, 0x03, 0x00, 0xC0, 0x00, + 0xC0, 0x60, 0x00, 0x60, 0x18, 0x00, 0x30, 0x06, 0x00, 0x38, 0x01, 0x80, + 0x3C, 0x00, 0xFF, 0xFC, 0x00, 0x3F, 0xFC, 0x00, 0x0C, 0x07, 0x80, 0x03, + 0x00, 0x70, 0x00, 0xC0, 0x0E, 0x00, 0x60, 0x01, 0x80, 0x18, 0x00, 0x70, + 0x06, 0x00, 0x0C, 0x01, 0x80, 0x03, 0x80, 0x60, 0x00, 0x60, 0x30, 0x00, + 0x1C, 0xFF, 0xE0, 0x07, 0xFF, 0xF8, 0x00, 0xF0, 0x00, 0x1F, 0xC0, 0x00, + 0x7F, 0xF3, 0x00, 0xE0, 0x3B, 0x03, 0x80, 0x0F, 0x07, 0x00, 0x0E, 0x06, + 0x00, 0x06, 0x0C, 0x00, 0x06, 0x0C, 0x00, 0x06, 0x0C, 0x00, 0x00, 0x0C, + 0x00, 0x00, 0x0E, 0x00, 0x00, 0x07, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, + 0x7F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x70, 0x00, 0x00, 0x38, 0x00, + 0x00, 0x18, 0x00, 0x00, 0x18, 0x20, 0x00, 0x18, 0x60, 0x00, 0x18, 0x60, + 0x00, 0x30, 0x60, 0x00, 0x70, 0xF0, 0x00, 0xE0, 0xF8, 0x01, 0xC0, 0xDC, + 0x07, 0x80, 0x8F, 0xFE, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0xFF, 0xFE, 0x3F, + 0xFF, 0xFE, 0x30, 0x18, 0x06, 0x60, 0x18, 0x06, 0x60, 0x18, 0x06, 0x60, + 0x38, 0x0C, 0x60, 0x30, 0x04, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x70, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, + 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x01, + 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0xFF, 0xFE, 0x00, 0xFF, + 0xFC, 0x00, 0x7F, 0xC0, 0xFF, 0xDF, 0xF0, 0x3F, 0xF1, 0x80, 0x00, 0x60, + 0x60, 0x00, 0x30, 0x18, 0x00, 0x0C, 0x06, 0x00, 0x03, 0x03, 0x80, 0x00, + 0xC0, 0xC0, 0x00, 0x30, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x06, 0x03, 0x00, + 0x01, 0x81, 0xC0, 0x00, 0x60, 0x60, 0x00, 0x18, 0x18, 0x00, 0x0C, 0x06, + 0x00, 0x03, 0x01, 0x80, 0x00, 0xC0, 0xC0, 0x00, 0x30, 0x30, 0x00, 0x1C, + 0x0C, 0x00, 0x06, 0x03, 0x00, 0x01, 0x80, 0xC0, 0x00, 0xC0, 0x30, 0x00, + 0x70, 0x0E, 0x00, 0x38, 0x01, 0xC0, 0x1C, 0x00, 0x38, 0x1E, 0x00, 0x07, + 0xFE, 0x00, 0x00, 0x7E, 0x00, 0x00, 0xFF, 0x80, 0x3F, 0xFF, 0xF0, 0x07, + 0xFC, 0xE0, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0x01, 0x80, 0x00, 0x60, 0x30, + 0x00, 0x18, 0x06, 0x00, 0x02, 0x00, 0xC0, 0x00, 0xC0, 0x0C, 0x00, 0x30, + 0x01, 0x80, 0x06, 0x00, 0x30, 0x01, 0x80, 0x06, 0x00, 0x60, 0x00, 0xC0, + 0x0C, 0x00, 0x18, 0x03, 0x00, 0x01, 0x80, 0xC0, 0x00, 0x30, 0x18, 0x00, + 0x06, 0x06, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x18, 0x30, 0x00, 0x03, 0x8C, + 0x00, 0x00, 0x31, 0x80, 0x00, 0x06, 0x60, 0x00, 0x00, 0xD8, 0x00, 0x00, + 0x1B, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x38, 0x00, 0x00, 0xFF, 0xC0, + 0x7F, 0xFF, 0xF8, 0x0F, 0xF8, 0xC0, 0x00, 0x0C, 0x18, 0x00, 0x01, 0x83, + 0x00, 0x00, 0x30, 0x60, 0x08, 0x0C, 0x0C, 0x07, 0x01, 0x81, 0x81, 0xE0, + 0x30, 0x60, 0x2C, 0x0C, 0x0C, 0x0D, 0x81, 0x81, 0x81, 0x30, 0x30, 0x30, + 0x66, 0x0C, 0x06, 0x08, 0xC1, 0x80, 0xC3, 0x0C, 0x30, 0x18, 0x41, 0x8C, + 0x03, 0x18, 0x31, 0x80, 0x62, 0x06, 0x30, 0x0C, 0xC0, 0xCC, 0x03, 0x10, + 0x19, 0x80, 0x66, 0x03, 0x30, 0x0C, 0x80, 0x6C, 0x01, 0xB0, 0x0D, 0x80, + 0x34, 0x01, 0xB0, 0x07, 0x80, 0x3C, 0x00, 0xE0, 0x07, 0x80, 0x1C, 0x00, + 0xF0, 0x00, 0x03, 0xF8, 0x03, 0xF8, 0x1F, 0xC0, 0x3F, 0xC0, 0x30, 0x00, + 0x30, 0x01, 0xC0, 0x03, 0x00, 0x06, 0x00, 0x30, 0x00, 0x18, 0x03, 0x00, + 0x00, 0xE0, 0x30, 0x00, 0x03, 0x03, 0x00, 0x00, 0x1C, 0x30, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x03, 0xB0, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x30, + 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x36, 0x00, 0x00, 0x03, 0x38, 0x00, + 0x00, 0x30, 0xC0, 0x00, 0x03, 0x07, 0x00, 0x00, 0x30, 0x18, 0x00, 0x03, + 0x00, 0x60, 0x00, 0x30, 0x03, 0x80, 0x03, 0x00, 0x0C, 0x00, 0x30, 0x00, + 0x70, 0x03, 0x00, 0x01, 0x80, 0xFF, 0x80, 0xFF, 0x07, 0xFC, 0x07, 0xF8, + 0x00, 0x7F, 0x80, 0x7F, 0x7F, 0x00, 0x7F, 0x1C, 0x00, 0x18, 0x0C, 0x00, + 0x30, 0x0C, 0x00, 0x70, 0x06, 0x00, 0xE0, 0x06, 0x00, 0xC0, 0x03, 0x01, + 0x80, 0x03, 0x03, 0x00, 0x01, 0x86, 0x00, 0x01, 0x8C, 0x00, 0x00, 0xD8, + 0x00, 0x00, 0xF0, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, + 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, + 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, + 0x00, 0xFF, 0xFE, 0x00, 0xFF, 0xFC, 0x00, 0x03, 0xFF, 0xFE, 0x07, 0xFF, + 0xF8, 0x0C, 0x00, 0x30, 0x10, 0x00, 0xC0, 0x60, 0x03, 0x80, 0xC0, 0x0E, + 0x01, 0x80, 0x38, 0x03, 0x00, 0xE0, 0x00, 0x03, 0x80, 0x00, 0x0E, 0x00, + 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x60, 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x60, 0x18, + 0x00, 0xC0, 0x60, 0x01, 0x81, 0x80, 0x02, 0x06, 0x00, 0x0C, 0x18, 0x00, + 0x18, 0x60, 0x00, 0x30, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0x80, 0x01, 0xFE, + 0x03, 0xFC, 0x06, 0x00, 0x08, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x01, + 0x80, 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0x40, 0x01, 0x80, + 0x03, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x10, 0x00, 0x60, 0x00, 0xC0, 0x01, + 0x80, 0x03, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, 0x80, + 0x03, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x20, 0x00, 0xFF, 0x01, + 0xFE, 0x00, 0xC0, 0x30, 0x0E, 0x01, 0x80, 0x60, 0x18, 0x07, 0x00, 0xC0, + 0x30, 0x0C, 0x03, 0x80, 0x60, 0x18, 0x06, 0x00, 0xC0, 0x30, 0x0C, 0x03, + 0x00, 0x60, 0x18, 0x06, 0x01, 0x80, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x18, + 0x06, 0x01, 0x80, 0x60, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x04, 0x01, 0xFE, + 0x03, 0xFC, 0x00, 0x10, 0x00, 0x60, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, + 0x04, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x03, 0x00, 0x06, + 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, + 0x06, 0x00, 0x08, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x01, 0x80, 0x06, + 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x01, 0x80, 0xFF, 0x01, + 0xFE, 0x00, 0x00, 0x10, 0x00, 0x0C, 0x00, 0x07, 0x80, 0x03, 0x60, 0x01, + 0x8C, 0x00, 0xC3, 0x80, 0xE0, 0x60, 0x70, 0x1C, 0x38, 0x03, 0x1C, 0x00, + 0x6E, 0x00, 0x1F, 0x00, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xC3, 0x86, 0x0C, 0x18, 0x70, 0xC0, 0x00, 0x3F, 0x80, 0x0F, 0xFF, 0x80, + 0x78, 0x07, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x18, 0x00, 0x00, 0x60, 0x00, + 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0x38, 0x03, 0xFC, 0xC0, 0x7F, 0xFF, + 0x07, 0xC0, 0x0C, 0x38, 0x00, 0x31, 0xC0, 0x01, 0xCE, 0x00, 0x06, 0x30, + 0x00, 0x18, 0xC0, 0x00, 0xE3, 0x00, 0x07, 0x8E, 0x00, 0x7C, 0x1C, 0x0F, + 0x3F, 0x3F, 0xF0, 0xFC, 0x7F, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x7C, + 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x30, 0x00, 0x00, 0x06, 0x00, 0x00, + 0x00, 0xC0, 0x00, 0x00, 0x10, 0x00, 0x00, 0x06, 0x07, 0xE0, 0x00, 0xC3, + 0xFF, 0x00, 0x19, 0xC0, 0xF0, 0x03, 0x60, 0x07, 0x00, 0xD8, 0x00, 0x60, + 0x1E, 0x00, 0x0E, 0x03, 0x80, 0x00, 0xC0, 0x60, 0x00, 0x18, 0x0C, 0x00, + 0x03, 0x03, 0x00, 0x00, 0x60, 0x60, 0x00, 0x0C, 0x0C, 0x00, 0x01, 0x81, + 0x80, 0x00, 0x60, 0x70, 0x00, 0x0C, 0x0E, 0x00, 0x03, 0x01, 0xC0, 0x00, + 0x60, 0x3C, 0x00, 0x18, 0x05, 0x80, 0x06, 0x01, 0xB8, 0x01, 0x83, 0xF3, + 0xC1, 0xE0, 0x7E, 0x3F, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x3F, 0x00, + 0x07, 0xFF, 0x30, 0x38, 0x0F, 0xC1, 0x80, 0x1F, 0x0C, 0x00, 0x18, 0x60, + 0x00, 0x63, 0x00, 0x01, 0x9C, 0x00, 0x06, 0x60, 0x00, 0x01, 0x80, 0x00, + 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x0C, + 0x00, 0x00, 0x30, 0x00, 0x00, 0xE0, 0x00, 0x01, 0x80, 0x00, 0xC7, 0x00, + 0x0E, 0x0F, 0x01, 0xF0, 0x1F, 0xFF, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x00, + 0x1F, 0x80, 0x00, 0x0F, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x60, 0x00, + 0x00, 0x30, 0x00, 0x00, 0x10, 0x00, 0x00, 0x18, 0x00, 0xFC, 0x0C, 0x01, + 0xFF, 0x86, 0x01, 0xC0, 0xE3, 0x03, 0x80, 0x1B, 0x03, 0x80, 0x05, 0x81, + 0x80, 0x03, 0xC1, 0x80, 0x00, 0xE1, 0x80, 0x00, 0x60, 0xC0, 0x00, 0x30, + 0x60, 0x00, 0x18, 0x60, 0x00, 0x0C, 0x30, 0x00, 0x06, 0x18, 0x00, 0x02, + 0x0C, 0x00, 0x03, 0x06, 0x00, 0x01, 0x83, 0x00, 0x01, 0xC1, 0xC0, 0x01, + 0xE0, 0x60, 0x01, 0xE0, 0x38, 0x01, 0xB0, 0x0F, 0x03, 0x9F, 0x03, 0xFF, + 0x0F, 0x80, 0x7E, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x07, 0xFF, 0x80, 0x78, + 0x0F, 0x03, 0x80, 0x0E, 0x1C, 0x00, 0x18, 0xE0, 0x00, 0x73, 0x00, 0x00, + 0xD8, 0x00, 0x03, 0x60, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x00, 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x38, 0x00, + 0x00, 0x60, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, 0x03, 0x07, 0x80, 0xF8, + 0x0F, 0xFF, 0x80, 0x0F, 0xF0, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, 0xFF, + 0xF0, 0x00, 0xF0, 0x00, 0x00, 0x70, 0x00, 0x00, 0x18, 0x00, 0x00, 0x06, + 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x07, 0xFF, 0xFC, 0x03, + 0xFF, 0xFF, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x60, 0x00, + 0x00, 0x18, 0x00, 0x00, 0x06, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0xC0, + 0x00, 0x00, 0x30, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, + 0x80, 0x00, 0x00, 0x60, 0x00, 0x00, 0x18, 0x00, 0x00, 0x06, 0x00, 0x00, + 0x01, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x0F, 0xFF, 0xFC, 0x03, 0xFF, 0xFE, + 0x00, 0x00, 0x7E, 0x00, 0x00, 0xFF, 0x87, 0xC1, 0xE0, 0xF3, 0xE1, 0xC0, + 0x1B, 0x01, 0xC0, 0x07, 0x81, 0xC0, 0x03, 0xC0, 0xC0, 0x00, 0xE0, 0xC0, + 0x00, 0x60, 0x60, 0x00, 0x30, 0x60, 0x00, 0x18, 0x30, 0x00, 0x0C, 0x18, + 0x00, 0x06, 0x0C, 0x00, 0x06, 0x06, 0x00, 0x03, 0x03, 0x00, 0x03, 0x81, + 0xC0, 0x01, 0xC0, 0x60, 0x01, 0xC0, 0x38, 0x03, 0x60, 0x0F, 0x07, 0x30, + 0x03, 0xFF, 0x18, 0x00, 0x7E, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x06, + 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x01, + 0x80, 0x00, 0x03, 0x80, 0x03, 0xFF, 0x80, 0x01, 0xFF, 0x00, 0x00, 0x07, + 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, + 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x01, 0x83, 0xF0, 0x01, + 0x8F, 0xF8, 0x01, 0x98, 0x1C, 0x03, 0xB0, 0x0E, 0x03, 0x40, 0x06, 0x03, + 0x80, 0x06, 0x03, 0x00, 0x06, 0x03, 0x00, 0x06, 0x07, 0x00, 0x06, 0x06, + 0x00, 0x0E, 0x06, 0x00, 0x0E, 0x06, 0x00, 0x0E, 0x06, 0x00, 0x0C, 0x0C, + 0x00, 0x0C, 0x0C, 0x00, 0x1C, 0x0C, 0x00, 0x1C, 0x0C, 0x00, 0x18, 0x0C, + 0x00, 0x18, 0x18, 0x00, 0x18, 0xFF, 0x01, 0xFF, 0xFF, 0x01, 0xFF, 0x00, + 0x07, 0x00, 0x00, 0xC0, 0x00, 0x38, 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x1F, + 0xF0, 0x00, 0x06, 0x00, 0x01, 0xC0, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, + 0xC0, 0x00, 0x18, 0x00, 0x07, 0x00, 0x00, 0xC0, 0x00, 0x18, 0x00, 0x03, + 0x00, 0x00, 0x60, 0x00, 0x1C, 0x00, 0x03, 0x00, 0x00, 0x60, 0x00, 0x0C, + 0x00, 0x01, 0x80, 0x7F, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x70, 0x00, + 0x07, 0x00, 0x00, 0x70, 0x00, 0x06, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x03, 0xFF, 0xF0, + 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0x60, 0x00, 0x06, + 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, 0xC0, 0x00, 0x0C, 0x00, 0x00, + 0xC0, 0x00, 0x0C, 0x00, 0x01, 0xC0, 0x00, 0x18, 0x00, 0x01, 0x80, 0x00, + 0x18, 0x00, 0x01, 0x80, 0x00, 0x38, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, + 0x03, 0x00, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, + 0x03, 0x80, 0xFF, 0xF0, 0x0F, 0xFC, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xE0, + 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, + 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0xFF, 0x00, 0xC1, + 0xFF, 0x00, 0x80, 0x70, 0x01, 0x80, 0xC0, 0x01, 0x83, 0x80, 0x01, 0x87, + 0x00, 0x01, 0x8C, 0x00, 0x03, 0x38, 0x00, 0x03, 0x70, 0x00, 0x03, 0xF8, + 0x00, 0x03, 0x9C, 0x00, 0x03, 0x0C, 0x00, 0x06, 0x0E, 0x00, 0x06, 0x07, + 0x00, 0x06, 0x03, 0x80, 0x06, 0x01, 0x80, 0x04, 0x00, 0xC0, 0x0C, 0x00, + 0xE0, 0xFC, 0x03, 0xFE, 0xFC, 0x03, 0xFC, 0x01, 0xFF, 0x00, 0x3F, 0xE0, + 0x00, 0x0C, 0x00, 0x03, 0x00, 0x00, 0x60, 0x00, 0x0C, 0x00, 0x01, 0x80, + 0x00, 0x70, 0x00, 0x0C, 0x00, 0x01, 0x80, 0x00, 0x30, 0x00, 0x06, 0x00, + 0x01, 0x80, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0xC0, 0x00, 0x18, 0x00, + 0x06, 0x00, 0x00, 0xC0, 0x00, 0x18, 0x00, 0x03, 0x00, 0x00, 0xE0, 0x00, + 0x18, 0x00, 0x03, 0x00, 0x00, 0x60, 0x00, 0x0C, 0x03, 0xFF, 0xFF, 0xFF, + 0xFF, 0xF0, 0x00, 0x1E, 0x07, 0x81, 0xE7, 0xE1, 0xF8, 0x3D, 0x8E, 0xE3, + 0x81, 0xE0, 0xF8, 0x30, 0x38, 0x1E, 0x06, 0x06, 0x03, 0x80, 0xC1, 0x80, + 0x60, 0x18, 0x30, 0x0C, 0x03, 0x06, 0x01, 0x80, 0x60, 0xC0, 0x30, 0x08, + 0x18, 0x0C, 0x03, 0x06, 0x01, 0x80, 0x60, 0xC0, 0x30, 0x0C, 0x18, 0x06, + 0x01, 0x83, 0x00, 0x80, 0x60, 0x40, 0x30, 0x0C, 0x18, 0x06, 0x01, 0x83, + 0x00, 0xC0, 0x30, 0x60, 0x18, 0x06, 0x7F, 0x03, 0xC1, 0xFF, 0xE0, 0xF8, + 0x3E, 0x00, 0x03, 0xE0, 0x1F, 0x1F, 0xF0, 0x3E, 0x60, 0x70, 0x0F, 0x80, + 0x70, 0x3C, 0x00, 0x60, 0x70, 0x00, 0xC0, 0xC0, 0x01, 0x81, 0x80, 0x03, + 0x07, 0x00, 0x06, 0x0C, 0x00, 0x1C, 0x18, 0x00, 0x30, 0x30, 0x00, 0x60, + 0x60, 0x00, 0xC1, 0xC0, 0x01, 0x83, 0x00, 0x06, 0x06, 0x00, 0x0C, 0x0C, + 0x00, 0x18, 0x18, 0x00, 0x30, 0x70, 0x00, 0x67, 0xFC, 0x07, 0xFF, 0xF0, + 0x0F, 0xE0, 0x00, 0x3F, 0x00, 0x07, 0xFF, 0x00, 0x3C, 0x0F, 0x01, 0xC0, + 0x1C, 0x0C, 0x00, 0x38, 0x60, 0x00, 0x63, 0x00, 0x00, 0xDC, 0x00, 0x03, + 0x60, 0x00, 0x0D, 0x80, 0x00, 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, + 0x00, 0x1B, 0x00, 0x00, 0x6C, 0x00, 0x03, 0xB0, 0x00, 0x0C, 0x60, 0x00, + 0x61, 0xC0, 0x03, 0x03, 0x80, 0x38, 0x0F, 0x03, 0xC0, 0x0F, 0xFE, 0x00, + 0x0F, 0xC0, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x1F, 0x8F, 0xFE, 0x00, 0xFC, + 0xE0, 0x78, 0x00, 0xCC, 0x00, 0xE0, 0x06, 0xC0, 0x03, 0x00, 0x3C, 0x00, + 0x1C, 0x01, 0xC0, 0x00, 0x60, 0x0C, 0x00, 0x03, 0x00, 0xE0, 0x00, 0x18, + 0x06, 0x00, 0x00, 0xC0, 0x30, 0x00, 0x06, 0x01, 0x80, 0x00, 0x30, 0x0C, + 0x00, 0x03, 0x00, 0xE0, 0x00, 0x18, 0x07, 0x00, 0x01, 0x80, 0x3C, 0x00, + 0x1C, 0x01, 0xE0, 0x01, 0xC0, 0x0D, 0x80, 0x1C, 0x00, 0xCF, 0x03, 0xC0, + 0x06, 0x3F, 0xF8, 0x00, 0x30, 0x7F, 0x00, 0x01, 0x80, 0x00, 0x00, 0x0C, + 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, + 0x00, 0x01, 0x80, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x07, 0xFF, 0x00, 0x00, + 0x7F, 0xF8, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7F, 0xE1, 0xF0, 0x78, + 0x1C, 0xFC, 0x38, 0x01, 0xB0, 0x1C, 0x00, 0x2C, 0x0E, 0x00, 0x0F, 0x03, + 0x00, 0x01, 0xC1, 0x80, 0x00, 0x60, 0x60, 0x00, 0x18, 0x30, 0x00, 0x06, + 0x0C, 0x00, 0x01, 0x83, 0x00, 0x00, 0x60, 0xC0, 0x00, 0x30, 0x30, 0x00, + 0x0C, 0x0C, 0x00, 0x07, 0x03, 0x80, 0x03, 0xC0, 0x60, 0x01, 0xB0, 0x1C, + 0x00, 0xD8, 0x03, 0xC0, 0xE6, 0x00, 0x7F, 0xF1, 0x80, 0x07, 0xE0, 0x60, + 0x00, 0x00, 0x18, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0xC0, 0x00, 0x00, 0x30, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x06, 0x00, 0x00, + 0x7F, 0xF8, 0x00, 0x1F, 0xFE, 0x00, 0x07, 0xF0, 0x3E, 0x03, 0xF8, 0x7F, + 0xC0, 0x18, 0xF0, 0x60, 0x0C, 0xE0, 0x00, 0x07, 0xE0, 0x00, 0x03, 0xC0, + 0x00, 0x03, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x60, + 0x00, 0x00, 0x30, 0x00, 0x00, 0x38, 0x00, 0x00, 0x18, 0x00, 0x00, 0x0C, + 0x00, 0x00, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x80, 0x00, 0x01, + 0x80, 0x00, 0x3F, 0xFF, 0xF0, 0x1F, 0xFF, 0xF0, 0x00, 0x00, 0x3F, 0x00, + 0x0F, 0xFE, 0xC0, 0xF0, 0x3E, 0x0E, 0x00, 0x70, 0xE0, 0x01, 0x06, 0x00, + 0x08, 0x30, 0x00, 0x41, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x3F, 0xF0, 0x00, + 0x3F, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x18, 0x00, 0x00, + 0xCC, 0x00, 0x06, 0x60, 0x00, 0x33, 0x00, 0x03, 0x3C, 0x00, 0x71, 0xF8, + 0x0F, 0x0D, 0xFF, 0xF0, 0x01, 0xFC, 0x00, 0x03, 0x00, 0x03, 0x00, 0x01, + 0x80, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x70, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, + 0x0C, 0x00, 0x06, 0x00, 0x06, 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0xC0, + 0x00, 0xE0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x18, 0x00, 0x0C, 0x00, 0x0E, + 0x00, 0x06, 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0xC0, 0x03, 0x38, 0x0F, + 0x9F, 0xFF, 0x03, 0xF8, 0x00, 0xFC, 0x03, 0xFF, 0xE0, 0x1F, 0xC6, 0x00, + 0x0C, 0x30, 0x00, 0x61, 0x80, 0x03, 0x0C, 0x00, 0x18, 0x60, 0x01, 0x86, + 0x00, 0x0C, 0x30, 0x00, 0x61, 0x80, 0x03, 0x0C, 0x00, 0x18, 0x60, 0x01, + 0x86, 0x00, 0x0C, 0x30, 0x00, 0x61, 0x80, 0x03, 0x0C, 0x00, 0x38, 0x60, + 0x07, 0x83, 0x80, 0x6C, 0x1E, 0x1E, 0x7C, 0x7F, 0xE3, 0xE0, 0xF8, 0x00, + 0x00, 0x7F, 0xC0, 0xFF, 0xFF, 0xF0, 0x3F, 0xF1, 0xC0, 0x00, 0xC0, 0x30, + 0x00, 0x60, 0x0C, 0x00, 0x18, 0x03, 0x00, 0x0C, 0x00, 0xE0, 0x06, 0x00, + 0x18, 0x01, 0x80, 0x06, 0x00, 0xC0, 0x01, 0x80, 0x30, 0x00, 0x60, 0x18, + 0x00, 0x0C, 0x0C, 0x00, 0x03, 0x03, 0x00, 0x00, 0xC1, 0x80, 0x00, 0x30, + 0xC0, 0x00, 0x06, 0x30, 0x00, 0x01, 0x98, 0x00, 0x00, 0x6C, 0x00, 0x00, + 0x1F, 0x00, 0x00, 0x07, 0x80, 0x00, 0xFE, 0x00, 0x7F, 0xFF, 0x00, 0x3F, + 0xCC, 0x00, 0x03, 0x06, 0x00, 0x01, 0x83, 0x00, 0x01, 0x81, 0x81, 0x80, + 0xC0, 0xC1, 0xE0, 0x60, 0x60, 0xF0, 0x60, 0x30, 0xD8, 0x30, 0x18, 0x6C, + 0x30, 0x0C, 0x66, 0x18, 0x06, 0x33, 0x18, 0x03, 0x31, 0x8C, 0x01, 0x98, + 0x66, 0x00, 0xD8, 0x36, 0x00, 0x6C, 0x1B, 0x00, 0x3C, 0x0F, 0x00, 0x1E, + 0x07, 0x80, 0x0E, 0x03, 0x80, 0x07, 0x01, 0xC0, 0x00, 0x07, 0xF0, 0x3F, + 0xC3, 0xFC, 0x0F, 0xF0, 0x38, 0x00, 0x60, 0x07, 0x00, 0x70, 0x00, 0xE0, + 0x38, 0x00, 0x18, 0x1C, 0x00, 0x03, 0x0C, 0x00, 0x00, 0xEE, 0x00, 0x00, + 0x1F, 0x00, 0x00, 0x03, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xDC, 0x00, + 0x00, 0xE3, 0x80, 0x00, 0x70, 0x70, 0x00, 0x38, 0x0E, 0x00, 0x18, 0x01, + 0x80, 0x1C, 0x00, 0x30, 0x0E, 0x00, 0x0E, 0x0F, 0xF0, 0x3F, 0xE3, 0xFC, + 0x0F, 0xF8, 0x03, 0xF8, 0x07, 0xF8, 0x3F, 0xC0, 0x3F, 0xC0, 0x60, 0x00, + 0x30, 0x01, 0x80, 0x01, 0x80, 0x0C, 0x00, 0x18, 0x00, 0x60, 0x01, 0x80, + 0x03, 0x80, 0x0C, 0x00, 0x0C, 0x00, 0xC0, 0x00, 0x60, 0x0C, 0x00, 0x03, + 0x00, 0x60, 0x00, 0x0C, 0x06, 0x00, 0x00, 0x60, 0x60, 0x00, 0x03, 0x06, + 0x00, 0x00, 0x1C, 0x30, 0x00, 0x00, 0x63, 0x00, 0x00, 0x03, 0x30, 0x00, + 0x00, 0x19, 0x80, 0x00, 0x00, 0x78, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, + 0x1C, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x60, + 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x03, 0x00, 0x00, + 0x00, 0x30, 0x00, 0x01, 0xFF, 0xF8, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0x00, + 0x07, 0xFF, 0xF8, 0x3F, 0xFF, 0xC3, 0x00, 0x0C, 0x18, 0x00, 0xC0, 0xC0, + 0x0C, 0x00, 0x00, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, + 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x18, 0x00, 0x01, 0x80, + 0x00, 0x18, 0x00, 0x01, 0x80, 0x0C, 0x18, 0x00, 0x61, 0x80, 0x02, 0x1F, + 0xFF, 0xF0, 0xFF, 0xFF, 0x80, 0x00, 0x0E, 0x00, 0x7C, 0x01, 0xC0, 0x03, + 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x01, 0xC0, 0x03, 0x00, + 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x60, 0x01, 0xC0, 0x0F, 0x00, 0xF8, + 0x01, 0xF0, 0x00, 0x30, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x03, 0x80, + 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0xE0, 0x01, 0x80, 0x03, + 0x00, 0x06, 0x00, 0x0E, 0x00, 0x0F, 0x00, 0x0E, 0x00, 0x01, 0x80, 0xC0, + 0x60, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x06, 0x03, 0x01, 0x80, 0xC0, 0x40, + 0x60, 0x30, 0x18, 0x0C, 0x0C, 0x06, 0x03, 0x01, 0x80, 0xC0, 0xC0, 0x60, + 0x30, 0x18, 0x08, 0x0C, 0x06, 0x03, 0x01, 0x80, 0x80, 0xC0, 0x60, 0x30, + 0x00, 0x01, 0xC0, 0x03, 0xC0, 0x01, 0xC0, 0x01, 0x80, 0x03, 0x00, 0x06, + 0x00, 0x0C, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, + 0x0C, 0x00, 0x18, 0x00, 0x38, 0x00, 0x38, 0x00, 0x3E, 0x00, 0x7C, 0x03, + 0xC0, 0x0E, 0x00, 0x18, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, + 0x06, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x03, 0x00, 0x0E, + 0x00, 0xF8, 0x01, 0xC0, 0x00, 0x0F, 0x00, 0x01, 0xFC, 0x03, 0x70, 0xE0, + 0x7E, 0x07, 0x1E, 0xC0, 0x3F, 0x80, 0x01, 0xE0}; + +const GFXglyph FreeMonoOblique24pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 28, 0, 1}, // 0x20 ' ' + {0, 10, 30, 28, 12, -28}, // 0x21 '!' + {38, 16, 14, 28, 10, -28}, // 0x22 '"' + {66, 22, 32, 28, 6, -29}, // 0x23 '#' + {154, 21, 33, 28, 6, -29}, // 0x24 '$' + {241, 22, 29, 28, 6, -27}, // 0x25 '%' + {321, 19, 25, 28, 6, -23}, // 0x26 '&' + {381, 7, 14, 28, 16, -28}, // 0x27 ''' + {394, 11, 34, 28, 16, -27}, // 0x28 '(' + {441, 11, 34, 28, 7, -27}, // 0x29 ')' + {488, 18, 17, 28, 10, -28}, // 0x2A '*' + {527, 22, 22, 28, 6, -23}, // 0x2B '+' + {588, 12, 14, 28, 5, -6}, // 0x2C ',' + {609, 22, 2, 28, 6, -13}, // 0x2D '-' + {615, 7, 6, 28, 11, -4}, // 0x2E '.' + {621, 24, 35, 28, 5, -30}, // 0x2F '/' + {726, 20, 30, 28, 7, -28}, // 0x30 '0' + {801, 17, 29, 28, 6, -28}, // 0x31 '1' + {863, 23, 29, 28, 4, -28}, // 0x32 '2' + {947, 22, 30, 28, 5, -28}, // 0x33 '3' + {1030, 19, 28, 28, 7, -27}, // 0x34 '4' + {1097, 21, 29, 28, 6, -27}, // 0x35 '5' + {1174, 21, 30, 28, 9, -28}, // 0x36 '6' + {1253, 18, 28, 28, 10, -27}, // 0x37 '7' + {1316, 20, 30, 28, 7, -28}, // 0x38 '8' + {1391, 22, 30, 28, 6, -28}, // 0x39 '9' + {1474, 10, 21, 28, 11, -19}, // 0x3A ':' + {1501, 15, 27, 28, 5, -19}, // 0x3B ';' + {1552, 23, 22, 28, 6, -23}, // 0x3C '<' + {1616, 25, 9, 28, 4, -17}, // 0x3D '=' + {1645, 24, 22, 28, 4, -23}, // 0x3E '>' + {1711, 16, 28, 28, 11, -26}, // 0x3F '?' + {1767, 19, 32, 28, 7, -28}, // 0x40 '@' + {1843, 27, 26, 28, 1, -25}, // 0x41 'A' + {1931, 26, 26, 28, 2, -25}, // 0x42 'B' + {2016, 25, 28, 28, 5, -26}, // 0x43 'C' + {2104, 26, 26, 28, 2, -25}, // 0x44 'D' + {2189, 27, 26, 28, 2, -25}, // 0x45 'E' + {2277, 28, 26, 28, 2, -25}, // 0x46 'F' + {2368, 25, 28, 28, 5, -26}, // 0x47 'G' + {2456, 27, 26, 28, 3, -25}, // 0x48 'H' + {2544, 22, 26, 28, 6, -25}, // 0x49 'I' + {2616, 28, 27, 28, 5, -25}, // 0x4A 'J' + {2711, 29, 26, 28, 2, -25}, // 0x4B 'K' + {2806, 25, 26, 28, 3, -25}, // 0x4C 'L' + {2888, 32, 26, 28, 1, -25}, // 0x4D 'M' + {2992, 30, 26, 28, 2, -25}, // 0x4E 'N' + {3090, 24, 28, 28, 5, -26}, // 0x4F 'O' + {3174, 26, 26, 28, 2, -25}, // 0x50 'P' + {3259, 24, 32, 28, 5, -26}, // 0x51 'Q' + {3355, 26, 26, 28, 2, -25}, // 0x52 'R' + {3440, 24, 28, 28, 5, -26}, // 0x53 'S' + {3524, 24, 26, 28, 7, -25}, // 0x54 'T' + {3602, 26, 27, 28, 6, -25}, // 0x55 'U' + {3690, 27, 26, 28, 6, -25}, // 0x56 'V' + {3778, 27, 26, 28, 6, -25}, // 0x57 'W' + {3866, 29, 26, 28, 2, -25}, // 0x58 'X' + {3961, 24, 26, 28, 7, -25}, // 0x59 'Y' + {4039, 23, 26, 28, 5, -25}, // 0x5A 'Z' + {4114, 15, 34, 28, 12, -27}, // 0x5B '[' + {4178, 10, 35, 28, 12, -30}, // 0x5C '\' + {4222, 15, 34, 28, 6, -27}, // 0x5D ']' + {4286, 18, 12, 28, 9, -28}, // 0x5E '^' + {4313, 28, 2, 28, -1, 5}, // 0x5F '_' + {4320, 6, 7, 28, 13, -29}, // 0x60 '`' + {4326, 22, 22, 28, 4, -20}, // 0x61 'a' + {4387, 27, 29, 28, 1, -27}, // 0x62 'b' + {4485, 22, 22, 28, 6, -20}, // 0x63 'c' + {4546, 25, 29, 28, 5, -27}, // 0x64 'd' + {4637, 22, 22, 28, 5, -20}, // 0x65 'e' + {4698, 26, 28, 28, 5, -27}, // 0x66 'f' + {4789, 25, 30, 28, 5, -20}, // 0x67 'g' + {4883, 24, 28, 28, 3, -27}, // 0x68 'h' + {4967, 19, 29, 28, 5, -28}, // 0x69 'i' + {5036, 20, 38, 28, 4, -28}, // 0x6A 'j' + {5131, 24, 28, 28, 3, -27}, // 0x6B 'k' + {5215, 19, 28, 28, 5, -27}, // 0x6C 'l' + {5282, 27, 21, 28, 1, -20}, // 0x6D 'm' + {5353, 23, 21, 28, 3, -20}, // 0x6E 'n' + {5414, 22, 22, 28, 5, -20}, // 0x6F 'o' + {5475, 29, 30, 28, -1, -20}, // 0x70 'p' + {5584, 26, 30, 28, 5, -20}, // 0x71 'q' + {5682, 25, 20, 28, 4, -19}, // 0x72 'r' + {5745, 21, 22, 28, 5, -20}, // 0x73 's' + {5803, 17, 27, 28, 7, -25}, // 0x74 't' + {5861, 21, 21, 28, 6, -19}, // 0x75 'u' + {5917, 26, 20, 28, 5, -19}, // 0x76 'v' + {5982, 25, 20, 28, 6, -19}, // 0x77 'w' + {6045, 26, 20, 28, 3, -19}, // 0x78 'x' + {6110, 29, 29, 28, 1, -19}, // 0x79 'y' + {6216, 21, 20, 28, 5, -19}, // 0x7A 'z' + {6269, 15, 34, 28, 10, -27}, // 0x7B '{' + {6333, 9, 35, 28, 12, -28}, // 0x7C '|' + {6373, 15, 34, 28, 8, -27}, // 0x7D '}' + {6437, 20, 6, 28, 7, -15}}; // 0x7E '~' + +const GFXfont FreeMonoOblique24pt7b PROGMEM = { + (uint8_t *)FreeMonoOblique24pt7bBitmaps, + (GFXglyph *)FreeMonoOblique24pt7bGlyphs, 0x20, 0x7E, 47}; + +// Approx. 7124 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMonoOblique9pt7b.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMonoOblique9pt7b.h new file mode 100644 index 0000000..1e82964 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeMonoOblique9pt7b.h @@ -0,0 +1,189 @@ +#pragma once +#include + +const uint8_t FreeMonoOblique9pt7bBitmaps[] PROGMEM = { + 0x11, 0x22, 0x24, 0x40, 0x00, 0xC0, 0xDE, 0xE5, 0x29, 0x00, 0x09, 0x05, + 0x02, 0x82, 0x47, 0xF8, 0xA0, 0x51, 0xFE, 0x28, 0x14, 0x0A, 0x09, 0x00, + 0x08, 0x1D, 0x23, 0x40, 0x70, 0x1C, 0x02, 0x82, 0x84, 0x78, 0x20, 0x20, + 0x1C, 0x11, 0x08, 0x83, 0x80, 0x18, 0x71, 0xC0, 0x1C, 0x11, 0x08, 0x83, + 0x80, 0x1E, 0x60, 0x81, 0x03, 0x0A, 0x65, 0x46, 0x88, 0xE8, 0xFA, 0x80, + 0x12, 0x24, 0x48, 0x88, 0x88, 0x88, 0x80, 0x01, 0x11, 0x11, 0x11, 0x22, + 0x44, 0x80, 0x10, 0x22, 0x5B, 0xC3, 0x0A, 0x22, 0x00, 0x04, 0x02, 0x02, + 0x1F, 0xF0, 0x80, 0x40, 0x20, 0x00, 0x36, 0x4C, 0x80, 0xFF, 0x80, 0xF0, + 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, + 0x08, 0x08, 0x00, 0x1C, 0x45, 0x0A, 0x18, 0x30, 0x61, 0x42, 0x85, 0x11, + 0xC0, 0x04, 0x38, 0x90, 0x20, 0x81, 0x02, 0x04, 0x08, 0x23, 0xF8, 0x07, + 0x04, 0xC4, 0x20, 0x10, 0x10, 0x30, 0x20, 0x20, 0x60, 0x40, 0x3F, 0x80, + 0x0F, 0x00, 0x40, 0x20, 0x20, 0x60, 0x18, 0x04, 0x02, 0x01, 0x43, 0x1E, + 0x00, 0x03, 0x05, 0x0A, 0x12, 0x22, 0x22, 0x42, 0x7F, 0x04, 0x04, 0x1E, + 0x1F, 0x88, 0x08, 0x05, 0xC3, 0x30, 0x08, 0x04, 0x02, 0x02, 0x42, 0x1E, + 0x00, 0x07, 0x18, 0x20, 0x40, 0x5C, 0xA6, 0xC2, 0x82, 0x82, 0xC4, 0x78, + 0xFF, 0x04, 0x10, 0x20, 0x82, 0x04, 0x10, 0x20, 0x81, 0x00, 0x1E, 0x23, + 0x41, 0x41, 0x62, 0x1C, 0x66, 0x82, 0x82, 0x84, 0x78, 0x1E, 0x23, 0x41, + 0x41, 0x43, 0x65, 0x3A, 0x02, 0x04, 0x18, 0xE0, 0x6C, 0x00, 0x36, 0x18, + 0xC0, 0x00, 0x19, 0x8C, 0xC4, 0x00, 0x01, 0x83, 0x06, 0x0C, 0x06, 0x00, + 0x80, 0x30, 0x04, 0xFF, 0x80, 0x00, 0x1F, 0xF0, 0x20, 0x0C, 0x01, 0x00, + 0x60, 0x20, 0x60, 0xC1, 0x80, 0x3D, 0x8E, 0x08, 0x10, 0xC6, 0x08, 0x00, + 0x01, 0x80, 0x1C, 0x45, 0x0A, 0x79, 0x34, 0x69, 0x4E, 0x81, 0x03, 0x03, + 0xC0, 0x0F, 0x00, 0x60, 0x12, 0x02, 0x40, 0x88, 0x21, 0x07, 0xE1, 0x04, + 0x20, 0x5E, 0x3C, 0x3F, 0x84, 0x11, 0x04, 0x82, 0x3F, 0x88, 0x32, 0x04, + 0x81, 0x60, 0xBF, 0xC0, 0x1E, 0x98, 0xD0, 0x28, 0x08, 0x04, 0x02, 0x01, + 0x00, 0x41, 0x1F, 0x00, 0x3F, 0x0C, 0x22, 0x04, 0x81, 0x20, 0x48, 0x12, + 0x09, 0x02, 0x43, 0x3F, 0x00, 0x3F, 0xC4, 0x11, 0x00, 0x88, 0x3E, 0x08, + 0x82, 0x00, 0x82, 0x60, 0xBF, 0xE0, 0x3F, 0xE2, 0x08, 0x40, 0x11, 0x03, + 0xE0, 0x44, 0x08, 0x01, 0x00, 0x60, 0x1F, 0x00, 0x1E, 0x98, 0xD0, 0x08, + 0x08, 0x04, 0x7A, 0x05, 0x02, 0x41, 0x1F, 0x00, 0x3D, 0xE2, 0x18, 0x42, + 0x08, 0x43, 0xF8, 0x41, 0x08, 0x21, 0x08, 0x21, 0x1E, 0xF0, 0x3F, 0x82, + 0x02, 0x01, 0x00, 0x80, 0x40, 0x20, 0x20, 0x10, 0x7F, 0x00, 0x0F, 0xE0, + 0x20, 0x04, 0x00, 0x80, 0x10, 0x02, 0x20, 0x84, 0x10, 0x84, 0x0F, 0x00, + 0x3C, 0xE2, 0x10, 0x44, 0x11, 0x02, 0xC0, 0x64, 0x08, 0x81, 0x08, 0x61, + 0x1E, 0x38, 0x3E, 0x02, 0x00, 0x80, 0x20, 0x10, 0x04, 0x01, 0x04, 0x42, + 0x10, 0xBF, 0xE0, 0x38, 0x38, 0xC3, 0x05, 0x28, 0x29, 0x42, 0x52, 0x13, + 0x10, 0x99, 0x84, 0x08, 0x20, 0x47, 0x8F, 0x00, 0x70, 0xE6, 0x08, 0xA1, + 0x14, 0x22, 0x48, 0x49, 0x11, 0x22, 0x14, 0x43, 0x1E, 0x20, 0x1E, 0x18, + 0x90, 0x28, 0x18, 0x0C, 0x06, 0x05, 0x02, 0x46, 0x1E, 0x00, 0x3F, 0x84, + 0x31, 0x04, 0x81, 0x20, 0x8F, 0xC2, 0x00, 0x80, 0x60, 0x3E, 0x00, 0x1E, + 0x18, 0x90, 0x28, 0x18, 0x0C, 0x06, 0x05, 0x02, 0x46, 0x1E, 0x08, 0x0F, + 0x44, 0x60, 0x3F, 0x84, 0x31, 0x04, 0x81, 0x20, 0x8F, 0xC2, 0x10, 0x84, + 0x60, 0xBC, 0x10, 0x0F, 0x88, 0xC8, 0x24, 0x01, 0x80, 0x38, 0x05, 0x02, + 0xC2, 0x5E, 0x00, 0xFF, 0xC4, 0x44, 0x02, 0x01, 0x00, 0x80, 0x40, 0x60, + 0x20, 0x7E, 0x00, 0xF1, 0xD0, 0x24, 0x09, 0x02, 0x41, 0xA0, 0x48, 0x12, + 0x04, 0xC6, 0x1F, 0x00, 0xF1, 0xE8, 0x11, 0x02, 0x20, 0x82, 0x20, 0x44, + 0x09, 0x01, 0x40, 0x28, 0x02, 0x00, 0xF1, 0xE8, 0x09, 0x12, 0x26, 0x45, + 0x48, 0xAA, 0x29, 0x45, 0x28, 0xC6, 0x18, 0xC0, 0x38, 0xE2, 0x08, 0x26, + 0x05, 0x00, 0x40, 0x18, 0x04, 0x81, 0x08, 0x41, 0x1C, 0x70, 0xE3, 0xA0, + 0x90, 0x84, 0x81, 0x80, 0x80, 0x40, 0x20, 0x20, 0x7E, 0x00, 0x3F, 0x90, + 0x88, 0x80, 0x80, 0x80, 0x80, 0x80, 0x82, 0x82, 0x7F, 0x00, 0x39, 0x08, + 0x44, 0x21, 0x08, 0x42, 0x21, 0x0E, 0x00, 0x88, 0x44, 0x44, 0x22, 0x22, + 0x11, 0x11, 0x38, 0x42, 0x11, 0x08, 0x42, 0x10, 0x84, 0x2E, 0x00, 0x08, + 0x28, 0x92, 0x18, 0x20, 0xFF, 0xC0, 0xA4, 0x3E, 0x00, 0x80, 0x47, 0xA4, + 0x34, 0x12, 0x18, 0xF7, 0x38, 0x01, 0x00, 0x40, 0x09, 0xE1, 0xC6, 0x20, + 0x44, 0x09, 0x01, 0x30, 0x46, 0x13, 0xBC, 0x00, 0x1F, 0x48, 0x74, 0x0A, + 0x00, 0x80, 0x20, 0x0C, 0x18, 0xF8, 0x01, 0x80, 0x40, 0x23, 0x96, 0x32, + 0x0A, 0x05, 0x02, 0x81, 0x61, 0x1F, 0xE0, 0x1F, 0x30, 0xD0, 0x3F, 0xF8, + 0x04, 0x01, 0x00, 0x7C, 0x07, 0xC3, 0x00, 0x80, 0xFE, 0x10, 0x04, 0x01, + 0x00, 0x40, 0x10, 0x08, 0x0F, 0xE0, 0x1D, 0xD8, 0xC4, 0x12, 0x04, 0x82, + 0x20, 0x8C, 0x61, 0xE8, 0x02, 0x01, 0x07, 0x80, 0x30, 0x04, 0x01, 0x00, + 0x5C, 0x38, 0x88, 0x22, 0x08, 0x82, 0x21, 0x18, 0x4F, 0x3C, 0x04, 0x04, + 0x00, 0x38, 0x08, 0x08, 0x08, 0x08, 0x10, 0x10, 0xFF, 0x01, 0x00, 0x80, + 0x03, 0xF0, 0x10, 0x08, 0x04, 0x02, 0x02, 0x01, 0x00, 0x80, 0x40, 0x47, + 0xC0, 0x38, 0x08, 0x04, 0x02, 0x71, 0x20, 0xA0, 0xA0, 0x68, 0x24, 0x11, + 0x38, 0xE0, 0x3C, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x10, 0x10, + 0xFF, 0x3E, 0xE2, 0x64, 0x88, 0x91, 0x12, 0x24, 0x48, 0x91, 0x17, 0x33, + 0x37, 0x14, 0x4C, 0x24, 0x12, 0x09, 0x08, 0x85, 0xE3, 0x1E, 0x10, 0x90, + 0x30, 0x18, 0x0C, 0x0B, 0x08, 0x78, 0x33, 0xC3, 0x8C, 0x40, 0x88, 0x12, + 0x02, 0x60, 0x8C, 0x31, 0x78, 0x20, 0x08, 0x03, 0xE0, 0x00, 0x1C, 0xD8, + 0xC4, 0x12, 0x04, 0x81, 0x20, 0x4C, 0x21, 0xF8, 0x02, 0x00, 0x81, 0xF0, + 0x73, 0x8E, 0x04, 0x04, 0x02, 0x01, 0x00, 0x81, 0xFC, 0x1F, 0x61, 0x40, + 0x3C, 0x03, 0x81, 0x82, 0xFC, 0x10, 0x63, 0xF9, 0x02, 0x04, 0x10, 0x20, + 0x40, 0x7C, 0xE3, 0x10, 0x90, 0x48, 0x24, 0x22, 0x11, 0x18, 0xF6, 0xF3, + 0xD0, 0x44, 0x10, 0x88, 0x24, 0x09, 0x02, 0x80, 0x40, 0xE1, 0xD0, 0x24, + 0x91, 0x24, 0x55, 0x19, 0x86, 0x61, 0x10, 0x39, 0xC4, 0x20, 0xB0, 0x30, + 0x0C, 0x04, 0x86, 0x13, 0x8E, 0x3C, 0x71, 0x04, 0x10, 0x40, 0x88, 0x09, + 0x00, 0xA0, 0x06, 0x00, 0x40, 0x08, 0x01, 0x00, 0xFC, 0x00, 0x7F, 0x42, + 0x04, 0x08, 0x10, 0x20, 0x42, 0xFE, 0x0C, 0x41, 0x04, 0x30, 0x8C, 0x08, + 0x21, 0x04, 0x10, 0x60, 0x24, 0x94, 0x92, 0x52, 0x40, 0x18, 0x20, 0x82, + 0x10, 0x40, 0xC4, 0x10, 0x82, 0x08, 0xC0, 0x61, 0x24, 0x30}; + +const GFXglyph FreeMonoOblique9pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 11, 0, 1}, // 0x20 ' ' + {0, 4, 11, 11, 4, -10}, // 0x21 '!' + {6, 5, 5, 11, 4, -10}, // 0x22 '"' + {10, 9, 12, 11, 2, -10}, // 0x23 '#' + {24, 8, 12, 11, 3, -10}, // 0x24 '$' + {36, 9, 11, 11, 2, -10}, // 0x25 '%' + {49, 7, 10, 11, 2, -9}, // 0x26 '&' + {58, 2, 5, 11, 6, -10}, // 0x27 ''' + {60, 4, 13, 11, 6, -10}, // 0x28 '(' + {67, 4, 13, 11, 3, -10}, // 0x29 ')' + {74, 7, 7, 11, 4, -10}, // 0x2A '*' + {81, 9, 8, 11, 2, -8}, // 0x2B '+' + {90, 4, 5, 11, 2, -1}, // 0x2C ',' + {93, 9, 1, 11, 2, -5}, // 0x2D '-' + {95, 2, 2, 11, 4, -1}, // 0x2E '.' + {96, 9, 13, 11, 2, -11}, // 0x2F '/' + {111, 7, 11, 11, 3, -10}, // 0x30 '0' + {121, 7, 11, 11, 2, -10}, // 0x31 '1' + {131, 9, 11, 11, 2, -10}, // 0x32 '2' + {144, 9, 11, 11, 2, -10}, // 0x33 '3' + {157, 8, 11, 11, 2, -10}, // 0x34 '4' + {168, 9, 11, 11, 2, -10}, // 0x35 '5' + {181, 8, 11, 11, 3, -10}, // 0x36 '6' + {192, 7, 11, 11, 4, -10}, // 0x37 '7' + {202, 8, 11, 11, 3, -10}, // 0x38 '8' + {213, 8, 11, 11, 3, -10}, // 0x39 '9' + {224, 3, 8, 11, 4, -7}, // 0x3A ':' + {227, 5, 11, 11, 2, -7}, // 0x3B ';' + {234, 9, 8, 11, 2, -8}, // 0x3C '<' + {243, 9, 4, 11, 2, -6}, // 0x3D '=' + {248, 9, 8, 11, 2, -8}, // 0x3E '>' + {257, 7, 10, 11, 4, -9}, // 0x3F '?' + {266, 7, 12, 11, 3, -10}, // 0x40 '@' + {277, 11, 10, 11, 0, -9}, // 0x41 'A' + {291, 10, 10, 11, 1, -9}, // 0x42 'B' + {304, 9, 10, 11, 2, -9}, // 0x43 'C' + {316, 10, 10, 11, 1, -9}, // 0x44 'D' + {329, 10, 10, 11, 1, -9}, // 0x45 'E' + {342, 11, 10, 11, 1, -9}, // 0x46 'F' + {356, 9, 10, 11, 2, -9}, // 0x47 'G' + {368, 11, 10, 11, 1, -9}, // 0x48 'H' + {382, 9, 10, 11, 2, -9}, // 0x49 'I' + {394, 11, 10, 11, 2, -9}, // 0x4A 'J' + {408, 11, 10, 11, 1, -9}, // 0x4B 'K' + {422, 10, 10, 11, 1, -9}, // 0x4C 'L' + {435, 13, 10, 11, 0, -9}, // 0x4D 'M' + {452, 11, 10, 11, 1, -9}, // 0x4E 'N' + {466, 9, 10, 11, 2, -9}, // 0x4F 'O' + {478, 10, 10, 11, 1, -9}, // 0x50 'P' + {491, 9, 13, 11, 2, -9}, // 0x51 'Q' + {506, 10, 10, 11, 1, -9}, // 0x52 'R' + {519, 9, 10, 11, 2, -9}, // 0x53 'S' + {531, 9, 10, 11, 3, -9}, // 0x54 'T' + {543, 10, 10, 11, 2, -9}, // 0x55 'U' + {556, 11, 10, 11, 2, -9}, // 0x56 'V' + {570, 11, 10, 11, 2, -9}, // 0x57 'W' + {584, 11, 10, 11, 1, -9}, // 0x58 'X' + {598, 9, 10, 11, 3, -9}, // 0x59 'Y' + {610, 9, 10, 11, 2, -9}, // 0x5A 'Z' + {622, 5, 13, 11, 5, -10}, // 0x5B '[' + {631, 4, 14, 11, 4, -11}, // 0x5C '\' + {638, 5, 13, 11, 2, -10}, // 0x5D ']' + {647, 7, 5, 11, 3, -10}, // 0x5E '^' + {652, 11, 1, 11, 0, 2}, // 0x5F '_' + {654, 2, 3, 11, 5, -11}, // 0x60 '`' + {655, 9, 8, 11, 2, -7}, // 0x61 'a' + {664, 11, 11, 11, 0, -10}, // 0x62 'b' + {680, 10, 8, 11, 2, -7}, // 0x63 'c' + {690, 9, 11, 11, 2, -10}, // 0x64 'd' + {703, 9, 8, 11, 2, -7}, // 0x65 'e' + {712, 10, 11, 11, 2, -10}, // 0x66 'f' + {726, 10, 11, 11, 2, -7}, // 0x67 'g' + {740, 10, 11, 11, 1, -10}, // 0x68 'h' + {754, 8, 11, 11, 2, -10}, // 0x69 'i' + {765, 9, 14, 11, 1, -10}, // 0x6A 'j' + {781, 9, 11, 11, 1, -10}, // 0x6B 'k' + {794, 8, 11, 11, 2, -10}, // 0x6C 'l' + {805, 11, 8, 11, 0, -7}, // 0x6D 'm' + {816, 9, 8, 11, 1, -7}, // 0x6E 'n' + {825, 9, 8, 11, 2, -7}, // 0x6F 'o' + {834, 11, 11, 11, 0, -7}, // 0x70 'p' + {850, 10, 11, 11, 2, -7}, // 0x71 'q' + {864, 9, 8, 11, 2, -7}, // 0x72 'r' + {873, 8, 8, 11, 2, -7}, // 0x73 's' + {881, 7, 10, 11, 2, -9}, // 0x74 't' + {890, 9, 8, 11, 2, -7}, // 0x75 'u' + {899, 10, 8, 11, 2, -7}, // 0x76 'v' + {909, 10, 8, 11, 2, -7}, // 0x77 'w' + {919, 10, 8, 11, 1, -7}, // 0x78 'x' + {929, 12, 11, 11, 0, -7}, // 0x79 'y' + {946, 8, 8, 11, 2, -7}, // 0x7A 'z' + {954, 6, 13, 11, 4, -10}, // 0x7B '{' + {964, 3, 12, 11, 5, -9}, // 0x7C '|' + {969, 6, 13, 11, 3, -10}, // 0x7D '}' + {979, 7, 3, 11, 3, -6}}; // 0x7E '~' + +const GFXfont FreeMonoOblique9pt7b PROGMEM = { + (uint8_t *)FreeMonoOblique9pt7bBitmaps, + (GFXglyph *)FreeMonoOblique9pt7bGlyphs, 0x20, 0x7E, 18}; + +// Approx. 1654 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSans12pt7b.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSans12pt7b.h new file mode 100644 index 0000000..6e77392 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSans12pt7b.h @@ -0,0 +1,272 @@ +#pragma once +#include + +const uint8_t FreeSans12pt7bBitmaps[] PROGMEM = { + 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xCF, 0x3C, 0xF3, 0x8A, 0x20, 0x06, 0x30, + 0x31, 0x03, 0x18, 0x18, 0xC7, 0xFF, 0xBF, 0xFC, 0x31, 0x03, 0x18, 0x18, + 0xC7, 0xFF, 0xBF, 0xFC, 0x31, 0x01, 0x18, 0x18, 0xC0, 0xC6, 0x06, 0x30, + 0x04, 0x03, 0xE1, 0xFF, 0x72, 0x6C, 0x47, 0x88, 0xF1, 0x07, 0x20, 0x7E, + 0x03, 0xF0, 0x17, 0x02, 0x3C, 0x47, 0x88, 0xF1, 0x1B, 0x26, 0x7F, 0xC3, + 0xE0, 0x10, 0x02, 0x00, 0x00, 0x06, 0x03, 0xC0, 0x40, 0x7E, 0x0C, 0x0E, + 0x70, 0x80, 0xC3, 0x18, 0x0C, 0x31, 0x00, 0xE7, 0x30, 0x07, 0xE6, 0x00, + 0x3C, 0x40, 0x00, 0x0C, 0x7C, 0x00, 0x8F, 0xE0, 0x19, 0xC7, 0x01, 0x18, + 0x30, 0x31, 0x83, 0x02, 0x1C, 0x70, 0x40, 0xFE, 0x04, 0x07, 0xC0, 0x0F, + 0x00, 0x7E, 0x03, 0x9C, 0x0C, 0x30, 0x30, 0xC0, 0xE7, 0x01, 0xF8, 0x03, + 0x80, 0x3E, 0x01, 0xCC, 0x6E, 0x19, 0xB0, 0x7C, 0xC0, 0xF3, 0x03, 0xCE, + 0x1F, 0x9F, 0xE6, 0x1E, 0x1C, 0xFF, 0xA0, 0x08, 0x8C, 0x66, 0x31, 0x98, + 0xC6, 0x31, 0x8C, 0x63, 0x08, 0x63, 0x08, 0x61, 0x0C, 0x20, 0x82, 0x18, + 0xC3, 0x18, 0xC3, 0x18, 0xC6, 0x31, 0x8C, 0x62, 0x31, 0x88, 0xC4, 0x62, + 0x00, 0x10, 0x23, 0x5B, 0xE3, 0x8D, 0x91, 0x00, 0x0C, 0x03, 0x00, 0xC0, + 0x30, 0xFF, 0xFF, 0xF0, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0xF5, 0x60, + 0xFF, 0xF0, 0xF0, 0x02, 0x0C, 0x10, 0x20, 0xC1, 0x02, 0x0C, 0x10, 0x20, + 0xC1, 0x02, 0x0C, 0x10, 0x20, 0xC1, 0x00, 0x1F, 0x07, 0xF1, 0xC7, 0x30, + 0x6E, 0x0F, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, + 0x0E, 0xC1, 0x9C, 0x71, 0xFC, 0x1F, 0x00, 0x08, 0xCF, 0xFF, 0x8C, 0x63, + 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0x1F, 0x0F, 0xF9, 0x87, 0x60, 0x7C, + 0x06, 0x00, 0xC0, 0x18, 0x07, 0x01, 0xC0, 0xF0, 0x78, 0x1C, 0x06, 0x00, + 0x80, 0x30, 0x07, 0xFF, 0xFF, 0xE0, 0x3F, 0x0F, 0xF3, 0x87, 0x60, 0x6C, + 0x0C, 0x01, 0x80, 0x70, 0x7C, 0x0F, 0x80, 0x18, 0x01, 0x80, 0x3C, 0x07, + 0x80, 0xD8, 0x73, 0xFC, 0x1F, 0x00, 0x01, 0x80, 0x70, 0x0E, 0x03, 0xC0, + 0xD8, 0x1B, 0x06, 0x61, 0x8C, 0x21, 0x8C, 0x33, 0x06, 0x7F, 0xFF, 0xFE, + 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x3F, 0xCF, 0xF9, 0x80, 0x30, 0x06, + 0x00, 0xDE, 0x1F, 0xE7, 0x0E, 0x00, 0xE0, 0x0C, 0x01, 0x80, 0x30, 0x07, + 0x81, 0xF8, 0x73, 0xFC, 0x1F, 0x00, 0x0F, 0x07, 0xF9, 0xC3, 0x30, 0x74, + 0x01, 0x80, 0x33, 0xC7, 0xFE, 0xF0, 0xDC, 0x1F, 0x01, 0xE0, 0x3C, 0x06, + 0xC1, 0xDC, 0x71, 0xFC, 0x1F, 0x00, 0xFF, 0xFF, 0xFC, 0x01, 0x00, 0x60, + 0x18, 0x02, 0x00, 0xC0, 0x30, 0x06, 0x01, 0x80, 0x30, 0x04, 0x01, 0x80, + 0x30, 0x06, 0x01, 0x80, 0x30, 0x00, 0x1F, 0x07, 0xF1, 0xC7, 0x30, 0x66, + 0x0C, 0xC1, 0x8C, 0x61, 0xFC, 0x3F, 0x8E, 0x3B, 0x01, 0xE0, 0x3C, 0x07, + 0x80, 0xD8, 0x31, 0xFC, 0x1F, 0x00, 0x1F, 0x07, 0xF1, 0xC7, 0x70, 0x6C, + 0x07, 0x80, 0xF0, 0x1E, 0x07, 0x61, 0xEF, 0xFC, 0x79, 0x80, 0x30, 0x05, + 0x81, 0x98, 0x73, 0xFC, 0x1E, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0xF0, 0x00, + 0x0F, 0x56, 0x00, 0x00, 0x07, 0x01, 0xE0, 0xF8, 0x3C, 0x0F, 0x00, 0xE0, + 0x07, 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xF0, 0x01, 0xFF, 0xFF, 0xFF, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x0E, 0x00, 0x78, 0x01, 0xF0, 0x07, + 0xC0, 0x0F, 0x00, 0x70, 0x1E, 0x0F, 0x03, 0xC0, 0xF0, 0x08, 0x00, 0x1F, + 0x1F, 0xEE, 0x1B, 0x03, 0xC0, 0xC0, 0x30, 0x0C, 0x06, 0x03, 0x81, 0xC0, + 0xE0, 0x30, 0x0C, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x03, 0x00, 0x00, 0xFE, + 0x00, 0x0F, 0xFE, 0x00, 0xF0, 0x3E, 0x07, 0x00, 0x3C, 0x38, 0x00, 0x30, + 0xC1, 0xE0, 0x66, 0x0F, 0xD9, 0xD8, 0x61, 0xC3, 0xC3, 0x07, 0x0F, 0x1C, + 0x1C, 0x3C, 0x60, 0x60, 0xF1, 0x81, 0x83, 0xC6, 0x06, 0x1B, 0x18, 0x38, + 0xEE, 0x71, 0xE7, 0x18, 0xFD, 0xF8, 0x71, 0xE7, 0xC0, 0xE0, 0x00, 0x01, + 0xE0, 0x00, 0x01, 0xFF, 0xC0, 0x01, 0xFC, 0x00, 0x03, 0xC0, 0x03, 0xC0, + 0x03, 0xC0, 0x07, 0xE0, 0x06, 0x60, 0x06, 0x60, 0x0E, 0x70, 0x0C, 0x30, + 0x0C, 0x30, 0x1C, 0x38, 0x18, 0x18, 0x1F, 0xF8, 0x3F, 0xFC, 0x30, 0x1C, + 0x30, 0x0C, 0x70, 0x0E, 0x60, 0x06, 0x60, 0x06, 0xFF, 0xC7, 0xFF, 0x30, + 0x19, 0x80, 0x6C, 0x03, 0x60, 0x1B, 0x00, 0xD8, 0x0C, 0xFF, 0xC7, 0xFF, + 0x30, 0x0D, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x06, 0xFF, 0xF7, + 0xFE, 0x00, 0x07, 0xE0, 0x3F, 0xF0, 0xE0, 0x73, 0x80, 0x66, 0x00, 0x6C, + 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, 0x06, 0x00, + 0x06, 0x00, 0x6C, 0x00, 0xDC, 0x03, 0x1E, 0x0E, 0x1F, 0xF8, 0x0F, 0xC0, + 0xFF, 0x83, 0xFF, 0x8C, 0x07, 0x30, 0x0E, 0xC0, 0x1B, 0x00, 0x7C, 0x00, + 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x1F, 0x00, + 0x6C, 0x03, 0xB0, 0x1C, 0xFF, 0xE3, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xC0, + 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xFF, 0xEF, 0xFE, 0xC0, + 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xFF, 0xDF, + 0xFB, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x00, + 0x07, 0xF0, 0x1F, 0xFC, 0x3C, 0x1E, 0x70, 0x06, 0x60, 0x03, 0xE0, 0x00, + 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x7F, 0xC0, 0x7F, 0xC0, 0x03, 0xC0, 0x03, + 0x60, 0x03, 0x60, 0x07, 0x30, 0x0F, 0x3C, 0x1F, 0x1F, 0xFB, 0x07, 0xE1, + 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, + 0x03, 0xFF, 0xFF, 0xFF, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, + 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x01, + 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x80, 0xC0, 0x60, + 0x3C, 0x1E, 0x0F, 0x07, 0xC7, 0x7F, 0x1F, 0x00, 0xC0, 0x3B, 0x01, 0xCC, + 0x0E, 0x30, 0x70, 0xC3, 0x83, 0x1C, 0x0C, 0xE0, 0x33, 0x80, 0xDE, 0x03, + 0xDC, 0x0E, 0x38, 0x30, 0x60, 0xC1, 0xC3, 0x03, 0x8C, 0x06, 0x30, 0x1C, + 0xC0, 0x3B, 0x00, 0x60, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, + 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, + 0xFF, 0xFF, 0xF0, 0xE0, 0x07, 0xE0, 0x07, 0xF0, 0x0F, 0xF0, 0x0F, 0xD0, + 0x0F, 0xD8, 0x1B, 0xD8, 0x1B, 0xD8, 0x1B, 0xCC, 0x33, 0xCC, 0x33, 0xCC, + 0x33, 0xC6, 0x63, 0xC6, 0x63, 0xC6, 0x63, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, + 0xC3, 0xC1, 0x83, 0xE0, 0x1F, 0x00, 0xFC, 0x07, 0xE0, 0x3D, 0x81, 0xEE, + 0x0F, 0x30, 0x79, 0xC3, 0xC6, 0x1E, 0x18, 0xF0, 0xE7, 0x83, 0x3C, 0x1D, + 0xE0, 0x6F, 0x01, 0xF8, 0x0F, 0xC0, 0x3E, 0x01, 0xC0, 0x03, 0xE0, 0x0F, + 0xFC, 0x0F, 0x07, 0x86, 0x00, 0xC6, 0x00, 0x33, 0x00, 0x1B, 0x00, 0x07, + 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x36, 0x00, + 0x33, 0x00, 0x18, 0xC0, 0x18, 0x78, 0x3C, 0x1F, 0xFC, 0x03, 0xF8, 0x00, + 0xFF, 0x8F, 0xFE, 0xC0, 0x6C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x07, + 0xFF, 0xEF, 0xFC, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, + 0xC0, 0x0C, 0x00, 0x03, 0xE0, 0x0F, 0xFC, 0x0F, 0x07, 0x86, 0x00, 0xC6, + 0x00, 0x33, 0x00, 0x1B, 0x00, 0x07, 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x00, + 0xF0, 0x00, 0x78, 0x00, 0x36, 0x00, 0x33, 0x01, 0x98, 0xC0, 0xFC, 0x78, + 0x3C, 0x1F, 0xFF, 0x03, 0xF9, 0x80, 0x00, 0x40, 0xFF, 0xC3, 0xFF, 0xCC, + 0x03, 0xB0, 0x06, 0xC0, 0x1B, 0x00, 0x6C, 0x01, 0xB0, 0x0C, 0xFF, 0xE3, + 0xFF, 0xCC, 0x03, 0xB0, 0x06, 0xC0, 0x1B, 0x00, 0x6C, 0x01, 0xB0, 0x06, + 0xC0, 0x1B, 0x00, 0x70, 0x0F, 0xE0, 0x7F, 0xC3, 0x83, 0x9C, 0x07, 0x60, + 0x0D, 0x80, 0x06, 0x00, 0x1E, 0x00, 0x3F, 0x80, 0x3F, 0xC0, 0x0F, 0x80, + 0x07, 0xC0, 0x0F, 0x00, 0x3E, 0x00, 0xDE, 0x0E, 0x3F, 0xF0, 0x3F, 0x80, + 0xFF, 0xFF, 0xFF, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, + 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, + 0x06, 0x00, 0x60, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, + 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, + 0xE0, 0x0F, 0x80, 0xEE, 0x0E, 0x3F, 0xE0, 0x7C, 0x00, 0x60, 0x06, 0xC0, + 0x1D, 0xC0, 0x31, 0x80, 0x63, 0x01, 0xC7, 0x03, 0x06, 0x06, 0x0C, 0x1C, + 0x1C, 0x30, 0x18, 0x60, 0x31, 0xC0, 0x73, 0x00, 0x66, 0x00, 0xDC, 0x01, + 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x00, 0xE0, 0x30, 0x1D, 0x80, 0xE0, + 0x76, 0x07, 0x81, 0xD8, 0x1E, 0x06, 0x70, 0x7C, 0x18, 0xC1, 0xB0, 0xE3, + 0x0C, 0xC3, 0x8C, 0x33, 0x0C, 0x38, 0xC6, 0x30, 0x67, 0x18, 0xC1, 0x98, + 0x67, 0x06, 0x61, 0xD8, 0x1D, 0x83, 0x60, 0x3C, 0x0D, 0x80, 0xF0, 0x3E, + 0x03, 0xC0, 0x70, 0x0F, 0x01, 0xC0, 0x18, 0x07, 0x00, 0x70, 0x0E, 0x60, + 0x38, 0xE0, 0x60, 0xE1, 0xC0, 0xC3, 0x01, 0xCC, 0x01, 0xF8, 0x01, 0xE0, + 0x03, 0x80, 0x07, 0x80, 0x1F, 0x00, 0x33, 0x00, 0xE7, 0x03, 0x86, 0x06, + 0x0E, 0x1C, 0x0E, 0x70, 0x0C, 0xC0, 0x1C, 0x60, 0x06, 0x70, 0x0E, 0x30, + 0x1C, 0x38, 0x18, 0x1C, 0x38, 0x0C, 0x30, 0x0E, 0x70, 0x06, 0x60, 0x03, + 0xC0, 0x03, 0xC0, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, + 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0xFF, 0xFF, 0xFF, 0xC0, 0x0E, + 0x00, 0xE0, 0x0E, 0x00, 0x60, 0x07, 0x00, 0x70, 0x07, 0x00, 0x30, 0x03, + 0x80, 0x38, 0x03, 0x80, 0x18, 0x01, 0xC0, 0x1C, 0x00, 0xFF, 0xFF, 0xFF, + 0xC0, 0xFF, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCF, + 0xF0, 0x81, 0x81, 0x02, 0x06, 0x04, 0x08, 0x18, 0x10, 0x20, 0x60, 0x40, + 0x81, 0x81, 0x02, 0x06, 0x04, 0xFF, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, + 0x33, 0x33, 0x33, 0x3F, 0xF0, 0x0C, 0x0E, 0x05, 0x86, 0xC3, 0x21, 0x19, + 0x8C, 0x83, 0xC1, 0x80, 0xFF, 0xFE, 0xE3, 0x8C, 0x30, 0x3F, 0x07, 0xF8, + 0xE1, 0xCC, 0x0C, 0x00, 0xC0, 0x1C, 0x3F, 0xCF, 0x8C, 0xC0, 0xCC, 0x0C, + 0xE3, 0xC7, 0xEF, 0x3C, 0x70, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, + 0x0C, 0xF8, 0xDF, 0xCF, 0x0E, 0xE0, 0x7C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, + 0x3C, 0x03, 0xE0, 0x6F, 0x0E, 0xDF, 0xCC, 0xF8, 0x1F, 0x0F, 0xE7, 0x1B, + 0x83, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x38, 0x37, 0x1C, 0xFE, 0x1F, + 0x00, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x3C, 0xCF, 0xFB, 0x8F, + 0xE0, 0xF8, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF8, 0x3B, 0x8F, 0x3F, + 0x63, 0xCC, 0x1F, 0x07, 0xF1, 0xC7, 0x70, 0x3C, 0x07, 0xFF, 0xFF, 0xFE, + 0x00, 0xC0, 0x1C, 0x0D, 0xC3, 0x1F, 0xE1, 0xF0, 0x3B, 0xD8, 0xC6, 0x7F, + 0xEC, 0x63, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x00, 0x1E, 0x67, 0xFD, 0xC7, + 0xF0, 0x7C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x7C, 0x1D, 0xC7, 0x9F, + 0xB1, 0xE6, 0x00, 0xC0, 0x3E, 0x0E, 0x7F, 0xC7, 0xE0, 0xC0, 0x30, 0x0C, + 0x03, 0x00, 0xC0, 0x33, 0xCD, 0xFB, 0xC7, 0xE0, 0xF0, 0x3C, 0x0F, 0x03, + 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x30, 0xF0, 0x3F, 0xFF, 0xFF, + 0xF0, 0x33, 0x00, 0x03, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x3F, + 0xE0, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, 0x83, 0x30, 0xC6, 0x30, + 0xCC, 0x1B, 0x83, 0xF0, 0x77, 0x0C, 0x61, 0x8E, 0x30, 0xE6, 0x0C, 0xC1, + 0xD8, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xCF, 0x1F, 0x6F, 0xDF, 0xFC, + 0x78, 0xFC, 0x18, 0x3C, 0x0C, 0x1E, 0x06, 0x0F, 0x03, 0x07, 0x81, 0x83, + 0xC0, 0xC1, 0xE0, 0x60, 0xF0, 0x30, 0x78, 0x18, 0x3C, 0x0C, 0x18, 0xCF, + 0x37, 0xEF, 0x1F, 0x83, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, + 0x0F, 0x03, 0xC0, 0xC0, 0x1F, 0x07, 0xF1, 0xC7, 0x70, 0x7C, 0x07, 0x80, + 0xF0, 0x1E, 0x03, 0xC0, 0x7C, 0x1D, 0xC7, 0x1F, 0xC1, 0xF0, 0xCF, 0x8D, + 0xFC, 0xF0, 0xEE, 0x06, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3E, + 0x07, 0xF0, 0xEF, 0xFC, 0xCF, 0x8C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x00, + 0x1E, 0x67, 0xFD, 0xC7, 0xF0, 0x7C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, + 0x7C, 0x1D, 0xC7, 0x9F, 0xF1, 0xE6, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, + 0xCF, 0x7F, 0x38, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC0, 0x3E, 0x1F, + 0xEE, 0x1B, 0x00, 0xC0, 0x3C, 0x07, 0xF0, 0x3E, 0x01, 0xF0, 0x3E, 0x1D, + 0xFE, 0x3E, 0x00, 0x63, 0x19, 0xFF, 0xB1, 0x8C, 0x63, 0x18, 0xC6, 0x31, + 0xE7, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, + 0xF0, 0x7E, 0x3D, 0xFB, 0x3C, 0xC0, 0xE0, 0x66, 0x06, 0x60, 0x67, 0x0C, + 0x30, 0xC3, 0x0C, 0x39, 0x81, 0x98, 0x19, 0x81, 0xF0, 0x0F, 0x00, 0xE0, + 0x0E, 0x00, 0xC1, 0xC1, 0xB0, 0xE1, 0xD8, 0x70, 0xCC, 0x2C, 0x66, 0x36, + 0x31, 0x9B, 0x18, 0xCD, 0x98, 0x64, 0x6C, 0x16, 0x36, 0x0F, 0x1A, 0x07, + 0x8F, 0x03, 0x83, 0x80, 0xC1, 0xC0, 0x60, 0xEE, 0x18, 0xC6, 0x0C, 0xC1, + 0xF0, 0x1C, 0x01, 0x80, 0x78, 0x1B, 0x03, 0x30, 0xC7, 0x30, 0x66, 0x06, + 0xE0, 0x6C, 0x0D, 0x83, 0x38, 0x63, 0x0C, 0x63, 0x0E, 0x60, 0xCC, 0x1B, + 0x03, 0x60, 0x3C, 0x07, 0x00, 0xE0, 0x18, 0x03, 0x00, 0xE0, 0x78, 0x0E, + 0x00, 0xFF, 0xFF, 0xF0, 0x18, 0x0C, 0x07, 0x03, 0x81, 0xC0, 0x60, 0x30, + 0x18, 0x0E, 0x03, 0xFF, 0xFF, 0xC0, 0x19, 0xCC, 0x63, 0x18, 0xC6, 0x31, + 0x99, 0x86, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x1C, 0x60, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFC, 0xC7, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x0C, 0x33, 0x31, + 0x8C, 0x63, 0x18, 0xC6, 0x73, 0x00, 0x70, 0x3E, 0x09, 0xE4, 0x1F, 0x03, + 0x80}; + +const GFXglyph FreeSans12pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 6, 0, 1}, // 0x20 ' ' + {0, 2, 18, 8, 3, -17}, // 0x21 '!' + {5, 6, 6, 8, 1, -16}, // 0x22 '"' + {10, 13, 16, 13, 0, -15}, // 0x23 '#' + {36, 11, 20, 13, 1, -17}, // 0x24 '$' + {64, 20, 17, 21, 1, -16}, // 0x25 '%' + {107, 14, 17, 16, 1, -16}, // 0x26 '&' + {137, 2, 6, 5, 1, -16}, // 0x27 ''' + {139, 5, 23, 8, 2, -17}, // 0x28 '(' + {154, 5, 23, 8, 1, -17}, // 0x29 ')' + {169, 7, 7, 9, 1, -17}, // 0x2A '*' + {176, 10, 11, 14, 2, -10}, // 0x2B '+' + {190, 2, 6, 7, 2, -1}, // 0x2C ',' + {192, 6, 2, 8, 1, -7}, // 0x2D '-' + {194, 2, 2, 6, 2, -1}, // 0x2E '.' + {195, 7, 18, 7, 0, -17}, // 0x2F '/' + {211, 11, 17, 13, 1, -16}, // 0x30 '0' + {235, 5, 17, 13, 3, -16}, // 0x31 '1' + {246, 11, 17, 13, 1, -16}, // 0x32 '2' + {270, 11, 17, 13, 1, -16}, // 0x33 '3' + {294, 11, 17, 13, 1, -16}, // 0x34 '4' + {318, 11, 17, 13, 1, -16}, // 0x35 '5' + {342, 11, 17, 13, 1, -16}, // 0x36 '6' + {366, 11, 17, 13, 1, -16}, // 0x37 '7' + {390, 11, 17, 13, 1, -16}, // 0x38 '8' + {414, 11, 17, 13, 1, -16}, // 0x39 '9' + {438, 2, 13, 6, 2, -12}, // 0x3A ':' + {442, 2, 16, 6, 2, -11}, // 0x3B ';' + {446, 12, 12, 14, 1, -11}, // 0x3C '<' + {464, 12, 6, 14, 1, -8}, // 0x3D '=' + {473, 12, 12, 14, 1, -11}, // 0x3E '>' + {491, 10, 18, 13, 2, -17}, // 0x3F '?' + {514, 22, 21, 24, 1, -17}, // 0x40 '@' + {572, 16, 18, 16, 0, -17}, // 0x41 'A' + {608, 13, 18, 16, 2, -17}, // 0x42 'B' + {638, 15, 18, 17, 1, -17}, // 0x43 'C' + {672, 14, 18, 17, 2, -17}, // 0x44 'D' + {704, 12, 18, 15, 2, -17}, // 0x45 'E' + {731, 11, 18, 14, 2, -17}, // 0x46 'F' + {756, 16, 18, 18, 1, -17}, // 0x47 'G' + {792, 13, 18, 17, 2, -17}, // 0x48 'H' + {822, 2, 18, 7, 2, -17}, // 0x49 'I' + {827, 9, 18, 13, 1, -17}, // 0x4A 'J' + {848, 14, 18, 16, 2, -17}, // 0x4B 'K' + {880, 10, 18, 14, 2, -17}, // 0x4C 'L' + {903, 16, 18, 20, 2, -17}, // 0x4D 'M' + {939, 13, 18, 18, 2, -17}, // 0x4E 'N' + {969, 17, 18, 19, 1, -17}, // 0x4F 'O' + {1008, 12, 18, 16, 2, -17}, // 0x50 'P' + {1035, 17, 19, 19, 1, -17}, // 0x51 'Q' + {1076, 14, 18, 17, 2, -17}, // 0x52 'R' + {1108, 14, 18, 16, 1, -17}, // 0x53 'S' + {1140, 12, 18, 15, 1, -17}, // 0x54 'T' + {1167, 13, 18, 17, 2, -17}, // 0x55 'U' + {1197, 15, 18, 15, 0, -17}, // 0x56 'V' + {1231, 22, 18, 22, 0, -17}, // 0x57 'W' + {1281, 15, 18, 16, 0, -17}, // 0x58 'X' + {1315, 16, 18, 16, 0, -17}, // 0x59 'Y' + {1351, 13, 18, 15, 1, -17}, // 0x5A 'Z' + {1381, 4, 23, 7, 2, -17}, // 0x5B '[' + {1393, 7, 18, 7, 0, -17}, // 0x5C '\' + {1409, 4, 23, 7, 1, -17}, // 0x5D ']' + {1421, 9, 9, 11, 1, -16}, // 0x5E '^' + {1432, 15, 1, 13, -1, 4}, // 0x5F '_' + {1434, 5, 4, 6, 1, -17}, // 0x60 '`' + {1437, 12, 13, 13, 1, -12}, // 0x61 'a' + {1457, 12, 18, 13, 1, -17}, // 0x62 'b' + {1484, 10, 13, 12, 1, -12}, // 0x63 'c' + {1501, 11, 18, 13, 1, -17}, // 0x64 'd' + {1526, 11, 13, 13, 1, -12}, // 0x65 'e' + {1544, 5, 18, 7, 1, -17}, // 0x66 'f' + {1556, 11, 18, 13, 1, -12}, // 0x67 'g' + {1581, 10, 18, 13, 1, -17}, // 0x68 'h' + {1604, 2, 18, 5, 2, -17}, // 0x69 'i' + {1609, 4, 23, 6, 0, -17}, // 0x6A 'j' + {1621, 11, 18, 12, 1, -17}, // 0x6B 'k' + {1646, 2, 18, 5, 1, -17}, // 0x6C 'l' + {1651, 17, 13, 19, 1, -12}, // 0x6D 'm' + {1679, 10, 13, 13, 1, -12}, // 0x6E 'n' + {1696, 11, 13, 13, 1, -12}, // 0x6F 'o' + {1714, 12, 17, 13, 1, -12}, // 0x70 'p' + {1740, 11, 17, 13, 1, -12}, // 0x71 'q' + {1764, 6, 13, 8, 1, -12}, // 0x72 'r' + {1774, 10, 13, 12, 1, -12}, // 0x73 's' + {1791, 5, 16, 7, 1, -15}, // 0x74 't' + {1801, 10, 13, 13, 1, -12}, // 0x75 'u' + {1818, 12, 13, 12, 0, -12}, // 0x76 'v' + {1838, 17, 13, 17, 0, -12}, // 0x77 'w' + {1866, 11, 13, 11, 0, -12}, // 0x78 'x' + {1884, 11, 18, 11, 0, -12}, // 0x79 'y' + {1909, 10, 13, 12, 1, -12}, // 0x7A 'z' + {1926, 5, 23, 8, 1, -17}, // 0x7B '{' + {1941, 2, 23, 6, 2, -17}, // 0x7C '|' + {1947, 5, 23, 8, 2, -17}, // 0x7D '}' + {1962, 10, 5, 12, 1, -10}}; // 0x7E '~' + +const GFXfont FreeSans12pt7b PROGMEM = {(uint8_t *)FreeSans12pt7bBitmaps, + (GFXglyph *)FreeSans12pt7bGlyphs, 0x20, + 0x7E, 29}; + +// Approx. 2641 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSans18pt7b.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSans18pt7b.h new file mode 100644 index 0000000..f3a9606 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSans18pt7b.h @@ -0,0 +1,454 @@ +#pragma once +#include + +const uint8_t FreeSans18pt7bBitmaps[] PROGMEM = { + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE9, 0x20, 0x3F, 0xFC, 0xE3, 0xF1, + 0xF8, 0xFC, 0x7E, 0x3F, 0x1F, 0x8E, 0x82, 0x41, 0x00, 0x01, 0xC3, 0x80, + 0x38, 0x70, 0x06, 0x0E, 0x00, 0xC1, 0x80, 0x38, 0x70, 0x07, 0x0E, 0x0F, + 0xFF, 0xF9, 0xFF, 0xFF, 0x3F, 0xFF, 0xE0, 0xE1, 0xC0, 0x1C, 0x38, 0x03, + 0x87, 0x00, 0x70, 0xE0, 0x0C, 0x18, 0x3F, 0xFF, 0xF7, 0xFF, 0xFE, 0xFF, + 0xFF, 0xC1, 0xC3, 0x80, 0x30, 0x60, 0x06, 0x0C, 0x01, 0xC3, 0x80, 0x38, + 0x70, 0x07, 0x0E, 0x00, 0xC1, 0x80, 0x03, 0x00, 0x0F, 0xC0, 0x3F, 0xF0, + 0x3F, 0xF8, 0x7B, 0x3C, 0xF3, 0x1C, 0xE3, 0x0E, 0xE3, 0x0E, 0xE3, 0x0E, + 0xE3, 0x00, 0xE3, 0x00, 0xF3, 0x00, 0x7B, 0x00, 0x7F, 0x80, 0x1F, 0xF0, + 0x07, 0xFC, 0x03, 0x7E, 0x03, 0x0F, 0x03, 0x07, 0xE3, 0x07, 0xE3, 0x07, + 0xE3, 0x07, 0xE3, 0x0F, 0x73, 0x3E, 0x7F, 0xFC, 0x3F, 0xF8, 0x0F, 0xE0, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x78, 0x00, + 0xE0, 0x0F, 0xF0, 0x06, 0x00, 0xFF, 0xC0, 0x70, 0x07, 0x0E, 0x07, 0x00, + 0x70, 0x38, 0x38, 0x03, 0x00, 0xC3, 0x80, 0x18, 0x06, 0x1C, 0x00, 0xE0, + 0x71, 0xC0, 0x03, 0x87, 0x8C, 0x00, 0x1F, 0xF8, 0xE0, 0x00, 0x7F, 0x86, + 0x00, 0x01, 0xF8, 0x70, 0x00, 0x00, 0x03, 0x03, 0xC0, 0x00, 0x38, 0x7F, + 0x80, 0x01, 0x87, 0xFE, 0x00, 0x1C, 0x38, 0x70, 0x00, 0xC3, 0x81, 0xC0, + 0x0E, 0x18, 0x06, 0x00, 0xE0, 0xC0, 0x30, 0x07, 0x07, 0x03, 0x80, 0x70, + 0x1C, 0x38, 0x03, 0x80, 0xFF, 0xC0, 0x38, 0x03, 0xFC, 0x01, 0x80, 0x07, + 0x80, 0x01, 0xF0, 0x00, 0x7F, 0x80, 0x0F, 0xFC, 0x01, 0xE1, 0xE0, 0x1C, + 0x0E, 0x01, 0xC0, 0xE0, 0x1C, 0x0E, 0x01, 0xE1, 0xE0, 0x0E, 0x3C, 0x00, + 0x77, 0x80, 0x07, 0xF0, 0x00, 0x7C, 0x00, 0x0F, 0xE0, 0x03, 0xCF, 0x1C, + 0x78, 0x79, 0xC7, 0x03, 0xDC, 0xE0, 0x1F, 0x8E, 0x00, 0xF8, 0xE0, 0x0F, + 0x0E, 0x00, 0x70, 0xF0, 0x0F, 0x87, 0xC3, 0xFC, 0x7F, 0xFD, 0xC3, 0xFF, + 0x0E, 0x0F, 0xC0, 0xF0, 0xFF, 0xFF, 0xFA, 0x40, 0x06, 0x06, 0x0C, 0x0C, + 0x18, 0x18, 0x38, 0x30, 0x70, 0x70, 0x70, 0x60, 0xE0, 0xE0, 0xE0, 0xE0, + 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x60, 0x70, 0x70, 0x70, 0x30, 0x38, 0x18, + 0x18, 0x0C, 0x0C, 0x06, 0x03, 0xC0, 0x60, 0x30, 0x30, 0x38, 0x18, 0x1C, + 0x0C, 0x0E, 0x0E, 0x0E, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, + 0x07, 0x07, 0x06, 0x0E, 0x0E, 0x0E, 0x0C, 0x1C, 0x18, 0x38, 0x30, 0x30, + 0x60, 0xC0, 0x0C, 0x03, 0x00, 0xC3, 0xB7, 0xFF, 0xC7, 0x81, 0xE0, 0xEC, + 0x73, 0x88, 0x40, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, + 0x80, 0x01, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x80, 0x01, + 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0xFF, + 0xF6, 0xDA, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0xC0, 0x30, 0x18, + 0x06, 0x01, 0x80, 0xC0, 0x30, 0x0C, 0x06, 0x01, 0x80, 0x60, 0x30, 0x0C, + 0x03, 0x00, 0xC0, 0x60, 0x18, 0x06, 0x03, 0x00, 0xC0, 0x30, 0x18, 0x06, + 0x01, 0x80, 0xC0, 0x30, 0x00, 0x07, 0xE0, 0x0F, 0xF8, 0x1F, 0xFC, 0x3C, + 0x3C, 0x78, 0x1E, 0x70, 0x0E, 0x70, 0x0E, 0xE0, 0x07, 0xE0, 0x07, 0xE0, + 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, + 0x07, 0xE0, 0x07, 0xE0, 0x0F, 0x70, 0x0E, 0x70, 0x0E, 0x78, 0x1E, 0x3C, + 0x3C, 0x1F, 0xF8, 0x1F, 0xF0, 0x07, 0xE0, 0x03, 0x03, 0x07, 0x0F, 0x3F, + 0xFF, 0xFF, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0xE0, 0x1F, 0xF8, + 0x3F, 0xFC, 0x7C, 0x3E, 0x70, 0x0F, 0xF0, 0x0F, 0xE0, 0x07, 0xE0, 0x07, + 0x00, 0x07, 0x00, 0x07, 0x00, 0x0F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0xF8, + 0x03, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x3C, 0x00, 0x38, 0x00, 0x70, 0x00, + 0x60, 0x00, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xF0, + 0x07, 0xFE, 0x07, 0xFF, 0x87, 0x83, 0xC3, 0x80, 0xF3, 0x80, 0x39, 0xC0, + 0x1C, 0xE0, 0x0E, 0x00, 0x07, 0x00, 0x0F, 0x00, 0x7F, 0x00, 0x3F, 0x00, + 0x1F, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x00, 0x03, 0xF0, 0x01, + 0xF8, 0x00, 0xFE, 0x00, 0x77, 0x00, 0x73, 0xE0, 0xF8, 0xFF, 0xF8, 0x3F, + 0xF8, 0x07, 0xF0, 0x00, 0x00, 0x38, 0x00, 0x38, 0x00, 0x78, 0x00, 0xF8, + 0x00, 0xF8, 0x01, 0xF8, 0x03, 0xB8, 0x03, 0x38, 0x07, 0x38, 0x0E, 0x38, + 0x1C, 0x38, 0x18, 0x38, 0x38, 0x38, 0x70, 0x38, 0x60, 0x38, 0xE0, 0x38, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, + 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x1F, 0xFF, 0x0F, 0xFF, 0x8F, 0xFF, + 0xC7, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x39, + 0xF0, 0x3F, 0xFE, 0x1F, 0xFF, 0x8F, 0x83, 0xE7, 0x00, 0xF0, 0x00, 0x3C, + 0x00, 0x0E, 0x00, 0x07, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xFC, 0x00, + 0xEF, 0x00, 0x73, 0xC0, 0xF0, 0xFF, 0xF8, 0x3F, 0xF8, 0x07, 0xE0, 0x00, + 0x03, 0xE0, 0x0F, 0xF8, 0x1F, 0xFC, 0x3C, 0x1E, 0x38, 0x0E, 0x70, 0x0E, + 0x70, 0x00, 0x60, 0x00, 0xE0, 0x00, 0xE3, 0xE0, 0xEF, 0xF8, 0xFF, 0xFC, + 0xFC, 0x3E, 0xF0, 0x0E, 0xF0, 0x0F, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, + 0x60, 0x07, 0x70, 0x0F, 0x70, 0x0E, 0x3C, 0x3E, 0x3F, 0xFC, 0x1F, 0xF8, + 0x07, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x06, 0x00, 0x0E, + 0x00, 0x1C, 0x00, 0x18, 0x00, 0x38, 0x00, 0x70, 0x00, 0x60, 0x00, 0xE0, + 0x00, 0xC0, 0x01, 0xC0, 0x01, 0x80, 0x03, 0x80, 0x03, 0x80, 0x07, 0x00, + 0x07, 0x00, 0x07, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0C, 0x00, + 0x1C, 0x00, 0x1C, 0x00, 0x07, 0xF0, 0x0F, 0xFE, 0x0F, 0xFF, 0x87, 0x83, + 0xC7, 0x80, 0xF3, 0x80, 0x39, 0xC0, 0x1C, 0xE0, 0x0E, 0x78, 0x0F, 0x1E, + 0x0F, 0x07, 0xFF, 0x01, 0xFF, 0x03, 0xFF, 0xE3, 0xE0, 0xF9, 0xC0, 0x1D, + 0xC0, 0x0F, 0xE0, 0x03, 0xF0, 0x01, 0xF8, 0x00, 0xFC, 0x00, 0xF7, 0x00, + 0x73, 0xE0, 0xF8, 0xFF, 0xF8, 0x3F, 0xF8, 0x07, 0xF0, 0x00, 0x07, 0xE0, + 0x1F, 0xF8, 0x3F, 0xFC, 0x7C, 0x3C, 0x70, 0x0E, 0xF0, 0x0E, 0xE0, 0x06, + 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x0F, 0x70, 0x0F, 0x78, 0x3F, + 0x3F, 0xFF, 0x1F, 0xF7, 0x07, 0xC7, 0x00, 0x07, 0x00, 0x06, 0x00, 0x0E, + 0x70, 0x0E, 0x70, 0x1C, 0x78, 0x3C, 0x3F, 0xF8, 0x1F, 0xF0, 0x07, 0xC0, + 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x07, 0xFF, 0x80, 0xFF, 0xF0, 0x00, 0x00, + 0x00, 0x07, 0xFF, 0xB6, 0xD6, 0x00, 0x00, 0x80, 0x03, 0xC0, 0x07, 0xE0, + 0x0F, 0xC0, 0x3F, 0x80, 0x7E, 0x00, 0xFC, 0x01, 0xF0, 0x00, 0xE0, 0x00, + 0x7C, 0x00, 0x1F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x80, 0x07, 0xF0, 0x00, + 0x7E, 0x00, 0x0F, 0x00, 0x01, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x80, 0x80, 0x00, 0x70, 0x00, 0x3E, 0x00, 0x0F, 0xE0, 0x00, 0xFC, + 0x00, 0x1F, 0xC0, 0x03, 0xF8, 0x00, 0x3F, 0x00, 0x07, 0x80, 0x0F, 0xC0, + 0x1F, 0x80, 0x7F, 0x00, 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x01, 0xC0, 0x00, + 0x80, 0x00, 0x00, 0x0F, 0xC0, 0x7F, 0xE1, 0xFF, 0xE3, 0xC3, 0xEF, 0x01, + 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x07, 0x00, 0x0E, 0x00, 0x38, 0x00, 0xF0, + 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x00, 0xE0, 0x03, 0xC0, 0x07, 0x00, 0x0E, + 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC0, 0x03, 0x80, + 0x07, 0x00, 0x0E, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x3F, 0xFF, 0x00, + 0x00, 0xFF, 0xFF, 0xC0, 0x01, 0xF8, 0x0F, 0xE0, 0x03, 0xE0, 0x01, 0xF0, + 0x07, 0x80, 0x00, 0xF8, 0x0F, 0x00, 0x00, 0x3C, 0x1E, 0x00, 0x00, 0x1E, + 0x3C, 0x03, 0xE0, 0x1E, 0x38, 0x0F, 0xF3, 0x8E, 0x78, 0x1E, 0x3F, 0x0F, + 0x70, 0x38, 0x1F, 0x07, 0x70, 0x78, 0x0F, 0x07, 0xE0, 0x70, 0x0E, 0x07, + 0xE0, 0x70, 0x0E, 0x07, 0xE0, 0xE0, 0x0E, 0x07, 0xE0, 0xE0, 0x1C, 0x07, + 0xE0, 0xE0, 0x1C, 0x0E, 0xE0, 0xE0, 0x1C, 0x0E, 0xE0, 0xE0, 0x38, 0x1C, + 0xF0, 0x70, 0x78, 0x3C, 0x70, 0x78, 0xFC, 0x78, 0x78, 0x3F, 0xDF, 0xF0, + 0x38, 0x1F, 0x0F, 0xC0, 0x3C, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, + 0x0F, 0x80, 0x00, 0x00, 0x07, 0xF0, 0x0E, 0x00, 0x01, 0xFF, 0xFE, 0x00, + 0x00, 0x7F, 0xFE, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x03, + 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0x7F, 0x00, 0x01, 0xDC, 0x00, 0x07, 0x78, + 0x00, 0x3C, 0xE0, 0x00, 0xE3, 0x80, 0x03, 0x8F, 0x00, 0x1E, 0x1C, 0x00, + 0x70, 0x70, 0x01, 0xC1, 0xE0, 0x0E, 0x03, 0x80, 0x38, 0x0E, 0x00, 0xE0, + 0x3C, 0x07, 0xFF, 0xF0, 0x1F, 0xFF, 0xE0, 0xFF, 0xFF, 0x83, 0xC0, 0x0E, + 0x0E, 0x00, 0x3C, 0x78, 0x00, 0xF1, 0xE0, 0x01, 0xC7, 0x00, 0x07, 0xBC, + 0x00, 0x1E, 0xF0, 0x00, 0x3B, 0x80, 0x00, 0xF0, 0xFF, 0xFC, 0x1F, 0xFF, + 0xE3, 0xFF, 0xFE, 0x70, 0x03, 0xCE, 0x00, 0x3D, 0xC0, 0x03, 0xB8, 0x00, + 0x77, 0x00, 0x0E, 0xE0, 0x01, 0xDC, 0x00, 0x73, 0x80, 0x1E, 0x7F, 0xFF, + 0x8F, 0xFF, 0xF1, 0xFF, 0xFF, 0x38, 0x00, 0xF7, 0x00, 0x0E, 0xE0, 0x00, + 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x03, + 0xF8, 0x00, 0xF7, 0xFF, 0xFC, 0xFF, 0xFF, 0x1F, 0xFF, 0x80, 0x00, 0xFF, + 0x00, 0x0F, 0xFF, 0x00, 0xFF, 0xFE, 0x07, 0xE0, 0x7C, 0x3E, 0x00, 0x78, + 0xF0, 0x00, 0xE7, 0x80, 0x03, 0xDC, 0x00, 0x07, 0x70, 0x00, 0x03, 0x80, + 0x00, 0x0E, 0x00, 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x03, 0x80, 0x00, + 0x0E, 0x00, 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x1D, 0xC0, 0x00, 0x77, + 0x00, 0x03, 0xDE, 0x00, 0x0E, 0x3C, 0x00, 0x78, 0xF8, 0x03, 0xC1, 0xF8, + 0x1F, 0x03, 0xFF, 0xF8, 0x03, 0xFF, 0xC0, 0x03, 0xF8, 0x00, 0xFF, 0xF8, + 0x0F, 0xFF, 0xE0, 0xFF, 0xFF, 0x0E, 0x00, 0xF8, 0xE0, 0x03, 0xCE, 0x00, + 0x1C, 0xE0, 0x00, 0xEE, 0x00, 0x0E, 0xE0, 0x00, 0xFE, 0x00, 0x07, 0xE0, + 0x00, 0x7E, 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0x07, 0xE0, 0x00, 0x7E, + 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0x0F, 0xE0, 0x00, 0xEE, 0x00, 0x0E, + 0xE0, 0x01, 0xEE, 0x00, 0x3C, 0xE0, 0x0F, 0x8F, 0xFF, 0xF0, 0xFF, 0xFE, + 0x0F, 0xFF, 0x80, 0xFF, 0xFF, 0xBF, 0xFF, 0xEF, 0xFF, 0xFB, 0x80, 0x00, + 0xE0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, 0x38, + 0x00, 0x0E, 0x00, 0x03, 0xFF, 0xFE, 0xFF, 0xFF, 0xBF, 0xFF, 0xEE, 0x00, + 0x03, 0x80, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, + 0xE0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x0E, 0x00, + 0x07, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x38, + 0x00, 0x1F, 0xFF, 0xCF, 0xFF, 0xE7, 0xFF, 0xF3, 0x80, 0x01, 0xC0, 0x00, + 0xE0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, 0x00, + 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x00, 0x00, 0x7F, + 0x80, 0x03, 0xFF, 0xE0, 0x07, 0xFF, 0xF8, 0x0F, 0x80, 0xFC, 0x1E, 0x00, + 0x3E, 0x3C, 0x00, 0x0E, 0x78, 0x00, 0x0F, 0x70, 0x00, 0x07, 0x70, 0x00, + 0x00, 0xE0, 0x00, 0x00, 0xE0, 0x00, 0x00, 0xE0, 0x00, 0x00, 0xE0, 0x03, + 0xFF, 0xE0, 0x03, 0xFF, 0xE0, 0x03, 0xFF, 0xE0, 0x00, 0x07, 0xF0, 0x00, + 0x07, 0x70, 0x00, 0x07, 0x70, 0x00, 0x0F, 0x78, 0x00, 0x0F, 0x3C, 0x00, + 0x1F, 0x1E, 0x00, 0x3F, 0x0F, 0xC0, 0xF7, 0x07, 0xFF, 0xE7, 0x03, 0xFF, + 0xC3, 0x00, 0xFF, 0x03, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, + 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x00, 0x07, 0xE0, + 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xF8, 0x00, 0x3F, 0x00, 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x80, + 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x00, + 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x1C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x1C, 0x00, 0x70, 0x01, 0xC0, 0x07, 0x00, + 0x1C, 0x00, 0x70, 0x01, 0xC0, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x01, 0xC0, + 0x07, 0x00, 0x1C, 0x00, 0x70, 0x01, 0xC0, 0x07, 0x00, 0x1F, 0x80, 0x7E, + 0x01, 0xF8, 0x07, 0xE0, 0x1F, 0xC0, 0xF7, 0x87, 0x9F, 0xFE, 0x3F, 0xF0, + 0x3F, 0x00, 0xE0, 0x01, 0xEE, 0x00, 0x3C, 0xE0, 0x07, 0x8E, 0x00, 0xF0, + 0xE0, 0x1E, 0x0E, 0x03, 0xE0, 0xE0, 0x7C, 0x0E, 0x0F, 0x80, 0xE1, 0xF0, + 0x0E, 0x1E, 0x00, 0xE3, 0xC0, 0x0E, 0x7C, 0x00, 0xEF, 0xE0, 0x0F, 0xCE, + 0x00, 0xF8, 0xF0, 0x0F, 0x07, 0x80, 0xE0, 0x3C, 0x0E, 0x03, 0xC0, 0xE0, + 0x1E, 0x0E, 0x00, 0xF0, 0xE0, 0x0F, 0x0E, 0x00, 0x78, 0xE0, 0x03, 0xCE, + 0x00, 0x3C, 0xE0, 0x01, 0xEE, 0x00, 0x0F, 0xE0, 0x01, 0xC0, 0x03, 0x80, + 0x07, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x01, + 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, + 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, 0x1C, 0x00, + 0x38, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xF8, 0x00, 0x1F, 0xF8, + 0x00, 0x1F, 0xF8, 0x00, 0x1F, 0xFC, 0x00, 0x3F, 0xFC, 0x00, 0x3F, 0xFC, + 0x00, 0x3F, 0xEE, 0x00, 0x77, 0xEE, 0x00, 0x77, 0xEE, 0x00, 0x77, 0xE7, + 0x00, 0xE7, 0xE7, 0x00, 0xE7, 0xE7, 0x00, 0xE7, 0xE3, 0x81, 0xC7, 0xE3, + 0x81, 0xC7, 0xE3, 0x81, 0xC7, 0xE1, 0xC3, 0x87, 0xE1, 0xC3, 0x87, 0xE1, + 0xC3, 0x87, 0xE0, 0xE7, 0x07, 0xE0, 0xE7, 0x07, 0xE0, 0xE7, 0x07, 0xE0, + 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x3C, 0x07, 0xE0, + 0x3C, 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xF8, 0x00, 0x7F, 0xC0, 0x07, + 0xFC, 0x00, 0x7F, 0xE0, 0x07, 0xEF, 0x00, 0x7E, 0x70, 0x07, 0xE7, 0x80, + 0x7E, 0x3C, 0x07, 0xE1, 0xC0, 0x7E, 0x1E, 0x07, 0xE0, 0xE0, 0x7E, 0x0F, + 0x07, 0xE0, 0x78, 0x7E, 0x03, 0x87, 0xE0, 0x3C, 0x7E, 0x01, 0xE7, 0xE0, + 0x0E, 0x7E, 0x00, 0xF7, 0xE0, 0x07, 0xFE, 0x00, 0x3F, 0xE0, 0x03, 0xFE, + 0x00, 0x1F, 0xE0, 0x01, 0xFE, 0x00, 0x0F, 0x00, 0x7F, 0x00, 0x01, 0xFF, + 0xF0, 0x01, 0xFF, 0xFC, 0x01, 0xF0, 0x1F, 0x01, 0xE0, 0x03, 0xC1, 0xE0, + 0x00, 0xF1, 0xE0, 0x00, 0x3C, 0xE0, 0x00, 0x0E, 0x70, 0x00, 0x07, 0x70, + 0x00, 0x03, 0xF8, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3F, + 0x00, 0x00, 0x1F, 0x80, 0x00, 0x0F, 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x03, + 0xB8, 0x00, 0x03, 0x9C, 0x00, 0x01, 0xCF, 0x00, 0x01, 0xE3, 0xC0, 0x01, + 0xE0, 0xF0, 0x01, 0xE0, 0x3E, 0x03, 0xE0, 0x0F, 0xFF, 0xE0, 0x03, 0xFF, + 0xE0, 0x00, 0x3F, 0x80, 0x00, 0xFF, 0xFC, 0x3F, 0xFF, 0x8F, 0xFF, 0xF3, + 0x80, 0x3E, 0xE0, 0x03, 0xF8, 0x00, 0x7E, 0x00, 0x1F, 0x80, 0x07, 0xE0, + 0x01, 0xF8, 0x00, 0x7E, 0x00, 0x3F, 0x80, 0x1E, 0xFF, 0xFF, 0x3F, 0xFF, + 0x8F, 0xFF, 0xC3, 0x80, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, + 0x80, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, + 0x00, 0x38, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x01, 0xFF, 0xF0, 0x01, 0xFF, + 0xFC, 0x01, 0xF0, 0x1F, 0x01, 0xE0, 0x03, 0xC1, 0xE0, 0x00, 0xF1, 0xE0, + 0x00, 0x3C, 0xE0, 0x00, 0x0E, 0x70, 0x00, 0x07, 0x70, 0x00, 0x01, 0xF8, + 0x00, 0x00, 0xFC, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x1F, + 0x80, 0x00, 0x0F, 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x07, 0xB8, 0x00, 0x03, + 0x9C, 0x00, 0x01, 0xCF, 0x00, 0x39, 0xE3, 0xC0, 0x1F, 0xE0, 0xF0, 0x07, + 0xE0, 0x3E, 0x03, 0xF0, 0x0F, 0xFF, 0xFC, 0x03, 0xFF, 0xEE, 0x00, 0x3F, + 0x83, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x20, 0xFF, 0xFE, 0x0F, 0xFF, + 0xF8, 0xFF, 0xFF, 0xCE, 0x00, 0x3C, 0xE0, 0x01, 0xEE, 0x00, 0x0E, 0xE0, + 0x00, 0xEE, 0x00, 0x0E, 0xE0, 0x00, 0xEE, 0x00, 0x0E, 0xE0, 0x01, 0xCE, + 0x00, 0x3C, 0xFF, 0xFF, 0x8F, 0xFF, 0xF0, 0xFF, 0xFF, 0x8E, 0x00, 0x3C, + 0xE0, 0x01, 0xEE, 0x00, 0x0E, 0xE0, 0x00, 0xEE, 0x00, 0x0E, 0xE0, 0x00, + 0xEE, 0x00, 0x0E, 0xE0, 0x00, 0xEE, 0x00, 0x0E, 0xE0, 0x00, 0xFE, 0x00, + 0x0F, 0x03, 0xFC, 0x00, 0xFF, 0xF0, 0x1F, 0xFF, 0x83, 0xE0, 0x7C, 0x38, + 0x01, 0xE7, 0x00, 0x0E, 0x70, 0x00, 0xE7, 0x00, 0x00, 0x70, 0x00, 0x07, + 0x80, 0x00, 0x3E, 0x00, 0x01, 0xFE, 0x00, 0x0F, 0xFE, 0x00, 0x3F, 0xF8, + 0x00, 0x3F, 0xE0, 0x00, 0x3E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0xE0, 0x00, + 0x7E, 0x00, 0x07, 0xF0, 0x00, 0x77, 0x80, 0x0E, 0x7C, 0x03, 0xE3, 0xFF, + 0xFC, 0x1F, 0xFF, 0x80, 0x3F, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x80, 0x70, 0x00, 0x0E, 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x07, + 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0x70, 0x00, 0x0E, + 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, 0x1C, + 0x00, 0x03, 0x80, 0x00, 0x70, 0x00, 0x0E, 0x00, 0x01, 0xC0, 0x00, 0x38, + 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, 0xE0, 0x00, 0xFC, 0x00, + 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, + 0x3F, 0x00, 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, + 0x7E, 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x00, 0x07, 0xE0, 0x00, + 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7F, 0x00, 0x1E, 0xF0, 0x07, + 0x9F, 0x01, 0xF1, 0xFF, 0xFC, 0x1F, 0xFE, 0x00, 0x7F, 0x00, 0xE0, 0x00, + 0x7F, 0x80, 0x03, 0xFC, 0x00, 0x1C, 0xE0, 0x01, 0xE7, 0x80, 0x0F, 0x3C, + 0x00, 0x70, 0xE0, 0x07, 0x87, 0x80, 0x3C, 0x1C, 0x01, 0xC0, 0xE0, 0x0E, + 0x07, 0x80, 0xE0, 0x1C, 0x07, 0x00, 0xE0, 0x38, 0x07, 0x83, 0x80, 0x1C, + 0x1C, 0x00, 0xE0, 0xE0, 0x07, 0x8E, 0x00, 0x1C, 0x70, 0x00, 0xE3, 0x80, + 0x07, 0xB8, 0x00, 0x1D, 0xC0, 0x00, 0xEE, 0x00, 0x07, 0xE0, 0x00, 0x1F, + 0x00, 0x00, 0xF8, 0x00, 0x03, 0x80, 0x00, 0x70, 0x03, 0xC0, 0x0F, 0x70, + 0x03, 0xC0, 0x0F, 0x78, 0x03, 0xE0, 0x0F, 0x78, 0x03, 0xE0, 0x0E, 0x38, + 0x07, 0xE0, 0x0E, 0x38, 0x07, 0xF0, 0x1E, 0x3C, 0x07, 0x70, 0x1E, 0x3C, + 0x07, 0x70, 0x1C, 0x1C, 0x0E, 0x70, 0x1C, 0x1C, 0x0E, 0x38, 0x3C, 0x1C, + 0x0E, 0x38, 0x3C, 0x1E, 0x1E, 0x38, 0x38, 0x0E, 0x1C, 0x38, 0x38, 0x0E, + 0x1C, 0x1C, 0x38, 0x0E, 0x1C, 0x1C, 0x78, 0x0F, 0x3C, 0x1C, 0x70, 0x07, + 0x38, 0x0E, 0x70, 0x07, 0x38, 0x0E, 0x70, 0x07, 0x38, 0x0E, 0x70, 0x07, + 0x70, 0x0E, 0xE0, 0x03, 0xF0, 0x07, 0xE0, 0x03, 0xF0, 0x07, 0xE0, 0x03, + 0xF0, 0x07, 0xE0, 0x03, 0xE0, 0x03, 0xC0, 0x01, 0xE0, 0x03, 0xC0, 0x01, + 0xE0, 0x03, 0xC0, 0xF0, 0x00, 0x7B, 0xC0, 0x07, 0x8F, 0x00, 0x38, 0x78, + 0x03, 0xC1, 0xE0, 0x3C, 0x07, 0x81, 0xC0, 0x3C, 0x1E, 0x00, 0xF1, 0xE0, + 0x03, 0x8E, 0x00, 0x1E, 0xF0, 0x00, 0x7F, 0x00, 0x01, 0xF0, 0x00, 0x0F, + 0x80, 0x00, 0x7C, 0x00, 0x07, 0xF0, 0x00, 0x3B, 0x80, 0x03, 0xDE, 0x00, + 0x3C, 0x78, 0x01, 0xC1, 0xC0, 0x1E, 0x0F, 0x01, 0xE0, 0x3C, 0x0E, 0x00, + 0xE0, 0xF0, 0x07, 0x8F, 0x00, 0x1E, 0x70, 0x00, 0xF7, 0x80, 0x03, 0xC0, + 0xF0, 0x00, 0x3C, 0xF0, 0x00, 0x78, 0xF0, 0x01, 0xE1, 0xE0, 0x03, 0x81, + 0xE0, 0x0F, 0x01, 0xC0, 0x1C, 0x03, 0xC0, 0x78, 0x03, 0xC1, 0xE0, 0x07, + 0x83, 0x80, 0x07, 0x8F, 0x00, 0x07, 0x1C, 0x00, 0x0F, 0x78, 0x00, 0x0E, + 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x70, 0x00, 0x00, 0xE0, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, + 0x00, 0x07, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x38, 0x00, + 0x00, 0x70, 0x00, 0x7F, 0xFF, 0xEF, 0xFF, 0xFD, 0xFF, 0xFF, 0x80, 0x00, + 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, + 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, + 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x7C, 0x00, + 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xF8, 0xE3, 0x8E, 0x38, 0xE3, + 0x8E, 0x38, 0xE3, 0x8E, 0x38, 0xE3, 0x8E, 0x38, 0xE3, 0x8E, 0x38, 0xE3, + 0x8E, 0x38, 0xE3, 0x8F, 0xFF, 0xFC, 0xC0, 0x30, 0x06, 0x01, 0x80, 0x60, + 0x0C, 0x03, 0x00, 0xC0, 0x18, 0x06, 0x01, 0x80, 0x20, 0x0C, 0x03, 0x00, + 0x40, 0x18, 0x06, 0x01, 0x80, 0x30, 0x0C, 0x03, 0x00, 0x60, 0x18, 0x06, + 0x00, 0xC0, 0x30, 0xFF, 0xFF, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, + 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, + 0x1C, 0x7F, 0xFF, 0xFC, 0x07, 0x00, 0x78, 0x03, 0xC0, 0x3F, 0x01, 0xD8, + 0x0C, 0xE0, 0xE3, 0x06, 0x1C, 0x70, 0xE3, 0x83, 0x18, 0x1D, 0xC0, 0x6C, + 0x03, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xF0, 0xF0, 0xE0, 0xE0, + 0xE0, 0x07, 0xF0, 0x0F, 0xFC, 0x0F, 0xFF, 0x0F, 0x03, 0xC7, 0x00, 0xE0, + 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0xFE, 0x0F, 0xFF, 0x1F, 0xF3, + 0x9F, 0x01, 0xCF, 0x00, 0xE7, 0x00, 0x73, 0x80, 0x79, 0xE0, 0xFC, 0x7F, + 0xEF, 0x9F, 0xE3, 0xC7, 0xE1, 0xE0, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, + 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE3, 0xE0, 0xEF, 0xF8, + 0xFF, 0xFC, 0xFC, 0x3E, 0xF8, 0x1E, 0xF0, 0x0E, 0xE0, 0x0F, 0xE0, 0x07, + 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xF0, 0x0E, + 0xF8, 0x1E, 0xFC, 0x3C, 0xEF, 0xFC, 0xEF, 0xF8, 0xE3, 0xE0, 0x07, 0xF0, + 0x1F, 0xF8, 0x3F, 0xFC, 0x3C, 0x1E, 0x78, 0x0E, 0x70, 0x07, 0xE0, 0x00, + 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x07, + 0x70, 0x07, 0x78, 0x0E, 0x7C, 0x1E, 0x3F, 0xFC, 0x1F, 0xF8, 0x07, 0xE0, + 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x38, 0x00, + 0x1C, 0x00, 0x0E, 0x0F, 0xC7, 0x1F, 0xFB, 0x9F, 0xFF, 0xDF, 0x07, 0xEF, + 0x01, 0xF7, 0x00, 0x7F, 0x80, 0x3F, 0x80, 0x0F, 0xC0, 0x07, 0xE0, 0x03, + 0xF0, 0x01, 0xF8, 0x00, 0xFC, 0x00, 0x77, 0x00, 0x7B, 0xC0, 0x7D, 0xF0, + 0x7E, 0x7F, 0xFB, 0x1F, 0xF9, 0x83, 0xF0, 0xC0, 0x07, 0xE0, 0x1F, 0xF8, + 0x3F, 0xFC, 0x7C, 0x1E, 0x70, 0x0E, 0x60, 0x06, 0xE0, 0x07, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0x70, 0x07, + 0x78, 0x0E, 0x3C, 0x1E, 0x3F, 0xFC, 0x1F, 0xF8, 0x07, 0xE0, 0x0E, 0x3C, + 0xF9, 0xC3, 0x87, 0x0E, 0x7F, 0xFF, 0xFC, 0xE1, 0xC3, 0x87, 0x0E, 0x1C, + 0x38, 0x70, 0xE1, 0xC3, 0x87, 0x0E, 0x1C, 0x38, 0x70, 0x07, 0xC7, 0x1F, + 0xF7, 0x3F, 0xFF, 0x3C, 0x3F, 0x78, 0x0F, 0x70, 0x0F, 0xE0, 0x07, 0xE0, + 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0x70, + 0x0F, 0x78, 0x0F, 0x7C, 0x3F, 0x3F, 0xF7, 0x1F, 0xE7, 0x07, 0xC7, 0x00, + 0x07, 0x00, 0x07, 0x00, 0x0E, 0x70, 0x0E, 0x78, 0x1E, 0x3F, 0xFC, 0x1F, + 0xF8, 0x07, 0xE0, 0xE0, 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, + 0x1C, 0x00, 0x38, 0x00, 0x71, 0xF8, 0xE7, 0xFD, 0xDF, 0xFB, 0xF0, 0xFF, + 0xC0, 0xFF, 0x00, 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x07, 0xE0, 0x0F, 0xC0, + 0x1F, 0x80, 0x3F, 0x00, 0x7E, 0x00, 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x07, + 0xE0, 0x0F, 0xC0, 0x1C, 0xFF, 0xF0, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFC, 0x1C, 0x71, 0xC7, 0x00, 0x00, 0x07, 0x1C, 0x71, 0xC7, 0x1C, + 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, + 0x73, 0xFF, 0xFB, 0xC0, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, + 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x3C, 0xE0, 0x78, 0xE0, 0xF0, + 0xE1, 0xE0, 0xE3, 0xC0, 0xE7, 0x80, 0xEF, 0x00, 0xEF, 0x80, 0xFF, 0x80, + 0xFB, 0xC0, 0xF1, 0xE0, 0xE0, 0xE0, 0xE0, 0xF0, 0xE0, 0x70, 0xE0, 0x78, + 0xE0, 0x3C, 0xE0, 0x1C, 0xE0, 0x1E, 0xE0, 0x0E, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xE3, 0xE0, 0xF8, 0xE7, 0xF1, 0xFE, + 0xEF, 0xFB, 0xFE, 0xF8, 0x7F, 0x0F, 0xF0, 0x3E, 0x07, 0xF0, 0x1C, 0x07, + 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, + 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, + 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, + 0xE0, 0x1C, 0x07, 0xE3, 0xF1, 0xCF, 0xFB, 0xBF, 0xF7, 0xE1, 0xFF, 0x81, + 0xFE, 0x01, 0xF8, 0x03, 0xF0, 0x07, 0xE0, 0x0F, 0xC0, 0x1F, 0x80, 0x3F, + 0x00, 0x7E, 0x00, 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x07, 0xE0, 0x0F, 0xC0, + 0x1F, 0x80, 0x38, 0x07, 0xF0, 0x0F, 0xFE, 0x0F, 0xFF, 0x87, 0x83, 0xC7, + 0x80, 0xF3, 0x80, 0x3B, 0x80, 0x1F, 0xC0, 0x07, 0xE0, 0x03, 0xF0, 0x01, + 0xF8, 0x00, 0xFC, 0x00, 0x7E, 0x00, 0x3B, 0x80, 0x39, 0xE0, 0x3C, 0x78, + 0x3C, 0x3F, 0xFE, 0x0F, 0xFE, 0x01, 0xFC, 0x00, 0xE3, 0xE0, 0xE7, 0xF8, + 0xEF, 0xFC, 0xFC, 0x3E, 0xF8, 0x1E, 0xF0, 0x0E, 0xE0, 0x0F, 0xE0, 0x07, + 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xF0, 0x0E, + 0xF8, 0x1E, 0xFC, 0x3E, 0xFF, 0xFC, 0xEF, 0xF8, 0xE3, 0xE0, 0xE0, 0x00, + 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0x07, 0xE1, + 0x8F, 0xFC, 0xCF, 0xFF, 0x67, 0x83, 0xF7, 0x80, 0xFB, 0x80, 0x3F, 0xC0, + 0x1F, 0xC0, 0x07, 0xE0, 0x03, 0xF0, 0x01, 0xF8, 0x00, 0xFC, 0x00, 0x7E, + 0x00, 0x3B, 0x80, 0x3D, 0xE0, 0x3E, 0xF8, 0x3F, 0x3F, 0xFF, 0x8F, 0xFD, + 0xC1, 0xF8, 0xE0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, + 0x07, 0x00, 0x03, 0x80, 0xE3, 0xF7, 0xFB, 0xFF, 0x8F, 0x07, 0x83, 0x81, + 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, + 0x38, 0x00, 0x0F, 0xC0, 0xFF, 0x87, 0xFF, 0x3C, 0x1E, 0xE0, 0x3B, 0x80, + 0x0E, 0x00, 0x3C, 0x00, 0x7F, 0x00, 0xFF, 0x80, 0xFF, 0x80, 0x7F, 0x00, + 0x3F, 0x80, 0x7E, 0x01, 0xFC, 0x1F, 0x7F, 0xF8, 0xFF, 0xC1, 0xFC, 0x00, + 0x38, 0x70, 0xE1, 0xCF, 0xFF, 0xFF, 0x9C, 0x38, 0x70, 0xE1, 0xC3, 0x87, + 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xC3, 0xE7, 0xC7, 0x80, 0xE0, 0x0F, 0xC0, + 0x1F, 0x80, 0x3F, 0x00, 0x7E, 0x00, 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x07, + 0xE0, 0x0F, 0xC0, 0x1F, 0x80, 0x3F, 0x00, 0x7E, 0x00, 0xFC, 0x03, 0xFC, + 0x0F, 0xFC, 0x3F, 0x7F, 0xEE, 0xFF, 0x9C, 0x7E, 0x38, 0x70, 0x03, 0xB8, + 0x03, 0x9C, 0x01, 0xC7, 0x00, 0xE3, 0x80, 0xE1, 0xC0, 0x70, 0x70, 0x38, + 0x38, 0x38, 0x1C, 0x1C, 0x07, 0x0E, 0x03, 0x8E, 0x01, 0xC7, 0x00, 0x77, + 0x00, 0x3B, 0x80, 0x1D, 0xC0, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, + 0x70, 0x00, 0xF0, 0x1C, 0x03, 0xB8, 0x1F, 0x03, 0xDC, 0x0F, 0x81, 0xCE, + 0x07, 0xC0, 0xE7, 0x83, 0xE0, 0x71, 0xC3, 0xB8, 0x70, 0xE1, 0xDC, 0x38, + 0x70, 0xEE, 0x1C, 0x1C, 0x63, 0x0E, 0x0E, 0x71, 0xCE, 0x07, 0x38, 0xE7, + 0x03, 0x9C, 0x73, 0x80, 0xEC, 0x19, 0x80, 0x7E, 0x0F, 0xC0, 0x3F, 0x07, + 0xE0, 0x0F, 0x83, 0xF0, 0x07, 0x80, 0xF0, 0x03, 0xC0, 0x78, 0x01, 0xE0, + 0x3C, 0x00, 0x70, 0x07, 0x38, 0x0E, 0x3C, 0x1C, 0x1C, 0x1C, 0x0E, 0x38, + 0x0F, 0x70, 0x07, 0x70, 0x03, 0xE0, 0x03, 0xC0, 0x01, 0xC0, 0x03, 0xE0, + 0x07, 0xE0, 0x07, 0x70, 0x0E, 0x78, 0x1E, 0x38, 0x1C, 0x1C, 0x38, 0x1E, + 0x78, 0x0E, 0x70, 0x07, 0x70, 0x07, 0x38, 0x03, 0x9C, 0x01, 0xC7, 0x01, + 0xC3, 0x80, 0xE1, 0xC0, 0x70, 0x70, 0x70, 0x38, 0x38, 0x1C, 0x3C, 0x07, + 0x1C, 0x03, 0x8E, 0x01, 0xCE, 0x00, 0x77, 0x00, 0x3B, 0x80, 0x1F, 0x80, + 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xE0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x38, + 0x00, 0x1C, 0x00, 0x1E, 0x00, 0x0E, 0x00, 0x3F, 0x00, 0x1F, 0x00, 0x0F, + 0x00, 0x00, 0x7F, 0xFC, 0xFF, 0xF9, 0xFF, 0xF0, 0x00, 0xE0, 0x03, 0x80, + 0x0E, 0x00, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x1C, 0x00, 0x70, + 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xF8, 0x07, 0x0F, 0x1F, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, + 0x1C, 0x1C, 0x1C, 0x1C, 0x38, 0xF8, 0xE0, 0xF8, 0x38, 0x1C, 0x1C, 0x1C, + 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1F, 0x0F, 0x07, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xE0, 0xF0, 0xF8, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x1C, 0x1F, + 0x07, 0x1F, 0x1C, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x38, 0xF8, 0xF0, 0xE0, 0x38, 0x00, 0xFC, 0x03, 0xFC, 0x1F, 0x3E, + 0x3C, 0x1F, 0xE0, 0x1F, 0x80, 0x1E, 0x00}; + +const GFXglyph FreeSans18pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 9, 0, 1}, // 0x20 ' ' + {0, 3, 26, 12, 4, -25}, // 0x21 '!' + {10, 9, 9, 12, 1, -24}, // 0x22 '"' + {21, 19, 24, 19, 0, -23}, // 0x23 '#' + {78, 16, 30, 19, 2, -26}, // 0x24 '$' + {138, 29, 25, 31, 1, -24}, // 0x25 '%' + {229, 20, 25, 23, 2, -24}, // 0x26 '&' + {292, 3, 9, 7, 2, -24}, // 0x27 ''' + {296, 8, 33, 12, 3, -25}, // 0x28 '(' + {329, 8, 33, 12, 1, -25}, // 0x29 ')' + {362, 10, 10, 14, 2, -25}, // 0x2A '*' + {375, 16, 16, 20, 2, -15}, // 0x2B '+' + {407, 3, 9, 10, 3, -3}, // 0x2C ',' + {411, 8, 3, 12, 2, -10}, // 0x2D '-' + {414, 3, 4, 9, 3, -3}, // 0x2E '.' + {416, 10, 26, 10, 0, -25}, // 0x2F '/' + {449, 16, 25, 19, 2, -24}, // 0x30 '0' + {499, 8, 25, 19, 4, -24}, // 0x31 '1' + {524, 16, 25, 19, 2, -24}, // 0x32 '2' + {574, 17, 25, 19, 1, -24}, // 0x33 '3' + {628, 16, 25, 19, 1, -24}, // 0x34 '4' + {678, 17, 25, 19, 1, -24}, // 0x35 '5' + {732, 16, 25, 19, 2, -24}, // 0x36 '6' + {782, 16, 25, 19, 2, -24}, // 0x37 '7' + {832, 17, 25, 19, 1, -24}, // 0x38 '8' + {886, 16, 25, 19, 1, -24}, // 0x39 '9' + {936, 3, 19, 9, 3, -18}, // 0x3A ':' + {944, 3, 24, 9, 3, -18}, // 0x3B ';' + {953, 17, 17, 20, 2, -16}, // 0x3C '<' + {990, 17, 9, 20, 2, -12}, // 0x3D '=' + {1010, 17, 17, 20, 2, -16}, // 0x3E '>' + {1047, 15, 26, 19, 3, -25}, // 0x3F '?' + {1096, 32, 31, 36, 1, -25}, // 0x40 '@' + {1220, 22, 26, 23, 1, -25}, // 0x41 'A' + {1292, 19, 26, 23, 3, -25}, // 0x42 'B' + {1354, 22, 26, 25, 1, -25}, // 0x43 'C' + {1426, 20, 26, 24, 3, -25}, // 0x44 'D' + {1491, 18, 26, 22, 3, -25}, // 0x45 'E' + {1550, 17, 26, 21, 3, -25}, // 0x46 'F' + {1606, 24, 26, 27, 1, -25}, // 0x47 'G' + {1684, 19, 26, 25, 3, -25}, // 0x48 'H' + {1746, 3, 26, 10, 4, -25}, // 0x49 'I' + {1756, 14, 26, 18, 1, -25}, // 0x4A 'J' + {1802, 20, 26, 24, 3, -25}, // 0x4B 'K' + {1867, 15, 26, 20, 3, -25}, // 0x4C 'L' + {1916, 24, 26, 30, 3, -25}, // 0x4D 'M' + {1994, 20, 26, 26, 3, -25}, // 0x4E 'N' + {2059, 25, 26, 27, 1, -25}, // 0x4F 'O' + {2141, 18, 26, 23, 3, -25}, // 0x50 'P' + {2200, 25, 28, 27, 1, -25}, // 0x51 'Q' + {2288, 20, 26, 25, 3, -25}, // 0x52 'R' + {2353, 20, 26, 23, 1, -25}, // 0x53 'S' + {2418, 19, 26, 22, 1, -25}, // 0x54 'T' + {2480, 19, 26, 25, 3, -25}, // 0x55 'U' + {2542, 21, 26, 23, 1, -25}, // 0x56 'V' + {2611, 32, 26, 33, 0, -25}, // 0x57 'W' + {2715, 21, 26, 23, 1, -25}, // 0x58 'X' + {2784, 23, 26, 24, 0, -25}, // 0x59 'Y' + {2859, 19, 26, 22, 1, -25}, // 0x5A 'Z' + {2921, 6, 33, 10, 2, -25}, // 0x5B '[' + {2946, 10, 26, 10, 0, -25}, // 0x5C '\' + {2979, 6, 33, 10, 1, -25}, // 0x5D ']' + {3004, 13, 13, 16, 2, -24}, // 0x5E '^' + {3026, 21, 2, 19, -1, 5}, // 0x5F '_' + {3032, 7, 5, 9, 1, -25}, // 0x60 '`' + {3037, 17, 19, 19, 1, -18}, // 0x61 'a' + {3078, 16, 26, 20, 2, -25}, // 0x62 'b' + {3130, 16, 19, 18, 1, -18}, // 0x63 'c' + {3168, 17, 26, 20, 1, -25}, // 0x64 'd' + {3224, 16, 19, 19, 1, -18}, // 0x65 'e' + {3262, 7, 26, 10, 1, -25}, // 0x66 'f' + {3285, 16, 27, 19, 1, -18}, // 0x67 'g' + {3339, 15, 26, 19, 2, -25}, // 0x68 'h' + {3388, 3, 26, 8, 2, -25}, // 0x69 'i' + {3398, 6, 34, 9, 0, -25}, // 0x6A 'j' + {3424, 16, 26, 18, 2, -25}, // 0x6B 'k' + {3476, 3, 26, 7, 2, -25}, // 0x6C 'l' + {3486, 24, 19, 28, 2, -18}, // 0x6D 'm' + {3543, 15, 19, 19, 2, -18}, // 0x6E 'n' + {3579, 17, 19, 19, 1, -18}, // 0x6F 'o' + {3620, 16, 25, 20, 2, -18}, // 0x70 'p' + {3670, 17, 25, 20, 1, -18}, // 0x71 'q' + {3724, 9, 19, 12, 2, -18}, // 0x72 'r' + {3746, 14, 19, 17, 2, -18}, // 0x73 's' + {3780, 7, 23, 10, 1, -22}, // 0x74 't' + {3801, 15, 19, 19, 2, -18}, // 0x75 'u' + {3837, 17, 19, 17, 0, -18}, // 0x76 'v' + {3878, 25, 19, 25, 0, -18}, // 0x77 'w' + {3938, 16, 19, 17, 0, -18}, // 0x78 'x' + {3976, 17, 27, 17, 0, -18}, // 0x79 'y' + {4034, 15, 19, 17, 1, -18}, // 0x7A 'z' + {4070, 8, 33, 12, 1, -25}, // 0x7B '{' + {4103, 2, 33, 9, 3, -25}, // 0x7C '|' + {4112, 8, 33, 12, 3, -25}, // 0x7D '}' + {4145, 15, 7, 18, 1, -15}}; // 0x7E '~' + +const GFXfont FreeSans18pt7b PROGMEM = {(uint8_t *)FreeSans18pt7bBitmaps, + (GFXglyph *)FreeSans18pt7bGlyphs, 0x20, + 0x7E, 42}; + +// Approx. 4831 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSans24pt7b.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSans24pt7b.h new file mode 100644 index 0000000..3559530 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSans24pt7b.h @@ -0,0 +1,729 @@ +#pragma once +#include + +const uint8_t FreeSans24pt7bBitmaps[] PROGMEM = { + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x76, 0x66, + 0x66, 0x00, 0x0F, 0xFF, 0xFF, 0xF1, 0xFE, 0x3F, 0xC7, 0xF8, 0xFF, 0x1F, + 0xE3, 0xFC, 0x7F, 0x8F, 0xF1, 0xEC, 0x19, 0x83, 0x30, 0x60, 0x00, 0x70, + 0x3C, 0x00, 0x70, 0x3C, 0x00, 0xF0, 0x38, 0x00, 0xF0, 0x38, 0x00, 0xF0, + 0x78, 0x00, 0xE0, 0x78, 0x00, 0xE0, 0x78, 0x01, 0xE0, 0x70, 0x01, 0xE0, + 0x70, 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x03, 0xC0, + 0xE0, 0x03, 0xC0, 0xE0, 0x03, 0xC0, 0xE0, 0x03, 0x81, 0xE0, 0x03, 0x81, + 0xE0, 0x03, 0x81, 0xE0, 0x07, 0x81, 0xC0, 0x07, 0x81, 0xC0, 0xFF, 0xFF, + 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0x0F, 0x03, 0x80, 0x0F, 0x03, + 0x80, 0x0F, 0x07, 0x80, 0x0E, 0x07, 0x80, 0x0E, 0x07, 0x80, 0x1E, 0x07, + 0x00, 0x1E, 0x07, 0x00, 0x1E, 0x07, 0x00, 0x1C, 0x0F, 0x00, 0x1C, 0x0F, + 0x00, 0x00, 0x38, 0x00, 0x01, 0xFC, 0x00, 0x1F, 0xFE, 0x00, 0x7F, 0xFE, + 0x01, 0xFF, 0xFE, 0x07, 0xE7, 0x3E, 0x0F, 0x8E, 0x3C, 0x3E, 0x1C, 0x3C, + 0x78, 0x38, 0x38, 0xF0, 0x70, 0x71, 0xE0, 0xE0, 0xE3, 0xC1, 0xC0, 0x07, + 0x83, 0x80, 0x0F, 0x87, 0x00, 0x0F, 0x8E, 0x00, 0x1F, 0xDC, 0x00, 0x1F, + 0xF8, 0x00, 0x1F, 0xFF, 0x00, 0x0F, 0xFF, 0x80, 0x07, 0xFF, 0x80, 0x03, + 0xFF, 0x80, 0x07, 0x1F, 0x80, 0x0E, 0x1F, 0x00, 0x1C, 0x1F, 0x00, 0x38, + 0x1F, 0xC0, 0x70, 0x3F, 0x80, 0xE0, 0x7F, 0x81, 0xC0, 0xFF, 0x03, 0x81, + 0xEF, 0x07, 0x07, 0x9F, 0x0E, 0x0F, 0x3E, 0x1C, 0x3E, 0x3F, 0x39, 0xF8, + 0x3F, 0xFF, 0xE0, 0x3F, 0xFF, 0x00, 0x0F, 0xF8, 0x00, 0x03, 0x80, 0x00, + 0x07, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x00, 0x00, 0x1C, 0x00, 0x0F, 0xC0, 0x00, 0x78, 0x00, 0x3F, 0xE0, 0x00, + 0xE0, 0x01, 0xFF, 0xE0, 0x03, 0x80, 0x03, 0xFF, 0xE0, 0x07, 0x00, 0x0F, + 0x87, 0xC0, 0x1C, 0x00, 0x3C, 0x03, 0xC0, 0x38, 0x00, 0x70, 0x03, 0x80, + 0xE0, 0x00, 0xE0, 0x07, 0x03, 0xC0, 0x01, 0xC0, 0x0E, 0x07, 0x00, 0x03, + 0x80, 0x1C, 0x1E, 0x00, 0x07, 0x80, 0x78, 0x38, 0x00, 0x07, 0xC3, 0xE0, + 0xF0, 0x00, 0x07, 0xFF, 0xC1, 0xC0, 0x00, 0x0F, 0xFF, 0x07, 0x80, 0x00, + 0x0F, 0xFC, 0x0E, 0x00, 0x00, 0x07, 0xE0, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x01, 0xC0, 0x3F, 0x00, 0x00, 0x03, 0x80, 0xFF, + 0x80, 0x00, 0x0E, 0x07, 0xFF, 0x80, 0x00, 0x3C, 0x0F, 0xFF, 0x80, 0x00, + 0x70, 0x3E, 0x1F, 0x00, 0x01, 0xE0, 0xF0, 0x0F, 0x00, 0x03, 0x81, 0xC0, + 0x0E, 0x00, 0x0F, 0x03, 0x80, 0x1C, 0x00, 0x1C, 0x07, 0x00, 0x38, 0x00, + 0x78, 0x0E, 0x00, 0x70, 0x00, 0xE0, 0x1E, 0x01, 0xE0, 0x03, 0x80, 0x1F, + 0x0F, 0x80, 0x07, 0x00, 0x1F, 0xFF, 0x00, 0x1C, 0x00, 0x3F, 0xFC, 0x00, + 0x38, 0x00, 0x1F, 0xF0, 0x00, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0x7E, 0x00, + 0x00, 0x1F, 0xF0, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x7F, 0xFC, 0x00, 0x07, + 0xC3, 0xC0, 0x00, 0xF8, 0x1E, 0x00, 0x0F, 0x00, 0xE0, 0x00, 0xF0, 0x0E, + 0x00, 0x0F, 0x00, 0xE0, 0x00, 0xF0, 0x0E, 0x00, 0x07, 0x81, 0xE0, 0x00, + 0x7C, 0x3C, 0x00, 0x03, 0xEF, 0x80, 0x00, 0x1F, 0xF0, 0x00, 0x01, 0xFE, + 0x00, 0x00, 0x1F, 0x80, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0xE0, 0x00, + 0x1F, 0x1E, 0x07, 0x83, 0xE0, 0xF0, 0x78, 0x7C, 0x0F, 0x8F, 0x87, 0x80, + 0x7C, 0xF0, 0xF0, 0x03, 0xFF, 0x0F, 0x00, 0x1F, 0xE0, 0xF0, 0x00, 0xFE, + 0x0F, 0x00, 0x0F, 0xC0, 0xF0, 0x00, 0x7E, 0x0F, 0x80, 0x0F, 0xF0, 0x7C, + 0x01, 0xFF, 0x07, 0xF0, 0x7D, 0xF8, 0x3F, 0xFF, 0x8F, 0xC1, 0xFF, 0xF0, + 0x7E, 0x0F, 0xFE, 0x03, 0xE0, 0x3F, 0x80, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF6, 0x66, 0x01, 0xC0, 0x70, 0x38, 0x1C, 0x07, 0x03, 0xC0, 0xE0, 0x78, + 0x1C, 0x07, 0x03, 0xC0, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x70, 0x3C, + 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, + 0xC0, 0x70, 0x1E, 0x07, 0x81, 0xE0, 0x38, 0x0F, 0x03, 0xC0, 0x70, 0x1E, + 0x03, 0x80, 0xE0, 0x1C, 0x07, 0x00, 0xE0, 0x18, 0x07, 0xE0, 0x38, 0x07, + 0x01, 0xC0, 0x38, 0x0F, 0x01, 0xC0, 0x78, 0x0E, 0x03, 0x80, 0xF0, 0x1C, + 0x07, 0x01, 0xE0, 0x78, 0x1E, 0x03, 0x80, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, + 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x07, 0x81, 0xE0, 0x78, + 0x1E, 0x07, 0x03, 0xC0, 0xF0, 0x38, 0x1E, 0x07, 0x01, 0xC0, 0xE0, 0x38, + 0x1C, 0x06, 0x03, 0x80, 0x03, 0x00, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x63, + 0x1B, 0xFF, 0xFF, 0xFF, 0xC3, 0xF0, 0x07, 0x80, 0x3F, 0x01, 0xCE, 0x07, + 0x3C, 0x38, 0x70, 0x21, 0x00, 0x00, 0x38, 0x00, 0x00, 0x70, 0x00, 0x00, + 0xE0, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, 0x00, 0x07, 0x00, 0x00, 0x0E, + 0x00, 0x00, 0x1C, 0x00, 0x00, 0x38, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x07, 0x00, 0x00, 0x0E, 0x00, + 0x00, 0x1C, 0x00, 0x00, 0x38, 0x00, 0x00, 0x70, 0x00, 0x00, 0xE0, 0x00, + 0x01, 0xC0, 0x00, 0x03, 0x80, 0x00, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xF3, + 0x33, 0x36, 0xEC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xF0, + 0x00, 0x38, 0x01, 0xC0, 0x0C, 0x00, 0xE0, 0x07, 0x00, 0x30, 0x03, 0x80, + 0x1C, 0x00, 0xC0, 0x06, 0x00, 0x70, 0x03, 0x80, 0x18, 0x01, 0xC0, 0x0E, + 0x00, 0x60, 0x03, 0x00, 0x38, 0x01, 0x80, 0x0C, 0x00, 0xE0, 0x07, 0x00, + 0x30, 0x03, 0x80, 0x1C, 0x00, 0xC0, 0x06, 0x00, 0x70, 0x03, 0x80, 0x18, + 0x01, 0xC0, 0x0E, 0x00, 0x60, 0x07, 0x00, 0x38, 0x00, 0x00, 0xFC, 0x00, + 0x0F, 0xFC, 0x00, 0xFF, 0xFC, 0x07, 0xFF, 0xF8, 0x1F, 0x87, 0xE0, 0xF8, + 0x07, 0xC3, 0xC0, 0x0F, 0x1F, 0x00, 0x3E, 0x78, 0x00, 0x79, 0xE0, 0x01, + 0xE7, 0x80, 0x07, 0xBC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, + 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0x00, + 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0x00, 0x03, + 0xDE, 0x00, 0x1E, 0x78, 0x00, 0x79, 0xE0, 0x01, 0xE7, 0xC0, 0x0F, 0x8F, + 0x00, 0x3C, 0x3E, 0x01, 0xF0, 0x7C, 0x1F, 0x81, 0xFF, 0xFE, 0x03, 0xFF, + 0xF0, 0x03, 0xFF, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x60, 0x1C, 0x03, 0x80, + 0xF0, 0x3E, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x3C, 0x07, 0x80, 0xF0, + 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, + 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, + 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x01, 0xFE, 0x00, 0x1F, 0xFE, 0x01, 0xFF, + 0xFE, 0x0F, 0xFF, 0xFC, 0x3F, 0x03, 0xF9, 0xF0, 0x03, 0xE7, 0x80, 0x07, + 0xFE, 0x00, 0x1F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0x00, 0x03, 0xC0, + 0x00, 0x0F, 0x00, 0x00, 0x7C, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, + 0x7C, 0x00, 0x07, 0xF0, 0x00, 0x7F, 0x80, 0x07, 0xF8, 0x00, 0x3F, 0xC0, + 0x03, 0xFC, 0x00, 0x1F, 0xC0, 0x00, 0xFC, 0x00, 0x07, 0xC0, 0x00, 0x3E, + 0x00, 0x00, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1C, 0x00, 0x00, 0x70, 0x00, + 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, + 0x00, 0xFE, 0x00, 0x0F, 0xFF, 0x80, 0x3F, 0xFF, 0x80, 0xFF, 0xFF, 0x83, + 0xF0, 0x1F, 0x87, 0xC0, 0x1F, 0x1F, 0x00, 0x1F, 0x3C, 0x00, 0x1E, 0x78, + 0x00, 0x3C, 0xF0, 0x00, 0x78, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, + 0x07, 0x80, 0x00, 0x7F, 0x00, 0x1F, 0xFC, 0x00, 0x3F, 0xE0, 0x00, 0x7F, + 0xE0, 0x00, 0xFF, 0xF0, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x03, + 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x0F, 0xF0, 0x00, 0x1F, + 0xE0, 0x00, 0x3F, 0xE0, 0x00, 0xFB, 0xC0, 0x01, 0xE7, 0xC0, 0x07, 0xC7, + 0xE0, 0x3F, 0x0F, 0xFF, 0xFE, 0x0F, 0xFF, 0xF8, 0x07, 0xFF, 0xC0, 0x03, + 0xFC, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x1F, 0x00, 0x00, + 0x7E, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xF8, 0x00, 0x0F, 0xF0, 0x00, 0x3F, + 0xE0, 0x00, 0x7B, 0xC0, 0x01, 0xE7, 0x80, 0x07, 0x8F, 0x00, 0x0F, 0x1E, + 0x00, 0x3C, 0x3C, 0x00, 0xF0, 0x78, 0x03, 0xC0, 0xF0, 0x07, 0x81, 0xE0, + 0x1E, 0x03, 0xC0, 0x78, 0x07, 0x81, 0xE0, 0x0F, 0x03, 0xC0, 0x1E, 0x0F, + 0x00, 0x3C, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0x00, 0x07, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, 0x00, + 0x3C, 0x00, 0x00, 0x78, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x03, + 0xC0, 0x1F, 0xFF, 0xF0, 0x7F, 0xFF, 0xC1, 0xFF, 0xFF, 0x07, 0xFF, 0xFC, + 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x1F, 0x3F, 0x80, 0x7B, 0xFF, + 0x81, 0xFF, 0xFF, 0x07, 0xFF, 0xFE, 0x1F, 0x80, 0xFC, 0x78, 0x01, 0xF8, + 0x00, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, + 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3F, 0xC0, 0x00, + 0xFF, 0x80, 0x07, 0x9E, 0x00, 0x1E, 0x7C, 0x00, 0xF1, 0xFC, 0x0F, 0xC3, + 0xFF, 0xFE, 0x07, 0xFF, 0xF0, 0x0F, 0xFF, 0x80, 0x07, 0xF0, 0x00, 0x00, + 0xFE, 0x00, 0x0F, 0xFE, 0x00, 0x7F, 0xFC, 0x03, 0xFF, 0xF8, 0x1F, 0x83, + 0xF0, 0xF8, 0x07, 0xC3, 0xC0, 0x0F, 0x8F, 0x00, 0x1E, 0x78, 0x00, 0x79, + 0xE0, 0x00, 0x07, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xF0, 0xFE, 0x03, 0xCF, + 0xFE, 0x0F, 0x7F, 0xFE, 0x3F, 0xFF, 0xFC, 0xFF, 0x03, 0xF3, 0xF0, 0x03, + 0xEF, 0x80, 0x07, 0xBE, 0x00, 0x1F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, + 0x00, 0x03, 0xFC, 0x00, 0x0F, 0x70, 0x00, 0x3D, 0xC0, 0x00, 0xF7, 0x80, + 0x07, 0x9F, 0x00, 0x3E, 0x3E, 0x00, 0xF8, 0xFC, 0x0F, 0xC1, 0xFF, 0xFE, + 0x03, 0xFF, 0xF0, 0x07, 0xFF, 0x80, 0x07, 0xF8, 0x00, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x07, 0x00, 0x00, + 0x78, 0x00, 0x07, 0x80, 0x00, 0x38, 0x00, 0x03, 0xC0, 0x00, 0x3C, 0x00, + 0x01, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x70, + 0x00, 0x07, 0x80, 0x00, 0x38, 0x00, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x01, + 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x38, 0x00, + 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, + 0x00, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, + 0x01, 0xFE, 0x00, 0x1F, 0xFE, 0x00, 0xFF, 0xFC, 0x07, 0xFF, 0xF8, 0x3F, + 0x03, 0xF1, 0xF0, 0x03, 0xC7, 0xC0, 0x0F, 0x9E, 0x00, 0x1E, 0x78, 0x00, + 0x79, 0xE0, 0x01, 0xE7, 0x80, 0x0F, 0x8F, 0x00, 0x3C, 0x3F, 0x03, 0xF0, + 0x7F, 0xFF, 0x80, 0x7F, 0xF8, 0x03, 0xFF, 0xF0, 0x1F, 0xFF, 0xE0, 0xFC, + 0x0F, 0xC7, 0xC0, 0x0F, 0x9E, 0x00, 0x1E, 0xF8, 0x00, 0x7F, 0xC0, 0x00, + 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, + 0x80, 0x07, 0xDE, 0x00, 0x1E, 0x7C, 0x00, 0xF8, 0xFC, 0x0F, 0xC3, 0xFF, + 0xFF, 0x07, 0xFF, 0xF8, 0x07, 0xFF, 0x80, 0x07, 0xF8, 0x00, 0x01, 0xFC, + 0x00, 0x3F, 0xF8, 0x03, 0xFF, 0xE0, 0x3F, 0xFF, 0x83, 0xF0, 0x7E, 0x3E, + 0x00, 0xF1, 0xE0, 0x07, 0xCF, 0x00, 0x1E, 0xF0, 0x00, 0x77, 0x80, 0x03, + 0xBC, 0x00, 0x1F, 0xE0, 0x00, 0xFF, 0x00, 0x07, 0xF8, 0x00, 0x3F, 0xE0, + 0x03, 0xEF, 0x00, 0x1F, 0x7C, 0x01, 0xF9, 0xF8, 0x3F, 0xCF, 0xFF, 0xFE, + 0x3F, 0xFE, 0xF0, 0xFF, 0xE7, 0x80, 0xFC, 0x3C, 0x00, 0x01, 0xE0, 0x00, + 0x0E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x9E, 0x00, 0x3C, 0xF0, 0x03, 0xC7, + 0xC0, 0x3E, 0x1F, 0x03, 0xE0, 0xFF, 0xFE, 0x03, 0xFF, 0xE0, 0x0F, 0xFE, + 0x00, 0x1F, 0xC0, 0x00, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xF3, 0x33, 0x36, 0xEC, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1C, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x7F, 0xC0, + 0x03, 0xFC, 0x00, 0x3F, 0xE0, 0x01, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, + 0x80, 0x03, 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0xE0, 0x00, 0x0F, 0xF0, + 0x00, 0x07, 0xFC, 0x00, 0x03, 0xFE, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x7F, + 0xC0, 0x00, 0x3F, 0xE0, 0x00, 0x0F, 0xF0, 0x00, 0x07, 0xE0, 0x00, 0x01, + 0xC0, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xF0, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x03, 0xF0, 0x00, 0x07, + 0xF8, 0x00, 0x03, 0xFC, 0x00, 0x01, 0xFF, 0x00, 0x00, 0xFF, 0x80, 0x00, + 0x3F, 0xC0, 0x00, 0x1F, 0xF0, 0x00, 0x07, 0xF8, 0x00, 0x03, 0xF8, 0x00, + 0x01, 0xF0, 0x00, 0x07, 0xE0, 0x00, 0x3F, 0xC0, 0x03, 0xFC, 0x00, 0x1F, + 0xE0, 0x01, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x80, 0x07, 0xFC, 0x00, + 0x0F, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x03, 0xF8, + 0x00, 0xFF, 0xF0, 0x1F, 0xFF, 0x83, 0xFF, 0xFC, 0x7E, 0x0F, 0xE7, 0x80, + 0x3E, 0x78, 0x01, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, + 0x00, 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xE0, 0x00, 0x3E, 0x00, 0x07, 0xC0, + 0x00, 0xF8, 0x00, 0x3F, 0x00, 0x07, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, + 0x01, 0xF0, 0x00, 0x1E, 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, 0xE0, + 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, + 0xE0, 0x00, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xC0, + 0x00, 0x00, 0x3F, 0xFF, 0xFE, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xF0, 0x00, + 0x07, 0xFC, 0x03, 0xFF, 0x00, 0x01, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x7E, + 0x00, 0x00, 0x7F, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xF0, 0x07, 0xC0, 0x00, + 0x00, 0x3F, 0x01, 0xF0, 0x00, 0x00, 0x03, 0xF0, 0x3C, 0x00, 0x7E, 0x00, + 0x3E, 0x0F, 0x00, 0x3F, 0xE3, 0xC3, 0xE3, 0xE0, 0x1F, 0xFE, 0x78, 0x3C, + 0x78, 0x07, 0xE1, 0xFF, 0x07, 0xDF, 0x01, 0xF0, 0x1F, 0xC0, 0xFB, 0xC0, + 0x7C, 0x01, 0xF8, 0x0F, 0x78, 0x0F, 0x00, 0x3F, 0x01, 0xEF, 0x03, 0xC0, + 0x07, 0xC0, 0x3F, 0xC0, 0x78, 0x00, 0xF8, 0x07, 0xF8, 0x0F, 0x00, 0x1F, + 0x00, 0xFF, 0x03, 0xC0, 0x03, 0xC0, 0x1F, 0xE0, 0x78, 0x00, 0x78, 0x07, + 0xFC, 0x0F, 0x00, 0x1F, 0x00, 0xF7, 0x81, 0xE0, 0x03, 0xC0, 0x1E, 0xF0, + 0x3C, 0x00, 0x78, 0x07, 0x9E, 0x07, 0x80, 0x1F, 0x01, 0xF3, 0xE0, 0xF8, + 0x07, 0xC0, 0x3C, 0x3C, 0x0F, 0x81, 0xF8, 0x0F, 0x87, 0x81, 0xF8, 0x7F, + 0x87, 0xE0, 0xF8, 0x1F, 0xFE, 0xFF, 0xF8, 0x0F, 0x01, 0xFF, 0x1F, 0xFC, + 0x01, 0xF0, 0x0F, 0x80, 0xFE, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x03, + 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF8, + 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, + 0x7C, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0x80, 0x00, 0x01, 0xFF, 0xFF, 0xF8, + 0x00, 0x00, 0x0F, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, + 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, + 0x07, 0xF8, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x00, 0xF7, 0xC0, 0x00, 0x03, + 0xDF, 0x00, 0x00, 0x1F, 0x3C, 0x00, 0x00, 0x78, 0xF8, 0x00, 0x01, 0xE3, + 0xE0, 0x00, 0x0F, 0x87, 0x80, 0x00, 0x3C, 0x1F, 0x00, 0x01, 0xF0, 0x7C, + 0x00, 0x07, 0x80, 0xF0, 0x00, 0x1E, 0x03, 0xE0, 0x00, 0xF8, 0x0F, 0x80, + 0x03, 0xC0, 0x1E, 0x00, 0x0F, 0x00, 0x7C, 0x00, 0x7C, 0x01, 0xF0, 0x01, + 0xE0, 0x03, 0xC0, 0x07, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xFE, 0x00, 0xFF, + 0xFF, 0xFC, 0x07, 0xFF, 0xFF, 0xF0, 0x1F, 0x00, 0x07, 0xC0, 0x78, 0x00, + 0x0F, 0x83, 0xE0, 0x00, 0x3E, 0x0F, 0x80, 0x00, 0xF8, 0x3C, 0x00, 0x01, + 0xF1, 0xF0, 0x00, 0x07, 0xC7, 0xC0, 0x00, 0x1F, 0x1E, 0x00, 0x00, 0x3E, + 0xF8, 0x00, 0x00, 0xFB, 0xE0, 0x00, 0x01, 0xE0, 0xFF, 0xFF, 0x80, 0x7F, + 0xFF, 0xF0, 0x3F, 0xFF, 0xFE, 0x1F, 0xFF, 0xFF, 0x0F, 0x00, 0x0F, 0xC7, + 0x80, 0x01, 0xE3, 0xC0, 0x00, 0xF9, 0xE0, 0x00, 0x3C, 0xF0, 0x00, 0x1E, + 0x78, 0x00, 0x0F, 0x3C, 0x00, 0x07, 0x9E, 0x00, 0x07, 0x8F, 0x00, 0x03, + 0xC7, 0x80, 0x07, 0xC3, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, + 0xF8, 0x7F, 0xFF, 0xFE, 0x3C, 0x00, 0x0F, 0x9E, 0x00, 0x03, 0xEF, 0x00, + 0x00, 0xF7, 0x80, 0x00, 0x3F, 0xC0, 0x00, 0x1F, 0xE0, 0x00, 0x0F, 0xF0, + 0x00, 0x07, 0xF8, 0x00, 0x03, 0xFC, 0x00, 0x01, 0xFE, 0x00, 0x01, 0xFF, + 0x00, 0x01, 0xF7, 0x80, 0x01, 0xFB, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xF8, + 0xFF, 0xFF, 0xF8, 0x7F, 0xFF, 0xF0, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x07, + 0xFF, 0xE0, 0x00, 0x7F, 0xFF, 0xC0, 0x0F, 0xFF, 0xFF, 0x00, 0xFE, 0x01, + 0xF8, 0x07, 0xC0, 0x03, 0xE0, 0x7C, 0x00, 0x0F, 0x87, 0xC0, 0x00, 0x3C, + 0x3C, 0x00, 0x01, 0xE3, 0xE0, 0x00, 0x07, 0x9E, 0x00, 0x00, 0x3C, 0xF0, + 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x78, 0x00, 0x00, 0x03, 0xC0, 0x00, + 0x00, 0x1E, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, + 0x3C, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x78, + 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x0F, 0x78, 0x00, + 0x00, 0x7B, 0xC0, 0x00, 0x07, 0xDF, 0x00, 0x00, 0x3C, 0x78, 0x00, 0x01, + 0xE3, 0xE0, 0x00, 0x1F, 0x0F, 0x80, 0x01, 0xF0, 0x3E, 0x00, 0x1F, 0x81, + 0xFE, 0x03, 0xF8, 0x07, 0xFF, 0xFF, 0x80, 0x0F, 0xFF, 0xF8, 0x00, 0x3F, + 0xFF, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0xFF, 0x80, 0x1F, 0xFF, 0xFE, + 0x03, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, 0xFE, 0x0F, 0x00, 0x0F, 0xE1, 0xE0, + 0x00, 0x7E, 0x3C, 0x00, 0x07, 0xE7, 0x80, 0x00, 0x7C, 0xF0, 0x00, 0x07, + 0xDE, 0x00, 0x00, 0x7B, 0xC0, 0x00, 0x0F, 0x78, 0x00, 0x01, 0xEF, 0x00, + 0x00, 0x1F, 0xE0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x0F, + 0xF0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x07, 0xF8, 0x00, + 0x00, 0xFF, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xF7, + 0x80, 0x00, 0x1E, 0xF0, 0x00, 0x03, 0xDE, 0x00, 0x00, 0xFB, 0xC0, 0x00, + 0x3E, 0x78, 0x00, 0x0F, 0xCF, 0x00, 0x03, 0xF1, 0xE0, 0x01, 0xFC, 0x3F, + 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xF0, 0x1F, 0xFF, 0xF0, + 0x00, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, + 0xFE, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, + 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, + 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xFF, 0xFF, + 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xF0, 0x00, + 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, + 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, + 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, + 0x00, 0x00, 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, + 0x00, 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, + 0x3F, 0xFF, 0xFC, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0x3C, + 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, + 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, 0x00, + 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xF0, + 0x00, 0x03, 0xC0, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0xFF, 0xFE, + 0x00, 0x07, 0xFF, 0xFF, 0x00, 0x1F, 0xFF, 0xFF, 0x00, 0x7F, 0x80, 0x7F, + 0x01, 0xF8, 0x00, 0x3F, 0x07, 0xE0, 0x00, 0x1F, 0x0F, 0x80, 0x00, 0x1E, + 0x3E, 0x00, 0x00, 0x3E, 0x78, 0x00, 0x00, 0x3D, 0xF0, 0x00, 0x00, 0x03, + 0xC0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x01, 0xE0, + 0x00, 0xFF, 0xFF, 0xC0, 0x01, 0xFF, 0xFF, 0x80, 0x03, 0xFF, 0xFF, 0x00, + 0x07, 0xFF, 0xFE, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x07, 0xBC, 0x00, + 0x00, 0x0F, 0x78, 0x00, 0x00, 0x1E, 0xF8, 0x00, 0x00, 0x7D, 0xF0, 0x00, + 0x00, 0xF9, 0xF0, 0x00, 0x03, 0xF3, 0xF0, 0x00, 0x07, 0xE3, 0xF0, 0x00, + 0x1F, 0xC3, 0xF0, 0x00, 0xFF, 0x83, 0xFC, 0x07, 0xEF, 0x03, 0xFF, 0xFF, + 0x9E, 0x03, 0xFF, 0xFE, 0x1C, 0x01, 0xFF, 0xF0, 0x38, 0x00, 0x7F, 0x80, + 0x00, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x3F, 0xC0, + 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x3F, + 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, + 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, + 0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, + 0xFF, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, + 0x00, 0xFF, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, + 0x00, 0x00, 0xFF, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, + 0xFC, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0xE0, + 0x00, 0x3C, 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0xC0, + 0x00, 0x78, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x07, 0x80, + 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x0F, 0x00, + 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x1E, 0x00, + 0x03, 0xC0, 0x00, 0x7F, 0x80, 0x0F, 0xF0, 0x01, 0xFE, 0x00, 0x3F, 0xC0, + 0x07, 0xF8, 0x01, 0xFF, 0x80, 0x3E, 0xF0, 0x0F, 0x9F, 0x83, 0xF1, 0xFF, + 0xFC, 0x3F, 0xFF, 0x01, 0xFF, 0xC0, 0x0F, 0xE0, 0x00, 0xF0, 0x00, 0x07, + 0xDE, 0x00, 0x01, 0xF3, 0xC0, 0x00, 0x7C, 0x78, 0x00, 0x1F, 0x0F, 0x00, + 0x07, 0xC1, 0xE0, 0x01, 0xF0, 0x3C, 0x00, 0x7C, 0x07, 0x80, 0x1F, 0x00, + 0xF0, 0x07, 0xC0, 0x1E, 0x01, 0xF0, 0x03, 0xC0, 0x7C, 0x00, 0x78, 0x1F, + 0x00, 0x0F, 0x07, 0xC0, 0x01, 0xE1, 0xF0, 0x00, 0x3C, 0x7E, 0x00, 0x07, + 0x9F, 0xE0, 0x00, 0xF7, 0xFE, 0x00, 0x1F, 0xF7, 0xC0, 0x03, 0xFC, 0x7C, + 0x00, 0x7F, 0x07, 0xC0, 0x0F, 0xC0, 0xF8, 0x01, 0xF0, 0x0F, 0x80, 0x3C, + 0x00, 0xF8, 0x07, 0x80, 0x1F, 0x80, 0xF0, 0x01, 0xF0, 0x1E, 0x00, 0x1F, + 0x03, 0xC0, 0x03, 0xF0, 0x78, 0x00, 0x3E, 0x0F, 0x00, 0x03, 0xE1, 0xE0, + 0x00, 0x3E, 0x3C, 0x00, 0x07, 0xC7, 0x80, 0x00, 0x7C, 0xF0, 0x00, 0x07, + 0xDE, 0x00, 0x00, 0xFC, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x3C, 0x00, 0x01, + 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, + 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x0F, + 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xF0, 0x00, + 0x07, 0x80, 0x00, 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, + 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, + 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xFC, 0x00, + 0x00, 0x3F, 0xFC, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x7F, 0xFE, 0x00, + 0x00, 0x7F, 0xFE, 0x00, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, + 0x00, 0xFF, 0xF7, 0x00, 0x00, 0xEF, 0xF7, 0x80, 0x01, 0xEF, 0xF7, 0x80, + 0x01, 0xEF, 0xF3, 0xC0, 0x01, 0xCF, 0xF3, 0xC0, 0x03, 0xCF, 0xF3, 0xC0, + 0x03, 0xCF, 0xF1, 0xE0, 0x03, 0x8F, 0xF1, 0xE0, 0x07, 0x8F, 0xF1, 0xE0, + 0x07, 0x8F, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, + 0x0F, 0x0F, 0xF0, 0x78, 0x1E, 0x0F, 0xF0, 0x78, 0x1E, 0x0F, 0xF0, 0x78, + 0x1E, 0x0F, 0xF0, 0x3C, 0x3C, 0x0F, 0xF0, 0x3C, 0x3C, 0x0F, 0xF0, 0x3C, + 0x3C, 0x0F, 0xF0, 0x1E, 0x78, 0x0F, 0xF0, 0x1E, 0x78, 0x0F, 0xF0, 0x0E, + 0x78, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x07, + 0xF0, 0x0F, 0xF0, 0x07, 0xE0, 0x0F, 0xF0, 0x07, 0xE0, 0x0F, 0xF0, 0x03, + 0xE0, 0x0F, 0xF8, 0x00, 0x03, 0xFF, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x3F, + 0xF8, 0x00, 0x0F, 0xFE, 0x00, 0x03, 0xFF, 0xC0, 0x00, 0xFF, 0xF8, 0x00, + 0x3F, 0xDE, 0x00, 0x0F, 0xF7, 0xC0, 0x03, 0xFC, 0xF8, 0x00, 0xFF, 0x1E, + 0x00, 0x3F, 0xC7, 0xC0, 0x0F, 0xF0, 0xF0, 0x03, 0xFC, 0x3E, 0x00, 0xFF, + 0x07, 0xC0, 0x3F, 0xC0, 0xF0, 0x0F, 0xF0, 0x3E, 0x03, 0xFC, 0x07, 0xC0, + 0xFF, 0x00, 0xF0, 0x3F, 0xC0, 0x3E, 0x0F, 0xF0, 0x07, 0x83, 0xFC, 0x01, + 0xF0, 0xFF, 0x00, 0x3E, 0x3F, 0xC0, 0x07, 0x8F, 0xF0, 0x01, 0xF3, 0xFC, + 0x00, 0x3E, 0xFF, 0x00, 0x07, 0xBF, 0xC0, 0x01, 0xFF, 0xF0, 0x00, 0x3F, + 0xFC, 0x00, 0x0F, 0xFF, 0x00, 0x01, 0xFF, 0xC0, 0x00, 0x3F, 0xF0, 0x00, + 0x0F, 0xFC, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x3F, 0xFF, + 0x80, 0x00, 0x7F, 0xFF, 0xF0, 0x00, 0x7F, 0xFF, 0xFC, 0x00, 0x7F, 0x80, + 0xFF, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x7E, 0x00, 0x03, 0xF0, 0x3E, 0x00, + 0x00, 0xF8, 0x3E, 0x00, 0x00, 0x3E, 0x1E, 0x00, 0x00, 0x0F, 0x1F, 0x00, + 0x00, 0x07, 0xCF, 0x00, 0x00, 0x01, 0xE7, 0x80, 0x00, 0x00, 0xF7, 0xC0, + 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x0F, 0xF0, + 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x01, 0xFE, + 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x00, 0x3F, + 0xC0, 0x00, 0x00, 0x3E, 0xF0, 0x00, 0x00, 0x1E, 0x78, 0x00, 0x00, 0x0F, + 0x3E, 0x00, 0x00, 0x0F, 0x8F, 0x00, 0x00, 0x07, 0x87, 0xC0, 0x00, 0x07, + 0xC1, 0xF0, 0x00, 0x07, 0xC0, 0xFC, 0x00, 0x07, 0xE0, 0x3F, 0x00, 0x07, + 0xE0, 0x0F, 0xF0, 0x1F, 0xE0, 0x03, 0xFF, 0xFF, 0xE0, 0x00, 0xFF, 0xFF, + 0xE0, 0x00, 0x1F, 0xFF, 0xC0, 0x00, 0x01, 0xFF, 0x00, 0x00, 0xFF, 0xFF, + 0x80, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFC, 0xF0, 0x00, + 0xFE, 0xF0, 0x00, 0x3E, 0xF0, 0x00, 0x1F, 0xF0, 0x00, 0x0F, 0xF0, 0x00, + 0x0F, 0xF0, 0x00, 0x0F, 0xF0, 0x00, 0x0F, 0xF0, 0x00, 0x0F, 0xF0, 0x00, + 0x0F, 0xF0, 0x00, 0x1F, 0xF0, 0x00, 0x3E, 0xF0, 0x00, 0xFE, 0xFF, 0xFF, + 0xFC, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xC0, 0xF0, 0x00, + 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, + 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, + 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, + 0x00, 0xF0, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x3F, 0xFF, 0x80, + 0x00, 0x7F, 0xFF, 0xE0, 0x00, 0x7F, 0xFF, 0xFC, 0x00, 0x7F, 0x80, 0xFF, + 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x7E, 0x00, 0x03, 0xF0, 0x3E, 0x00, 0x00, + 0xF8, 0x3E, 0x00, 0x00, 0x3E, 0x1E, 0x00, 0x00, 0x0F, 0x1F, 0x00, 0x00, + 0x07, 0xCF, 0x00, 0x00, 0x01, 0xE7, 0x80, 0x00, 0x00, 0xF7, 0xC0, 0x00, + 0x00, 0x7F, 0xC0, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x0F, 0xF0, 0x00, + 0x00, 0x07, 0xF8, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x01, 0xFE, 0x00, + 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x00, 0x3F, 0xC0, + 0x00, 0x00, 0x3E, 0xF0, 0x00, 0x00, 0x1E, 0x78, 0x00, 0x00, 0x0F, 0x3E, + 0x00, 0x00, 0x0F, 0x8F, 0x00, 0x03, 0x87, 0x87, 0xC0, 0x03, 0xE7, 0xC1, + 0xF0, 0x00, 0xFF, 0xC0, 0xFC, 0x00, 0x3F, 0xE0, 0x3F, 0x00, 0x0F, 0xE0, + 0x0F, 0xF0, 0x1F, 0xF0, 0x03, 0xFF, 0xFF, 0xFC, 0x00, 0xFF, 0xFF, 0xFF, + 0x00, 0x1F, 0xFF, 0xC7, 0xC0, 0x01, 0xFF, 0x01, 0xE0, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0xE0, 0x3F, 0xFF, 0xFE, 0x0F, + 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xF8, 0xF0, 0x00, 0x3F, 0x3C, 0x00, 0x07, + 0xCF, 0x00, 0x00, 0xFB, 0xC0, 0x00, 0x1E, 0xF0, 0x00, 0x07, 0xBC, 0x00, + 0x01, 0xEF, 0x00, 0x00, 0x7B, 0xC0, 0x00, 0x1E, 0xF0, 0x00, 0x07, 0xBC, + 0x00, 0x03, 0xCF, 0x00, 0x01, 0xF3, 0xC0, 0x00, 0xF8, 0xFF, 0xFF, 0xFC, + 0x3F, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xF8, 0xF0, 0x00, + 0x3F, 0x3C, 0x00, 0x03, 0xCF, 0x00, 0x00, 0xFB, 0xC0, 0x00, 0x1E, 0xF0, + 0x00, 0x07, 0xBC, 0x00, 0x01, 0xEF, 0x00, 0x00, 0x7B, 0xC0, 0x00, 0x1E, + 0xF0, 0x00, 0x07, 0xBC, 0x00, 0x01, 0xEF, 0x00, 0x00, 0x7B, 0xC0, 0x00, + 0x1E, 0xF0, 0x00, 0x07, 0xFC, 0x00, 0x01, 0xF0, 0x00, 0x7F, 0xC0, 0x00, + 0x7F, 0xFF, 0x00, 0x1F, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0x81, 0xF8, 0x07, + 0xF0, 0x7C, 0x00, 0x1F, 0x0F, 0x00, 0x01, 0xE3, 0xE0, 0x00, 0x3E, 0x78, + 0x00, 0x03, 0xCF, 0x00, 0x00, 0x79, 0xE0, 0x00, 0x00, 0x3C, 0x00, 0x00, + 0x07, 0xC0, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0xFF, + 0xE0, 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0x7F, 0xFF, 0x00, 0x01, 0xFF, 0xF8, + 0x00, 0x03, 0xFF, 0x80, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x3F, 0x80, 0x00, + 0x01, 0xF0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x3F, + 0xC0, 0x00, 0x07, 0xF8, 0x00, 0x00, 0xF7, 0x80, 0x00, 0x3E, 0xF8, 0x00, + 0x07, 0x9F, 0x80, 0x01, 0xF1, 0xFE, 0x01, 0xFC, 0x1F, 0xFF, 0xFF, 0x01, + 0xFF, 0xFF, 0xC0, 0x0F, 0xFF, 0xE0, 0x00, 0x3F, 0xE0, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, + 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x78, 0x00, + 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x78, + 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xE0, 0x00, + 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xE0, + 0x00, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, + 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, + 0x01, 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, + 0x00, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x3F, 0xC0, + 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x3F, + 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, + 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, + 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, + 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, + 0xFF, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, + 0x00, 0xFF, 0x00, 0x00, 0x7D, 0xE0, 0x00, 0x1E, 0x7C, 0x00, 0x0F, 0x9F, + 0x80, 0x07, 0xE3, 0xF8, 0x07, 0xF0, 0x7F, 0xFF, 0xF8, 0x0F, 0xFF, 0xFC, + 0x00, 0xFF, 0xFC, 0x00, 0x0F, 0xF8, 0x00, 0xF8, 0x00, 0x00, 0xF7, 0xC0, + 0x00, 0x0F, 0x9E, 0x00, 0x00, 0x7C, 0xF8, 0x00, 0x03, 0xC7, 0xC0, 0x00, + 0x3E, 0x1E, 0x00, 0x01, 0xF0, 0xF8, 0x00, 0x0F, 0x07, 0xC0, 0x00, 0xF8, + 0x1E, 0x00, 0x07, 0xC0, 0xF8, 0x00, 0x3C, 0x07, 0xC0, 0x03, 0xE0, 0x1E, + 0x00, 0x1F, 0x00, 0xF8, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x80, 0x1E, 0x00, + 0x7C, 0x00, 0xF8, 0x03, 0xC0, 0x03, 0xC0, 0x1E, 0x00, 0x1F, 0x01, 0xF0, + 0x00, 0xF8, 0x0F, 0x00, 0x03, 0xC0, 0x78, 0x00, 0x1F, 0x07, 0x80, 0x00, + 0xF8, 0x3C, 0x00, 0x03, 0xC1, 0xE0, 0x00, 0x1F, 0x1E, 0x00, 0x00, 0x78, + 0xF0, 0x00, 0x03, 0xC7, 0x80, 0x00, 0x1F, 0x78, 0x00, 0x00, 0x7B, 0xC0, + 0x00, 0x03, 0xDE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x7F, 0x00, 0x00, + 0x03, 0xF8, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, + 0x00, 0x3F, 0x00, 0x07, 0xFE, 0x00, 0x0F, 0xC0, 0x01, 0xFF, 0x80, 0x03, + 0xF0, 0x00, 0x7D, 0xE0, 0x00, 0xFC, 0x00, 0x1E, 0x7C, 0x00, 0x7F, 0x80, + 0x0F, 0x9F, 0x00, 0x1F, 0xE0, 0x03, 0xE7, 0xC0, 0x07, 0xF8, 0x00, 0xF8, + 0xF0, 0x01, 0xFF, 0x00, 0x3C, 0x3E, 0x00, 0xF3, 0xC0, 0x1F, 0x0F, 0x80, + 0x3C, 0xF0, 0x07, 0xC3, 0xE0, 0x0F, 0x3C, 0x01, 0xF0, 0x78, 0x07, 0xC7, + 0x80, 0x78, 0x1F, 0x01, 0xE1, 0xE0, 0x1E, 0x07, 0xC0, 0x78, 0x78, 0x0F, + 0x80, 0xF0, 0x1E, 0x1E, 0x03, 0xE0, 0x3C, 0x0F, 0x83, 0xC0, 0xF0, 0x0F, + 0x83, 0xC0, 0xF0, 0x3C, 0x03, 0xE0, 0xF0, 0x3C, 0x1F, 0x00, 0x78, 0x3C, + 0x0F, 0x87, 0xC0, 0x1E, 0x1E, 0x01, 0xE1, 0xE0, 0x07, 0x87, 0x80, 0x78, + 0x78, 0x01, 0xF1, 0xE0, 0x1E, 0x1E, 0x00, 0x3C, 0xF8, 0x03, 0xCF, 0x80, + 0x0F, 0x3C, 0x00, 0xF3, 0xC0, 0x03, 0xCF, 0x00, 0x3C, 0xF0, 0x00, 0xFB, + 0xC0, 0x0F, 0xBC, 0x00, 0x1F, 0xF0, 0x01, 0xFF, 0x00, 0x07, 0xF8, 0x00, + 0x7F, 0x80, 0x01, 0xFE, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x80, 0x03, 0xF8, + 0x00, 0x0F, 0xC0, 0x00, 0xFE, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x00, + 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x01, 0xF0, 0x00, 0x7C, 0x00, + 0x01, 0xF3, 0xF0, 0x00, 0x1F, 0x8F, 0x80, 0x00, 0xF8, 0x3E, 0x00, 0x0F, + 0x80, 0xF8, 0x00, 0xF8, 0x07, 0xC0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x00, + 0x7C, 0x07, 0xC0, 0x03, 0xE0, 0x3E, 0x00, 0x0F, 0x83, 0xE0, 0x00, 0x3E, + 0x3E, 0x00, 0x01, 0xF1, 0xF0, 0x00, 0x07, 0xDF, 0x00, 0x00, 0x1F, 0xF0, + 0x00, 0x00, 0xFF, 0x80, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x0F, 0x80, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x07, + 0xDF, 0x00, 0x00, 0x7C, 0x78, 0x00, 0x03, 0xE3, 0xE0, 0x00, 0x3E, 0x0F, + 0x80, 0x03, 0xE0, 0x3E, 0x00, 0x1F, 0x01, 0xF0, 0x01, 0xF0, 0x07, 0xC0, + 0x1F, 0x00, 0x3F, 0x00, 0xF8, 0x00, 0xF8, 0x0F, 0x80, 0x03, 0xE0, 0xF8, + 0x00, 0x1F, 0x8F, 0xC0, 0x00, 0x7C, 0x7C, 0x00, 0x01, 0xF7, 0xC0, 0x00, + 0x0F, 0xC0, 0xFC, 0x00, 0x00, 0xFD, 0xF0, 0x00, 0x03, 0xE7, 0xE0, 0x00, + 0x1F, 0x0F, 0x80, 0x00, 0x7C, 0x1F, 0x00, 0x03, 0xE0, 0x7C, 0x00, 0x1F, + 0x00, 0xF8, 0x00, 0x7C, 0x01, 0xF0, 0x03, 0xE0, 0x07, 0xC0, 0x0F, 0x80, + 0x0F, 0x80, 0x7C, 0x00, 0x1E, 0x01, 0xE0, 0x00, 0x7C, 0x0F, 0x80, 0x00, + 0xF8, 0x7C, 0x00, 0x03, 0xE1, 0xE0, 0x00, 0x07, 0xCF, 0x80, 0x00, 0x0F, + 0x3C, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x00, 0xFC, + 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x1E, 0x00, + 0x00, 0x00, 0x78, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x07, 0x80, 0x00, + 0x00, 0x1E, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, + 0x07, 0x80, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x01, + 0xE0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x3F, 0xFF, + 0xFF, 0xC7, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0xE0, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x01, + 0xF8, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, 0xE0, 0x00, + 0x00, 0xFC, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x01, 0xF0, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x07, 0xE0, 0x00, 0x01, + 0xF8, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, 0xF0, 0x00, + 0x00, 0xFC, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, + 0x00, 0x00, 0x7E, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, + 0xF8, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xFF, 0xFF, 0xFF, + 0xFF, 0xE0, 0x07, 0x00, 0x18, 0x00, 0xE0, 0x07, 0x00, 0x18, 0x00, 0xE0, + 0x07, 0x00, 0x18, 0x00, 0xC0, 0x07, 0x00, 0x38, 0x00, 0xC0, 0x07, 0x00, + 0x38, 0x00, 0xC0, 0x06, 0x00, 0x38, 0x00, 0xC0, 0x06, 0x00, 0x38, 0x01, + 0xC0, 0x06, 0x00, 0x38, 0x01, 0xC0, 0x06, 0x00, 0x30, 0x01, 0xC0, 0x0E, + 0x00, 0x30, 0x01, 0xC0, 0x0E, 0x00, 0x30, 0x01, 0xC0, 0x0E, 0xFF, 0xFF, + 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x0F, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x3F, + 0x00, 0x0F, 0xC0, 0x07, 0xF8, 0x01, 0xCE, 0x00, 0x73, 0x80, 0x3C, 0x70, + 0x0E, 0x1C, 0x07, 0x87, 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x38, 0x07, 0x0E, + 0x01, 0xC7, 0x80, 0x79, 0xC0, 0x0E, 0x70, 0x03, 0xB8, 0x00, 0x70, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x0F, 0x01, 0xE0, 0x3C, 0x07, + 0x00, 0xE0, 0x1C, 0x01, 0xFF, 0x00, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0xE0, + 0x3F, 0xFF, 0xF0, 0x7E, 0x03, 0xF8, 0x7C, 0x00, 0xF8, 0x78, 0x00, 0x78, + 0x00, 0x00, 0x78, 0x00, 0x00, 0x78, 0x00, 0x00, 0x78, 0x00, 0x00, 0xF8, + 0x00, 0x03, 0xF8, 0x00, 0xFF, 0xF8, 0x0F, 0xFF, 0xF8, 0x3F, 0xFE, 0x78, + 0x7F, 0x80, 0x78, 0xFC, 0x00, 0x78, 0xF8, 0x00, 0x78, 0xF0, 0x00, 0x78, + 0xF0, 0x00, 0xF8, 0xF0, 0x00, 0xF8, 0xF8, 0x03, 0xF8, 0x7E, 0x0F, 0xF8, + 0x7F, 0xFF, 0x7F, 0x3F, 0xFE, 0x3F, 0x1F, 0xFC, 0x3F, 0x07, 0xE0, 0x1F, + 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xF0, + 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xF0, 0x7E, + 0x03, 0xC7, 0xFE, 0x0F, 0x7F, 0xFC, 0x3D, 0xFF, 0xF8, 0xFF, 0x07, 0xF3, + 0xF8, 0x07, 0xCF, 0xC0, 0x0F, 0xBE, 0x00, 0x1E, 0xF8, 0x00, 0x7B, 0xE0, + 0x01, 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, + 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x01, 0xFF, + 0x80, 0x07, 0xBE, 0x00, 0x1E, 0xFC, 0x00, 0xFB, 0xF8, 0x07, 0xCF, 0xF0, + 0x7F, 0x3B, 0xFF, 0xF8, 0xE7, 0xFF, 0xC3, 0x8F, 0xFE, 0x00, 0x0F, 0xE0, + 0x00, 0x00, 0xFE, 0x00, 0x3F, 0xFC, 0x03, 0xFF, 0xF0, 0x3F, 0xFF, 0xC3, + 0xF0, 0x3F, 0x1F, 0x00, 0xF9, 0xF0, 0x03, 0xCF, 0x00, 0x0F, 0x78, 0x00, + 0x07, 0xC0, 0x00, 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, + 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, + 0x1E, 0x00, 0x1E, 0xF0, 0x00, 0xF7, 0xC0, 0x0F, 0x9F, 0x00, 0xF8, 0xFC, + 0x0F, 0xC3, 0xFF, 0xFC, 0x0F, 0xFF, 0xC0, 0x3F, 0xFC, 0x00, 0x7F, 0x00, + 0x00, 0x00, 0x1E, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x78, 0x00, 0x00, 0xF0, + 0x00, 0x01, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x0F, 0x01, + 0xFC, 0x1E, 0x0F, 0xFE, 0x3C, 0x3F, 0xFF, 0x78, 0xFF, 0xFF, 0xF3, 0xF8, + 0x3F, 0xE7, 0xC0, 0x1F, 0xDF, 0x00, 0x1F, 0xBE, 0x00, 0x1F, 0x78, 0x00, + 0x3F, 0xF0, 0x00, 0x7F, 0xC0, 0x00, 0x7F, 0x80, 0x00, 0xFF, 0x00, 0x01, + 0xFE, 0x00, 0x03, 0xFC, 0x00, 0x07, 0xF8, 0x00, 0x0F, 0xF0, 0x00, 0x1F, + 0xF0, 0x00, 0x7D, 0xE0, 0x00, 0xFB, 0xC0, 0x01, 0xF7, 0xC0, 0x07, 0xE7, + 0xC0, 0x1F, 0xCF, 0xE0, 0xFF, 0x8F, 0xFF, 0xF7, 0x0F, 0xFF, 0xCE, 0x0F, + 0xFF, 0x1C, 0x07, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x0F, 0xFE, 0x00, 0xFF, + 0xFC, 0x07, 0xFF, 0xF8, 0x1F, 0x83, 0xF0, 0xF8, 0x07, 0xC7, 0xC0, 0x0F, + 0x9E, 0x00, 0x1E, 0x78, 0x00, 0x7B, 0xC0, 0x00, 0xFF, 0x00, 0x03, 0xFC, + 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, + 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x1E, + 0x7C, 0x00, 0x78, 0xF8, 0x03, 0xE3, 0xF0, 0x3F, 0x07, 0xFF, 0xF8, 0x0F, + 0xFF, 0xE0, 0x1F, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0x03, 0xC3, 0xF0, 0xFC, + 0x7F, 0x1F, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x3F, 0xFF, 0xFF, 0xFF, 0x1E, + 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, + 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, + 0x1E, 0x07, 0x80, 0x00, 0xFC, 0x00, 0x1F, 0xF8, 0xF0, 0xFF, 0xFB, 0xC7, + 0xFF, 0xFF, 0x3F, 0x83, 0xFC, 0xF8, 0x07, 0xF7, 0xC0, 0x0F, 0xDE, 0x00, + 0x1F, 0x78, 0x00, 0x7F, 0xE0, 0x00, 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x0F, + 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xF0, + 0x00, 0x3F, 0xC0, 0x00, 0xF7, 0x80, 0x07, 0xDE, 0x00, 0x1F, 0x7C, 0x00, + 0xFC, 0xF8, 0x07, 0xF3, 0xF8, 0x3F, 0xC7, 0xFF, 0xEF, 0x0F, 0xFF, 0x3C, + 0x1F, 0xF8, 0xF0, 0x1F, 0x83, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x79, 0xE0, + 0x01, 0xE7, 0xC0, 0x0F, 0x8F, 0x80, 0xFC, 0x3F, 0xFF, 0xF0, 0x7F, 0xFF, + 0x80, 0xFF, 0xFC, 0x00, 0x7F, 0x80, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0xC0, + 0x00, 0x78, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x07, 0x80, + 0x00, 0xF0, 0xFE, 0x1E, 0x3F, 0xE3, 0xCF, 0xFF, 0x7B, 0xFF, 0xEF, 0xF0, + 0xFF, 0xF8, 0x07, 0xFF, 0x00, 0x7F, 0xC0, 0x0F, 0xF8, 0x01, 0xFE, 0x00, + 0x3F, 0xC0, 0x07, 0xF8, 0x00, 0xFF, 0x00, 0x1F, 0xE0, 0x03, 0xFC, 0x00, + 0x7F, 0x80, 0x0F, 0xF0, 0x01, 0xFE, 0x00, 0x3F, 0xC0, 0x07, 0xF8, 0x00, + 0xFF, 0x00, 0x1F, 0xE0, 0x03, 0xFC, 0x00, 0x7F, 0x80, 0x0F, 0xF0, 0x01, + 0xFE, 0x00, 0x3C, 0xFF, 0xFF, 0xF0, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x0F, + 0x0F, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x1F, + 0xFF, 0xFE, 0xFE, 0xF8, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x3C, 0x00, 0x01, + 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, + 0x00, 0xF0, 0x00, 0x07, 0x80, 0x1F, 0x3C, 0x01, 0xF1, 0xE0, 0x1F, 0x0F, + 0x01, 0xF0, 0x78, 0x1F, 0x03, 0xC1, 0xF0, 0x1E, 0x1F, 0x00, 0xF1, 0xF0, + 0x07, 0x9F, 0x00, 0x3D, 0xF8, 0x01, 0xFF, 0xE0, 0x0F, 0xFF, 0x80, 0x7F, + 0x7C, 0x03, 0xF1, 0xF0, 0x1F, 0x07, 0xC0, 0xF0, 0x3E, 0x07, 0x80, 0xF8, + 0x3C, 0x03, 0xC1, 0xE0, 0x1F, 0x0F, 0x00, 0x7C, 0x78, 0x03, 0xE3, 0xC0, + 0x0F, 0x9E, 0x00, 0x3C, 0xF0, 0x01, 0xF7, 0x80, 0x07, 0xC0, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0x00, 0xFC, 0x03, 0xF0, 0xE3, 0xFE, 0x0F, 0xFC, 0xE7, + 0xFF, 0x1F, 0xFE, 0xEF, 0xFF, 0xBF, 0xFE, 0xFE, 0x0F, 0xF8, 0x3F, 0xFC, + 0x07, 0xF0, 0x1F, 0xF8, 0x03, 0xE0, 0x0F, 0xF8, 0x03, 0xE0, 0x0F, 0xF0, + 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, + 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, + 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, + 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, + 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, + 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0x00, + 0x7E, 0x0E, 0x1F, 0xF8, 0xE7, 0xFF, 0xCE, 0xFF, 0xFE, 0xEF, 0x07, 0xFF, + 0xE0, 0x1F, 0xFC, 0x01, 0xFF, 0x80, 0x0F, 0xF8, 0x00, 0xFF, 0x00, 0x0F, + 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, + 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, + 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, + 0x00, 0xFF, 0x00, 0x0F, 0x00, 0xFE, 0x00, 0x07, 0xFF, 0x00, 0x3F, 0xFF, + 0x80, 0xFF, 0xFF, 0x83, 0xF8, 0x3F, 0x87, 0xC0, 0x1F, 0x1F, 0x00, 0x1F, + 0x3C, 0x00, 0x1E, 0x78, 0x00, 0x3D, 0xF0, 0x00, 0x7F, 0xC0, 0x00, 0x7F, + 0x80, 0x00, 0xFF, 0x00, 0x01, 0xFE, 0x00, 0x03, 0xFC, 0x00, 0x07, 0xF8, + 0x00, 0x0F, 0xF0, 0x00, 0x1F, 0xF0, 0x00, 0x7D, 0xE0, 0x00, 0xF3, 0xC0, + 0x01, 0xE7, 0xC0, 0x07, 0xC7, 0xC0, 0x1F, 0x0F, 0xE0, 0xFE, 0x0F, 0xFF, + 0xF8, 0x0F, 0xFF, 0xE0, 0x0F, 0xFF, 0x80, 0x03, 0xF8, 0x00, 0x00, 0xFE, + 0x03, 0x8F, 0xFE, 0x0E, 0x7F, 0xFC, 0x3B, 0xFF, 0xF8, 0xFF, 0x87, 0xF3, + 0xF8, 0x07, 0xCF, 0xC0, 0x0F, 0xBE, 0x00, 0x1E, 0xF8, 0x00, 0x7B, 0xE0, + 0x01, 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, + 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x01, 0xFF, + 0x80, 0x07, 0xBE, 0x00, 0x1E, 0xFC, 0x00, 0xFB, 0xF8, 0x07, 0xCF, 0xF0, + 0x7F, 0x3F, 0xFF, 0xF8, 0xF7, 0xFF, 0xC3, 0xC7, 0xFE, 0x0F, 0x07, 0xE0, + 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, + 0xFE, 0x00, 0x07, 0xFF, 0x1C, 0x3F, 0xFF, 0x38, 0xFF, 0xFF, 0x73, 0xF8, + 0x3F, 0xE7, 0xC0, 0x1F, 0xDF, 0x00, 0x1F, 0xBE, 0x00, 0x1F, 0x78, 0x00, + 0x3F, 0xF0, 0x00, 0x7F, 0xC0, 0x00, 0x7F, 0x80, 0x00, 0xFF, 0x00, 0x01, + 0xFE, 0x00, 0x03, 0xFC, 0x00, 0x07, 0xF8, 0x00, 0x0F, 0xF0, 0x00, 0x1F, + 0xF0, 0x00, 0x7D, 0xE0, 0x00, 0xFB, 0xC0, 0x01, 0xF7, 0xC0, 0x07, 0xE7, + 0xC0, 0x1F, 0xCF, 0xE0, 0xFF, 0x8F, 0xFF, 0xEF, 0x0F, 0xFF, 0xDE, 0x0F, + 0xFE, 0x3C, 0x07, 0xF0, 0x78, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, + 0x03, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, 0x00, + 0x3C, 0x00, 0x00, 0x78, 0x00, 0xFE, 0x1F, 0xE7, 0xFE, 0xFF, 0xFF, 0x8F, + 0xC0, 0xF8, 0x0F, 0x80, 0xF8, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, + 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, + 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0x01, 0xFC, 0x00, 0xFF, 0xF0, + 0x1F, 0xFF, 0x83, 0xFF, 0xFC, 0x3E, 0x07, 0xE7, 0xC0, 0x3E, 0x78, 0x01, + 0xE7, 0x80, 0x00, 0x78, 0x00, 0x07, 0xC0, 0x00, 0x7E, 0x00, 0x03, 0xFC, + 0x00, 0x1F, 0xFC, 0x00, 0xFF, 0xF8, 0x03, 0xFF, 0xC0, 0x03, 0xFE, 0x00, + 0x03, 0xF0, 0x00, 0x1F, 0x00, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, + 0x80, 0x1F, 0x7E, 0x07, 0xE7, 0xFF, 0xFE, 0x3F, 0xFF, 0xC1, 0xFF, 0xF0, + 0x03, 0xFC, 0x00, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x8F, 0xFF, + 0xFF, 0xFF, 0xC7, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, + 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, + 0xE0, 0x78, 0x1F, 0xC7, 0xF0, 0xFC, 0x1F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, + 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, + 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, + 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, + 0x00, 0xFF, 0x00, 0x1F, 0xF0, 0x01, 0xFF, 0x00, 0x3F, 0xF8, 0x07, 0xFF, + 0xE0, 0xFF, 0x7F, 0xFF, 0x77, 0xFF, 0xE7, 0x1F, 0xFC, 0x70, 0x7E, 0x00, + 0x78, 0x00, 0x3E, 0xF0, 0x00, 0x79, 0xF0, 0x00, 0xF1, 0xE0, 0x03, 0xE3, + 0xC0, 0x07, 0x87, 0xC0, 0x0F, 0x07, 0x80, 0x3C, 0x0F, 0x00, 0x78, 0x1F, + 0x01, 0xF0, 0x1E, 0x03, 0xC0, 0x3C, 0x07, 0x80, 0x7C, 0x1F, 0x00, 0x78, + 0x3C, 0x00, 0xF0, 0x78, 0x01, 0xF1, 0xE0, 0x01, 0xE3, 0xC0, 0x03, 0xC7, + 0x80, 0x03, 0xDE, 0x00, 0x07, 0xBC, 0x00, 0x0F, 0x70, 0x00, 0x0F, 0xE0, + 0x00, 0x1F, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x7C, 0x00, + 0xF8, 0x03, 0xE0, 0x07, 0x9E, 0x00, 0xFC, 0x01, 0xE7, 0x80, 0x3F, 0x00, + 0x79, 0xF0, 0x0F, 0xC0, 0x3E, 0x3C, 0x07, 0xF0, 0x0F, 0x0F, 0x01, 0xFE, + 0x03, 0xC3, 0xC0, 0x7F, 0x80, 0xF0, 0x78, 0x1D, 0xE0, 0x78, 0x1E, 0x0F, + 0x38, 0x1E, 0x07, 0x83, 0xCF, 0x07, 0x81, 0xE0, 0xF3, 0xC1, 0xE0, 0x3C, + 0x38, 0xF0, 0xF0, 0x0F, 0x1E, 0x1C, 0x3C, 0x03, 0xC7, 0x87, 0x8F, 0x00, + 0x71, 0xE1, 0xE3, 0x80, 0x1E, 0x70, 0x79, 0xE0, 0x07, 0xBC, 0x0E, 0x78, + 0x01, 0xEF, 0x03, 0xDE, 0x00, 0x3B, 0xC0, 0xF7, 0x00, 0x0F, 0xE0, 0x3F, + 0xC0, 0x03, 0xF8, 0x07, 0xF0, 0x00, 0x7E, 0x01, 0xF8, 0x00, 0x1F, 0x80, + 0x7E, 0x00, 0x07, 0xC0, 0x1F, 0x80, 0x01, 0xF0, 0x03, 0xC0, 0x00, 0x7C, + 0x00, 0x78, 0xF0, 0x03, 0xE1, 0xE0, 0x0F, 0x07, 0xC0, 0x78, 0x0F, 0x03, + 0xE0, 0x1E, 0x0F, 0x00, 0x7C, 0x78, 0x00, 0xF3, 0xE0, 0x01, 0xEF, 0x00, + 0x07, 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0x1F, 0x00, 0x00, 0x7C, 0x00, 0x03, + 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x7F, 0xC0, 0x03, 0xCF, 0x00, 0x0F, 0x1E, + 0x00, 0x78, 0x7C, 0x03, 0xE0, 0xF0, 0x0F, 0x03, 0xE0, 0x78, 0x07, 0xC3, + 0xE0, 0x0F, 0x1F, 0x00, 0x3E, 0x78, 0x00, 0x7C, 0x78, 0x00, 0x3D, 0xE0, + 0x01, 0xF7, 0x80, 0x07, 0x8F, 0x00, 0x1E, 0x3C, 0x00, 0xF0, 0xF0, 0x03, + 0xC1, 0xE0, 0x0F, 0x07, 0x80, 0x78, 0x1E, 0x01, 0xE0, 0x3C, 0x07, 0x80, + 0xF0, 0x3C, 0x03, 0xC0, 0xF0, 0x07, 0x87, 0xC0, 0x1E, 0x1E, 0x00, 0x78, + 0x78, 0x00, 0xF3, 0xC0, 0x03, 0xCF, 0x00, 0x0F, 0x3C, 0x00, 0x1F, 0xE0, + 0x00, 0x7F, 0x80, 0x01, 0xFE, 0x00, 0x03, 0xF0, 0x00, 0x0F, 0xC0, 0x00, + 0x3E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x3C, + 0x00, 0x01, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x3E, 0x00, 0x0F, 0xF0, 0x00, + 0x3F, 0xC0, 0x00, 0xFE, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x7F, 0xFF, 0xF7, + 0xFF, 0xFF, 0x7F, 0xFF, 0xF7, 0xFF, 0xFF, 0x00, 0x01, 0xE0, 0x00, 0x3E, + 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x7C, + 0x00, 0x07, 0x80, 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x7C, + 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x03, 0xC0, 0x00, 0x7C, + 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x01, 0xE0, 0xFC, 0x1F, 0x87, 0x80, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0E, + 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, + 0xC0, 0x78, 0x1E, 0x0F, 0x81, 0xE0, 0x3C, 0x07, 0xC0, 0x3C, 0x03, 0x80, + 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x38, + 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0F, 0x00, 0xFC, 0x1F, 0x80, + 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0x1F, 0x83, 0xF0, 0x0F, 0x00, + 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, + 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x1C, 0x03, 0xC0, 0x3E, 0x03, + 0xC0, 0x78, 0x1F, 0x07, 0x80, 0xE0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, + 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, + 0x70, 0x1E, 0x1F, 0x83, 0xF0, 0x78, 0x00, 0x3E, 0x00, 0x0F, 0xF0, 0x0D, + 0xFF, 0x01, 0xF0, 0xF8, 0x7C, 0x0F, 0xFD, 0x80, 0x7F, 0x80, 0x03, 0xE0}; + +const GFXglyph FreeSans24pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 12, 0, 1}, // 0x20 ' ' + {0, 4, 34, 16, 6, -33}, // 0x21 '!' + {17, 11, 12, 16, 2, -32}, // 0x22 '"' + {34, 24, 33, 26, 1, -31}, // 0x23 '#' + {133, 23, 41, 26, 1, -34}, // 0x24 '$' + {251, 39, 34, 42, 1, -32}, // 0x25 '%' + {417, 28, 34, 31, 2, -32}, // 0x26 '&' + {536, 4, 12, 9, 2, -32}, // 0x27 ''' + {542, 10, 44, 16, 3, -33}, // 0x28 '(' + {597, 10, 44, 16, 2, -33}, // 0x29 ')' + {652, 14, 14, 18, 2, -33}, // 0x2A '*' + {677, 23, 22, 27, 2, -21}, // 0x2B '+' + {741, 4, 12, 13, 4, -4}, // 0x2C ',' + {747, 11, 4, 16, 2, -14}, // 0x2D '-' + {753, 4, 5, 12, 4, -4}, // 0x2E '.' + {756, 13, 35, 13, 0, -33}, // 0x2F '/' + {813, 22, 34, 26, 2, -32}, // 0x30 '0' + {907, 11, 33, 26, 5, -32}, // 0x31 '1' + {953, 22, 33, 26, 2, -32}, // 0x32 '2' + {1044, 23, 34, 26, 1, -32}, // 0x33 '3' + {1142, 23, 33, 26, 1, -32}, // 0x34 '4' + {1237, 22, 34, 26, 2, -32}, // 0x35 '5' + {1331, 22, 34, 26, 2, -32}, // 0x36 '6' + {1425, 21, 33, 26, 2, -32}, // 0x37 '7' + {1512, 22, 34, 26, 2, -32}, // 0x38 '8' + {1606, 21, 34, 26, 2, -32}, // 0x39 '9' + {1696, 4, 25, 12, 4, -24}, // 0x3A ':' + {1709, 4, 32, 12, 4, -24}, // 0x3B ';' + {1725, 23, 23, 27, 2, -22}, // 0x3C '<' + {1792, 23, 12, 27, 2, -16}, // 0x3D '=' + {1827, 23, 23, 27, 2, -22}, // 0x3E '>' + {1894, 20, 35, 26, 4, -34}, // 0x3F '?' + {1982, 43, 42, 48, 2, -34}, // 0x40 '@' + {2208, 30, 34, 31, 1, -33}, // 0x41 'A' + {2336, 25, 34, 31, 4, -33}, // 0x42 'B' + {2443, 29, 36, 33, 2, -34}, // 0x43 'C' + {2574, 27, 34, 33, 4, -33}, // 0x44 'D' + {2689, 24, 34, 30, 4, -33}, // 0x45 'E' + {2791, 22, 34, 28, 4, -33}, // 0x46 'F' + {2885, 31, 36, 36, 2, -34}, // 0x47 'G' + {3025, 26, 34, 34, 4, -33}, // 0x48 'H' + {3136, 4, 34, 13, 5, -33}, // 0x49 'I' + {3153, 19, 35, 25, 2, -33}, // 0x4A 'J' + {3237, 27, 34, 32, 4, -33}, // 0x4B 'K' + {3352, 21, 34, 26, 4, -33}, // 0x4C 'L' + {3442, 32, 34, 40, 4, -33}, // 0x4D 'M' + {3578, 26, 34, 34, 4, -33}, // 0x4E 'N' + {3689, 33, 36, 37, 2, -34}, // 0x4F 'O' + {3838, 24, 34, 31, 4, -33}, // 0x50 'P' + {3940, 33, 38, 37, 2, -34}, // 0x51 'Q' + {4097, 26, 34, 33, 4, -33}, // 0x52 'R' + {4208, 27, 36, 31, 2, -34}, // 0x53 'S' + {4330, 26, 34, 30, 2, -33}, // 0x54 'T' + {4441, 26, 35, 34, 4, -33}, // 0x55 'U' + {4555, 29, 34, 30, 1, -33}, // 0x56 'V' + {4679, 42, 34, 44, 1, -33}, // 0x57 'W' + {4858, 29, 34, 31, 1, -33}, // 0x58 'X' + {4982, 30, 34, 32, 1, -33}, // 0x59 'Y' + {5110, 27, 34, 29, 1, -33}, // 0x5A 'Z' + {5225, 8, 44, 13, 3, -33}, // 0x5B '[' + {5269, 13, 35, 13, 0, -33}, // 0x5C '\' + {5326, 8, 44, 13, 1, -33}, // 0x5D ']' + {5370, 18, 18, 22, 2, -32}, // 0x5E '^' + {5411, 28, 2, 26, -1, 7}, // 0x5F '_' + {5418, 10, 7, 12, 1, -34}, // 0x60 '`' + {5427, 24, 27, 26, 1, -25}, // 0x61 'a' + {5508, 22, 35, 26, 3, -33}, // 0x62 'b' + {5605, 21, 27, 24, 1, -25}, // 0x63 'c' + {5676, 23, 35, 26, 1, -33}, // 0x64 'd' + {5777, 22, 27, 25, 1, -25}, // 0x65 'e' + {5852, 10, 34, 13, 1, -33}, // 0x66 'f' + {5895, 22, 36, 26, 1, -25}, // 0x67 'g' + {5994, 19, 34, 25, 3, -33}, // 0x68 'h' + {6075, 4, 34, 10, 3, -33}, // 0x69 'i' + {6092, 8, 44, 11, 0, -33}, // 0x6A 'j' + {6136, 21, 34, 24, 3, -33}, // 0x6B 'k' + {6226, 4, 34, 10, 3, -33}, // 0x6C 'l' + {6243, 32, 26, 38, 3, -25}, // 0x6D 'm' + {6347, 20, 26, 25, 3, -25}, // 0x6E 'n' + {6412, 23, 27, 25, 1, -25}, // 0x6F 'o' + {6490, 22, 35, 26, 3, -25}, // 0x70 'p' + {6587, 23, 35, 26, 1, -25}, // 0x71 'q' + {6688, 12, 26, 16, 3, -25}, // 0x72 'r' + {6727, 20, 27, 23, 1, -25}, // 0x73 's' + {6795, 10, 32, 13, 1, -30}, // 0x74 't' + {6835, 20, 26, 25, 3, -24}, // 0x75 'u' + {6900, 23, 25, 23, 0, -24}, // 0x76 'v' + {6972, 34, 25, 34, 0, -24}, // 0x77 'w' + {7079, 22, 25, 22, 0, -24}, // 0x78 'x' + {7148, 22, 35, 22, 0, -24}, // 0x79 'y' + {7245, 20, 25, 23, 1, -24}, // 0x7A 'z' + {7308, 11, 44, 16, 2, -33}, // 0x7B '{' + {7369, 3, 44, 12, 4, -33}, // 0x7C '|' + {7386, 11, 44, 16, 2, -33}, // 0x7D '}' + {7447, 19, 7, 24, 2, -19}}; // 0x7E '~' + +const GFXfont FreeSans24pt7b PROGMEM = {(uint8_t *)FreeSans24pt7bBitmaps, + (GFXglyph *)FreeSans24pt7bGlyphs, 0x20, + 0x7E, 56}; + +// Approx. 8136 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSans9pt7b.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSans9pt7b.h new file mode 100644 index 0000000..91c33b0 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSans9pt7b.h @@ -0,0 +1,203 @@ +#pragma once +#include + +const uint8_t FreeSans9pt7bBitmaps[] PROGMEM = { + 0xFF, 0xFF, 0xF8, 0xC0, 0xDE, 0xF7, 0x20, 0x09, 0x86, 0x41, 0x91, 0xFF, + 0x13, 0x04, 0xC3, 0x20, 0xC8, 0xFF, 0x89, 0x82, 0x61, 0x90, 0x10, 0x1F, + 0x14, 0xDA, 0x3D, 0x1E, 0x83, 0x40, 0x78, 0x17, 0x08, 0xF4, 0x7A, 0x35, + 0x33, 0xF0, 0x40, 0x20, 0x38, 0x10, 0xEC, 0x20, 0xC6, 0x20, 0xC6, 0x40, + 0xC6, 0x40, 0x6C, 0x80, 0x39, 0x00, 0x01, 0x3C, 0x02, 0x77, 0x02, 0x63, + 0x04, 0x63, 0x04, 0x77, 0x08, 0x3C, 0x0E, 0x06, 0x60, 0xCC, 0x19, 0x81, + 0xE0, 0x18, 0x0F, 0x03, 0x36, 0xC2, 0xD8, 0x73, 0x06, 0x31, 0xE3, 0xC4, + 0xFE, 0x13, 0x26, 0x6C, 0xCC, 0xCC, 0xC4, 0x66, 0x23, 0x10, 0x8C, 0x46, + 0x63, 0x33, 0x33, 0x32, 0x66, 0x4C, 0x80, 0x25, 0x7E, 0xA5, 0x00, 0x30, + 0xC3, 0x3F, 0x30, 0xC3, 0x0C, 0xD6, 0xF0, 0xC0, 0x08, 0x44, 0x21, 0x10, + 0x84, 0x42, 0x11, 0x08, 0x00, 0x3C, 0x66, 0x42, 0xC3, 0xC3, 0xC3, 0xC3, + 0xC3, 0xC3, 0xC3, 0x42, 0x66, 0x3C, 0x11, 0x3F, 0x33, 0x33, 0x33, 0x33, + 0x30, 0x3E, 0x31, 0xB0, 0x78, 0x30, 0x18, 0x1C, 0x1C, 0x1C, 0x18, 0x18, + 0x10, 0x08, 0x07, 0xF8, 0x3C, 0x66, 0xC3, 0xC3, 0x03, 0x06, 0x1C, 0x07, + 0x03, 0xC3, 0xC3, 0x66, 0x3C, 0x0C, 0x18, 0x71, 0x62, 0xC9, 0xA3, 0x46, + 0xFE, 0x18, 0x30, 0x60, 0xC0, 0x7F, 0x20, 0x10, 0x08, 0x08, 0x07, 0xF3, + 0x8C, 0x03, 0x01, 0x80, 0xF0, 0x6C, 0x63, 0xE0, 0x1E, 0x31, 0x98, 0x78, + 0x0C, 0x06, 0xF3, 0x8D, 0x83, 0xC1, 0xE0, 0xD0, 0x6C, 0x63, 0xE0, 0xFF, + 0x03, 0x02, 0x06, 0x04, 0x0C, 0x08, 0x18, 0x18, 0x18, 0x10, 0x30, 0x30, + 0x3E, 0x31, 0xB0, 0x78, 0x3C, 0x1B, 0x18, 0xF8, 0xC6, 0xC1, 0xE0, 0xF0, + 0x6C, 0x63, 0xE0, 0x3C, 0x66, 0xC2, 0xC3, 0xC3, 0xC3, 0x67, 0x3B, 0x03, + 0x03, 0xC2, 0x66, 0x3C, 0xC0, 0x00, 0x30, 0xC0, 0x00, 0x00, 0x64, 0xA0, + 0x00, 0x81, 0xC7, 0x8E, 0x0C, 0x07, 0x80, 0x70, 0x0E, 0x01, 0x80, 0xFF, + 0x80, 0x00, 0x1F, 0xF0, 0x00, 0x70, 0x0E, 0x01, 0xC0, 0x18, 0x38, 0x71, + 0xC0, 0x80, 0x00, 0x3E, 0x31, 0xB0, 0x78, 0x30, 0x18, 0x18, 0x38, 0x18, + 0x18, 0x0C, 0x00, 0x00, 0x01, 0x80, 0x03, 0xF0, 0x06, 0x0E, 0x06, 0x01, + 0x86, 0x00, 0x66, 0x1D, 0xBB, 0x31, 0xCF, 0x18, 0xC7, 0x98, 0x63, 0xCC, + 0x31, 0xE6, 0x11, 0xB3, 0x99, 0xCC, 0xF7, 0x86, 0x00, 0x01, 0x80, 0x00, + 0x70, 0x40, 0x0F, 0xE0, 0x06, 0x00, 0xF0, 0x0F, 0x00, 0x90, 0x19, 0x81, + 0x98, 0x10, 0x83, 0x0C, 0x3F, 0xC2, 0x04, 0x60, 0x66, 0x06, 0xC0, 0x30, + 0xFF, 0x18, 0x33, 0x03, 0x60, 0x6C, 0x0D, 0x83, 0x3F, 0xC6, 0x06, 0xC0, + 0x78, 0x0F, 0x01, 0xE0, 0x6F, 0xF8, 0x1F, 0x86, 0x19, 0x81, 0xA0, 0x3C, + 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x68, 0x0D, 0x83, 0x18, 0x61, 0xF0, + 0xFF, 0x18, 0x33, 0x03, 0x60, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, + 0x78, 0x0F, 0x03, 0x60, 0xCF, 0xF0, 0xFF, 0xE0, 0x30, 0x18, 0x0C, 0x06, + 0x03, 0xFD, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0F, 0xF8, 0xFF, 0xC0, 0xC0, + 0xC0, 0xC0, 0xC0, 0xFE, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x0F, 0x83, + 0x0E, 0x60, 0x66, 0x03, 0xC0, 0x0C, 0x00, 0xC1, 0xFC, 0x03, 0xC0, 0x36, + 0x03, 0x60, 0x73, 0x0F, 0x0F, 0x10, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, + 0x07, 0x80, 0xFF, 0xFE, 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x06, + 0xFF, 0xFF, 0xFF, 0xC0, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x07, + 0x8F, 0x1E, 0x27, 0x80, 0xC0, 0xD8, 0x33, 0x0C, 0x63, 0x0C, 0xC1, 0xB8, + 0x3F, 0x07, 0x30, 0xC3, 0x18, 0x63, 0x06, 0x60, 0x6C, 0x0C, 0xC0, 0xC0, + 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xE0, + 0x3F, 0x01, 0xFC, 0x1F, 0xE0, 0xFD, 0x05, 0xEC, 0x6F, 0x63, 0x79, 0x13, + 0xCD, 0x9E, 0x6C, 0xF1, 0x47, 0x8E, 0x3C, 0x71, 0x80, 0xE0, 0x7C, 0x0F, + 0xC1, 0xE8, 0x3D, 0x87, 0x98, 0xF1, 0x1E, 0x33, 0xC3, 0x78, 0x6F, 0x07, + 0xE0, 0x7C, 0x0E, 0x0F, 0x81, 0x83, 0x18, 0x0C, 0xC0, 0x6C, 0x01, 0xE0, + 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1B, 0x01, 0x98, 0x0C, 0x60, 0xC0, 0xF8, + 0x00, 0xFF, 0x30, 0x6C, 0x0F, 0x03, 0xC0, 0xF0, 0x6F, 0xF3, 0x00, 0xC0, + 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x00, 0x0F, 0x81, 0x83, 0x18, 0x0C, 0xC0, + 0x6C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1B, 0x01, 0x98, 0x6C, + 0x60, 0xC0, 0xFB, 0x00, 0x08, 0xFF, 0x8C, 0x0E, 0xC0, 0x6C, 0x06, 0xC0, + 0x6C, 0x0C, 0xFF, 0x8C, 0x0E, 0xC0, 0x6C, 0x06, 0xC0, 0x6C, 0x06, 0xC0, + 0x70, 0x3F, 0x18, 0x6C, 0x0F, 0x03, 0xC0, 0x1E, 0x01, 0xF0, 0x0E, 0x00, + 0xF0, 0x3C, 0x0D, 0x86, 0x3F, 0x00, 0xFF, 0x86, 0x03, 0x01, 0x80, 0xC0, + 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x80, 0xC0, 0xC0, 0x78, 0x0F, + 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x01, + 0xB0, 0x61, 0xF0, 0xC0, 0x6C, 0x0D, 0x81, 0x10, 0x63, 0x0C, 0x61, 0x04, + 0x60, 0xCC, 0x19, 0x01, 0x60, 0x3C, 0x07, 0x00, 0x60, 0xC1, 0x81, 0x30, + 0xE1, 0x98, 0x70, 0xCC, 0x28, 0x66, 0x26, 0x21, 0x13, 0x30, 0xC8, 0x98, + 0x6C, 0x4C, 0x14, 0x34, 0x0A, 0x1A, 0x07, 0x07, 0x03, 0x03, 0x80, 0x81, + 0x80, 0x60, 0x63, 0x0C, 0x30, 0xC1, 0x98, 0x0F, 0x00, 0xE0, 0x06, 0x00, + 0xF0, 0x19, 0x01, 0x98, 0x30, 0xC6, 0x0E, 0x60, 0x60, 0xC0, 0x36, 0x06, + 0x30, 0xC3, 0x0C, 0x19, 0x81, 0xD8, 0x0F, 0x00, 0x60, 0x06, 0x00, 0x60, + 0x06, 0x00, 0x60, 0x06, 0x00, 0xFF, 0xC0, 0x60, 0x30, 0x0C, 0x06, 0x03, + 0x01, 0xC0, 0x60, 0x30, 0x18, 0x06, 0x03, 0x00, 0xFF, 0xC0, 0xFB, 0x6D, + 0xB6, 0xDB, 0x6D, 0xB6, 0xE0, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84, + 0x10, 0x80, 0xED, 0xB6, 0xDB, 0x6D, 0xB6, 0xDB, 0xE0, 0x30, 0x60, 0xA2, + 0x44, 0xD8, 0xA1, 0x80, 0xFF, 0xC0, 0xC6, 0x30, 0x7E, 0x71, 0xB0, 0xC0, + 0x60, 0xF3, 0xDB, 0x0D, 0x86, 0xC7, 0x3D, 0xC0, 0xC0, 0x60, 0x30, 0x1B, + 0xCE, 0x36, 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x7C, 0x6D, 0xE0, 0x3C, + 0x66, 0xC3, 0xC0, 0xC0, 0xC0, 0xC0, 0xC3, 0x66, 0x3C, 0x03, 0x03, 0x03, + 0x3B, 0x67, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x67, 0x3B, 0x3C, 0x66, + 0xC3, 0xC3, 0xFF, 0xC0, 0xC0, 0xC3, 0x66, 0x3C, 0x36, 0x6F, 0x66, 0x66, + 0x66, 0x66, 0x60, 0x3B, 0x67, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x67, + 0x3B, 0x03, 0x03, 0xC6, 0x7C, 0xC0, 0xC0, 0xC0, 0xDE, 0xE3, 0xC3, 0xC3, + 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xFF, 0xFF, 0xC0, 0x30, 0x03, + 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0xE0, 0xC0, 0x60, 0x30, 0x18, 0x4C, + 0x46, 0x63, 0x61, 0xF0, 0xEC, 0x62, 0x31, 0x98, 0x6C, 0x30, 0xFF, 0xFF, + 0xFF, 0xC0, 0xDE, 0xF7, 0x1C, 0xF0, 0xC7, 0x86, 0x3C, 0x31, 0xE1, 0x8F, + 0x0C, 0x78, 0x63, 0xC3, 0x1E, 0x18, 0xC0, 0xDE, 0xE3, 0xC3, 0xC3, 0xC3, + 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x3C, 0x66, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, + 0xC3, 0x66, 0x3C, 0xDE, 0x71, 0xB0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, + 0xE3, 0x6F, 0x30, 0x18, 0x0C, 0x00, 0x3B, 0x67, 0xC3, 0xC3, 0xC3, 0xC3, + 0xC3, 0xC3, 0x67, 0x3B, 0x03, 0x03, 0x03, 0xDF, 0x31, 0x8C, 0x63, 0x18, + 0xC6, 0x00, 0x3E, 0xE3, 0xC0, 0xC0, 0xE0, 0x3C, 0x07, 0xC3, 0xE3, 0x7E, + 0x66, 0xF6, 0x66, 0x66, 0x66, 0x67, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, + 0xC3, 0xC3, 0xC7, 0x7B, 0xC1, 0xA0, 0x98, 0xCC, 0x42, 0x21, 0xB0, 0xD0, + 0x28, 0x1C, 0x0C, 0x00, 0xC6, 0x1E, 0x38, 0x91, 0xC4, 0xCA, 0x66, 0xD3, + 0x16, 0xD0, 0xA6, 0x87, 0x1C, 0x38, 0xC0, 0xC6, 0x00, 0x43, 0x62, 0x36, + 0x1C, 0x18, 0x1C, 0x3C, 0x26, 0x62, 0x43, 0xC1, 0x21, 0x98, 0xCC, 0x42, + 0x61, 0xB0, 0xD0, 0x38, 0x1C, 0x0C, 0x06, 0x03, 0x01, 0x03, 0x00, 0xFE, + 0x0C, 0x30, 0xC1, 0x86, 0x18, 0x20, 0xC1, 0xFC, 0x36, 0x66, 0x66, 0x6E, + 0xCE, 0x66, 0x66, 0x66, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xC6, 0x66, + 0x66, 0x67, 0x37, 0x66, 0x66, 0x66, 0xC0, 0x61, 0x24, 0x38}; + +const GFXglyph FreeSans9pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 5, 0, 1}, // 0x20 ' ' + {0, 2, 13, 6, 2, -12}, // 0x21 '!' + {4, 5, 4, 6, 1, -12}, // 0x22 '"' + {7, 10, 12, 10, 0, -11}, // 0x23 '#' + {22, 9, 16, 10, 1, -13}, // 0x24 '$' + {40, 16, 13, 16, 1, -12}, // 0x25 '%' + {66, 11, 13, 12, 1, -12}, // 0x26 '&' + {84, 2, 4, 4, 1, -12}, // 0x27 ''' + {85, 4, 17, 6, 1, -12}, // 0x28 '(' + {94, 4, 17, 6, 1, -12}, // 0x29 ')' + {103, 5, 5, 7, 1, -12}, // 0x2A '*' + {107, 6, 8, 11, 3, -7}, // 0x2B '+' + {113, 2, 4, 5, 2, 0}, // 0x2C ',' + {114, 4, 1, 6, 1, -4}, // 0x2D '-' + {115, 2, 1, 5, 1, 0}, // 0x2E '.' + {116, 5, 13, 5, 0, -12}, // 0x2F '/' + {125, 8, 13, 10, 1, -12}, // 0x30 '0' + {138, 4, 13, 10, 3, -12}, // 0x31 '1' + {145, 9, 13, 10, 1, -12}, // 0x32 '2' + {160, 8, 13, 10, 1, -12}, // 0x33 '3' + {173, 7, 13, 10, 2, -12}, // 0x34 '4' + {185, 9, 13, 10, 1, -12}, // 0x35 '5' + {200, 9, 13, 10, 1, -12}, // 0x36 '6' + {215, 8, 13, 10, 0, -12}, // 0x37 '7' + {228, 9, 13, 10, 1, -12}, // 0x38 '8' + {243, 8, 13, 10, 1, -12}, // 0x39 '9' + {256, 2, 10, 5, 1, -9}, // 0x3A ':' + {259, 3, 12, 5, 1, -8}, // 0x3B ';' + {264, 9, 9, 11, 1, -8}, // 0x3C '<' + {275, 9, 4, 11, 1, -5}, // 0x3D '=' + {280, 9, 9, 11, 1, -8}, // 0x3E '>' + {291, 9, 13, 10, 1, -12}, // 0x3F '?' + {306, 17, 16, 18, 1, -12}, // 0x40 '@' + {340, 12, 13, 12, 0, -12}, // 0x41 'A' + {360, 11, 13, 12, 1, -12}, // 0x42 'B' + {378, 11, 13, 13, 1, -12}, // 0x43 'C' + {396, 11, 13, 13, 1, -12}, // 0x44 'D' + {414, 9, 13, 11, 1, -12}, // 0x45 'E' + {429, 8, 13, 11, 1, -12}, // 0x46 'F' + {442, 12, 13, 14, 1, -12}, // 0x47 'G' + {462, 11, 13, 13, 1, -12}, // 0x48 'H' + {480, 2, 13, 5, 2, -12}, // 0x49 'I' + {484, 7, 13, 10, 1, -12}, // 0x4A 'J' + {496, 11, 13, 12, 1, -12}, // 0x4B 'K' + {514, 8, 13, 10, 1, -12}, // 0x4C 'L' + {527, 13, 13, 15, 1, -12}, // 0x4D 'M' + {549, 11, 13, 13, 1, -12}, // 0x4E 'N' + {567, 13, 13, 14, 1, -12}, // 0x4F 'O' + {589, 10, 13, 12, 1, -12}, // 0x50 'P' + {606, 13, 14, 14, 1, -12}, // 0x51 'Q' + {629, 12, 13, 13, 1, -12}, // 0x52 'R' + {649, 10, 13, 12, 1, -12}, // 0x53 'S' + {666, 9, 13, 11, 1, -12}, // 0x54 'T' + {681, 11, 13, 13, 1, -12}, // 0x55 'U' + {699, 11, 13, 12, 0, -12}, // 0x56 'V' + {717, 17, 13, 17, 0, -12}, // 0x57 'W' + {745, 12, 13, 12, 0, -12}, // 0x58 'X' + {765, 12, 13, 12, 0, -12}, // 0x59 'Y' + {785, 10, 13, 11, 1, -12}, // 0x5A 'Z' + {802, 3, 17, 5, 1, -12}, // 0x5B '[' + {809, 5, 13, 5, 0, -12}, // 0x5C '\' + {818, 3, 17, 5, 0, -12}, // 0x5D ']' + {825, 7, 7, 8, 1, -12}, // 0x5E '^' + {832, 10, 1, 10, 0, 3}, // 0x5F '_' + {834, 4, 3, 5, 0, -12}, // 0x60 '`' + {836, 9, 10, 10, 1, -9}, // 0x61 'a' + {848, 9, 13, 10, 1, -12}, // 0x62 'b' + {863, 8, 10, 9, 1, -9}, // 0x63 'c' + {873, 8, 13, 10, 1, -12}, // 0x64 'd' + {886, 8, 10, 10, 1, -9}, // 0x65 'e' + {896, 4, 13, 5, 1, -12}, // 0x66 'f' + {903, 8, 14, 10, 1, -9}, // 0x67 'g' + {917, 8, 13, 10, 1, -12}, // 0x68 'h' + {930, 2, 13, 4, 1, -12}, // 0x69 'i' + {934, 4, 17, 4, 0, -12}, // 0x6A 'j' + {943, 9, 13, 9, 1, -12}, // 0x6B 'k' + {958, 2, 13, 4, 1, -12}, // 0x6C 'l' + {962, 13, 10, 15, 1, -9}, // 0x6D 'm' + {979, 8, 10, 10, 1, -9}, // 0x6E 'n' + {989, 8, 10, 10, 1, -9}, // 0x6F 'o' + {999, 9, 13, 10, 1, -9}, // 0x70 'p' + {1014, 8, 13, 10, 1, -9}, // 0x71 'q' + {1027, 5, 10, 6, 1, -9}, // 0x72 'r' + {1034, 8, 10, 9, 1, -9}, // 0x73 's' + {1044, 4, 12, 5, 1, -11}, // 0x74 't' + {1050, 8, 10, 10, 1, -9}, // 0x75 'u' + {1060, 9, 10, 9, 0, -9}, // 0x76 'v' + {1072, 13, 10, 13, 0, -9}, // 0x77 'w' + {1089, 8, 10, 9, 0, -9}, // 0x78 'x' + {1099, 9, 14, 9, 0, -9}, // 0x79 'y' + {1115, 7, 10, 9, 1, -9}, // 0x7A 'z' + {1124, 4, 17, 6, 1, -12}, // 0x7B '{' + {1133, 2, 17, 4, 2, -12}, // 0x7C '|' + {1138, 4, 17, 6, 1, -12}, // 0x7D '}' + {1147, 7, 3, 9, 1, -7}}; // 0x7E '~' + +const GFXfont FreeSans9pt7b PROGMEM = {(uint8_t *)FreeSans9pt7bBitmaps, + (GFXglyph *)FreeSans9pt7bGlyphs, 0x20, + 0x7E, 22}; + +// Approx. 1822 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSansBold12pt7b.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSansBold12pt7b.h new file mode 100644 index 0000000..c1d6ef4 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSansBold12pt7b.h @@ -0,0 +1,290 @@ +#pragma once +#include + +const uint8_t FreeSansBold12pt7bBitmaps[] PROGMEM = { + 0xFF, 0xFF, 0xFF, 0xFF, 0x76, 0x66, 0x60, 0xFF, 0xF0, 0xF3, 0xFC, 0xFF, + 0x3F, 0xCF, 0x61, 0x98, 0x60, 0x0E, 0x70, 0x73, 0x83, 0x18, 0xFF, 0xF7, + 0xFF, 0xBF, 0xFC, 0x73, 0x83, 0x18, 0x18, 0xC7, 0xFF, 0xBF, 0xFD, 0xFF, + 0xE3, 0x18, 0x39, 0xC1, 0xCE, 0x0E, 0x70, 0x02, 0x00, 0x7E, 0x0F, 0xF8, + 0x7F, 0xE7, 0xAF, 0xB9, 0x3D, 0xC8, 0x0F, 0x40, 0x3F, 0x00, 0xFF, 0x00, + 0xFC, 0x05, 0xFF, 0x27, 0xF9, 0x3F, 0xEB, 0xEF, 0xFE, 0x3F, 0xE0, 0x7C, + 0x00, 0x80, 0x04, 0x00, 0x3C, 0x06, 0x0F, 0xC1, 0x81, 0xFC, 0x30, 0x73, + 0x8C, 0x0C, 0x31, 0x81, 0xCE, 0x60, 0x1F, 0xCC, 0x03, 0xF3, 0x00, 0x3C, + 0x67, 0x80, 0x19, 0xF8, 0x02, 0x7F, 0x80, 0xCE, 0x70, 0x11, 0x86, 0x06, + 0x39, 0xC1, 0x87, 0xF8, 0x30, 0x7E, 0x0C, 0x07, 0x80, 0x07, 0x80, 0x1F, + 0xC0, 0x3F, 0xE0, 0x3C, 0xE0, 0x3C, 0xE0, 0x3E, 0xE0, 0x0F, 0xC0, 0x07, + 0x00, 0x3F, 0x8C, 0x7F, 0xCC, 0xF1, 0xFC, 0xF0, 0xF8, 0xF0, 0x78, 0xF8, + 0xF8, 0x7F, 0xFC, 0x3F, 0xDE, 0x1F, 0x8E, 0xFF, 0xFF, 0x66, 0x0C, 0x73, + 0x8E, 0x71, 0xC7, 0x38, 0xE3, 0x8E, 0x38, 0xE3, 0x8E, 0x1C, 0x71, 0xC3, + 0x8E, 0x18, 0x70, 0xC3, 0x87, 0x1C, 0x38, 0xE3, 0x87, 0x1C, 0x71, 0xC7, + 0x1C, 0x71, 0xCE, 0x38, 0xE7, 0x1C, 0x63, 0x80, 0x10, 0x23, 0x5F, 0xF3, + 0x87, 0x1B, 0x14, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x0F, 0xFF, 0xFF, 0xFF, + 0xF8, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x00, 0xFF, 0xF3, 0x36, 0xC0, 0xFF, + 0xFF, 0xC0, 0xFF, 0xF0, 0x0C, 0x30, 0x86, 0x18, 0x61, 0x0C, 0x30, 0xC2, + 0x18, 0x61, 0x84, 0x30, 0xC0, 0x1F, 0x83, 0xFC, 0x7F, 0xE7, 0x9E, 0xF0, + 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, + 0xF7, 0x9E, 0x7F, 0xE3, 0xFC, 0x0F, 0x00, 0x06, 0x1C, 0x7F, 0xFF, 0xE3, + 0xC7, 0x8F, 0x1E, 0x3C, 0x78, 0xF1, 0xE3, 0xC7, 0x8F, 0x1E, 0x1F, 0x83, + 0xFC, 0x7F, 0xEF, 0x9F, 0xF0, 0xFF, 0x0F, 0x00, 0xF0, 0x0F, 0x01, 0xE0, + 0x3C, 0x0F, 0x81, 0xE0, 0x3C, 0x03, 0x80, 0x7F, 0xF7, 0xFF, 0x7F, 0xF0, + 0x1F, 0x07, 0xFC, 0xFF, 0xEF, 0x1E, 0xF1, 0xE0, 0x1E, 0x03, 0xC0, 0x78, + 0x07, 0xC0, 0x1E, 0x00, 0xF0, 0x0F, 0xF0, 0xFF, 0x1F, 0x7F, 0xE7, 0xFC, + 0x1F, 0x80, 0x03, 0xC0, 0xF8, 0x1F, 0x07, 0xE1, 0xBC, 0x27, 0x8C, 0xF3, + 0x1E, 0x63, 0xD8, 0x7B, 0xFF, 0xFF, 0xFF, 0xFE, 0x07, 0x80, 0xF0, 0x1E, + 0x03, 0xC0, 0x3F, 0xE7, 0xFE, 0x7F, 0xE7, 0x00, 0x60, 0x06, 0xF8, 0x7F, + 0xCF, 0xFE, 0xF1, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xFE, 0x1E, 0xFF, + 0xE7, 0xFC, 0x3F, 0x00, 0x0F, 0x83, 0xFC, 0x7F, 0xE7, 0x9F, 0xF0, 0x0F, + 0x78, 0xFF, 0xCF, 0xFE, 0xF9, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xF7, + 0x9F, 0x7F, 0xE3, 0xFC, 0x0F, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0xE0, + 0x1C, 0x07, 0x01, 0xE0, 0x38, 0x0F, 0x01, 0xC0, 0x78, 0x0F, 0x01, 0xE0, + 0x38, 0x0F, 0x01, 0xE0, 0x3C, 0x00, 0x0F, 0x03, 0xFC, 0x7F, 0xC7, 0x9E, + 0x70, 0xE7, 0x0E, 0x39, 0xC1, 0xF8, 0x3F, 0xC7, 0x9E, 0xF0, 0xFF, 0x0F, + 0xF0, 0xFF, 0x9F, 0x7F, 0xE3, 0xFC, 0x1F, 0x80, 0x1F, 0x03, 0xFC, 0x7F, + 0xEF, 0x9E, 0xF0, 0xEF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF9, 0xF7, 0xFF, 0x3F, + 0xF1, 0xEF, 0x00, 0xEF, 0x1E, 0x7F, 0xE7, 0xFC, 0x1F, 0x00, 0xFF, 0xF0, + 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x0F, 0xFF, 0x11, 0x6C, + 0x00, 0x10, 0x07, 0x03, 0xF1, 0xFC, 0x7E, 0x0F, 0x80, 0xE0, 0x0F, 0xC0, + 0x3F, 0x80, 0x7F, 0x00, 0xF0, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, + 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x0E, 0x00, 0xFC, + 0x07, 0xF0, 0x0F, 0xE0, 0x1F, 0x00, 0xF0, 0x7F, 0x1F, 0x8F, 0xE0, 0xF0, + 0x08, 0x00, 0x1F, 0x07, 0xFC, 0x7F, 0xEF, 0x9F, 0xF0, 0xFF, 0x0F, 0x00, + 0xF0, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x0E, 0x00, 0xE0, 0x00, + 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x00, 0xFE, 0x00, 0x1F, 0xFC, 0x03, 0xC0, + 0xF0, 0x38, 0x01, 0xC3, 0x80, 0x07, 0x18, 0x3D, 0x99, 0x87, 0xEC, 0x6C, + 0x71, 0xC3, 0xC3, 0x06, 0x1E, 0x18, 0x30, 0xF1, 0x81, 0x87, 0x8C, 0x18, + 0x7C, 0x60, 0xC3, 0x63, 0x8E, 0x3B, 0x8F, 0xDF, 0x8C, 0x3C, 0xF0, 0x70, + 0x00, 0x01, 0xC0, 0x00, 0x07, 0x80, 0x80, 0x1F, 0xFE, 0x00, 0x1F, 0xC0, + 0x00, 0x03, 0xE0, 0x03, 0xE0, 0x03, 0xE0, 0x07, 0xF0, 0x07, 0xF0, 0x07, + 0x70, 0x0F, 0x78, 0x0E, 0x78, 0x0E, 0x38, 0x1E, 0x3C, 0x1C, 0x3C, 0x3F, + 0xFC, 0x3F, 0xFE, 0x3F, 0xFE, 0x78, 0x0E, 0x78, 0x0F, 0x70, 0x0F, 0xF0, + 0x07, 0xFF, 0xC3, 0xFF, 0xCF, 0xFF, 0x3C, 0x3E, 0xF0, 0x7B, 0xC1, 0xEF, + 0x0F, 0xBF, 0xFC, 0xFF, 0xE3, 0xFF, 0xCF, 0x07, 0xBC, 0x0F, 0xF0, 0x3F, + 0xC0, 0xFF, 0x07, 0xFF, 0xFE, 0xFF, 0xFB, 0xFF, 0x80, 0x07, 0xE0, 0x1F, + 0xF8, 0x3F, 0xFC, 0x7C, 0x3E, 0x78, 0x1F, 0xF8, 0x0F, 0xF0, 0x00, 0xF0, + 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF8, 0x0F, 0x78, + 0x1F, 0x7C, 0x3E, 0x3F, 0xFE, 0x1F, 0xFC, 0x07, 0xF0, 0xFF, 0xE1, 0xFF, + 0xE3, 0xFF, 0xE7, 0x83, 0xEF, 0x03, 0xDE, 0x07, 0xFC, 0x07, 0xF8, 0x0F, + 0xF0, 0x1F, 0xE0, 0x3F, 0xC0, 0x7F, 0x80, 0xFF, 0x03, 0xFE, 0x07, 0xBC, + 0x1F, 0x7F, 0xFC, 0xFF, 0xF1, 0xFF, 0x80, 0xFF, 0xF7, 0xFF, 0xBF, 0xFD, + 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1F, 0xFC, 0xFF, 0xE7, 0xFF, 0x3C, + 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, + 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, + 0xFE, 0xFF, 0xEF, 0xFE, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, + 0x00, 0xF0, 0x0F, 0x00, 0x03, 0xF0, 0x0F, 0xFC, 0x3F, 0xFE, 0x3E, 0x1F, + 0x78, 0x07, 0x78, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF0, 0x7F, 0xF0, 0x7F, + 0xF0, 0x7F, 0xF0, 0x07, 0x78, 0x07, 0x7C, 0x0F, 0x3E, 0x1F, 0x3F, 0xFB, + 0x0F, 0xFB, 0x03, 0xE3, 0xF0, 0x3F, 0xC0, 0xFF, 0x03, 0xFC, 0x0F, 0xF0, + 0x3F, 0xC0, 0xFF, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xFC, + 0x0F, 0xF0, 0x3F, 0xC0, 0xFF, 0x03, 0xFC, 0x0F, 0xF0, 0x3F, 0xC0, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xE0, 0x3C, + 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, + 0xF8, 0xFF, 0x1F, 0xE3, 0xFC, 0x7B, 0xFE, 0x7F, 0xC3, 0xE0, 0xF0, 0x3E, + 0xF0, 0x3C, 0xF0, 0x78, 0xF0, 0xF0, 0xF1, 0xE0, 0xF3, 0xC0, 0xF7, 0x80, + 0xFF, 0x00, 0xFF, 0x80, 0xFF, 0x80, 0xFB, 0xC0, 0xF1, 0xE0, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0x78, 0xF0, 0x3C, 0xF0, 0x3E, 0xF0, 0x1E, 0xF0, 0x1E, + 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, + 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0xFF, 0xFF, 0xFF, 0xFC, 0xF8, + 0x1F, 0xFE, 0x0F, 0xFF, 0x0F, 0xFF, 0x87, 0xFF, 0xC3, 0xFF, 0xE1, 0xFF, + 0xF9, 0xFF, 0xFC, 0xEF, 0xFE, 0x77, 0xFB, 0x3B, 0xFD, 0xDD, 0xFE, 0xFC, + 0xFF, 0x7E, 0x7F, 0x9F, 0x3F, 0xCF, 0x9F, 0xE7, 0x8F, 0xF3, 0xC7, 0xF8, + 0xE3, 0xC0, 0xF0, 0x1F, 0xF0, 0x3F, 0xF0, 0x7F, 0xE0, 0xFF, 0xE1, 0xFF, + 0xC3, 0xFD, 0xC7, 0xFB, 0x8F, 0xF3, 0x9F, 0xE7, 0x3F, 0xC7, 0x7F, 0x8F, + 0xFF, 0x0F, 0xFE, 0x1F, 0xFC, 0x1F, 0xF8, 0x1F, 0xF0, 0x3F, 0xE0, 0x3C, + 0x03, 0xE0, 0x0F, 0xFC, 0x0F, 0xFF, 0x87, 0xC7, 0xC7, 0x80, 0xF3, 0xC0, + 0x7B, 0xC0, 0x1F, 0xE0, 0x0F, 0xF0, 0x07, 0xF8, 0x03, 0xFC, 0x01, 0xFE, + 0x00, 0xF7, 0x80, 0xF3, 0xC0, 0x78, 0xF0, 0xF8, 0x7F, 0xFC, 0x1F, 0xFC, + 0x03, 0xF8, 0x00, 0xFF, 0xE3, 0xFF, 0xEF, 0xFF, 0xBC, 0x1F, 0xF0, 0x3F, + 0xC0, 0xFF, 0x03, 0xFC, 0x1F, 0xFF, 0xFB, 0xFF, 0xCF, 0xFE, 0x3C, 0x00, + 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x00, 0x03, + 0xE0, 0x0F, 0xFC, 0x0F, 0xFF, 0x87, 0xC7, 0xC7, 0x80, 0xF3, 0xC0, 0x7B, + 0xC0, 0x1F, 0xE0, 0x0F, 0xF0, 0x07, 0xF8, 0x03, 0xFC, 0x01, 0xFE, 0x04, + 0xF7, 0x87, 0xF3, 0xC3, 0xF8, 0xF0, 0xF8, 0x7F, 0xFC, 0x1F, 0xFF, 0x83, + 0xF1, 0x80, 0x00, 0x00, 0xFF, 0xF8, 0xFF, 0xFC, 0xFF, 0xFC, 0xF0, 0x3E, + 0xF0, 0x1E, 0xF0, 0x1E, 0xF0, 0x1E, 0xF0, 0x3C, 0xFF, 0xF8, 0xFF, 0xF0, + 0xFF, 0xF8, 0xF0, 0x3C, 0xF0, 0x3C, 0xF0, 0x3C, 0xF0, 0x3C, 0xF0, 0x3C, + 0xF0, 0x3C, 0xF0, 0x1F, 0x0F, 0xC0, 0x7F, 0xE1, 0xFF, 0xE7, 0xC3, 0xEF, + 0x03, 0xDE, 0x00, 0x3C, 0x00, 0x7F, 0x00, 0x7F, 0xF0, 0x3F, 0xF8, 0x0F, + 0xF8, 0x01, 0xF0, 0x01, 0xFE, 0x03, 0xDE, 0x0F, 0xBF, 0xFE, 0x3F, 0xF8, + 0x1F, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, + 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, + 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0xF0, 0x3F, 0xC0, 0xFF, 0x03, 0xFC, 0x0F, + 0xF0, 0x3F, 0xC0, 0xFF, 0x03, 0xFC, 0x0F, 0xF0, 0x3F, 0xC0, 0xFF, 0x03, + 0xFC, 0x0F, 0xF0, 0x3F, 0xC0, 0xF7, 0x87, 0x9F, 0xFE, 0x3F, 0xF0, 0x3F, + 0x00, 0x70, 0x0E, 0xF0, 0x3D, 0xE0, 0x79, 0xC0, 0xE3, 0x81, 0xC7, 0x87, + 0x87, 0x0E, 0x0E, 0x1C, 0x1E, 0x78, 0x1C, 0xE0, 0x39, 0xC0, 0x73, 0x80, + 0x7E, 0x00, 0xFC, 0x01, 0xF8, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x70, + 0x38, 0x1C, 0xE0, 0xF0, 0x79, 0xE1, 0xF0, 0xF3, 0xC3, 0xE1, 0xE3, 0x87, + 0xC3, 0x87, 0x0F, 0x87, 0x0E, 0x3B, 0x9E, 0x1E, 0x77, 0x38, 0x1C, 0xEE, + 0x70, 0x39, 0xCC, 0xE0, 0x73, 0x99, 0xC0, 0x6E, 0x3F, 0x00, 0xFC, 0x7E, + 0x01, 0xF8, 0xFC, 0x03, 0xF0, 0xF8, 0x03, 0xE1, 0xE0, 0x07, 0x83, 0xC0, + 0x0F, 0x07, 0x80, 0xF0, 0x3C, 0xF0, 0xF9, 0xE1, 0xE1, 0xE7, 0x83, 0xCF, + 0x03, 0xFC, 0x03, 0xF0, 0x07, 0xE0, 0x07, 0x80, 0x0F, 0x00, 0x3F, 0x00, + 0xFF, 0x01, 0xFE, 0x07, 0x9E, 0x0F, 0x1E, 0x3C, 0x3C, 0xF8, 0x3D, 0xE0, + 0x78, 0xF0, 0x1E, 0x78, 0x1E, 0x78, 0x3C, 0x3C, 0x3C, 0x3C, 0x78, 0x1E, + 0x78, 0x0E, 0x70, 0x0F, 0xF0, 0x07, 0xE0, 0x07, 0xE0, 0x03, 0xC0, 0x03, + 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, + 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x01, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, + 0x00, 0xF8, 0x07, 0x80, 0x78, 0x07, 0x80, 0x7C, 0x03, 0xC0, 0x3C, 0x03, + 0xC0, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFC, 0xF3, 0xCF, + 0x3C, 0xF3, 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, 0xFF, 0xFF, + 0xC0, 0xC1, 0x81, 0x03, 0x06, 0x04, 0x0C, 0x18, 0x10, 0x30, 0x60, 0x40, + 0xC1, 0x81, 0x03, 0x06, 0xFF, 0xFF, 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, 0xF3, + 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, 0xF3, 0xCF, 0xFF, 0xFF, 0xC0, 0x0F, 0x00, + 0xF0, 0x0F, 0x01, 0xF8, 0x1B, 0x83, 0x9C, 0x39, 0xC3, 0x0C, 0x70, 0xE7, + 0x0E, 0xE0, 0x70, 0xFF, 0xFF, 0xFF, 0xFC, 0xE6, 0x30, 0x1F, 0x83, 0xFF, + 0x1F, 0xFD, 0xE1, 0xE0, 0x0F, 0x03, 0xF9, 0xFF, 0xDF, 0x1E, 0xF0, 0xF7, + 0x8F, 0xBF, 0xFC, 0xFF, 0xE3, 0xCF, 0x80, 0xF0, 0x07, 0x80, 0x3C, 0x01, + 0xE0, 0x0F, 0x00, 0x7B, 0xC3, 0xFF, 0x9F, 0xFE, 0xF8, 0xF7, 0x83, 0xFC, + 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3F, 0xE3, 0xDF, 0xFE, 0xFF, 0xE7, 0xBE, + 0x00, 0x0F, 0x83, 0xFE, 0x7F, 0xF7, 0x8F, 0xF0, 0x7F, 0x00, 0xF0, 0x0F, + 0x00, 0xF0, 0x77, 0x8F, 0x7F, 0xF3, 0xFE, 0x0F, 0x80, 0x00, 0x78, 0x03, + 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x8F, 0xBC, 0xFF, 0xEF, 0xFF, 0x78, 0xFF, + 0x83, 0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3D, 0xE3, 0xEF, 0xFF, 0x3F, + 0xF8, 0xFB, 0xC0, 0x1F, 0x81, 0xFE, 0x1F, 0xF9, 0xF1, 0xCF, 0x07, 0x7F, + 0xFB, 0xFF, 0xDE, 0x00, 0xF0, 0x03, 0xC3, 0x9F, 0xFC, 0x7F, 0xC0, 0xF8, + 0x00, 0x3E, 0xFD, 0xFB, 0xC7, 0x9F, 0xBF, 0x3C, 0x78, 0xF1, 0xE3, 0xC7, + 0x8F, 0x1E, 0x3C, 0x78, 0xF0, 0x1E, 0x79, 0xFB, 0xDF, 0xFE, 0xF1, 0xFF, + 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7F, 0xC7, 0xDF, 0xFE, 0x7F, + 0xF1, 0xF7, 0x80, 0x3C, 0x01, 0xFF, 0x1E, 0x7F, 0xF0, 0xFE, 0x00, 0xF0, + 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x7C, 0xFF, 0xEF, 0xFF, 0xF9, + 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, + 0xFF, 0x0F, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3C, + 0xF3, 0xC0, 0x00, 0xF3, 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, + 0xF3, 0xCF, 0xFF, 0xFF, 0x80, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, + 0x0F, 0x0F, 0xF1, 0xEF, 0x3C, 0xF7, 0x8F, 0xF0, 0xFF, 0x0F, 0xF8, 0xFF, + 0x8F, 0x3C, 0xF1, 0xCF, 0x1E, 0xF0, 0xEF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0x8F, 0x9F, 0xFB, 0xFB, 0xFF, 0xFF, + 0xFC, 0xF8, 0xFF, 0x1E, 0x1F, 0xE3, 0xC3, 0xFC, 0x78, 0x7F, 0x8F, 0x0F, + 0xF1, 0xE1, 0xFE, 0x3C, 0x3F, 0xC7, 0x87, 0xF8, 0xF0, 0xFF, 0x1E, 0x1E, + 0xF7, 0xCF, 0xFE, 0xFF, 0xFF, 0x9F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, + 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xF0, 0x0F, 0x81, 0xFF, 0x1F, + 0xFC, 0xF1, 0xEF, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7B, 0xC7, + 0x9F, 0xFC, 0x7F, 0xC0, 0xF8, 0x00, 0xF7, 0xC7, 0xFF, 0x3F, 0xFD, 0xF1, + 0xEF, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7F, 0xC7, 0xBF, 0xFD, + 0xFF, 0xCF, 0x78, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x00, + 0x0F, 0x79, 0xFF, 0xDF, 0xFE, 0xF1, 0xFF, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, + 0x0F, 0xF0, 0x7B, 0xC7, 0xDF, 0xFE, 0x7F, 0xF1, 0xF7, 0x80, 0x3C, 0x01, + 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0xF3, 0xF7, 0xFF, 0xF8, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x1F, 0x87, 0xFC, 0xFF, 0xEF, + 0x0F, 0xF8, 0x0F, 0xF0, 0x7F, 0xE0, 0xFF, 0x01, 0xFF, 0x0F, 0xFF, 0xE7, + 0xFE, 0x1F, 0x80, 0x79, 0xE7, 0xBF, 0xFD, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, + 0x7D, 0xF3, 0xC0, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, + 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x1F, 0xFF, 0xF7, 0xFF, 0x3E, 0xF0, 0xF0, + 0x7B, 0x83, 0x9E, 0x1C, 0xF1, 0xE3, 0x8E, 0x1C, 0x70, 0x77, 0x83, 0xB8, + 0x1D, 0xC0, 0x7E, 0x03, 0xE0, 0x1F, 0x00, 0x70, 0x00, 0xF0, 0xE1, 0xDC, + 0x78, 0x77, 0x1F, 0x3D, 0xE7, 0xCF, 0x79, 0xB3, 0x8E, 0x6C, 0xE3, 0xBB, + 0x38, 0xEE, 0xFC, 0x1F, 0x3F, 0x07, 0xC7, 0xC1, 0xF1, 0xF0, 0x7C, 0x78, + 0x0E, 0x1E, 0x00, 0x78, 0xF3, 0xC7, 0x8F, 0x78, 0x3B, 0x81, 0xFC, 0x07, + 0xC0, 0x1E, 0x01, 0xF0, 0x1F, 0xC0, 0xEF, 0x0F, 0x78, 0xF1, 0xE7, 0x87, + 0x00, 0xF0, 0x7B, 0x83, 0x9E, 0x1C, 0x71, 0xE3, 0x8E, 0x1E, 0x70, 0x73, + 0x83, 0xB8, 0x1F, 0xC0, 0x7E, 0x03, 0xE0, 0x0F, 0x00, 0x70, 0x03, 0x80, + 0x3C, 0x07, 0xC0, 0x3E, 0x01, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, 0xFC, 0x0F, + 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x0F, 0xFF, 0xFF, 0xFF, 0xC0, + 0x1C, 0xF3, 0xCE, 0x38, 0xE3, 0x8E, 0x38, 0xE3, 0xBC, 0xF0, 0xE3, 0x8E, + 0x38, 0xE3, 0x8E, 0x3C, 0xF1, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xE3, 0x8F, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x0F, 0x3D, 0xC7, 0x1C, + 0x71, 0xC7, 0x1C, 0xF3, 0xCE, 0x00, 0x78, 0x0F, 0xE0, 0xCF, 0x30, 0x7F, + 0x01, 0xE0}; + +const GFXglyph FreeSansBold12pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 7, 0, 1}, // 0x20 ' ' + {0, 4, 17, 8, 3, -16}, // 0x21 '!' + {9, 10, 6, 11, 1, -17}, // 0x22 '"' + {17, 13, 16, 13, 0, -15}, // 0x23 '#' + {43, 13, 20, 13, 0, -17}, // 0x24 '$' + {76, 19, 17, 21, 1, -16}, // 0x25 '%' + {117, 16, 17, 17, 1, -16}, // 0x26 '&' + {151, 4, 6, 6, 1, -17}, // 0x27 ''' + {154, 6, 22, 8, 1, -17}, // 0x28 '(' + {171, 6, 22, 8, 1, -17}, // 0x29 ')' + {188, 7, 8, 9, 1, -17}, // 0x2A '*' + {195, 11, 11, 14, 2, -10}, // 0x2B '+' + {211, 4, 7, 6, 1, -2}, // 0x2C ',' + {215, 6, 3, 8, 1, -7}, // 0x2D '-' + {218, 4, 3, 6, 1, -2}, // 0x2E '.' + {220, 6, 17, 7, 0, -16}, // 0x2F '/' + {233, 12, 17, 13, 1, -16}, // 0x30 '0' + {259, 7, 17, 14, 3, -16}, // 0x31 '1' + {274, 12, 17, 13, 1, -16}, // 0x32 '2' + {300, 12, 17, 13, 1, -16}, // 0x33 '3' + {326, 11, 17, 13, 1, -16}, // 0x34 '4' + {350, 12, 17, 13, 1, -16}, // 0x35 '5' + {376, 12, 17, 13, 1, -16}, // 0x36 '6' + {402, 11, 17, 13, 1, -16}, // 0x37 '7' + {426, 12, 17, 13, 1, -16}, // 0x38 '8' + {452, 12, 17, 13, 1, -16}, // 0x39 '9' + {478, 4, 12, 6, 1, -11}, // 0x3A ':' + {484, 4, 16, 6, 1, -11}, // 0x3B ';' + {492, 12, 12, 14, 1, -11}, // 0x3C '<' + {510, 12, 9, 14, 1, -9}, // 0x3D '=' + {524, 12, 12, 14, 1, -11}, // 0x3E '>' + {542, 12, 18, 15, 2, -17}, // 0x3F '?' + {569, 21, 21, 23, 1, -17}, // 0x40 '@' + {625, 16, 18, 17, 0, -17}, // 0x41 'A' + {661, 14, 18, 17, 2, -17}, // 0x42 'B' + {693, 16, 18, 17, 1, -17}, // 0x43 'C' + {729, 15, 18, 17, 2, -17}, // 0x44 'D' + {763, 13, 18, 16, 2, -17}, // 0x45 'E' + {793, 12, 18, 15, 2, -17}, // 0x46 'F' + {820, 16, 18, 18, 1, -17}, // 0x47 'G' + {856, 14, 18, 18, 2, -17}, // 0x48 'H' + {888, 4, 18, 7, 2, -17}, // 0x49 'I' + {897, 11, 18, 14, 1, -17}, // 0x4A 'J' + {922, 16, 18, 17, 2, -17}, // 0x4B 'K' + {958, 11, 18, 15, 2, -17}, // 0x4C 'L' + {983, 17, 18, 21, 2, -17}, // 0x4D 'M' + {1022, 15, 18, 18, 2, -17}, // 0x4E 'N' + {1056, 17, 18, 19, 1, -17}, // 0x4F 'O' + {1095, 14, 18, 16, 2, -17}, // 0x50 'P' + {1127, 17, 19, 19, 1, -17}, // 0x51 'Q' + {1168, 16, 18, 17, 2, -17}, // 0x52 'R' + {1204, 15, 18, 16, 1, -17}, // 0x53 'S' + {1238, 12, 18, 15, 2, -17}, // 0x54 'T' + {1265, 14, 18, 18, 2, -17}, // 0x55 'U' + {1297, 15, 18, 16, 0, -17}, // 0x56 'V' + {1331, 23, 18, 23, 0, -17}, // 0x57 'W' + {1383, 15, 18, 16, 1, -17}, // 0x58 'X' + {1417, 16, 18, 15, 0, -17}, // 0x59 'Y' + {1453, 13, 18, 15, 1, -17}, // 0x5A 'Z' + {1483, 6, 23, 8, 2, -17}, // 0x5B '[' + {1501, 7, 17, 7, 0, -16}, // 0x5C '\' + {1516, 6, 23, 8, 0, -17}, // 0x5D ']' + {1534, 12, 11, 14, 1, -16}, // 0x5E '^' + {1551, 15, 2, 13, -1, 4}, // 0x5F '_' + {1555, 4, 3, 6, 0, -17}, // 0x60 '`' + {1557, 13, 13, 14, 1, -12}, // 0x61 'a' + {1579, 13, 18, 15, 2, -17}, // 0x62 'b' + {1609, 12, 13, 13, 1, -12}, // 0x63 'c' + {1629, 13, 18, 15, 1, -17}, // 0x64 'd' + {1659, 13, 13, 14, 1, -12}, // 0x65 'e' + {1681, 7, 18, 8, 1, -17}, // 0x66 'f' + {1697, 13, 18, 15, 1, -12}, // 0x67 'g' + {1727, 12, 18, 14, 2, -17}, // 0x68 'h' + {1754, 4, 18, 7, 2, -17}, // 0x69 'i' + {1763, 6, 23, 7, 0, -17}, // 0x6A 'j' + {1781, 12, 18, 14, 2, -17}, // 0x6B 'k' + {1808, 4, 18, 6, 2, -17}, // 0x6C 'l' + {1817, 19, 13, 21, 2, -12}, // 0x6D 'm' + {1848, 12, 13, 15, 2, -12}, // 0x6E 'n' + {1868, 13, 13, 15, 1, -12}, // 0x6F 'o' + {1890, 13, 18, 15, 2, -12}, // 0x70 'p' + {1920, 13, 18, 15, 1, -12}, // 0x71 'q' + {1950, 8, 13, 9, 2, -12}, // 0x72 'r' + {1963, 12, 13, 13, 1, -12}, // 0x73 's' + {1983, 6, 15, 8, 1, -14}, // 0x74 't' + {1995, 12, 13, 15, 2, -12}, // 0x75 'u' + {2015, 13, 13, 13, 0, -12}, // 0x76 'v' + {2037, 18, 13, 19, 0, -12}, // 0x77 'w' + {2067, 13, 13, 13, 0, -12}, // 0x78 'x' + {2089, 13, 18, 13, 0, -12}, // 0x79 'y' + {2119, 10, 13, 12, 1, -12}, // 0x7A 'z' + {2136, 6, 23, 9, 1, -17}, // 0x7B '{' + {2154, 2, 22, 7, 2, -17}, // 0x7C '|' + {2160, 6, 23, 9, 3, -17}, // 0x7D '}' + {2178, 12, 5, 12, 0, -7}}; // 0x7E '~' + +const GFXfont FreeSansBold12pt7b PROGMEM = { + (uint8_t *)FreeSansBold12pt7bBitmaps, (GFXglyph *)FreeSansBold12pt7bGlyphs, + 0x20, 0x7E, 29}; + +// Approx. 2858 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSansBold18pt7b.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSansBold18pt7b.h new file mode 100644 index 0000000..f0e2807 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSansBold18pt7b.h @@ -0,0 +1,483 @@ +#pragma once +#include + +const uint8_t FreeSansBold18pt7bBitmaps[] PROGMEM = { + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xE7, 0x39, 0xCE, 0x73, 0x80, + 0x0F, 0xFF, 0xFF, 0xF8, 0xF8, 0xFF, 0xC7, 0xFE, 0x3F, 0xF1, 0xFF, 0x8F, + 0xFC, 0x7D, 0xC1, 0xCE, 0x0E, 0x70, 0x70, 0x03, 0xC3, 0x80, 0x3C, 0x78, + 0x03, 0xC7, 0x80, 0x38, 0x78, 0x07, 0x87, 0x07, 0xFF, 0xFF, 0x7F, 0xFF, + 0xF7, 0xFF, 0xFF, 0x7F, 0xFF, 0xF0, 0xF0, 0xE0, 0x0F, 0x0E, 0x00, 0xF1, + 0xE0, 0x0F, 0x1E, 0x00, 0xE1, 0xE0, 0xFF, 0xFF, 0xCF, 0xFF, 0xFC, 0xFF, + 0xFF, 0xCF, 0xFF, 0xFC, 0x1C, 0x3C, 0x03, 0xC3, 0x80, 0x3C, 0x78, 0x03, + 0xC7, 0x80, 0x38, 0x78, 0x03, 0x87, 0x80, 0x00, 0x60, 0x00, 0x7F, 0x80, + 0x3F, 0xFC, 0x0F, 0xFF, 0xC3, 0xFF, 0xFC, 0xFC, 0xDF, 0x9F, 0x19, 0xFB, + 0xC3, 0x1F, 0x78, 0x63, 0xEF, 0x8C, 0x01, 0xFD, 0x80, 0x1F, 0xF0, 0x01, + 0xFF, 0xC0, 0x1F, 0xFE, 0x00, 0x7F, 0xE0, 0x03, 0xFE, 0x00, 0x67, 0xE0, + 0x0C, 0x7F, 0xE1, 0x8F, 0xFC, 0x31, 0xFF, 0xC6, 0x3E, 0xFC, 0xDF, 0x9F, + 0xFF, 0xF1, 0xFF, 0xFC, 0x0F, 0xFF, 0x00, 0x7F, 0x80, 0x01, 0x80, 0x00, + 0x30, 0x00, 0x06, 0x00, 0x0F, 0x00, 0x1C, 0x01, 0xFE, 0x00, 0xE0, 0x1F, + 0xF8, 0x0E, 0x00, 0xFF, 0xC0, 0x70, 0x0F, 0x0F, 0x07, 0x00, 0x70, 0x38, + 0x38, 0x03, 0x81, 0xC3, 0x80, 0x1C, 0x0E, 0x3C, 0x00, 0xF0, 0xF1, 0xC0, + 0x03, 0xFF, 0x1C, 0x00, 0x1F, 0xF8, 0xE0, 0x00, 0x7F, 0x8E, 0x00, 0x00, + 0xF0, 0x70, 0xF8, 0x00, 0x07, 0x1F, 0xF0, 0x00, 0x39, 0xFF, 0xC0, 0x03, + 0x8F, 0xFE, 0x00, 0x1C, 0xF0, 0x78, 0x01, 0xC7, 0x01, 0xC0, 0x0C, 0x38, + 0x0E, 0x00, 0xE1, 0xC0, 0x70, 0x06, 0x0F, 0x07, 0x80, 0x70, 0x3F, 0xF8, + 0x07, 0x01, 0xFF, 0xC0, 0x38, 0x07, 0xFC, 0x03, 0x80, 0x0F, 0x80, 0x01, + 0xF0, 0x00, 0x1F, 0xE0, 0x00, 0xFF, 0xC0, 0x03, 0xFF, 0x80, 0x1F, 0x1E, + 0x00, 0x7C, 0x78, 0x01, 0xF1, 0xE0, 0x07, 0xE7, 0x80, 0x0F, 0xBC, 0x00, + 0x1F, 0xE0, 0x00, 0x3F, 0x00, 0x01, 0xF8, 0x00, 0x1F, 0xF0, 0xF0, 0xFF, + 0xE3, 0xC7, 0xE7, 0xCF, 0x3F, 0x0F, 0xF8, 0xF8, 0x3F, 0xE3, 0xE0, 0x7F, + 0x8F, 0x80, 0xFC, 0x3F, 0x03, 0xF0, 0x7E, 0x3F, 0xE1, 0xFF, 0xFF, 0x83, + 0xFF, 0xFF, 0x07, 0xFE, 0x7E, 0x07, 0xF0, 0xFC, 0xFF, 0xFF, 0xFF, 0xFD, + 0xCE, 0x70, 0x07, 0x87, 0x83, 0xC3, 0xC1, 0xE1, 0xE0, 0xF0, 0x78, 0x78, + 0x3C, 0x1E, 0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, + 0x0F, 0x03, 0x81, 0xE0, 0xF0, 0x78, 0x1E, 0x0F, 0x03, 0x81, 0xE0, 0x70, + 0x3C, 0x0E, 0x07, 0x80, 0xF0, 0x38, 0x1E, 0x07, 0x83, 0xC0, 0xF0, 0x78, + 0x3C, 0x0F, 0x07, 0x83, 0xC0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, + 0xC1, 0xE0, 0xF0, 0x78, 0x78, 0x3C, 0x1E, 0x0F, 0x0F, 0x07, 0x87, 0x83, + 0xC1, 0xC1, 0xE0, 0xE0, 0xF0, 0x00, 0x06, 0x00, 0x60, 0x06, 0x07, 0x6E, + 0x7F, 0xE3, 0xFC, 0x0F, 0x01, 0xF8, 0x1F, 0x83, 0x9C, 0x10, 0x80, 0x03, + 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xC0, 0x03, 0xC0, 0x03, + 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0xFF, 0xFF, 0xFF, 0x8C, 0x63, + 0x37, 0xB0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0x80, 0x01, + 0x81, 0xC0, 0xC0, 0x60, 0x70, 0x38, 0x18, 0x0C, 0x0E, 0x06, 0x03, 0x01, + 0x81, 0xC0, 0xC0, 0x60, 0x30, 0x38, 0x18, 0x0C, 0x0E, 0x07, 0x03, 0x01, + 0x81, 0xC0, 0xC0, 0x00, 0x07, 0xF0, 0x0F, 0xFE, 0x0F, 0xFF, 0x87, 0xFF, + 0xC7, 0xE3, 0xF3, 0xE0, 0xF9, 0xF0, 0x7D, 0xF0, 0x1F, 0xF8, 0x0F, 0xFC, + 0x07, 0xFE, 0x03, 0xFF, 0x01, 0xFF, 0x80, 0xFF, 0xC0, 0x7F, 0xE0, 0x3F, + 0xF0, 0x1F, 0xF8, 0x0F, 0xFC, 0x07, 0xDF, 0x07, 0xCF, 0x83, 0xE7, 0xE3, + 0xF1, 0xFF, 0xF0, 0xFF, 0xF8, 0x3F, 0xF8, 0x07, 0xF0, 0x00, 0x01, 0xC0, + 0xF0, 0x3C, 0x1F, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xC1, 0xF0, 0x7C, + 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, + 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC0, 0x07, 0xF0, 0x0F, 0xFE, 0x0F, 0xFF, + 0x8F, 0xFF, 0xE7, 0xE3, 0xF7, 0xE0, 0xFF, 0xE0, 0x3F, 0xF0, 0x1F, 0xF8, + 0x0F, 0x80, 0x07, 0xC0, 0x07, 0xE0, 0x03, 0xE0, 0x03, 0xF0, 0x03, 0xF0, + 0x07, 0xF0, 0x07, 0xF0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xC0, 0x07, 0xC0, + 0x03, 0xE0, 0x03, 0xFF, 0xFD, 0xFF, 0xFE, 0xFF, 0xFF, 0x7F, 0xFF, 0x80, + 0x07, 0xE0, 0x0F, 0xFC, 0x0F, 0xFF, 0x0F, 0xFF, 0xCF, 0xC3, 0xF7, 0xC0, + 0xFB, 0xE0, 0x7D, 0xF0, 0x3E, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x0F, 0x80, + 0x3F, 0x80, 0x1F, 0xC0, 0x0F, 0xF0, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x0F, + 0xFC, 0x07, 0xFE, 0x03, 0xFF, 0x83, 0xF7, 0xC3, 0xF3, 0xFF, 0xF8, 0xFF, + 0xF8, 0x3F, 0xF8, 0x07, 0xF0, 0x00, 0x00, 0xFC, 0x00, 0xFC, 0x01, 0xFC, + 0x01, 0xFC, 0x03, 0xFC, 0x07, 0x7C, 0x07, 0x7C, 0x0E, 0x7C, 0x0E, 0x7C, + 0x1C, 0x7C, 0x18, 0x7C, 0x38, 0x7C, 0x70, 0x7C, 0x60, 0x7C, 0xE0, 0x7C, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x7C, 0x00, 0x7C, + 0x00, 0x7C, 0x00, 0x7C, 0x00, 0x7C, 0x00, 0x7C, 0x1F, 0xFF, 0x0F, 0xFF, + 0x8F, 0xFF, 0xC7, 0xFF, 0xE3, 0xC0, 0x01, 0xE0, 0x00, 0xE0, 0x00, 0x70, + 0x00, 0x79, 0xF0, 0x3F, 0xFE, 0x1F, 0xFF, 0x8F, 0xFF, 0xE7, 0xC3, 0xF0, + 0x00, 0xFC, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xFE, 0x03, + 0xFF, 0x03, 0xFF, 0xC3, 0xF3, 0xFF, 0xF1, 0xFF, 0xF8, 0x3F, 0xF0, 0x07, + 0xE0, 0x00, 0x03, 0xF8, 0x03, 0xFF, 0x81, 0xFF, 0xF0, 0xFF, 0xFE, 0x3E, + 0x1F, 0x9F, 0x03, 0xE7, 0xC0, 0x03, 0xE0, 0x00, 0xF8, 0xF8, 0x3E, 0xFF, + 0x8F, 0xFF, 0xF3, 0xFF, 0xFE, 0xFE, 0x1F, 0xBF, 0x03, 0xFF, 0x80, 0x7F, + 0xE0, 0x1F, 0xF8, 0x07, 0xFE, 0x01, 0xF7, 0x80, 0x7D, 0xF0, 0x3E, 0x7E, + 0x1F, 0x8F, 0xFF, 0xC1, 0xFF, 0xF0, 0x3F, 0xF0, 0x03, 0xF0, 0x00, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0xF0, 0x00, 0xF8, + 0x00, 0xF8, 0x00, 0x78, 0x00, 0x7C, 0x00, 0x3C, 0x00, 0x3E, 0x00, 0x1E, + 0x00, 0x1F, 0x00, 0x0F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xC0, 0x03, + 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x78, 0x00, 0x7C, 0x00, 0x3E, 0x00, + 0x1F, 0x00, 0x0F, 0x80, 0x00, 0x07, 0xE0, 0x07, 0xFC, 0x0F, 0xFF, 0x07, + 0xFF, 0xC7, 0xC3, 0xF3, 0xC0, 0xF9, 0xE0, 0x3C, 0xF0, 0x1E, 0x78, 0x1F, + 0x1E, 0x1F, 0x07, 0xFF, 0x01, 0xFF, 0x03, 0xFF, 0xE3, 0xF1, 0xF9, 0xF0, + 0x7D, 0xF0, 0x1F, 0xF8, 0x0F, 0xFC, 0x07, 0xFE, 0x03, 0xFF, 0x83, 0xF7, + 0xC3, 0xF3, 0xFF, 0xF8, 0xFF, 0xF8, 0x3F, 0xF8, 0x07, 0xF0, 0x00, 0x07, + 0xE0, 0x0F, 0xFC, 0x0F, 0xFF, 0x0F, 0xFF, 0xC7, 0xE3, 0xF7, 0xE0, 0xFB, + 0xE0, 0x3D, 0xF0, 0x1F, 0xF8, 0x0F, 0xFC, 0x07, 0xFE, 0x03, 0xFF, 0x83, + 0xF7, 0xE3, 0xFB, 0xFF, 0xFC, 0xFF, 0xFE, 0x3F, 0xDF, 0x07, 0xCF, 0x80, + 0x07, 0x80, 0x03, 0xDF, 0x03, 0xE7, 0xC3, 0xE3, 0xFF, 0xF0, 0xFF, 0xF0, + 0x3F, 0xF0, 0x07, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x7F, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x7F, 0xFF, 0xFF, 0xC6, 0x33, 0x9B, 0xD8, 0x00, 0x00, 0xC0, 0x00, + 0xF0, 0x01, 0xFC, 0x03, 0xFF, 0x03, 0xFF, 0x07, 0xFE, 0x0F, 0xFC, 0x03, + 0xF8, 0x00, 0xF0, 0x00, 0x3F, 0x80, 0x0F, 0xFC, 0x00, 0x7F, 0xE0, 0x07, + 0xFF, 0x00, 0x3F, 0xF0, 0x01, 0xFC, 0x00, 0x1F, 0x00, 0x00, 0xC0, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF0, 0xC0, 0x00, 0x3C, 0x00, 0x0F, 0xE0, 0x03, 0xFF, 0x00, 0x3F, 0xF0, + 0x01, 0xFF, 0x80, 0x0F, 0xFC, 0x00, 0x7F, 0x00, 0x03, 0xC0, 0x07, 0xF0, + 0x0F, 0xFC, 0x1F, 0xF8, 0x3F, 0xF8, 0x3F, 0xF0, 0x0F, 0xE0, 0x03, 0xC0, + 0x00, 0xC0, 0x00, 0x00, 0x07, 0xF0, 0x07, 0xFF, 0x03, 0xFF, 0xF1, 0xFF, + 0xFC, 0x7E, 0x3F, 0xBF, 0x03, 0xFF, 0x80, 0x7F, 0xE0, 0x1F, 0xF8, 0x07, + 0xC0, 0x03, 0xF0, 0x01, 0xFC, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x3F, 0x80, + 0x1F, 0xC0, 0x07, 0xC0, 0x03, 0xE0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xE0, + 0x00, 0xF8, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, + 0xFF, 0xFF, 0xC0, 0x01, 0xF8, 0x07, 0xF0, 0x03, 0xE0, 0x01, 0xF8, 0x07, + 0x80, 0x00, 0x7C, 0x0F, 0x00, 0x00, 0x3C, 0x1E, 0x03, 0xE3, 0x9E, 0x3C, + 0x0F, 0xF7, 0x8E, 0x38, 0x1F, 0xFF, 0x0E, 0x78, 0x3E, 0x1F, 0x07, 0x70, + 0x38, 0x0F, 0x07, 0x70, 0x78, 0x0F, 0x07, 0xE0, 0x70, 0x0E, 0x07, 0xE0, + 0x70, 0x0E, 0x07, 0xE0, 0xE0, 0x0E, 0x07, 0xE0, 0xE0, 0x1E, 0x0F, 0xE0, + 0xE0, 0x1C, 0x0E, 0xE0, 0xE0, 0x3C, 0x1E, 0xE0, 0xF0, 0x3C, 0x3C, 0xF0, + 0xF0, 0xFC, 0x7C, 0x70, 0x7F, 0xFF, 0xF8, 0x78, 0x3F, 0xCF, 0xF0, 0x3C, + 0x1F, 0x07, 0xC0, 0x3E, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x0F, + 0xC0, 0x01, 0x00, 0x07, 0xF0, 0x0F, 0x00, 0x03, 0xFF, 0xFF, 0x00, 0x00, + 0xFF, 0xFF, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7F, + 0x00, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x80, 0x01, 0xFF, + 0x80, 0x01, 0xFF, 0x80, 0x01, 0xF7, 0xC0, 0x03, 0xE7, 0xC0, 0x03, 0xE7, + 0xC0, 0x03, 0xE3, 0xE0, 0x07, 0xC3, 0xE0, 0x07, 0xC3, 0xE0, 0x07, 0xC1, + 0xF0, 0x0F, 0x81, 0xF0, 0x0F, 0x81, 0xF0, 0x0F, 0xFF, 0xF8, 0x1F, 0xFF, + 0xF8, 0x1F, 0xFF, 0xFC, 0x1F, 0xFF, 0xFC, 0x3E, 0x00, 0x7C, 0x3E, 0x00, + 0x7E, 0x3E, 0x00, 0x3E, 0x7C, 0x00, 0x3E, 0x7C, 0x00, 0x3F, 0x7C, 0x00, + 0x1F, 0xFF, 0xFC, 0x0F, 0xFF, 0xF0, 0xFF, 0xFF, 0x8F, 0xFF, 0xFC, 0xF8, + 0x07, 0xEF, 0x80, 0x3E, 0xF8, 0x03, 0xEF, 0x80, 0x3E, 0xF8, 0x03, 0xEF, + 0x80, 0x3E, 0xF8, 0x07, 0xCF, 0xFF, 0xF8, 0xFF, 0xFF, 0x0F, 0xFF, 0xF8, + 0xFF, 0xFF, 0xCF, 0x80, 0x7E, 0xF8, 0x01, 0xEF, 0x80, 0x1F, 0xF8, 0x01, + 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x3E, 0xFF, 0xFF, 0xEF, 0xFF, + 0xFC, 0xFF, 0xFF, 0x8F, 0xFF, 0xE0, 0x00, 0xFF, 0x00, 0x07, 0xFF, 0x80, + 0x3F, 0xFF, 0xC0, 0xFF, 0xFF, 0xC3, 0xF8, 0x1F, 0x87, 0xE0, 0x1F, 0x9F, + 0x80, 0x1F, 0x3E, 0x00, 0x1F, 0x7C, 0x00, 0x3F, 0xF0, 0x00, 0x03, 0xE0, + 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3E, 0x00, + 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x7D, 0xF0, 0x00, + 0xFB, 0xF0, 0x03, 0xF3, 0xF0, 0x0F, 0xC7, 0xF0, 0x3F, 0x87, 0xFF, 0xFE, + 0x07, 0xFF, 0xF8, 0x03, 0xFF, 0xC0, 0x01, 0xFE, 0x00, 0xFF, 0xFC, 0x07, + 0xFF, 0xF8, 0x3F, 0xFF, 0xE1, 0xFF, 0xFF, 0x8F, 0x80, 0xFE, 0x7C, 0x01, + 0xF3, 0xE0, 0x07, 0xDF, 0x00, 0x3E, 0xF8, 0x01, 0xF7, 0xC0, 0x07, 0xFE, + 0x00, 0x3F, 0xF0, 0x01, 0xFF, 0x80, 0x0F, 0xFC, 0x00, 0x7F, 0xE0, 0x03, + 0xFF, 0x00, 0x1F, 0xF8, 0x00, 0xFF, 0xC0, 0x0F, 0xFE, 0x00, 0x7D, 0xF0, + 0x03, 0xEF, 0x80, 0x3E, 0x7C, 0x07, 0xF3, 0xFF, 0xFF, 0x1F, 0xFF, 0xF0, + 0xFF, 0xFF, 0x07, 0xFF, 0xE0, 0x00, 0xFF, 0xFF, 0xDF, 0xFF, 0xFB, 0xFF, + 0xFF, 0x7F, 0xFF, 0xEF, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, + 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x7F, 0xFF, 0xCF, 0xFF, + 0xF9, 0xFF, 0xFF, 0x3F, 0xFF, 0xE7, 0xC0, 0x00, 0xF8, 0x00, 0x1F, 0x00, + 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3F, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, + 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0xFF, 0xEF, 0xFF, 0xF7, + 0xFF, 0xFB, 0xFF, 0xFD, 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, + 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, + 0x00, 0x7C, 0x00, 0x00, 0x00, 0x7F, 0x80, 0x03, 0xFF, 0xE0, 0x07, 0xFF, + 0xF8, 0x0F, 0xFF, 0xFC, 0x1F, 0xC0, 0xFE, 0x3F, 0x00, 0x7E, 0x7E, 0x00, + 0x3F, 0x7C, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x03, 0xFF, 0xF8, 0x03, 0xFF, 0xF8, 0x03, + 0xFF, 0xF8, 0x03, 0xFF, 0xFC, 0x00, 0x0F, 0x7C, 0x00, 0x1F, 0x7C, 0x00, + 0x1F, 0x7E, 0x00, 0x3F, 0x3F, 0x00, 0x7F, 0x1F, 0xC1, 0xFF, 0x0F, 0xFF, + 0xFF, 0x07, 0xFF, 0xE7, 0x03, 0xFF, 0xC7, 0x00, 0xFF, 0x07, 0xF8, 0x01, + 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, + 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x01, 0xFF, + 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, + 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, + 0xFF, 0x80, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x1F, 0x00, 0x1F, + 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, + 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, + 0x00, 0x1F, 0x00, 0x1F, 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, 0x1F, + 0xF8, 0x1F, 0xFC, 0x3F, 0x7F, 0xFE, 0x3F, 0xFC, 0x1F, 0xF8, 0x07, 0xE0, + 0xF8, 0x01, 0xFB, 0xE0, 0x0F, 0xCF, 0x80, 0x7E, 0x3E, 0x03, 0xF0, 0xF8, + 0x1F, 0x83, 0xE0, 0xFC, 0x0F, 0x87, 0xE0, 0x3E, 0x3F, 0x00, 0xF8, 0xF8, + 0x03, 0xE7, 0xE0, 0x0F, 0xBF, 0x00, 0x3F, 0xF8, 0x00, 0xFF, 0xF0, 0x03, + 0xFF, 0xE0, 0x0F, 0xFF, 0x80, 0x3F, 0xBF, 0x00, 0xFC, 0x7E, 0x03, 0xE0, + 0xFC, 0x0F, 0x81, 0xF8, 0x3E, 0x07, 0xE0, 0xF8, 0x0F, 0xC3, 0xE0, 0x1F, + 0x8F, 0x80, 0x7F, 0x3E, 0x00, 0xFC, 0xF8, 0x01, 0xFB, 0xE0, 0x03, 0xF0, + 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, + 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, + 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, + 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xFF, 0x00, 0xFF, 0xFF, + 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, + 0x81, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, 0x81, 0xFF, 0xFB, 0xC3, 0xDF, 0xFB, + 0xC3, 0xDF, 0xFB, 0xC3, 0xDF, 0xFB, 0xC3, 0xDF, 0xF9, 0xC7, 0xDF, 0xF9, + 0xE7, 0x9F, 0xF9, 0xE7, 0x9F, 0xF9, 0xE7, 0x9F, 0xF9, 0xE7, 0x9F, 0xF8, + 0xFF, 0x1F, 0xF8, 0xFF, 0x1F, 0xF8, 0xFF, 0x1F, 0xF8, 0xFF, 0x1F, 0xF8, + 0x7F, 0x1F, 0xF8, 0x7E, 0x1F, 0xF8, 0x7E, 0x1F, 0xF8, 0x7E, 0x1F, 0xF8, + 0x3E, 0x1F, 0xF8, 0x01, 0xFF, 0xC0, 0x1F, 0xFE, 0x01, 0xFF, 0xE0, 0x1F, + 0xFF, 0x01, 0xFF, 0xF0, 0x1F, 0xFF, 0x81, 0xFF, 0xF8, 0x1F, 0xFF, 0xC1, + 0xFF, 0xBC, 0x1F, 0xFB, 0xE1, 0xFF, 0x9F, 0x1F, 0xF9, 0xF1, 0xFF, 0x8F, + 0x9F, 0xF8, 0x79, 0xFF, 0x87, 0xDF, 0xF8, 0x3D, 0xFF, 0x83, 0xFF, 0xF8, + 0x1F, 0xFF, 0x81, 0xFF, 0xF8, 0x0F, 0xFF, 0x80, 0xFF, 0xF8, 0x07, 0xFF, + 0x80, 0x3F, 0xF8, 0x03, 0xFF, 0x80, 0x1F, 0x00, 0x7F, 0x00, 0x01, 0xFF, + 0xF0, 0x01, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0x01, 0xFC, 0x1F, 0xC1, 0xF8, + 0x03, 0xF1, 0xF8, 0x00, 0xFC, 0xF8, 0x00, 0x3E, 0x7C, 0x00, 0x1F, 0x7C, + 0x00, 0x07, 0xFE, 0x00, 0x03, 0xFF, 0x00, 0x01, 0xFF, 0x80, 0x00, 0xFF, + 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x3F, 0xF0, 0x00, 0x1F, 0xF8, 0x00, 0x0F, + 0xBE, 0x00, 0x0F, 0x9F, 0x00, 0x07, 0xCF, 0xC0, 0x07, 0xE3, 0xF0, 0x07, + 0xE0, 0xFE, 0x0F, 0xE0, 0x7F, 0xFF, 0xE0, 0x0F, 0xFF, 0xE0, 0x03, 0xFF, + 0xE0, 0x00, 0x3F, 0x80, 0x00, 0xFF, 0xFC, 0x1F, 0xFF, 0xE3, 0xFF, 0xFE, + 0x7F, 0xFF, 0xEF, 0x80, 0xFF, 0xF0, 0x0F, 0xFE, 0x00, 0xFF, 0xC0, 0x1F, + 0xF8, 0x03, 0xFF, 0x00, 0x7F, 0xE0, 0x1F, 0xFC, 0x07, 0xEF, 0xFF, 0xFD, + 0xFF, 0xFF, 0x3F, 0xFF, 0xC7, 0xFF, 0xE0, 0xF8, 0x00, 0x1F, 0x00, 0x03, + 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, + 0xC0, 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x01, 0xFF, + 0xF0, 0x01, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0x01, 0xFC, 0x1F, 0xC1, 0xF8, + 0x03, 0xF1, 0xF8, 0x00, 0xFC, 0xF8, 0x00, 0x3E, 0x7C, 0x00, 0x1F, 0x7C, + 0x00, 0x07, 0xFE, 0x00, 0x03, 0xFF, 0x00, 0x01, 0xFF, 0x80, 0x00, 0xFF, + 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x3F, 0xF0, 0x00, 0x1F, 0xF8, 0x01, 0x0F, + 0xBE, 0x01, 0xCF, 0x9F, 0x01, 0xFF, 0xCF, 0xC0, 0x7F, 0xE3, 0xF0, 0x1F, + 0xE0, 0xFE, 0x0F, 0xF0, 0x7F, 0xFF, 0xF8, 0x0F, 0xFF, 0xFE, 0x03, 0xFF, + 0xEF, 0x80, 0x3F, 0xC3, 0x80, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x07, 0xFF, + 0xFE, 0x3F, 0xFF, 0xF9, 0xFF, 0xFF, 0xCF, 0x80, 0x3F, 0x7C, 0x00, 0xFB, + 0xE0, 0x07, 0xDF, 0x00, 0x3E, 0xF8, 0x01, 0xF7, 0xC0, 0x0F, 0x3E, 0x00, + 0xF9, 0xFF, 0xFF, 0x8F, 0xFF, 0xF8, 0x7F, 0xFF, 0xC3, 0xFF, 0xFF, 0x1F, + 0x00, 0xFC, 0xF8, 0x03, 0xE7, 0xC0, 0x1F, 0x3E, 0x00, 0xF9, 0xF0, 0x07, + 0xCF, 0x80, 0x3E, 0x7C, 0x01, 0xF3, 0xE0, 0x0F, 0x9F, 0x00, 0x7C, 0xF8, + 0x03, 0xF7, 0xC0, 0x0F, 0xC0, 0x07, 0xF8, 0x01, 0xFF, 0xF0, 0x3F, 0xFF, + 0x87, 0xFF, 0xFC, 0x7E, 0x0F, 0xCF, 0xC0, 0x7E, 0xF8, 0x03, 0xEF, 0x80, + 0x3E, 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0xFF, 0x00, 0x07, 0xFF, 0xC0, 0x3F, + 0xFF, 0x81, 0xFF, 0xFC, 0x03, 0xFF, 0xE0, 0x01, 0xFF, 0x00, 0x03, 0xF0, + 0x00, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xFC, 0x03, 0xFF, 0xE0, 0x7E, + 0x7F, 0xFF, 0xE3, 0xFF, 0xFC, 0x1F, 0xFF, 0x00, 0x3F, 0xC0, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x1F, 0x00, 0x03, 0xE0, + 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, + 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, + 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x1F, 0x00, + 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, + 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, + 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, + 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, + 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, + 0x80, 0x1F, 0x7C, 0x03, 0xE7, 0xE0, 0x7E, 0x3F, 0xFF, 0xC3, 0xFF, 0xFC, + 0x0F, 0xFF, 0x00, 0x3F, 0xC0, 0xF8, 0x00, 0xFB, 0xE0, 0x03, 0xE7, 0xC0, + 0x1F, 0x9F, 0x00, 0x7C, 0x7C, 0x01, 0xF0, 0xF8, 0x07, 0xC3, 0xE0, 0x3E, + 0x0F, 0x80, 0xF8, 0x1E, 0x03, 0xE0, 0x7C, 0x1F, 0x01, 0xF0, 0x7C, 0x03, + 0xC1, 0xF0, 0x0F, 0x87, 0x80, 0x3E, 0x3E, 0x00, 0xF8, 0xF8, 0x01, 0xE3, + 0xC0, 0x07, 0xCF, 0x00, 0x1F, 0x7C, 0x00, 0x3D, 0xE0, 0x00, 0xFF, 0x80, + 0x03, 0xFE, 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xC0, 0x00, 0x7F, 0x00, 0x00, + 0xF8, 0x00, 0x03, 0xE0, 0x00, 0xF8, 0x07, 0xC0, 0x3F, 0xF8, 0x07, 0xE0, + 0x3E, 0xFC, 0x07, 0xE0, 0x3E, 0x7C, 0x0F, 0xE0, 0x3E, 0x7C, 0x0F, 0xE0, + 0x7E, 0x7C, 0x0F, 0xE0, 0x7C, 0x7C, 0x0F, 0xF0, 0x7C, 0x3E, 0x0F, 0xF0, + 0x7C, 0x3E, 0x1E, 0xF0, 0x78, 0x3E, 0x1E, 0x70, 0xF8, 0x1E, 0x1E, 0x70, + 0xF8, 0x1E, 0x1E, 0x78, 0xF8, 0x1F, 0x1E, 0x78, 0xF0, 0x1F, 0x3C, 0x78, + 0xF0, 0x0F, 0x3C, 0x39, 0xF0, 0x0F, 0x3C, 0x3D, 0xF0, 0x0F, 0x3C, 0x3D, + 0xE0, 0x0F, 0xBC, 0x3D, 0xE0, 0x07, 0xF8, 0x3D, 0xE0, 0x07, 0xF8, 0x1F, + 0xE0, 0x07, 0xF8, 0x1F, 0xC0, 0x03, 0xF8, 0x1F, 0xC0, 0x03, 0xF8, 0x1F, + 0xC0, 0x03, 0xF0, 0x0F, 0x80, 0x03, 0xF0, 0x0F, 0x80, 0x01, 0xF0, 0x0F, + 0x80, 0xFE, 0x01, 0xF9, 0xF8, 0x07, 0xE3, 0xF0, 0x3F, 0x0F, 0xC0, 0xF8, + 0x1F, 0x87, 0xE0, 0x7E, 0x3F, 0x00, 0xFC, 0xFC, 0x01, 0xF7, 0xE0, 0x07, + 0xFF, 0x00, 0x0F, 0xFC, 0x00, 0x3F, 0xE0, 0x00, 0x7F, 0x00, 0x00, 0xFC, + 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xE0, 0x00, 0xFF, 0x80, 0x03, 0xFF, 0x00, + 0x1F, 0x7E, 0x00, 0xFC, 0xF8, 0x03, 0xE3, 0xF0, 0x1F, 0x87, 0xC0, 0x7C, + 0x1F, 0x83, 0xF0, 0x3F, 0x1F, 0x80, 0xFC, 0x7E, 0x01, 0xFB, 0xF0, 0x07, + 0xF0, 0xFC, 0x01, 0xFF, 0xE0, 0x0F, 0x9F, 0x00, 0xFC, 0xFC, 0x07, 0xC3, + 0xE0, 0x7E, 0x1F, 0x83, 0xE0, 0x7C, 0x1F, 0x03, 0xF1, 0xF0, 0x0F, 0x8F, + 0x80, 0x7E, 0xF8, 0x01, 0xF7, 0xC0, 0x0F, 0xFC, 0x00, 0x3F, 0xE0, 0x00, + 0xFE, 0x00, 0x07, 0xF0, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, + 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x03, + 0xE0, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x7E, 0x00, 0x1F, + 0x80, 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x0F, 0xC0, 0x03, 0xF8, + 0x00, 0x7E, 0x00, 0x1F, 0x80, 0x07, 0xE0, 0x01, 0xFC, 0x00, 0x3F, 0x00, + 0x0F, 0xC0, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x1F, 0x80, 0x07, 0xE0, 0x01, + 0xFC, 0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, + 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, + 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, + 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x38, 0x06, + 0x01, 0x80, 0x70, 0x0C, 0x03, 0x00, 0xE0, 0x18, 0x06, 0x01, 0xC0, 0x30, + 0x0C, 0x03, 0x00, 0xE0, 0x18, 0x06, 0x01, 0xC0, 0x30, 0x0C, 0x03, 0x80, + 0x60, 0x18, 0x07, 0x01, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x1F, 0x1F, + 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, + 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0xFF, 0xFF, + 0xFF, 0xFF, 0x03, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x0F, 0xF0, 0x0F, 0xF0, + 0x0F, 0x78, 0x1E, 0x78, 0x1E, 0x78, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x1E, + 0x78, 0x1E, 0x78, 0x1E, 0x70, 0x0F, 0xF0, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFE, 0xF8, 0xF0, 0xF0, 0xE0, 0xE0, 0x07, 0xF8, 0x07, + 0xFF, 0x83, 0xFF, 0xF1, 0xFF, 0xFE, 0x7C, 0x1F, 0xBE, 0x03, 0xE0, 0x00, + 0xF8, 0x01, 0xFE, 0x0F, 0xFF, 0x8F, 0xFF, 0xE7, 0xF8, 0xFB, 0xF0, 0x3E, + 0xF8, 0x0F, 0xBE, 0x07, 0xEF, 0xC3, 0xFB, 0xFF, 0xFE, 0x7F, 0xFF, 0x8F, + 0xFB, 0xF1, 0xF8, 0xFC, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xE0, + 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xE7, 0xE0, 0xFB, 0xFC, + 0x3F, 0xFF, 0xCF, 0xFF, 0xF3, 0xF8, 0x7E, 0xFC, 0x0F, 0xBF, 0x03, 0xFF, + 0x80, 0x7F, 0xE0, 0x1F, 0xF8, 0x07, 0xFE, 0x01, 0xFF, 0x80, 0x7F, 0xF0, + 0x3F, 0xFC, 0x0F, 0xBF, 0x87, 0xEF, 0xFF, 0xF3, 0xFF, 0xFC, 0xFB, 0xFC, + 0x3E, 0x7E, 0x00, 0x03, 0xF0, 0x07, 0xFE, 0x0F, 0xFF, 0x87, 0xFF, 0xE7, + 0xE1, 0xFB, 0xE0, 0x7F, 0xE0, 0x3F, 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, + 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0xFB, 0xE0, 0x7D, 0xF8, 0x7E, 0x7F, + 0xFE, 0x3F, 0xFE, 0x0F, 0xFE, 0x00, 0xFC, 0x00, 0x00, 0x03, 0xE0, 0x00, + 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, + 0xF8, 0x1F, 0x1F, 0x0F, 0xFB, 0xE3, 0xFF, 0xFC, 0xFF, 0xFF, 0xBF, 0x8F, + 0xF7, 0xC0, 0x7F, 0xF8, 0x0F, 0xFE, 0x00, 0xFF, 0xC0, 0x1F, 0xF8, 0x03, + 0xFF, 0x00, 0x7F, 0xE0, 0x0F, 0xFE, 0x03, 0xF7, 0xC0, 0x7E, 0xFC, 0x3F, + 0xCF, 0xFF, 0xF8, 0xFF, 0xFF, 0x0F, 0xFB, 0xE0, 0xFC, 0x7C, 0x07, 0xE0, + 0x07, 0xFE, 0x03, 0xFF, 0xE0, 0xFF, 0xF8, 0x7E, 0x1F, 0x1F, 0x03, 0xCF, + 0x80, 0xFB, 0xE0, 0x1E, 0xFF, 0xFF, 0xBF, 0xFF, 0xEF, 0xFF, 0xFB, 0xE0, + 0x00, 0xF8, 0x00, 0x3F, 0x03, 0xE7, 0xE1, 0xF9, 0xFF, 0xFC, 0x3F, 0xFE, + 0x07, 0xFF, 0x00, 0x7F, 0x00, 0x0F, 0xC7, 0xF3, 0xFC, 0xFF, 0x3E, 0x0F, + 0x83, 0xE3, 0xFE, 0xFF, 0xBF, 0xE3, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, + 0xF8, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, + 0x0F, 0x80, 0x07, 0xC7, 0xC3, 0xFD, 0xF3, 0xFF, 0xFC, 0xFF, 0xFF, 0x7E, + 0x1F, 0xDF, 0x03, 0xFF, 0xC0, 0xFF, 0xE0, 0x1F, 0xF8, 0x07, 0xFE, 0x01, + 0xFF, 0x80, 0x7F, 0xE0, 0x1F, 0xFC, 0x0F, 0xDF, 0x03, 0xF7, 0xE1, 0xFD, + 0xFF, 0xFF, 0x3F, 0xFF, 0xC7, 0xFD, 0xF0, 0x7C, 0x7C, 0x00, 0x1F, 0x00, + 0x07, 0xFF, 0x03, 0xF7, 0xE1, 0xF9, 0xFF, 0xFC, 0x3F, 0xFE, 0x01, 0xFE, + 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, + 0xC0, 0x03, 0xE0, 0x01, 0xF1, 0xF0, 0xFB, 0xFE, 0x7F, 0xFF, 0xBF, 0xFF, + 0xDF, 0xC3, 0xFF, 0xC0, 0xFF, 0xC0, 0x7F, 0xE0, 0x3F, 0xF0, 0x1F, 0xF8, + 0x0F, 0xFC, 0x07, 0xFE, 0x03, 0xFF, 0x01, 0xFF, 0x80, 0xFF, 0xC0, 0x7F, + 0xE0, 0x3F, 0xF0, 0x1F, 0xF8, 0x0F, 0xFC, 0x07, 0xC0, 0xFF, 0xFF, 0xF0, + 0x00, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xC0, 0x3E, 0x7C, 0xF9, 0xF0, 0x00, 0x00, 0x1F, 0x3E, 0x7C, 0xF9, + 0xF3, 0xE7, 0xCF, 0x9F, 0x3E, 0x7C, 0xF9, 0xF3, 0xE7, 0xCF, 0x9F, 0x3E, + 0x7C, 0xF9, 0xF3, 0xFF, 0xFF, 0xFE, 0xF8, 0xF8, 0x00, 0x7C, 0x00, 0x3E, + 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x3E, + 0xF8, 0x3E, 0x7C, 0x3F, 0x3E, 0x3F, 0x1F, 0x3F, 0x0F, 0x9F, 0x07, 0xDF, + 0x03, 0xFF, 0x81, 0xFF, 0xC0, 0xFF, 0xF0, 0x7F, 0xF8, 0x3F, 0x7E, 0x1F, + 0x1F, 0x0F, 0x87, 0xC7, 0xC3, 0xF3, 0xE0, 0xF9, 0xF0, 0x7E, 0xF8, 0x1F, + 0x7C, 0x0F, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xF8, 0xF8, 0x3F, 0x1F, + 0x7F, 0x9F, 0xF3, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xC3, 0xF8, + 0x7F, 0xF8, 0x3F, 0x07, 0xFE, 0x07, 0xC0, 0xFF, 0xC0, 0xF8, 0x1F, 0xF8, + 0x1F, 0x03, 0xFF, 0x03, 0xE0, 0x7F, 0xE0, 0x7C, 0x0F, 0xFC, 0x0F, 0x81, + 0xFF, 0x81, 0xF0, 0x3F, 0xF0, 0x3E, 0x07, 0xFE, 0x07, 0xC0, 0xFF, 0xC0, + 0xF8, 0x1F, 0xF8, 0x1F, 0x03, 0xFF, 0x03, 0xE0, 0x7F, 0xE0, 0x7C, 0x0F, + 0x80, 0xF8, 0xF8, 0x7D, 0xFF, 0x3F, 0xFF, 0xDF, 0xFF, 0xEF, 0xE1, 0xFF, + 0xE0, 0x7F, 0xE0, 0x3F, 0xF0, 0x1F, 0xF8, 0x0F, 0xFC, 0x07, 0xFE, 0x03, + 0xFF, 0x01, 0xFF, 0x80, 0xFF, 0xC0, 0x7F, 0xE0, 0x3F, 0xF0, 0x1F, 0xF8, + 0x0F, 0xFC, 0x07, 0xFE, 0x03, 0xE0, 0x03, 0xF8, 0x01, 0xFF, 0xC0, 0x7F, + 0xFC, 0x1F, 0xFF, 0xC7, 0xF0, 0xFC, 0xF8, 0x0F, 0xBF, 0x01, 0xFF, 0xC0, + 0x1F, 0xF8, 0x03, 0xFF, 0x00, 0x7F, 0xE0, 0x0F, 0xFC, 0x01, 0xFF, 0xC0, + 0x7E, 0xF8, 0x0F, 0x9F, 0x87, 0xF1, 0xFF, 0xFC, 0x1F, 0xFF, 0x01, 0xFF, + 0xC0, 0x0F, 0xE0, 0x00, 0xF8, 0xF8, 0x3E, 0xFF, 0x8F, 0xFF, 0xF3, 0xFF, + 0xFC, 0xFE, 0x1F, 0xBF, 0x03, 0xEF, 0xC0, 0xFF, 0xE0, 0x1F, 0xF8, 0x07, + 0xFE, 0x01, 0xFF, 0x80, 0x7F, 0xE0, 0x1F, 0xFC, 0x0F, 0xFF, 0x03, 0xEF, + 0xE1, 0xFB, 0xFF, 0xFC, 0xFF, 0xFF, 0x3E, 0xFF, 0x0F, 0x8F, 0x83, 0xE0, + 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF8, 0x00, + 0x3E, 0x00, 0x00, 0x07, 0xE3, 0xE1, 0xFF, 0x7C, 0x7F, 0xFF, 0x9F, 0xFF, + 0xF7, 0xF1, 0xFE, 0xF8, 0x0F, 0xFF, 0x01, 0xFF, 0xC0, 0x1F, 0xF8, 0x03, + 0xFF, 0x00, 0x7F, 0xE0, 0x0F, 0xFC, 0x01, 0xFF, 0xC0, 0x7E, 0xF8, 0x0F, + 0xDF, 0x83, 0xF9, 0xFF, 0xFF, 0x3F, 0xFF, 0xE1, 0xFF, 0x7C, 0x1F, 0x8F, + 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x1F, + 0x00, 0x03, 0xE0, 0x00, 0x7C, 0xF8, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xE1, + 0xF8, 0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, + 0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x00, 0x07, 0xF0, 0x0F, 0xFE, + 0x0F, 0xFF, 0x87, 0xFF, 0xE7, 0xE1, 0xF3, 0xE0, 0x79, 0xF8, 0x00, 0xFF, + 0x80, 0x3F, 0xFC, 0x1F, 0xFF, 0x83, 0xFF, 0xC0, 0x3F, 0xF0, 0x01, 0xFF, + 0xC0, 0x7D, 0xF0, 0x7E, 0xFF, 0xFE, 0x3F, 0xFF, 0x0F, 0xFF, 0x01, 0xFE, + 0x00, 0x3E, 0x1F, 0x0F, 0x87, 0xC3, 0xE7, 0xFF, 0xFF, 0xFF, 0x3E, 0x1F, + 0x0F, 0x87, 0xC3, 0xE1, 0xF0, 0xF8, 0x7C, 0x3E, 0x1F, 0x0F, 0x87, 0xF3, + 0xF8, 0xFC, 0x3E, 0xF8, 0x0F, 0xFC, 0x07, 0xFE, 0x03, 0xFF, 0x01, 0xFF, + 0x80, 0xFF, 0xC0, 0x7F, 0xE0, 0x3F, 0xF0, 0x1F, 0xF8, 0x0F, 0xFC, 0x07, + 0xFE, 0x03, 0xFF, 0x01, 0xFF, 0x80, 0xFF, 0xC0, 0xFF, 0xF0, 0xFF, 0xFF, + 0xFF, 0x7F, 0xFF, 0x9F, 0xF7, 0xC7, 0xE3, 0xE0, 0x7C, 0x07, 0xCF, 0x80, + 0xF9, 0xF0, 0x1F, 0x1F, 0x07, 0xC3, 0xE0, 0xF8, 0x7C, 0x1F, 0x07, 0x83, + 0xC0, 0xF8, 0xF8, 0x1F, 0x1F, 0x01, 0xE3, 0xC0, 0x3E, 0x78, 0x07, 0xDF, + 0x00, 0x7B, 0xC0, 0x0F, 0xF8, 0x01, 0xFF, 0x00, 0x1F, 0xC0, 0x03, 0xF8, + 0x00, 0x7F, 0x00, 0x07, 0xC0, 0x00, 0xFC, 0x1F, 0x03, 0xEF, 0x83, 0xE0, + 0x7D, 0xF0, 0x7E, 0x1F, 0x3E, 0x0F, 0xC3, 0xE3, 0xC3, 0xF8, 0x7C, 0x7C, + 0x7F, 0x0F, 0x0F, 0x8F, 0xF3, 0xE1, 0xF1, 0xDE, 0x7C, 0x1E, 0x7B, 0xCF, + 0x83, 0xEF, 0x39, 0xE0, 0x7D, 0xE7, 0x3C, 0x07, 0xB8, 0xFF, 0x80, 0xF7, + 0x1F, 0xE0, 0x1F, 0xE3, 0xFC, 0x03, 0xFC, 0x3F, 0x80, 0x3F, 0x07, 0xF0, + 0x07, 0xE0, 0xFC, 0x00, 0xFC, 0x1F, 0x80, 0x0F, 0x83, 0xF0, 0x00, 0xFC, + 0x1F, 0x9F, 0x07, 0xE7, 0xE3, 0xF0, 0xF8, 0xF8, 0x1F, 0x7E, 0x07, 0xDF, + 0x00, 0xFF, 0x80, 0x1F, 0xE0, 0x07, 0xF0, 0x00, 0xF8, 0x00, 0x7F, 0x00, + 0x3F, 0xE0, 0x0F, 0xF8, 0x07, 0xDF, 0x03, 0xF7, 0xE0, 0xF8, 0xF8, 0x7E, + 0x3F, 0x1F, 0x07, 0xEF, 0xC0, 0xF8, 0x7C, 0x03, 0xEF, 0x80, 0xF9, 0xF8, + 0x1F, 0x1F, 0x03, 0xE3, 0xE0, 0xF8, 0x7C, 0x1F, 0x07, 0xC3, 0xE0, 0xF8, + 0x78, 0x0F, 0x1F, 0x01, 0xF3, 0xC0, 0x3E, 0x78, 0x03, 0xDF, 0x00, 0x7F, + 0xC0, 0x0F, 0xF8, 0x00, 0xFF, 0x00, 0x1F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, + 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x1E, 0x00, 0x07, 0xC0, 0x07, 0xF8, + 0x00, 0xFE, 0x00, 0x1F, 0x80, 0x03, 0xE0, 0x00, 0x7F, 0xFE, 0x7F, 0xFE, + 0x7F, 0xFE, 0x7F, 0xFE, 0x00, 0x7E, 0x00, 0xFC, 0x01, 0xF8, 0x03, 0xF0, + 0x03, 0xF0, 0x07, 0xE0, 0x0F, 0xC0, 0x1F, 0x80, 0x3F, 0x00, 0x7E, 0x00, + 0xFE, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x87, + 0xC7, 0xE3, 0xF1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, 0xC1, + 0xE0, 0xF0, 0xF9, 0xF8, 0xF0, 0x7E, 0x0F, 0x83, 0xC1, 0xE0, 0xF0, 0x78, + 0x3C, 0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xFC, 0x7E, 0x1F, 0x07, 0x80, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xE0, 0xF0, 0x7C, 0x3E, 0x1F, 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, + 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x7C, 0x1F, 0x83, 0xC7, 0xE7, 0xC3, + 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, 0xC7, 0xE3, 0xE1, + 0xF0, 0xF0, 0x00, 0x3C, 0x00, 0xFE, 0x0F, 0xFE, 0x1E, 0x1F, 0xFC, 0x0F, + 0xC0, 0x0F, 0x00}; + +const GFXglyph FreeSansBold18pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 10, 0, 1}, // 0x20 ' ' + {0, 5, 25, 12, 4, -24}, // 0x21 '!' + {16, 13, 9, 17, 2, -25}, // 0x22 '"' + {31, 20, 24, 19, 0, -23}, // 0x23 '#' + {91, 19, 29, 19, 0, -25}, // 0x24 '$' + {160, 29, 25, 31, 1, -24}, // 0x25 '%' + {251, 22, 25, 25, 2, -24}, // 0x26 '&' + {320, 5, 9, 9, 2, -25}, // 0x27 ''' + {326, 9, 33, 12, 1, -25}, // 0x28 '(' + {364, 9, 33, 12, 1, -25}, // 0x29 ')' + {402, 12, 11, 14, 0, -25}, // 0x2A '*' + {419, 16, 16, 20, 2, -15}, // 0x2B '+' + {451, 5, 11, 9, 2, -4}, // 0x2C ',' + {458, 9, 4, 12, 1, -10}, // 0x2D '-' + {463, 5, 5, 9, 2, -4}, // 0x2E '.' + {467, 9, 25, 10, 0, -24}, // 0x2F '/' + {496, 17, 25, 19, 1, -24}, // 0x30 '0' + {550, 10, 25, 19, 3, -24}, // 0x31 '1' + {582, 17, 25, 19, 1, -24}, // 0x32 '2' + {636, 17, 25, 19, 1, -24}, // 0x33 '3' + {690, 16, 25, 19, 2, -24}, // 0x34 '4' + {740, 17, 25, 19, 1, -24}, // 0x35 '5' + {794, 18, 25, 19, 1, -24}, // 0x36 '6' + {851, 17, 25, 19, 1, -24}, // 0x37 '7' + {905, 17, 25, 19, 1, -24}, // 0x38 '8' + {959, 17, 25, 19, 1, -24}, // 0x39 '9' + {1013, 5, 18, 9, 2, -17}, // 0x3A ':' + {1025, 5, 24, 9, 2, -17}, // 0x3B ';' + {1040, 18, 17, 20, 1, -16}, // 0x3C '<' + {1079, 17, 12, 20, 2, -13}, // 0x3D '=' + {1105, 18, 17, 20, 1, -16}, // 0x3E '>' + {1144, 18, 26, 21, 2, -25}, // 0x3F '?' + {1203, 32, 31, 34, 1, -25}, // 0x40 '@' + {1327, 24, 26, 24, 0, -25}, // 0x41 'A' + {1405, 20, 26, 25, 3, -25}, // 0x42 'B' + {1470, 23, 26, 25, 1, -25}, // 0x43 'C' + {1545, 21, 26, 25, 3, -25}, // 0x44 'D' + {1614, 19, 26, 23, 3, -25}, // 0x45 'E' + {1676, 17, 26, 22, 3, -25}, // 0x46 'F' + {1732, 24, 26, 27, 1, -25}, // 0x47 'G' + {1810, 20, 26, 26, 3, -25}, // 0x48 'H' + {1875, 5, 26, 11, 3, -25}, // 0x49 'I' + {1892, 16, 26, 20, 1, -25}, // 0x4A 'J' + {1944, 22, 26, 25, 3, -25}, // 0x4B 'K' + {2016, 17, 26, 22, 3, -25}, // 0x4C 'L' + {2072, 24, 26, 30, 3, -25}, // 0x4D 'M' + {2150, 20, 26, 26, 3, -25}, // 0x4E 'N' + {2215, 25, 26, 27, 1, -25}, // 0x4F 'O' + {2297, 19, 26, 24, 3, -25}, // 0x50 'P' + {2359, 25, 27, 27, 1, -25}, // 0x51 'Q' + {2444, 21, 26, 25, 3, -25}, // 0x52 'R' + {2513, 20, 26, 24, 2, -25}, // 0x53 'S' + {2578, 19, 26, 23, 2, -25}, // 0x54 'T' + {2640, 20, 26, 26, 3, -25}, // 0x55 'U' + {2705, 22, 26, 23, 1, -25}, // 0x56 'V' + {2777, 32, 26, 34, 1, -25}, // 0x57 'W' + {2881, 22, 26, 24, 1, -25}, // 0x58 'X' + {2953, 21, 26, 22, 1, -25}, // 0x59 'Y' + {3022, 19, 26, 21, 1, -25}, // 0x5A 'Z' + {3084, 8, 33, 12, 2, -25}, // 0x5B '[' + {3117, 10, 25, 10, 0, -24}, // 0x5C '\' + {3149, 8, 33, 12, 1, -25}, // 0x5D ']' + {3182, 16, 15, 20, 2, -23}, // 0x5E '^' + {3212, 21, 3, 19, -1, 5}, // 0x5F '_' + {3220, 7, 5, 9, 1, -25}, // 0x60 '`' + {3225, 18, 19, 20, 1, -18}, // 0x61 'a' + {3268, 18, 26, 22, 2, -25}, // 0x62 'b' + {3327, 17, 19, 20, 1, -18}, // 0x63 'c' + {3368, 19, 26, 22, 1, -25}, // 0x64 'd' + {3430, 18, 19, 20, 1, -18}, // 0x65 'e' + {3473, 10, 26, 12, 1, -25}, // 0x66 'f' + {3506, 18, 26, 21, 1, -18}, // 0x67 'g' + {3565, 17, 26, 21, 2, -25}, // 0x68 'h' + {3621, 5, 26, 10, 2, -25}, // 0x69 'i' + {3638, 7, 33, 10, 0, -25}, // 0x6A 'j' + {3667, 17, 26, 20, 2, -25}, // 0x6B 'k' + {3723, 5, 26, 9, 2, -25}, // 0x6C 'l' + {3740, 27, 19, 31, 2, -18}, // 0x6D 'm' + {3805, 17, 19, 21, 2, -18}, // 0x6E 'n' + {3846, 19, 19, 21, 1, -18}, // 0x6F 'o' + {3892, 18, 26, 22, 2, -18}, // 0x70 'p' + {3951, 19, 26, 22, 1, -18}, // 0x71 'q' + {4013, 11, 19, 14, 2, -18}, // 0x72 'r' + {4040, 17, 19, 19, 1, -18}, // 0x73 's' + {4081, 9, 23, 12, 1, -22}, // 0x74 't' + {4107, 17, 19, 21, 2, -18}, // 0x75 'u' + {4148, 19, 19, 19, 0, -18}, // 0x76 'v' + {4194, 27, 19, 27, 0, -18}, // 0x77 'w' + {4259, 18, 19, 19, 1, -18}, // 0x78 'x' + {4302, 19, 26, 19, 0, -18}, // 0x79 'y' + {4364, 16, 19, 18, 1, -18}, // 0x7A 'z' + {4402, 9, 33, 14, 1, -25}, // 0x7B '{' + {4440, 3, 33, 10, 4, -25}, // 0x7C '|' + {4453, 9, 33, 14, 3, -25}, // 0x7D '}' + {4491, 15, 6, 18, 1, -10}}; // 0x7E '~' + +const GFXfont FreeSansBold18pt7b PROGMEM = { + (uint8_t *)FreeSansBold18pt7bBitmaps, (GFXglyph *)FreeSansBold18pt7bGlyphs, + 0x20, 0x7E, 42}; + +// Approx. 5175 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSansBold24pt7b.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSansBold24pt7b.h new file mode 100644 index 0000000..5dd7a54 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSansBold24pt7b.h @@ -0,0 +1,786 @@ +#pragma once +#include + +const uint8_t FreeSansBold24pt7bBitmaps[] PROGMEM = { + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xDF, 0x3E, 0x7C, 0xF9, 0xF3, 0xE7, 0xC7, 0x0E, 0x1C, 0x00, 0x00, 0x07, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFE, 0x1F, 0xFF, 0x87, 0xFF, 0xE1, + 0xFF, 0xF8, 0x7F, 0xFE, 0x1F, 0xFF, 0x87, 0xFF, 0xE1, 0xFD, 0xF0, 0x3E, + 0x7C, 0x0F, 0x9F, 0x03, 0xE3, 0x80, 0x70, 0xE0, 0x1C, 0x00, 0xF8, 0x3E, + 0x00, 0x3E, 0x0F, 0x80, 0x0F, 0x83, 0xE0, 0x03, 0xE0, 0xF8, 0x00, 0xF8, + 0x7C, 0x00, 0x7C, 0x1F, 0x00, 0x1F, 0x07, 0xC1, 0xFF, 0xFF, 0xFF, 0x7F, + 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, + 0x03, 0xE0, 0xF8, 0x00, 0xF8, 0x3E, 0x00, 0x3E, 0x1F, 0x00, 0x1F, 0x07, + 0xC0, 0x07, 0xC1, 0xF0, 0x01, 0xF0, 0x7C, 0x00, 0x7C, 0x1F, 0x03, 0xFF, + 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xF3, + 0xFF, 0xFF, 0xFC, 0x0F, 0x87, 0xC0, 0x07, 0xC1, 0xF0, 0x01, 0xF0, 0x7C, + 0x00, 0x7C, 0x1F, 0x00, 0x1F, 0x07, 0xC0, 0x07, 0xC3, 0xE0, 0x03, 0xE0, + 0xF8, 0x00, 0xF8, 0x3E, 0x00, 0x3E, 0x0F, 0x80, 0x00, 0x00, 0x38, 0x00, + 0x00, 0x1C, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0xFF, 0xFC, 0x00, 0xFF, 0xFF, + 0x80, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xF8, 0x7F, 0x73, 0xFE, 0x7F, 0x38, + 0xFF, 0x3F, 0x1C, 0x3F, 0xDF, 0x8E, 0x0F, 0xEF, 0xC7, 0x07, 0xF7, 0xE3, + 0x80, 0x03, 0xF9, 0xC0, 0x01, 0xFE, 0xE0, 0x00, 0x7F, 0xF0, 0x00, 0x3F, + 0xFC, 0x00, 0x0F, 0xFF, 0xC0, 0x03, 0xFF, 0xFC, 0x00, 0x7F, 0xFF, 0x80, + 0x0F, 0xFF, 0xE0, 0x01, 0xFF, 0xF8, 0x00, 0xE7, 0xFC, 0x00, 0x71, 0xFF, + 0x00, 0x38, 0x7F, 0xFF, 0x1C, 0x1F, 0xFF, 0x8E, 0x0F, 0xFF, 0xC7, 0x07, + 0xFF, 0xE3, 0x87, 0xFB, 0xF9, 0xC3, 0xF9, 0xFE, 0xE7, 0xFC, 0x7F, 0xFF, + 0xFC, 0x3F, 0xFF, 0xFC, 0x0F, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, 0x00, 0x3F, + 0xE0, 0x00, 0x03, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x00, 0xE0, 0x00, 0x00, + 0x70, 0x00, 0x03, 0xE0, 0x00, 0x3C, 0x00, 0x1F, 0xF0, 0x00, 0x78, 0x00, + 0x7F, 0xF8, 0x01, 0xE0, 0x01, 0xFF, 0xF0, 0x03, 0xC0, 0x07, 0xFF, 0xF0, + 0x0F, 0x00, 0x0F, 0x83, 0xE0, 0x1E, 0x00, 0x3E, 0x03, 0xE0, 0x78, 0x00, + 0x78, 0x03, 0xC0, 0xF0, 0x00, 0xF0, 0x07, 0x83, 0xC0, 0x01, 0xE0, 0x0F, + 0x07, 0x80, 0x03, 0xE0, 0x3E, 0x1E, 0x00, 0x03, 0xE0, 0xF8, 0x3C, 0x00, + 0x07, 0xFF, 0xF0, 0xF0, 0x00, 0x07, 0xFF, 0xC1, 0xE0, 0x00, 0x07, 0xFF, + 0x07, 0x80, 0x00, 0x07, 0xFC, 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x3C, 0x00, + 0x00, 0x00, 0x00, 0xF0, 0x1F, 0x00, 0x00, 0x01, 0xE0, 0xFF, 0x80, 0x00, + 0x07, 0x87, 0xFF, 0xC0, 0x00, 0x0F, 0x0F, 0xFF, 0x80, 0x00, 0x3C, 0x3F, + 0xFF, 0x80, 0x00, 0x78, 0xFC, 0x1F, 0x00, 0x01, 0xE1, 0xF0, 0x1F, 0x00, + 0x03, 0xC3, 0xC0, 0x1E, 0x00, 0x0F, 0x07, 0x80, 0x3C, 0x00, 0x1E, 0x0F, + 0x00, 0x78, 0x00, 0x78, 0x1F, 0x01, 0xF0, 0x00, 0xF0, 0x1F, 0x07, 0xC0, + 0x03, 0xC0, 0x3F, 0xFF, 0x80, 0x07, 0x80, 0x3F, 0xFE, 0x00, 0x1E, 0x00, + 0x7F, 0xF8, 0x00, 0x7C, 0x00, 0x3F, 0xE0, 0x00, 0xF0, 0x00, 0x1F, 0x00, + 0x00, 0x3F, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, + 0xFF, 0xF8, 0x00, 0x07, 0xFF, 0xF0, 0x00, 0x3F, 0xCF, 0xC0, 0x00, 0xFE, + 0x1F, 0x00, 0x03, 0xF8, 0x7C, 0x00, 0x0F, 0xE1, 0xF0, 0x00, 0x3F, 0xC7, + 0xC0, 0x00, 0x7F, 0x3E, 0x00, 0x01, 0xFF, 0xF8, 0x00, 0x03, 0xFF, 0xC0, + 0x00, 0x07, 0xFE, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x7F, 0x80, 0x00, + 0x07, 0xFF, 0x03, 0xE0, 0x3F, 0xFE, 0x0F, 0x83, 0xFF, 0xF8, 0x3E, 0x1F, + 0xF3, 0xF1, 0xF8, 0x7F, 0x07, 0xE7, 0xE3, 0xFC, 0x1F, 0xFF, 0x0F, 0xE0, + 0x3F, 0xFC, 0x3F, 0x80, 0x7F, 0xF0, 0xFE, 0x01, 0xFF, 0x83, 0xF8, 0x03, + 0xFE, 0x0F, 0xF0, 0x0F, 0xF0, 0x3F, 0xE0, 0x7F, 0xE0, 0x7F, 0xC3, 0xFF, + 0xC1, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xFE, 0x07, 0xFF, 0xFB, 0xFC, + 0x0F, 0xFF, 0xC7, 0xF8, 0x1F, 0xFE, 0x0F, 0xE0, 0x0F, 0xE0, 0x00, 0x00, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBE, 0x7C, 0xF8, 0xE1, 0xC0, 0x00, + 0xF0, 0x0F, 0x80, 0xF8, 0x07, 0xC0, 0x7C, 0x07, 0xE0, 0x3E, 0x03, 0xF0, + 0x1F, 0x80, 0xF8, 0x0F, 0xC0, 0x7E, 0x07, 0xE0, 0x3F, 0x01, 0xF8, 0x0F, + 0xC0, 0xFC, 0x07, 0xE0, 0x3F, 0x01, 0xF8, 0x0F, 0xC0, 0x7E, 0x03, 0xF0, + 0x1F, 0x80, 0xFC, 0x07, 0xE0, 0x3F, 0x00, 0xF8, 0x07, 0xE0, 0x3F, 0x01, + 0xF8, 0x07, 0xC0, 0x3F, 0x01, 0xF8, 0x07, 0xC0, 0x3F, 0x00, 0xF8, 0x07, + 0xE0, 0x1F, 0x00, 0xF8, 0x03, 0xE0, 0x1F, 0x00, 0x7C, 0x01, 0xE0, 0x78, + 0x03, 0xE0, 0x0F, 0x80, 0x7C, 0x01, 0xF0, 0x0F, 0x80, 0x3E, 0x01, 0xF0, + 0x0F, 0xC0, 0x3E, 0x01, 0xF8, 0x0F, 0xC0, 0x3F, 0x01, 0xF8, 0x0F, 0xC0, + 0x7E, 0x01, 0xF8, 0x0F, 0xC0, 0x7E, 0x03, 0xF0, 0x1F, 0x80, 0xFC, 0x07, + 0xE0, 0x3F, 0x01, 0xF8, 0x0F, 0xC0, 0x7E, 0x03, 0xE0, 0x3F, 0x01, 0xF8, + 0x0F, 0xC0, 0x7C, 0x07, 0xE0, 0x3F, 0x01, 0xF0, 0x1F, 0x80, 0xF8, 0x0F, + 0xC0, 0x7C, 0x07, 0xE0, 0x3E, 0x03, 0xF0, 0x1F, 0x01, 0xF0, 0x00, 0x03, + 0x80, 0x07, 0x00, 0x0E, 0x00, 0x1C, 0x06, 0x38, 0xDF, 0xFF, 0xFF, 0xFF, + 0x9F, 0xFE, 0x07, 0xC0, 0x1F, 0xC0, 0x3F, 0x80, 0xF7, 0x83, 0xC7, 0x87, + 0x8F, 0x02, 0x08, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, + 0x00, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x00, + 0x00, 0x3E, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x1F, 0x00, 0x00, + 0x3E, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x03, + 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x87, 0x0E, 0x1C, 0x78, 0xEF, 0xDF, 0x38, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x80, 0x00, 0x38, 0x03, 0xC0, 0x1C, 0x00, 0xE0, 0x07, 0x00, + 0x70, 0x03, 0x80, 0x1C, 0x01, 0xE0, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x38, + 0x01, 0xC0, 0x0E, 0x00, 0xF0, 0x07, 0x00, 0x38, 0x03, 0xC0, 0x1C, 0x00, + 0xE0, 0x07, 0x00, 0x70, 0x03, 0x80, 0x1C, 0x01, 0xE0, 0x0E, 0x00, 0x70, + 0x03, 0x80, 0x38, 0x01, 0xC0, 0x0E, 0x00, 0xF0, 0x07, 0x00, 0x00, 0x00, + 0xFF, 0x00, 0x03, 0xFF, 0xC0, 0x0F, 0xFF, 0xF0, 0x1F, 0xFF, 0xF8, 0x1F, + 0xFF, 0xF8, 0x3F, 0xFF, 0xFC, 0x3F, 0xC3, 0xFC, 0x7F, 0x81, 0xFE, 0x7F, + 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0xFE, 0x00, 0x7F, 0xFE, + 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, + 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, + 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0x7F, + 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0x7F, 0x81, 0xFE, 0x3F, + 0xC3, 0xFC, 0x3F, 0xFF, 0xFC, 0x1F, 0xFF, 0xF8, 0x1F, 0xFF, 0xF8, 0x0F, + 0xFF, 0xF0, 0x03, 0xFF, 0xC0, 0x00, 0xFF, 0x00, 0x00, 0x3C, 0x01, 0xF0, + 0x07, 0xC0, 0x3F, 0x01, 0xFC, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, + 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, + 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, + 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x01, 0xFE, 0x00, 0x0F, 0xFF, 0x80, + 0x3F, 0xFF, 0x80, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0x8F, 0xFF, 0xFF, 0x9F, + 0xE0, 0xFF, 0x7F, 0x80, 0xFF, 0xFE, 0x01, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, + 0x03, 0xFF, 0xF0, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, + 0x7F, 0x80, 0x00, 0xFE, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x7F, + 0xC0, 0x01, 0xFF, 0x00, 0x07, 0xF8, 0x00, 0x3F, 0xE0, 0x00, 0xFF, 0x00, + 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0x7F, 0x00, 0x01, + 0xFC, 0x00, 0x03, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xBF, + 0xFF, 0xFF, 0x7F, 0xFF, 0xFE, 0xFF, 0xFF, 0xFC, 0x01, 0xFE, 0x00, 0x0F, + 0xFF, 0x80, 0x7F, 0xFF, 0x81, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0x8F, 0xFF, + 0xFF, 0x1F, 0xE1, 0xFF, 0x7F, 0x81, 0xFE, 0xFE, 0x01, 0xFD, 0xFC, 0x03, + 0xFB, 0xF8, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0x7F, + 0x00, 0x01, 0xFC, 0x00, 0x1F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0x7F, 0xC0, + 0x00, 0xFF, 0xE0, 0x00, 0x3F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0x3F, 0xC0, + 0x00, 0x3F, 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, + 0x07, 0xFF, 0xF8, 0x0F, 0xF7, 0xF8, 0x3F, 0xCF, 0xFF, 0xFF, 0x9F, 0xFF, + 0xFE, 0x1F, 0xFF, 0xF8, 0x1F, 0xFF, 0xE0, 0x0F, 0xFF, 0x80, 0x07, 0xF8, + 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x80, 0x03, 0xFE, 0x00, 0x0F, 0xF8, + 0x00, 0x7F, 0xE0, 0x03, 0xFF, 0x80, 0x0F, 0xFE, 0x00, 0x7B, 0xF8, 0x01, + 0xEF, 0xE0, 0x0F, 0x3F, 0x80, 0x78, 0xFE, 0x01, 0xE3, 0xF8, 0x0F, 0x0F, + 0xE0, 0x38, 0x3F, 0x81, 0xE0, 0xFE, 0x07, 0x03, 0xF8, 0x3C, 0x0F, 0xE1, + 0xE0, 0x3F, 0x87, 0x00, 0xFE, 0x3C, 0x03, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF0, 0x00, 0xFE, 0x00, 0x03, 0xF8, 0x00, 0x0F, 0xE0, 0x00, 0x3F, 0x80, + 0x00, 0xFE, 0x00, 0x03, 0xF8, 0x00, 0x0F, 0xE0, 0x1F, 0xFF, 0xFC, 0x3F, + 0xFF, 0xF8, 0x7F, 0xFF, 0xF0, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0xC7, 0xFF, + 0xFF, 0x8F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x78, 0x00, + 0x01, 0xF1, 0xF8, 0x03, 0xEF, 0xFE, 0x07, 0xFF, 0xFE, 0x0F, 0xFF, 0xFE, + 0x1F, 0xFF, 0xFE, 0x7F, 0xFF, 0xFC, 0xFE, 0x07, 0xFC, 0x00, 0x07, 0xF8, + 0x00, 0x07, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, + 0x00, 0x3F, 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0xF8, 0x03, 0xFF, 0xF8, + 0x0F, 0xF7, 0xF8, 0x3F, 0xEF, 0xFF, 0xFF, 0x8F, 0xFF, 0xFF, 0x0F, 0xFF, + 0xFC, 0x0F, 0xFF, 0xE0, 0x0F, 0xFF, 0x80, 0x03, 0xF8, 0x00, 0x00, 0xFF, + 0x00, 0x07, 0xFF, 0x80, 0x1F, 0xFF, 0xC0, 0x7F, 0xFF, 0x81, 0xFF, 0xFF, + 0x87, 0xFF, 0xFF, 0x8F, 0xF0, 0xFF, 0x3F, 0xC0, 0xFE, 0x7F, 0x00, 0x00, + 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE3, 0xF0, 0x1F, + 0xDF, 0xF8, 0x3F, 0xFF, 0xFC, 0x7F, 0xFF, 0xFC, 0xFF, 0xFF, 0xF9, 0xFF, + 0x87, 0xFB, 0xFC, 0x07, 0xF7, 0xF8, 0x0F, 0xFF, 0xE0, 0x0F, 0xFF, 0xC0, + 0x1F, 0xFF, 0x80, 0x3F, 0xFF, 0x00, 0x7F, 0x7E, 0x00, 0xFE, 0xFC, 0x01, + 0xFD, 0xFC, 0x07, 0xFB, 0xF8, 0x0F, 0xE3, 0xFC, 0x7F, 0xC7, 0xFF, 0xFF, + 0x07, 0xFF, 0xFE, 0x0F, 0xFF, 0xF8, 0x0F, 0xFF, 0xE0, 0x07, 0xFF, 0x80, + 0x03, 0xF8, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x3F, 0x00, + 0x00, 0xFC, 0x00, 0x03, 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x1F, 0x80, 0x00, + 0x7F, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x1F, + 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xF8, 0x00, 0x07, 0xF0, + 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFC, 0x00, + 0x01, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, + 0x3F, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x03, 0xF8, 0x00, 0x07, + 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x03, 0xFF, 0xC0, 0x0F, 0xFF, 0xE0, 0x1F, + 0xFF, 0xF0, 0x3F, 0xFF, 0xF8, 0x3F, 0xFF, 0xF8, 0x7F, 0x83, 0xFC, 0x7F, + 0x00, 0xFC, 0x7E, 0x00, 0xFC, 0x7E, 0x00, 0x7C, 0x7E, 0x00, 0x7C, 0x7E, + 0x00, 0xFC, 0x3F, 0x00, 0xF8, 0x3F, 0x83, 0xF8, 0x0F, 0xFF, 0xF0, 0x07, + 0xFF, 0xC0, 0x0F, 0xFF, 0xF0, 0x1F, 0xFF, 0xF8, 0x3F, 0xC3, 0xFC, 0x7F, + 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, + 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFF, 0x00, 0xFF, 0xFF, + 0x00, 0xFE, 0x7F, 0x83, 0xFE, 0x7F, 0xFF, 0xFE, 0x3F, 0xFF, 0xFC, 0x1F, + 0xFF, 0xF8, 0x0F, 0xFF, 0xF0, 0x07, 0xFF, 0xC0, 0x00, 0xFF, 0x00, 0x00, + 0xFF, 0x00, 0x03, 0xFF, 0xC0, 0x0F, 0xFF, 0xE0, 0x1F, 0xFF, 0xF0, 0x3F, + 0xFF, 0xF8, 0x3F, 0xFF, 0xFC, 0x7F, 0xC3, 0xFC, 0x7F, 0x01, 0xFE, 0xFF, + 0x00, 0xFE, 0xFE, 0x00, 0x7E, 0xFE, 0x00, 0x7E, 0xFE, 0x00, 0x7F, 0xFE, + 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFF, 0x00, 0xFF, 0x7F, + 0x01, 0xFF, 0x7F, 0xC3, 0xFF, 0x7F, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0x1F, + 0xFF, 0xFF, 0x0F, 0xFF, 0x7F, 0x07, 0xFE, 0x7F, 0x01, 0xFC, 0x7E, 0x00, + 0x00, 0x7E, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x7F, 0x01, 0xFC, 0x7F, + 0x83, 0xFC, 0x7F, 0xFF, 0xF8, 0x3F, 0xFF, 0xF8, 0x3F, 0xFF, 0xF0, 0x1F, + 0xFF, 0xE0, 0x07, 0xFF, 0x80, 0x01, 0xFE, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFE, 0x1C, 0x38, 0x71, 0xE7, 0xBF, 0x7C, 0xE0, 0x00, + 0x00, 0x02, 0x00, 0x00, 0x3C, 0x00, 0x01, 0xF8, 0x00, 0x1F, 0xF0, 0x01, + 0xFF, 0xE0, 0x0F, 0xFF, 0xC0, 0xFF, 0xFC, 0x0F, 0xFF, 0xC0, 0x7F, 0xFC, + 0x01, 0xFF, 0xC0, 0x03, 0xFC, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0xE0, 0x00, + 0x1F, 0xF8, 0x00, 0x3F, 0xFE, 0x00, 0x0F, 0xFF, 0x80, 0x07, 0xFF, 0xE0, + 0x01, 0xFF, 0xF8, 0x00, 0x7F, 0xF8, 0x00, 0x3F, 0xF0, 0x00, 0x0F, 0xE0, + 0x00, 0x03, 0xC0, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x80, 0x00, + 0x01, 0xC0, 0x00, 0x03, 0xF0, 0x00, 0x07, 0xFC, 0x00, 0x0F, 0xFE, 0x00, + 0x1F, 0xFF, 0x80, 0x07, 0xFF, 0xE0, 0x01, 0xFF, 0xF0, 0x00, 0x7F, 0xFC, + 0x00, 0x1F, 0xFC, 0x00, 0x07, 0xF8, 0x00, 0x03, 0xF0, 0x00, 0x1F, 0xE0, + 0x01, 0xFF, 0xC0, 0x0F, 0xFF, 0x80, 0xFF, 0xF8, 0x0F, 0xFF, 0x80, 0xFF, + 0xFC, 0x03, 0xFF, 0xC0, 0x07, 0xFC, 0x00, 0x0F, 0xE0, 0x00, 0x1E, 0x00, + 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x07, 0xFF, 0xC0, 0x1F, + 0xFF, 0xF0, 0x3F, 0xFF, 0xF8, 0x3F, 0xFF, 0xFC, 0x7F, 0xFF, 0xFC, 0x7F, + 0x83, 0xFE, 0x7F, 0x01, 0xFE, 0xFF, 0x00, 0xFF, 0xFE, 0x00, 0x7F, 0xFE, + 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0x00, + 0x01, 0xFE, 0x00, 0x03, 0xFE, 0x00, 0x07, 0xFC, 0x00, 0x0F, 0xF8, 0x00, + 0x3F, 0xF0, 0x00, 0x3F, 0xE0, 0x00, 0x7F, 0x80, 0x00, 0x7F, 0x00, 0x00, + 0xFE, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, + 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, + 0xFE, 0x00, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0xE0, + 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xF8, 0x00, + 0x03, 0xFE, 0x01, 0xFF, 0x80, 0x01, 0xFE, 0x00, 0x07, 0xF8, 0x00, 0x7F, + 0x80, 0x00, 0x3F, 0x80, 0x1F, 0xC0, 0x00, 0x03, 0xF8, 0x07, 0xF0, 0x00, + 0x00, 0x1F, 0x00, 0xFC, 0x00, 0x00, 0x01, 0xF0, 0x3F, 0x00, 0x00, 0x00, + 0x3E, 0x0F, 0xC0, 0x07, 0xE3, 0xC3, 0xE1, 0xF0, 0x03, 0xFE, 0xF8, 0x3C, + 0x7E, 0x01, 0xFF, 0xFF, 0x07, 0x8F, 0x80, 0x7E, 0x1F, 0xC0, 0x7B, 0xF0, + 0x1F, 0x81, 0xF8, 0x0F, 0x7C, 0x03, 0xE0, 0x1F, 0x01, 0xEF, 0x80, 0xF8, + 0x03, 0xC0, 0x3F, 0xF0, 0x1E, 0x00, 0x78, 0x07, 0xFC, 0x07, 0xC0, 0x0F, + 0x00, 0xFF, 0x80, 0xF0, 0x01, 0xE0, 0x1F, 0xF0, 0x1E, 0x00, 0x38, 0x07, + 0xFE, 0x07, 0xC0, 0x0F, 0x00, 0xFF, 0xC0, 0xF8, 0x01, 0xE0, 0x1E, 0xF8, + 0x1F, 0x00, 0x38, 0x07, 0xDF, 0x03, 0xE0, 0x0F, 0x00, 0xF3, 0xF0, 0x7C, + 0x03, 0xE0, 0x3E, 0x3E, 0x0F, 0xC0, 0xFC, 0x0F, 0x87, 0xC0, 0xFC, 0x3F, + 0xC7, 0xF0, 0xFC, 0x1F, 0xFF, 0xFF, 0xFC, 0x0F, 0xC1, 0xFF, 0xEF, 0xFF, + 0x01, 0xFC, 0x1F, 0xF8, 0xFF, 0x80, 0x1F, 0xC0, 0xFC, 0x07, 0xC0, 0x01, + 0xFC, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x00, 0x01, 0xFE, + 0x00, 0x00, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x60, 0x00, 0x01, 0xFF, 0xFF, + 0xFE, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x7F, 0xFF, 0xF0, + 0x00, 0x00, 0x00, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, + 0x0F, 0xF8, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, + 0x1F, 0xFC, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, + 0x3F, 0xFE, 0x00, 0x00, 0x3F, 0x7E, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x00, + 0x7F, 0x7F, 0x00, 0x00, 0x7E, 0x3F, 0x00, 0x00, 0xFE, 0x3F, 0x80, 0x00, + 0xFE, 0x3F, 0x80, 0x01, 0xFC, 0x1F, 0x80, 0x01, 0xFC, 0x1F, 0xC0, 0x01, + 0xF8, 0x1F, 0xC0, 0x03, 0xF8, 0x0F, 0xE0, 0x03, 0xF8, 0x0F, 0xE0, 0x03, + 0xF0, 0x0F, 0xE0, 0x07, 0xF0, 0x07, 0xF0, 0x07, 0xFF, 0xFF, 0xF0, 0x07, + 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, 0xF8, 0x1F, + 0xFF, 0xFF, 0xF8, 0x1F, 0xFF, 0xFF, 0xFC, 0x1F, 0xC0, 0x01, 0xFC, 0x3F, + 0x80, 0x01, 0xFC, 0x3F, 0x80, 0x00, 0xFE, 0x3F, 0x80, 0x00, 0xFE, 0x7F, + 0x00, 0x00, 0xFE, 0x7F, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x00, 0x7F, 0xFF, + 0xFF, 0xE0, 0x1F, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0xF8, 0x7F, 0xFF, 0xFF, + 0x8F, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xFF, 0x3F, 0x80, 0x1F, 0xF7, 0xF0, + 0x01, 0xFE, 0xFE, 0x00, 0x1F, 0xDF, 0xC0, 0x03, 0xFB, 0xF8, 0x00, 0x7F, + 0x7F, 0x00, 0x1F, 0xCF, 0xE0, 0x07, 0xF9, 0xFF, 0xFF, 0xFE, 0x3F, 0xFF, + 0xFF, 0x87, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFE, 0x1F, 0xFF, 0xFF, 0xE3, + 0xFF, 0xFF, 0xFE, 0x7F, 0x00, 0x1F, 0xEF, 0xE0, 0x01, 0xFD, 0xFC, 0x00, + 0x1F, 0xFF, 0x80, 0x03, 0xFF, 0xF0, 0x00, 0x7F, 0xFE, 0x00, 0x0F, 0xFF, + 0xC0, 0x01, 0xFF, 0xF8, 0x00, 0x7F, 0xFF, 0x00, 0x1F, 0xEF, 0xFF, 0xFF, + 0xFD, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xF8, 0xFF, + 0xFF, 0xFC, 0x1F, 0xFF, 0xFC, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x03, 0xFF, + 0xF8, 0x00, 0x1F, 0xFF, 0xF8, 0x01, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, + 0xE0, 0x3F, 0xFF, 0xFF, 0xC1, 0xFF, 0x81, 0xFF, 0x0F, 0xF8, 0x01, 0xFE, + 0x3F, 0xC0, 0x07, 0xF9, 0xFE, 0x00, 0x0F, 0xE7, 0xF8, 0x00, 0x1F, 0xDF, + 0xC0, 0x00, 0x7F, 0x7F, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x0F, 0xE0, + 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x03, 0xF8, 0x00, + 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x00, + 0x03, 0xF8, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, + 0x7F, 0x00, 0x01, 0xFD, 0xFC, 0x00, 0x07, 0xF7, 0xF8, 0x00, 0x3F, 0xCF, + 0xF0, 0x00, 0xFE, 0x3F, 0xE0, 0x07, 0xF8, 0x7F, 0xE0, 0x7F, 0xC0, 0xFF, + 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xF8, 0x07, 0xFF, 0xFF, 0xC0, 0x07, 0xFF, + 0xFE, 0x00, 0x0F, 0xFF, 0xE0, 0x00, 0x07, 0xFC, 0x00, 0xFF, 0xFF, 0xC0, + 0x0F, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFC, 0x0F, 0xFF, 0xFF, 0xE0, 0xFF, + 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xF8, 0xFE, 0x00, 0xFF, 0xCF, 0xE0, 0x03, + 0xFC, 0xFE, 0x00, 0x1F, 0xEF, 0xE0, 0x01, 0xFE, 0xFE, 0x00, 0x0F, 0xEF, + 0xE0, 0x00, 0xFE, 0xFE, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0x7F, 0xFE, 0x00, + 0x07, 0xFF, 0xE0, 0x00, 0x7F, 0xFE, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0x7F, + 0xFE, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0x7F, 0xFE, 0x00, 0x07, 0xFF, 0xE0, + 0x00, 0x7F, 0xFE, 0x00, 0x0F, 0xEF, 0xE0, 0x00, 0xFE, 0xFE, 0x00, 0x1F, + 0xEF, 0xE0, 0x01, 0xFE, 0xFE, 0x00, 0x3F, 0xCF, 0xE0, 0x0F, 0xFC, 0xFF, + 0xFF, 0xFF, 0x8F, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, + 0xC0, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFC, 0x00, 0xFF, 0xFF, 0xFF, 0x7F, + 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xF7, + 0xFF, 0xFF, 0xFB, 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xFE, 0x00, 0x00, + 0x7F, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x0F, 0xE0, 0x00, + 0x07, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, + 0xFE, 0x7F, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0x9F, 0xC0, 0x00, 0x0F, 0xE0, + 0x00, 0x07, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xFE, + 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x0F, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFF, 0xFF, + 0xFC, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, + 0xFC, 0xFF, 0xFF, 0xFC, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, + 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0x07, 0xFF, 0xFF, + 0x00, 0x1F, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0xFF, + 0x07, 0xFE, 0x03, 0xFF, 0x0F, 0xF0, 0x01, 0xFE, 0x3F, 0xC0, 0x01, 0xFC, + 0x7F, 0x00, 0x01, 0xFD, 0xFE, 0x00, 0x03, 0xFB, 0xF8, 0x00, 0x00, 0x07, + 0xF0, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x7F, + 0x00, 0x00, 0x00, 0xFE, 0x00, 0x3F, 0xFF, 0xFC, 0x00, 0x7F, 0xFF, 0xF8, + 0x00, 0xFF, 0xFF, 0xF0, 0x01, 0xFF, 0xFF, 0xE0, 0x03, 0xFF, 0xFF, 0xC0, + 0x07, 0xFF, 0xFF, 0xC0, 0x00, 0x1F, 0xBF, 0x80, 0x00, 0x3F, 0x7F, 0x00, + 0x00, 0x7E, 0xFF, 0x00, 0x01, 0xFC, 0xFF, 0x00, 0x03, 0xF9, 0xFF, 0x00, + 0x0F, 0xF1, 0xFF, 0x00, 0x3F, 0xE3, 0xFF, 0x83, 0xFF, 0xC3, 0xFF, 0xFF, + 0xFF, 0x83, 0xFF, 0xFF, 0xDF, 0x03, 0xFF, 0xFF, 0x9E, 0x03, 0xFF, 0xFE, + 0x3C, 0x01, 0xFF, 0xF0, 0x78, 0x00, 0x7F, 0x80, 0x00, 0xFE, 0x00, 0x0F, + 0xFF, 0xC0, 0x01, 0xFF, 0xF8, 0x00, 0x3F, 0xFF, 0x00, 0x07, 0xFF, 0xE0, + 0x00, 0xFF, 0xFC, 0x00, 0x1F, 0xFF, 0x80, 0x03, 0xFF, 0xF0, 0x00, 0x7F, + 0xFE, 0x00, 0x0F, 0xFF, 0xC0, 0x01, 0xFF, 0xF8, 0x00, 0x3F, 0xFF, 0x00, + 0x07, 0xFF, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0xFF, 0xFC, 0x00, 0x1F, 0xFF, + 0x80, 0x03, 0xFF, 0xF0, 0x00, 0x7F, 0xFE, 0x00, 0x0F, 0xFF, 0xC0, 0x01, + 0xFF, 0xF8, 0x00, 0x3F, 0xFF, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0xFF, 0xFC, + 0x00, 0x1F, 0xFF, 0x80, 0x03, 0xFF, 0xF0, 0x00, 0x7F, 0xFE, 0x00, 0x0F, + 0xFF, 0xC0, 0x01, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x01, + 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xC0, 0x00, 0x7F, 0x00, 0x01, 0xFC, + 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xC0, 0x00, 0x7F, 0x00, 0x01, 0xFC, 0x00, + 0x07, 0xF0, 0x00, 0x1F, 0xC0, 0x00, 0x7F, 0x00, 0x01, 0xFC, 0x00, 0x07, + 0xF0, 0x00, 0x1F, 0xC0, 0x00, 0x7F, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xF0, + 0x00, 0x1F, 0xC0, 0x00, 0x7F, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0xE0, + 0x1F, 0xFF, 0x80, 0x7F, 0xFE, 0x01, 0xFF, 0xF8, 0x07, 0xFF, 0xE0, 0x1F, + 0xFF, 0xC0, 0xFF, 0xFF, 0x87, 0xFD, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0x8F, + 0xFF, 0xFC, 0x1F, 0xFF, 0xE0, 0x3F, 0xFF, 0x00, 0x1F, 0xE0, 0x00, 0xFE, + 0x00, 0x0F, 0xF3, 0xF8, 0x00, 0x7F, 0x8F, 0xE0, 0x03, 0xFC, 0x3F, 0x80, + 0x1F, 0xE0, 0xFE, 0x00, 0xFF, 0x83, 0xF8, 0x07, 0xFC, 0x0F, 0xE0, 0x1F, + 0xE0, 0x3F, 0x80, 0xFF, 0x00, 0xFE, 0x07, 0xF8, 0x03, 0xF8, 0x3F, 0xC0, + 0x0F, 0xE1, 0xFE, 0x00, 0x3F, 0x8F, 0xF0, 0x00, 0xFE, 0x7F, 0x80, 0x03, + 0xFB, 0xFC, 0x00, 0x0F, 0xFF, 0xE0, 0x00, 0x3F, 0xFF, 0xC0, 0x00, 0xFF, + 0xFF, 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x0F, 0xFF, 0xFC, 0x00, 0x3F, 0xF7, + 0xF8, 0x00, 0xFF, 0x8F, 0xF0, 0x03, 0xFC, 0x3F, 0xC0, 0x0F, 0xE0, 0x7F, + 0x80, 0x3F, 0x80, 0xFF, 0x00, 0xFE, 0x01, 0xFE, 0x03, 0xF8, 0x07, 0xFC, + 0x0F, 0xE0, 0x0F, 0xF0, 0x3F, 0x80, 0x1F, 0xE0, 0xFE, 0x00, 0x3F, 0xC3, + 0xF8, 0x00, 0xFF, 0x8F, 0xE0, 0x01, 0xFE, 0x3F, 0x80, 0x03, 0xFC, 0xFE, + 0x00, 0x07, 0xFB, 0xF8, 0x00, 0x1F, 0xF0, 0xFE, 0x00, 0x01, 0xFC, 0x00, + 0x03, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, + 0x3F, 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x03, + 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0x3F, + 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x03, 0xF8, + 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0x3F, 0x80, + 0x00, 0x7F, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x03, 0xF8, 0x00, + 0x07, 0xF0, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFF, 0xE0, 0x03, + 0xFF, 0xFF, 0xF0, 0x01, 0xFF, 0xFF, 0xF8, 0x00, 0xFF, 0xFF, 0xFC, 0x00, + 0x7F, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xFF, 0xC0, + 0x1F, 0xFF, 0xFF, 0xE0, 0x0F, 0xFF, 0xFF, 0xF0, 0x07, 0xFF, 0xFF, 0xFC, + 0x07, 0xFF, 0xFF, 0xBE, 0x03, 0xEF, 0xFF, 0xDF, 0x01, 0xF7, 0xFF, 0xEF, + 0x80, 0xFB, 0xFF, 0xF7, 0xC0, 0xFD, 0xFF, 0xFB, 0xF0, 0x7C, 0xFF, 0xFC, + 0xF8, 0x3E, 0x7F, 0xFE, 0x7C, 0x1F, 0x3F, 0xFF, 0x3E, 0x0F, 0x9F, 0xFF, + 0x9F, 0x8F, 0x8F, 0xFF, 0xC7, 0xC7, 0xC7, 0xFF, 0xE3, 0xE3, 0xE3, 0xFF, + 0xF1, 0xF1, 0xF1, 0xFF, 0xF8, 0xFC, 0xF8, 0xFF, 0xFC, 0x3E, 0xF8, 0x7F, + 0xFE, 0x1F, 0x7C, 0x3F, 0xFF, 0x0F, 0xBE, 0x1F, 0xFF, 0x87, 0xDF, 0x0F, + 0xFF, 0xC3, 0xFF, 0x07, 0xFF, 0xE0, 0xFF, 0x83, 0xFF, 0xF0, 0x7F, 0xC1, + 0xFF, 0xF8, 0x3F, 0xE0, 0xFF, 0xFC, 0x1F, 0xF0, 0x7F, 0xFE, 0x07, 0xF0, + 0x3F, 0xFF, 0x03, 0xF8, 0x1F, 0xC0, 0xFE, 0x00, 0x07, 0xFF, 0xF0, 0x00, + 0x7F, 0xFF, 0x80, 0x07, 0xFF, 0xF8, 0x00, 0x7F, 0xFF, 0xC0, 0x07, 0xFF, + 0xFC, 0x00, 0x7F, 0xFF, 0xE0, 0x07, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0xF0, + 0x07, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0xF8, 0x07, 0xFF, 0xEF, 0xC0, 0x7F, + 0xFE, 0xFE, 0x07, 0xFF, 0xE7, 0xE0, 0x7F, 0xFE, 0x7F, 0x07, 0xFF, 0xE3, + 0xF0, 0x7F, 0xFE, 0x1F, 0x87, 0xFF, 0xE1, 0xFC, 0x7F, 0xFE, 0x0F, 0xC7, + 0xFF, 0xE0, 0xFE, 0x7F, 0xFE, 0x07, 0xE7, 0xFF, 0xE0, 0x3F, 0x7F, 0xFE, + 0x03, 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xFE, 0x01, 0xFF, 0xFF, 0xE0, 0x0F, + 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xE0, 0x07, 0xFF, 0xFE, 0x00, 0x3F, 0xFF, + 0xE0, 0x03, 0xFF, 0xFE, 0x00, 0x1F, 0xFF, 0xE0, 0x00, 0xFF, 0xFE, 0x00, + 0x0F, 0xFF, 0xE0, 0x00, 0x7F, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x3F, 0xFF, + 0x80, 0x00, 0x7F, 0xFF, 0xE0, 0x00, 0x7F, 0xFF, 0xFC, 0x00, 0x7F, 0xFF, + 0xFF, 0x00, 0x7F, 0xFF, 0xFF, 0xC0, 0x7F, 0xE0, 0x3F, 0xF0, 0x3F, 0xC0, + 0x0F, 0xF8, 0x3F, 0xC0, 0x01, 0xFE, 0x1F, 0xC0, 0x00, 0x7F, 0x1F, 0xE0, + 0x00, 0x3F, 0xCF, 0xE0, 0x00, 0x0F, 0xE7, 0xF0, 0x00, 0x07, 0xF7, 0xF8, + 0x00, 0x03, 0xFF, 0xF8, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x7F, 0xFE, + 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x00, 0x0F, 0xFF, + 0xC0, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0x03, 0xFF, 0xF0, 0x00, 0x01, 0xFF, + 0xFC, 0x00, 0x01, 0xFE, 0xFE, 0x00, 0x00, 0xFE, 0x7F, 0x00, 0x00, 0x7F, + 0x3F, 0xC0, 0x00, 0x7F, 0x8F, 0xE0, 0x00, 0x3F, 0x87, 0xF8, 0x00, 0x3F, + 0xC1, 0xFE, 0x00, 0x3F, 0xC0, 0xFF, 0xC0, 0x7F, 0xE0, 0x3F, 0xFF, 0xFF, + 0xE0, 0x0F, 0xFF, 0xFF, 0xE0, 0x03, 0xFF, 0xFF, 0xE0, 0x00, 0xFF, 0xFF, + 0xE0, 0x00, 0x1F, 0xFF, 0xC0, 0x00, 0x01, 0xFF, 0x00, 0x00, 0xFF, 0xFF, + 0xE0, 0x3F, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0xFC, 0xFF, + 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xEF, 0xE0, 0x0F, 0xFB, 0xF8, 0x00, 0xFF, + 0xFE, 0x00, 0x1F, 0xFF, 0x80, 0x07, 0xFF, 0xE0, 0x01, 0xFF, 0xF8, 0x00, + 0x7F, 0xFE, 0x00, 0x1F, 0xFF, 0x80, 0x07, 0xFF, 0xE0, 0x03, 0xFF, 0xF8, + 0x03, 0xFE, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xF3, + 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xF8, 0x3F, 0xFF, 0xF8, 0x0F, 0xE0, 0x00, + 0x03, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x0F, 0xE0, + 0x00, 0x03, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x0F, + 0xE0, 0x00, 0x03, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x3F, 0x80, 0x00, + 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x7F, 0xFF, + 0xE0, 0x00, 0x7F, 0xFF, 0xFC, 0x00, 0x7F, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, + 0xFF, 0xC0, 0x7F, 0xE0, 0x3F, 0xF0, 0x3F, 0xC0, 0x07, 0xF8, 0x3F, 0xC0, + 0x01, 0xFE, 0x1F, 0xC0, 0x00, 0x7F, 0x1F, 0xE0, 0x00, 0x3F, 0xCF, 0xE0, + 0x00, 0x0F, 0xE7, 0xF0, 0x00, 0x07, 0xF7, 0xF8, 0x00, 0x03, 0xFF, 0xF8, + 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x7F, 0xFE, 0x00, 0x00, 0x3F, 0xFF, + 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0x07, 0xFF, + 0xE0, 0x00, 0x03, 0xFF, 0xF0, 0x00, 0x01, 0xFF, 0xFC, 0x00, 0x21, 0xFE, + 0xFE, 0x00, 0x38, 0xFE, 0x7F, 0x00, 0x3E, 0x7F, 0x3F, 0xC0, 0x3F, 0xFF, + 0x8F, 0xE0, 0x0F, 0xFF, 0x87, 0xF8, 0x03, 0xFF, 0xC1, 0xFE, 0x00, 0xFF, + 0xC0, 0xFF, 0xC0, 0x7F, 0xE0, 0x3F, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, + 0xFC, 0x03, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xC0, 0x1F, 0xFF, + 0xCF, 0xC0, 0x01, 0xFF, 0x03, 0xC0, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, + 0xF8, 0x0F, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0x8F, 0xFF, 0xFF, 0xF8, + 0xFF, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xFC, 0xFE, 0x00, 0x3F, 0xEF, 0xE0, + 0x01, 0xFE, 0xFE, 0x00, 0x0F, 0xEF, 0xE0, 0x00, 0xFE, 0xFE, 0x00, 0x0F, + 0xEF, 0xE0, 0x00, 0xFE, 0xFE, 0x00, 0x0F, 0xEF, 0xE0, 0x01, 0xFC, 0xFE, + 0x00, 0x3F, 0xCF, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, + 0xC0, 0xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0x8F, + 0xE0, 0x07, 0xF8, 0xFE, 0x00, 0x1F, 0xCF, 0xE0, 0x01, 0xFC, 0xFE, 0x00, + 0x1F, 0xCF, 0xE0, 0x01, 0xFC, 0xFE, 0x00, 0x1F, 0xCF, 0xE0, 0x01, 0xFC, + 0xFE, 0x00, 0x1F, 0xCF, 0xE0, 0x01, 0xFC, 0xFE, 0x00, 0x1F, 0xCF, 0xE0, + 0x01, 0xFC, 0xFE, 0x00, 0x1F, 0xEF, 0xE0, 0x00, 0xFF, 0x00, 0xFF, 0xC0, + 0x00, 0x3F, 0xFF, 0x80, 0x0F, 0xFF, 0xFE, 0x01, 0xFF, 0xFF, 0xF0, 0x3F, + 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0xFC, 0x7F, 0xC0, 0xFF, 0xCF, 0xF0, 0x03, + 0xFE, 0xFE, 0x00, 0x1F, 0xEF, 0xE0, 0x00, 0xFE, 0xFE, 0x00, 0x0F, 0xEF, + 0xE0, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x7F, 0xFC, + 0x00, 0x07, 0xFF, 0xFE, 0x00, 0x3F, 0xFF, 0xFC, 0x01, 0xFF, 0xFF, 0xF0, + 0x07, 0xFF, 0xFF, 0xC0, 0x0F, 0xFF, 0xFE, 0x00, 0x07, 0xFF, 0xE0, 0x00, + 0x03, 0xFF, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x07, + 0xFF, 0xE0, 0x00, 0x7F, 0xFE, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0xFF, 0xFF, + 0x00, 0x0F, 0xE7, 0xFC, 0x03, 0xFE, 0x7F, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, + 0xFC, 0x1F, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xF0, 0x03, 0xFF, 0xFC, 0x00, + 0x07, 0xFE, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, + 0x0F, 0xE0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, + 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xF8, 0x00, 0x00, + 0x7F, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x80, + 0x00, 0x07, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, + 0xF8, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x01, 0xFC, 0x00, + 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, + 0xC0, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x0F, 0xE0, 0x00, + 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0xFE, 0x00, + 0x0F, 0xFF, 0xC0, 0x01, 0xFF, 0xF8, 0x00, 0x3F, 0xFF, 0x00, 0x07, 0xFF, + 0xE0, 0x00, 0xFF, 0xFC, 0x00, 0x1F, 0xFF, 0x80, 0x03, 0xFF, 0xF0, 0x00, + 0x7F, 0xFE, 0x00, 0x0F, 0xFF, 0xC0, 0x01, 0xFF, 0xF8, 0x00, 0x3F, 0xFF, + 0x00, 0x07, 0xFF, 0xE0, 0x00, 0xFF, 0xFC, 0x00, 0x1F, 0xFF, 0x80, 0x03, + 0xFF, 0xF0, 0x00, 0x7F, 0xFE, 0x00, 0x0F, 0xFF, 0xC0, 0x01, 0xFF, 0xF8, + 0x00, 0x3F, 0xFF, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0xFF, 0xFC, 0x00, 0x1F, + 0xFF, 0x80, 0x03, 0xFF, 0xF0, 0x00, 0x7F, 0xFE, 0x00, 0x0F, 0xFF, 0xC0, + 0x01, 0xFF, 0xFC, 0x00, 0x7F, 0xBF, 0xC0, 0x1F, 0xE7, 0xFC, 0x07, 0xFC, + 0x7F, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, + 0xFE, 0x00, 0x7F, 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x00, 0xFE, 0x00, 0x03, + 0xFF, 0xF0, 0x00, 0x1F, 0xDF, 0xC0, 0x01, 0xFC, 0xFE, 0x00, 0x0F, 0xE7, + 0xF0, 0x00, 0x7F, 0x1F, 0xC0, 0x03, 0xF0, 0xFE, 0x00, 0x3F, 0x87, 0xF0, + 0x01, 0xFC, 0x1F, 0xC0, 0x0F, 0xC0, 0xFE, 0x00, 0xFE, 0x03, 0xF0, 0x07, + 0xF0, 0x1F, 0x80, 0x3F, 0x00, 0xFE, 0x03, 0xF8, 0x03, 0xF0, 0x1F, 0xC0, + 0x1F, 0x80, 0xFC, 0x00, 0xFE, 0x07, 0xE0, 0x03, 0xF0, 0x7F, 0x00, 0x1F, + 0x83, 0xF0, 0x00, 0xFE, 0x1F, 0x80, 0x03, 0xF1, 0xF8, 0x00, 0x1F, 0x8F, + 0xC0, 0x00, 0xFC, 0x7E, 0x00, 0x03, 0xF3, 0xE0, 0x00, 0x1F, 0xBF, 0x00, + 0x00, 0xFD, 0xF8, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, + 0xFF, 0xE0, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0xFF, + 0x80, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0xFE, 0x00, + 0x00, 0xFF, 0x00, 0x3F, 0x80, 0x1F, 0xFF, 0xE0, 0x07, 0xF0, 0x03, 0xFD, + 0xFC, 0x01, 0xFE, 0x00, 0x7F, 0x3F, 0x80, 0x3F, 0xE0, 0x0F, 0xE7, 0xF0, + 0x07, 0xFC, 0x01, 0xFC, 0x7F, 0x00, 0xFF, 0x80, 0x7F, 0x8F, 0xE0, 0x1F, + 0xF0, 0x0F, 0xE1, 0xFC, 0x07, 0xFF, 0x01, 0xFC, 0x3F, 0x80, 0xFB, 0xE0, + 0x3F, 0x83, 0xF0, 0x1F, 0x7C, 0x07, 0xE0, 0x7F, 0x03, 0xEF, 0x81, 0xFC, + 0x0F, 0xE0, 0x7D, 0xF0, 0x3F, 0x80, 0xFC, 0x1F, 0x9F, 0x07, 0xF0, 0x1F, + 0x83, 0xE3, 0xE0, 0xFC, 0x03, 0xF0, 0x7C, 0x7C, 0x1F, 0x80, 0x7F, 0x0F, + 0x8F, 0x87, 0xF0, 0x07, 0xE1, 0xF0, 0xF8, 0xFC, 0x00, 0xFC, 0x7E, 0x1F, + 0x1F, 0x80, 0x1F, 0x8F, 0x83, 0xE3, 0xF0, 0x01, 0xF9, 0xF0, 0x7C, 0x7E, + 0x00, 0x3F, 0x3E, 0x0F, 0x9F, 0x80, 0x07, 0xE7, 0xC0, 0xFB, 0xF0, 0x00, + 0xFD, 0xF0, 0x1F, 0x7E, 0x00, 0x0F, 0xBE, 0x03, 0xEF, 0xC0, 0x01, 0xFF, + 0xC0, 0x7D, 0xF0, 0x00, 0x3F, 0xF8, 0x0F, 0xFE, 0x00, 0x03, 0xFF, 0x00, + 0xFF, 0xC0, 0x00, 0x7F, 0xC0, 0x1F, 0xF0, 0x00, 0x0F, 0xF8, 0x03, 0xFE, + 0x00, 0x01, 0xFF, 0x00, 0x7F, 0xC0, 0x00, 0x1F, 0xE0, 0x07, 0xF8, 0x00, + 0x03, 0xFC, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x1F, 0xC0, 0x00, 0x07, + 0xE0, 0x03, 0xF8, 0x00, 0x7F, 0x80, 0x07, 0xF9, 0xFF, 0x00, 0x3F, 0xC3, + 0xFC, 0x00, 0xFF, 0x07, 0xF8, 0x07, 0xF8, 0x1F, 0xE0, 0x1F, 0xC0, 0x3F, + 0xC0, 0xFF, 0x00, 0xFF, 0x07, 0xF8, 0x01, 0xFE, 0x1F, 0xE0, 0x03, 0xF8, + 0xFF, 0x00, 0x0F, 0xF3, 0xF8, 0x00, 0x1F, 0xDF, 0xE0, 0x00, 0x3F, 0xFF, + 0x00, 0x00, 0xFF, 0xF8, 0x00, 0x01, 0xFF, 0xE0, 0x00, 0x07, 0xFF, 0x00, + 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0xFF, 0x80, 0x00, + 0x03, 0xFF, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x7F, 0xF8, 0x00, 0x03, + 0xFF, 0xF0, 0x00, 0x1F, 0xFF, 0xC0, 0x00, 0x7F, 0x7F, 0x80, 0x03, 0xF8, + 0xFF, 0x00, 0x1F, 0xE1, 0xFC, 0x00, 0x7F, 0x07, 0xF8, 0x03, 0xFC, 0x0F, + 0xF0, 0x1F, 0xE0, 0x3F, 0xC0, 0x7F, 0x80, 0x7F, 0x83, 0xFC, 0x01, 0xFE, + 0x0F, 0xF0, 0x03, 0xFC, 0x7F, 0x80, 0x0F, 0xFB, 0xFE, 0x00, 0x1F, 0xE0, + 0xFF, 0x00, 0x07, 0xFF, 0xF8, 0x00, 0x7F, 0x9F, 0xE0, 0x03, 0xFC, 0xFF, + 0x00, 0x3F, 0xC3, 0xFC, 0x01, 0xFE, 0x0F, 0xE0, 0x0F, 0xE0, 0x7F, 0x00, + 0xFF, 0x01, 0xFC, 0x07, 0xF0, 0x0F, 0xE0, 0x7F, 0x80, 0x3F, 0x83, 0xF8, + 0x01, 0xFC, 0x3F, 0xC0, 0x07, 0xF1, 0xFC, 0x00, 0x3F, 0x8F, 0xE0, 0x00, + 0xFE, 0xFE, 0x00, 0x07, 0xF7, 0xF0, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0xFF, + 0xF8, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x7F, 0xC0, + 0x00, 0x01, 0xFC, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x7F, 0x00, 0x00, + 0x03, 0xF8, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x07, + 0xF0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x0F, 0xE0, + 0x00, 0x00, 0x7F, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x1F, 0xC0, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x00, 0x03, 0xFC, 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x7F, + 0x80, 0x00, 0x3F, 0xE0, 0x00, 0x0F, 0xF0, 0x00, 0x07, 0xF8, 0x00, 0x03, + 0xFC, 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x3F, 0xC0, 0x00, + 0x1F, 0xE0, 0x00, 0x0F, 0xF0, 0x00, 0x07, 0xF8, 0x00, 0x03, 0xFE, 0x00, + 0x00, 0xFF, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x3F, 0xC0, 0x00, 0x1F, 0xE0, + 0x00, 0x0F, 0xF8, 0x00, 0x03, 0xFC, 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFC, 0x3F, 0x87, 0xF0, 0xFE, 0x1F, 0xC3, 0xF8, 0x7F, 0x0F, + 0xE1, 0xFC, 0x3F, 0x87, 0xF0, 0xFE, 0x1F, 0xC3, 0xF8, 0x7F, 0x0F, 0xE1, + 0xFC, 0x3F, 0x87, 0xF0, 0xFE, 0x1F, 0xC3, 0xF8, 0x7F, 0x0F, 0xE1, 0xFC, + 0x3F, 0x87, 0xF0, 0xFE, 0x1F, 0xC3, 0xF8, 0x7F, 0x0F, 0xE1, 0xFC, 0x3F, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0xE0, 0x03, 0xC0, 0x07, 0x00, + 0x1C, 0x00, 0x78, 0x00, 0xE0, 0x03, 0x80, 0x0F, 0x00, 0x1C, 0x00, 0x70, + 0x01, 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x38, 0x00, 0x70, 0x01, 0xC0, 0x07, + 0x00, 0x0E, 0x00, 0x38, 0x00, 0xE0, 0x01, 0xC0, 0x07, 0x00, 0x1C, 0x00, + 0x78, 0x00, 0xE0, 0x03, 0x80, 0x0F, 0x00, 0x1C, 0x00, 0x70, 0x01, 0xE0, + 0x03, 0x80, 0x0E, 0x00, 0x3C, 0x00, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0x1F, 0xC3, 0xF8, 0x7F, 0x0F, 0xE1, 0xFC, 0x3F, 0x87, 0xF0, + 0xFE, 0x1F, 0xC3, 0xF8, 0x7F, 0x0F, 0xE1, 0xFC, 0x3F, 0x87, 0xF0, 0xFE, + 0x1F, 0xC3, 0xF8, 0x7F, 0x0F, 0xE1, 0xFC, 0x3F, 0x87, 0xF0, 0xFE, 0x1F, + 0xC3, 0xF8, 0x7F, 0x0F, 0xE1, 0xFC, 0x3F, 0x87, 0xF0, 0xFE, 0x1F, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xF0, + 0x00, 0x1F, 0xC0, 0x00, 0xFF, 0x80, 0x03, 0xFE, 0x00, 0x0F, 0xFC, 0x00, + 0x7D, 0xF0, 0x01, 0xF7, 0xC0, 0x0F, 0xDF, 0x80, 0x3E, 0x3E, 0x00, 0xF8, + 0xFC, 0x07, 0xE1, 0xF0, 0x1F, 0x07, 0xC0, 0xFC, 0x1F, 0x83, 0xE0, 0x3E, + 0x0F, 0x80, 0xFC, 0x7E, 0x01, 0xF1, 0xF0, 0x07, 0xC7, 0xC0, 0x1F, 0xBE, + 0x00, 0x3E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x3E, 0x0F, 0x83, 0xC0, 0xF0, 0x38, 0x1E, + 0x01, 0xFF, 0x00, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0xF0, 0x3F, 0xFF, 0xF8, + 0x7F, 0xFF, 0xF8, 0x7F, 0xFF, 0xFC, 0x7F, 0x03, 0xFC, 0x7E, 0x01, 0xFC, + 0x00, 0x01, 0xFC, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xFC, 0x03, 0xFF, 0xFC, + 0x1F, 0xFF, 0xFC, 0x3F, 0xFF, 0xFC, 0x7F, 0xC1, 0xFC, 0xFF, 0x01, 0xFC, + 0xFE, 0x01, 0xFC, 0xFE, 0x03, 0xFC, 0xFE, 0x03, 0xFC, 0xFF, 0x07, 0xFC, + 0xFF, 0xFF, 0xFC, 0x7F, 0xFF, 0xFC, 0x7F, 0xFF, 0xFC, 0x3F, 0xFD, 0xFE, + 0x1F, 0xF0, 0xFF, 0x07, 0xE0, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, + 0x3F, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x0F, 0xE0, 0x00, 0x07, 0xF0, 0x00, + 0x03, 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x0F, + 0xC0, 0x3F, 0x9F, 0xF8, 0x1F, 0xDF, 0xFF, 0x0F, 0xFF, 0xFF, 0xC7, 0xFF, + 0xFF, 0xE3, 0xFF, 0xFF, 0xF9, 0xFF, 0x83, 0xFE, 0xFF, 0x80, 0xFF, 0x7F, + 0x80, 0x3F, 0xBF, 0xC0, 0x1F, 0xFF, 0xC0, 0x07, 0xFF, 0xE0, 0x03, 0xFF, + 0xF0, 0x01, 0xFF, 0xF8, 0x00, 0xFF, 0xFC, 0x00, 0x7F, 0xFE, 0x00, 0x3F, + 0xFF, 0x80, 0x3F, 0xFF, 0xC0, 0x1F, 0xDF, 0xF0, 0x1F, 0xEF, 0xFC, 0x1F, + 0xF7, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xF1, 0xFF, 0xFF, 0xF8, 0xFE, 0xFF, + 0xF8, 0x7F, 0x3F, 0xF0, 0x00, 0x07, 0xE0, 0x00, 0x00, 0xFF, 0x00, 0x07, + 0xFF, 0xC0, 0x3F, 0xFF, 0xC0, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xC7, 0xFF, + 0xFF, 0x9F, 0xF0, 0x7F, 0xBF, 0xC0, 0x7F, 0x7F, 0x00, 0x7F, 0xFC, 0x00, + 0x03, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, + 0x3F, 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0xFD, + 0xFE, 0x03, 0xFB, 0xFE, 0x0F, 0xF3, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0x87, + 0xFF, 0xFE, 0x07, 0xFF, 0xF8, 0x03, 0xFF, 0xE0, 0x01, 0xFE, 0x00, 0x00, + 0x00, 0x3F, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x0F, 0xE0, 0x00, 0x07, 0xF0, + 0x00, 0x03, 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, + 0x00, 0x00, 0x3F, 0x80, 0x7E, 0x1F, 0xC0, 0xFF, 0xCF, 0xE1, 0xFF, 0xF7, + 0xF1, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFE, 0xFF, 0x83, + 0xFF, 0x7F, 0x80, 0xFF, 0xBF, 0x80, 0x3F, 0xFF, 0xC0, 0x1F, 0xFF, 0xC0, + 0x07, 0xFF, 0xE0, 0x03, 0xFF, 0xF0, 0x01, 0xFF, 0xF8, 0x00, 0xFF, 0xFC, + 0x00, 0x7F, 0xFE, 0x00, 0x3F, 0xFF, 0x80, 0x3F, 0xDF, 0xC0, 0x1F, 0xEF, + 0xF0, 0x1F, 0xF7, 0xFC, 0x1F, 0xF9, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFE, + 0x3F, 0xFF, 0xFF, 0x0F, 0xFF, 0xBF, 0x81, 0xFF, 0x9F, 0xC0, 0x3F, 0x00, + 0x00, 0x00, 0xFE, 0x00, 0x03, 0xFF, 0x80, 0x0F, 0xFF, 0xE0, 0x1F, 0xFF, + 0xF0, 0x3F, 0xFF, 0xF8, 0x3F, 0xC3, 0xF8, 0x7F, 0x80, 0xFC, 0x7F, 0x00, + 0xFC, 0x7F, 0x00, 0x7C, 0xFE, 0x00, 0x7E, 0xFE, 0x00, 0x7E, 0xFF, 0xFF, + 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFE, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x7F, 0x7F, 0x00, + 0xFE, 0x3F, 0xC1, 0xFE, 0x3F, 0xFF, 0xFC, 0x1F, 0xFF, 0xF8, 0x0F, 0xFF, + 0xF0, 0x03, 0xFF, 0xC0, 0x00, 0xFF, 0x00, 0x01, 0xFC, 0x1F, 0xF0, 0xFF, + 0xC3, 0xFF, 0x1F, 0xFC, 0x7F, 0x81, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, + 0x0F, 0xFF, 0xBF, 0xFE, 0xFF, 0xFB, 0xFF, 0xE1, 0xFC, 0x07, 0xF0, 0x1F, + 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, + 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, + 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x00, 0x00, 0xF8, 0x7F, 0x07, 0xFE, + 0x7F, 0x0F, 0xFF, 0x7F, 0x1F, 0xFF, 0x7F, 0x3F, 0xFF, 0xFF, 0x3F, 0xFF, + 0xFF, 0x7F, 0xC3, 0xFF, 0x7F, 0x81, 0xFF, 0x7F, 0x00, 0xFF, 0xFF, 0x00, + 0xFF, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, + 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0xFF, 0xFF, 0x00, + 0xFF, 0x7F, 0x81, 0xFF, 0x7F, 0xC3, 0xFF, 0x3F, 0xFF, 0xFF, 0x3F, 0xFF, + 0xFF, 0x1F, 0xFF, 0xFF, 0x0F, 0xFF, 0x7F, 0x07, 0xFE, 0x7F, 0x01, 0xF8, + 0x7F, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x7F, 0x00, + 0xFF, 0x7F, 0x01, 0xFE, 0x7F, 0xC3, 0xFE, 0x3F, 0xFF, 0xFC, 0x1F, 0xFF, + 0xF8, 0x0F, 0xFF, 0xE0, 0x01, 0xFF, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x00, + 0x03, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, + 0x3F, 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x3F, 0x83, + 0xF8, 0xFF, 0xC7, 0xF7, 0xFF, 0xCF, 0xEF, 0xFF, 0xDF, 0xFF, 0xFF, 0xBF, + 0xFF, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0x01, 0xFF, 0xFE, 0x01, 0xFF, 0xF8, + 0x03, 0xFF, 0xF0, 0x07, 0xFF, 0xE0, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0x80, + 0x3F, 0xFF, 0x00, 0x7F, 0xFE, 0x00, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, 0x03, + 0xFF, 0xF0, 0x07, 0xFF, 0xE0, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0x80, 0x3F, + 0xFF, 0x00, 0x7F, 0xFE, 0x00, 0xFF, 0xFC, 0x01, 0xFC, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xC0, 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFC, 0x1F, 0xC7, 0xF1, 0xFC, 0x7F, 0x1F, 0xC7, 0xF0, 0x00, + 0x00, 0x00, 0x07, 0xF1, 0xFC, 0x7F, 0x1F, 0xC7, 0xF1, 0xFC, 0x7F, 0x1F, + 0xC7, 0xF1, 0xFC, 0x7F, 0x1F, 0xC7, 0xF1, 0xFC, 0x7F, 0x1F, 0xC7, 0xF1, + 0xFC, 0x7F, 0x1F, 0xC7, 0xF1, 0xFC, 0x7F, 0x1F, 0xC7, 0xF1, 0xFC, 0x7F, + 0x1F, 0xC7, 0xF1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFE, 0xFE, 0x00, + 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x03, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F, + 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0x3F, 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFE, + 0x00, 0x01, 0xFC, 0x03, 0xFB, 0xF8, 0x0F, 0xE7, 0xF0, 0x3F, 0xCF, 0xE0, + 0xFF, 0x1F, 0xC3, 0xFC, 0x3F, 0x87, 0xF0, 0x7F, 0x1F, 0xC0, 0xFE, 0x7F, + 0x01, 0xFD, 0xFC, 0x03, 0xFF, 0xF0, 0x07, 0xFF, 0xF0, 0x0F, 0xFF, 0xE0, + 0x1F, 0xFF, 0xE0, 0x3F, 0xFF, 0xE0, 0x7F, 0xDF, 0xC0, 0xFF, 0x3F, 0xC1, + 0xFC, 0x3F, 0x83, 0xF8, 0x3F, 0x87, 0xF0, 0x7F, 0x8F, 0xE0, 0x7F, 0x1F, + 0xC0, 0xFF, 0x3F, 0x80, 0xFE, 0x7F, 0x01, 0xFE, 0xFE, 0x01, 0xFD, 0xFC, + 0x03, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFE, 0x1F, 0x80, 0x7E, + 0x0F, 0xE7, 0xFE, 0x1F, 0xF8, 0xFE, 0xFF, 0xF3, 0xFF, 0xCF, 0xFF, 0xFF, + 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x83, 0xFF, 0x0F, 0xFF, 0xF0, 0x1F, 0xE0, 0x7F, 0xFE, 0x01, 0xFC, 0x07, + 0xFF, 0xE0, 0x1F, 0xC0, 0x7F, 0xFE, 0x01, 0xFC, 0x07, 0xFF, 0xE0, 0x1F, + 0xC0, 0x7F, 0xFE, 0x01, 0xFC, 0x07, 0xFF, 0xE0, 0x1F, 0xC0, 0x7F, 0xFE, + 0x01, 0xFC, 0x07, 0xFF, 0xE0, 0x1F, 0xC0, 0x7F, 0xFE, 0x01, 0xFC, 0x07, + 0xFF, 0xE0, 0x1F, 0xC0, 0x7F, 0xFE, 0x01, 0xFC, 0x07, 0xFF, 0xE0, 0x1F, + 0xC0, 0x7F, 0xFE, 0x01, 0xFC, 0x07, 0xFF, 0xE0, 0x1F, 0xC0, 0x7F, 0xFE, + 0x01, 0xFC, 0x07, 0xFF, 0xE0, 0x1F, 0xC0, 0x7F, 0xFE, 0x01, 0xFC, 0x07, + 0xF0, 0xFE, 0x1F, 0xC1, 0xFC, 0xFF, 0xE3, 0xFB, 0xFF, 0xE7, 0xFF, 0xFF, + 0xEF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0x80, 0xFF, + 0xFE, 0x00, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, 0x03, 0xFF, 0xF0, 0x07, 0xFF, + 0xE0, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0x80, 0x3F, 0xFF, 0x00, 0x7F, 0xFE, + 0x00, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, 0x03, 0xFF, 0xF0, 0x07, 0xFF, 0xE0, + 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0x80, 0x3F, 0xFF, 0x00, 0x7F, 0xFE, 0x00, + 0xFE, 0x00, 0x7F, 0x80, 0x01, 0xFF, 0xF0, 0x01, 0xFF, 0xFE, 0x01, 0xFF, + 0xFF, 0x81, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0xF1, 0xFF, 0x07, 0xFC, 0xFF, + 0x01, 0xFE, 0x7F, 0x00, 0x7F, 0x7F, 0x80, 0x3F, 0xFF, 0x80, 0x0F, 0xFF, + 0xC0, 0x07, 0xFF, 0xE0, 0x03, 0xFF, 0xF0, 0x01, 0xFF, 0xF8, 0x00, 0xFF, + 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0x7F, 0xBF, 0x80, 0x3F, 0x9F, 0xE0, 0x3F, + 0xCF, 0xF8, 0x3F, 0xE3, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xF0, 0x3F, 0xFF, + 0xF0, 0x0F, 0xFF, 0xF0, 0x03, 0xFF, 0xE0, 0x00, 0x3F, 0xC0, 0x00, 0xFE, + 0x1F, 0x80, 0x7F, 0x3F, 0xF0, 0x3F, 0xBF, 0xFE, 0x1F, 0xDF, 0xFF, 0x8F, + 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0xF3, 0xFF, 0x07, 0xFD, 0xFF, 0x01, 0xFE, + 0xFF, 0x00, 0x7F, 0x7F, 0x80, 0x3F, 0xFF, 0x80, 0x0F, 0xFF, 0xC0, 0x07, + 0xFF, 0xE0, 0x03, 0xFF, 0xF0, 0x01, 0xFF, 0xF8, 0x00, 0xFF, 0xFC, 0x00, + 0x7F, 0xFF, 0x00, 0x7F, 0xFF, 0x80, 0x3F, 0xBF, 0xE0, 0x3F, 0xDF, 0xF8, + 0x3F, 0xCF, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xE3, 0xFB, 0xFF, 0xE1, 0xFD, + 0xFF, 0xF0, 0xFE, 0x7F, 0xE0, 0x7F, 0x0F, 0xC0, 0x3F, 0x80, 0x00, 0x1F, + 0xC0, 0x00, 0x0F, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0x01, + 0xFC, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0x80, 0x00, + 0x1F, 0xC0, 0x00, 0x00, 0x00, 0xFC, 0x3F, 0x81, 0xFF, 0x9F, 0xC3, 0xFF, + 0xEF, 0xE1, 0xFF, 0xF7, 0xF1, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xFD, 0xFF, + 0x07, 0xFE, 0xFF, 0x01, 0xFF, 0x7F, 0x00, 0x7F, 0xFF, 0x80, 0x3F, 0xFF, + 0x80, 0x0F, 0xFF, 0xC0, 0x07, 0xFF, 0xE0, 0x03, 0xFF, 0xF0, 0x01, 0xFF, + 0xF8, 0x00, 0xFF, 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0x7F, 0xBF, 0x80, 0x3F, + 0xDF, 0xE0, 0x3F, 0xEF, 0xF8, 0x3F, 0xF3, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, + 0xFC, 0x7F, 0xFE, 0xFE, 0x1F, 0xFF, 0x7F, 0x03, 0xFF, 0x3F, 0x80, 0x7E, + 0x1F, 0xC0, 0x00, 0x0F, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xF8, 0x00, + 0x01, 0xFC, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0x80, + 0x00, 0x1F, 0xC0, 0x00, 0x0F, 0xE0, 0x00, 0x07, 0xF0, 0xFE, 0x1F, 0xFC, + 0x7F, 0xFB, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x7F, 0x80, + 0xFF, 0x01, 0xFC, 0x03, 0xF8, 0x07, 0xF0, 0x0F, 0xE0, 0x1F, 0xC0, 0x3F, + 0x80, 0x7F, 0x00, 0xFE, 0x01, 0xFC, 0x03, 0xF8, 0x07, 0xF0, 0x0F, 0xE0, + 0x1F, 0xC0, 0x3F, 0x80, 0x7F, 0x00, 0xFE, 0x00, 0x00, 0xFF, 0x00, 0x07, + 0xFF, 0xE0, 0x0F, 0xFF, 0xF8, 0x1F, 0xFF, 0xFC, 0x3F, 0xFF, 0xFC, 0x7F, + 0x81, 0xFE, 0x7F, 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0x7F, 0xC0, 0x00, 0x7F, + 0xFC, 0x00, 0x7F, 0xFF, 0x80, 0x3F, 0xFF, 0xF0, 0x1F, 0xFF, 0xFC, 0x07, + 0xFF, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x0F, 0xFF, 0x00, 0x01, 0xFF, 0x00, + 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0x7F, 0x00, 0x7F, 0x7F, 0x81, 0xFE, 0x7F, + 0xFF, 0xFE, 0x3F, 0xFF, 0xFC, 0x1F, 0xFF, 0xF8, 0x0F, 0xFF, 0xF0, 0x01, + 0xFF, 0x80, 0x3F, 0x83, 0xF8, 0x3F, 0x83, 0xF8, 0x3F, 0x83, 0xF8, 0x3F, + 0x8F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0xF8, 0x3F, 0x83, 0xF8, 0x3F, + 0x83, 0xF8, 0x3F, 0x83, 0xF8, 0x3F, 0x83, 0xF8, 0x3F, 0x83, 0xF8, 0x3F, + 0x83, 0xF8, 0x3F, 0x83, 0xF8, 0x3F, 0x83, 0xFF, 0x3F, 0xF1, 0xFF, 0x0F, + 0xF0, 0x7F, 0xFE, 0x00, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, 0x03, 0xFF, 0xF0, + 0x07, 0xFF, 0xE0, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0x80, 0x3F, 0xFF, 0x00, + 0x7F, 0xFE, 0x00, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, 0x03, 0xFF, 0xF0, 0x07, + 0xFF, 0xE0, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0x80, 0x3F, 0xFF, 0x00, 0x7F, + 0xFE, 0x00, 0xFF, 0xFC, 0x03, 0xFF, 0xFC, 0x07, 0xFF, 0xFC, 0x3F, 0xFF, + 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xDF, 0xFF, 0xBF, 0x9F, 0xFF, 0x7F, 0x1F, + 0xFC, 0xFE, 0x0F, 0xE0, 0x00, 0x7F, 0x00, 0x3F, 0xBF, 0x80, 0x1F, 0x9F, + 0xC0, 0x1F, 0xC7, 0xE0, 0x0F, 0xE3, 0xF8, 0x07, 0xE1, 0xFC, 0x07, 0xF0, + 0x7E, 0x03, 0xF8, 0x3F, 0x81, 0xF8, 0x1F, 0xC0, 0xFC, 0x07, 0xE0, 0xFE, + 0x03, 0xF8, 0x7E, 0x00, 0xFC, 0x3F, 0x00, 0x7E, 0x1F, 0x80, 0x3F, 0x1F, + 0x80, 0x0F, 0xCF, 0xC0, 0x07, 0xE7, 0xE0, 0x03, 0xF7, 0xE0, 0x00, 0xFF, + 0xF0, 0x00, 0x7F, 0xF8, 0x00, 0x3F, 0xF8, 0x00, 0x0F, 0xFC, 0x00, 0x07, + 0xFE, 0x00, 0x03, 0xFE, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x7F, 0x00, 0x00, + 0xFC, 0x03, 0xF8, 0x0F, 0xFF, 0xC0, 0x7F, 0x01, 0xFF, 0xF8, 0x0F, 0xE0, + 0x3F, 0x3F, 0x03, 0xFE, 0x07, 0xE7, 0xE0, 0x7F, 0xC1, 0xFC, 0xFE, 0x0F, + 0xF8, 0x3F, 0x9F, 0xC1, 0xFF, 0x07, 0xE1, 0xF8, 0x3D, 0xE0, 0xFC, 0x3F, + 0x0F, 0xBE, 0x3F, 0x87, 0xF1, 0xF7, 0xC7, 0xE0, 0x7E, 0x3E, 0xF8, 0xFC, + 0x0F, 0xC7, 0xDF, 0x1F, 0x81, 0xF9, 0xF1, 0xE3, 0xF0, 0x3F, 0x3E, 0x3E, + 0xFC, 0x03, 0xF7, 0xC7, 0xDF, 0x80, 0x7E, 0xF8, 0xFB, 0xF0, 0x0F, 0xDE, + 0x1F, 0x7C, 0x00, 0xFF, 0xC1, 0xFF, 0x80, 0x1F, 0xF8, 0x3F, 0xF0, 0x03, + 0xFF, 0x07, 0xFE, 0x00, 0x7F, 0xC0, 0xFF, 0x80, 0x07, 0xF8, 0x1F, 0xF0, + 0x00, 0xFF, 0x01, 0xFE, 0x00, 0x1F, 0xE0, 0x3F, 0x80, 0x01, 0xFC, 0x07, + 0xF0, 0x00, 0xFF, 0x00, 0xFF, 0x7F, 0x81, 0xFE, 0x3F, 0x81, 0xFC, 0x3F, + 0xC3, 0xFC, 0x1F, 0xC3, 0xF8, 0x0F, 0xE7, 0xF0, 0x0F, 0xEF, 0xF0, 0x07, + 0xFF, 0xE0, 0x03, 0xFF, 0xC0, 0x03, 0xFF, 0xC0, 0x01, 0xFF, 0x80, 0x00, + 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x01, 0xFF, 0x80, 0x03, + 0xFF, 0xC0, 0x07, 0xFF, 0xC0, 0x07, 0xFF, 0xE0, 0x0F, 0xE7, 0xF0, 0x1F, + 0xE7, 0xF0, 0x1F, 0xC3, 0xF8, 0x3F, 0xC3, 0xFC, 0x7F, 0x81, 0xFC, 0x7F, + 0x01, 0xFE, 0xFF, 0x00, 0xFF, 0x7F, 0x00, 0x3F, 0xBF, 0x80, 0x1F, 0xDF, + 0xC0, 0x0F, 0xC7, 0xF0, 0x07, 0xE3, 0xF8, 0x07, 0xF1, 0xFC, 0x03, 0xF0, + 0x7F, 0x01, 0xF8, 0x3F, 0x81, 0xFC, 0x0F, 0xC0, 0xFC, 0x07, 0xF0, 0x7E, + 0x03, 0xF8, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0x7E, 0x1F, 0x80, 0x3F, 0x8F, + 0xC0, 0x0F, 0xCF, 0xC0, 0x07, 0xE7, 0xE0, 0x03, 0xFB, 0xF0, 0x00, 0xFD, + 0xF0, 0x00, 0x7F, 0xF8, 0x00, 0x3F, 0xFC, 0x00, 0x0F, 0xFC, 0x00, 0x07, + 0xFE, 0x00, 0x03, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x7F, 0x80, 0x00, + 0x1F, 0xC0, 0x00, 0x0F, 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x03, 0xF0, 0x00, + 0x03, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0x1F, 0xF8, 0x00, 0x0F, 0xFC, 0x00, + 0x07, 0xFC, 0x00, 0x03, 0xFC, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x7F, 0xFF, + 0xFB, 0xFF, 0xFF, 0xDF, 0xFF, 0xFE, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xBF, + 0xFF, 0xFC, 0x00, 0x3F, 0xE0, 0x03, 0xFE, 0x00, 0x1F, 0xE0, 0x01, 0xFE, + 0x00, 0x1F, 0xE0, 0x01, 0xFE, 0x00, 0x1F, 0xE0, 0x01, 0xFE, 0x00, 0x1F, + 0xE0, 0x01, 0xFE, 0x00, 0x1F, 0xE0, 0x01, 0xFE, 0x00, 0x1F, 0xE0, 0x01, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xF8, 0x01, 0xF8, 0x1F, 0xC1, 0xFE, 0x0F, 0xF0, 0xFF, + 0x87, 0xE0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x1F, 0x00, + 0xF8, 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x3F, + 0x0F, 0xF0, 0x7F, 0x03, 0xF8, 0x1F, 0xE0, 0x1F, 0x80, 0x7C, 0x03, 0xE0, + 0x1F, 0x00, 0xF8, 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, + 0xE0, 0x1F, 0x00, 0xF8, 0x07, 0xE0, 0x3F, 0xE0, 0xFF, 0x07, 0xF8, 0x1F, + 0xC0, 0x7E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFC, 0x07, 0xF0, 0x3F, 0xC1, 0xFE, 0x0F, 0xF8, 0x0F, 0xC0, 0x3E, 0x01, + 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x07, 0xC0, 0x3E, + 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x1F, 0x80, 0x7F, 0x81, 0xFC, + 0x0F, 0xE0, 0xFF, 0x0F, 0xC0, 0x7C, 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x07, + 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x1F, 0x00, 0xF8, + 0x0F, 0xC3, 0xFE, 0x1F, 0xE0, 0xFF, 0x07, 0xF0, 0x3F, 0x00, 0x1F, 0x00, + 0x03, 0xFE, 0x00, 0x1F, 0xF8, 0x0F, 0xFF, 0xF0, 0xFF, 0x0F, 0xFF, 0xF0, + 0x1F, 0xF8, 0x00, 0x7F, 0x80, 0x00, 0xF8}; + +const GFXglyph FreeSansBold24pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 13, 0, 1}, // 0x20 ' ' + {0, 7, 34, 16, 5, -33}, // 0x21 '!' + {30, 18, 12, 22, 2, -33}, // 0x22 '"' + {57, 26, 33, 26, 0, -31}, // 0x23 '#' + {165, 25, 40, 26, 1, -34}, // 0x24 '$' + {290, 39, 34, 42, 1, -32}, // 0x25 '%' + {456, 30, 35, 34, 3, -33}, // 0x26 '&' + {588, 7, 12, 12, 3, -33}, // 0x27 ''' + {599, 13, 44, 16, 2, -33}, // 0x28 '(' + {671, 13, 44, 16, 1, -33}, // 0x29 ')' + {743, 15, 15, 18, 1, -33}, // 0x2A '*' + {772, 23, 22, 27, 2, -21}, // 0x2B '+' + {836, 7, 15, 12, 2, -6}, // 0x2C ',' + {850, 13, 6, 16, 1, -15}, // 0x2D '-' + {860, 7, 7, 12, 2, -6}, // 0x2E '.' + {867, 13, 34, 13, 0, -32}, // 0x2F '/' + {923, 24, 35, 26, 1, -33}, // 0x30 '0' + {1028, 14, 33, 26, 4, -32}, // 0x31 '1' + {1086, 23, 34, 26, 2, -33}, // 0x32 '2' + {1184, 23, 35, 26, 2, -33}, // 0x33 '3' + {1285, 22, 33, 26, 2, -32}, // 0x34 '4' + {1376, 23, 34, 26, 2, -32}, // 0x35 '5' + {1474, 23, 35, 26, 2, -33}, // 0x36 '6' + {1575, 23, 33, 26, 1, -32}, // 0x37 '7' + {1670, 24, 35, 26, 1, -33}, // 0x38 '8' + {1775, 24, 35, 26, 1, -33}, // 0x39 '9' + {1880, 7, 25, 12, 2, -24}, // 0x3A ':' + {1902, 7, 33, 12, 2, -24}, // 0x3B ';' + {1931, 23, 23, 27, 2, -22}, // 0x3C '<' + {1998, 23, 18, 27, 2, -19}, // 0x3D '=' + {2050, 23, 23, 27, 2, -22}, // 0x3E '>' + {2117, 24, 35, 29, 3, -34}, // 0x3F '?' + {2222, 43, 41, 46, 1, -34}, // 0x40 '@' + {2443, 32, 34, 33, 0, -33}, // 0x41 'A' + {2579, 27, 34, 33, 4, -33}, // 0x42 'B' + {2694, 30, 36, 34, 2, -34}, // 0x43 'C' + {2829, 28, 34, 34, 4, -33}, // 0x44 'D' + {2948, 25, 34, 31, 4, -33}, // 0x45 'E' + {3055, 24, 34, 30, 4, -33}, // 0x46 'F' + {3157, 31, 36, 36, 2, -34}, // 0x47 'G' + {3297, 27, 34, 35, 4, -33}, // 0x48 'H' + {3412, 7, 34, 15, 4, -33}, // 0x49 'I' + {3442, 22, 35, 27, 1, -33}, // 0x4A 'J' + {3539, 30, 34, 34, 4, -33}, // 0x4B 'K' + {3667, 23, 34, 29, 4, -33}, // 0x4C 'L' + {3765, 33, 34, 41, 4, -33}, // 0x4D 'M' + {3906, 28, 34, 35, 4, -33}, // 0x4E 'N' + {4025, 33, 36, 37, 2, -34}, // 0x4F 'O' + {4174, 26, 34, 32, 4, -33}, // 0x50 'P' + {4285, 33, 37, 37, 2, -34}, // 0x51 'Q' + {4438, 28, 34, 34, 4, -33}, // 0x52 'R' + {4557, 28, 36, 32, 2, -34}, // 0x53 'S' + {4683, 27, 34, 30, 2, -33}, // 0x54 'T' + {4798, 27, 35, 35, 4, -33}, // 0x55 'U' + {4917, 29, 34, 31, 1, -33}, // 0x56 'V' + {5041, 43, 34, 45, 1, -33}, // 0x57 'W' + {5224, 30, 34, 32, 1, -33}, // 0x58 'X' + {5352, 29, 34, 30, 1, -33}, // 0x59 'Y' + {5476, 26, 34, 29, 1, -33}, // 0x5A 'Z' + {5587, 11, 43, 16, 3, -33}, // 0x5B '[' + {5647, 14, 34, 13, -1, -32}, // 0x5C '\' + {5707, 11, 43, 16, 1, -33}, // 0x5D ']' + {5767, 22, 20, 27, 3, -32}, // 0x5E '^' + {5822, 28, 4, 26, -1, 6}, // 0x5F '_' + {5836, 9, 7, 12, 1, -35}, // 0x60 '`' + {5844, 24, 26, 27, 2, -24}, // 0x61 'a' + {5922, 25, 35, 29, 3, -33}, // 0x62 'b' + {6032, 23, 26, 26, 2, -24}, // 0x63 'c' + {6107, 25, 35, 29, 2, -33}, // 0x64 'd' + {6217, 24, 26, 27, 2, -24}, // 0x65 'e' + {6295, 14, 34, 16, 1, -33}, // 0x66 'f' + {6355, 24, 36, 29, 2, -24}, // 0x67 'g' + {6463, 23, 34, 28, 3, -33}, // 0x68 'h' + {6561, 7, 34, 13, 3, -33}, // 0x69 'i' + {6591, 10, 45, 13, 0, -33}, // 0x6A 'j' + {6648, 23, 34, 27, 3, -33}, // 0x6B 'k' + {6746, 7, 34, 13, 3, -33}, // 0x6C 'l' + {6776, 36, 25, 42, 3, -24}, // 0x6D 'm' + {6889, 23, 25, 29, 3, -24}, // 0x6E 'n' + {6961, 25, 26, 29, 2, -24}, // 0x6F 'o' + {7043, 25, 36, 29, 3, -24}, // 0x70 'p' + {7156, 25, 36, 29, 2, -24}, // 0x71 'q' + {7269, 15, 25, 18, 3, -24}, // 0x72 'r' + {7316, 24, 26, 26, 1, -24}, // 0x73 's' + {7394, 12, 32, 16, 2, -30}, // 0x74 't' + {7442, 23, 26, 29, 3, -24}, // 0x75 'u' + {7517, 25, 25, 25, 0, -24}, // 0x76 'v' + {7596, 35, 25, 37, 1, -24}, // 0x77 'w' + {7706, 24, 25, 26, 1, -24}, // 0x78 'x' + {7781, 25, 36, 26, 0, -24}, // 0x79 'y' + {7894, 21, 25, 24, 1, -24}, // 0x7A 'z' + {7960, 13, 43, 18, 2, -33}, // 0x7B '{' + {8030, 4, 44, 13, 5, -33}, // 0x7C '|' + {8052, 13, 43, 18, 3, -33}, // 0x7D '}' + {8122, 21, 8, 23, 1, -14}}; // 0x7E '~' + +const GFXfont FreeSansBold24pt7b PROGMEM = { + (uint8_t *)FreeSansBold24pt7bBitmaps, (GFXglyph *)FreeSansBold24pt7bGlyphs, + 0x20, 0x7E, 56}; + +// Approx. 8815 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSansBold9pt7b.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSansBold9pt7b.h new file mode 100644 index 0000000..cffb178 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSansBold9pt7b.h @@ -0,0 +1,210 @@ +#pragma once +#include + +const uint8_t FreeSansBold9pt7bBitmaps[] PROGMEM = { + 0xFF, 0xFF, 0xFE, 0x48, 0x7E, 0xEF, 0xDF, 0xBF, 0x74, 0x40, 0x19, 0x86, + 0x67, 0xFD, 0xFF, 0x33, 0x0C, 0xC3, 0x33, 0xFE, 0xFF, 0x99, 0x86, 0x61, + 0x90, 0x10, 0x1F, 0x1F, 0xDE, 0xFF, 0x3F, 0x83, 0xC0, 0xFC, 0x1F, 0x09, + 0xFC, 0xFE, 0xF7, 0xF1, 0xE0, 0x40, 0x38, 0x10, 0x7C, 0x30, 0xC6, 0x20, + 0xC6, 0x40, 0xC6, 0x40, 0x7C, 0x80, 0x39, 0x9C, 0x01, 0x3E, 0x03, 0x63, + 0x02, 0x63, 0x04, 0x63, 0x0C, 0x3E, 0x08, 0x1C, 0x0E, 0x01, 0xF8, 0x3B, + 0x83, 0xB8, 0x3F, 0x01, 0xE0, 0x3E, 0x67, 0x76, 0xE3, 0xEE, 0x1C, 0xF3, + 0xC7, 0xFE, 0x3F, 0x70, 0xFF, 0xF4, 0x18, 0x63, 0x1C, 0x73, 0x8E, 0x38, + 0xE3, 0x8E, 0x18, 0x70, 0xC3, 0x06, 0x08, 0x61, 0x83, 0x0E, 0x38, 0x71, + 0xC7, 0x1C, 0x71, 0xC6, 0x38, 0xE3, 0x18, 0x40, 0x21, 0x3E, 0x45, 0x28, + 0x38, 0x70, 0xE7, 0xFF, 0xE7, 0x0E, 0x1C, 0xFC, 0x9C, 0xFF, 0xC0, 0xFC, + 0x08, 0xC4, 0x23, 0x10, 0x84, 0x62, 0x11, 0x88, 0x00, 0x3E, 0x3F, 0x9D, + 0xDC, 0x7E, 0x3F, 0x1F, 0x8F, 0xC7, 0xE3, 0xF1, 0xDD, 0xCF, 0xE3, 0xE0, + 0x08, 0xFF, 0xF3, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x80, 0x3E, 0x3F, 0xB8, + 0xFC, 0x70, 0x38, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x0F, 0xF7, 0xF8, + 0x3C, 0x7F, 0xE7, 0xE7, 0x07, 0x0C, 0x0E, 0x07, 0x07, 0xE7, 0xE7, 0x7E, + 0x3C, 0x0E, 0x1E, 0x1E, 0x2E, 0x2E, 0x4E, 0x4E, 0x8E, 0xFF, 0xFF, 0x0E, + 0x0E, 0x0E, 0x7F, 0x3F, 0x90, 0x18, 0x0D, 0xE7, 0xFB, 0x9E, 0x07, 0x03, + 0x81, 0xF1, 0xFF, 0xE7, 0xC0, 0x3E, 0x3F, 0x9C, 0xFC, 0x0E, 0xE7, 0xFB, + 0xDF, 0xC7, 0xE3, 0xF1, 0xDD, 0xEF, 0xE3, 0xE0, 0xFF, 0xFF, 0xC0, 0xE0, + 0xE0, 0x60, 0x70, 0x30, 0x38, 0x1C, 0x0C, 0x0E, 0x07, 0x03, 0x80, 0x3F, + 0x1F, 0xEE, 0x3F, 0x87, 0xE3, 0xCF, 0xC7, 0xFB, 0xCF, 0xE1, 0xF8, 0x7F, + 0x3D, 0xFE, 0x3F, 0x00, 0x3E, 0x3F, 0xBD, 0xDC, 0x7E, 0x3F, 0x1F, 0xDE, + 0xFF, 0x3B, 0x81, 0xF9, 0xCF, 0xE3, 0xC0, 0xFC, 0x00, 0x07, 0xE0, 0xFC, + 0x00, 0x07, 0xE5, 0xE0, 0x00, 0x83, 0xC7, 0xDF, 0x0C, 0x07, 0x80, 0xF8, + 0x1F, 0x01, 0x80, 0xFF, 0xFF, 0xC0, 0x00, 0x0F, 0xFF, 0xFC, 0x00, 0x70, + 0x3F, 0x03, 0xE0, 0x38, 0x7D, 0xF1, 0xE0, 0x80, 0x00, 0x3E, 0x3F, 0xB8, + 0xFC, 0x70, 0x38, 0x1C, 0x1C, 0x1C, 0x1C, 0x0E, 0x00, 0x03, 0x81, 0xC0, + 0x03, 0xF0, 0x0F, 0xFC, 0x1E, 0x0E, 0x38, 0x02, 0x70, 0xE9, 0x63, 0x19, + 0xC2, 0x19, 0xC6, 0x11, 0xC6, 0x33, 0xC6, 0x32, 0x63, 0xFE, 0x73, 0xDC, + 0x3C, 0x00, 0x1F, 0xF8, 0x07, 0xF0, 0x07, 0x00, 0xF0, 0x0F, 0x80, 0xF8, + 0x1D, 0x81, 0x9C, 0x19, 0xC3, 0x8C, 0x3F, 0xE7, 0xFE, 0x70, 0x66, 0x07, + 0xE0, 0x70, 0xFF, 0x9F, 0xFB, 0x83, 0xF0, 0x7E, 0x0F, 0xFF, 0x3F, 0xF7, + 0x06, 0xE0, 0xFC, 0x1F, 0x83, 0xFF, 0xEF, 0xF8, 0x1F, 0x83, 0xFE, 0x78, + 0xE7, 0x07, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x07, 0x07, 0x78, + 0xF3, 0xFE, 0x1F, 0x80, 0xFF, 0x8F, 0xFC, 0xE0, 0xEE, 0x0E, 0xE0, 0x7E, + 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x0E, 0xE0, 0xEF, 0xFC, 0xFF, 0x80, + 0xFF, 0xFF, 0xF8, 0x1C, 0x0E, 0x07, 0xFB, 0xFD, 0xC0, 0xE0, 0x70, 0x38, + 0x1F, 0xFF, 0xF8, 0xFF, 0xFF, 0xF8, 0x1C, 0x0E, 0x07, 0xFB, 0xFD, 0xC0, + 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x00, 0x0F, 0x87, 0xF9, 0xE3, 0xB8, 0x3E, + 0x01, 0xC0, 0x38, 0xFF, 0x1F, 0xE0, 0x6E, 0x0D, 0xE3, 0x9F, 0xD0, 0xF2, + 0xE0, 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xFF, 0xFF, 0xFF, 0x07, 0xE0, + 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x07, + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0xE7, 0xE7, 0xE7, 0x7E, 0x3C, + 0xE0, 0xEE, 0x1C, 0xE3, 0x8E, 0x70, 0xEE, 0x0F, 0xC0, 0xFE, 0x0F, 0x70, + 0xE7, 0x0E, 0x38, 0xE1, 0xCE, 0x0E, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, + 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xFF, 0xFF, 0xF8, 0x7F, 0xE1, + 0xFF, 0x87, 0xFE, 0x1F, 0xEC, 0x7F, 0xB3, 0x7E, 0xCD, 0xFB, 0x37, 0xEC, + 0xDF, 0x9E, 0x7E, 0x79, 0xF9, 0xE7, 0xE7, 0x9C, 0xE0, 0xFE, 0x1F, 0xC3, + 0xFC, 0x7F, 0xCF, 0xD9, 0xFB, 0xBF, 0x37, 0xE7, 0xFC, 0x7F, 0x87, 0xF0, + 0xFE, 0x0E, 0x0F, 0x81, 0xFF, 0x1E, 0x3C, 0xE0, 0xEE, 0x03, 0xF0, 0x1F, + 0x80, 0xFC, 0x07, 0xE0, 0x3B, 0x83, 0x9E, 0x3C, 0x7F, 0xC0, 0xF8, 0x00, + 0xFF, 0x9F, 0xFB, 0x87, 0xF0, 0x7E, 0x0F, 0xC3, 0xFF, 0xF7, 0xFC, 0xE0, + 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x00, 0x0F, 0x81, 0xFF, 0x1E, 0x3C, 0xE0, + 0xEE, 0x03, 0xF0, 0x1F, 0x80, 0xFC, 0x07, 0xE1, 0xBB, 0x8F, 0x9E, 0x3C, + 0x7F, 0xE0, 0xFB, 0x80, 0x08, 0xFF, 0x8F, 0xFC, 0xE0, 0xEE, 0x0E, 0xE0, + 0xEE, 0x0E, 0xFF, 0xCF, 0xFC, 0xE0, 0xEE, 0x0E, 0xE0, 0xEE, 0x0E, 0xE0, + 0xF0, 0x3F, 0x0F, 0xFB, 0xC7, 0xF0, 0x7E, 0x01, 0xFC, 0x1F, 0xF0, 0x3F, + 0x00, 0xFC, 0x1D, 0xC7, 0xBF, 0xE1, 0xF8, 0xFF, 0xFF, 0xC7, 0x03, 0x81, + 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0xFC, + 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x07, 0xE0, 0xFC, 0x1F, + 0xC7, 0xBF, 0xE1, 0xF0, 0x60, 0x67, 0x0E, 0x70, 0xE3, 0x0C, 0x30, 0xC3, + 0x9C, 0x19, 0x81, 0x98, 0x1F, 0x80, 0xF0, 0x0F, 0x00, 0xF0, 0x06, 0x00, + 0x61, 0xC3, 0xB8, 0xE1, 0x9C, 0x70, 0xCE, 0x3C, 0xE3, 0x36, 0x71, 0x9B, + 0x30, 0xED, 0x98, 0x36, 0x7C, 0x1B, 0x3C, 0x0F, 0x1E, 0x07, 0x8F, 0x01, + 0xC3, 0x80, 0xE1, 0x80, 0x70, 0xE7, 0x8E, 0x39, 0xC1, 0xF8, 0x1F, 0x80, + 0xF0, 0x07, 0x00, 0xF0, 0x1F, 0x81, 0x9C, 0x39, 0xC7, 0x0E, 0x70, 0xE0, + 0xE0, 0xFC, 0x39, 0xC7, 0x18, 0xC3, 0xB8, 0x36, 0x07, 0xC0, 0x70, 0x0E, + 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0xFF, 0xFF, 0xC0, 0xE0, 0xE0, 0xF0, + 0x70, 0x70, 0x70, 0x78, 0x38, 0x38, 0x1F, 0xFF, 0xF8, 0xFF, 0xEE, 0xEE, + 0xEE, 0xEE, 0xEE, 0xEE, 0xEF, 0xF0, 0x86, 0x10, 0x86, 0x10, 0x84, 0x30, + 0x84, 0x30, 0x80, 0xFF, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x7F, 0xF0, + 0x18, 0x1C, 0x3C, 0x3E, 0x36, 0x66, 0x63, 0xC3, 0xFF, 0xC0, 0xCC, 0x3F, + 0x1F, 0xEE, 0x38, 0x0E, 0x3F, 0x9E, 0xEE, 0x3B, 0x9E, 0xFF, 0x9E, 0xE0, + 0xE0, 0x38, 0x0E, 0x03, 0xBC, 0xFF, 0xBC, 0xEE, 0x1F, 0x87, 0xE1, 0xF8, + 0x7F, 0x3B, 0xFE, 0xEF, 0x00, 0x1F, 0x3F, 0xDC, 0x7C, 0x0E, 0x07, 0x03, + 0x80, 0xE3, 0x7F, 0x8F, 0x00, 0x03, 0x81, 0xC0, 0xE7, 0x77, 0xFB, 0xBF, + 0x8F, 0xC7, 0xE3, 0xF1, 0xFD, 0xEF, 0xF3, 0xB8, 0x3E, 0x3F, 0x9C, 0xDC, + 0x3F, 0xFF, 0xFF, 0x81, 0xC3, 0x7F, 0x8F, 0x00, 0x3B, 0xDD, 0xFF, 0xB9, + 0xCE, 0x73, 0x9C, 0xE7, 0x00, 0x3B, 0xBF, 0xDD, 0xFC, 0x7E, 0x3F, 0x1F, + 0x8F, 0xEF, 0x7F, 0x9D, 0xC0, 0xFC, 0x77, 0xF1, 0xF0, 0xE0, 0x70, 0x38, + 0x1D, 0xEF, 0xFF, 0x9F, 0x8F, 0xC7, 0xE3, 0xF1, 0xF8, 0xFC, 0x7E, 0x38, + 0xFC, 0x7F, 0xFF, 0xFF, 0xFE, 0x77, 0x07, 0x77, 0x77, 0x77, 0x77, 0x77, + 0x7F, 0xE0, 0xE0, 0x70, 0x38, 0x1C, 0x7E, 0x77, 0x73, 0xF1, 0xF8, 0xFE, + 0x77, 0x39, 0xDC, 0x6E, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xEF, 0x7B, + 0xFF, 0xFE, 0x39, 0xF8, 0xE7, 0xE3, 0x9F, 0x8E, 0x7E, 0x39, 0xF8, 0xE7, + 0xE3, 0x9F, 0x8E, 0x70, 0xEF, 0x7F, 0xF8, 0xFC, 0x7E, 0x3F, 0x1F, 0x8F, + 0xC7, 0xE3, 0xF1, 0xC0, 0x1E, 0x1F, 0xE7, 0x3B, 0x87, 0xE1, 0xF8, 0x7E, + 0x1D, 0xCE, 0x7F, 0x87, 0x80, 0xEF, 0x3F, 0xEF, 0x3B, 0x87, 0xE1, 0xF8, + 0x7E, 0x1F, 0xCE, 0xFF, 0xBB, 0xCE, 0x03, 0x80, 0xE0, 0x38, 0x00, 0x3B, + 0xBF, 0xFD, 0xFC, 0x7E, 0x3F, 0x1F, 0x8F, 0xEF, 0x7F, 0x9D, 0xC0, 0xE0, + 0x70, 0x38, 0x1C, 0xEF, 0xFF, 0x38, 0xE3, 0x8E, 0x38, 0xE3, 0x80, 0x3E, + 0x3F, 0xB8, 0xFC, 0x0F, 0xC3, 0xFC, 0x3F, 0xC7, 0xFF, 0x1F, 0x00, 0x73, + 0xBF, 0xF7, 0x39, 0xCE, 0x73, 0x9E, 0x70, 0xE3, 0xF1, 0xF8, 0xFC, 0x7E, + 0x3F, 0x1F, 0x8F, 0xC7, 0xFF, 0xBD, 0xC0, 0xE1, 0x98, 0x67, 0x39, 0xCC, + 0x33, 0x0D, 0xC3, 0xE0, 0x78, 0x1E, 0x07, 0x00, 0xE3, 0x1D, 0x9E, 0x66, + 0x79, 0x99, 0xE6, 0x77, 0xB8, 0xD2, 0xC3, 0xCF, 0x0F, 0x3C, 0x3C, 0xF0, + 0x73, 0x80, 0x73, 0x9C, 0xE3, 0xF0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0xFC, + 0x73, 0x9C, 0xE0, 0xE1, 0xD8, 0x67, 0x39, 0xCE, 0x33, 0x0E, 0xC3, 0xE0, + 0x78, 0x1E, 0x03, 0x00, 0xC0, 0x70, 0x38, 0x0E, 0x00, 0xFE, 0xFE, 0x0E, + 0x1C, 0x38, 0x38, 0x70, 0xE0, 0xFF, 0xFF, 0x37, 0x66, 0x66, 0x6E, 0xE6, + 0x66, 0x66, 0x67, 0x30, 0xFF, 0xFF, 0x80, 0xCE, 0x66, 0x66, 0x67, 0x76, + 0x66, 0x66, 0x6E, 0xC0, 0x71, 0x8E}; + +const GFXglyph FreeSansBold9pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 5, 0, 1}, // 0x20 ' ' + {0, 3, 13, 6, 2, -12}, // 0x21 '!' + {5, 7, 5, 9, 1, -12}, // 0x22 '"' + {10, 10, 12, 10, 0, -11}, // 0x23 '#' + {25, 9, 15, 10, 1, -13}, // 0x24 '$' + {42, 16, 13, 16, 0, -12}, // 0x25 '%' + {68, 12, 13, 13, 1, -12}, // 0x26 '&' + {88, 3, 5, 5, 1, -12}, // 0x27 ''' + {90, 6, 17, 6, 1, -12}, // 0x28 '(' + {103, 6, 17, 6, 0, -12}, // 0x29 ')' + {116, 5, 6, 7, 1, -12}, // 0x2A '*' + {120, 7, 8, 11, 2, -7}, // 0x2B '+' + {127, 3, 5, 4, 1, -1}, // 0x2C ',' + {129, 5, 2, 6, 0, -5}, // 0x2D '-' + {131, 3, 2, 4, 1, -1}, // 0x2E '.' + {132, 5, 13, 5, 0, -12}, // 0x2F '/' + {141, 9, 13, 10, 1, -12}, // 0x30 '0' + {156, 5, 13, 10, 2, -12}, // 0x31 '1' + {165, 9, 13, 10, 1, -12}, // 0x32 '2' + {180, 8, 13, 10, 1, -12}, // 0x33 '3' + {193, 8, 13, 10, 2, -12}, // 0x34 '4' + {206, 9, 13, 10, 1, -12}, // 0x35 '5' + {221, 9, 13, 10, 1, -12}, // 0x36 '6' + {236, 9, 13, 10, 0, -12}, // 0x37 '7' + {251, 10, 13, 10, 0, -12}, // 0x38 '8' + {268, 9, 13, 10, 1, -12}, // 0x39 '9' + {283, 3, 9, 4, 1, -8}, // 0x3A ':' + {287, 3, 12, 4, 1, -8}, // 0x3B ';' + {292, 9, 9, 11, 1, -8}, // 0x3C '<' + {303, 9, 6, 11, 1, -6}, // 0x3D '=' + {310, 9, 9, 11, 1, -8}, // 0x3E '>' + {321, 9, 13, 11, 1, -12}, // 0x3F '?' + {336, 16, 15, 18, 0, -12}, // 0x40 '@' + {366, 12, 13, 13, 0, -12}, // 0x41 'A' + {386, 11, 13, 13, 1, -12}, // 0x42 'B' + {404, 12, 13, 13, 1, -12}, // 0x43 'C' + {424, 12, 13, 13, 1, -12}, // 0x44 'D' + {444, 9, 13, 12, 1, -12}, // 0x45 'E' + {459, 9, 13, 11, 1, -12}, // 0x46 'F' + {474, 11, 13, 14, 1, -12}, // 0x47 'G' + {492, 11, 13, 13, 1, -12}, // 0x48 'H' + {510, 3, 13, 6, 1, -12}, // 0x49 'I' + {515, 8, 13, 10, 1, -12}, // 0x4A 'J' + {528, 12, 13, 13, 1, -12}, // 0x4B 'K' + {548, 8, 13, 11, 1, -12}, // 0x4C 'L' + {561, 14, 13, 16, 1, -12}, // 0x4D 'M' + {584, 11, 13, 14, 1, -12}, // 0x4E 'N' + {602, 13, 13, 14, 1, -12}, // 0x4F 'O' + {624, 11, 13, 12, 1, -12}, // 0x50 'P' + {642, 13, 14, 14, 1, -12}, // 0x51 'Q' + {665, 12, 13, 13, 1, -12}, // 0x52 'R' + {685, 11, 13, 12, 1, -12}, // 0x53 'S' + {703, 9, 13, 12, 2, -12}, // 0x54 'T' + {718, 11, 13, 13, 1, -12}, // 0x55 'U' + {736, 12, 13, 12, 0, -12}, // 0x56 'V' + {756, 17, 13, 17, 0, -12}, // 0x57 'W' + {784, 12, 13, 12, 0, -12}, // 0x58 'X' + {804, 11, 13, 12, 1, -12}, // 0x59 'Y' + {822, 9, 13, 11, 1, -12}, // 0x5A 'Z' + {837, 4, 17, 6, 1, -12}, // 0x5B '[' + {846, 5, 13, 5, 0, -12}, // 0x5C '\' + {855, 4, 17, 6, 0, -12}, // 0x5D ']' + {864, 8, 8, 11, 1, -12}, // 0x5E '^' + {872, 10, 1, 10, 0, 4}, // 0x5F '_' + {874, 3, 2, 5, 0, -12}, // 0x60 '`' + {875, 10, 10, 10, 1, -9}, // 0x61 'a' + {888, 10, 13, 11, 1, -12}, // 0x62 'b' + {905, 9, 10, 10, 1, -9}, // 0x63 'c' + {917, 9, 13, 11, 1, -12}, // 0x64 'd' + {932, 9, 10, 10, 1, -9}, // 0x65 'e' + {944, 5, 13, 6, 1, -12}, // 0x66 'f' + {953, 9, 14, 11, 1, -9}, // 0x67 'g' + {969, 9, 13, 11, 1, -12}, // 0x68 'h' + {984, 3, 13, 5, 1, -12}, // 0x69 'i' + {989, 4, 17, 5, 0, -12}, // 0x6A 'j' + {998, 9, 13, 10, 1, -12}, // 0x6B 'k' + {1013, 3, 13, 5, 1, -12}, // 0x6C 'l' + {1018, 14, 10, 16, 1, -9}, // 0x6D 'm' + {1036, 9, 10, 11, 1, -9}, // 0x6E 'n' + {1048, 10, 10, 11, 1, -9}, // 0x6F 'o' + {1061, 10, 14, 11, 1, -9}, // 0x70 'p' + {1079, 9, 14, 11, 1, -9}, // 0x71 'q' + {1095, 6, 10, 7, 1, -9}, // 0x72 'r' + {1103, 9, 10, 10, 1, -9}, // 0x73 's' + {1115, 5, 12, 6, 1, -11}, // 0x74 't' + {1123, 9, 10, 11, 1, -9}, // 0x75 'u' + {1135, 10, 10, 10, 0, -9}, // 0x76 'v' + {1148, 14, 10, 14, 0, -9}, // 0x77 'w' + {1166, 10, 10, 10, 0, -9}, // 0x78 'x' + {1179, 10, 14, 10, 0, -9}, // 0x79 'y' + {1197, 8, 10, 9, 1, -9}, // 0x7A 'z' + {1207, 4, 17, 7, 1, -12}, // 0x7B '{' + {1216, 1, 17, 5, 2, -12}, // 0x7C '|' + {1219, 4, 17, 7, 2, -12}, // 0x7D '}' + {1228, 8, 2, 9, 0, -4}}; // 0x7E '~' + +const GFXfont FreeSansBold9pt7b PROGMEM = {(uint8_t *)FreeSansBold9pt7bBitmaps, + (GFXglyph *)FreeSansBold9pt7bGlyphs, + 0x20, 0x7E, 22}; + +// Approx. 1902 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSansBoldOblique12pt7b.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSansBoldOblique12pt7b.h new file mode 100644 index 0000000..ff76ce3 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSansBoldOblique12pt7b.h @@ -0,0 +1,319 @@ +#pragma once +#include + +const uint8_t FreeSansBoldOblique12pt7bBitmaps[] PROGMEM = { + 0x1C, 0x3C, 0x78, 0xE1, 0xC3, 0x8F, 0x1C, 0x38, 0x70, 0xC1, 0x83, 0x00, + 0x1C, 0x78, 0xF0, 0x71, 0xFC, 0xFE, 0x3B, 0x8E, 0xC3, 0x30, 0xC0, 0x01, + 0x8C, 0x07, 0x38, 0x0C, 0x61, 0xFF, 0xF3, 0xFF, 0xE7, 0xFF, 0x83, 0x9C, + 0x0E, 0x70, 0x1C, 0xE1, 0xFF, 0xF3, 0xFF, 0xC7, 0xFF, 0x83, 0x18, 0x0E, + 0x70, 0x18, 0xC0, 0x73, 0x80, 0x00, 0x40, 0x07, 0xF0, 0x3F, 0xF0, 0xFF, + 0xF3, 0xC9, 0xE7, 0xB3, 0xCF, 0x60, 0x1F, 0xC0, 0x3F, 0xC0, 0x3F, 0xE0, + 0x1F, 0xE0, 0x1B, 0xE0, 0x33, 0xDE, 0x47, 0xBC, 0x8F, 0x7F, 0x7C, 0x7F, + 0xF0, 0x7F, 0x80, 0x18, 0x00, 0x20, 0x00, 0xC0, 0x00, 0x00, 0x01, 0x87, + 0x80, 0xC3, 0xF0, 0x61, 0xFE, 0x10, 0xE1, 0x8C, 0x30, 0x66, 0x0C, 0x3B, + 0x03, 0xFC, 0x80, 0x7E, 0x60, 0x0F, 0x30, 0x00, 0x18, 0x70, 0x0C, 0x7E, + 0x03, 0x1F, 0xC1, 0x8E, 0x30, 0xC3, 0x1C, 0x60, 0xFE, 0x18, 0x1F, 0x8C, + 0x07, 0x80, 0x01, 0xE0, 0x07, 0xF0, 0x1F, 0xE0, 0x79, 0xC0, 0xF3, 0x81, + 0xEE, 0x01, 0xF8, 0x01, 0xE0, 0x1F, 0xC6, 0x7B, 0xDD, 0xE3, 0xF7, 0x87, + 0xEF, 0x07, 0x9F, 0x1F, 0x3F, 0xFF, 0x3F, 0xDE, 0x3F, 0x1C, 0x7F, 0xEE, + 0xCC, 0x03, 0x83, 0x81, 0x81, 0xC1, 0xC0, 0xE0, 0xE0, 0x70, 0x70, 0x38, + 0x3C, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x18, 0x0E, 0x07, + 0x01, 0x80, 0x06, 0x03, 0x81, 0xC0, 0x60, 0x38, 0x1C, 0x0E, 0x07, 0x03, + 0x81, 0xC0, 0xE0, 0xE0, 0x70, 0x38, 0x38, 0x1C, 0x1C, 0x0E, 0x0E, 0x06, + 0x07, 0x07, 0x00, 0x0C, 0x0C, 0x4F, 0xFF, 0x1C, 0x3C, 0x6C, 0x44, 0x03, + 0x80, 0x38, 0x07, 0x00, 0x70, 0x7F, 0xFF, 0xFF, 0xFF, 0xF0, 0xE0, 0x0E, + 0x00, 0xE0, 0x0C, 0x00, 0x7B, 0xDC, 0x23, 0x33, 0x00, 0x7F, 0xFF, 0xF0, + 0x7F, 0xE0, 0x00, 0xC0, 0x30, 0x18, 0x04, 0x03, 0x00, 0x80, 0x60, 0x10, + 0x0C, 0x02, 0x01, 0x80, 0x40, 0x30, 0x08, 0x06, 0x01, 0x00, 0xC0, 0x00, + 0x03, 0xC0, 0x7F, 0x87, 0xFC, 0x78, 0xF3, 0xC7, 0xBC, 0x3D, 0xE1, 0xEF, + 0x0F, 0xF0, 0x7F, 0x87, 0xBC, 0x3D, 0xE1, 0xEF, 0x1E, 0x78, 0xF3, 0xFF, + 0x0F, 0xF0, 0x3E, 0x00, 0x03, 0x83, 0x83, 0xCF, 0xEF, 0xF0, 0x78, 0x38, + 0x1C, 0x0E, 0x0F, 0x07, 0x03, 0x81, 0xC1, 0xE0, 0xF0, 0x70, 0x38, 0x00, + 0x03, 0xF0, 0x0F, 0xF8, 0x7F, 0xF8, 0xF1, 0xF3, 0xC1, 0xE7, 0x83, 0xC0, + 0x07, 0x80, 0x1E, 0x00, 0x78, 0x03, 0xE0, 0x0F, 0x00, 0x7C, 0x01, 0xE0, + 0x07, 0x00, 0x1F, 0xFC, 0x3F, 0xF8, 0xFF, 0xF0, 0x07, 0xE0, 0xFF, 0x8F, + 0xFE, 0xF8, 0xF7, 0x87, 0x80, 0x78, 0x0F, 0x80, 0xFC, 0x07, 0xE0, 0x0F, + 0x80, 0x3C, 0x01, 0xEF, 0x0F, 0x78, 0xF3, 0xFF, 0x8F, 0xF8, 0x3F, 0x00, + 0x00, 0x78, 0x07, 0xC0, 0x7E, 0x03, 0xF0, 0x37, 0x03, 0x38, 0x31, 0xC3, + 0x9E, 0x38, 0xF1, 0x87, 0x1F, 0xFE, 0xFF, 0xF7, 0xFF, 0x80, 0xF0, 0x07, + 0x00, 0x38, 0x03, 0xC0, 0x07, 0xFC, 0x1F, 0xF0, 0xFF, 0xC3, 0x00, 0x1C, + 0x00, 0x7F, 0x81, 0xFF, 0x0F, 0xFE, 0x38, 0xF8, 0x01, 0xE0, 0x07, 0x80, + 0x1E, 0xF0, 0xF3, 0xC7, 0xCF, 0xFE, 0x1F, 0xF0, 0x3F, 0x00, 0x03, 0xE0, + 0x7F, 0x87, 0xFE, 0x78, 0xF3, 0xC0, 0x3D, 0xE1, 0xFF, 0x8F, 0xFE, 0xF8, + 0xF7, 0xC7, 0xBC, 0x3D, 0xE1, 0xEF, 0x1E, 0x7C, 0xF3, 0xFF, 0x0F, 0xF0, + 0x1F, 0x00, 0x7F, 0xFB, 0xFF, 0xDF, 0xFE, 0x00, 0xE0, 0x0E, 0x00, 0xE0, + 0x0E, 0x00, 0xE0, 0x0F, 0x00, 0x70, 0x07, 0x00, 0x78, 0x03, 0x80, 0x3C, + 0x01, 0xC0, 0x0E, 0x00, 0xF0, 0x00, 0x03, 0xF0, 0x1F, 0xE0, 0xFF, 0xC7, + 0x8F, 0x1C, 0x3C, 0x71, 0xE0, 0xFF, 0x03, 0xF8, 0x3F, 0xF1, 0xF1, 0xE7, + 0x87, 0xBC, 0x1E, 0xF0, 0x7B, 0xE3, 0xCF, 0xFF, 0x1F, 0xF8, 0x1F, 0x80, + 0x03, 0xE0, 0x3F, 0xE1, 0xFF, 0x8F, 0x9F, 0x3C, 0x3D, 0xE0, 0xF7, 0x83, + 0xDE, 0x1F, 0x78, 0xFD, 0xFF, 0xE3, 0xFF, 0x87, 0xDE, 0x00, 0xF3, 0xC7, + 0x8F, 0xFE, 0x1F, 0xF0, 0x3F, 0x00, 0x1C, 0xF3, 0x80, 0x00, 0x00, 0x00, + 0x01, 0xCF, 0x38, 0x0E, 0x3C, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF1, + 0xE3, 0x81, 0x06, 0x18, 0x60, 0x00, 0x00, 0x01, 0xC0, 0x7E, 0x1F, 0xE7, + 0xF8, 0x7E, 0x03, 0xE0, 0x1F, 0xE0, 0x3F, 0xC0, 0x7F, 0x00, 0x78, 0x00, + 0xC0, 0x3F, 0xFC, 0xFF, 0xF3, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x07, + 0xFF, 0x9F, 0xFC, 0x7F, 0xF0, 0x30, 0x01, 0xE0, 0x0F, 0xE0, 0x3F, 0xC0, + 0x7F, 0x80, 0x7C, 0x07, 0xE1, 0xFE, 0x7F, 0x87, 0xE0, 0x38, 0x00, 0x00, + 0x00, 0x0F, 0xC1, 0xFF, 0x8F, 0xFC, 0xF1, 0xFF, 0x07, 0xF0, 0x3C, 0x01, + 0xE0, 0x1E, 0x01, 0xE0, 0x3E, 0x03, 0xE0, 0x1C, 0x01, 0xC0, 0x0E, 0x00, + 0x00, 0x07, 0x80, 0x3C, 0x01, 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x03, 0xFF, + 0x80, 0x3C, 0x0F, 0x01, 0xC0, 0x0E, 0x0E, 0x00, 0x1C, 0x70, 0xF7, 0x73, + 0x87, 0xF8, 0xCC, 0x31, 0xE3, 0x61, 0x87, 0x0D, 0x8C, 0x1C, 0x3C, 0x30, + 0x61, 0xB1, 0x81, 0x86, 0xC6, 0x0C, 0x3B, 0x18, 0x71, 0xCC, 0x63, 0xCE, + 0x31, 0xFB, 0xF0, 0xE3, 0xCF, 0x01, 0xC0, 0x00, 0x03, 0xC0, 0xC0, 0x07, + 0xFF, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x3E, 0x00, 0x3F, 0x00, 0x1F, 0x80, + 0x1F, 0xC0, 0x0F, 0xE0, 0x0F, 0xF0, 0x07, 0x7C, 0x07, 0x1E, 0x03, 0x8F, + 0x03, 0x87, 0x83, 0xC3, 0xC1, 0xFF, 0xE1, 0xFF, 0xF0, 0xFF, 0xFC, 0xF0, + 0x1E, 0x70, 0x0F, 0x78, 0x07, 0xB8, 0x03, 0xC0, 0x0F, 0xFE, 0x0F, 0xFF, + 0x87, 0xFF, 0xE3, 0xC0, 0xF1, 0xC0, 0x78, 0xE0, 0x3C, 0xF0, 0x3C, 0x7F, + 0xFC, 0x3F, 0xFC, 0x1F, 0xFF, 0x0E, 0x07, 0xCF, 0x01, 0xE7, 0x80, 0xF3, + 0x80, 0x79, 0xC0, 0x79, 0xFF, 0xF8, 0xFF, 0xFC, 0x7F, 0xF8, 0x00, 0x01, + 0xF8, 0x03, 0xFF, 0x03, 0xFF, 0xC3, 0xE1, 0xF3, 0xC0, 0x79, 0xE0, 0x3D, + 0xE0, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1E, 0x00, + 0x0F, 0x00, 0xE7, 0x80, 0xF3, 0xE0, 0xF0, 0xFF, 0xF8, 0x3F, 0xF0, 0x07, + 0xE0, 0x00, 0x1F, 0xFC, 0x0F, 0xFF, 0x87, 0xFF, 0xC3, 0x81, 0xF1, 0xC0, + 0x79, 0xE0, 0x3C, 0xF0, 0x1E, 0x78, 0x0F, 0x38, 0x07, 0x9C, 0x03, 0xDE, + 0x03, 0xCF, 0x01, 0xE7, 0x81, 0xF3, 0x80, 0xF1, 0xC1, 0xF1, 0xFF, 0xF0, + 0xFF, 0xF0, 0x7F, 0xE0, 0x00, 0x0F, 0xFF, 0x1F, 0xFF, 0x1F, 0xFF, 0x1C, + 0x00, 0x1C, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, + 0xFC, 0x78, 0x00, 0x78, 0x00, 0x78, 0x00, 0x70, 0x00, 0x70, 0x00, 0xFF, + 0xF8, 0xFF, 0xF8, 0xFF, 0xF8, 0x1F, 0xFF, 0x1F, 0xFE, 0x1F, 0xFE, 0x1C, + 0x00, 0x1C, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x3F, 0xF8, 0x3F, 0xF8, 0x3F, + 0xF8, 0x78, 0x00, 0x78, 0x00, 0x78, 0x00, 0x70, 0x00, 0xF0, 0x00, 0xF0, + 0x00, 0xF0, 0x00, 0xE0, 0x00, 0x01, 0xFC, 0x03, 0xFF, 0x03, 0xFF, 0xC3, + 0xE0, 0xF3, 0xC0, 0x39, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, 0xF0, 0x7F, + 0x78, 0x3F, 0xBC, 0x1F, 0xDE, 0x01, 0xCF, 0x00, 0xE7, 0xC0, 0xF1, 0xF0, + 0xF8, 0xFF, 0xFC, 0x3F, 0xEC, 0x07, 0xE6, 0x00, 0x1E, 0x03, 0x8F, 0x01, + 0xC7, 0x01, 0xE3, 0x80, 0xF3, 0xC0, 0x79, 0xE0, 0x38, 0xF0, 0x1C, 0x7F, + 0xFE, 0x3F, 0xFF, 0x3F, 0xFF, 0x9E, 0x03, 0x8F, 0x01, 0xC7, 0x01, 0xE3, + 0x80, 0xF3, 0xC0, 0x71, 0xE0, 0x38, 0xF0, 0x3C, 0x70, 0x1E, 0x00, 0x1E, + 0x3C, 0x78, 0xE1, 0xC7, 0x8F, 0x1E, 0x38, 0x71, 0xE3, 0xC7, 0x8E, 0x1C, + 0x78, 0xF1, 0xE0, 0x00, 0x1C, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x38, + 0x00, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x01, 0xC0, 0x07, 0x3C, 0x3C, + 0xF0, 0xF3, 0xC3, 0x8F, 0x1E, 0x3F, 0xF8, 0x7F, 0xC0, 0xFC, 0x00, 0x1E, + 0x07, 0xC7, 0x83, 0xE1, 0xE1, 0xE0, 0x70, 0xF0, 0x1C, 0x78, 0x0F, 0x3C, + 0x03, 0xDE, 0x00, 0xFF, 0x00, 0x3F, 0xC0, 0x0F, 0xF0, 0x07, 0xDE, 0x01, + 0xE7, 0xC0, 0x78, 0xF0, 0x1C, 0x3E, 0x0F, 0x07, 0x83, 0xC0, 0xF0, 0xF0, + 0x3C, 0x38, 0x07, 0x80, 0x0E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xC0, + 0x0E, 0x00, 0xF0, 0x07, 0x80, 0x38, 0x01, 0xC0, 0x1E, 0x00, 0xF0, 0x07, + 0x80, 0x38, 0x01, 0xC0, 0x1F, 0xFE, 0xFF, 0xF7, 0xFF, 0x80, 0x1F, 0x03, + 0xF1, 0xF0, 0x3F, 0x1F, 0x07, 0xF1, 0xF0, 0x7F, 0x3F, 0x0F, 0xE3, 0xF0, + 0xEE, 0x3B, 0x1E, 0xE3, 0xB1, 0xDE, 0x3B, 0x1D, 0xE7, 0xB3, 0x9C, 0x7B, + 0x39, 0xC7, 0x37, 0x9C, 0x73, 0x73, 0xCF, 0x3F, 0x3C, 0xF3, 0xE3, 0x8F, + 0x3E, 0x38, 0xE3, 0xC3, 0x8E, 0x3C, 0x78, 0x1E, 0x03, 0x87, 0xC0, 0xE1, + 0xF0, 0x38, 0x7C, 0x1E, 0x1F, 0x87, 0x8F, 0xE1, 0xC3, 0xB8, 0x70, 0xEF, + 0x1C, 0x39, 0xCF, 0x1E, 0x73, 0xC7, 0x8E, 0xE1, 0xC3, 0xB8, 0x70, 0xEE, + 0x1C, 0x1F, 0x8F, 0x07, 0xE3, 0xC1, 0xF0, 0xE0, 0x3C, 0x38, 0x0F, 0x00, + 0x01, 0xF8, 0x03, 0xFF, 0x03, 0xFF, 0xC3, 0xE3, 0xE3, 0xC0, 0xF9, 0xE0, + 0x3D, 0xE0, 0x1E, 0xF0, 0x0F, 0xF0, 0x07, 0xF8, 0x03, 0xFC, 0x03, 0xDE, + 0x01, 0xEF, 0x00, 0xF7, 0xC0, 0xF1, 0xF0, 0xF0, 0xFF, 0xF0, 0x3F, 0xF0, + 0x07, 0xE0, 0x00, 0x1F, 0xFC, 0x1F, 0xFE, 0x1F, 0xFF, 0x1C, 0x1F, 0x1C, + 0x0F, 0x3C, 0x0F, 0x3C, 0x0F, 0x3C, 0x1E, 0x3F, 0xFC, 0x3F, 0xFC, 0x7F, + 0xF0, 0x78, 0x00, 0x78, 0x00, 0x70, 0x00, 0x70, 0x00, 0xF0, 0x00, 0xF0, + 0x00, 0xF0, 0x00, 0x01, 0xF8, 0x03, 0xFF, 0x03, 0xFF, 0xC3, 0xE3, 0xE3, + 0xC0, 0xF9, 0xC0, 0x3D, 0xE0, 0x1E, 0xF0, 0x0F, 0xF0, 0x07, 0xF8, 0x03, + 0xFC, 0x03, 0xDE, 0x09, 0xEF, 0x0E, 0xE7, 0xC7, 0xF1, 0xF1, 0xF0, 0xFF, + 0xF8, 0x3F, 0xFE, 0x07, 0xE6, 0x00, 0x02, 0x00, 0x0F, 0xFE, 0x0F, 0xFF, + 0x87, 0xFF, 0xE3, 0x81, 0xF1, 0xC0, 0x78, 0xE0, 0x3C, 0xF0, 0x1C, 0x78, + 0x1E, 0x3F, 0xFC, 0x1F, 0xFC, 0x1F, 0xFF, 0x8F, 0x03, 0xC7, 0x81, 0xE3, + 0x80, 0xF1, 0xC0, 0xF1, 0xE0, 0x78, 0xF0, 0x3C, 0x78, 0x1F, 0x00, 0x03, + 0xF8, 0x0F, 0xFE, 0x1F, 0xFF, 0x1E, 0x1F, 0x3C, 0x0F, 0x3C, 0x0F, 0x3C, + 0x00, 0x3F, 0x00, 0x1F, 0xF0, 0x0F, 0xFC, 0x01, 0xFE, 0x00, 0x3E, 0xF0, + 0x1E, 0xF0, 0x1E, 0xF8, 0x3C, 0x7F, 0xF8, 0x7F, 0xF0, 0x1F, 0xC0, 0x7F, + 0xFE, 0xFF, 0xFD, 0xFF, 0xF8, 0x1C, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, + 0x03, 0x80, 0x07, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xE0, 0x01, + 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x38, 0x00, 0x1E, 0x07, 0x1C, + 0x0F, 0x3C, 0x0F, 0x3C, 0x0F, 0x3C, 0x0E, 0x38, 0x0E, 0x78, 0x1E, 0x78, + 0x1E, 0x78, 0x1E, 0x78, 0x1C, 0x70, 0x1C, 0xF0, 0x3C, 0xF0, 0x3C, 0xF0, + 0x38, 0xF8, 0x78, 0xFF, 0xF0, 0x7F, 0xE0, 0x1F, 0x80, 0xF0, 0x1F, 0xE0, + 0x39, 0xC0, 0xF3, 0x81, 0xC7, 0x07, 0x8E, 0x0E, 0x1C, 0x3C, 0x3C, 0x70, + 0x79, 0xE0, 0xF3, 0x80, 0xEF, 0x01, 0xDC, 0x03, 0xB8, 0x07, 0xE0, 0x0F, + 0x80, 0x1F, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x70, 0x7F, 0x87, 0x83, + 0xFC, 0x3C, 0x3D, 0xE1, 0xE1, 0xEF, 0x1F, 0x0E, 0x78, 0xD8, 0xF3, 0xC6, + 0xC7, 0x0E, 0x76, 0x78, 0x73, 0x33, 0x83, 0xB9, 0x9C, 0x1D, 0xCD, 0xC0, + 0xEC, 0x6E, 0x07, 0xE3, 0xE0, 0x3E, 0x1F, 0x01, 0xF0, 0xF0, 0x0F, 0x87, + 0x80, 0x78, 0x38, 0x03, 0xC1, 0xC0, 0x00, 0x0F, 0x03, 0xC3, 0xC1, 0xE0, + 0xF8, 0xF0, 0x1E, 0x78, 0x07, 0x9E, 0x00, 0xFF, 0x00, 0x3F, 0x80, 0x0F, + 0xC0, 0x01, 0xE0, 0x00, 0xF8, 0x00, 0x3F, 0x00, 0x1F, 0xC0, 0x0F, 0xF0, + 0x07, 0x9E, 0x03, 0xC7, 0x80, 0xF0, 0xF0, 0x78, 0x3C, 0x3C, 0x0F, 0x80, + 0x78, 0x1E, 0xF0, 0x79, 0xE0, 0xF3, 0xC3, 0xC3, 0xCF, 0x07, 0x9E, 0x0F, + 0x78, 0x0F, 0xE0, 0x1F, 0x80, 0x3F, 0x00, 0x3C, 0x00, 0x70, 0x00, 0xE0, + 0x03, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x1F, 0xFF, + 0x0F, 0xFF, 0x87, 0xFF, 0xC0, 0x03, 0xC0, 0x03, 0xE0, 0x03, 0xE0, 0x03, + 0xE0, 0x03, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x01, + 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xFF, 0xF0, 0xFF, 0xF8, 0x7F, 0xFC, + 0x00, 0x0F, 0xC3, 0xF0, 0xFC, 0x38, 0x1E, 0x07, 0x01, 0xC0, 0x70, 0x1C, + 0x0F, 0x03, 0x80, 0xE0, 0x38, 0x0E, 0x07, 0x01, 0xC0, 0x70, 0x1C, 0x0F, + 0x03, 0x80, 0xFC, 0x3F, 0x0F, 0xC0, 0x08, 0x88, 0xC4, 0x44, 0x66, 0x66, + 0x66, 0x62, 0x22, 0x33, 0x33, 0x30, 0x0F, 0xC3, 0xF0, 0xFC, 0x07, 0x03, + 0xC0, 0xE0, 0x38, 0x0E, 0x03, 0x81, 0xC0, 0x70, 0x1C, 0x07, 0x03, 0xC0, + 0xE0, 0x38, 0x0E, 0x03, 0x81, 0xE0, 0x70, 0xFC, 0x3F, 0x0F, 0xC0, 0x03, + 0x80, 0xF0, 0x1E, 0x07, 0xE1, 0xDC, 0x3B, 0x8E, 0x71, 0x86, 0x70, 0xFC, + 0x1F, 0x83, 0x80, 0x7F, 0xFE, 0xFF, 0xFC, 0xE6, 0x30, 0x07, 0xE0, 0xFF, + 0x8F, 0xFE, 0x70, 0xE0, 0x07, 0x03, 0xF8, 0xFF, 0xCF, 0x9E, 0xF0, 0xF7, + 0x8F, 0x3F, 0xF8, 0xFF, 0xC3, 0xDF, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, + 0x00, 0xF0, 0x01, 0xE0, 0x03, 0x9F, 0x07, 0xFF, 0x0F, 0xFF, 0x3E, 0x3E, + 0x78, 0x3C, 0xF0, 0x79, 0xC0, 0xF3, 0x81, 0xEF, 0x07, 0x9F, 0x1F, 0x3F, + 0xFC, 0x7F, 0xF0, 0xEF, 0x80, 0x07, 0xC0, 0xFF, 0x8F, 0xFE, 0xF8, 0xF7, + 0x87, 0xB8, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0xF7, 0x8F, 0x1F, 0xF8, 0xFF, + 0x81, 0xF0, 0x00, 0x00, 0x1E, 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x03, + 0xC0, 0xF7, 0x87, 0xFE, 0x1F, 0xFC, 0x7C, 0x78, 0xF0, 0x73, 0xC0, 0xE7, + 0x81, 0x8F, 0x07, 0x1E, 0x0E, 0x3E, 0x3C, 0x7F, 0xF8, 0x7F, 0xE0, 0x7D, + 0xC0, 0x07, 0xC0, 0xFF, 0x8F, 0xFE, 0xF0, 0xF7, 0x87, 0xFF, 0xFF, 0xFF, + 0xFE, 0x00, 0xF0, 0x07, 0xC7, 0x9F, 0xF8, 0xFF, 0x81, 0xF0, 0x00, 0x07, + 0x87, 0xC7, 0xE3, 0xC1, 0xC3, 0xF9, 0xFC, 0x78, 0x3C, 0x1C, 0x0E, 0x07, + 0x07, 0x83, 0x81, 0xC0, 0xE0, 0xF0, 0x78, 0x00, 0x03, 0xDE, 0x1F, 0xF8, + 0x7F, 0xF1, 0xF1, 0xE3, 0xC1, 0xCF, 0x03, 0x9E, 0x06, 0x3C, 0x0C, 0x78, + 0x38, 0xF8, 0xF1, 0xFF, 0xC1, 0xFF, 0x81, 0xF7, 0x00, 0x0E, 0x3C, 0x3C, + 0x78, 0xF0, 0x7F, 0xC0, 0x7E, 0x00, 0x1E, 0x00, 0x70, 0x01, 0xC0, 0x07, + 0x00, 0x3C, 0x00, 0xF7, 0xC3, 0xBF, 0x8F, 0xFF, 0x3C, 0x3D, 0xE0, 0xE7, + 0x83, 0x9C, 0x0E, 0x70, 0x79, 0xC1, 0xEF, 0x07, 0x3C, 0x1C, 0xE0, 0x73, + 0x83, 0xC0, 0x0E, 0x3C, 0x70, 0x00, 0x03, 0x8F, 0x1E, 0x38, 0x71, 0xE3, + 0xC7, 0x0E, 0x1C, 0x78, 0xF1, 0xC0, 0x03, 0xC0, 0xE0, 0x38, 0x00, 0x00, + 0x01, 0xE0, 0x70, 0x1C, 0x07, 0x03, 0xC0, 0xF0, 0x38, 0x0E, 0x03, 0x81, + 0xE0, 0x70, 0x1C, 0x07, 0x03, 0xC0, 0xF0, 0xF8, 0x3E, 0x0F, 0x00, 0x0E, + 0x00, 0x1C, 0x00, 0x38, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0x87, 0x87, 0x1E, + 0x0E, 0x78, 0x3D, 0xE0, 0x7F, 0x80, 0xFE, 0x01, 0xFE, 0x03, 0xFC, 0x0F, + 0x38, 0x1E, 0x78, 0x38, 0xF0, 0x70, 0xF0, 0xE1, 0xE0, 0x0E, 0x3C, 0x78, + 0xE1, 0xC3, 0x8F, 0x1E, 0x38, 0x71, 0xE3, 0xC7, 0x0E, 0x1C, 0x78, 0xF1, + 0xC0, 0x1C, 0xF1, 0xE0, 0xEF, 0xDF, 0x87, 0xFF, 0xFE, 0x7C, 0x78, 0xF3, + 0xC3, 0x87, 0x9C, 0x1C, 0x38, 0xE1, 0xE1, 0xC7, 0x0E, 0x0E, 0x78, 0x70, + 0xF3, 0xC3, 0x87, 0x9C, 0x3C, 0x38, 0xE1, 0xE1, 0xC7, 0x0E, 0x0E, 0x00, + 0x3D, 0xF0, 0xEF, 0xE3, 0xFF, 0xCF, 0x0F, 0x78, 0x39, 0xC0, 0xE7, 0x03, + 0x9C, 0x1E, 0xF0, 0x7B, 0xC1, 0xCE, 0x07, 0x38, 0x1C, 0xE0, 0xF0, 0x07, + 0xE0, 0x7F, 0xE3, 0xFF, 0x9F, 0x1F, 0x78, 0x3F, 0xC0, 0xFF, 0x03, 0xFC, + 0x1F, 0xF0, 0x7B, 0xE3, 0xE7, 0xFF, 0x1F, 0xF8, 0x1F, 0x80, 0x0E, 0x7C, + 0x0F, 0xFE, 0x0F, 0xFF, 0x1F, 0x1F, 0x1E, 0x0F, 0x1E, 0x0F, 0x1C, 0x0F, + 0x1C, 0x0F, 0x3C, 0x1E, 0x3E, 0x3E, 0x3F, 0xFC, 0x3F, 0xF8, 0x7B, 0xE0, + 0x78, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0xF0, 0x00, 0x07, 0xBC, + 0x7F, 0xF3, 0xFF, 0x9F, 0x1E, 0x78, 0x3B, 0xC0, 0xEF, 0x03, 0x3C, 0x0C, + 0xF0, 0x73, 0xE3, 0xCF, 0xFF, 0x1F, 0xF8, 0x3C, 0xE0, 0x03, 0x80, 0x1E, + 0x00, 0x78, 0x01, 0xC0, 0x07, 0x00, 0x3D, 0xCE, 0xE3, 0xF8, 0xF0, 0x78, + 0x1E, 0x07, 0x01, 0xC0, 0xF0, 0x3C, 0x0E, 0x03, 0x80, 0xE0, 0x00, 0x1F, + 0xC3, 0xFE, 0x7F, 0xFF, 0x0F, 0xF0, 0x0F, 0xE0, 0x7F, 0xC1, 0xFE, 0x03, + 0xEE, 0x1E, 0xFF, 0xC7, 0xFC, 0x3F, 0x00, 0x1E, 0x1E, 0x1C, 0x7F, 0xFF, + 0x3C, 0x38, 0x38, 0x38, 0x78, 0x78, 0x70, 0x7C, 0xF8, 0x78, 0x38, 0x3C, + 0xE0, 0xE3, 0x83, 0x9E, 0x0E, 0x70, 0x79, 0xC1, 0xE7, 0x07, 0x3C, 0x1C, + 0xF0, 0xF3, 0xE7, 0xCF, 0xFF, 0x1F, 0xF8, 0x3C, 0xE0, 0xF0, 0x77, 0x87, + 0xBC, 0x38, 0xE3, 0xC7, 0x1C, 0x39, 0xE1, 0xCE, 0x0E, 0xE0, 0x77, 0x03, + 0xF0, 0x0F, 0x80, 0x78, 0x03, 0xC0, 0x00, 0xF1, 0xC3, 0xF8, 0xE3, 0xFC, + 0xF1, 0xDE, 0x79, 0xEF, 0x3C, 0xE7, 0xB6, 0x73, 0xDB, 0x70, 0xED, 0xB8, + 0x7C, 0xF8, 0x3E, 0x7C, 0x1F, 0x3C, 0x0F, 0x1E, 0x07, 0x8E, 0x00, 0x0F, + 0x1E, 0x0F, 0x3C, 0x0F, 0x38, 0x07, 0x70, 0x07, 0xF0, 0x03, 0xE0, 0x03, + 0xC0, 0x07, 0xC0, 0x0F, 0xE0, 0x1E, 0xE0, 0x3C, 0xF0, 0x3C, 0xF0, 0x78, + 0x78, 0x3C, 0x1C, 0x78, 0x78, 0xF0, 0xE1, 0xE3, 0xC1, 0xC7, 0x03, 0x9E, + 0x07, 0x38, 0x0E, 0xE0, 0x1D, 0xC0, 0x3F, 0x00, 0x7E, 0x00, 0x78, 0x00, + 0xF0, 0x01, 0xC0, 0x07, 0x00, 0x7E, 0x00, 0xF8, 0x01, 0xE0, 0x00, 0x1F, + 0xF9, 0xFF, 0xCF, 0xFC, 0x01, 0xE0, 0x3E, 0x03, 0xC0, 0x3C, 0x03, 0xC0, + 0x3C, 0x03, 0xC0, 0x3F, 0xF9, 0xFF, 0xCF, 0xFC, 0x00, 0x07, 0x87, 0xC3, + 0xE3, 0xC1, 0xC0, 0xE0, 0x70, 0x38, 0x3C, 0x1C, 0x0E, 0x1E, 0x0F, 0x03, + 0x81, 0xC0, 0xE0, 0x70, 0x78, 0x38, 0x1C, 0x0F, 0x87, 0xC1, 0xC0, 0x0C, + 0x30, 0x86, 0x18, 0x61, 0x8C, 0x30, 0xC3, 0x0C, 0x61, 0x86, 0x18, 0x63, + 0x0C, 0x30, 0xC2, 0x00, 0x00, 0x07, 0x07, 0xC3, 0xE0, 0x70, 0x38, 0x3C, + 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xE0, 0xF0, 0xE0, 0x70, 0x78, 0x38, 0x1C, + 0x0E, 0x07, 0x07, 0x8F, 0x87, 0xC3, 0xC0, 0x3C, 0x07, 0xE0, 0xC7, 0x30, + 0x7E, 0x01, 0xC0}; + +const GFXglyph FreeSansBoldOblique12pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 7, 0, 1}, // 0x20 ' ' + {0, 7, 17, 8, 3, -16}, // 0x21 '!' + {15, 10, 6, 11, 4, -17}, // 0x22 '"' + {23, 15, 16, 13, 1, -15}, // 0x23 '#' + {53, 15, 21, 13, 1, -17}, // 0x24 '$' + {93, 18, 18, 21, 3, -17}, // 0x25 '%' + {134, 15, 17, 17, 2, -16}, // 0x26 '&' + {166, 4, 6, 6, 4, -17}, // 0x27 ''' + {169, 9, 22, 8, 2, -17}, // 0x28 '(' + {194, 9, 22, 8, -1, -16}, // 0x29 ')' + {219, 8, 8, 9, 3, -17}, // 0x2A '*' + {227, 12, 11, 14, 2, -10}, // 0x2B '+' + {244, 5, 7, 7, 1, -2}, // 0x2C ',' + {249, 7, 3, 8, 2, -7}, // 0x2D '-' + {252, 4, 3, 7, 2, -2}, // 0x2E '.' + {254, 10, 17, 7, 0, -16}, // 0x2F '/' + {276, 13, 17, 13, 2, -16}, // 0x30 '0' + {304, 9, 17, 13, 4, -16}, // 0x31 '1' + {324, 15, 17, 13, 1, -16}, // 0x32 '2' + {356, 13, 17, 13, 2, -16}, // 0x33 '3' + {384, 13, 17, 13, 1, -16}, // 0x34 '4' + {412, 14, 17, 13, 1, -16}, // 0x35 '5' + {442, 13, 17, 13, 2, -16}, // 0x36 '6' + {470, 13, 17, 13, 3, -16}, // 0x37 '7' + {498, 14, 17, 13, 1, -16}, // 0x38 '8' + {528, 14, 17, 13, 2, -16}, // 0x39 '9' + {558, 6, 12, 8, 3, -11}, // 0x3A ':' + {567, 7, 16, 8, 2, -11}, // 0x3B ';' + {581, 13, 12, 14, 2, -11}, // 0x3C '<' + {601, 14, 9, 14, 1, -9}, // 0x3D '=' + {617, 13, 12, 14, 1, -10}, // 0x3E '>' + {637, 13, 18, 15, 4, -17}, // 0x3F '?' + {667, 22, 21, 23, 2, -17}, // 0x40 '@' + {725, 17, 18, 17, 0, -17}, // 0x41 'A' + {764, 17, 18, 17, 2, -17}, // 0x42 'B' + {803, 17, 18, 17, 3, -17}, // 0x43 'C' + {842, 17, 18, 17, 2, -17}, // 0x44 'D' + {881, 16, 18, 16, 2, -17}, // 0x45 'E' + {917, 16, 18, 15, 2, -17}, // 0x46 'F' + {953, 17, 18, 19, 3, -17}, // 0x47 'G' + {992, 17, 18, 17, 2, -17}, // 0x48 'H' + {1031, 7, 18, 7, 2, -17}, // 0x49 'I' + {1047, 14, 18, 13, 1, -17}, // 0x4A 'J' + {1079, 18, 18, 17, 2, -17}, // 0x4B 'K' + {1120, 13, 18, 15, 2, -17}, // 0x4C 'L' + {1150, 20, 18, 20, 2, -17}, // 0x4D 'M' + {1195, 18, 18, 17, 2, -17}, // 0x4E 'N' + {1236, 17, 18, 19, 3, -17}, // 0x4F 'O' + {1275, 16, 18, 16, 2, -17}, // 0x50 'P' + {1311, 17, 19, 19, 3, -17}, // 0x51 'Q' + {1352, 17, 18, 17, 2, -17}, // 0x52 'R' + {1391, 16, 18, 16, 2, -17}, // 0x53 'S' + {1427, 15, 18, 15, 3, -17}, // 0x54 'T' + {1461, 16, 18, 17, 3, -17}, // 0x55 'U' + {1497, 15, 18, 16, 4, -17}, // 0x56 'V' + {1531, 21, 18, 23, 4, -17}, // 0x57 'W' + {1579, 18, 18, 16, 1, -17}, // 0x58 'X' + {1620, 15, 18, 16, 4, -17}, // 0x59 'Y' + {1654, 17, 18, 15, 1, -17}, // 0x5A 'Z' + {1693, 10, 23, 8, 1, -17}, // 0x5B '[' + {1722, 4, 23, 7, 3, -22}, // 0x5C '\' + {1734, 10, 23, 8, 0, -17}, // 0x5D ']' + {1763, 11, 11, 14, 3, -16}, // 0x5E '^' + {1779, 15, 2, 13, -2, 4}, // 0x5F '_' + {1783, 4, 3, 8, 4, -17}, // 0x60 '`' + {1785, 13, 13, 13, 1, -12}, // 0x61 'a' + {1807, 15, 18, 15, 1, -17}, // 0x62 'b' + {1841, 13, 13, 13, 2, -12}, // 0x63 'c' + {1863, 15, 18, 15, 2, -17}, // 0x64 'd' + {1897, 13, 13, 13, 2, -12}, // 0x65 'e' + {1919, 9, 18, 8, 2, -17}, // 0x66 'f' + {1940, 15, 18, 15, 1, -12}, // 0x67 'g' + {1974, 14, 18, 15, 2, -17}, // 0x68 'h' + {2006, 7, 18, 7, 2, -17}, // 0x69 'i' + {2022, 10, 23, 7, -1, -17}, // 0x6A 'j' + {2051, 15, 18, 13, 1, -17}, // 0x6B 'k' + {2085, 7, 18, 7, 2, -17}, // 0x6C 'l' + {2101, 21, 13, 21, 1, -12}, // 0x6D 'm' + {2136, 14, 13, 15, 2, -12}, // 0x6E 'n' + {2159, 14, 13, 15, 2, -12}, // 0x6F 'o' + {2182, 16, 18, 15, 0, -12}, // 0x70 'p' + {2218, 14, 18, 15, 2, -12}, // 0x71 'q' + {2250, 10, 13, 9, 2, -12}, // 0x72 'r' + {2267, 12, 13, 13, 3, -12}, // 0x73 's' + {2287, 8, 15, 8, 2, -14}, // 0x74 't' + {2302, 14, 13, 15, 2, -12}, // 0x75 'u' + {2325, 13, 13, 13, 3, -12}, // 0x76 'v' + {2347, 17, 13, 19, 3, -12}, // 0x77 'w' + {2375, 16, 13, 13, 0, -12}, // 0x78 'x' + {2401, 15, 18, 13, 1, -12}, // 0x79 'y' + {2435, 13, 13, 12, 1, -12}, // 0x7A 'z' + {2457, 9, 23, 9, 3, -17}, // 0x7B '{' + {2483, 6, 23, 7, 1, -17}, // 0x7C '|' + {2501, 9, 23, 9, 0, -17}, // 0x7D '}' + {2527, 12, 5, 14, 2, -7}}; // 0x7E '~' + +const GFXfont FreeSansBoldOblique12pt7b PROGMEM = { + (uint8_t *)FreeSansBoldOblique12pt7bBitmaps, + (GFXglyph *)FreeSansBoldOblique12pt7bGlyphs, 0x20, 0x7E, 29}; + +// Approx. 3207 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSansBoldOblique18pt7b.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSansBoldOblique18pt7b.h new file mode 100644 index 0000000..441c6b5 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSansBoldOblique18pt7b.h @@ -0,0 +1,547 @@ +#pragma once +#include + +const uint8_t FreeSansBoldOblique18pt7bBitmaps[] PROGMEM = { + 0x06, 0x01, 0xC0, 0x7C, 0x1F, 0x0F, 0xC3, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, + 0xC0, 0xF0, 0x7C, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1C, 0x07, 0x01, 0xC0, + 0x60, 0x7C, 0x1F, 0x07, 0xC3, 0xF0, 0xF8, 0x00, 0x78, 0x7B, 0xC3, 0xFE, + 0x3F, 0xE1, 0xEF, 0x0F, 0x78, 0x7B, 0x83, 0x9C, 0x1C, 0xC0, 0xC0, 0x00, + 0x3C, 0x38, 0x00, 0xF1, 0xE0, 0x07, 0x87, 0x00, 0x1E, 0x3C, 0x00, 0xF0, + 0xE0, 0x3F, 0xFF, 0xF0, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0x1F, 0xFF, 0xF8, + 0x0F, 0x0E, 0x00, 0x3C, 0x78, 0x00, 0xE1, 0xE0, 0x07, 0x8F, 0x00, 0x1C, + 0x3C, 0x07, 0xFF, 0xFE, 0x1F, 0xFF, 0xF8, 0x7F, 0xFF, 0xE3, 0xFF, 0xFF, + 0x01, 0xE3, 0xC0, 0x0F, 0x0E, 0x00, 0x3C, 0x78, 0x01, 0xE1, 0xC0, 0x07, + 0x8F, 0x00, 0x3C, 0x38, 0x00, 0x00, 0x0C, 0x00, 0x01, 0x80, 0x00, 0xFC, + 0x00, 0xFF, 0xC0, 0x3F, 0xFC, 0x0F, 0xFF, 0xC3, 0xE6, 0x78, 0x78, 0xCF, + 0x1E, 0x39, 0xE3, 0xC7, 0x3C, 0x78, 0xC0, 0x0F, 0x98, 0x01, 0xFF, 0x00, + 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x00, 0x7F, 0x80, 0x0F, 0xF0, + 0x03, 0xBE, 0x00, 0x67, 0xCF, 0x8C, 0xF9, 0xF1, 0x9F, 0x3E, 0x77, 0xC7, + 0xEF, 0xF8, 0x7F, 0xFE, 0x0F, 0xFF, 0x80, 0xFF, 0xE0, 0x03, 0xE0, 0x00, + 0x38, 0x00, 0x06, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x07, 0x01, 0xE0, + 0x03, 0x81, 0xFE, 0x00, 0xC0, 0xFF, 0x80, 0x70, 0x7F, 0xF0, 0x38, 0x1E, + 0x3C, 0x1C, 0x0F, 0x07, 0x06, 0x03, 0x81, 0xC3, 0x80, 0xE0, 0xF1, 0xC0, + 0x3C, 0x78, 0xE0, 0x0F, 0xFE, 0x30, 0x01, 0xFF, 0x1C, 0x00, 0x7F, 0x8E, + 0x00, 0x07, 0x83, 0x00, 0x00, 0x01, 0x83, 0xE0, 0x00, 0xE3, 0xFE, 0x00, + 0x71, 0xFF, 0x80, 0x18, 0xFF, 0xF0, 0x0C, 0x3C, 0x3C, 0x07, 0x1C, 0x07, + 0x03, 0x87, 0x01, 0xC0, 0xC1, 0xE1, 0xE0, 0x60, 0x7F, 0xF8, 0x38, 0x0F, + 0xFC, 0x1C, 0x03, 0xFE, 0x06, 0x00, 0x3E, 0x00, 0x00, 0x1F, 0x00, 0x03, + 0xFC, 0x00, 0x3F, 0xF0, 0x03, 0xFF, 0x80, 0x3F, 0x3C, 0x01, 0xF1, 0xE0, + 0x0F, 0x8F, 0x00, 0x7C, 0xF0, 0x03, 0xFF, 0x80, 0x0F, 0xF8, 0x00, 0x3F, + 0x00, 0x03, 0xF0, 0x00, 0x7F, 0xC7, 0x8F, 0xFE, 0x3C, 0xFC, 0xFB, 0xCF, + 0x83, 0xFE, 0xF8, 0x1F, 0xE7, 0xC0, 0x7E, 0x3E, 0x03, 0xE1, 0xF0, 0x1F, + 0x0F, 0xE3, 0xFC, 0x7F, 0xFF, 0xE1, 0xFF, 0xFF, 0x87, 0xFE, 0x7C, 0x0F, + 0xE1, 0xF0, 0x7B, 0xFF, 0xEF, 0x7B, 0x9C, 0xC0, 0x00, 0x78, 0x07, 0x80, + 0x78, 0x03, 0x80, 0x3C, 0x03, 0xC0, 0x1E, 0x01, 0xE0, 0x1E, 0x00, 0xF0, + 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0xF0, 0x07, + 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, + 0x07, 0x80, 0x1C, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x00, 0xE0, 0x07, 0x80, + 0x1C, 0x00, 0x01, 0xC0, 0x0F, 0x00, 0x38, 0x01, 0xE0, 0x0F, 0x00, 0x78, + 0x01, 0xC0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, + 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0xF8, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x1E, + 0x00, 0xF0, 0x07, 0x80, 0x78, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x1E, 0x01, + 0xE0, 0x1E, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x00, 0x03, 0x00, 0x70, 0x07, + 0x04, 0x63, 0xFF, 0xF7, 0xFF, 0x1F, 0x83, 0xF0, 0x3B, 0x87, 0x38, 0x21, + 0x00, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, + 0x00, 0x7C, 0x07, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xE0, + 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x7C, 0x00, 0x1E, + 0x00, 0x3E, 0x7C, 0xF3, 0xE7, 0xC1, 0x87, 0x0C, 0x39, 0xE3, 0x00, 0x7F, + 0xDF, 0xFF, 0xFB, 0xFE, 0x7D, 0xF7, 0xBE, 0xF8, 0x00, 0x0E, 0x00, 0x18, + 0x00, 0x70, 0x00, 0xC0, 0x03, 0x80, 0x06, 0x00, 0x1C, 0x00, 0x30, 0x00, + 0xE0, 0x01, 0x80, 0x07, 0x00, 0x0C, 0x00, 0x38, 0x00, 0x60, 0x01, 0xC0, + 0x03, 0x00, 0x0E, 0x00, 0x18, 0x00, 0x70, 0x00, 0xC0, 0x03, 0x80, 0x06, + 0x00, 0x1C, 0x00, 0x30, 0x00, 0xE0, 0x00, 0x00, 0xFC, 0x00, 0x7F, 0xC0, + 0x7F, 0xF8, 0x3F, 0xFE, 0x0F, 0x8F, 0xC7, 0xC1, 0xF1, 0xE0, 0x7C, 0xF8, + 0x1F, 0x3E, 0x07, 0xDF, 0x01, 0xF7, 0xC0, 0x7D, 0xF0, 0x3F, 0x7C, 0x0F, + 0xBF, 0x03, 0xEF, 0x80, 0xFB, 0xE0, 0x3E, 0xF8, 0x1F, 0x3E, 0x07, 0xCF, + 0x81, 0xE3, 0xE0, 0xF8, 0xFC, 0x7C, 0x1F, 0xFF, 0x07, 0xFF, 0x80, 0xFF, + 0xC0, 0x0F, 0x80, 0x00, 0x00, 0x70, 0x03, 0x80, 0x3C, 0x03, 0xE0, 0xFF, + 0x3F, 0xF3, 0xFF, 0x9F, 0xFC, 0x03, 0xE0, 0x1F, 0x01, 0xF0, 0x0F, 0x80, + 0x7C, 0x03, 0xE0, 0x1E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x3E, + 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x3E, 0x00, 0x00, 0x1F, 0x80, + 0x07, 0xFF, 0x00, 0x7F, 0xFC, 0x07, 0xFF, 0xE0, 0x7E, 0x1F, 0x83, 0xE0, + 0x7C, 0x1F, 0x03, 0xE1, 0xF0, 0x1F, 0x0F, 0x80, 0xF8, 0x00, 0x0F, 0x80, + 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xE0, 0x00, 0xFC, + 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x80, 0x03, 0xF8, 0x00, 0x3F, + 0x00, 0x03, 0xF0, 0x00, 0x1F, 0xFF, 0xE1, 0xFF, 0xFF, 0x0F, 0xFF, 0xF0, + 0x7F, 0xFF, 0x80, 0x00, 0x7F, 0x00, 0x1F, 0xFC, 0x03, 0xFF, 0xE0, 0x7F, + 0xFF, 0x0F, 0x83, 0xF0, 0xF0, 0x1F, 0x1F, 0x01, 0xF1, 0xE0, 0x1F, 0x00, + 0x03, 0xE0, 0x00, 0xFC, 0x00, 0xFF, 0x80, 0x0F, 0xF0, 0x00, 0xFF, 0x80, + 0x0F, 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xCF, 0x80, 0x7C, + 0xF8, 0x07, 0xCF, 0x80, 0xF8, 0xFC, 0x3F, 0x8F, 0xFF, 0xF0, 0x7F, 0xFE, + 0x03, 0xFF, 0xC0, 0x0F, 0xE0, 0x00, 0x00, 0x07, 0xE0, 0x01, 0xFC, 0x00, + 0x7F, 0x00, 0x1F, 0xE0, 0x03, 0xFC, 0x00, 0xEF, 0x80, 0x3D, 0xF0, 0x0F, + 0x7C, 0x03, 0xCF, 0x80, 0xF1, 0xF0, 0x1C, 0x3E, 0x07, 0x07, 0xC1, 0xE1, + 0xF0, 0x78, 0x3E, 0x1E, 0x07, 0xC3, 0xFF, 0xFE, 0x7F, 0xFF, 0xDF, 0xFF, + 0xFB, 0xFF, 0xFF, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x78, 0x00, 0x1F, + 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x01, 0xFF, 0xF0, 0x3F, 0xFF, 0x03, + 0xFF, 0xF0, 0x3F, 0xFF, 0x07, 0x80, 0x00, 0x78, 0x00, 0x0F, 0x00, 0x00, + 0xF7, 0xE0, 0x0F, 0xFF, 0x01, 0xFF, 0xF8, 0x1F, 0xFF, 0x83, 0xF0, 0xFC, + 0x3E, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, + 0x8F, 0x80, 0xF8, 0xF8, 0x1F, 0x8F, 0xC3, 0xF0, 0xFF, 0xFE, 0x07, 0xFF, + 0xC0, 0x3F, 0xF8, 0x00, 0xFE, 0x00, 0x00, 0x7E, 0x00, 0x3F, 0xF0, 0x0F, + 0xFF, 0x03, 0xFF, 0xE0, 0xF8, 0x7E, 0x3E, 0x07, 0xC7, 0x80, 0x01, 0xF0, + 0x00, 0x3C, 0xFC, 0x07, 0xFF, 0xC1, 0xFF, 0xFC, 0x3F, 0xFF, 0xC7, 0xE1, + 0xF8, 0xF8, 0x1F, 0x3E, 0x03, 0xE7, 0x80, 0x7C, 0xF0, 0x0F, 0x9E, 0x01, + 0xE3, 0xC0, 0x7C, 0x78, 0x1F, 0x0F, 0x87, 0xE0, 0xFF, 0xF8, 0x1F, 0xFE, + 0x01, 0xFF, 0x80, 0x0F, 0xC0, 0x00, 0x7F, 0xFF, 0xEF, 0xFF, 0xF9, 0xFF, + 0xFF, 0x7F, 0xFF, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, + 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x07, 0x80, 0x01, 0xF0, 0x00, 0x7C, + 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x07, 0xC0, + 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x3E, 0x00, + 0x07, 0xC0, 0x00, 0x00, 0x7F, 0x00, 0x1F, 0xFC, 0x07, 0xFF, 0xE0, 0xFF, + 0xFF, 0x0F, 0x81, 0xF1, 0xF0, 0x0F, 0x1E, 0x00, 0xF1, 0xE0, 0x1E, 0x1F, + 0x07, 0xE0, 0xFF, 0xFC, 0x07, 0xFF, 0x00, 0xFF, 0xF8, 0x1F, 0xFF, 0x83, + 0xF0, 0xFC, 0x7C, 0x07, 0xC7, 0xC0, 0x7C, 0xF8, 0x07, 0xCF, 0x80, 0x7C, + 0xF8, 0x0F, 0x8F, 0x80, 0xF8, 0xFC, 0x3F, 0x0F, 0xFF, 0xF0, 0x7F, 0xFE, + 0x03, 0xFF, 0x80, 0x0F, 0xE0, 0x00, 0x00, 0x7E, 0x00, 0x3F, 0xF0, 0x0F, + 0xFF, 0x03, 0xFF, 0xE0, 0xFC, 0x3E, 0x3F, 0x03, 0xC7, 0xC0, 0x79, 0xF0, + 0x0F, 0x3E, 0x01, 0xE7, 0xC0, 0x3C, 0xF8, 0x0F, 0x9F, 0x03, 0xE3, 0xF0, + 0xFC, 0x7F, 0xFF, 0x87, 0xFF, 0xF0, 0x7F, 0xFE, 0x07, 0xE7, 0x80, 0x01, + 0xF0, 0x00, 0x3C, 0x7C, 0x0F, 0x8F, 0xC3, 0xE1, 0xFF, 0xF8, 0x1F, 0xFE, + 0x01, 0xFF, 0x80, 0x0F, 0xC0, 0x00, 0x0F, 0x87, 0xC3, 0xC3, 0xE1, 0xF0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE1, 0xF0, 0xF0, + 0xF8, 0x7C, 0x00, 0x07, 0xC1, 0xF0, 0x78, 0x3E, 0x0F, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x83, 0xE0, 0xF0, 0x7C, + 0x1F, 0x00, 0xC0, 0x70, 0x18, 0x0E, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x20, + 0x00, 0x3C, 0x00, 0x3F, 0x80, 0x3F, 0xE0, 0x3F, 0xFC, 0x3F, 0xFC, 0x1F, + 0xFC, 0x07, 0xFC, 0x00, 0xFC, 0x00, 0x1F, 0xF0, 0x03, 0xFF, 0x80, 0x1F, + 0xFE, 0x00, 0xFF, 0xF0, 0x03, 0xFE, 0x00, 0x1F, 0xC0, 0x00, 0x78, 0x00, + 0x03, 0x00, 0x1F, 0xFF, 0xF3, 0xFF, 0xFE, 0x3F, 0xFF, 0xE3, 0xFF, 0xFE, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, + 0xC7, 0xFF, 0xFC, 0xFF, 0xFF, 0x8F, 0xFF, 0xF8, 0x18, 0x00, 0x03, 0xC0, + 0x00, 0x7F, 0x00, 0x0F, 0xF8, 0x01, 0xFF, 0xE0, 0x0F, 0xFF, 0x00, 0x3F, + 0xF8, 0x01, 0xFF, 0x00, 0x07, 0xE0, 0x07, 0xFC, 0x07, 0xFF, 0x07, 0xFF, + 0x87, 0xFF, 0x80, 0xFF, 0x80, 0x3F, 0x80, 0x07, 0x80, 0x00, 0x80, 0x00, + 0x00, 0x03, 0xF8, 0x03, 0xFF, 0xC1, 0xFF, 0xF8, 0xFF, 0xFE, 0x7E, 0x1F, + 0xDF, 0x03, 0xFF, 0x80, 0x7F, 0xE0, 0x1F, 0xF8, 0x07, 0xC0, 0x03, 0xE0, + 0x01, 0xF8, 0x00, 0xFC, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x3F, 0x80, 0x1F, + 0x80, 0x07, 0x80, 0x03, 0xE0, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x07, 0xC0, 0x01, 0xF0, 0x00, 0xFC, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x00, + 0x00, 0x00, 0x7F, 0x80, 0x00, 0x01, 0xFF, 0xF8, 0x00, 0x03, 0xFF, 0xFE, + 0x00, 0x07, 0xF0, 0x1F, 0xC0, 0x0F, 0xC0, 0x03, 0xE0, 0x0F, 0x80, 0x00, + 0xF8, 0x0F, 0x00, 0x00, 0x3C, 0x0F, 0x01, 0xF1, 0xCF, 0x0F, 0x03, 0xFD, + 0xC7, 0x8F, 0x03, 0xFF, 0xE1, 0xC7, 0x03, 0xE3, 0xE0, 0xE7, 0x03, 0xC0, + 0xF0, 0x73, 0x83, 0xC0, 0x78, 0x3B, 0x81, 0xE0, 0x38, 0x1D, 0xC1, 0xE0, + 0x1C, 0x1C, 0xC0, 0xF0, 0x1C, 0x0E, 0xE0, 0x70, 0x0E, 0x0F, 0x70, 0x78, + 0x0E, 0x07, 0x38, 0x3C, 0x0F, 0x07, 0x1C, 0x1E, 0x0F, 0x87, 0x8E, 0x0F, + 0x8F, 0xCF, 0x87, 0x07, 0xFF, 0xFF, 0x83, 0xC1, 0xFE, 0x7F, 0x00, 0xE0, + 0x3C, 0x1F, 0x00, 0x78, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x0F, + 0xC0, 0x01, 0x00, 0x03, 0xF8, 0x07, 0x80, 0x00, 0xFF, 0xFF, 0xC0, 0x00, + 0x1F, 0xFF, 0xE0, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, + 0x0F, 0xE0, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0xC0, 0x00, 0xFF, 0x80, 0x03, + 0xFF, 0x00, 0x07, 0xFE, 0x00, 0x1F, 0x7C, 0x00, 0x7E, 0xF8, 0x00, 0xF9, + 0xF0, 0x03, 0xF3, 0xE0, 0x07, 0xC3, 0xE0, 0x1F, 0x87, 0xC0, 0x3E, 0x0F, + 0x80, 0xF8, 0x1F, 0x01, 0xF0, 0x3E, 0x07, 0xFF, 0xFC, 0x1F, 0xFF, 0xF8, + 0x3F, 0xFF, 0xF0, 0xFF, 0xFF, 0xF1, 0xF0, 0x03, 0xE7, 0xC0, 0x07, 0xCF, + 0x80, 0x0F, 0xBE, 0x00, 0x1F, 0x7C, 0x00, 0x3F, 0xF0, 0x00, 0x7C, 0x07, + 0xFF, 0xF0, 0x07, 0xFF, 0xFC, 0x07, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0x0F, + 0xC0, 0x3F, 0x0F, 0x80, 0x1F, 0x0F, 0x80, 0x1F, 0x0F, 0x80, 0x1F, 0x1F, + 0x80, 0x1E, 0x1F, 0x80, 0x3E, 0x1F, 0x00, 0x7C, 0x1F, 0xFF, 0xF8, 0x1F, + 0xFF, 0xF0, 0x3F, 0xFF, 0xF8, 0x3F, 0xFF, 0xF8, 0x3E, 0x00, 0xFC, 0x3E, + 0x00, 0x7C, 0x3E, 0x00, 0x7C, 0x7E, 0x00, 0x7C, 0x7C, 0x00, 0x7C, 0x7C, + 0x00, 0xF8, 0x7C, 0x01, 0xF8, 0x7F, 0xFF, 0xF0, 0xFF, 0xFF, 0xE0, 0xFF, + 0xFF, 0xC0, 0xFF, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0xF8, 0x01, + 0xFF, 0xFC, 0x03, 0xFF, 0xFE, 0x07, 0xE0, 0x7F, 0x0F, 0xC0, 0x3F, 0x1F, + 0x80, 0x1F, 0x3F, 0x00, 0x1F, 0x3E, 0x00, 0x1F, 0x7E, 0x00, 0x00, 0x7C, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, + 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x7C, 0xF8, + 0x00, 0x7C, 0xFC, 0x00, 0xF8, 0xFC, 0x01, 0xF8, 0x7F, 0x07, 0xF0, 0x7F, + 0xFF, 0xE0, 0x3F, 0xFF, 0xC0, 0x0F, 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x07, + 0xFF, 0xE0, 0x07, 0xFF, 0xF8, 0x07, 0xFF, 0xFC, 0x0F, 0xFF, 0xFE, 0x0F, + 0x80, 0x7E, 0x0F, 0x80, 0x3F, 0x0F, 0x80, 0x1F, 0x1F, 0x80, 0x1F, 0x1F, + 0x80, 0x1F, 0x1F, 0x00, 0x1F, 0x1F, 0x00, 0x1F, 0x1F, 0x00, 0x1F, 0x3F, + 0x00, 0x1F, 0x3E, 0x00, 0x3E, 0x3E, 0x00, 0x3E, 0x3E, 0x00, 0x3E, 0x3E, + 0x00, 0x3E, 0x7E, 0x00, 0x7C, 0x7C, 0x00, 0x7C, 0x7C, 0x00, 0xF8, 0x7C, + 0x01, 0xF8, 0x7C, 0x07, 0xF0, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xC0, 0xFF, + 0xFF, 0x00, 0xFF, 0xF8, 0x00, 0x07, 0xFF, 0xFF, 0x07, 0xFF, 0xFE, 0x07, + 0xFF, 0xFE, 0x0F, 0xFF, 0xFE, 0x0F, 0x80, 0x00, 0x0F, 0x80, 0x00, 0x0F, + 0x80, 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x1F, 0xFF, 0xF0, 0x1F, 0xFF, 0xF0, 0x3F, 0xFF, 0xF0, 0x3F, + 0xFF, 0xF0, 0x3E, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x7E, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xFF, + 0xFF, 0xF0, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xE0, 0x07, + 0xFF, 0xFE, 0x0F, 0xFF, 0xFC, 0x3F, 0xFF, 0xF0, 0x7F, 0xFF, 0xE0, 0xF8, + 0x00, 0x01, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0x1F, 0x00, + 0x00, 0x3E, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0xFF, 0xFE, + 0x07, 0xFF, 0xFC, 0x0F, 0xFF, 0xF0, 0x1F, 0x00, 0x00, 0x3E, 0x00, 0x00, + 0xFC, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, + 0x80, 0x00, 0x3F, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, + 0x00, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0xF8, 0x01, 0xFF, 0xFC, 0x03, + 0xFF, 0xFE, 0x07, 0xE0, 0x7E, 0x0F, 0x80, 0x3F, 0x1F, 0x00, 0x1F, 0x3E, + 0x00, 0x1F, 0x3E, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7C, + 0x00, 0x00, 0xF8, 0x03, 0xFF, 0xF8, 0x07, 0xFF, 0xF8, 0x07, 0xFE, 0xF8, + 0x07, 0xFE, 0xF8, 0x00, 0x3E, 0xF8, 0x00, 0x3E, 0xFC, 0x00, 0x7E, 0xFC, + 0x00, 0x7C, 0x7E, 0x00, 0xFC, 0x7F, 0x83, 0xFC, 0x3F, 0xFF, 0xFC, 0x1F, + 0xFF, 0xBC, 0x0F, 0xFF, 0x38, 0x03, 0xFC, 0x38, 0x03, 0xE0, 0x07, 0xC0, + 0xF8, 0x01, 0xF0, 0x7E, 0x00, 0x7C, 0x1F, 0x00, 0x3F, 0x07, 0xC0, 0x0F, + 0x81, 0xF0, 0x03, 0xE0, 0xFC, 0x00, 0xF8, 0x3E, 0x00, 0x3E, 0x0F, 0x80, + 0x1F, 0x83, 0xE0, 0x07, 0xC0, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xFC, 0x1F, + 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xC1, 0xF0, 0x03, 0xE0, 0x7C, 0x00, 0xF8, + 0x3F, 0x00, 0x3E, 0x0F, 0x80, 0x0F, 0x83, 0xE0, 0x07, 0xE0, 0xF8, 0x01, + 0xF0, 0x3E, 0x00, 0x7C, 0x1F, 0x80, 0x1F, 0x07, 0xC0, 0x0F, 0xC1, 0xF0, + 0x03, 0xF0, 0x7C, 0x00, 0xF8, 0x3F, 0x00, 0x3E, 0x00, 0x07, 0xC3, 0xF0, + 0xFC, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x7E, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, + 0x3F, 0x0F, 0xC3, 0xE0, 0xF8, 0x3E, 0x0F, 0x87, 0xE1, 0xF0, 0x7C, 0x1F, + 0x07, 0xC3, 0xF0, 0xFC, 0x3E, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, + 0x01, 0xF0, 0x00, 0x3F, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xE0, + 0x00, 0x3E, 0x00, 0x07, 0xE0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, + 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x7C, 0x0F, + 0x8F, 0x81, 0xF8, 0xF8, 0x1F, 0x0F, 0x81, 0xF0, 0xF8, 0x1F, 0x0F, 0xC3, + 0xF0, 0xFF, 0xFE, 0x07, 0xFF, 0xC0, 0x3F, 0xF8, 0x01, 0xFC, 0x00, 0x07, + 0xC0, 0x0F, 0xC1, 0xF0, 0x07, 0xE0, 0x7C, 0x03, 0xF0, 0x3F, 0x03, 0xF8, + 0x0F, 0x81, 0xF8, 0x03, 0xE0, 0xFC, 0x00, 0xF8, 0x7E, 0x00, 0x7E, 0x3F, + 0x00, 0x1F, 0x1F, 0x80, 0x07, 0xCF, 0xC0, 0x01, 0xF7, 0xE0, 0x00, 0x7F, + 0xF0, 0x00, 0x3F, 0xFC, 0x00, 0x0F, 0xFF, 0x80, 0x03, 0xFF, 0xF0, 0x00, + 0xFE, 0xFC, 0x00, 0x3F, 0x1F, 0x80, 0x1F, 0x87, 0xE0, 0x07, 0xC0, 0xFC, + 0x01, 0xF0, 0x3F, 0x00, 0x7C, 0x07, 0xE0, 0x1F, 0x01, 0xFC, 0x0F, 0xC0, + 0x3F, 0x03, 0xE0, 0x0F, 0xE0, 0xF8, 0x01, 0xF8, 0x3E, 0x00, 0x3F, 0x00, + 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x0F, 0xC0, 0x03, + 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x1F, 0x80, 0x07, 0xC0, 0x01, 0xF0, + 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x0F, 0xC0, 0x03, 0xE0, 0x00, 0xF8, 0x00, + 0x3E, 0x00, 0x0F, 0x80, 0x07, 0xE0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x1F, + 0x00, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xE0, 0x03, + 0xF8, 0x01, 0xFC, 0x07, 0xF0, 0x07, 0xF8, 0x1F, 0xE0, 0x0F, 0xF0, 0x3F, + 0xC0, 0x3F, 0xE0, 0x7F, 0x80, 0x7F, 0xC0, 0xFF, 0x01, 0xFF, 0x01, 0xFE, + 0x03, 0xFE, 0x07, 0xDC, 0x07, 0x7C, 0x0F, 0xB8, 0x1E, 0xF8, 0x1F, 0x70, + 0x3D, 0xF0, 0x3E, 0xF0, 0xF7, 0xC0, 0xF9, 0xE1, 0xEF, 0x81, 0xF3, 0xC7, + 0x9F, 0x03, 0xE7, 0x8F, 0x3E, 0x07, 0xCF, 0x3C, 0x7C, 0x0F, 0x9E, 0x79, + 0xF0, 0x3E, 0x3C, 0xE3, 0xE0, 0x7C, 0x7B, 0xC7, 0xC0, 0xF8, 0xF7, 0x8F, + 0x81, 0xF1, 0xFE, 0x1E, 0x07, 0xE3, 0xFC, 0x7C, 0x0F, 0x87, 0xF0, 0xF8, + 0x1F, 0x0F, 0xE1, 0xF0, 0x3E, 0x1F, 0x83, 0xE0, 0x7C, 0x3F, 0x0F, 0x81, + 0xF0, 0x7E, 0x1F, 0x00, 0x03, 0xE0, 0x07, 0xC0, 0x7E, 0x00, 0xF8, 0x1F, + 0xC0, 0x1F, 0x03, 0xF8, 0x03, 0xE0, 0x7F, 0x80, 0x7C, 0x0F, 0xF0, 0x1F, + 0x01, 0xFF, 0x03, 0xE0, 0x7F, 0xE0, 0x7C, 0x0F, 0xBC, 0x0F, 0x81, 0xF7, + 0xC1, 0xF0, 0x3E, 0xF8, 0x7C, 0x0F, 0x8F, 0x0F, 0x81, 0xF1, 0xF1, 0xF0, + 0x3E, 0x3E, 0x3E, 0x07, 0xC3, 0xC7, 0xC0, 0xF8, 0x7D, 0xF0, 0x3E, 0x0F, + 0xBE, 0x07, 0xC0, 0xF7, 0xC0, 0xF8, 0x1F, 0xF8, 0x1F, 0x01, 0xFE, 0x03, + 0xC0, 0x3F, 0xC0, 0xF8, 0x07, 0xF8, 0x1F, 0x00, 0x7F, 0x03, 0xE0, 0x0F, + 0xE0, 0x7C, 0x01, 0xF8, 0x1F, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0xE0, 0x00, + 0x3F, 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0x7F, 0xFF, 0xC0, 0x7E, 0x07, 0xF0, + 0x7E, 0x01, 0xF8, 0x7C, 0x00, 0x7E, 0x3E, 0x00, 0x1F, 0x3E, 0x00, 0x0F, + 0x9E, 0x00, 0x07, 0xDF, 0x00, 0x03, 0xEF, 0x80, 0x01, 0xFF, 0x80, 0x00, + 0xFF, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x7D, 0xF0, 0x00, 0x3E, 0xF8, 0x00, + 0x1F, 0x7C, 0x00, 0x1F, 0x3E, 0x00, 0x1F, 0x9F, 0x80, 0x0F, 0x87, 0xE0, + 0x0F, 0x83, 0xF8, 0x1F, 0x80, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0x80, 0x0F, + 0xFF, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x07, 0xFF, 0xE0, 0x0F, 0xFF, 0xF0, + 0x3F, 0xFF, 0xF0, 0x7F, 0xFF, 0xF0, 0xF8, 0x07, 0xE1, 0xF0, 0x07, 0xC3, + 0xE0, 0x0F, 0x8F, 0xC0, 0x1F, 0x1F, 0x00, 0x3E, 0x3E, 0x00, 0xF8, 0x7C, + 0x01, 0xF0, 0xF8, 0x07, 0xC3, 0xFF, 0xFF, 0x87, 0xFF, 0xFE, 0x0F, 0xFF, + 0xF8, 0x1F, 0xFF, 0x80, 0x3E, 0x00, 0x00, 0xFC, 0x00, 0x01, 0xF0, 0x00, + 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x3F, 0x00, 0x00, + 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, 0x1F, 0xC0, + 0x00, 0x3F, 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0x7F, 0xFF, 0xC0, 0x7F, 0x07, + 0xF0, 0x7E, 0x01, 0xF8, 0x7E, 0x00, 0x7E, 0x3E, 0x00, 0x1F, 0x3E, 0x00, + 0x0F, 0x9E, 0x00, 0x07, 0xDF, 0x00, 0x03, 0xEF, 0x80, 0x01, 0xF7, 0x80, + 0x00, 0xFF, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x7D, 0xF0, 0x00, 0x3E, 0xF8, + 0x02, 0x1F, 0x7C, 0x03, 0x9F, 0x3E, 0x03, 0xFF, 0x9F, 0x81, 0xFF, 0x87, + 0xE0, 0x7F, 0x83, 0xF8, 0x3F, 0xC0, 0xFF, 0xFF, 0xE0, 0x3F, 0xFF, 0xF0, + 0x0F, 0xFF, 0xFC, 0x01, 0xFE, 0x1C, 0x00, 0x00, 0x0C, 0x00, 0x07, 0xFF, + 0xF8, 0x07, 0xFF, 0xFE, 0x07, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0x0F, 0x80, + 0x3F, 0x0F, 0x80, 0x1F, 0x0F, 0x80, 0x1F, 0x0F, 0x80, 0x1F, 0x1F, 0x80, + 0x1E, 0x1F, 0x00, 0x3E, 0x1F, 0x00, 0x7C, 0x1F, 0xFF, 0xF8, 0x1F, 0xFF, + 0xE0, 0x3F, 0xFF, 0xF0, 0x3F, 0xFF, 0xF8, 0x3E, 0x01, 0xF8, 0x3E, 0x00, + 0xF8, 0x3E, 0x00, 0xF8, 0x7E, 0x00, 0xF8, 0x7C, 0x00, 0xF8, 0x7C, 0x01, + 0xF0, 0x7C, 0x01, 0xF0, 0x7C, 0x01, 0xF0, 0xFC, 0x01, 0xF0, 0xF8, 0x01, + 0xF0, 0xF8, 0x01, 0xF0, 0x00, 0x3F, 0xC0, 0x07, 0xFF, 0xC0, 0x3F, 0xFF, + 0x81, 0xFF, 0xFF, 0x0F, 0xC0, 0xFC, 0x3E, 0x01, 0xF1, 0xF0, 0x07, 0xC7, + 0xC0, 0x1F, 0x1F, 0x00, 0x00, 0x7E, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, + 0x80, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0xC0, 0x1F, 0xFF, 0x80, 0x03, 0xFE, + 0x00, 0x01, 0xF8, 0x00, 0x03, 0xEF, 0x80, 0x0F, 0xBE, 0x00, 0x3C, 0xFC, + 0x01, 0xF3, 0xF8, 0x1F, 0x87, 0xFF, 0xFE, 0x0F, 0xFF, 0xF0, 0x1F, 0xFF, + 0x00, 0x1F, 0xF0, 0x00, 0x7F, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xF0, 0x0F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xC0, 0x00, 0x3E, + 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xC0, 0x00, + 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xC0, + 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xFC, 0x00, 0x07, + 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xFC, 0x00, + 0x00, 0x0F, 0x80, 0x1F, 0x1F, 0x80, 0x1F, 0x1F, 0x00, 0x1F, 0x1F, 0x00, + 0x3F, 0x1F, 0x00, 0x3E, 0x1F, 0x00, 0x3E, 0x3E, 0x00, 0x3E, 0x3E, 0x00, + 0x7E, 0x3E, 0x00, 0x7C, 0x3E, 0x00, 0x7C, 0x3E, 0x00, 0x7C, 0x7C, 0x00, + 0x7C, 0x7C, 0x00, 0xFC, 0x7C, 0x00, 0xF8, 0x7C, 0x00, 0xF8, 0x7C, 0x00, + 0xF8, 0xF8, 0x00, 0xF8, 0xF8, 0x01, 0xF8, 0xF8, 0x01, 0xF0, 0xF8, 0x01, + 0xF0, 0xF8, 0x03, 0xE0, 0xFE, 0x0F, 0xE0, 0x7F, 0xFF, 0xC0, 0x7F, 0xFF, + 0x80, 0x1F, 0xFE, 0x00, 0x07, 0xF8, 0x00, 0xFC, 0x00, 0x7F, 0xF0, 0x03, + 0xE7, 0xC0, 0x0F, 0x9F, 0x00, 0x7C, 0x7C, 0x01, 0xF1, 0xF0, 0x0F, 0x87, + 0xC0, 0x3E, 0x1F, 0x01, 0xF0, 0x7C, 0x07, 0x81, 0xF0, 0x3E, 0x03, 0xC0, + 0xF0, 0x0F, 0x07, 0xC0, 0x3E, 0x1E, 0x00, 0xF8, 0xF8, 0x03, 0xE3, 0xC0, + 0x0F, 0x9F, 0x00, 0x3E, 0x78, 0x00, 0xFB, 0xE0, 0x01, 0xEF, 0x00, 0x07, + 0xFC, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xE0, + 0x00, 0x1F, 0x80, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x07, 0xE0, 0x1F, 0xF8, + 0x07, 0xE0, 0x3F, 0xF8, 0x0F, 0xE0, 0x3E, 0xF8, 0x0F, 0xE0, 0x7E, 0xF8, + 0x1F, 0xE0, 0x7C, 0xF8, 0x1F, 0xE0, 0x7C, 0xF8, 0x3F, 0xE0, 0xF8, 0xF8, + 0x3D, 0xE0, 0xF8, 0x78, 0x3D, 0xE1, 0xF0, 0x78, 0x79, 0xE1, 0xF0, 0x78, + 0x79, 0xE1, 0xE0, 0x78, 0xF9, 0xE3, 0xE0, 0x78, 0xF1, 0xE3, 0xC0, 0x79, + 0xF1, 0xE7, 0xC0, 0x79, 0xE1, 0xE7, 0x80, 0x79, 0xE1, 0xE7, 0x80, 0x7B, + 0xC1, 0xEF, 0x80, 0x7B, 0xC1, 0xEF, 0x00, 0x7F, 0x81, 0xFF, 0x00, 0x7F, + 0x81, 0xFE, 0x00, 0x7F, 0x01, 0xFE, 0x00, 0x7F, 0x01, 0xFC, 0x00, 0x7F, + 0x01, 0xFC, 0x00, 0x7E, 0x01, 0xF8, 0x00, 0x3E, 0x01, 0xF8, 0x00, 0x3C, + 0x01, 0xF0, 0x00, 0x03, 0xF0, 0x07, 0xE0, 0x7E, 0x01, 0xF8, 0x07, 0xE0, + 0x7E, 0x00, 0xFC, 0x1F, 0x80, 0x1F, 0x83, 0xE0, 0x01, 0xF8, 0xF8, 0x00, + 0x3F, 0x3F, 0x00, 0x03, 0xEF, 0xC0, 0x00, 0x7F, 0xF0, 0x00, 0x0F, 0xFC, + 0x00, 0x00, 0xFF, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x03, 0xF8, 0x00, 0x00, + 0x7F, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x07, 0xFE, 0x00, 0x00, 0xFF, 0xC0, + 0x00, 0x3E, 0xF8, 0x00, 0x0F, 0xDF, 0x80, 0x03, 0xF3, 0xF0, 0x00, 0xFC, + 0x3F, 0x00, 0x3F, 0x07, 0xE0, 0x07, 0xE0, 0xFC, 0x01, 0xF8, 0x0F, 0xC0, + 0x7E, 0x01, 0xF8, 0x1F, 0x80, 0x3F, 0x80, 0x7C, 0x00, 0xFD, 0xF8, 0x07, + 0xE7, 0xE0, 0x1F, 0x1F, 0x80, 0xFC, 0x3E, 0x07, 0xE0, 0xFC, 0x1F, 0x03, + 0xF0, 0xFC, 0x07, 0xC7, 0xE0, 0x1F, 0x1F, 0x00, 0x7E, 0xFC, 0x00, 0xFB, + 0xE0, 0x03, 0xFF, 0x00, 0x0F, 0xF8, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x00, + 0x01, 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x1F, 0x00, 0x00, 0x7C, 0x00, 0x01, + 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xE0, + 0x00, 0x0F, 0x80, 0x00, 0x3E, 0x00, 0x00, 0x07, 0xFF, 0xFF, 0x83, 0xFF, + 0xFF, 0x81, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xE0, 0x00, 0x07, 0xE0, 0x00, + 0x07, 0xE0, 0x00, 0x07, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF0, 0x00, + 0x07, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, + 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, + 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF8, 0x00, + 0x03, 0xF8, 0x00, 0x01, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, + 0xF0, 0x7F, 0xFF, 0xF0, 0x00, 0x01, 0xFE, 0x03, 0xFC, 0x07, 0xF8, 0x1F, + 0xF0, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x07, 0x80, 0x0F, 0x00, + 0x1E, 0x00, 0x3C, 0x00, 0xF8, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, + 0x00, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x07, 0x80, 0x0F, 0x00, + 0x1E, 0x00, 0x3C, 0x00, 0xF8, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, + 0xF0, 0x3F, 0xC0, 0x7F, 0x80, 0xFF, 0x00, 0xE7, 0x39, 0xCE, 0x31, 0x8C, + 0x63, 0x1C, 0xE7, 0x39, 0xCE, 0x31, 0x8C, 0x63, 0x9C, 0xE7, 0x38, 0x01, + 0xFE, 0x03, 0xFC, 0x07, 0xF8, 0x1F, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, + 0x00, 0x3E, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x0F, 0x00, + 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, + 0x00, 0x3E, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x0F, 0x00, + 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x1F, 0xF0, 0x3F, 0xC0, 0x7F, 0x80, 0xFF, + 0x00, 0x00, 0x7C, 0x00, 0xFC, 0x01, 0xFC, 0x01, 0xFC, 0x03, 0xFC, 0x03, + 0x9E, 0x07, 0x9E, 0x0F, 0x1E, 0x0F, 0x1E, 0x1E, 0x1E, 0x1C, 0x0F, 0x3C, + 0x0F, 0x78, 0x0F, 0x78, 0x0F, 0xF0, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFE, 0xF3, 0x8C, 0x71, 0x80, 0x01, 0xFE, 0x01, 0xFF, 0xE0, + 0xFF, 0xF8, 0x7F, 0xFF, 0x1F, 0x0F, 0xC7, 0x81, 0xF0, 0x00, 0x7C, 0x00, + 0xFE, 0x07, 0xFF, 0x87, 0xFF, 0xE3, 0xFE, 0xF9, 0xF0, 0x7C, 0xF8, 0x1F, + 0x3E, 0x0F, 0xCF, 0x87, 0xF3, 0xFF, 0xF8, 0xFF, 0xFE, 0x1F, 0xEF, 0x81, + 0xE3, 0xF0, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, + 0x07, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF9, 0xF8, 0x0F, 0xFF, + 0xC1, 0xFF, 0xFE, 0x1F, 0xFF, 0xE1, 0xFC, 0x3F, 0x1F, 0x83, 0xF1, 0xF0, + 0x1F, 0x3E, 0x01, 0xF3, 0xE0, 0x1F, 0x3C, 0x01, 0xF3, 0xC0, 0x1F, 0x3C, + 0x03, 0xE7, 0xC0, 0x3E, 0x7E, 0x07, 0xC7, 0xF1, 0xFC, 0x7F, 0xFF, 0x87, + 0xFF, 0xF0, 0xFB, 0xFE, 0x0F, 0x9F, 0x80, 0x00, 0xFC, 0x01, 0xFF, 0xC0, + 0xFF, 0xF8, 0x7F, 0xFF, 0x3F, 0x0F, 0xCF, 0x81, 0xF7, 0xC0, 0x7D, 0xF0, + 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF8, 0x0F, + 0xBE, 0x07, 0xCF, 0xC3, 0xF1, 0xFF, 0xF8, 0x7F, 0xFC, 0x0F, 0xFE, 0x00, + 0xFE, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0x80, 0x00, + 0x3E, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x1F, 0x00, 0x7E, 0x7C, + 0x07, 0xFD, 0xF0, 0x3F, 0xFF, 0xC1, 0xFF, 0xFE, 0x0F, 0xE3, 0xF8, 0x3E, + 0x07, 0xE1, 0xF0, 0x1F, 0x87, 0xC0, 0x3C, 0x3E, 0x00, 0xF0, 0xF8, 0x07, + 0xC3, 0xE0, 0x1F, 0x0F, 0x80, 0x7C, 0x3E, 0x03, 0xE0, 0xF8, 0x1F, 0x83, + 0xF0, 0xFE, 0x07, 0xFF, 0xF8, 0x1F, 0xFF, 0xE0, 0x3F, 0xFF, 0x00, 0x7E, + 0x7C, 0x00, 0x00, 0xFE, 0x00, 0x7F, 0xE0, 0x3F, 0xFE, 0x0F, 0xFF, 0xE3, + 0xF0, 0x7E, 0x7C, 0x07, 0xDF, 0x00, 0xFB, 0xE0, 0x1F, 0x7F, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x1F, 0x3F, + 0x07, 0xE3, 0xFF, 0xF8, 0x7F, 0xFE, 0x03, 0xFF, 0x00, 0x3F, 0x80, 0x00, + 0x00, 0xF8, 0x1F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7C, 0x07, 0xC0, 0x3E, 0x0F, + 0xFE, 0x7F, 0xF3, 0xFF, 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, + 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x78, 0x07, 0xC0, 0x3E, 0x01, + 0xF0, 0x0F, 0x80, 0xF8, 0x07, 0xC0, 0x00, 0x00, 0x7C, 0x7C, 0x07, 0xFD, + 0xF0, 0x3F, 0xF7, 0x81, 0xFF, 0xFE, 0x0F, 0xE3, 0xF8, 0x3E, 0x07, 0xE1, + 0xF8, 0x0F, 0x87, 0xC0, 0x3C, 0x1E, 0x00, 0xF0, 0xF8, 0x03, 0xC3, 0xE0, + 0x1F, 0x0F, 0x80, 0x78, 0x3E, 0x03, 0xE0, 0xF8, 0x1F, 0x83, 0xF0, 0xFE, + 0x07, 0xFF, 0xF8, 0x1F, 0xFF, 0xC0, 0x3F, 0xEF, 0x00, 0x3E, 0x7C, 0x00, + 0x01, 0xF0, 0x00, 0x07, 0xC3, 0xE0, 0x3E, 0x0F, 0x80, 0xF8, 0x3F, 0x0F, + 0xC0, 0x7F, 0xFE, 0x00, 0xFF, 0xF0, 0x00, 0xFE, 0x00, 0x00, 0x03, 0xE0, + 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, + 0x00, 0x0F, 0x80, 0x00, 0xF8, 0xF8, 0x0F, 0xBF, 0xE0, 0xFF, 0xFF, 0x0F, + 0xFF, 0xF1, 0xFC, 0x3F, 0x1F, 0x81, 0xF1, 0xF0, 0x1F, 0x1F, 0x01, 0xF1, + 0xE0, 0x1F, 0x3E, 0x03, 0xE3, 0xE0, 0x3E, 0x3E, 0x03, 0xE3, 0xE0, 0x3E, + 0x7C, 0x03, 0xE7, 0xC0, 0x7C, 0x7C, 0x07, 0xC7, 0xC0, 0x7C, 0x7C, 0x07, + 0xCF, 0x80, 0x78, 0x07, 0xC1, 0xF0, 0x7C, 0x3E, 0x00, 0x00, 0x00, 0x00, + 0x3E, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, + 0x0F, 0x87, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC3, 0xE0, 0xF8, 0x3E, 0x00, + 0x00, 0x3E, 0x00, 0x78, 0x01, 0xF0, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7C, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xE0, 0x0F, 0x80, 0x1F, + 0x00, 0x3E, 0x00, 0x7C, 0x00, 0xF8, 0x03, 0xE0, 0x07, 0xC0, 0x0F, 0x80, + 0x1F, 0x00, 0x3C, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xE0, 0x07, 0xC0, 0x1F, + 0x00, 0x3E, 0x00, 0x7C, 0x00, 0xF8, 0x03, 0xF0, 0x1F, 0xC0, 0x3F, 0x80, + 0x7E, 0x01, 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, + 0x0F, 0x80, 0x00, 0x78, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, + 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x07, 0xC7, 0xE0, 0x3E, 0x7E, 0x01, + 0xF7, 0xE0, 0x0F, 0xFE, 0x00, 0xFF, 0xE0, 0x07, 0xFF, 0x00, 0x3F, 0xFC, + 0x01, 0xFF, 0xE0, 0x0F, 0xDF, 0x00, 0xFC, 0xFC, 0x07, 0xC3, 0xE0, 0x3E, + 0x1F, 0x01, 0xF0, 0xFC, 0x0F, 0x83, 0xE0, 0xF8, 0x1F, 0x87, 0xC0, 0xFC, + 0x00, 0x07, 0xC1, 0xF0, 0x7C, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x1F, + 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x87, + 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC3, 0xE0, 0xF8, 0x3E, 0x00, 0x0F, 0x8F, + 0x83, 0xF0, 0x3E, 0xFF, 0x3F, 0xE0, 0xF7, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, + 0xFF, 0x1F, 0xC7, 0xF8, 0x7C, 0x7C, 0x0F, 0x81, 0xF1, 0xF0, 0x3E, 0x07, + 0xCF, 0x81, 0xF0, 0x3E, 0x3E, 0x07, 0xC0, 0xF8, 0xF8, 0x1F, 0x03, 0xE3, + 0xE0, 0x7C, 0x0F, 0x8F, 0x81, 0xF0, 0x3E, 0x7C, 0x0F, 0x81, 0xF1, 0xF0, + 0x3E, 0x07, 0xC7, 0xC0, 0xF8, 0x1F, 0x1F, 0x03, 0xE0, 0x7C, 0x7C, 0x0F, + 0x81, 0xE3, 0xE0, 0x7C, 0x0F, 0x8F, 0x81, 0xF0, 0x3E, 0x00, 0x0F, 0x8F, + 0x80, 0xFB, 0xFE, 0x0F, 0xFF, 0xF1, 0xFF, 0xFF, 0x1F, 0xC3, 0xF1, 0xF8, + 0x1F, 0x1F, 0x01, 0xF1, 0xF0, 0x1F, 0x3E, 0x01, 0xF3, 0xE0, 0x3E, 0x3E, + 0x03, 0xE3, 0xE0, 0x3E, 0x3C, 0x03, 0xE7, 0xC0, 0x3E, 0x7C, 0x07, 0xC7, + 0xC0, 0x7C, 0x7C, 0x07, 0xC7, 0x80, 0x7C, 0xF8, 0x07, 0x80, 0x00, 0xFE, + 0x00, 0x7F, 0xF0, 0x3F, 0xFF, 0x0F, 0xFF, 0xE3, 0xF8, 0xFE, 0x7C, 0x0F, + 0xDF, 0x00, 0xFB, 0xE0, 0x1F, 0xF8, 0x03, 0xFF, 0x00, 0x7F, 0xE0, 0x1F, + 0xFC, 0x03, 0xEF, 0x80, 0x7D, 0xF8, 0x1F, 0x3F, 0x07, 0xE3, 0xFF, 0xF8, + 0x7F, 0xFE, 0x07, 0xFF, 0x00, 0x3F, 0x80, 0x00, 0x03, 0xE7, 0xE0, 0x0F, + 0xBF, 0xC0, 0x7D, 0xFF, 0x81, 0xFF, 0xFE, 0x07, 0xF0, 0xFC, 0x1F, 0x81, + 0xF0, 0x7C, 0x07, 0xC3, 0xE0, 0x1F, 0x0F, 0x80, 0x7C, 0x3E, 0x01, 0xF0, + 0xF0, 0x07, 0xC3, 0xC0, 0x3E, 0x1F, 0x00, 0xF8, 0x7E, 0x07, 0xC1, 0xFC, + 0x7F, 0x07, 0xFF, 0xF8, 0x1F, 0xFF, 0xC0, 0xFB, 0xFE, 0x03, 0xE7, 0xE0, + 0x0F, 0x80, 0x00, 0x3E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x1F, + 0x00, 0x00, 0x7C, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x01, + 0xF1, 0xF0, 0x7F, 0xDF, 0x0F, 0xFD, 0xF1, 0xFF, 0xFE, 0x3F, 0x8F, 0xE3, + 0xE0, 0x7E, 0x7C, 0x03, 0xE7, 0xC0, 0x3E, 0xF8, 0x03, 0xCF, 0x80, 0x3C, + 0xF8, 0x07, 0xCF, 0x80, 0x7C, 0xF8, 0x0F, 0x8F, 0x81, 0xF8, 0xFC, 0x3F, + 0x87, 0xFF, 0xF8, 0x7F, 0xFF, 0x83, 0xFF, 0xF0, 0x1F, 0x9F, 0x00, 0x01, + 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, + 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x0F, 0x8E, 0x1F, 0x7C, 0x3F, + 0xF0, 0xFF, 0xE1, 0xFC, 0x03, 0xF0, 0x07, 0xC0, 0x0F, 0x80, 0x3E, 0x00, + 0x7C, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xE0, 0x0F, 0x80, 0x1F, 0x00, 0x3E, + 0x00, 0x7C, 0x00, 0xF0, 0x03, 0xE0, 0x00, 0x01, 0xFC, 0x01, 0xFF, 0xC0, + 0xFF, 0xF8, 0x7F, 0xFF, 0x3F, 0x0F, 0xCF, 0x81, 0xF3, 0xF0, 0x00, 0xFF, + 0x80, 0x3F, 0xFC, 0x07, 0xFF, 0xC0, 0x7F, 0xF8, 0x03, 0xFE, 0x00, 0x1F, + 0xBE, 0x03, 0xEF, 0xC1, 0xFB, 0xFF, 0xFC, 0x7F, 0xFE, 0x0F, 0xFF, 0x00, + 0xFE, 0x00, 0x0F, 0x81, 0xF0, 0x7C, 0x0F, 0x81, 0xF0, 0xFF, 0xBF, 0xF7, + 0xFE, 0x3E, 0x07, 0xC0, 0xF8, 0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, + 0xF8, 0x1F, 0x03, 0xE0, 0x7F, 0x0F, 0xE1, 0xFC, 0x1F, 0x80, 0x1F, 0x01, + 0xF1, 0xF0, 0x1F, 0x3E, 0x03, 0xE3, 0xE0, 0x3E, 0x3E, 0x03, 0xE3, 0xE0, + 0x3E, 0x3E, 0x03, 0xE7, 0xC0, 0x7C, 0x7C, 0x07, 0xC7, 0xC0, 0x7C, 0x7C, + 0x07, 0xC7, 0xC0, 0x7C, 0xF8, 0x0F, 0x8F, 0x81, 0xF8, 0xF8, 0x3F, 0x8F, + 0xFF, 0xF8, 0xFF, 0xFF, 0x07, 0xFD, 0xF0, 0x3F, 0x1F, 0x00, 0xF8, 0x0F, + 0xFE, 0x03, 0xEF, 0x81, 0xF3, 0xE0, 0x7C, 0xF8, 0x3E, 0x3E, 0x0F, 0x8F, + 0x87, 0xC1, 0xE1, 0xF0, 0x78, 0xF8, 0x1E, 0x3E, 0x07, 0x9F, 0x01, 0xF7, + 0x80, 0x7F, 0xE0, 0x1F, 0xF0, 0x03, 0xFC, 0x00, 0xFE, 0x00, 0x3F, 0x80, + 0x0F, 0xC0, 0x03, 0xF0, 0x00, 0xF8, 0x1F, 0x07, 0xFF, 0x03, 0xE0, 0xFB, + 0xE0, 0xFC, 0x1F, 0x7C, 0x1F, 0x87, 0xCF, 0x87, 0xF0, 0xF9, 0xF0, 0xFE, + 0x3E, 0x3E, 0x3D, 0xC7, 0xC3, 0xC7, 0xB9, 0xF0, 0x79, 0xE7, 0x3E, 0x0F, + 0x3C, 0xE7, 0x81, 0xEF, 0x1D, 0xF0, 0x3D, 0xE3, 0xBC, 0x07, 0xBC, 0x7F, + 0x80, 0xFF, 0x0F, 0xE0, 0x1F, 0xE1, 0xFC, 0x03, 0xF8, 0x3F, 0x00, 0x7F, + 0x07, 0xE0, 0x0F, 0xC0, 0xF8, 0x01, 0xF8, 0x1F, 0x00, 0x00, 0x0F, 0xC1, + 0xF8, 0x3F, 0x07, 0xC0, 0x7C, 0x3E, 0x01, 0xF9, 0xF8, 0x03, 0xEF, 0xC0, + 0x0F, 0xBE, 0x00, 0x1F, 0xF0, 0x00, 0x7F, 0x80, 0x01, 0xFC, 0x00, 0x03, + 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0xFF, 0x00, 0x07, 0xFE, 0x00, 0x3E, 0xF8, + 0x01, 0xFB, 0xF0, 0x07, 0xC7, 0xC0, 0x3E, 0x1F, 0x81, 0xF8, 0x7E, 0x0F, + 0xC0, 0xF8, 0x00, 0x1F, 0x80, 0x7C, 0x3E, 0x03, 0xE0, 0xF8, 0x0F, 0x03, + 0xE0, 0x7C, 0x0F, 0x81, 0xE0, 0x3E, 0x0F, 0x80, 0xF8, 0x3C, 0x03, 0xE1, + 0xF0, 0x07, 0x87, 0x80, 0x1F, 0x3E, 0x00, 0x7C, 0xF0, 0x01, 0xF7, 0xC0, + 0x07, 0xDE, 0x00, 0x1F, 0xF0, 0x00, 0x7F, 0xC0, 0x01, 0xFE, 0x00, 0x03, + 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xE0, + 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x00, 0x01, + 0xF8, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x0F, 0xFF, 0xE1, 0xFF, 0xFC, 0x3F, + 0xFF, 0x87, 0xFF, 0xE0, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x0F, 0xC0, 0x03, + 0xF0, 0x01, 0xFC, 0x00, 0x7E, 0x00, 0x1F, 0x80, 0x07, 0xE0, 0x01, 0xF8, + 0x00, 0x7E, 0x00, 0x1F, 0x80, 0x07, 0xFF, 0xF8, 0xFF, 0xFF, 0x1F, 0xFF, + 0xE3, 0xFF, 0xFC, 0x00, 0x00, 0x7C, 0x03, 0xF0, 0x1F, 0xC0, 0xFE, 0x03, + 0xE0, 0x0F, 0x00, 0x3C, 0x00, 0xF0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x01, + 0xE0, 0x0F, 0x80, 0x3C, 0x01, 0xF0, 0x1F, 0x80, 0x70, 0x01, 0xF8, 0x01, + 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x03, 0xC0, 0x0F, 0x00, 0x3C, 0x00, + 0xF0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x01, 0xFC, 0x07, 0xE0, 0x0F, 0x80, + 0x1E, 0x00, 0x03, 0x81, 0xC0, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0C, 0x0E, + 0x07, 0x03, 0x81, 0xC0, 0xC0, 0xE0, 0x70, 0x38, 0x18, 0x1C, 0x0E, 0x07, + 0x03, 0x81, 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x18, 0x1C, 0x0E, 0x07, 0x01, + 0x80, 0x80, 0x00, 0x00, 0x01, 0xE0, 0x07, 0xC0, 0x1F, 0x80, 0xFE, 0x00, + 0x78, 0x01, 0xE0, 0x07, 0x80, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, + 0x78, 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x7E, 0x00, 0x38, 0x07, 0xE0, + 0x3E, 0x00, 0xF0, 0x07, 0xC0, 0x1E, 0x00, 0x78, 0x01, 0xE0, 0x07, 0x80, + 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x1F, 0x01, 0xF8, 0x0F, 0xE0, 0x3F, 0x00, + 0xF8, 0x00, 0x0F, 0x00, 0x1F, 0xC1, 0xDF, 0xF0, 0xEE, 0x3F, 0xE6, 0x07, + 0xF0, 0x01, 0xE0}; + +const GFXglyph FreeSansBoldOblique18pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 10, 0, 1}, // 0x20 ' ' + {0, 10, 25, 12, 4, -24}, // 0x21 '!' + {32, 13, 9, 17, 6, -25}, // 0x22 '"' + {47, 22, 24, 19, 1, -23}, // 0x23 '#' + {113, 19, 31, 19, 2, -26}, // 0x24 '$' + {187, 26, 26, 31, 5, -25}, // 0x25 '%' + {272, 21, 25, 25, 3, -24}, // 0x26 '&' + {338, 5, 9, 8, 6, -25}, // 0x27 ''' + {344, 13, 33, 12, 3, -25}, // 0x28 '(' + {398, 13, 33, 12, -1, -25}, // 0x29 ')' + {452, 12, 11, 14, 5, -25}, // 0x2A '*' + {469, 18, 16, 20, 3, -15}, // 0x2B '+' + {505, 7, 11, 10, 1, -4}, // 0x2C ',' + {515, 10, 4, 12, 2, -10}, // 0x2D '-' + {520, 6, 5, 10, 2, -4}, // 0x2E '.' + {524, 15, 25, 10, 0, -24}, // 0x2F '/' + {571, 18, 25, 19, 3, -24}, // 0x30 '0' + {628, 13, 25, 19, 6, -24}, // 0x31 '1' + {669, 21, 25, 19, 1, -24}, // 0x32 '2' + {735, 20, 25, 19, 2, -24}, // 0x33 '3' + {798, 19, 25, 19, 2, -24}, // 0x34 '4' + {858, 20, 24, 19, 2, -23}, // 0x35 '5' + {918, 19, 25, 19, 3, -24}, // 0x36 '6' + {978, 19, 24, 19, 5, -23}, // 0x37 '7' + {1035, 20, 25, 19, 2, -24}, // 0x38 '8' + {1098, 19, 25, 19, 2, -24}, // 0x39 '9' + {1158, 9, 18, 12, 4, -17}, // 0x3A ':' + {1179, 10, 24, 12, 3, -17}, // 0x3B ';' + {1209, 19, 17, 20, 3, -16}, // 0x3C '<' + {1250, 20, 12, 20, 2, -13}, // 0x3D '=' + {1280, 19, 17, 20, 1, -15}, // 0x3E '>' + {1321, 18, 26, 21, 6, -25}, // 0x3F '?' + {1380, 33, 31, 34, 3, -25}, // 0x40 '@' + {1508, 23, 26, 25, 1, -25}, // 0x41 'A' + {1583, 24, 26, 25, 3, -25}, // 0x42 'B' + {1661, 24, 26, 25, 4, -25}, // 0x43 'C' + {1739, 24, 26, 25, 3, -25}, // 0x44 'D' + {1817, 24, 26, 23, 3, -25}, // 0x45 'E' + {1895, 23, 26, 21, 3, -25}, // 0x46 'F' + {1970, 24, 26, 27, 4, -25}, // 0x47 'G' + {2048, 26, 26, 25, 2, -25}, // 0x48 'H' + {2133, 10, 26, 10, 2, -25}, // 0x49 'I' + {2166, 20, 26, 19, 2, -25}, // 0x4A 'J' + {2231, 26, 26, 25, 3, -25}, // 0x4B 'K' + {2316, 18, 26, 21, 3, -25}, // 0x4C 'L' + {2375, 31, 26, 29, 2, -25}, // 0x4D 'M' + {2476, 27, 26, 25, 2, -25}, // 0x4E 'N' + {2564, 25, 26, 27, 4, -25}, // 0x4F 'O' + {2646, 23, 26, 23, 3, -25}, // 0x50 'P' + {2721, 25, 27, 27, 4, -25}, // 0x51 'Q' + {2806, 24, 26, 25, 3, -25}, // 0x52 'R' + {2884, 22, 26, 23, 3, -25}, // 0x53 'S' + {2956, 21, 26, 21, 5, -25}, // 0x54 'T' + {3025, 24, 26, 25, 4, -25}, // 0x55 'U' + {3103, 22, 26, 23, 6, -25}, // 0x56 'V' + {3175, 32, 26, 33, 6, -25}, // 0x57 'W' + {3279, 27, 26, 23, 1, -25}, // 0x58 'X' + {3367, 22, 26, 23, 6, -25}, // 0x59 'Y' + {3439, 25, 26, 21, 1, -25}, // 0x5A 'Z' + {3521, 15, 33, 12, 1, -25}, // 0x5B '[' + {3583, 5, 25, 10, 5, -24}, // 0x5C '\' + {3599, 15, 33, 12, -1, -25}, // 0x5D ']' + {3661, 16, 15, 20, 4, -23}, // 0x5E '^' + {3691, 21, 3, 19, -2, 5}, // 0x5F '_' + {3699, 5, 5, 12, 6, -25}, // 0x60 '`' + {3703, 18, 19, 19, 2, -18}, // 0x61 'a' + {3746, 20, 26, 21, 2, -25}, // 0x62 'b' + {3811, 18, 19, 19, 3, -18}, // 0x63 'c' + {3854, 22, 26, 21, 3, -25}, // 0x64 'd' + {3926, 19, 19, 19, 2, -18}, // 0x65 'e' + {3972, 13, 26, 12, 3, -25}, // 0x66 'f' + {4015, 22, 27, 21, 1, -18}, // 0x67 'g' + {4090, 20, 26, 21, 2, -25}, // 0x68 'h' + {4155, 10, 26, 10, 2, -25}, // 0x69 'i' + {4188, 15, 34, 10, -2, -25}, // 0x6A 'j' + {4252, 21, 26, 19, 2, -25}, // 0x6B 'k' + {4321, 10, 26, 10, 2, -25}, // 0x6C 'l' + {4354, 30, 19, 31, 2, -18}, // 0x6D 'm' + {4426, 20, 19, 21, 2, -18}, // 0x6E 'n' + {4474, 19, 19, 21, 3, -18}, // 0x6F 'o' + {4520, 22, 27, 21, 0, -18}, // 0x70 'p' + {4595, 20, 27, 21, 3, -18}, // 0x71 'q' + {4663, 15, 19, 14, 2, -18}, // 0x72 'r' + {4699, 18, 19, 19, 2, -18}, // 0x73 's' + {4742, 11, 23, 12, 4, -22}, // 0x74 't' + {4774, 20, 19, 21, 3, -18}, // 0x75 'u' + {4822, 18, 19, 19, 5, -18}, // 0x76 'v' + {4865, 27, 19, 27, 4, -18}, // 0x77 'w' + {4930, 22, 19, 19, 1, -18}, // 0x78 'x' + {4983, 22, 27, 19, 1, -18}, // 0x79 'y' + {5058, 19, 19, 17, 1, -18}, // 0x7A 'z' + {5104, 14, 33, 14, 2, -25}, // 0x7B '{' + {5162, 9, 33, 10, 2, -25}, // 0x7C '|' + {5200, 14, 33, 14, 2, -25}, // 0x7D '}' + {5258, 17, 6, 20, 3, -10}}; // 0x7E '~' + +const GFXfont FreeSansBoldOblique18pt7b PROGMEM = { + (uint8_t *)FreeSansBoldOblique18pt7bBitmaps, + (GFXglyph *)FreeSansBoldOblique18pt7bGlyphs, 0x20, 0x7E, 42}; + +// Approx. 5943 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSansBoldOblique24pt7b.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSansBoldOblique24pt7b.h new file mode 100644 index 0000000..a20229d --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSansBoldOblique24pt7b.h @@ -0,0 +1,895 @@ +#pragma once +#include + +const uint8_t FreeSansBoldOblique24pt7bBitmaps[] PROGMEM = { + 0x01, 0xE0, 0x07, 0xF0, 0x1F, 0xC0, 0xFF, 0x03, 0xF8, 0x0F, 0xE0, 0x3F, + 0x80, 0xFE, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xE0, 0x1F, + 0x80, 0x7E, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0xF8, 0x03, 0xE0, 0x0F, + 0x80, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x1F, + 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0xFE, 0x03, 0xF8, 0x00, + 0x7E, 0x0F, 0xDF, 0x83, 0xF7, 0xE0, 0xFF, 0xF0, 0x7E, 0xFC, 0x1F, 0xBF, + 0x07, 0xEF, 0xC1, 0xFB, 0xE0, 0x7C, 0xF8, 0x1F, 0x3C, 0x07, 0x8F, 0x01, + 0xE3, 0x80, 0x70, 0x00, 0x07, 0xC1, 0xF0, 0x00, 0x3E, 0x0F, 0x80, 0x03, + 0xE0, 0xF8, 0x00, 0x1F, 0x07, 0xC0, 0x01, 0xF0, 0x7C, 0x00, 0x0F, 0x83, + 0xE0, 0x00, 0xF8, 0x3E, 0x00, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xF8, + 0x7F, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xFC, 0x1F, 0xFF, 0xFF, 0xE0, 0x0F, + 0x83, 0xE0, 0x00, 0x7C, 0x3E, 0x00, 0x07, 0xC1, 0xF0, 0x00, 0x3E, 0x0F, + 0x80, 0x03, 0xE0, 0xF8, 0x00, 0x1F, 0x07, 0xC0, 0x00, 0xF8, 0x7C, 0x00, + 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xF8, 0x7F, 0xFF, 0xFF, 0x83, 0xFF, + 0xFF, 0xFC, 0x1F, 0xFF, 0xFF, 0xE0, 0x1F, 0x07, 0xC0, 0x00, 0xF8, 0x3E, + 0x00, 0x0F, 0x83, 0xE0, 0x00, 0x7C, 0x1F, 0x00, 0x07, 0xC1, 0xF0, 0x00, + 0x3E, 0x0F, 0x80, 0x01, 0xF0, 0xF8, 0x00, 0x1F, 0x07, 0xC0, 0x00, 0xF8, + 0x3C, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0E, + 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x7F, 0xFF, 0x00, 0x3F, 0xFF, 0xE0, 0x1F, + 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, 0x07, 0xF3, 0x9F, 0xC1, 0xF8, 0xE3, 0xF0, + 0x7C, 0x38, 0xFC, 0x3F, 0x0E, 0x3F, 0x0F, 0xC7, 0x8F, 0xC3, 0xF1, 0xC0, + 0x00, 0xFE, 0x70, 0x00, 0x3F, 0xDC, 0x00, 0x0F, 0xFF, 0x00, 0x01, 0xFF, + 0xE0, 0x00, 0x3F, 0xFE, 0x00, 0x0F, 0xFF, 0xE0, 0x00, 0xFF, 0xFC, 0x00, + 0x0F, 0xFF, 0x00, 0x01, 0xFF, 0xE0, 0x00, 0x77, 0xF8, 0x00, 0x1C, 0xFE, + 0x00, 0x07, 0x3F, 0x8F, 0xE3, 0xCF, 0xE3, 0xF8, 0xE3, 0xF8, 0xFE, 0x38, + 0xFC, 0x3F, 0x8E, 0x7F, 0x0F, 0xF3, 0x9F, 0xC3, 0xFD, 0xFF, 0xE0, 0x7F, + 0xFF, 0xF0, 0x1F, 0xFF, 0xFC, 0x03, 0xFF, 0xFC, 0x00, 0x7F, 0xFE, 0x00, + 0x03, 0xFC, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x03, 0x80, + 0x00, 0x01, 0xE0, 0x00, 0x00, 0x70, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x07, + 0x80, 0x7F, 0xE0, 0x00, 0xF0, 0x0F, 0xFF, 0x00, 0x1E, 0x01, 0xFF, 0xF0, + 0x01, 0xC0, 0x3F, 0xFF, 0x80, 0x3C, 0x07, 0xE1, 0xF8, 0x07, 0x80, 0x78, + 0x07, 0x80, 0xF0, 0x0F, 0x80, 0x78, 0x0E, 0x00, 0xF0, 0x07, 0x81, 0xC0, + 0x0F, 0x00, 0xF8, 0x3C, 0x00, 0xF0, 0x0F, 0x07, 0x80, 0x0F, 0xC3, 0xF0, + 0xF0, 0x00, 0xFF, 0xFE, 0x0E, 0x00, 0x07, 0xFF, 0xC1, 0xE0, 0x00, 0x7F, + 0xF8, 0x3C, 0x00, 0x03, 0xFF, 0x07, 0x80, 0x00, 0x0F, 0xC0, 0x70, 0x00, + 0x00, 0x00, 0x0E, 0x03, 0xF0, 0x00, 0x01, 0xE0, 0xFF, 0xC0, 0x00, 0x3C, + 0x1F, 0xFE, 0x00, 0x03, 0x83, 0xFF, 0xE0, 0x00, 0x70, 0x7F, 0xFF, 0x00, + 0x0F, 0x0F, 0xC3, 0xF0, 0x01, 0xE0, 0xF0, 0x0F, 0x00, 0x3C, 0x1F, 0x00, + 0xF0, 0x03, 0x81, 0xE0, 0x0F, 0x00, 0x78, 0x1E, 0x01, 0xF0, 0x0F, 0x01, + 0xE0, 0x1E, 0x01, 0xE0, 0x1F, 0x87, 0xE0, 0x1C, 0x01, 0xFF, 0xFC, 0x03, + 0x80, 0x0F, 0xFF, 0x80, 0x78, 0x00, 0xFF, 0xF0, 0x0F, 0x00, 0x07, 0xFE, + 0x01, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x3F, 0xF0, + 0x00, 0x07, 0xFF, 0xC0, 0x00, 0x7F, 0xFF, 0x00, 0x03, 0xFF, 0xF8, 0x00, + 0x3F, 0x9F, 0xC0, 0x03, 0xF8, 0x7E, 0x00, 0x1F, 0xC3, 0xF0, 0x00, 0xFE, + 0x1F, 0x00, 0x07, 0xF1, 0xF8, 0x00, 0x3F, 0xCF, 0xC0, 0x01, 0xFE, 0xFC, + 0x00, 0x07, 0xFF, 0xC0, 0x00, 0x3F, 0xFC, 0x00, 0x00, 0xFF, 0xC0, 0x00, + 0x07, 0xF8, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x1F, 0xFF, 0x07, 0xC1, 0xFF, + 0xF8, 0x3E, 0x3F, 0xFF, 0xE3, 0xE3, 0xFE, 0x3F, 0x1F, 0x1F, 0xC1, 0xFD, + 0xF1, 0xFC, 0x07, 0xFF, 0x8F, 0xC0, 0x3F, 0xF8, 0xFE, 0x00, 0xFF, 0xC7, + 0xF0, 0x07, 0xFC, 0x3F, 0x80, 0x1F, 0xC1, 0xFC, 0x00, 0xFE, 0x0F, 0xF0, + 0x1F, 0xF8, 0x7F, 0xC1, 0xFF, 0xC1, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, + 0xFC, 0x3F, 0xFF, 0xCF, 0xE0, 0x7F, 0xF8, 0x7F, 0x80, 0xFF, 0x00, 0x00, + 0x7E, 0xFD, 0xFF, 0xEF, 0xDF, 0xBF, 0x7C, 0xF9, 0xE3, 0xC7, 0x00, 0x00, + 0x0F, 0x80, 0x0F, 0x80, 0x0F, 0x80, 0x0F, 0xC0, 0x07, 0xC0, 0x07, 0xC0, + 0x07, 0xE0, 0x03, 0xE0, 0x03, 0xE0, 0x03, 0xF0, 0x01, 0xF0, 0x01, 0xF8, + 0x00, 0xF8, 0x00, 0xFC, 0x00, 0x7C, 0x00, 0x7E, 0x00, 0x3E, 0x00, 0x1F, + 0x00, 0x1F, 0x80, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x03, 0xF0, 0x01, + 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, + 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x1E, + 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0x7C, 0x00, + 0x3E, 0x00, 0x1F, 0x00, 0x07, 0x80, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, + 0x1E, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x00, 0xF0, 0x00, 0x7C, + 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x07, 0x80, 0x03, 0xE0, 0x01, 0xF0, 0x00, + 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, + 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, + 0x00, 0x1F, 0x00, 0x1F, 0x80, 0x0F, 0x80, 0x07, 0xC0, 0x07, 0xE0, 0x03, + 0xE0, 0x03, 0xF0, 0x01, 0xF0, 0x01, 0xF8, 0x00, 0xF8, 0x00, 0xFC, 0x00, + 0x7C, 0x00, 0x7C, 0x00, 0x7E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3F, 0x00, + 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x00, 0x01, 0xE0, 0x03, 0x80, 0x07, + 0x00, 0x0E, 0x07, 0x3C, 0x6F, 0xFF, 0xFF, 0xFF, 0xBF, 0xFE, 0x0F, 0xE0, + 0x1F, 0xC0, 0x7F, 0x81, 0xEF, 0x87, 0x8F, 0x0E, 0x1E, 0x08, 0x10, 0x00, + 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x00, + 0x00, 0x1F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, + 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFE, + 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0x00, 0xFC, 0x00, 0x00, 0xFC, 0x00, + 0x00, 0xFC, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF8, 0x00, + 0x01, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x1F, 0xC7, 0xF1, 0xF8, 0xFE, 0x3F, + 0x8F, 0xE0, 0x38, 0x1C, 0x07, 0x03, 0xC0, 0xE0, 0xF0, 0xFC, 0x3C, 0x0C, + 0x00, 0x7F, 0xFD, 0xFF, 0xF7, 0xFF, 0x9F, 0xFE, 0xFF, 0xFB, 0xFF, 0xE0, + 0x7F, 0x7F, 0x7F, 0x7E, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x70, 0x00, 0x0E, + 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x03, + 0x80, 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 0x01, + 0xC0, 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x07, 0x00, 0x00, + 0x70, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, + 0x38, 0x00, 0x03, 0x80, 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, + 0x0E, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, + 0x07, 0x00, 0x00, 0x70, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0F, 0xE0, 0x00, + 0x1F, 0xFC, 0x00, 0x3F, 0xFF, 0x80, 0x3F, 0xFF, 0xC0, 0x3F, 0xFF, 0xF0, + 0x1F, 0xC7, 0xF8, 0x1F, 0xC1, 0xFE, 0x1F, 0xC0, 0x7F, 0x0F, 0xC0, 0x3F, + 0x8F, 0xE0, 0x1F, 0xC7, 0xF0, 0x0F, 0xE3, 0xF0, 0x07, 0xF3, 0xF8, 0x03, + 0xF9, 0xFC, 0x01, 0xFC, 0xFC, 0x01, 0xFE, 0xFE, 0x00, 0xFE, 0x7F, 0x00, + 0x7F, 0x3F, 0x80, 0x3F, 0x9F, 0xC0, 0x1F, 0xCF, 0xE0, 0x1F, 0xEF, 0xE0, + 0x0F, 0xE7, 0xF0, 0x07, 0xF3, 0xF8, 0x03, 0xF9, 0xFC, 0x03, 0xF8, 0xFE, + 0x01, 0xFC, 0x7F, 0x00, 0xFE, 0x3F, 0x80, 0xFE, 0x1F, 0xE0, 0x7F, 0x0F, + 0xF8, 0xFF, 0x03, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0x80, + 0x1F, 0xFF, 0x00, 0x07, 0xFF, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x0F, + 0x80, 0x0F, 0x80, 0x07, 0xC0, 0x07, 0xE0, 0x0F, 0xF0, 0x3F, 0xF9, 0xFF, + 0xF8, 0xFF, 0xFC, 0xFF, 0xFE, 0x7F, 0xFF, 0x00, 0x3F, 0x80, 0x1F, 0x80, + 0x0F, 0xC0, 0x0F, 0xE0, 0x07, 0xF0, 0x03, 0xF8, 0x01, 0xF8, 0x01, 0xFC, + 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x3F, 0x00, 0x1F, 0x80, 0x1F, 0xC0, 0x0F, + 0xE0, 0x07, 0xF0, 0x03, 0xF0, 0x01, 0xF8, 0x01, 0xFC, 0x00, 0xFE, 0x00, + 0x7F, 0x00, 0x3F, 0x00, 0x3F, 0x80, 0x1F, 0xC0, 0x00, 0x00, 0x01, 0xFE, + 0x00, 0x00, 0x7F, 0xFC, 0x00, 0x0F, 0xFF, 0xF8, 0x00, 0xFF, 0xFF, 0xE0, + 0x0F, 0xFF, 0xFF, 0x00, 0xFF, 0x07, 0xFC, 0x07, 0xF0, 0x1F, 0xE0, 0x7F, + 0x00, 0x7F, 0x03, 0xF0, 0x03, 0xF8, 0x1F, 0x80, 0x1F, 0xC1, 0xF8, 0x00, + 0xFE, 0x0F, 0xC0, 0x0F, 0xE0, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x07, 0xF0, + 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x7F, 0x80, 0x00, + 0x07, 0xF8, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x1F, 0xF8, 0x00, 0x01, 0xFF, + 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x7F, 0xC0, 0x00, + 0x07, 0xFC, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x7F, + 0x80, 0x00, 0x03, 0xFF, 0xFF, 0xF0, 0x3F, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, + 0xFC, 0x1F, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xF0, + 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x0F, 0xFF, 0x80, 0x0F, 0xFF, 0xF0, 0x07, + 0xFF, 0xFE, 0x03, 0xFF, 0xFF, 0xC0, 0xFE, 0x1F, 0xF0, 0x7F, 0x01, 0xFC, + 0x1F, 0x80, 0x7F, 0x07, 0xE0, 0x1F, 0xC3, 0xF0, 0x07, 0xF0, 0xFC, 0x01, + 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x80, 0x01, + 0xFF, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x07, 0xFF, 0x80, + 0x01, 0xFF, 0xE0, 0x00, 0x07, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x1F, + 0xC0, 0x00, 0x07, 0xF0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x7F, 0x3F, 0x80, + 0x3F, 0xCF, 0xE0, 0x0F, 0xE3, 0xF8, 0x07, 0xF8, 0xFF, 0x83, 0xFC, 0x3F, + 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, 0xE0, + 0x03, 0xFF, 0xE0, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0x00, 0x7F, 0x80, 0x00, + 0x7F, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x7F, 0xE0, 0x00, 0x3F, 0xF0, 0x00, + 0x3F, 0xF8, 0x00, 0x3D, 0xFC, 0x00, 0x3C, 0xFE, 0x00, 0x3E, 0x7E, 0x00, + 0x3E, 0x7F, 0x00, 0x1E, 0x3F, 0x80, 0x1E, 0x1F, 0xC0, 0x1E, 0x0F, 0xC0, + 0x1F, 0x07, 0xE0, 0x1F, 0x07, 0xF0, 0x1F, 0x03, 0xF8, 0x1F, 0x01, 0xFC, + 0x0F, 0x80, 0xFC, 0x0F, 0x80, 0xFE, 0x0F, 0x80, 0x7F, 0x07, 0xFF, 0xFF, + 0xF7, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, + 0xFE, 0x00, 0x03, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x00, + 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x1F, 0x80, 0x00, + 0x7F, 0xFF, 0xE0, 0x0F, 0xFF, 0xFC, 0x01, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, + 0xF0, 0x0F, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0x80, 0x7C, 0x00, 0x00, 0x0F, + 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x0F, 0x80, 0x00, + 0x03, 0xE3, 0xF0, 0x00, 0x7F, 0xFF, 0x80, 0x1F, 0xFF, 0xF8, 0x03, 0xFF, + 0xFF, 0x80, 0x7F, 0xFF, 0xF0, 0x1F, 0xE1, 0xFF, 0x03, 0xF0, 0x1F, 0xE0, + 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, + 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x07, 0xF0, 0xFE, 0x00, 0xFE, 0x1F, + 0xC0, 0x3F, 0x83, 0xF8, 0x07, 0xF0, 0x7F, 0x83, 0xFC, 0x0F, 0xFF, 0xFF, + 0x80, 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xF8, 0x01, 0xFF, 0xFE, 0x00, 0x0F, + 0xFF, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xFE, + 0x00, 0x1F, 0xFF, 0x80, 0x1F, 0xFF, 0xE0, 0x1F, 0xFF, 0xF8, 0x1F, 0xC3, + 0xFC, 0x1F, 0x80, 0xFE, 0x0F, 0xC0, 0x3F, 0x0F, 0xC0, 0x00, 0x07, 0xE0, + 0x00, 0x07, 0xE0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF8, 0xFC, 0x01, 0xF9, + 0xFF, 0x80, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xF8, 0x7F, 0xFF, 0xFC, 0x3F, + 0xE1, 0xFF, 0x1F, 0xE0, 0x7F, 0x8F, 0xE0, 0x1F, 0xCF, 0xE0, 0x0F, 0xE7, + 0xF0, 0x07, 0xF3, 0xF0, 0x03, 0xF9, 0xF8, 0x01, 0xF8, 0xFC, 0x01, 0xFC, + 0x7E, 0x00, 0xFE, 0x3F, 0x00, 0xFE, 0x1F, 0xC0, 0xFF, 0x0F, 0xF0, 0xFF, + 0x03, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x1F, 0xFF, + 0x80, 0x07, 0xFF, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xCF, + 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, + 0x9F, 0xFF, 0xFF, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0x01, + 0xFC, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0x80, 0x00, + 0x1F, 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x03, 0xF0, 0x00, 0x01, 0xF8, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x0F, 0xE0, + 0x00, 0x03, 0xF0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3F, + 0x80, 0x00, 0x0F, 0xC0, 0x00, 0x07, 0xF0, 0x00, 0x01, 0xF8, 0x00, 0x00, + 0xFE, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x07, 0xF0, 0x00, + 0x01, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, + 0x0F, 0xFF, 0x80, 0x07, 0xFF, 0xF0, 0x03, 0xFF, 0xFE, 0x01, 0xFF, 0xFF, + 0xC0, 0xFE, 0x0F, 0xF0, 0x3E, 0x01, 0xFC, 0x1F, 0x80, 0x3F, 0x07, 0xC0, + 0x0F, 0xC1, 0xF0, 0x03, 0xF0, 0x7C, 0x01, 0xF8, 0x1F, 0x00, 0xFC, 0x03, + 0xF0, 0x7F, 0x00, 0xFF, 0xFF, 0x00, 0x1F, 0xFF, 0x80, 0x07, 0xFF, 0xE0, + 0x07, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0x81, 0xFE, 0x1F, 0xE0, 0xFE, 0x03, + 0xFC, 0x3F, 0x00, 0x7F, 0x1F, 0xC0, 0x1F, 0xC7, 0xE0, 0x07, 0xF3, 0xF8, + 0x01, 0xFC, 0xFE, 0x00, 0x7F, 0x3F, 0x80, 0x3F, 0x8F, 0xE0, 0x0F, 0xE3, + 0xFC, 0x07, 0xF0, 0xFF, 0x87, 0xFC, 0x3F, 0xFF, 0xFE, 0x07, 0xFF, 0xFF, + 0x00, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, 0xC0, 0x03, 0xFF, 0xE0, 0x00, 0x3F, + 0xC0, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x3F, 0xFF, 0x00, + 0x3F, 0xFF, 0xC0, 0x3F, 0xFF, 0xF0, 0x3F, 0xC3, 0xF8, 0x3F, 0xC0, 0xFE, + 0x1F, 0xC0, 0x3F, 0x1F, 0xC0, 0x1F, 0x8F, 0xE0, 0x0F, 0xC7, 0xE0, 0x07, + 0xE7, 0xF0, 0x03, 0xF3, 0xF8, 0x01, 0xF9, 0xFC, 0x01, 0xFC, 0xFE, 0x00, + 0xFE, 0x7F, 0x00, 0xFE, 0x3F, 0xC0, 0xFF, 0x1F, 0xF0, 0xFF, 0x87, 0xFF, + 0xFF, 0xC3, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xE0, 0x3F, 0xF3, 0xF0, 0x07, + 0xE3, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xFC, 0x00, + 0x00, 0x7E, 0x1F, 0xC0, 0x7E, 0x0F, 0xF0, 0xFF, 0x07, 0xFF, 0xFF, 0x01, + 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x3F, 0xFF, 0x00, 0x0F, 0xFF, 0x00, + 0x01, 0xFC, 0x00, 0x00, 0x07, 0xF0, 0x7F, 0x07, 0xF0, 0x7E, 0x0F, 0xE0, + 0xFE, 0x0F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x07, 0xF0, 0x7F, 0x07, + 0xE0, 0xFE, 0x0F, 0xE0, 0xFE, 0x00, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, + 0x7E, 0x03, 0xF8, 0x0F, 0xE0, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0x80, 0xFE, 0x03, 0xF8, 0x0F, 0xE0, + 0x03, 0x80, 0x1C, 0x00, 0x70, 0x03, 0xC0, 0x0E, 0x00, 0xF0, 0x0F, 0xC0, + 0x3C, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0xE0, 0x00, + 0x01, 0xF8, 0x00, 0x03, 0xFE, 0x00, 0x07, 0xFF, 0x80, 0x0F, 0xFF, 0xE0, + 0x1F, 0xFF, 0xF0, 0x1F, 0xFF, 0xE0, 0x3F, 0xFF, 0xC0, 0x1F, 0xFF, 0x80, + 0x0F, 0xFF, 0x00, 0x03, 0xFE, 0x00, 0x00, 0xFF, 0xE0, 0x00, 0x3F, 0xFE, + 0x00, 0x0F, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0x80, 0x07, 0xFF, 0xF8, 0x00, + 0x7F, 0xFF, 0x00, 0x03, 0xFF, 0xC0, 0x00, 0x3F, 0xF0, 0x00, 0x01, 0xF8, + 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x80, 0x1F, 0xFF, 0xFF, 0xC7, 0xFF, + 0xFF, 0xF1, 0xFF, 0xFF, 0xFC, 0x7F, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0x8F, + 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, + 0xFF, 0x1F, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0xF8, 0xFF, + 0xFF, 0xFE, 0x3F, 0xFF, 0xFF, 0x80, 0x04, 0x00, 0x00, 0x01, 0xE0, 0x00, + 0x00, 0x7E, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x0F, 0xFF, 0x00, 0x03, 0xFF, + 0xF8, 0x00, 0x7F, 0xFF, 0x80, 0x07, 0xFF, 0xFC, 0x00, 0x3F, 0xFF, 0xC0, + 0x01, 0xFF, 0xF0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0xFF, 0x00, 0x03, 0xFF, + 0xC0, 0x07, 0xFF, 0xE0, 0x0F, 0xFF, 0xF0, 0x1F, 0xFF, 0xE0, 0x3F, 0xFF, + 0xE0, 0x1F, 0xFF, 0xC0, 0x07, 0xFF, 0x80, 0x01, 0xFF, 0x00, 0x00, 0x7E, + 0x00, 0x00, 0x1C, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, + 0x01, 0xFF, 0xF0, 0x07, 0xFF, 0xF8, 0x0F, 0xFF, 0xFC, 0x1F, 0xFF, 0xFE, + 0x1F, 0xFF, 0xFE, 0x3F, 0xC1, 0xFF, 0x3F, 0x80, 0xFF, 0x7F, 0x00, 0x7F, + 0x7E, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0x00, 0x00, 0xFE, + 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFC, 0x00, 0x0F, 0xF8, + 0x00, 0x1F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0x7F, 0x80, 0x00, 0xFE, 0x00, + 0x01, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xE0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xE0, 0x00, + 0x0F, 0xE0, 0x00, 0x0F, 0xE0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, + 0x1F, 0xC0, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xC0, 0x00, + 0x00, 0x00, 0x7F, 0xFF, 0xC0, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0x80, 0x00, + 0x01, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x3F, 0xE0, 0x1F, 0xF8, 0x00, 0x07, + 0xF8, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0x80, 0x07, 0xE0, + 0x00, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0x00, 0x03, 0xF0, 0x0F, 0xC0, 0x00, + 0x00, 0x0F, 0x80, 0xFC, 0x00, 0x00, 0x00, 0x3E, 0x07, 0xC0, 0x03, 0xF1, + 0xF1, 0xF0, 0x7C, 0x00, 0xFF, 0xCF, 0x07, 0x87, 0xE0, 0x1F, 0xFF, 0xF8, + 0x3C, 0x7E, 0x01, 0xF8, 0x7F, 0x81, 0xE3, 0xE0, 0x1F, 0x01, 0xF8, 0x0F, + 0x3E, 0x01, 0xF0, 0x0F, 0xC0, 0x79, 0xF0, 0x1F, 0x00, 0x7C, 0x03, 0xDF, + 0x00, 0xF0, 0x03, 0xE0, 0x1C, 0xF8, 0x0F, 0x80, 0x1E, 0x01, 0xE7, 0xC0, + 0x78, 0x00, 0xF0, 0x0F, 0x3C, 0x07, 0xC0, 0x0F, 0x00, 0xF3, 0xE0, 0x3C, + 0x00, 0x78, 0x07, 0x9F, 0x03, 0xE0, 0x07, 0x80, 0x78, 0xF8, 0x1F, 0x00, + 0x7C, 0x07, 0xC7, 0xC0, 0xF8, 0x07, 0xC0, 0x7C, 0x3E, 0x07, 0xC0, 0x7E, + 0x07, 0xC1, 0xF0, 0x3F, 0x07, 0xF8, 0xFC, 0x0F, 0x81, 0xFF, 0xFF, 0xFF, + 0xC0, 0x7E, 0x07, 0xFF, 0xBF, 0xFC, 0x01, 0xF0, 0x1F, 0xF8, 0xFF, 0x80, + 0x0F, 0xC0, 0x7E, 0x03, 0xF0, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x01, + 0xFC, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, + 0xE0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xE0, 0x03, 0x80, 0x00, 0x01, 0xFF, + 0xFF, 0xFE, 0x00, 0x00, 0x07, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x0F, 0xFF, + 0xFE, 0x00, 0x00, 0x00, 0x07, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, + 0xF0, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x7F, + 0xF0, 0x00, 0x00, 0x7F, 0xF0, 0x00, 0x00, 0xFF, 0xF0, 0x00, 0x00, 0xFF, + 0xF0, 0x00, 0x01, 0xFF, 0xF0, 0x00, 0x03, 0xFF, 0xF8, 0x00, 0x03, 0xFB, + 0xF8, 0x00, 0x07, 0xF3, 0xF8, 0x00, 0x07, 0xE3, 0xF8, 0x00, 0x0F, 0xE3, + 0xF8, 0x00, 0x0F, 0xC3, 0xF8, 0x00, 0x1F, 0xC3, 0xF8, 0x00, 0x1F, 0x83, + 0xF8, 0x00, 0x3F, 0x81, 0xFC, 0x00, 0x7F, 0x01, 0xFC, 0x00, 0x7F, 0x01, + 0xFC, 0x00, 0xFE, 0x01, 0xFC, 0x00, 0xFC, 0x01, 0xFC, 0x01, 0xFF, 0xFF, + 0xFC, 0x01, 0xFF, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0xFE, 0x07, 0xFF, 0xFF, + 0xFE, 0x07, 0xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0xFE, 0x0F, 0xE0, 0x00, + 0xFE, 0x1F, 0xC0, 0x00, 0xFE, 0x1F, 0xC0, 0x00, 0xFE, 0x3F, 0x80, 0x00, + 0xFE, 0x3F, 0x80, 0x00, 0x7F, 0x7F, 0x00, 0x00, 0x7F, 0xFF, 0x00, 0x00, + 0x7F, 0x01, 0xFF, 0xFF, 0xC0, 0x01, 0xFF, 0xFF, 0xF8, 0x01, 0xFF, 0xFF, + 0xFC, 0x03, 0xFF, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, + 0xFF, 0x03, 0xF8, 0x00, 0xFF, 0x03, 0xF8, 0x00, 0x7F, 0x07, 0xF0, 0x00, + 0x7F, 0x07, 0xF0, 0x00, 0x7F, 0x07, 0xF0, 0x00, 0x7E, 0x07, 0xF0, 0x00, + 0xFE, 0x0F, 0xF0, 0x03, 0xFC, 0x0F, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, + 0xF0, 0x0F, 0xFF, 0xFF, 0xE0, 0x0F, 0xFF, 0xFF, 0xF0, 0x1F, 0xFF, 0xFF, + 0xF8, 0x1F, 0xFF, 0xFF, 0xF8, 0x1F, 0xC0, 0x07, 0xFC, 0x1F, 0xC0, 0x01, + 0xFC, 0x1F, 0xC0, 0x01, 0xFC, 0x3F, 0x80, 0x01, 0xFC, 0x3F, 0x80, 0x01, + 0xFC, 0x3F, 0x80, 0x01, 0xFC, 0x3F, 0x80, 0x03, 0xF8, 0x7F, 0x00, 0x07, + 0xF8, 0x7F, 0x00, 0x0F, 0xF0, 0x7F, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xFF, + 0xE0, 0x7F, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFE, + 0x00, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x07, 0xFF, + 0xE0, 0x00, 0x1F, 0xFF, 0xF0, 0x00, 0x7F, 0xFF, 0xF8, 0x00, 0xFF, 0xFF, + 0xFC, 0x01, 0xFF, 0xFF, 0xFE, 0x03, 0xFF, 0x03, 0xFE, 0x07, 0xFC, 0x01, + 0xFF, 0x0F, 0xF0, 0x00, 0xFF, 0x0F, 0xE0, 0x00, 0x7F, 0x1F, 0xE0, 0x00, + 0x7F, 0x1F, 0xC0, 0x00, 0x7F, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, + 0x00, 0x7F, 0x80, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, + 0x00, 0x7F, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xF8, 0xFE, 0x00, 0x03, + 0xF8, 0xFF, 0x00, 0x07, 0xF8, 0xFF, 0x00, 0x07, 0xF0, 0x7F, 0x80, 0x1F, + 0xF0, 0x7F, 0xE0, 0x7F, 0xE0, 0x3F, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, 0xFF, + 0x80, 0x1F, 0xFF, 0xFF, 0x00, 0x0F, 0xFF, 0xFE, 0x00, 0x03, 0xFF, 0xF8, + 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x01, 0xFF, 0xFF, + 0xE0, 0x03, 0xFF, 0xFF, 0xF8, 0x03, 0xFF, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, + 0xFC, 0x03, 0xFF, 0xFF, 0xFE, 0x03, 0xF8, 0x03, 0xFE, 0x07, 0xF0, 0x01, + 0xFF, 0x07, 0xF0, 0x00, 0xFF, 0x07, 0xF0, 0x00, 0x7F, 0x07, 0xF0, 0x00, + 0x7F, 0x0F, 0xF0, 0x00, 0x7F, 0x0F, 0xE0, 0x00, 0x7F, 0x0F, 0xE0, 0x00, + 0x7F, 0x0F, 0xE0, 0x00, 0x7F, 0x0F, 0xE0, 0x00, 0x7F, 0x1F, 0xC0, 0x00, + 0x7F, 0x1F, 0xC0, 0x00, 0xFE, 0x1F, 0xC0, 0x00, 0xFE, 0x1F, 0xC0, 0x00, + 0xFE, 0x1F, 0xC0, 0x01, 0xFE, 0x3F, 0x80, 0x01, 0xFC, 0x3F, 0x80, 0x01, + 0xFC, 0x3F, 0x80, 0x03, 0xF8, 0x3F, 0x80, 0x07, 0xF8, 0x7F, 0x00, 0x0F, + 0xF0, 0x7F, 0x00, 0x1F, 0xF0, 0x7F, 0x00, 0x7F, 0xE0, 0x7F, 0xFF, 0xFF, + 0xC0, 0x7F, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFE, + 0x00, 0xFF, 0xFF, 0xF8, 0x00, 0xFF, 0xFF, 0x80, 0x00, 0x01, 0xFF, 0xFF, + 0xFF, 0x01, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, + 0xFE, 0x03, 0xFF, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, 0xFE, 0x03, 0xF8, 0x00, + 0x00, 0x07, 0xF0, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x07, 0xF0, 0x00, + 0x00, 0x07, 0xF0, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x0F, 0xE0, 0x00, + 0x00, 0x0F, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xE0, 0x0F, 0xFF, 0xFF, + 0xE0, 0x1F, 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xFF, + 0xE0, 0x1F, 0xC0, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, + 0x00, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, + 0x00, 0x3F, 0x80, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, + 0x00, 0x7F, 0xFF, 0xFF, 0xC0, 0x7F, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, + 0xC0, 0xFF, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, + 0x80, 0x00, 0xFF, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, + 0xFE, 0x01, 0xFF, 0xFF, 0xFE, 0x01, 0xFF, 0xFF, 0xFE, 0x01, 0xFF, 0xFF, + 0xFE, 0x03, 0xF8, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x03, 0xF8, 0x00, + 0x00, 0x03, 0xF8, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x07, 0xF0, 0x00, + 0x00, 0x07, 0xF0, 0x00, 0x00, 0x07, 0xFF, 0xFF, 0xE0, 0x07, 0xFF, 0xFF, + 0xE0, 0x0F, 0xFF, 0xFF, 0xE0, 0x0F, 0xFF, 0xFF, 0xC0, 0x0F, 0xFF, 0xFF, + 0xC0, 0x0F, 0xFF, 0xFF, 0xC0, 0x0F, 0xE0, 0x00, 0x00, 0x1F, 0xC0, 0x00, + 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x1F, 0xC0, 0x00, + 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, + 0x00, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x7F, 0x00, 0x00, + 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, + 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x03, 0xFF, + 0xF8, 0x00, 0x07, 0xFF, 0xFE, 0x00, 0x0F, 0xFF, 0xFF, 0x80, 0x0F, 0xFF, + 0xFF, 0xE0, 0x0F, 0xFF, 0xFF, 0xF8, 0x0F, 0xFC, 0x07, 0xFC, 0x0F, 0xF8, + 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0x3F, 0x87, 0xF0, 0x00, 0x1F, 0xC7, 0xF0, + 0x00, 0x0F, 0xE3, 0xF8, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x01, 0xFC, + 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x7F, + 0x00, 0x3F, 0xFF, 0x3F, 0x00, 0x1F, 0xFF, 0xBF, 0x80, 0x0F, 0xFF, 0x9F, + 0xC0, 0x07, 0xFF, 0xCF, 0xE0, 0x03, 0xFF, 0xE7, 0xF0, 0x03, 0xFF, 0xF3, + 0xF8, 0x00, 0x01, 0xF9, 0xFC, 0x00, 0x01, 0xF8, 0xFF, 0x00, 0x00, 0xFC, + 0x7F, 0x80, 0x00, 0xFE, 0x3F, 0xC0, 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0xFF, + 0x87, 0xFC, 0x00, 0xFF, 0x81, 0xFF, 0x81, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, + 0xE0, 0x3F, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFE, 0xF8, 0x03, 0xFF, 0xFC, + 0x78, 0x00, 0x7F, 0xFC, 0x3C, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x01, 0xFC, + 0x00, 0x0F, 0xE0, 0x3F, 0x80, 0x01, 0xFC, 0x07, 0xF0, 0x00, 0x3F, 0x80, + 0xFE, 0x00, 0x0F, 0xE0, 0x1F, 0xC0, 0x01, 0xFC, 0x07, 0xF0, 0x00, 0x3F, + 0x80, 0xFE, 0x00, 0x07, 0xF0, 0x1F, 0xC0, 0x00, 0xFE, 0x03, 0xF8, 0x00, + 0x3F, 0x80, 0xFF, 0x00, 0x07, 0xF0, 0x1F, 0xC0, 0x00, 0xFE, 0x03, 0xF8, + 0x00, 0x1F, 0xC0, 0x7F, 0x00, 0x07, 0xF0, 0x0F, 0xFF, 0xFF, 0xFE, 0x03, + 0xFF, 0xFF, 0xFF, 0xC0, 0x7F, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, 0xFF, + 0x01, 0xFF, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, 0xFF, 0xF8, 0x0F, 0xE0, 0x00, + 0x7F, 0x01, 0xFC, 0x00, 0x0F, 0xE0, 0x3F, 0x80, 0x01, 0xFC, 0x07, 0xF0, + 0x00, 0x7F, 0x01, 0xFC, 0x00, 0x0F, 0xE0, 0x3F, 0x80, 0x01, 0xFC, 0x07, + 0xF0, 0x00, 0x3F, 0x80, 0xFE, 0x00, 0x0F, 0xE0, 0x1F, 0xC0, 0x01, 0xFC, + 0x07, 0xF0, 0x00, 0x3F, 0x80, 0xFE, 0x00, 0x07, 0xF0, 0x1F, 0xC0, 0x00, + 0xFE, 0x03, 0xF8, 0x00, 0x3F, 0x80, 0x7F, 0x00, 0x07, 0xF0, 0x1F, 0xC0, + 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x07, 0xF0, 0x3F, 0x80, 0xFE, 0x03, 0xF8, + 0x0F, 0xE0, 0x3F, 0x81, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, + 0x0F, 0xE0, 0x3F, 0x80, 0xFE, 0x03, 0xF8, 0x0F, 0xE0, 0x7F, 0x01, 0xFC, + 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x03, 0xF8, 0x0F, 0xE0, 0x3F, 0x80, 0xFE, + 0x03, 0xF8, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0xFE, + 0x03, 0xF8, 0x00, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x01, 0xFC, 0x00, 0x00, + 0x3F, 0x80, 0x00, 0x0F, 0xE0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x80, + 0x00, 0x07, 0xF0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, + 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x07, 0xF0, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x7F, + 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x7F, 0x00, 0x00, + 0x0F, 0xE0, 0xFE, 0x03, 0xFC, 0x1F, 0xC0, 0x7F, 0x03, 0xF8, 0x0F, 0xE0, + 0xFE, 0x01, 0xFC, 0x1F, 0xC0, 0x3F, 0x83, 0xF8, 0x0F, 0xE0, 0x7F, 0x01, + 0xFC, 0x0F, 0xF0, 0xFF, 0x81, 0xFF, 0xFF, 0xE0, 0x3F, 0xFF, 0xF8, 0x03, + 0xFF, 0xFF, 0x00, 0x3F, 0xFF, 0x80, 0x03, 0xFF, 0xE0, 0x00, 0x1F, 0xE0, + 0x00, 0x00, 0x00, 0xFE, 0x00, 0x0F, 0xF0, 0x0F, 0xF0, 0x00, 0xFF, 0x00, + 0x7F, 0x00, 0x1F, 0xF0, 0x03, 0xF8, 0x01, 0xFF, 0x00, 0x1F, 0xC0, 0x1F, + 0xE0, 0x00, 0xFE, 0x01, 0xFE, 0x00, 0x0F, 0xE0, 0x1F, 0xE0, 0x00, 0x7F, + 0x01, 0xFE, 0x00, 0x03, 0xF8, 0x1F, 0xE0, 0x00, 0x1F, 0xC1, 0xFE, 0x00, + 0x00, 0xFE, 0x1F, 0xE0, 0x00, 0x0F, 0xE3, 0xFE, 0x00, 0x00, 0x7F, 0x3F, + 0xC0, 0x00, 0x03, 0xFB, 0xFC, 0x00, 0x00, 0x1F, 0xFF, 0xC0, 0x00, 0x01, + 0xFF, 0xFE, 0x00, 0x00, 0x0F, 0xFF, 0xF8, 0x00, 0x00, 0x7F, 0xFF, 0xC0, + 0x00, 0x03, 0xFF, 0xFF, 0x00, 0x00, 0x1F, 0xFF, 0xF8, 0x00, 0x01, 0xFF, + 0x9F, 0xE0, 0x00, 0x0F, 0xF8, 0xFF, 0x00, 0x00, 0x7F, 0x83, 0xFC, 0x00, + 0x03, 0xF8, 0x1F, 0xF0, 0x00, 0x1F, 0xC0, 0x7F, 0x80, 0x01, 0xFC, 0x01, + 0xFE, 0x00, 0x0F, 0xE0, 0x0F, 0xF0, 0x00, 0x7F, 0x00, 0x3F, 0xC0, 0x03, + 0xF8, 0x01, 0xFF, 0x00, 0x3F, 0x80, 0x07, 0xF8, 0x01, 0xFC, 0x00, 0x3F, + 0xE0, 0x0F, 0xE0, 0x00, 0xFF, 0x00, 0x7F, 0x00, 0x07, 0xFC, 0x03, 0xF8, + 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFC, 0x00, 0x01, 0xFC, 0x00, 0x01, 0xFC, + 0x00, 0x03, 0xF8, 0x00, 0x03, 0xF8, 0x00, 0x03, 0xF8, 0x00, 0x03, 0xF8, + 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF0, + 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x0F, 0xE0, 0x00, 0x0F, 0xE0, + 0x00, 0x0F, 0xE0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0x1F, 0xC0, + 0x00, 0x1F, 0xC0, 0x00, 0x1F, 0xC0, 0x00, 0x3F, 0x80, 0x00, 0x3F, 0x80, + 0x00, 0x3F, 0x80, 0x00, 0x3F, 0x80, 0x00, 0x3F, 0x80, 0x00, 0x7F, 0x00, + 0x00, 0x7F, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x01, 0xFF, + 0x80, 0x03, 0xFF, 0x80, 0xFF, 0xC0, 0x01, 0xFF, 0x80, 0x7F, 0xE0, 0x01, + 0xFF, 0xC0, 0x3F, 0xF0, 0x00, 0xFF, 0xE0, 0x3F, 0xF8, 0x00, 0xFF, 0xF0, + 0x1F, 0xFC, 0x00, 0x7F, 0xF8, 0x0F, 0xFE, 0x00, 0x7D, 0xF8, 0x07, 0xEF, + 0x00, 0x3E, 0xFC, 0x03, 0xF7, 0x80, 0x3F, 0xFE, 0x03, 0xFB, 0xC0, 0x1F, + 0x7F, 0x01, 0xFD, 0xE0, 0x1F, 0xBF, 0x00, 0xFE, 0xF0, 0x0F, 0x9F, 0x80, + 0x7E, 0x78, 0x0F, 0xDF, 0xC0, 0x7F, 0x3E, 0x07, 0xCF, 0xE0, 0x3F, 0x9F, + 0x07, 0xE7, 0xF0, 0x1F, 0xCF, 0x83, 0xE3, 0xF0, 0x0F, 0xE7, 0xC3, 0xF1, + 0xF8, 0x07, 0xE3, 0xE1, 0xF9, 0xFC, 0x07, 0xF1, 0xF0, 0xF8, 0xFE, 0x03, + 0xF8, 0xF8, 0xFC, 0x7F, 0x01, 0xFC, 0x7C, 0x7C, 0x3F, 0x00, 0xFC, 0x3E, + 0x7E, 0x1F, 0x80, 0x7E, 0x1F, 0x3E, 0x1F, 0xC0, 0x7F, 0x0F, 0xBF, 0x0F, + 0xE0, 0x3F, 0x87, 0xDF, 0x07, 0xE0, 0x1F, 0xC3, 0xFF, 0x83, 0xF0, 0x0F, + 0xC1, 0xFF, 0xC3, 0xF8, 0x0F, 0xE0, 0xFF, 0xC1, 0xFC, 0x07, 0xF0, 0x7F, + 0xE0, 0xFE, 0x03, 0xF8, 0x3F, 0xE0, 0x7E, 0x01, 0xFC, 0x1F, 0xF0, 0x3F, + 0x00, 0xFC, 0x0F, 0xF0, 0x3F, 0x80, 0xFE, 0x07, 0xF8, 0x1F, 0xC0, 0x7F, + 0x03, 0xF8, 0x0F, 0xC0, 0x00, 0x01, 0xFE, 0x00, 0x07, 0xE0, 0x3F, 0xC0, + 0x01, 0xFC, 0x07, 0xFC, 0x00, 0x3F, 0x80, 0xFF, 0x80, 0x07, 0xF0, 0x1F, + 0xF0, 0x00, 0xFC, 0x07, 0xFF, 0x00, 0x3F, 0x80, 0xFF, 0xE0, 0x07, 0xF0, + 0x1F, 0xFC, 0x00, 0xFE, 0x03, 0xFF, 0xC0, 0x1F, 0x80, 0xFF, 0xF8, 0x03, + 0xF0, 0x1F, 0xFF, 0x80, 0xFE, 0x03, 0xFB, 0xF0, 0x1F, 0xC0, 0x7E, 0x7E, + 0x03, 0xF8, 0x0F, 0xC7, 0xE0, 0x7E, 0x03, 0xF8, 0xFC, 0x0F, 0xC0, 0x7F, + 0x1F, 0x83, 0xF8, 0x0F, 0xE1, 0xF8, 0x7F, 0x01, 0xF8, 0x3F, 0x0F, 0xE0, + 0x3F, 0x07, 0xF1, 0xF8, 0x0F, 0xE0, 0x7E, 0x3F, 0x01, 0xFC, 0x0F, 0xCF, + 0xE0, 0x3F, 0x00, 0xFD, 0xFC, 0x07, 0xE0, 0x1F, 0xBF, 0x81, 0xFC, 0x03, + 0xF7, 0xE0, 0x3F, 0x80, 0x3F, 0xFC, 0x07, 0xF0, 0x07, 0xFF, 0x80, 0xFC, + 0x00, 0xFF, 0xF0, 0x1F, 0x80, 0x0F, 0xFC, 0x07, 0xF0, 0x01, 0xFF, 0x80, + 0xFE, 0x00, 0x3F, 0xF0, 0x1F, 0xC0, 0x03, 0xFE, 0x03, 0xF0, 0x00, 0x7F, + 0xC0, 0x7E, 0x00, 0x07, 0xF0, 0x1F, 0xC0, 0x00, 0xFE, 0x00, 0x00, 0x00, + 0xFF, 0x80, 0x00, 0x01, 0xFF, 0xF8, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x01, + 0xFF, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xFF, 0xC0, + 0x3F, 0xF0, 0x3F, 0xF8, 0x1F, 0xF0, 0x03, 0xFE, 0x07, 0xF0, 0x00, 0x7F, + 0x83, 0xF8, 0x00, 0x0F, 0xF1, 0xFE, 0x00, 0x03, 0xFC, 0x7F, 0x00, 0x00, + 0x7F, 0x3F, 0x80, 0x00, 0x1F, 0xCF, 0xE0, 0x00, 0x07, 0xF7, 0xF0, 0x00, + 0x01, 0xFD, 0xFC, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x00, 0x1F, 0xDF, 0xC0, + 0x00, 0x07, 0xFF, 0xE0, 0x00, 0x03, 0xFB, 0xF8, 0x00, 0x00, 0xFE, 0xFE, + 0x00, 0x00, 0x3F, 0xBF, 0x80, 0x00, 0x0F, 0xEF, 0xE0, 0x00, 0x07, 0xF3, + 0xF8, 0x00, 0x01, 0xFC, 0xFE, 0x00, 0x00, 0xFE, 0x3F, 0xC0, 0x00, 0x7F, + 0x8F, 0xF0, 0x00, 0x1F, 0xC1, 0xFE, 0x00, 0x0F, 0xE0, 0x7F, 0xC0, 0x0F, + 0xF8, 0x1F, 0xFC, 0x0F, 0xFC, 0x03, 0xFF, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, + 0xFF, 0x00, 0x0F, 0xFF, 0xFF, 0x80, 0x01, 0xFF, 0xFF, 0x80, 0x00, 0x1F, + 0xFF, 0x80, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x03, + 0xFF, 0xFF, 0xE0, 0x0F, 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xFF, 0xE0, 0x3F, + 0xFF, 0xFF, 0xC0, 0x7F, 0xFF, 0xFF, 0xC1, 0xFE, 0x00, 0xFF, 0x83, 0xF8, + 0x00, 0xFF, 0x07, 0xF0, 0x00, 0xFE, 0x0F, 0xE0, 0x01, 0xFC, 0x1F, 0xC0, + 0x03, 0xF8, 0x7F, 0x00, 0x07, 0xF0, 0xFE, 0x00, 0x1F, 0xC1, 0xFC, 0x00, + 0x3F, 0x83, 0xF8, 0x00, 0xFE, 0x07, 0xF0, 0x07, 0xFC, 0x1F, 0xFF, 0xFF, + 0xF0, 0x3F, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFE, + 0x03, 0xFF, 0xFF, 0xF0, 0x07, 0xFF, 0xFF, 0x80, 0x0F, 0xE0, 0x00, 0x00, + 0x1F, 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x01, + 0xFC, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x0F, + 0xE0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0xFE, + 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, + 0x01, 0xFF, 0xF8, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x01, 0xFF, 0xFF, 0xF0, + 0x00, 0xFF, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xFF, 0xC0, 0x3F, 0xF0, 0x3F, + 0xF0, 0x1F, 0xF0, 0x03, 0xFE, 0x07, 0xF8, 0x00, 0x7F, 0x83, 0xFC, 0x00, + 0x0F, 0xF1, 0xFE, 0x00, 0x03, 0xFC, 0x7F, 0x00, 0x00, 0x7F, 0x3F, 0x80, + 0x00, 0x1F, 0xCF, 0xE0, 0x00, 0x07, 0xF3, 0xF0, 0x00, 0x01, 0xFD, 0xFC, + 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x00, 0x1F, 0xDF, 0x80, 0x00, 0x07, 0xFF, + 0xE0, 0x00, 0x03, 0xFB, 0xF8, 0x00, 0x00, 0xFE, 0xFE, 0x00, 0x00, 0x3F, + 0xBF, 0x80, 0x00, 0x0F, 0xEF, 0xE0, 0x01, 0x87, 0xF3, 0xF8, 0x00, 0xF1, + 0xFC, 0xFE, 0x00, 0x7C, 0xFE, 0x3F, 0xC0, 0x3F, 0xFF, 0x8F, 0xF0, 0x07, + 0xFF, 0xC1, 0xFE, 0x01, 0xFF, 0xE0, 0x7F, 0xC0, 0x3F, 0xF8, 0x1F, 0xFC, + 0x0F, 0xFC, 0x03, 0xFF, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0xFF, 0xC0, 0x0F, + 0xFF, 0xFF, 0xF8, 0x01, 0xFF, 0xFF, 0xFF, 0x00, 0x1F, 0xFF, 0x9F, 0x80, + 0x01, 0xFF, 0x03, 0xC0, 0x00, 0x00, 0x00, 0x60, 0x00, 0x01, 0xFF, 0xFF, + 0xF0, 0x00, 0xFF, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, + 0xFF, 0xE0, 0x3F, 0xFF, 0xFF, 0xF0, 0x1F, 0xFF, 0xFF, 0xFC, 0x0F, 0xE0, + 0x03, 0xFE, 0x0F, 0xF0, 0x00, 0xFF, 0x07, 0xF0, 0x00, 0x3F, 0x83, 0xF8, + 0x00, 0x1F, 0xC1, 0xFC, 0x00, 0x0F, 0xC0, 0xFE, 0x00, 0x07, 0xE0, 0xFE, + 0x00, 0x07, 0xF0, 0x7F, 0x00, 0x07, 0xF0, 0x3F, 0x80, 0x0F, 0xF0, 0x1F, + 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xE0, 0x07, + 0xFF, 0xFF, 0xF0, 0x03, 0xFF, 0xFF, 0xFC, 0x01, 0xFF, 0xFF, 0xFF, 0x01, + 0xFC, 0x00, 0x7F, 0x80, 0xFE, 0x00, 0x1F, 0xC0, 0x7F, 0x00, 0x0F, 0xE0, + 0x3F, 0x80, 0x07, 0xF0, 0x1F, 0xC0, 0x03, 0xF8, 0x1F, 0xC0, 0x01, 0xFC, + 0x0F, 0xE0, 0x01, 0xFC, 0x07, 0xF0, 0x00, 0xFE, 0x03, 0xF8, 0x00, 0x7F, + 0x01, 0xFC, 0x00, 0x3F, 0x81, 0xFC, 0x00, 0x1F, 0xC0, 0xFE, 0x00, 0x0F, + 0xE0, 0x7F, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x7F, + 0xFF, 0x00, 0x07, 0xFF, 0xFE, 0x00, 0x3F, 0xFF, 0xFC, 0x01, 0xFF, 0xFF, + 0xF8, 0x0F, 0xFF, 0xFF, 0xF0, 0x3F, 0xC0, 0x7F, 0xC1, 0xFE, 0x00, 0xFF, + 0x07, 0xF0, 0x01, 0xFC, 0x3F, 0x80, 0x07, 0xF0, 0xFE, 0x00, 0x1F, 0xC3, + 0xF8, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0xFF, + 0xE0, 0x00, 0x03, 0xFF, 0xFC, 0x00, 0x07, 0xFF, 0xFF, 0x00, 0x0F, 0xFF, + 0xFE, 0x00, 0x1F, 0xFF, 0xFE, 0x00, 0x0F, 0xFF, 0xF8, 0x00, 0x03, 0xFF, + 0xF0, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x01, 0xFC, + 0x00, 0x00, 0x07, 0xF3, 0xF8, 0x00, 0x1F, 0xCF, 0xE0, 0x00, 0x7E, 0x3F, + 0x80, 0x03, 0xF8, 0xFF, 0x00, 0x1F, 0xE3, 0xFF, 0x01, 0xFF, 0x07, 0xFF, + 0xFF, 0xF8, 0x1F, 0xFF, 0xFF, 0xE0, 0x3F, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, + 0xF0, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x3F, 0xF0, 0x00, 0x7F, 0xFF, 0xFF, + 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFE, 0x00, 0x3F, 0x80, 0x00, 0x03, 0xF8, + 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x7F, 0x00, 0x00, + 0x07, 0xF0, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0xFE, + 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x0F, 0xE0, 0x00, + 0x01, 0xFC, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x1F, + 0xC0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0xF8, 0x00, + 0x00, 0x3F, 0x80, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x07, + 0xF0, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x7F, 0x00, + 0x00, 0x0F, 0xE0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x7F, + 0x07, 0xF0, 0x00, 0x7F, 0x07, 0xF0, 0x00, 0xFE, 0x0F, 0xE0, 0x00, 0xFE, + 0x0F, 0xE0, 0x00, 0xFE, 0x0F, 0xE0, 0x00, 0xFE, 0x0F, 0xE0, 0x00, 0xFE, + 0x0F, 0xE0, 0x01, 0xFC, 0x1F, 0xC0, 0x01, 0xFC, 0x1F, 0xC0, 0x01, 0xFC, + 0x1F, 0xC0, 0x01, 0xFC, 0x1F, 0xC0, 0x01, 0xFC, 0x3F, 0x80, 0x03, 0xF8, + 0x3F, 0x80, 0x03, 0xF8, 0x3F, 0x80, 0x03, 0xF8, 0x3F, 0x80, 0x03, 0xF8, + 0x3F, 0x80, 0x07, 0xF0, 0x7F, 0x00, 0x07, 0xF0, 0x7F, 0x00, 0x07, 0xF0, + 0x7F, 0x00, 0x07, 0xF0, 0x7F, 0x00, 0x07, 0xF0, 0x7F, 0x00, 0x0F, 0xE0, + 0xFE, 0x00, 0x0F, 0xE0, 0xFE, 0x00, 0x0F, 0xE0, 0xFE, 0x00, 0x0F, 0xE0, + 0xFE, 0x00, 0x1F, 0xC0, 0xFE, 0x00, 0x1F, 0xC0, 0xFF, 0x00, 0x3F, 0x80, + 0xFF, 0xC0, 0xFF, 0x80, 0x7F, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0xFE, 0x00, + 0x3F, 0xFF, 0xFC, 0x00, 0x1F, 0xFF, 0xF8, 0x00, 0x0F, 0xFF, 0xE0, 0x00, + 0x01, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x03, 0xF9, 0xFC, 0x00, 0x0F, 0xE7, + 0xF0, 0x00, 0x7F, 0x1F, 0xC0, 0x01, 0xFC, 0x7F, 0x00, 0x0F, 0xE1, 0xFC, + 0x00, 0x3F, 0x87, 0xF0, 0x01, 0xFC, 0x1F, 0xC0, 0x07, 0xF0, 0x3F, 0x00, + 0x3F, 0x80, 0xFC, 0x00, 0xFC, 0x03, 0xF0, 0x07, 0xF0, 0x0F, 0xC0, 0x1F, + 0x80, 0x3F, 0x80, 0xFE, 0x00, 0xFE, 0x03, 0xF0, 0x03, 0xF8, 0x1F, 0xC0, + 0x0F, 0xE0, 0x7E, 0x00, 0x1F, 0x83, 0xF8, 0x00, 0x7E, 0x0F, 0xC0, 0x01, + 0xF8, 0x7E, 0x00, 0x07, 0xE1, 0xF8, 0x00, 0x1F, 0x8F, 0xC0, 0x00, 0x7E, + 0x3F, 0x00, 0x01, 0xF9, 0xF8, 0x00, 0x07, 0xE7, 0xE0, 0x00, 0x0F, 0xFF, + 0x00, 0x00, 0x3F, 0xFC, 0x00, 0x00, 0xFF, 0xE0, 0x00, 0x03, 0xFF, 0x00, + 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x00, 0xFF, 0x80, 0x00, + 0x01, 0xFC, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x00, + 0xFE, 0x00, 0x7F, 0x80, 0x1F, 0xFF, 0xC0, 0x0F, 0xF0, 0x03, 0xFB, 0xF8, + 0x01, 0xFE, 0x00, 0x7F, 0x7F, 0x00, 0x7F, 0xC0, 0x1F, 0xCF, 0xE0, 0x0F, + 0xF8, 0x03, 0xF9, 0xFC, 0x03, 0xFF, 0x00, 0xFE, 0x3F, 0x80, 0x7F, 0xE0, + 0x1F, 0xC7, 0xF0, 0x1F, 0xFC, 0x07, 0xF0, 0x7E, 0x03, 0xFF, 0x80, 0xFE, + 0x0F, 0xC0, 0x7D, 0xF0, 0x1F, 0x81, 0xF8, 0x1F, 0xBE, 0x07, 0xF0, 0x3F, + 0x03, 0xE7, 0xC0, 0xFC, 0x07, 0xE0, 0xFC, 0xF8, 0x3F, 0x80, 0xFC, 0x1F, + 0x1F, 0x07, 0xE0, 0x1F, 0x83, 0xE3, 0xE0, 0xFC, 0x03, 0xF0, 0xFC, 0x7C, + 0x3F, 0x00, 0x7E, 0x1F, 0x0F, 0x87, 0xE0, 0x0F, 0xC7, 0xE1, 0xF1, 0xF8, + 0x01, 0xF8, 0xF8, 0x3E, 0x3F, 0x00, 0x3F, 0x3F, 0x07, 0xCF, 0xC0, 0x07, + 0xE7, 0xC0, 0xF9, 0xF8, 0x00, 0xFC, 0xF8, 0x1F, 0x3E, 0x00, 0x1F, 0xBE, + 0x03, 0xEF, 0xC0, 0x01, 0xF7, 0xC0, 0x7D, 0xF0, 0x00, 0x3F, 0xF8, 0x0F, + 0xFE, 0x00, 0x07, 0xFE, 0x01, 0xFF, 0x80, 0x00, 0xFF, 0xC0, 0x3F, 0xF0, + 0x00, 0x1F, 0xF0, 0x07, 0xFC, 0x00, 0x03, 0xFE, 0x00, 0xFF, 0x80, 0x00, + 0x7F, 0x80, 0x1F, 0xE0, 0x00, 0x0F, 0xF0, 0x03, 0xFC, 0x00, 0x01, 0xFC, + 0x00, 0x7F, 0x80, 0x00, 0x3F, 0x80, 0x0F, 0xE0, 0x00, 0x07, 0xF0, 0x01, + 0xFC, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x07, 0xFC, 0x00, 0xFF, + 0x00, 0x1F, 0xE0, 0x07, 0xF8, 0x00, 0xFF, 0x00, 0x7F, 0x80, 0x03, 0xFC, + 0x07, 0xF8, 0x00, 0x1F, 0xE0, 0x7F, 0x80, 0x00, 0xFF, 0x07, 0xF8, 0x00, + 0x03, 0xFC, 0x3F, 0x80, 0x00, 0x1F, 0xE3, 0xF8, 0x00, 0x00, 0x7F, 0x3F, + 0xC0, 0x00, 0x03, 0xFF, 0xFC, 0x00, 0x00, 0x1F, 0xFF, 0xC0, 0x00, 0x00, + 0x7F, 0xFC, 0x00, 0x00, 0x03, 0xFF, 0xC0, 0x00, 0x00, 0x0F, 0xFC, 0x00, + 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x1F, + 0xF0, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, + 0x00, 0xFF, 0xF0, 0x00, 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0x00, 0xFF, 0xFE, + 0x00, 0x00, 0x0F, 0xE7, 0xF0, 0x00, 0x00, 0xFF, 0x3F, 0xC0, 0x00, 0x0F, + 0xF1, 0xFE, 0x00, 0x00, 0xFF, 0x07, 0xF8, 0x00, 0x07, 0xF0, 0x3F, 0xC0, + 0x00, 0x7F, 0x01, 0xFE, 0x00, 0x07, 0xF8, 0x07, 0xF8, 0x00, 0x7F, 0x80, + 0x3F, 0xC0, 0x07, 0xF8, 0x01, 0xFF, 0x00, 0x7F, 0x80, 0x07, 0xF8, 0x07, + 0xFC, 0x00, 0x3F, 0xE0, 0x00, 0xFF, 0x00, 0x07, 0xF7, 0xF8, 0x00, 0x7F, + 0xBF, 0xC0, 0x07, 0xF8, 0xFE, 0x00, 0x3F, 0x87, 0xF8, 0x03, 0xFC, 0x3F, + 0xC0, 0x3F, 0xC0, 0xFE, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x3F, 0xC1, + 0xFE, 0x00, 0xFE, 0x0F, 0xE0, 0x07, 0xF0, 0xFE, 0x00, 0x3F, 0x8F, 0xE0, + 0x00, 0xFE, 0x7F, 0x00, 0x07, 0xF7, 0xF0, 0x00, 0x3F, 0xFF, 0x00, 0x01, + 0xFF, 0xF8, 0x00, 0x07, 0xFF, 0x80, 0x00, 0x3F, 0xF8, 0x00, 0x01, 0xFF, + 0x80, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x01, 0xFC, 0x00, + 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, + 0x3F, 0x80, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x7F, + 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x01, 0xFC, 0x00, + 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0x80, 0xFF, 0xFF, 0xFF, 0xC0, 0x7F, 0xFF, 0xFF, 0xE0, 0x3F, 0xFF, + 0xFF, 0xF0, 0x1F, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, 0xF8, 0x00, 0x00, + 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, + 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, + 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, + 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, + 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, + 0x07, 0xFC, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, + 0x07, 0xF8, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, + 0x07, 0xF8, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, 0xFF, + 0x01, 0xFF, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFF, 0xC0, 0x7F, 0xFF, 0xFF, + 0xC0, 0x3F, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x7F, 0xF8, 0x03, 0xFF, 0x80, + 0x1F, 0xFC, 0x00, 0xFF, 0xE0, 0x0F, 0xFF, 0x00, 0x7E, 0x00, 0x03, 0xF0, + 0x00, 0x1F, 0x80, 0x01, 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0x7E, 0x00, 0x03, + 0xF0, 0x00, 0x1F, 0x80, 0x01, 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0x7E, 0x00, + 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x01, 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0x7E, + 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x80, 0x01, 0xF8, 0x00, 0x0F, 0xC0, 0x00, + 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x80, 0x01, 0xF8, 0x00, 0x0F, 0xC0, + 0x00, 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x01, 0xF8, 0x00, 0x0F, + 0xC0, 0x00, 0x7E, 0x00, 0x07, 0xF0, 0x00, 0x3F, 0x00, 0x01, 0xFF, 0xC0, + 0x0F, 0xFE, 0x00, 0x7F, 0xF0, 0x07, 0xFF, 0x80, 0x3F, 0xFC, 0x00, 0x81, + 0xC3, 0xC7, 0x8F, 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xC3, 0xC7, 0x8F, 0x1E, + 0x1C, 0x38, 0x70, 0xE1, 0xC3, 0x87, 0x8F, 0x1E, 0x3C, 0x38, 0x70, 0xE1, + 0xC3, 0x87, 0x0F, 0x1E, 0x3C, 0x78, 0xF0, 0x00, 0x7F, 0xF8, 0x03, 0xFF, + 0xC0, 0x1F, 0xFC, 0x00, 0xFF, 0xE0, 0x07, 0xFF, 0x00, 0x01, 0xF8, 0x00, + 0x1F, 0xC0, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x3F, 0x00, 0x01, 0xF8, + 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x3F, 0x00, 0x03, + 0xF8, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x3F, 0x00, + 0x03, 0xF8, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x7F, + 0x00, 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, + 0x7F, 0x00, 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, + 0x00, 0x7F, 0x00, 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x01, 0xFF, + 0xE0, 0x0F, 0xFE, 0x00, 0x7F, 0xF0, 0x03, 0xFF, 0x80, 0x3F, 0xFC, 0x00, + 0x00, 0x1F, 0x80, 0x00, 0xFE, 0x00, 0x0F, 0xF0, 0x00, 0x7F, 0x80, 0x07, + 0xFC, 0x00, 0x7F, 0xE0, 0x03, 0xFF, 0x80, 0x3E, 0xFC, 0x01, 0xF3, 0xE0, + 0x1F, 0x1F, 0x01, 0xF8, 0xF8, 0x0F, 0x87, 0xE0, 0xFC, 0x3F, 0x07, 0xC0, + 0xF8, 0x7C, 0x07, 0xC7, 0xE0, 0x3E, 0x3E, 0x01, 0xFB, 0xF0, 0x0F, 0xDF, + 0x00, 0x3F, 0xF0, 0x01, 0xF0, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xE0, 0xF8, 0xF0, 0xF1, 0xE1, + 0xC3, 0xC3, 0x80, 0x00, 0x1F, 0xF0, 0x00, 0x7F, 0xFF, 0x00, 0xFF, 0xFF, + 0xC0, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xF8, 0x7F, 0x03, 0xFC, 0x3F, 0x00, + 0xFE, 0x1F, 0x80, 0x7E, 0x00, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0x80, 0x1F, + 0xFF, 0xC0, 0x7F, 0xFF, 0xC0, 0xFF, 0xFF, 0xE0, 0xFF, 0xF7, 0xF0, 0xFF, + 0x83, 0xF8, 0xFF, 0x01, 0xF8, 0x7F, 0x00, 0xFC, 0x7F, 0x00, 0xFE, 0x3F, + 0x80, 0x7F, 0x1F, 0xC0, 0x7F, 0x8F, 0xF0, 0xFF, 0x87, 0xFF, 0xFF, 0xC3, + 0xFF, 0xFF, 0xE0, 0xFF, 0xF7, 0xF8, 0x3F, 0xF3, 0xFC, 0x07, 0xE0, 0x00, + 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x01, + 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xE0, 0x00, 0x00, 0xFC, 0x00, + 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, 0xFE, 0x3F, 0x80, 0x1F, + 0x9F, 0xFC, 0x03, 0xF7, 0xFF, 0xC0, 0xFF, 0xFF, 0xF8, 0x1F, 0xFF, 0xFF, + 0x83, 0xFF, 0x0F, 0xF0, 0x7F, 0x80, 0xFF, 0x0F, 0xE0, 0x1F, 0xE3, 0xF8, + 0x01, 0xFC, 0x7F, 0x00, 0x3F, 0x8F, 0xC0, 0x07, 0xF1, 0xF8, 0x00, 0xFE, + 0x7F, 0x00, 0x1F, 0xCF, 0xC0, 0x03, 0xF9, 0xF8, 0x00, 0xFE, 0x3F, 0x00, + 0x1F, 0xC7, 0xE0, 0x03, 0xF9, 0xFC, 0x00, 0xFE, 0x3F, 0xC0, 0x3F, 0xC7, + 0xF8, 0x0F, 0xF0, 0xFF, 0x83, 0xFC, 0x1F, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, + 0xC0, 0xFF, 0xFF, 0xF0, 0x1F, 0x9F, 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x00, + 0x00, 0x1F, 0xE0, 0x00, 0x3F, 0xFC, 0x00, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, + 0xE0, 0x7F, 0xFF, 0xF0, 0x7F, 0x83, 0xFC, 0x7F, 0x00, 0xFE, 0x3F, 0x00, + 0x7F, 0x3F, 0x80, 0x3F, 0x9F, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x0F, 0xE0, + 0x00, 0x07, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0x01, 0xFC, + 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x7F, 0x3F, 0x80, 0x3F, 0x9F, + 0xE0, 0x3F, 0x87, 0xF8, 0x3F, 0x83, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, + 0x3F, 0xFF, 0xC0, 0x0F, 0xFF, 0x80, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, + 0x03, 0xF8, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x07, + 0xE0, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x1F, 0xC0, + 0x00, 0x00, 0xFC, 0x00, 0x00, 0x0F, 0xE0, 0x01, 0xFC, 0x7F, 0x00, 0x3F, + 0xF3, 0xF8, 0x03, 0xFF, 0xDF, 0x80, 0x7F, 0xFF, 0xFC, 0x07, 0xFF, 0xFF, + 0xE0, 0x3F, 0xC3, 0xFF, 0x03, 0xFC, 0x0F, 0xF8, 0x3F, 0xC0, 0x3F, 0x81, + 0xFC, 0x01, 0xFC, 0x1F, 0xC0, 0x07, 0xE0, 0xFE, 0x00, 0x3F, 0x07, 0xF0, + 0x03, 0xF8, 0x7F, 0x00, 0x1F, 0x83, 0xF8, 0x00, 0xFC, 0x1F, 0xC0, 0x07, + 0xE0, 0xFE, 0x00, 0x3F, 0x07, 0xF0, 0x03, 0xF0, 0x3F, 0x80, 0x3F, 0x81, + 0xFC, 0x01, 0xFC, 0x0F, 0xF0, 0x1F, 0xE0, 0x3F, 0xC3, 0xFF, 0x01, 0xFF, + 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xFC, 0x00, 0xFF, 0xCF, + 0xE0, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x7F, 0xFC, 0x00, + 0x7F, 0xFF, 0x00, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xF0, 0x7F, 0x87, 0xF8, + 0x7F, 0x01, 0xFE, 0x7F, 0x00, 0x7F, 0x3F, 0x80, 0x3F, 0xBF, 0x80, 0x1F, + 0xDF, 0xC0, 0x0F, 0xEF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFD, 0xFC, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, + 0x00, 0x3F, 0x80, 0x3F, 0x9F, 0xE0, 0x3F, 0x87, 0xF8, 0x3F, 0xC3, 0xFF, + 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, 0x80, 0x0F, 0xFF, 0x80, 0x00, + 0xFE, 0x00, 0x00, 0x00, 0x1F, 0xC0, 0x1F, 0xF0, 0x0F, 0xF8, 0x07, 0xFE, + 0x01, 0xFF, 0x80, 0xFE, 0x00, 0x3F, 0x80, 0x0F, 0xC0, 0x03, 0xF0, 0x01, + 0xFC, 0x03, 0xFF, 0xF1, 0xFF, 0xF8, 0x7F, 0xFE, 0x1F, 0xFF, 0x80, 0xFE, + 0x00, 0x3F, 0x80, 0x0F, 0xE0, 0x03, 0xF0, 0x00, 0xFC, 0x00, 0x7F, 0x00, + 0x1F, 0xC0, 0x07, 0xE0, 0x01, 0xF8, 0x00, 0xFE, 0x00, 0x3F, 0x80, 0x0F, + 0xE0, 0x03, 0xF0, 0x00, 0xFC, 0x00, 0x7F, 0x00, 0x1F, 0xC0, 0x07, 0xF0, + 0x01, 0xF8, 0x00, 0x7E, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x07, 0xC3, 0xF8, + 0x01, 0xFF, 0x9F, 0x80, 0x1F, 0xFE, 0xFC, 0x01, 0xFF, 0xFF, 0xE0, 0x1F, + 0xFF, 0xFF, 0x01, 0xFE, 0x1F, 0xF8, 0x1F, 0xE0, 0x3F, 0x80, 0xFE, 0x01, + 0xFC, 0x0F, 0xE0, 0x0F, 0xE0, 0x7F, 0x00, 0x3F, 0x07, 0xF0, 0x01, 0xF8, + 0x3F, 0x80, 0x0F, 0x81, 0xF8, 0x00, 0x7C, 0x1F, 0xC0, 0x07, 0xE0, 0xFE, + 0x00, 0x3F, 0x07, 0xF0, 0x01, 0xF0, 0x3F, 0x80, 0x1F, 0x81, 0xFC, 0x00, + 0xFC, 0x0F, 0xE0, 0x0F, 0xE0, 0x7F, 0x80, 0xFF, 0x03, 0xFE, 0x1F, 0xF0, + 0x0F, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0xFC, 0x01, 0xFF, 0xF7, 0xE0, 0x07, + 0xFE, 0x7F, 0x00, 0x0F, 0xC3, 0xF0, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x01, + 0xFC, 0x0F, 0xE0, 0x0F, 0xC0, 0x7F, 0x00, 0xFE, 0x03, 0xFC, 0x1F, 0xE0, + 0x1F, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xE0, 0x01, 0xFF, 0xFC, 0x00, 0x01, + 0xFF, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xE0, + 0x00, 0x00, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, + 0xFE, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xFE, 0x0F, + 0xC0, 0x1F, 0xCF, 0xFE, 0x03, 0xFB, 0xFF, 0xE0, 0x7F, 0xFF, 0xFE, 0x0F, + 0xFF, 0xFF, 0xC3, 0xFF, 0x07, 0xF8, 0x7F, 0x80, 0x7F, 0x0F, 0xE0, 0x0F, + 0xE1, 0xFC, 0x01, 0xFC, 0x7F, 0x00, 0x3F, 0x0F, 0xE0, 0x07, 0xE1, 0xFC, + 0x01, 0xFC, 0x3F, 0x00, 0x3F, 0x87, 0xE0, 0x07, 0xF1, 0xFC, 0x00, 0xFC, + 0x3F, 0x80, 0x1F, 0x87, 0xF0, 0x07, 0xF0, 0xFC, 0x00, 0xFE, 0x1F, 0x80, + 0x1F, 0xC7, 0xF0, 0x03, 0xF0, 0xFE, 0x00, 0x7E, 0x1F, 0xC0, 0x1F, 0xC3, + 0xF0, 0x03, 0xF8, 0xFE, 0x00, 0x7F, 0x1F, 0xC0, 0x0F, 0xC0, 0x01, 0xFC, + 0x07, 0xF0, 0x1F, 0x80, 0x7E, 0x03, 0xF8, 0x0F, 0xE0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xE0, 0x3F, 0x80, 0xFE, + 0x03, 0xF8, 0x0F, 0xC0, 0x3F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7E, + 0x03, 0xF8, 0x0F, 0xE0, 0x3F, 0x80, 0xFC, 0x03, 0xF0, 0x1F, 0xC0, 0x7F, + 0x01, 0xFC, 0x07, 0xE0, 0x1F, 0x80, 0xFE, 0x03, 0xF8, 0x00, 0x00, 0x0F, + 0xE0, 0x01, 0xFC, 0x00, 0x3F, 0x80, 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x3F, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0xFE, + 0x00, 0x1F, 0xC0, 0x03, 0xF8, 0x00, 0x7E, 0x00, 0x1F, 0xC0, 0x03, 0xF8, + 0x00, 0x7F, 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x7F, 0x00, 0x0F, 0xE0, + 0x01, 0xFC, 0x00, 0x3F, 0x00, 0x07, 0xE0, 0x01, 0xFC, 0x00, 0x3F, 0x80, + 0x07, 0xF0, 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x07, 0xF0, 0x00, 0xFE, 0x00, + 0x1F, 0x80, 0x03, 0xF0, 0x00, 0xFE, 0x00, 0x1F, 0xC0, 0x03, 0xF8, 0x00, + 0x7E, 0x00, 0x0F, 0xC0, 0x03, 0xF8, 0x03, 0xFF, 0x00, 0x7F, 0xC0, 0x0F, + 0xF8, 0x03, 0xFE, 0x00, 0x7E, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x1F, + 0x80, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0xF8, 0x00, + 0x00, 0x3F, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x07, + 0xF0, 0x00, 0x00, 0x7F, 0x00, 0xFE, 0x07, 0xE0, 0x3F, 0xC0, 0x7E, 0x07, + 0xF8, 0x0F, 0xE0, 0xFF, 0x00, 0xFE, 0x1F, 0xC0, 0x0F, 0xE3, 0xF8, 0x00, + 0xFC, 0x7F, 0x00, 0x0F, 0xCF, 0xE0, 0x01, 0xFD, 0xFC, 0x00, 0x1F, 0xFF, + 0x80, 0x01, 0xFF, 0xF8, 0x00, 0x1F, 0xFF, 0x80, 0x03, 0xFF, 0xFC, 0x00, + 0x3F, 0xFF, 0xC0, 0x03, 0xFE, 0xFE, 0x00, 0x3F, 0xCF, 0xE0, 0x03, 0xF0, + 0xFE, 0x00, 0x7F, 0x07, 0xF0, 0x07, 0xF0, 0x7F, 0x00, 0x7F, 0x07, 0xF8, + 0x07, 0xE0, 0x3F, 0x80, 0x7E, 0x03, 0xF8, 0x0F, 0xE0, 0x3F, 0xC0, 0xFE, + 0x01, 0xFC, 0x0F, 0xC0, 0x1F, 0xE0, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0x80, + 0x7E, 0x03, 0xF8, 0x0F, 0xE0, 0x3F, 0x80, 0xFC, 0x03, 0xF0, 0x1F, 0xC0, + 0x7F, 0x01, 0xFC, 0x07, 0xE0, 0x3F, 0x80, 0xFE, 0x03, 0xF8, 0x0F, 0xC0, + 0x3F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7E, 0x03, 0xF8, 0x0F, 0xE0, + 0x3F, 0x80, 0xFC, 0x03, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xE0, + 0x1F, 0x80, 0xFE, 0x03, 0xF8, 0x00, 0x07, 0xF0, 0xFC, 0x03, 0xF0, 0x07, + 0xE3, 0xFF, 0x0F, 0xFC, 0x07, 0xEF, 0xFF, 0x3F, 0xFE, 0x0F, 0xFF, 0xFF, + 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xF8, 0x7F, 0xF0, 0xFF, + 0x0F, 0xE0, 0x3F, 0xC0, 0x7F, 0x0F, 0xE0, 0x3F, 0x80, 0x7F, 0x1F, 0xC0, + 0x3F, 0x80, 0x7E, 0x1F, 0xC0, 0x3F, 0x00, 0x7E, 0x1F, 0xC0, 0x3F, 0x00, + 0xFE, 0x1F, 0x80, 0x7F, 0x00, 0xFE, 0x3F, 0x80, 0x7F, 0x00, 0xFC, 0x3F, + 0x80, 0x7F, 0x00, 0xFC, 0x3F, 0x80, 0x7E, 0x01, 0xFC, 0x3F, 0x00, 0x7E, + 0x01, 0xFC, 0x3F, 0x00, 0xFE, 0x01, 0xFC, 0x7F, 0x00, 0xFE, 0x01, 0xF8, + 0x7F, 0x00, 0xFE, 0x01, 0xF8, 0x7F, 0x00, 0xFC, 0x03, 0xF8, 0x7E, 0x01, + 0xFC, 0x03, 0xF8, 0x7E, 0x01, 0xFC, 0x03, 0xF8, 0xFE, 0x01, 0xFC, 0x03, + 0xF0, 0xFE, 0x01, 0xF8, 0x03, 0xF0, 0xFE, 0x01, 0xF8, 0x07, 0xF0, 0x07, + 0xF0, 0xFE, 0x00, 0xFE, 0x7F, 0xF0, 0x1F, 0x9F, 0xFF, 0x03, 0xFF, 0xFF, + 0xF0, 0xFF, 0xFF, 0xFE, 0x1F, 0xF8, 0x3F, 0xC3, 0xFC, 0x03, 0xF8, 0x7F, + 0x00, 0x7F, 0x0F, 0xE0, 0x0F, 0xE3, 0xF8, 0x01, 0xF8, 0x7F, 0x00, 0x3F, + 0x0F, 0xC0, 0x0F, 0xE1, 0xF8, 0x01, 0xFC, 0x7F, 0x00, 0x3F, 0x8F, 0xE0, + 0x07, 0xE1, 0xFC, 0x00, 0xFC, 0x3F, 0x00, 0x3F, 0x87, 0xE0, 0x07, 0xF1, + 0xFC, 0x00, 0xFE, 0x3F, 0x80, 0x1F, 0x87, 0xF0, 0x03, 0xF0, 0xFC, 0x00, + 0xFE, 0x3F, 0x80, 0x1F, 0xC7, 0xF0, 0x03, 0xF8, 0xFE, 0x00, 0x7E, 0x00, + 0x00, 0x1F, 0xE0, 0x00, 0x1F, 0xFF, 0x00, 0x1F, 0xFF, 0xE0, 0x0F, 0xFF, + 0xFC, 0x07, 0xFF, 0xFF, 0x83, 0xFC, 0x1F, 0xE1, 0xFE, 0x03, 0xFC, 0xFF, + 0x00, 0xFF, 0x3F, 0x80, 0x1F, 0xDF, 0xC0, 0x07, 0xF7, 0xF0, 0x01, 0xFD, + 0xFC, 0x00, 0x7F, 0xFE, 0x00, 0x1F, 0xFF, 0x80, 0x07, 0xFF, 0xE0, 0x03, + 0xFB, 0xF8, 0x00, 0xFE, 0xFE, 0x00, 0x3F, 0xBF, 0x80, 0x1F, 0xCF, 0xF0, + 0x0F, 0xF3, 0xFC, 0x07, 0xF8, 0x7F, 0x83, 0xFC, 0x1F, 0xFF, 0xFE, 0x03, + 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0x80, 0x0F, 0xFF, 0x80, 0x00, 0x7F, 0x00, + 0x00, 0x01, 0xFC, 0x3F, 0x00, 0x0F, 0xCF, 0xFE, 0x00, 0x7E, 0xFF, 0xF8, + 0x07, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, 0xFF, 0x01, 0xFF, 0x87, 0xF8, 0x0F, + 0xF0, 0x1F, 0xE0, 0xFF, 0x00, 0xFF, 0x07, 0xF0, 0x03, 0xF8, 0x3F, 0x80, + 0x1F, 0xC1, 0xF8, 0x00, 0xFE, 0x0F, 0xC0, 0x07, 0xF0, 0xFE, 0x00, 0x3F, + 0x87, 0xF0, 0x01, 0xFC, 0x3F, 0x00, 0x1F, 0xC1, 0xF8, 0x00, 0xFE, 0x1F, + 0xC0, 0x07, 0xF0, 0xFE, 0x00, 0x7F, 0x07, 0xF8, 0x07, 0xF8, 0x3F, 0xC0, + 0x7F, 0x81, 0xFF, 0x87, 0xF8, 0x1F, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFC, + 0x07, 0xF7, 0xFF, 0xC0, 0x3F, 0x1F, 0xF8, 0x01, 0xF8, 0x7F, 0x00, 0x1F, + 0xC0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x3F, 0x00, + 0x00, 0x03, 0xF8, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0xFE, 0x00, 0x00, + 0x07, 0xE0, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x87, 0xF0, + 0x0F, 0xFE, 0x7F, 0x01, 0xFF, 0xF7, 0xE0, 0x3F, 0xFF, 0x7E, 0x07, 0xFF, + 0xFF, 0xE0, 0xFF, 0x07, 0xFE, 0x1F, 0xE0, 0x3F, 0xE3, 0xFC, 0x03, 0xFC, + 0x3F, 0x80, 0x1F, 0xC7, 0xF0, 0x01, 0xFC, 0x7F, 0x00, 0x1F, 0xC7, 0xF0, + 0x01, 0xF8, 0xFE, 0x00, 0x1F, 0x8F, 0xE0, 0x03, 0xF8, 0xFE, 0x00, 0x3F, + 0x8F, 0xE0, 0x03, 0xF8, 0xFE, 0x00, 0x7F, 0x0F, 0xE0, 0x07, 0xF0, 0xFE, + 0x00, 0xFF, 0x0F, 0xF0, 0x1F, 0xF0, 0x7F, 0x87, 0xFF, 0x07, 0xFF, 0xFF, + 0xE0, 0x3F, 0xFF, 0x7E, 0x03, 0xFF, 0xEF, 0xE0, 0x1F, 0xFC, 0xFE, 0x00, + 0x7F, 0x0F, 0xC0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x01, + 0xFC, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x1F, 0x80, + 0x00, 0x03, 0xF8, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0xF8, 0x00, 0x07, + 0xF0, 0xF0, 0x7F, 0x3F, 0x07, 0xE7, 0xE0, 0x7E, 0xFE, 0x0F, 0xFF, 0xE0, + 0xFF, 0xFE, 0x0F, 0xFC, 0x00, 0xFF, 0x00, 0x0F, 0xE0, 0x01, 0xFC, 0x00, + 0x1F, 0xC0, 0x01, 0xF8, 0x00, 0x1F, 0x80, 0x03, 0xF8, 0x00, 0x3F, 0x80, + 0x03, 0xF8, 0x00, 0x3F, 0x00, 0x03, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xF0, + 0x00, 0x7F, 0x00, 0x07, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, + 0x00, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0xFF, 0xF8, 0x03, 0xFF, 0xFC, 0x07, + 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0x0F, 0xE0, 0xFF, 0x1F, 0xC0, 0x7F, 0x1F, + 0xC0, 0x7F, 0x1F, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x1F, 0xFF, 0xC0, 0x0F, + 0xFF, 0xF0, 0x07, 0xFF, 0xF8, 0x03, 0xFF, 0xFC, 0x00, 0x7F, 0xFE, 0x00, + 0x0F, 0xFE, 0x00, 0x03, 0xFE, 0x00, 0x00, 0xFE, 0xFC, 0x00, 0xFE, 0xFE, + 0x00, 0xFE, 0xFF, 0x03, 0xFC, 0x7F, 0xFF, 0xF8, 0x7F, 0xFF, 0xF8, 0x3F, + 0xFF, 0xE0, 0x1F, 0xFF, 0xC0, 0x03, 0xFE, 0x00, 0x03, 0xF0, 0x1F, 0xC0, + 0x7F, 0x01, 0xFC, 0x07, 0xE0, 0x3F, 0x80, 0xFE, 0x1F, 0xFF, 0x7F, 0xFD, + 0xFF, 0xFF, 0xFF, 0xC7, 0xF0, 0x1F, 0xC0, 0x7E, 0x01, 0xF8, 0x0F, 0xE0, + 0x3F, 0x80, 0xFE, 0x03, 0xF0, 0x0F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xE0, + 0x1F, 0x80, 0xFE, 0x03, 0xF8, 0x0F, 0xE0, 0x3F, 0xF0, 0xFF, 0xC3, 0xFF, + 0x07, 0xFC, 0x0F, 0xE0, 0x0F, 0xC0, 0x0F, 0xE1, 0xF8, 0x01, 0xFC, 0x7F, + 0x00, 0x3F, 0x0F, 0xE0, 0x0F, 0xE1, 0xFC, 0x01, 0xFC, 0x3F, 0x00, 0x3F, + 0x87, 0xE0, 0x07, 0xE1, 0xFC, 0x00, 0xFC, 0x3F, 0x80, 0x3F, 0x87, 0xF0, + 0x07, 0xF0, 0xFC, 0x00, 0xFE, 0x1F, 0x80, 0x1F, 0x87, 0xF0, 0x03, 0xF0, + 0xFE, 0x00, 0xFE, 0x1F, 0x80, 0x1F, 0xC3, 0xF0, 0x03, 0xF0, 0xFE, 0x00, + 0x7E, 0x1F, 0xC0, 0x1F, 0xC3, 0xF8, 0x07, 0xF8, 0x7F, 0x01, 0xFF, 0x0F, + 0xF0, 0x7F, 0xC1, 0xFF, 0xFF, 0xF8, 0x3F, 0xFF, 0xFF, 0x03, 0xFF, 0xEF, + 0xE0, 0x3F, 0xF9, 0xFC, 0x01, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x7F, 0x7F, + 0x00, 0x3F, 0xBF, 0x80, 0x3F, 0x8F, 0xC0, 0x1F, 0xC7, 0xE0, 0x1F, 0xC3, + 0xF0, 0x0F, 0xC1, 0xFC, 0x0F, 0xE0, 0xFE, 0x07, 0xE0, 0x7F, 0x07, 0xF0, + 0x3F, 0x83, 0xF0, 0x0F, 0xC3, 0xF8, 0x07, 0xE1, 0xF8, 0x03, 0xF1, 0xFC, + 0x01, 0xF8, 0xFC, 0x00, 0xFC, 0xFC, 0x00, 0x7E, 0x7E, 0x00, 0x3F, 0x7E, + 0x00, 0x0F, 0xBF, 0x00, 0x07, 0xFF, 0x00, 0x03, 0xFF, 0x80, 0x01, 0xFF, + 0x80, 0x00, 0xFF, 0x80, 0x00, 0x7F, 0xC0, 0x00, 0x3F, 0xC0, 0x00, 0x1F, + 0xE0, 0x00, 0x00, 0xFE, 0x03, 0xF8, 0x0F, 0xFF, 0xC0, 0x7F, 0x01, 0xFF, + 0xF8, 0x1F, 0xE0, 0x3F, 0x7F, 0x03, 0xFC, 0x0F, 0xEF, 0xE0, 0xFF, 0x81, + 0xF9, 0xFC, 0x1F, 0xF0, 0x7F, 0x3F, 0x83, 0xFE, 0x0F, 0xC3, 0xF0, 0xFF, + 0xC3, 0xF8, 0x7E, 0x1E, 0xF8, 0x7E, 0x0F, 0xC7, 0xDF, 0x1F, 0xC1, 0xF8, + 0xFB, 0xE3, 0xF0, 0x3F, 0x1E, 0x7C, 0x7E, 0x07, 0xE7, 0xCF, 0x9F, 0x80, + 0xFC, 0xF1, 0xF3, 0xF0, 0x1F, 0xBE, 0x3E, 0xFC, 0x03, 0xF7, 0x87, 0xDF, + 0x80, 0x7E, 0xF0, 0xFF, 0xE0, 0x0F, 0xFE, 0x1F, 0xFC, 0x01, 0xFF, 0x83, + 0xFF, 0x00, 0x3F, 0xF0, 0x7F, 0xE0, 0x07, 0xFC, 0x0F, 0xF8, 0x00, 0x7F, + 0x81, 0xFF, 0x00, 0x0F, 0xF0, 0x3F, 0xC0, 0x01, 0xFC, 0x07, 0xF8, 0x00, + 0x3F, 0x80, 0xFE, 0x00, 0x00, 0x03, 0xFC, 0x07, 0xF8, 0x1F, 0xE0, 0x7F, + 0x80, 0x7F, 0x03, 0xF8, 0x03, 0xF8, 0x3F, 0x80, 0x1F, 0xE3, 0xF8, 0x00, + 0x7F, 0x3F, 0x80, 0x03, 0xF9, 0xFC, 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0x7F, + 0xFC, 0x00, 0x01, 0xFF, 0xC0, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x7F, 0xC0, + 0x00, 0x01, 0xFC, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x01, 0xFF, 0x80, 0x00, + 0x1F, 0xFE, 0x00, 0x01, 0xFF, 0xF0, 0x00, 0x1F, 0xDF, 0xC0, 0x01, 0xFC, + 0xFE, 0x00, 0x1F, 0xE7, 0xF8, 0x00, 0xFE, 0x1F, 0xC0, 0x0F, 0xE0, 0xFE, + 0x00, 0xFF, 0x07, 0xF8, 0x0F, 0xF0, 0x1F, 0xC0, 0xFF, 0x00, 0xFF, 0x00, + 0x0F, 0xE0, 0x03, 0xF0, 0x7F, 0x00, 0x3F, 0x83, 0xF8, 0x01, 0xF8, 0x1F, + 0xC0, 0x1F, 0xC0, 0xFE, 0x00, 0xFC, 0x03, 0xF8, 0x0F, 0xE0, 0x1F, 0xC0, + 0x7E, 0x00, 0xFE, 0x07, 0xE0, 0x07, 0xF0, 0x3F, 0x00, 0x3F, 0x83, 0xF0, + 0x01, 0xFC, 0x1F, 0x80, 0x0F, 0xE1, 0xF8, 0x00, 0x3F, 0x0F, 0xC0, 0x01, + 0xF8, 0xFC, 0x00, 0x0F, 0xC7, 0xC0, 0x00, 0x7F, 0x7E, 0x00, 0x03, 0xFB, + 0xE0, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0xFF, 0xF0, 0x00, 0x03, 0xFF, 0x80, + 0x00, 0x1F, 0xF8, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x07, 0xFC, 0x00, 0x00, + 0x3F, 0xC0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x7F, + 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x03, 0xF8, 0x00, + 0x01, 0xFF, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x07, + 0xF8, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xC0, 0xFF, + 0xFF, 0xF0, 0x3F, 0xFF, 0xF8, 0x1F, 0xFF, 0xFE, 0x07, 0xFF, 0xFF, 0x80, + 0x00, 0x3F, 0xC0, 0x00, 0x1F, 0xE0, 0x00, 0x0F, 0xF0, 0x00, 0x07, 0xF8, + 0x00, 0x03, 0xFC, 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x7F, + 0x80, 0x00, 0x3F, 0xC0, 0x00, 0x1F, 0xE0, 0x00, 0x0F, 0xF0, 0x00, 0x07, + 0xF8, 0x00, 0x03, 0xFC, 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, 0x00, 0x00, + 0x7F, 0xFF, 0xFC, 0x1F, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, + 0xE0, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0x0F, 0xC0, 0x0F, 0xF0, 0x07, 0xFC, + 0x01, 0xFE, 0x00, 0xFF, 0x80, 0x3E, 0x00, 0x0F, 0x80, 0x07, 0xE0, 0x01, + 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x03, 0xE0, 0x00, 0xF8, + 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x07, 0xE0, 0x01, 0xF0, 0x00, 0x7C, 0x00, + 0x3F, 0x00, 0x7F, 0x80, 0x1F, 0x80, 0x07, 0xE0, 0x03, 0xFC, 0x00, 0x3F, + 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x07, 0xC0, + 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x01, + 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x07, 0xF8, 0x01, 0xFE, 0x00, 0x7F, + 0x80, 0x0F, 0xE0, 0x01, 0xF8, 0x00, 0x00, 0x78, 0x03, 0xC0, 0x1C, 0x01, + 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1C, 0x01, 0xE0, 0x0F, 0x00, 0x78, + 0x03, 0xC0, 0x1C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x3C, 0x01, + 0xE0, 0x0F, 0x00, 0x78, 0x03, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, + 0x03, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0x80, 0x3C, 0x01, + 0xE0, 0x0F, 0x00, 0x70, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x70, + 0x07, 0x80, 0x3C, 0x00, 0x00, 0x7E, 0x00, 0x1F, 0xC0, 0x07, 0xF0, 0x01, + 0xFE, 0x00, 0x7F, 0x80, 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x1F, + 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x0F, 0x80, + 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xF0, 0x00, + 0xFF, 0x00, 0x1F, 0x80, 0x07, 0xE0, 0x07, 0xF8, 0x03, 0xF0, 0x00, 0xF8, + 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, + 0x1F, 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x1F, + 0x80, 0x07, 0xC0, 0x01, 0xF0, 0x07, 0xFC, 0x01, 0xFE, 0x00, 0xFF, 0x80, + 0x3F, 0xC0, 0x0F, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0xFF, 0x80, 0x07, 0xFF, + 0x03, 0xDF, 0xFE, 0x0F, 0xF0, 0x7F, 0xFB, 0x80, 0xFF, 0xE0, 0x01, 0xFF, + 0x00, 0x03, 0xF0}; + +const GFXglyph FreeSansBoldOblique24pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 13, 0, 1}, // 0x20 ' ' + {0, 14, 34, 16, 5, -33}, // 0x21 '!' + {60, 18, 12, 22, 8, -33}, // 0x22 '"' + {87, 29, 33, 26, 2, -31}, // 0x23 '#' + {207, 26, 42, 26, 3, -35}, // 0x24 '$' + {344, 36, 34, 42, 6, -32}, // 0x25 '%' + {497, 29, 35, 34, 4, -33}, // 0x26 '&' + {624, 7, 12, 11, 8, -33}, // 0x27 ''' + {635, 17, 44, 16, 4, -33}, // 0x28 '(' + {729, 17, 44, 16, 0, -34}, // 0x29 ')' + {823, 15, 15, 18, 7, -33}, // 0x2A '*' + {852, 24, 22, 27, 4, -21}, // 0x2B '+' + {918, 10, 15, 13, 1, -6}, // 0x2C ',' + {937, 14, 6, 16, 3, -15}, // 0x2D '-' + {948, 8, 7, 13, 3, -6}, // 0x2E '.' + {955, 20, 34, 13, 0, -32}, // 0x2F '/' + {1040, 25, 35, 26, 4, -33}, // 0x30 '0' + {1150, 17, 33, 26, 8, -32}, // 0x31 '1' + {1221, 29, 34, 26, 1, -33}, // 0x32 '2' + {1345, 26, 35, 26, 3, -33}, // 0x33 '3' + {1459, 25, 32, 26, 3, -31}, // 0x34 '4' + {1559, 27, 34, 26, 3, -32}, // 0x35 '5' + {1674, 25, 35, 26, 4, -33}, // 0x36 '6' + {1784, 26, 33, 26, 6, -32}, // 0x37 '7' + {1892, 26, 35, 26, 3, -33}, // 0x38 '8' + {2006, 25, 35, 26, 4, -33}, // 0x39 '9' + {2116, 12, 25, 16, 5, -24}, // 0x3A ':' + {2154, 14, 33, 16, 3, -24}, // 0x3B ';' + {2212, 26, 23, 27, 4, -22}, // 0x3C '<' + {2287, 26, 18, 27, 3, -19}, // 0x3D '=' + {2346, 26, 23, 27, 1, -21}, // 0x3E '>' + {2421, 24, 35, 29, 8, -34}, // 0x3F '?' + {2526, 45, 41, 46, 3, -34}, // 0x40 '@' + {2757, 32, 34, 34, 1, -33}, // 0x41 'A' + {2893, 32, 34, 34, 4, -33}, // 0x42 'B' + {3029, 32, 36, 34, 5, -34}, // 0x43 'C' + {3173, 32, 34, 34, 4, -33}, // 0x44 'D' + {3309, 32, 34, 31, 4, -33}, // 0x45 'E' + {3445, 32, 34, 29, 3, -33}, // 0x46 'F' + {3581, 33, 36, 37, 5, -34}, // 0x47 'G' + {3730, 35, 34, 34, 3, -33}, // 0x48 'H' + {3879, 14, 34, 13, 3, -33}, // 0x49 'I' + {3939, 27, 35, 26, 3, -33}, // 0x4A 'J' + {4058, 37, 34, 34, 3, -33}, // 0x4B 'K' + {4216, 24, 34, 29, 4, -33}, // 0x4C 'L' + {4318, 41, 34, 39, 3, -33}, // 0x4D 'M' + {4493, 35, 34, 34, 3, -33}, // 0x4E 'N' + {4642, 34, 36, 37, 5, -34}, // 0x4F 'O' + {4795, 31, 34, 31, 4, -33}, // 0x50 'P' + {4927, 34, 37, 37, 5, -34}, // 0x51 'Q' + {5085, 33, 34, 34, 4, -33}, // 0x52 'R' + {5226, 30, 36, 31, 4, -34}, // 0x53 'S' + {5361, 28, 34, 29, 7, -33}, // 0x54 'T' + {5480, 32, 35, 34, 6, -33}, // 0x55 'U' + {5620, 30, 34, 31, 8, -33}, // 0x56 'V' + {5748, 43, 34, 44, 8, -33}, // 0x57 'W' + {5931, 37, 34, 31, 1, -33}, // 0x58 'X' + {6089, 29, 34, 31, 9, -33}, // 0x59 'Y' + {6213, 33, 34, 29, 1, -33}, // 0x5A 'Z' + {6354, 21, 43, 16, 1, -33}, // 0x5B '[' + {6467, 7, 36, 13, 6, -34}, // 0x5C '\' + {6499, 21, 43, 16, -1, -33}, // 0x5D ']' + {6612, 21, 20, 27, 6, -32}, // 0x5E '^' + {6665, 29, 4, 26, -3, 6}, // 0x5F '_' + {6680, 7, 7, 16, 8, -35}, // 0x60 '`' + {6687, 25, 26, 26, 2, -24}, // 0x61 'a' + {6769, 27, 35, 29, 3, -33}, // 0x62 'b' + {6888, 25, 26, 26, 4, -24}, // 0x63 'c' + {6970, 29, 35, 29, 4, -33}, // 0x64 'd' + {7097, 25, 26, 26, 3, -24}, // 0x65 'e' + {7179, 18, 34, 16, 4, -33}, // 0x66 'f' + {7256, 29, 35, 29, 2, -24}, // 0x67 'g' + {7383, 27, 34, 29, 3, -33}, // 0x68 'h' + {7498, 14, 34, 13, 3, -33}, // 0x69 'i' + {7558, 19, 44, 13, -2, -33}, // 0x6A 'j' + {7663, 28, 34, 26, 3, -33}, // 0x6B 'k' + {7782, 14, 34, 13, 3, -33}, // 0x6C 'l' + {7842, 40, 25, 42, 3, -24}, // 0x6D 'm' + {7967, 27, 25, 29, 3, -24}, // 0x6E 'n' + {8052, 26, 26, 29, 4, -24}, // 0x6F 'o' + {8137, 29, 35, 29, 1, -24}, // 0x70 'p' + {8264, 28, 35, 29, 3, -24}, // 0x71 'q' + {8387, 20, 25, 18, 3, -24}, // 0x72 'r' + {8450, 24, 26, 26, 3, -24}, // 0x73 's' + {8528, 14, 32, 16, 5, -30}, // 0x74 't' + {8584, 27, 26, 29, 4, -24}, // 0x75 'u' + {8672, 25, 25, 26, 6, -24}, // 0x76 'v' + {8751, 35, 25, 37, 6, -24}, // 0x77 'w' + {8861, 29, 25, 26, 1, -24}, // 0x78 'x' + {8952, 29, 35, 26, 2, -24}, // 0x79 'y' + {9079, 26, 25, 23, 1, -24}, // 0x7A 'z' + {9161, 18, 43, 18, 4, -33}, // 0x7B '{' + {9258, 13, 43, 13, 3, -33}, // 0x7C '|' + {9328, 18, 43, 18, 2, -33}, // 0x7D '}' + {9425, 22, 8, 27, 5, -14}}; // 0x7E '~' + +const GFXfont FreeSansBoldOblique24pt7b PROGMEM = { + (uint8_t *)FreeSansBoldOblique24pt7bBitmaps, + (GFXglyph *)FreeSansBoldOblique24pt7bGlyphs, 0x20, 0x7E, 56}; + +// Approx. 10119 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSansBoldOblique9pt7b.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSansBoldOblique9pt7b.h new file mode 100644 index 0000000..ff72f73 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSansBoldOblique9pt7b.h @@ -0,0 +1,229 @@ +#pragma once +#include + +const uint8_t FreeSansBoldOblique9pt7bBitmaps[] PROGMEM = { + 0x21, 0x8E, 0x73, 0x18, 0xC6, 0x21, 0x19, 0xCE, 0x00, 0xEF, 0xDF, 0xBE, + 0x68, 0x80, 0x06, 0xC1, 0x99, 0xFF, 0xBF, 0xF1, 0xB0, 0x66, 0x0C, 0xC7, + 0xFC, 0xFF, 0x8C, 0x83, 0x30, 0x64, 0x00, 0x02, 0x00, 0xF0, 0x7F, 0x1D, + 0x73, 0xEE, 0x78, 0x0F, 0x00, 0xF8, 0x0F, 0xC1, 0xBB, 0xA7, 0x74, 0xEF, + 0xF8, 0xFE, 0x04, 0x00, 0x80, 0x3C, 0x11, 0xF8, 0x8E, 0x66, 0x31, 0x90, + 0xCE, 0x83, 0xF4, 0x07, 0xB0, 0x00, 0x9E, 0x04, 0xFC, 0x26, 0x31, 0x98, + 0xC4, 0x7E, 0x20, 0xF0, 0x07, 0x80, 0xFC, 0x1D, 0xC1, 0xDC, 0x1F, 0x80, + 0xE0, 0x3E, 0x37, 0x77, 0xE3, 0xEE, 0x3C, 0xE3, 0xCF, 0xFE, 0x3C, 0xE0, + 0xFF, 0xE8, 0x06, 0x06, 0x0C, 0x18, 0x38, 0x30, 0x70, 0x60, 0xE0, 0xE0, + 0xE0, 0xE0, 0xE0, 0xE0, 0x60, 0x70, 0x30, 0x0C, 0x0E, 0x06, 0x07, 0x07, + 0x07, 0x07, 0x07, 0x07, 0x06, 0x0E, 0x0C, 0x1C, 0x18, 0x30, 0x60, 0x60, + 0x32, 0xBF, 0x9C, 0xD2, 0x40, 0x0C, 0x06, 0x07, 0x1F, 0xFF, 0xF0, 0xC0, + 0xE0, 0x60, 0x77, 0x72, 0x6C, 0xFF, 0xC0, 0xFC, 0x02, 0x02, 0x04, 0x04, + 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x0F, 0x07, 0xE3, + 0x9D, 0xC7, 0x71, 0xDC, 0x7E, 0x1F, 0x8E, 0xE3, 0xB8, 0xEE, 0x73, 0xF8, + 0x3C, 0x00, 0x04, 0x3B, 0xF7, 0xE1, 0xC3, 0x06, 0x1C, 0x38, 0x70, 0xC1, + 0x87, 0x00, 0x0F, 0x87, 0xFC, 0xE3, 0xB8, 0x70, 0x0E, 0x03, 0x80, 0xF0, + 0x38, 0x1E, 0x07, 0x01, 0xC0, 0x7F, 0xCF, 0xF8, 0x0F, 0xC7, 0xFC, 0xE3, + 0xB8, 0x70, 0x1C, 0x0F, 0x03, 0xF0, 0x0E, 0x01, 0xDC, 0x3B, 0x8E, 0x7F, + 0x83, 0xE0, 0x03, 0xC0, 0xE0, 0x58, 0x2E, 0x13, 0x8C, 0xE6, 0x33, 0xFE, + 0xFF, 0x81, 0xC0, 0x60, 0x18, 0x0F, 0xE3, 0xFC, 0x60, 0x0C, 0x03, 0x78, + 0x7F, 0x9C, 0x70, 0x0E, 0x01, 0xDC, 0x33, 0x8E, 0x7F, 0x83, 0xE0, 0x0F, + 0x07, 0xE3, 0x9D, 0xC0, 0x7F, 0x1F, 0xEF, 0x3B, 0x8E, 0xE3, 0xB8, 0xCE, + 0x71, 0xF8, 0x3C, 0x00, 0x7F, 0xDF, 0xF0, 0x18, 0x0C, 0x06, 0x03, 0x81, + 0xC0, 0x60, 0x38, 0x0C, 0x07, 0x01, 0x80, 0x60, 0x00, 0x0F, 0x83, 0xFC, + 0xE3, 0x9C, 0x73, 0x9C, 0x3F, 0x0F, 0xE3, 0x8E, 0xE1, 0xDC, 0x3B, 0x8E, + 0x7F, 0xC3, 0xE0, 0x0F, 0x83, 0xF8, 0xE3, 0xB8, 0x77, 0x0E, 0xE1, 0xDC, + 0x7B, 0xFE, 0x3D, 0xC0, 0x33, 0x8E, 0x7F, 0x87, 0xC0, 0x77, 0x00, 0x00, + 0x0E, 0xE0, 0x39, 0xC0, 0x00, 0x01, 0xCE, 0x71, 0x19, 0x80, 0x00, 0x00, + 0x70, 0xFD, 0xF8, 0x70, 0x3F, 0x03, 0xF8, 0x1E, 0x01, 0x80, 0x7F, 0xDF, + 0xF0, 0x00, 0x00, 0xFF, 0xBF, 0xE0, 0x60, 0x1E, 0x07, 0xF0, 0x3F, 0x03, + 0x87, 0xEF, 0xC3, 0x80, 0x00, 0x00, 0x1F, 0x1F, 0xFE, 0x1F, 0x87, 0x01, + 0xC0, 0xE0, 0x70, 0x78, 0x3C, 0x0E, 0x00, 0x00, 0xE0, 0x38, 0x00, 0x00, + 0xFC, 0x00, 0xFF, 0xC0, 0xF0, 0x78, 0x70, 0x07, 0x38, 0x01, 0xCC, 0x3F, + 0x36, 0x31, 0x8D, 0x98, 0x63, 0xC4, 0x11, 0xF3, 0x0C, 0x6C, 0xC6, 0x73, + 0x3E, 0xF8, 0xE7, 0x3C, 0x1E, 0x00, 0x03, 0xFE, 0x00, 0x3F, 0x00, 0x01, + 0xE0, 0x0F, 0x00, 0xF8, 0x07, 0xC0, 0x6F, 0x03, 0x38, 0x31, 0xC3, 0x8E, + 0x1F, 0xF1, 0xFF, 0x8C, 0x1E, 0xE0, 0x76, 0x03, 0x80, 0x1F, 0xF0, 0xFF, + 0xC6, 0x0E, 0x70, 0x73, 0x87, 0x1F, 0xF0, 0xFF, 0x86, 0x0E, 0x70, 0x73, + 0x83, 0x9C, 0x38, 0xFF, 0xC7, 0xF8, 0x00, 0x07, 0xE0, 0xFF, 0x8F, 0x1E, + 0x70, 0x77, 0x00, 0x30, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x07, 0x03, 0xBC, + 0x38, 0xFF, 0x83, 0xF0, 0x00, 0x1F, 0xE0, 0xFF, 0x86, 0x1E, 0x70, 0x73, + 0x83, 0x9C, 0x1C, 0xC0, 0xE6, 0x07, 0x70, 0x73, 0x83, 0x9C, 0x38, 0xFF, + 0x8F, 0xF0, 0x00, 0x1F, 0xF8, 0xFF, 0x86, 0x00, 0x70, 0x03, 0x80, 0x1F, + 0xF0, 0xFF, 0x86, 0x00, 0x70, 0x03, 0x80, 0x1C, 0x00, 0xFF, 0xC7, 0xFC, + 0x00, 0x1F, 0xF1, 0xFF, 0x18, 0x03, 0x80, 0x38, 0x03, 0xFC, 0x3F, 0xC7, + 0x00, 0x70, 0x07, 0x00, 0x70, 0x06, 0x00, 0xE0, 0x00, 0x07, 0xC1, 0xFE, + 0x38, 0x77, 0x03, 0x70, 0x0E, 0x00, 0xE1, 0xEE, 0x1E, 0xE0, 0x6E, 0x0E, + 0x70, 0xE7, 0xFC, 0x1F, 0x40, 0x1C, 0x1C, 0x60, 0x63, 0x83, 0x8E, 0x0E, + 0x38, 0x38, 0xFF, 0xC3, 0xFF, 0x1C, 0x1C, 0x70, 0x71, 0xC1, 0xC6, 0x06, + 0x18, 0x38, 0xE0, 0xE0, 0x39, 0xCE, 0x63, 0x39, 0xCE, 0x63, 0x39, 0xCE, + 0x00, 0x00, 0xC0, 0x18, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x00, 0xE0, 0x1C, + 0xE3, 0x9C, 0x73, 0x9C, 0x7F, 0x87, 0xC0, 0x1C, 0x3C, 0x71, 0xC1, 0x8E, + 0x0E, 0x70, 0x3B, 0x80, 0xFC, 0x03, 0xF0, 0x0E, 0xE0, 0x73, 0x81, 0xC7, + 0x07, 0x1C, 0x18, 0x38, 0xE0, 0xF0, 0x1C, 0x07, 0x01, 0x80, 0xE0, 0x38, + 0x0E, 0x03, 0x80, 0xC0, 0x70, 0x1C, 0x07, 0x01, 0xFF, 0x7F, 0x80, 0x1E, + 0x1F, 0x1E, 0x1E, 0x3E, 0x1E, 0x3E, 0x3E, 0x36, 0x3E, 0x36, 0x6E, 0x36, + 0x6C, 0x76, 0xCC, 0x76, 0xDC, 0x67, 0x9C, 0x67, 0x98, 0xE7, 0x18, 0xE7, + 0x18, 0x1C, 0x1C, 0x70, 0x63, 0xE1, 0x8F, 0x8E, 0x3E, 0x38, 0xDC, 0xC3, + 0x33, 0x1C, 0xEC, 0x71, 0xF1, 0xC7, 0xC6, 0x1E, 0x18, 0x38, 0xE0, 0xE0, + 0x07, 0xC0, 0xFF, 0x8E, 0x1E, 0xE0, 0x77, 0x03, 0xF0, 0x1F, 0x80, 0xFC, + 0x07, 0xE0, 0x77, 0x03, 0xBC, 0x38, 0xFF, 0x81, 0xF0, 0x00, 0x1F, 0xF0, + 0xFF, 0xC6, 0x0E, 0x70, 0x73, 0x83, 0x9C, 0x38, 0xFF, 0x87, 0xF8, 0x70, + 0x03, 0x80, 0x1C, 0x00, 0xC0, 0x0E, 0x00, 0x00, 0x07, 0xC0, 0xFF, 0x8F, + 0x1C, 0xE0, 0x77, 0x03, 0xB0, 0x1F, 0x80, 0xFC, 0x06, 0xE1, 0x77, 0x1F, + 0x3C, 0x78, 0xFF, 0xC1, 0xF6, 0x00, 0x20, 0x1F, 0xF0, 0xFF, 0xC6, 0x0E, + 0x70, 0x73, 0x83, 0x9C, 0x38, 0xFF, 0x87, 0xFC, 0x70, 0x73, 0x83, 0x9C, + 0x38, 0xC1, 0xC6, 0x0F, 0x00, 0x07, 0xE0, 0xFF, 0xC7, 0x0E, 0x70, 0x73, + 0x80, 0x1F, 0x80, 0x7F, 0x80, 0x7E, 0x00, 0x77, 0x03, 0xBC, 0x38, 0xFF, + 0xC3, 0xF8, 0x00, 0xFF, 0xDF, 0xF8, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x06, + 0x01, 0xC0, 0x38, 0x07, 0x00, 0xC0, 0x18, 0x07, 0x00, 0x38, 0x31, 0xC1, + 0x8C, 0x1C, 0xE0, 0xE7, 0x07, 0x38, 0x31, 0xC3, 0x9C, 0x1C, 0xE0, 0xE7, + 0x06, 0x38, 0x70, 0xFF, 0x03, 0xE0, 0x00, 0xE0, 0xFC, 0x1D, 0x87, 0x30, + 0xC6, 0x38, 0xC6, 0x19, 0xC3, 0xB0, 0x7E, 0x0F, 0x80, 0xF0, 0x1C, 0x03, + 0x00, 0xE1, 0xC3, 0xF1, 0xE3, 0xB8, 0xF1, 0xDC, 0x78, 0xCE, 0x6C, 0xE7, + 0x36, 0x63, 0xB3, 0x70, 0xD9, 0xB0, 0x7C, 0xD8, 0x3C, 0x78, 0x1E, 0x3C, + 0x0E, 0x1C, 0x07, 0x0E, 0x00, 0x0E, 0x1C, 0x38, 0xE0, 0xE7, 0x01, 0xD8, + 0x07, 0xE0, 0x0F, 0x00, 0x38, 0x01, 0xE0, 0x0F, 0xC0, 0x77, 0x01, 0x8E, + 0x0E, 0x38, 0x70, 0xF0, 0xE0, 0xEE, 0x39, 0xC7, 0x39, 0xC3, 0x70, 0x7C, + 0x0F, 0x80, 0xE0, 0x1C, 0x03, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x3F, 0xF3, + 0xFF, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x3C, 0x07, + 0x80, 0x70, 0x0F, 0xFC, 0xFF, 0xC0, 0x0F, 0x0F, 0x0C, 0x1C, 0x18, 0x18, + 0x18, 0x18, 0x30, 0x30, 0x30, 0x30, 0x60, 0x60, 0x60, 0x78, 0x78, 0x12, + 0x4C, 0x92, 0x49, 0x26, 0xD9, 0x20, 0x1E, 0x1E, 0x06, 0x06, 0x06, 0x0C, + 0x0C, 0x0C, 0x0C, 0x18, 0x18, 0x18, 0x18, 0x38, 0x30, 0xF0, 0xF0, 0x06, + 0x0E, 0x0E, 0x1B, 0x33, 0x33, 0x63, 0x63, 0xFF, 0xE0, 0xCC, 0x1F, 0x8F, + 0xF3, 0x1C, 0x06, 0x1F, 0x9F, 0xEE, 0x3B, 0x9C, 0xFF, 0x1D, 0xC0, 0x18, + 0x03, 0x00, 0xE0, 0x1D, 0xC3, 0xFC, 0x71, 0xDC, 0x3B, 0x87, 0x70, 0xEE, + 0x39, 0xCF, 0x7F, 0xCF, 0xE0, 0x0F, 0x0F, 0xF7, 0x1D, 0xC0, 0xE0, 0x38, + 0x0E, 0x03, 0x8E, 0x7F, 0x0F, 0x80, 0x00, 0x60, 0x06, 0x00, 0x61, 0xEE, + 0x3F, 0xE7, 0x9C, 0x71, 0xCE, 0x1C, 0xE1, 0xCE, 0x1C, 0xE3, 0x87, 0xF8, + 0x7F, 0x80, 0x1F, 0x0F, 0xE7, 0x1D, 0xC7, 0xFF, 0xFF, 0xFE, 0x03, 0x8E, + 0x7F, 0x0F, 0x80, 0x1C, 0xF3, 0x3F, 0xFD, 0xC7, 0x18, 0x63, 0x8E, 0x30, + 0xC0, 0x0F, 0x71, 0xFE, 0x3C, 0xE3, 0x8E, 0x70, 0xE7, 0x0E, 0x70, 0xC7, + 0x1C, 0x3F, 0xC3, 0xFC, 0x01, 0xCE, 0x38, 0x7F, 0x03, 0xE0, 0x18, 0x03, + 0x00, 0xE0, 0x1D, 0xE3, 0xFE, 0x71, 0xCC, 0x3B, 0x86, 0x70, 0xCC, 0x39, + 0x87, 0x30, 0xEE, 0x18, 0x39, 0xC0, 0x63, 0x39, 0xCE, 0x63, 0x39, 0xCE, + 0x00, 0x06, 0x06, 0x00, 0x0E, 0x0E, 0x0C, 0x0C, 0x1C, 0x1C, 0x1C, 0x18, + 0x18, 0x38, 0x38, 0x30, 0x70, 0xE0, 0x18, 0x03, 0x00, 0xE0, 0x1C, 0xE3, + 0x38, 0x6E, 0x1F, 0x83, 0xF0, 0x7E, 0x0E, 0xE1, 0x9C, 0x73, 0x8E, 0x38, + 0x39, 0xCE, 0x63, 0x39, 0xCE, 0x63, 0x39, 0xCE, 0x00, 0x3B, 0x9E, 0x3F, + 0xFF, 0x39, 0xC7, 0x71, 0xC6, 0x71, 0x86, 0x71, 0x8E, 0x63, 0x8E, 0x63, + 0x8C, 0xE3, 0x8C, 0xE3, 0x1C, 0x3B, 0xC7, 0xFC, 0xE3, 0xB8, 0x77, 0x0C, + 0xE1, 0x98, 0x73, 0x0E, 0xE1, 0xDC, 0x30, 0x0F, 0x87, 0xF9, 0xE7, 0xB8, + 0x7E, 0x0F, 0xC1, 0xF8, 0x77, 0x9E, 0x7F, 0x87, 0xC0, 0x1D, 0xE1, 0xFE, + 0x1C, 0x73, 0x87, 0x38, 0x73, 0x87, 0x38, 0xE3, 0x8E, 0x7F, 0xC7, 0xF8, + 0x60, 0x06, 0x00, 0x60, 0x0E, 0x00, 0x1E, 0xE7, 0xFD, 0xE7, 0x38, 0xEE, + 0x1D, 0xC3, 0xB8, 0x77, 0x1C, 0x7F, 0x8F, 0xF0, 0x0E, 0x01, 0x80, 0x30, + 0x06, 0x00, 0x3B, 0x36, 0x38, 0x70, 0x70, 0x70, 0x60, 0x60, 0xE0, 0xE0, + 0x3E, 0x3F, 0xF8, 0xFC, 0x0F, 0xC3, 0xF8, 0x3D, 0x8E, 0xFE, 0x3E, 0x00, + 0x38, 0xCF, 0xFE, 0x71, 0x86, 0x38, 0xE3, 0x8F, 0x3C, 0x31, 0xDC, 0x77, + 0x19, 0x86, 0x63, 0xB8, 0xEE, 0x33, 0x9C, 0xFF, 0x1F, 0xC0, 0xE1, 0x98, + 0xE6, 0x31, 0x9C, 0x66, 0x1B, 0x86, 0xC1, 0xF0, 0x78, 0x0E, 0x00, 0xE7, + 0x1B, 0x9C, 0xEE, 0x73, 0x3B, 0xDC, 0xEB, 0x63, 0xAD, 0x8F, 0xBC, 0x1C, + 0xF0, 0x73, 0xC1, 0xCE, 0x00, 0x1C, 0xE1, 0xCC, 0x0D, 0x80, 0xF8, 0x0F, + 0x00, 0xF0, 0x1F, 0x03, 0xB8, 0x33, 0x87, 0x38, 0x70, 0xCE, 0x38, 0xC6, + 0x19, 0xC3, 0x30, 0x66, 0x0F, 0x81, 0xF0, 0x3C, 0x03, 0x80, 0x60, 0x18, + 0x0F, 0x01, 0xC0, 0x00, 0x1F, 0xCF, 0xF0, 0x38, 0x1C, 0x0E, 0x07, 0x03, + 0x81, 0xC0, 0x7F, 0xBF, 0xE0, 0x0E, 0x38, 0x61, 0x83, 0x06, 0x0C, 0x78, + 0xF0, 0xC1, 0x83, 0x0E, 0x1C, 0x38, 0x78, 0x70, 0x18, 0xC4, 0x21, 0x18, + 0xC4, 0x21, 0x18, 0xC4, 0x23, 0x18, 0x80, 0x1C, 0x3C, 0x38, 0x70, 0xE1, + 0x83, 0x06, 0x1E, 0x5C, 0x60, 0xC1, 0x83, 0x0C, 0x38, 0xE0, 0x71, 0x8E}; + +const GFXglyph FreeSansBoldOblique9pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 5, 0, 1}, // 0x20 ' ' + {0, 5, 13, 6, 2, -12}, // 0x21 '!' + {9, 7, 5, 9, 3, -12}, // 0x22 '"' + {14, 11, 12, 10, 1, -11}, // 0x23 '#' + {31, 11, 16, 10, 1, -13}, // 0x24 '$' + {53, 14, 13, 16, 2, -12}, // 0x25 '%' + {76, 12, 13, 13, 2, -12}, // 0x26 '&' + {96, 3, 5, 4, 3, -12}, // 0x27 ''' + {98, 8, 17, 6, 2, -12}, // 0x28 '(' + {115, 8, 17, 6, -2, -13}, // 0x29 ')' + {132, 6, 6, 7, 3, -12}, // 0x2A '*' + {137, 9, 8, 11, 2, -7}, // 0x2B '+' + {146, 4, 6, 5, 0, -2}, // 0x2C ',' + {149, 5, 2, 6, 1, -5}, // 0x2D '-' + {151, 3, 2, 5, 1, -1}, // 0x2E '.' + {152, 8, 13, 5, 0, -12}, // 0x2F '/' + {165, 10, 13, 10, 1, -12}, // 0x30 '0' + {182, 7, 13, 10, 3, -12}, // 0x31 '1' + {194, 11, 13, 10, 1, -12}, // 0x32 '2' + {212, 11, 13, 10, 1, -12}, // 0x33 '3' + {230, 10, 12, 10, 1, -11}, // 0x34 '4' + {245, 11, 13, 10, 1, -12}, // 0x35 '5' + {263, 10, 13, 10, 2, -12}, // 0x36 '6' + {280, 10, 13, 10, 2, -12}, // 0x37 '7' + {297, 11, 13, 10, 1, -12}, // 0x38 '8' + {315, 11, 13, 10, 1, -12}, // 0x39 '9' + {333, 4, 9, 6, 2, -8}, // 0x3A ':' + {338, 5, 12, 6, 1, -8}, // 0x3B ';' + {346, 10, 9, 11, 1, -8}, // 0x3C '<' + {358, 10, 6, 11, 1, -6}, // 0x3D '=' + {366, 10, 9, 11, 1, -7}, // 0x3E '>' + {378, 10, 13, 11, 3, -12}, // 0x3F '?' + {395, 18, 16, 18, 1, -13}, // 0x40 '@' + {431, 13, 13, 13, 0, -12}, // 0x41 'A' + {453, 13, 13, 13, 1, -12}, // 0x42 'B' + {475, 13, 13, 13, 2, -12}, // 0x43 'C' + {497, 13, 13, 13, 1, -12}, // 0x44 'D' + {519, 13, 13, 12, 1, -12}, // 0x45 'E' + {541, 12, 13, 11, 1, -12}, // 0x46 'F' + {561, 12, 13, 14, 2, -12}, // 0x47 'G' + {581, 14, 13, 13, 1, -12}, // 0x48 'H' + {604, 5, 13, 5, 1, -12}, // 0x49 'I' + {613, 11, 13, 10, 1, -12}, // 0x4A 'J' + {631, 14, 13, 13, 1, -12}, // 0x4B 'K' + {654, 10, 13, 11, 1, -12}, // 0x4C 'L' + {671, 16, 13, 15, 1, -12}, // 0x4D 'M' + {697, 14, 13, 13, 1, -12}, // 0x4E 'N' + {720, 13, 13, 14, 2, -12}, // 0x4F 'O' + {742, 13, 13, 12, 1, -12}, // 0x50 'P' + {764, 13, 14, 14, 2, -12}, // 0x51 'Q' + {787, 13, 13, 13, 1, -12}, // 0x52 'R' + {809, 13, 13, 12, 1, -12}, // 0x53 'S' + {831, 11, 13, 11, 3, -12}, // 0x54 'T' + {849, 13, 13, 13, 2, -12}, // 0x55 'U' + {871, 11, 13, 12, 3, -12}, // 0x56 'V' + {889, 17, 13, 17, 3, -12}, // 0x57 'W' + {917, 14, 13, 12, 0, -12}, // 0x58 'X' + {940, 11, 13, 12, 3, -12}, // 0x59 'Y' + {958, 12, 13, 11, 1, -12}, // 0x5A 'Z' + {978, 8, 17, 6, 0, -12}, // 0x5B '[' + {995, 3, 17, 5, 2, -16}, // 0x5C '\' + {1002, 8, 17, 6, 0, -13}, // 0x5D ']' + {1019, 8, 8, 11, 2, -12}, // 0x5E '^' + {1027, 11, 1, 10, -1, 4}, // 0x5F '_' + {1029, 3, 2, 6, 3, -12}, // 0x60 '`' + {1030, 10, 10, 10, 1, -9}, // 0x61 'a' + {1043, 11, 13, 11, 1, -12}, // 0x62 'b' + {1061, 10, 10, 10, 1, -9}, // 0x63 'c' + {1074, 12, 13, 11, 1, -12}, // 0x64 'd' + {1094, 10, 10, 10, 1, -9}, // 0x65 'e' + {1107, 6, 13, 6, 2, -12}, // 0x66 'f' + {1117, 12, 14, 11, 0, -9}, // 0x67 'g' + {1138, 11, 13, 11, 1, -12}, // 0x68 'h' + {1156, 5, 13, 5, 1, -12}, // 0x69 'i' + {1165, 8, 17, 5, -1, -12}, // 0x6A 'j' + {1182, 11, 13, 10, 1, -12}, // 0x6B 'k' + {1200, 5, 13, 5, 1, -12}, // 0x6C 'l' + {1209, 16, 10, 16, 1, -9}, // 0x6D 'm' + {1229, 11, 10, 11, 1, -9}, // 0x6E 'n' + {1243, 11, 10, 11, 1, -9}, // 0x6F 'o' + {1257, 12, 14, 11, 0, -9}, // 0x70 'p' + {1278, 11, 14, 11, 1, -9}, // 0x71 'q' + {1298, 8, 10, 7, 1, -9}, // 0x72 'r' + {1308, 9, 10, 10, 2, -9}, // 0x73 's' + {1320, 6, 12, 6, 2, -11}, // 0x74 't' + {1329, 10, 10, 11, 2, -9}, // 0x75 'u' + {1342, 10, 10, 10, 2, -9}, // 0x76 'v' + {1355, 14, 10, 14, 2, -9}, // 0x77 'w' + {1373, 12, 10, 10, 0, -9}, // 0x78 'x' + {1388, 11, 14, 10, 1, -9}, // 0x79 'y' + {1408, 10, 10, 9, 0, -9}, // 0x7A 'z' + {1421, 7, 17, 7, 2, -12}, // 0x7B '{' + {1436, 5, 17, 5, 1, -12}, // 0x7C '|' + {1447, 7, 17, 7, 0, -13}, // 0x7D '}' + {1462, 8, 2, 11, 2, -4}}; // 0x7E '~' + +const GFXfont FreeSansBoldOblique9pt7b PROGMEM = { + (uint8_t *)FreeSansBoldOblique9pt7bBitmaps, + (GFXglyph *)FreeSansBoldOblique9pt7bGlyphs, 0x20, 0x7E, 22}; + +// Approx. 2136 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSansOblique12pt7b.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSansOblique12pt7b.h new file mode 100644 index 0000000..ce55f4d --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSansOblique12pt7b.h @@ -0,0 +1,304 @@ +#pragma once +#include + +const uint8_t FreeSansOblique12pt7bBitmaps[] PROGMEM = { + 0x0C, 0x61, 0x86, 0x18, 0x63, 0x0C, 0x30, 0xC2, 0x18, 0x61, 0x00, 0x00, + 0xC3, 0x00, 0xCF, 0x3C, 0xE2, 0x8A, 0x20, 0x01, 0x8C, 0x03, 0x18, 0x06, + 0x60, 0x18, 0xC0, 0x31, 0x83, 0xFF, 0x87, 0xFF, 0x03, 0x18, 0x0C, 0x60, + 0x18, 0xC0, 0x23, 0x03, 0xFF, 0x8F, 0xFF, 0x02, 0x30, 0x0C, 0x60, 0x18, + 0x80, 0x63, 0x00, 0xC6, 0x00, 0x00, 0x80, 0x3F, 0x03, 0xFC, 0x32, 0x73, + 0x91, 0x99, 0x8C, 0xCC, 0x06, 0x60, 0x3E, 0x00, 0x7E, 0x01, 0xFC, 0x0C, + 0xEC, 0x43, 0x62, 0x1B, 0x11, 0x9D, 0x9C, 0x7F, 0xC1, 0xF8, 0x02, 0x00, + 0x10, 0x01, 0x80, 0x00, 0x00, 0x01, 0x83, 0xC0, 0x60, 0xFC, 0x18, 0x30, + 0xC2, 0x0C, 0x18, 0xC1, 0x83, 0x30, 0x38, 0xCC, 0x03, 0xF1, 0x00, 0x3C, + 0x40, 0x00, 0x18, 0xF0, 0x06, 0x3F, 0x01, 0x8C, 0x30, 0x23, 0x06, 0x0C, + 0x60, 0xC3, 0x0E, 0x30, 0xC0, 0xFC, 0x10, 0x0F, 0x00, 0x01, 0xE0, 0x3F, + 0x81, 0x8C, 0x18, 0x60, 0xC3, 0x06, 0x30, 0x1F, 0x00, 0xE0, 0x1F, 0x01, + 0xDC, 0xD8, 0x6D, 0x81, 0xEC, 0x0E, 0x60, 0x73, 0x87, 0xCF, 0xE6, 0x3E, + 0x38, 0xFE, 0xA0, 0x03, 0x06, 0x04, 0x0C, 0x18, 0x18, 0x30, 0x30, 0x60, + 0x60, 0x60, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x40, 0x60, + 0x60, 0x20, 0x04, 0x06, 0x06, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x06, 0x06, 0x06, 0x0C, 0x0C, 0x18, 0x18, 0x30, 0x20, 0x60, + 0xC0, 0x0C, 0x0C, 0x49, 0x7F, 0x3C, 0x3C, 0x6C, 0x00, 0x03, 0x00, 0x30, + 0x03, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x06, 0x00, 0x60, 0x06, 0x00, 0xC0, + 0x0C, 0x00, 0x77, 0x22, 0x6C, 0xFF, 0xF0, 0xFC, 0x00, 0x40, 0x30, 0x08, + 0x06, 0x01, 0x00, 0xC0, 0x20, 0x18, 0x04, 0x02, 0x00, 0x80, 0x40, 0x10, + 0x08, 0x02, 0x01, 0x00, 0xC0, 0x20, 0x00, 0x07, 0xC0, 0xFE, 0x1C, 0x73, + 0x83, 0x30, 0x36, 0x03, 0x60, 0x36, 0x03, 0xC0, 0x7C, 0x07, 0xC0, 0x6C, + 0x06, 0xC0, 0xEC, 0x0C, 0xE3, 0x87, 0xF0, 0x3E, 0x00, 0x02, 0x0C, 0x77, + 0xEF, 0xC1, 0x83, 0x0C, 0x18, 0x30, 0x61, 0xC3, 0x06, 0x0C, 0x18, 0x60, + 0x03, 0xF0, 0x1F, 0xE0, 0xE1, 0xC7, 0x03, 0x18, 0x0C, 0x00, 0x30, 0x01, + 0x80, 0x0E, 0x00, 0x70, 0x07, 0x80, 0x78, 0x07, 0x80, 0x38, 0x01, 0xC0, + 0x06, 0x00, 0x1F, 0xFC, 0xFF, 0xE0, 0x07, 0xC0, 0xFE, 0x1C, 0x73, 0x03, + 0x30, 0x30, 0x03, 0x00, 0xE0, 0x7C, 0x07, 0xC0, 0x0E, 0x00, 0x60, 0x06, + 0xC0, 0x6C, 0x0C, 0xE1, 0xC7, 0xF8, 0x3E, 0x00, 0x00, 0x60, 0x06, 0x00, + 0xE0, 0x1E, 0x03, 0xE0, 0x6C, 0x0C, 0xC1, 0x8C, 0x30, 0xC6, 0x1C, 0xC1, + 0x8F, 0xFF, 0xFF, 0xE0, 0x18, 0x03, 0x00, 0x30, 0x03, 0x00, 0x0F, 0xF8, + 0x7F, 0xC6, 0x00, 0x30, 0x01, 0x00, 0x1B, 0xC0, 0xFF, 0x06, 0x1C, 0x60, + 0x60, 0x03, 0x00, 0x18, 0x00, 0xC0, 0x0C, 0x60, 0x63, 0x86, 0x0F, 0xE0, + 0x3E, 0x00, 0x03, 0xC0, 0xFE, 0x1C, 0x73, 0x83, 0x30, 0x06, 0x00, 0x67, + 0x87, 0xFC, 0xF0, 0xEE, 0x06, 0xC0, 0x6C, 0x06, 0xC0, 0x4C, 0x0C, 0xE1, + 0x87, 0xF8, 0x3E, 0x00, 0x3F, 0xFB, 0xFF, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, + 0x00, 0xC0, 0x06, 0x00, 0x60, 0x06, 0x00, 0x70, 0x03, 0x00, 0x30, 0x03, + 0x80, 0x18, 0x01, 0xC0, 0x0C, 0x00, 0xE0, 0x00, 0x07, 0xC0, 0xFE, 0x1C, + 0x73, 0x03, 0x30, 0x33, 0x03, 0x38, 0x61, 0xFC, 0x3F, 0xC7, 0x0E, 0x60, + 0x6C, 0x06, 0xC0, 0x6C, 0x0C, 0xE1, 0xC7, 0xF8, 0x3E, 0x00, 0x07, 0xC1, + 0xFE, 0x38, 0x73, 0x03, 0x60, 0x36, 0x03, 0x60, 0x36, 0x07, 0x70, 0xF3, + 0xFE, 0x1E, 0x60, 0x0E, 0x00, 0xCC, 0x1C, 0xE3, 0x87, 0xF0, 0x3C, 0x00, + 0x39, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x39, 0xC0, 0x1C, 0x70, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x1C, 0x20, 0x86, 0x30, 0x00, 0x00, 0x01, 0xC0, + 0x3C, 0x0F, 0x81, 0xE0, 0x7C, 0x03, 0x80, 0x0F, 0x00, 0x1F, 0x00, 0x3E, + 0x00, 0x38, 0x00, 0x40, 0x7F, 0xFB, 0xFF, 0x80, 0x00, 0x00, 0x0F, 0xFF, + 0x7F, 0xF0, 0x20, 0x01, 0xC0, 0x07, 0xC0, 0x0F, 0x80, 0x0F, 0x00, 0x1C, + 0x03, 0xE0, 0x78, 0x1F, 0x03, 0xC0, 0x38, 0x00, 0x00, 0x00, 0x0F, 0x87, + 0xF9, 0xC3, 0xB0, 0x3C, 0x06, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x01, 0xC0, + 0x30, 0x0C, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, + 0x3F, 0x80, 0x01, 0xFF, 0xE0, 0x0F, 0x01, 0xE0, 0x38, 0x00, 0xE0, 0xE0, + 0x00, 0xC3, 0x87, 0x81, 0xCE, 0x1F, 0xB1, 0x98, 0x71, 0xC3, 0x61, 0x83, + 0x86, 0xC6, 0x06, 0x0F, 0x0C, 0x0C, 0x3E, 0x30, 0x30, 0x6C, 0x60, 0x61, + 0xD8, 0xC1, 0x87, 0x31, 0xC7, 0x1C, 0x61, 0xF7, 0xF0, 0x63, 0xCF, 0x80, + 0xE0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xFF, 0xE0, 0x00, 0x7F, 0x00, 0x00, + 0x00, 0x38, 0x00, 0x78, 0x00, 0x7C, 0x00, 0xFC, 0x00, 0xDC, 0x01, 0xCC, + 0x01, 0x8C, 0x03, 0x8C, 0x03, 0x0C, 0x06, 0x0C, 0x0E, 0x0E, 0x0F, 0xFE, + 0x1F, 0xFE, 0x18, 0x06, 0x38, 0x06, 0x30, 0x06, 0x70, 0x06, 0x60, 0x07, + 0x0F, 0xF8, 0x1F, 0xF8, 0x60, 0x38, 0xC0, 0x31, 0x80, 0x63, 0x00, 0xCE, + 0x03, 0x18, 0x0C, 0x3F, 0xF0, 0x7F, 0xF0, 0xC0, 0x73, 0x00, 0x66, 0x00, + 0xCC, 0x01, 0x98, 0x06, 0x70, 0x1C, 0xFF, 0xF1, 0xFF, 0x80, 0x01, 0xF8, + 0x07, 0xFE, 0x0E, 0x0E, 0x1C, 0x03, 0x38, 0x03, 0x30, 0x00, 0x60, 0x00, + 0x60, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x06, + 0xC0, 0x0C, 0xE0, 0x1C, 0x70, 0x78, 0x3F, 0xF0, 0x1F, 0x80, 0x0F, 0xF8, + 0x1F, 0xFC, 0x18, 0x0E, 0x18, 0x07, 0x18, 0x03, 0x18, 0x03, 0x38, 0x03, + 0x30, 0x03, 0x30, 0x03, 0x30, 0x03, 0x70, 0x06, 0x70, 0x06, 0x60, 0x0C, + 0x60, 0x0C, 0x60, 0x18, 0xE0, 0x78, 0xFF, 0xE0, 0xFF, 0x80, 0x0F, 0xFF, + 0x1F, 0xFE, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x38, 0x00, + 0x30, 0x00, 0x3F, 0xFC, 0x3F, 0xF8, 0x70, 0x00, 0x70, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x60, 0x00, 0xE0, 0x00, 0xFF, 0xF8, 0xFF, 0xF8, 0x0F, 0xFE, + 0x3F, 0xFC, 0x60, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, 0x0E, 0x00, 0x18, + 0x00, 0x3F, 0xF0, 0x7F, 0xE1, 0xC0, 0x03, 0x80, 0x06, 0x00, 0x0C, 0x00, + 0x18, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x80, 0x00, 0x01, 0xF8, 0x07, 0xFE, + 0x0E, 0x0F, 0x18, 0x03, 0x30, 0x03, 0x70, 0x00, 0x60, 0x00, 0x60, 0x00, + 0xC0, 0x7F, 0xC0, 0x7E, 0xC0, 0x02, 0xC0, 0x06, 0xC0, 0x06, 0xE0, 0x0E, + 0x60, 0x1E, 0x78, 0x3C, 0x3F, 0xE4, 0x0F, 0x84, 0x0C, 0x01, 0x8E, 0x00, + 0xC6, 0x00, 0xE3, 0x00, 0x61, 0x80, 0x30, 0xC0, 0x18, 0xE0, 0x0C, 0x60, + 0x0E, 0x3F, 0xFE, 0x1F, 0xFF, 0x1C, 0x01, 0x8E, 0x01, 0xC6, 0x00, 0xE3, + 0x00, 0x61, 0x80, 0x31, 0xC0, 0x18, 0xC0, 0x1C, 0x60, 0x0C, 0x00, 0x0C, + 0x71, 0x86, 0x18, 0x63, 0x8C, 0x30, 0xC3, 0x1C, 0x61, 0x86, 0x18, 0xE3, + 0x00, 0x00, 0x18, 0x01, 0x80, 0x0C, 0x00, 0x60, 0x03, 0x00, 0x38, 0x01, + 0x80, 0x0C, 0x00, 0x60, 0x03, 0x00, 0x38, 0x01, 0x8C, 0x0C, 0x60, 0x63, + 0x07, 0x1C, 0x70, 0x7F, 0x01, 0xF0, 0x00, 0x0C, 0x03, 0x87, 0x01, 0xC1, + 0x80, 0xE0, 0x60, 0x60, 0x18, 0x70, 0x06, 0x38, 0x03, 0x9C, 0x00, 0xCE, + 0x00, 0x37, 0x80, 0x0F, 0x70, 0x07, 0x8C, 0x01, 0xC3, 0x80, 0x60, 0x60, + 0x18, 0x1C, 0x06, 0x03, 0x03, 0x80, 0xE0, 0xC0, 0x18, 0x30, 0x07, 0x00, + 0x0C, 0x03, 0x80, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x0E, 0x01, 0x80, 0x30, + 0x06, 0x01, 0xC0, 0x38, 0x06, 0x00, 0xC0, 0x18, 0x07, 0x00, 0xFF, 0xFF, + 0xFC, 0x0E, 0x00, 0x71, 0xE0, 0x0F, 0x1E, 0x00, 0xF1, 0xE0, 0x1E, 0x1E, + 0x01, 0xE1, 0xE0, 0x36, 0x3B, 0x03, 0x63, 0x30, 0x6E, 0x33, 0x0E, 0xC3, + 0x30, 0xCC, 0x33, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x31, 0xC6, 0x33, 0x18, + 0x61, 0xE1, 0x8E, 0x1E, 0x18, 0xC1, 0xC1, 0x8C, 0x1C, 0x38, 0x0C, 0x01, + 0x8F, 0x00, 0xC7, 0x80, 0x63, 0xE0, 0x71, 0xF0, 0x30, 0xD8, 0x18, 0xEE, + 0x0C, 0x63, 0x06, 0x31, 0xC7, 0x18, 0xE3, 0x0C, 0x31, 0x8C, 0x1C, 0xC6, + 0x06, 0x63, 0x03, 0xF1, 0x80, 0xF1, 0xC0, 0x78, 0xC0, 0x3C, 0x60, 0x0E, + 0x00, 0x01, 0xF8, 0x03, 0xFF, 0x03, 0x83, 0xC3, 0x80, 0x63, 0x00, 0x3B, + 0x80, 0x0D, 0x80, 0x06, 0xC0, 0x03, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, + 0xF8, 0x00, 0x6C, 0x00, 0x36, 0x00, 0x31, 0x80, 0x30, 0xF0, 0x78, 0x3F, + 0xF0, 0x07, 0xE0, 0x00, 0x0F, 0xF8, 0x3F, 0xF8, 0x60, 0x38, 0xC0, 0x31, + 0x80, 0x63, 0x00, 0xCE, 0x03, 0x18, 0x0E, 0x3F, 0xF8, 0x7F, 0xE1, 0xC0, + 0x03, 0x80, 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x70, 0x00, 0xC0, 0x01, + 0x80, 0x00, 0x00, 0xFC, 0x01, 0xFF, 0xC0, 0xF0, 0x78, 0x70, 0x06, 0x38, + 0x01, 0xCC, 0x00, 0x36, 0x00, 0x0D, 0x80, 0x03, 0xC0, 0x00, 0xF0, 0x00, + 0x3C, 0x00, 0x1B, 0x00, 0x06, 0xC0, 0x03, 0x38, 0x1D, 0xC6, 0x03, 0xE1, + 0xE0, 0xF0, 0x3F, 0xFE, 0x03, 0xF1, 0xC0, 0x00, 0x20, 0x0F, 0xFC, 0x1F, + 0xFE, 0x18, 0x07, 0x18, 0x03, 0x18, 0x03, 0x18, 0x03, 0x38, 0x06, 0x30, + 0x0C, 0x3F, 0xF8, 0x3F, 0xF8, 0x70, 0x1C, 0x70, 0x0C, 0x60, 0x0C, 0x60, + 0x0C, 0x60, 0x18, 0xE0, 0x18, 0xC0, 0x18, 0xC0, 0x1C, 0x03, 0xF8, 0x1F, + 0xF8, 0x70, 0x38, 0xC0, 0x33, 0x00, 0x66, 0x00, 0x0C, 0x00, 0x1E, 0x00, + 0x1F, 0xC0, 0x0F, 0xF0, 0x01, 0xF0, 0x00, 0xEC, 0x00, 0xD8, 0x01, 0xB0, + 0x06, 0x70, 0x38, 0x7F, 0xE0, 0x3F, 0x00, 0xFF, 0xFF, 0xFF, 0xF0, 0x70, + 0x01, 0xC0, 0x06, 0x00, 0x18, 0x00, 0x60, 0x03, 0x80, 0x0C, 0x00, 0x30, + 0x00, 0xC0, 0x03, 0x00, 0x1C, 0x00, 0x60, 0x01, 0x80, 0x06, 0x00, 0x18, + 0x00, 0xE0, 0x00, 0x18, 0x03, 0x38, 0x03, 0x30, 0x07, 0x30, 0x06, 0x30, + 0x06, 0x70, 0x06, 0x70, 0x0E, 0x60, 0x0C, 0x60, 0x0C, 0x60, 0x0C, 0xE0, + 0x0C, 0xC0, 0x1C, 0xC0, 0x18, 0xC0, 0x18, 0xC0, 0x38, 0xE0, 0x70, 0x7F, + 0xE0, 0x1F, 0x80, 0xC0, 0x0F, 0xC0, 0x1B, 0x80, 0x73, 0x00, 0xC6, 0x03, + 0x0C, 0x06, 0x18, 0x18, 0x30, 0x70, 0x60, 0xC0, 0xE3, 0x81, 0xC6, 0x01, + 0x9C, 0x03, 0x30, 0x06, 0xE0, 0x0D, 0x80, 0x1E, 0x00, 0x3C, 0x00, 0x70, + 0x00, 0xC0, 0x70, 0x1F, 0x01, 0xC0, 0x6C, 0x0F, 0x03, 0xB0, 0x3C, 0x0C, + 0xC1, 0xF0, 0x73, 0x06, 0xC1, 0x8C, 0x3B, 0x06, 0x30, 0xC6, 0x30, 0xC7, + 0x18, 0xC3, 0x18, 0x67, 0x0C, 0xE1, 0x98, 0x33, 0x06, 0xE0, 0xDC, 0x1B, + 0x03, 0x60, 0x6C, 0x07, 0x81, 0xE0, 0x1C, 0x07, 0x80, 0x70, 0x1C, 0x01, + 0x80, 0x70, 0x00, 0x07, 0x00, 0xE0, 0xE0, 0x38, 0x0C, 0x0E, 0x01, 0xC3, + 0x80, 0x18, 0xE0, 0x03, 0x98, 0x00, 0x36, 0x00, 0x07, 0x80, 0x00, 0xF0, + 0x00, 0x1E, 0x00, 0x07, 0xC0, 0x01, 0xDC, 0x00, 0x73, 0x80, 0x1C, 0x30, + 0x03, 0x07, 0x00, 0xC0, 0x60, 0x38, 0x0E, 0x0E, 0x00, 0xC0, 0xE0, 0x06, + 0x60, 0x0C, 0x70, 0x1C, 0x70, 0x38, 0x30, 0x70, 0x38, 0x60, 0x18, 0xC0, + 0x1D, 0xC0, 0x1F, 0x80, 0x0F, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, + 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x1C, 0x00, 0x18, 0x00, 0x0F, 0xFF, + 0x87, 0xFF, 0x80, 0x01, 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x01, + 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x01, + 0xC0, 0x01, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xFF, 0xF8, 0x7F, 0xFC, + 0x00, 0x07, 0xC1, 0xE0, 0x60, 0x18, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x1C, + 0x06, 0x01, 0x80, 0x60, 0x18, 0x0E, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x06, + 0x01, 0x80, 0x60, 0x1E, 0x07, 0x80, 0x93, 0x6C, 0x92, 0x49, 0x24, 0xDB, + 0x24, 0x07, 0x81, 0xE0, 0x18, 0x06, 0x01, 0x80, 0xC0, 0x30, 0x0C, 0x03, + 0x01, 0xC0, 0x60, 0x18, 0x06, 0x01, 0x80, 0xE0, 0x30, 0x0C, 0x03, 0x00, + 0xC0, 0x60, 0x18, 0x1E, 0x0F, 0x80, 0x03, 0x01, 0xC0, 0xD8, 0x36, 0x19, + 0x84, 0x63, 0x19, 0x83, 0x60, 0xC0, 0xFF, 0xFC, 0xE6, 0x23, 0x07, 0xC3, + 0xFC, 0xE3, 0x98, 0x30, 0x06, 0x01, 0x87, 0xF3, 0xC6, 0xC0, 0xD8, 0x3B, + 0x0E, 0x7F, 0x77, 0xCC, 0x0C, 0x00, 0x60, 0x03, 0x00, 0x30, 0x01, 0x80, + 0x0C, 0xF0, 0x7F, 0xC3, 0x87, 0x38, 0x19, 0x80, 0xCC, 0x06, 0x60, 0x32, + 0x03, 0xB0, 0x19, 0xC1, 0xCE, 0x1C, 0x7F, 0xC3, 0x7C, 0x00, 0x0F, 0x83, + 0xF8, 0xE3, 0xB8, 0x36, 0x07, 0xC0, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x1B, + 0x86, 0x3F, 0xC3, 0xE0, 0x00, 0x0C, 0x00, 0x60, 0x01, 0x80, 0x06, 0x00, + 0x18, 0x3E, 0x61, 0xFF, 0x0E, 0x3C, 0x70, 0x71, 0x80, 0xCE, 0x07, 0x30, + 0x18, 0xC0, 0x63, 0x01, 0x8C, 0x0E, 0x38, 0x78, 0x7F, 0xC0, 0xFB, 0x00, + 0x07, 0xC1, 0xFE, 0x38, 0x77, 0x03, 0x60, 0x37, 0xFF, 0xFF, 0xFC, 0x00, + 0xC0, 0x0C, 0x06, 0xE1, 0xC7, 0xF8, 0x3E, 0x00, 0x07, 0x0F, 0x1C, 0x18, + 0x18, 0x7E, 0x7E, 0x30, 0x30, 0x30, 0x30, 0x60, 0x60, 0x60, 0x60, 0x60, + 0xC0, 0xC0, 0x03, 0xCC, 0x3F, 0xA1, 0xC7, 0x8E, 0x0E, 0x30, 0x38, 0xC0, + 0xC6, 0x03, 0x18, 0x0C, 0x60, 0x71, 0x81, 0xC7, 0x0E, 0x0F, 0xF8, 0x1E, + 0x60, 0x03, 0x80, 0x0C, 0x30, 0x70, 0x7F, 0x80, 0xF8, 0x00, 0x0C, 0x00, + 0xC0, 0x0C, 0x01, 0x80, 0x18, 0x01, 0x9E, 0x1F, 0xF1, 0xC7, 0x38, 0x33, + 0x03, 0x30, 0x33, 0x07, 0x30, 0x66, 0x06, 0x60, 0x66, 0x06, 0x60, 0xC6, + 0x0C, 0x18, 0xC0, 0x00, 0x18, 0xC6, 0x33, 0x18, 0xC6, 0x31, 0x98, 0xC6, + 0x00, 0x01, 0x80, 0xC0, 0x00, 0x00, 0x00, 0x18, 0x1C, 0x0C, 0x06, 0x03, + 0x01, 0x81, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x18, 0x0C, 0x06, 0x03, 0x03, + 0x87, 0x83, 0x80, 0x0C, 0x00, 0x60, 0x03, 0x00, 0x30, 0x01, 0x80, 0x0C, + 0x18, 0x61, 0x83, 0x38, 0x33, 0x81, 0xB8, 0x0F, 0xC0, 0x77, 0x03, 0x18, + 0x30, 0xC1, 0x87, 0x0C, 0x18, 0x60, 0xE3, 0x03, 0x00, 0x18, 0xC6, 0x63, + 0x18, 0xC6, 0x33, 0x18, 0xC6, 0x31, 0x98, 0xC6, 0x00, 0x1B, 0xE3, 0xC3, + 0xFD, 0xFC, 0xF1, 0xE1, 0x9C, 0x18, 0x33, 0x03, 0x06, 0x60, 0xC0, 0xCC, + 0x18, 0x3B, 0x83, 0x06, 0x60, 0x60, 0xCC, 0x0C, 0x19, 0x83, 0x03, 0x30, + 0x60, 0xE6, 0x0C, 0x18, 0x1B, 0xE1, 0xFF, 0x3C, 0x73, 0x83, 0x30, 0x33, + 0x03, 0x30, 0x77, 0x06, 0x60, 0x66, 0x06, 0x60, 0x66, 0x0C, 0x60, 0xC0, + 0x07, 0xC1, 0xFE, 0x38, 0x77, 0x03, 0x60, 0x3E, 0x03, 0xC0, 0x3C, 0x06, + 0xC0, 0x6C, 0x0E, 0xE1, 0xC7, 0xF8, 0x3E, 0x00, 0x0C, 0xF0, 0x3F, 0xE0, + 0xE1, 0xC7, 0x03, 0x1C, 0x0C, 0x60, 0x31, 0x80, 0xCE, 0x07, 0x38, 0x18, + 0xE0, 0xE3, 0xC7, 0x0F, 0xF8, 0x77, 0xC1, 0x80, 0x06, 0x00, 0x18, 0x00, + 0x60, 0x03, 0x80, 0x00, 0x0F, 0x98, 0xFF, 0xCE, 0x3C, 0xE0, 0xE6, 0x03, + 0x70, 0x1B, 0x01, 0x98, 0x0C, 0xC0, 0x66, 0x07, 0x38, 0x78, 0xFF, 0x83, + 0xCC, 0x00, 0x60, 0x07, 0x00, 0x38, 0x01, 0x80, 0x0C, 0x00, 0x1B, 0x8F, + 0xCF, 0x07, 0x03, 0x01, 0x80, 0xC0, 0xE0, 0x60, 0x30, 0x18, 0x0C, 0x06, + 0x00, 0x0F, 0xC1, 0xFF, 0x30, 0x76, 0x03, 0x60, 0x07, 0x80, 0x3F, 0x80, + 0x7E, 0x00, 0x6C, 0x06, 0xE0, 0xCF, 0xF8, 0x3E, 0x00, 0x18, 0x30, 0x67, + 0xEF, 0xC6, 0x0C, 0x30, 0x60, 0xC1, 0x83, 0x0C, 0x18, 0x3C, 0x38, 0x30, + 0x33, 0x03, 0x30, 0x37, 0x06, 0x60, 0x66, 0x06, 0x60, 0x66, 0x06, 0xC0, + 0xEC, 0x0C, 0xC3, 0xCF, 0xFC, 0x7C, 0xC0, 0xC0, 0x78, 0x1B, 0x03, 0x60, + 0xC6, 0x18, 0xC6, 0x19, 0xC3, 0x30, 0x6C, 0x0D, 0x81, 0xE0, 0x3C, 0x03, + 0x00, 0xC1, 0xC3, 0xE1, 0xE1, 0xB0, 0xF0, 0xD8, 0x78, 0xCC, 0x6C, 0x66, + 0x36, 0x63, 0x33, 0x30, 0x99, 0xB0, 0x58, 0xD8, 0x2C, 0x78, 0x1C, 0x3C, + 0x0E, 0x1C, 0x06, 0x0E, 0x00, 0x0C, 0x1C, 0x30, 0xE0, 0xE3, 0x01, 0x98, + 0x07, 0xC0, 0x0E, 0x00, 0x30, 0x01, 0xE0, 0x0F, 0x80, 0x73, 0x01, 0x8C, + 0x0C, 0x38, 0x60, 0x60, 0x18, 0x0C, 0x60, 0x61, 0x83, 0x86, 0x0C, 0x1C, + 0x60, 0x31, 0x80, 0xCC, 0x03, 0x30, 0x0D, 0x80, 0x36, 0x00, 0xF0, 0x03, + 0x80, 0x06, 0x00, 0x30, 0x00, 0xC0, 0x06, 0x00, 0xF0, 0x03, 0x80, 0x00, + 0x1F, 0xF1, 0xFF, 0x00, 0x70, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, + 0x18, 0x03, 0x00, 0x60, 0x0F, 0xFC, 0xFF, 0xC0, 0x07, 0x0E, 0x18, 0x18, + 0x18, 0x18, 0x30, 0x30, 0x30, 0x30, 0x60, 0xE0, 0xE0, 0x60, 0x60, 0x60, + 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xF0, 0x60, 0x0C, 0x30, 0x82, 0x08, 0x61, + 0x84, 0x10, 0x43, 0x0C, 0x20, 0x86, 0x18, 0x41, 0x04, 0x30, 0xC2, 0x00, + 0x00, 0x06, 0x07, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x0C, 0x06, 0x03, + 0x01, 0xC0, 0xE0, 0x60, 0x60, 0x30, 0x18, 0x0C, 0x0C, 0x06, 0x03, 0x01, + 0x83, 0x83, 0x80, 0x38, 0x0F, 0x82, 0x38, 0x83, 0xE0, 0x38}; + +const GFXglyph FreeSansOblique12pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 7, 0, 1}, // 0x20 ' ' + {0, 6, 18, 7, 3, -17}, // 0x21 '!' + {14, 6, 6, 9, 4, -16}, // 0x22 '"' + {19, 15, 18, 13, 1, -17}, // 0x23 '#' + {53, 13, 21, 13, 2, -17}, // 0x24 '$' + {88, 19, 17, 21, 3, -16}, // 0x25 '%' + {129, 13, 17, 16, 2, -16}, // 0x26 '&' + {157, 2, 6, 5, 4, -16}, // 0x27 ''' + {159, 8, 23, 8, 3, -17}, // 0x28 '(' + {182, 8, 23, 8, 0, -16}, // 0x29 ')' + {205, 8, 8, 9, 4, -17}, // 0x2A '*' + {213, 12, 11, 14, 2, -10}, // 0x2B '+' + {230, 4, 6, 7, 1, -1}, // 0x2C ',' + {233, 6, 2, 8, 2, -7}, // 0x2D '-' + {235, 3, 2, 7, 2, -1}, // 0x2E '.' + {236, 10, 18, 7, 0, -17}, // 0x2F '/' + {259, 12, 17, 13, 2, -16}, // 0x30 '0' + {285, 7, 17, 13, 5, -16}, // 0x31 '1' + {300, 14, 17, 13, 1, -16}, // 0x32 '2' + {330, 12, 17, 13, 2, -16}, // 0x33 '3' + {356, 12, 17, 13, 2, -16}, // 0x34 '4' + {382, 13, 17, 13, 2, -16}, // 0x35 '5' + {410, 12, 17, 13, 2, -16}, // 0x36 '6' + {436, 13, 17, 13, 3, -16}, // 0x37 '7' + {464, 12, 17, 13, 2, -16}, // 0x38 '8' + {490, 12, 17, 13, 2, -16}, // 0x39 '9' + {516, 5, 12, 7, 3, -11}, // 0x3A ':' + {524, 6, 16, 7, 2, -11}, // 0x3B ';' + {536, 13, 12, 14, 2, -11}, // 0x3C '<' + {556, 13, 6, 14, 2, -8}, // 0x3D '=' + {566, 13, 12, 14, 1, -10}, // 0x3E '>' + {586, 11, 18, 13, 4, -17}, // 0x3F '?' + {611, 23, 21, 24, 2, -17}, // 0x40 '@' + {672, 16, 18, 16, 0, -17}, // 0x41 'A' + {708, 15, 18, 16, 2, -17}, // 0x42 'B' + {742, 16, 18, 17, 2, -17}, // 0x43 'C' + {778, 16, 18, 17, 2, -17}, // 0x44 'D' + {814, 16, 18, 16, 2, -17}, // 0x45 'E' + {850, 15, 18, 14, 2, -17}, // 0x46 'F' + {884, 16, 18, 19, 3, -17}, // 0x47 'G' + {920, 17, 18, 17, 2, -17}, // 0x48 'H' + {959, 6, 18, 7, 2, -17}, // 0x49 'I' + {973, 13, 18, 12, 1, -17}, // 0x4A 'J' + {1003, 18, 18, 16, 2, -17}, // 0x4B 'K' + {1044, 11, 18, 13, 2, -17}, // 0x4C 'L' + {1069, 20, 18, 20, 2, -17}, // 0x4D 'M' + {1114, 17, 18, 18, 2, -17}, // 0x4E 'N' + {1153, 17, 18, 18, 2, -17}, // 0x4F 'O' + {1192, 15, 18, 15, 2, -17}, // 0x50 'P' + {1226, 18, 19, 19, 2, -17}, // 0x51 'Q' + {1269, 16, 18, 17, 2, -17}, // 0x52 'R' + {1305, 15, 18, 16, 2, -17}, // 0x53 'S' + {1339, 14, 18, 15, 4, -17}, // 0x54 'T' + {1371, 16, 18, 17, 3, -17}, // 0x55 'U' + {1407, 15, 18, 15, 4, -17}, // 0x56 'V' + {1441, 22, 18, 22, 4, -17}, // 0x57 'W' + {1491, 19, 18, 16, 0, -17}, // 0x58 'X' + {1534, 16, 18, 16, 4, -17}, // 0x59 'Y' + {1570, 17, 18, 15, 1, -17}, // 0x5A 'Z' + {1609, 10, 23, 7, 0, -17}, // 0x5B '[' + {1638, 3, 18, 7, 4, -17}, // 0x5C '\' + {1645, 10, 23, 7, -1, -16}, // 0x5D ']' + {1674, 10, 9, 11, 2, -16}, // 0x5E '^' + {1686, 14, 1, 13, -1, 4}, // 0x5F '_' + {1688, 4, 4, 8, 4, -17}, // 0x60 '`' + {1690, 11, 13, 13, 2, -12}, // 0x61 'a' + {1708, 13, 18, 13, 1, -17}, // 0x62 'b' + {1738, 11, 13, 12, 2, -12}, // 0x63 'c' + {1756, 14, 18, 13, 2, -17}, // 0x64 'd' + {1788, 12, 13, 13, 2, -12}, // 0x65 'e' + {1808, 8, 18, 6, 2, -17}, // 0x66 'f' + {1826, 14, 18, 13, 1, -12}, // 0x67 'g' + {1858, 12, 18, 13, 1, -17}, // 0x68 'h' + {1885, 5, 18, 5, 2, -17}, // 0x69 'i' + {1897, 9, 23, 6, -1, -17}, // 0x6A 'j' + {1923, 13, 18, 12, 1, -17}, // 0x6B 'k' + {1953, 5, 18, 5, 2, -17}, // 0x6C 'l' + {1965, 19, 13, 20, 1, -12}, // 0x6D 'm' + {1996, 12, 13, 13, 1, -12}, // 0x6E 'n' + {2016, 12, 13, 13, 2, -12}, // 0x6F 'o' + {2036, 14, 18, 14, 0, -12}, // 0x70 'p' + {2068, 13, 18, 13, 2, -12}, // 0x71 'q' + {2098, 9, 13, 8, 1, -12}, // 0x72 'r' + {2113, 12, 13, 12, 1, -12}, // 0x73 's' + {2133, 7, 16, 6, 2, -15}, // 0x74 't' + {2147, 12, 13, 13, 2, -12}, // 0x75 'u' + {2167, 11, 13, 12, 3, -12}, // 0x76 'v' + {2185, 17, 13, 17, 3, -12}, // 0x77 'w' + {2213, 14, 13, 12, 0, -12}, // 0x78 'x' + {2236, 14, 18, 11, 0, -12}, // 0x79 'y' + {2268, 12, 13, 12, 1, -12}, // 0x7A 'z' + {2288, 8, 23, 8, 3, -17}, // 0x7B '{' + {2311, 6, 23, 6, 1, -17}, // 0x7C '|' + {2329, 9, 23, 8, -1, -16}, // 0x7D '}' + {2355, 11, 5, 14, 3, -10}}; // 0x7E '~' + +const GFXfont FreeSansOblique12pt7b PROGMEM = { + (uint8_t *)FreeSansOblique12pt7bBitmaps, + (GFXglyph *)FreeSansOblique12pt7bGlyphs, 0x20, 0x7E, 29}; + +// Approx. 3034 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSansOblique18pt7b.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSansOblique18pt7b.h new file mode 100644 index 0000000..f85b07f --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSansOblique18pt7b.h @@ -0,0 +1,520 @@ +#pragma once +#include + +const uint8_t FreeSansOblique18pt7bBitmaps[] PROGMEM = { + 0x03, 0x83, 0x81, 0xC0, 0xE0, 0x70, 0x78, 0x38, 0x1C, 0x0E, 0x07, 0x07, + 0x83, 0x81, 0xC0, 0xE0, 0x60, 0x30, 0x30, 0x18, 0x0C, 0x04, 0x00, 0x00, + 0x01, 0xC0, 0xE0, 0x70, 0x78, 0x00, 0x71, 0xDC, 0x7F, 0x3F, 0x8E, 0xE3, + 0xB8, 0xEC, 0x33, 0x0C, 0xC3, 0x00, 0x00, 0x38, 0x70, 0x01, 0xC3, 0x80, + 0x0C, 0x18, 0x00, 0xE1, 0xC0, 0x06, 0x0C, 0x00, 0x70, 0xE0, 0x03, 0x87, + 0x03, 0xFF, 0xFF, 0x1F, 0xFF, 0xF0, 0xFF, 0xFF, 0x80, 0x60, 0xC0, 0x07, + 0x0E, 0x00, 0x30, 0x60, 0x03, 0x87, 0x00, 0x18, 0x30, 0x1F, 0xFF, 0xF8, + 0xFF, 0xFF, 0xC7, 0xFF, 0xFC, 0x07, 0x0E, 0x00, 0x30, 0x70, 0x03, 0x87, + 0x00, 0x1C, 0x38, 0x00, 0xC1, 0x80, 0x0E, 0x1C, 0x00, 0x60, 0xC0, 0x00, + 0x00, 0x0C, 0x00, 0x07, 0xF8, 0x01, 0xFF, 0xC0, 0x3F, 0xFE, 0x07, 0x99, + 0xF0, 0xF1, 0x87, 0x0E, 0x18, 0x71, 0xC1, 0x87, 0x1C, 0x38, 0x01, 0xC3, + 0x00, 0x1C, 0x30, 0x01, 0xE3, 0x00, 0x0F, 0xB0, 0x00, 0xFF, 0x80, 0x03, + 0xFF, 0x00, 0x0F, 0xF8, 0x00, 0x6F, 0xC0, 0x06, 0x3C, 0x00, 0xC1, 0xCE, + 0x0C, 0x1C, 0xE0, 0xC1, 0xCE, 0x0C, 0x38, 0xF1, 0xC3, 0x8F, 0x98, 0xF0, + 0x7F, 0xFE, 0x03, 0xFF, 0xC0, 0x0F, 0xF0, 0x00, 0x30, 0x00, 0x03, 0x00, + 0x00, 0x30, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x07, 0x03, 0xE0, 0x03, + 0x81, 0xFC, 0x00, 0xC0, 0xFF, 0x00, 0x60, 0x70, 0xE0, 0x38, 0x38, 0x18, + 0x1C, 0x0C, 0x06, 0x0E, 0x03, 0x01, 0x83, 0x00, 0xC0, 0xE1, 0x80, 0x38, + 0x70, 0xE0, 0x0F, 0xF8, 0x70, 0x01, 0xFC, 0x18, 0x00, 0x3E, 0x0C, 0x00, + 0x00, 0x06, 0x07, 0x80, 0x03, 0x87, 0xF8, 0x00, 0xC3, 0xFE, 0x00, 0x61, + 0xE1, 0xC0, 0x30, 0x60, 0x30, 0x1C, 0x30, 0x0C, 0x0E, 0x0C, 0x03, 0x03, + 0x03, 0x01, 0x81, 0x80, 0xE1, 0xE0, 0xC0, 0x1F, 0xF0, 0x70, 0x07, 0xF8, + 0x18, 0x00, 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x07, 0xF8, 0x00, 0xFF, 0xC0, + 0x1E, 0x3C, 0x03, 0xC1, 0xC0, 0x38, 0x1C, 0x03, 0x81, 0xC0, 0x38, 0x38, + 0x03, 0xC7, 0x00, 0x1D, 0xE0, 0x01, 0xFC, 0x00, 0x1F, 0x00, 0x07, 0xF0, + 0x01, 0xF7, 0x87, 0x3C, 0x3C, 0xE7, 0x81, 0xCE, 0x70, 0x1F, 0xCE, 0x00, + 0xFC, 0xE0, 0x07, 0x8E, 0x00, 0x78, 0xF0, 0x1F, 0x8F, 0x87, 0xFC, 0x7F, + 0xF9, 0xC3, 0xFE, 0x1E, 0x1F, 0x80, 0xE0, 0x77, 0xFE, 0xEE, 0xCC, 0xC0, + 0x00, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x80, 0x30, 0x06, 0x00, 0xE0, + 0x0C, 0x01, 0xC0, 0x18, 0x03, 0x80, 0x38, 0x07, 0x00, 0x70, 0x07, 0x00, + 0x70, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, + 0xE0, 0x0E, 0x00, 0xE0, 0x06, 0x00, 0x70, 0x07, 0x00, 0x30, 0x03, 0x00, + 0x18, 0x00, 0x01, 0x80, 0x0C, 0x00, 0xC0, 0x0E, 0x00, 0xE0, 0x06, 0x00, + 0x70, 0x07, 0x00, 0x70, 0x07, 0x00, 0x70, 0x07, 0x00, 0x70, 0x07, 0x00, + 0x70, 0x07, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x01, 0xC0, 0x1C, 0x03, + 0x80, 0x38, 0x03, 0x00, 0x70, 0x06, 0x00, 0xC0, 0x1C, 0x01, 0x80, 0x30, + 0x06, 0x00, 0xC0, 0x00, 0x06, 0x01, 0x84, 0x47, 0xF7, 0xFF, 0xCF, 0xC1, + 0xE0, 0xD8, 0x67, 0x18, 0xC0, 0x00, 0x70, 0x00, 0x1C, 0x00, 0x0F, 0x00, + 0x03, 0x80, 0x00, 0xE0, 0x00, 0x38, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xC0, 0x70, 0x00, 0x1C, 0x00, 0x07, 0x00, 0x01, 0xC0, 0x00, 0xE0, + 0x00, 0x38, 0x00, 0x0E, 0x00, 0x3B, 0xDC, 0x21, 0x18, 0x98, 0xFF, 0xFF, + 0xFF, 0xE0, 0x7F, 0xFE, 0x00, 0x06, 0x00, 0x18, 0x00, 0x30, 0x00, 0xC0, + 0x01, 0x80, 0x06, 0x00, 0x0C, 0x00, 0x30, 0x00, 0x60, 0x01, 0x80, 0x03, + 0x00, 0x0C, 0x00, 0x18, 0x00, 0x60, 0x00, 0xC0, 0x03, 0x00, 0x06, 0x00, + 0x18, 0x00, 0x20, 0x00, 0xC0, 0x03, 0x00, 0x06, 0x00, 0x18, 0x00, 0x30, + 0x00, 0xC0, 0x01, 0x80, 0x00, 0x00, 0x7C, 0x00, 0x7F, 0xC0, 0x7F, 0xF8, + 0x3E, 0x1E, 0x0F, 0x03, 0xC7, 0x80, 0x71, 0xC0, 0x1C, 0xE0, 0x07, 0x38, + 0x01, 0xDE, 0x00, 0x77, 0x00, 0x1D, 0xC0, 0x0F, 0x70, 0x03, 0xFC, 0x00, + 0xEE, 0x00, 0x3B, 0x80, 0x0E, 0xE0, 0x07, 0xB8, 0x01, 0xCE, 0x00, 0xF3, + 0x80, 0x38, 0xF0, 0x1E, 0x1E, 0x1F, 0x07, 0xFF, 0x80, 0xFF, 0xC0, 0x0F, + 0x80, 0x00, 0x00, 0xC0, 0x70, 0x3C, 0x3E, 0xFF, 0xBF, 0xEF, 0xF8, 0x1E, + 0x07, 0x01, 0xC0, 0x70, 0x1C, 0x0F, 0x03, 0x80, 0xE0, 0x38, 0x0E, 0x07, + 0x81, 0xC0, 0x70, 0x1C, 0x07, 0x01, 0xC0, 0xE0, 0x38, 0x00, 0x00, 0x3F, + 0x00, 0x0F, 0xFC, 0x03, 0xFF, 0xE0, 0x7C, 0x1E, 0x07, 0x80, 0xF0, 0xF0, + 0x07, 0x0E, 0x00, 0x70, 0xE0, 0x07, 0x00, 0x00, 0x70, 0x00, 0x0E, 0x00, + 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x0F, 0x80, 0x03, 0xF0, 0x00, 0xFC, 0x00, + 0x1F, 0x00, 0x07, 0xC0, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0x80, 0x00, + 0x70, 0x00, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0x8F, 0xFF, 0xF0, 0xFF, 0xFF, + 0x00, 0x00, 0x7E, 0x00, 0x3F, 0xF0, 0x0F, 0xFF, 0x03, 0xC1, 0xF0, 0x70, + 0x0E, 0x1C, 0x01, 0xC3, 0x80, 0x38, 0xE0, 0x07, 0x00, 0x01, 0xC0, 0x00, + 0xF0, 0x03, 0xFC, 0x00, 0x7F, 0x00, 0x0F, 0xF0, 0x00, 0x1F, 0x00, 0x00, + 0xE0, 0x00, 0x1C, 0x00, 0x03, 0x9C, 0x00, 0x73, 0x80, 0x1E, 0x70, 0x03, + 0x8F, 0x00, 0xF1, 0xF0, 0x7C, 0x1F, 0xFF, 0x01, 0xFF, 0xC0, 0x0F, 0xC0, + 0x00, 0x00, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x78, 0x00, 0x3E, 0x00, 0x1F, + 0x80, 0x0F, 0xE0, 0x07, 0xF0, 0x03, 0xDC, 0x01, 0xE7, 0x00, 0x71, 0xC0, + 0x38, 0xF0, 0x1C, 0x38, 0x0E, 0x0E, 0x07, 0x03, 0x83, 0x80, 0xE1, 0xC0, + 0x70, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x70, 0x00, 0x38, + 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x01, 0xFF, + 0xF0, 0x3F, 0xFF, 0x03, 0xFF, 0xE0, 0x78, 0x00, 0x07, 0x00, 0x00, 0x70, + 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x0E, 0xFC, 0x01, 0xFF, 0xF0, 0x1F, + 0xFF, 0x83, 0xE0, 0x78, 0x3C, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xC0, + 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x18, 0x00, 0x03, 0x8E, 0x00, 0x78, + 0xE0, 0x0F, 0x0F, 0x81, 0xE0, 0x7F, 0xFC, 0x03, 0xFF, 0x80, 0x0F, 0xE0, + 0x00, 0x00, 0x7E, 0x00, 0x3F, 0xF0, 0x0F, 0xFF, 0x03, 0xE1, 0xF0, 0xF0, + 0x0E, 0x1C, 0x01, 0xC7, 0x00, 0x01, 0xE0, 0x00, 0x38, 0x00, 0x07, 0x1F, + 0x01, 0xCF, 0xF8, 0x3B, 0xFF, 0x87, 0xE0, 0xF8, 0xF0, 0x0F, 0x3C, 0x00, + 0xE7, 0x80, 0x1C, 0xE0, 0x03, 0x9C, 0x00, 0x73, 0x80, 0x1C, 0x70, 0x03, + 0x8F, 0x00, 0xE0, 0xF0, 0x78, 0x1F, 0xFF, 0x01, 0xFF, 0x80, 0x0F, 0xC0, + 0x00, 0x3F, 0xFF, 0xCF, 0xFF, 0xF7, 0xFF, 0xFC, 0x00, 0x0E, 0x00, 0x07, + 0x00, 0x03, 0x80, 0x00, 0xC0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, + 0x0E, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x78, 0x00, 0x1C, + 0x00, 0x0E, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xF0, 0x00, 0x38, 0x00, + 0x1E, 0x00, 0x07, 0x00, 0x03, 0xC0, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x7E, + 0x00, 0x3F, 0xF0, 0x1F, 0xFF, 0x07, 0xC1, 0xF0, 0xE0, 0x0E, 0x38, 0x01, + 0xC7, 0x00, 0x38, 0xE0, 0x0E, 0x1C, 0x01, 0xC3, 0xC0, 0xF0, 0x3F, 0xFC, + 0x03, 0xFE, 0x01, 0xFF, 0xF0, 0x7C, 0x1E, 0x1E, 0x01, 0xE3, 0x80, 0x1C, + 0xE0, 0x03, 0x9C, 0x00, 0x73, 0x80, 0x0E, 0x70, 0x03, 0x8F, 0x00, 0xF1, + 0xF0, 0x7C, 0x1F, 0xFF, 0x01, 0xFF, 0xC0, 0x0F, 0xC0, 0x00, 0x00, 0x7E, + 0x00, 0x3F, 0xF0, 0x1F, 0xFF, 0x07, 0xC1, 0xE0, 0xE0, 0x1E, 0x38, 0x01, + 0xC7, 0x00, 0x39, 0xC0, 0x07, 0x38, 0x00, 0xE7, 0x00, 0x3C, 0xE0, 0x07, + 0x9E, 0x01, 0xE3, 0xE0, 0xFC, 0x3F, 0xFB, 0x83, 0xFE, 0xF0, 0x3F, 0x1C, + 0x00, 0x03, 0x80, 0x00, 0xF0, 0x00, 0x1C, 0x70, 0x07, 0x8E, 0x01, 0xE1, + 0xE0, 0xF8, 0x1F, 0xFE, 0x01, 0xFF, 0x80, 0x0F, 0xC0, 0x00, 0x0E, 0x3C, + 0x78, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, + 0xF1, 0xE3, 0x80, 0x07, 0x0F, 0x0F, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x78, 0x70, 0x10, 0x10, + 0x30, 0x20, 0xC0, 0x00, 0x00, 0x20, 0x00, 0x1C, 0x00, 0x1F, 0x80, 0x1F, + 0xC0, 0x0F, 0xC0, 0x0F, 0xE0, 0x07, 0xE0, 0x03, 0xF0, 0x00, 0xF0, 0x00, + 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x3F, 0x00, 0x01, 0xF8, + 0x00, 0x0F, 0xC0, 0x00, 0x78, 0x00, 0x01, 0x00, 0x7F, 0xFF, 0xDF, 0xFF, + 0xF7, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFB, + 0xFF, 0xFE, 0xFF, 0xFF, 0x80, 0x10, 0x00, 0x03, 0xC0, 0x00, 0x7E, 0x00, + 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x3F, + 0x00, 0x01, 0xE0, 0x01, 0xF8, 0x00, 0xFC, 0x00, 0xFE, 0x00, 0x7E, 0x00, + 0x7F, 0x00, 0x3F, 0x00, 0x07, 0x00, 0x00, 0x80, 0x00, 0x00, 0x03, 0xF8, + 0x0F, 0xFC, 0x1F, 0xFE, 0x3C, 0x1F, 0x78, 0x07, 0x70, 0x07, 0xE0, 0x07, + 0xE0, 0x07, 0x00, 0x0E, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xF0, + 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0F, 0x00, 0x0E, 0x00, 0x0E, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, + 0x3C, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x03, 0xFF, 0xF0, 0x00, 0x07, + 0xFF, 0xFE, 0x00, 0x0F, 0xE0, 0x3F, 0x80, 0x0F, 0x80, 0x03, 0xE0, 0x0F, + 0x00, 0x00, 0xF8, 0x0F, 0x00, 0x00, 0x3C, 0x0F, 0x01, 0xF0, 0x0F, 0x0F, + 0x03, 0xFD, 0xC7, 0x8F, 0x03, 0xFE, 0xE1, 0xC7, 0x03, 0xC3, 0x60, 0xE7, + 0x03, 0xC0, 0xF0, 0x77, 0x83, 0xC0, 0x70, 0x3B, 0x83, 0xC0, 0x78, 0x1D, + 0xC1, 0xC0, 0x38, 0x1F, 0xC1, 0xE0, 0x1C, 0x0E, 0xE0, 0xE0, 0x1C, 0x0F, + 0x70, 0x70, 0x0E, 0x07, 0x38, 0x38, 0x0E, 0x07, 0x9C, 0x1C, 0x0F, 0x07, + 0x8E, 0x0F, 0x0F, 0x8F, 0x87, 0x03, 0xFD, 0xFF, 0x83, 0xC1, 0xFC, 0xFF, + 0x80, 0xE0, 0x7C, 0x3F, 0x00, 0x78, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, + 0x00, 0x07, 0x80, 0x00, 0x00, 0x01, 0xF8, 0x07, 0x00, 0x00, 0x7F, 0xFF, + 0x80, 0x00, 0x1F, 0xFF, 0xC0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x01, + 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x80, 0x00, 0xFF, + 0x00, 0x01, 0xDE, 0x00, 0x07, 0x9C, 0x00, 0x0E, 0x38, 0x00, 0x3C, 0x70, + 0x00, 0x70, 0xF0, 0x01, 0xC1, 0xE0, 0x07, 0x83, 0xC0, 0x0E, 0x07, 0x80, + 0x38, 0x07, 0x00, 0x70, 0x0E, 0x01, 0xFF, 0xFC, 0x03, 0xFF, 0xFC, 0x0F, + 0xFF, 0xF8, 0x1C, 0x00, 0xF0, 0x70, 0x01, 0xE1, 0xE0, 0x01, 0xC3, 0x80, + 0x03, 0x8F, 0x00, 0x07, 0x1C, 0x00, 0x0E, 0x78, 0x00, 0x1E, 0xE0, 0x00, + 0x3C, 0x07, 0xFF, 0xC0, 0x3F, 0xFF, 0x81, 0xFF, 0xFC, 0x0E, 0x00, 0xF0, + 0xF0, 0x03, 0x87, 0x00, 0x1C, 0x38, 0x00, 0xE1, 0xC0, 0x07, 0x0E, 0x00, + 0x70, 0xF0, 0x03, 0x87, 0x00, 0x78, 0x3F, 0xFF, 0x81, 0xFF, 0xF8, 0x0F, + 0xFF, 0xF0, 0xE0, 0x03, 0xC7, 0x00, 0x0E, 0x38, 0x00, 0x71, 0xC0, 0x03, + 0x9E, 0x00, 0x1C, 0xE0, 0x00, 0xE7, 0x00, 0x0E, 0x38, 0x00, 0xF1, 0xC0, + 0x0F, 0x1F, 0xFF, 0xF0, 0xFF, 0xFF, 0x07, 0xFF, 0xE0, 0x00, 0x00, 0x1F, + 0x80, 0x03, 0xFF, 0x80, 0x1F, 0xFF, 0x01, 0xF8, 0x3E, 0x07, 0x80, 0x38, + 0x38, 0x00, 0xF1, 0xC0, 0x01, 0xCF, 0x00, 0x07, 0x38, 0x00, 0x01, 0xE0, + 0x00, 0x07, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x70, 0x00, 0x03, 0x80, 0x00, + 0x0E, 0x00, 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x7B, 0x80, 0x01, 0xCE, + 0x00, 0x0F, 0x3C, 0x00, 0x38, 0x70, 0x01, 0xE1, 0xE0, 0x0F, 0x07, 0xC0, + 0xF8, 0x0F, 0xFF, 0xC0, 0x1F, 0xFC, 0x00, 0x1F, 0xC0, 0x00, 0x07, 0xFF, + 0xC0, 0x0F, 0xFF, 0xE0, 0x1F, 0xFF, 0xE0, 0x38, 0x03, 0xE0, 0xF0, 0x03, + 0xC1, 0xC0, 0x03, 0x83, 0x80, 0x03, 0x87, 0x00, 0x07, 0x1E, 0x00, 0x0E, + 0x3C, 0x00, 0x1C, 0x70, 0x00, 0x38, 0xE0, 0x00, 0x71, 0xC0, 0x00, 0xE7, + 0x80, 0x03, 0x8F, 0x00, 0x07, 0x1C, 0x00, 0x0E, 0x38, 0x00, 0x3C, 0x70, + 0x00, 0x71, 0xE0, 0x01, 0xE3, 0x80, 0x03, 0x87, 0x00, 0x0E, 0x0E, 0x00, + 0x3C, 0x1C, 0x01, 0xF0, 0x7F, 0xFF, 0xC0, 0xFF, 0xFE, 0x01, 0xFF, 0xF0, + 0x00, 0x07, 0xFF, 0xFE, 0x0F, 0xFF, 0xFC, 0x1F, 0xFF, 0xF0, 0x38, 0x00, + 0x00, 0xF0, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, 0x00, 0x07, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x70, 0x00, 0x00, 0xFF, 0xFF, 0x81, + 0xFF, 0xFF, 0x07, 0xFF, 0xFE, 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x70, 0x00, 0x01, 0xE0, 0x00, 0x03, 0x80, 0x00, 0x07, 0x00, + 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x7F, 0xFF, 0xF0, 0xFF, 0xFF, + 0xC1, 0xFF, 0xFF, 0x80, 0x07, 0xFF, 0xFC, 0x1F, 0xFF, 0xF0, 0x7F, 0xFF, + 0xC1, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x03, + 0x80, 0x00, 0x1E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xC0, 0x00, 0x07, 0xFF, + 0xF0, 0x1F, 0xFF, 0xC0, 0xFF, 0xFF, 0x03, 0x80, 0x00, 0x0E, 0x00, 0x00, + 0x38, 0x00, 0x00, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1C, 0x00, 0x00, 0x70, + 0x00, 0x01, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xE0, 0x00, + 0x03, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x7F, 0xF8, 0x01, 0xFF, + 0xFC, 0x03, 0xE0, 0x3E, 0x07, 0x80, 0x0E, 0x0F, 0x00, 0x0F, 0x1E, 0x00, + 0x07, 0x1C, 0x00, 0x07, 0x38, 0x00, 0x00, 0x38, 0x00, 0x00, 0x70, 0x00, + 0x00, 0x70, 0x00, 0x00, 0xF0, 0x07, 0xFE, 0xE0, 0x07, 0xFE, 0xE0, 0x07, + 0xFE, 0xE0, 0x00, 0x0E, 0xE0, 0x00, 0x0E, 0xE0, 0x00, 0x0E, 0xE0, 0x00, + 0x1C, 0xF0, 0x00, 0x3C, 0x70, 0x00, 0x7C, 0x78, 0x00, 0xFC, 0x3E, 0x03, + 0xDC, 0x1F, 0xFF, 0x98, 0x0F, 0xFE, 0x18, 0x03, 0xF8, 0x18, 0x07, 0x00, + 0x07, 0x83, 0x80, 0x03, 0xC1, 0xC0, 0x01, 0xC0, 0xE0, 0x00, 0xE0, 0xF0, + 0x00, 0x70, 0x70, 0x00, 0x78, 0x38, 0x00, 0x3C, 0x1C, 0x00, 0x1C, 0x1E, + 0x00, 0x0E, 0x0F, 0x00, 0x07, 0x07, 0x00, 0x07, 0x83, 0xFF, 0xFF, 0x81, + 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0xE0, 0xE0, 0x00, 0x70, 0x70, 0x00, 0x78, + 0x38, 0x00, 0x38, 0x1C, 0x00, 0x1C, 0x1E, 0x00, 0x0E, 0x0E, 0x00, 0x0F, + 0x07, 0x00, 0x07, 0x83, 0x80, 0x03, 0x81, 0xC0, 0x01, 0xC1, 0xE0, 0x00, + 0xE0, 0xE0, 0x00, 0xF0, 0x70, 0x00, 0x78, 0x00, 0x07, 0x0F, 0x0F, 0x0E, + 0x0E, 0x0E, 0x0E, 0x1E, 0x1C, 0x1C, 0x1C, 0x1C, 0x3C, 0x3C, 0x38, 0x38, + 0x38, 0x38, 0x78, 0x70, 0x70, 0x70, 0x70, 0xF0, 0xF0, 0xE0, 0x00, 0x01, + 0xC0, 0x00, 0x70, 0x00, 0x3C, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, + 0x00, 0x38, 0x00, 0x1E, 0x00, 0x07, 0x00, 0x01, 0xC0, 0x00, 0x70, 0x00, + 0x1C, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x1E, + 0x1C, 0x07, 0x0E, 0x01, 0xC3, 0x80, 0x70, 0xE0, 0x3C, 0x38, 0x0E, 0x0F, + 0x0F, 0x81, 0xFF, 0xC0, 0x7F, 0xE0, 0x07, 0xE0, 0x00, 0x07, 0x00, 0x07, + 0x83, 0x80, 0x07, 0x81, 0xC0, 0x0F, 0x00, 0xE0, 0x0F, 0x00, 0xF0, 0x0F, + 0x00, 0x70, 0x0F, 0x00, 0x38, 0x0F, 0x00, 0x1C, 0x1F, 0x00, 0x1E, 0x1E, + 0x00, 0x0F, 0x1E, 0x00, 0x07, 0x1E, 0x00, 0x03, 0x9F, 0x00, 0x01, 0xDF, + 0xC0, 0x01, 0xFC, 0xE0, 0x00, 0xFC, 0x78, 0x00, 0x7C, 0x1C, 0x00, 0x3C, + 0x0F, 0x00, 0x1C, 0x07, 0x80, 0x1E, 0x01, 0xE0, 0x0E, 0x00, 0xF0, 0x07, + 0x00, 0x38, 0x03, 0x80, 0x1E, 0x01, 0xC0, 0x07, 0x01, 0xE0, 0x03, 0xC0, + 0xE0, 0x00, 0xE0, 0x70, 0x00, 0x78, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, + 0x00, 0x07, 0x00, 0x0F, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x1E, + 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x3C, 0x00, 0x38, + 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x78, 0x00, 0x70, 0x00, 0x70, + 0x00, 0x70, 0x00, 0x70, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, + 0xC0, 0x00, 0xF8, 0x3E, 0x00, 0x07, 0xC1, 0xF0, 0x00, 0x7E, 0x0F, 0x80, + 0x03, 0xF0, 0xFC, 0x00, 0x3F, 0x07, 0x70, 0x01, 0xF8, 0x3B, 0x80, 0x1D, + 0xC1, 0xDC, 0x00, 0xEE, 0x0E, 0xE0, 0x0E, 0xE0, 0xE7, 0x00, 0x77, 0x07, + 0x38, 0x07, 0x38, 0x39, 0xC0, 0x31, 0xC1, 0xCE, 0x03, 0x9E, 0x1E, 0x38, + 0x38, 0xE0, 0xE1, 0xC1, 0xC7, 0x07, 0x0E, 0x1C, 0x38, 0x38, 0x70, 0xE1, + 0xC1, 0xC3, 0x8E, 0x1E, 0x1E, 0x1C, 0x70, 0xE0, 0xE0, 0xE7, 0x07, 0x07, + 0x07, 0x38, 0x38, 0x38, 0x1F, 0x81, 0xC1, 0xC0, 0xF8, 0x1E, 0x1C, 0x07, + 0xC0, 0xE0, 0xE0, 0x3C, 0x07, 0x07, 0x01, 0xE0, 0x38, 0x00, 0x07, 0x80, + 0x03, 0x83, 0xE0, 0x01, 0xC1, 0xF0, 0x00, 0xE0, 0xF8, 0x00, 0xE0, 0xFE, + 0x00, 0x70, 0x7F, 0x00, 0x38, 0x3B, 0xC0, 0x1C, 0x1D, 0xE0, 0x1E, 0x0E, + 0x70, 0x0E, 0x0E, 0x3C, 0x07, 0x07, 0x0E, 0x03, 0x83, 0x87, 0x81, 0xC1, + 0xC3, 0xC1, 0xE1, 0xE0, 0xE0, 0xE0, 0xE0, 0x78, 0x70, 0x70, 0x1C, 0x38, + 0x38, 0x0F, 0x1C, 0x1C, 0x07, 0x9E, 0x1E, 0x01, 0xCE, 0x0E, 0x00, 0xF7, + 0x07, 0x00, 0x3B, 0x83, 0x80, 0x1F, 0xC1, 0xC0, 0x07, 0xC1, 0xC0, 0x03, + 0xE0, 0xE0, 0x01, 0xF0, 0x70, 0x00, 0x78, 0x00, 0x00, 0x1F, 0xC0, 0x00, + 0xFF, 0xF0, 0x01, 0xFF, 0xF8, 0x03, 0xE0, 0x7C, 0x07, 0x80, 0x1E, 0x0F, + 0x00, 0x0E, 0x1C, 0x00, 0x0F, 0x3C, 0x00, 0x07, 0x38, 0x00, 0x07, 0x70, + 0x00, 0x07, 0x70, 0x00, 0x07, 0x70, 0x00, 0x07, 0xE0, 0x00, 0x07, 0xE0, + 0x00, 0x0F, 0xE0, 0x00, 0x0E, 0xE0, 0x00, 0x0E, 0xE0, 0x00, 0x0E, 0xE0, + 0x00, 0x1C, 0xE0, 0x00, 0x1C, 0xF0, 0x00, 0x38, 0x70, 0x00, 0x78, 0x78, + 0x00, 0xF0, 0x3E, 0x07, 0xE0, 0x1F, 0xFF, 0xC0, 0x0F, 0xFF, 0x00, 0x03, + 0xF8, 0x00, 0x07, 0xFF, 0xE0, 0x1F, 0xFF, 0xC0, 0x7F, 0xFF, 0x81, 0xC0, + 0x1F, 0x0F, 0x00, 0x3C, 0x38, 0x00, 0x70, 0xE0, 0x01, 0xC3, 0x80, 0x07, + 0x1E, 0x00, 0x1C, 0x78, 0x00, 0xE1, 0xC0, 0x07, 0x87, 0x00, 0x3C, 0x1F, + 0xFF, 0xE0, 0xFF, 0xFF, 0x03, 0xFF, 0xF0, 0x0E, 0x00, 0x00, 0x38, 0x00, + 0x00, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1C, 0x00, 0x00, 0x70, 0x00, 0x01, + 0xC0, 0x00, 0x07, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xE0, 0x00, 0x03, 0x80, + 0x00, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x3F, 0xFC, 0x00, 0x7F, 0xFF, 0x00, + 0x7C, 0x07, 0xC0, 0x78, 0x00, 0xF0, 0x78, 0x00, 0x38, 0x78, 0x00, 0x1E, + 0x78, 0x00, 0x07, 0x38, 0x00, 0x03, 0xBC, 0x00, 0x01, 0xDC, 0x00, 0x00, + 0xEE, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x1F, 0x80, 0x00, + 0x1D, 0xC0, 0x00, 0x0E, 0xE0, 0x00, 0x0F, 0x70, 0x00, 0x07, 0x38, 0x00, + 0x87, 0x9E, 0x00, 0xE7, 0x87, 0x00, 0x7F, 0x83, 0xC0, 0x1F, 0x80, 0xF8, + 0x1F, 0x80, 0x3F, 0xFF, 0xE0, 0x0F, 0xFF, 0x78, 0x01, 0xFE, 0x1E, 0x00, + 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFF, 0xF0, 0x0F, 0xFF, 0xF8, + 0x1F, 0xFF, 0xF0, 0x38, 0x00, 0xF0, 0xF0, 0x00, 0xE1, 0xC0, 0x01, 0xC3, + 0x80, 0x03, 0x87, 0x00, 0x07, 0x1E, 0x00, 0x0E, 0x3C, 0x00, 0x38, 0x70, + 0x00, 0xF0, 0xE0, 0x03, 0xC1, 0xFF, 0xFE, 0x07, 0xFF, 0xF8, 0x0F, 0xFF, + 0xF8, 0x1C, 0x00, 0x78, 0x38, 0x00, 0x70, 0x70, 0x00, 0xE1, 0xE0, 0x01, + 0xC3, 0x80, 0x03, 0x87, 0x00, 0x06, 0x0E, 0x00, 0x1C, 0x1C, 0x00, 0x38, + 0x78, 0x00, 0x70, 0xE0, 0x00, 0xE1, 0xC0, 0x01, 0xE0, 0x00, 0x3F, 0xC0, + 0x07, 0xFF, 0xC0, 0x3F, 0xFF, 0x81, 0xF0, 0x1E, 0x0F, 0x00, 0x3C, 0x38, + 0x00, 0x71, 0xC0, 0x01, 0xC7, 0x00, 0x07, 0x1C, 0x00, 0x00, 0x78, 0x00, + 0x01, 0xF8, 0x00, 0x03, 0xFC, 0x00, 0x07, 0xFE, 0x00, 0x07, 0xFF, 0x00, + 0x03, 0xFE, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xF3, 0x80, 0x01, 0xCE, 0x00, + 0x07, 0x38, 0x00, 0x18, 0xE0, 0x00, 0xE3, 0xC0, 0x07, 0x07, 0x80, 0x7C, + 0x1F, 0xFF, 0xE0, 0x3F, 0xFE, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x1E, 0x00, + 0x01, 0xE0, 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x03, 0xC0, + 0x00, 0x38, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x03, 0x80, 0x00, 0x78, + 0x00, 0x07, 0x00, 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0xF0, 0x00, 0x0F, + 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x1E, 0x00, 0x01, + 0xE0, 0x00, 0x0E, 0x00, 0x0F, 0x0E, 0x00, 0x0F, 0x0E, 0x00, 0x0E, 0x0E, + 0x00, 0x0E, 0x1E, 0x00, 0x0E, 0x1C, 0x00, 0x1E, 0x1C, 0x00, 0x1C, 0x1C, + 0x00, 0x1C, 0x3C, 0x00, 0x1C, 0x3C, 0x00, 0x1C, 0x38, 0x00, 0x3C, 0x38, + 0x00, 0x38, 0x38, 0x00, 0x38, 0x78, 0x00, 0x38, 0x70, 0x00, 0x78, 0x70, + 0x00, 0x78, 0x70, 0x00, 0x70, 0xF0, 0x00, 0x70, 0xF0, 0x00, 0x70, 0xE0, + 0x00, 0xF0, 0xE0, 0x00, 0xE0, 0xF0, 0x03, 0xE0, 0x78, 0x0F, 0xC0, 0x7F, + 0xFF, 0x80, 0x1F, 0xFE, 0x00, 0x07, 0xF0, 0x00, 0xE0, 0x00, 0x3F, 0x80, + 0x03, 0xFC, 0x00, 0x1D, 0xE0, 0x01, 0xE7, 0x00, 0x0E, 0x38, 0x00, 0xE1, + 0xC0, 0x07, 0x0E, 0x00, 0x70, 0x70, 0x07, 0x83, 0xC0, 0x38, 0x1E, 0x03, + 0xC0, 0xF0, 0x1C, 0x03, 0x81, 0xE0, 0x1C, 0x0E, 0x00, 0xE0, 0xF0, 0x07, + 0x07, 0x00, 0x3C, 0x70, 0x01, 0xE3, 0x80, 0x0F, 0x38, 0x00, 0x39, 0xC0, + 0x01, 0xDC, 0x00, 0x0E, 0xE0, 0x00, 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x1F, + 0x00, 0x00, 0xF0, 0x00, 0x00, 0xE0, 0x03, 0x80, 0x0E, 0xE0, 0x07, 0x80, + 0x1E, 0xE0, 0x07, 0xC0, 0x1E, 0xE0, 0x0F, 0xC0, 0x1C, 0xE0, 0x0F, 0xC0, + 0x3C, 0xE0, 0x1F, 0xC0, 0x38, 0xE0, 0x1D, 0xC0, 0x78, 0xE0, 0x3D, 0xC0, + 0x70, 0xE0, 0x39, 0xC0, 0xF0, 0xE0, 0x79, 0xC0, 0xE0, 0xE0, 0x71, 0xC0, + 0xE0, 0xE0, 0xF1, 0xC1, 0xC0, 0xE0, 0xE1, 0xC1, 0xC0, 0xE1, 0xE1, 0xC3, + 0xC0, 0x61, 0xC1, 0xC3, 0x80, 0x63, 0xC1, 0xC7, 0x80, 0x63, 0x80, 0xE7, + 0x00, 0x67, 0x80, 0xEF, 0x00, 0x67, 0x00, 0xEE, 0x00, 0x7F, 0x00, 0xEE, + 0x00, 0x7E, 0x00, 0xFC, 0x00, 0x7E, 0x00, 0xFC, 0x00, 0x7C, 0x00, 0xF8, + 0x00, 0x7C, 0x00, 0xF8, 0x00, 0x78, 0x00, 0xF8, 0x00, 0x78, 0x00, 0xF0, + 0x00, 0x03, 0xC0, 0x03, 0xC0, 0x78, 0x00, 0xF0, 0x07, 0x80, 0x1C, 0x00, + 0xF0, 0x07, 0x80, 0x0F, 0x01, 0xE0, 0x01, 0xE0, 0x78, 0x00, 0x1C, 0x1E, + 0x00, 0x03, 0xC7, 0x80, 0x00, 0x39, 0xE0, 0x00, 0x07, 0xB8, 0x00, 0x00, + 0x7E, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x3E, 0x00, + 0x00, 0x0F, 0xC0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xF3, 0x80, 0x00, 0x3C, + 0x78, 0x00, 0x0F, 0x0F, 0x00, 0x03, 0xC0, 0xF0, 0x00, 0x70, 0x1E, 0x00, + 0x1E, 0x01, 0xE0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x03, 0xC0, 0x78, 0x00, + 0x78, 0x1E, 0x00, 0x0F, 0x00, 0xF0, 0x00, 0x3C, 0xE0, 0x00, 0x71, 0xE0, + 0x01, 0xE3, 0xC0, 0x07, 0x83, 0xC0, 0x1E, 0x07, 0x80, 0x78, 0x07, 0x00, + 0xE0, 0x0F, 0x03, 0xC0, 0x1E, 0x0F, 0x00, 0x1C, 0x3C, 0x00, 0x3C, 0xF0, + 0x00, 0x39, 0xC0, 0x00, 0x7F, 0x80, 0x00, 0xFE, 0x00, 0x00, 0xF8, 0x00, + 0x01, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x0E, 0x00, 0x00, + 0x1C, 0x00, 0x00, 0x78, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xC0, 0x00, 0x03, + 0x80, 0x00, 0x07, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0x81, + 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, + 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, + 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, + 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, + 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, + 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0xFF, 0xFF, 0xE0, 0xFF, + 0xFF, 0xF0, 0x7F, 0xFF, 0xF8, 0x00, 0x01, 0xF8, 0x1F, 0xC0, 0xFE, 0x07, + 0x00, 0x38, 0x03, 0xC0, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x03, 0xC0, + 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x07, + 0x00, 0x38, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x78, 0x03, 0x80, + 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x70, 0x03, 0xF8, 0x1F, 0xC0, 0xFE, 0x00, + 0xCC, 0xCC, 0xCC, 0x46, 0x66, 0x66, 0x66, 0x66, 0x66, 0x62, 0x33, 0x33, + 0x33, 0x03, 0xF8, 0x1F, 0xC0, 0xFE, 0x00, 0x70, 0x07, 0x00, 0x38, 0x01, + 0xC0, 0x0E, 0x00, 0xF0, 0x07, 0x00, 0x38, 0x01, 0xC0, 0x0E, 0x00, 0xE0, + 0x07, 0x00, 0x38, 0x01, 0xC0, 0x0E, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x01, + 0xC0, 0x1E, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x01, 0xC0, 0x1E, 0x00, 0xE0, + 0x07, 0x03, 0xF8, 0x1F, 0xC0, 0xFC, 0x00, 0x00, 0xF0, 0x03, 0xC0, 0x1F, + 0x00, 0x7C, 0x03, 0xB8, 0x1C, 0xE0, 0x63, 0x83, 0x8E, 0x1C, 0x38, 0x60, + 0x73, 0x81, 0xCC, 0x07, 0x70, 0x1F, 0x80, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xC0, 0xF1, 0xC3, 0x86, 0x0C, 0x00, 0xFE, 0x01, 0xFF, 0xE0, 0xFF, + 0xFC, 0x3C, 0x0F, 0x1C, 0x01, 0xC0, 0x00, 0x70, 0x00, 0x1C, 0x00, 0x0E, + 0x00, 0x1F, 0x83, 0xFF, 0xE3, 0xFE, 0x39, 0xF0, 0x1E, 0xF0, 0x07, 0x38, + 0x01, 0xCE, 0x00, 0xF3, 0xC0, 0xFC, 0xFF, 0xF7, 0x9F, 0xF1, 0xE1, 0xF0, + 0x38, 0x07, 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0xF0, + 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0x71, 0xF0, 0x0E, 0xFF, 0x83, 0xFF, + 0xF8, 0x7F, 0x0F, 0x0F, 0x80, 0xF1, 0xE0, 0x0E, 0x38, 0x01, 0xCF, 0x00, + 0x39, 0xE0, 0x07, 0x38, 0x00, 0xE7, 0x00, 0x38, 0xE0, 0x07, 0x3C, 0x00, + 0xE7, 0x80, 0x38, 0xF8, 0x0F, 0x1F, 0x87, 0xC3, 0xFF, 0xF0, 0xE7, 0xFC, + 0x1C, 0x7E, 0x00, 0x01, 0xF8, 0x07, 0xFC, 0x0F, 0xFE, 0x1E, 0x0F, 0x3C, + 0x07, 0x78, 0x07, 0x70, 0x07, 0x70, 0x00, 0xF0, 0x00, 0xE0, 0x00, 0xE0, + 0x00, 0xE0, 0x00, 0xE0, 0x0E, 0xE0, 0x1C, 0xF0, 0x3C, 0x78, 0x78, 0x7F, + 0xF0, 0x3F, 0xE0, 0x0F, 0x80, 0x00, 0x00, 0x70, 0x00, 0x0F, 0x00, 0x00, + 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 0x01, 0xE0, 0x1F, + 0x1C, 0x07, 0xFD, 0xC0, 0xFF, 0xDC, 0x1E, 0x0F, 0xC3, 0xC0, 0x7C, 0x38, + 0x07, 0x87, 0x00, 0x38, 0x70, 0x03, 0x8F, 0x00, 0x38, 0xE0, 0x07, 0x8E, + 0x00, 0x70, 0xE0, 0x07, 0x0E, 0x00, 0xF0, 0xE0, 0x0F, 0x0F, 0x01, 0xF0, + 0x78, 0x7E, 0x07, 0xFF, 0xE0, 0x3F, 0xEE, 0x01, 0xF8, 0xE0, 0x01, 0xF8, + 0x03, 0xFF, 0x03, 0xFF, 0xC3, 0xC1, 0xF3, 0xC0, 0x79, 0xC0, 0x1D, 0xC0, + 0x0E, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xF8, 0x00, 0x1C, 0x00, 0x0E, + 0x00, 0x07, 0x00, 0x73, 0xC0, 0x78, 0xF0, 0x78, 0x7F, 0xF8, 0x1F, 0xF8, + 0x03, 0xF0, 0x00, 0x01, 0xE0, 0x7C, 0x1F, 0x83, 0x80, 0x70, 0x1C, 0x03, + 0x83, 0xFC, 0x7F, 0x8F, 0xF0, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x0F, 0x01, + 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, + 0xE0, 0x1C, 0x00, 0x00, 0xFC, 0x60, 0x7F, 0xCC, 0x1F, 0xFF, 0x87, 0xC3, + 0xF1, 0xE0, 0x3E, 0x38, 0x03, 0x8E, 0x00, 0x71, 0xC0, 0x0E, 0x38, 0x01, + 0xCE, 0x00, 0x79, 0xC0, 0x0E, 0x38, 0x01, 0xC7, 0x00, 0x78, 0xE0, 0x0F, + 0x1E, 0x03, 0xC1, 0xE1, 0xF8, 0x3F, 0xFF, 0x03, 0xFE, 0xE0, 0x1F, 0x1C, + 0x00, 0x03, 0x00, 0x00, 0xE0, 0x00, 0x18, 0x38, 0x07, 0x07, 0x83, 0xC0, + 0x7F, 0xF8, 0x0F, 0xFC, 0x00, 0x7E, 0x00, 0x00, 0x07, 0x00, 0x01, 0xC0, + 0x00, 0x70, 0x00, 0x1C, 0x00, 0x0F, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, + 0x38, 0xFC, 0x0E, 0xFF, 0x87, 0xFF, 0xF1, 0xF8, 0x3C, 0x7C, 0x07, 0x1E, + 0x01, 0xC7, 0x00, 0x73, 0xC0, 0x1C, 0xE0, 0x0F, 0x38, 0x03, 0x8E, 0x00, + 0xE3, 0x80, 0x39, 0xE0, 0x0E, 0x70, 0x07, 0x9C, 0x01, 0xC7, 0x00, 0x71, + 0xC0, 0x1C, 0xE0, 0x07, 0x38, 0x03, 0x80, 0x07, 0x07, 0x0F, 0x0E, 0x00, + 0x00, 0x00, 0x1E, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x78, 0x70, 0x70, 0x70, 0x70, 0xF0, 0xE0, 0xE0, 0x00, 0x3C, 0x00, + 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, + 0x70, 0x01, 0xC0, 0x0E, 0x00, 0x38, 0x00, 0xE0, 0x03, 0x80, 0x1E, 0x00, + 0x70, 0x01, 0xC0, 0x07, 0x00, 0x1C, 0x00, 0xE0, 0x03, 0x80, 0x0E, 0x00, + 0x38, 0x00, 0xE0, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x01, 0xC0, 0x0F, 0x00, + 0x38, 0x00, 0xE0, 0x1F, 0x80, 0x7C, 0x03, 0xE0, 0x00, 0x07, 0x00, 0x00, + 0xE0, 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0xF0, 0x00, 0x1C, 0x00, 0x03, + 0x80, 0x00, 0x70, 0x1E, 0x0E, 0x07, 0x83, 0xC1, 0xE0, 0x70, 0x70, 0x0E, + 0x1C, 0x01, 0xCF, 0x00, 0x3B, 0xC0, 0x0F, 0xF8, 0x01, 0xFF, 0x80, 0x3E, + 0x70, 0x07, 0x8E, 0x00, 0xE0, 0xE0, 0x38, 0x1C, 0x07, 0x03, 0xC0, 0xE0, + 0x38, 0x1C, 0x07, 0x03, 0x80, 0xF0, 0xE0, 0x0E, 0x1C, 0x01, 0xE0, 0x07, + 0x07, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x1E, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x78, 0x70, 0x70, 0x70, 0x70, 0xF0, 0xE0, + 0xE0, 0x1E, 0x7C, 0x0F, 0x83, 0xBF, 0xE7, 0xF8, 0x7F, 0xFD, 0xFF, 0x8F, + 0xC3, 0xF0, 0xF1, 0xE0, 0x3C, 0x0E, 0x38, 0x07, 0x01, 0xCF, 0x01, 0xE0, + 0x39, 0xC0, 0x38, 0x07, 0x38, 0x07, 0x00, 0xE7, 0x00, 0xE0, 0x1C, 0xE0, + 0x1C, 0x07, 0x3C, 0x07, 0x00, 0xE7, 0x00, 0xE0, 0x1C, 0xE0, 0x1C, 0x03, + 0x9C, 0x03, 0x80, 0xF3, 0x80, 0x70, 0x1C, 0x70, 0x1C, 0x03, 0x9C, 0x03, + 0x80, 0x73, 0x80, 0x70, 0x0E, 0x00, 0x1E, 0x3E, 0x07, 0x7F, 0xE1, 0xFF, + 0xF8, 0x7E, 0x0F, 0x1F, 0x01, 0xC7, 0x80, 0x73, 0xC0, 0x1C, 0xE0, 0x07, + 0x38, 0x03, 0xCE, 0x00, 0xE3, 0x80, 0x39, 0xE0, 0x0E, 0x70, 0x03, 0x9C, + 0x01, 0xC7, 0x00, 0x71, 0xC0, 0x1C, 0x70, 0x07, 0x38, 0x01, 0xCE, 0x00, + 0xE0, 0x01, 0xF8, 0x03, 0xFF, 0x03, 0xFF, 0xC3, 0xE1, 0xE3, 0xC0, 0x79, + 0xC0, 0x1D, 0xC0, 0x0E, 0xE0, 0x07, 0x70, 0x03, 0xF0, 0x01, 0xF8, 0x01, + 0xDC, 0x00, 0xEE, 0x00, 0x77, 0x00, 0x73, 0xC0, 0x78, 0xF0, 0xF8, 0x7F, + 0xF8, 0x1F, 0xF8, 0x03, 0xF0, 0x00, 0x03, 0x8F, 0x80, 0x1D, 0xFF, 0x01, + 0xFF, 0xFC, 0x0F, 0xC1, 0xE0, 0x7C, 0x07, 0x83, 0xC0, 0x1C, 0x1C, 0x00, + 0xE1, 0xE0, 0x07, 0x0E, 0x00, 0x38, 0x70, 0x01, 0xC3, 0x80, 0x1E, 0x1C, + 0x00, 0xE1, 0xE0, 0x07, 0x0F, 0x00, 0x70, 0x78, 0x07, 0x83, 0xF0, 0xF8, + 0x3F, 0xFF, 0x81, 0xDF, 0xF8, 0x0E, 0x3F, 0x00, 0x70, 0x00, 0x03, 0x80, + 0x00, 0x3C, 0x00, 0x01, 0xC0, 0x00, 0x0E, 0x00, 0x00, 0x70, 0x00, 0x03, + 0x80, 0x00, 0x00, 0x00, 0xF8, 0xF0, 0x7F, 0xEE, 0x0F, 0xFF, 0xE1, 0xF0, + 0xFE, 0x3C, 0x07, 0xE3, 0x80, 0x3E, 0x70, 0x03, 0xC7, 0x00, 0x3C, 0x70, + 0x03, 0xCE, 0x00, 0x3C, 0xE0, 0x07, 0x8E, 0x00, 0x78, 0xE0, 0x07, 0x8E, + 0x00, 0xF8, 0xF0, 0x1F, 0x87, 0x87, 0xF0, 0x7F, 0xF7, 0x03, 0xFE, 0x70, + 0x0F, 0x8F, 0x00, 0x00, 0xF0, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x0E, + 0x00, 0x01, 0xE0, 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x04, 0x00, 0x1E, + 0x78, 0xE7, 0xC7, 0x7C, 0x3F, 0x01, 0xF0, 0x0F, 0x00, 0xF0, 0x07, 0x00, + 0x38, 0x01, 0xC0, 0x0E, 0x00, 0xF0, 0x07, 0x00, 0x38, 0x01, 0xC0, 0x0E, + 0x00, 0x70, 0x07, 0x00, 0x38, 0x00, 0x01, 0xF8, 0x07, 0xFE, 0x0F, 0xFF, + 0x1E, 0x0F, 0x3C, 0x07, 0x38, 0x07, 0x38, 0x00, 0x3C, 0x00, 0x3F, 0x80, + 0x1F, 0xF8, 0x07, 0xFC, 0x00, 0x7E, 0x00, 0x0E, 0xE0, 0x0E, 0xE0, 0x1E, + 0xF0, 0x3C, 0x7F, 0xF8, 0x7F, 0xF0, 0x1F, 0xC0, 0x0E, 0x03, 0x80, 0xE0, + 0x38, 0x7F, 0xDF, 0xEF, 0xF8, 0x70, 0x1C, 0x0E, 0x03, 0x80, 0xE0, 0x38, + 0x1E, 0x07, 0x01, 0xC0, 0x70, 0x1C, 0x0F, 0x03, 0x80, 0xFC, 0x3F, 0x07, + 0x80, 0x1C, 0x03, 0xC7, 0x00, 0xE1, 0xC0, 0x38, 0xF0, 0x0E, 0x38, 0x03, + 0x8E, 0x00, 0xE3, 0x80, 0x70, 0xE0, 0x1C, 0x78, 0x07, 0x1C, 0x01, 0xC7, + 0x00, 0x71, 0xC0, 0x3C, 0x70, 0x0E, 0x38, 0x07, 0x8E, 0x03, 0xE3, 0x81, + 0xF8, 0xFF, 0xFE, 0x1F, 0xFF, 0x03, 0xF1, 0xC0, 0xE0, 0x07, 0xE0, 0x0F, + 0xE0, 0x0E, 0xE0, 0x1C, 0x70, 0x1C, 0x70, 0x38, 0x70, 0x38, 0x70, 0x70, + 0x70, 0xF0, 0x70, 0xE0, 0x71, 0xC0, 0x71, 0xC0, 0x33, 0x80, 0x3B, 0x80, + 0x3F, 0x00, 0x3F, 0x00, 0x3E, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0xE0, 0x1C, + 0x07, 0xE0, 0x3C, 0x0E, 0xE0, 0x3C, 0x0E, 0xE0, 0x7C, 0x1C, 0xE0, 0x7C, + 0x1C, 0xE0, 0xEC, 0x38, 0xE0, 0xEC, 0x38, 0x61, 0xCC, 0x70, 0x61, 0xCC, + 0x70, 0x63, 0x8C, 0xE0, 0x73, 0x8C, 0xE0, 0x77, 0x0C, 0xC0, 0x77, 0x0D, + 0xC0, 0x7E, 0x0D, 0x80, 0x7E, 0x0F, 0x80, 0x7C, 0x0F, 0x80, 0x7C, 0x0F, + 0x00, 0x78, 0x0F, 0x00, 0x78, 0x0E, 0x00, 0x0E, 0x00, 0xE1, 0xE0, 0x38, + 0x1C, 0x0E, 0x03, 0xC3, 0x80, 0x38, 0xE0, 0x07, 0xBC, 0x00, 0x77, 0x00, + 0x0F, 0xC0, 0x00, 0xF0, 0x00, 0x1C, 0x00, 0x07, 0xC0, 0x01, 0xF8, 0x00, + 0x77, 0x80, 0x1E, 0x70, 0x07, 0x8F, 0x00, 0xE0, 0xE0, 0x38, 0x1C, 0x0E, + 0x01, 0xC3, 0x80, 0x38, 0x00, 0x0E, 0x00, 0x70, 0xF0, 0x0F, 0x07, 0x00, + 0xE0, 0x70, 0x1C, 0x07, 0x01, 0xC0, 0x70, 0x38, 0x07, 0x03, 0x80, 0x70, + 0x70, 0x07, 0x07, 0x00, 0x70, 0xE0, 0x03, 0x9E, 0x00, 0x39, 0xC0, 0x03, + 0xB8, 0x00, 0x3B, 0x80, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x03, 0xE0, 0x00, + 0x1E, 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x03, 0x80, 0x00, 0x70, 0x00, + 0x07, 0x00, 0x00, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xC0, 0x00, 0xF0, 0x00, + 0x00, 0x07, 0xFF, 0xC0, 0xFF, 0xF8, 0x3F, 0xFF, 0x00, 0x01, 0xC0, 0x00, + 0x70, 0x00, 0x1C, 0x00, 0x07, 0x00, 0x01, 0xC0, 0x00, 0x70, 0x00, 0x1C, + 0x00, 0x07, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, + 0x03, 0xC0, 0x00, 0x7F, 0xFE, 0x1F, 0xFF, 0xC3, 0xFF, 0xF8, 0x00, 0x00, + 0x70, 0x1F, 0x01, 0xF0, 0x3C, 0x03, 0x80, 0x38, 0x07, 0x00, 0x70, 0x07, + 0x00, 0x70, 0x07, 0x00, 0xE0, 0x0E, 0x01, 0xE0, 0x3C, 0x0F, 0x80, 0xE0, + 0x0F, 0x00, 0x78, 0x03, 0x80, 0x38, 0x03, 0x80, 0x38, 0x03, 0x80, 0x38, + 0x07, 0x00, 0x70, 0x07, 0x00, 0x70, 0x0E, 0x00, 0xF8, 0x0F, 0x80, 0x78, + 0x00, 0x01, 0x80, 0xC0, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x0C, 0x06, 0x03, + 0x01, 0x81, 0xC0, 0xC0, 0x60, 0x30, 0x18, 0x18, 0x0C, 0x06, 0x03, 0x01, + 0x81, 0x80, 0xC0, 0x60, 0x30, 0x38, 0x18, 0x0C, 0x06, 0x03, 0x03, 0x01, + 0x80, 0xC0, 0x00, 0x01, 0xE0, 0x1F, 0x01, 0xF0, 0x07, 0x00, 0xE0, 0x0E, + 0x00, 0xE0, 0x0E, 0x01, 0xC0, 0x1C, 0x01, 0xC0, 0x1C, 0x01, 0xC0, 0x1C, + 0x01, 0xE0, 0x0F, 0x00, 0x70, 0x1F, 0x03, 0xC0, 0x78, 0x07, 0x00, 0x70, + 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x01, 0xC0, 0x1C, 0x03, 0xC0, + 0xF8, 0x0F, 0x80, 0xE0, 0x00, 0x1C, 0x00, 0x3F, 0x00, 0x7F, 0x83, 0x63, + 0xC7, 0xC1, 0xFE, 0x00, 0xFC, 0x00, 0x78}; + +const GFXglyph FreeSansOblique18pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 10, 0, 1}, // 0x20 ' ' + {0, 9, 26, 10, 4, -25}, // 0x21 '!' + {30, 10, 9, 12, 6, -24}, // 0x22 '"' + {42, 21, 25, 19, 2, -24}, // 0x23 '#' + {108, 20, 31, 19, 2, -26}, // 0x24 '$' + {186, 26, 25, 31, 5, -24}, // 0x25 '%' + {268, 20, 25, 23, 3, -24}, // 0x26 '&' + {331, 4, 9, 7, 6, -24}, // 0x27 ''' + {336, 12, 33, 12, 4, -25}, // 0x28 '(' + {386, 12, 33, 12, -1, -24}, // 0x29 ')' + {436, 10, 10, 14, 6, -25}, // 0x2A '*' + {449, 18, 16, 20, 3, -15}, // 0x2B '+' + {485, 5, 8, 10, 2, -2}, // 0x2C ',' + {490, 9, 3, 12, 3, -10}, // 0x2D '-' + {494, 4, 4, 10, 3, -3}, // 0x2E '.' + {496, 15, 26, 10, 0, -25}, // 0x2F '/' + {545, 18, 25, 19, 3, -24}, // 0x30 '0' + {602, 10, 25, 19, 7, -24}, // 0x31 '1' + {634, 20, 25, 19, 2, -24}, // 0x32 '2' + {697, 19, 25, 19, 2, -24}, // 0x33 '3' + {757, 18, 25, 19, 2, -24}, // 0x34 '4' + {814, 20, 25, 19, 2, -24}, // 0x35 '5' + {877, 19, 25, 19, 3, -24}, // 0x36 '6' + {937, 18, 25, 19, 5, -24}, // 0x37 '7' + {994, 19, 25, 19, 3, -24}, // 0x38 '8' + {1054, 19, 25, 19, 2, -24}, // 0x39 '9' + {1114, 7, 19, 10, 4, -18}, // 0x3A ':' + {1131, 8, 24, 10, 3, -18}, // 0x3B ';' + {1155, 19, 17, 20, 3, -16}, // 0x3C '<' + {1196, 18, 9, 20, 3, -12}, // 0x3D '=' + {1217, 19, 17, 20, 2, -15}, // 0x3E '>' + {1258, 16, 26, 19, 6, -25}, // 0x3F '?' + {1310, 33, 31, 36, 3, -25}, // 0x40 '@' + {1438, 23, 26, 23, 0, -25}, // 0x41 'A' + {1513, 21, 26, 23, 3, -25}, // 0x42 'B' + {1582, 22, 26, 25, 4, -25}, // 0x43 'C' + {1654, 23, 26, 25, 3, -25}, // 0x44 'D' + {1729, 23, 26, 23, 3, -25}, // 0x45 'E' + {1804, 22, 26, 21, 3, -25}, // 0x46 'F' + {1876, 24, 26, 27, 4, -25}, // 0x47 'G' + {1954, 25, 26, 25, 3, -25}, // 0x48 'H' + {2036, 8, 26, 10, 4, -25}, // 0x49 'I' + {2062, 18, 26, 18, 2, -25}, // 0x4A 'J' + {2121, 25, 26, 23, 3, -25}, // 0x4B 'K' + {2203, 16, 26, 19, 3, -25}, // 0x4C 'L' + {2255, 29, 26, 30, 3, -25}, // 0x4D 'M' + {2350, 25, 26, 26, 3, -25}, // 0x4E 'N' + {2432, 24, 26, 27, 4, -25}, // 0x4F 'O' + {2510, 22, 26, 23, 3, -25}, // 0x50 'P' + {2582, 25, 28, 27, 4, -25}, // 0x51 'Q' + {2670, 23, 26, 25, 3, -25}, // 0x52 'R' + {2745, 22, 26, 23, 3, -25}, // 0x53 'S' + {2817, 20, 26, 21, 6, -25}, // 0x54 'T' + {2882, 24, 26, 25, 4, -25}, // 0x55 'U' + {2960, 21, 26, 23, 6, -25}, // 0x56 'V' + {3029, 32, 26, 33, 6, -25}, // 0x57 'W' + {3133, 27, 26, 23, 1, -25}, // 0x58 'X' + {3221, 23, 26, 24, 6, -25}, // 0x59 'Y' + {3296, 25, 26, 21, 1, -25}, // 0x5A 'Z' + {3378, 13, 33, 10, 1, -25}, // 0x5B '[' + {3432, 4, 26, 10, 5, -25}, // 0x5C '\' + {3445, 13, 33, 10, -1, -24}, // 0x5D ']' + {3499, 14, 14, 16, 3, -24}, // 0x5E '^' + {3524, 21, 2, 19, -2, 5}, // 0x5F '_' + {3530, 6, 5, 12, 6, -25}, // 0x60 '`' + {3534, 18, 19, 19, 2, -18}, // 0x61 'a' + {3577, 19, 26, 20, 2, -25}, // 0x62 'b' + {3639, 16, 19, 18, 3, -18}, // 0x63 'c' + {3677, 20, 26, 20, 3, -25}, // 0x64 'd' + {3742, 17, 19, 19, 3, -18}, // 0x65 'e' + {3783, 11, 26, 9, 2, -25}, // 0x66 'f' + {3819, 19, 27, 19, 2, -18}, // 0x67 'g' + {3884, 18, 26, 19, 2, -25}, // 0x68 'h' + {3943, 8, 26, 8, 2, -25}, // 0x69 'i' + {3969, 14, 34, 8, -2, -25}, // 0x6A 'j' + {4029, 19, 26, 18, 2, -25}, // 0x6B 'k' + {4091, 8, 26, 8, 2, -25}, // 0x6C 'l' + {4117, 27, 19, 29, 2, -18}, // 0x6D 'm' + {4182, 18, 19, 19, 2, -18}, // 0x6E 'n' + {4225, 17, 19, 19, 3, -18}, // 0x6F 'o' + {4266, 21, 26, 20, 0, -18}, // 0x70 'p' + {4335, 20, 27, 19, 2, -18}, // 0x71 'q' + {4403, 13, 19, 11, 2, -18}, // 0x72 'r' + {4434, 16, 19, 18, 2, -18}, // 0x73 's' + {4472, 10, 23, 9, 3, -22}, // 0x74 't' + {4501, 18, 19, 19, 3, -18}, // 0x75 'u' + {4544, 16, 19, 17, 4, -18}, // 0x76 'v' + {4582, 24, 19, 25, 4, -18}, // 0x77 'w' + {4639, 19, 19, 17, 1, -18}, // 0x78 'x' + {4685, 20, 27, 17, 0, -18}, // 0x79 'y' + {4753, 19, 19, 17, 1, -18}, // 0x7A 'z' + {4799, 12, 33, 12, 3, -25}, // 0x7B '{' + {4849, 9, 33, 9, 2, -25}, // 0x7C '|' + {4887, 12, 33, 12, 0, -24}, // 0x7D '}' + {4937, 16, 7, 20, 5, -15}}; // 0x7E '~' + +const GFXfont FreeSansOblique18pt7b PROGMEM = { + (uint8_t *)FreeSansOblique18pt7bBitmaps, + (GFXglyph *)FreeSansOblique18pt7bGlyphs, 0x20, 0x7E, 42}; + +// Approx. 5623 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSansOblique24pt7b.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSansOblique24pt7b.h new file mode 100644 index 0000000..805aefa --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSansOblique24pt7b.h @@ -0,0 +1,842 @@ +#pragma once +#include + +const uint8_t FreeSansOblique24pt7bBitmaps[] PROGMEM = { + 0x01, 0xE0, 0x3C, 0x0F, 0x81, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x3C, 0x07, + 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x03, + 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x38, 0x07, 0x00, 0xE0, 0x18, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xF0, 0x1E, 0x07, 0x80, 0xF0, 0x1E, 0x00, 0x78, + 0x7B, 0xC3, 0xDE, 0x1F, 0xE1, 0xEF, 0x0F, 0x78, 0x7B, 0xC3, 0xDC, 0x1C, + 0xE0, 0xE7, 0x07, 0x30, 0x31, 0x81, 0x80, 0x00, 0x07, 0x81, 0xC0, 0x00, + 0x78, 0x3C, 0x00, 0x07, 0x03, 0xC0, 0x00, 0xF0, 0x38, 0x00, 0x0E, 0x07, + 0x80, 0x01, 0xE0, 0x70, 0x00, 0x1E, 0x0F, 0x00, 0x01, 0xC0, 0xF0, 0x00, + 0x3C, 0x0E, 0x00, 0xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, + 0xFE, 0x00, 0x70, 0x3C, 0x00, 0x0F, 0x03, 0x80, 0x00, 0xF0, 0x78, 0x00, + 0x0E, 0x07, 0x80, 0x01, 0xE0, 0x70, 0x00, 0x1C, 0x0F, 0x00, 0x03, 0xC0, + 0xE0, 0x00, 0x3C, 0x1E, 0x00, 0x03, 0x81, 0xE0, 0x0F, 0xFF, 0xFF, 0xE0, + 0xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0xE0, 0x0F, 0x03, 0x80, 0x00, 0xE0, + 0x78, 0x00, 0x1E, 0x07, 0x00, 0x01, 0xC0, 0xF0, 0x00, 0x1C, 0x0F, 0x00, + 0x03, 0xC0, 0xE0, 0x00, 0x38, 0x1E, 0x00, 0x07, 0x81, 0xC0, 0x00, 0x78, + 0x3C, 0x00, 0x07, 0x03, 0xC0, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x30, + 0x00, 0x00, 0x7F, 0x80, 0x00, 0xFF, 0xF8, 0x00, 0x7F, 0xFF, 0x00, 0x7F, + 0xFF, 0xE0, 0x1F, 0x18, 0xF8, 0x0F, 0x8E, 0x1F, 0x07, 0xC3, 0x83, 0xC1, + 0xE0, 0xE0, 0xF0, 0x70, 0x38, 0x3C, 0x3C, 0x0C, 0x0F, 0x0F, 0x07, 0x00, + 0x03, 0xC1, 0xC0, 0x00, 0xF0, 0x70, 0x00, 0x3E, 0x1C, 0x00, 0x0F, 0xE6, + 0x00, 0x01, 0xFF, 0xC0, 0x00, 0x3F, 0xFE, 0x00, 0x03, 0xFF, 0xE0, 0x00, + 0x3F, 0xFC, 0x00, 0x03, 0xFF, 0x80, 0x01, 0xC7, 0xF0, 0x00, 0x70, 0x7C, + 0x00, 0x1C, 0x0F, 0x00, 0x06, 0x03, 0xCF, 0x03, 0x80, 0xF3, 0xC0, 0xE0, + 0x3C, 0xF0, 0x38, 0x0E, 0x3C, 0x0E, 0x07, 0x8F, 0x03, 0x01, 0xE3, 0xE1, + 0xC0, 0xF0, 0xF8, 0x70, 0x78, 0x1F, 0x9C, 0xFC, 0x03, 0xFF, 0xFE, 0x00, + 0x7F, 0xFF, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0E, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x80, 0x1F, 0x00, 0x00, 0x70, 0x07, 0xFC, 0x00, 0x0E, + 0x00, 0xFF, 0xE0, 0x01, 0xC0, 0x1E, 0x1E, 0x00, 0x3C, 0x03, 0x80, 0xF0, + 0x03, 0x80, 0x70, 0x07, 0x00, 0x70, 0x07, 0x00, 0x70, 0x0E, 0x00, 0xE0, + 0x07, 0x01, 0xC0, 0x0E, 0x00, 0x70, 0x3C, 0x00, 0xE0, 0x0E, 0x03, 0x80, + 0x0E, 0x00, 0xE0, 0x70, 0x00, 0xF0, 0x1C, 0x0E, 0x00, 0x07, 0x87, 0xC1, + 0xE0, 0x00, 0x7F, 0xF8, 0x1C, 0x00, 0x03, 0xFE, 0x03, 0x80, 0x00, 0x0F, + 0x80, 0x70, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x1F, + 0x00, 0x00, 0x1C, 0x07, 0xFC, 0x00, 0x03, 0x80, 0xFF, 0xE0, 0x00, 0x70, + 0x1E, 0x1E, 0x00, 0x0F, 0x03, 0x80, 0xF0, 0x00, 0xE0, 0x70, 0x07, 0x00, + 0x1C, 0x07, 0x00, 0x70, 0x03, 0x80, 0xE0, 0x07, 0x00, 0x70, 0x0E, 0x00, + 0x70, 0x0F, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x1C, 0x00, + 0xF0, 0x1C, 0x03, 0x80, 0x07, 0x87, 0xC0, 0x70, 0x00, 0x7F, 0xF8, 0x07, + 0x00, 0x03, 0xFE, 0x00, 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x01, 0xF8, 0x00, + 0x03, 0xFF, 0x00, 0x01, 0xFF, 0xE0, 0x00, 0xF8, 0x7C, 0x00, 0x78, 0x0F, + 0x00, 0x1E, 0x03, 0xC0, 0x0F, 0x00, 0xF0, 0x03, 0xC0, 0x3C, 0x00, 0xF0, + 0x1E, 0x00, 0x3C, 0x07, 0x80, 0x0F, 0x87, 0xC0, 0x01, 0xE3, 0xE0, 0x00, + 0x7F, 0xF0, 0x00, 0x0F, 0xF8, 0x00, 0x03, 0xF8, 0x00, 0x03, 0xFC, 0x00, + 0x03, 0xFF, 0x00, 0x01, 0xFB, 0xE0, 0x70, 0xF8, 0x7C, 0x1C, 0x7C, 0x1F, + 0x0E, 0x3C, 0x03, 0xE3, 0x9E, 0x00, 0x79, 0xE7, 0x80, 0x1F, 0xF3, 0xC0, + 0x03, 0xF8, 0xF0, 0x00, 0xFE, 0x3C, 0x00, 0x1F, 0x0F, 0x00, 0x07, 0xC3, + 0xE0, 0x03, 0xF8, 0xF8, 0x03, 0xFE, 0x3F, 0x83, 0xF7, 0xC7, 0xFF, 0xF8, + 0xF0, 0xFF, 0xFC, 0x3E, 0x1F, 0xFC, 0x07, 0x81, 0xFC, 0x00, 0x00, 0x7B, + 0xDF, 0xEF, 0x7B, 0xDC, 0xE7, 0x31, 0x80, 0x00, 0x0E, 0x00, 0x38, 0x00, + 0xE0, 0x03, 0x80, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x01, 0xE0, 0x03, 0x80, + 0x0F, 0x00, 0x1C, 0x00, 0x78, 0x00, 0xE0, 0x03, 0xC0, 0x07, 0x00, 0x0E, + 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, + 0x1C, 0x00, 0x78, 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0E, + 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x80, + 0x07, 0x00, 0x06, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x30, 0x00, + 0x70, 0x00, 0xE0, 0x00, 0xC0, 0x00, 0x00, 0x30, 0x00, 0x70, 0x00, 0xE0, + 0x00, 0xC0, 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, 0x0E, 0x00, + 0x1C, 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x80, 0x07, + 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, 0x01, 0xE0, 0x03, 0x80, + 0x07, 0x00, 0x0E, 0x00, 0x3C, 0x00, 0x70, 0x00, 0xE0, 0x01, 0xC0, 0x07, + 0x00, 0x0E, 0x00, 0x3C, 0x00, 0x70, 0x01, 0xE0, 0x03, 0x80, 0x0F, 0x00, + 0x1C, 0x00, 0x78, 0x00, 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x1C, 0x00, 0x70, + 0x01, 0xC0, 0x07, 0x00, 0x00, 0x01, 0xC0, 0x07, 0x00, 0x38, 0x18, 0xE3, + 0x7B, 0xBF, 0xFF, 0xF3, 0xFF, 0x01, 0xE0, 0x1F, 0xC0, 0xF7, 0x07, 0x9E, + 0x1C, 0x38, 0x20, 0xC0, 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x78, + 0x00, 0x00, 0xE0, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, 0x00, 0x07, 0x00, + 0x00, 0x1C, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xE0, 0x07, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, + 0x78, 0x00, 0x00, 0xE0, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, 0x00, 0x07, + 0x00, 0x00, 0x1C, 0x00, 0x00, 0x38, 0x00, 0x00, 0x3E, 0x7C, 0xF9, 0xE7, + 0xC1, 0x83, 0x0C, 0x18, 0x63, 0xC6, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFE, 0x7D, 0xF7, 0xBE, 0xF8, 0x00, 0x00, 0x18, 0x00, 0x01, 0xC0, 0x00, + 0x1C, 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 0x00, 0x70, 0x00, 0x07, 0x00, + 0x00, 0x30, 0x00, 0x03, 0x80, 0x00, 0x18, 0x00, 0x01, 0xC0, 0x00, 0x0C, + 0x00, 0x00, 0xE0, 0x00, 0x06, 0x00, 0x00, 0x70, 0x00, 0x03, 0x00, 0x00, + 0x38, 0x00, 0x01, 0x80, 0x00, 0x1C, 0x00, 0x00, 0xC0, 0x00, 0x0E, 0x00, + 0x00, 0x60, 0x00, 0x07, 0x00, 0x00, 0x70, 0x00, 0x03, 0x80, 0x00, 0x38, + 0x00, 0x01, 0x80, 0x00, 0x1C, 0x00, 0x00, 0xC0, 0x00, 0x0E, 0x00, 0x00, + 0x60, 0x00, 0x07, 0x00, 0x00, 0x30, 0x00, 0x03, 0x80, 0x00, 0x18, 0x00, + 0x00, 0x00, 0x0F, 0xC0, 0x00, 0xFF, 0xE0, 0x03, 0xFF, 0xE0, 0x0F, 0xFF, + 0xE0, 0x3F, 0x0F, 0xC0, 0xF8, 0x07, 0x81, 0xE0, 0x0F, 0x87, 0x80, 0x0F, + 0x1F, 0x00, 0x1E, 0x3C, 0x00, 0x3C, 0x78, 0x00, 0x79, 0xE0, 0x00, 0xF3, + 0xC0, 0x01, 0xE7, 0x80, 0x07, 0xDE, 0x00, 0x0F, 0xBC, 0x00, 0x1E, 0x78, + 0x00, 0x3C, 0xF0, 0x00, 0x79, 0xE0, 0x00, 0xF7, 0x80, 0x03, 0xEF, 0x00, + 0x07, 0xDE, 0x00, 0x0F, 0x3C, 0x00, 0x1E, 0x78, 0x00, 0x7C, 0xF0, 0x00, + 0xF1, 0xE0, 0x03, 0xE3, 0xC0, 0x07, 0x87, 0xC0, 0x1F, 0x0F, 0x80, 0x7C, + 0x0F, 0xC3, 0xF0, 0x1F, 0xFF, 0xC0, 0x1F, 0xFF, 0x00, 0x1F, 0xFC, 0x00, + 0x0F, 0xC0, 0x00, 0x00, 0x18, 0x01, 0xC0, 0x1C, 0x01, 0xE0, 0x1F, 0x0F, + 0xFB, 0xFF, 0xDF, 0xFC, 0xFF, 0xE0, 0x0F, 0x00, 0x78, 0x07, 0xC0, 0x3C, + 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x07, 0xC0, 0x3C, 0x01, 0xE0, 0x0F, 0x00, + 0x78, 0x07, 0xC0, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x07, 0xC0, 0x3C, + 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x07, 0xC0, 0x3C, 0x00, 0x00, 0x03, 0xFC, + 0x00, 0x03, 0xFF, 0xE0, 0x00, 0xFF, 0xFE, 0x00, 0x3F, 0xFF, 0xE0, 0x0F, + 0xC0, 0xFC, 0x03, 0xE0, 0x07, 0xC0, 0xF8, 0x00, 0xF8, 0x1F, 0x00, 0x0F, + 0x03, 0xC0, 0x01, 0xE0, 0xF8, 0x00, 0x3C, 0x1E, 0x00, 0x07, 0x80, 0x00, + 0x01, 0xE0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, 0xE0, + 0x00, 0x00, 0xF8, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x1F, + 0xC0, 0x00, 0x0F, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0x00, + 0xFC, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, 0xE0, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0xFF, + 0xFF, 0xFC, 0x3F, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFC, + 0x00, 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xFE, 0x00, 0x3F, 0xFF, 0x80, 0x3F, + 0xFF, 0xE0, 0x1F, 0x81, 0xF8, 0x1F, 0x00, 0x7C, 0x1F, 0x00, 0x1E, 0x0F, + 0x00, 0x0F, 0x0F, 0x80, 0x07, 0x87, 0x80, 0x03, 0xC0, 0x00, 0x03, 0xC0, + 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x7F, 0xE0, + 0x00, 0x3F, 0xE0, 0x00, 0x1F, 0xF8, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x3F, + 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0xF0, 0x00, 0x00, + 0x79, 0xE0, 0x00, 0x3C, 0xF0, 0x00, 0x1E, 0x78, 0x00, 0x1E, 0x3C, 0x00, + 0x0F, 0x1E, 0x00, 0x0F, 0x0F, 0x80, 0x1F, 0x83, 0xF0, 0x3F, 0x81, 0xFF, + 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x1F, 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x00, + 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x7E, + 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x03, 0xFC, 0x00, 0x07, 0xBC, + 0x00, 0x0F, 0xBC, 0x00, 0x1F, 0x7C, 0x00, 0x3E, 0x78, 0x00, 0x7C, 0x78, + 0x00, 0xF8, 0x78, 0x00, 0xF0, 0x78, 0x01, 0xE0, 0xF0, 0x03, 0xC0, 0xF0, + 0x07, 0x80, 0xF0, 0x0F, 0x00, 0xF0, 0x1E, 0x01, 0xF0, 0x3C, 0x01, 0xE0, + 0x78, 0x01, 0xE0, 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, + 0xFF, 0xFF, 0xFE, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, + 0x00, 0x07, 0x80, 0x00, 0x07, 0x80, 0x00, 0x07, 0x80, 0x00, 0x07, 0x80, + 0x00, 0x0F, 0x80, 0x00, 0x7F, 0xFF, 0xC0, 0x1F, 0xFF, 0xF8, 0x03, 0xFF, + 0xFF, 0x00, 0x7F, 0xFF, 0xE0, 0x1E, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x78, 0x00, + 0x00, 0x1E, 0x00, 0x00, 0x03, 0xC7, 0xE0, 0x00, 0xF7, 0xFF, 0x80, 0x1F, + 0xFF, 0xF8, 0x03, 0xFF, 0xFF, 0x80, 0xFE, 0x03, 0xF0, 0x1F, 0x00, 0x3F, + 0x03, 0xC0, 0x03, 0xE0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x07, 0x80, 0x00, + 0x00, 0xF0, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x70, + 0x00, 0x00, 0x1E, 0x1E, 0x00, 0x03, 0xC3, 0xC0, 0x00, 0xF0, 0x7C, 0x00, + 0x3C, 0x0F, 0x80, 0x0F, 0x80, 0xFC, 0x07, 0xE0, 0x1F, 0xFF, 0xF8, 0x01, + 0xFF, 0xFE, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x07, + 0xE0, 0x00, 0x3F, 0xF8, 0x00, 0x7F, 0xFC, 0x00, 0xFF, 0xFE, 0x01, 0xF8, + 0x3E, 0x03, 0xE0, 0x1F, 0x07, 0xC0, 0x1F, 0x0F, 0x80, 0x0F, 0x0F, 0x00, + 0x0F, 0x1F, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x3C, 0x1F, + 0x80, 0x3C, 0x7F, 0xE0, 0x3D, 0xFF, 0xF0, 0x7B, 0xFF, 0xF8, 0x7F, 0xC1, + 0xF8, 0x7F, 0x00, 0x7C, 0x7E, 0x00, 0x7C, 0xFC, 0x00, 0x3C, 0xF8, 0x00, + 0x3C, 0xF8, 0x00, 0x3C, 0xF0, 0x00, 0x3C, 0xF0, 0x00, 0x38, 0xF0, 0x00, + 0x78, 0xF0, 0x00, 0x78, 0xF0, 0x00, 0xF0, 0xF8, 0x01, 0xF0, 0x7C, 0x03, + 0xE0, 0x7E, 0x0F, 0xC0, 0x3F, 0xFF, 0xC0, 0x3F, 0xFF, 0x80, 0x0F, 0xFE, + 0x00, 0x03, 0xF8, 0x00, 0x1F, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0xE1, 0xFF, + 0xFF, 0xF8, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x07, 0x80, + 0x00, 0x03, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x78, + 0x00, 0x00, 0x1E, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x07, 0x80, 0x00, 0x03, + 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x3C, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, 0xC0, 0x00, 0x01, 0xE0, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0x80, + 0x00, 0x03, 0xC0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1E, + 0x00, 0x00, 0x0F, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x01, 0xF0, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xFE, 0x00, 0x1F, + 0xFF, 0x80, 0x1F, 0xFF, 0xE0, 0x1F, 0x81, 0xF8, 0x1F, 0x00, 0x7C, 0x0F, + 0x00, 0x1E, 0x0F, 0x00, 0x0F, 0x07, 0x80, 0x07, 0x83, 0xC0, 0x03, 0xC1, + 0xE0, 0x03, 0xC0, 0xF8, 0x03, 0xC0, 0x7E, 0x07, 0xC0, 0x1F, 0xFF, 0xC0, + 0x07, 0xFF, 0xC0, 0x03, 0xFF, 0xE0, 0x07, 0xFF, 0xF8, 0x07, 0xE0, 0x7E, + 0x07, 0xC0, 0x0F, 0x07, 0x80, 0x07, 0xC7, 0xC0, 0x01, 0xE3, 0xC0, 0x00, + 0xF3, 0xC0, 0x00, 0x79, 0xE0, 0x00, 0x3C, 0xF0, 0x00, 0x1C, 0x78, 0x00, + 0x1E, 0x3C, 0x00, 0x0F, 0x1F, 0x00, 0x0F, 0x0F, 0xC0, 0x0F, 0x83, 0xF0, + 0x3F, 0x81, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x0F, 0xFF, 0x00, 0x01, + 0xFE, 0x00, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x7F, 0xF0, 0x01, 0xFF, 0xFC, + 0x03, 0xFF, 0xFC, 0x07, 0xF0, 0x7E, 0x07, 0xC0, 0x3E, 0x0F, 0x80, 0x1F, + 0x0F, 0x00, 0x0F, 0x1E, 0x00, 0x0F, 0x1E, 0x00, 0x0F, 0x3C, 0x00, 0x0F, + 0x3C, 0x00, 0x0F, 0x3C, 0x00, 0x1F, 0x3C, 0x00, 0x1F, 0x3C, 0x00, 0x3F, + 0x3E, 0x00, 0x7E, 0x3E, 0x00, 0xFE, 0x1F, 0x83, 0xFE, 0x1F, 0xFF, 0xFE, + 0x0F, 0xFF, 0xBC, 0x07, 0xFE, 0x3C, 0x01, 0xF8, 0x7C, 0x00, 0x00, 0x7C, + 0x00, 0x00, 0x78, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF0, 0xF0, 0x01, 0xF0, + 0xF0, 0x03, 0xE0, 0xF8, 0x07, 0xC0, 0xFC, 0x1F, 0xC0, 0x7F, 0xFF, 0x80, + 0x3F, 0xFE, 0x00, 0x1F, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xC1, 0xF0, + 0x78, 0x3E, 0x0F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x1F, + 0x07, 0x83, 0xE0, 0xF8, 0x00, 0x03, 0xE0, 0x7C, 0x0F, 0x03, 0xE0, 0x7C, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x7C, 0x0F, + 0x81, 0xE0, 0x7C, 0x01, 0x80, 0x30, 0x0C, 0x01, 0x80, 0x60, 0x3C, 0x06, + 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x70, 0x00, 0x00, 0xF8, 0x00, + 0x00, 0xFE, 0x00, 0x01, 0xFF, 0x00, 0x03, 0xFE, 0x00, 0x03, 0xFE, 0x00, + 0x07, 0xFC, 0x00, 0x07, 0xFC, 0x00, 0x0F, 0xF8, 0x00, 0x07, 0xF0, 0x00, + 0x03, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFE, + 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x1F, 0xF0, 0x00, + 0x01, 0xFF, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x0E, + 0x00, 0x00, 0x00, 0x80, 0x1F, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0xE3, 0xFF, + 0xFF, 0xF8, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, + 0xC7, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0xF8, 0x04, 0x00, 0x00, 0x01, 0xC0, + 0x00, 0x00, 0xFC, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x03, 0xFE, 0x00, 0x00, + 0x3F, 0xE0, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFE, + 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x00, 0x00, + 0x3F, 0x80, 0x00, 0x7F, 0xC0, 0x00, 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x01, + 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x03, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x00, + 0x7C, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0xFE, + 0x00, 0x3F, 0xF8, 0x0F, 0xFF, 0xC1, 0xFF, 0xFE, 0x1F, 0x03, 0xE3, 0xE0, + 0x1F, 0x7C, 0x00, 0xF7, 0x80, 0x0F, 0x78, 0x00, 0xFF, 0x00, 0x0F, 0xF0, + 0x01, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, + 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x1F, 0x00, + 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x07, 0x80, 0x00, 0x78, 0x00, 0x0F, 0x80, + 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1E, 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, 0xE0, 0x00, 0x3E, + 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0x80, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFE, + 0x00, 0x00, 0x7F, 0xE0, 0x0F, 0xF8, 0x00, 0x0F, 0xF0, 0x00, 0x1F, 0xE0, + 0x00, 0xFE, 0x00, 0x00, 0x3F, 0x80, 0x0F, 0xC0, 0x00, 0x00, 0xFC, 0x00, + 0xFC, 0x00, 0x00, 0x01, 0xF0, 0x0F, 0xC0, 0x00, 0x00, 0x0F, 0x80, 0xF8, + 0x00, 0xFC, 0x00, 0x3E, 0x0F, 0x80, 0x1F, 0xF9, 0xE1, 0xF0, 0x78, 0x03, + 0xFF, 0xCF, 0x07, 0x87, 0xC0, 0x3F, 0x0F, 0xF0, 0x3C, 0x7C, 0x03, 0xE0, + 0x3F, 0x01, 0xE3, 0xC0, 0x3E, 0x01, 0xF8, 0x0F, 0x3E, 0x03, 0xE0, 0x0F, + 0x80, 0x79, 0xE0, 0x1E, 0x00, 0x7C, 0x03, 0xDF, 0x01, 0xE0, 0x03, 0xC0, + 0x3E, 0xF0, 0x1F, 0x00, 0x3E, 0x01, 0xE7, 0x80, 0xF0, 0x01, 0xE0, 0x0F, + 0x38, 0x07, 0x80, 0x0F, 0x00, 0xFB, 0xC0, 0x78, 0x00, 0xF0, 0x07, 0x9E, + 0x03, 0xC0, 0x07, 0x80, 0x7C, 0xF0, 0x1E, 0x00, 0x78, 0x07, 0xC7, 0x80, + 0xF0, 0x07, 0xC0, 0x7E, 0x3C, 0x07, 0x80, 0x7C, 0x07, 0xE1, 0xE0, 0x3E, + 0x07, 0xE0, 0x7E, 0x0F, 0x00, 0xF8, 0x7F, 0x8F, 0xC0, 0x7C, 0x07, 0xFF, + 0x7F, 0xFC, 0x01, 0xE0, 0x1F, 0xF1, 0xFF, 0x80, 0x0F, 0x00, 0x7E, 0x0F, + 0xF0, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, + 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0xF8, 0x00, 0x00, + 0x0F, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0x00, 0x00, 0x00, + 0x3F, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1F, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, + 0x1F, 0xE0, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x03, 0xDF, 0x00, 0x00, 0x1E, + 0x7C, 0x00, 0x00, 0x79, 0xF0, 0x00, 0x03, 0xC7, 0xC0, 0x00, 0x0F, 0x1F, + 0x00, 0x00, 0x78, 0x3C, 0x00, 0x03, 0xE0, 0xF0, 0x00, 0x0F, 0x03, 0xE0, + 0x00, 0x78, 0x0F, 0x80, 0x01, 0xE0, 0x3E, 0x00, 0x0F, 0x00, 0xF8, 0x00, + 0x3C, 0x03, 0xE0, 0x01, 0xE0, 0x0F, 0x80, 0x0F, 0x80, 0x1E, 0x00, 0x3C, + 0x00, 0x7C, 0x01, 0xFF, 0xFF, 0xF0, 0x07, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, + 0xFF, 0x00, 0xFF, 0xFF, 0xFC, 0x07, 0xC0, 0x01, 0xF0, 0x3E, 0x00, 0x03, + 0xC0, 0xF8, 0x00, 0x0F, 0x87, 0xC0, 0x00, 0x3E, 0x1E, 0x00, 0x00, 0xF8, + 0xF8, 0x00, 0x03, 0xE3, 0xC0, 0x00, 0x0F, 0x9F, 0x00, 0x00, 0x3E, 0xF8, + 0x00, 0x00, 0x7B, 0xE0, 0x00, 0x01, 0xF0, 0x01, 0xFF, 0xFF, 0x00, 0x0F, + 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0xE0, 0x3E, 0x00, + 0x1F, 0x81, 0xE0, 0x00, 0x7C, 0x0F, 0x00, 0x01, 0xE0, 0x78, 0x00, 0x0F, + 0x03, 0xC0, 0x00, 0x78, 0x3C, 0x00, 0x03, 0xC1, 0xE0, 0x00, 0x3C, 0x0F, + 0x00, 0x01, 0xE0, 0x78, 0x00, 0x1E, 0x07, 0xC0, 0x03, 0xE0, 0x3F, 0xFF, + 0xFC, 0x01, 0xFF, 0xFF, 0xC0, 0x0F, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFE, + 0x07, 0x80, 0x01, 0xF0, 0x3C, 0x00, 0x07, 0xC1, 0xE0, 0x00, 0x1E, 0x0F, + 0x00, 0x00, 0xF0, 0xF0, 0x00, 0x07, 0x87, 0x80, 0x00, 0x3C, 0x3C, 0x00, + 0x01, 0xE1, 0xE0, 0x00, 0x1E, 0x1F, 0x00, 0x00, 0xF0, 0xF0, 0x00, 0x0F, + 0x87, 0x80, 0x00, 0xF8, 0x3C, 0x00, 0x1F, 0x81, 0xFF, 0xFF, 0xF8, 0x1F, + 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xF8, 0x07, 0xFF, 0xFF, 0x00, 0x00, 0x00, + 0x01, 0xFE, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x1F, + 0xFF, 0xFC, 0x00, 0xFE, 0x03, 0xF0, 0x07, 0xE0, 0x03, 0xE0, 0x3E, 0x00, + 0x07, 0x81, 0xF0, 0x00, 0x1E, 0x07, 0x80, 0x00, 0x3C, 0x3C, 0x00, 0x00, + 0xF1, 0xF0, 0x00, 0x03, 0xC7, 0x80, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, + 0xF0, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x78, + 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x3C, 0x00, + 0x00, 0x00, 0xF0, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x0F, 0x00, 0x00, + 0x00, 0x3C, 0x00, 0x00, 0x3C, 0xF0, 0x00, 0x01, 0xF3, 0xC0, 0x00, 0x07, + 0x8F, 0x80, 0x00, 0x3E, 0x3E, 0x00, 0x00, 0xF0, 0x7C, 0x00, 0x07, 0xC1, + 0xF0, 0x00, 0x3E, 0x03, 0xE0, 0x03, 0xF0, 0x0F, 0xE0, 0x3F, 0x80, 0x1F, + 0xFF, 0xFC, 0x00, 0x3F, 0xFF, 0xE0, 0x00, 0x7F, 0xFE, 0x00, 0x00, 0x3F, + 0xC0, 0x00, 0x01, 0xFF, 0xFF, 0x00, 0x03, 0xFF, 0xFF, 0x80, 0x07, 0xFF, + 0xFF, 0x80, 0x1F, 0xFF, 0xFF, 0x80, 0x3E, 0x00, 0x3F, 0x80, 0x78, 0x00, + 0x1F, 0x80, 0xF0, 0x00, 0x1F, 0x03, 0xE0, 0x00, 0x1E, 0x07, 0xC0, 0x00, + 0x3E, 0x0F, 0x00, 0x00, 0x3C, 0x1E, 0x00, 0x00, 0x78, 0x3C, 0x00, 0x00, + 0xF0, 0xF8, 0x00, 0x01, 0xE1, 0xF0, 0x00, 0x03, 0xC3, 0xC0, 0x00, 0x07, + 0x87, 0x80, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x3C, 0x3E, 0x00, 0x00, 0x78, + 0x7C, 0x00, 0x00, 0xF0, 0xF0, 0x00, 0x01, 0xE1, 0xE0, 0x00, 0x07, 0x87, + 0xC0, 0x00, 0x0F, 0x0F, 0x80, 0x00, 0x3E, 0x1E, 0x00, 0x00, 0x78, 0x3C, + 0x00, 0x01, 0xF0, 0x78, 0x00, 0x03, 0xC1, 0xF0, 0x00, 0x0F, 0x03, 0xE0, + 0x00, 0x3E, 0x07, 0x80, 0x01, 0xF8, 0x0F, 0x00, 0x0F, 0xE0, 0x1F, 0xFF, + 0xFF, 0x80, 0x7F, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0xF0, 0x01, 0xFF, 0xFF, + 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, 0xFC, 0x07, 0xFF, + 0xFF, 0xF0, 0x1F, 0xFF, 0xFF, 0xE0, 0x3E, 0x00, 0x00, 0x00, 0x78, 0x00, + 0x00, 0x00, 0xF0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x07, 0xC0, 0x00, + 0x00, 0x0F, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, + 0x07, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xE0, 0x3F, 0xFF, 0xFF, 0x80, + 0x7F, 0xFF, 0xFF, 0x00, 0xF0, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x07, + 0xC0, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x03, 0xE0, + 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x1F, 0xFF, + 0xFF, 0xE0, 0x7F, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, + 0xFE, 0x00, 0x01, 0xFF, 0xFF, 0xFC, 0x07, 0xFF, 0xFF, 0xF0, 0x1F, 0xFF, + 0xFF, 0xC0, 0xFF, 0xFF, 0xFE, 0x03, 0xE0, 0x00, 0x00, 0x0F, 0x00, 0x00, + 0x00, 0x3C, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x0F, + 0x80, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x03, 0xFF, + 0xFF, 0xC0, 0x0F, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0xFC, 0x01, 0xFF, 0xFF, + 0xF0, 0x07, 0x80, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, + 0x03, 0xE0, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, + 0xF0, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x78, + 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x3E, 0x00, + 0x00, 0x00, 0xF0, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x7F, 0xC0, 0x00, 0x01, 0xFF, 0xF8, 0x00, 0x07, 0xFF, 0xFF, 0x00, 0x07, + 0xFF, 0xFF, 0xC0, 0x07, 0xF0, 0x0F, 0xF0, 0x0F, 0xC0, 0x00, 0xF8, 0x0F, + 0xC0, 0x00, 0x3E, 0x07, 0x80, 0x00, 0x1F, 0x07, 0x80, 0x00, 0x07, 0x87, + 0xC0, 0x00, 0x03, 0xC3, 0xC0, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x03, + 0xE0, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, + 0xF0, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x1F, 0xFF, + 0xBC, 0x00, 0x0F, 0xFF, 0xDE, 0x00, 0x0F, 0xFF, 0xEF, 0x00, 0x07, 0xFF, + 0xF7, 0x80, 0x00, 0x00, 0x73, 0xC0, 0x00, 0x00, 0x39, 0xE0, 0x00, 0x00, + 0x3C, 0xF0, 0x00, 0x00, 0x1E, 0x78, 0x00, 0x00, 0x1F, 0x3E, 0x00, 0x00, + 0x0F, 0x8F, 0x00, 0x00, 0x0F, 0x87, 0xC0, 0x00, 0x0F, 0xC3, 0xF0, 0x00, + 0x0F, 0xE0, 0xFC, 0x00, 0x1F, 0xF0, 0x7F, 0x80, 0x7F, 0x78, 0x1F, 0xFF, + 0xFE, 0x38, 0x03, 0xFF, 0xFE, 0x1C, 0x00, 0xFF, 0xFC, 0x0E, 0x00, 0x0F, + 0xF0, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x80, 0xF0, 0x00, 0x03, 0xC0, + 0x78, 0x00, 0x03, 0xE0, 0x7C, 0x00, 0x01, 0xF0, 0x3E, 0x00, 0x00, 0xF0, + 0x1E, 0x00, 0x00, 0x78, 0x0F, 0x00, 0x00, 0x3C, 0x0F, 0x80, 0x00, 0x3E, + 0x07, 0xC0, 0x00, 0x1F, 0x03, 0xC0, 0x00, 0x0F, 0x01, 0xE0, 0x00, 0x07, + 0x80, 0xF0, 0x00, 0x03, 0xC0, 0xF8, 0x00, 0x03, 0xE0, 0x7C, 0x00, 0x01, + 0xF0, 0x3C, 0x00, 0x00, 0xF0, 0x1F, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, + 0xFC, 0x0F, 0xFF, 0xFF, 0xFE, 0x07, 0xFF, 0xFF, 0xFE, 0x03, 0xC0, 0x00, + 0x0F, 0x01, 0xE0, 0x00, 0x07, 0x81, 0xF0, 0x00, 0x07, 0xC0, 0xF8, 0x00, + 0x03, 0xE0, 0x78, 0x00, 0x01, 0xE0, 0x3C, 0x00, 0x00, 0xF0, 0x1E, 0x00, + 0x00, 0x78, 0x1F, 0x00, 0x00, 0x7C, 0x0F, 0x80, 0x00, 0x3C, 0x07, 0x80, + 0x00, 0x1E, 0x03, 0xC0, 0x00, 0x0F, 0x01, 0xE0, 0x00, 0x0F, 0x81, 0xF0, + 0x00, 0x07, 0xC0, 0xF0, 0x00, 0x03, 0xC0, 0x78, 0x00, 0x01, 0xE0, 0x00, + 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xE0, 0x3C, 0x07, 0x81, 0xF0, 0x3E, 0x07, + 0x80, 0xF0, 0x1E, 0x07, 0xC0, 0xF8, 0x1E, 0x03, 0xC0, 0x78, 0x1F, 0x03, + 0xE0, 0x78, 0x0F, 0x01, 0xE0, 0x7C, 0x0F, 0x81, 0xE0, 0x3C, 0x07, 0x81, + 0xF0, 0x3E, 0x07, 0x80, 0xF0, 0x1E, 0x07, 0xC0, 0xF8, 0x1E, 0x00, 0x00, + 0x00, 0x07, 0x80, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x01, 0xE0, + 0x00, 0x00, 0xF0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0x1E, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x07, 0x80, 0x00, 0x07, + 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0xF0, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x78, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x1E, 0x00, 0x00, + 0x0F, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x07, 0x80, 0x00, 0x03, 0xC0, 0xF0, + 0x01, 0xE0, 0x78, 0x00, 0xF0, 0x78, 0x00, 0xF8, 0x3C, 0x00, 0x78, 0x1E, + 0x00, 0x3C, 0x0F, 0x00, 0x3E, 0x07, 0xC0, 0x3E, 0x03, 0xF0, 0x7E, 0x00, + 0xFF, 0xFF, 0x00, 0x3F, 0xFF, 0x00, 0x0F, 0xFE, 0x00, 0x01, 0xFC, 0x00, + 0x00, 0x01, 0xE0, 0x00, 0x0F, 0xC0, 0x78, 0x00, 0x07, 0xC0, 0x1E, 0x00, + 0x03, 0xE0, 0x0F, 0x80, 0x03, 0xF0, 0x03, 0xE0, 0x01, 0xF8, 0x00, 0xF0, + 0x00, 0xFC, 0x00, 0x3C, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x3E, 0x00, 0x07, + 0xC0, 0x3F, 0x00, 0x01, 0xE0, 0x1F, 0x80, 0x00, 0x78, 0x0F, 0x80, 0x00, + 0x1E, 0x07, 0xC0, 0x00, 0x0F, 0x83, 0xE0, 0x00, 0x03, 0xE3, 0xF0, 0x00, + 0x00, 0xF1, 0xFC, 0x00, 0x00, 0x3C, 0xFF, 0x00, 0x00, 0x0F, 0x7F, 0xE0, + 0x00, 0x07, 0xFE, 0xF8, 0x00, 0x01, 0xFE, 0x1E, 0x00, 0x00, 0x7F, 0x07, + 0xC0, 0x00, 0x1F, 0x80, 0xF0, 0x00, 0x0F, 0xC0, 0x3E, 0x00, 0x03, 0xE0, + 0x07, 0x80, 0x00, 0xF0, 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x7C, 0x00, 0x0F, + 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0x7C, 0x00, + 0x78, 0x00, 0x1F, 0x00, 0x1E, 0x00, 0x03, 0xE0, 0x07, 0x80, 0x00, 0xF8, + 0x03, 0xE0, 0x00, 0x1F, 0x00, 0xF0, 0x00, 0x07, 0xC0, 0x3C, 0x00, 0x00, + 0xF8, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x00, 0xF8, + 0x00, 0x03, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, 0x01, 0xF0, 0x00, + 0x07, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, 0x0F, + 0x80, 0x00, 0x3E, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, + 0x00, 0x7C, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x00, + 0xF8, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xF0, + 0x00, 0x07, 0xC0, 0x00, 0x1F, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, + 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xE0, + 0x01, 0xF8, 0x00, 0x00, 0x7E, 0x03, 0xF8, 0x00, 0x01, 0xFC, 0x0F, 0xF0, + 0x00, 0x03, 0xF8, 0x1F, 0xE0, 0x00, 0x0F, 0xF0, 0x3F, 0xC0, 0x00, 0x1F, + 0xC0, 0x7F, 0x80, 0x00, 0x7F, 0x80, 0xFF, 0x00, 0x00, 0xEF, 0x03, 0xFE, + 0x00, 0x03, 0xFE, 0x07, 0xBC, 0x00, 0x0F, 0x78, 0x0F, 0x3C, 0x00, 0x1E, + 0xF0, 0x1E, 0x78, 0x00, 0x79, 0xE0, 0x3C, 0xF0, 0x00, 0xF3, 0xC0, 0xF9, + 0xE0, 0x03, 0xCF, 0x81, 0xE3, 0xC0, 0x07, 0x9E, 0x03, 0xC7, 0x80, 0x1E, + 0x3C, 0x07, 0x8F, 0x00, 0x38, 0x78, 0x1F, 0x1E, 0x00, 0xF0, 0xF0, 0x3C, + 0x1E, 0x03, 0xC3, 0xE0, 0x78, 0x3C, 0x07, 0x87, 0x80, 0xF0, 0x78, 0x1E, + 0x0F, 0x01, 0xE0, 0xF0, 0x3C, 0x1E, 0x07, 0xC1, 0xE0, 0xF0, 0x7C, 0x0F, + 0x03, 0xC1, 0xE0, 0xF0, 0x1E, 0x07, 0x87, 0x81, 0xE0, 0x3C, 0x0F, 0x0E, + 0x03, 0xC0, 0x78, 0x0F, 0x3C, 0x07, 0x81, 0xF0, 0x1E, 0x70, 0x1F, 0x03, + 0xC0, 0x3D, 0xE0, 0x3C, 0x07, 0x80, 0x7F, 0x80, 0x78, 0x0F, 0x00, 0xFF, + 0x00, 0xF0, 0x3E, 0x01, 0xFC, 0x01, 0xE0, 0x78, 0x03, 0xF8, 0x07, 0xC0, + 0xF0, 0x07, 0xE0, 0x0F, 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x01, 0xF0, + 0x00, 0x03, 0xC0, 0x7E, 0x00, 0x01, 0xF0, 0x3F, 0x80, 0x00, 0x78, 0x0F, + 0xE0, 0x00, 0x1E, 0x03, 0xFC, 0x00, 0x07, 0x80, 0xFF, 0x00, 0x03, 0xE0, + 0x3F, 0xE0, 0x00, 0xF0, 0x1F, 0xF8, 0x00, 0x3C, 0x07, 0x9E, 0x00, 0x0F, + 0x01, 0xE7, 0xC0, 0x03, 0xC0, 0x78, 0xF0, 0x01, 0xF0, 0x1E, 0x3E, 0x00, + 0x78, 0x0F, 0x87, 0x80, 0x1E, 0x03, 0xC1, 0xF0, 0x07, 0x80, 0xF0, 0x7C, + 0x01, 0xE0, 0x3C, 0x0F, 0x00, 0xF8, 0x1F, 0x03, 0xE0, 0x3C, 0x07, 0x80, + 0x78, 0x0F, 0x01, 0xE0, 0x1F, 0x03, 0xC0, 0x78, 0x07, 0xC1, 0xF0, 0x1E, + 0x00, 0xF8, 0x78, 0x0F, 0x80, 0x3E, 0x1E, 0x03, 0xC0, 0x07, 0x87, 0x80, + 0xF0, 0x01, 0xF1, 0xE0, 0x3C, 0x00, 0x3C, 0xF8, 0x0F, 0x00, 0x0F, 0xBC, + 0x07, 0xC0, 0x03, 0xEF, 0x01, 0xE0, 0x00, 0x7F, 0xC0, 0x78, 0x00, 0x1F, + 0xF0, 0x1E, 0x00, 0x03, 0xFC, 0x0F, 0x80, 0x00, 0xFE, 0x03, 0xC0, 0x00, + 0x1F, 0x80, 0xF0, 0x00, 0x07, 0xE0, 0x3C, 0x00, 0x01, 0xF8, 0x00, 0x00, + 0x00, 0xFF, 0x00, 0x00, 0x03, 0xFF, 0xF0, 0x00, 0x07, 0xFF, 0xFC, 0x00, + 0x0F, 0xFF, 0xFF, 0x80, 0x0F, 0xF0, 0x1F, 0xC0, 0x0F, 0xC0, 0x03, 0xF0, + 0x0F, 0x80, 0x00, 0xFC, 0x0F, 0x80, 0x00, 0x3E, 0x0F, 0x80, 0x00, 0x0F, + 0x07, 0x80, 0x00, 0x07, 0xC7, 0xC0, 0x00, 0x01, 0xE3, 0xC0, 0x00, 0x00, + 0xF3, 0xC0, 0x00, 0x00, 0x79, 0xE0, 0x00, 0x00, 0x3D, 0xE0, 0x00, 0x00, + 0x1E, 0xF0, 0x00, 0x00, 0x0F, 0x78, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, + 0x07, 0xFC, 0x00, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x01, 0xEF, 0x00, 0x00, + 0x00, 0xF7, 0x80, 0x00, 0x00, 0xFB, 0xC0, 0x00, 0x00, 0x79, 0xE0, 0x00, + 0x00, 0x3C, 0xF0, 0x00, 0x00, 0x3E, 0x78, 0x00, 0x00, 0x1E, 0x3E, 0x00, + 0x00, 0x1F, 0x0F, 0x00, 0x00, 0x1F, 0x07, 0xC0, 0x00, 0x1F, 0x03, 0xF0, + 0x00, 0x1F, 0x00, 0xFC, 0x00, 0x3F, 0x80, 0x3F, 0x80, 0x7F, 0x80, 0x1F, + 0xFF, 0xFF, 0x00, 0x03, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0x00, + 0x0F, 0xF8, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x00, 0x0F, 0xFF, 0xFE, 0x00, + 0x7F, 0xFF, 0xF8, 0x07, 0xFF, 0xFF, 0xE0, 0x3E, 0x00, 0x3F, 0x81, 0xE0, + 0x00, 0x7C, 0x0F, 0x00, 0x01, 0xE0, 0xF8, 0x00, 0x0F, 0x07, 0xC0, 0x00, + 0x78, 0x3C, 0x00, 0x03, 0xC1, 0xE0, 0x00, 0x1E, 0x0F, 0x00, 0x01, 0xE0, + 0xF8, 0x00, 0x0F, 0x07, 0xC0, 0x00, 0xF8, 0x3C, 0x00, 0x0F, 0x81, 0xE0, + 0x01, 0xF8, 0x0F, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFC, 0x07, 0xFF, 0xFF, + 0x80, 0x3F, 0xFF, 0xF0, 0x01, 0xE0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, + 0xF8, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x01, 0xE0, + 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x07, 0x80, 0x00, + 0x00, 0x3C, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, + 0xF0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, + 0x00, 0x03, 0xFF, 0xF0, 0x00, 0x07, 0xFF, 0xFC, 0x00, 0x0F, 0xFF, 0xFF, + 0x80, 0x0F, 0xF0, 0x1F, 0xC0, 0x0F, 0xC0, 0x03, 0xF0, 0x0F, 0xC0, 0x00, + 0xFC, 0x0F, 0x80, 0x00, 0x3E, 0x0F, 0x80, 0x00, 0x0F, 0x07, 0x80, 0x00, + 0x07, 0xC7, 0xC0, 0x00, 0x01, 0xE3, 0xC0, 0x00, 0x00, 0xF3, 0xC0, 0x00, + 0x00, 0x79, 0xE0, 0x00, 0x00, 0x3D, 0xE0, 0x00, 0x00, 0x1E, 0xF0, 0x00, + 0x00, 0x0F, 0x78, 0x00, 0x00, 0x07, 0xB8, 0x00, 0x00, 0x03, 0xFC, 0x00, + 0x00, 0x03, 0xDE, 0x00, 0x00, 0x01, 0xEF, 0x00, 0x00, 0x00, 0xF7, 0x80, + 0x00, 0x00, 0x7B, 0xC0, 0x00, 0x00, 0x79, 0xE0, 0x00, 0x00, 0x3C, 0xF0, + 0x00, 0x00, 0x3C, 0x78, 0x00, 0x08, 0x3E, 0x3E, 0x00, 0x0E, 0x1E, 0x0F, + 0x00, 0x0F, 0x9F, 0x07, 0xC0, 0x07, 0xFF, 0x03, 0xF0, 0x01, 0xFF, 0x00, + 0xFC, 0x00, 0x7F, 0x00, 0x3F, 0x80, 0xFF, 0x80, 0x1F, 0xFF, 0xFF, 0xE0, + 0x03, 0xFF, 0xFF, 0xF8, 0x00, 0xFF, 0xFC, 0x7E, 0x00, 0x0F, 0xF0, 0x1F, + 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, + 0xC0, 0x07, 0xFF, 0xFF, 0xC0, 0x1F, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFE, + 0x03, 0xE0, 0x00, 0xFC, 0x0F, 0x00, 0x01, 0xF0, 0x3C, 0x00, 0x03, 0xC1, + 0xF0, 0x00, 0x0F, 0x07, 0xC0, 0x00, 0x3C, 0x1E, 0x00, 0x00, 0xF0, 0x78, + 0x00, 0x03, 0xC1, 0xE0, 0x00, 0x1E, 0x0F, 0x80, 0x00, 0x78, 0x3E, 0x00, + 0x03, 0xE0, 0xF0, 0x00, 0x1F, 0x03, 0xC0, 0x01, 0xF8, 0x0F, 0xFF, 0xFF, + 0xC0, 0x7F, 0xFF, 0xFE, 0x01, 0xFF, 0xFF, 0xF8, 0x07, 0xFF, 0xFF, 0xF0, + 0x1E, 0x00, 0x07, 0xE0, 0xF8, 0x00, 0x0F, 0x83, 0xE0, 0x00, 0x1E, 0x0F, + 0x00, 0x00, 0x78, 0x3C, 0x00, 0x01, 0xE0, 0xF0, 0x00, 0x07, 0x87, 0xC0, + 0x00, 0x1E, 0x1F, 0x00, 0x00, 0xF0, 0x78, 0x00, 0x03, 0xC1, 0xE0, 0x00, + 0x0F, 0x07, 0x80, 0x00, 0x3C, 0x3E, 0x00, 0x00, 0xF0, 0xF0, 0x00, 0x03, + 0xC3, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0xFF, 0xFC, + 0x00, 0x1F, 0xFF, 0xF8, 0x01, 0xFF, 0xFF, 0xC0, 0x1F, 0xC0, 0x7F, 0x01, + 0xF0, 0x00, 0xFC, 0x0F, 0x00, 0x03, 0xE0, 0xF0, 0x00, 0x0F, 0x07, 0x00, + 0x00, 0x78, 0x78, 0x00, 0x03, 0xC3, 0xC0, 0x00, 0x1E, 0x1E, 0x00, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, + 0xFF, 0xE0, 0x00, 0x03, 0xFF, 0xF0, 0x00, 0x0F, 0xFF, 0xF0, 0x00, 0x0F, + 0xFF, 0xC0, 0x00, 0x07, 0xFF, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x07, + 0xF0, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x3C, 0xF0, 0x00, 0x01, 0xE7, + 0x80, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x71, 0xE0, 0x00, 0x07, 0x8F, 0x00, + 0x00, 0x3C, 0x7C, 0x00, 0x03, 0xC1, 0xF0, 0x00, 0x7C, 0x0F, 0xE0, 0x1F, + 0xC0, 0x3F, 0xFF, 0xFC, 0x00, 0xFF, 0xFF, 0xC0, 0x03, 0xFF, 0xF8, 0x00, + 0x03, 0xFE, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0x7F, + 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFE, 0x00, 0x0F, 0x00, 0x00, 0x01, 0xF0, + 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x1E, 0x00, 0x00, + 0x01, 0xE0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x07, 0xC0, 0x00, + 0x00, 0x78, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x78, 0x00, 0x00, 0x0F, + 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0xF0, 0x00, + 0x00, 0x0F, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, + 0xE0, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x3E, 0x00, + 0x00, 0x03, 0xC0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, + 0x7C, 0x00, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x0F, 0x00, 0x00, 0x3C, 0x1E, + 0x00, 0x00, 0xF8, 0x7C, 0x00, 0x01, 0xF0, 0xF8, 0x00, 0x03, 0xC1, 0xE0, + 0x00, 0x07, 0x83, 0xC0, 0x00, 0x0F, 0x0F, 0x80, 0x00, 0x3E, 0x1F, 0x00, + 0x00, 0x7C, 0x3C, 0x00, 0x00, 0xF0, 0x78, 0x00, 0x01, 0xE0, 0xF0, 0x00, + 0x03, 0xC3, 0xE0, 0x00, 0x0F, 0x87, 0xC0, 0x00, 0x1F, 0x0F, 0x00, 0x00, + 0x3C, 0x1E, 0x00, 0x00, 0x78, 0x3C, 0x00, 0x01, 0xF0, 0xF8, 0x00, 0x03, + 0xE1, 0xF0, 0x00, 0x07, 0x83, 0xC0, 0x00, 0x0F, 0x07, 0x80, 0x00, 0x1E, + 0x1F, 0x00, 0x00, 0x7C, 0x3E, 0x00, 0x00, 0xF8, 0x78, 0x00, 0x01, 0xE0, + 0xF0, 0x00, 0x03, 0xC1, 0xE0, 0x00, 0x0F, 0x83, 0xC0, 0x00, 0x1E, 0x07, + 0x80, 0x00, 0x7C, 0x0F, 0x80, 0x01, 0xF0, 0x0F, 0x80, 0x07, 0xE0, 0x1F, + 0xC0, 0x7F, 0x80, 0x1F, 0xFF, 0xFE, 0x00, 0x1F, 0xFF, 0xF0, 0x00, 0x1F, + 0xFF, 0xC0, 0x00, 0x07, 0xFC, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xFF, 0xC0, + 0x00, 0x0F, 0xBE, 0x00, 0x00, 0x79, 0xF0, 0x00, 0x07, 0xC7, 0x80, 0x00, + 0x3C, 0x3C, 0x00, 0x03, 0xE1, 0xE0, 0x00, 0x1E, 0x0F, 0x80, 0x01, 0xF0, + 0x7C, 0x00, 0x0F, 0x03, 0xE0, 0x00, 0xF8, 0x1F, 0x00, 0x0F, 0x80, 0x78, + 0x00, 0x78, 0x03, 0xC0, 0x07, 0xC0, 0x1E, 0x00, 0x3C, 0x00, 0xF0, 0x03, + 0xE0, 0x07, 0xC0, 0x1E, 0x00, 0x3E, 0x01, 0xF0, 0x01, 0xF0, 0x0F, 0x00, + 0x07, 0x80, 0xF0, 0x00, 0x3C, 0x07, 0x80, 0x01, 0xE0, 0x78, 0x00, 0x0F, + 0x07, 0xC0, 0x00, 0x7C, 0x3C, 0x00, 0x03, 0xE3, 0xE0, 0x00, 0x1F, 0x1E, + 0x00, 0x00, 0xF9, 0xF0, 0x00, 0x03, 0xCF, 0x00, 0x00, 0x1E, 0xF0, 0x00, + 0x00, 0xF7, 0x80, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x01, + 0xFC, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0xF0, + 0x00, 0x1F, 0x00, 0x03, 0xDE, 0x00, 0x07, 0xE0, 0x00, 0xFB, 0xC0, 0x00, + 0xFC, 0x00, 0x1E, 0x78, 0x00, 0x3F, 0x80, 0x07, 0xCF, 0x00, 0x07, 0xF0, + 0x00, 0xF9, 0xE0, 0x01, 0xFE, 0x00, 0x3E, 0x3C, 0x00, 0x7F, 0xC0, 0x07, + 0xC7, 0x80, 0x0F, 0x78, 0x01, 0xF0, 0xF0, 0x03, 0xEF, 0x00, 0x3E, 0x1E, + 0x00, 0x79, 0xE0, 0x0F, 0x83, 0xC0, 0x1F, 0x3C, 0x01, 0xF0, 0x78, 0x03, + 0xC7, 0x80, 0x3C, 0x0F, 0x00, 0xF8, 0xF0, 0x0F, 0x80, 0xE0, 0x1E, 0x1E, + 0x01, 0xE0, 0x1C, 0x07, 0xC1, 0xC0, 0x7C, 0x03, 0x80, 0xF0, 0x3C, 0x0F, + 0x00, 0x70, 0x3E, 0x07, 0x83, 0xE0, 0x0E, 0x07, 0x80, 0xF0, 0x78, 0x01, + 0xC1, 0xF0, 0x1E, 0x1F, 0x00, 0x3C, 0x3C, 0x03, 0xC3, 0xE0, 0x07, 0x8F, + 0x80, 0x78, 0x78, 0x00, 0xF1, 0xE0, 0x0F, 0x1F, 0x00, 0x1E, 0x7C, 0x01, + 0xE3, 0xC0, 0x03, 0xCF, 0x00, 0x3C, 0xF8, 0x00, 0x7B, 0xE0, 0x07, 0x9E, + 0x00, 0x0F, 0x78, 0x00, 0xF7, 0xC0, 0x01, 0xFF, 0x00, 0x1E, 0xF0, 0x00, + 0x3F, 0xC0, 0x03, 0xFE, 0x00, 0x07, 0xF8, 0x00, 0x7F, 0x80, 0x00, 0xFE, + 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xC0, 0x00, 0xFC, 0x00, 0x03, 0xF0, 0x00, + 0x1F, 0x80, 0x00, 0x7E, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x7C, + 0x00, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xF0, 0x07, 0xC0, 0x00, 0x3E, 0x00, + 0x7C, 0x00, 0x07, 0xC0, 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x1F, + 0x00, 0x01, 0xF0, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x7C, 0x00, 0x00, 0xF8, + 0x0F, 0x80, 0x00, 0x0F, 0x81, 0xF0, 0x00, 0x00, 0x7C, 0x1F, 0x00, 0x00, + 0x07, 0xC3, 0xE0, 0x00, 0x00, 0x7C, 0x7C, 0x00, 0x00, 0x03, 0xEF, 0x80, + 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x1F, + 0xC0, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, + 0x03, 0xFC, 0x00, 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x00, 0x0F, 0xBE, 0x00, + 0x00, 0x01, 0xF3, 0xE0, 0x00, 0x00, 0x3E, 0x1F, 0x00, 0x00, 0x03, 0xE1, + 0xF0, 0x00, 0x00, 0x7C, 0x0F, 0x80, 0x00, 0x0F, 0x80, 0xF8, 0x00, 0x01, + 0xF0, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x03, 0xE0, + 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x03, 0xF0, 0x03, 0xF0, 0x00, + 0x1F, 0x00, 0x7E, 0x00, 0x01, 0xF8, 0x0F, 0xC0, 0x00, 0x0F, 0x80, 0xF8, + 0x00, 0x00, 0x7D, 0xF0, 0x00, 0x03, 0xE7, 0xC0, 0x00, 0x1F, 0x1F, 0x80, + 0x00, 0xF8, 0x3E, 0x00, 0x03, 0xE0, 0xF8, 0x00, 0x1F, 0x01, 0xF0, 0x00, + 0xF8, 0x07, 0xC0, 0x07, 0xC0, 0x0F, 0x00, 0x3E, 0x00, 0x3E, 0x01, 0xF0, + 0x00, 0xF8, 0x07, 0xC0, 0x01, 0xF0, 0x3E, 0x00, 0x07, 0xC1, 0xF0, 0x00, + 0x0F, 0x0F, 0x80, 0x00, 0x3E, 0x7C, 0x00, 0x00, 0x79, 0xE0, 0x00, 0x01, + 0xFF, 0x80, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x3F, + 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x0F, 0x80, + 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x03, 0xC0, 0x00, + 0x00, 0x1F, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, + 0x07, 0x80, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x03, + 0xE0, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xC0, + 0x1F, 0xFF, 0xFF, 0xE0, 0x07, 0xFF, 0xFF, 0xF8, 0x03, 0xFF, 0xFF, 0xFE, + 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x07, + 0xC0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, + 0xF8, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, + 0x1F, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, + 0x03, 0xE0, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, + 0x00, 0x7C, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, + 0x00, 0x0F, 0x80, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x03, 0xE0, 0x00, + 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x7C, 0x00, + 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x0F, 0x80, + 0x00, 0x00, 0x07, 0xFF, 0xFF, 0xFE, 0x01, 0xFF, 0xFF, 0xFF, 0x80, 0x7F, + 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0x7F, 0xC0, 0x1F, + 0xF0, 0x07, 0xFC, 0x01, 0xFE, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, + 0x03, 0xC0, 0x01, 0xF0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, + 0xE0, 0x00, 0xF8, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, + 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0xF8, 0x00, + 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x7C, 0x00, 0x1E, + 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x0F, 0x00, + 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x7C, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, + 0xE0, 0x00, 0x7F, 0xC0, 0x3F, 0xE0, 0x0F, 0xF8, 0x03, 0xFE, 0x00, 0xE3, + 0x8E, 0x38, 0xE1, 0x86, 0x18, 0x61, 0x87, 0x1C, 0x71, 0xC7, 0x0C, 0x30, + 0xC3, 0x0C, 0x38, 0xE3, 0x8E, 0x38, 0x61, 0x86, 0x18, 0x61, 0xC7, 0x1C, + 0x71, 0xC0, 0x00, 0x7F, 0xC0, 0x1F, 0xF0, 0x07, 0xFC, 0x03, 0xFE, 0x00, + 0x07, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x03, + 0xC0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, 0xE0, + 0x00, 0x78, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, + 0x3C, 0x00, 0x1F, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, + 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x1F, 0x00, + 0x07, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x0F, 0x80, 0x03, + 0xC0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x7F, 0x80, 0x3F, 0xE0, + 0x0F, 0xF8, 0x03, 0xFE, 0x00, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x1F, 0x00, + 0x1F, 0xC0, 0x0E, 0xE0, 0x0E, 0x70, 0x0F, 0x38, 0x07, 0x1C, 0x07, 0x0E, + 0x03, 0x83, 0x83, 0x81, 0xC3, 0xC0, 0xE1, 0xC0, 0x71, 0xC0, 0x39, 0xE0, + 0x0E, 0xE0, 0x07, 0xF0, 0x03, 0xF0, 0x01, 0xC0, 0x7F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xC0, 0xF8, 0x78, 0x3C, 0x1C, 0x0E, 0x0E, 0x07, 0x00, + 0x1F, 0xE0, 0x01, 0xFF, 0xF0, 0x07, 0xFF, 0xF0, 0x1F, 0xFF, 0xF0, 0x7E, + 0x07, 0xE1, 0xF0, 0x07, 0xC3, 0xC0, 0x07, 0x80, 0x00, 0x0F, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x38, 0x00, 0x00, 0xF0, 0x00, 0x07, 0xE0, 0x0F, 0xFF, + 0xC0, 0xFF, 0xFF, 0x07, 0xFF, 0x9E, 0x1F, 0xC0, 0x3C, 0x7C, 0x00, 0x78, + 0xF0, 0x00, 0xF3, 0xC0, 0x03, 0xC7, 0x80, 0x07, 0x8F, 0x00, 0x1F, 0x1E, + 0x00, 0x7E, 0x3F, 0x07, 0xFC, 0x3F, 0xFF, 0x7E, 0x7F, 0xFC, 0xFC, 0x7F, + 0xF0, 0xF8, 0x3F, 0x00, 0xF0, 0x01, 0xE0, 0x00, 0x00, 0xF0, 0x00, 0x00, + 0xF8, 0x00, 0x00, 0x78, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x1E, 0x00, 0x00, + 0x0F, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x07, 0x83, 0xE0, 0x03, 0xC7, 0xFC, + 0x01, 0xEF, 0xFF, 0x00, 0xFF, 0xFF, 0xC0, 0xF7, 0x83, 0xF0, 0x7F, 0x00, + 0xF8, 0x3F, 0x00, 0x3E, 0x1F, 0x00, 0x0F, 0x1F, 0x80, 0x07, 0x8F, 0x80, + 0x03, 0xC7, 0x80, 0x01, 0xE3, 0xC0, 0x00, 0xF1, 0xE0, 0x00, 0x79, 0xF0, + 0x00, 0x3C, 0xF0, 0x00, 0x3C, 0x78, 0x00, 0x1E, 0x3C, 0x00, 0x0F, 0x1E, + 0x00, 0x0F, 0x9F, 0x00, 0x07, 0x8F, 0xC0, 0x07, 0xC7, 0xE0, 0x07, 0xC3, + 0xF8, 0x07, 0xC1, 0xFE, 0x0F, 0xC1, 0xEF, 0xFF, 0xE0, 0xF3, 0xFF, 0xC0, + 0x78, 0xFF, 0xC0, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x03, 0xFF, + 0x80, 0x3F, 0xFF, 0x01, 0xFF, 0xFE, 0x0F, 0xE0, 0xF8, 0x7E, 0x01, 0xF1, + 0xF0, 0x03, 0xCF, 0x80, 0x0F, 0x3C, 0x00, 0x3D, 0xF0, 0x00, 0x07, 0x80, + 0x00, 0x1E, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, + 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x0F, 0x3C, + 0x00, 0x3C, 0xF8, 0x01, 0xE1, 0xF0, 0x0F, 0x87, 0xE0, 0xFC, 0x0F, 0xFF, + 0xE0, 0x3F, 0xFF, 0x00, 0x7F, 0xF8, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, + 0x03, 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x01, 0xE0, + 0x00, 0x00, 0x3C, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x00, + 0x3C, 0x00, 0x3F, 0x07, 0x80, 0x1F, 0xF8, 0xF0, 0x0F, 0xFF, 0x3E, 0x03, + 0xFF, 0xF7, 0x80, 0xFC, 0x1F, 0xF0, 0x3F, 0x00, 0xFE, 0x07, 0xC0, 0x0F, + 0xC1, 0xF0, 0x01, 0xF0, 0x3C, 0x00, 0x3E, 0x0F, 0x80, 0x07, 0xC1, 0xE0, + 0x00, 0x78, 0x3C, 0x00, 0x1F, 0x0F, 0x80, 0x03, 0xC1, 0xE0, 0x00, 0x78, + 0x3C, 0x00, 0x0F, 0x07, 0x80, 0x01, 0xE0, 0xF0, 0x00, 0x7C, 0x1E, 0x00, + 0x0F, 0x03, 0xC0, 0x03, 0xE0, 0x78, 0x00, 0x7C, 0x0F, 0x80, 0x1F, 0x80, + 0xF8, 0x07, 0xF0, 0x1F, 0x83, 0xFC, 0x03, 0xFF, 0xFF, 0x80, 0x3F, 0xFE, + 0xF0, 0x03, 0xFF, 0x1E, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x1F, 0x80, + 0x01, 0xFF, 0xC0, 0x07, 0xFF, 0xE0, 0x3F, 0xFF, 0xC0, 0xFE, 0x0F, 0xC1, + 0xF0, 0x07, 0xC7, 0xC0, 0x0F, 0x8F, 0x00, 0x0F, 0x3C, 0x00, 0x1E, 0x78, + 0x00, 0x3D, 0xE0, 0x00, 0x7B, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xBF, 0xFF, 0xFF, 0x78, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, + 0x03, 0xC0, 0x00, 0x07, 0x80, 0x03, 0xCF, 0x80, 0x0F, 0x0F, 0x80, 0x3E, + 0x1F, 0x81, 0xF8, 0x1F, 0xFF, 0xE0, 0x1F, 0xFF, 0x80, 0x1F, 0xFC, 0x00, + 0x0F, 0xE0, 0x00, 0x00, 0x3E, 0x01, 0xFC, 0x07, 0xF8, 0x0F, 0xE0, 0x3E, + 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x07, 0xC0, 0x7F, 0xF0, 0xFF, 0xE3, + 0xFF, 0xC0, 0x78, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x3E, + 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x0F, 0x80, 0x1E, 0x00, + 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x03, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1E, + 0x00, 0x3C, 0x00, 0xF0, 0x01, 0xE0, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x07, + 0xFE, 0x3C, 0x01, 0xFF, 0xE7, 0x00, 0xFF, 0xFE, 0xE0, 0x1F, 0x83, 0xFC, + 0x07, 0xC0, 0x3F, 0x81, 0xF0, 0x03, 0xF0, 0x3C, 0x00, 0x7C, 0x0F, 0x00, + 0x0F, 0x81, 0xE0, 0x01, 0xF0, 0x78, 0x00, 0x3E, 0x0F, 0x00, 0x07, 0xC1, + 0xE0, 0x00, 0xF0, 0x38, 0x00, 0x1E, 0x0F, 0x00, 0x03, 0xC1, 0xE0, 0x00, + 0xF8, 0x3C, 0x00, 0x1F, 0x07, 0x80, 0x03, 0xC0, 0xF0, 0x00, 0xF8, 0x1E, + 0x00, 0x3F, 0x03, 0xE0, 0x07, 0xE0, 0x3E, 0x01, 0xF8, 0x07, 0xE0, 0xFF, + 0x00, 0x7F, 0xFD, 0xE0, 0x0F, 0xFF, 0x3C, 0x00, 0xFF, 0xCF, 0x00, 0x07, + 0xE1, 0xE0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x0F, 0x01, 0xE0, 0x03, 0xE0, + 0x3C, 0x00, 0xF8, 0x07, 0xE0, 0x7F, 0x00, 0x7F, 0xFF, 0xC0, 0x0F, 0xFF, + 0xF0, 0x00, 0x7F, 0xF8, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x01, 0xE0, 0x00, + 0x03, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x3C, 0x00, 0x00, + 0x78, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x83, 0xF0, 0x0F, + 0x1F, 0xF0, 0x1E, 0xFF, 0xF0, 0x3F, 0xFF, 0xE0, 0xFF, 0x87, 0xE1, 0xFC, + 0x07, 0xC3, 0xF0, 0x07, 0x87, 0xC0, 0x0F, 0x1F, 0x00, 0x1E, 0x3E, 0x00, + 0x3C, 0x78, 0x00, 0x78, 0xF0, 0x01, 0xE1, 0xE0, 0x03, 0xC7, 0xC0, 0x07, + 0x8F, 0x00, 0x0F, 0x1E, 0x00, 0x1E, 0x3C, 0x00, 0x78, 0x78, 0x00, 0xF1, + 0xE0, 0x01, 0xE3, 0xC0, 0x03, 0xC7, 0x80, 0x0F, 0x8F, 0x00, 0x1E, 0x1E, + 0x00, 0x3C, 0x78, 0x00, 0x78, 0xF0, 0x00, 0xF1, 0xE0, 0x03, 0xC0, 0x01, + 0xE0, 0x3C, 0x0F, 0x01, 0xE0, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xF0, 0x1E, 0x03, 0xC0, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x03, 0xC0, + 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, + 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0xF0, 0x1E, 0x00, 0x00, 0x07, + 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x01, 0xE0, 0x00, + 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x3C, + 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, + 0x07, 0x80, 0x03, 0xE0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, + 0xC0, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, 0xE0, + 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x01, 0xF0, 0x00, + 0x78, 0x00, 0x3E, 0x00, 0x7F, 0x80, 0x3F, 0xC0, 0x0F, 0xE0, 0x03, 0xE0, + 0x00, 0x01, 0xE0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x78, + 0x00, 0x00, 0x3C, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x0F, + 0x00, 0x00, 0x07, 0x80, 0x00, 0x03, 0xC0, 0x0F, 0x81, 0xE0, 0x0F, 0x80, + 0xF0, 0x0F, 0x80, 0xF0, 0x1F, 0x00, 0x78, 0x1F, 0x00, 0x3C, 0x1F, 0x00, + 0x1E, 0x1F, 0x00, 0x1F, 0x1F, 0x00, 0x0F, 0x1E, 0x00, 0x07, 0xBF, 0x80, + 0x03, 0xFF, 0xC0, 0x01, 0xFD, 0xE0, 0x01, 0xFC, 0xF8, 0x00, 0xFC, 0x3C, + 0x00, 0x7C, 0x1F, 0x00, 0x3C, 0x07, 0x80, 0x1E, 0x03, 0xC0, 0x1F, 0x01, + 0xF0, 0x0F, 0x00, 0x78, 0x07, 0x80, 0x3E, 0x03, 0xC0, 0x0F, 0x01, 0xE0, + 0x07, 0x81, 0xE0, 0x03, 0xE0, 0xF0, 0x00, 0xF0, 0x78, 0x00, 0x7C, 0x00, + 0x01, 0xE0, 0x3C, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x3C, 0x07, + 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x03, + 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, + 0xF0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0xF0, 0x1E, 0x00, 0x00, + 0x07, 0xE0, 0x1F, 0x80, 0xF9, 0xFF, 0x07, 0xFC, 0x0F, 0x3F, 0xF8, 0xFF, + 0xE0, 0xF7, 0xFF, 0x9F, 0xFF, 0x0F, 0xF0, 0xFF, 0xC3, 0xF0, 0xFC, 0x07, + 0xF8, 0x1F, 0x1F, 0x80, 0x3F, 0x00, 0xF1, 0xF0, 0x03, 0xE0, 0x0F, 0x1E, + 0x00, 0x3C, 0x00, 0xF1, 0xE0, 0x03, 0xC0, 0x0F, 0x1E, 0x00, 0x3C, 0x00, + 0xF1, 0xE0, 0x07, 0x80, 0x0F, 0x3C, 0x00, 0x78, 0x01, 0xF3, 0xC0, 0x07, + 0x80, 0x1E, 0x3C, 0x00, 0x78, 0x01, 0xE3, 0xC0, 0x0F, 0x80, 0x1E, 0x3C, + 0x00, 0xF0, 0x01, 0xE7, 0xC0, 0x0F, 0x00, 0x3C, 0x78, 0x00, 0xF0, 0x03, + 0xC7, 0x80, 0x0F, 0x00, 0x3C, 0x78, 0x01, 0xE0, 0x03, 0xC7, 0x80, 0x1E, + 0x00, 0x3C, 0xF8, 0x01, 0xE0, 0x07, 0x8F, 0x00, 0x1E, 0x00, 0x78, 0xF0, + 0x01, 0xE0, 0x07, 0x8F, 0x00, 0x3C, 0x00, 0x78, 0x00, 0x07, 0xE0, 0x1F, + 0x3F, 0xF0, 0x3C, 0xFF, 0xF0, 0x7B, 0xFF, 0xE0, 0xFF, 0x07, 0xE1, 0xF8, + 0x07, 0xC7, 0xE0, 0x07, 0x8F, 0x80, 0x0F, 0x1F, 0x00, 0x1E, 0x3C, 0x00, + 0x3C, 0x78, 0x00, 0x78, 0xF0, 0x01, 0xE3, 0xC0, 0x03, 0xC7, 0x80, 0x07, + 0x8F, 0x00, 0x0F, 0x1E, 0x00, 0x3E, 0x3C, 0x00, 0x78, 0xF0, 0x00, 0xF1, + 0xE0, 0x01, 0xE3, 0xC0, 0x03, 0xC7, 0x80, 0x0F, 0x8F, 0x00, 0x1E, 0x3E, + 0x00, 0x3C, 0x78, 0x00, 0x78, 0xF0, 0x00, 0xF1, 0xE0, 0x03, 0xC0, 0x00, + 0x1F, 0x80, 0x01, 0xFF, 0xC0, 0x0F, 0xFF, 0xE0, 0x3F, 0xFF, 0xC0, 0xFE, + 0x0F, 0xC1, 0xF0, 0x0F, 0x87, 0xC0, 0x0F, 0x8F, 0x00, 0x0F, 0x3C, 0x00, + 0x1E, 0x78, 0x00, 0x3D, 0xE0, 0x00, 0x7B, 0xC0, 0x00, 0xF7, 0x80, 0x01, + 0xFE, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0x78, 0x00, 0x1E, 0xF0, 0x00, 0x3D, + 0xE0, 0x00, 0xF3, 0xC0, 0x01, 0xE7, 0x80, 0x07, 0x8F, 0x80, 0x1F, 0x0F, + 0x80, 0x7C, 0x1F, 0x83, 0xF8, 0x1F, 0xFF, 0xE0, 0x3F, 0xFF, 0x00, 0x1F, + 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x3C, 0x7F, 0xE0, + 0x07, 0xBF, 0xFE, 0x01, 0xFF, 0xFF, 0xC0, 0x3D, 0xE0, 0xFC, 0x07, 0xF0, + 0x0F, 0x80, 0xFC, 0x00, 0xF8, 0x1F, 0x00, 0x0F, 0x07, 0xC0, 0x01, 0xE0, + 0xF8, 0x00, 0x3C, 0x1F, 0x00, 0x07, 0x83, 0xC0, 0x00, 0xF0, 0x78, 0x00, + 0x1E, 0x1F, 0x00, 0x03, 0xC3, 0xC0, 0x00, 0xF0, 0x78, 0x00, 0x1E, 0x0F, + 0x00, 0x03, 0xC3, 0xE0, 0x00, 0xF8, 0x7C, 0x00, 0x1E, 0x0F, 0x80, 0x07, + 0xC1, 0xF8, 0x01, 0xF0, 0x3F, 0x80, 0x7C, 0x0F, 0xF8, 0x3F, 0x81, 0xEF, + 0xFF, 0xE0, 0x3C, 0xFF, 0xF8, 0x07, 0x8F, 0xFC, 0x00, 0xF0, 0xFE, 0x00, + 0x3E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x1E, 0x00, + 0x00, 0x03, 0xC0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x03, + 0xC0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x3F, + 0xF8, 0xF0, 0x1F, 0xFF, 0x3C, 0x0F, 0xFF, 0xDF, 0x07, 0xE0, 0xFF, 0x83, + 0xE0, 0x1F, 0xE1, 0xF0, 0x03, 0xF8, 0x78, 0x00, 0xFE, 0x3C, 0x00, 0x1F, + 0x8F, 0x00, 0x07, 0xC7, 0x80, 0x01, 0xF1, 0xE0, 0x00, 0x7C, 0x78, 0x00, + 0x1F, 0x3C, 0x00, 0x0F, 0x8F, 0x00, 0x03, 0xE3, 0xC0, 0x00, 0xF8, 0xF0, + 0x00, 0x3E, 0x3C, 0x00, 0x1F, 0x8F, 0x00, 0x0F, 0xC3, 0xC0, 0x03, 0xF0, + 0xF8, 0x01, 0xFC, 0x1F, 0x00, 0xFF, 0x07, 0xE0, 0xFF, 0xC0, 0xFF, 0xFD, + 0xE0, 0x1F, 0xFE, 0x78, 0x03, 0xFF, 0x3E, 0x00, 0x3F, 0x0F, 0x80, 0x00, + 0x03, 0xC0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x1F, 0x00, + 0x00, 0x07, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x3E, + 0x00, 0x00, 0x0F, 0x80, 0x00, 0x07, 0x87, 0xCF, 0xC3, 0xCF, 0xE1, 0xEF, + 0xE0, 0xFF, 0x80, 0x7F, 0x00, 0x7E, 0x00, 0x3F, 0x00, 0x1F, 0x00, 0x0F, + 0x00, 0x07, 0x80, 0x03, 0xC0, 0x03, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, + 0x78, 0x00, 0x3C, 0x00, 0x3E, 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x07, 0x80, + 0x03, 0xC0, 0x03, 0xE0, 0x01, 0xE0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x00, + 0x00, 0x3F, 0x80, 0x07, 0xFF, 0x00, 0xFF, 0xFC, 0x0F, 0xFF, 0xE0, 0xFC, + 0x1F, 0x87, 0x80, 0x3C, 0x7C, 0x01, 0xE3, 0xC0, 0x0F, 0x1E, 0x00, 0x00, + 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0xE0, 0x03, 0xFF, + 0xC0, 0x07, 0xFF, 0x80, 0x07, 0xFE, 0x00, 0x03, 0xF0, 0x00, 0x07, 0xBC, + 0x00, 0x3D, 0xE0, 0x01, 0xEF, 0x00, 0x1F, 0x7C, 0x01, 0xF3, 0xF0, 0x1F, + 0x8F, 0xFF, 0xF8, 0x7F, 0xFF, 0x80, 0xFF, 0xF0, 0x01, 0xFE, 0x00, 0x03, + 0xC0, 0x1E, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC1, 0xFF, 0xEF, 0xFF, + 0x7F, 0xF0, 0x78, 0x03, 0xC0, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, + 0xC0, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x3C, 0x01, 0xE0, + 0x0F, 0x00, 0x78, 0x07, 0xC0, 0x3C, 0x01, 0xE0, 0x0F, 0xF0, 0x7F, 0x81, + 0xF8, 0x07, 0xC0, 0x0F, 0x00, 0x0F, 0x0F, 0x00, 0x1E, 0x0F, 0x00, 0x1E, + 0x1F, 0x00, 0x1E, 0x1E, 0x00, 0x1E, 0x1E, 0x00, 0x1E, 0x1E, 0x00, 0x3C, + 0x1E, 0x00, 0x3C, 0x3E, 0x00, 0x3C, 0x3C, 0x00, 0x3C, 0x3C, 0x00, 0x3C, + 0x3C, 0x00, 0x7C, 0x3C, 0x00, 0x78, 0x78, 0x00, 0x78, 0x78, 0x00, 0x78, + 0x78, 0x00, 0x78, 0x78, 0x00, 0xF8, 0x78, 0x00, 0xF0, 0xF0, 0x01, 0xF0, + 0xF0, 0x03, 0xF0, 0xF0, 0x07, 0xF0, 0xF8, 0x1F, 0xF0, 0xFF, 0xFF, 0xE0, + 0x7F, 0xFD, 0xE0, 0x3F, 0xF1, 0xE0, 0x1F, 0xC0, 0x00, 0xF0, 0x00, 0x7F, + 0xC0, 0x01, 0xEF, 0x00, 0x0F, 0xBC, 0x00, 0x3C, 0x78, 0x01, 0xE1, 0xE0, + 0x07, 0x87, 0x80, 0x3C, 0x1E, 0x01, 0xF0, 0x78, 0x07, 0x81, 0xE0, 0x3E, + 0x07, 0x80, 0xF0, 0x1E, 0x07, 0x80, 0x38, 0x1E, 0x00, 0xF0, 0xF0, 0x03, + 0xC7, 0xC0, 0x0F, 0x1E, 0x00, 0x3C, 0xF0, 0x00, 0xF3, 0xC0, 0x03, 0xDE, + 0x00, 0x07, 0x78, 0x00, 0x1F, 0xC0, 0x00, 0x7E, 0x00, 0x01, 0xF8, 0x00, + 0x07, 0xC0, 0x00, 0x1F, 0x00, 0x00, 0xF0, 0x07, 0xC0, 0x0F, 0x78, 0x03, + 0xE0, 0x0F, 0xBC, 0x03, 0xF0, 0x07, 0x9E, 0x01, 0xF8, 0x03, 0xCF, 0x00, + 0xFC, 0x03, 0xC7, 0x80, 0xFE, 0x01, 0xE3, 0xC0, 0x77, 0x01, 0xE0, 0xE0, + 0x7B, 0x80, 0xF0, 0x70, 0x39, 0xC0, 0xF0, 0x38, 0x3C, 0xE0, 0x78, 0x1C, + 0x1E, 0x78, 0x78, 0x0F, 0x1E, 0x3C, 0x3C, 0x07, 0x8F, 0x1E, 0x3C, 0x03, + 0xC7, 0x0F, 0x1E, 0x01, 0xE7, 0x87, 0x9E, 0x00, 0xF3, 0x81, 0xCF, 0x00, + 0x7B, 0xC0, 0xEF, 0x00, 0x3D, 0xC0, 0x77, 0x80, 0x1F, 0xE0, 0x3F, 0x80, + 0x0F, 0xF0, 0x1F, 0xC0, 0x07, 0xF0, 0x0F, 0xC0, 0x01, 0xF8, 0x07, 0xE0, + 0x00, 0xF8, 0x03, 0xE0, 0x00, 0x7C, 0x01, 0xF0, 0x00, 0x3C, 0x00, 0xF0, + 0x00, 0x00, 0x03, 0xC0, 0x07, 0xC0, 0xF8, 0x01, 0xE0, 0x1E, 0x00, 0xF0, + 0x07, 0x80, 0x78, 0x00, 0xF0, 0x3C, 0x00, 0x3C, 0x1F, 0x00, 0x0F, 0x8F, + 0x80, 0x01, 0xE7, 0xC0, 0x00, 0x7D, 0xE0, 0x00, 0x0F, 0xF0, 0x00, 0x03, + 0xF8, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x0F, 0xC0, 0x00, + 0x07, 0xF0, 0x00, 0x03, 0xFE, 0x00, 0x01, 0xF7, 0x80, 0x00, 0xF9, 0xF0, + 0x00, 0x3C, 0x3C, 0x00, 0x1E, 0x0F, 0x80, 0x0F, 0x01, 0xE0, 0x07, 0x80, + 0x7C, 0x03, 0xE0, 0x0F, 0x01, 0xF0, 0x03, 0xE0, 0xF8, 0x00, 0x78, 0x00, + 0x03, 0xC0, 0x01, 0xE0, 0x78, 0x00, 0x78, 0x0F, 0x00, 0x0F, 0x01, 0xE0, + 0x03, 0xC0, 0x3C, 0x00, 0x78, 0x07, 0xC0, 0x1E, 0x00, 0x78, 0x07, 0xC0, + 0x0F, 0x00, 0xF0, 0x01, 0xE0, 0x3C, 0x00, 0x3C, 0x07, 0x80, 0x07, 0x81, + 0xE0, 0x00, 0xF0, 0x3C, 0x00, 0x1E, 0x0F, 0x00, 0x03, 0xC1, 0xC0, 0x00, + 0x3C, 0x78, 0x00, 0x07, 0x9E, 0x00, 0x00, 0xF3, 0xC0, 0x00, 0x1E, 0xF0, + 0x00, 0x03, 0xDE, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x0F, 0xE0, 0x00, 0x01, + 0xFC, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x78, 0x00, + 0x00, 0x0F, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x1E, + 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, + 0xFF, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x01, + 0xFF, 0xFF, 0x81, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, 0xE0, + 0x00, 0x01, 0xF0, 0x00, 0x01, 0xF0, 0x00, 0x01, 0xF0, 0x00, 0x01, 0xF0, + 0x00, 0x01, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, + 0x00, 0x01, 0xE0, 0x00, 0x03, 0xE0, 0x00, 0x03, 0xE0, 0x00, 0x03, 0xE0, + 0x00, 0x03, 0xE0, 0x00, 0x03, 0xE0, 0x00, 0x03, 0xE0, 0x00, 0x03, 0xE0, + 0x00, 0x03, 0xC0, 0x00, 0x03, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0xE0, 0xFF, + 0xFF, 0xF0, 0x7F, 0xFF, 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x7E, 0x00, 0xFE, + 0x00, 0xF0, 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x03, 0xC0, 0x03, 0xC0, + 0x03, 0xC0, 0x03, 0xC0, 0x07, 0xC0, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, + 0x07, 0x80, 0x0F, 0x00, 0x0F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0xF8, 0x00, + 0xE0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, + 0x38, 0x00, 0x38, 0x00, 0x3C, 0x00, 0x7C, 0x00, 0x78, 0x00, 0x78, 0x00, + 0x78, 0x00, 0x78, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xE0, 0x00, + 0xE0, 0x00, 0xF0, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0x7C, 0x00, 0x00, 0x70, + 0x07, 0x00, 0x60, 0x06, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0C, 0x01, 0xC0, + 0x1C, 0x01, 0xC0, 0x1C, 0x01, 0x80, 0x38, 0x03, 0x80, 0x38, 0x03, 0x00, + 0x30, 0x07, 0x00, 0x70, 0x07, 0x00, 0x60, 0x0E, 0x00, 0xE0, 0x0E, 0x00, + 0xE0, 0x0C, 0x01, 0xC0, 0x1C, 0x01, 0xC0, 0x1C, 0x01, 0x80, 0x38, 0x03, + 0x80, 0x38, 0x03, 0x00, 0x70, 0x07, 0x00, 0x70, 0x07, 0x00, 0x60, 0x0E, + 0x00, 0xE0, 0x06, 0x00, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3F, 0x00, 0x0F, + 0x00, 0x07, 0x00, 0x07, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x1E, + 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x3E, 0x00, 0x3C, 0x00, 0x1C, + 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1E, 0x00, 0x0F, + 0x00, 0x07, 0x00, 0x1F, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x00, 0xF0, + 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x03, 0xE0, 0x03, 0xC0, + 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, + 0x0F, 0x00, 0x7F, 0x00, 0x7E, 0x00, 0xF8, 0x00, 0x0F, 0x00, 0x01, 0xFE, + 0x00, 0xCF, 0xFC, 0x0E, 0xE3, 0xF0, 0xE6, 0x07, 0xFF, 0x60, 0x0F, 0xF0, + 0x00, 0x1E, 0x00}; + +const GFXglyph FreeSansOblique24pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 13, 0, 1}, // 0x20 ' ' + {0, 11, 34, 13, 6, -33}, // 0x21 '!' + {47, 13, 12, 17, 8, -32}, // 0x22 '"' + {67, 28, 34, 26, 3, -32}, // 0x23 '#' + {186, 26, 42, 26, 3, -35}, // 0x24 '$' + {323, 36, 34, 42, 6, -32}, // 0x25 '%' + {476, 26, 34, 31, 4, -32}, // 0x26 '&' + {587, 5, 12, 9, 8, -32}, // 0x27 ''' + {595, 15, 44, 16, 5, -33}, // 0x28 '(' + {678, 15, 44, 16, 1, -33}, // 0x29 ')' + {761, 14, 13, 18, 8, -33}, // 0x2A '*' + {784, 23, 22, 27, 5, -20}, // 0x2B '+' + {848, 7, 12, 13, 3, -4}, // 0x2C ',' + {859, 12, 4, 16, 5, -14}, // 0x2D '-' + {865, 6, 5, 13, 4, -4}, // 0x2E '.' + {869, 21, 35, 13, -1, -33}, // 0x2F '/' + {961, 23, 34, 26, 5, -32}, // 0x30 '0' + {1059, 13, 33, 26, 10, -32}, // 0x31 '1' + {1113, 27, 33, 26, 2, -32}, // 0x32 '2' + {1225, 25, 34, 26, 3, -32}, // 0x33 '3' + {1332, 24, 33, 26, 3, -32}, // 0x34 '4' + {1431, 27, 34, 26, 3, -32}, // 0x35 '5' + {1546, 24, 34, 26, 4, -32}, // 0x36 '6' + {1648, 26, 33, 26, 6, -32}, // 0x37 '7' + {1756, 25, 34, 26, 3, -32}, // 0x38 '8' + {1863, 24, 34, 26, 4, -32}, // 0x39 '9' + {1965, 10, 25, 13, 5, -24}, // 0x3A ':' + {1997, 11, 32, 13, 4, -24}, // 0x3B ';' + {2041, 26, 23, 27, 4, -22}, // 0x3C '<' + {2116, 26, 12, 27, 3, -16}, // 0x3D '=' + {2155, 26, 23, 27, 2, -21}, // 0x3E '>' + {2230, 20, 35, 26, 9, -34}, // 0x3F '?' + {2318, 45, 42, 48, 4, -34}, // 0x40 '@' + {2555, 30, 34, 31, 1, -33}, // 0x41 'A' + {2683, 29, 34, 31, 4, -33}, // 0x42 'B' + {2807, 30, 36, 33, 5, -34}, // 0x43 'C' + {2942, 31, 34, 33, 4, -33}, // 0x44 'D' + {3074, 31, 34, 31, 4, -33}, // 0x45 'E' + {3206, 30, 34, 28, 4, -33}, // 0x46 'F' + {3334, 33, 36, 37, 5, -34}, // 0x47 'G' + {3483, 33, 34, 34, 4, -33}, // 0x48 'H' + {3624, 11, 34, 13, 5, -33}, // 0x49 'I' + {3671, 25, 35, 24, 2, -33}, // 0x4A 'J' + {3781, 34, 34, 31, 4, -33}, // 0x4B 'K' + {3926, 22, 34, 26, 4, -33}, // 0x4C 'L' + {4020, 39, 34, 40, 4, -33}, // 0x4D 'M' + {4186, 34, 34, 34, 4, -33}, // 0x4E 'N' + {4331, 33, 36, 36, 5, -34}, // 0x4F 'O' + {4480, 29, 34, 30, 4, -33}, // 0x50 'P' + {4604, 33, 38, 36, 5, -34}, // 0x51 'Q' + {4761, 30, 34, 33, 4, -33}, // 0x52 'R' + {4889, 29, 36, 31, 4, -34}, // 0x53 'S' + {5020, 28, 34, 29, 7, -33}, // 0x54 'T' + {5139, 31, 35, 34, 6, -33}, // 0x55 'U' + {5275, 29, 34, 30, 8, -33}, // 0x56 'V' + {5399, 43, 34, 44, 8, -33}, // 0x57 'W' + {5582, 36, 34, 31, 1, -33}, // 0x58 'X' + {5735, 30, 34, 32, 8, -33}, // 0x59 'Y' + {5863, 34, 34, 29, 1, -33}, // 0x5A 'Z' + {6008, 18, 44, 13, 1, -33}, // 0x5B '[' + {6107, 6, 35, 13, 7, -33}, // 0x5C '\' + {6134, 18, 44, 13, -1, -33}, // 0x5D ']' + {6233, 17, 18, 22, 6, -32}, // 0x5E '^' + {6272, 29, 2, 26, -3, 7}, // 0x5F '_' + {6280, 8, 7, 16, 8, -34}, // 0x60 '`' + {6287, 23, 27, 26, 3, -25}, // 0x61 'a' + {6365, 25, 35, 26, 3, -33}, // 0x62 'b' + {6475, 22, 27, 24, 4, -25}, // 0x63 'c' + {6550, 27, 35, 26, 4, -33}, // 0x64 'd' + {6669, 23, 27, 26, 4, -25}, // 0x65 'e' + {6747, 15, 34, 12, 3, -33}, // 0x66 'f' + {6811, 27, 36, 26, 2, -25}, // 0x67 'g' + {6933, 23, 34, 25, 3, -33}, // 0x68 'h' + {7031, 11, 34, 10, 3, -33}, // 0x69 'i' + {7078, 18, 44, 11, -2, -33}, // 0x6A 'j' + {7177, 25, 34, 24, 3, -33}, // 0x6B 'k' + {7284, 11, 34, 10, 3, -33}, // 0x6C 'l' + {7331, 36, 26, 38, 3, -25}, // 0x6D 'm' + {7448, 23, 26, 25, 3, -25}, // 0x6E 'n' + {7523, 23, 27, 26, 4, -25}, // 0x6F 'o' + {7601, 27, 36, 26, 1, -25}, // 0x70 'p' + {7723, 26, 36, 26, 3, -25}, // 0x71 'q' + {7840, 17, 26, 15, 3, -25}, // 0x72 'r' + {7896, 21, 27, 24, 3, -25}, // 0x73 's' + {7967, 13, 32, 12, 4, -30}, // 0x74 't' + {8019, 24, 26, 25, 4, -24}, // 0x75 'u' + {8097, 22, 25, 23, 6, -24}, // 0x76 'v' + {8166, 33, 25, 34, 6, -24}, // 0x77 'w' + {8270, 26, 25, 23, 1, -24}, // 0x78 'x' + {8352, 27, 35, 23, 0, -24}, // 0x79 'y' + {8471, 25, 25, 23, 1, -24}, // 0x7A 'z' + {8550, 16, 44, 16, 5, -33}, // 0x7B '{' + {8638, 12, 44, 12, 3, -33}, // 0x7C '|' + {8704, 16, 44, 16, -1, -33}, // 0x7D '}' + {8792, 21, 7, 27, 6, -19}}; // 0x7E '~' + +const GFXfont FreeSansOblique24pt7b PROGMEM = { + (uint8_t *)FreeSansOblique24pt7bBitmaps, + (GFXglyph *)FreeSansOblique24pt7bGlyphs, 0x20, 0x7E, 56}; + +// Approx. 9483 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSansOblique9pt7b.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSansOblique9pt7b.h new file mode 100644 index 0000000..0b5db81 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSansOblique9pt7b.h @@ -0,0 +1,222 @@ +#pragma once +#include + +const uint8_t FreeSansOblique9pt7bBitmaps[] PROGMEM = { + 0x10, 0x84, 0x22, 0x10, 0x84, 0x42, 0x10, 0x08, 0x00, 0xDE, 0xE5, 0x20, + 0x06, 0x40, 0x88, 0x13, 0x06, 0x43, 0xFE, 0x32, 0x04, 0x40, 0x98, 0x32, + 0x1F, 0xF0, 0x98, 0x22, 0x04, 0xC0, 0x02, 0x01, 0xF8, 0x6B, 0x99, 0x33, + 0x40, 0x68, 0x0F, 0x00, 0xF8, 0x07, 0xC1, 0x1B, 0x23, 0x64, 0x4E, 0x98, + 0xFC, 0x04, 0x00, 0x80, 0x3C, 0x08, 0xCC, 0x23, 0x18, 0x86, 0x32, 0x0C, + 0x64, 0x19, 0x90, 0x1E, 0x40, 0x01, 0x1E, 0x02, 0x66, 0x09, 0x8C, 0x23, + 0x18, 0x86, 0x62, 0x07, 0x80, 0x0F, 0x06, 0x63, 0x18, 0xC6, 0x3F, 0x07, + 0x03, 0xC1, 0xB3, 0xC7, 0xB0, 0xCC, 0x33, 0x3E, 0x79, 0x80, 0xFA, 0x04, + 0x10, 0x60, 0x83, 0x04, 0x18, 0x30, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x10, + 0x30, 0x20, 0x08, 0x18, 0x10, 0x30, 0x60, 0xC1, 0x83, 0x06, 0x18, 0x30, + 0x41, 0x82, 0x0C, 0x10, 0x40, 0x19, 0x73, 0x16, 0x48, 0x04, 0x04, 0x02, + 0x1F, 0xF0, 0x80, 0x80, 0x40, 0x20, 0x6D, 0x28, 0xF0, 0xC0, 0x01, 0x02, + 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x0F, + 0x19, 0xC8, 0x6C, 0x36, 0x1A, 0x0F, 0x05, 0x86, 0xC3, 0x61, 0xB1, 0x9C, + 0x87, 0x80, 0x08, 0xCD, 0xE3, 0x18, 0xC4, 0x23, 0x18, 0xC4, 0x00, 0x07, + 0x83, 0x1C, 0x41, 0x98, 0x30, 0x06, 0x01, 0x80, 0x60, 0x38, 0x1C, 0x06, + 0x01, 0x80, 0x20, 0x0F, 0xF8, 0x0F, 0x86, 0x73, 0x0C, 0x83, 0x00, 0xC0, + 0x60, 0xE0, 0x06, 0x01, 0xB0, 0x6C, 0x13, 0x8C, 0x7C, 0x00, 0x00, 0x80, + 0xC0, 0xE0, 0xA0, 0x90, 0x98, 0x8C, 0x86, 0xFF, 0x81, 0x01, 0x80, 0xC0, + 0x60, 0x0F, 0xC3, 0x00, 0x40, 0x08, 0x03, 0x00, 0x7F, 0x1C, 0x70, 0x06, + 0x00, 0xC0, 0x1B, 0x06, 0x71, 0x87, 0xE0, 0x0F, 0x86, 0x73, 0x0D, 0x80, + 0x60, 0x1F, 0xCF, 0x3B, 0x86, 0xC1, 0xB0, 0x6C, 0x33, 0x98, 0x3C, 0x00, + 0x7F, 0xC0, 0x20, 0x10, 0x0C, 0x06, 0x01, 0x00, 0x80, 0x60, 0x10, 0x0C, + 0x02, 0x01, 0x80, 0x40, 0x00, 0x0F, 0x86, 0x73, 0x0C, 0xC3, 0x30, 0xCC, + 0x61, 0xE1, 0x86, 0x41, 0xB0, 0x6C, 0x13, 0x8C, 0x3E, 0x00, 0x0F, 0x06, + 0x73, 0x0D, 0x83, 0x60, 0xD8, 0x77, 0x3C, 0xFE, 0x01, 0x80, 0x6C, 0x33, + 0x98, 0x7C, 0x00, 0x30, 0x00, 0x00, 0x00, 0xC0, 0x18, 0x00, 0x00, 0x00, + 0x0C, 0x62, 0x11, 0x00, 0x00, 0x01, 0xC3, 0x8F, 0x0C, 0x07, 0x00, 0xE0, + 0x1E, 0x01, 0x00, 0x7F, 0xC0, 0x00, 0x03, 0xFE, 0x40, 0x3C, 0x03, 0x80, + 0x70, 0x18, 0x78, 0xE1, 0xC0, 0x00, 0x00, 0x1F, 0x30, 0xD0, 0x78, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0xFE, + 0x00, 0xC0, 0xE0, 0xC0, 0x18, 0x61, 0xD3, 0x31, 0x9C, 0xD8, 0xC2, 0x36, + 0x31, 0x8F, 0x18, 0x67, 0xC6, 0x11, 0xB1, 0x8C, 0xCC, 0x67, 0x63, 0x0E, + 0xF0, 0x60, 0x00, 0x1C, 0x00, 0x01, 0x81, 0x00, 0x1F, 0xC0, 0x01, 0xC0, + 0x1C, 0x03, 0xC0, 0x24, 0x06, 0x60, 0x46, 0x0C, 0x61, 0x86, 0x1F, 0xE3, + 0x06, 0x20, 0x26, 0x03, 0x40, 0x30, 0x1F, 0xE1, 0x87, 0x30, 0x33, 0x03, + 0x30, 0x23, 0x06, 0x3F, 0xC6, 0x06, 0x60, 0x66, 0x06, 0x60, 0x66, 0x0C, + 0x7F, 0x80, 0x07, 0xC1, 0x86, 0x30, 0x32, 0x03, 0x60, 0x04, 0x00, 0xC0, + 0x0C, 0x00, 0xC0, 0x6C, 0x06, 0xC0, 0xC6, 0x18, 0x3E, 0x00, 0x1F, 0xE0, + 0xC1, 0x84, 0x06, 0x60, 0x33, 0x01, 0x98, 0x0C, 0x80, 0x64, 0x02, 0x60, + 0x33, 0x01, 0x98, 0x18, 0x81, 0x87, 0xF0, 0x00, 0x1F, 0xF1, 0x80, 0x10, + 0x03, 0x00, 0x30, 0x03, 0x00, 0x3F, 0xE2, 0x00, 0x60, 0x06, 0x00, 0x60, + 0x04, 0x00, 0x7F, 0xC0, 0x1F, 0xF1, 0x80, 0x10, 0x03, 0x00, 0x30, 0x03, + 0x00, 0x3F, 0xC2, 0x00, 0x60, 0x06, 0x00, 0x60, 0x04, 0x00, 0x40, 0x00, + 0x07, 0xE0, 0xE1, 0x8C, 0x06, 0xC0, 0x36, 0x00, 0x60, 0x03, 0x07, 0xF8, + 0x02, 0xC0, 0x36, 0x01, 0x98, 0x1C, 0xE1, 0xC1, 0xF2, 0x00, 0x18, 0x08, + 0xC0, 0xC4, 0x06, 0x60, 0x33, 0x01, 0x18, 0x18, 0xFF, 0xC4, 0x06, 0x60, + 0x23, 0x01, 0x18, 0x18, 0x80, 0xC4, 0x06, 0x00, 0x33, 0x32, 0x26, 0x66, + 0x44, 0xCC, 0xC0, 0x00, 0xC0, 0x60, 0x18, 0x06, 0x01, 0x80, 0x60, 0x30, + 0x0C, 0x03, 0x30, 0xCC, 0x63, 0x18, 0x7C, 0x00, 0x18, 0x18, 0x60, 0xC1, + 0x0E, 0x0C, 0x60, 0x33, 0x00, 0xD8, 0x03, 0xF0, 0x0C, 0xC0, 0x61, 0x81, + 0x86, 0x06, 0x0C, 0x10, 0x30, 0x40, 0x60, 0x18, 0x0C, 0x04, 0x06, 0x03, + 0x01, 0x80, 0xC0, 0x40, 0x60, 0x30, 0x18, 0x08, 0x07, 0xF8, 0x18, 0x06, + 0x18, 0x0E, 0x18, 0x0E, 0x34, 0x1E, 0x34, 0x36, 0x34, 0x34, 0x24, 0x64, + 0x24, 0x6C, 0x64, 0xCC, 0x64, 0x8C, 0x65, 0x88, 0x43, 0x08, 0x43, 0x18, + 0x18, 0x08, 0xE0, 0x47, 0x06, 0x6C, 0x33, 0x61, 0x99, 0x08, 0x8C, 0xC4, + 0x66, 0x61, 0xB3, 0x0D, 0x18, 0x38, 0x81, 0xC4, 0x06, 0x00, 0x07, 0xC0, + 0xC3, 0x8C, 0x0E, 0xC0, 0x36, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, + 0x36, 0x01, 0xB8, 0x18, 0xE1, 0x81, 0xF0, 0x00, 0x1F, 0xE1, 0x83, 0x10, + 0x33, 0x03, 0x30, 0x33, 0x06, 0x3F, 0xC2, 0x00, 0x60, 0x06, 0x00, 0x60, + 0x04, 0x00, 0x40, 0x00, 0x07, 0xC0, 0xC3, 0x8C, 0x0E, 0xC0, 0x36, 0x01, + 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x36, 0x09, 0xB8, 0x78, 0xE3, 0x81, + 0xF6, 0x00, 0x10, 0x1F, 0xF0, 0xC0, 0xC4, 0x06, 0x60, 0x33, 0x01, 0x18, + 0x18, 0xFF, 0x04, 0x0C, 0x60, 0x63, 0x03, 0x18, 0x18, 0x80, 0xC4, 0x06, + 0x00, 0x07, 0xC1, 0x87, 0x30, 0x33, 0x03, 0x30, 0x03, 0xC0, 0x0F, 0xC0, + 0x1E, 0x00, 0x6C, 0x06, 0xC0, 0x46, 0x0C, 0x3F, 0x00, 0xFF, 0xC3, 0x00, + 0xC0, 0x20, 0x18, 0x06, 0x01, 0x80, 0x60, 0x10, 0x0C, 0x03, 0x00, 0xC0, + 0x20, 0x00, 0x30, 0x13, 0x03, 0x20, 0x36, 0x03, 0x60, 0x26, 0x06, 0x60, + 0x64, 0x06, 0xC0, 0x6C, 0x04, 0xC0, 0xCE, 0x18, 0x3E, 0x00, 0xC0, 0x78, + 0x0B, 0x03, 0x20, 0xC4, 0x18, 0xC6, 0x18, 0x83, 0x30, 0x64, 0x0D, 0x80, + 0xA0, 0x1C, 0x03, 0x00, 0xC1, 0x83, 0xC1, 0x83, 0xC3, 0x86, 0xC2, 0x86, + 0xC6, 0x84, 0xC4, 0x8C, 0xCC, 0xC8, 0xC8, 0xD8, 0xD8, 0xD0, 0xD0, 0xF0, + 0x70, 0xE0, 0x60, 0xE0, 0x60, 0xE0, 0x0C, 0x0C, 0x30, 0x60, 0x63, 0x01, + 0x98, 0x02, 0xC0, 0x0E, 0x00, 0x38, 0x01, 0xE0, 0x0C, 0x80, 0x33, 0x01, + 0x8C, 0x0C, 0x18, 0x60, 0x60, 0xC0, 0x66, 0x0C, 0x60, 0xC2, 0x18, 0x33, + 0x03, 0x60, 0x1C, 0x01, 0x80, 0x18, 0x01, 0x80, 0x18, 0x01, 0x00, 0x30, + 0x00, 0x1F, 0xF0, 0x07, 0x00, 0xE0, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, + 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x00, 0xFF, 0xC0, 0x0E, 0x10, 0x20, + 0x41, 0x02, 0x04, 0x08, 0x20, 0x40, 0x81, 0x04, 0x08, 0x10, 0x20, 0xE0, + 0xAA, 0xA9, 0x55, 0x40, 0x0E, 0x08, 0x10, 0x20, 0x41, 0x02, 0x04, 0x08, + 0x20, 0x40, 0x81, 0x04, 0x08, 0x10, 0xE0, 0x0C, 0x18, 0x51, 0xA2, 0x4C, + 0x50, 0x80, 0xFF, 0xE0, 0xC8, 0x80, 0x0F, 0x86, 0x33, 0x0C, 0x03, 0x03, + 0xDF, 0xEE, 0x0B, 0x02, 0xC1, 0x9F, 0xE0, 0x10, 0x04, 0x01, 0x00, 0xDC, + 0x39, 0x88, 0x32, 0x0D, 0x83, 0x40, 0xD0, 0x64, 0x1B, 0x8C, 0xBC, 0x00, + 0x1F, 0x18, 0xD8, 0x6C, 0x0C, 0x06, 0x03, 0x01, 0x86, 0x66, 0x3E, 0x00, + 0x00, 0x20, 0x08, 0x01, 0x0F, 0x23, 0x14, 0xC1, 0x18, 0x26, 0x04, 0xC0, + 0x98, 0x23, 0x04, 0x71, 0x87, 0xD0, 0x0F, 0x0C, 0x76, 0x0D, 0x83, 0xFF, + 0xF0, 0x0C, 0x03, 0x06, 0x63, 0x0F, 0x80, 0x1C, 0xC2, 0x1E, 0x20, 0x84, + 0x10, 0x41, 0x04, 0x20, 0x80, 0x0F, 0x46, 0x33, 0x0C, 0xC1, 0x60, 0xD8, + 0x26, 0x09, 0x86, 0x71, 0x8F, 0xE0, 0x10, 0x04, 0xC2, 0x1F, 0x00, 0x10, + 0x04, 0x01, 0x00, 0x9F, 0x39, 0x88, 0x22, 0x09, 0x02, 0x40, 0x90, 0x44, + 0x12, 0x04, 0x81, 0x00, 0x10, 0x02, 0x22, 0x64, 0x44, 0x48, 0x80, 0x04, + 0x00, 0x01, 0x08, 0x20, 0x82, 0x08, 0x41, 0x04, 0x10, 0x42, 0x08, 0xE0, + 0x10, 0x08, 0x04, 0x04, 0x32, 0x31, 0x20, 0xA0, 0xB8, 0x6C, 0x22, 0x11, + 0x90, 0xC8, 0x30, 0x11, 0x22, 0x22, 0x64, 0x44, 0x48, 0x80, 0x2F, 0x3C, + 0x63, 0x8C, 0x86, 0x19, 0x08, 0x44, 0x10, 0x88, 0x21, 0x10, 0x82, 0x21, + 0x04, 0x82, 0x11, 0x04, 0x20, 0x00, 0x0B, 0xF3, 0x18, 0x82, 0x20, 0x90, + 0x24, 0x09, 0x04, 0x41, 0x20, 0x48, 0x10, 0x0F, 0x0C, 0x76, 0x0D, 0x83, + 0xC0, 0xF0, 0x3C, 0x1B, 0x06, 0xE3, 0x0F, 0x00, 0x17, 0xC3, 0x1C, 0x41, + 0x98, 0x32, 0x06, 0x40, 0xC8, 0x33, 0x06, 0x71, 0x8B, 0xC1, 0x00, 0x20, + 0x08, 0x01, 0x00, 0x00, 0x1E, 0xCC, 0x66, 0x09, 0x82, 0xC0, 0xB0, 0x4C, + 0x13, 0x04, 0x63, 0x0F, 0xC0, 0x20, 0x08, 0x02, 0x00, 0x80, 0x2C, 0x60, + 0x81, 0x04, 0x08, 0x10, 0x20, 0x81, 0x00, 0x1E, 0x33, 0x63, 0x60, 0x70, + 0x1E, 0x03, 0xC3, 0xC6, 0x7C, 0x22, 0xF2, 0x44, 0x44, 0xCC, 0xCE, 0x21, + 0x20, 0x90, 0x48, 0x24, 0x12, 0x13, 0x09, 0x84, 0xE6, 0x3E, 0x00, 0xC1, + 0xE1, 0xB0, 0xC8, 0xC4, 0x43, 0x61, 0xA0, 0xF0, 0x70, 0x18, 0x00, 0xC7, + 0x1E, 0x38, 0xB3, 0xCD, 0x96, 0x4C, 0xB6, 0x6D, 0xB1, 0x4D, 0x0E, 0x78, + 0x63, 0x83, 0x1C, 0x00, 0x10, 0xC3, 0x10, 0x24, 0x07, 0x80, 0xE0, 0x1C, + 0x07, 0x81, 0x90, 0x23, 0x08, 0x20, 0x30, 0x46, 0x18, 0x42, 0x08, 0xC1, + 0x10, 0x24, 0x07, 0x80, 0xE0, 0x1C, 0x03, 0x00, 0x60, 0x08, 0x03, 0x01, + 0xC0, 0x00, 0x3F, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, + 0x7F, 0x00, 0x18, 0x88, 0x42, 0x10, 0x88, 0xC3, 0x18, 0x88, 0x42, 0x18, + 0xE0, 0x11, 0x22, 0x22, 0x24, 0x44, 0x4C, 0x88, 0x88, 0x00, 0x38, 0xC2, + 0x10, 0x88, 0xC6, 0x18, 0x88, 0x42, 0x10, 0x88, 0xC0, 0x70, 0x4E, 0x41, + 0xC0}; + +const GFXglyph FreeSansOblique9pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 5, 0, 1}, // 0x20 ' ' + {0, 5, 13, 5, 2, -12}, // 0x21 '!' + {9, 5, 4, 6, 3, -12}, // 0x22 '"' + {12, 11, 13, 10, 1, -12}, // 0x23 '#' + {30, 11, 16, 10, 1, -13}, // 0x24 '$' + {52, 15, 13, 16, 2, -12}, // 0x25 '%' + {77, 10, 13, 12, 2, -12}, // 0x26 '&' + {94, 2, 4, 3, 3, -12}, // 0x27 ''' + {95, 7, 17, 6, 2, -12}, // 0x28 '(' + {110, 7, 17, 6, -1, -12}, // 0x29 ')' + {125, 6, 5, 7, 3, -12}, // 0x2A '*' + {129, 9, 8, 11, 2, -7}, // 0x2B '+' + {138, 3, 5, 5, 1, -1}, // 0x2C ',' + {140, 4, 1, 6, 2, -4}, // 0x2D '-' + {141, 2, 1, 5, 2, 0}, // 0x2E '.' + {142, 8, 13, 5, 0, -12}, // 0x2F '/' + {155, 9, 13, 10, 2, -12}, // 0x30 '0' + {170, 5, 13, 10, 4, -12}, // 0x31 '1' + {179, 11, 13, 10, 1, -12}, // 0x32 '2' + {197, 10, 13, 10, 1, -12}, // 0x33 '3' + {214, 9, 13, 10, 1, -12}, // 0x34 '4' + {229, 11, 13, 10, 1, -12}, // 0x35 '5' + {247, 10, 13, 10, 2, -12}, // 0x36 '6' + {264, 10, 13, 10, 2, -12}, // 0x37 '7' + {281, 10, 13, 10, 1, -12}, // 0x38 '8' + {298, 10, 13, 10, 1, -12}, // 0x39 '9' + {315, 4, 9, 5, 2, -8}, // 0x3A ':' + {320, 5, 12, 5, 1, -8}, // 0x3B ';' + {328, 9, 9, 11, 2, -8}, // 0x3C '<' + {339, 10, 4, 11, 1, -5}, // 0x3D '=' + {344, 9, 9, 11, 1, -7}, // 0x3E '>' + {355, 9, 13, 10, 3, -12}, // 0x3F '?' + {370, 18, 16, 18, 1, -12}, // 0x40 '@' + {406, 12, 13, 12, 0, -12}, // 0x41 'A' + {426, 12, 13, 12, 1, -12}, // 0x42 'B' + {446, 12, 13, 13, 2, -12}, // 0x43 'C' + {466, 13, 13, 13, 1, -12}, // 0x44 'D' + {488, 12, 13, 12, 1, -12}, // 0x45 'E' + {508, 12, 13, 11, 1, -12}, // 0x46 'F' + {528, 13, 13, 14, 2, -12}, // 0x47 'G' + {550, 13, 13, 13, 1, -12}, // 0x48 'H' + {572, 4, 13, 5, 2, -12}, // 0x49 'I' + {579, 10, 13, 9, 1, -12}, // 0x4A 'J' + {596, 14, 13, 12, 1, -12}, // 0x4B 'K' + {619, 9, 13, 10, 1, -12}, // 0x4C 'L' + {634, 16, 13, 15, 1, -12}, // 0x4D 'M' + {660, 13, 13, 13, 1, -12}, // 0x4E 'N' + {682, 13, 13, 14, 2, -12}, // 0x4F 'O' + {704, 12, 13, 12, 1, -12}, // 0x50 'P' + {724, 13, 14, 14, 2, -12}, // 0x51 'Q' + {747, 13, 13, 13, 1, -12}, // 0x52 'R' + {769, 12, 13, 12, 1, -12}, // 0x53 'S' + {789, 10, 13, 11, 3, -12}, // 0x54 'T' + {806, 12, 13, 13, 2, -12}, // 0x55 'U' + {826, 11, 13, 12, 3, -12}, // 0x56 'V' + {844, 16, 13, 17, 3, -12}, // 0x57 'W' + {870, 14, 13, 12, 0, -12}, // 0x58 'X' + {893, 12, 13, 12, 3, -12}, // 0x59 'Y' + {913, 12, 13, 11, 1, -12}, // 0x5A 'Z' + {933, 7, 17, 5, 0, -12}, // 0x5B '[' + {948, 2, 13, 5, 3, -12}, // 0x5C '\' + {952, 7, 17, 5, 0, -12}, // 0x5D ']' + {967, 7, 7, 8, 2, -12}, // 0x5E '^' + {974, 11, 1, 10, -1, 3}, // 0x5F '_' + {976, 3, 3, 6, 3, -12}, // 0x60 '`' + {978, 10, 10, 10, 1, -9}, // 0x61 'a' + {991, 10, 13, 10, 1, -12}, // 0x62 'b' + {1008, 9, 10, 9, 1, -9}, // 0x63 'c' + {1020, 11, 13, 10, 1, -12}, // 0x64 'd' + {1038, 10, 10, 10, 1, -9}, // 0x65 'e' + {1051, 6, 13, 5, 1, -12}, // 0x66 'f' + {1061, 10, 14, 10, 0, -9}, // 0x67 'g' + {1079, 10, 13, 10, 1, -12}, // 0x68 'h' + {1096, 4, 13, 4, 1, -12}, // 0x69 'i' + {1103, 6, 17, 4, -1, -12}, // 0x6A 'j' + {1116, 9, 13, 9, 1, -12}, // 0x6B 'k' + {1131, 4, 13, 4, 1, -12}, // 0x6C 'l' + {1138, 15, 10, 15, 1, -9}, // 0x6D 'm' + {1157, 10, 11, 10, 1, -10}, // 0x6E 'n' + {1171, 10, 10, 10, 1, -9}, // 0x6F 'o' + {1184, 11, 14, 10, 0, -9}, // 0x70 'p' + {1204, 10, 14, 10, 1, -9}, // 0x71 'q' + {1222, 7, 10, 6, 1, -9}, // 0x72 'r' + {1231, 8, 10, 9, 1, -9}, // 0x73 's' + {1241, 4, 12, 5, 2, -11}, // 0x74 't' + {1247, 9, 10, 10, 2, -9}, // 0x75 'u' + {1259, 9, 10, 9, 2, -9}, // 0x76 'v' + {1271, 13, 10, 13, 2, -9}, // 0x77 'w' + {1288, 11, 10, 9, 0, -9}, // 0x78 'x' + {1302, 11, 14, 9, 0, -9}, // 0x79 'y' + {1322, 9, 10, 9, 1, -9}, // 0x7A 'z' + {1334, 5, 17, 6, 2, -12}, // 0x7B '{' + {1345, 4, 17, 5, 1, -12}, // 0x7C '|' + {1354, 5, 17, 6, 0, -12}, // 0x7D '}' + {1365, 9, 3, 11, 2, -7}}; // 0x7E '~' + +const GFXfont FreeSansOblique9pt7b PROGMEM = { + (uint8_t *)FreeSansOblique9pt7bBitmaps, + (GFXglyph *)FreeSansOblique9pt7bGlyphs, 0x20, 0x7E, 22}; + +// Approx. 2041 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerif12pt7b.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerif12pt7b.h new file mode 100644 index 0000000..22cb53d --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerif12pt7b.h @@ -0,0 +1,261 @@ +#pragma once +#include + +const uint8_t FreeSerif12pt7bBitmaps[] PROGMEM = { + 0xFF, 0xFE, 0xA8, 0x3F, 0xCF, 0x3C, 0xF3, 0x8A, 0x20, 0x0C, 0x40, 0xC4, + 0x08, 0x40, 0x8C, 0x08, 0xC7, 0xFF, 0x18, 0x81, 0x88, 0x10, 0x81, 0x08, + 0xFF, 0xE1, 0x18, 0x31, 0x03, 0x10, 0x31, 0x02, 0x10, 0x04, 0x07, 0xC6, + 0x5B, 0x12, 0xC4, 0xB1, 0x0F, 0x41, 0xF0, 0x1E, 0x01, 0xE0, 0x58, 0x13, + 0x84, 0xE1, 0x3C, 0x4F, 0x96, 0x3F, 0x01, 0x00, 0x00, 0x04, 0x03, 0x83, + 0x03, 0x9F, 0x81, 0xC2, 0x20, 0x60, 0x90, 0x38, 0x24, 0x0C, 0x12, 0x03, + 0x0D, 0x00, 0xC6, 0x47, 0x9E, 0x23, 0x10, 0x09, 0x84, 0x04, 0xE1, 0x03, + 0x30, 0x40, 0x8C, 0x20, 0x43, 0x08, 0x10, 0xC4, 0x08, 0x1E, 0x00, 0x03, + 0xC0, 0x02, 0x30, 0x03, 0x08, 0x01, 0x84, 0x00, 0xC4, 0x00, 0x7C, 0xF8, + 0x1C, 0x38, 0x1E, 0x08, 0x33, 0x0C, 0x31, 0xC4, 0x10, 0x74, 0x18, 0x3A, + 0x0C, 0x0E, 0x07, 0x03, 0x83, 0xC3, 0xE2, 0x7E, 0x3E, 0xFF, 0xA0, 0x04, + 0x21, 0x08, 0x61, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC1, 0x04, 0x18, 0x20, + 0x40, 0x81, 0x81, 0x02, 0x04, 0x18, 0x20, 0x83, 0x0C, 0x30, 0xC3, 0x0C, + 0x30, 0x86, 0x10, 0x84, 0x20, 0x30, 0xB3, 0xD7, 0x54, 0x38, 0x7C, 0xD3, + 0x30, 0x30, 0x10, 0x04, 0x00, 0x80, 0x10, 0x02, 0x00, 0x41, 0xFF, 0xC1, + 0x00, 0x20, 0x04, 0x00, 0x80, 0x10, 0x00, 0xDF, 0x95, 0x00, 0xFC, 0xFC, + 0x06, 0x0C, 0x10, 0x60, 0xC1, 0x06, 0x0C, 0x10, 0x60, 0xC1, 0x06, 0x0C, + 0x10, 0x60, 0xC0, 0x1E, 0x0C, 0xC6, 0x19, 0x86, 0xC0, 0xB0, 0x3C, 0x0F, + 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xD8, 0x66, 0x18, 0xCC, 0x1E, + 0x00, 0x11, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, + 0x0C, 0xFC, 0x1E, 0x18, 0xC4, 0x1A, 0x06, 0x01, 0x80, 0x60, 0x10, 0x0C, + 0x02, 0x01, 0x00, 0xC0, 0x60, 0x30, 0x18, 0x1F, 0xF8, 0x1E, 0x18, 0xE8, + 0x18, 0x06, 0x01, 0x00, 0x80, 0xF0, 0x7E, 0x03, 0xC0, 0x70, 0x0C, 0x03, + 0x00, 0xC0, 0x6E, 0x11, 0xF8, 0x01, 0x00, 0xC0, 0x70, 0x2C, 0x0B, 0x04, + 0xC2, 0x30, 0x8C, 0x43, 0x20, 0xC8, 0x33, 0xFF, 0x03, 0x00, 0xC0, 0x30, + 0x0C, 0x00, 0x03, 0xF1, 0x00, 0x40, 0x18, 0x0F, 0x80, 0xF8, 0x0E, 0x01, + 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x20, 0x1B, 0x8C, 0x7C, 0x00, 0x01, + 0xC3, 0xC1, 0xC0, 0xC0, 0x70, 0x18, 0x0E, 0xF3, 0xCE, 0xC1, 0xF0, 0x3C, + 0x0F, 0x03, 0xC0, 0xD8, 0x36, 0x08, 0xC6, 0x1E, 0x00, 0x3F, 0xD0, 0x38, + 0x08, 0x06, 0x01, 0x80, 0x40, 0x10, 0x0C, 0x02, 0x00, 0x80, 0x20, 0x10, + 0x04, 0x01, 0x00, 0x80, 0x20, 0x1F, 0x18, 0x6C, 0x0F, 0x03, 0xC0, 0xF8, + 0x67, 0x30, 0xF0, 0x1E, 0x09, 0xE6, 0x3B, 0x07, 0xC0, 0xF0, 0x3C, 0x0D, + 0x86, 0x1F, 0x00, 0x1E, 0x08, 0xC6, 0x1B, 0x02, 0xC0, 0xF0, 0x3C, 0x0F, + 0x03, 0xE0, 0xDC, 0x73, 0xEC, 0x06, 0x01, 0x80, 0xC0, 0x70, 0x38, 0x38, + 0x18, 0x00, 0xFC, 0x00, 0x3F, 0xCC, 0xC0, 0x00, 0x00, 0x06, 0x77, 0x12, + 0x40, 0x00, 0x00, 0x07, 0x01, 0xE0, 0x78, 0x1E, 0x07, 0x00, 0xC0, 0x0F, + 0x00, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x07, 0x00, 0x10, 0xFF, 0xF0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x0E, 0x00, 0x3C, 0x00, 0xF0, + 0x03, 0xC0, 0x0F, 0x00, 0x30, 0x0E, 0x07, 0x81, 0xE0, 0x78, 0x0E, 0x00, + 0x00, 0x00, 0x7C, 0x86, 0x83, 0xC3, 0x03, 0x03, 0x06, 0x0C, 0x08, 0x08, + 0x10, 0x10, 0x00, 0x00, 0x30, 0x30, 0x30, 0x03, 0xF0, 0x06, 0x06, 0x06, + 0x00, 0x86, 0x00, 0x26, 0x0E, 0xD3, 0x0C, 0xC7, 0x0C, 0x63, 0x84, 0x31, + 0xC6, 0x18, 0xE3, 0x08, 0x71, 0x8C, 0x4C, 0xC6, 0x46, 0x3D, 0xC1, 0x80, + 0x00, 0x30, 0x10, 0x07, 0xF0, 0x00, 0x80, 0x00, 0x60, 0x00, 0x70, 0x00, + 0x38, 0x00, 0x2E, 0x00, 0x13, 0x00, 0x19, 0xC0, 0x08, 0x60, 0x04, 0x38, + 0x04, 0x0C, 0x03, 0xFF, 0x03, 0x03, 0x81, 0x00, 0xE1, 0x80, 0x70, 0xC0, + 0x3D, 0xF0, 0x3F, 0xFF, 0x83, 0x0C, 0x30, 0x63, 0x06, 0x30, 0x63, 0x06, + 0x30, 0xC3, 0xF0, 0x30, 0xE3, 0x06, 0x30, 0x33, 0x03, 0x30, 0x33, 0x07, + 0x30, 0xEF, 0xFC, 0x07, 0xE2, 0x38, 0x3C, 0xC0, 0x3B, 0x00, 0x36, 0x00, + 0x38, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, 0x03, + 0x00, 0x06, 0x00, 0x06, 0x00, 0x47, 0x03, 0x03, 0xF8, 0xFF, 0xC0, 0x30, + 0x78, 0x30, 0x1C, 0x30, 0x0E, 0x30, 0x06, 0x30, 0x03, 0x30, 0x03, 0x30, + 0x03, 0x30, 0x03, 0x30, 0x03, 0x30, 0x03, 0x30, 0x06, 0x30, 0x06, 0x30, + 0x0C, 0x30, 0x78, 0xFF, 0xC0, 0xFF, 0xFC, 0xC0, 0x33, 0x00, 0x4C, 0x00, + 0x30, 0x00, 0xC0, 0x43, 0x03, 0x0F, 0xFC, 0x30, 0x30, 0xC0, 0x43, 0x00, + 0x0C, 0x00, 0x30, 0x08, 0xC0, 0x23, 0x03, 0xBF, 0xFE, 0xFF, 0xFC, 0xC0, + 0x33, 0x00, 0x4C, 0x00, 0x30, 0x00, 0xC0, 0x43, 0x03, 0x0F, 0xFC, 0x30, + 0x30, 0xC0, 0x43, 0x00, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x03, 0x00, 0x3F, + 0x00, 0x07, 0xE4, 0x1C, 0x3C, 0x30, 0x0C, 0x60, 0x0C, 0x60, 0x04, 0xC0, + 0x00, 0xC0, 0x00, 0xC0, 0x3F, 0xC0, 0x0C, 0xC0, 0x0C, 0xC0, 0x0C, 0x60, + 0x0C, 0x60, 0x0C, 0x30, 0x0C, 0x1C, 0x1C, 0x07, 0xE0, 0xFC, 0x3F, 0x30, + 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x3F, + 0xFC, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30, + 0x0C, 0x30, 0x0C, 0xFC, 0x3F, 0xFC, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, + 0xC3, 0x0C, 0x30, 0xC3, 0x3F, 0x3F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, + 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0xC8, 0xF0, 0xFC, 0xFE, 0x30, + 0x38, 0x30, 0x20, 0x30, 0x40, 0x30, 0x80, 0x33, 0x00, 0x36, 0x00, 0x3E, + 0x00, 0x37, 0x00, 0x33, 0x80, 0x31, 0xC0, 0x30, 0xE0, 0x30, 0x70, 0x30, + 0x38, 0x30, 0x3C, 0xFC, 0x7F, 0xFC, 0x00, 0x60, 0x00, 0xC0, 0x01, 0x80, + 0x03, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, + 0xC0, 0x01, 0x80, 0x03, 0x00, 0x26, 0x00, 0x8C, 0x07, 0x7F, 0xFE, 0xF8, + 0x01, 0xE7, 0x00, 0x70, 0xE0, 0x0E, 0x1E, 0x03, 0xC2, 0xC0, 0x58, 0x5C, + 0x1B, 0x09, 0x82, 0x61, 0x38, 0x4C, 0x27, 0x11, 0x84, 0x72, 0x30, 0x8E, + 0xC6, 0x10, 0xD0, 0xC2, 0x1E, 0x18, 0x41, 0x83, 0x1C, 0x30, 0x67, 0xC4, + 0x3F, 0xF0, 0x1F, 0x78, 0x0E, 0x3C, 0x04, 0x3E, 0x04, 0x2E, 0x04, 0x27, + 0x04, 0x23, 0x84, 0x23, 0xC4, 0x21, 0xE4, 0x20, 0xE4, 0x20, 0x74, 0x20, + 0x3C, 0x20, 0x1C, 0x20, 0x0C, 0x70, 0x0C, 0xF8, 0x04, 0x07, 0xC0, 0x30, + 0x60, 0xC0, 0x63, 0x00, 0x66, 0x00, 0xD8, 0x00, 0xF0, 0x01, 0xE0, 0x03, + 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1B, 0x00, 0x66, 0x00, 0xC6, 0x03, 0x06, + 0x0C, 0x03, 0xE0, 0xFF, 0x83, 0x0E, 0x30, 0x73, 0x03, 0x30, 0x33, 0x03, + 0x30, 0x63, 0x0E, 0x3F, 0x83, 0x00, 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, + 0x30, 0x0F, 0xC0, 0x0F, 0xE0, 0x18, 0x30, 0x30, 0x18, 0x60, 0x0C, 0x60, + 0x0C, 0xC0, 0x06, 0xC0, 0x06, 0xC0, 0x06, 0xC0, 0x06, 0xC0, 0x06, 0xC0, + 0x06, 0x60, 0x0C, 0x60, 0x0C, 0x30, 0x18, 0x18, 0x30, 0x07, 0xC0, 0x03, + 0xC0, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1F, 0xFF, 0x80, 0x61, 0xC0, 0xC1, + 0xC1, 0x81, 0x83, 0x03, 0x06, 0x06, 0x0C, 0x1C, 0x18, 0x70, 0x3F, 0x80, + 0x67, 0x00, 0xC7, 0x01, 0x8F, 0x03, 0x0F, 0x06, 0x0E, 0x0C, 0x0E, 0x7E, + 0x0F, 0x1F, 0x46, 0x19, 0x81, 0x30, 0x27, 0x02, 0xF0, 0x0F, 0x00, 0xF8, + 0x07, 0xC0, 0x38, 0x03, 0xC0, 0x34, 0x06, 0x80, 0xDC, 0x32, 0x7C, 0xFF, + 0xFF, 0x86, 0x0E, 0x0C, 0x1C, 0x18, 0x10, 0x30, 0x00, 0x60, 0x00, 0xC0, + 0x01, 0x80, 0x03, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, + 0x60, 0x00, 0xC0, 0x07, 0xE0, 0xFC, 0x1F, 0x30, 0x0E, 0x30, 0x04, 0x30, + 0x04, 0x30, 0x04, 0x30, 0x04, 0x30, 0x04, 0x30, 0x04, 0x30, 0x04, 0x30, + 0x04, 0x30, 0x04, 0x30, 0x04, 0x30, 0x04, 0x18, 0x08, 0x1C, 0x18, 0x07, + 0xE0, 0xFE, 0x0F, 0x9C, 0x03, 0x0E, 0x01, 0x83, 0x00, 0x81, 0xC0, 0x40, + 0x60, 0x40, 0x38, 0x20, 0x0C, 0x30, 0x07, 0x10, 0x01, 0x98, 0x00, 0xE8, + 0x00, 0x34, 0x00, 0x1E, 0x00, 0x06, 0x00, 0x03, 0x00, 0x01, 0x00, 0xFC, + 0xFC, 0x3D, 0xE1, 0xC0, 0x63, 0x83, 0x01, 0x86, 0x0E, 0x04, 0x1C, 0x18, + 0x10, 0x70, 0x70, 0x80, 0xC3, 0xC2, 0x03, 0x8B, 0x08, 0x06, 0x6E, 0x40, + 0x1D, 0x19, 0x00, 0x74, 0x78, 0x00, 0xE1, 0xE0, 0x03, 0x83, 0x80, 0x0E, + 0x0C, 0x00, 0x10, 0x10, 0x00, 0x40, 0x40, 0x7F, 0x1F, 0x9E, 0x03, 0x07, + 0x03, 0x01, 0xC3, 0x00, 0x71, 0x00, 0x19, 0x00, 0x0F, 0x00, 0x03, 0x80, + 0x01, 0xE0, 0x01, 0xB0, 0x01, 0x9C, 0x00, 0x87, 0x00, 0x81, 0xC0, 0x80, + 0xE0, 0xC0, 0x79, 0xF8, 0x7F, 0xFE, 0x1F, 0x78, 0x0C, 0x38, 0x08, 0x1C, + 0x18, 0x0E, 0x10, 0x06, 0x20, 0x07, 0x60, 0x03, 0xC0, 0x01, 0x80, 0x01, + 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x07, + 0xE0, 0x7F, 0xFB, 0x00, 0xC8, 0x07, 0x20, 0x38, 0x01, 0xC0, 0x07, 0x00, + 0x38, 0x01, 0xC0, 0x07, 0x00, 0x38, 0x01, 0xC0, 0x0E, 0x00, 0x38, 0x05, + 0xC0, 0x3E, 0x01, 0xBF, 0xFE, 0xFE, 0x31, 0x8C, 0x63, 0x18, 0xC6, 0x31, + 0x8C, 0x63, 0x18, 0xC6, 0x31, 0xF0, 0xC1, 0x81, 0x03, 0x06, 0x04, 0x0C, + 0x18, 0x10, 0x30, 0x60, 0x40, 0xC1, 0x81, 0x03, 0x06, 0xF8, 0xC6, 0x31, + 0x8C, 0x63, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0xC7, 0xF0, 0x0C, 0x07, + 0x01, 0x60, 0xD8, 0x23, 0x18, 0xC4, 0x1B, 0x06, 0x80, 0xC0, 0xFF, 0xF0, + 0xC7, 0x0C, 0x30, 0x3E, 0x31, 0x8C, 0x30, 0x0C, 0x03, 0x07, 0xC6, 0x33, + 0x0C, 0xC3, 0x31, 0xC7, 0xB8, 0x20, 0x38, 0x06, 0x01, 0x80, 0x60, 0x18, + 0x06, 0xF1, 0xC6, 0x61, 0xD8, 0x36, 0x0D, 0x83, 0x60, 0xD8, 0x26, 0x19, + 0x84, 0x3E, 0x00, 0x1E, 0x23, 0x63, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE1, + 0x72, 0x3C, 0x00, 0x80, 0xE0, 0x18, 0x06, 0x01, 0x80, 0x61, 0xD8, 0x8E, + 0x61, 0xB0, 0x6C, 0x1B, 0x06, 0xC1, 0xB0, 0x6E, 0x19, 0xCE, 0x3D, 0xC0, + 0x1E, 0x08, 0xE4, 0x1B, 0xFE, 0xC0, 0x30, 0x0C, 0x03, 0x81, 0x60, 0x9C, + 0x41, 0xE0, 0x0F, 0x08, 0xC4, 0x06, 0x03, 0x01, 0x81, 0xF0, 0x60, 0x30, + 0x18, 0x0C, 0x06, 0x03, 0x01, 0x80, 0xC0, 0x60, 0xFC, 0x00, 0x1F, 0x03, + 0x1F, 0x60, 0xC6, 0x0C, 0x60, 0xC3, 0x18, 0x1F, 0x02, 0x00, 0x40, 0x07, + 0xFC, 0x40, 0x24, 0x02, 0xC0, 0x2C, 0x04, 0xE0, 0x83, 0xF0, 0x30, 0x1E, + 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0D, 0xE1, 0xCE, 0x30, 0xC6, 0x18, + 0xC3, 0x18, 0x63, 0x0C, 0x61, 0x8C, 0x31, 0x86, 0x79, 0xE0, 0x31, 0x80, + 0x00, 0x09, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0xDF, 0x0C, 0x30, 0x00, 0x00, + 0x31, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xF2, 0xF0, + 0x20, 0x1C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0xFB, 0x08, 0x62, + 0x0C, 0x81, 0xE0, 0x3E, 0x06, 0xE0, 0xCE, 0x18, 0xC3, 0x0E, 0xF3, 0xE0, + 0x13, 0x8C, 0x63, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0xC6, 0xF8, 0xF7, + 0x8F, 0x0E, 0x3C, 0xE3, 0x0C, 0x18, 0xC3, 0x06, 0x30, 0xC1, 0x8C, 0x30, + 0x63, 0x0C, 0x18, 0xC3, 0x06, 0x30, 0xC1, 0x8C, 0x30, 0x67, 0x9E, 0x3C, + 0xF7, 0x87, 0x18, 0xC3, 0x18, 0x63, 0x0C, 0x61, 0x8C, 0x31, 0x86, 0x30, + 0xC6, 0x19, 0xE7, 0x80, 0x1E, 0x18, 0xE4, 0x1B, 0x03, 0xC0, 0xF0, 0x3C, + 0x0F, 0x03, 0x60, 0x9C, 0x41, 0xE0, 0x77, 0x87, 0x18, 0xC3, 0x98, 0x33, + 0x06, 0x60, 0xCC, 0x19, 0x83, 0x30, 0xC7, 0x10, 0xDC, 0x18, 0x03, 0x00, + 0x60, 0x0C, 0x07, 0xE0, 0x1E, 0x8C, 0xE6, 0x1B, 0x06, 0xC1, 0xB0, 0x6C, + 0x1B, 0x06, 0xE1, 0x98, 0xE3, 0xD8, 0x06, 0x01, 0x80, 0x60, 0x18, 0x1F, + 0x37, 0x7B, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x7C, 0x7B, + 0x0E, 0x1C, 0x1E, 0x0F, 0x07, 0xC3, 0x87, 0x8A, 0xE0, 0x21, 0x8F, 0x98, + 0x61, 0x86, 0x18, 0x61, 0x86, 0x19, 0x38, 0xE3, 0x98, 0x66, 0x19, 0x86, + 0x61, 0x98, 0x66, 0x19, 0x86, 0x61, 0x9C, 0xE3, 0xDC, 0xF8, 0xEE, 0x08, + 0xC1, 0x18, 0x41, 0x88, 0x32, 0x03, 0x40, 0x68, 0x06, 0x00, 0xC0, 0x10, + 0x00, 0xF3, 0xE7, 0x61, 0x83, 0x70, 0xC2, 0x30, 0xC2, 0x30, 0xC4, 0x19, + 0x64, 0x19, 0x68, 0x0E, 0x38, 0x0E, 0x38, 0x0C, 0x30, 0x04, 0x10, 0xFB, + 0xC6, 0x30, 0x64, 0x0F, 0x00, 0xC0, 0x0C, 0x03, 0xC0, 0x98, 0x21, 0x8C, + 0x3B, 0xCF, 0x80, 0xF8, 0xEE, 0x08, 0xC1, 0x18, 0x41, 0x88, 0x31, 0x03, + 0x40, 0x68, 0x06, 0x00, 0xC0, 0x08, 0x02, 0x00, 0x40, 0x10, 0x1E, 0x03, + 0x80, 0x7F, 0x90, 0xE0, 0x30, 0x18, 0x0E, 0x03, 0x01, 0xC0, 0xE0, 0x30, + 0x5C, 0x3F, 0xF8, 0x19, 0x8C, 0x63, 0x18, 0xC6, 0x31, 0xB0, 0x63, 0x18, + 0xC6, 0x31, 0x8C, 0x61, 0x80, 0xFF, 0xFF, 0x80, 0xC3, 0x18, 0xC6, 0x31, + 0x8C, 0x63, 0x06, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0xCC, 0x00, 0x38, 0x06, + 0x62, 0x41, 0xC0}; + +const GFXglyph FreeSerif12pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 6, 0, 1}, // 0x20 ' ' + {0, 2, 16, 8, 3, -15}, // 0x21 '!' + {4, 6, 6, 10, 1, -15}, // 0x22 '"' + {9, 12, 16, 12, 0, -15}, // 0x23 '#' + {33, 10, 18, 12, 1, -16}, // 0x24 '$' + {56, 18, 17, 20, 1, -16}, // 0x25 '%' + {95, 17, 16, 19, 1, -15}, // 0x26 '&' + {129, 2, 6, 5, 1, -15}, // 0x27 ''' + {131, 6, 20, 8, 1, -15}, // 0x28 '(' + {146, 6, 20, 8, 1, -15}, // 0x29 ')' + {161, 8, 10, 12, 3, -14}, // 0x2A '*' + {171, 11, 11, 14, 1, -10}, // 0x2B '+' + {187, 3, 6, 6, 2, -2}, // 0x2C ',' + {190, 6, 1, 8, 1, -5}, // 0x2D '-' + {191, 2, 3, 6, 2, -2}, // 0x2E '.' + {192, 7, 17, 7, 0, -16}, // 0x2F '/' + {207, 10, 17, 12, 1, -16}, // 0x30 '0' + {229, 6, 17, 12, 3, -16}, // 0x31 '1' + {242, 10, 15, 12, 1, -14}, // 0x32 '2' + {261, 10, 16, 12, 1, -15}, // 0x33 '3' + {281, 10, 16, 12, 1, -15}, // 0x34 '4' + {301, 10, 17, 12, 1, -16}, // 0x35 '5' + {323, 10, 17, 12, 1, -16}, // 0x36 '6' + {345, 10, 16, 12, 0, -15}, // 0x37 '7' + {365, 10, 17, 12, 1, -16}, // 0x38 '8' + {387, 10, 18, 12, 1, -16}, // 0x39 '9' + {410, 2, 12, 6, 2, -11}, // 0x3A ':' + {413, 4, 15, 6, 2, -11}, // 0x3B ';' + {421, 12, 13, 14, 1, -12}, // 0x3C '<' + {441, 12, 6, 14, 1, -8}, // 0x3D '=' + {450, 12, 13, 14, 1, -11}, // 0x3E '>' + {470, 8, 17, 11, 2, -16}, // 0x3F '?' + {487, 17, 16, 21, 2, -15}, // 0x40 '@' + {521, 17, 16, 17, 0, -15}, // 0x41 'A' + {555, 12, 16, 15, 1, -15}, // 0x42 'B' + {579, 15, 16, 16, 1, -15}, // 0x43 'C' + {609, 16, 16, 17, 0, -15}, // 0x44 'D' + {641, 14, 16, 15, 0, -15}, // 0x45 'E' + {669, 14, 16, 14, 0, -15}, // 0x46 'F' + {697, 16, 16, 17, 1, -15}, // 0x47 'G' + {729, 16, 16, 17, 0, -15}, // 0x48 'H' + {761, 6, 16, 8, 1, -15}, // 0x49 'I' + {773, 8, 16, 9, 0, -15}, // 0x4A 'J' + {789, 16, 16, 17, 1, -15}, // 0x4B 'K' + {821, 15, 16, 15, 0, -15}, // 0x4C 'L' + {851, 19, 16, 21, 1, -15}, // 0x4D 'M' + {889, 16, 16, 17, 1, -15}, // 0x4E 'N' + {921, 15, 16, 17, 1, -15}, // 0x4F 'O' + {951, 12, 16, 14, 0, -15}, // 0x50 'P' + {975, 16, 20, 17, 1, -15}, // 0x51 'Q' + {1015, 15, 16, 16, 0, -15}, // 0x52 'R' + {1045, 11, 16, 13, 0, -15}, // 0x53 'S' + {1067, 15, 16, 15, 0, -15}, // 0x54 'T' + {1097, 16, 16, 17, 1, -15}, // 0x55 'U' + {1129, 17, 16, 17, 0, -15}, // 0x56 'V' + {1163, 22, 16, 23, 0, -15}, // 0x57 'W' + {1207, 17, 16, 17, 0, -15}, // 0x58 'X' + {1241, 16, 16, 17, 0, -15}, // 0x59 'Y' + {1273, 14, 16, 15, 1, -15}, // 0x5A 'Z' + {1301, 5, 20, 8, 2, -15}, // 0x5B '[' + {1314, 7, 17, 7, 0, -16}, // 0x5C '\' + {1329, 5, 20, 8, 1, -15}, // 0x5D ']' + {1342, 10, 9, 11, 1, -15}, // 0x5E '^' + {1354, 12, 1, 12, 0, 3}, // 0x5F '_' + {1356, 5, 4, 6, 0, -15}, // 0x60 '`' + {1359, 10, 11, 10, 1, -10}, // 0x61 'a' + {1373, 10, 17, 12, 1, -16}, // 0x62 'b' + {1395, 8, 11, 11, 1, -10}, // 0x63 'c' + {1406, 10, 17, 12, 1, -16}, // 0x64 'd' + {1428, 10, 11, 11, 1, -10}, // 0x65 'e' + {1442, 9, 17, 9, 0, -16}, // 0x66 'f' + {1462, 12, 16, 11, 0, -10}, // 0x67 'g' + {1486, 11, 17, 12, 0, -16}, // 0x68 'h' + {1510, 5, 16, 7, 0, -15}, // 0x69 'i' + {1520, 6, 21, 8, 0, -15}, // 0x6A 'j' + {1536, 11, 17, 12, 1, -16}, // 0x6B 'k' + {1560, 5, 17, 6, 0, -16}, // 0x6C 'l' + {1571, 18, 11, 19, 0, -10}, // 0x6D 'm' + {1596, 11, 11, 12, 0, -10}, // 0x6E 'n' + {1612, 10, 11, 12, 1, -10}, // 0x6F 'o' + {1626, 11, 16, 12, 0, -10}, // 0x70 'p' + {1648, 10, 16, 12, 1, -10}, // 0x71 'q' + {1668, 8, 11, 8, 0, -10}, // 0x72 'r' + {1679, 7, 11, 9, 1, -10}, // 0x73 's' + {1689, 6, 13, 7, 1, -12}, // 0x74 't' + {1699, 10, 11, 12, 1, -10}, // 0x75 'u' + {1713, 11, 11, 11, 0, -10}, // 0x76 'v' + {1729, 16, 11, 16, 0, -10}, // 0x77 'w' + {1751, 11, 11, 12, 0, -10}, // 0x78 'x' + {1767, 11, 16, 11, 0, -10}, // 0x79 'y' + {1789, 10, 11, 10, 0, -10}, // 0x7A 'z' + {1803, 5, 21, 12, 2, -16}, // 0x7B '{' + {1817, 1, 17, 5, 2, -16}, // 0x7C '|' + {1820, 5, 21, 12, 5, -15}, // 0x7D '}' + {1834, 12, 3, 12, 0, -6}}; // 0x7E '~' + +const GFXfont FreeSerif12pt7b PROGMEM = {(uint8_t *)FreeSerif12pt7bBitmaps, + (GFXglyph *)FreeSerif12pt7bGlyphs, + 0x20, 0x7E, 29}; + +// Approx. 2511 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerif18pt7b.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerif18pt7b.h new file mode 100644 index 0000000..3fd1ba5 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerif18pt7b.h @@ -0,0 +1,431 @@ +#pragma once +#include + +const uint8_t FreeSerif18pt7bBitmaps[] PROGMEM = { + 0x6F, 0xFF, 0xFF, 0xFE, 0x66, 0x66, 0x66, 0x64, 0x40, 0x00, 0x6F, 0xF6, + 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0x46, 0x42, 0x42, 0x42, 0x03, 0x06, 0x01, + 0x83, 0x00, 0xC1, 0x80, 0x61, 0xC0, 0x30, 0xC0, 0x38, 0x60, 0x18, 0x30, + 0xFF, 0xFF, 0x7F, 0xFF, 0x83, 0x06, 0x01, 0x86, 0x00, 0xC3, 0x00, 0xC1, + 0x87, 0xFF, 0xFF, 0xFF, 0xFE, 0x18, 0x30, 0x0C, 0x18, 0x06, 0x18, 0x06, + 0x0C, 0x03, 0x06, 0x01, 0x83, 0x00, 0xC1, 0x80, 0x60, 0xC0, 0x02, 0x00, + 0x10, 0x03, 0xE0, 0x64, 0xE6, 0x23, 0x61, 0x1B, 0x08, 0x58, 0x42, 0xE2, + 0x03, 0x90, 0x1F, 0x80, 0x7E, 0x00, 0xFC, 0x01, 0xF0, 0x0F, 0xC0, 0x4E, + 0x02, 0x38, 0x10, 0xE0, 0x87, 0x04, 0x3C, 0x21, 0xE1, 0x1B, 0xC9, 0xCF, + 0xFC, 0x1F, 0x80, 0x10, 0x00, 0x80, 0x07, 0x80, 0x20, 0x0F, 0xF0, 0x70, + 0x0F, 0x07, 0xD0, 0x0F, 0x02, 0x18, 0x07, 0x01, 0x18, 0x07, 0x00, 0x8C, + 0x03, 0x80, 0x4C, 0x01, 0x80, 0x44, 0x00, 0xC0, 0x26, 0x00, 0x60, 0x22, + 0x0F, 0x30, 0x33, 0x1F, 0xCC, 0x73, 0x1E, 0x37, 0xF1, 0x8E, 0x19, 0xE1, + 0x8E, 0x04, 0x00, 0x86, 0x02, 0x00, 0xC7, 0x01, 0x00, 0xC3, 0x80, 0x80, + 0x61, 0x80, 0x80, 0x60, 0xC0, 0x40, 0x30, 0x60, 0x40, 0x30, 0x38, 0xE0, + 0x30, 0x0F, 0xE0, 0x18, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x00, 0x7E, 0x00, + 0x00, 0x61, 0x80, 0x00, 0x60, 0x60, 0x00, 0x30, 0x30, 0x00, 0x18, 0x18, + 0x00, 0x0C, 0x0C, 0x00, 0x06, 0x0C, 0x00, 0x03, 0x8E, 0x00, 0x01, 0xCE, + 0x00, 0x00, 0x7C, 0x3F, 0xC0, 0x38, 0x07, 0x80, 0x3E, 0x03, 0x80, 0x77, + 0x01, 0x80, 0x73, 0xC0, 0x80, 0xF0, 0xF0, 0xC0, 0x70, 0x7C, 0xC0, 0x78, + 0x1E, 0x40, 0x3C, 0x07, 0xC0, 0x1E, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x0F, + 0xC0, 0xFF, 0x0D, 0xF0, 0xC7, 0xFC, 0x7F, 0xC1, 0xFC, 0x1F, 0x80, 0x3C, + 0x00, 0xFF, 0xFE, 0x92, 0x40, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0xC0, + 0xC0, 0x60, 0x70, 0x30, 0x18, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, + 0x70, 0x38, 0x0C, 0x06, 0x03, 0x80, 0xC0, 0x60, 0x18, 0x0C, 0x03, 0x00, + 0xC0, 0x30, 0x0C, 0x80, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x60, 0x18, 0x0C, + 0x07, 0x01, 0x80, 0xC0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, + 0xE0, 0x60, 0x30, 0x38, 0x18, 0x0C, 0x0C, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x00, 0x0C, 0x00, 0xC0, 0x0C, 0x0C, 0x46, 0xE4, 0xF7, 0x5E, 0x1F, 0x00, + 0xC0, 0x17, 0x8E, 0x4E, 0xE4, 0xFC, 0xC6, 0x0C, 0x00, 0xC0, 0x01, 0x80, + 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, + 0x01, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, + 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x6F, 0xFF, + 0x11, 0x24, 0x80, 0xFF, 0xFF, 0x6F, 0xF6, 0x00, 0xC0, 0x60, 0x18, 0x06, + 0x03, 0x80, 0xC0, 0x30, 0x1C, 0x06, 0x01, 0x80, 0xE0, 0x30, 0x0C, 0x07, + 0x01, 0x80, 0x60, 0x38, 0x0C, 0x03, 0x01, 0xC0, 0x60, 0x18, 0x0E, 0x03, + 0x00, 0x03, 0xE0, 0x0E, 0x70, 0x1C, 0x38, 0x38, 0x1C, 0x38, 0x1C, 0x78, + 0x1E, 0x70, 0x0E, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, + 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0x70, 0x0E, 0x70, + 0x0E, 0x78, 0x1E, 0x38, 0x1C, 0x38, 0x1C, 0x1C, 0x38, 0x0C, 0x30, 0x03, + 0xC0, 0x06, 0x03, 0x83, 0xE3, 0x38, 0x0E, 0x03, 0x80, 0xE0, 0x38, 0x0E, + 0x03, 0x80, 0xE0, 0x38, 0x0E, 0x03, 0x80, 0xE0, 0x38, 0x0E, 0x03, 0x80, + 0xE0, 0x38, 0x0E, 0x03, 0x81, 0xE1, 0xFF, 0x07, 0xC0, 0x1F, 0xF0, 0x3F, + 0xF8, 0x70, 0xF8, 0x60, 0x3C, 0xC0, 0x3C, 0x80, 0x1C, 0x00, 0x1C, 0x00, + 0x1C, 0x00, 0x18, 0x00, 0x18, 0x00, 0x30, 0x00, 0x30, 0x00, 0x60, 0x00, + 0xC0, 0x00, 0x80, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x01, 0x10, + 0x02, 0x3F, 0xFE, 0x7F, 0xFC, 0xFF, 0xFC, 0x0F, 0xC0, 0xFF, 0x0C, 0x3C, + 0x80, 0xE4, 0x03, 0x00, 0x18, 0x00, 0xC0, 0x04, 0x00, 0x40, 0x04, 0x00, + 0xF8, 0x1F, 0xE0, 0x0F, 0x00, 0x1C, 0x00, 0xE0, 0x03, 0x00, 0x18, 0x00, + 0xC0, 0x06, 0x00, 0x60, 0x03, 0x78, 0x73, 0xFF, 0x0F, 0xC0, 0x00, 0x30, + 0x00, 0x30, 0x00, 0x70, 0x00, 0xF0, 0x00, 0xB0, 0x01, 0x30, 0x03, 0x30, + 0x06, 0x30, 0x04, 0x30, 0x08, 0x30, 0x18, 0x30, 0x10, 0x30, 0x20, 0x30, + 0x60, 0x30, 0xC0, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x30, 0x00, 0x30, + 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x7F, 0xC3, + 0xFE, 0x1F, 0xE1, 0x80, 0x08, 0x00, 0xC0, 0x07, 0xC0, 0x7F, 0x81, 0xFF, + 0x00, 0xFC, 0x01, 0xE0, 0x07, 0x80, 0x1C, 0x00, 0x60, 0x03, 0x00, 0x18, + 0x00, 0xC0, 0x06, 0x00, 0x60, 0x07, 0x78, 0x73, 0xFF, 0x0F, 0xC0, 0x00, + 0x0E, 0x00, 0xF8, 0x03, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x3C, + 0x00, 0x7C, 0x00, 0x79, 0xF0, 0x7F, 0xFC, 0xF8, 0x3C, 0xF0, 0x1E, 0xF0, + 0x1F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0x70, 0x0F, 0x78, + 0x0F, 0x78, 0x0E, 0x3C, 0x1E, 0x1E, 0x3C, 0x0F, 0xF8, 0x07, 0xE0, 0x3F, + 0xFD, 0xFF, 0xF7, 0xFF, 0xF0, 0x06, 0x80, 0x18, 0x00, 0x60, 0x03, 0x00, + 0x0C, 0x00, 0x30, 0x01, 0x80, 0x06, 0x00, 0x18, 0x00, 0xE0, 0x03, 0x00, + 0x0C, 0x00, 0x70, 0x01, 0x80, 0x06, 0x00, 0x38, 0x00, 0xC0, 0x03, 0x00, + 0x1C, 0x00, 0x60, 0x00, 0x0F, 0x83, 0xFC, 0x70, 0xE6, 0x07, 0xC0, 0x3C, + 0x03, 0xC0, 0x3E, 0x03, 0x70, 0x67, 0x8C, 0x3D, 0x81, 0xF0, 0x0F, 0x81, + 0x7C, 0x21, 0xE6, 0x0E, 0xC0, 0x7C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x36, + 0x06, 0x70, 0xE3, 0xFC, 0x0F, 0x80, 0x07, 0xC0, 0x1F, 0xF0, 0x3C, 0x78, + 0x38, 0x3C, 0x78, 0x1E, 0x70, 0x1E, 0xF0, 0x0E, 0xF0, 0x0F, 0xF0, 0x0F, + 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF8, 0x0F, 0x78, 0x0F, 0x3C, 0x3F, + 0x1F, 0xEE, 0x0F, 0x9E, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x38, 0x00, 0x78, + 0x00, 0xF0, 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x70, 0x00, 0x6F, 0xF6, + 0x00, 0x00, 0x00, 0x00, 0x06, 0xFF, 0x60, 0x67, 0xBC, 0xC0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x19, 0xEF, 0x78, 0x42, 0x22, 0x20, 0x00, 0x00, 0xC0, + 0x00, 0xF0, 0x01, 0xF8, 0x01, 0xF8, 0x01, 0xF8, 0x01, 0xF0, 0x03, 0xF0, + 0x03, 0xF0, 0x00, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, + 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x03, 0xC0, + 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x80, + 0x00, 0x3C, 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x07, 0xC0, 0x00, 0x7C, + 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0x07, 0xC0, 0x00, 0xF0, 0x00, 0xFC, + 0x00, 0xFC, 0x00, 0xF8, 0x01, 0xF8, 0x01, 0xF8, 0x01, 0xF8, 0x00, 0xF0, + 0x00, 0x30, 0x00, 0x00, 0x1F, 0x81, 0xFF, 0x18, 0x7D, 0x81, 0xEC, 0x07, + 0xF0, 0x3F, 0x81, 0xE0, 0x0F, 0x00, 0x70, 0x03, 0x80, 0x38, 0x01, 0x80, + 0x08, 0x00, 0xC0, 0x04, 0x00, 0x20, 0x02, 0x00, 0x10, 0x00, 0x80, 0x00, + 0x00, 0x00, 0x03, 0x00, 0x3C, 0x01, 0xE0, 0x07, 0x00, 0x00, 0x7F, 0x00, + 0x01, 0xFF, 0xC0, 0x07, 0x80, 0xF0, 0x0F, 0x00, 0x38, 0x1C, 0x00, 0x1C, + 0x38, 0x00, 0x0C, 0x38, 0x00, 0x06, 0x70, 0x1E, 0x02, 0x70, 0x3F, 0xE3, + 0xF0, 0x71, 0xE1, 0xE0, 0xE0, 0xC1, 0xE0, 0xC0, 0xC1, 0xE0, 0xC1, 0xC1, + 0xE1, 0x81, 0xC1, 0xE1, 0x81, 0x83, 0xE1, 0x83, 0x82, 0xE1, 0x83, 0x86, + 0x71, 0xC7, 0x8C, 0x70, 0xF9, 0xF8, 0x38, 0xF0, 0xF0, 0x3C, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x07, 0x80, 0x70, 0x03, 0xFF, 0xE0, 0x00, 0x7F, 0x00, + 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x38, 0x00, 0x00, 0x38, 0x00, + 0x00, 0x7C, 0x00, 0x00, 0x5C, 0x00, 0x00, 0xDE, 0x00, 0x00, 0x8E, 0x00, + 0x01, 0x8F, 0x00, 0x01, 0x87, 0x00, 0x03, 0x07, 0x80, 0x03, 0x03, 0x80, + 0x02, 0x03, 0xC0, 0x06, 0x03, 0xC0, 0x07, 0xFF, 0xC0, 0x0F, 0xFF, 0xE0, + 0x0C, 0x01, 0xE0, 0x18, 0x00, 0xF0, 0x18, 0x00, 0xF0, 0x30, 0x00, 0x78, + 0x30, 0x00, 0x78, 0x70, 0x00, 0x7C, 0xFC, 0x01, 0xFF, 0xFF, 0xFC, 0x03, + 0xFF, 0xF8, 0x1E, 0x0F, 0xC1, 0xE0, 0x3C, 0x1E, 0x01, 0xE1, 0xE0, 0x1E, + 0x1E, 0x01, 0xE1, 0xE0, 0x1E, 0x1E, 0x03, 0xC1, 0xE0, 0x78, 0x1F, 0xFE, + 0x01, 0xFF, 0xF0, 0x1E, 0x07, 0xC1, 0xE0, 0x1E, 0x1E, 0x00, 0xF1, 0xE0, + 0x0F, 0x1E, 0x00, 0xF1, 0xE0, 0x0F, 0x1E, 0x00, 0xF1, 0xE0, 0x1E, 0x1E, + 0x07, 0xE3, 0xFF, 0xF8, 0xFF, 0xFE, 0x00, 0x00, 0xFE, 0x08, 0x0F, 0xFF, + 0x60, 0xFC, 0x1F, 0x87, 0xC0, 0x1E, 0x3C, 0x00, 0x38, 0xF0, 0x00, 0x67, + 0x80, 0x01, 0x9E, 0x00, 0x02, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, + 0x00, 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, + 0x3C, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x0F, + 0x00, 0x02, 0x1F, 0x00, 0x38, 0x3F, 0x03, 0x80, 0x7F, 0xFC, 0x00, 0x3F, + 0x80, 0xFF, 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0x78, 0x3F, 0x80, 0xF0, 0x0F, + 0x81, 0xE0, 0x0F, 0x83, 0xC0, 0x0F, 0x07, 0x80, 0x0F, 0x0F, 0x00, 0x1E, + 0x1E, 0x00, 0x1E, 0x3C, 0x00, 0x3C, 0x78, 0x00, 0x78, 0xF0, 0x00, 0xF1, + 0xE0, 0x01, 0xE3, 0xC0, 0x03, 0xC7, 0x80, 0x07, 0x8F, 0x00, 0x1E, 0x1E, + 0x00, 0x3C, 0x3C, 0x00, 0xF0, 0x78, 0x01, 0xE0, 0xF0, 0x0F, 0x81, 0xE0, + 0x7E, 0x07, 0xFF, 0xF0, 0x3F, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x87, 0xFF, + 0xF8, 0x3C, 0x01, 0x83, 0xC0, 0x08, 0x3C, 0x00, 0x83, 0xC0, 0x00, 0x3C, + 0x00, 0x03, 0xC0, 0x00, 0x3C, 0x02, 0x03, 0xC0, 0x60, 0x3F, 0xFE, 0x03, + 0xFF, 0xE0, 0x3C, 0x06, 0x03, 0xC0, 0x20, 0x3C, 0x00, 0x03, 0xC0, 0x00, + 0x3C, 0x00, 0x03, 0xC0, 0x01, 0x3C, 0x00, 0x23, 0xC0, 0x06, 0x3C, 0x01, + 0xE7, 0xFF, 0xFE, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xBF, 0xFF, 0xCF, 0x00, + 0x67, 0x80, 0x13, 0xC0, 0x09, 0xE0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3C, + 0x02, 0x1E, 0x03, 0x0F, 0xFF, 0x87, 0xFF, 0xC3, 0xC0, 0x61, 0xE0, 0x10, + 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x07, 0x80, + 0x03, 0xC0, 0x03, 0xF0, 0x03, 0xFC, 0x00, 0x00, 0xFE, 0x04, 0x07, 0xFF, + 0xB8, 0x1F, 0x03, 0xF0, 0xF8, 0x01, 0xE3, 0xE0, 0x01, 0xC7, 0x80, 0x01, + 0x9E, 0x00, 0x01, 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x03, + 0xC0, 0x00, 0x07, 0x80, 0x07, 0xFF, 0x00, 0x07, 0xDE, 0x00, 0x07, 0xBC, + 0x00, 0x0F, 0x78, 0x00, 0x1E, 0x78, 0x00, 0x3C, 0xF0, 0x00, 0x78, 0xF0, + 0x00, 0xF1, 0xF0, 0x01, 0xE1, 0xF0, 0x03, 0xC1, 0xF8, 0x1F, 0x00, 0xFF, + 0xFC, 0x00, 0x3F, 0x80, 0xFF, 0x03, 0xFD, 0xF8, 0x07, 0xE3, 0xC0, 0x0F, + 0x0F, 0x00, 0x3C, 0x3C, 0x00, 0xF0, 0xF0, 0x03, 0xC3, 0xC0, 0x0F, 0x0F, + 0x00, 0x3C, 0x3C, 0x00, 0xF0, 0xF0, 0x03, 0xC3, 0xFF, 0xFF, 0x0F, 0xFF, + 0xFC, 0x3C, 0x00, 0xF0, 0xF0, 0x03, 0xC3, 0xC0, 0x0F, 0x0F, 0x00, 0x3C, + 0x3C, 0x00, 0xF0, 0xF0, 0x03, 0xC3, 0xC0, 0x0F, 0x0F, 0x00, 0x3C, 0x3C, + 0x00, 0xF1, 0xF8, 0x07, 0xEF, 0xF0, 0x3F, 0xC0, 0xFF, 0xBF, 0x0F, 0x07, + 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xE0, + 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, 0xC3, 0xF3, 0xFE, 0x0F, 0xF0, + 0x7E, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, + 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, + 0x3C, 0x03, 0xC6, 0x38, 0xF3, 0x8F, 0xF0, 0x7C, 0x00, 0xFF, 0x07, 0xFC, + 0xFC, 0x03, 0xC0, 0xF0, 0x07, 0x01, 0xE0, 0x1C, 0x03, 0xC0, 0x60, 0x07, + 0x81, 0x80, 0x0F, 0x06, 0x00, 0x1E, 0x18, 0x00, 0x3C, 0x60, 0x00, 0x79, + 0x80, 0x00, 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x03, 0xDF, 0x00, 0x07, 0x8F, + 0x00, 0x0F, 0x0F, 0x00, 0x1E, 0x0F, 0x00, 0x3C, 0x0F, 0x00, 0x78, 0x0F, + 0x00, 0xF0, 0x1F, 0x01, 0xE0, 0x1F, 0x03, 0xC0, 0x1F, 0x0F, 0xC0, 0x3F, + 0x3F, 0xC1, 0xFF, 0x80, 0xFF, 0x00, 0x0F, 0xC0, 0x00, 0xF0, 0x00, 0x1E, + 0x00, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x3C, + 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0xC0, 0x00, 0x78, + 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x07, 0x80, 0x04, 0xF0, + 0x01, 0x1E, 0x00, 0x63, 0xC0, 0x3C, 0xFF, 0xFF, 0xBF, 0xFF, 0xE0, 0xFC, + 0x00, 0x03, 0xF9, 0xF0, 0x00, 0x1F, 0x87, 0x80, 0x01, 0xF8, 0x3E, 0x00, + 0x0F, 0xC1, 0xF0, 0x00, 0x5E, 0x0B, 0xC0, 0x06, 0xF0, 0x5E, 0x00, 0x37, + 0x82, 0x78, 0x03, 0x3C, 0x13, 0xC0, 0x19, 0xE0, 0x8F, 0x01, 0x8F, 0x04, + 0x78, 0x0C, 0x78, 0x21, 0xE0, 0xC3, 0xC1, 0x0F, 0x06, 0x1E, 0x08, 0x3C, + 0x60, 0xF0, 0x41, 0xE3, 0x07, 0x82, 0x07, 0xB0, 0x3C, 0x10, 0x3D, 0x81, + 0xE0, 0x81, 0xF8, 0x0F, 0x04, 0x07, 0xC0, 0x78, 0x20, 0x3C, 0x03, 0xC1, + 0x00, 0xE0, 0x1E, 0x1C, 0x06, 0x01, 0xFB, 0xF8, 0x10, 0x1F, 0xE0, 0xFC, + 0x00, 0xFE, 0x78, 0x00, 0x70, 0x78, 0x00, 0x40, 0xF8, 0x00, 0x81, 0xF8, + 0x01, 0x02, 0xF8, 0x02, 0x04, 0xF8, 0x04, 0x08, 0xF0, 0x08, 0x11, 0xF0, + 0x10, 0x21, 0xF0, 0x20, 0x41, 0xF0, 0x40, 0x81, 0xF0, 0x81, 0x01, 0xF1, + 0x02, 0x01, 0xE2, 0x04, 0x03, 0xE4, 0x08, 0x03, 0xE8, 0x10, 0x03, 0xF0, + 0x20, 0x03, 0xE0, 0x40, 0x03, 0xC0, 0x80, 0x03, 0x81, 0x00, 0x07, 0x07, + 0x00, 0x06, 0x3F, 0x80, 0x04, 0x00, 0x00, 0xFE, 0x00, 0x07, 0xFF, 0x00, + 0x3E, 0x0F, 0x80, 0xF0, 0x07, 0x83, 0xC0, 0x07, 0x87, 0x80, 0x07, 0x1E, + 0x00, 0x0F, 0x3C, 0x00, 0x1E, 0xF0, 0x00, 0x1F, 0xE0, 0x00, 0x3F, 0xC0, + 0x00, 0x7F, 0x80, 0x00, 0xFF, 0x00, 0x01, 0xFE, 0x00, 0x03, 0xFC, 0x00, + 0x07, 0xF8, 0x00, 0x0F, 0x78, 0x00, 0x3C, 0xF0, 0x00, 0x78, 0xE0, 0x01, + 0xE1, 0xE0, 0x03, 0xC1, 0xE0, 0x0F, 0x01, 0xF0, 0x7C, 0x00, 0xFF, 0xE0, + 0x00, 0x7F, 0x00, 0xFF, 0xF8, 0x1F, 0xFF, 0x83, 0xC1, 0xF0, 0xF0, 0x1E, + 0x3C, 0x07, 0xCF, 0x00, 0xF3, 0xC0, 0x3C, 0xF0, 0x0F, 0x3C, 0x03, 0xCF, + 0x01, 0xF3, 0xC0, 0x78, 0xF0, 0x7C, 0x3F, 0xFE, 0x0F, 0xFE, 0x03, 0xC0, + 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, + 0x3C, 0x00, 0x1F, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x07, 0xFF, + 0x00, 0x3E, 0x0F, 0x80, 0xF0, 0x07, 0x83, 0xC0, 0x07, 0x87, 0x80, 0x0F, + 0x1E, 0x00, 0x0F, 0x3C, 0x00, 0x1E, 0xF0, 0x00, 0x1D, 0xE0, 0x00, 0x3F, + 0xC0, 0x00, 0x7F, 0x80, 0x00, 0xFF, 0x00, 0x01, 0xFE, 0x00, 0x03, 0xFC, + 0x00, 0x07, 0xF8, 0x00, 0x0F, 0x70, 0x00, 0x1C, 0xF0, 0x00, 0x79, 0xE0, + 0x00, 0xF1, 0xE0, 0x03, 0xC1, 0xC0, 0x07, 0x01, 0xC0, 0x1C, 0x01, 0xE0, + 0xF0, 0x00, 0x7F, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7C, + 0x00, 0x00, 0x7E, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x0F, 0xC0, 0xFF, 0xF0, + 0x03, 0xFF, 0xF0, 0x0F, 0x07, 0xC0, 0x78, 0x1E, 0x03, 0xC0, 0x78, 0x1E, + 0x03, 0xC0, 0xF0, 0x1E, 0x07, 0x80, 0xF0, 0x3C, 0x07, 0x81, 0xE0, 0x78, + 0x0F, 0x0F, 0x80, 0x7F, 0xF8, 0x03, 0xFE, 0x00, 0x1E, 0x78, 0x00, 0xF1, + 0xE0, 0x07, 0x87, 0x80, 0x3C, 0x3C, 0x01, 0xE0, 0xF0, 0x0F, 0x03, 0xC0, + 0x78, 0x0F, 0x03, 0xC0, 0x7C, 0x3F, 0x01, 0xF3, 0xFC, 0x07, 0xE0, 0x07, + 0x84, 0x1F, 0xFC, 0x3C, 0x3E, 0x30, 0x0E, 0x70, 0x06, 0x70, 0x06, 0x70, + 0x02, 0x78, 0x00, 0x7C, 0x00, 0x3F, 0x00, 0x1F, 0xC0, 0x0F, 0xE0, 0x03, + 0xF8, 0x00, 0xFC, 0x00, 0x3E, 0x00, 0x1F, 0x80, 0x0F, 0x80, 0x0F, 0xC0, + 0x0F, 0xE0, 0x0F, 0x70, 0x1E, 0x78, 0x3C, 0x4F, 0xF8, 0x43, 0xF0, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xF0, 0x7C, 0x0F, 0x03, 0x80, 0xF0, 0x10, + 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, + 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, + 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, + 0x00, 0x00, 0xF0, 0x00, 0x1F, 0x80, 0x03, 0xFC, 0x00, 0xFF, 0x01, 0xFD, + 0xF8, 0x01, 0xC3, 0xC0, 0x02, 0x0F, 0x00, 0x08, 0x3C, 0x00, 0x20, 0xF0, + 0x00, 0x83, 0xC0, 0x02, 0x0F, 0x00, 0x08, 0x3C, 0x00, 0x20, 0xF0, 0x00, + 0x83, 0xC0, 0x02, 0x0F, 0x00, 0x08, 0x3C, 0x00, 0x20, 0xF0, 0x00, 0x83, + 0xC0, 0x02, 0x0F, 0x00, 0x08, 0x3C, 0x00, 0x20, 0xF0, 0x00, 0x81, 0xE0, + 0x04, 0x07, 0x80, 0x30, 0x0F, 0x81, 0x80, 0x1F, 0xFC, 0x00, 0x1F, 0xC0, + 0x00, 0xFF, 0xC0, 0x7F, 0x3E, 0x00, 0x1E, 0x1E, 0x00, 0x0C, 0x0E, 0x00, + 0x18, 0x0F, 0x00, 0x18, 0x07, 0x00, 0x10, 0x07, 0x80, 0x30, 0x07, 0x80, + 0x30, 0x03, 0xC0, 0x60, 0x03, 0xC0, 0x60, 0x01, 0xE0, 0x40, 0x01, 0xE0, + 0xC0, 0x00, 0xF0, 0xC0, 0x00, 0xF1, 0x80, 0x00, 0x71, 0x80, 0x00, 0x7B, + 0x00, 0x00, 0x3B, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x1E, + 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x08, 0x00, 0xFF, 0x9F, + 0xF0, 0x3F, 0x9F, 0x03, 0xE0, 0x07, 0x07, 0x80, 0xF0, 0x03, 0x03, 0xC0, + 0x78, 0x01, 0x80, 0xE0, 0x1E, 0x00, 0x80, 0x78, 0x0F, 0x00, 0xC0, 0x1C, + 0x03, 0x80, 0x60, 0x0F, 0x01, 0xE0, 0x20, 0x07, 0x81, 0xF0, 0x30, 0x01, + 0xC0, 0xBC, 0x18, 0x00, 0xF0, 0xDE, 0x08, 0x00, 0x78, 0x67, 0x0C, 0x00, + 0x1E, 0x23, 0xC4, 0x00, 0x0F, 0x31, 0xE6, 0x00, 0x03, 0x90, 0x7B, 0x00, + 0x01, 0xF8, 0x3D, 0x00, 0x00, 0xFC, 0x0F, 0x80, 0x00, 0x3C, 0x07, 0xC0, + 0x00, 0x1E, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0xE0, 0x00, 0x03, 0x00, 0x70, + 0x00, 0x01, 0x80, 0x10, 0x00, 0x00, 0x80, 0x08, 0x00, 0x7F, 0xE0, 0xFF, + 0x0F, 0xC0, 0x1E, 0x03, 0xE0, 0x0E, 0x00, 0xF0, 0x06, 0x00, 0x3C, 0x06, + 0x00, 0x0F, 0x06, 0x00, 0x07, 0x86, 0x00, 0x01, 0xE6, 0x00, 0x00, 0x7B, + 0x00, 0x00, 0x3F, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x03, + 0xF0, 0x00, 0x03, 0x78, 0x00, 0x01, 0x9E, 0x00, 0x01, 0x87, 0x80, 0x01, + 0x83, 0xE0, 0x01, 0x80, 0xF0, 0x01, 0x80, 0x3C, 0x01, 0x80, 0x1F, 0x01, + 0xC0, 0x07, 0xC1, 0xE0, 0x03, 0xF3, 0xFE, 0x0F, 0xFE, 0xFF, 0xC0, 0xFF, + 0x7E, 0x00, 0x1C, 0x1E, 0x00, 0x18, 0x1F, 0x00, 0x30, 0x0F, 0x00, 0x60, + 0x07, 0x80, 0x60, 0x03, 0xC0, 0xC0, 0x03, 0xE1, 0x80, 0x01, 0xE1, 0x80, + 0x00, 0xF3, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3C, 0x00, + 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, + 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, + 0x00, 0x7E, 0x00, 0x01, 0xFF, 0x80, 0x3F, 0xFF, 0xF1, 0xFF, 0xFF, 0x9C, + 0x00, 0x78, 0xC0, 0x07, 0x84, 0x00, 0x38, 0x00, 0x03, 0xC0, 0x00, 0x3C, + 0x00, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, + 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, + 0x07, 0x00, 0x00, 0x78, 0x00, 0x47, 0x80, 0x06, 0x78, 0x00, 0x33, 0x80, + 0x07, 0x3F, 0xFF, 0xFB, 0xFF, 0xFF, 0xC0, 0xFF, 0x83, 0x06, 0x0C, 0x18, + 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, + 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x07, 0xF0, 0xC0, 0x18, 0x06, 0x01, + 0x80, 0x70, 0x0C, 0x03, 0x00, 0xE0, 0x18, 0x06, 0x01, 0xC0, 0x30, 0x0C, + 0x03, 0x80, 0x60, 0x18, 0x07, 0x00, 0xC0, 0x30, 0x0E, 0x01, 0x80, 0x60, + 0x1C, 0x03, 0xFE, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, + 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, + 0x0C, 0x1F, 0xF0, 0x03, 0x80, 0x0F, 0x00, 0x1F, 0x00, 0x76, 0x00, 0xCE, + 0x03, 0x8C, 0x06, 0x1C, 0x1C, 0x18, 0x30, 0x30, 0xE0, 0x31, 0x80, 0x67, + 0x00, 0x6C, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xC0, 0xE0, 0x70, + 0x18, 0x0C, 0x03, 0x1F, 0x03, 0x8C, 0x38, 0x31, 0xC1, 0x8E, 0x0C, 0x00, + 0x60, 0x0F, 0x01, 0x98, 0x30, 0xC3, 0x86, 0x38, 0x31, 0xC1, 0x8E, 0x0C, + 0x78, 0xE5, 0xFB, 0xCF, 0x0C, 0x00, 0x00, 0x38, 0x00, 0xF8, 0x00, 0x38, + 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x39, + 0xF0, 0x3B, 0xFC, 0x3C, 0x3E, 0x38, 0x0E, 0x38, 0x0F, 0x38, 0x07, 0x38, + 0x07, 0x38, 0x07, 0x38, 0x07, 0x38, 0x07, 0x38, 0x06, 0x38, 0x0E, 0x38, + 0x0C, 0x3C, 0x1C, 0x1F, 0xF0, 0x07, 0xE0, 0x07, 0xE0, 0x7F, 0xE3, 0x87, + 0xD8, 0x0F, 0x60, 0x1B, 0x00, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x03, 0x00, + 0x0E, 0x00, 0x3C, 0x01, 0x78, 0x19, 0xFF, 0xC3, 0xFE, 0x03, 0xE0, 0x00, + 0x00, 0x00, 0x1C, 0x00, 0x7C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, + 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x07, 0x9C, 0x1F, 0xDC, 0x38, 0x7C, 0x70, + 0x3C, 0x70, 0x1C, 0x60, 0x1C, 0xE0, 0x1C, 0xE0, 0x1C, 0xE0, 0x1C, 0xE0, + 0x1C, 0xE0, 0x1C, 0xF0, 0x1C, 0x70, 0x1C, 0x7C, 0x3E, 0x3F, 0xDF, 0x0F, + 0x90, 0x0F, 0x81, 0xFF, 0x08, 0x3C, 0x80, 0xE7, 0xFF, 0x7F, 0xFF, 0x00, + 0x18, 0x00, 0xC0, 0x07, 0x00, 0x38, 0x03, 0xE0, 0x37, 0x83, 0x3F, 0xF0, + 0xFF, 0x03, 0xF0, 0x01, 0xF0, 0x3F, 0xC3, 0x8E, 0x18, 0x00, 0xC0, 0x0E, + 0x00, 0x70, 0x03, 0x80, 0x1C, 0x03, 0xFE, 0x1F, 0xF0, 0x38, 0x01, 0xC0, + 0x0E, 0x00, 0x70, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x01, + 0xC0, 0x0E, 0x00, 0x70, 0x07, 0xC0, 0xFF, 0x80, 0x0F, 0xC0, 0x1F, 0xFF, + 0x38, 0xFF, 0x70, 0x70, 0x70, 0x70, 0x70, 0x30, 0x70, 0x30, 0x70, 0x30, + 0x38, 0x20, 0x1C, 0x60, 0x0F, 0x80, 0x10, 0x00, 0x20, 0x00, 0x60, 0x00, + 0x7F, 0xE0, 0x3F, 0xFC, 0x1F, 0xFE, 0x20, 0x06, 0x40, 0x02, 0xC0, 0x02, + 0xC0, 0x04, 0xF0, 0x18, 0x7F, 0xF0, 0x1F, 0x80, 0x00, 0x00, 0x38, 0x00, + 0xF8, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, + 0x38, 0x00, 0x38, 0xF0, 0x3B, 0xF8, 0x3E, 0x3C, 0x3C, 0x1C, 0x38, 0x1C, + 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, + 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x7C, 0x3E, 0xFE, 0x7F, 0x18, 0x3C, + 0x3C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x04, 0x3C, 0x7C, 0x1C, 0x1C, 0x1C, + 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x3C, 0xFF, 0x03, 0x03, + 0xC1, 0xE0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0xC3, 0xE0, 0x70, + 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, + 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x37, 0x3B, 0xF8, 0xF8, 0x00, 0x00, + 0x1C, 0x00, 0x3E, 0x00, 0x07, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, + 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x3F, 0x8E, 0x0F, 0x07, 0x06, 0x03, + 0x86, 0x01, 0xC4, 0x00, 0xE4, 0x00, 0x7E, 0x00, 0x3F, 0x80, 0x1D, 0xC0, + 0x0E, 0x70, 0x07, 0x1C, 0x03, 0x8F, 0x01, 0xC3, 0xC0, 0xE0, 0xF0, 0xF8, + 0x3C, 0xFE, 0x7F, 0x80, 0x00, 0x1C, 0x7C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, + 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, + 0x1C, 0x1C, 0x1C, 0x3C, 0xFF, 0x38, 0xF0, 0x7C, 0x3E, 0xFE, 0x7F, 0x83, + 0xE3, 0xF0, 0xE0, 0xE0, 0x70, 0x1C, 0x38, 0x1C, 0x07, 0x0E, 0x07, 0x01, + 0xC3, 0x81, 0xC0, 0x70, 0xE0, 0x70, 0x1C, 0x38, 0x1C, 0x07, 0x0E, 0x07, + 0x01, 0xC3, 0x81, 0xC0, 0x70, 0xE0, 0x70, 0x1C, 0x38, 0x1C, 0x07, 0x0E, + 0x07, 0x01, 0xC3, 0x81, 0xE0, 0x73, 0xF9, 0xFC, 0x7F, 0x38, 0xF0, 0xFB, + 0xF8, 0x3E, 0x3C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, + 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, + 0x1C, 0x78, 0x3C, 0xFE, 0x7F, 0x07, 0xE0, 0x1F, 0xF8, 0x3C, 0x7C, 0x78, + 0x3E, 0x70, 0x1E, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, + 0x0F, 0xF8, 0x0F, 0x78, 0x0E, 0x7C, 0x1C, 0x3E, 0x3C, 0x0F, 0xF0, 0x07, + 0xC0, 0x18, 0xF0, 0xFB, 0xFC, 0x3E, 0x1E, 0x38, 0x0E, 0x38, 0x0F, 0x38, + 0x07, 0x38, 0x07, 0x38, 0x07, 0x38, 0x07, 0x38, 0x07, 0x38, 0x06, 0x38, + 0x0E, 0x38, 0x0C, 0x3E, 0x1C, 0x3B, 0xF8, 0x39, 0xE0, 0x38, 0x00, 0x38, + 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x7C, 0x00, 0xFF, + 0x00, 0x07, 0xC4, 0x1F, 0xEC, 0x3C, 0x3C, 0x70, 0x1C, 0x70, 0x1C, 0x60, + 0x1C, 0xE0, 0x1C, 0xE0, 0x1C, 0xE0, 0x1C, 0xE0, 0x1C, 0xE0, 0x1C, 0xF0, + 0x1C, 0x70, 0x1C, 0x78, 0x3C, 0x3F, 0xDC, 0x1F, 0x1C, 0x00, 0x1C, 0x00, + 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x3E, 0x00, + 0xFF, 0x19, 0xFF, 0x7C, 0xF3, 0x9C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC0, + 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x1F, 0x07, 0xF0, 0x3E, + 0x58, 0x7C, 0x0F, 0x03, 0xC0, 0x7C, 0x07, 0x80, 0xF8, 0x1F, 0x81, 0xF8, + 0x1E, 0x03, 0xC0, 0xF0, 0x3E, 0x1A, 0x7C, 0x10, 0x30, 0x70, 0xFE, 0xFE, + 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x79, + 0x7E, 0x3C, 0xF8, 0x7C, 0x38, 0x3C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, + 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, + 0x38, 0x1C, 0x38, 0x1C, 0x3C, 0x7C, 0x1F, 0xDF, 0x0F, 0x18, 0xFE, 0x1F, + 0x7C, 0x06, 0x38, 0x04, 0x1C, 0x04, 0x1C, 0x0C, 0x0E, 0x08, 0x0E, 0x18, + 0x07, 0x10, 0x07, 0x10, 0x07, 0x20, 0x03, 0xA0, 0x03, 0xE0, 0x01, 0xC0, + 0x01, 0xC0, 0x00, 0x80, 0x00, 0x80, 0xFC, 0x7F, 0x1F, 0x78, 0x3C, 0x06, + 0x38, 0x1C, 0x04, 0x38, 0x1C, 0x04, 0x1C, 0x1C, 0x0C, 0x1C, 0x0E, 0x08, + 0x1C, 0x1E, 0x18, 0x0E, 0x17, 0x10, 0x0E, 0x37, 0x10, 0x07, 0x23, 0x30, + 0x07, 0x63, 0xA0, 0x07, 0x43, 0xE0, 0x03, 0xC1, 0xC0, 0x03, 0x81, 0xC0, + 0x01, 0x80, 0x80, 0x01, 0x00, 0x80, 0x7F, 0x7E, 0x1E, 0x0C, 0x07, 0x8C, + 0x01, 0xC4, 0x00, 0x76, 0x00, 0x3E, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x03, + 0xE0, 0x01, 0x70, 0x01, 0x1C, 0x01, 0x8F, 0x01, 0x83, 0x80, 0x80, 0xE0, + 0xC0, 0x79, 0xF0, 0xFF, 0xFE, 0x0F, 0x7C, 0x06, 0x38, 0x06, 0x1C, 0x04, + 0x1C, 0x0C, 0x0E, 0x0C, 0x0E, 0x08, 0x0F, 0x18, 0x07, 0x10, 0x07, 0x90, + 0x03, 0xB0, 0x03, 0xA0, 0x01, 0xE0, 0x01, 0xE0, 0x00, 0xC0, 0x00, 0xC0, + 0x00, 0x80, 0x00, 0x80, 0x01, 0x80, 0x01, 0x00, 0x03, 0x00, 0x7E, 0x00, + 0x7C, 0x00, 0x78, 0x00, 0x7F, 0xF9, 0xFF, 0xE6, 0x07, 0x10, 0x38, 0x00, + 0xE0, 0x07, 0x00, 0x38, 0x01, 0xE0, 0x07, 0x00, 0x38, 0x01, 0xE0, 0x07, + 0x01, 0x38, 0x0D, 0xC0, 0x3F, 0xFF, 0xBF, 0xFE, 0x07, 0x0E, 0x1C, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x30, 0x60, 0x60, + 0x10, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1C, + 0x0E, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x70, 0x38, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x08, 0x06, 0x06, + 0x08, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x38, + 0x70, 0xE0, 0x3E, 0x00, 0x7F, 0x87, 0xE3, 0xFE, 0x00, 0x7C}; + +const GFXglyph FreeSerif18pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 9, 0, 1}, // 0x20 ' ' + {0, 4, 24, 12, 5, -23}, // 0x21 '!' + {12, 8, 9, 14, 3, -23}, // 0x22 '"' + {21, 17, 23, 17, 0, -22}, // 0x23 '#' + {70, 13, 27, 17, 2, -24}, // 0x24 '$' + {114, 25, 23, 29, 2, -22}, // 0x25 '%' + {186, 25, 25, 27, 1, -24}, // 0x26 '&' + {265, 3, 9, 7, 2, -23}, // 0x27 ''' + {269, 9, 30, 12, 2, -23}, // 0x28 '(' + {303, 9, 30, 12, 1, -22}, // 0x29 ')' + {337, 12, 14, 18, 3, -23}, // 0x2A '*' + {358, 16, 18, 20, 2, -17}, // 0x2B '+' + {394, 4, 9, 9, 2, -3}, // 0x2C ',' + {399, 8, 2, 12, 1, -8}, // 0x2D '-' + {401, 4, 4, 9, 2, -3}, // 0x2E '.' + {403, 10, 24, 10, 0, -23}, // 0x2F '/' + {433, 16, 24, 18, 1, -23}, // 0x30 '0' + {481, 10, 24, 18, 3, -23}, // 0x31 '1' + {511, 16, 24, 17, 1, -23}, // 0x32 '2' + {559, 13, 24, 17, 2, -23}, // 0x33 '3' + {598, 16, 23, 18, 0, -22}, // 0x34 '4' + {644, 13, 24, 17, 2, -23}, // 0x35 '5' + {683, 16, 24, 18, 1, -23}, // 0x36 '6' + {731, 14, 23, 18, 1, -22}, // 0x37 '7' + {772, 12, 25, 18, 2, -24}, // 0x38 '8' + {810, 16, 26, 17, 1, -24}, // 0x39 '9' + {862, 4, 17, 9, 2, -16}, // 0x3A ':' + {871, 5, 22, 9, 2, -16}, // 0x3B ';' + {885, 18, 18, 20, 1, -17}, // 0x3C '<' + {926, 18, 9, 20, 1, -12}, // 0x3D '=' + {947, 18, 18, 20, 1, -17}, // 0x3E '>' + {988, 13, 25, 16, 2, -24}, // 0x3F '?' + {1029, 24, 25, 30, 3, -24}, // 0x40 '@' + {1104, 24, 23, 25, 1, -22}, // 0x41 'A' + {1173, 20, 23, 22, 1, -22}, // 0x42 'B' + {1231, 22, 24, 23, 1, -23}, // 0x43 'C' + {1297, 23, 23, 25, 1, -22}, // 0x44 'D' + {1364, 20, 23, 21, 2, -22}, // 0x45 'E' + {1422, 17, 23, 20, 2, -22}, // 0x46 'F' + {1471, 23, 24, 25, 1, -23}, // 0x47 'G' + {1540, 22, 23, 25, 2, -22}, // 0x48 'H' + {1604, 9, 23, 11, 2, -22}, // 0x49 'I' + {1630, 12, 23, 13, 0, -22}, // 0x4A 'J' + {1665, 23, 23, 25, 2, -22}, // 0x4B 'K' + {1732, 19, 23, 21, 2, -22}, // 0x4C 'L' + {1787, 29, 23, 31, 1, -22}, // 0x4D 'M' + {1871, 23, 23, 25, 1, -22}, // 0x4E 'N' + {1938, 23, 24, 25, 1, -23}, // 0x4F 'O' + {2007, 18, 23, 20, 1, -22}, // 0x50 'P' + {2059, 23, 30, 25, 1, -23}, // 0x51 'Q' + {2146, 21, 23, 23, 2, -22}, // 0x52 'R' + {2207, 16, 24, 19, 1, -23}, // 0x53 'S' + {2255, 20, 23, 21, 1, -22}, // 0x54 'T' + {2313, 22, 23, 25, 2, -22}, // 0x55 'U' + {2377, 24, 23, 25, 0, -22}, // 0x56 'V' + {2446, 33, 23, 33, 0, -22}, // 0x57 'W' + {2541, 25, 23, 25, 0, -22}, // 0x58 'X' + {2613, 24, 23, 25, 1, -22}, // 0x59 'Y' + {2682, 21, 23, 21, 0, -22}, // 0x5A 'Z' + {2743, 7, 28, 12, 3, -22}, // 0x5B '[' + {2768, 10, 24, 10, 0, -23}, // 0x5C '\' + {2798, 7, 28, 12, 2, -22}, // 0x5D ']' + {2823, 15, 13, 16, 1, -22}, // 0x5E '^' + {2848, 18, 2, 17, 0, 3}, // 0x5F '_' + {2853, 8, 6, 9, 1, -23}, // 0x60 '`' + {2859, 13, 16, 15, 2, -15}, // 0x61 'a' + {2885, 16, 25, 17, 1, -24}, // 0x62 'b' + {2935, 14, 16, 16, 1, -15}, // 0x63 'c' + {2963, 16, 25, 17, 1, -24}, // 0x64 'd' + {3013, 13, 16, 16, 1, -15}, // 0x65 'e' + {3039, 13, 25, 13, 0, -24}, // 0x66 'f' + {3080, 16, 24, 16, 1, -15}, // 0x67 'g' + {3128, 16, 25, 17, 1, -24}, // 0x68 'h' + {3178, 8, 24, 10, 0, -23}, // 0x69 'i' + {3202, 9, 32, 12, 0, -23}, // 0x6A 'j' + {3238, 17, 25, 18, 1, -24}, // 0x6B 'k' + {3292, 8, 25, 9, 0, -24}, // 0x6C 'l' + {3317, 26, 16, 27, 1, -15}, // 0x6D 'm' + {3369, 16, 16, 17, 1, -15}, // 0x6E 'n' + {3401, 16, 16, 17, 1, -15}, // 0x6F 'o' + {3433, 16, 24, 17, 1, -15}, // 0x70 'p' + {3481, 16, 24, 17, 1, -15}, // 0x71 'q' + {3529, 11, 16, 12, 1, -15}, // 0x72 'r' + {3551, 10, 16, 13, 1, -15}, // 0x73 's' + {3571, 8, 19, 10, 2, -18}, // 0x74 't' + {3590, 16, 16, 17, 1, -15}, // 0x75 'u' + {3622, 16, 16, 16, 0, -15}, // 0x76 'v' + {3654, 24, 16, 24, 0, -15}, // 0x77 'w' + {3702, 17, 16, 17, 0, -15}, // 0x78 'x' + {3736, 16, 24, 16, 0, -15}, // 0x79 'y' + {3784, 14, 16, 15, 0, -15}, // 0x7A 'z' + {3812, 8, 30, 17, 3, -23}, // 0x7B '{' + {3842, 2, 24, 7, 2, -23}, // 0x7C '|' + {3848, 8, 30, 17, 6, -22}, // 0x7D '}' + {3878, 16, 4, 17, 1, -10}}; // 0x7E '~' + +const GFXfont FreeSerif18pt7b PROGMEM = {(uint8_t *)FreeSerif18pt7bBitmaps, + (GFXglyph *)FreeSerif18pt7bGlyphs, + 0x20, 0x7E, 42}; + +// Approx. 4558 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerif24pt7b.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerif24pt7b.h new file mode 100644 index 0000000..cac1999 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerif24pt7b.h @@ -0,0 +1,692 @@ +#pragma once +#include + +const uint8_t FreeSerif24pt7bBitmaps[] PROGMEM = { + 0x77, 0xBF, 0xFF, 0xFF, 0xFF, 0xFB, 0x9C, 0xE7, 0x39, 0xCE, 0x61, 0x08, + 0x42, 0x10, 0x84, 0x00, 0x00, 0xEF, 0xFF, 0xEE, 0x60, 0x6F, 0x0F, 0xF0, + 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0x60, 0x66, 0x06, 0x60, 0x66, 0x06, 0x60, + 0x66, 0x06, 0x00, 0xE0, 0x70, 0x01, 0xC0, 0xE0, 0x03, 0x81, 0xC0, 0x07, + 0x03, 0x80, 0x0E, 0x06, 0x00, 0x18, 0x0C, 0x00, 0x30, 0x38, 0x00, 0xE0, + 0x70, 0x01, 0xC0, 0xE0, 0x03, 0x81, 0xC1, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, + 0xF0, 0x18, 0x0C, 0x00, 0x70, 0x38, 0x00, 0xE0, 0x70, 0x01, 0xC0, 0xE0, + 0x03, 0x81, 0xC0, 0x07, 0x03, 0x80, 0x0C, 0x06, 0x07, 0xFF, 0xFF, 0xEF, + 0xFF, 0xFF, 0xC0, 0xE0, 0x70, 0x01, 0xC0, 0xE0, 0x03, 0x81, 0xC0, 0x06, + 0x03, 0x80, 0x0C, 0x06, 0x00, 0x38, 0x1C, 0x00, 0x70, 0x38, 0x00, 0xE0, + 0x70, 0x01, 0xC0, 0xE0, 0x03, 0x81, 0xC0, 0x00, 0x00, 0x40, 0x00, 0x08, + 0x00, 0x01, 0x00, 0x01, 0xFC, 0x01, 0xE4, 0xF8, 0x70, 0x87, 0x9C, 0x10, + 0x77, 0x02, 0x06, 0xE0, 0x40, 0xDC, 0x08, 0x0B, 0x81, 0x00, 0x78, 0x20, + 0x07, 0x84, 0x00, 0xFC, 0x80, 0x0F, 0xF0, 0x00, 0xFE, 0x00, 0x07, 0xF0, + 0x00, 0x7F, 0x80, 0x03, 0xFC, 0x00, 0x3F, 0xC0, 0x05, 0xFC, 0x00, 0x8F, + 0x80, 0x10, 0xF8, 0x02, 0x0F, 0x00, 0x40, 0xF0, 0x08, 0x1E, 0x01, 0x03, + 0xE0, 0x20, 0x7C, 0x04, 0x0F, 0xC0, 0x83, 0xBC, 0x10, 0xE3, 0xE2, 0x78, + 0x3F, 0xFE, 0x00, 0xFE, 0x00, 0x01, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x01, 0xF0, 0x00, 0xC0, 0x03, 0xFC, 0x01, 0xE0, 0x03, 0xC7, 0x81, 0xE0, + 0x03, 0xC0, 0x7F, 0x60, 0x03, 0xC0, 0x20, 0x70, 0x01, 0xE0, 0x10, 0x30, + 0x01, 0xE0, 0x08, 0x38, 0x00, 0xE0, 0x04, 0x18, 0x00, 0xF0, 0x02, 0x1C, + 0x00, 0x78, 0x02, 0x0C, 0x00, 0x38, 0x01, 0x0E, 0x00, 0x1C, 0x01, 0x86, + 0x00, 0x0E, 0x00, 0x86, 0x00, 0x07, 0x00, 0x87, 0x03, 0xE1, 0x80, 0xC3, + 0x07, 0xFC, 0xE1, 0xC3, 0x87, 0xC6, 0x3F, 0xC1, 0x87, 0x81, 0x8F, 0x81, + 0xC7, 0x80, 0x40, 0x00, 0xC3, 0xC0, 0x20, 0x00, 0xE3, 0xC0, 0x10, 0x00, + 0x61, 0xC0, 0x08, 0x00, 0x61, 0xE0, 0x04, 0x00, 0x70, 0xF0, 0x06, 0x00, + 0x30, 0x70, 0x02, 0x00, 0x38, 0x38, 0x03, 0x00, 0x18, 0x1C, 0x01, 0x00, + 0x1C, 0x0E, 0x01, 0x80, 0x0C, 0x07, 0x01, 0x80, 0x0E, 0x01, 0xC3, 0x80, + 0x06, 0x00, 0x7F, 0x80, 0x06, 0x00, 0x1F, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x00, 0x1F, 0x00, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0x70, 0xE0, 0x00, + 0x00, 0xE0, 0x60, 0x00, 0x00, 0xC0, 0x30, 0x00, 0x01, 0xC0, 0x30, 0x00, + 0x01, 0xC0, 0x30, 0x00, 0x01, 0xC0, 0x30, 0x00, 0x01, 0xC0, 0x70, 0x00, + 0x01, 0xE0, 0xE0, 0x00, 0x01, 0xE1, 0xC0, 0x00, 0x00, 0xF3, 0x80, 0x00, + 0x00, 0xFF, 0x0F, 0xFC, 0x00, 0xFC, 0x03, 0xF0, 0x00, 0xF8, 0x01, 0xE0, + 0x01, 0xFC, 0x01, 0xC0, 0x07, 0x7C, 0x01, 0xC0, 0x0F, 0x3E, 0x01, 0x80, + 0x1E, 0x3E, 0x03, 0x00, 0x3C, 0x1F, 0x03, 0x00, 0x7C, 0x1F, 0x06, 0x00, + 0x78, 0x0F, 0x86, 0x00, 0x78, 0x07, 0xCC, 0x00, 0xF8, 0x07, 0xE8, 0x00, + 0xF8, 0x03, 0xF8, 0x00, 0xF8, 0x01, 0xF0, 0x00, 0xF8, 0x01, 0xF8, 0x00, + 0xFC, 0x00, 0xFC, 0x01, 0xFC, 0x01, 0xFE, 0x01, 0x7E, 0x03, 0xBF, 0x86, + 0x7F, 0x0F, 0x1F, 0xFE, 0x3F, 0xFC, 0x0F, 0xF8, 0x0F, 0xE0, 0x03, 0xF0, + 0x6F, 0xFF, 0xFF, 0x66, 0x66, 0x66, 0x00, 0x10, 0x02, 0x00, 0xC0, 0x18, + 0x03, 0x00, 0x60, 0x0E, 0x00, 0xC0, 0x1C, 0x03, 0x80, 0x38, 0x03, 0x80, + 0x78, 0x07, 0x00, 0x70, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, + 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x07, 0x00, 0x70, 0x07, 0x80, + 0x38, 0x03, 0x80, 0x38, 0x01, 0xC0, 0x0C, 0x00, 0xC0, 0x06, 0x00, 0x30, + 0x01, 0x80, 0x0C, 0x00, 0x60, 0x03, 0xC0, 0x06, 0x00, 0x30, 0x01, 0x80, + 0x0C, 0x00, 0x60, 0x07, 0x00, 0x30, 0x03, 0x80, 0x1C, 0x01, 0xC0, 0x1C, + 0x01, 0xE0, 0x0E, 0x00, 0xE0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, + 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0E, 0x00, 0xE0, 0x1E, + 0x01, 0xC0, 0x1C, 0x01, 0xC0, 0x38, 0x03, 0x00, 0x70, 0x0E, 0x00, 0xC0, + 0x18, 0x03, 0x00, 0x40, 0x08, 0x00, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, + 0x43, 0x86, 0xE1, 0x0F, 0xF1, 0x1F, 0xF9, 0x3E, 0x3D, 0x78, 0x07, 0xC0, + 0x01, 0x00, 0x07, 0xC0, 0x19, 0x30, 0xF9, 0x1E, 0xF1, 0x0F, 0xE1, 0x07, + 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x00, 0x38, 0x00, 0x00, + 0x70, 0x00, 0x00, 0xE0, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, 0x00, 0x07, + 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x38, 0x00, 0x00, 0x70, + 0x00, 0x00, 0xE0, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x07, 0x00, + 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x38, 0x00, 0x00, 0x70, 0x00, + 0x00, 0xE0, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, 0x00, 0x07, 0x00, 0x00, + 0x0E, 0x00, 0x00, 0x73, 0xEF, 0xFF, 0x7C, 0x10, 0x42, 0x08, 0xC6, 0x00, + 0xFF, 0xFF, 0xFC, 0x77, 0xFF, 0xF7, 0x00, 0x00, 0x1C, 0x00, 0xE0, 0x03, + 0x80, 0x0E, 0x00, 0x70, 0x01, 0xC0, 0x07, 0x00, 0x38, 0x00, 0xE0, 0x03, + 0x80, 0x1C, 0x00, 0x70, 0x01, 0xC0, 0x0E, 0x00, 0x38, 0x01, 0xE0, 0x07, + 0x00, 0x1C, 0x00, 0xF0, 0x03, 0x80, 0x0E, 0x00, 0x78, 0x01, 0xC0, 0x07, + 0x00, 0x3C, 0x00, 0xE0, 0x03, 0x80, 0x1E, 0x00, 0x70, 0x01, 0xC0, 0x0F, + 0x00, 0x38, 0x00, 0x00, 0xFC, 0x00, 0x0E, 0x1C, 0x00, 0x70, 0x38, 0x03, + 0x80, 0x70, 0x1E, 0x01, 0xE0, 0xF0, 0x03, 0x83, 0xC0, 0x0F, 0x0F, 0x00, + 0x3C, 0x7C, 0x00, 0xF9, 0xE0, 0x01, 0xE7, 0x80, 0x07, 0xBE, 0x00, 0x1F, + 0xF8, 0x00, 0x7F, 0xE0, 0x01, 0xFF, 0x80, 0x07, 0xFE, 0x00, 0x1F, 0xF8, + 0x00, 0x7F, 0xE0, 0x01, 0xFF, 0x80, 0x07, 0xFE, 0x00, 0x1F, 0xF8, 0x00, + 0x7F, 0xE0, 0x01, 0xF7, 0x80, 0x07, 0x9E, 0x00, 0x1E, 0x7C, 0x00, 0xF8, + 0xF0, 0x03, 0xC3, 0xC0, 0x0F, 0x07, 0x00, 0x38, 0x1E, 0x01, 0xE0, 0x38, + 0x07, 0x00, 0x70, 0x38, 0x00, 0xE1, 0xC0, 0x00, 0xFC, 0x00, 0x00, 0x80, + 0x1C, 0x03, 0xE0, 0x7F, 0x0C, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x07, + 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, + 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, + 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x3F, + 0x0F, 0xFF, 0x01, 0xF8, 0x00, 0x3F, 0xF0, 0x07, 0xFF, 0xE0, 0x70, 0x3F, + 0x83, 0x00, 0x7C, 0x30, 0x01, 0xF1, 0x00, 0x0F, 0x98, 0x00, 0x3C, 0x80, + 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0x80, 0x00, 0x1C, + 0x00, 0x01, 0xC0, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x07, 0x00, 0x00, + 0x70, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, + 0x03, 0x00, 0x00, 0x30, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, 0x43, 0x00, + 0x02, 0x30, 0x00, 0x23, 0xFF, 0xFF, 0x3F, 0xFF, 0xF3, 0xFF, 0xFF, 0x80, + 0x03, 0xF8, 0x03, 0xFF, 0x01, 0x83, 0xE0, 0x80, 0x3C, 0x40, 0x0F, 0x10, + 0x01, 0xC8, 0x00, 0x70, 0x00, 0x1C, 0x00, 0x06, 0x00, 0x03, 0x00, 0x00, + 0x80, 0x00, 0xC0, 0x00, 0x78, 0x00, 0x7F, 0x80, 0x7F, 0xF0, 0x01, 0xFE, + 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x01, 0xC0, + 0x00, 0x70, 0x00, 0x1C, 0x00, 0x07, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, + 0x30, 0x00, 0x0C, 0x70, 0x06, 0x3F, 0x07, 0x0F, 0xFF, 0x00, 0xFF, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x38, 0x00, 0x01, 0xC0, 0x00, 0x1E, 0x00, 0x01, + 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xDC, 0x00, 0x0C, 0xE0, 0x00, 0x47, 0x00, + 0x06, 0x38, 0x00, 0x61, 0xC0, 0x06, 0x0E, 0x00, 0x30, 0x70, 0x03, 0x03, + 0x80, 0x30, 0x1C, 0x01, 0x80, 0xE0, 0x18, 0x07, 0x01, 0x80, 0x38, 0x08, + 0x01, 0xC0, 0xC0, 0x0E, 0x0C, 0x00, 0x70, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, + 0xE0, 0x00, 0xE0, 0x00, 0x07, 0x00, 0x00, 0x38, 0x00, 0x01, 0xC0, 0x00, + 0x0E, 0x00, 0x00, 0x70, 0x00, 0x03, 0x80, 0x00, 0x1C, 0x00, 0x00, 0x00, + 0x40, 0x7F, 0xF8, 0x1F, 0xFE, 0x03, 0xFF, 0xC0, 0xC0, 0x00, 0x18, 0x00, + 0x06, 0x00, 0x00, 0xC0, 0x00, 0x1C, 0x00, 0x07, 0xF8, 0x00, 0xFF, 0xC0, + 0x3F, 0xFE, 0x00, 0xFF, 0xE0, 0x01, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0x7C, + 0x00, 0x07, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x1C, + 0x00, 0x03, 0x80, 0x00, 0x70, 0x00, 0x0E, 0x00, 0x01, 0xC0, 0x00, 0x30, + 0x00, 0x0E, 0x00, 0x01, 0x80, 0x00, 0x71, 0xE0, 0x1C, 0x3F, 0x07, 0x07, + 0xFF, 0x80, 0x3F, 0x80, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x3E, 0x00, 0x0F, + 0x80, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x01, + 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xFC, 0x00, + 0x07, 0xC7, 0xE0, 0x3E, 0xFF, 0xC3, 0xF8, 0x3F, 0x1F, 0x80, 0x7C, 0xF8, + 0x03, 0xF7, 0xC0, 0x0F, 0xBE, 0x00, 0x7F, 0xF0, 0x01, 0xFF, 0x80, 0x0F, + 0xFC, 0x00, 0x7F, 0xE0, 0x03, 0xFF, 0x00, 0x1F, 0x78, 0x00, 0xFB, 0xE0, + 0x07, 0x9F, 0x00, 0x3C, 0x78, 0x03, 0xE3, 0xE0, 0x1E, 0x0F, 0x81, 0xE0, + 0x3E, 0x1E, 0x00, 0xFF, 0xE0, 0x00, 0xFC, 0x00, 0x3F, 0xFF, 0xF3, 0xFF, + 0xFF, 0x3F, 0xFF, 0xE7, 0x00, 0x0E, 0x40, 0x00, 0xEC, 0x00, 0x1C, 0x80, + 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x03, 0x80, + 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0x70, 0x00, 0x0E, 0x00, 0x00, 0xE0, + 0x00, 0x0E, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x38, + 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x07, 0x00, 0x00, 0x70, 0x00, 0x07, + 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x1E, 0x00, 0x01, + 0xC0, 0x00, 0x03, 0xF0, 0x03, 0xFF, 0x03, 0xC1, 0xE0, 0xC0, 0x1C, 0x70, + 0x07, 0x18, 0x00, 0xEE, 0x00, 0x3B, 0x80, 0x0E, 0xF0, 0x03, 0xBC, 0x00, + 0xE7, 0x80, 0x71, 0xF0, 0x38, 0x3E, 0x1C, 0x07, 0xEE, 0x00, 0xFE, 0x00, + 0x1F, 0xC0, 0x03, 0xF8, 0x03, 0xFF, 0x01, 0xC7, 0xE0, 0xE0, 0xFC, 0x70, + 0x0F, 0x98, 0x01, 0xEE, 0x00, 0x3F, 0x80, 0x0F, 0xE0, 0x01, 0xF8, 0x00, + 0x7E, 0x00, 0x1F, 0xC0, 0x07, 0x70, 0x03, 0x9E, 0x00, 0xE3, 0xE0, 0xF0, + 0x7F, 0xF0, 0x07, 0xF0, 0x00, 0x01, 0xF8, 0x00, 0x3F, 0xF0, 0x03, 0xC3, + 0xE0, 0x3C, 0x0F, 0x83, 0xC0, 0x3C, 0x3E, 0x00, 0xF1, 0xE0, 0x07, 0xCF, + 0x00, 0x3E, 0xF8, 0x00, 0xF7, 0xC0, 0x07, 0xFE, 0x00, 0x3F, 0xF0, 0x01, + 0xFF, 0x80, 0x0F, 0xFC, 0x00, 0x7F, 0xF0, 0x03, 0xEF, 0x80, 0x1F, 0x7C, + 0x00, 0xF9, 0xF0, 0x0F, 0xC7, 0xE1, 0xFC, 0x1F, 0xF9, 0xE0, 0x3F, 0x1F, + 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x78, 0x00, 0x07, 0xC0, 0x00, + 0x7C, 0x00, 0x03, 0xC0, 0x00, 0x3C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, + 0x0F, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x00, 0x77, 0xFF, 0xF7, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xBF, 0xFF, 0xB8, 0x39, 0xF7, + 0xDF, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0xEF, + 0xFF, 0x7C, 0x10, 0x42, 0x08, 0xC6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x7F, 0x00, 0x01, 0xFC, 0x00, 0x07, + 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xE0, + 0x00, 0x3F, 0x80, 0x00, 0xFE, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xFC, 0x00, + 0x00, 0x7F, 0x80, 0x00, 0x1F, 0xE0, 0x00, 0x07, 0xF8, 0x00, 0x00, 0xFE, + 0x00, 0x00, 0x3F, 0x80, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, + 0xFF, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0x00, 0x00, 0x01, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0xE0, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, + 0x00, 0x01, 0xFC, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x07, + 0xF8, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x1F, 0x00, 0x00, + 0x7F, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, + 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xE0, 0x00, 0x3F, 0x80, 0x00, 0xFE, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xE0, + 0x0F, 0xFE, 0x0C, 0x1F, 0x88, 0x03, 0xEC, 0x01, 0xF7, 0x00, 0x7F, 0xC0, + 0x3F, 0xE0, 0x1F, 0x70, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xC0, 0x01, 0xE0, + 0x01, 0xE0, 0x00, 0xF0, 0x00, 0x70, 0x00, 0x70, 0x00, 0x30, 0x00, 0x10, + 0x00, 0x18, 0x00, 0x08, 0x00, 0x04, 0x00, 0x06, 0x00, 0x02, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x3E, 0x00, + 0x1F, 0x00, 0x0F, 0x80, 0x03, 0x80, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x3F, + 0xFF, 0x00, 0x00, 0xFC, 0x07, 0xC0, 0x01, 0xE0, 0x00, 0xE0, 0x07, 0xC0, + 0x00, 0x30, 0x0F, 0x00, 0x00, 0x18, 0x1E, 0x00, 0x00, 0x0C, 0x1E, 0x00, + 0x00, 0x04, 0x3C, 0x00, 0xF8, 0x06, 0x3C, 0x01, 0xFD, 0xC2, 0x78, 0x03, + 0xC7, 0xC3, 0x78, 0x07, 0x07, 0x81, 0xF0, 0x0E, 0x03, 0x81, 0xF0, 0x0E, + 0x03, 0x81, 0xF0, 0x1C, 0x07, 0x81, 0xF0, 0x1C, 0x07, 0x01, 0xF0, 0x38, + 0x07, 0x01, 0xF0, 0x38, 0x07, 0x03, 0xF0, 0x38, 0x0F, 0x02, 0xF0, 0x38, + 0x0E, 0x02, 0xF0, 0x38, 0x1E, 0x04, 0x78, 0x38, 0x1E, 0x0C, 0x78, 0x1C, + 0x6E, 0x18, 0x38, 0x1F, 0xC7, 0xF0, 0x3C, 0x0F, 0x03, 0xE0, 0x1E, 0x00, + 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x07, 0xC0, + 0x00, 0x00, 0x03, 0xE0, 0x00, 0x60, 0x00, 0xFC, 0x03, 0xE0, 0x00, 0x3F, + 0xFF, 0x80, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, + 0x80, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x07, + 0xC0, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x0D, + 0xF0, 0x00, 0x00, 0x0D, 0xF0, 0x00, 0x00, 0x18, 0xF0, 0x00, 0x00, 0x18, + 0xF8, 0x00, 0x00, 0x38, 0x78, 0x00, 0x00, 0x30, 0x7C, 0x00, 0x00, 0x30, + 0x7C, 0x00, 0x00, 0x60, 0x3E, 0x00, 0x00, 0x60, 0x3E, 0x00, 0x00, 0xE0, + 0x1E, 0x00, 0x00, 0xC0, 0x1F, 0x00, 0x00, 0xC0, 0x1F, 0x00, 0x01, 0x80, + 0x0F, 0x80, 0x01, 0xFF, 0xFF, 0x80, 0x03, 0xFF, 0xFF, 0xC0, 0x03, 0x00, + 0x07, 0xC0, 0x07, 0x00, 0x07, 0xC0, 0x06, 0x00, 0x03, 0xE0, 0x06, 0x00, + 0x03, 0xE0, 0x0E, 0x00, 0x01, 0xF0, 0x0C, 0x00, 0x01, 0xF0, 0x1C, 0x00, + 0x01, 0xF8, 0x3C, 0x00, 0x01, 0xF8, 0x7E, 0x00, 0x01, 0xFC, 0xFF, 0x80, + 0x0F, 0xFF, 0xFF, 0xFF, 0xE0, 0x03, 0xFF, 0xFF, 0x80, 0x1F, 0x01, 0xF8, + 0x03, 0xE0, 0x0F, 0x80, 0x7C, 0x00, 0xF8, 0x0F, 0x80, 0x1F, 0x81, 0xF0, + 0x01, 0xF0, 0x3E, 0x00, 0x3E, 0x07, 0xC0, 0x07, 0xC0, 0xF8, 0x00, 0xF8, + 0x1F, 0x00, 0x1F, 0x03, 0xE0, 0x07, 0xC0, 0x7C, 0x01, 0xF0, 0x0F, 0x80, + 0xFC, 0x01, 0xFF, 0xFE, 0x00, 0x3F, 0xFF, 0xC0, 0x07, 0xC0, 0x7F, 0x00, + 0xF8, 0x01, 0xF0, 0x1F, 0x00, 0x1F, 0x03, 0xE0, 0x03, 0xE0, 0x7C, 0x00, + 0x3E, 0x0F, 0x80, 0x07, 0xC1, 0xF0, 0x00, 0xF8, 0x3E, 0x00, 0x1F, 0x07, + 0xC0, 0x03, 0xE0, 0xF8, 0x00, 0xF8, 0x1F, 0x00, 0x1F, 0x03, 0xE0, 0x07, + 0xC0, 0x7C, 0x07, 0xF0, 0x1F, 0xFF, 0xFC, 0x3F, 0xFF, 0xFC, 0x00, 0x00, + 0x1F, 0xF0, 0x20, 0x07, 0xFF, 0xEE, 0x01, 0xF8, 0x1F, 0xE0, 0x3E, 0x00, + 0x7E, 0x07, 0x80, 0x01, 0xE0, 0xF0, 0x00, 0x1E, 0x1F, 0x00, 0x00, 0xE3, + 0xE0, 0x00, 0x06, 0x3C, 0x00, 0x00, 0x67, 0xC0, 0x00, 0x02, 0x7C, 0x00, + 0x00, 0x27, 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, + 0xF8, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x0F, 0x80, + 0x00, 0x00, 0xF8, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, + 0x0F, 0x80, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x7C, + 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x01, 0xF0, 0x00, + 0x02, 0x0F, 0x80, 0x00, 0xE0, 0x7E, 0x00, 0x1C, 0x03, 0xF8, 0x0F, 0x00, + 0x0F, 0xFF, 0xC0, 0x00, 0x1F, 0xE0, 0x00, 0xFF, 0xFF, 0xC0, 0x00, 0x7F, + 0xFF, 0xF8, 0x00, 0x3E, 0x03, 0xFC, 0x00, 0x7C, 0x00, 0xFC, 0x00, 0xF8, + 0x00, 0x7E, 0x01, 0xF0, 0x00, 0x7E, 0x03, 0xE0, 0x00, 0x7C, 0x07, 0xC0, + 0x00, 0x7C, 0x0F, 0x80, 0x00, 0xF8, 0x1F, 0x00, 0x00, 0xF8, 0x3E, 0x00, + 0x01, 0xF0, 0x7C, 0x00, 0x03, 0xF0, 0xF8, 0x00, 0x03, 0xE1, 0xF0, 0x00, + 0x07, 0xC3, 0xE0, 0x00, 0x0F, 0x87, 0xC0, 0x00, 0x1F, 0x0F, 0x80, 0x00, + 0x3E, 0x1F, 0x00, 0x00, 0x7C, 0x3E, 0x00, 0x00, 0xF8, 0x7C, 0x00, 0x01, + 0xF0, 0xF8, 0x00, 0x07, 0xC1, 0xF0, 0x00, 0x0F, 0x83, 0xE0, 0x00, 0x1E, + 0x07, 0xC0, 0x00, 0x7C, 0x0F, 0x80, 0x01, 0xF0, 0x1F, 0x00, 0x03, 0xE0, + 0x3E, 0x00, 0x1F, 0x80, 0x7C, 0x00, 0x7C, 0x00, 0xF8, 0x0F, 0xF0, 0x07, + 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xF0, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x07, + 0xFF, 0xFF, 0xE0, 0x7C, 0x00, 0x1C, 0x0F, 0x80, 0x01, 0x81, 0xF0, 0x00, + 0x30, 0x3E, 0x00, 0x02, 0x07, 0xC0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x20, 0x0F, 0x80, 0x04, + 0x01, 0xF0, 0x01, 0x80, 0x3E, 0x00, 0x70, 0x07, 0xFF, 0xFE, 0x00, 0xFF, + 0xFF, 0xC0, 0x1F, 0x00, 0x38, 0x03, 0xE0, 0x03, 0x00, 0x7C, 0x00, 0x20, + 0x0F, 0x80, 0x04, 0x01, 0xF0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x07, 0xC0, + 0x00, 0x00, 0xF8, 0x00, 0x03, 0x1F, 0x00, 0x00, 0x43, 0xE0, 0x00, 0x18, + 0x7C, 0x00, 0x07, 0x0F, 0x80, 0x01, 0xC1, 0xF0, 0x00, 0xF8, 0x7F, 0xFF, + 0xFF, 0x3F, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0x1F, + 0x00, 0x07, 0x1F, 0x00, 0x03, 0x1F, 0x00, 0x03, 0x1F, 0x00, 0x01, 0x1F, + 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, + 0x00, 0x08, 0x1F, 0x00, 0x08, 0x1F, 0x00, 0x18, 0x1F, 0x00, 0x38, 0x1F, + 0xFF, 0xF8, 0x1F, 0xFF, 0xF8, 0x1F, 0x00, 0x38, 0x1F, 0x00, 0x18, 0x1F, + 0x00, 0x08, 0x1F, 0x00, 0x08, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x3F, 0x80, 0x00, 0xFF, + 0xF0, 0x00, 0x00, 0x0F, 0xF0, 0x08, 0x00, 0xFF, 0xFE, 0x70, 0x07, 0xE0, + 0x1F, 0xE0, 0x1F, 0x00, 0x0F, 0xC0, 0x78, 0x00, 0x07, 0x81, 0xE0, 0x00, + 0x07, 0x07, 0xC0, 0x00, 0x0E, 0x1F, 0x00, 0x00, 0x0C, 0x3E, 0x00, 0x00, + 0x08, 0xF8, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, + 0x0F, 0x80, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, + 0x7C, 0x00, 0x03, 0xFF, 0xF8, 0x00, 0x01, 0xFD, 0xF0, 0x00, 0x01, 0xF3, + 0xE0, 0x00, 0x03, 0xE7, 0xC0, 0x00, 0x07, 0xCF, 0x80, 0x00, 0x0F, 0x8F, + 0x80, 0x00, 0x1F, 0x1F, 0x00, 0x00, 0x3E, 0x3E, 0x00, 0x00, 0x7C, 0x3E, + 0x00, 0x00, 0xF8, 0x7C, 0x00, 0x01, 0xF0, 0x7C, 0x00, 0x03, 0xE0, 0xFC, + 0x00, 0x07, 0xC0, 0xFC, 0x00, 0x0F, 0x80, 0x7C, 0x00, 0x3F, 0x00, 0x7F, + 0x01, 0xFC, 0x00, 0x3F, 0xFF, 0xC0, 0x00, 0x0F, 0xF8, 0x00, 0xFF, 0xE0, + 0x1F, 0xFC, 0xFE, 0x00, 0x1F, 0xC1, 0xF0, 0x00, 0x3E, 0x07, 0xC0, 0x00, + 0xF8, 0x1F, 0x00, 0x03, 0xE0, 0x7C, 0x00, 0x0F, 0x81, 0xF0, 0x00, 0x3E, + 0x07, 0xC0, 0x00, 0xF8, 0x1F, 0x00, 0x03, 0xE0, 0x7C, 0x00, 0x0F, 0x81, + 0xF0, 0x00, 0x3E, 0x07, 0xC0, 0x00, 0xF8, 0x1F, 0x00, 0x03, 0xE0, 0x7C, + 0x00, 0x0F, 0x81, 0xFF, 0xFF, 0xFE, 0x07, 0xFF, 0xFF, 0xF8, 0x1F, 0x00, + 0x03, 0xE0, 0x7C, 0x00, 0x0F, 0x81, 0xF0, 0x00, 0x3E, 0x07, 0xC0, 0x00, + 0xF8, 0x1F, 0x00, 0x03, 0xE0, 0x7C, 0x00, 0x0F, 0x81, 0xF0, 0x00, 0x3E, + 0x07, 0xC0, 0x00, 0xF8, 0x1F, 0x00, 0x03, 0xE0, 0x7C, 0x00, 0x0F, 0x81, + 0xF0, 0x00, 0x3E, 0x07, 0xC0, 0x00, 0xF8, 0x1F, 0x00, 0x03, 0xE0, 0xFE, + 0x00, 0x1F, 0xCF, 0xFE, 0x01, 0xFF, 0xC0, 0xFF, 0xF8, 0xFE, 0x03, 0xE0, + 0x1F, 0x00, 0xF8, 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, + 0xE0, 0x1F, 0x00, 0xF8, 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, + 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, + 0x7C, 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x0F, 0xE3, 0xFF, 0xE0, 0x0F, 0xFF, + 0x80, 0xFE, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, + 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0x00, + 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x7C, + 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, + 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3C, 0x0E, 0x1E, 0x0F, 0x8F, 0x07, + 0xCF, 0x01, 0xFF, 0x00, 0x7E, 0x00, 0xFF, 0xF8, 0x3F, 0xFC, 0x3F, 0xC0, + 0x07, 0xE0, 0x0F, 0x80, 0x07, 0x80, 0x0F, 0x80, 0x07, 0x00, 0x0F, 0x80, + 0x0E, 0x00, 0x0F, 0x80, 0x1C, 0x00, 0x0F, 0x80, 0x38, 0x00, 0x0F, 0x80, + 0x70, 0x00, 0x0F, 0x80, 0xE0, 0x00, 0x0F, 0x81, 0xC0, 0x00, 0x0F, 0x83, + 0x80, 0x00, 0x0F, 0x87, 0x00, 0x00, 0x0F, 0x9E, 0x00, 0x00, 0x0F, 0xBC, + 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x0F, 0xDF, + 0x80, 0x00, 0x0F, 0x8F, 0xC0, 0x00, 0x0F, 0x87, 0xE0, 0x00, 0x0F, 0x83, + 0xF0, 0x00, 0x0F, 0x81, 0xF8, 0x00, 0x0F, 0x80, 0xFC, 0x00, 0x0F, 0x80, + 0x7E, 0x00, 0x0F, 0x80, 0x3F, 0x00, 0x0F, 0x80, 0x3F, 0x80, 0x0F, 0x80, + 0x1F, 0x80, 0x0F, 0x80, 0x0F, 0xC0, 0x0F, 0x80, 0x07, 0xE0, 0x0F, 0x80, + 0x07, 0xF0, 0x1F, 0xC0, 0x07, 0xFC, 0xFF, 0xF8, 0x3F, 0xFF, 0xFF, 0xF0, + 0x00, 0x0F, 0xF0, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x7C, 0x00, 0x00, + 0x1F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x7C, 0x00, + 0x00, 0x1F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x7C, + 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, 0x00, 0x00, + 0x7C, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, 0x00, + 0x00, 0x7C, 0x00, 0x01, 0x1F, 0x00, 0x00, 0xC7, 0xC0, 0x00, 0x21, 0xF0, + 0x00, 0x18, 0x7C, 0x00, 0x0E, 0x1F, 0x00, 0x1F, 0x8F, 0xFF, 0xFF, 0xCF, + 0xFF, 0xFF, 0xF0, 0xFF, 0x80, 0x00, 0x03, 0xFE, 0x7F, 0x80, 0x00, 0x07, + 0xF0, 0x3F, 0x00, 0x00, 0x1F, 0xC0, 0x7E, 0x00, 0x00, 0x3F, 0x80, 0xFE, + 0x00, 0x00, 0xFF, 0x01, 0xFC, 0x00, 0x01, 0xBE, 0x03, 0x7C, 0x00, 0x03, + 0x7C, 0x06, 0xF8, 0x00, 0x0E, 0xF8, 0x0D, 0xF8, 0x00, 0x19, 0xF0, 0x19, + 0xF0, 0x00, 0x73, 0xE0, 0x33, 0xF0, 0x00, 0xC7, 0xC0, 0x63, 0xE0, 0x03, + 0x8F, 0x80, 0xC7, 0xE0, 0x06, 0x1F, 0x01, 0x87, 0xC0, 0x1C, 0x3E, 0x03, + 0x0F, 0xC0, 0x30, 0x7C, 0x06, 0x0F, 0x80, 0x60, 0xF8, 0x0C, 0x1F, 0x81, + 0x81, 0xF0, 0x18, 0x1F, 0x03, 0x03, 0xE0, 0x30, 0x3F, 0x0C, 0x07, 0xC0, + 0x60, 0x3E, 0x18, 0x0F, 0x80, 0xC0, 0x7C, 0x70, 0x1F, 0x01, 0x80, 0x7C, + 0xC0, 0x3E, 0x03, 0x00, 0xFB, 0x80, 0x7C, 0x06, 0x00, 0xFE, 0x00, 0xF8, + 0x0C, 0x01, 0xFC, 0x01, 0xF0, 0x18, 0x03, 0xF0, 0x03, 0xE0, 0x30, 0x03, + 0xE0, 0x07, 0xC0, 0x60, 0x07, 0x80, 0x0F, 0x81, 0xE0, 0x07, 0x00, 0x1F, + 0x07, 0xE0, 0x0C, 0x00, 0xFF, 0x3F, 0xF0, 0x08, 0x07, 0xFF, 0x80, 0xFF, + 0x00, 0x03, 0xFF, 0x3F, 0x80, 0x00, 0xFC, 0x1F, 0xC0, 0x00, 0x78, 0x0F, + 0xC0, 0x00, 0x30, 0x0F, 0xE0, 0x00, 0x30, 0x0F, 0xF0, 0x00, 0x30, 0x0D, + 0xF8, 0x00, 0x30, 0x0D, 0xFC, 0x00, 0x30, 0x0C, 0xFC, 0x00, 0x30, 0x0C, + 0x7E, 0x00, 0x30, 0x0C, 0x3F, 0x00, 0x30, 0x0C, 0x1F, 0x80, 0x30, 0x0C, + 0x1F, 0xC0, 0x30, 0x0C, 0x0F, 0xE0, 0x30, 0x0C, 0x07, 0xE0, 0x30, 0x0C, + 0x03, 0xF0, 0x30, 0x0C, 0x01, 0xF8, 0x30, 0x0C, 0x01, 0xFC, 0x30, 0x0C, + 0x00, 0xFE, 0x30, 0x0C, 0x00, 0x7E, 0x30, 0x0C, 0x00, 0x3F, 0x30, 0x0C, + 0x00, 0x1F, 0xB0, 0x0C, 0x00, 0x0F, 0xF0, 0x0C, 0x00, 0x0F, 0xF0, 0x0C, + 0x00, 0x07, 0xF0, 0x0C, 0x00, 0x03, 0xF0, 0x0C, 0x00, 0x01, 0xF0, 0x0C, + 0x00, 0x00, 0xF0, 0x1E, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x70, 0xFF, + 0xC0, 0x00, 0x30, 0x00, 0x00, 0x00, 0x10, 0x00, 0x1F, 0xE0, 0x00, 0x03, + 0xFF, 0xF0, 0x00, 0x1F, 0x03, 0xE0, 0x01, 0xF0, 0x03, 0xE0, 0x0F, 0x80, + 0x07, 0xC0, 0x7C, 0x00, 0x0F, 0x01, 0xE0, 0x00, 0x1E, 0x0F, 0x80, 0x00, + 0x7C, 0x3C, 0x00, 0x00, 0xF1, 0xF0, 0x00, 0x03, 0xE7, 0xC0, 0x00, 0x0F, + 0x9E, 0x00, 0x00, 0x1E, 0xF8, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0x01, 0xFF, + 0x80, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x7F, 0xE0, + 0x00, 0x01, 0xFF, 0x80, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x1F, 0xF8, 0x00, + 0x00, 0x7D, 0xF0, 0x00, 0x03, 0xE7, 0xC0, 0x00, 0x0F, 0x9F, 0x00, 0x00, + 0x3E, 0x3C, 0x00, 0x00, 0xF0, 0xF8, 0x00, 0x07, 0xC1, 0xE0, 0x00, 0x1E, + 0x07, 0xC0, 0x00, 0xF8, 0x0F, 0x80, 0x07, 0xC0, 0x1F, 0x00, 0x3E, 0x00, + 0x1F, 0x03, 0xE0, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0xFF, + 0xFF, 0x00, 0x7F, 0xFF, 0x80, 0x7C, 0x1F, 0xC0, 0xF8, 0x07, 0xC1, 0xF0, + 0x07, 0xC3, 0xE0, 0x0F, 0x87, 0xC0, 0x0F, 0x8F, 0x80, 0x1F, 0x1F, 0x00, + 0x3E, 0x3E, 0x00, 0x7C, 0x7C, 0x00, 0xF8, 0xF8, 0x01, 0xF1, 0xF0, 0x07, + 0xC3, 0xE0, 0x0F, 0x87, 0xC0, 0x3E, 0x0F, 0x81, 0xF8, 0x1F, 0xFF, 0xC0, + 0x3F, 0xFE, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x03, + 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3E, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x07, 0xF0, + 0x00, 0x3F, 0xFC, 0x00, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFF, 0xF8, + 0x00, 0x07, 0xC0, 0xF8, 0x00, 0x3E, 0x00, 0x7C, 0x00, 0xF8, 0x00, 0x7C, + 0x03, 0xE0, 0x00, 0x7C, 0x07, 0x80, 0x00, 0x78, 0x1F, 0x00, 0x00, 0xF8, + 0x3C, 0x00, 0x00, 0xF0, 0xF8, 0x00, 0x01, 0xF1, 0xF0, 0x00, 0x03, 0xE3, + 0xC0, 0x00, 0x03, 0xCF, 0x80, 0x00, 0x07, 0xDF, 0x00, 0x00, 0x0F, 0xBE, + 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x3E, 0xF8, 0x00, 0x00, 0x7D, 0xF0, + 0x00, 0x00, 0xFB, 0xE0, 0x00, 0x01, 0xF7, 0xC0, 0x00, 0x03, 0xEF, 0x80, + 0x00, 0x07, 0xCF, 0x00, 0x00, 0x1F, 0x1F, 0x00, 0x00, 0x3E, 0x3E, 0x00, + 0x00, 0x7C, 0x3C, 0x00, 0x01, 0xF0, 0x7C, 0x00, 0x03, 0xE0, 0x78, 0x00, + 0x0F, 0x80, 0x78, 0x00, 0x1E, 0x00, 0x78, 0x00, 0x78, 0x00, 0x7C, 0x03, + 0xE0, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x1F, 0xC0, + 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x1F, 0xC0, + 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x03, 0xF8, + 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x1F, + 0x03, 0xF8, 0x01, 0xF0, 0x0F, 0x80, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x03, + 0xE0, 0x1F, 0x00, 0x3E, 0x01, 0xF0, 0x03, 0xE0, 0x1F, 0x00, 0x3E, 0x01, + 0xF0, 0x03, 0xE0, 0x1F, 0x00, 0x3E, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, + 0x7C, 0x01, 0xF0, 0x0F, 0x80, 0x1F, 0x07, 0xF0, 0x01, 0xFF, 0xFC, 0x00, + 0x1F, 0xFE, 0x00, 0x01, 0xF1, 0xF0, 0x00, 0x1F, 0x1F, 0x80, 0x01, 0xF0, + 0xF8, 0x00, 0x1F, 0x07, 0xC0, 0x01, 0xF0, 0x3E, 0x00, 0x1F, 0x03, 0xF0, + 0x01, 0xF0, 0x1F, 0x80, 0x1F, 0x00, 0xFC, 0x01, 0xF0, 0x07, 0xC0, 0x1F, + 0x00, 0x7E, 0x01, 0xF0, 0x03, 0xF0, 0x1F, 0x00, 0x1F, 0x83, 0xF8, 0x00, + 0xFC, 0xFF, 0xF0, 0x0F, 0xF0, 0x03, 0xF0, 0x20, 0x7F, 0xF3, 0x07, 0xC1, + 0xF8, 0x78, 0x03, 0xC3, 0x80, 0x0E, 0x3C, 0x00, 0x31, 0xE0, 0x01, 0xCF, + 0x00, 0x06, 0x7C, 0x00, 0x33, 0xE0, 0x01, 0x9F, 0x80, 0x00, 0x7E, 0x00, + 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xE0, 0x00, 0xFF, 0xC0, 0x01, + 0xFF, 0x00, 0x07, 0xFE, 0x00, 0x0F, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0x7F, + 0x00, 0x01, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xC0, 0x00, 0xFE, 0x00, + 0x07, 0xF8, 0x00, 0x3F, 0xC0, 0x01, 0xEF, 0x00, 0x1F, 0x3C, 0x01, 0xF1, + 0xF8, 0x1F, 0x0C, 0xFF, 0xF0, 0x40, 0xFE, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xC0, 0x7C, 0x07, 0xF0, 0x0F, 0x80, 0x3C, 0x01, 0xF0, + 0x07, 0x00, 0x3E, 0x00, 0x60, 0x07, 0xC0, 0x08, 0x00, 0xF8, 0x00, 0x00, + 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x0F, 0x80, + 0x00, 0x01, 0xF0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, + 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, + 0x00, 0x0F, 0x80, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x07, + 0xC0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x00, + 0x00, 0x7C, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x7F, + 0x00, 0x00, 0x7F, 0xFC, 0x00, 0xFF, 0xF8, 0x03, 0xFF, 0x3F, 0xE0, 0x00, + 0xFC, 0x0F, 0x80, 0x00, 0x78, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, + 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, + 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, + 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, + 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, + 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, + 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, + 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, 0x20, 0x07, 0xC0, 0x00, + 0x60, 0x07, 0xC0, 0x00, 0x60, 0x03, 0xE0, 0x00, 0xC0, 0x03, 0xF0, 0x01, + 0xC0, 0x01, 0xFC, 0x07, 0x80, 0x00, 0x7F, 0xFE, 0x00, 0x00, 0x0F, 0xF8, + 0x00, 0xFF, 0xF8, 0x01, 0xFF, 0x3F, 0xC0, 0x00, 0x7E, 0x0F, 0x80, 0x00, + 0x3C, 0x0F, 0xC0, 0x00, 0x38, 0x07, 0xC0, 0x00, 0x38, 0x07, 0xC0, 0x00, + 0x30, 0x03, 0xE0, 0x00, 0x70, 0x03, 0xE0, 0x00, 0x60, 0x01, 0xF0, 0x00, + 0x60, 0x01, 0xF0, 0x00, 0xE0, 0x01, 0xF8, 0x00, 0xC0, 0x00, 0xF8, 0x01, + 0xC0, 0x00, 0xF8, 0x01, 0x80, 0x00, 0x7C, 0x01, 0x80, 0x00, 0x7C, 0x03, + 0x80, 0x00, 0x3E, 0x03, 0x00, 0x00, 0x3E, 0x07, 0x00, 0x00, 0x1F, 0x06, + 0x00, 0x00, 0x1F, 0x06, 0x00, 0x00, 0x1F, 0x8E, 0x00, 0x00, 0x0F, 0x8C, + 0x00, 0x00, 0x0F, 0x9C, 0x00, 0x00, 0x07, 0xD8, 0x00, 0x00, 0x07, 0xD8, + 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x01, 0xF0, + 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0xE0, + 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x40, 0x00, 0xFF, 0xF1, 0xFF, + 0xF0, 0x1F, 0xF3, 0xF8, 0x07, 0xF8, 0x00, 0x7C, 0x1F, 0x80, 0x3F, 0x00, + 0x03, 0x80, 0xF8, 0x01, 0xF0, 0x00, 0x30, 0x0F, 0x80, 0x1F, 0x00, 0x03, + 0x00, 0x7C, 0x00, 0xF8, 0x00, 0x30, 0x07, 0xC0, 0x0F, 0x80, 0x06, 0x00, + 0x3E, 0x00, 0x7C, 0x00, 0x60, 0x03, 0xE0, 0x07, 0xC0, 0x06, 0x00, 0x3E, + 0x00, 0x7C, 0x00, 0xC0, 0x01, 0xF0, 0x07, 0xE0, 0x0C, 0x00, 0x1F, 0x00, + 0xFE, 0x01, 0xC0, 0x01, 0xF0, 0x0D, 0xE0, 0x18, 0x00, 0x0F, 0x80, 0xDF, + 0x01, 0x80, 0x00, 0xF8, 0x19, 0xF0, 0x30, 0x00, 0x07, 0xC1, 0x8F, 0x83, + 0x00, 0x00, 0x7C, 0x38, 0xF8, 0x30, 0x00, 0x07, 0xC3, 0x0F, 0x86, 0x00, + 0x00, 0x3E, 0x30, 0x7C, 0x60, 0x00, 0x03, 0xE7, 0x07, 0xCE, 0x00, 0x00, + 0x3E, 0x60, 0x3E, 0xC0, 0x00, 0x01, 0xF6, 0x03, 0xEC, 0x00, 0x00, 0x1F, + 0xE0, 0x3F, 0xC0, 0x00, 0x01, 0xFC, 0x01, 0xF8, 0x00, 0x00, 0x0F, 0xC0, + 0x1F, 0x80, 0x00, 0x00, 0xF8, 0x01, 0xF8, 0x00, 0x00, 0x0F, 0x80, 0x0F, + 0x00, 0x00, 0x00, 0x78, 0x00, 0xF0, 0x00, 0x00, 0x07, 0x00, 0x07, 0x00, + 0x00, 0x00, 0x70, 0x00, 0x60, 0x00, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x7F, 0xFE, 0x03, 0xFF, 0x8F, 0xF8, 0x00, + 0x7E, 0x01, 0xFC, 0x00, 0x1C, 0x00, 0x7E, 0x00, 0x1C, 0x00, 0x1F, 0x00, + 0x0C, 0x00, 0x07, 0xC0, 0x0E, 0x00, 0x03, 0xF0, 0x0E, 0x00, 0x00, 0xF8, + 0x0E, 0x00, 0x00, 0x3E, 0x06, 0x00, 0x00, 0x1F, 0x86, 0x00, 0x00, 0x07, + 0xC7, 0x00, 0x00, 0x01, 0xF7, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, + 0x3F, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, + 0x03, 0xF8, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x03, 0x9F, 0x00, 0x00, + 0x01, 0x8F, 0xC0, 0x00, 0x01, 0x83, 0xF0, 0x00, 0x01, 0xC0, 0xF8, 0x00, + 0x01, 0xC0, 0x7E, 0x00, 0x01, 0xC0, 0x1F, 0x80, 0x01, 0xC0, 0x07, 0xC0, + 0x00, 0xC0, 0x03, 0xF0, 0x00, 0xE0, 0x00, 0xFC, 0x00, 0xE0, 0x00, 0x7F, + 0x00, 0xF0, 0x00, 0x1F, 0x80, 0xFC, 0x00, 0x1F, 0xF3, 0xFF, 0x80, 0x7F, + 0xFE, 0xFF, 0xF8, 0x03, 0xFF, 0x3F, 0xE0, 0x00, 0x7C, 0x1F, 0xC0, 0x00, + 0x78, 0x0F, 0xC0, 0x00, 0x70, 0x07, 0xE0, 0x00, 0x60, 0x03, 0xF0, 0x00, + 0xE0, 0x01, 0xF0, 0x01, 0xC0, 0x01, 0xF8, 0x01, 0x80, 0x00, 0xFC, 0x03, + 0x80, 0x00, 0x7C, 0x07, 0x00, 0x00, 0x7E, 0x06, 0x00, 0x00, 0x3F, 0x0E, + 0x00, 0x00, 0x1F, 0x1C, 0x00, 0x00, 0x1F, 0x98, 0x00, 0x00, 0x0F, 0xF8, + 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x03, 0xE0, + 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x03, 0xE0, + 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x03, 0xE0, + 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x03, 0xE0, + 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x07, 0xF0, + 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x3F, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0xF8, + 0xF0, 0x00, 0x3E, 0x38, 0x00, 0x0F, 0x86, 0x00, 0x03, 0xF0, 0xC0, 0x00, + 0x7C, 0x10, 0x00, 0x1F, 0x02, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF8, 0x00, + 0x00, 0x3E, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xFC, + 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF8, 0x00, 0x00, + 0x7E, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xFC, 0x00, + 0x00, 0x1F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x7E, + 0x00, 0x01, 0x0F, 0x80, 0x00, 0x63, 0xF0, 0x00, 0x0C, 0xFC, 0x00, 0x03, + 0xBF, 0x00, 0x00, 0xE7, 0xC0, 0x00, 0x7D, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, + 0xFF, 0xF0, 0xFF, 0xF0, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, + 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x1C, + 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, + 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0F, 0x07, 0xFC, 0xE0, 0x01, 0xC0, + 0x07, 0x00, 0x1C, 0x00, 0x38, 0x00, 0xE0, 0x03, 0x80, 0x07, 0x00, 0x1C, + 0x00, 0x70, 0x00, 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x1C, 0x00, 0x70, 0x01, + 0xC0, 0x03, 0x80, 0x0E, 0x00, 0x38, 0x00, 0x70, 0x01, 0xC0, 0x07, 0x00, + 0x0E, 0x00, 0x38, 0x00, 0xE0, 0x01, 0xC0, 0x07, 0x00, 0x1E, 0x00, 0x38, + 0x00, 0xE0, 0x03, 0xC0, 0x07, 0xFF, 0x83, 0xC0, 0xE0, 0x70, 0x38, 0x1C, + 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, + 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, + 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x3F, 0xFC, + 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x01, 0xF8, 0x00, 0x1F, 0x80, 0x03, 0xDC, + 0x00, 0x39, 0xC0, 0x07, 0x9E, 0x00, 0x70, 0xE0, 0x0F, 0x0F, 0x00, 0xE0, + 0x70, 0x1E, 0x07, 0x81, 0xC0, 0x38, 0x3C, 0x03, 0xC3, 0x80, 0x1C, 0x78, + 0x01, 0xE7, 0x00, 0x0E, 0xF0, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xE0, 0x3C, 0x0F, 0x81, 0xF0, 0x1E, 0x03, 0xC0, 0x38, 0x07, 0x03, + 0xF0, 0x07, 0x0E, 0x03, 0x81, 0xC1, 0xE0, 0x30, 0x78, 0x0E, 0x1E, 0x03, + 0x83, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x3E, 0x00, 0x73, 0x80, 0x70, 0xE0, + 0x70, 0x38, 0x38, 0x0E, 0x1C, 0x03, 0x8F, 0x00, 0xE3, 0xC0, 0x38, 0xF0, + 0x0E, 0x3E, 0x07, 0x8F, 0xC3, 0xE1, 0xFF, 0x3F, 0x1F, 0x07, 0x80, 0x06, + 0x00, 0x01, 0xF0, 0x00, 0x3F, 0x80, 0x00, 0x3C, 0x00, 0x01, 0xE0, 0x00, + 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xF0, + 0x00, 0x07, 0x80, 0x00, 0x3C, 0x7E, 0x01, 0xEF, 0xFC, 0x0F, 0xC3, 0xF0, + 0x7C, 0x07, 0x83, 0xC0, 0x3E, 0x1E, 0x00, 0xF0, 0xF0, 0x07, 0xC7, 0x80, + 0x1E, 0x3C, 0x00, 0xF1, 0xE0, 0x07, 0x8F, 0x00, 0x3C, 0x78, 0x01, 0xE3, + 0xC0, 0x0F, 0x1E, 0x00, 0x70, 0xF0, 0x03, 0x87, 0x80, 0x38, 0x3C, 0x01, + 0xC1, 0xE0, 0x1C, 0x0F, 0xC1, 0xC0, 0x1F, 0xFC, 0x00, 0x3F, 0x80, 0x01, + 0xFC, 0x00, 0xFF, 0xE0, 0x38, 0x3E, 0x0E, 0x03, 0xE3, 0x80, 0x7C, 0xE0, + 0x07, 0x18, 0x00, 0x03, 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, 0x03, 0x80, + 0x00, 0x70, 0x00, 0x0E, 0x00, 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x1B, 0xC0, + 0x02, 0x7C, 0x01, 0x87, 0xE0, 0x60, 0x7F, 0xF8, 0x07, 0xFE, 0x00, 0x3F, + 0x00, 0x00, 0x00, 0x60, 0x00, 0x0F, 0x80, 0x00, 0xFE, 0x00, 0x00, 0x78, + 0x00, 0x01, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x78, 0x00, + 0x01, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x7C, 0x78, 0x07, 0xFD, + 0xE0, 0x3C, 0x3F, 0x81, 0xC0, 0x3E, 0x0E, 0x00, 0xF8, 0x38, 0x01, 0xE1, + 0xE0, 0x07, 0x87, 0x00, 0x1E, 0x3C, 0x00, 0x78, 0xF0, 0x01, 0xE3, 0xC0, + 0x07, 0x8F, 0x00, 0x1E, 0x3C, 0x00, 0x78, 0xF0, 0x01, 0xE3, 0xE0, 0x07, + 0x87, 0x80, 0x1E, 0x1F, 0x00, 0x78, 0x3E, 0x03, 0xE0, 0xFC, 0x1F, 0xF0, + 0xFF, 0xDF, 0x00, 0xFC, 0x60, 0x03, 0xF8, 0x03, 0xFF, 0x01, 0xC1, 0xE0, + 0xC0, 0x3C, 0x70, 0x0F, 0x98, 0x01, 0xE7, 0xFF, 0xFB, 0xFF, 0xFE, 0xE0, + 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xF0, 0x00, 0x3C, 0x00, + 0x1F, 0x00, 0x05, 0xE0, 0x02, 0x7C, 0x01, 0x8F, 0xC1, 0xC3, 0xFF, 0xE0, + 0x7F, 0xF0, 0x07, 0xF0, 0x00, 0x00, 0x7E, 0x00, 0xFF, 0xC0, 0xE3, 0xE0, + 0x60, 0x70, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x1E, 0x00, 0x0F, 0x00, + 0x07, 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x07, 0xFF, 0x83, 0xFF, 0xC0, 0x3C, + 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x07, 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x00, + 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x07, 0x80, + 0x03, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x3F, + 0x00, 0xFF, 0xF0, 0x00, 0x01, 0xF8, 0x00, 0x3F, 0xF0, 0x03, 0xC7, 0xFE, + 0x3C, 0x1F, 0xF1, 0xC0, 0x70, 0x1E, 0x03, 0xC0, 0xF0, 0x0E, 0x07, 0x80, + 0x70, 0x3C, 0x03, 0x81, 0xE0, 0x1C, 0x07, 0x80, 0xC0, 0x3E, 0x0E, 0x00, + 0x78, 0xE0, 0x01, 0xFC, 0x00, 0x18, 0x00, 0x01, 0x80, 0x00, 0x18, 0x00, + 0x01, 0xE0, 0x00, 0x0F, 0xFF, 0xC0, 0x3F, 0xFF, 0x80, 0xFF, 0xFE, 0x0C, + 0x00, 0x38, 0xC0, 0x00, 0x4C, 0x00, 0x02, 0x60, 0x00, 0x17, 0x00, 0x01, + 0x38, 0x00, 0x09, 0xE0, 0x00, 0x87, 0xC0, 0x38, 0x1F, 0xFF, 0x00, 0x3F, + 0xC0, 0x00, 0x06, 0x00, 0x00, 0xF8, 0x00, 0x0F, 0xE0, 0x00, 0x07, 0x80, + 0x00, 0x1E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x80, 0x00, + 0x1E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x87, 0xE0, 0x1E, + 0x7F, 0xC0, 0x7B, 0x0F, 0x81, 0xF8, 0x1E, 0x07, 0x80, 0x3C, 0x1E, 0x00, + 0xF0, 0x78, 0x03, 0xC1, 0xE0, 0x0F, 0x07, 0x80, 0x3C, 0x1E, 0x00, 0xF0, + 0x78, 0x03, 0xC1, 0xE0, 0x0F, 0x07, 0x80, 0x3C, 0x1E, 0x00, 0xF0, 0x78, + 0x03, 0xC1, 0xE0, 0x0F, 0x07, 0x80, 0x3C, 0x1E, 0x00, 0xF0, 0x78, 0x03, + 0xC3, 0xF0, 0x1F, 0x9F, 0xF1, 0xFF, 0x0E, 0x03, 0xE0, 0x7C, 0x0F, 0x80, + 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x70, + 0x7E, 0x1F, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, + 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x07, + 0xE7, 0xFF, 0x00, 0xE0, 0x1F, 0x01, 0xF0, 0x1F, 0x00, 0xE0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x70, 0x3F, 0x07, + 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, + 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, + 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xE0, 0x0E, 0xE0, + 0xEF, 0x1C, 0xFF, 0x87, 0xE0, 0x06, 0x00, 0x00, 0x7C, 0x00, 0x03, 0xF8, + 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x80, + 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x78, 0x00, + 0x00, 0xF0, 0x7F, 0xE1, 0xE0, 0x3E, 0x03, 0xC0, 0x70, 0x07, 0x81, 0x80, + 0x0F, 0x06, 0x00, 0x1E, 0x18, 0x00, 0x3C, 0x60, 0x00, 0x79, 0x80, 0x00, + 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x03, 0xDE, 0x00, 0x07, 0x9E, 0x00, 0x0F, + 0x3E, 0x00, 0x1E, 0x3E, 0x00, 0x3C, 0x3E, 0x00, 0x78, 0x3C, 0x00, 0xF0, + 0x3C, 0x01, 0xE0, 0x7C, 0x03, 0xC0, 0x7C, 0x0F, 0xC0, 0xFE, 0x7F, 0xE3, + 0xFF, 0x03, 0x03, 0xE1, 0xFC, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, + 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, + 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x01, + 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x07, 0xE7, 0xFF, 0x1E, 0x1F, 0x01, + 0xF8, 0x1F, 0xCF, 0xF0, 0xFF, 0x80, 0xFF, 0x0F, 0x70, 0xF8, 0x0F, 0x81, + 0xF8, 0x0F, 0x01, 0xE0, 0x1E, 0x00, 0xF0, 0x3C, 0x03, 0xC0, 0x1E, 0x07, + 0x80, 0x78, 0x03, 0xC0, 0xF0, 0x0F, 0x00, 0x78, 0x1E, 0x01, 0xE0, 0x0F, + 0x03, 0xC0, 0x3C, 0x01, 0xE0, 0x78, 0x07, 0x80, 0x3C, 0x0F, 0x00, 0xF0, + 0x07, 0x81, 0xE0, 0x1E, 0x00, 0xF0, 0x3C, 0x03, 0xC0, 0x1E, 0x07, 0x80, + 0x78, 0x03, 0xC0, 0xF0, 0x0F, 0x00, 0x78, 0x1E, 0x01, 0xE0, 0x0F, 0x03, + 0xC0, 0x3C, 0x01, 0xE0, 0x78, 0x07, 0x80, 0x3C, 0x1F, 0x81, 0xF8, 0x0F, + 0xCF, 0xFC, 0xFF, 0xC7, 0xFE, 0x1E, 0x1F, 0x83, 0xF9, 0xFF, 0x03, 0xFC, + 0x3E, 0x07, 0xC0, 0x7C, 0x1E, 0x00, 0xF0, 0x78, 0x03, 0xC1, 0xE0, 0x0F, + 0x07, 0x80, 0x3C, 0x1E, 0x00, 0xF0, 0x78, 0x03, 0xC1, 0xE0, 0x0F, 0x07, + 0x80, 0x3C, 0x1E, 0x00, 0xF0, 0x78, 0x03, 0xC1, 0xE0, 0x0F, 0x07, 0x80, + 0x3C, 0x1E, 0x00, 0xF0, 0x78, 0x03, 0xC1, 0xE0, 0x0F, 0x0F, 0xC0, 0x7E, + 0x7F, 0xC3, 0xFC, 0x01, 0xFE, 0x00, 0x1F, 0xFE, 0x00, 0xF0, 0x7C, 0x0F, + 0x80, 0xF8, 0x3C, 0x01, 0xF1, 0xE0, 0x03, 0xE7, 0x80, 0x0F, 0xBE, 0x00, + 0x3F, 0xF8, 0x00, 0x7F, 0xE0, 0x01, 0xFF, 0x80, 0x07, 0xFE, 0x00, 0x1F, + 0xF8, 0x00, 0x7F, 0xF0, 0x01, 0xE7, 0xC0, 0x07, 0x9F, 0x80, 0x3E, 0x3E, + 0x00, 0xF0, 0x7C, 0x07, 0x80, 0xF8, 0x3C, 0x01, 0xFF, 0xE0, 0x00, 0xFC, + 0x00, 0x0E, 0x3F, 0x07, 0xF7, 0xFE, 0x07, 0xE0, 0xF8, 0x3E, 0x03, 0xE1, + 0xE0, 0x0F, 0x0F, 0x00, 0x7C, 0x78, 0x03, 0xE3, 0xC0, 0x0F, 0x1E, 0x00, + 0x78, 0xF0, 0x03, 0xC7, 0x80, 0x1E, 0x3C, 0x00, 0xF1, 0xE0, 0x07, 0x8F, + 0x00, 0x38, 0x78, 0x03, 0xC3, 0xC0, 0x1E, 0x1E, 0x00, 0xE0, 0xF8, 0x0E, + 0x07, 0xE0, 0xE0, 0x3D, 0xFE, 0x01, 0xE7, 0xC0, 0x0F, 0x00, 0x00, 0x78, + 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, + 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x1F, 0x80, 0x03, 0xFF, 0x80, 0x00, 0x01, + 0xF8, 0x20, 0x3F, 0xF3, 0x03, 0xC1, 0xF8, 0x3C, 0x07, 0xC3, 0xC0, 0x1E, + 0x1C, 0x00, 0xF1, 0xE0, 0x07, 0x8E, 0x00, 0x3C, 0xF0, 0x01, 0xE7, 0x80, + 0x0F, 0x3C, 0x00, 0x79, 0xE0, 0x03, 0xCF, 0x00, 0x1E, 0x78, 0x00, 0xF3, + 0xE0, 0x07, 0x9F, 0x00, 0x3C, 0x7C, 0x01, 0xE3, 0xE0, 0x1F, 0x0F, 0xC1, + 0xF8, 0x3F, 0xF3, 0xC0, 0x7E, 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x80, + 0x00, 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, + 0xC0, 0x00, 0x1E, 0x00, 0x03, 0xF8, 0x00, 0x7F, 0xE0, 0x06, 0x3C, 0xFC, + 0xFE, 0xFA, 0x78, 0xF8, 0x71, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, 0x00, + 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, + 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x01, 0xF8, 0x0F, 0xFC, + 0x00, 0x1F, 0x91, 0x87, 0x98, 0x1D, 0xC0, 0x6E, 0x03, 0x70, 0x0B, 0xC0, + 0x5F, 0x80, 0x7E, 0x01, 0xFC, 0x07, 0xF0, 0x0F, 0xE0, 0x3F, 0x00, 0x7E, + 0x01, 0xF0, 0x07, 0xC0, 0x3E, 0x01, 0xF8, 0x0D, 0xE0, 0xC8, 0xF8, 0x00, + 0x04, 0x00, 0xC0, 0x0C, 0x01, 0xC0, 0x3C, 0x07, 0xFC, 0xFF, 0xC3, 0xC0, + 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, + 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xE2, + 0x1F, 0xC0, 0xF8, 0xFC, 0x0F, 0xE1, 0xF0, 0x0F, 0x83, 0xC0, 0x1E, 0x0F, + 0x00, 0x78, 0x3C, 0x01, 0xE0, 0xF0, 0x07, 0x83, 0xC0, 0x1E, 0x0F, 0x00, + 0x78, 0x3C, 0x01, 0xE0, 0xF0, 0x07, 0x83, 0xC0, 0x1E, 0x0F, 0x00, 0x78, + 0x3C, 0x01, 0xE0, 0xF0, 0x07, 0x83, 0xC0, 0x1E, 0x0F, 0x00, 0x78, 0x3C, + 0x01, 0xE0, 0xF8, 0x0F, 0x81, 0xF0, 0xFF, 0x03, 0xFE, 0x7F, 0x07, 0xE1, + 0xC0, 0xFF, 0x81, 0xFC, 0xFC, 0x01, 0xC1, 0xE0, 0x07, 0x07, 0x80, 0x18, + 0x0F, 0x00, 0x60, 0x3C, 0x01, 0x00, 0x78, 0x0C, 0x01, 0xE0, 0x30, 0x07, + 0x81, 0x80, 0x0F, 0x06, 0x00, 0x3C, 0x10, 0x00, 0x78, 0xC0, 0x01, 0xE3, + 0x00, 0x03, 0x98, 0x00, 0x0F, 0x60, 0x00, 0x3D, 0x00, 0x00, 0x7C, 0x00, + 0x01, 0xF0, 0x00, 0x03, 0x80, 0x00, 0x0E, 0x00, 0x00, 0x30, 0x00, 0x00, + 0x40, 0x00, 0xFF, 0x8F, 0xF8, 0x3F, 0x7E, 0x07, 0xE0, 0x0E, 0x3E, 0x03, + 0xC0, 0x0C, 0x1E, 0x03, 0xE0, 0x0C, 0x1E, 0x01, 0xE0, 0x0C, 0x1E, 0x01, + 0xE0, 0x18, 0x0F, 0x00, 0xF0, 0x18, 0x0F, 0x01, 0xF0, 0x10, 0x07, 0x81, + 0xF0, 0x30, 0x07, 0x81, 0x78, 0x30, 0x07, 0x83, 0x78, 0x60, 0x03, 0xC3, + 0x38, 0x60, 0x03, 0xC6, 0x3C, 0x40, 0x01, 0xC6, 0x3C, 0xC0, 0x01, 0xEC, + 0x1E, 0xC0, 0x01, 0xEC, 0x1F, 0x80, 0x00, 0xF8, 0x0F, 0x80, 0x00, 0xF8, + 0x0F, 0x00, 0x00, 0x70, 0x0F, 0x00, 0x00, 0x70, 0x07, 0x00, 0x00, 0x60, + 0x06, 0x00, 0x00, 0x20, 0x02, 0x00, 0x7F, 0xE7, 0xF0, 0x7E, 0x0F, 0x00, + 0xF8, 0x38, 0x01, 0xE0, 0xC0, 0x07, 0xC6, 0x00, 0x0F, 0x30, 0x00, 0x1E, + 0xC0, 0x00, 0x7E, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x07, 0xC0, + 0x00, 0x3F, 0x00, 0x00, 0xDE, 0x00, 0x06, 0x7C, 0x00, 0x30, 0xF0, 0x01, + 0xC1, 0xE0, 0x06, 0x07, 0xC0, 0x30, 0x0F, 0x01, 0xC0, 0x1E, 0x0F, 0x00, + 0xFC, 0xFE, 0x07, 0xFC, 0xFF, 0xC0, 0xFC, 0xFC, 0x01, 0xE1, 0xE0, 0x03, + 0x07, 0x80, 0x18, 0x0F, 0x00, 0x60, 0x3C, 0x01, 0x80, 0x78, 0x0C, 0x01, + 0xE0, 0x30, 0x03, 0xC0, 0xC0, 0x0F, 0x06, 0x00, 0x3E, 0x18, 0x00, 0x78, + 0x40, 0x01, 0xF3, 0x00, 0x03, 0xCC, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0x80, + 0x00, 0x7C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x06, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x40, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x60, + 0x00, 0x01, 0x80, 0x00, 0x0C, 0x00, 0x0F, 0xF0, 0x00, 0x7F, 0x80, 0x01, + 0xFC, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7F, 0xFF, 0x9F, 0xFF, 0xE6, 0x00, + 0xF1, 0x00, 0x78, 0x40, 0x3E, 0x00, 0x0F, 0x00, 0x07, 0x80, 0x03, 0xE0, + 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x07, 0x80, 0x03, + 0xE0, 0x01, 0xF0, 0x04, 0x78, 0x01, 0x3E, 0x00, 0xDF, 0x00, 0x37, 0x80, + 0x1F, 0xFF, 0xFE, 0xFF, 0xFF, 0x80, 0x01, 0xE0, 0x78, 0x1C, 0x07, 0x80, + 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, + 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x70, 0x1C, 0x0E, 0x00, 0x70, + 0x07, 0x00, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, + 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x01, 0xC0, + 0x1E, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xE0, 0x0F, 0x00, 0x70, 0x0F, 0x00, 0xE0, 0x1C, 0x03, + 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, + 0x70, 0x0E, 0x01, 0xC0, 0x1C, 0x01, 0xC0, 0x0E, 0x07, 0x01, 0xC0, 0x70, + 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0E, + 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x3C, 0x07, 0x03, 0xC0, 0xF0, 0x00, + 0x1F, 0x80, 0x00, 0xFF, 0x80, 0xC7, 0x0F, 0x87, 0xB8, 0x0F, 0xFC, 0x00, + 0x07, 0xC0}; + +const GFXglyph FreeSerif24pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 12, 0, 1}, // 0x20 ' ' + {0, 5, 32, 16, 6, -31}, // 0x21 '!' + {20, 12, 12, 19, 4, -31}, // 0x22 '"' + {38, 23, 31, 23, 0, -30}, // 0x23 '#' + {128, 19, 37, 24, 2, -33}, // 0x24 '$' + {216, 33, 32, 39, 3, -30}, // 0x25 '%' + {348, 32, 33, 37, 2, -31}, // 0x26 '&' + {480, 4, 12, 9, 3, -31}, // 0x27 ''' + {486, 12, 40, 16, 2, -31}, // 0x28 '(' + {546, 12, 40, 16, 2, -30}, // 0x29 ')' + {606, 16, 19, 24, 4, -30}, // 0x2A '*' + {644, 23, 23, 27, 2, -22}, // 0x2B '+' + {711, 6, 11, 12, 2, -4}, // 0x2C ',' + {720, 11, 2, 16, 2, -10}, // 0x2D '-' + {723, 5, 5, 12, 3, -3}, // 0x2E '.' + {727, 14, 32, 14, 0, -30}, // 0x2F '/' + {783, 22, 33, 23, 1, -31}, // 0x30 '0' + {874, 13, 32, 24, 5, -31}, // 0x31 '1' + {926, 21, 31, 23, 1, -30}, // 0x32 '2' + {1008, 18, 32, 23, 2, -30}, // 0x33 '3' + {1080, 21, 31, 24, 1, -30}, // 0x34 '4' + {1162, 19, 33, 24, 2, -31}, // 0x35 '5' + {1241, 21, 33, 23, 2, -31}, // 0x36 '6' + {1328, 20, 31, 24, 1, -30}, // 0x37 '7' + {1406, 18, 33, 23, 3, -31}, // 0x38 '8' + {1481, 21, 33, 24, 1, -31}, // 0x39 '9' + {1568, 5, 22, 12, 4, -20}, // 0x3A ':' + {1582, 6, 27, 12, 3, -20}, // 0x3B ';' + {1603, 24, 25, 27, 1, -24}, // 0x3C '<' + {1678, 24, 11, 27, 1, -16}, // 0x3D '=' + {1711, 24, 25, 27, 2, -23}, // 0x3E '>' + {1786, 17, 32, 21, 3, -31}, // 0x3F '?' + {1854, 32, 33, 41, 4, -31}, // 0x40 '@' + {1986, 32, 32, 34, 1, -31}, // 0x41 'A' + {2114, 27, 31, 30, 0, -30}, // 0x42 'B' + {2219, 28, 33, 31, 2, -31}, // 0x43 'C' + {2335, 31, 31, 34, 1, -30}, // 0x44 'D' + {2456, 27, 31, 29, 2, -30}, // 0x45 'E' + {2561, 24, 31, 27, 2, -30}, // 0x46 'F' + {2654, 31, 33, 35, 2, -31}, // 0x47 'G' + {2782, 30, 31, 34, 2, -30}, // 0x48 'H' + {2899, 13, 31, 15, 1, -30}, // 0x49 'I' + {2950, 17, 32, 18, 0, -30}, // 0x4A 'J' + {3018, 32, 31, 33, 1, -30}, // 0x4B 'K' + {3142, 26, 31, 29, 2, -30}, // 0x4C 'L' + {3243, 39, 31, 41, 1, -30}, // 0x4D 'M' + {3395, 32, 32, 34, 1, -30}, // 0x4E 'N' + {3523, 30, 33, 34, 2, -31}, // 0x4F 'O' + {3647, 23, 31, 27, 2, -30}, // 0x50 'P' + {3737, 31, 40, 34, 2, -31}, // 0x51 'Q' + {3892, 28, 31, 31, 2, -30}, // 0x52 'R' + {4001, 21, 33, 25, 2, -31}, // 0x53 'S' + {4088, 27, 31, 28, 1, -30}, // 0x54 'T' + {4193, 32, 32, 34, 1, -30}, // 0x55 'U' + {4321, 32, 32, 33, 0, -30}, // 0x56 'V' + {4449, 44, 32, 45, 0, -30}, // 0x57 'W' + {4625, 33, 31, 34, 0, -30}, // 0x58 'X' + {4753, 32, 31, 33, 0, -30}, // 0x59 'Y' + {4877, 27, 31, 29, 1, -30}, // 0x5A 'Z' + {4982, 9, 38, 16, 4, -30}, // 0x5B '[' + {5025, 14, 32, 14, 0, -30}, // 0x5C '\' + {5081, 9, 38, 16, 3, -30}, // 0x5D ']' + {5124, 20, 17, 22, 1, -30}, // 0x5E '^' + {5167, 24, 2, 23, 0, 5}, // 0x5F '_' + {5173, 10, 8, 12, 1, -31}, // 0x60 '`' + {5183, 18, 21, 20, 1, -20}, // 0x61 'a' + {5231, 21, 32, 24, 1, -31}, // 0x62 'b' + {5315, 19, 21, 21, 1, -20}, // 0x63 'c' + {5365, 22, 32, 23, 1, -31}, // 0x64 'd' + {5453, 18, 21, 21, 1, -20}, // 0x65 'e' + {5501, 17, 33, 18, 0, -32}, // 0x66 'f' + {5572, 21, 31, 22, 1, -20}, // 0x67 'g' + {5654, 22, 32, 23, 0, -31}, // 0x68 'h' + {5742, 11, 32, 13, 0, -31}, // 0x69 'i' + {5786, 12, 42, 16, 0, -31}, // 0x6A 'j' + {5849, 23, 32, 24, 1, -31}, // 0x6B 'k' + {5941, 11, 32, 12, 0, -31}, // 0x6C 'l' + {5985, 35, 21, 37, 1, -20}, // 0x6D 'm' + {6077, 22, 21, 23, 0, -20}, // 0x6E 'n' + {6135, 22, 21, 23, 1, -20}, // 0x6F 'o' + {6193, 21, 31, 24, 1, -20}, // 0x70 'p' + {6275, 21, 31, 23, 1, -20}, // 0x71 'q' + {6357, 15, 21, 16, 1, -20}, // 0x72 'r' + {6397, 13, 21, 17, 2, -20}, // 0x73 's' + {6432, 12, 26, 13, 1, -25}, // 0x74 't' + {6471, 22, 21, 23, 1, -20}, // 0x75 'u' + {6529, 22, 22, 22, 0, -20}, // 0x76 'v' + {6590, 32, 22, 32, 0, -20}, // 0x77 'w' + {6678, 22, 21, 23, 0, -20}, // 0x78 'x' + {6736, 22, 31, 22, 0, -20}, // 0x79 'y' + {6822, 18, 21, 20, 1, -20}, // 0x7A 'z' + {6870, 11, 41, 23, 5, -31}, // 0x7B '{' + {6927, 3, 32, 9, 3, -30}, // 0x7C '|' + {6939, 11, 41, 23, 7, -31}, // 0x7D '}' + {6996, 22, 5, 23, 1, -13}}; // 0x7E '~' + +const GFXfont FreeSerif24pt7b PROGMEM = {(uint8_t *)FreeSerif24pt7bBitmaps, + (GFXglyph *)FreeSerif24pt7bGlyphs, + 0x20, 0x7E, 56}; + +// Approx. 7682 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerif9pt7b.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerif9pt7b.h new file mode 100644 index 0000000..22f82e4 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerif9pt7b.h @@ -0,0 +1,197 @@ +#pragma once +#include + +const uint8_t FreeSerif9pt7bBitmaps[] PROGMEM = { + 0xFF, 0xEA, 0x03, 0xDE, 0xF7, 0x20, 0x11, 0x09, 0x04, 0x82, 0x4F, 0xF9, + 0x10, 0x89, 0xFF, 0x24, 0x12, 0x09, 0x0C, 0x80, 0x10, 0x7C, 0xD6, 0xD2, + 0xD0, 0xF0, 0x38, 0x1E, 0x17, 0x93, 0x93, 0xD6, 0x7C, 0x10, 0x38, 0x43, + 0x3C, 0x39, 0x21, 0x8A, 0x0C, 0x50, 0x65, 0x39, 0xCB, 0x20, 0xB9, 0x05, + 0x88, 0x4C, 0x44, 0x64, 0x21, 0xC0, 0x0E, 0x00, 0xC8, 0x06, 0x40, 0x32, + 0x01, 0xA0, 0x07, 0x78, 0x31, 0x87, 0x88, 0x46, 0x86, 0x34, 0x30, 0xC1, + 0xC7, 0x17, 0xCF, 0x00, 0xFE, 0x08, 0x88, 0x84, 0x63, 0x18, 0xC6, 0x10, + 0x82, 0x08, 0x20, 0x82, 0x08, 0x21, 0x0C, 0x63, 0x18, 0xC4, 0x22, 0x22, + 0x00, 0x63, 0x9A, 0xDC, 0x72, 0xB6, 0x08, 0x08, 0x04, 0x02, 0x01, 0x0F, + 0xF8, 0x40, 0x20, 0x10, 0x08, 0x00, 0xD8, 0xF0, 0xF0, 0x08, 0x84, 0x22, + 0x10, 0x8C, 0x42, 0x31, 0x00, 0x1C, 0x31, 0x98, 0xD8, 0x3C, 0x1E, 0x0F, + 0x07, 0x83, 0xC1, 0xE0, 0xD8, 0xC4, 0x61, 0xC0, 0x13, 0x8C, 0x63, 0x18, + 0xC6, 0x31, 0x8C, 0x67, 0x80, 0x3C, 0x4E, 0x86, 0x06, 0x06, 0x04, 0x0C, + 0x08, 0x10, 0x20, 0x41, 0xFE, 0x3C, 0xC6, 0x06, 0x04, 0x1C, 0x3E, 0x07, + 0x03, 0x03, 0x03, 0x06, 0xF8, 0x04, 0x18, 0x71, 0x64, 0xC9, 0xA3, 0x46, + 0xFE, 0x18, 0x30, 0x60, 0x0F, 0x10, 0x20, 0x3C, 0x0E, 0x07, 0x03, 0x03, + 0x03, 0x02, 0x04, 0xF8, 0x07, 0x1C, 0x30, 0x60, 0x60, 0xDC, 0xE6, 0xC3, + 0xC3, 0xC3, 0x43, 0x66, 0x3C, 0x7F, 0x82, 0x02, 0x02, 0x04, 0x04, 0x04, + 0x08, 0x08, 0x08, 0x10, 0x10, 0x3C, 0x8F, 0x1E, 0x3E, 0x4F, 0x06, 0x36, + 0xC7, 0x8F, 0x1B, 0x33, 0xC0, 0x3C, 0x66, 0xC2, 0xC3, 0xC3, 0xC3, 0xC3, + 0x63, 0x3F, 0x06, 0x06, 0x0C, 0x38, 0x60, 0xF0, 0x0F, 0xD8, 0x00, 0x03, + 0x28, 0x01, 0x87, 0x0E, 0x1C, 0x0C, 0x03, 0x80, 0x70, 0x0E, 0x00, 0x80, + 0xFF, 0x80, 0x00, 0x00, 0x0F, 0xF8, 0x80, 0x1C, 0x01, 0xC0, 0x1C, 0x01, + 0xC0, 0xE0, 0xE0, 0xE0, 0xC0, 0x00, 0x79, 0x1A, 0x18, 0x30, 0x60, 0x83, + 0x04, 0x10, 0x20, 0x40, 0x03, 0x00, 0x0F, 0x83, 0x8C, 0x60, 0x26, 0x02, + 0xC7, 0x9C, 0xC9, 0xD8, 0x9D, 0x99, 0xD9, 0x26, 0xEC, 0x60, 0x03, 0x04, + 0x0F, 0x80, 0x02, 0x00, 0x10, 0x01, 0xC0, 0x16, 0x00, 0x98, 0x04, 0xC0, + 0x43, 0x03, 0xF8, 0x20, 0x61, 0x03, 0x18, 0x1D, 0xE1, 0xF0, 0xFF, 0x86, + 0x1C, 0xC1, 0x98, 0x33, 0x0C, 0x7E, 0x0C, 0x31, 0x83, 0x30, 0x66, 0x0C, + 0xC3, 0x7F, 0xC0, 0x1F, 0x26, 0x1D, 0x81, 0xE0, 0x1C, 0x01, 0x80, 0x30, + 0x06, 0x00, 0xC0, 0x0C, 0x00, 0xC1, 0x8F, 0xC0, 0xFF, 0x03, 0x1C, 0x30, + 0x63, 0x07, 0x30, 0x33, 0x03, 0x30, 0x33, 0x03, 0x30, 0x33, 0x06, 0x30, + 0xCF, 0xF0, 0xFF, 0x98, 0x26, 0x01, 0x80, 0x61, 0x1F, 0xC6, 0x11, 0x80, + 0x60, 0x18, 0x16, 0x0F, 0xFE, 0xFF, 0xB0, 0x58, 0x0C, 0x06, 0x13, 0xF9, + 0x84, 0xC0, 0x60, 0x30, 0x18, 0x1E, 0x00, 0x1F, 0x23, 0x0E, 0x60, 0x26, + 0x00, 0xC0, 0x0C, 0x0F, 0xC0, 0x6C, 0x06, 0xC0, 0x66, 0x06, 0x30, 0x60, + 0xF8, 0xF1, 0xEC, 0x19, 0x83, 0x30, 0x66, 0x0C, 0xFF, 0x98, 0x33, 0x06, + 0x60, 0xCC, 0x19, 0x83, 0x78, 0xF0, 0xF6, 0x66, 0x66, 0x66, 0x66, 0x6F, + 0x3C, 0x61, 0x86, 0x18, 0x61, 0x86, 0x18, 0x6D, 0xBC, 0xF3, 0xE6, 0x08, + 0x61, 0x06, 0x20, 0x64, 0x07, 0x80, 0x6C, 0x06, 0x60, 0x63, 0x06, 0x18, + 0x60, 0xCF, 0x3F, 0xF0, 0x18, 0x06, 0x01, 0x80, 0x60, 0x18, 0x06, 0x01, + 0x80, 0x60, 0x18, 0x16, 0x0B, 0xFE, 0xF0, 0x0E, 0x70, 0x38, 0xE0, 0x71, + 0xE1, 0x62, 0xC2, 0xC5, 0xC9, 0x89, 0x93, 0x13, 0x26, 0x23, 0x8C, 0x47, + 0x18, 0x84, 0x33, 0x88, 0xF0, 0xE0, 0xEE, 0x09, 0xC1, 0x2C, 0x25, 0xC4, + 0x9C, 0x91, 0x92, 0x1A, 0x41, 0xC8, 0x19, 0x03, 0x70, 0x20, 0x1F, 0x06, + 0x31, 0x83, 0x20, 0x2C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x68, 0x09, + 0x83, 0x18, 0xC1, 0xF0, 0xFE, 0x31, 0x98, 0x6C, 0x36, 0x1B, 0x19, 0xF8, + 0xC0, 0x60, 0x30, 0x18, 0x1E, 0x00, 0x1F, 0x06, 0x31, 0x83, 0x20, 0x2C, + 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x68, 0x19, 0x83, 0x18, 0xC0, 0xE0, + 0x0E, 0x00, 0xE0, 0x07, 0xFE, 0x0C, 0x61, 0x86, 0x30, 0xC6, 0x18, 0xC6, + 0x1F, 0x83, 0x70, 0x67, 0x0C, 0x71, 0x87, 0x78, 0x70, 0x1D, 0x31, 0x98, + 0x4C, 0x07, 0x80, 0xE0, 0x1C, 0x07, 0x01, 0xA0, 0xD8, 0xCB, 0xC0, 0xFF, + 0xF8, 0xCE, 0x18, 0x83, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, + 0xC0, 0x18, 0x07, 0x80, 0xF0, 0xEC, 0x09, 0x81, 0x30, 0x26, 0x04, 0xC0, + 0x98, 0x13, 0x02, 0x60, 0x4C, 0x08, 0xC2, 0x0F, 0x80, 0xF8, 0x77, 0x02, + 0x30, 0x23, 0x04, 0x18, 0x41, 0x84, 0x0C, 0x80, 0xC8, 0x07, 0x00, 0x70, + 0x02, 0x00, 0x20, 0xFB, 0xE7, 0xB0, 0xC0, 0x8C, 0x20, 0x86, 0x18, 0x41, + 0x8C, 0x40, 0xCB, 0x20, 0x65, 0x90, 0x1A, 0x70, 0x0E, 0x38, 0x03, 0x1C, + 0x01, 0x04, 0x00, 0x82, 0x00, 0xFC, 0xF9, 0x83, 0x06, 0x10, 0x19, 0x00, + 0xD0, 0x03, 0x00, 0x1C, 0x01, 0x30, 0x11, 0xC1, 0x86, 0x08, 0x19, 0xE3, + 0xF0, 0xF8, 0xF6, 0x06, 0x30, 0x41, 0x88, 0x1D, 0x00, 0xD0, 0x06, 0x00, + 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0xF0, 0x3F, 0xCC, 0x11, 0x06, 0x01, + 0x80, 0x70, 0x0C, 0x03, 0x00, 0xE0, 0x38, 0x06, 0x05, 0xC1, 0x7F, 0xE0, + 0xFB, 0x6D, 0xB6, 0xDB, 0x6D, 0xB8, 0x82, 0x10, 0x82, 0x10, 0x86, 0x10, + 0x86, 0x10, 0xED, 0xB6, 0xDB, 0x6D, 0xB6, 0xF8, 0x18, 0x1C, 0x34, 0x26, + 0x62, 0x42, 0xC1, 0xFF, 0x80, 0x84, 0x20, 0x79, 0x98, 0x30, 0xE6, 0xD9, + 0xB3, 0x3F, 0x20, 0x70, 0x18, 0x0C, 0x06, 0x03, 0x71, 0xCC, 0xC3, 0x61, + 0xB0, 0xD8, 0x6C, 0x63, 0xE0, 0x3C, 0xCF, 0x06, 0x0C, 0x18, 0x18, 0x9E, + 0x01, 0x03, 0x80, 0xC0, 0x60, 0x31, 0xD9, 0x9D, 0x86, 0xC3, 0x61, 0xB0, + 0xCC, 0x63, 0xF0, 0x3C, 0x46, 0xFE, 0xC0, 0xC0, 0xE1, 0x62, 0x3C, 0x1E, + 0x41, 0x83, 0x06, 0x1E, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x0F, 0x00, 0x3C, + 0x19, 0xF6, 0x31, 0x8C, 0x1E, 0x08, 0x04, 0x01, 0xFC, 0x40, 0xB0, 0x2E, + 0x11, 0xF8, 0x20, 0x70, 0x18, 0x0C, 0x06, 0x03, 0x71, 0xCC, 0xC6, 0x63, + 0x31, 0x98, 0xCC, 0x6F, 0x78, 0x60, 0x02, 0xE6, 0x66, 0x66, 0xF0, 0x18, + 0x00, 0x33, 0x8C, 0x63, 0x18, 0xC6, 0x31, 0x8B, 0x80, 0x20, 0x70, 0x18, + 0x0C, 0x06, 0x03, 0x3D, 0x88, 0xD8, 0x78, 0x36, 0x19, 0x8C, 0x6F, 0x78, + 0x2E, 0x66, 0x66, 0x66, 0x66, 0x66, 0xF0, 0xEE, 0x71, 0xCE, 0x66, 0x31, + 0x98, 0xC6, 0x63, 0x19, 0x8C, 0x66, 0x31, 0xBD, 0xEF, 0xEE, 0x39, 0x98, + 0xCC, 0x66, 0x33, 0x19, 0x8D, 0xEF, 0x3E, 0x31, 0xB0, 0x78, 0x3C, 0x1E, + 0x0D, 0x8C, 0x7C, 0xEE, 0x39, 0x98, 0x6C, 0x36, 0x1B, 0x0D, 0x8C, 0xFC, + 0x60, 0x30, 0x18, 0x1E, 0x00, 0x3D, 0x31, 0xB0, 0xD8, 0x6C, 0x36, 0x1B, + 0x8C, 0xFE, 0x03, 0x01, 0x80, 0xC0, 0xF0, 0x6D, 0xC6, 0x18, 0x61, 0x86, + 0x3C, 0x76, 0x38, 0x58, 0x3E, 0x38, 0xFE, 0x27, 0x98, 0xC6, 0x31, 0x8C, + 0x38, 0xE7, 0x31, 0x98, 0xCC, 0x66, 0x33, 0x19, 0x8C, 0x7F, 0xF3, 0x61, + 0x22, 0x32, 0x14, 0x1C, 0x08, 0x08, 0xEF, 0x36, 0x61, 0x62, 0x22, 0x32, + 0x35, 0x41, 0x9C, 0x18, 0x81, 0x08, 0xF7, 0x12, 0x0E, 0x03, 0x01, 0xC1, + 0x21, 0x09, 0xCF, 0xF3, 0x61, 0x62, 0x32, 0x34, 0x14, 0x1C, 0x08, 0x08, + 0x08, 0x10, 0xE0, 0xFD, 0x18, 0x60, 0x83, 0x0C, 0x70, 0xFE, 0x19, 0x8C, + 0x63, 0x18, 0xC4, 0x61, 0x8C, 0x63, 0x18, 0xC3, 0xFF, 0xF0, 0xC3, 0x18, + 0xC6, 0x31, 0x84, 0x33, 0x18, 0xC6, 0x31, 0x98, 0x70, 0x24, 0xC1, 0xC0}; + +const GFXglyph FreeSerif9pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 5, 0, 1}, // 0x20 ' ' + {0, 2, 12, 6, 2, -11}, // 0x21 '!' + {3, 5, 4, 7, 1, -11}, // 0x22 '"' + {6, 9, 12, 9, 0, -11}, // 0x23 '#' + {20, 8, 14, 9, 1, -12}, // 0x24 '$' + {34, 13, 12, 15, 1, -11}, // 0x25 '%' + {54, 13, 13, 14, 1, -12}, // 0x26 '&' + {76, 2, 4, 4, 1, -11}, // 0x27 ''' + {77, 5, 15, 6, 1, -11}, // 0x28 '(' + {87, 5, 15, 6, 0, -11}, // 0x29 ')' + {97, 6, 8, 9, 3, -11}, // 0x2A '*' + {103, 9, 9, 10, 0, -8}, // 0x2B '+' + {114, 2, 3, 4, 2, 0}, // 0x2C ',' + {115, 4, 1, 6, 1, -3}, // 0x2D '-' + {116, 2, 2, 5, 1, -1}, // 0x2E '.' + {117, 5, 12, 5, 0, -11}, // 0x2F '/' + {125, 9, 13, 9, 0, -12}, // 0x30 '0' + {140, 5, 13, 9, 2, -12}, // 0x31 '1' + {149, 8, 12, 9, 1, -11}, // 0x32 '2' + {161, 8, 12, 9, 0, -11}, // 0x33 '3' + {173, 7, 12, 9, 1, -11}, // 0x34 '4' + {184, 8, 12, 9, 0, -11}, // 0x35 '5' + {196, 8, 13, 9, 1, -12}, // 0x36 '6' + {209, 8, 12, 9, 0, -11}, // 0x37 '7' + {221, 7, 13, 9, 1, -12}, // 0x38 '8' + {233, 8, 14, 9, 1, -12}, // 0x39 '9' + {247, 2, 8, 5, 1, -7}, // 0x3A ':' + {249, 3, 10, 5, 1, -7}, // 0x3B ';' + {253, 9, 9, 10, 1, -8}, // 0x3C '<' + {264, 9, 5, 10, 1, -6}, // 0x3D '=' + {270, 10, 9, 10, 0, -8}, // 0x3E '>' + {282, 7, 13, 8, 1, -12}, // 0x3F '?' + {294, 12, 13, 16, 2, -12}, // 0x40 '@' + {314, 13, 12, 13, 0, -11}, // 0x41 'A' + {334, 11, 12, 11, 0, -11}, // 0x42 'B' + {351, 11, 12, 12, 1, -11}, // 0x43 'C' + {368, 12, 12, 13, 0, -11}, // 0x44 'D' + {386, 10, 12, 11, 1, -11}, // 0x45 'E' + {401, 9, 12, 10, 1, -11}, // 0x46 'F' + {415, 12, 12, 13, 1, -11}, // 0x47 'G' + {433, 11, 12, 13, 1, -11}, // 0x48 'H' + {450, 4, 12, 6, 1, -11}, // 0x49 'I' + {456, 6, 12, 7, 0, -11}, // 0x4A 'J' + {465, 12, 12, 13, 1, -11}, // 0x4B 'K' + {483, 10, 12, 11, 1, -11}, // 0x4C 'L' + {498, 15, 12, 16, 0, -11}, // 0x4D 'M' + {521, 11, 12, 13, 1, -11}, // 0x4E 'N' + {538, 11, 13, 13, 1, -12}, // 0x4F 'O' + {556, 9, 12, 10, 1, -11}, // 0x50 'P' + {570, 11, 16, 13, 1, -12}, // 0x51 'Q' + {592, 11, 12, 12, 1, -11}, // 0x52 'R' + {609, 9, 12, 10, 0, -11}, // 0x53 'S' + {623, 11, 12, 11, 0, -11}, // 0x54 'T' + {640, 11, 12, 13, 1, -11}, // 0x55 'U' + {657, 12, 12, 13, 0, -11}, // 0x56 'V' + {675, 17, 12, 17, 0, -11}, // 0x57 'W' + {701, 13, 12, 13, 0, -11}, // 0x58 'X' + {721, 12, 12, 13, 0, -11}, // 0x59 'Y' + {739, 11, 12, 11, 0, -11}, // 0x5A 'Z' + {756, 3, 15, 6, 2, -11}, // 0x5B '[' + {762, 5, 12, 5, 0, -11}, // 0x5C '\' + {770, 3, 15, 6, 1, -11}, // 0x5D ']' + {776, 8, 7, 8, 0, -11}, // 0x5E '^' + {783, 9, 1, 9, 0, 2}, // 0x5F '_' + {785, 4, 3, 5, 0, -11}, // 0x60 '`' + {787, 7, 8, 8, 1, -7}, // 0x61 'a' + {794, 9, 13, 9, 0, -12}, // 0x62 'b' + {809, 7, 8, 8, 0, -7}, // 0x63 'c' + {816, 9, 13, 9, 0, -12}, // 0x64 'd' + {831, 8, 8, 8, 0, -7}, // 0x65 'e' + {839, 7, 13, 7, 1, -12}, // 0x66 'f' + {851, 10, 12, 8, 0, -7}, // 0x67 'g' + {866, 9, 13, 9, 0, -12}, // 0x68 'h' + {881, 4, 11, 5, 1, -10}, // 0x69 'i' + {887, 5, 15, 6, 0, -10}, // 0x6A 'j' + {897, 9, 13, 9, 1, -12}, // 0x6B 'k' + {912, 4, 13, 5, 1, -12}, // 0x6C 'l' + {919, 14, 8, 14, 0, -7}, // 0x6D 'm' + {933, 9, 8, 9, 0, -7}, // 0x6E 'n' + {942, 9, 8, 9, 0, -7}, // 0x6F 'o' + {951, 9, 12, 9, 0, -7}, // 0x70 'p' + {965, 9, 12, 9, 0, -7}, // 0x71 'q' + {979, 6, 8, 6, 0, -7}, // 0x72 'r' + {985, 6, 8, 7, 1, -7}, // 0x73 's' + {991, 5, 9, 5, 0, -8}, // 0x74 't' + {997, 9, 8, 9, 0, -7}, // 0x75 'u' + {1006, 8, 8, 8, 0, -7}, // 0x76 'v' + {1014, 12, 8, 12, 0, -7}, // 0x77 'w' + {1026, 9, 8, 9, 0, -7}, // 0x78 'x' + {1035, 8, 12, 8, 0, -7}, // 0x79 'y' + {1047, 7, 8, 7, 1, -7}, // 0x7A 'z' + {1054, 5, 16, 9, 1, -12}, // 0x7B '{' + {1064, 1, 12, 4, 1, -11}, // 0x7C '|' + {1066, 5, 16, 9, 3, -11}, // 0x7D '}' + {1076, 9, 3, 9, 0, -5}}; // 0x7E '~' + +const GFXfont FreeSerif9pt7b PROGMEM = {(uint8_t *)FreeSerif9pt7bBitmaps, + (GFXglyph *)FreeSerif9pt7bGlyphs, 0x20, + 0x7E, 22}; + +// Approx. 1752 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerifBold12pt7b.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerifBold12pt7b.h new file mode 100644 index 0000000..9dedae0 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerifBold12pt7b.h @@ -0,0 +1,273 @@ +#pragma once +#include + +const uint8_t FreeSerifBold12pt7bBitmaps[] PROGMEM = { + 0x7F, 0xFF, 0x77, 0x66, 0x22, 0x00, 0x6F, 0xF7, 0xE3, 0xF1, 0xF8, 0xFC, + 0x7E, 0x3A, 0x09, 0x04, 0x0C, 0x40, 0xCC, 0x0C, 0xC0, 0x8C, 0x18, 0xC7, + 0xFF, 0x18, 0xC1, 0x88, 0x19, 0x81, 0x98, 0xFF, 0xE3, 0x18, 0x31, 0x83, + 0x18, 0x33, 0x03, 0x30, 0x08, 0x01, 0x00, 0xFC, 0x24, 0xEC, 0x8D, 0x90, + 0xBA, 0x07, 0xC0, 0x7E, 0x07, 0xF0, 0x7F, 0x07, 0xF0, 0x9F, 0x11, 0xE2, + 0x3E, 0x46, 0xE9, 0xC7, 0xC0, 0x20, 0x04, 0x00, 0x1E, 0x0C, 0x0E, 0x7F, + 0x07, 0x10, 0x83, 0xC4, 0x40, 0xE1, 0x30, 0x38, 0x88, 0x0E, 0x26, 0x03, + 0x91, 0x1E, 0x78, 0x8E, 0x40, 0x27, 0x10, 0x11, 0xC4, 0x0C, 0xE1, 0x02, + 0x38, 0x81, 0x0E, 0x20, 0x43, 0x90, 0x20, 0x78, 0x03, 0xE0, 0x01, 0x9E, + 0x00, 0xE3, 0x80, 0x38, 0xE0, 0x0F, 0x30, 0x03, 0xF0, 0x00, 0x78, 0x7C, + 0x1F, 0x06, 0x1B, 0xE1, 0x1C, 0x7C, 0x8F, 0x1F, 0x23, 0xC3, 0xF0, 0xF8, + 0x7C, 0x3E, 0x0F, 0x97, 0xC7, 0xFC, 0xFE, 0x3E, 0xFF, 0xFE, 0x90, 0x00, + 0x31, 0x0C, 0x31, 0x86, 0x38, 0xE3, 0x8E, 0x38, 0xE3, 0x86, 0x18, 0x60, + 0xC1, 0x02, 0x04, 0x03, 0x06, 0x0C, 0x30, 0x61, 0x87, 0x1C, 0x71, 0xC7, + 0x1C, 0x71, 0x86, 0x38, 0xC2, 0x10, 0x80, 0x1C, 0x6E, 0xFA, 0xEF, 0xF1, + 0xC7, 0xFF, 0xAF, 0xBB, 0x1C, 0x04, 0x00, 0x06, 0x00, 0x60, 0x06, 0x00, + 0x60, 0x06, 0x0F, 0xFF, 0xFF, 0xF0, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, + 0x60, 0x6F, 0xF7, 0x11, 0x24, 0xFF, 0xFF, 0xC0, 0x6F, 0xF6, 0x03, 0x07, + 0x06, 0x06, 0x0C, 0x0C, 0x0C, 0x18, 0x18, 0x18, 0x30, 0x30, 0x30, 0x60, + 0x60, 0x60, 0xC0, 0x0E, 0x07, 0x71, 0xC7, 0x38, 0xEF, 0x1D, 0xE3, 0xFC, + 0x7F, 0x8F, 0xF1, 0xFE, 0x3F, 0xC7, 0xF8, 0xF7, 0x1C, 0xE3, 0x8E, 0xE0, + 0xF8, 0x06, 0x0F, 0x1F, 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, + 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0xF9, 0xFF, 0x0F, 0x03, 0xFC, 0x7F, 0xC4, + 0x3E, 0x01, 0xE0, 0x1E, 0x01, 0xE0, 0x1C, 0x03, 0x80, 0x30, 0x06, 0x00, + 0xC1, 0x18, 0x13, 0xFE, 0x7F, 0xEF, 0xFE, 0x1F, 0x0C, 0xFA, 0x0F, 0x01, + 0xE0, 0x38, 0x0E, 0x03, 0xE0, 0x3E, 0x03, 0xE0, 0x3C, 0x03, 0x80, 0x70, + 0x0D, 0xC1, 0xBC, 0x43, 0xF0, 0x03, 0x80, 0xE0, 0x78, 0x3E, 0x17, 0x89, + 0xE2, 0x79, 0x1E, 0x87, 0xA1, 0xEF, 0xFF, 0xFF, 0xFF, 0xC1, 0xE0, 0x78, + 0x1E, 0x3F, 0xE7, 0xF8, 0xFF, 0x10, 0x04, 0x00, 0xF8, 0x1F, 0xC7, 0xFC, + 0x1F, 0xC0, 0x78, 0x07, 0x00, 0x60, 0x0D, 0xC1, 0x3C, 0x43, 0xF0, 0x00, + 0xE0, 0xF0, 0x38, 0x1E, 0x07, 0x80, 0xF0, 0x3F, 0xE7, 0x9E, 0xF1, 0xFE, + 0x3F, 0xC7, 0xF8, 0xF7, 0x1E, 0xE3, 0x8E, 0x60, 0xF8, 0x7F, 0xEF, 0xFD, + 0xFF, 0xA0, 0x68, 0x0C, 0x03, 0x80, 0x60, 0x0C, 0x03, 0x00, 0x60, 0x0C, + 0x03, 0x00, 0x60, 0x1C, 0x03, 0x00, 0x60, 0x1F, 0x0E, 0x73, 0x87, 0x70, + 0xEF, 0x1D, 0xF3, 0x1F, 0x81, 0xF8, 0x1F, 0xCC, 0xFB, 0x8F, 0xF0, 0xFE, + 0x1F, 0xC3, 0x9C, 0xF1, 0xF8, 0x1F, 0x06, 0x71, 0xC7, 0x78, 0xEF, 0x1F, + 0xE3, 0xFC, 0x7F, 0x8F, 0x79, 0xE7, 0xFC, 0x0F, 0x01, 0xC0, 0x78, 0x1C, + 0x0F, 0x07, 0x00, 0x6F, 0xF6, 0x00, 0x06, 0xFF, 0x60, 0x6F, 0xF6, 0x00, + 0x06, 0xFF, 0x71, 0x22, 0xC0, 0x00, 0x04, 0x00, 0x70, 0x07, 0xC0, 0xFC, + 0x0F, 0x80, 0xF8, 0x0F, 0x80, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, + 0x00, 0x1F, 0x00, 0x1C, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0x00, 0x03, 0x80, 0x0F, + 0x80, 0x0F, 0x80, 0x0F, 0x80, 0x0F, 0x80, 0x0F, 0x80, 0x1F, 0x01, 0xF0, + 0x1F, 0x03, 0xF0, 0x3E, 0x00, 0xE0, 0x02, 0x00, 0x00, 0x3E, 0x11, 0xEC, + 0x3F, 0x8F, 0xE3, 0xC0, 0xF0, 0x78, 0x18, 0x08, 0x02, 0x00, 0x00, 0x00, + 0x1C, 0x07, 0x81, 0xE0, 0x30, 0x03, 0xF0, 0x0E, 0x18, 0x18, 0x04, 0x30, + 0x66, 0x70, 0xDB, 0x61, 0x99, 0xE3, 0x19, 0xE3, 0x31, 0xE6, 0x31, 0xE6, + 0x31, 0xE6, 0xF2, 0x66, 0xB2, 0x73, 0x3C, 0x38, 0x00, 0x1E, 0x04, 0x03, + 0xF8, 0x00, 0x80, 0x00, 0xC0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x3E, 0x00, + 0x1F, 0x00, 0x1B, 0xC0, 0x09, 0xE0, 0x0C, 0xF8, 0x04, 0x3C, 0x02, 0x1F, + 0x03, 0xFF, 0x81, 0x03, 0xC1, 0x80, 0xF0, 0x80, 0x7D, 0xF0, 0xFF, 0xFF, + 0xC0, 0xF3, 0xC3, 0xC7, 0x8F, 0x1E, 0x3C, 0x78, 0xF1, 0xE3, 0xCE, 0x0F, + 0xF0, 0x3C, 0x70, 0xF0, 0xE3, 0xC3, 0xCF, 0x0F, 0x3C, 0x3C, 0xF0, 0xE3, + 0xC7, 0xBF, 0xF8, 0x07, 0xE2, 0x38, 0x7C, 0xE0, 0x3B, 0xC0, 0x37, 0x00, + 0x7E, 0x00, 0x7C, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x03, + 0x80, 0x07, 0x80, 0x27, 0x00, 0xC7, 0x86, 0x03, 0xF0, 0xFF, 0xE0, 0x1E, + 0x1E, 0x0F, 0x07, 0x87, 0x81, 0xE3, 0xC0, 0xF1, 0xE0, 0x3C, 0xF0, 0x1E, + 0x78, 0x0F, 0x3C, 0x07, 0x9E, 0x03, 0xCF, 0x01, 0xE7, 0x80, 0xE3, 0xC0, + 0xF1, 0xE0, 0xF0, 0xF0, 0xE1, 0xFF, 0xC0, 0xFF, 0xFC, 0x78, 0x38, 0xF0, + 0x31, 0xE0, 0x23, 0xC4, 0x07, 0x88, 0x0F, 0x30, 0x1F, 0xE0, 0x3C, 0xC0, + 0x78, 0x80, 0xF1, 0x01, 0xE0, 0x23, 0xC0, 0x47, 0x81, 0x8F, 0x07, 0x7F, + 0xFE, 0xFF, 0xFC, 0xF0, 0x73, 0xC0, 0xCF, 0x01, 0x3C, 0x40, 0xF1, 0x03, + 0xCC, 0x0F, 0xF0, 0x3C, 0xC0, 0xF1, 0x03, 0xC4, 0x0F, 0x00, 0x3C, 0x00, + 0xF0, 0x03, 0xC0, 0x3F, 0xC0, 0x07, 0xE2, 0x1C, 0x3E, 0x38, 0x0E, 0x78, + 0x06, 0x70, 0x06, 0xF0, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF0, + 0x7F, 0xF0, 0x1E, 0x70, 0x1E, 0x78, 0x1E, 0x38, 0x1E, 0x1E, 0x1E, 0x07, + 0xF0, 0xFE, 0xFF, 0x78, 0x3C, 0x78, 0x3C, 0x78, 0x3C, 0x78, 0x3C, 0x78, + 0x3C, 0x78, 0x3C, 0x7F, 0xFC, 0x78, 0x3C, 0x78, 0x3C, 0x78, 0x3C, 0x78, + 0x3C, 0x78, 0x3C, 0x78, 0x3C, 0x78, 0x3C, 0xFE, 0xFF, 0xFF, 0x3C, 0x3C, + 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, + 0xFF, 0x0F, 0xF0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, + 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0xE3, 0xCE, + 0x38, 0xE3, 0x83, 0xE0, 0xFE, 0x7F, 0x3C, 0x0E, 0x1E, 0x04, 0x0F, 0x04, + 0x07, 0x84, 0x03, 0xCC, 0x01, 0xEE, 0x00, 0xFF, 0x00, 0x7F, 0xC0, 0x3C, + 0xF0, 0x1E, 0x7C, 0x0F, 0x1F, 0x07, 0x87, 0xC3, 0xC1, 0xF1, 0xE0, 0x7D, + 0xFC, 0xFF, 0xFE, 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x01, 0xE0, + 0x07, 0x80, 0x1E, 0x00, 0x78, 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x01, 0x78, + 0x0D, 0xE0, 0x67, 0x83, 0xBF, 0xFE, 0xFC, 0x01, 0xF3, 0xC0, 0x3E, 0x3E, + 0x03, 0xE2, 0xE0, 0x5E, 0x2F, 0x05, 0xE2, 0xF0, 0x5E, 0x27, 0x09, 0xE2, + 0x78, 0x9E, 0x23, 0x91, 0xE2, 0x3D, 0x1E, 0x23, 0xF1, 0xE2, 0x1E, 0x1E, + 0x21, 0xE1, 0xE2, 0x0C, 0x1E, 0x20, 0xC1, 0xEF, 0x88, 0x3F, 0xF8, 0x1E, + 0xF8, 0x18, 0xF8, 0x11, 0xF8, 0x22, 0xF8, 0x45, 0xF0, 0x89, 0xF1, 0x11, + 0xF2, 0x21, 0xF4, 0x41, 0xF8, 0x81, 0xF1, 0x01, 0xE2, 0x03, 0xC4, 0x03, + 0x8C, 0x03, 0x7C, 0x02, 0x07, 0xF0, 0x0F, 0x1E, 0x0E, 0x03, 0x8F, 0x01, + 0xE7, 0x00, 0x77, 0x80, 0x3F, 0xC0, 0x1F, 0xE0, 0x0F, 0xF0, 0x07, 0xF8, + 0x03, 0xFC, 0x01, 0xEE, 0x00, 0xE7, 0x80, 0xF1, 0xC0, 0x70, 0x70, 0x70, + 0x0F, 0xE0, 0xFF, 0x87, 0x9E, 0x78, 0xF7, 0x8F, 0x78, 0xF7, 0x8F, 0x78, + 0xF7, 0x9E, 0x7F, 0x87, 0x80, 0x78, 0x07, 0x80, 0x78, 0x07, 0x80, 0x78, + 0x0F, 0xE0, 0x07, 0xF0, 0x0F, 0x1E, 0x0E, 0x07, 0x8F, 0x01, 0xE7, 0x00, + 0xF7, 0x80, 0x3F, 0xC0, 0x1F, 0xE0, 0x0F, 0xF0, 0x07, 0xF8, 0x03, 0xFC, + 0x01, 0xEE, 0x00, 0xE7, 0x00, 0xF1, 0xC0, 0x70, 0x70, 0x70, 0x1C, 0xF0, + 0x03, 0xE0, 0x01, 0xF8, 0x00, 0x3E, 0x00, 0x07, 0xE0, 0xFF, 0xE0, 0x3C, + 0x78, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x38, 0x3C, + 0x70, 0x3F, 0xC0, 0x3D, 0xE0, 0x3C, 0xF0, 0x3C, 0xF8, 0x3C, 0x78, 0x3C, + 0x3C, 0x3C, 0x3E, 0xFF, 0x1F, 0x1F, 0x27, 0x0E, 0x60, 0x6E, 0x06, 0xF0, + 0x2F, 0x80, 0x7F, 0x07, 0xFC, 0x1F, 0xE0, 0x7E, 0x01, 0xF8, 0x07, 0xC0, + 0x7C, 0x06, 0xF0, 0xC9, 0xF8, 0xFF, 0xFF, 0xC7, 0x9F, 0x0F, 0x1C, 0x1E, + 0x10, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, + 0x0F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x07, 0xF8, 0xFE, + 0x1E, 0xF0, 0x09, 0xE0, 0x13, 0xC0, 0x27, 0x80, 0x4F, 0x00, 0x9E, 0x01, + 0x3C, 0x02, 0x78, 0x04, 0xF0, 0x09, 0xE0, 0x13, 0xC0, 0x27, 0x80, 0x47, + 0x81, 0x07, 0x84, 0x07, 0xF0, 0xFF, 0x0F, 0x9E, 0x03, 0x0F, 0x00, 0x83, + 0xC0, 0x81, 0xE0, 0x40, 0xF8, 0x60, 0x3C, 0x20, 0x1E, 0x10, 0x07, 0x90, + 0x03, 0xC8, 0x00, 0xF4, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x0E, 0x00, 0x07, + 0x00, 0x01, 0x80, 0x00, 0x80, 0x00, 0xFE, 0x7F, 0x9E, 0xF8, 0x3C, 0x08, + 0xF0, 0x78, 0x31, 0xE0, 0xF0, 0x41, 0xE0, 0xF0, 0x83, 0xC3, 0xE3, 0x07, + 0x85, 0xC4, 0x07, 0x93, 0xC8, 0x0F, 0x27, 0xB0, 0x0E, 0x47, 0x40, 0x1F, + 0x0F, 0x80, 0x3E, 0x1F, 0x00, 0x38, 0x1C, 0x00, 0x70, 0x38, 0x00, 0xE0, + 0x30, 0x00, 0x80, 0x40, 0xFF, 0x9F, 0x9F, 0x07, 0x07, 0x83, 0x03, 0xE3, + 0x00, 0xF9, 0x00, 0x3D, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xE0, 0x00, + 0xF8, 0x00, 0xBE, 0x00, 0x8F, 0x00, 0x83, 0xC0, 0xC1, 0xF0, 0xE0, 0xFD, + 0xF8, 0xFF, 0xFF, 0x1F, 0x7C, 0x06, 0x3C, 0x04, 0x3E, 0x0C, 0x1E, 0x08, + 0x0F, 0x10, 0x0F, 0x30, 0x07, 0xA0, 0x07, 0xC0, 0x03, 0xC0, 0x03, 0xC0, + 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x0F, 0xF0, 0x7F, 0xFC, + 0xE0, 0xF1, 0x83, 0xE2, 0x07, 0x84, 0x1E, 0x00, 0x7C, 0x00, 0xF0, 0x03, + 0xC0, 0x0F, 0x80, 0x1E, 0x00, 0x7C, 0x08, 0xF0, 0x13, 0xC0, 0x6F, 0x81, + 0x9E, 0x07, 0x7F, 0xFE, 0xFF, 0x39, 0xCE, 0x73, 0x9C, 0xE7, 0x39, 0xCE, + 0x73, 0x9C, 0xE7, 0x39, 0xF0, 0xC0, 0x60, 0x60, 0x60, 0x30, 0x30, 0x30, + 0x18, 0x18, 0x18, 0x0C, 0x0C, 0x0C, 0x06, 0x06, 0x06, 0x03, 0xF9, 0xCE, + 0x73, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x9C, 0xE7, 0x39, 0xCF, 0xF0, 0x0C, + 0x07, 0x81, 0xE0, 0xCC, 0x33, 0x18, 0x66, 0x1B, 0x87, 0xC0, 0xC0, 0xFF, + 0xF0, 0xC7, 0x1C, 0x30, 0x1F, 0x0E, 0x71, 0xCF, 0x39, 0xE0, 0x3C, 0x1F, + 0x8E, 0xF3, 0x9E, 0xF3, 0xDE, 0x79, 0xFF, 0x80, 0xF8, 0x07, 0x80, 0x78, + 0x07, 0x80, 0x78, 0x07, 0xB8, 0x7D, 0xE7, 0x8E, 0x78, 0xF7, 0x8F, 0x78, + 0xF7, 0x8F, 0x78, 0xF7, 0x8E, 0x79, 0xC4, 0x78, 0x1F, 0x1D, 0xDC, 0xFE, + 0x7F, 0x07, 0x83, 0xC1, 0xE0, 0x78, 0x3C, 0x47, 0xC0, 0x03, 0xE0, 0x1E, + 0x01, 0xE0, 0x1E, 0x01, 0xE1, 0xDE, 0x7B, 0xE7, 0x1E, 0xF1, 0xEF, 0x1E, + 0xF1, 0xEF, 0x1E, 0xF1, 0xE7, 0x1E, 0x7B, 0xE1, 0xDF, 0x1F, 0x0C, 0x67, + 0x1B, 0xC7, 0xFF, 0xFC, 0x0F, 0x03, 0xC0, 0x78, 0x4E, 0x21, 0xF0, 0x1E, + 0x3B, 0x7B, 0x78, 0x78, 0xFC, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0x78, 0x78, 0xFC, 0x3E, 0x0E, 0x7F, 0xCE, 0x79, 0xEF, 0x3C, 0xE7, 0x0F, + 0xC1, 0x00, 0x60, 0x1C, 0x03, 0xFE, 0x7F, 0xE3, 0xFF, 0x80, 0xF0, 0x33, + 0xFC, 0xF8, 0x07, 0x80, 0x78, 0x07, 0x80, 0x78, 0x07, 0xB8, 0x7D, 0xE7, + 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xEF, + 0xFF, 0x31, 0xE7, 0x8C, 0x03, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, + 0xBF, 0x06, 0x0F, 0x0F, 0x06, 0x00, 0x1F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0xCF, 0xCE, 0x7C, 0xF8, 0x03, + 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0xF9, 0xE1, 0x8F, 0x10, 0x79, + 0x03, 0xD8, 0x1F, 0xE0, 0xF7, 0x87, 0x9E, 0x3C, 0x71, 0xE3, 0xDF, 0xBF, + 0xF9, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0xBF, + 0xFB, 0xCF, 0x0F, 0xBE, 0x79, 0xE7, 0x8F, 0x3C, 0xF1, 0xE7, 0x9E, 0x3C, + 0xF3, 0xC7, 0x9E, 0x78, 0xF3, 0xCF, 0x1E, 0x79, 0xE3, 0xCF, 0x3C, 0x7B, + 0xFF, 0xDF, 0x80, 0xFB, 0x87, 0xDE, 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, + 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0xFF, 0xF0, 0x1F, 0x07, 0x71, 0xC7, + 0x78, 0xFF, 0x1F, 0xE3, 0xFC, 0x7F, 0x8F, 0x71, 0xC7, 0x70, 0x7C, 0x00, + 0xFB, 0x87, 0xDE, 0x78, 0xE7, 0x8F, 0x78, 0xF7, 0x8F, 0x78, 0xF7, 0x8F, + 0x78, 0xE7, 0x9E, 0x7F, 0x87, 0x80, 0x78, 0x07, 0x80, 0x78, 0x0F, 0xC0, + 0x1E, 0x23, 0x9E, 0x71, 0xEF, 0x1E, 0xF1, 0xEF, 0x1E, 0xF1, 0xEF, 0x1E, + 0x71, 0xE7, 0x9E, 0x1F, 0xE0, 0x1E, 0x01, 0xE0, 0x1E, 0x01, 0xE0, 0x3F, + 0xF9, 0xDF, 0xF7, 0xDD, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, + 0x0F, 0xC0, 0x3D, 0x43, 0xC3, 0xE0, 0xFC, 0x7E, 0x1F, 0x87, 0x83, 0xC2, + 0xBC, 0x08, 0x18, 0x38, 0x78, 0xFC, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0x78, 0x78, 0x79, 0x3E, 0xFB, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, + 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x3F, 0xF0, 0xFC, 0xEF, 0x08, + 0xE1, 0x1E, 0x41, 0xC8, 0x3D, 0x03, 0xC0, 0x78, 0x0E, 0x00, 0xC0, 0x10, + 0x00, 0xFD, 0xF7, 0xBC, 0x71, 0x9E, 0x38, 0x87, 0x1E, 0x43, 0xCF, 0x40, + 0xEB, 0xA0, 0x7C, 0xF0, 0x1C, 0x70, 0x0E, 0x38, 0x06, 0x08, 0x01, 0x04, + 0x00, 0xFC, 0xF7, 0x84, 0x3C, 0x81, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x80, + 0xBC, 0x13, 0xC2, 0x1E, 0xFB, 0xF0, 0xFC, 0xEF, 0x08, 0xE1, 0x1E, 0x43, + 0xC8, 0x3A, 0x07, 0xC0, 0x78, 0x0E, 0x01, 0xC0, 0x18, 0x02, 0x00, 0x41, + 0xC8, 0x3A, 0x03, 0x80, 0xFF, 0xB1, 0xE8, 0x70, 0x3C, 0x1E, 0x07, 0x83, + 0xC1, 0xE0, 0x78, 0xBC, 0x2F, 0xF8, 0x07, 0x0E, 0x1C, 0x1C, 0x1C, 0x1C, + 0x1C, 0x1C, 0x1C, 0x1C, 0xE0, 0x18, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, + 0x1C, 0x1E, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xE0, 0x70, 0x38, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x18, 0x07, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x38, 0x38, 0x70, 0xE0, 0x70, 0x1F, 0x8B, 0x3F, 0x01, 0xC0}; + +const GFXglyph FreeSerifBold12pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 6, 0, 1}, // 0x20 ' ' + {0, 4, 16, 8, 2, -15}, // 0x21 '!' + {8, 9, 7, 13, 2, -15}, // 0x22 '"' + {16, 12, 16, 12, 0, -15}, // 0x23 '#' + {40, 11, 20, 12, 1, -17}, // 0x24 '$' + {68, 18, 16, 24, 3, -15}, // 0x25 '%' + {104, 18, 16, 20, 1, -15}, // 0x26 '&' + {140, 3, 7, 7, 2, -15}, // 0x27 ''' + {143, 6, 21, 8, 1, -16}, // 0x28 '(' + {159, 6, 21, 8, 1, -16}, // 0x29 ')' + {175, 9, 10, 12, 2, -15}, // 0x2A '*' + {187, 12, 12, 16, 2, -11}, // 0x2B '+' + {205, 4, 8, 6, 1, -3}, // 0x2C ',' + {209, 6, 3, 8, 1, -6}, // 0x2D '-' + {212, 4, 4, 6, 1, -3}, // 0x2E '.' + {214, 8, 17, 7, -1, -15}, // 0x2F '/' + {231, 11, 16, 12, 1, -15}, // 0x30 '0' + {253, 9, 16, 12, 1, -15}, // 0x31 '1' + {271, 12, 16, 12, 0, -15}, // 0x32 '2' + {295, 11, 16, 12, 1, -15}, // 0x33 '3' + {317, 10, 16, 12, 1, -15}, // 0x34 '4' + {337, 11, 16, 12, 1, -15}, // 0x35 '5' + {359, 11, 16, 12, 1, -15}, // 0x36 '6' + {381, 11, 16, 12, 0, -15}, // 0x37 '7' + {403, 11, 16, 12, 1, -15}, // 0x38 '8' + {425, 11, 16, 12, 1, -15}, // 0x39 '9' + {447, 4, 11, 8, 2, -10}, // 0x3A ':' + {453, 4, 15, 8, 2, -10}, // 0x3B ';' + {461, 14, 14, 16, 1, -12}, // 0x3C '<' + {486, 14, 8, 16, 1, -9}, // 0x3D '=' + {500, 14, 14, 16, 1, -12}, // 0x3E '>' + {525, 10, 16, 12, 1, -15}, // 0x3F '?' + {545, 16, 16, 22, 3, -15}, // 0x40 '@' + {577, 17, 16, 17, 0, -15}, // 0x41 'A' + {611, 14, 16, 16, 1, -15}, // 0x42 'B' + {639, 15, 16, 17, 1, -15}, // 0x43 'C' + {669, 17, 16, 18, 0, -15}, // 0x44 'D' + {703, 15, 16, 16, 1, -15}, // 0x45 'E' + {733, 14, 16, 15, 1, -15}, // 0x46 'F' + {761, 16, 16, 19, 1, -15}, // 0x47 'G' + {793, 16, 16, 19, 2, -15}, // 0x48 'H' + {825, 8, 16, 9, 1, -15}, // 0x49 'I' + {841, 12, 18, 12, 0, -15}, // 0x4A 'J' + {868, 17, 16, 19, 2, -15}, // 0x4B 'K' + {902, 14, 16, 16, 2, -15}, // 0x4C 'L' + {930, 20, 16, 23, 1, -15}, // 0x4D 'M' + {970, 15, 16, 17, 1, -15}, // 0x4E 'N' + {1000, 17, 16, 19, 1, -15}, // 0x4F 'O' + {1034, 12, 16, 15, 2, -15}, // 0x50 'P' + {1058, 17, 20, 19, 1, -15}, // 0x51 'Q' + {1101, 16, 16, 17, 1, -15}, // 0x52 'R' + {1133, 12, 16, 14, 1, -15}, // 0x53 'S' + {1157, 15, 16, 15, 0, -15}, // 0x54 'T' + {1187, 15, 16, 17, 1, -15}, // 0x55 'U' + {1217, 17, 17, 17, 0, -15}, // 0x56 'V' + {1254, 23, 16, 24, 0, -15}, // 0x57 'W' + {1300, 17, 16, 17, 0, -15}, // 0x58 'X' + {1334, 16, 16, 17, 1, -15}, // 0x59 'Y' + {1366, 15, 16, 16, 0, -15}, // 0x5A 'Z' + {1396, 5, 20, 8, 2, -15}, // 0x5B '[' + {1409, 8, 17, 7, -1, -15}, // 0x5C '\' + {1426, 5, 20, 8, 2, -15}, // 0x5D ']' + {1439, 10, 9, 14, 2, -15}, // 0x5E '^' + {1451, 12, 1, 12, 0, 4}, // 0x5F '_' + {1453, 5, 4, 8, 0, -16}, // 0x60 '`' + {1456, 11, 11, 12, 1, -10}, // 0x61 'a' + {1472, 12, 16, 13, 1, -15}, // 0x62 'b' + {1496, 9, 11, 10, 1, -10}, // 0x63 'c' + {1509, 12, 16, 13, 1, -15}, // 0x64 'd' + {1533, 10, 11, 11, 1, -10}, // 0x65 'e' + {1547, 8, 16, 9, 1, -15}, // 0x66 'f' + {1563, 11, 16, 12, 1, -10}, // 0x67 'g' + {1585, 12, 16, 13, 1, -15}, // 0x68 'h' + {1609, 6, 16, 7, 1, -15}, // 0x69 'i' + {1621, 8, 21, 10, 0, -15}, // 0x6A 'j' + {1642, 13, 16, 13, 1, -15}, // 0x6B 'k' + {1668, 6, 16, 7, 1, -15}, // 0x6C 'l' + {1680, 19, 11, 20, 1, -10}, // 0x6D 'm' + {1707, 12, 11, 13, 1, -10}, // 0x6E 'n' + {1724, 11, 11, 12, 1, -10}, // 0x6F 'o' + {1740, 12, 16, 13, 1, -10}, // 0x70 'p' + {1764, 12, 16, 13, 1, -10}, // 0x71 'q' + {1788, 10, 11, 10, 1, -10}, // 0x72 'r' + {1802, 8, 11, 10, 1, -10}, // 0x73 's' + {1813, 8, 15, 8, 1, -14}, // 0x74 't' + {1828, 12, 11, 14, 1, -10}, // 0x75 'u' + {1845, 11, 11, 12, 0, -10}, // 0x76 'v' + {1861, 17, 11, 17, 0, -10}, // 0x77 'w' + {1885, 12, 11, 12, 0, -10}, // 0x78 'x' + {1902, 11, 16, 12, 0, -10}, // 0x79 'y' + {1924, 10, 11, 11, 1, -10}, // 0x7A 'z' + {1938, 8, 21, 9, 0, -16}, // 0x7B '{' + {1959, 2, 17, 5, 2, -15}, // 0x7C '|' + {1964, 8, 21, 9, 2, -16}, // 0x7D '}' + {1985, 11, 4, 12, 1, -7}}; // 0x7E '~' + +const GFXfont FreeSerifBold12pt7b PROGMEM = { + (uint8_t *)FreeSerifBold12pt7bBitmaps, + (GFXglyph *)FreeSerifBold12pt7bGlyphs, 0x20, 0x7E, 29}; + +// Approx. 2663 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerifBold18pt7b.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerifBold18pt7b.h new file mode 100644 index 0000000..faecf4f --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerifBold18pt7b.h @@ -0,0 +1,464 @@ +#pragma once +#include + +const uint8_t FreeSerifBold18pt7bBitmaps[] PROGMEM = { + 0x7B, 0xEF, 0xFF, 0xFF, 0xF7, 0x9E, 0x71, 0xC7, 0x0C, 0x20, 0x82, 0x00, + 0x00, 0x07, 0x3E, 0xFF, 0xFF, 0xDC, 0x60, 0x37, 0x83, 0xFC, 0x1F, 0xE0, + 0xFF, 0x07, 0xB8, 0x3D, 0xC0, 0xCC, 0x06, 0x20, 0x31, 0x01, 0x80, 0x03, + 0x8E, 0x00, 0xC3, 0x80, 0x30, 0xE0, 0x1C, 0x38, 0x07, 0x0E, 0x01, 0xC3, + 0x87, 0xFF, 0xFD, 0xFF, 0xFF, 0x7F, 0xFF, 0xC1, 0x87, 0x00, 0xE1, 0xC0, + 0x38, 0x70, 0x0E, 0x1C, 0x03, 0x86, 0x0F, 0xFF, 0xF3, 0xFF, 0xFC, 0xFF, + 0xFF, 0x07, 0x0E, 0x01, 0xC3, 0x80, 0x70, 0xE0, 0x1C, 0x30, 0x07, 0x0C, + 0x01, 0x87, 0x00, 0x61, 0xC0, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0xFF, + 0x03, 0x27, 0x8C, 0x47, 0x38, 0x86, 0x71, 0x0C, 0xF2, 0x09, 0xF4, 0x03, + 0xF8, 0x03, 0xF8, 0x07, 0xFC, 0x03, 0xFC, 0x03, 0xFE, 0x01, 0xFE, 0x03, + 0xFC, 0x04, 0xFC, 0x08, 0xFA, 0x10, 0xF4, 0x21, 0xEC, 0x43, 0xD8, 0x8F, + 0x3D, 0x3C, 0x3F, 0xF0, 0x1F, 0x00, 0x08, 0x00, 0x10, 0x00, 0x03, 0xC0, + 0x18, 0x01, 0xFE, 0x0F, 0x00, 0x7C, 0xFF, 0xC0, 0x1F, 0x0F, 0x90, 0x07, + 0xC1, 0x06, 0x00, 0xF0, 0x21, 0x80, 0x3E, 0x04, 0x30, 0x07, 0x81, 0x8C, + 0x00, 0xF0, 0x21, 0x80, 0x1E, 0x0C, 0x60, 0x03, 0xC1, 0x18, 0x1E, 0x3C, + 0xE3, 0x0F, 0xE7, 0xF8, 0xC3, 0xE6, 0x3C, 0x18, 0xF8, 0x40, 0x06, 0x3E, + 0x08, 0x01, 0x87, 0x81, 0x00, 0x31, 0xF0, 0x20, 0x0C, 0x3E, 0x04, 0x01, + 0x87, 0x81, 0x00, 0x60, 0xF0, 0x60, 0x18, 0x1E, 0x08, 0x03, 0x03, 0xC7, + 0x00, 0xC0, 0x3F, 0xC0, 0x18, 0x03, 0xE0, 0x00, 0x7E, 0x00, 0x00, 0x7F, + 0xE0, 0x00, 0x38, 0xF8, 0x00, 0x1E, 0x1F, 0x00, 0x07, 0x83, 0xC0, 0x01, + 0xF0, 0xF0, 0x00, 0x7C, 0x38, 0x00, 0x1F, 0x9C, 0x00, 0x03, 0xFC, 0x00, + 0x00, 0xFE, 0x0F, 0xF0, 0x3F, 0x80, 0xF0, 0x1F, 0xF0, 0x18, 0x1C, 0xFE, + 0x0C, 0x0E, 0x1F, 0xC3, 0x07, 0x87, 0xF1, 0x81, 0xE0, 0xFE, 0x40, 0xF8, + 0x1F, 0xF0, 0x3F, 0x07, 0xF8, 0x0F, 0xC0, 0xFE, 0x03, 0xF8, 0x1F, 0xC0, + 0xFE, 0x07, 0xF8, 0x9F, 0xE3, 0xFF, 0xE7, 0xFF, 0x9F, 0xF0, 0xFF, 0xC3, + 0xF8, 0x0F, 0x80, 0x3C, 0x00, 0x6F, 0xFF, 0xFF, 0x66, 0x66, 0x00, 0x81, + 0x81, 0x81, 0x81, 0x80, 0xC0, 0xE0, 0x70, 0x70, 0x38, 0x3C, 0x1E, 0x0F, + 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x0E, 0x07, 0x03, 0x80, 0xE0, + 0x70, 0x18, 0x06, 0x01, 0x00, 0x40, 0x10, 0x04, 0x80, 0x30, 0x0C, 0x03, + 0x00, 0xC0, 0x60, 0x38, 0x1C, 0x07, 0x03, 0x81, 0xC0, 0xF0, 0x78, 0x3C, + 0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xE0, 0x70, 0x38, 0x38, 0x1C, 0x0C, + 0x0C, 0x06, 0x04, 0x04, 0x04, 0x00, 0x03, 0x00, 0x1E, 0x00, 0x78, 0x1D, + 0xE6, 0xFB, 0x3D, 0xED, 0xF3, 0xFF, 0x01, 0xC0, 0x7F, 0xF3, 0xED, 0xFF, + 0x33, 0xD9, 0xE6, 0x07, 0x80, 0x1E, 0x00, 0x30, 0x00, 0x00, 0xE0, 0x00, + 0x1C, 0x00, 0x03, 0x80, 0x00, 0x70, 0x00, 0x0E, 0x00, 0x01, 0xC0, 0x00, + 0x38, 0x00, 0x07, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, + 0x70, 0x00, 0x0E, 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x07, 0x00, 0x00, + 0xE0, 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0x73, 0xEF, 0xFF, 0xFD, 0xF0, + 0xC2, 0x18, 0xC6, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0x7B, 0xFF, 0xFF, 0xFD, + 0xE0, 0x00, 0xE0, 0x3C, 0x07, 0x00, 0xE0, 0x1C, 0x07, 0x00, 0xE0, 0x1C, + 0x07, 0x00, 0xE0, 0x1C, 0x07, 0x00, 0xE0, 0x1C, 0x07, 0x00, 0xE0, 0x1C, + 0x07, 0x00, 0xE0, 0x1C, 0x07, 0x00, 0xE0, 0x1C, 0x07, 0x00, 0xE0, 0x00, + 0x03, 0xC0, 0x0E, 0x70, 0x1E, 0x78, 0x3C, 0x3C, 0x3C, 0x3C, 0x7C, 0x3E, + 0x7C, 0x3E, 0x7C, 0x3E, 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, + 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3E, 0x7C, 0x3E, + 0x7C, 0x3E, 0x3C, 0x3C, 0x3C, 0x3C, 0x1E, 0x78, 0x0E, 0x70, 0x03, 0xC0, + 0x00, 0xC0, 0x3C, 0x0F, 0xC3, 0xFC, 0x4F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC, + 0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC, + 0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC, 0x1F, 0xEF, 0xFF, + 0x03, 0xE0, 0x0F, 0xF8, 0x1F, 0xFC, 0x3F, 0xFC, 0x30, 0xFE, 0x60, 0x7E, + 0x40, 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x78, + 0x00, 0x70, 0x00, 0xE0, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, 0x06, 0x01, + 0x0C, 0x03, 0x1F, 0xFF, 0x1F, 0xFF, 0x3F, 0xFE, 0x7F, 0xFE, 0xFF, 0xFE, + 0x03, 0xF0, 0x0F, 0xF8, 0x3F, 0xFC, 0x21, 0xFE, 0x40, 0xFE, 0x00, 0x7E, + 0x00, 0x7E, 0x00, 0x7C, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xFC, 0x03, 0xFE, + 0x00, 0x7E, 0x00, 0x3F, 0x00, 0x1F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, + 0x00, 0x0E, 0x70, 0x0E, 0xFC, 0x1C, 0xFE, 0x38, 0x7F, 0xE0, 0x3F, 0x80, + 0x00, 0x38, 0x00, 0xF0, 0x03, 0xE0, 0x07, 0xC0, 0x1F, 0x80, 0x5F, 0x00, + 0xBE, 0x02, 0x7C, 0x08, 0xF8, 0x31, 0xF0, 0x43, 0xE1, 0x07, 0xC4, 0x0F, + 0x88, 0x1F, 0x20, 0x3E, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, + 0x07, 0xC0, 0x0F, 0x80, 0x1F, 0x00, 0x3E, 0x00, 0x7C, 0x0F, 0xFE, 0x1F, + 0xF8, 0x7F, 0xF0, 0xFF, 0xE1, 0x80, 0x03, 0x00, 0x0C, 0x00, 0x18, 0x00, + 0x3F, 0x80, 0xFF, 0xC1, 0xFF, 0xC3, 0xFF, 0xC3, 0xFF, 0x80, 0x3F, 0x80, + 0x0F, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x18, 0x00, 0x37, 0x80, 0x4F, 0x81, + 0x9F, 0xC6, 0x3F, 0xF8, 0x1F, 0x80, 0x00, 0x07, 0x00, 0x7C, 0x01, 0xF0, + 0x03, 0xC0, 0x0F, 0x80, 0x1F, 0x00, 0x1F, 0x00, 0x3E, 0x00, 0x7E, 0x00, + 0x7F, 0xF0, 0x7F, 0xFC, 0xFC, 0x7E, 0xFC, 0x7E, 0xFC, 0x3F, 0xFC, 0x3F, + 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, 0x7C, 0x3F, 0x7C, 0x3E, 0x3C, 0x3E, + 0x3E, 0x3C, 0x1E, 0x78, 0x07, 0xE0, 0x7F, 0xFF, 0x7F, 0xFE, 0x7F, 0xFE, + 0xFF, 0xFE, 0xFF, 0xFC, 0xC0, 0x1C, 0x80, 0x18, 0x80, 0x38, 0x00, 0x38, + 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, + 0x01, 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x03, 0x80, 0x03, 0x80, 0x07, 0x80, + 0x07, 0x00, 0x07, 0x00, 0x0F, 0x00, 0x0F, 0xE0, 0x38, 0x78, 0x70, 0x3C, + 0xF0, 0x1E, 0xF0, 0x1E, 0xF8, 0x1E, 0xF8, 0x1E, 0xFE, 0x3C, 0x7F, 0xB0, + 0x7F, 0xE0, 0x3F, 0xF0, 0x0F, 0xF8, 0x1F, 0xFC, 0x39, 0xFE, 0x70, 0xFF, + 0xF0, 0x3F, 0xF0, 0x3F, 0xF0, 0x1F, 0xF0, 0x1F, 0xF0, 0x1E, 0x78, 0x3E, + 0x7C, 0x7C, 0x3F, 0xF8, 0x0F, 0xE0, 0x07, 0xE0, 0x1E, 0x78, 0x3C, 0x7C, + 0x7C, 0x3C, 0x7C, 0x3E, 0xFC, 0x3E, 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, + 0xFC, 0x3F, 0xFC, 0x3F, 0x7E, 0x3F, 0x7E, 0x3F, 0x3F, 0xFE, 0x0F, 0xFE, + 0x00, 0x7E, 0x00, 0x7C, 0x00, 0xF8, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xC0, + 0x0F, 0x80, 0x3E, 0x00, 0xE0, 0x00, 0x7B, 0xFF, 0xFF, 0xFD, 0xE0, 0x00, + 0x00, 0x07, 0xBF, 0xFF, 0xFF, 0xDE, 0x39, 0xFB, 0xF7, 0xEF, 0xC7, 0x00, + 0x00, 0x00, 0x01, 0xE7, 0xEF, 0xFF, 0xFF, 0xBF, 0x06, 0x08, 0x30, 0xC2, + 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x0F, 0x80, 0x07, 0xF0, + 0x03, 0xFC, 0x01, 0xFE, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x3F, 0x80, 0x1F, + 0xC0, 0x03, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0xFE, 0x00, 0x07, 0xF0, 0x00, + 0x3F, 0x80, 0x01, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0x7C, 0x00, 0x01, 0x80, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x18, 0x00, 0x03, + 0xE0, 0x00, 0x7F, 0x00, 0x07, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0xFE, 0x00, + 0x07, 0xF0, 0x00, 0x3F, 0x80, 0x01, 0xFC, 0x00, 0x3F, 0x80, 0x1F, 0xC0, + 0x0F, 0xE0, 0x07, 0xF0, 0x07, 0xF8, 0x03, 0xFC, 0x00, 0xFE, 0x00, 0x1F, + 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xC0, 0xFF, 0xC7, 0x1F, + 0xB8, 0x3E, 0xF0, 0xFF, 0xC3, 0xFF, 0x0F, 0xD8, 0x3F, 0x00, 0xF8, 0x07, + 0xC0, 0x1E, 0x00, 0x60, 0x03, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x70, 0x03, 0xE0, 0x1F, 0x80, 0x7E, 0x01, 0xF8, 0x01, + 0xC0, 0x00, 0x7F, 0x00, 0x01, 0xFF, 0xE0, 0x07, 0xC0, 0xF0, 0x0F, 0x00, + 0x38, 0x1E, 0x00, 0x0C, 0x3C, 0x07, 0x06, 0x38, 0x1F, 0x72, 0x78, 0x3C, + 0xF3, 0x78, 0x78, 0xE1, 0xF0, 0x70, 0xE1, 0xF0, 0xF0, 0xE1, 0xF0, 0xE0, + 0xC1, 0xF1, 0xE1, 0xC1, 0xF1, 0xC1, 0xC1, 0xF1, 0xC3, 0x82, 0xF1, 0xC3, + 0x86, 0x71, 0xC7, 0x8C, 0x79, 0xFB, 0xF8, 0x78, 0xF1, 0xF0, 0x3C, 0x00, + 0x00, 0x1E, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x07, 0xC0, 0x78, 0x03, 0xFF, + 0xE0, 0x00, 0x7F, 0x80, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x78, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xFE, + 0x00, 0x00, 0xFE, 0x00, 0x01, 0xBF, 0x00, 0x01, 0xBF, 0x00, 0x01, 0x1F, + 0x00, 0x03, 0x1F, 0x80, 0x02, 0x1F, 0x80, 0x06, 0x0F, 0xC0, 0x06, 0x0F, + 0xC0, 0x04, 0x07, 0xE0, 0x0F, 0xFF, 0xE0, 0x0F, 0xFF, 0xE0, 0x18, 0x03, + 0xF0, 0x18, 0x03, 0xF0, 0x30, 0x01, 0xF8, 0x30, 0x01, 0xF8, 0x70, 0x01, + 0xFC, 0xFE, 0x0F, 0xFF, 0xFF, 0xFE, 0x07, 0xFF, 0xFE, 0x0F, 0xE1, 0xF8, + 0x3F, 0x07, 0xC1, 0xF8, 0x3F, 0x0F, 0xC1, 0xF8, 0x7E, 0x0F, 0xC3, 0xF0, + 0x7E, 0x1F, 0x87, 0xE0, 0xFC, 0x7C, 0x07, 0xFF, 0x00, 0x3F, 0xFF, 0x01, + 0xF8, 0xFE, 0x0F, 0xC1, 0xF8, 0x7E, 0x0F, 0xC3, 0xF0, 0x3F, 0x1F, 0x81, + 0xF8, 0xFC, 0x0F, 0xC7, 0xE0, 0x7E, 0x3F, 0x03, 0xF1, 0xF8, 0x3F, 0x0F, + 0xC3, 0xF0, 0xFF, 0xFF, 0x1F, 0xFF, 0xC0, 0x00, 0x7E, 0x04, 0x07, 0xFF, + 0x18, 0x1F, 0x07, 0xF0, 0x7C, 0x03, 0xE1, 0xF0, 0x03, 0xC7, 0xC0, 0x03, + 0x9F, 0x80, 0x03, 0x3F, 0x00, 0x06, 0x7C, 0x00, 0x05, 0xF8, 0x00, 0x03, + 0xF0, 0x00, 0x07, 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0x1F, 0x80, 0x00, 0x3F, + 0x00, 0x00, 0x7E, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x01, 0xF8, + 0x00, 0x01, 0xF0, 0x00, 0x23, 0xF0, 0x00, 0xC3, 0xF0, 0x07, 0x03, 0xF0, + 0x3C, 0x01, 0xFF, 0xE0, 0x00, 0xFF, 0x00, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, + 0x00, 0x7E, 0x1F, 0x80, 0xFC, 0x1F, 0x81, 0xF8, 0x1F, 0x83, 0xF0, 0x1F, + 0x07, 0xE0, 0x3F, 0x0F, 0xC0, 0x7E, 0x1F, 0x80, 0x7E, 0x3F, 0x00, 0xFC, + 0x7E, 0x01, 0xF8, 0xFC, 0x03, 0xF1, 0xF8, 0x07, 0xE3, 0xF0, 0x0F, 0xC7, + 0xE0, 0x1F, 0x8F, 0xC0, 0x3F, 0x1F, 0x80, 0x7C, 0x3F, 0x01, 0xF8, 0x7E, + 0x03, 0xE0, 0xFC, 0x0F, 0x81, 0xF8, 0x1F, 0x03, 0xF0, 0xFC, 0x0F, 0xFF, + 0xE0, 0x7F, 0xFF, 0x00, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0x0F, 0xC0, 0x78, + 0x7E, 0x01, 0xC3, 0xF0, 0x06, 0x1F, 0x80, 0x10, 0xFC, 0x10, 0x87, 0xE0, + 0x80, 0x3F, 0x0C, 0x01, 0xF8, 0xE0, 0x0F, 0xFF, 0x00, 0x7F, 0xF8, 0x03, + 0xF1, 0xC0, 0x1F, 0x86, 0x00, 0xFC, 0x10, 0x07, 0xE0, 0x80, 0x3F, 0x00, + 0x09, 0xF8, 0x00, 0xCF, 0xC0, 0x0C, 0x7E, 0x00, 0x63, 0xF0, 0x0F, 0x1F, + 0x81, 0xFB, 0xFF, 0xFF, 0xDF, 0xFF, 0xFC, 0xFF, 0xFF, 0xEF, 0xFF, 0xFC, + 0xFC, 0x0F, 0x9F, 0x80, 0x73, 0xF0, 0x06, 0x7E, 0x00, 0x4F, 0xC1, 0x09, + 0xF8, 0x20, 0x3F, 0x0C, 0x07, 0xE3, 0x80, 0xFF, 0xF0, 0x1F, 0xFE, 0x03, + 0xF1, 0xC0, 0x7E, 0x18, 0x0F, 0xC1, 0x01, 0xF8, 0x20, 0x3F, 0x00, 0x07, + 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x1F, + 0xE0, 0x07, 0xFF, 0x00, 0x00, 0x7E, 0x02, 0x01, 0xFF, 0xE3, 0x01, 0xF0, + 0x3F, 0x81, 0xF0, 0x07, 0xC1, 0xF0, 0x01, 0xE1, 0xF0, 0x00, 0x71, 0xF8, + 0x00, 0x18, 0xFC, 0x00, 0x0C, 0x7C, 0x00, 0x02, 0x7E, 0x00, 0x00, 0x3F, + 0x00, 0x00, 0x1F, 0x80, 0x00, 0x0F, 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x03, + 0xF0, 0x0F, 0xFF, 0xF8, 0x01, 0xFE, 0x7C, 0x00, 0x7E, 0x3F, 0x00, 0x3F, + 0x1F, 0x80, 0x1F, 0x87, 0xC0, 0x0F, 0xC1, 0xF0, 0x07, 0xE0, 0xFC, 0x03, + 0xF0, 0x1F, 0x83, 0xF0, 0x07, 0xFF, 0xE0, 0x00, 0x7F, 0x80, 0x00, 0xFF, + 0xC3, 0xFF, 0x7F, 0x81, 0xFE, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, + 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, + 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, 0xFF, 0xFC, 0x3F, 0xFF, 0xFC, 0x3F, + 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, + 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, + 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x7F, 0x81, 0xFE, 0xFF, 0xC3, 0xFF, 0xFF, + 0xEF, 0xF0, 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x07, + 0xE0, 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x07, 0xE0, + 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x1F, 0xE7, 0xFF, 0x07, 0xFF, 0x01, 0xFE, + 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, + 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, + 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, + 0x70, 0xFC, 0xF8, 0xFC, 0xF8, 0xF8, 0xF0, 0xF8, 0x71, 0xF0, 0x7F, 0xE0, + 0x1F, 0x80, 0xFF, 0xC3, 0xFF, 0x3F, 0xC0, 0x3E, 0x0F, 0xC0, 0x1C, 0x07, + 0xE0, 0x18, 0x03, 0xF0, 0x18, 0x01, 0xF8, 0x18, 0x00, 0xFC, 0x18, 0x00, + 0x7E, 0x18, 0x00, 0x3F, 0x18, 0x00, 0x1F, 0x9C, 0x00, 0x0F, 0xDF, 0x00, + 0x07, 0xFF, 0xC0, 0x03, 0xFF, 0xF0, 0x01, 0xF9, 0xF8, 0x00, 0xFC, 0xFE, + 0x00, 0x7E, 0x3F, 0x80, 0x3F, 0x0F, 0xE0, 0x1F, 0x83, 0xF8, 0x0F, 0xC0, + 0xFC, 0x07, 0xE0, 0x7F, 0x03, 0xF0, 0x1F, 0xC1, 0xF8, 0x07, 0xF1, 0xFE, + 0x03, 0xFD, 0xFF, 0x8F, 0xFF, 0xFF, 0xE0, 0x03, 0xFC, 0x00, 0x0F, 0xC0, + 0x00, 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, + 0xE0, 0x00, 0x3F, 0x00, 0x01, 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0x7E, 0x00, + 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x01, 0x3F, + 0x00, 0x19, 0xF8, 0x00, 0xCF, 0xC0, 0x0C, 0x7E, 0x00, 0x63, 0xF0, 0x0F, + 0x1F, 0x81, 0xFB, 0xFF, 0xFF, 0xDF, 0xFF, 0xFE, 0xFF, 0x80, 0x03, 0xFE, + 0x7F, 0x00, 0x07, 0xF8, 0x7E, 0x00, 0x0F, 0xE0, 0xFE, 0x00, 0x3F, 0xC1, + 0x7C, 0x00, 0x5F, 0x82, 0xFC, 0x01, 0xBF, 0x05, 0xF8, 0x02, 0x7E, 0x09, + 0xF8, 0x0C, 0xFC, 0x13, 0xF0, 0x11, 0xF8, 0x23, 0xE0, 0x23, 0xF0, 0x47, + 0xE0, 0xC7, 0xE0, 0x87, 0xC1, 0x0F, 0xC1, 0x0F, 0xC6, 0x1F, 0x82, 0x0F, + 0x88, 0x3F, 0x04, 0x1F, 0xB0, 0x7E, 0x08, 0x3F, 0x60, 0xFC, 0x10, 0x3E, + 0x81, 0xF8, 0x20, 0x7F, 0x03, 0xF0, 0x40, 0x7C, 0x07, 0xE0, 0x80, 0xF8, + 0x0F, 0xC1, 0x00, 0xE0, 0x1F, 0x82, 0x01, 0xC0, 0x3F, 0x0E, 0x03, 0x80, + 0xFF, 0x7F, 0x82, 0x03, 0xFF, 0xFE, 0x00, 0xFE, 0xFE, 0x00, 0x70, 0xFE, + 0x00, 0x40, 0xFE, 0x00, 0x81, 0xFC, 0x01, 0x03, 0xFC, 0x02, 0x05, 0xFC, + 0x04, 0x09, 0xFC, 0x08, 0x11, 0xFC, 0x10, 0x23, 0xF8, 0x20, 0x43, 0xF8, + 0x40, 0x83, 0xF8, 0x81, 0x03, 0xF9, 0x02, 0x03, 0xFA, 0x04, 0x03, 0xF4, + 0x08, 0x07, 0xF8, 0x10, 0x07, 0xF0, 0x20, 0x07, 0xE0, 0x40, 0x07, 0xC0, + 0x80, 0x07, 0x81, 0x00, 0x0F, 0x02, 0x00, 0x0E, 0x0E, 0x00, 0x0C, 0x7F, + 0x00, 0x08, 0x00, 0x7F, 0x00, 0x01, 0xFF, 0xF0, 0x01, 0xF0, 0x7C, 0x01, + 0xF0, 0x1F, 0x01, 0xF0, 0x07, 0xC1, 0xF0, 0x01, 0xF1, 0xF8, 0x00, 0xFC, + 0xFC, 0x00, 0x7E, 0x7C, 0x00, 0x1F, 0x7E, 0x00, 0x0F, 0xFF, 0x00, 0x07, + 0xFF, 0x80, 0x03, 0xFF, 0xC0, 0x01, 0xFF, 0xE0, 0x00, 0xFF, 0xF0, 0x00, + 0x7F, 0xF8, 0x00, 0x3F, 0x7C, 0x00, 0x1F, 0x3E, 0x00, 0x1F, 0x9F, 0x80, + 0x0F, 0xC7, 0xC0, 0x07, 0xC1, 0xF0, 0x07, 0xC0, 0xFC, 0x07, 0xE0, 0x3F, + 0x07, 0xC0, 0x07, 0xFF, 0xC0, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0xFC, 0x0F, + 0xFF, 0xE0, 0xFC, 0x7E, 0x1F, 0x87, 0xE3, 0xF0, 0x7E, 0x7E, 0x0F, 0xCF, + 0xC1, 0xF9, 0xF8, 0x3F, 0x3F, 0x07, 0xE7, 0xE0, 0xFC, 0xFC, 0x3F, 0x1F, + 0x8F, 0xC3, 0xFF, 0xF0, 0x7F, 0xF8, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, + 0x00, 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7E, + 0x00, 0x1F, 0xE0, 0x07, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x01, 0xFF, 0xF0, + 0x01, 0xF0, 0x7C, 0x01, 0xF0, 0x1F, 0x01, 0xF0, 0x07, 0xC1, 0xF0, 0x01, + 0xF1, 0xF8, 0x00, 0xFC, 0xFC, 0x00, 0x7E, 0x7C, 0x00, 0x1F, 0x7E, 0x00, + 0x0F, 0xFF, 0x00, 0x07, 0xFF, 0x80, 0x03, 0xFF, 0xC0, 0x01, 0xFF, 0xE0, + 0x00, 0xFF, 0xF0, 0x00, 0x7F, 0xF8, 0x00, 0x3F, 0x7C, 0x00, 0x1F, 0x3E, + 0x00, 0x0F, 0x9F, 0x80, 0x0F, 0xC7, 0xC0, 0x07, 0xC1, 0xF0, 0x07, 0xC0, + 0x78, 0x03, 0xC0, 0x1E, 0x07, 0xC0, 0x03, 0xFF, 0x80, 0x00, 0x7F, 0x00, + 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFE, 0x00, 0x00, 0xFF, + 0xF8, 0x00, 0x0F, 0xE0, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0x00, 0xFC, 0x3F, + 0x01, 0xF8, 0x3F, 0x03, 0xF0, 0x3F, 0x07, 0xE0, 0x7E, 0x0F, 0xC0, 0xFC, + 0x1F, 0x81, 0xF8, 0x3F, 0x03, 0xF0, 0x7E, 0x07, 0xC0, 0xFC, 0x1F, 0x81, + 0xF8, 0x7E, 0x03, 0xFF, 0xF0, 0x07, 0xFF, 0xC0, 0x0F, 0xDF, 0xC0, 0x1F, + 0x9F, 0x80, 0x3F, 0x1F, 0x80, 0x7E, 0x3F, 0x80, 0xFC, 0x3F, 0x81, 0xF8, + 0x3F, 0x03, 0xF0, 0x7F, 0x07, 0xE0, 0x7F, 0x1F, 0xE0, 0x7F, 0x7F, 0xE0, + 0xFF, 0x07, 0xC2, 0x1F, 0xF2, 0x3C, 0x3E, 0x70, 0x0E, 0xF0, 0x06, 0xF0, + 0x06, 0xF0, 0x02, 0xF8, 0x00, 0xFE, 0x00, 0xFF, 0x80, 0x7F, 0xE0, 0x3F, + 0xF8, 0x1F, 0xFC, 0x0F, 0xFE, 0x03, 0xFE, 0x00, 0xFF, 0x00, 0x3F, 0x80, + 0x1F, 0xC0, 0x0F, 0xC0, 0x0F, 0xE0, 0x0E, 0xF0, 0x1E, 0xF8, 0x3C, 0x9F, + 0xF8, 0x87, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x7E, 0x3F, 0x83, + 0xF0, 0x7C, 0x1F, 0x81, 0xC0, 0xFC, 0x06, 0x07, 0xE0, 0x20, 0x3F, 0x00, + 0x01, 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x1F, + 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x3F, 0x00, 0x01, 0xF8, 0x00, + 0x0F, 0xC0, 0x00, 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, + 0x00, 0x0F, 0xF0, 0x01, 0xFF, 0xE0, 0xFF, 0xC1, 0xFD, 0xFE, 0x01, 0xC3, + 0xF0, 0x02, 0x0F, 0xC0, 0x08, 0x3F, 0x00, 0x20, 0xFC, 0x00, 0x83, 0xF0, + 0x02, 0x0F, 0xC0, 0x08, 0x3F, 0x00, 0x20, 0xFC, 0x00, 0x83, 0xF0, 0x02, + 0x0F, 0xC0, 0x08, 0x3F, 0x00, 0x20, 0xFC, 0x00, 0x83, 0xF0, 0x02, 0x0F, + 0xC0, 0x08, 0x3F, 0x00, 0x20, 0xFC, 0x00, 0x83, 0xF0, 0x02, 0x0F, 0xC0, + 0x18, 0x1F, 0x80, 0x40, 0x7E, 0x03, 0x00, 0xFC, 0x18, 0x01, 0xFF, 0xC0, + 0x00, 0xFC, 0x00, 0xFF, 0xF0, 0x7F, 0x3F, 0xC0, 0x1E, 0x1F, 0x80, 0x0C, + 0x1F, 0x80, 0x08, 0x0F, 0xC0, 0x18, 0x0F, 0xC0, 0x18, 0x07, 0xE0, 0x10, + 0x07, 0xE0, 0x30, 0x07, 0xE0, 0x20, 0x03, 0xF0, 0x60, 0x03, 0xF0, 0x60, + 0x01, 0xF8, 0x40, 0x01, 0xF8, 0xC0, 0x00, 0xF8, 0x80, 0x00, 0xFC, 0x80, + 0x00, 0xFD, 0x80, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3E, 0x00, + 0x00, 0x3E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x1C, 0x00, + 0x00, 0x0C, 0x00, 0xFF, 0xE7, 0xFF, 0x0F, 0xCF, 0xE0, 0x7F, 0x00, 0xE1, + 0xF8, 0x0F, 0xC0, 0x30, 0x7E, 0x03, 0xF0, 0x0C, 0x1F, 0x80, 0x7C, 0x02, + 0x03, 0xE0, 0x1F, 0x81, 0x80, 0xFC, 0x07, 0xE0, 0x60, 0x3F, 0x03, 0xF8, + 0x10, 0x07, 0xC0, 0xBF, 0x0C, 0x01, 0xF8, 0x2F, 0xC3, 0x00, 0x7E, 0x19, + 0xF0, 0x80, 0x0F, 0x84, 0x7C, 0x60, 0x03, 0xF3, 0x0F, 0x98, 0x00, 0xFC, + 0xC3, 0xE4, 0x00, 0x1F, 0x20, 0xFB, 0x00, 0x07, 0xF8, 0x1F, 0xC0, 0x00, + 0xFC, 0x07, 0xE0, 0x00, 0x3F, 0x01, 0xF8, 0x00, 0x0F, 0xC0, 0x3E, 0x00, + 0x01, 0xE0, 0x0F, 0x00, 0x00, 0x78, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x70, + 0x00, 0x03, 0x00, 0x18, 0x00, 0x00, 0xC0, 0x06, 0x00, 0x00, 0x20, 0x00, + 0x80, 0x00, 0xFF, 0xF3, 0xFE, 0x7F, 0x80, 0x78, 0x3F, 0x80, 0x70, 0x1F, + 0xC0, 0x60, 0x0F, 0xC0, 0xC0, 0x0F, 0xE1, 0x80, 0x07, 0xF1, 0x00, 0x03, + 0xF3, 0x00, 0x03, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x00, + 0xFE, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0x80, 0x00, + 0x9F, 0x80, 0x01, 0x8F, 0xC0, 0x03, 0x0F, 0xE0, 0x06, 0x07, 0xE0, 0x06, + 0x07, 0xF0, 0x0C, 0x03, 0xF8, 0x1C, 0x03, 0xF8, 0x3C, 0x03, 0xFC, 0xFF, + 0x0F, 0xFF, 0xFF, 0xF0, 0xFF, 0x7F, 0x80, 0x1E, 0x3F, 0x80, 0x1C, 0x1F, + 0x80, 0x18, 0x1F, 0xC0, 0x10, 0x0F, 0xC0, 0x30, 0x07, 0xE0, 0x20, 0x07, + 0xE0, 0x60, 0x03, 0xF0, 0xC0, 0x03, 0xF0, 0x80, 0x01, 0xF9, 0x80, 0x01, + 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7E, 0x00, 0x00, + 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, + 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0xFF, 0x00, 0x01, + 0xFF, 0x80, 0x7F, 0xFF, 0xF3, 0xFF, 0xFF, 0x9F, 0x01, 0xF8, 0xE0, 0x1F, + 0x86, 0x01, 0xFC, 0x20, 0x0F, 0xC1, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, + 0x7E, 0x00, 0x07, 0xE0, 0x00, 0x3F, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x80, + 0x01, 0xF8, 0x00, 0x1F, 0x80, 0x01, 0xFC, 0x01, 0x0F, 0xC0, 0x18, 0xFC, + 0x00, 0xC7, 0xE0, 0x06, 0x7E, 0x00, 0x77, 0xF0, 0x07, 0x3F, 0x00, 0xFB, + 0xFF, 0xFF, 0xDF, 0xFF, 0xFE, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xFF, 0xFF, 0xE0, 0x1E, + 0x01, 0xC0, 0x38, 0x07, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x1C, 0x03, 0x80, + 0x70, 0x07, 0x00, 0xE0, 0x1C, 0x01, 0xC0, 0x38, 0x07, 0x00, 0x70, 0x0E, + 0x01, 0xC0, 0x1C, 0x03, 0x80, 0x70, 0x0F, 0x00, 0xE0, 0xFF, 0xFF, 0x0F, + 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0xFF, 0xFF, 0x03, 0x80, 0x0F, 0x00, 0x1F, 0x00, 0x7E, 0x00, 0xEE, 0x03, + 0x9C, 0x07, 0x1C, 0x1C, 0x38, 0x38, 0x38, 0xE0, 0x71, 0xC0, 0x77, 0x00, + 0xEE, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xE0, 0xF0, + 0x78, 0x3C, 0x0E, 0x07, 0x0F, 0xE0, 0x3F, 0xF0, 0x78, 0xF8, 0x78, 0x7C, + 0x78, 0x7C, 0x38, 0x7C, 0x00, 0x7C, 0x03, 0xFC, 0x1E, 0x7C, 0x7C, 0x7C, + 0xFC, 0x7C, 0xFC, 0x7C, 0xFC, 0xFC, 0xFF, 0xFD, 0x7F, 0x7F, 0x3C, 0x3C, + 0xFC, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x1F, + 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0xF8, 0x1F, 0x7F, 0x87, 0xE3, + 0xF1, 0xF0, 0x7E, 0x7C, 0x0F, 0x9F, 0x03, 0xF7, 0xC0, 0xFD, 0xF0, 0x3F, + 0x7C, 0x0F, 0xDF, 0x03, 0xF7, 0xC0, 0xFD, 0xF0, 0x3E, 0x7C, 0x1F, 0x1F, + 0x8F, 0xC6, 0x7F, 0xC1, 0x07, 0xC0, 0x07, 0xC0, 0x7F, 0xC3, 0xC7, 0x9F, + 0x1E, 0x78, 0x7B, 0xE1, 0xCF, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, + 0x80, 0x3F, 0x00, 0x7C, 0x00, 0xFC, 0x61, 0xFF, 0x03, 0xF0, 0x00, 0x7F, + 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x07, 0xC0, + 0x01, 0xF0, 0x00, 0x7C, 0x07, 0x9F, 0x07, 0xF7, 0xC3, 0xE3, 0xF1, 0xF8, + 0x7C, 0x7C, 0x1F, 0x3F, 0x07, 0xCF, 0xC1, 0xF3, 0xF0, 0x7C, 0xFC, 0x1F, + 0x3F, 0x07, 0xCF, 0xC1, 0xF1, 0xF0, 0x7C, 0x7E, 0x1F, 0x0F, 0x8F, 0xC1, + 0xFD, 0xFC, 0x3E, 0x70, 0x0F, 0xC0, 0x7F, 0xC3, 0xC7, 0x1E, 0x1E, 0xF8, + 0x7B, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0xC0, 0x1F, + 0x03, 0x7E, 0x18, 0xFF, 0xC1, 0xFE, 0x03, 0xF0, 0x0F, 0x83, 0xF8, 0xF3, + 0xBE, 0xF7, 0xDC, 0xF8, 0x1F, 0x03, 0xE0, 0xFF, 0x1F, 0xE1, 0xF0, 0x3E, + 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, + 0xC0, 0xF8, 0x1F, 0x07, 0xF8, 0x0F, 0xC0, 0x1F, 0xFF, 0xDF, 0x1F, 0xFF, + 0x07, 0x8F, 0x83, 0xE7, 0xC1, 0xF3, 0xE0, 0xF9, 0xF0, 0x7C, 0x78, 0x3C, + 0x1E, 0x3E, 0x03, 0xFC, 0x03, 0x00, 0x07, 0x00, 0x07, 0x80, 0x03, 0xFF, + 0xF1, 0xFF, 0xFE, 0x7F, 0xFF, 0x8F, 0xFF, 0xF8, 0x01, 0xFC, 0x00, 0x7F, + 0x00, 0x73, 0xFF, 0xF0, 0x7F, 0xC0, 0xFC, 0x00, 0x3E, 0x00, 0x1F, 0x00, + 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x7C, + 0x7C, 0x3E, 0xFF, 0x1F, 0xCF, 0xCF, 0x83, 0xE7, 0xC1, 0xF3, 0xE0, 0xF9, + 0xF0, 0x7C, 0xF8, 0x3E, 0x7C, 0x1F, 0x3E, 0x0F, 0x9F, 0x07, 0xCF, 0x83, + 0xE7, 0xC1, 0xF3, 0xE0, 0xF9, 0xF0, 0x7D, 0xFC, 0x7F, 0x39, 0xFB, 0xF7, + 0xE7, 0x80, 0x00, 0x00, 0xFC, 0xF9, 0xF3, 0xE7, 0xCF, 0x9F, 0x3E, 0x7C, + 0xF9, 0xF3, 0xE7, 0xCF, 0x9F, 0x7F, 0x03, 0xC0, 0xFC, 0x1F, 0x83, 0xF0, + 0x3C, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, + 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, + 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7D, 0xCF, 0xF9, 0xEE, 0x7C, 0xFF, 0x0F, + 0x80, 0xFC, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, + 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x7F, 0x9F, 0x07, 0x87, + 0xC1, 0x81, 0xF0, 0xC0, 0x7C, 0x60, 0x1F, 0x30, 0x07, 0xDE, 0x01, 0xFF, + 0xC0, 0x7F, 0xF0, 0x1F, 0x3E, 0x07, 0xCF, 0xC1, 0xF1, 0xF8, 0x7C, 0x3E, + 0x1F, 0x07, 0xC7, 0xC1, 0xFB, 0xF9, 0xFF, 0xFC, 0xF9, 0xF3, 0xE7, 0xCF, + 0x9F, 0x3E, 0x7C, 0xF9, 0xF3, 0xE7, 0xCF, 0x9F, 0x3E, 0x7C, 0xF9, 0xF3, + 0xE7, 0xCF, 0x9F, 0x7F, 0xFC, 0x7C, 0x1F, 0x0F, 0xBF, 0xCF, 0xF1, 0xF8, + 0xFF, 0x3F, 0x3E, 0x0F, 0x83, 0xE7, 0xC1, 0xF0, 0x7C, 0xF8, 0x3E, 0x0F, + 0x9F, 0x07, 0xC1, 0xF3, 0xE0, 0xF8, 0x3E, 0x7C, 0x1F, 0x07, 0xCF, 0x83, + 0xE0, 0xF9, 0xF0, 0x7C, 0x1F, 0x3E, 0x0F, 0x83, 0xE7, 0xC1, 0xF0, 0x7C, + 0xF8, 0x3E, 0x0F, 0x9F, 0x07, 0xC1, 0xF7, 0xF1, 0xFC, 0x7F, 0xFC, 0x7C, + 0x3E, 0xFF, 0x1F, 0xCF, 0xCF, 0x83, 0xE7, 0xC1, 0xF3, 0xE0, 0xF9, 0xF0, + 0x7C, 0xF8, 0x3E, 0x7C, 0x1F, 0x3E, 0x0F, 0x9F, 0x07, 0xCF, 0x83, 0xE7, + 0xC1, 0xF3, 0xE0, 0xF9, 0xF0, 0x7D, 0xFC, 0x7F, 0x07, 0xF0, 0x0F, 0xFE, + 0x0F, 0x8F, 0x8F, 0x87, 0xE7, 0xC1, 0xF7, 0xE0, 0xFF, 0xF0, 0x7F, 0xF8, + 0x3F, 0xFC, 0x1F, 0xFE, 0x0F, 0xFF, 0x07, 0xEF, 0x83, 0xE7, 0xC1, 0xF1, + 0xF1, 0xF0, 0x7F, 0xF0, 0x0F, 0xE0, 0xFE, 0x7C, 0x07, 0xDF, 0xE0, 0xFE, + 0x3E, 0x1F, 0x07, 0xE3, 0xE0, 0x7C, 0x7C, 0x0F, 0xCF, 0x81, 0xF9, 0xF0, + 0x3F, 0x3E, 0x07, 0xE7, 0xC0, 0xFC, 0xF8, 0x1F, 0x9F, 0x03, 0xE3, 0xE0, + 0xFC, 0x7E, 0x3F, 0x0F, 0xBF, 0xC1, 0xF3, 0xE0, 0x3E, 0x00, 0x07, 0xC0, + 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x7E, 0x00, 0x1F, 0xE0, + 0x00, 0x07, 0xC1, 0x0F, 0xF9, 0x8F, 0xCD, 0xCF, 0xC3, 0xE7, 0xC1, 0xF7, + 0xE0, 0xFB, 0xF0, 0x7D, 0xF8, 0x3E, 0xFC, 0x1F, 0x7E, 0x0F, 0xBF, 0x07, + 0xDF, 0x83, 0xE7, 0xE1, 0xF1, 0xF1, 0xF8, 0x7F, 0x7C, 0x1F, 0x3E, 0x00, + 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x01, 0xF8, + 0x01, 0xFE, 0xFC, 0x73, 0xEF, 0xDF, 0xFE, 0xFC, 0xF7, 0xC3, 0xBE, 0x01, + 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x07, 0xC0, 0x3E, + 0x01, 0xF0, 0x1F, 0xE0, 0x1E, 0x23, 0xFE, 0x70, 0xEE, 0x06, 0xE0, 0x2F, + 0x80, 0xFF, 0x07, 0xFC, 0x3F, 0xE0, 0xFF, 0x81, 0xF8, 0x07, 0xC0, 0x7E, + 0x0E, 0xBF, 0xC8, 0xF8, 0x04, 0x03, 0x01, 0xC0, 0xF0, 0x7C, 0x3F, 0xEF, + 0xF9, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, + 0x7C, 0x5F, 0x37, 0xF8, 0xFE, 0x1E, 0x00, 0xFC, 0x7F, 0x1F, 0x07, 0xC7, + 0xC1, 0xF1, 0xF0, 0x7C, 0x7C, 0x1F, 0x1F, 0x07, 0xC7, 0xC1, 0xF1, 0xF0, + 0x7C, 0x7C, 0x1F, 0x1F, 0x07, 0xC7, 0xC1, 0xF1, 0xF0, 0x7C, 0x7C, 0x1F, + 0x1F, 0x8F, 0xC3, 0xFD, 0xFC, 0x7C, 0x60, 0xFF, 0x9F, 0xBF, 0x83, 0x0F, + 0x81, 0x87, 0xE0, 0x81, 0xF0, 0x40, 0xF8, 0x40, 0x3E, 0x20, 0x1F, 0x30, + 0x07, 0xD0, 0x03, 0xF8, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3C, 0x00, 0x0E, + 0x00, 0x07, 0x00, 0x01, 0x00, 0xFF, 0x3F, 0xCF, 0x7E, 0x1F, 0x06, 0x3E, + 0x0F, 0x06, 0x3E, 0x0F, 0x84, 0x1F, 0x0F, 0x8C, 0x1F, 0x1F, 0x88, 0x0F, + 0x17, 0xC8, 0x0F, 0x97, 0xD8, 0x0F, 0xB3, 0xD0, 0x07, 0xE3, 0xF0, 0x07, + 0xE3, 0xE0, 0x03, 0xC1, 0xE0, 0x03, 0xC1, 0xE0, 0x03, 0x81, 0xC0, 0x01, + 0x80, 0xC0, 0x01, 0x80, 0x80, 0xFF, 0x3F, 0x7E, 0x0C, 0x3E, 0x08, 0x3F, + 0x18, 0x1F, 0x30, 0x0F, 0xE0, 0x0F, 0xC0, 0x07, 0xE0, 0x03, 0xE0, 0x03, + 0xF0, 0x05, 0xF8, 0x0C, 0xF8, 0x18, 0xFC, 0x30, 0x7E, 0x70, 0x7E, 0xFC, + 0xFF, 0xFF, 0x3F, 0x7E, 0x0C, 0x7C, 0x0C, 0x3E, 0x08, 0x3E, 0x08, 0x1E, + 0x18, 0x1F, 0x10, 0x0F, 0x30, 0x0F, 0xA0, 0x0F, 0xA0, 0x07, 0xE0, 0x07, + 0xC0, 0x03, 0xC0, 0x03, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x00, 0x01, + 0x00, 0x61, 0x00, 0xF2, 0x00, 0xF6, 0x00, 0xFC, 0x00, 0x78, 0x00, 0x7F, + 0xFD, 0xFF, 0xF7, 0x0F, 0xD0, 0x3E, 0x01, 0xF0, 0x0F, 0xC0, 0x3E, 0x01, + 0xF0, 0x0F, 0xC0, 0x3E, 0x01, 0xF8, 0x0F, 0xC1, 0x3E, 0x05, 0xF8, 0x7F, + 0xFF, 0xFF, 0xFF, 0x01, 0xE0, 0xF8, 0x3E, 0x07, 0x80, 0xF0, 0x1E, 0x03, + 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x07, 0x87, + 0x80, 0x1E, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, + 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF8, 0x0F, 0x80, 0x78, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xF0, 0x0F, 0x80, 0xF0, + 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, + 0x01, 0xE0, 0x3C, 0x03, 0xC0, 0x0F, 0x0F, 0x03, 0xC0, 0x78, 0x0F, 0x01, + 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x03, 0xE0, + 0xF8, 0x3C, 0x00, 0x3E, 0x00, 0x7F, 0xC6, 0xFF, 0xFF, 0x61, 0xFE, 0x00, + 0x7C}; + +const GFXglyph FreeSerifBold18pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 9, 0, 1}, // 0x20 ' ' + {0, 6, 24, 12, 3, -23}, // 0x21 '!' + {18, 13, 10, 19, 3, -23}, // 0x22 '"' + {35, 18, 24, 17, 0, -23}, // 0x23 '#' + {89, 15, 28, 17, 1, -25}, // 0x24 '$' + {142, 27, 24, 35, 4, -23}, // 0x25 '%' + {223, 26, 25, 29, 2, -23}, // 0x26 '&' + {305, 4, 10, 10, 3, -23}, // 0x27 ''' + {310, 9, 30, 12, 2, -23}, // 0x28 '(' + {344, 9, 30, 12, 1, -23}, // 0x29 ')' + {378, 14, 15, 18, 2, -23}, // 0x2A '*' + {405, 19, 19, 24, 2, -17}, // 0x2B '+' + {451, 6, 12, 9, 1, -5}, // 0x2C ',' + {460, 8, 4, 12, 2, -9}, // 0x2D '-' + {464, 6, 6, 9, 1, -5}, // 0x2E '.' + {469, 11, 25, 10, -1, -23}, // 0x2F '/' + {504, 16, 24, 18, 1, -23}, // 0x30 '0' + {552, 12, 24, 18, 3, -23}, // 0x31 '1' + {588, 16, 24, 17, 1, -23}, // 0x32 '2' + {636, 16, 24, 18, 0, -23}, // 0x33 '3' + {684, 15, 24, 18, 1, -23}, // 0x34 '4' + {729, 15, 24, 18, 1, -23}, // 0x35 '5' + {774, 16, 24, 18, 1, -23}, // 0x36 '6' + {822, 16, 24, 17, 1, -23}, // 0x37 '7' + {870, 16, 24, 17, 1, -23}, // 0x38 '8' + {918, 16, 24, 18, 1, -23}, // 0x39 '9' + {966, 6, 16, 12, 3, -15}, // 0x3A ':' + {978, 7, 22, 12, 2, -15}, // 0x3B ';' + {998, 19, 20, 24, 2, -18}, // 0x3C '<' + {1046, 19, 12, 24, 2, -14}, // 0x3D '=' + {1075, 19, 20, 24, 3, -18}, // 0x3E '>' + {1123, 14, 24, 18, 2, -23}, // 0x3F '?' + {1165, 24, 25, 33, 4, -23}, // 0x40 '@' + {1240, 24, 24, 25, 1, -23}, // 0x41 'A' + {1312, 21, 24, 23, 1, -23}, // 0x42 'B' + {1375, 23, 25, 25, 1, -23}, // 0x43 'C' + {1447, 23, 24, 26, 1, -23}, // 0x44 'D' + {1516, 21, 24, 23, 2, -23}, // 0x45 'E' + {1579, 19, 24, 22, 2, -23}, // 0x46 'F' + {1636, 25, 25, 27, 1, -23}, // 0x47 'G' + {1715, 24, 24, 27, 2, -23}, // 0x48 'H' + {1787, 11, 24, 14, 2, -23}, // 0x49 'I' + {1820, 16, 27, 18, 0, -23}, // 0x4A 'J' + {1874, 25, 24, 27, 2, -23}, // 0x4B 'K' + {1949, 21, 24, 23, 2, -23}, // 0x4C 'L' + {2012, 31, 24, 33, 1, -23}, // 0x4D 'M' + {2105, 23, 24, 25, 1, -23}, // 0x4E 'N' + {2174, 25, 25, 27, 1, -23}, // 0x4F 'O' + {2253, 19, 24, 22, 2, -23}, // 0x50 'P' + {2310, 25, 30, 27, 1, -23}, // 0x51 'Q' + {2404, 23, 24, 25, 2, -23}, // 0x52 'R' + {2473, 16, 25, 20, 2, -23}, // 0x53 'S' + {2523, 21, 24, 23, 1, -23}, // 0x54 'T' + {2586, 22, 25, 25, 2, -23}, // 0x55 'U' + {2655, 24, 24, 25, 0, -23}, // 0x56 'V' + {2727, 34, 25, 34, 0, -23}, // 0x57 'W' + {2834, 24, 24, 25, 1, -23}, // 0x58 'X' + {2906, 24, 24, 25, 1, -23}, // 0x59 'Y' + {2978, 21, 24, 23, 1, -23}, // 0x5A 'Z' + {3041, 8, 29, 12, 2, -23}, // 0x5B '[' + {3070, 11, 25, 10, -1, -23}, // 0x5C '\' + {3105, 8, 29, 12, 2, -23}, // 0x5D ']' + {3134, 15, 13, 20, 3, -23}, // 0x5E '^' + {3159, 18, 3, 17, 0, 3}, // 0x5F '_' + {3166, 8, 6, 12, 0, -23}, // 0x60 '`' + {3172, 16, 16, 18, 1, -15}, // 0x61 'a' + {3204, 18, 24, 19, 1, -23}, // 0x62 'b' + {3258, 14, 16, 15, 1, -15}, // 0x63 'c' + {3286, 18, 24, 19, 1, -23}, // 0x64 'd' + {3340, 14, 16, 16, 1, -15}, // 0x65 'e' + {3368, 11, 24, 14, 2, -23}, // 0x66 'f' + {3401, 17, 23, 17, 1, -15}, // 0x67 'g' + {3450, 17, 24, 19, 1, -23}, // 0x68 'h' + {3501, 7, 24, 10, 2, -23}, // 0x69 'i' + {3522, 11, 31, 14, 0, -23}, // 0x6A 'j' + {3565, 18, 24, 19, 1, -23}, // 0x6B 'k' + {3619, 7, 24, 10, 1, -23}, // 0x6C 'l' + {3640, 27, 16, 29, 1, -15}, // 0x6D 'm' + {3694, 17, 16, 19, 1, -15}, // 0x6E 'n' + {3728, 17, 16, 18, 1, -15}, // 0x6F 'o' + {3762, 19, 23, 19, 0, -15}, // 0x70 'p' + {3817, 17, 23, 19, 1, -15}, // 0x71 'q' + {3866, 13, 16, 15, 1, -15}, // 0x72 'r' + {3892, 12, 16, 14, 1, -15}, // 0x73 's' + {3916, 10, 21, 12, 1, -20}, // 0x74 't' + {3943, 18, 16, 20, 1, -15}, // 0x75 'u' + {3979, 17, 16, 17, 0, -15}, // 0x76 'v' + {4013, 24, 16, 25, 0, -15}, // 0x77 'w' + {4061, 16, 16, 18, 1, -15}, // 0x78 'x' + {4093, 16, 23, 17, 0, -15}, // 0x79 'y' + {4139, 14, 16, 16, 0, -15}, // 0x7A 'z' + {4167, 11, 31, 14, 1, -24}, // 0x7B '{' + {4210, 3, 25, 8, 2, -23}, // 0x7C '|' + {4220, 11, 31, 14, 3, -24}, // 0x7D '}' + {4263, 16, 5, 18, 1, -11}}; // 0x7E '~' + +const GFXfont FreeSerifBold18pt7b PROGMEM = { + (uint8_t *)FreeSerifBold18pt7bBitmaps, + (GFXglyph *)FreeSerifBold18pt7bGlyphs, 0x20, 0x7E, 42}; + +// Approx. 4945 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerifBold24pt7b.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerifBold24pt7b.h new file mode 100644 index 0000000..e6681f5 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerifBold24pt7b.h @@ -0,0 +1,761 @@ +#pragma once +#include + +const uint8_t FreeSerifBold24pt7bBitmaps[] PROGMEM = { + 0x3C, 0x7E, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x7E, 0x7C, 0x7C, + 0x3C, 0x3C, 0x38, 0x38, 0x38, 0x38, 0x18, 0x10, 0x10, 0x10, 0x00, 0x00, + 0x00, 0x00, 0x3C, 0x7E, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x3C, 0x70, 0x07, + 0x7C, 0x07, 0xFE, 0x03, 0xFF, 0x01, 0xFF, 0x80, 0xFF, 0xC0, 0x7F, 0xC0, + 0x3E, 0xE0, 0x0E, 0x70, 0x07, 0x38, 0x03, 0x9C, 0x01, 0xC4, 0x00, 0xE2, + 0x00, 0x20, 0x00, 0xF0, 0x70, 0x01, 0xC0, 0xE0, 0x03, 0x81, 0xC0, 0x0F, + 0x07, 0x80, 0x1E, 0x0F, 0x00, 0x3C, 0x1E, 0x00, 0x78, 0x3C, 0x00, 0xF0, + 0x78, 0x01, 0xC0, 0xE0, 0x03, 0x81, 0xC0, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, + 0xF3, 0xFF, 0xFF, 0xE0, 0x78, 0x3C, 0x00, 0xF0, 0x78, 0x01, 0xC0, 0xE0, + 0x03, 0x81, 0xC0, 0x0F, 0x07, 0x80, 0x1E, 0x0F, 0x00, 0x3C, 0x1E, 0x0F, + 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0x03, 0x81, 0xC0, 0x0F, + 0x07, 0x80, 0x1E, 0x0F, 0x00, 0x3C, 0x1E, 0x00, 0x78, 0x3C, 0x00, 0xF0, + 0x78, 0x01, 0xE0, 0xE0, 0x03, 0x81, 0xC0, 0x07, 0x07, 0x80, 0x1E, 0x0F, + 0x00, 0x00, 0x60, 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, 0x00, 0xC0, 0x00, + 0x7F, 0xF0, 0x0F, 0x37, 0xE0, 0xE1, 0x8F, 0x8E, 0x0C, 0x3C, 0x70, 0x60, + 0xE7, 0x83, 0x03, 0x3C, 0x18, 0x19, 0xF0, 0xC0, 0x4F, 0xC6, 0x02, 0x7F, + 0xF0, 0x03, 0xFF, 0x80, 0x0F, 0xFE, 0x00, 0x3F, 0xFC, 0x00, 0xFF, 0xF0, + 0x03, 0xFF, 0xE0, 0x0F, 0xFF, 0x80, 0x1F, 0xFE, 0x00, 0x3F, 0xF8, 0x01, + 0xFF, 0xC0, 0x0C, 0xFF, 0x00, 0x63, 0xFA, 0x03, 0x0F, 0xD0, 0x18, 0x3E, + 0x80, 0xC1, 0xF6, 0x06, 0x0F, 0xB8, 0x30, 0x79, 0xC1, 0x87, 0xCF, 0x0C, + 0x3C, 0x7E, 0x67, 0xC0, 0xFF, 0xF8, 0x00, 0xFE, 0x00, 0x00, 0xC0, 0x00, + 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x30, + 0x00, 0x3E, 0x00, 0x0C, 0x00, 0x0F, 0xF0, 0x03, 0x80, 0x07, 0xE7, 0x03, + 0xE0, 0x01, 0xF8, 0x7F, 0xFC, 0x00, 0x3E, 0x07, 0xF7, 0x00, 0x0F, 0xC0, + 0x80, 0xE0, 0x03, 0xF0, 0x10, 0x38, 0x00, 0x7E, 0x02, 0x07, 0x00, 0x0F, + 0x80, 0x41, 0xC0, 0x03, 0xF0, 0x10, 0x30, 0x00, 0x7E, 0x02, 0x0E, 0x00, + 0x0F, 0x80, 0xC1, 0x80, 0x01, 0xF0, 0x10, 0x70, 0x00, 0x3E, 0x06, 0x1C, + 0x00, 0x07, 0xC1, 0x83, 0x80, 0x00, 0x7C, 0x60, 0xE0, 0x1F, 0x07, 0xF8, + 0x18, 0x0F, 0xF8, 0x7C, 0x07, 0x07, 0xF1, 0x00, 0x00, 0xC1, 0xF8, 0x10, + 0x00, 0x38, 0x3F, 0x02, 0x00, 0x06, 0x0F, 0xC0, 0x40, 0x01, 0xC3, 0xF0, + 0x08, 0x00, 0x30, 0x7E, 0x01, 0x00, 0x0E, 0x1F, 0x80, 0x40, 0x03, 0x83, + 0xF0, 0x08, 0x00, 0x60, 0x7E, 0x01, 0x00, 0x1C, 0x0F, 0x80, 0x40, 0x03, + 0x01, 0xF0, 0x18, 0x00, 0xE0, 0x3E, 0x02, 0x00, 0x18, 0x03, 0xC0, 0xC0, + 0x07, 0x00, 0x7C, 0x70, 0x00, 0xC0, 0x07, 0xFC, 0x00, 0x38, 0x00, 0x7E, + 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x07, 0x8F, + 0xE0, 0x00, 0x03, 0xC1, 0xF8, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x7C, + 0x07, 0xC0, 0x00, 0x1F, 0x01, 0xF0, 0x00, 0x07, 0xE0, 0x7C, 0x00, 0x01, + 0xF8, 0x1E, 0x00, 0x00, 0x7F, 0x07, 0x80, 0x00, 0x1F, 0xE3, 0x80, 0x00, + 0x03, 0xFF, 0xC0, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x1F, 0xE0, 0x3F, + 0xF0, 0x07, 0xFC, 0x01, 0xF0, 0x07, 0xFF, 0x00, 0x78, 0x07, 0xBF, 0xE0, + 0x1C, 0x03, 0x87, 0xFC, 0x07, 0x01, 0xE0, 0xFF, 0x81, 0x80, 0xF0, 0x3F, + 0xE0, 0xC0, 0x7C, 0x07, 0xFC, 0x30, 0x1F, 0x00, 0xFF, 0x98, 0x0F, 0xC0, + 0x3F, 0xFC, 0x03, 0xF0, 0x07, 0xFF, 0x00, 0xFE, 0x00, 0xFF, 0x80, 0x3F, + 0x80, 0x3F, 0xF0, 0x0F, 0xF0, 0x07, 0xFE, 0x03, 0xFC, 0x00, 0xFF, 0x81, + 0x7F, 0x80, 0x3F, 0xF8, 0xDF, 0xF0, 0x1F, 0xFF, 0xE3, 0xFF, 0x0E, 0xFF, + 0xF8, 0xFF, 0xFE, 0x1F, 0xFC, 0x0F, 0xFE, 0x03, 0xFE, 0x00, 0xFE, 0x00, + 0x3E, 0x00, 0x77, 0xFF, 0xFF, 0xFF, 0xEE, 0x73, 0x9C, 0xE2, 0x00, 0x00, + 0x00, 0x03, 0x00, 0x60, 0x1C, 0x03, 0x80, 0x70, 0x06, 0x00, 0xE0, 0x1C, + 0x01, 0xC0, 0x3C, 0x03, 0xC0, 0x78, 0x07, 0x80, 0x78, 0x07, 0x80, 0xF8, + 0x0F, 0x80, 0xF8, 0x0F, 0x80, 0xF8, 0x0F, 0x80, 0xF8, 0x0F, 0x80, 0xF8, + 0x0F, 0x80, 0x78, 0x07, 0x80, 0x78, 0x03, 0xC0, 0x3C, 0x01, 0xC0, 0x1C, + 0x00, 0xE0, 0x0E, 0x00, 0x70, 0x03, 0x00, 0x18, 0x00, 0xC0, 0x03, 0x00, + 0x10, 0x00, 0x0C, 0x00, 0x60, 0x03, 0x00, 0x18, 0x00, 0xC0, 0x06, 0x00, + 0x70, 0x03, 0x80, 0x38, 0x03, 0xC0, 0x3C, 0x03, 0xE0, 0x1E, 0x01, 0xE0, + 0x1E, 0x01, 0xF0, 0x1F, 0x01, 0xF0, 0x1F, 0x01, 0xF0, 0x1F, 0x01, 0xF0, + 0x1F, 0x01, 0xF0, 0x1F, 0x01, 0xE0, 0x1E, 0x01, 0xE0, 0x3C, 0x03, 0xC0, + 0x38, 0x03, 0x80, 0x70, 0x07, 0x00, 0xE0, 0x0C, 0x01, 0x80, 0x30, 0x0C, + 0x00, 0x80, 0x00, 0x01, 0xC0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, + 0x03, 0xE0, 0x3C, 0x78, 0xEF, 0x9C, 0x7B, 0xF7, 0x3F, 0xFE, 0xDF, 0x8F, + 0xFF, 0xC0, 0x7F, 0x00, 0x3F, 0xC0, 0x7E, 0xBF, 0x3F, 0x77, 0xEF, 0x9C, + 0xFF, 0xC7, 0x1E, 0x63, 0xE3, 0x80, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, + 0x01, 0xC0, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xE0, + 0x00, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, + 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x0F, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, + 0x80, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, + 0x07, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, + 0x00, 0x3C, 0x7E, 0xFE, 0xFF, 0xFF, 0xFF, 0x7F, 0x07, 0x06, 0x06, 0x0C, + 0x18, 0x30, 0x60, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x3C, + 0x7E, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x3C, 0x00, 0x1E, 0x00, 0x7C, 0x00, + 0xF0, 0x01, 0xE0, 0x07, 0xC0, 0x0F, 0x00, 0x1E, 0x00, 0x7C, 0x00, 0xF0, + 0x01, 0xE0, 0x07, 0xC0, 0x0F, 0x00, 0x1E, 0x00, 0x7C, 0x00, 0xF0, 0x01, + 0xE0, 0x07, 0xC0, 0x0F, 0x00, 0x1E, 0x00, 0x7C, 0x00, 0xF0, 0x01, 0xE0, + 0x03, 0xC0, 0x0F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0xF0, 0x01, 0xE0, 0x03, + 0xC0, 0x0F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0xF0, 0x00, 0x00, 0xFC, 0x00, + 0x0F, 0x3C, 0x00, 0x78, 0x78, 0x03, 0xE1, 0xF0, 0x1F, 0x03, 0xE0, 0x7C, + 0x0F, 0x83, 0xF0, 0x3F, 0x0F, 0xC0, 0xFC, 0x7F, 0x03, 0xF9, 0xFC, 0x0F, + 0xE7, 0xF0, 0x3F, 0xBF, 0xC0, 0xFE, 0xFF, 0x03, 0xFF, 0xFC, 0x0F, 0xFF, + 0xF0, 0x3F, 0xFF, 0xC0, 0xFF, 0xFF, 0x03, 0xFF, 0xFC, 0x0F, 0xFF, 0xF0, + 0x3F, 0xFF, 0xC0, 0xFF, 0xFF, 0x03, 0xFF, 0xFC, 0x0F, 0xFF, 0xF0, 0x3F, + 0x9F, 0xC0, 0xFE, 0x7F, 0x03, 0xF9, 0xFC, 0x0F, 0xE3, 0xF0, 0x3F, 0x0F, + 0xC0, 0xFC, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x80, 0xF8, 0x7C, 0x01, 0xE1, + 0xE0, 0x03, 0xCF, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x18, 0x00, 0x1E, 0x00, + 0x1F, 0x80, 0x1F, 0xE0, 0x1F, 0xF8, 0x1D, 0xFE, 0x00, 0x3F, 0x80, 0x0F, + 0xE0, 0x03, 0xF8, 0x00, 0xFE, 0x00, 0x3F, 0x80, 0x0F, 0xE0, 0x03, 0xF8, + 0x00, 0xFE, 0x00, 0x3F, 0x80, 0x0F, 0xE0, 0x03, 0xF8, 0x00, 0xFE, 0x00, + 0x3F, 0x80, 0x0F, 0xE0, 0x03, 0xF8, 0x00, 0xFE, 0x00, 0x3F, 0x80, 0x0F, + 0xE0, 0x03, 0xF8, 0x00, 0xFE, 0x00, 0x3F, 0x80, 0x0F, 0xE0, 0x03, 0xF8, + 0x00, 0xFE, 0x00, 0x7F, 0x80, 0x3F, 0xF8, 0xFF, 0xFF, 0xC0, 0x00, 0xFC, + 0x00, 0x1F, 0xF8, 0x03, 0xFF, 0xE0, 0x3F, 0xFF, 0x81, 0xFF, 0xFC, 0x1C, + 0x1F, 0xF1, 0xC0, 0x7F, 0x8C, 0x01, 0xFC, 0x40, 0x0F, 0xE0, 0x00, 0x3F, + 0x00, 0x01, 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, + 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x00, + 0x00, 0x70, 0x00, 0x07, 0x80, 0x00, 0x38, 0x00, 0x03, 0x80, 0x00, 0x38, + 0x01, 0x03, 0x80, 0x18, 0x38, 0x00, 0x81, 0x80, 0x1C, 0x1F, 0xFF, 0xE1, + 0xFF, 0xFF, 0x1F, 0xFF, 0xF9, 0xFF, 0xFF, 0x9F, 0xFF, 0xFC, 0xFF, 0xFF, + 0xE0, 0x00, 0xFE, 0x00, 0x3F, 0xFC, 0x03, 0xFF, 0xF0, 0x30, 0xFF, 0xC2, + 0x01, 0xFE, 0x30, 0x0F, 0xF1, 0x00, 0x3F, 0x80, 0x01, 0xFC, 0x00, 0x0F, + 0xE0, 0x00, 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x01, 0xF0, 0x00, + 0x1F, 0xC0, 0x03, 0xFF, 0x00, 0x3F, 0xFC, 0x00, 0x7F, 0xF0, 0x00, 0xFF, + 0x80, 0x03, 0xFE, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0x80, 0x00, 0xFC, 0x00, + 0x07, 0xE0, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0x80, 0x00, 0x3C, + 0x00, 0x01, 0xC7, 0x80, 0x0E, 0x7F, 0x00, 0xE3, 0xFC, 0x06, 0x1F, 0xF8, + 0xE0, 0x7F, 0xFC, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x1E, + 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x80, 0x01, 0xFC, 0x00, 0x0F, 0xE0, 0x00, + 0xFF, 0x00, 0x0D, 0xF8, 0x00, 0xEF, 0xC0, 0x06, 0x7E, 0x00, 0x63, 0xF0, + 0x07, 0x1F, 0x80, 0x30, 0xFC, 0x03, 0x07, 0xE0, 0x38, 0x3F, 0x03, 0x81, + 0xF8, 0x18, 0x0F, 0xC1, 0xC0, 0x7E, 0x1C, 0x03, 0xF0, 0xC0, 0x1F, 0x8E, + 0x00, 0xFC, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xC0, 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, + 0x07, 0xE0, 0x00, 0x3F, 0x00, 0x01, 0xF8, 0x00, 0x0F, 0xC0, 0x07, 0xFF, + 0xF0, 0x7F, 0xFF, 0x0F, 0xFF, 0xE0, 0xFF, 0xFE, 0x0F, 0xFF, 0xE1, 0xFF, + 0xFC, 0x18, 0x00, 0x01, 0x80, 0x00, 0x18, 0x00, 0x03, 0x00, 0x00, 0x3F, + 0x80, 0x03, 0xFF, 0x80, 0x7F, 0xFE, 0x07, 0xFF, 0xF0, 0x7F, 0xFF, 0x87, + 0xFF, 0xFC, 0x7F, 0xFF, 0xC0, 0x07, 0xFC, 0x00, 0x1F, 0xE0, 0x00, 0x7E, + 0x00, 0x03, 0xE0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 0x00, + 0xC0, 0x00, 0x0C, 0x78, 0x00, 0x8F, 0xE0, 0x18, 0xFF, 0x87, 0x0F, 0xFF, + 0xE0, 0x7F, 0xF8, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x38, 0x00, 0x1F, 0x00, + 0x07, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x0F, 0xC0, + 0x00, 0xFC, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xF0, 0x00, 0x7F, + 0x00, 0x07, 0xF8, 0x00, 0x3F, 0xFF, 0x01, 0xFF, 0xFE, 0x1F, 0xF1, 0xFC, + 0xFF, 0x07, 0xE7, 0xF8, 0x3F, 0xBF, 0xC1, 0xFD, 0xFE, 0x07, 0xFF, 0xF0, + 0x3F, 0xFF, 0x81, 0xFF, 0xFC, 0x0F, 0xFF, 0xE0, 0x7F, 0xFF, 0x03, 0xFB, + 0xF8, 0x1F, 0xDF, 0xC0, 0xFE, 0xFE, 0x07, 0xE3, 0xF0, 0x3F, 0x1F, 0xC1, + 0xF0, 0x7E, 0x0F, 0x01, 0xF0, 0xF8, 0x03, 0xC7, 0x00, 0x07, 0xE0, 0x00, + 0x3F, 0xFF, 0xF9, 0xFF, 0xFF, 0xDF, 0xFF, 0xFE, 0xFF, 0xFF, 0xE7, 0xFF, + 0xFF, 0x3F, 0xFF, 0xF9, 0x80, 0x07, 0x98, 0x00, 0x3C, 0xC0, 0x03, 0xE4, + 0x00, 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, + 0xC0, 0x00, 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, + 0x07, 0x80, 0x00, 0x7C, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x01, 0xF0, + 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x07, 0xC0, 0x00, 0x3C, 0x00, 0x01, + 0xE0, 0x00, 0x1F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, + 0x01, 0xFE, 0x00, 0x38, 0x7C, 0x07, 0x80, 0xF0, 0x78, 0x07, 0xC3, 0xC0, + 0x1F, 0x3E, 0x00, 0xF9, 0xF0, 0x07, 0xCF, 0xC0, 0x3E, 0x7E, 0x01, 0xF3, + 0xF8, 0x0F, 0x1F, 0xE0, 0xF8, 0x7F, 0xC7, 0x83, 0xFF, 0xF0, 0x0F, 0xFE, + 0x00, 0x7F, 0xFC, 0x01, 0xFF, 0xF0, 0x03, 0xFF, 0xC0, 0x1F, 0xFF, 0x03, + 0xBF, 0xFC, 0x7C, 0x7F, 0xE7, 0xC1, 0xFF, 0x3E, 0x07, 0xFF, 0xE0, 0x1F, + 0xFF, 0x00, 0x7F, 0xF8, 0x03, 0xFF, 0xC0, 0x0F, 0xFE, 0x00, 0x7F, 0xF0, + 0x03, 0xE7, 0x80, 0x1F, 0x3E, 0x01, 0xF0, 0xF8, 0x0F, 0x83, 0xE1, 0xF8, + 0x0F, 0xFF, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFC, 0x00, 0x1C, 0x3C, 0x00, + 0xF0, 0x78, 0x07, 0x81, 0xF8, 0x3E, 0x07, 0xE1, 0xF8, 0x0F, 0xC7, 0xE0, + 0x3F, 0x3F, 0x80, 0xFE, 0xFE, 0x03, 0xFB, 0xF8, 0x0F, 0xFF, 0xE0, 0x3F, + 0xFF, 0x80, 0xFF, 0xFE, 0x03, 0xFF, 0xF8, 0x0F, 0xFF, 0xE0, 0x3F, 0xDF, + 0xC0, 0xFF, 0x7F, 0x03, 0xFC, 0xFC, 0x0F, 0xF3, 0xFC, 0x7F, 0x83, 0xFF, + 0xFE, 0x07, 0xF7, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0xFF, 0x00, 0x03, 0xF8, + 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x00, 0x03, 0xF8, 0x00, 0x0F, 0xC0, 0x00, + 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x01, 0xF0, 0x00, 0x3F, 0x00, + 0x03, 0x80, 0x00, 0x00, 0x3C, 0x7E, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x3C, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x7E, 0xFF, 0xFF, + 0xFF, 0xFF, 0x7E, 0x3C, 0x3C, 0x3F, 0x3F, 0xDF, 0xEF, 0xF7, 0xF9, 0xF8, + 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x7F, 0x7F, + 0xBF, 0xFF, 0xFF, 0xFB, 0xFC, 0xFE, 0x07, 0x03, 0x01, 0x81, 0x81, 0x81, + 0x83, 0x81, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xF0, 0x00, 0x00, + 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xC0, 0x01, 0xFF, 0x80, 0x01, + 0xFF, 0x80, 0x01, 0xFF, 0x80, 0x01, 0xFF, 0x80, 0x01, 0xFF, 0x80, 0x01, + 0xFF, 0x80, 0x01, 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x00, 0x3F, 0xE0, 0x00, + 0x07, 0xFE, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x7F, + 0xE0, 0x00, 0x07, 0xFF, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x03, 0xFF, 0x00, + 0x00, 0x3F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x03, + 0xC0, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, + 0xC0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x03, 0xFC, 0x00, + 0x00, 0xFF, 0xC0, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x0F, + 0xFE, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x7F, 0xE0, + 0x00, 0x07, 0xFE, 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x1F, 0xF0, 0x00, 0x1F, + 0xF8, 0x00, 0x1F, 0xF8, 0x00, 0x1F, 0xF8, 0x00, 0x1F, 0xF8, 0x00, 0x1F, + 0xF8, 0x00, 0x1F, 0xF8, 0x00, 0x1F, 0xF8, 0x00, 0x3F, 0xF0, 0x00, 0x0F, + 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x30, 0x00, 0x00, + 0x00, 0x07, 0xF0, 0x07, 0xFF, 0x03, 0x87, 0xE1, 0xC0, 0xFC, 0xF0, 0x3F, + 0xBE, 0x07, 0xEF, 0xC1, 0xFF, 0xF0, 0x7F, 0xFC, 0x1F, 0xDF, 0x07, 0xF7, + 0x81, 0xFC, 0x00, 0xFE, 0x00, 0x3F, 0x80, 0x1F, 0xC0, 0x07, 0xE0, 0x03, + 0xE0, 0x00, 0xF0, 0x00, 0x70, 0x00, 0x18, 0x00, 0x04, 0x00, 0x01, 0x00, + 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3C, 0x00, 0x1F, 0x80, 0x0F, 0xF0, 0x03, 0xFC, 0x00, 0xFF, 0x00, 0x3F, + 0xC0, 0x07, 0xE0, 0x00, 0xF0, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x1F, + 0xFF, 0xC0, 0x00, 0x1F, 0x00, 0xF0, 0x00, 0x3E, 0x00, 0x1E, 0x00, 0x3C, + 0x00, 0x03, 0x80, 0x3C, 0x00, 0x00, 0xE0, 0x3C, 0x00, 0x00, 0x30, 0x3E, + 0x00, 0x00, 0x0C, 0x3E, 0x00, 0x3C, 0x37, 0x1F, 0x00, 0x7E, 0xF1, 0x9F, + 0x00, 0x7C, 0xF8, 0xCF, 0x80, 0x78, 0x7C, 0x37, 0xC0, 0x7C, 0x3C, 0x1F, + 0xC0, 0x3C, 0x1E, 0x0F, 0xE0, 0x3C, 0x0F, 0x07, 0xF0, 0x3E, 0x0F, 0x03, + 0xF8, 0x1E, 0x07, 0x81, 0xFC, 0x0F, 0x03, 0xC0, 0xFE, 0x0F, 0x03, 0xE0, + 0x7F, 0x07, 0x81, 0xE0, 0x6F, 0x83, 0xC1, 0xF0, 0x37, 0xC1, 0xE1, 0x78, + 0x31, 0xF0, 0xF9, 0xBC, 0x18, 0xF8, 0x3F, 0x9E, 0x38, 0x3C, 0x0F, 0x0F, + 0xF8, 0x1F, 0x00, 0x01, 0xF0, 0x07, 0x80, 0x00, 0x00, 0x03, 0xE0, 0x00, + 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x07, 0xC0, + 0x00, 0xC0, 0x01, 0xF8, 0x03, 0xE0, 0x00, 0x3F, 0xFF, 0xC0, 0x00, 0x03, + 0xFF, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, + 0x03, 0x80, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, + 0x07, 0xE0, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, + 0x0F, 0xF0, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, + 0x37, 0xF8, 0x00, 0x00, 0x33, 0xF8, 0x00, 0x00, 0x33, 0xFC, 0x00, 0x00, + 0x61, 0xFC, 0x00, 0x00, 0x61, 0xFE, 0x00, 0x00, 0xC1, 0xFE, 0x00, 0x00, + 0xC0, 0xFF, 0x00, 0x00, 0xC0, 0xFF, 0x00, 0x01, 0x80, 0x7F, 0x00, 0x01, + 0x80, 0x7F, 0x80, 0x03, 0x80, 0x7F, 0x80, 0x03, 0xFF, 0xFF, 0xC0, 0x03, + 0xFF, 0xFF, 0xC0, 0x07, 0x00, 0x3F, 0xC0, 0x06, 0x00, 0x1F, 0xE0, 0x0E, + 0x00, 0x1F, 0xE0, 0x0C, 0x00, 0x0F, 0xF0, 0x0C, 0x00, 0x0F, 0xF0, 0x1C, + 0x00, 0x0F, 0xF8, 0x1C, 0x00, 0x0F, 0xF8, 0x7E, 0x00, 0x0F, 0xFC, 0xFF, + 0x80, 0x7F, 0xFF, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xE0, 0x1F, 0xF8, + 0x7F, 0x00, 0xFF, 0x03, 0xFC, 0x0F, 0xF0, 0x3F, 0xC0, 0xFF, 0x01, 0xFE, + 0x0F, 0xF0, 0x1F, 0xE0, 0xFF, 0x01, 0xFE, 0x0F, 0xF0, 0x1F, 0xE0, 0xFF, + 0x01, 0xFE, 0x0F, 0xF0, 0x1F, 0xC0, 0xFF, 0x03, 0xFC, 0x0F, 0xF0, 0x3F, + 0x00, 0xFF, 0x0F, 0xC0, 0x0F, 0xFF, 0xE0, 0x00, 0xFF, 0xFF, 0xC0, 0x0F, + 0xF0, 0xFF, 0x00, 0xFF, 0x03, 0xFC, 0x0F, 0xF0, 0x1F, 0xE0, 0xFF, 0x01, + 0xFE, 0x0F, 0xF0, 0x0F, 0xF0, 0xFF, 0x00, 0xFF, 0x0F, 0xF0, 0x0F, 0xF0, + 0xFF, 0x00, 0xFF, 0x0F, 0xF0, 0x0F, 0xF0, 0xFF, 0x00, 0xFF, 0x0F, 0xF0, + 0x0F, 0xE0, 0xFF, 0x01, 0xFE, 0x0F, 0xF0, 0x1F, 0xC0, 0xFF, 0x87, 0xF0, + 0x3F, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0x00, 0x00, 0x0F, 0xF0, 0x08, 0x01, + 0xFF, 0xF0, 0x60, 0x0F, 0xC1, 0xF9, 0x80, 0xFC, 0x01, 0xFE, 0x07, 0xE0, + 0x01, 0xF8, 0x3F, 0x00, 0x03, 0xE1, 0xFC, 0x00, 0x07, 0x87, 0xE0, 0x00, + 0x1E, 0x3F, 0x80, 0x00, 0x38, 0xFE, 0x00, 0x00, 0x67, 0xF8, 0x00, 0x01, + 0x9F, 0xC0, 0x00, 0x02, 0x7F, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x0F, + 0xF0, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x03, 0xFC, + 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0xFF, 0x00, + 0x00, 0x03, 0xFC, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x1F, 0xE0, 0x00, + 0x00, 0x7F, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, + 0x87, 0xF0, 0x00, 0x07, 0x0F, 0xE0, 0x00, 0x38, 0x1F, 0x80, 0x01, 0xC0, + 0x3F, 0x00, 0x1E, 0x00, 0x7F, 0x01, 0xE0, 0x00, 0x7F, 0xFF, 0x00, 0x00, + 0x3F, 0xE0, 0x00, 0xFF, 0xFF, 0xE0, 0x00, 0x3F, 0xFF, 0xFE, 0x00, 0x0F, + 0xF8, 0x7F, 0x80, 0x0F, 0xF0, 0x1F, 0xC0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, + 0xF0, 0x07, 0xF0, 0x0F, 0xF0, 0x03, 0xF8, 0x0F, 0xF0, 0x03, 0xFC, 0x0F, + 0xF0, 0x01, 0xFC, 0x0F, 0xF0, 0x01, 0xFE, 0x0F, 0xF0, 0x01, 0xFE, 0x0F, + 0xF0, 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0xFF, 0x0F, + 0xF0, 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0xFF, 0x0F, + 0xF0, 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0xFF, 0x0F, + 0xF0, 0x00, 0xFE, 0x0F, 0xF0, 0x00, 0xFE, 0x0F, 0xF0, 0x01, 0xFE, 0x0F, + 0xF0, 0x01, 0xFC, 0x0F, 0xF0, 0x01, 0xFC, 0x0F, 0xF0, 0x03, 0xF8, 0x0F, + 0xF0, 0x03, 0xF0, 0x0F, 0xF0, 0x07, 0xE0, 0x0F, 0xF0, 0x0F, 0xC0, 0x0F, + 0xF8, 0x3F, 0x80, 0x1F, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0xF0, 0x00, 0xFF, + 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xFC, 0x1F, 0xE0, 0x1F, 0xC1, 0xFE, 0x00, + 0x3C, 0x1F, 0xE0, 0x01, 0xC1, 0xFE, 0x00, 0x0C, 0x1F, 0xE0, 0x00, 0xC1, + 0xFE, 0x00, 0x04, 0x1F, 0xE0, 0x20, 0x41, 0xFE, 0x02, 0x00, 0x1F, 0xE0, + 0x60, 0x01, 0xFE, 0x06, 0x00, 0x1F, 0xE0, 0xE0, 0x01, 0xFE, 0x1E, 0x00, + 0x1F, 0xFF, 0xE0, 0x01, 0xFF, 0xFE, 0x00, 0x1F, 0xE3, 0xE0, 0x01, 0xFE, + 0x0E, 0x00, 0x1F, 0xE0, 0x60, 0x01, 0xFE, 0x06, 0x00, 0x1F, 0xE0, 0x20, + 0x01, 0xFE, 0x02, 0x00, 0x1F, 0xE0, 0x00, 0x11, 0xFE, 0x00, 0x03, 0x1F, + 0xE0, 0x00, 0x71, 0xFE, 0x00, 0x07, 0x1F, 0xE0, 0x00, 0xE1, 0xFE, 0x00, + 0x1E, 0x1F, 0xE0, 0x03, 0xE3, 0xFF, 0x01, 0xFE, 0xFF, 0xFF, 0xFF, 0xEF, + 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF, 0xC7, 0xFC, 0x07, + 0xE3, 0xFC, 0x00, 0xF1, 0xFE, 0x00, 0x38, 0xFF, 0x00, 0x0C, 0x7F, 0x80, + 0x06, 0x3F, 0xC0, 0x01, 0x1F, 0xE0, 0x20, 0x8F, 0xF0, 0x10, 0x07, 0xF8, + 0x18, 0x03, 0xFC, 0x0C, 0x01, 0xFE, 0x0E, 0x00, 0xFF, 0x1F, 0x00, 0x7F, + 0xFF, 0x80, 0x3F, 0xFF, 0xC0, 0x1F, 0xE3, 0xE0, 0x0F, 0xF0, 0x70, 0x07, + 0xF8, 0x18, 0x03, 0xFC, 0x0C, 0x01, 0xFE, 0x02, 0x00, 0xFF, 0x01, 0x00, + 0x7F, 0x80, 0x00, 0x3F, 0xC0, 0x00, 0x1F, 0xE0, 0x00, 0x0F, 0xF0, 0x00, + 0x07, 0xF8, 0x00, 0x03, 0xFC, 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, 0x00, + 0x00, 0xFF, 0xC0, 0x01, 0xFF, 0xFC, 0x00, 0x00, 0x0F, 0xF0, 0x08, 0x00, + 0x3F, 0xFE, 0x0C, 0x00, 0x3F, 0x07, 0xC6, 0x00, 0x7E, 0x00, 0xFF, 0x00, + 0x7E, 0x00, 0x1F, 0x80, 0x7E, 0x00, 0x07, 0xC0, 0x7F, 0x00, 0x01, 0xE0, + 0x3F, 0x00, 0x00, 0x70, 0x3F, 0x80, 0x00, 0x38, 0x1F, 0xC0, 0x00, 0x0C, + 0x1F, 0xE0, 0x00, 0x06, 0x0F, 0xE0, 0x00, 0x01, 0x07, 0xF0, 0x00, 0x00, + 0x07, 0xF8, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, + 0x00, 0xFF, 0x00, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x00, 0x3F, 0xC0, 0x00, + 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x0F, 0xF0, 0x03, 0xFF, 0xFF, 0xF8, 0x00, + 0x3F, 0xF1, 0xFC, 0x00, 0x0F, 0xF0, 0xFF, 0x00, 0x07, 0xF8, 0x7F, 0x80, + 0x03, 0xFC, 0x1F, 0xC0, 0x01, 0xFE, 0x0F, 0xE0, 0x00, 0xFF, 0x03, 0xF8, + 0x00, 0x7F, 0x80, 0xFC, 0x00, 0x3F, 0xC0, 0x3F, 0x00, 0x1F, 0xE0, 0x0F, + 0xC0, 0x0F, 0xF0, 0x03, 0xF8, 0x1F, 0xF0, 0x00, 0x7F, 0xFF, 0xC0, 0x00, + 0x07, 0xFE, 0x00, 0x00, 0xFF, 0xFC, 0x1F, 0xFF, 0x9F, 0xF8, 0x03, 0xFF, + 0x07, 0xF8, 0x00, 0xFF, 0x03, 0xFC, 0x00, 0x7F, 0x81, 0xFE, 0x00, 0x3F, + 0xC0, 0xFF, 0x00, 0x1F, 0xE0, 0x7F, 0x80, 0x0F, 0xF0, 0x3F, 0xC0, 0x07, + 0xF8, 0x1F, 0xE0, 0x03, 0xFC, 0x0F, 0xF0, 0x01, 0xFE, 0x07, 0xF8, 0x00, + 0xFF, 0x03, 0xFC, 0x00, 0x7F, 0x81, 0xFE, 0x00, 0x3F, 0xC0, 0xFF, 0x00, + 0x1F, 0xE0, 0x7F, 0x80, 0x0F, 0xF0, 0x3F, 0xFF, 0xFF, 0xF8, 0x1F, 0xFF, + 0xFF, 0xFC, 0x0F, 0xF0, 0x01, 0xFE, 0x07, 0xF8, 0x00, 0xFF, 0x03, 0xFC, + 0x00, 0x7F, 0x81, 0xFE, 0x00, 0x3F, 0xC0, 0xFF, 0x00, 0x1F, 0xE0, 0x7F, + 0x80, 0x0F, 0xF0, 0x3F, 0xC0, 0x07, 0xF8, 0x1F, 0xE0, 0x03, 0xFC, 0x0F, + 0xF0, 0x01, 0xFE, 0x07, 0xF8, 0x00, 0xFF, 0x03, 0xFC, 0x00, 0x7F, 0x81, + 0xFE, 0x00, 0x3F, 0xC0, 0xFF, 0x00, 0x1F, 0xE0, 0xFF, 0xC0, 0x1F, 0xF9, + 0xFF, 0xF8, 0x3F, 0xFF, 0xFF, 0xFE, 0x7F, 0xE0, 0x7F, 0x80, 0xFF, 0x01, + 0xFE, 0x03, 0xFC, 0x07, 0xF8, 0x0F, 0xF0, 0x1F, 0xE0, 0x3F, 0xC0, 0x7F, + 0x80, 0xFF, 0x01, 0xFE, 0x03, 0xFC, 0x07, 0xF8, 0x0F, 0xF0, 0x1F, 0xE0, + 0x3F, 0xC0, 0x7F, 0x80, 0xFF, 0x01, 0xFE, 0x03, 0xFC, 0x07, 0xF8, 0x0F, + 0xF0, 0x1F, 0xE0, 0x3F, 0xC0, 0x7F, 0x80, 0xFF, 0x01, 0xFE, 0x03, 0xFC, + 0x0F, 0xFC, 0x7F, 0xFF, 0x01, 0xFF, 0xFC, 0x00, 0xFF, 0xC0, 0x01, 0xFE, + 0x00, 0x07, 0xF8, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x80, 0x01, 0xFE, 0x00, + 0x07, 0xF8, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x80, 0x01, 0xFE, 0x00, 0x07, + 0xF8, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x80, 0x01, 0xFE, 0x00, 0x07, 0xF8, + 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x80, 0x01, 0xFE, 0x00, 0x07, 0xF8, 0x00, + 0x1F, 0xE0, 0x00, 0x7F, 0x80, 0x01, 0xFE, 0x00, 0x07, 0xF8, 0x00, 0x1F, + 0xE0, 0x00, 0x7F, 0x80, 0x01, 0xFE, 0x00, 0x07, 0xF8, 0x78, 0x1F, 0xE3, + 0xF0, 0x7F, 0x8F, 0xC1, 0xFC, 0x3F, 0x07, 0xF0, 0xFC, 0x1F, 0xC1, 0xE0, + 0xFE, 0x07, 0xC3, 0xF0, 0x0F, 0xFF, 0x80, 0x07, 0xF0, 0x00, 0xFF, 0xFC, + 0x1F, 0xFF, 0x0F, 0xFC, 0x00, 0xFF, 0x01, 0xFE, 0x00, 0x1E, 0x00, 0x7F, + 0x80, 0x07, 0x00, 0x1F, 0xE0, 0x03, 0x80, 0x07, 0xF8, 0x01, 0xC0, 0x01, + 0xFE, 0x00, 0xE0, 0x00, 0x7F, 0x80, 0x70, 0x00, 0x1F, 0xE0, 0x38, 0x00, + 0x07, 0xF8, 0x1C, 0x00, 0x01, 0xFE, 0x0E, 0x00, 0x00, 0x7F, 0x87, 0x00, + 0x00, 0x1F, 0xE3, 0xC0, 0x00, 0x07, 0xF9, 0xF8, 0x00, 0x01, 0xFE, 0xFE, + 0x00, 0x00, 0x7F, 0xFF, 0xC0, 0x00, 0x1F, 0xFF, 0xF8, 0x00, 0x07, 0xFD, + 0xFF, 0x00, 0x01, 0xFE, 0x7F, 0xE0, 0x00, 0x7F, 0x8F, 0xF8, 0x00, 0x1F, + 0xE1, 0xFF, 0x00, 0x07, 0xF8, 0x3F, 0xE0, 0x01, 0xFE, 0x07, 0xFC, 0x00, + 0x7F, 0x81, 0xFF, 0x80, 0x1F, 0xE0, 0x3F, 0xE0, 0x07, 0xF8, 0x07, 0xFC, + 0x01, 0xFE, 0x00, 0xFF, 0x80, 0x7F, 0x80, 0x1F, 0xF0, 0x1F, 0xE0, 0x07, + 0xFE, 0x07, 0xF8, 0x00, 0xFF, 0x83, 0xFF, 0x00, 0x3F, 0xF3, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x03, 0xFF, 0x00, 0x00, 0x1F, 0xE0, 0x00, + 0x01, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x1F, + 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFE, 0x00, + 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, + 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x1F, 0xE0, + 0x00, 0x01, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, + 0x1F, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x01, 0x1F, 0xE0, 0x00, 0x31, 0xFE, + 0x00, 0x03, 0x1F, 0xE0, 0x00, 0x71, 0xFE, 0x00, 0x07, 0x1F, 0xE0, 0x00, + 0xE1, 0xFE, 0x00, 0x1E, 0x1F, 0xE0, 0x07, 0xE3, 0xFF, 0x01, 0xFE, 0xFF, + 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFE, 0x7F, 0xF0, 0x00, 0x01, 0xFF, 0xE1, + 0xFF, 0x00, 0x00, 0x3F, 0xF0, 0x1F, 0xE0, 0x00, 0x0F, 0xFC, 0x03, 0xFC, + 0x00, 0x01, 0xFF, 0x80, 0x7F, 0xC0, 0x00, 0x2F, 0xF0, 0x0B, 0xF8, 0x00, + 0x0D, 0xFE, 0x01, 0x7F, 0x80, 0x01, 0xBF, 0xC0, 0x27, 0xF0, 0x00, 0x67, + 0xF8, 0x04, 0xFF, 0x00, 0x0C, 0xFF, 0x00, 0x8F, 0xE0, 0x03, 0x1F, 0xE0, + 0x11, 0xFE, 0x00, 0x63, 0xFC, 0x02, 0x3F, 0xC0, 0x08, 0x7F, 0x80, 0x43, + 0xF8, 0x03, 0x0F, 0xF0, 0x08, 0x7F, 0x80, 0x61, 0xFE, 0x01, 0x07, 0xF0, + 0x18, 0x3F, 0xC0, 0x20, 0xFF, 0x03, 0x07, 0xF8, 0x04, 0x0F, 0xE0, 0xC0, + 0xFF, 0x00, 0x81, 0xFE, 0x18, 0x1F, 0xE0, 0x10, 0x3F, 0xC6, 0x03, 0xFC, + 0x02, 0x03, 0xF8, 0xC0, 0x7F, 0x80, 0x40, 0x7F, 0x98, 0x0F, 0xF0, 0x08, + 0x07, 0xF6, 0x01, 0xFE, 0x01, 0x00, 0xFF, 0xC0, 0x3F, 0xC0, 0x20, 0x0F, + 0xF0, 0x07, 0xF8, 0x04, 0x01, 0xFE, 0x00, 0xFF, 0x00, 0x80, 0x1F, 0x80, + 0x1F, 0xE0, 0x10, 0x03, 0xF0, 0x03, 0xFC, 0x02, 0x00, 0x7E, 0x00, 0x7F, + 0x80, 0x40, 0x07, 0x80, 0x0F, 0xF0, 0x0C, 0x00, 0xF0, 0x01, 0xFE, 0x07, + 0xC0, 0x0C, 0x00, 0x7F, 0xE7, 0xFF, 0x01, 0x80, 0x3F, 0xFF, 0xFF, 0xC0, + 0x03, 0xFE, 0xFF, 0xC0, 0x01, 0xF0, 0xFF, 0xC0, 0x01, 0xC0, 0xFF, 0xC0, + 0x01, 0x80, 0xFF, 0x80, 0x03, 0x01, 0xFF, 0x80, 0x06, 0x03, 0xFF, 0x80, + 0x0C, 0x07, 0xFF, 0x80, 0x18, 0x0D, 0xFF, 0x80, 0x30, 0x19, 0xFF, 0x00, + 0x60, 0x31, 0xFF, 0x00, 0xC0, 0x61, 0xFF, 0x01, 0x80, 0xC1, 0xFF, 0x03, + 0x01, 0x83, 0xFF, 0x06, 0x03, 0x03, 0xFE, 0x0C, 0x06, 0x03, 0xFE, 0x18, + 0x0C, 0x03, 0xFE, 0x30, 0x18, 0x03, 0xFE, 0x60, 0x30, 0x03, 0xFE, 0xC0, + 0x60, 0x07, 0xFD, 0x80, 0xC0, 0x07, 0xFF, 0x01, 0x80, 0x07, 0xFE, 0x03, + 0x00, 0x07, 0xFC, 0x06, 0x00, 0x07, 0xF8, 0x0C, 0x00, 0x07, 0xF0, 0x18, + 0x00, 0x0F, 0xE0, 0x30, 0x00, 0x0F, 0xC0, 0x60, 0x00, 0x0F, 0x80, 0xC0, + 0x00, 0x0F, 0x01, 0xC0, 0x00, 0x0E, 0x0F, 0xC0, 0x00, 0x1C, 0x7F, 0xE0, + 0x00, 0x18, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x3F, + 0x07, 0xF0, 0x00, 0x7E, 0x00, 0xFC, 0x00, 0x7E, 0x00, 0x3F, 0x00, 0x7E, + 0x00, 0x1F, 0xC0, 0x7F, 0x00, 0x07, 0xF0, 0x3F, 0x00, 0x03, 0xF8, 0x3F, + 0x80, 0x00, 0xFE, 0x3F, 0xC0, 0x00, 0x7F, 0x1F, 0xE0, 0x00, 0x3F, 0xCF, + 0xE0, 0x00, 0x0F, 0xEF, 0xF0, 0x00, 0x07, 0xF7, 0xF8, 0x00, 0x03, 0xFF, + 0xFC, 0x00, 0x01, 0xFF, 0xFE, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x7F, + 0xFF, 0x80, 0x00, 0x3F, 0xFF, 0xC0, 0x00, 0x1F, 0xFF, 0xE0, 0x00, 0x0F, + 0xFF, 0xF0, 0x00, 0x07, 0xFF, 0xF8, 0x00, 0x03, 0xFD, 0xFC, 0x00, 0x01, + 0xFC, 0xFE, 0x00, 0x01, 0xFE, 0x7F, 0x80, 0x00, 0xFF, 0x1F, 0xC0, 0x00, + 0x7F, 0x0F, 0xE0, 0x00, 0x3F, 0x83, 0xF8, 0x00, 0x3F, 0x80, 0xFC, 0x00, + 0x1F, 0x80, 0x3F, 0x00, 0x1F, 0x80, 0x0F, 0xC0, 0x1F, 0x80, 0x03, 0xF8, + 0x3F, 0x80, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0xFF, + 0xFF, 0xE0, 0x1F, 0xFF, 0xFF, 0x01, 0xFE, 0x1F, 0xE0, 0x7F, 0x81, 0xFC, + 0x1F, 0xE0, 0x7F, 0x87, 0xF8, 0x0F, 0xE1, 0xFE, 0x03, 0xFC, 0x7F, 0x80, + 0xFF, 0x1F, 0xE0, 0x3F, 0xC7, 0xF8, 0x0F, 0xF1, 0xFE, 0x03, 0xFC, 0x7F, + 0x80, 0xFF, 0x1F, 0xE0, 0x3F, 0x87, 0xF8, 0x1F, 0xE1, 0xFE, 0x07, 0xF0, + 0x7F, 0x87, 0xF8, 0x1F, 0xFF, 0xF8, 0x07, 0xFF, 0xF8, 0x01, 0xFE, 0x00, + 0x00, 0x7F, 0x80, 0x00, 0x1F, 0xE0, 0x00, 0x07, 0xF8, 0x00, 0x01, 0xFE, + 0x00, 0x00, 0x7F, 0x80, 0x00, 0x1F, 0xE0, 0x00, 0x07, 0xF8, 0x00, 0x01, + 0xFE, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x1F, 0xE0, 0x00, 0x07, 0xF8, 0x00, + 0x03, 0xFF, 0x00, 0x03, 0xFF, 0xF0, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, + 0x3F, 0xFF, 0x80, 0x00, 0x3F, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0xFC, 0x00, + 0x7E, 0x00, 0x3F, 0x00, 0x7E, 0x00, 0x1F, 0xC0, 0x7F, 0x00, 0x07, 0xF0, + 0x3F, 0x00, 0x03, 0xF8, 0x3F, 0x80, 0x00, 0xFE, 0x1F, 0xC0, 0x00, 0x7F, + 0x1F, 0xE0, 0x00, 0x3F, 0xCF, 0xE0, 0x00, 0x0F, 0xE7, 0xF0, 0x00, 0x07, + 0xF7, 0xF8, 0x00, 0x03, 0xFF, 0xFC, 0x00, 0x01, 0xFF, 0xFE, 0x00, 0x00, + 0xFF, 0xFF, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x3F, 0xFF, 0xC0, 0x00, + 0x1F, 0xFF, 0xE0, 0x00, 0x0F, 0xFF, 0xF0, 0x00, 0x07, 0xFF, 0xF8, 0x00, + 0x03, 0xFD, 0xFC, 0x00, 0x01, 0xFC, 0xFE, 0x00, 0x01, 0xFE, 0x7F, 0x80, + 0x00, 0xFF, 0x1F, 0xC0, 0x00, 0x7F, 0x0F, 0xE0, 0x00, 0x3F, 0x83, 0xF8, + 0x00, 0x3F, 0x80, 0xFC, 0x00, 0x1F, 0x80, 0x3F, 0x00, 0x1F, 0x80, 0x0F, + 0xC0, 0x1F, 0x80, 0x03, 0xF0, 0x1F, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, + 0x0F, 0xFC, 0x00, 0x00, 0x03, 0xFF, 0x00, 0x00, 0x01, 0xFF, 0xC0, 0x00, + 0x00, 0x7F, 0xF0, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x07, 0xFF, 0x80, + 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0xFF, 0xFF, 0xE0, + 0x00, 0xFF, 0xFF, 0xF8, 0x00, 0x7F, 0xC3, 0xFC, 0x00, 0xFF, 0x01, 0xFC, + 0x01, 0xFE, 0x03, 0xFC, 0x03, 0xFC, 0x03, 0xF8, 0x07, 0xF8, 0x07, 0xF8, + 0x0F, 0xF0, 0x0F, 0xF0, 0x1F, 0xE0, 0x1F, 0xE0, 0x3F, 0xC0, 0x3F, 0xC0, + 0x7F, 0x80, 0x7F, 0x80, 0xFF, 0x00, 0xFF, 0x01, 0xFE, 0x01, 0xFC, 0x03, + 0xFC, 0x07, 0xF8, 0x07, 0xF8, 0x1F, 0xE0, 0x0F, 0xF0, 0xFF, 0x00, 0x1F, + 0xFF, 0xF8, 0x00, 0x3F, 0xFF, 0xE0, 0x00, 0x7F, 0x9F, 0xE0, 0x00, 0xFF, + 0x3F, 0xC0, 0x01, 0xFE, 0x3F, 0xC0, 0x03, 0xFC, 0x7F, 0xC0, 0x07, 0xF8, + 0x7F, 0xC0, 0x0F, 0xF0, 0x7F, 0x80, 0x1F, 0xE0, 0xFF, 0x80, 0x3F, 0xC0, + 0xFF, 0x80, 0x7F, 0x80, 0xFF, 0x00, 0xFF, 0x01, 0xFF, 0x01, 0xFE, 0x01, + 0xFF, 0x03, 0xFC, 0x01, 0xFF, 0x0F, 0xFC, 0x03, 0xFE, 0x7F, 0xFE, 0x03, + 0xFF, 0x03, 0xF8, 0x10, 0x7F, 0xF9, 0x87, 0xC1, 0xFC, 0x78, 0x03, 0xE7, + 0x80, 0x0F, 0x3C, 0x00, 0x3B, 0xE0, 0x01, 0xDF, 0x00, 0x06, 0xF8, 0x00, + 0x37, 0xE0, 0x00, 0xBF, 0x80, 0x01, 0xFF, 0x00, 0x0F, 0xFE, 0x00, 0x3F, + 0xFC, 0x01, 0xFF, 0xF8, 0x07, 0xFF, 0xF0, 0x1F, 0xFF, 0xC0, 0x7F, 0xFF, + 0x00, 0xFF, 0xFC, 0x01, 0xFF, 0xE0, 0x03, 0xFF, 0x80, 0x07, 0xFC, 0x00, + 0x1F, 0xF0, 0x00, 0x3F, 0x80, 0x01, 0xFE, 0x00, 0x07, 0xF0, 0x00, 0x3F, + 0xC0, 0x01, 0xEE, 0x00, 0x0F, 0x78, 0x00, 0xF3, 0xE0, 0x0F, 0x9F, 0xC0, + 0xF8, 0x8F, 0xFF, 0x04, 0x0F, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFC, 0x3F, 0xC3, 0xFF, 0x03, 0xFC, 0x0F, 0xE0, 0x3F, 0xC0, + 0x7C, 0x03, 0xFC, 0x03, 0xC0, 0x3F, 0xC0, 0x38, 0x03, 0xFC, 0x01, 0x80, + 0x3F, 0xC0, 0x10, 0x03, 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x03, 0xFC, + 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, + 0x03, 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x3F, + 0xC0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x03, 0xFC, 0x00, + 0x00, 0x3F, 0xC0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x03, + 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x3F, 0xC0, + 0x00, 0x03, 0xFC, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0x3F, 0xFF, 0xC0, 0xFF, + 0xFE, 0x07, 0xFC, 0xFF, 0xC0, 0x07, 0xC1, 0xFE, 0x00, 0x0E, 0x07, 0xF8, + 0x00, 0x18, 0x1F, 0xE0, 0x00, 0x60, 0x7F, 0x80, 0x01, 0x81, 0xFE, 0x00, + 0x06, 0x07, 0xF8, 0x00, 0x18, 0x1F, 0xE0, 0x00, 0x60, 0x7F, 0x80, 0x01, + 0x81, 0xFE, 0x00, 0x06, 0x07, 0xF8, 0x00, 0x18, 0x1F, 0xE0, 0x00, 0x60, + 0x7F, 0x80, 0x01, 0x81, 0xFE, 0x00, 0x06, 0x07, 0xF8, 0x00, 0x18, 0x1F, + 0xE0, 0x00, 0x60, 0x7F, 0x80, 0x01, 0x81, 0xFE, 0x00, 0x06, 0x07, 0xF8, + 0x00, 0x18, 0x1F, 0xE0, 0x00, 0x60, 0x7F, 0x80, 0x01, 0x81, 0xFE, 0x00, + 0x06, 0x07, 0xF8, 0x00, 0x18, 0x1F, 0xE0, 0x00, 0x60, 0x7F, 0x80, 0x03, + 0x00, 0xFF, 0x00, 0x0C, 0x03, 0xFC, 0x00, 0x30, 0x07, 0xF0, 0x01, 0x80, + 0x0F, 0xE0, 0x0E, 0x00, 0x1F, 0xE0, 0xF0, 0x00, 0x1F, 0xFF, 0x00, 0x00, + 0x1F, 0xF0, 0x00, 0xFF, 0xFF, 0x01, 0xFF, 0x9F, 0xFC, 0x00, 0x1F, 0x07, + 0xFC, 0x00, 0x07, 0x01, 0xFE, 0x00, 0x03, 0x00, 0x7F, 0x80, 0x03, 0x80, + 0x3F, 0xC0, 0x01, 0x80, 0x1F, 0xE0, 0x00, 0xC0, 0x07, 0xF8, 0x00, 0xC0, + 0x03, 0xFC, 0x00, 0x60, 0x00, 0xFF, 0x00, 0x30, 0x00, 0x7F, 0x80, 0x30, + 0x00, 0x1F, 0xE0, 0x18, 0x00, 0x0F, 0xF0, 0x18, 0x00, 0x07, 0xF8, 0x0C, + 0x00, 0x01, 0xFE, 0x06, 0x00, 0x00, 0xFF, 0x06, 0x00, 0x00, 0x3F, 0xC3, + 0x00, 0x00, 0x1F, 0xE3, 0x80, 0x00, 0x0F, 0xF1, 0x80, 0x00, 0x03, 0xFC, + 0xC0, 0x00, 0x01, 0xFE, 0xC0, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0x00, 0x3F, + 0xF0, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x03, + 0xF8, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x01, 0x80, 0x00, 0xFF, 0xF8, 0x7F, 0xFF, 0x0F, 0xFB, 0xFF, 0x00, 0xFF, + 0xC0, 0x1F, 0x0F, 0xF0, 0x03, 0xFC, 0x00, 0x70, 0x3F, 0x80, 0x0F, 0xE0, + 0x03, 0x81, 0xFE, 0x00, 0x7F, 0x80, 0x1C, 0x0F, 0xF0, 0x03, 0xFC, 0x00, + 0xC0, 0x3F, 0x80, 0x0F, 0xE0, 0x06, 0x01, 0xFE, 0x00, 0x7F, 0x00, 0x70, + 0x0F, 0xF0, 0x07, 0xFC, 0x03, 0x00, 0x3F, 0x80, 0x3F, 0xE0, 0x18, 0x01, + 0xFE, 0x01, 0xFF, 0x01, 0xC0, 0x0F, 0xF0, 0x1B, 0xFC, 0x0C, 0x00, 0x3F, + 0x80, 0xCF, 0xE0, 0x60, 0x01, 0xFE, 0x06, 0x7F, 0x07, 0x00, 0x0F, 0xF0, + 0x63, 0xFC, 0x30, 0x00, 0x3F, 0x83, 0x0F, 0xE1, 0x80, 0x01, 0xFE, 0x30, + 0x7F, 0x1C, 0x00, 0x07, 0xF1, 0x81, 0xFC, 0xC0, 0x00, 0x3F, 0x8C, 0x0F, + 0xE6, 0x00, 0x01, 0xFE, 0xC0, 0x7F, 0x70, 0x00, 0x07, 0xF6, 0x01, 0xFB, + 0x00, 0x00, 0x3F, 0xE0, 0x0F, 0xF8, 0x00, 0x01, 0xFF, 0x00, 0x7F, 0xC0, + 0x00, 0x07, 0xF8, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x0F, 0xE0, 0x00, + 0x01, 0xFC, 0x00, 0x7F, 0x00, 0x00, 0x07, 0xE0, 0x01, 0xF0, 0x00, 0x00, + 0x3E, 0x00, 0x0F, 0x80, 0x00, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x00, 0x07, + 0x00, 0x01, 0xC0, 0x00, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x00, 0x01, 0xC0, + 0x00, 0x70, 0x00, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0xFF, 0xFF, 0x0F, + 0xFF, 0x3F, 0xF8, 0x01, 0xF8, 0x1F, 0xF8, 0x01, 0xE0, 0x0F, 0xF8, 0x01, + 0xC0, 0x0F, 0xF8, 0x01, 0x80, 0x07, 0xFC, 0x03, 0x80, 0x03, 0xFE, 0x07, + 0x00, 0x03, 0xFE, 0x06, 0x00, 0x01, 0xFF, 0x0C, 0x00, 0x00, 0xFF, 0x9C, + 0x00, 0x00, 0xFF, 0x98, 0x00, 0x00, 0x7F, 0xF0, 0x00, 0x00, 0x3F, 0xF0, + 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0x0F, 0xF0, + 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x0F, 0xFC, + 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x19, 0xFE, 0x00, 0x00, 0x31, 0xFF, + 0x00, 0x00, 0x70, 0xFF, 0x80, 0x00, 0x60, 0x7F, 0x80, 0x00, 0xC0, 0x7F, + 0xC0, 0x01, 0xC0, 0x3F, 0xE0, 0x03, 0x80, 0x1F, 0xE0, 0x07, 0x00, 0x1F, + 0xF0, 0x07, 0x00, 0x0F, 0xF8, 0x0F, 0x00, 0x0F, 0xF8, 0x3F, 0x80, 0x1F, + 0xFC, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0x7F, 0xF0, 0x00, + 0x7E, 0x1F, 0xF0, 0x00, 0x38, 0x1F, 0xF0, 0x00, 0x38, 0x0F, 0xF0, 0x00, + 0x70, 0x0F, 0xF8, 0x00, 0x60, 0x07, 0xF8, 0x00, 0x60, 0x07, 0xFC, 0x00, + 0xC0, 0x03, 0xFC, 0x01, 0xC0, 0x01, 0xFE, 0x01, 0x80, 0x01, 0xFE, 0x03, + 0x00, 0x00, 0xFF, 0x03, 0x00, 0x00, 0xFF, 0x86, 0x00, 0x00, 0x7F, 0x8E, + 0x00, 0x00, 0x7F, 0xCC, 0x00, 0x00, 0x3F, 0xD8, 0x00, 0x00, 0x3F, 0xF8, + 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0x0F, 0xF0, + 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x0F, 0xF0, + 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x0F, 0xF0, + 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x0F, 0xF0, + 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x7F, 0xFE, + 0x00, 0x3F, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0xFC, 0x3F, 0x80, 0x7F, 0xC3, + 0xE0, 0x07, 0xF8, 0x38, 0x00, 0xFF, 0x83, 0x80, 0x0F, 0xF0, 0x30, 0x01, + 0xFE, 0x07, 0x00, 0x3F, 0xE0, 0x60, 0x03, 0xFC, 0x06, 0x00, 0x7F, 0xC0, + 0x00, 0x0F, 0xF8, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x01, + 0xFE, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x7F, 0x80, + 0x00, 0x0F, 0xF8, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x03, + 0xFE, 0x00, 0x00, 0x3F, 0xC0, 0x01, 0x07, 0xFC, 0x00, 0x30, 0xFF, 0x80, + 0x03, 0x0F, 0xF0, 0x00, 0x31, 0xFF, 0x00, 0x07, 0x1F, 0xE0, 0x00, 0xF3, + 0xFE, 0x00, 0x1E, 0x7F, 0xC0, 0x03, 0xE7, 0xF8, 0x01, 0xFE, 0xFF, 0xFF, + 0xFF, 0xEF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xF0, 0x7C, 0x0F, 0x81, + 0xF0, 0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, + 0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, + 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, + 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xFF, 0xFF, 0xF8, 0xF0, + 0x01, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0xC0, 0x07, 0x80, 0x0F, 0x00, + 0x1F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x7C, 0x00, 0x78, 0x00, 0xF0, 0x01, + 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1F, + 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, + 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, + 0x1E, 0xFF, 0xFF, 0xFC, 0x1F, 0x81, 0xF0, 0x3E, 0x07, 0xC0, 0xF8, 0x1F, + 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, + 0xE0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, + 0x7C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, + 0x0F, 0x81, 0xF0, 0x3F, 0xFF, 0xFF, 0xF8, 0x00, 0x78, 0x00, 0x07, 0xC0, + 0x00, 0x3F, 0x00, 0x03, 0xF8, 0x00, 0x1F, 0xE0, 0x01, 0xEF, 0x00, 0x0F, + 0x3C, 0x00, 0xF1, 0xE0, 0x07, 0x87, 0x80, 0x78, 0x3C, 0x03, 0xC0, 0xF0, + 0x3C, 0x07, 0x81, 0xE0, 0x1E, 0x1E, 0x00, 0xF0, 0xF0, 0x07, 0xCF, 0x00, + 0x1E, 0x78, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x70, 0x1F, 0x03, 0xF0, 0x7E, 0x03, 0xE0, 0x3E, 0x01, 0xE0, 0x1E, + 0x00, 0xE0, 0x03, 0xFC, 0x00, 0x3F, 0xFC, 0x03, 0xE1, 0xF8, 0x0F, 0x03, + 0xF0, 0x7C, 0x07, 0xC1, 0xF8, 0x1F, 0x87, 0xE0, 0x7E, 0x1F, 0x81, 0xF8, + 0x3C, 0x07, 0xE0, 0x00, 0x1F, 0x80, 0x01, 0xFE, 0x00, 0x3F, 0xF8, 0x03, + 0xE7, 0xE0, 0x3E, 0x1F, 0x83, 0xF0, 0x7E, 0x1F, 0x81, 0xF8, 0x7E, 0x07, + 0xE3, 0xF8, 0x1F, 0x8F, 0xE0, 0x7E, 0x3F, 0x83, 0xF8, 0xFF, 0x1F, 0xE1, + 0xFF, 0xDF, 0xF7, 0xFE, 0x3F, 0x07, 0xE0, 0xF8, 0xFF, 0x80, 0x00, 0x1F, + 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x03, 0xF0, 0x00, 0x01, 0xF8, 0x00, 0x00, + 0xFC, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x1F, 0x80, 0x00, + 0x0F, 0xC7, 0xF0, 0x07, 0xEF, 0xFE, 0x03, 0xFC, 0x3F, 0x81, 0xFC, 0x0F, + 0xE0, 0xFC, 0x03, 0xF0, 0x7E, 0x01, 0xFC, 0x3F, 0x00, 0xFE, 0x1F, 0x80, + 0x3F, 0x8F, 0xC0, 0x1F, 0xC7, 0xE0, 0x0F, 0xE3, 0xF0, 0x07, 0xF1, 0xF8, + 0x03, 0xF8, 0xFC, 0x01, 0xFC, 0x7E, 0x00, 0xFE, 0x3F, 0x00, 0x7F, 0x1F, + 0x80, 0x3F, 0x0F, 0xC0, 0x1F, 0x87, 0xE0, 0x1F, 0xC3, 0xF0, 0x0F, 0xC1, + 0xF8, 0x07, 0xE0, 0xFE, 0x07, 0xE0, 0x73, 0x87, 0xE0, 0x30, 0xFF, 0xC0, + 0x10, 0x1F, 0x80, 0x00, 0x00, 0xFC, 0x00, 0x7F, 0xE0, 0x3E, 0x3E, 0x0F, + 0x83, 0xE3, 0xE0, 0x7C, 0x7C, 0x0F, 0x9F, 0x01, 0xF3, 0xE0, 0x1C, 0x7C, + 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x01, 0xF8, + 0x00, 0x3F, 0x00, 0x07, 0xF0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x01, 0xFC, + 0x00, 0x1F, 0xC0, 0x21, 0xFE, 0x0C, 0x3F, 0xFF, 0x01, 0xFF, 0x80, 0x0F, + 0xC0, 0x00, 0x1F, 0xF8, 0x00, 0x03, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x01, + 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x01, + 0xF8, 0x00, 0x01, 0xF8, 0x03, 0xF1, 0xF8, 0x07, 0xFD, 0xF8, 0x1F, 0xC7, + 0xF8, 0x1F, 0x83, 0xF8, 0x3F, 0x01, 0xF8, 0x7F, 0x01, 0xF8, 0x7E, 0x01, + 0xF8, 0x7E, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, + 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, + 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0x7E, 0x01, 0xF8, 0x7F, 0x01, + 0xF8, 0x3F, 0x03, 0xF8, 0x3F, 0x03, 0xF8, 0x1F, 0x87, 0xFC, 0x0F, 0xFD, + 0xFF, 0x03, 0xF1, 0xC0, 0x03, 0xF0, 0x03, 0xFF, 0x01, 0xE1, 0xE0, 0xF8, + 0x7C, 0x3C, 0x0F, 0x1F, 0x03, 0xE7, 0xC0, 0xFB, 0xF0, 0x3E, 0xFC, 0x0F, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x0F, + 0xC0, 0x03, 0xF8, 0x00, 0xFE, 0x00, 0x1F, 0x80, 0x07, 0xF0, 0x0C, 0xFC, + 0x06, 0x3F, 0xC3, 0x07, 0xFF, 0x80, 0xFF, 0xC0, 0x0F, 0xC0, 0x00, 0xFC, + 0x01, 0xFF, 0x81, 0xF1, 0xC1, 0xF0, 0xF0, 0xF8, 0xF8, 0xFC, 0x7C, 0x7E, + 0x1C, 0x3F, 0x00, 0x1F, 0x80, 0x0F, 0xC0, 0x07, 0xE0, 0x1F, 0xFF, 0x0F, + 0xFF, 0x80, 0xFC, 0x00, 0x7E, 0x00, 0x3F, 0x00, 0x1F, 0x80, 0x0F, 0xC0, + 0x07, 0xE0, 0x03, 0xF0, 0x01, 0xF8, 0x00, 0xFC, 0x00, 0x7E, 0x00, 0x3F, + 0x00, 0x1F, 0x80, 0x0F, 0xC0, 0x07, 0xE0, 0x03, 0xF0, 0x01, 0xF8, 0x00, + 0xFC, 0x00, 0x7E, 0x00, 0x7F, 0x80, 0xFF, 0xF8, 0x00, 0x07, 0xF0, 0x03, + 0xFF, 0xFC, 0xF8, 0x7F, 0xBE, 0x07, 0x87, 0xC0, 0xF9, 0xF8, 0x1F, 0xBF, + 0x03, 0xF7, 0xE0, 0x7E, 0xFC, 0x0F, 0xDF, 0x81, 0xF9, 0xF0, 0x3F, 0x3E, + 0x07, 0xC3, 0xE1, 0xF8, 0x3C, 0x7E, 0x01, 0xFF, 0x00, 0x60, 0x00, 0x38, + 0x00, 0x0F, 0x00, 0x01, 0xF0, 0x00, 0x7F, 0xFF, 0x0F, 0xFF, 0xF9, 0xFF, + 0xFF, 0x9F, 0xFF, 0xF9, 0xFF, 0xFF, 0x0F, 0xFF, 0xEF, 0x00, 0x3F, 0xC0, + 0x03, 0xF8, 0x00, 0x7F, 0x00, 0x1C, 0xF8, 0x07, 0x0F, 0xFF, 0xC0, 0x7F, + 0xC0, 0xFF, 0x80, 0x00, 0x3F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x80, + 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x80, + 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x87, 0xE0, 0x1F, 0x9F, 0xF0, 0x1F, 0xBF, + 0xF8, 0x1F, 0xF1, 0xF8, 0x1F, 0xC0, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, + 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, + 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, + 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, + 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x3F, 0xC1, 0xFE, 0xFF, 0xE3, + 0xFF, 0x0F, 0x07, 0xE1, 0xFE, 0x3F, 0xC7, 0xF8, 0x7F, 0x03, 0xC0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x7F, 0xC3, 0xF8, 0x3F, 0x07, 0xE0, 0xFC, 0x1F, + 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x07, 0xE0, 0xFC, 0x1F, 0x83, + 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x07, 0xE1, 0xFE, 0xFF, 0xE0, 0x00, + 0x70, 0x07, 0xF0, 0x3F, 0xC0, 0xFF, 0x03, 0xFC, 0x07, 0xF0, 0x0F, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x01, 0xFC, 0x03, 0xF0, + 0x0F, 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFC, + 0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F, + 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F, + 0xDC, 0x3F, 0xF8, 0xFB, 0xE3, 0xEF, 0x0F, 0xBC, 0x7C, 0x7F, 0xE0, 0x7E, + 0x00, 0xFF, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x03, 0xF0, + 0x00, 0x01, 0xF8, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3F, + 0x00, 0x00, 0x1F, 0x80, 0x00, 0x0F, 0xC0, 0x00, 0x07, 0xE1, 0xFF, 0x83, + 0xF0, 0x3F, 0x01, 0xF8, 0x0E, 0x00, 0xFC, 0x06, 0x00, 0x7E, 0x06, 0x00, + 0x3F, 0x06, 0x00, 0x1F, 0x86, 0x00, 0x0F, 0xC7, 0x00, 0x07, 0xE7, 0x80, + 0x03, 0xF7, 0xE0, 0x01, 0xFF, 0xF8, 0x00, 0xFF, 0xFC, 0x00, 0x7E, 0x7F, + 0x00, 0x3F, 0x1F, 0xC0, 0x1F, 0x8F, 0xE0, 0x0F, 0xC3, 0xF8, 0x07, 0xE0, + 0xFE, 0x03, 0xF0, 0x7F, 0x81, 0xF8, 0x1F, 0xC0, 0xFC, 0x0F, 0xF0, 0xFF, + 0x07, 0xFD, 0xFF, 0xC7, 0xFF, 0xFF, 0x87, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, + 0x3F, 0x07, 0xE0, 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, + 0x07, 0xE0, 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x07, + 0xE0, 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x0F, 0xF7, + 0xFF, 0x00, 0x07, 0xE0, 0x3F, 0x07, 0xFC, 0xFF, 0x87, 0xFC, 0x0F, 0xEF, + 0xFE, 0x7F, 0xF0, 0x3F, 0xC3, 0xFF, 0x1F, 0x81, 0xFC, 0x0F, 0xE0, 0x7E, + 0x0F, 0xC0, 0x7E, 0x03, 0xF0, 0x7E, 0x03, 0xF0, 0x1F, 0x83, 0xF0, 0x1F, + 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x07, 0xE0, 0xFC, 0x07, 0xE0, 0x3F, 0x07, + 0xE0, 0x3F, 0x01, 0xF8, 0x3F, 0x01, 0xF8, 0x0F, 0xC1, 0xF8, 0x0F, 0xC0, + 0x7E, 0x0F, 0xC0, 0x7E, 0x03, 0xF0, 0x7E, 0x03, 0xF0, 0x1F, 0x83, 0xF0, + 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x07, 0xE0, 0xFC, 0x07, 0xE0, 0x3F, + 0x07, 0xE0, 0x3F, 0x01, 0xF8, 0x3F, 0x01, 0xF8, 0x0F, 0xC1, 0xF8, 0x0F, + 0xC0, 0x7E, 0x1F, 0xE0, 0xFF, 0x07, 0xFB, 0xFF, 0x8F, 0xFC, 0x7F, 0xE0, + 0x00, 0x07, 0xE0, 0xFF, 0x9F, 0xF0, 0x3F, 0xBF, 0xF8, 0x1F, 0xF1, 0xF8, + 0x1F, 0xC0, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, + 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, + 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, + 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, + 0x1F, 0x80, 0xFC, 0x3F, 0xC1, 0xFE, 0xFF, 0xE3, 0xFF, 0x01, 0xFC, 0x00, + 0x3F, 0xF8, 0x03, 0xE3, 0xE0, 0x3E, 0x0F, 0x83, 0xF0, 0x7E, 0x1F, 0x01, + 0xF1, 0xF8, 0x0F, 0xCF, 0xC0, 0x7E, 0xFE, 0x03, 0xFF, 0xF0, 0x1F, 0xFF, + 0x80, 0xFF, 0xFC, 0x07, 0xFF, 0xE0, 0x3F, 0xFF, 0x01, 0xFF, 0xF8, 0x0F, + 0xFF, 0xC0, 0x7F, 0x7E, 0x03, 0xF3, 0xF0, 0x1F, 0x8F, 0x80, 0xF8, 0x7E, + 0x0F, 0xC1, 0xF0, 0x7C, 0x07, 0xC7, 0xC0, 0x1F, 0xFC, 0x00, 0x3F, 0x80, + 0x00, 0x0F, 0xC0, 0xFF, 0xBF, 0xF0, 0x3F, 0xF1, 0xF8, 0x1F, 0xC0, 0xFC, + 0x1F, 0xC0, 0xFC, 0x1F, 0x80, 0xFE, 0x1F, 0x80, 0x7E, 0x1F, 0x80, 0x7F, + 0x1F, 0x80, 0x7F, 0x1F, 0x80, 0x7F, 0x1F, 0x80, 0x7F, 0x1F, 0x80, 0x7F, + 0x1F, 0x80, 0x7F, 0x1F, 0x80, 0x7F, 0x1F, 0x80, 0x7F, 0x1F, 0x80, 0x7F, + 0x1F, 0x80, 0x7E, 0x1F, 0x80, 0x7E, 0x1F, 0x80, 0xFE, 0x1F, 0x80, 0xFC, + 0x1F, 0xC1, 0xF8, 0x1F, 0xE3, 0xF8, 0x1F, 0xBF, 0xE0, 0x1F, 0x8F, 0xC0, + 0x1F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x80, 0x00, + 0x1F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0xF8, 0x00, + 0x00, 0xF8, 0x08, 0x07, 0xFE, 0x18, 0x0F, 0xC7, 0x38, 0x1F, 0x83, 0xF8, + 0x3F, 0x01, 0xF8, 0x3F, 0x01, 0xF8, 0x7F, 0x01, 0xF8, 0x7E, 0x01, 0xF8, + 0x7E, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, + 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, + 0xFE, 0x01, 0xF8, 0x7E, 0x01, 0xF8, 0x7F, 0x01, 0xF8, 0x7F, 0x01, 0xF8, + 0x3F, 0x83, 0xF8, 0x1F, 0xC7, 0xF8, 0x0F, 0xFD, 0xF8, 0x03, 0xF1, 0xF8, + 0x00, 0x01, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x01, 0xF8, + 0x00, 0x01, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xFF, + 0x00, 0x07, 0x9F, 0xF3, 0xF8, 0xFE, 0xFF, 0x8F, 0xFF, 0xF1, 0xFE, 0x7E, + 0x3F, 0x87, 0x87, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, + 0x7E, 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x00, 0x07, 0xE0, 0x00, + 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x01, + 0xF8, 0x00, 0x7F, 0x80, 0x3F, 0xFC, 0x00, 0x0F, 0x84, 0x3F, 0xF8, 0xE1, + 0xF3, 0x80, 0xEF, 0x00, 0xDE, 0x01, 0xBE, 0x01, 0x7E, 0x00, 0xFF, 0x01, + 0xFF, 0x81, 0xFF, 0xC3, 0xFF, 0xC3, 0xFF, 0xC1, 0xFF, 0x80, 0xFF, 0x80, + 0x7F, 0x80, 0x7F, 0x80, 0x7F, 0x00, 0x7E, 0x00, 0xFE, 0x01, 0xDF, 0x0F, + 0x37, 0xFC, 0x43, 0xF0, 0x01, 0x00, 0x0C, 0x00, 0x70, 0x01, 0xC0, 0x0F, + 0x00, 0x7C, 0x03, 0xF0, 0x1F, 0xC0, 0xFF, 0xF3, 0xFF, 0xC3, 0xF0, 0x0F, + 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFC, 0x03, + 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, + 0xFC, 0x23, 0xF0, 0x8F, 0xE6, 0x1F, 0xF0, 0x7F, 0x80, 0xF8, 0x00, 0xFF, + 0x87, 0xFC, 0x1F, 0xC0, 0xFE, 0x07, 0xE0, 0x3F, 0x03, 0xF0, 0x1F, 0x81, + 0xF8, 0x0F, 0xC0, 0xFC, 0x07, 0xE0, 0x7E, 0x03, 0xF0, 0x3F, 0x01, 0xF8, + 0x1F, 0x80, 0xFC, 0x0F, 0xC0, 0x7E, 0x07, 0xE0, 0x3F, 0x03, 0xF0, 0x1F, + 0x81, 0xF8, 0x0F, 0xC0, 0xFC, 0x07, 0xE0, 0x7E, 0x03, 0xF0, 0x3F, 0x01, + 0xF8, 0x1F, 0x80, 0xFC, 0x0F, 0xC0, 0x7E, 0x07, 0xE0, 0x7F, 0x03, 0xF8, + 0x7F, 0xC0, 0xFF, 0xEF, 0xF8, 0x3F, 0xE7, 0xC0, 0x0F, 0xC2, 0x00, 0xFF, + 0xF1, 0xFC, 0xFF, 0x01, 0xE3, 0xFC, 0x03, 0x07, 0xF0, 0x0C, 0x1F, 0xC0, + 0x60, 0x3F, 0x81, 0x80, 0xFE, 0x04, 0x01, 0xF8, 0x30, 0x07, 0xF0, 0xC0, + 0x1F, 0xC6, 0x00, 0x3F, 0x98, 0x00, 0xFE, 0x40, 0x01, 0xFB, 0x00, 0x07, + 0xFC, 0x00, 0x1F, 0xE0, 0x00, 0x3F, 0x80, 0x00, 0xFE, 0x00, 0x01, 0xF0, + 0x00, 0x07, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, + 0x01, 0x00, 0x00, 0xFF, 0xE7, 0xFF, 0x3F, 0xBF, 0xE0, 0xFE, 0x07, 0x0F, + 0xE0, 0x7F, 0x03, 0x83, 0xF0, 0x1F, 0x81, 0x81, 0xFC, 0x0F, 0xC0, 0xC0, + 0xFE, 0x07, 0xF0, 0x40, 0x3F, 0x03, 0xF8, 0x60, 0x1F, 0xC3, 0xFC, 0x30, + 0x07, 0xE1, 0xFE, 0x10, 0x03, 0xF0, 0x9F, 0x98, 0x01, 0xFC, 0xCF, 0xCC, + 0x00, 0x7E, 0x67, 0xEC, 0x00, 0x3F, 0xE1, 0xFE, 0x00, 0x1F, 0xF0, 0xFE, + 0x00, 0x07, 0xF0, 0x7F, 0x00, 0x03, 0xF8, 0x3F, 0x80, 0x00, 0xFC, 0x0F, + 0x80, 0x00, 0x7C, 0x07, 0xC0, 0x00, 0x3E, 0x03, 0xE0, 0x00, 0x0F, 0x00, + 0xE0, 0x00, 0x07, 0x00, 0x70, 0x00, 0x03, 0x80, 0x38, 0x00, 0x00, 0x80, + 0x08, 0x00, 0xFF, 0xF3, 0xFD, 0xFF, 0x03, 0xC3, 0xFC, 0x0E, 0x07, 0xF0, + 0x30, 0x1F, 0xE1, 0x80, 0x3F, 0x8C, 0x00, 0x7F, 0x70, 0x01, 0xFF, 0x80, + 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x1F, 0xE0, 0x00, 0x3F, 0x80, 0x00, + 0xFF, 0x00, 0x07, 0xFE, 0x00, 0x1B, 0xF8, 0x00, 0xCF, 0xF0, 0x06, 0x1F, + 0xC0, 0x38, 0x3F, 0x80, 0xC0, 0xFF, 0x07, 0x01, 0xFC, 0x3C, 0x07, 0xFB, + 0xFC, 0x7F, 0xF0, 0xFF, 0xE3, 0xFB, 0xFC, 0x07, 0x8F, 0xE0, 0x18, 0x7F, + 0x01, 0x81, 0xF8, 0x0C, 0x0F, 0xE0, 0x60, 0x7F, 0x06, 0x01, 0xF8, 0x30, + 0x0F, 0xE1, 0x80, 0x7F, 0x18, 0x01, 0xF8, 0xC0, 0x0F, 0xE6, 0x00, 0x3F, + 0x60, 0x01, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0x80, 0x01, 0xFC, 0x00, + 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x07, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x60, 0x03, 0x82, 0x00, 0x3E, + 0x30, 0x01, 0xF1, 0x00, 0x0F, 0x98, 0x00, 0x3F, 0x80, 0x00, 0xF0, 0x00, + 0x00, 0x7F, 0xFF, 0xEF, 0xFF, 0xFD, 0xE0, 0x7F, 0x30, 0x1F, 0xC6, 0x07, + 0xF8, 0x80, 0xFE, 0x00, 0x3F, 0xC0, 0x07, 0xF0, 0x01, 0xFC, 0x00, 0x3F, + 0x80, 0x0F, 0xE0, 0x03, 0xFC, 0x00, 0x7F, 0x00, 0x1F, 0xE0, 0x03, 0xF8, + 0x00, 0xFE, 0x03, 0x3F, 0xC0, 0x67, 0xF0, 0x19, 0xFE, 0x07, 0x3F, 0x83, + 0xEF, 0xFF, 0xFD, 0xFF, 0xFF, 0x80, 0x00, 0x7C, 0x07, 0xE0, 0x3E, 0x00, + 0xF8, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, + 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, + 0x1F, 0x00, 0xF8, 0x03, 0xC0, 0x3C, 0x01, 0xF0, 0x00, 0xF0, 0x03, 0xE0, + 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, + 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, + 0x00, 0x3E, 0x00, 0xF8, 0x01, 0xF8, 0x01, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF0, 0xF8, 0x01, 0xF8, 0x01, 0xF0, 0x07, 0xC0, 0x0F, 0x80, 0x3E, 0x00, + 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, + 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0x7C, 0x00, 0xF0, + 0x00, 0xF0, 0x03, 0xE0, 0x3C, 0x01, 0xF0, 0x0F, 0x80, 0x3E, 0x00, 0xF8, + 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, + 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x01, 0xF0, 0x07, 0xC0, 0x7E, + 0x03, 0xE0, 0x00, 0x0F, 0x80, 0x00, 0xFF, 0xC0, 0x47, 0xFF, 0xC3, 0x9F, + 0xFF, 0xFF, 0x70, 0x7F, 0xF8, 0x80, 0x7F, 0xC0, 0x00, 0x3E, 0x00}; + +const GFXglyph FreeSerifBold24pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 12, 0, 1}, // 0x20 ' ' + {0, 8, 34, 16, 4, -32}, // 0x21 '!' + {34, 17, 13, 26, 4, -32}, // 0x22 '"' + {62, 23, 33, 23, 0, -32}, // 0x23 '#' + {157, 21, 39, 24, 1, -34}, // 0x24 '$' + {260, 35, 34, 47, 6, -32}, // 0x25 '%' + {409, 34, 34, 39, 3, -32}, // 0x26 '&' + {554, 5, 13, 13, 4, -32}, // 0x27 ''' + {563, 12, 41, 16, 2, -32}, // 0x28 '(' + {625, 12, 41, 16, 1, -32}, // 0x29 ')' + {687, 18, 21, 24, 3, -32}, // 0x2A '*' + {735, 26, 25, 32, 3, -24}, // 0x2B '+' + {817, 8, 15, 12, 2, -6}, // 0x2C ',' + {832, 11, 5, 16, 2, -12}, // 0x2D '-' + {839, 8, 8, 12, 2, -6}, // 0x2E '.' + {847, 15, 33, 13, -1, -32}, // 0x2F '/' + {909, 22, 34, 23, 1, -32}, // 0x30 '0' + {1003, 18, 33, 23, 3, -32}, // 0x31 '1' + {1078, 21, 33, 24, 1, -32}, // 0x32 '2' + {1165, 21, 34, 24, 1, -32}, // 0x33 '3' + {1255, 21, 33, 24, 1, -32}, // 0x34 '4' + {1342, 20, 32, 23, 2, -31}, // 0x35 '5' + {1422, 21, 34, 24, 1, -32}, // 0x36 '6' + {1512, 21, 32, 23, 1, -31}, // 0x37 '7' + {1596, 21, 34, 23, 1, -32}, // 0x38 '8' + {1686, 22, 34, 23, 1, -32}, // 0x39 '9' + {1780, 8, 24, 16, 4, -22}, // 0x3A ':' + {1804, 9, 31, 16, 3, -22}, // 0x3B ';' + {1839, 26, 26, 32, 3, -24}, // 0x3C '<' + {1924, 26, 17, 32, 3, -20}, // 0x3D '=' + {1980, 26, 26, 32, 3, -24}, // 0x3E '>' + {2065, 18, 34, 24, 3, -32}, // 0x3F '?' + {2142, 33, 34, 44, 5, -32}, // 0x40 '@' + {2283, 32, 33, 34, 1, -32}, // 0x41 'A' + {2415, 28, 32, 31, 1, -31}, // 0x42 'B' + {2527, 30, 34, 33, 2, -32}, // 0x43 'C' + {2655, 32, 32, 34, 1, -31}, // 0x44 'D' + {2783, 28, 32, 32, 2, -31}, // 0x45 'E' + {2895, 25, 32, 29, 2, -31}, // 0x46 'F' + {2995, 33, 34, 36, 2, -32}, // 0x47 'G' + {3136, 33, 32, 37, 2, -31}, // 0x48 'H' + {3268, 15, 32, 18, 2, -31}, // 0x49 'I' + {3328, 22, 37, 24, 0, -31}, // 0x4A 'J' + {3430, 34, 32, 36, 2, -31}, // 0x4B 'K' + {3566, 28, 32, 31, 2, -31}, // 0x4C 'L' + {3678, 43, 32, 45, 0, -31}, // 0x4D 'M' + {3850, 31, 32, 34, 1, -31}, // 0x4E 'N' + {3974, 33, 34, 37, 2, -32}, // 0x4F 'O' + {4115, 26, 32, 30, 2, -31}, // 0x50 'P' + {4219, 33, 41, 37, 2, -32}, // 0x51 'Q' + {4389, 31, 32, 34, 2, -31}, // 0x52 'R' + {4513, 21, 34, 27, 3, -32}, // 0x53 'S' + {4603, 28, 32, 30, 1, -31}, // 0x54 'T' + {4715, 30, 33, 34, 2, -31}, // 0x55 'U' + {4839, 33, 32, 33, 0, -31}, // 0x56 'V' + {4971, 45, 33, 46, 1, -31}, // 0x57 'W' + {5157, 32, 32, 34, 1, -31}, // 0x58 'X' + {5285, 32, 32, 33, 1, -31}, // 0x59 'Y' + {5413, 28, 32, 30, 1, -31}, // 0x5A 'Z' + {5525, 11, 39, 16, 3, -31}, // 0x5B '[' + {5579, 15, 33, 13, -1, -32}, // 0x5C '\' + {5641, 11, 39, 16, 2, -31}, // 0x5D ']' + {5695, 21, 17, 27, 3, -31}, // 0x5E '^' + {5740, 24, 3, 23, 0, 5}, // 0x5F '_' + {5749, 11, 9, 16, 0, -33}, // 0x60 '`' + {5762, 22, 24, 23, 1, -22}, // 0x61 'a' + {5828, 25, 33, 26, 0, -31}, // 0x62 'b' + {5932, 19, 24, 20, 1, -22}, // 0x63 'c' + {5989, 24, 33, 26, 1, -31}, // 0x64 'd' + {6088, 18, 24, 21, 1, -22}, // 0x65 'e' + {6142, 17, 33, 18, 1, -32}, // 0x66 'f' + {6213, 19, 32, 24, 2, -22}, // 0x67 'g' + {6289, 24, 32, 26, 0, -31}, // 0x68 'h' + {6385, 11, 33, 14, 1, -32}, // 0x69 'i' + {6431, 14, 42, 18, 0, -32}, // 0x6A 'j' + {6505, 25, 32, 26, 0, -31}, // 0x6B 'k' + {6605, 11, 32, 13, 0, -31}, // 0x6C 'l' + {6649, 37, 23, 39, 0, -22}, // 0x6D 'm' + {6756, 24, 23, 26, 0, -22}, // 0x6E 'n' + {6825, 21, 24, 24, 1, -22}, // 0x6F 'o' + {6888, 24, 32, 26, 0, -22}, // 0x70 'p' + {6984, 24, 32, 26, 1, -22}, // 0x71 'q' + {7080, 19, 23, 20, 0, -22}, // 0x72 'r' + {7135, 15, 24, 19, 2, -22}, // 0x73 's' + {7180, 14, 31, 16, 1, -29}, // 0x74 't' + {7235, 25, 23, 27, 0, -21}, // 0x75 'u' + {7307, 22, 23, 23, 0, -21}, // 0x76 'v' + {7371, 33, 23, 33, 0, -21}, // 0x77 'w' + {7466, 22, 22, 24, 1, -21}, // 0x78 'x' + {7527, 21, 31, 23, 0, -21}, // 0x79 'y' + {7609, 19, 22, 21, 1, -21}, // 0x7A 'z' + {7662, 14, 42, 19, 1, -33}, // 0x7B '{' + {7736, 4, 33, 10, 3, -32}, // 0x7C '|' + {7753, 14, 42, 19, 4, -33}, // 0x7D '}' + {7827, 22, 7, 24, 1, -14}}; // 0x7E '~' + +const GFXfont FreeSerifBold24pt7b PROGMEM = { + (uint8_t *)FreeSerifBold24pt7bBitmaps, + (GFXglyph *)FreeSerifBold24pt7bGlyphs, 0x20, 0x7E, 56}; + +// Approx. 8519 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerifBold9pt7b.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerifBold9pt7b.h new file mode 100644 index 0000000..2f1cf8f --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerifBold9pt7b.h @@ -0,0 +1,204 @@ +#pragma once +#include + +const uint8_t FreeSerifBold9pt7bBitmaps[] PROGMEM = { + 0xFF, 0xF4, 0x92, 0x1F, 0xF0, 0xCF, 0x3C, 0xE3, 0x88, 0x13, 0x09, 0x84, + 0xC2, 0x47, 0xF9, 0x90, 0xC8, 0x4C, 0xFF, 0x13, 0x09, 0x0C, 0x86, 0x40, + 0x10, 0x38, 0xD6, 0x92, 0xD2, 0xF0, 0x7C, 0x3E, 0x17, 0x93, 0x93, 0xD6, + 0x7C, 0x10, 0x3C, 0x21, 0xCF, 0x0E, 0x24, 0x30, 0xA0, 0xC5, 0x03, 0x34, + 0xE7, 0x26, 0x40, 0xB9, 0x04, 0xC4, 0x23, 0x30, 0x8C, 0x84, 0x1C, 0x0F, + 0x00, 0xCC, 0x06, 0x60, 0x3E, 0x00, 0xE7, 0x8F, 0x18, 0x9C, 0x8C, 0xE4, + 0xE3, 0xC7, 0x9E, 0x3C, 0x72, 0xFD, 0xE0, 0xFF, 0x80, 0x32, 0x44, 0xCC, + 0xCC, 0xCC, 0xC4, 0x62, 0x10, 0x84, 0x22, 0x33, 0x33, 0x33, 0x32, 0x64, + 0x80, 0x31, 0x6B, 0xB1, 0x8E, 0xD6, 0x8C, 0x00, 0x08, 0x04, 0x02, 0x01, + 0x0F, 0xF8, 0x40, 0x20, 0x10, 0x08, 0x00, 0xDF, 0x95, 0x00, 0xFF, 0xFF, + 0x80, 0x0C, 0x21, 0x86, 0x10, 0xC3, 0x08, 0x61, 0x84, 0x30, 0xC0, 0x1C, + 0x33, 0x98, 0xDC, 0x7E, 0x3F, 0x1F, 0x8F, 0xC7, 0xE3, 0xB1, 0x98, 0xC3, + 0x80, 0x08, 0xE3, 0x8E, 0x38, 0xE3, 0x8E, 0x38, 0xE3, 0xBF, 0x3C, 0x3F, + 0x23, 0xC0, 0xE0, 0x70, 0x30, 0x38, 0x18, 0x18, 0x18, 0x5F, 0xDF, 0xE0, + 0x7C, 0x8E, 0x0E, 0x0E, 0x0C, 0x1E, 0x07, 0x03, 0x03, 0x02, 0xE6, 0xF8, + 0x06, 0x0E, 0x0E, 0x3E, 0x2E, 0x4E, 0x8E, 0x8E, 0xFF, 0xFF, 0x0E, 0x0E, + 0x3F, 0x7E, 0x40, 0x40, 0xF8, 0xFC, 0x1E, 0x06, 0x02, 0x02, 0xE4, 0xF8, + 0x07, 0x1C, 0x30, 0x70, 0xFC, 0xE6, 0xE7, 0xE7, 0xE7, 0x67, 0x66, 0x3C, + 0x7F, 0x3F, 0xA0, 0xD0, 0x40, 0x60, 0x30, 0x10, 0x18, 0x0C, 0x04, 0x06, + 0x03, 0x00, 0x3C, 0xC6, 0xC6, 0xC6, 0xFC, 0x7C, 0x3E, 0xCF, 0xC7, 0xC7, + 0xC6, 0x7C, 0x3E, 0x33, 0xB8, 0xDC, 0x7E, 0x3F, 0x1D, 0xCE, 0x7F, 0x07, + 0x07, 0x0F, 0x1C, 0x00, 0xFF, 0x80, 0x3F, 0xE0, 0xFF, 0x80, 0x37, 0xE5, + 0x40, 0x00, 0x00, 0x70, 0x78, 0x78, 0x78, 0x38, 0x03, 0x80, 0x3C, 0x03, + 0xC0, 0x30, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0xFF, 0xC0, 0xC0, 0x3C, 0x03, + 0xC0, 0x1C, 0x01, 0xC1, 0xE1, 0xE1, 0xE0, 0xE0, 0x00, 0x00, 0x3D, 0x9F, + 0x3E, 0x70, 0xE1, 0x04, 0x08, 0x00, 0x70, 0xE1, 0xC0, 0x0F, 0x81, 0x83, + 0x18, 0xC4, 0x89, 0x9C, 0x4C, 0xE4, 0x67, 0x22, 0x39, 0x22, 0x4F, 0xE3, + 0x00, 0x0C, 0x10, 0x1F, 0x00, 0x02, 0x00, 0x30, 0x01, 0xC0, 0x0E, 0x00, + 0xB8, 0x05, 0xC0, 0x4F, 0x02, 0x38, 0x3F, 0xE1, 0x07, 0x18, 0x3D, 0xE3, + 0xF0, 0xFF, 0x87, 0x1C, 0xE3, 0x9C, 0x73, 0x9C, 0x7F, 0x0E, 0x71, 0xC7, + 0x38, 0xE7, 0x1C, 0xE7, 0x7F, 0xC0, 0x1F, 0x26, 0x1D, 0xC1, 0xB0, 0x1E, + 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x0E, 0x04, 0xE1, 0x0F, 0xC0, 0xFF, + 0x0E, 0x71, 0xC7, 0x38, 0x77, 0x0E, 0xE1, 0xDC, 0x3B, 0x87, 0x70, 0xCE, + 0x39, 0xC6, 0x7F, 0x80, 0xFF, 0xCE, 0x19, 0xC1, 0x38, 0x87, 0x30, 0xFE, + 0x1C, 0xC3, 0x88, 0x70, 0x2E, 0x0D, 0xC3, 0x7F, 0xE0, 0xFF, 0xDC, 0x37, + 0x05, 0xC4, 0x73, 0x1F, 0xC7, 0x31, 0xC4, 0x70, 0x1C, 0x07, 0x03, 0xE0, + 0x1F, 0x23, 0x0E, 0x70, 0x6E, 0x02, 0xE0, 0x0E, 0x00, 0xE1, 0xFE, 0x0E, + 0x60, 0xE7, 0x0E, 0x38, 0xE0, 0xF8, 0xF9, 0xF7, 0x0E, 0x70, 0xE7, 0x0E, + 0x70, 0xE7, 0xFE, 0x70, 0xE7, 0x0E, 0x70, 0xE7, 0x0E, 0x70, 0xEF, 0x9F, + 0xFB, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x9D, 0xF0, 0x1F, 0x0E, 0x0E, 0x0E, + 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0xCE, 0xCC, 0x78, 0xF9, 0xF3, + 0x82, 0x1C, 0x20, 0xE2, 0x07, 0x20, 0x3F, 0x01, 0xDC, 0x0E, 0x70, 0x73, + 0xC3, 0x8F, 0x1C, 0x3D, 0xF3, 0xF0, 0xF8, 0x0E, 0x01, 0xC0, 0x38, 0x07, + 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x2E, 0x09, 0xC3, 0x7F, 0xE0, 0xF8, + 0x0F, 0x3C, 0x1E, 0x3C, 0x1E, 0x2E, 0x2E, 0x2E, 0x2E, 0x26, 0x4E, 0x27, + 0x4E, 0x27, 0x4E, 0x23, 0x8E, 0x23, 0x8E, 0x21, 0x0E, 0x71, 0x1F, 0xF0, + 0xEE, 0x09, 0xE1, 0x3E, 0x25, 0xE4, 0x9E, 0x91, 0xD2, 0x1E, 0x43, 0xC8, + 0x39, 0x03, 0x70, 0x20, 0x1F, 0x83, 0x0C, 0x70, 0xEE, 0x07, 0xE0, 0x7E, + 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x77, 0x0E, 0x30, 0xC1, 0xF8, 0xFF, 0x1C, + 0xE7, 0x1D, 0xC7, 0x71, 0xDC, 0xE7, 0xF1, 0xC0, 0x70, 0x1C, 0x07, 0x03, + 0xE0, 0x0F, 0x83, 0x9C, 0x70, 0xE6, 0x06, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, + 0x07, 0xE0, 0x76, 0x06, 0x30, 0xC1, 0x98, 0x0F, 0x00, 0x78, 0x03, 0xE0, + 0xFF, 0x07, 0x38, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x38, 0x7E, 0x07, 0x70, + 0x77, 0x87, 0x3C, 0x71, 0xEF, 0x8F, 0x39, 0x47, 0xC1, 0xC0, 0xF0, 0x7C, + 0x3E, 0x0F, 0x83, 0xC3, 0xC6, 0xBC, 0xFF, 0xFC, 0xE3, 0x8E, 0x10, 0xE0, + 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x01, 0xF0, + 0xF8, 0xEE, 0x09, 0xC1, 0x38, 0x27, 0x04, 0xE0, 0x9C, 0x13, 0x82, 0x70, + 0x4E, 0x08, 0xE2, 0x0F, 0x80, 0xFC, 0x7B, 0xC1, 0x0E, 0x08, 0x70, 0x81, + 0xC4, 0x0E, 0x20, 0x7A, 0x01, 0xD0, 0x0E, 0x80, 0x38, 0x01, 0xC0, 0x04, + 0x00, 0x20, 0x00, 0xFD, 0xFB, 0xDC, 0x38, 0x43, 0x87, 0x10, 0xE1, 0xC4, + 0x38, 0xF2, 0x07, 0x2E, 0x81, 0xD3, 0xA0, 0x34, 0x70, 0x0E, 0x1C, 0x03, + 0x87, 0x00, 0x60, 0x80, 0x10, 0x20, 0xFE, 0xF3, 0xC3, 0x0F, 0x10, 0x39, + 0x00, 0xF0, 0x03, 0x80, 0x1E, 0x01, 0x70, 0x09, 0xC0, 0x8F, 0x08, 0x3D, + 0xF3, 0xF0, 0xFC, 0x7B, 0xC1, 0x8E, 0x08, 0x38, 0x81, 0xE8, 0x07, 0x40, + 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x01, 0xC0, 0x1F, 0x00, 0xFF, 0xD8, + 0x72, 0x1E, 0x43, 0x80, 0xE0, 0x1C, 0x07, 0x01, 0xC0, 0x38, 0x2E, 0x0F, + 0x83, 0x7F, 0xE0, 0xFC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xF0, 0xC1, + 0x06, 0x18, 0x20, 0xC3, 0x04, 0x18, 0x60, 0x83, 0x0C, 0xF3, 0x33, 0x33, + 0x33, 0x33, 0x33, 0x33, 0xF0, 0x18, 0x1C, 0x34, 0x26, 0x62, 0x43, 0xC1, + 0xFF, 0x80, 0xC6, 0x30, 0x7C, 0x63, 0xB1, 0xC0, 0xE1, 0xF3, 0x3B, 0x9D, + 0xCE, 0xFF, 0x80, 0xF0, 0x1C, 0x07, 0x01, 0xDC, 0x7B, 0x9C, 0x77, 0x1D, + 0xC7, 0x71, 0xDC, 0x77, 0x39, 0x3C, 0x3C, 0xED, 0x9F, 0x0E, 0x1C, 0x38, + 0x39, 0x3C, 0x07, 0x80, 0xE0, 0x38, 0xEE, 0x77, 0xB8, 0xEE, 0x3B, 0x8E, + 0xE3, 0xB8, 0xE7, 0x78, 0xEF, 0x3C, 0x66, 0xE6, 0xFE, 0xE0, 0xE0, 0xE0, + 0x72, 0x3C, 0x3E, 0xED, 0xC7, 0xC7, 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xC7, + 0xC0, 0x31, 0xDF, 0xBF, 0x7E, 0xE7, 0x90, 0x60, 0xFC, 0xFE, 0x0C, 0x17, + 0xC0, 0xF0, 0x1C, 0x07, 0x01, 0xDC, 0x7B, 0x9C, 0xE7, 0x39, 0xCE, 0x73, + 0x9C, 0xE7, 0x3B, 0xFF, 0x73, 0x9D, 0xE7, 0x39, 0xCE, 0x73, 0x9D, 0xF0, + 0x1C, 0x71, 0xCF, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x7D, 0xBE, + 0xF0, 0x1C, 0x07, 0x01, 0xCE, 0x71, 0x1C, 0x87, 0x41, 0xF8, 0x77, 0x1C, + 0xE7, 0x1B, 0xEF, 0xF3, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x9D, 0xF0, 0xF7, + 0x38, 0xF7, 0xB9, 0xCE, 0x73, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x9C, 0xE7, + 0x39, 0xCE, 0xFF, 0xFE, 0xF7, 0x1E, 0xE7, 0x39, 0xCE, 0x73, 0x9C, 0xE7, + 0x39, 0xCE, 0xFF, 0xC0, 0x3E, 0x31, 0xB8, 0xFC, 0x7E, 0x3F, 0x1F, 0x8E, + 0xC6, 0x3E, 0x00, 0xF7, 0x1E, 0xE7, 0x1D, 0xC7, 0x71, 0xDC, 0x77, 0x1D, + 0xCE, 0x7F, 0x1C, 0x07, 0x01, 0xC0, 0xF8, 0x00, 0x3C, 0x9C, 0xEE, 0x3B, + 0x8E, 0xE3, 0xB8, 0xEE, 0x39, 0xCE, 0x3F, 0x80, 0xE0, 0x38, 0x0E, 0x07, + 0xC0, 0xF7, 0x7B, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0xF8, 0x7E, 0x73, + 0xC7, 0x8E, 0x39, 0xB0, 0x10, 0xCF, 0x9C, 0x71, 0xC7, 0x1C, 0x71, 0xD3, + 0x80, 0xF7, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x9C, 0xE7, 0x39, 0xCE, 0x3F, + 0xC0, 0xFB, 0xB8, 0x8C, 0x87, 0x43, 0xC0, 0xE0, 0x70, 0x10, 0x08, 0x00, + 0xF7, 0xB6, 0x31, 0x73, 0xA3, 0x3A, 0x3D, 0xA3, 0xDC, 0x18, 0xC1, 0x88, + 0x10, 0x80, 0xFB, 0xB8, 0x8E, 0x83, 0x81, 0xC0, 0xF0, 0x98, 0xCE, 0xEF, + 0x80, 0xF7, 0x62, 0x72, 0x34, 0x34, 0x3C, 0x18, 0x18, 0x10, 0x10, 0x10, + 0xE0, 0xE0, 0xFF, 0x1C, 0x70, 0xE3, 0x87, 0x1C, 0x71, 0xFE, 0x19, 0x8C, + 0x63, 0x18, 0xCC, 0x61, 0x8C, 0x63, 0x18, 0xC3, 0xFF, 0xF8, 0xC3, 0x18, + 0xC6, 0x31, 0x86, 0x33, 0x18, 0xC6, 0x31, 0x98, 0xF0, 0x8E}; + +const GFXglyph FreeSerifBold9pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 5, 0, 1}, // 0x20 ' ' + {0, 3, 12, 6, 1, -11}, // 0x21 '!' + {5, 6, 5, 10, 2, -11}, // 0x22 '"' + {9, 9, 13, 9, 0, -12}, // 0x23 '#' + {24, 8, 14, 9, 1, -12}, // 0x24 '$' + {38, 14, 12, 18, 2, -11}, // 0x25 '%' + {59, 13, 12, 15, 1, -11}, // 0x26 '&' + {79, 2, 5, 5, 1, -11}, // 0x27 ''' + {81, 4, 15, 6, 1, -11}, // 0x28 '(' + {89, 4, 15, 6, 1, -11}, // 0x29 ')' + {97, 7, 7, 9, 2, -11}, // 0x2A '*' + {104, 9, 9, 12, 1, -8}, // 0x2B '+' + {115, 3, 6, 4, 1, -2}, // 0x2C ',' + {118, 4, 2, 6, 1, -4}, // 0x2D '-' + {119, 3, 3, 4, 1, -2}, // 0x2E '.' + {121, 6, 13, 5, 0, -11}, // 0x2F '/' + {131, 9, 12, 9, 0, -11}, // 0x30 '0' + {145, 6, 12, 9, 1, -11}, // 0x31 '1' + {154, 9, 12, 9, 0, -11}, // 0x32 '2' + {168, 8, 12, 9, 0, -11}, // 0x33 '3' + {180, 8, 12, 9, 1, -11}, // 0x34 '4' + {192, 8, 12, 9, 1, -11}, // 0x35 '5' + {204, 8, 12, 9, 1, -11}, // 0x36 '6' + {216, 9, 12, 9, 0, -11}, // 0x37 '7' + {230, 8, 12, 9, 1, -11}, // 0x38 '8' + {242, 9, 12, 9, 0, -11}, // 0x39 '9' + {256, 3, 9, 6, 1, -8}, // 0x3A ':' + {260, 3, 12, 6, 2, -8}, // 0x3B ';' + {265, 10, 10, 12, 1, -9}, // 0x3C '<' + {278, 10, 5, 12, 1, -6}, // 0x3D '=' + {285, 10, 10, 12, 1, -8}, // 0x3E '>' + {298, 7, 12, 9, 1, -11}, // 0x3F '?' + {309, 13, 12, 17, 2, -11}, // 0x40 '@' + {329, 13, 12, 13, 0, -11}, // 0x41 'A' + {349, 11, 12, 12, 0, -11}, // 0x42 'B' + {366, 11, 12, 13, 1, -11}, // 0x43 'C' + {383, 11, 12, 13, 1, -11}, // 0x44 'D' + {400, 11, 12, 12, 1, -11}, // 0x45 'E' + {417, 10, 12, 11, 1, -11}, // 0x46 'F' + {432, 12, 12, 14, 1, -11}, // 0x47 'G' + {450, 12, 12, 14, 1, -11}, // 0x48 'H' + {468, 5, 12, 7, 1, -11}, // 0x49 'I' + {476, 8, 14, 9, 0, -11}, // 0x4A 'J' + {490, 13, 12, 14, 1, -11}, // 0x4B 'K' + {510, 11, 12, 12, 1, -11}, // 0x4C 'L' + {527, 16, 12, 17, 0, -11}, // 0x4D 'M' + {551, 11, 12, 13, 1, -11}, // 0x4E 'N' + {568, 12, 12, 14, 1, -11}, // 0x4F 'O' + {586, 10, 12, 11, 1, -11}, // 0x50 'P' + {601, 12, 15, 14, 1, -11}, // 0x51 'Q' + {624, 12, 12, 13, 1, -11}, // 0x52 'R' + {642, 8, 12, 10, 1, -11}, // 0x53 'S' + {654, 12, 12, 12, 0, -11}, // 0x54 'T' + {672, 11, 12, 13, 1, -11}, // 0x55 'U' + {689, 13, 13, 13, 0, -11}, // 0x56 'V' + {711, 18, 12, 18, 0, -11}, // 0x57 'W' + {738, 13, 12, 13, 0, -11}, // 0x58 'X' + {758, 13, 12, 13, 0, -11}, // 0x59 'Y' + {778, 11, 12, 12, 1, -11}, // 0x5A 'Z' + {795, 4, 15, 6, 1, -11}, // 0x5B '[' + {803, 6, 13, 5, 0, -11}, // 0x5C '\' + {813, 4, 15, 6, 1, -11}, // 0x5D ']' + {821, 8, 7, 10, 1, -11}, // 0x5E '^' + {828, 9, 1, 9, 0, 3}, // 0x5F '_' + {830, 4, 3, 6, 0, -12}, // 0x60 '`' + {832, 9, 9, 9, 0, -8}, // 0x61 'a' + {843, 10, 12, 10, 0, -11}, // 0x62 'b' + {858, 7, 9, 8, 0, -8}, // 0x63 'c' + {866, 10, 12, 10, 0, -11}, // 0x64 'd' + {881, 8, 9, 8, 0, -8}, // 0x65 'e' + {890, 7, 12, 7, 0, -11}, // 0x66 'f' + {901, 7, 13, 9, 1, -8}, // 0x67 'g' + {913, 10, 12, 10, 0, -11}, // 0x68 'h' + {928, 5, 12, 5, 0, -11}, // 0x69 'i' + {936, 6, 16, 7, 0, -11}, // 0x6A 'j' + {948, 10, 12, 10, 0, -11}, // 0x6B 'k' + {963, 5, 12, 5, 0, -11}, // 0x6C 'l' + {971, 15, 9, 15, 0, -8}, // 0x6D 'm' + {988, 10, 9, 10, 0, -8}, // 0x6E 'n' + {1000, 9, 9, 9, 0, -8}, // 0x6F 'o' + {1011, 10, 13, 10, 0, -8}, // 0x70 'p' + {1028, 10, 13, 10, 0, -8}, // 0x71 'q' + {1045, 8, 9, 8, 0, -8}, // 0x72 'r' + {1054, 5, 9, 7, 1, -8}, // 0x73 's' + {1060, 6, 11, 6, 0, -10}, // 0x74 't' + {1069, 10, 9, 10, 0, -8}, // 0x75 'u' + {1081, 9, 9, 9, 0, -8}, // 0x76 'v' + {1092, 12, 9, 13, 0, -8}, // 0x77 'w' + {1106, 9, 9, 9, 0, -8}, // 0x78 'x' + {1117, 8, 13, 9, 0, -8}, // 0x79 'y' + {1130, 7, 9, 8, 1, -8}, // 0x7A 'z' + {1138, 5, 16, 7, 0, -12}, // 0x7B '{' + {1148, 1, 13, 4, 1, -11}, // 0x7C '|' + {1150, 5, 16, 7, 2, -12}, // 0x7D '}' + {1160, 8, 2, 9, 1, -4}}; // 0x7E '~' + +const GFXfont FreeSerifBold9pt7b PROGMEM = { + (uint8_t *)FreeSerifBold9pt7bBitmaps, (GFXglyph *)FreeSerifBold9pt7bGlyphs, + 0x20, 0x7E, 22}; + +// Approx. 1834 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerifBoldItalic12pt7b.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerifBoldItalic12pt7b.h new file mode 100644 index 0000000..d6674ce --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerifBoldItalic12pt7b.h @@ -0,0 +1,294 @@ +#pragma once +#include + +const uint8_t FreeSerifBoldItalic12pt7bBitmaps[] PROGMEM = { + 0x07, 0x07, 0x07, 0x0F, 0x0E, 0x0E, 0x0C, 0x0C, 0x08, 0x18, 0x10, 0x00, + 0x00, 0x60, 0xF0, 0xF0, 0x60, 0x61, 0xF1, 0xF8, 0xF8, 0x6C, 0x34, 0x12, + 0x08, 0x01, 0x8C, 0x06, 0x60, 0x31, 0x80, 0xCC, 0x06, 0x30, 0xFF, 0xF0, + 0xC6, 0x03, 0x18, 0x0C, 0xC0, 0x63, 0x0F, 0xFF, 0x0C, 0x60, 0x33, 0x01, + 0x8C, 0x06, 0x30, 0x19, 0x80, 0x00, 0x80, 0x08, 0x07, 0xC1, 0x96, 0x31, + 0x33, 0x13, 0x3A, 0x23, 0xE0, 0x1E, 0x01, 0xF0, 0x07, 0x80, 0x7C, 0x05, + 0xC4, 0xCC, 0x48, 0xCC, 0x8C, 0xF8, 0x83, 0x30, 0x1E, 0x01, 0x00, 0x00, + 0x02, 0x07, 0x83, 0x03, 0x9F, 0x81, 0xC4, 0x20, 0x71, 0x10, 0x3C, 0x44, + 0x0E, 0x22, 0x03, 0x88, 0x80, 0xE4, 0x40, 0x1E, 0x31, 0xE0, 0x08, 0xE4, + 0x06, 0x71, 0x01, 0x3C, 0x40, 0x8E, 0x10, 0x23, 0x88, 0x10, 0xE2, 0x04, + 0x39, 0x02, 0x07, 0x80, 0x00, 0xF0, 0x01, 0x98, 0x03, 0x98, 0x03, 0x98, + 0x03, 0xB0, 0x03, 0xE0, 0x03, 0x80, 0x0F, 0x9F, 0x19, 0xCE, 0x31, 0xCC, + 0x61, 0xC8, 0xE1, 0xC8, 0xE0, 0xF0, 0xE0, 0xE0, 0xF0, 0x70, 0x78, 0x79, + 0x3F, 0xBE, 0x7F, 0xED, 0x20, 0x02, 0x08, 0x20, 0xC3, 0x0E, 0x18, 0x30, + 0xE1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x20, 0x40, 0x80, 0x81, 0x01, 0x00, + 0x10, 0x10, 0x20, 0x20, 0x40, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x70, 0xE1, + 0x83, 0x0C, 0x18, 0x61, 0x86, 0x00, 0x00, 0x0C, 0x33, 0x6C, 0x9B, 0xAE, + 0x1C, 0x3F, 0xEC, 0x9B, 0x36, 0x0C, 0x02, 0x00, 0x06, 0x00, 0x60, 0x06, + 0x00, 0x60, 0x06, 0x0F, 0xFF, 0xFF, 0xF0, 0x60, 0x06, 0x00, 0x60, 0x06, + 0x00, 0x60, 0x31, 0xCE, 0x31, 0x08, 0x98, 0xFF, 0xFF, 0xC0, 0x6F, 0xF6, + 0x01, 0x80, 0x60, 0x30, 0x0C, 0x07, 0x01, 0x80, 0xE0, 0x30, 0x1C, 0x06, + 0x01, 0x80, 0xC0, 0x30, 0x18, 0x06, 0x03, 0x00, 0x03, 0x81, 0xC8, 0x71, + 0x1C, 0x33, 0x86, 0xE1, 0xDC, 0x3B, 0x87, 0xE0, 0xFC, 0x3B, 0x87, 0x70, + 0xEC, 0x39, 0x87, 0x31, 0xC2, 0x30, 0x3C, 0x00, 0x01, 0xC3, 0xF0, 0x38, + 0x0E, 0x03, 0x81, 0xE0, 0x70, 0x1C, 0x0F, 0x03, 0x80, 0xE0, 0x38, 0x1E, + 0x07, 0x01, 0xC0, 0xF0, 0xFF, 0x80, 0x07, 0x81, 0xF8, 0x47, 0x90, 0x70, + 0x0E, 0x01, 0xC0, 0x30, 0x0E, 0x01, 0x80, 0x60, 0x18, 0x06, 0x01, 0x80, + 0x40, 0x8F, 0xF3, 0xFC, 0xFF, 0x80, 0x07, 0xC3, 0x3C, 0x03, 0x80, 0x70, + 0x0C, 0x03, 0x81, 0xC0, 0xFC, 0x07, 0xC0, 0x78, 0x07, 0x00, 0xE0, 0x1C, + 0x03, 0x30, 0xE7, 0x10, 0x7C, 0x00, 0x00, 0x10, 0x01, 0x80, 0x3C, 0x03, + 0xE0, 0x2E, 0x02, 0x70, 0x23, 0x82, 0x38, 0x21, 0xC2, 0x0E, 0x1F, 0xF9, + 0xFF, 0xC0, 0x38, 0x01, 0xC0, 0x1C, 0x00, 0xE0, 0x07, 0xF0, 0x7E, 0x0F, + 0xE0, 0x80, 0x08, 0x01, 0xE0, 0x1F, 0x83, 0xF8, 0x03, 0xC0, 0x1C, 0x00, + 0xC0, 0x0C, 0x00, 0xC0, 0x08, 0x61, 0x8F, 0x30, 0x7C, 0x00, 0x00, 0x60, + 0x78, 0x1C, 0x0F, 0x01, 0xC0, 0x70, 0x1F, 0xC3, 0x8C, 0xE1, 0xDC, 0x3B, + 0x87, 0x61, 0xEC, 0x3D, 0x87, 0x31, 0xE2, 0x38, 0x3C, 0x00, 0x3F, 0xEF, + 0xF9, 0xFF, 0x60, 0xC8, 0x18, 0x06, 0x00, 0x80, 0x30, 0x0C, 0x01, 0x80, + 0x60, 0x1C, 0x03, 0x00, 0xC0, 0x18, 0x06, 0x00, 0x03, 0x81, 0x88, 0x61, + 0x8C, 0x31, 0x86, 0x38, 0xC7, 0xB0, 0x78, 0x0F, 0x86, 0x71, 0x87, 0x60, + 0x6C, 0x0D, 0x81, 0xB0, 0x63, 0x18, 0x3E, 0x00, 0x07, 0x81, 0xC8, 0x71, + 0x8E, 0x33, 0xC6, 0x70, 0xCE, 0x39, 0xC7, 0x38, 0xE3, 0x38, 0x3F, 0x01, + 0xC0, 0x38, 0x0E, 0x03, 0x81, 0xC0, 0xE0, 0x00, 0x0C, 0x3C, 0x78, 0x60, + 0x00, 0x00, 0x00, 0x61, 0xE3, 0xC3, 0x00, 0x0E, 0x0F, 0x0F, 0x0E, 0x00, + 0x00, 0x00, 0x00, 0x38, 0x38, 0x38, 0x18, 0x10, 0x20, 0x40, 0x00, 0x10, + 0x07, 0x01, 0xF0, 0x7C, 0x3F, 0x0F, 0x80, 0xE0, 0x0F, 0x80, 0x3E, 0x00, + 0xF8, 0x03, 0xE0, 0x07, 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0xFF, 0x80, 0x07, 0x00, 0x3F, 0x00, 0x3E, 0x00, 0x7C, 0x00, + 0xF8, 0x01, 0xE0, 0x1F, 0x07, 0xE0, 0xF8, 0x1F, 0x01, 0xE0, 0x0C, 0x00, + 0x00, 0x1E, 0x19, 0x8C, 0xE6, 0x70, 0x38, 0x38, 0x1C, 0x18, 0x18, 0x08, + 0x08, 0x00, 0x00, 0x03, 0x03, 0xC1, 0xE0, 0x60, 0x00, 0x03, 0xF0, 0x07, + 0x06, 0x06, 0x00, 0x86, 0x0E, 0x66, 0x0D, 0xDB, 0x0C, 0xE7, 0x06, 0x33, + 0x83, 0x31, 0xC3, 0x18, 0xE1, 0x8C, 0x70, 0xCC, 0x4C, 0x66, 0x46, 0x1F, + 0xC1, 0x80, 0x00, 0x30, 0x10, 0x07, 0xF0, 0x00, 0x10, 0x00, 0x30, 0x00, + 0x70, 0x00, 0x70, 0x00, 0xF0, 0x01, 0xF0, 0x01, 0x78, 0x03, 0x78, 0x02, + 0x38, 0x04, 0x38, 0x0C, 0x38, 0x0F, 0xF8, 0x18, 0x3C, 0x30, 0x3C, 0x20, + 0x3C, 0x60, 0x3C, 0xF8, 0x7F, 0x1F, 0xFC, 0x07, 0x9E, 0x07, 0x0F, 0x07, + 0x0F, 0x0F, 0x0F, 0x0F, 0x1E, 0x0E, 0x3C, 0x0F, 0xE0, 0x1E, 0x3C, 0x1E, + 0x1E, 0x1C, 0x1E, 0x3C, 0x1E, 0x3C, 0x1E, 0x3C, 0x3E, 0x38, 0x3C, 0x7C, + 0x78, 0xFF, 0xE0, 0x01, 0xF2, 0x0E, 0x1C, 0x38, 0x18, 0xE0, 0x33, 0xC0, + 0x4F, 0x00, 0x9E, 0x00, 0x7C, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, + 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x1E, 0x04, 0x1E, 0x30, 0x0F, 0x80, 0x1F, + 0xFC, 0x01, 0xE3, 0xC0, 0x70, 0x78, 0x1C, 0x0E, 0x0F, 0x03, 0xC3, 0xC0, + 0xF0, 0xE0, 0x3C, 0x38, 0x0F, 0x1E, 0x03, 0xC7, 0x81, 0xF1, 0xC0, 0x78, + 0xF0, 0x1E, 0x3C, 0x0F, 0x0F, 0x03, 0xC3, 0x81, 0xC1, 0xE1, 0xE0, 0xFF, + 0xE0, 0x00, 0x1F, 0xFF, 0x83, 0xC1, 0xC1, 0xC0, 0x40, 0xE0, 0x20, 0xF0, + 0x00, 0x78, 0xC0, 0x38, 0x40, 0x1F, 0xE0, 0x1E, 0x70, 0x0F, 0x18, 0x07, + 0x08, 0x03, 0x84, 0x03, 0xC0, 0x61, 0xE0, 0x20, 0xE0, 0x30, 0xF8, 0x78, + 0xFF, 0xFC, 0x00, 0x1F, 0xFF, 0x07, 0x87, 0x07, 0x02, 0x07, 0x02, 0x0F, + 0x00, 0x0F, 0x18, 0x0E, 0x10, 0x0F, 0xF0, 0x1E, 0x70, 0x1E, 0x30, 0x1C, + 0x20, 0x1C, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x38, 0x00, 0x7C, 0x00, 0xFE, + 0x00, 0x01, 0xF9, 0x03, 0xC3, 0x83, 0x81, 0xC3, 0x80, 0x43, 0xC0, 0x23, + 0xC0, 0x01, 0xE0, 0x01, 0xF0, 0x00, 0xF0, 0x3F, 0xF8, 0x0F, 0x3C, 0x07, + 0x9E, 0x03, 0xCF, 0x01, 0xC3, 0x80, 0xE1, 0xE0, 0xF0, 0x78, 0x70, 0x0F, + 0xE0, 0x00, 0x1F, 0xE7, 0xF0, 0x78, 0x3C, 0x07, 0x83, 0xC0, 0x70, 0x3C, + 0x0F, 0x03, 0x80, 0xF0, 0x78, 0x0E, 0x07, 0x80, 0xE0, 0x70, 0x1F, 0xFF, + 0x01, 0xE0, 0xF0, 0x1C, 0x0F, 0x03, 0xC0, 0xE0, 0x3C, 0x1E, 0x03, 0xC1, + 0xE0, 0x38, 0x1E, 0x07, 0xC3, 0xE0, 0xFE, 0x7F, 0x00, 0x1F, 0xC1, 0xE0, + 0x70, 0x1C, 0x0F, 0x03, 0xC0, 0xE0, 0x38, 0x1E, 0x07, 0x81, 0xC0, 0x70, + 0x3C, 0x0F, 0x03, 0x81, 0xF0, 0xFE, 0x00, 0x01, 0xFC, 0x03, 0xC0, 0x0F, + 0x00, 0x38, 0x00, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x70, 0x01, 0xC0, 0x0F, + 0x00, 0x3C, 0x00, 0xE0, 0x07, 0x80, 0x1E, 0x0E, 0x70, 0x3B, 0xC0, 0xCE, + 0x01, 0xF0, 0x00, 0x1F, 0xEF, 0x83, 0xC1, 0x81, 0xC1, 0x80, 0xE1, 0x80, + 0xF1, 0x80, 0x79, 0x00, 0x39, 0x00, 0x1F, 0x80, 0x1F, 0xE0, 0x0F, 0x70, + 0x07, 0x3C, 0x07, 0x8E, 0x03, 0xC7, 0x01, 0xE3, 0xC0, 0xE0, 0xE0, 0xF8, + 0x78, 0xFE, 0xFE, 0x00, 0x1F, 0xE0, 0x0F, 0x00, 0x1C, 0x00, 0x38, 0x00, + 0xF0, 0x01, 0xE0, 0x03, 0x80, 0x07, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x70, + 0x00, 0xE0, 0x03, 0xC0, 0x27, 0x00, 0xCE, 0x03, 0x3C, 0x1E, 0xFF, 0xFC, + 0x0F, 0x80, 0x7E, 0x0F, 0x00, 0xF0, 0x1E, 0x03, 0xE0, 0x3C, 0x0F, 0x80, + 0xB8, 0x17, 0x01, 0x70, 0x5E, 0x02, 0xF1, 0xBC, 0x05, 0xE2, 0x70, 0x11, + 0xC8, 0xE0, 0x23, 0xB3, 0xC0, 0x47, 0x47, 0x81, 0x0F, 0x8E, 0x02, 0x1E, + 0x1C, 0x04, 0x38, 0x78, 0x08, 0x70, 0xF0, 0x30, 0xC3, 0xE0, 0xF9, 0x8F, + 0xE0, 0x1F, 0x03, 0xE0, 0xF0, 0x38, 0x1E, 0x02, 0x03, 0xE0, 0xC0, 0xBC, + 0x10, 0x13, 0xC2, 0x02, 0x78, 0x40, 0x47, 0x90, 0x10, 0xF2, 0x02, 0x0F, + 0x40, 0x41, 0xE8, 0x18, 0x1E, 0x02, 0x03, 0xC0, 0x40, 0x38, 0x08, 0x06, + 0x03, 0x00, 0x40, 0x10, 0x08, 0x00, 0x01, 0xF8, 0x07, 0x1C, 0x0E, 0x0E, + 0x1E, 0x0F, 0x3C, 0x0F, 0x3C, 0x0F, 0x78, 0x0F, 0x78, 0x0F, 0xF8, 0x1F, + 0xF0, 0x1E, 0xF0, 0x1E, 0xF0, 0x3C, 0xF0, 0x3C, 0xF0, 0x78, 0x70, 0x70, + 0x38, 0xE0, 0x1F, 0x80, 0x1F, 0xFC, 0x07, 0x9E, 0x07, 0x0F, 0x07, 0x0F, + 0x0F, 0x0F, 0x0F, 0x0F, 0x0E, 0x1E, 0x0E, 0x3C, 0x1F, 0xF0, 0x1E, 0x00, + 0x1C, 0x00, 0x1C, 0x00, 0x3C, 0x00, 0x38, 0x00, 0x38, 0x00, 0x7C, 0x00, + 0xFE, 0x00, 0x01, 0xF8, 0x07, 0x1C, 0x0E, 0x0E, 0x1E, 0x0F, 0x3C, 0x0F, + 0x3C, 0x0F, 0x78, 0x0F, 0x78, 0x1F, 0xF8, 0x1F, 0xF0, 0x1E, 0xF0, 0x1E, + 0xF0, 0x3C, 0xF0, 0x3C, 0xF0, 0x78, 0x70, 0x70, 0x39, 0xC0, 0x0E, 0x00, + 0x08, 0x02, 0x3F, 0x04, 0x7F, 0xF8, 0x83, 0xF0, 0x1F, 0xF8, 0x07, 0x9E, + 0x07, 0x8F, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x1E, 0x0E, 0x3C, + 0x1F, 0xF0, 0x1E, 0xF0, 0x1C, 0xF0, 0x3C, 0xF0, 0x3C, 0x78, 0x3C, 0x78, + 0x3C, 0x78, 0x7C, 0x3C, 0xFE, 0x3E, 0x07, 0x91, 0xC7, 0x18, 0x73, 0x82, + 0x38, 0x23, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x01, 0xE0, 0x1E, + 0x40, 0xE4, 0x0E, 0x60, 0xCE, 0x1C, 0x9F, 0x00, 0x7F, 0xFE, 0xE7, 0x9D, + 0x0E, 0x16, 0x3C, 0x20, 0x78, 0x40, 0xE0, 0x01, 0xC0, 0x07, 0x80, 0x0F, + 0x00, 0x1C, 0x00, 0x38, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0x80, 0x0F, 0x00, + 0x1E, 0x00, 0xFF, 0x00, 0x7F, 0x1F, 0x3C, 0x0E, 0x38, 0x04, 0x38, 0x0C, + 0x78, 0x08, 0x78, 0x08, 0x70, 0x08, 0x70, 0x10, 0xF0, 0x10, 0xF0, 0x10, + 0xF0, 0x10, 0xF0, 0x20, 0xF0, 0x20, 0xF0, 0x20, 0xF0, 0x40, 0x78, 0xC0, + 0x3F, 0x00, 0xFF, 0x1F, 0x3C, 0x06, 0x3C, 0x04, 0x3C, 0x08, 0x3C, 0x08, + 0x3C, 0x10, 0x1C, 0x20, 0x1C, 0x20, 0x1E, 0x40, 0x1E, 0x80, 0x1E, 0x80, + 0x1F, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0C, 0x00, 0x08, 0x00, 0xFE, 0x7C, + 0x79, 0xE1, 0xC1, 0x8F, 0x0E, 0x08, 0x78, 0x70, 0x43, 0xC7, 0x84, 0x1E, + 0x3E, 0x20, 0x72, 0xF2, 0x03, 0x97, 0x90, 0x1D, 0x1D, 0x00, 0xE8, 0xE8, + 0x07, 0x87, 0x80, 0x3C, 0x3C, 0x01, 0xC1, 0xC0, 0x0E, 0x0E, 0x00, 0x20, + 0x60, 0x01, 0x02, 0x00, 0x1F, 0xCF, 0x83, 0xC1, 0x81, 0xE1, 0x80, 0x71, + 0x80, 0x39, 0x80, 0x1F, 0x80, 0x07, 0x80, 0x03, 0x80, 0x01, 0xE0, 0x01, + 0xF0, 0x00, 0xB8, 0x00, 0x9C, 0x00, 0x8F, 0x00, 0x83, 0x80, 0xC1, 0xC0, + 0xE0, 0xF0, 0xF9, 0xFE, 0x00, 0xFE, 0x7C, 0xE0, 0x63, 0x81, 0x0F, 0x08, + 0x1C, 0x40, 0x71, 0x01, 0xE8, 0x03, 0xC0, 0x0E, 0x00, 0x38, 0x01, 0xE0, + 0x07, 0x80, 0x1C, 0x00, 0x70, 0x03, 0xC0, 0x0F, 0x00, 0xFF, 0x00, 0x1F, + 0xFE, 0x38, 0x78, 0x60, 0xF1, 0x83, 0xC2, 0x0F, 0x00, 0x1E, 0x00, 0x78, + 0x01, 0xE0, 0x07, 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xF8, 0x01, 0xE0, 0x47, + 0x81, 0x1F, 0x06, 0x3C, 0x3C, 0xFF, 0xF0, 0x07, 0xC1, 0x80, 0xE0, 0x30, + 0x0C, 0x03, 0x01, 0xC0, 0x60, 0x18, 0x06, 0x03, 0x80, 0xC0, 0x30, 0x0C, + 0x07, 0x01, 0xC0, 0x60, 0x18, 0x0E, 0x03, 0xE0, 0xC3, 0x06, 0x18, 0x61, + 0x83, 0x0C, 0x30, 0xC1, 0x86, 0x18, 0x60, 0xC3, 0x0F, 0x81, 0xC0, 0xE0, + 0x60, 0x30, 0x18, 0x1C, 0x0C, 0x06, 0x03, 0x03, 0x81, 0x80, 0xC0, 0x60, + 0x70, 0x38, 0x18, 0x0C, 0x0E, 0x1F, 0x00, 0x0C, 0x07, 0x81, 0xE0, 0xDC, + 0x33, 0x18, 0xC6, 0x1B, 0x06, 0xC0, 0xC0, 0xFF, 0xF0, 0xC7, 0x0C, 0x30, + 0x07, 0x70, 0xCE, 0x1C, 0xE3, 0x8E, 0x70, 0xC7, 0x0C, 0x71, 0xCE, 0x1C, + 0xE1, 0x8E, 0x79, 0xE9, 0xA7, 0x1C, 0x02, 0x07, 0xC0, 0x38, 0x06, 0x01, + 0xC0, 0x38, 0x06, 0x71, 0xF7, 0x38, 0xE7, 0x1C, 0xC3, 0xB8, 0x77, 0x1C, + 0xE3, 0xB8, 0xE7, 0x18, 0xE6, 0x0F, 0x80, 0x07, 0x0C, 0xCE, 0x66, 0x07, + 0x03, 0x83, 0x81, 0xC0, 0xE0, 0x70, 0xBC, 0x87, 0x80, 0x00, 0x08, 0x03, + 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x70, 0x01, 0xC0, 0x77, 0x03, 0x3C, 0x18, + 0xE0, 0xE3, 0x87, 0x0E, 0x1C, 0x70, 0x71, 0xC3, 0x87, 0x0E, 0x3C, 0x38, + 0xE8, 0xE5, 0xA1, 0xE7, 0x00, 0x07, 0x0C, 0xCE, 0x66, 0x37, 0x33, 0xBB, + 0xB1, 0xE0, 0xE0, 0x70, 0xB8, 0x87, 0x80, 0x00, 0x38, 0x01, 0xB0, 0x0C, + 0xC0, 0x30, 0x01, 0xC0, 0x07, 0x00, 0x7E, 0x00, 0xE0, 0x03, 0x80, 0x0E, + 0x00, 0x30, 0x01, 0xC0, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x03, 0x80, 0x0E, + 0x00, 0x38, 0x00, 0xC0, 0x33, 0x00, 0xD8, 0x01, 0xC0, 0x00, 0x03, 0x80, + 0x73, 0xC7, 0x1C, 0x38, 0xE1, 0xCF, 0x06, 0x70, 0x1E, 0x01, 0x00, 0x1C, + 0x00, 0xF8, 0x07, 0xF0, 0xC7, 0x8C, 0x0C, 0x60, 0x63, 0x86, 0x07, 0xE0, + 0x01, 0x00, 0xF8, 0x01, 0x80, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x31, 0xC3, + 0xBE, 0x1E, 0x70, 0xE3, 0x8F, 0x38, 0x71, 0xC3, 0x8E, 0x1C, 0xE1, 0xC7, + 0x0E, 0x3A, 0x71, 0xD3, 0x0F, 0x00, 0x1C, 0x71, 0xC0, 0x00, 0x6F, 0x8E, + 0x31, 0xC7, 0x18, 0x63, 0x8E, 0xBC, 0xE0, 0x00, 0xE0, 0x1C, 0x03, 0x80, + 0x00, 0x00, 0x0F, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x70, 0x0E, 0x01, 0xC0, + 0x38, 0x0E, 0x01, 0xC0, 0x38, 0x06, 0x01, 0xC3, 0x38, 0x6E, 0x07, 0x80, + 0x01, 0x00, 0xF8, 0x01, 0xC0, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x33, 0xE3, + 0x8C, 0x1C, 0xC0, 0xE4, 0x06, 0x40, 0x7E, 0x03, 0xF0, 0x1D, 0x81, 0xCE, + 0x0E, 0x72, 0x71, 0xA3, 0x8E, 0x00, 0x06, 0x7C, 0x70, 0xE1, 0xC3, 0x0E, + 0x1C, 0x38, 0x61, 0xC3, 0x87, 0x0C, 0x38, 0x72, 0xE9, 0xE0, 0x3C, 0x73, + 0xC7, 0x7D, 0x71, 0xE7, 0x9C, 0xF1, 0xCE, 0x3C, 0xF3, 0x8E, 0x39, 0xC3, + 0x8E, 0x71, 0xC3, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xD7, 0x1C, 0x7B, 0x8E, + 0x1C, 0x3C, 0xF1, 0xD7, 0x1E, 0x73, 0xCE, 0x3C, 0xE3, 0x8E, 0x39, 0xC7, + 0x9C, 0x71, 0xC7, 0x1D, 0x71, 0xEE, 0x1C, 0x0F, 0x06, 0x63, 0x9D, 0xC7, + 0x71, 0xF8, 0x7E, 0x3F, 0x8E, 0xE3, 0xB9, 0xC6, 0x60, 0xF0, 0x0F, 0x38, + 0x1F, 0x70, 0x71, 0xC1, 0xC7, 0x0E, 0x1C, 0x38, 0xF0, 0xE3, 0x83, 0x8E, + 0x1C, 0x70, 0x71, 0xC1, 0xCE, 0x07, 0xE0, 0x38, 0x00, 0xE0, 0x03, 0x80, + 0x3F, 0x00, 0x07, 0x70, 0xCE, 0x18, 0xE3, 0x8E, 0x70, 0xE7, 0x1C, 0xF1, + 0xCE, 0x1C, 0xE3, 0x8E, 0x38, 0xE7, 0x87, 0xB0, 0x07, 0x00, 0x70, 0x0F, + 0x03, 0xF8, 0x0D, 0xDF, 0x71, 0xAC, 0xF0, 0x38, 0x0E, 0x03, 0x81, 0xC0, + 0x70, 0x1C, 0x0E, 0x00, 0x1D, 0x99, 0x8C, 0x46, 0x23, 0x80, 0xE0, 0x70, + 0x1C, 0x06, 0x23, 0x19, 0x17, 0x00, 0x0C, 0x10, 0xE3, 0xF3, 0x86, 0x1C, + 0x38, 0x71, 0xC3, 0x87, 0x0E, 0x9E, 0x38, 0x00, 0xF8, 0xE3, 0x8E, 0x38, + 0xC3, 0x9C, 0x71, 0xC7, 0x18, 0x71, 0x87, 0x38, 0xE3, 0x8E, 0xFA, 0xF3, + 0xAE, 0x3C, 0xF0, 0xDC, 0x33, 0x0C, 0xC2, 0x31, 0x8C, 0xC3, 0x60, 0xF0, + 0x38, 0x0C, 0x02, 0x00, 0xE0, 0x86, 0xE3, 0x0C, 0xC6, 0x19, 0x9C, 0x23, + 0x78, 0xC7, 0xF9, 0x0E, 0x74, 0x1C, 0xF0, 0x31, 0xC0, 0x43, 0x00, 0x84, + 0x00, 0x0E, 0x31, 0xF3, 0x83, 0xA0, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x1C, + 0x00, 0xE0, 0x0B, 0x02, 0x5D, 0x3C, 0xF1, 0xC3, 0x00, 0x04, 0x67, 0x8C, + 0x79, 0x87, 0x10, 0xE2, 0x1C, 0x81, 0x90, 0x3A, 0x07, 0x80, 0xF0, 0x1C, + 0x03, 0x00, 0x40, 0x08, 0x32, 0x07, 0x80, 0x3F, 0xCF, 0xE6, 0x30, 0x08, + 0x04, 0x02, 0x01, 0x00, 0xC0, 0x30, 0x1E, 0x0F, 0x98, 0x76, 0x07, 0x00, + 0x01, 0xE0, 0x70, 0x1C, 0x03, 0x80, 0x60, 0x1C, 0x03, 0x80, 0x60, 0x0C, + 0x03, 0x80, 0xF0, 0x3C, 0x07, 0x00, 0x40, 0x0C, 0x01, 0x80, 0x70, 0x0E, + 0x01, 0xC0, 0x30, 0x03, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0xE0, + 0x18, 0x06, 0x01, 0x80, 0xE0, 0x38, 0x0C, 0x03, 0x00, 0xC0, 0x10, 0x1F, + 0x07, 0x03, 0x80, 0xE0, 0x30, 0x0C, 0x07, 0x01, 0x80, 0xE0, 0xE0, 0x00, + 0x38, 0x0F, 0xCD, 0x1F, 0x80, 0xE0}; + +const GFXglyph FreeSerifBoldItalic12pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 6, 0, 1}, // 0x20 ' ' + {0, 8, 17, 9, 2, -15}, // 0x21 '!' + {17, 9, 7, 13, 4, -15}, // 0x22 '"' + {25, 14, 16, 12, -1, -15}, // 0x23 '#' + {53, 12, 20, 12, 0, -17}, // 0x24 '$' + {83, 18, 18, 20, 1, -16}, // 0x25 '%' + {124, 16, 17, 19, 0, -15}, // 0x26 '&' + {158, 3, 7, 7, 3, -15}, // 0x27 ''' + {161, 7, 21, 8, 1, -15}, // 0x28 '(' + {180, 7, 21, 8, -1, -15}, // 0x29 ')' + {199, 10, 10, 12, 1, -15}, // 0x2A '*' + {212, 12, 12, 14, 1, -11}, // 0x2B '+' + {230, 5, 8, 6, -2, -3}, // 0x2C ',' + {235, 6, 3, 8, 0, -6}, // 0x2D '-' + {238, 4, 4, 6, 0, -2}, // 0x2E '.' + {240, 10, 16, 8, 0, -15}, // 0x2F '/' + {260, 11, 17, 12, 0, -15}, // 0x30 '0' + {284, 10, 17, 12, 0, -15}, // 0x31 '1' + {306, 11, 17, 12, 0, -15}, // 0x32 '2' + {330, 11, 17, 12, 0, -15}, // 0x33 '3' + {354, 13, 16, 12, 0, -15}, // 0x34 '4' + {380, 12, 17, 12, 0, -15}, // 0x35 '5' + {406, 11, 17, 12, 1, -15}, // 0x36 '6' + {430, 11, 16, 12, 2, -15}, // 0x37 '7' + {452, 11, 17, 12, 0, -15}, // 0x38 '8' + {476, 11, 17, 12, 0, -15}, // 0x39 '9' + {500, 7, 12, 6, 0, -10}, // 0x3A ':' + {511, 8, 15, 6, -1, -10}, // 0x3B ';' + {526, 12, 13, 14, 1, -12}, // 0x3C '<' + {546, 12, 6, 14, 2, -8}, // 0x3D '=' + {555, 13, 13, 14, 1, -12}, // 0x3E '>' + {577, 9, 17, 12, 2, -15}, // 0x3F '?' + {597, 17, 16, 20, 1, -15}, // 0x40 '@' + {631, 16, 17, 17, 0, -15}, // 0x41 'A' + {665, 16, 17, 15, 0, -15}, // 0x42 'B' + {699, 15, 17, 15, 1, -15}, // 0x43 'C' + {731, 18, 17, 17, 0, -15}, // 0x44 'D' + {770, 17, 17, 15, 0, -15}, // 0x45 'E' + {807, 16, 17, 15, 0, -15}, // 0x46 'F' + {841, 17, 17, 17, 1, -15}, // 0x47 'G' + {878, 20, 17, 18, 0, -15}, // 0x48 'H' + {921, 10, 17, 9, 0, -15}, // 0x49 'I' + {943, 14, 18, 12, 0, -15}, // 0x4A 'J' + {975, 17, 17, 16, 0, -15}, // 0x4B 'K' + {1012, 15, 17, 15, 0, -15}, // 0x4C 'L' + {1044, 23, 17, 21, 0, -15}, // 0x4D 'M' + {1093, 19, 17, 17, 0, -15}, // 0x4E 'N' + {1134, 16, 17, 16, 1, -15}, // 0x4F 'O' + {1168, 16, 17, 14, 0, -15}, // 0x50 'P' + {1202, 16, 21, 16, 1, -15}, // 0x51 'Q' + {1244, 16, 17, 16, 0, -15}, // 0x52 'R' + {1278, 12, 17, 12, 0, -15}, // 0x53 'S' + {1304, 15, 17, 14, 2, -15}, // 0x54 'T' + {1336, 16, 17, 17, 3, -15}, // 0x55 'U' + {1370, 16, 16, 17, 3, -15}, // 0x56 'V' + {1402, 21, 16, 22, 3, -15}, // 0x57 'W' + {1444, 17, 17, 17, 0, -15}, // 0x58 'X' + {1481, 14, 17, 15, 3, -15}, // 0x59 'Y' + {1511, 15, 17, 13, 0, -15}, // 0x5A 'Z' + {1543, 10, 20, 8, -1, -15}, // 0x5B '[' + {1568, 6, 16, 10, 3, -15}, // 0x5C '\' + {1580, 9, 20, 8, -1, -15}, // 0x5D ']' + {1603, 10, 9, 14, 2, -15}, // 0x5E '^' + {1615, 12, 1, 12, 0, 4}, // 0x5F '_' + {1617, 5, 4, 8, 2, -15}, // 0x60 '`' + {1620, 12, 12, 12, 0, -10}, // 0x61 'a' + {1638, 11, 18, 12, 1, -16}, // 0x62 'b' + {1663, 9, 12, 10, 1, -10}, // 0x63 'c' + {1677, 14, 18, 12, 0, -16}, // 0x64 'd' + {1709, 9, 12, 10, 1, -10}, // 0x65 'e' + {1723, 14, 22, 12, -2, -16}, // 0x66 'f' + {1762, 13, 16, 12, -1, -10}, // 0x67 'g' + {1788, 13, 18, 13, 0, -16}, // 0x68 'h' + {1818, 6, 17, 7, 1, -15}, // 0x69 'i' + {1831, 11, 21, 8, -2, -15}, // 0x6A 'j' + {1860, 13, 18, 12, 0, -16}, // 0x6B 'k' + {1890, 7, 18, 7, 1, -16}, // 0x6C 'l' + {1906, 18, 12, 18, 0, -10}, // 0x6D 'm' + {1933, 12, 12, 13, 0, -10}, // 0x6E 'n' + {1951, 10, 12, 11, 1, -10}, // 0x6F 'o' + {1966, 14, 16, 12, -2, -10}, // 0x70 'p' + {1994, 12, 16, 12, 0, -10}, // 0x71 'q' + {2018, 10, 11, 10, 0, -10}, // 0x72 'r' + {2032, 9, 12, 9, 0, -10}, // 0x73 's' + {2046, 7, 15, 7, 1, -13}, // 0x74 't' + {2060, 12, 12, 13, 1, -10}, // 0x75 'u' + {2078, 10, 11, 11, 1, -10}, // 0x76 'v' + {2092, 15, 11, 16, 1, -10}, // 0x77 'w' + {2113, 13, 12, 11, -1, -10}, // 0x78 'x' + {2133, 11, 16, 10, -1, -10}, // 0x79 'y' + {2155, 10, 13, 10, 0, -10}, // 0x7A 'z' + {2172, 11, 21, 8, 0, -16}, // 0x7B '{' + {2201, 2, 16, 6, 3, -15}, // 0x7C '|' + {2205, 10, 21, 8, -3, -16}, // 0x7D '}' + {2232, 11, 4, 14, 1, -7}}; // 0x7E '~' + +const GFXfont FreeSerifBoldItalic12pt7b PROGMEM = { + (uint8_t *)FreeSerifBoldItalic12pt7bBitmaps, + (GFXglyph *)FreeSerifBoldItalic12pt7bGlyphs, 0x20, 0x7E, 29}; + +// Approx. 2910 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerifBoldItalic18pt7b.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerifBoldItalic18pt7b.h new file mode 100644 index 0000000..8e75b24 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerifBoldItalic18pt7b.h @@ -0,0 +1,502 @@ +#pragma once +#include + +const uint8_t FreeSerifBoldItalic18pt7bBitmaps[] PROGMEM = { + 0x01, 0xC0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, 0x80, 0xF0, 0x3C, 0x07, + 0x80, 0xE0, 0x1C, 0x03, 0x00, 0x60, 0x0C, 0x03, 0x00, 0x60, 0x08, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x81, 0xF8, 0x3F, 0x07, 0xE0, 0x78, 0x00, 0x38, + 0x1D, 0xE0, 0xF7, 0x83, 0xDC, 0x0E, 0x70, 0x39, 0xC0, 0xE6, 0x03, 0x18, + 0x0C, 0x40, 0x23, 0x01, 0x80, 0x00, 0x38, 0x60, 0x07, 0x0E, 0x00, 0x70, + 0xC0, 0x06, 0x1C, 0x00, 0xE1, 0xC0, 0x0E, 0x38, 0x01, 0xC3, 0x81, 0xFF, + 0xFF, 0x1F, 0xFF, 0xE1, 0xFF, 0xFE, 0x03, 0x86, 0x00, 0x30, 0xE0, 0x07, + 0x0E, 0x00, 0x71, 0xC0, 0x0E, 0x1C, 0x0F, 0xFF, 0xF8, 0xFF, 0xFF, 0x0F, + 0xFF, 0xF0, 0x1C, 0x30, 0x01, 0x87, 0x00, 0x38, 0x70, 0x03, 0x0E, 0x00, + 0x70, 0xE0, 0x07, 0x0C, 0x00, 0xE1, 0xC0, 0x00, 0x00, 0x08, 0x00, 0x0C, + 0x00, 0x7E, 0x00, 0xFF, 0xC0, 0xF3, 0x70, 0x71, 0x9C, 0x70, 0xC6, 0x38, + 0x43, 0x1C, 0x61, 0x0F, 0x30, 0x87, 0xD8, 0x03, 0xF8, 0x00, 0xFE, 0x00, + 0x3F, 0x80, 0x0F, 0xE0, 0x03, 0xF8, 0x01, 0xFC, 0x00, 0xDF, 0x10, 0x47, + 0x88, 0x63, 0xCC, 0x31, 0xE6, 0x10, 0xF3, 0x98, 0x71, 0xCC, 0x78, 0x7E, + 0x78, 0x07, 0xF8, 0x03, 0xF0, 0x01, 0x80, 0x00, 0xC0, 0x00, 0x03, 0xC0, + 0x18, 0x01, 0xFE, 0x0F, 0x00, 0x7C, 0xFF, 0xC0, 0x1F, 0x0F, 0x98, 0x07, + 0xC1, 0x06, 0x00, 0xF8, 0x21, 0x80, 0x3E, 0x04, 0x30, 0x07, 0xC1, 0x8C, + 0x00, 0xF0, 0x21, 0x80, 0x1E, 0x0C, 0x60, 0x03, 0xC1, 0x0C, 0x00, 0x78, + 0xC3, 0x03, 0xC7, 0xF8, 0x61, 0xFC, 0x7C, 0x18, 0x7C, 0xC0, 0x06, 0x1F, + 0x08, 0x00, 0xC7, 0xC1, 0x00, 0x30, 0xF0, 0x20, 0x06, 0x3E, 0x04, 0x01, + 0x87, 0xC1, 0x00, 0x30, 0xF0, 0x20, 0x0C, 0x1E, 0x0C, 0x03, 0x03, 0xC1, + 0x00, 0x60, 0x3C, 0xC0, 0x18, 0x07, 0xF8, 0x03, 0x00, 0x7C, 0x00, 0x00, + 0x0F, 0x80, 0x00, 0x1F, 0xF0, 0x00, 0x1E, 0x38, 0x00, 0x0E, 0x0E, 0x00, + 0x0F, 0x07, 0x00, 0x07, 0x83, 0x80, 0x03, 0xC3, 0x80, 0x01, 0xE3, 0x80, + 0x00, 0xF7, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x7F, 0x0F, + 0xF0, 0xE7, 0x81, 0xE0, 0xE3, 0xE0, 0xE0, 0xE1, 0xF0, 0x60, 0xE0, 0x7C, + 0x60, 0xF0, 0x3E, 0x20, 0x78, 0x1F, 0xB0, 0x3C, 0x07, 0xF0, 0x1F, 0x03, + 0xF0, 0x0F, 0x80, 0xFC, 0x03, 0xF0, 0x7F, 0x8D, 0xFF, 0xEF, 0xFC, 0x7F, + 0xE3, 0xFC, 0x0F, 0xC0, 0x78, 0x00, 0x3B, 0xDE, 0xE7, 0x39, 0x8C, 0x46, + 0x00, 0x00, 0x60, 0x18, 0x06, 0x01, 0x80, 0x60, 0x1C, 0x07, 0x01, 0xE0, + 0x38, 0x0F, 0x01, 0xC0, 0x38, 0x0F, 0x01, 0xE0, 0x38, 0x07, 0x00, 0xE0, + 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x06, + 0x00, 0xC0, 0x08, 0x00, 0x80, 0x10, 0x00, 0x06, 0x00, 0x40, 0x04, 0x00, + 0x80, 0x18, 0x01, 0x00, 0x30, 0x06, 0x00, 0xC0, 0x1C, 0x03, 0x80, 0x70, + 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x01, 0xE0, 0x3C, 0x07, 0x00, 0xE0, 0x3C, + 0x07, 0x00, 0xE0, 0x38, 0x06, 0x01, 0xC0, 0x70, 0x18, 0x06, 0x01, 0x80, + 0x00, 0x07, 0x00, 0x38, 0x01, 0xC1, 0x8E, 0x3E, 0x23, 0xF9, 0x3F, 0xEB, + 0xE0, 0xE0, 0xFF, 0xF7, 0x93, 0xF8, 0x9F, 0x8E, 0x60, 0x70, 0x03, 0x80, + 0x08, 0x00, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, + 0x00, 0x0E, 0x00, 0x07, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, + 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x03, 0x80, + 0x01, 0xC0, 0x00, 0x1C, 0x7C, 0xF9, 0xF1, 0xE1, 0xC3, 0x0C, 0x30, 0xC2, + 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xE0, 0x7B, 0xFF, 0xFF, 0x78, 0x00, 0x1C, + 0x00, 0xE0, 0x03, 0x80, 0x1E, 0x00, 0x70, 0x01, 0xC0, 0x0E, 0x00, 0x38, + 0x01, 0xC0, 0x07, 0x00, 0x38, 0x00, 0xE0, 0x07, 0x80, 0x1C, 0x00, 0x70, + 0x03, 0x80, 0x0E, 0x00, 0x70, 0x01, 0xC0, 0x0E, 0x00, 0x38, 0x01, 0xC0, + 0x07, 0x00, 0x1C, 0x00, 0xE0, 0x00, 0x00, 0xF0, 0x07, 0x30, 0x1C, 0x30, + 0x78, 0x60, 0xE0, 0xE3, 0xC1, 0xCF, 0x83, 0x9E, 0x0F, 0x3C, 0x1E, 0xF8, + 0x3D, 0xE0, 0x7B, 0xC1, 0xFF, 0x83, 0xFF, 0x07, 0xBC, 0x0F, 0x78, 0x3E, + 0xF0, 0x7D, 0xE0, 0xF3, 0x81, 0xE7, 0x07, 0x8E, 0x0F, 0x0C, 0x3C, 0x18, + 0x70, 0x19, 0xC0, 0x1E, 0x00, 0x00, 0x06, 0x01, 0xF8, 0x1F, 0xF0, 0x03, + 0xE0, 0x07, 0x80, 0x1F, 0x00, 0x3E, 0x00, 0x7C, 0x00, 0xF0, 0x03, 0xE0, + 0x07, 0xC0, 0x0F, 0x80, 0x1E, 0x00, 0x7C, 0x00, 0xF8, 0x01, 0xE0, 0x07, + 0xC0, 0x0F, 0x80, 0x1F, 0x00, 0x3C, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xE0, + 0x0F, 0xC0, 0xFF, 0xF0, 0x00, 0xF8, 0x01, 0xFC, 0x03, 0xFE, 0x06, 0x3F, + 0x08, 0x1F, 0x18, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0E, + 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x30, 0x00, 0x70, 0x00, 0xC0, + 0x01, 0x80, 0x03, 0x00, 0x06, 0x02, 0x0C, 0x06, 0x08, 0x0C, 0x1F, 0xFC, + 0x3F, 0xFC, 0x7F, 0xF8, 0xFF, 0xF8, 0x00, 0xF0, 0x07, 0xF8, 0x1F, 0xF0, + 0x61, 0xF0, 0x81, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0E, 0x00, 0x3C, 0x00, + 0xE0, 0x07, 0xC0, 0x3F, 0xC0, 0x1F, 0x80, 0x0F, 0x80, 0x1F, 0x00, 0x1E, + 0x00, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xC0, 0x07, 0x9C, 0x0E, 0x3C, + 0x38, 0x7F, 0xE0, 0x7E, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x70, 0x00, 0x3C, + 0x00, 0x1E, 0x00, 0x0F, 0x80, 0x07, 0xE0, 0x02, 0xF8, 0x01, 0x3C, 0x00, + 0x9F, 0x00, 0x47, 0xC0, 0x31, 0xE0, 0x18, 0x78, 0x0C, 0x3E, 0x06, 0x0F, + 0x83, 0x03, 0xC1, 0x80, 0xF0, 0x7F, 0xFF, 0x1F, 0xFF, 0xCF, 0xFF, 0xF0, + 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x07, 0xC0, 0x01, + 0xFF, 0x00, 0xFF, 0x80, 0xFF, 0xC0, 0x7F, 0xE0, 0x60, 0x00, 0x30, 0x00, + 0x10, 0x00, 0x1F, 0x00, 0x0F, 0xE0, 0x0F, 0xF8, 0x07, 0xFE, 0x00, 0x3F, + 0x00, 0x07, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, 0x38, 0x00, 0x1C, 0x00, + 0x0E, 0x00, 0x06, 0x00, 0x03, 0x00, 0x03, 0x87, 0x83, 0x83, 0xE3, 0x81, + 0xFF, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x03, 0x80, 0x0F, 0x80, 0x1F, 0x00, + 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x1F, 0x00, + 0x1F, 0xF0, 0x1F, 0xFE, 0x0F, 0xCF, 0x07, 0xC3, 0xC7, 0xE1, 0xE3, 0xE0, + 0xF1, 0xF0, 0x78, 0xF8, 0x3C, 0x78, 0x3E, 0x3C, 0x1F, 0x1E, 0x0F, 0x0F, + 0x0F, 0x83, 0x87, 0x81, 0xE7, 0x80, 0x7F, 0x80, 0x0F, 0x80, 0x00, 0x3F, + 0xFF, 0x3F, 0xFE, 0x3F, 0xFE, 0x7F, 0xFC, 0x60, 0x1C, 0x80, 0x38, 0x80, + 0x30, 0x00, 0x70, 0x00, 0x60, 0x00, 0xE0, 0x01, 0xC0, 0x01, 0xC0, 0x03, + 0x80, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x1C, + 0x00, 0x38, 0x00, 0x38, 0x00, 0x70, 0x00, 0xF0, 0x00, 0xE0, 0x00, 0x00, + 0xF8, 0x00, 0xFF, 0x00, 0xE1, 0xC0, 0xE0, 0xF0, 0xF0, 0x38, 0x78, 0x1C, + 0x3C, 0x0E, 0x1F, 0x07, 0x0F, 0x87, 0x07, 0xE7, 0x01, 0xFF, 0x00, 0x7E, + 0x00, 0x1F, 0x80, 0x3F, 0xE0, 0x73, 0xF0, 0x70, 0xFC, 0x70, 0x3E, 0x70, + 0x0F, 0x38, 0x07, 0x9C, 0x03, 0xCE, 0x01, 0xE7, 0x00, 0xE1, 0xC0, 0xE0, + 0x70, 0xE0, 0x0F, 0xC0, 0x00, 0x00, 0xF8, 0x01, 0xFF, 0x01, 0xF3, 0xC1, + 0xF0, 0xE1, 0xF0, 0x70, 0xF0, 0x3C, 0xF8, 0x1E, 0x7C, 0x0F, 0x3C, 0x0F, + 0x9E, 0x07, 0xCF, 0x03, 0xE7, 0x83, 0xF3, 0xC1, 0xF0, 0xF1, 0xF8, 0x3F, + 0xF8, 0x0F, 0xFC, 0x00, 0x7C, 0x00, 0x7C, 0x00, 0x7E, 0x00, 0x3E, 0x00, + 0x3C, 0x00, 0x7C, 0x00, 0x7C, 0x00, 0xF0, 0x00, 0xC0, 0x00, 0x00, 0x07, + 0x83, 0xF0, 0xFC, 0x3F, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x78, 0x3F, 0x0F, 0xC3, 0xF0, 0x78, 0x00, 0x03, 0xC0, 0xFC, + 0x1F, 0x83, 0xF0, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0C, 0x03, 0xC0, 0x7C, 0x0F, 0x80, 0xF0, 0x0E, 0x01, 0x80, 0x30, 0x0C, + 0x03, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x7C, 0x00, + 0x7F, 0x00, 0x7F, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFE, 0x00, 0xFE, 0x00, + 0x3E, 0x00, 0x0F, 0xC0, 0x01, 0xFC, 0x00, 0x1F, 0xE0, 0x01, 0xFE, 0x00, + 0x0F, 0xE0, 0x00, 0xFF, 0x00, 0x0F, 0xC0, 0x00, 0xF0, 0x00, 0x04, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, + 0x38, 0x00, 0x0F, 0x80, 0x03, 0xF8, 0x00, 0x3F, 0x80, 0x03, 0xFC, 0x00, + 0x3F, 0xC0, 0x01, 0xFC, 0x00, 0x1F, 0xC0, 0x01, 0xF0, 0x00, 0xFC, 0x00, + 0xFE, 0x01, 0xFE, 0x01, 0xFE, 0x01, 0xFC, 0x03, 0xFC, 0x00, 0xFC, 0x00, + 0x3C, 0x00, 0x08, 0x00, 0x00, 0x07, 0xC0, 0xFF, 0x0E, 0x3C, 0x70, 0xF3, + 0xC7, 0x8C, 0x3C, 0x01, 0xE0, 0x1F, 0x00, 0xF0, 0x07, 0x80, 0x78, 0x07, + 0x80, 0x30, 0x03, 0x00, 0x10, 0x01, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x80, 0x7E, 0x03, 0xF0, 0x1F, 0x80, 0x78, 0x00, 0x00, 0x3F, + 0x80, 0x00, 0xFF, 0xF8, 0x01, 0xF0, 0x1E, 0x01, 0xE0, 0x03, 0x81, 0xC0, + 0x00, 0xE1, 0xC0, 0x18, 0x38, 0xE0, 0x3F, 0xCC, 0xE0, 0x3C, 0xE7, 0x70, + 0x3C, 0x71, 0xF0, 0x1C, 0x30, 0xF8, 0x1E, 0x38, 0x7C, 0x0E, 0x1C, 0x3E, + 0x0F, 0x0E, 0x1F, 0x07, 0x0E, 0x0F, 0x83, 0x87, 0x0D, 0xC1, 0xC7, 0x86, + 0x70, 0xE5, 0xC6, 0x38, 0x7C, 0xFE, 0x1C, 0x1C, 0x3E, 0x07, 0x00, 0x00, + 0x01, 0xC0, 0x00, 0x00, 0x78, 0x00, 0x40, 0x1F, 0x00, 0xE0, 0x03, 0xFF, + 0xE0, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x03, 0x00, 0x00, + 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x03, + 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x17, 0xC0, 0x00, 0x67, 0x80, 0x00, 0x8F, + 0x00, 0x03, 0x1F, 0x00, 0x0C, 0x3E, 0x00, 0x10, 0x7C, 0x00, 0x60, 0xF8, + 0x00, 0x81, 0xF0, 0x03, 0xFF, 0xE0, 0x0F, 0xFF, 0xE0, 0x18, 0x07, 0xC0, + 0x60, 0x0F, 0x81, 0xC0, 0x1F, 0x03, 0x00, 0x3E, 0x0E, 0x00, 0x7C, 0x3C, + 0x00, 0xFC, 0xFE, 0x0F, 0xFE, 0x07, 0xFF, 0xE0, 0x01, 0xFF, 0xFC, 0x01, + 0xF8, 0x7E, 0x01, 0xF8, 0x3F, 0x01, 0xF0, 0x3F, 0x01, 0xF0, 0x3F, 0x01, + 0xF0, 0x3F, 0x03, 0xE0, 0x3F, 0x03, 0xE0, 0x7E, 0x03, 0xE0, 0xFC, 0x03, + 0xE3, 0xF0, 0x07, 0xFF, 0x80, 0x07, 0xC3, 0xE0, 0x07, 0xC1, 0xF8, 0x0F, + 0xC0, 0xF8, 0x0F, 0x80, 0xFC, 0x0F, 0x80, 0xFC, 0x0F, 0x80, 0xFC, 0x1F, + 0x80, 0xFC, 0x1F, 0x01, 0xFC, 0x1F, 0x01, 0xF8, 0x1F, 0x03, 0xF0, 0x3F, + 0x0F, 0xE0, 0x7F, 0xFF, 0xC0, 0xFF, 0xFE, 0x00, 0x00, 0x1F, 0x82, 0x01, + 0xFF, 0xE8, 0x07, 0xE0, 0xF0, 0x3F, 0x80, 0xE0, 0xFE, 0x00, 0xC1, 0xF8, + 0x01, 0x87, 0xE0, 0x02, 0x1F, 0x80, 0x04, 0x3F, 0x00, 0x00, 0xFC, 0x00, + 0x01, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0x80, 0x00, + 0x3F, 0x00, 0x00, 0x7E, 0x00, 0x00, 0xFC, 0x00, 0x01, 0xF8, 0x00, 0x03, + 0xF0, 0x00, 0x03, 0xE0, 0x01, 0x07, 0xE0, 0x06, 0x07, 0xE0, 0x18, 0x07, + 0xE0, 0xE0, 0x07, 0xFF, 0x00, 0x01, 0xF8, 0x00, 0x07, 0xFF, 0xE0, 0x01, + 0xFF, 0xFE, 0x00, 0x1F, 0x87, 0xE0, 0x07, 0xE0, 0x7C, 0x01, 0xF0, 0x1F, + 0x80, 0x7C, 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x0F, 0x80, 0x3F, 0x03, 0xE0, + 0x0F, 0xC0, 0xF8, 0x03, 0xF0, 0x3E, 0x00, 0xFC, 0x1F, 0x00, 0x3F, 0x07, + 0xC0, 0x0F, 0xC1, 0xF0, 0x07, 0xF0, 0xFC, 0x01, 0xF8, 0x3E, 0x00, 0x7E, + 0x0F, 0x80, 0x3F, 0x83, 0xE0, 0x0F, 0xC1, 0xF8, 0x07, 0xF0, 0x7C, 0x01, + 0xF8, 0x1F, 0x00, 0xFC, 0x07, 0xC0, 0x7E, 0x03, 0xF0, 0x7E, 0x01, 0xFF, + 0xFF, 0x00, 0xFF, 0xFE, 0x00, 0x00, 0x07, 0xFF, 0xFE, 0x03, 0xFF, 0xFC, + 0x07, 0xE0, 0x78, 0x0F, 0xC0, 0x60, 0x1F, 0x00, 0x40, 0x3E, 0x00, 0x80, + 0x7C, 0x01, 0x01, 0xF8, 0x10, 0x03, 0xE0, 0x60, 0x07, 0xC3, 0x80, 0x0F, + 0xFF, 0x00, 0x3F, 0xFE, 0x00, 0x7C, 0x38, 0x00, 0xF8, 0x30, 0x03, 0xF0, + 0x60, 0x07, 0xC0, 0x80, 0x0F, 0x81, 0x00, 0x1F, 0x00, 0x10, 0x7E, 0x00, + 0x60, 0xF8, 0x01, 0xC1, 0xF0, 0x07, 0x03, 0xE0, 0x1E, 0x0F, 0xC0, 0xFC, + 0x3F, 0xFF, 0xF8, 0xFF, 0xFF, 0xE0, 0x07, 0xFF, 0xFE, 0x03, 0xFF, 0xFC, + 0x07, 0xE0, 0x78, 0x0F, 0xC0, 0x60, 0x1F, 0x00, 0x40, 0x3E, 0x00, 0x80, + 0x7C, 0x01, 0x01, 0xF8, 0x20, 0x03, 0xE0, 0xC0, 0x07, 0xC3, 0x80, 0x0F, + 0xFE, 0x00, 0x3F, 0xFC, 0x00, 0x7C, 0x38, 0x00, 0xF8, 0x30, 0x03, 0xF0, + 0x60, 0x07, 0xC0, 0x80, 0x0F, 0x81, 0x00, 0x1F, 0x00, 0x00, 0x7E, 0x00, + 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0xC0, 0x00, + 0x3F, 0x80, 0x00, 0xFF, 0xC0, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0xFF, 0xF6, + 0x01, 0xF8, 0x3C, 0x03, 0xE0, 0x1C, 0x0F, 0xC0, 0x0C, 0x0F, 0xC0, 0x08, + 0x1F, 0x80, 0x08, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x7E, 0x00, 0x00, + 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFC, 0x03, 0xFF, + 0xFC, 0x00, 0xFC, 0xFC, 0x00, 0xF8, 0xFC, 0x00, 0xF8, 0xFC, 0x00, 0xF8, + 0xFC, 0x00, 0xF0, 0x7C, 0x01, 0xF0, 0x7E, 0x01, 0xF0, 0x3E, 0x01, 0xF0, + 0x1F, 0x83, 0xE0, 0x0F, 0xFF, 0x80, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x3F, + 0xF8, 0x0F, 0xE0, 0x7F, 0x00, 0x7E, 0x01, 0xF8, 0x03, 0xF0, 0x0F, 0x80, + 0x1F, 0x00, 0x7C, 0x00, 0xF8, 0x07, 0xE0, 0x07, 0xC0, 0x3E, 0x00, 0x7E, + 0x01, 0xF0, 0x03, 0xE0, 0x0F, 0x80, 0x1F, 0x00, 0xF8, 0x00, 0xF8, 0x07, + 0xC0, 0x0F, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xF0, 0x03, 0xE0, 0x1F, 0x00, + 0x3F, 0x00, 0xF8, 0x01, 0xF0, 0x07, 0xC0, 0x0F, 0x80, 0x7E, 0x00, 0x7C, + 0x03, 0xE0, 0x07, 0xE0, 0x1F, 0x00, 0x3E, 0x00, 0xF8, 0x01, 0xF0, 0x0F, + 0xC0, 0x0F, 0x80, 0x7C, 0x00, 0xFC, 0x03, 0xE0, 0x0F, 0xE0, 0x3F, 0x80, + 0xFF, 0xC7, 0xFF, 0x00, 0x07, 0xFE, 0x03, 0xF8, 0x07, 0xE0, 0x0F, 0xC0, + 0x1F, 0x00, 0x3E, 0x00, 0x7C, 0x01, 0xF0, 0x03, 0xE0, 0x07, 0xC0, 0x0F, + 0x80, 0x3E, 0x00, 0x7C, 0x00, 0xF8, 0x03, 0xF0, 0x07, 0xC0, 0x0F, 0x80, + 0x1F, 0x00, 0x7C, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xE0, 0x0F, 0xC0, 0x3F, + 0x80, 0xFF, 0xC0, 0x00, 0x3F, 0xF0, 0x01, 0xFE, 0x00, 0x0F, 0xC0, 0x00, + 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x1F, 0x80, 0x01, 0xF0, 0x00, + 0x1F, 0x00, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, + 0x07, 0xE0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x0F, 0xC0, + 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x61, 0xF0, + 0x0F, 0x3F, 0x00, 0xE7, 0xE0, 0x07, 0xFC, 0x00, 0x3F, 0x00, 0x00, 0x07, + 0xFF, 0x3F, 0x80, 0xFE, 0x07, 0x80, 0x7E, 0x03, 0x00, 0x3F, 0x03, 0x00, + 0x1F, 0x03, 0x00, 0x0F, 0x83, 0x00, 0x07, 0xC3, 0x00, 0x07, 0xE3, 0x00, + 0x03, 0xE3, 0x00, 0x01, 0xF3, 0x00, 0x00, 0xFB, 0x80, 0x00, 0xFB, 0xC0, + 0x00, 0x7F, 0xE0, 0x00, 0x3E, 0xF8, 0x00, 0x3F, 0x7C, 0x00, 0x1F, 0x1F, + 0x00, 0x0F, 0x8F, 0x80, 0x07, 0xC7, 0xE0, 0x07, 0xE1, 0xF0, 0x03, 0xE0, + 0xFC, 0x01, 0xF0, 0x3E, 0x00, 0xF8, 0x1F, 0x00, 0xFC, 0x07, 0xC0, 0xFE, + 0x07, 0xF0, 0xFF, 0xCF, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x07, 0xF0, 0x00, + 0x1F, 0x80, 0x00, 0x7E, 0x00, 0x01, 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x1F, + 0x00, 0x00, 0xF8, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x3E, 0x00, + 0x01, 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x1F, 0x00, 0x00, 0xFC, 0x00, 0x03, + 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x3E, 0x00, 0x11, 0xF0, 0x00, 0xC7, 0xC0, + 0x06, 0x1F, 0x00, 0x38, 0x7C, 0x01, 0xE3, 0xF0, 0x3F, 0x9F, 0xFF, 0xFC, + 0xFF, 0xFF, 0xF0, 0x07, 0xF8, 0x00, 0x7F, 0x80, 0xFC, 0x00, 0x3F, 0x80, + 0x3E, 0x00, 0x3F, 0x80, 0x1F, 0x00, 0x3F, 0x80, 0x1F, 0x80, 0x1F, 0xC0, + 0x0F, 0xE0, 0x1B, 0xE0, 0x07, 0xF0, 0x0D, 0xF0, 0x02, 0xF8, 0x0D, 0xF0, + 0x03, 0x7C, 0x0C, 0xF8, 0x01, 0xBE, 0x06, 0x7C, 0x00, 0xDF, 0x06, 0x7C, + 0x00, 0xCF, 0x83, 0x3E, 0x00, 0x67, 0xC3, 0x1F, 0x00, 0x31, 0xE3, 0x0F, + 0x80, 0x38, 0xF9, 0x8F, 0x80, 0x18, 0x7D, 0x87, 0xC0, 0x0C, 0x3F, 0x83, + 0xE0, 0x06, 0x1F, 0xC1, 0xF0, 0x06, 0x0F, 0xC1, 0xF0, 0x03, 0x07, 0xC0, + 0xF8, 0x01, 0x83, 0xE0, 0x7C, 0x01, 0xC0, 0xE0, 0x7E, 0x00, 0xE0, 0x70, + 0x3F, 0x00, 0xF8, 0x30, 0x3F, 0x80, 0xFF, 0x10, 0x7F, 0xF0, 0x00, 0x07, + 0xF0, 0x0F, 0xE0, 0x3E, 0x00, 0x78, 0x07, 0xE0, 0x06, 0x00, 0x7C, 0x00, + 0xC0, 0x1F, 0xC0, 0x10, 0x03, 0xF8, 0x06, 0x00, 0x6F, 0x80, 0xC0, 0x19, + 0xF0, 0x10, 0x03, 0x3F, 0x02, 0x00, 0x63, 0xE0, 0xC0, 0x0C, 0x7C, 0x18, + 0x03, 0x07, 0xC2, 0x00, 0x60, 0xF8, 0x40, 0x0C, 0x0F, 0x98, 0x03, 0x81, + 0xF3, 0x00, 0x60, 0x3F, 0x40, 0x0C, 0x03, 0xF8, 0x01, 0x80, 0x7F, 0x00, + 0x60, 0x07, 0xC0, 0x0C, 0x00, 0xF8, 0x01, 0x80, 0x0F, 0x00, 0x70, 0x01, + 0xE0, 0x0E, 0x00, 0x18, 0x03, 0xE0, 0x03, 0x00, 0x02, 0x00, 0x60, 0x00, + 0x00, 0x1F, 0xC0, 0x00, 0xFF, 0xC0, 0x07, 0xC3, 0xE0, 0x1F, 0x03, 0xC0, + 0x7C, 0x03, 0xC1, 0xF0, 0x07, 0x87, 0xE0, 0x0F, 0x8F, 0x80, 0x1F, 0x3F, + 0x00, 0x3E, 0x7C, 0x00, 0x7D, 0xF8, 0x01, 0xFB, 0xE0, 0x03, 0xF7, 0xC0, + 0x07, 0xDF, 0x80, 0x1F, 0xBF, 0x00, 0x3F, 0x7C, 0x00, 0x7C, 0xF8, 0x01, + 0xF9, 0xF0, 0x03, 0xE3, 0xE0, 0x0F, 0xC7, 0xC0, 0x1F, 0x07, 0x80, 0x7C, + 0x0F, 0x81, 0xF0, 0x0F, 0x87, 0xC0, 0x0F, 0xFE, 0x00, 0x07, 0xF0, 0x00, + 0x07, 0xFF, 0xE0, 0x03, 0xFF, 0xF0, 0x07, 0xE3, 0xF0, 0x0F, 0x83, 0xE0, + 0x1F, 0x07, 0xE0, 0x3E, 0x0F, 0xC0, 0x7C, 0x1F, 0x81, 0xF0, 0x3F, 0x03, + 0xE0, 0xFE, 0x07, 0xC1, 0xF8, 0x0F, 0x87, 0xF0, 0x3E, 0x1F, 0xC0, 0x7F, + 0xFE, 0x00, 0xFF, 0xF0, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, + 0x00, 0x1F, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, + 0x03, 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x80, 0x00, 0xFF, 0xC0, 0x00, + 0x00, 0x1F, 0xC0, 0x00, 0xFF, 0xC0, 0x07, 0xC3, 0xE0, 0x1F, 0x03, 0xC0, + 0x7C, 0x03, 0xC1, 0xF0, 0x07, 0x87, 0xE0, 0x0F, 0x8F, 0x80, 0x1F, 0x3F, + 0x00, 0x3E, 0x7C, 0x00, 0x7D, 0xF8, 0x01, 0xFB, 0xF0, 0x03, 0xF7, 0xC0, + 0x07, 0xDF, 0x80, 0x0F, 0xBF, 0x00, 0x3F, 0x7C, 0x00, 0x7C, 0xF8, 0x01, + 0xF9, 0xF0, 0x03, 0xE3, 0xE0, 0x07, 0xC7, 0xC0, 0x1F, 0x07, 0x80, 0x7C, + 0x0F, 0x01, 0xF0, 0x0F, 0x07, 0x80, 0x07, 0xFE, 0x00, 0x03, 0x80, 0x00, + 0x0C, 0x00, 0x00, 0x3C, 0x00, 0x20, 0xFF, 0xC1, 0x87, 0xFF, 0xFE, 0x1E, + 0xFF, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0x07, 0xFF, 0xE0, 0x01, 0xFF, 0xFC, + 0x01, 0xF8, 0x7E, 0x01, 0xF8, 0x3F, 0x01, 0xF8, 0x3F, 0x01, 0xF0, 0x3F, + 0x01, 0xF0, 0x3F, 0x03, 0xF0, 0x3F, 0x03, 0xE0, 0x7E, 0x03, 0xE0, 0xFE, + 0x03, 0xE1, 0xF8, 0x07, 0xFF, 0xF0, 0x07, 0xFF, 0x80, 0x07, 0xDF, 0xC0, + 0x0F, 0xCF, 0xC0, 0x0F, 0xCF, 0xC0, 0x0F, 0x8F, 0xE0, 0x0F, 0x87, 0xE0, + 0x1F, 0x87, 0xE0, 0x1F, 0x03, 0xF0, 0x1F, 0x03, 0xF0, 0x1F, 0x03, 0xF0, + 0x3F, 0x01, 0xF8, 0x7F, 0x01, 0xF8, 0xFF, 0xE1, 0xFE, 0x00, 0xF8, 0x40, + 0xFF, 0xB0, 0x38, 0x3C, 0x1C, 0x07, 0x0F, 0x01, 0xC3, 0xC0, 0x20, 0xF0, + 0x08, 0x3E, 0x02, 0x0F, 0xC0, 0x03, 0xF8, 0x00, 0x7F, 0x00, 0x0F, 0xE0, + 0x01, 0xFC, 0x00, 0x3F, 0x80, 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x00, + 0x03, 0xC4, 0x00, 0xF1, 0x00, 0x3C, 0x60, 0x0F, 0x38, 0x07, 0x8F, 0x83, + 0xC2, 0x3F, 0xE0, 0x83, 0xF0, 0x00, 0x3F, 0xFF, 0xF9, 0xFF, 0xFF, 0xCF, + 0x1F, 0x1E, 0x70, 0xF8, 0x77, 0x0F, 0x83, 0x30, 0x7C, 0x09, 0x03, 0xE0, + 0x40, 0x3F, 0x02, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x07, + 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, + 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x03, 0xF0, 0x00, 0x1F, 0x00, 0x00, 0xF8, + 0x00, 0x07, 0xC0, 0x00, 0x7E, 0x00, 0x07, 0xF0, 0x00, 0xFF, 0xF0, 0x00, + 0x7F, 0xF0, 0xFF, 0x1F, 0xC0, 0x3E, 0x1F, 0x80, 0x1C, 0x1F, 0x80, 0x18, + 0x1F, 0x00, 0x18, 0x1F, 0x00, 0x18, 0x1F, 0x00, 0x30, 0x3F, 0x00, 0x30, + 0x3E, 0x00, 0x30, 0x3E, 0x00, 0x30, 0x7E, 0x00, 0x60, 0x7C, 0x00, 0x60, + 0x7C, 0x00, 0x60, 0x7C, 0x00, 0xC0, 0x7C, 0x00, 0xC0, 0xF8, 0x00, 0xC0, + 0xF8, 0x00, 0xC0, 0xF8, 0x01, 0x80, 0xF8, 0x01, 0x80, 0xF8, 0x03, 0x80, + 0xF8, 0x03, 0x00, 0x7C, 0x06, 0x00, 0x7E, 0x1E, 0x00, 0x3F, 0xF8, 0x00, + 0x0F, 0xE0, 0x00, 0xFF, 0xE0, 0x7F, 0x3F, 0x80, 0x1C, 0x1F, 0x80, 0x18, + 0x1F, 0x80, 0x18, 0x1F, 0x80, 0x30, 0x1F, 0x80, 0x30, 0x0F, 0x80, 0x60, + 0x0F, 0x80, 0x40, 0x0F, 0x80, 0xC0, 0x0F, 0x81, 0x80, 0x0F, 0x81, 0x00, + 0x0F, 0xC3, 0x00, 0x0F, 0xC6, 0x00, 0x07, 0xC6, 0x00, 0x07, 0xCC, 0x00, + 0x07, 0xC8, 0x00, 0x07, 0xD8, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF0, 0x00, + 0x07, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0x80, 0x00, + 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0xFF, 0xCF, 0xF8, 0x7E, 0x7F, 0x07, + 0xE0, 0x38, 0x7C, 0x07, 0x80, 0x60, 0xF8, 0x0F, 0x00, 0x81, 0xF0, 0x1E, + 0x03, 0x03, 0xE0, 0x3E, 0x04, 0x07, 0xE0, 0xFC, 0x18, 0x07, 0xC1, 0xF8, + 0x20, 0x0F, 0x87, 0xF0, 0xC0, 0x1F, 0x0B, 0xE1, 0x00, 0x3E, 0x37, 0xC6, + 0x00, 0x7C, 0x47, 0x88, 0x00, 0xF9, 0x8F, 0x30, 0x01, 0xF2, 0x1F, 0x40, + 0x03, 0xEC, 0x3E, 0x80, 0x03, 0xF0, 0x7F, 0x00, 0x07, 0xE0, 0xFC, 0x00, + 0x0F, 0x81, 0xF8, 0x00, 0x1F, 0x03, 0xE0, 0x00, 0x3C, 0x07, 0xC0, 0x00, + 0x78, 0x07, 0x00, 0x00, 0xF0, 0x0E, 0x00, 0x00, 0xC0, 0x18, 0x00, 0x01, + 0x80, 0x30, 0x00, 0x02, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x3F, 0x81, 0xFC, + 0x07, 0x80, 0x7C, 0x03, 0x00, 0x3F, 0x03, 0x00, 0x0F, 0x83, 0x80, 0x07, + 0xC1, 0x80, 0x03, 0xE1, 0x80, 0x00, 0xF9, 0x80, 0x00, 0x7D, 0x80, 0x00, + 0x3F, 0x80, 0x00, 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, 0xE0, 0x00, + 0x01, 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xBE, 0x00, 0x00, 0xCF, 0x00, + 0x00, 0xC7, 0xC0, 0x00, 0xC3, 0xE0, 0x00, 0xC1, 0xF0, 0x00, 0xC0, 0x7C, + 0x00, 0xE0, 0x3E, 0x00, 0xE0, 0x1F, 0x00, 0xF8, 0x1F, 0xE0, 0xFF, 0x1F, + 0xF8, 0x00, 0xFF, 0xC3, 0xF9, 0xF8, 0x07, 0x87, 0xC0, 0x38, 0x3E, 0x01, + 0x81, 0xF0, 0x18, 0x07, 0xC0, 0x80, 0x3E, 0x0C, 0x01, 0xF0, 0xC0, 0x07, + 0xC4, 0x00, 0x3E, 0x60, 0x01, 0xF6, 0x00, 0x07, 0xA0, 0x00, 0x3F, 0x00, + 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xC0, 0x00, 0x3E, + 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x00, + 0x7E, 0x00, 0x07, 0xF0, 0x00, 0xFF, 0xF0, 0x00, 0x07, 0xFF, 0xF8, 0x3F, + 0xFF, 0xC3, 0xE0, 0x7E, 0x1C, 0x07, 0xE0, 0xC0, 0x3E, 0x0C, 0x03, 0xF0, + 0x40, 0x3F, 0x00, 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x01, 0xF8, 0x00, 0x1F, + 0x80, 0x00, 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x0F, 0xC0, 0x00, + 0x7E, 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0x83, 0xE0, 0x0C, 0x3F, 0x00, + 0xC3, 0xF0, 0x0E, 0x1F, 0x00, 0xF1, 0xF8, 0x1F, 0x9F, 0xFF, 0xF8, 0xFF, + 0xFF, 0xC0, 0x01, 0xFC, 0x0F, 0xE0, 0x3C, 0x00, 0xE0, 0x03, 0x80, 0x1E, + 0x00, 0x78, 0x01, 0xC0, 0x07, 0x00, 0x3C, 0x00, 0xF0, 0x03, 0x80, 0x0E, + 0x00, 0x38, 0x01, 0xE0, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x03, 0xC0, 0x0F, + 0x00, 0x38, 0x00, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x70, 0x01, 0xC0, 0x0F, + 0x00, 0x3C, 0x00, 0xFF, 0x03, 0xF8, 0x00, 0xE0, 0x38, 0x07, 0x01, 0xC0, + 0x70, 0x0C, 0x03, 0x80, 0xE0, 0x38, 0x07, 0x01, 0xC0, 0x70, 0x0C, 0x03, + 0x80, 0xE0, 0x38, 0x07, 0x01, 0xC0, 0x70, 0x0C, 0x03, 0x80, 0xE0, 0x38, + 0x07, 0x01, 0xC0, 0x03, 0xFC, 0x0F, 0xF0, 0x03, 0x80, 0x0E, 0x00, 0x38, + 0x01, 0xE0, 0x07, 0x80, 0x1C, 0x00, 0x70, 0x03, 0xC0, 0x0F, 0x00, 0x38, + 0x00, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x70, 0x01, 0xC0, 0x0F, 0x00, 0x3C, + 0x00, 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x78, 0x01, 0xE0, 0x07, 0x00, 0x1C, + 0x00, 0xF0, 0x03, 0xC0, 0xFE, 0x03, 0xF8, 0x00, 0x03, 0xC0, 0x03, 0xC0, + 0x07, 0xE0, 0x07, 0xE0, 0x0E, 0x70, 0x0E, 0x70, 0x1C, 0x78, 0x1C, 0x38, + 0x3C, 0x3C, 0x38, 0x1C, 0x78, 0x1E, 0x70, 0x0E, 0xF0, 0x0E, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xE1, 0xE3, 0xC1, 0xC1, 0xC0, 0xC0, 0x00, + 0xF7, 0x80, 0xFD, 0xE0, 0x7C, 0xF0, 0x3C, 0x3C, 0x1E, 0x0F, 0x0F, 0x83, + 0x83, 0xC1, 0xE1, 0xE0, 0x78, 0x78, 0x1C, 0x3E, 0x0F, 0x0F, 0x03, 0xC3, + 0xC1, 0xF0, 0xF0, 0xFC, 0xFE, 0x6F, 0x6F, 0xF3, 0xF1, 0xF8, 0xF8, 0x3C, + 0x1C, 0x00, 0x01, 0xE0, 0x1F, 0xC0, 0x07, 0xC0, 0x07, 0xC0, 0x07, 0x80, + 0x07, 0x80, 0x0F, 0x80, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x3C, 0x1E, 0xFE, + 0x1F, 0x9F, 0x1F, 0x0F, 0x1E, 0x0F, 0x3E, 0x0F, 0x3C, 0x0F, 0x3C, 0x1F, + 0x78, 0x1E, 0x78, 0x1E, 0x78, 0x3C, 0x78, 0x3C, 0xF0, 0x78, 0xF0, 0xF0, + 0xF1, 0xE0, 0x7F, 0xC0, 0x3F, 0x00, 0x01, 0xF0, 0x3F, 0xC3, 0xCE, 0x3C, + 0xF3, 0xC7, 0x1E, 0x01, 0xE0, 0x0F, 0x00, 0xF8, 0x07, 0x80, 0x3C, 0x01, + 0xE0, 0x0F, 0x03, 0x78, 0x31, 0xE3, 0x0F, 0xF0, 0x1E, 0x00, 0x00, 0x1F, + 0xC0, 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x78, 0x00, 0x0F, + 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x01, 0xEF, 0x00, 0x7F, 0xE0, 0x3E, 0x7C, + 0x07, 0x8F, 0x01, 0xE1, 0xE0, 0x78, 0x3C, 0x0F, 0x0F, 0x83, 0xC1, 0xE0, + 0x78, 0x3C, 0x1E, 0x0F, 0x83, 0xC1, 0xF0, 0x78, 0x7C, 0x0F, 0x0F, 0x91, + 0xE3, 0xF6, 0x3F, 0xDF, 0x83, 0xF3, 0xE0, 0x3C, 0x38, 0x00, 0x01, 0xE0, + 0x3F, 0x83, 0xCE, 0x3C, 0x73, 0xC3, 0x9E, 0x1D, 0xE1, 0xCF, 0x1C, 0xFB, + 0xC7, 0xF8, 0x3C, 0x01, 0xE0, 0x0F, 0x02, 0x78, 0x31, 0xE3, 0x0F, 0xF0, + 0x1E, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x1D, 0xC0, 0x01, 0xCE, 0x00, 0x1C, + 0x70, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x07, 0x80, 0x00, + 0x3C, 0x00, 0x0F, 0xFC, 0x00, 0x7F, 0xE0, 0x00, 0xF0, 0x00, 0x07, 0x80, + 0x00, 0x3C, 0x00, 0x03, 0xE0, 0x00, 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x07, + 0x80, 0x00, 0x7C, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xF0, 0x00, + 0x07, 0x80, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, + 0x00, 0x0F, 0x00, 0x0E, 0x70, 0x00, 0x77, 0x80, 0x03, 0xF8, 0x00, 0x0F, + 0x80, 0x00, 0x00, 0xFE, 0x00, 0x7F, 0xFC, 0x1F, 0x1F, 0x87, 0xC3, 0xC1, + 0xF0, 0x78, 0x3C, 0x1F, 0x07, 0x83, 0xE0, 0xF0, 0xF8, 0x0E, 0x3E, 0x01, + 0xFF, 0x80, 0x3F, 0xC0, 0x0C, 0x00, 0x03, 0xC0, 0x00, 0x7F, 0x80, 0x0F, + 0xFE, 0x00, 0x7F, 0xF0, 0x70, 0xFF, 0x1C, 0x03, 0xE3, 0x80, 0x3C, 0x70, + 0x07, 0x0F, 0x03, 0xE0, 0xFF, 0xF0, 0x07, 0xF0, 0x00, 0x1F, 0xC0, 0x03, + 0xE0, 0x00, 0xF0, 0x00, 0xF8, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1E, 0x00, + 0x1F, 0x00, 0x0F, 0x0E, 0x07, 0x9F, 0x83, 0xDF, 0xC3, 0xE9, 0xE1, 0xE8, + 0xF0, 0xF8, 0xF8, 0x7C, 0x78, 0x7C, 0x3C, 0x3E, 0x3E, 0x1E, 0x1E, 0x1F, + 0x0F, 0x0F, 0x0F, 0x87, 0x87, 0xCB, 0xC3, 0xCB, 0xE1, 0xE9, 0xE0, 0xFC, + 0xF0, 0x38, 0x00, 0x03, 0x03, 0xC1, 0xE0, 0xF0, 0x30, 0x00, 0x00, 0x00, + 0x07, 0x3F, 0x87, 0x83, 0xC1, 0xE0, 0xF0, 0xF0, 0x78, 0x3C, 0x1E, 0x1E, + 0x0F, 0x27, 0x17, 0x93, 0xF1, 0xF8, 0x70, 0x00, 0x00, 0x06, 0x00, 0x0F, + 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x00, 0xFE, 0x00, 0x3E, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x3C, + 0x00, 0x7C, 0x00, 0x78, 0x00, 0x78, 0x00, 0x78, 0x00, 0xF8, 0x00, 0xF0, + 0x00, 0xF0, 0x00, 0xF0, 0x01, 0xF0, 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xE0, + 0x03, 0xC0, 0xE3, 0xC0, 0xE7, 0x80, 0xFF, 0x00, 0x7C, 0x00, 0x1F, 0xC0, + 0x03, 0xE0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1E, + 0x00, 0x1F, 0x00, 0x0F, 0x3F, 0x87, 0x87, 0x83, 0xC3, 0x03, 0xE3, 0x01, + 0xE3, 0x00, 0xF3, 0x00, 0x7B, 0x80, 0x7B, 0xC0, 0x3F, 0xE0, 0x1E, 0xF0, + 0x1F, 0x78, 0x0F, 0x1E, 0x07, 0x8F, 0x13, 0xC7, 0x93, 0xE1, 0xF9, 0xE0, + 0xF8, 0xF0, 0x38, 0x00, 0x1F, 0xC0, 0xF8, 0x1F, 0x03, 0xC0, 0x78, 0x1F, + 0x03, 0xE0, 0x78, 0x0F, 0x01, 0xE0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x0F, + 0x01, 0xE0, 0x3C, 0x0F, 0x81, 0xE0, 0x3C, 0x8F, 0x31, 0xEC, 0x3F, 0x07, + 0xC0, 0x70, 0x00, 0x01, 0x87, 0x07, 0x0F, 0xE7, 0xE7, 0xE0, 0xF3, 0xF9, + 0xF8, 0x3D, 0x9E, 0x9E, 0x0F, 0x47, 0xC7, 0x83, 0xE1, 0xD1, 0xE1, 0xF8, + 0xF8, 0xF0, 0x7C, 0x3C, 0x3C, 0x1F, 0x0F, 0x1F, 0x0F, 0x87, 0xC7, 0x83, + 0xE1, 0xE1, 0xE0, 0xF0, 0x78, 0x78, 0x3C, 0x1E, 0x3C, 0x1F, 0x0F, 0x0F, + 0x27, 0x83, 0xC3, 0xD1, 0xE0, 0xF0, 0xFC, 0xF8, 0x78, 0x1C, 0x00, 0x01, + 0x8F, 0x0F, 0xE7, 0xE0, 0xF3, 0xF8, 0x3C, 0x9E, 0x0F, 0x47, 0x87, 0xA3, + 0xC1, 0xE8, 0xF0, 0x7C, 0x3C, 0x1E, 0x1E, 0x0F, 0x87, 0x83, 0xE1, 0xE0, + 0xF0, 0xF8, 0x3C, 0x3C, 0x1F, 0x0F, 0x27, 0x83, 0xD1, 0xE0, 0xFC, 0x78, + 0x1C, 0x00, 0x01, 0xF0, 0x0E, 0x30, 0x38, 0x70, 0xF0, 0xF3, 0xC1, 0xE7, + 0x83, 0xDE, 0x07, 0xBC, 0x1F, 0xF8, 0x3F, 0xE0, 0x7B, 0xC0, 0xF7, 0x83, + 0xCF, 0x07, 0x9E, 0x1E, 0x1C, 0x38, 0x1C, 0xE0, 0x1F, 0x00, 0x00, 0xE3, + 0x80, 0xFD, 0xF8, 0x0F, 0xFF, 0x81, 0xE8, 0xF0, 0x3E, 0x1E, 0x07, 0x83, + 0xC0, 0xF0, 0x78, 0x3E, 0x1F, 0x07, 0x83, 0xC0, 0xF0, 0x78, 0x1E, 0x1F, + 0x07, 0x83, 0xC0, 0xF0, 0xF8, 0x1E, 0x1E, 0x03, 0xC7, 0x80, 0xFF, 0xE0, + 0x1E, 0xF0, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0xC0, 0x00, + 0xF8, 0x00, 0x3F, 0xC0, 0x00, 0x01, 0xEF, 0x07, 0xFF, 0x0F, 0x1E, 0x1E, + 0x1E, 0x1E, 0x1E, 0x3C, 0x1E, 0x7C, 0x3C, 0x78, 0x3C, 0x78, 0x3C, 0xF0, + 0x7C, 0xF0, 0x78, 0xF0, 0xF8, 0xF0, 0xF8, 0xF1, 0xF0, 0xFE, 0xF0, 0x7E, + 0xF0, 0x39, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x03, 0xC0, 0x03, + 0xC0, 0x1F, 0xF8, 0x03, 0x9C, 0x7F, 0x7C, 0x3D, 0xF8, 0x7A, 0xE0, 0xF8, + 0x03, 0xE0, 0x07, 0xC0, 0x0F, 0x00, 0x3E, 0x00, 0x7C, 0x00, 0xF0, 0x01, + 0xE0, 0x07, 0xC0, 0x0F, 0x00, 0x1E, 0x00, 0x7C, 0x00, 0x07, 0x18, 0xFF, + 0xC7, 0x1C, 0x70, 0x63, 0x81, 0x1E, 0x08, 0xF8, 0x07, 0xE0, 0x1F, 0x00, + 0x7C, 0x01, 0xF0, 0x07, 0x84, 0x3C, 0x20, 0xE1, 0x87, 0x1C, 0x70, 0x9E, + 0x00, 0x00, 0x80, 0x60, 0x30, 0x1C, 0x1F, 0x1F, 0xF7, 0xFC, 0x78, 0x1E, + 0x07, 0x83, 0xC0, 0xF0, 0x3C, 0x1F, 0x07, 0x81, 0xE0, 0x79, 0x3C, 0x4F, + 0x23, 0xF0, 0xFC, 0x1C, 0x00, 0x0F, 0x0F, 0x3F, 0x87, 0x8F, 0x83, 0xC7, + 0xC1, 0xE3, 0xE1, 0xE1, 0xE0, 0xF0, 0xF0, 0x78, 0xF8, 0x78, 0x78, 0x3C, + 0x3C, 0x3E, 0x1E, 0x1F, 0x1E, 0x1F, 0x0F, 0x17, 0x97, 0x9B, 0xCB, 0xF9, + 0xF9, 0xF8, 0xF8, 0x78, 0x38, 0x00, 0x18, 0x37, 0xC3, 0xDE, 0x1E, 0x78, + 0x73, 0xC1, 0x9E, 0x08, 0xF0, 0xC7, 0x84, 0x3C, 0x41, 0xE4, 0x0F, 0x40, + 0x7C, 0x03, 0xC0, 0x1C, 0x00, 0xC0, 0x04, 0x00, 0x38, 0x10, 0xDF, 0x06, + 0x3D, 0xE0, 0xC7, 0xBC, 0x38, 0x73, 0xC7, 0x06, 0x79, 0xF0, 0x8F, 0x3E, + 0x11, 0xEB, 0xC4, 0x3F, 0x79, 0x07, 0xCF, 0x60, 0xF9, 0xE8, 0x1E, 0x3E, + 0x03, 0x87, 0x80, 0x70, 0xF0, 0x0C, 0x0C, 0x01, 0x01, 0x00, 0x03, 0x83, + 0x87, 0xF1, 0xF0, 0x3C, 0xF8, 0x0F, 0x60, 0x03, 0xD0, 0x00, 0xF8, 0x00, + 0x1E, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1F, 0x00, 0x0F, + 0xC0, 0x02, 0xF1, 0x39, 0x3C, 0xCF, 0xCF, 0xE3, 0xE1, 0xF0, 0x70, 0x38, + 0x00, 0x01, 0x83, 0x07, 0xE3, 0xC1, 0xF1, 0xE0, 0x78, 0xF0, 0x3E, 0x18, + 0x1F, 0x08, 0x07, 0x84, 0x03, 0xC6, 0x01, 0xE2, 0x00, 0xFB, 0x00, 0x3D, + 0x00, 0x1F, 0x80, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xC0, 0x01, 0xE0, 0x00, + 0xE0, 0x00, 0x60, 0x00, 0x60, 0x0E, 0x60, 0x0F, 0xE0, 0x07, 0xE0, 0x01, + 0xC0, 0x00, 0x1F, 0xFC, 0x3F, 0xF8, 0x7F, 0xE1, 0x81, 0x82, 0x06, 0x00, + 0x08, 0x00, 0x20, 0x00, 0xC0, 0x03, 0x00, 0x0C, 0x00, 0x10, 0x00, 0x40, + 0x01, 0x80, 0x07, 0xC0, 0x1F, 0x86, 0x3F, 0x8E, 0xCF, 0x9C, 0x07, 0x30, + 0x03, 0xC0, 0x00, 0x1E, 0x00, 0xF8, 0x03, 0xC0, 0x0F, 0x00, 0x1E, 0x00, + 0x38, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x00, 0x1E, 0x00, 0x3C, + 0x00, 0x78, 0x01, 0xE0, 0x03, 0xC0, 0x1F, 0x00, 0x7E, 0x00, 0x30, 0x00, + 0x60, 0x00, 0xE0, 0x01, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x38, + 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x00, 0x0E, 0x00, 0x0C, 0x00, + 0x0F, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, + 0x00, 0xF0, 0x00, 0x70, 0x00, 0x70, 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x80, + 0x07, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xE0, 0x03, 0xC0, 0x07, + 0x80, 0x0F, 0x00, 0x1C, 0x00, 0x18, 0x00, 0x10, 0x00, 0xF0, 0x03, 0xF0, + 0x0F, 0x00, 0x1E, 0x00, 0x38, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, + 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x70, 0x01, 0xE0, 0x0F, 0x80, 0x7C, 0x00, + 0x3E, 0x00, 0x7F, 0xC6, 0xFF, 0xFF, 0x61, 0xFE, 0x00, 0x7C}; + +const GFXglyph FreeSerifBoldItalic18pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 9, 0, 1}, // 0x20 ' ' + {0, 11, 25, 14, 2, -23}, // 0x21 '!' + {35, 14, 10, 19, 4, -23}, // 0x22 '"' + {53, 20, 25, 17, -1, -24}, // 0x23 '#' + {116, 17, 29, 18, 0, -25}, // 0x24 '$' + {178, 27, 25, 29, 1, -23}, // 0x25 '%' + {263, 25, 25, 27, 0, -23}, // 0x26 '&' + {342, 5, 10, 10, 4, -23}, // 0x27 ''' + {349, 11, 30, 12, 1, -23}, // 0x28 '(' + {391, 11, 30, 12, -2, -23}, // 0x29 ')' + {433, 13, 15, 18, 2, -23}, // 0x2A '*' + {458, 17, 17, 20, 1, -16}, // 0x2B '+' + {495, 7, 11, 9, -2, -4}, // 0x2C ',' + {505, 9, 4, 12, 0, -9}, // 0x2D '-' + {510, 6, 5, 9, 0, -3}, // 0x2E '.' + {514, 14, 25, 12, 0, -23}, // 0x2F '/' + {558, 15, 25, 18, 1, -23}, // 0x30 '0' + {605, 15, 25, 17, 0, -23}, // 0x31 '1' + {652, 16, 25, 18, 0, -23}, // 0x32 '2' + {702, 15, 25, 17, 1, -23}, // 0x33 '3' + {749, 18, 24, 17, 0, -23}, // 0x34 '4' + {803, 17, 25, 18, 0, -23}, // 0x35 '5' + {857, 17, 25, 18, 1, -23}, // 0x36 '6' + {911, 16, 24, 17, 3, -23}, // 0x37 '7' + {959, 17, 25, 18, 0, -23}, // 0x38 '8' + {1013, 17, 25, 18, 0, -23}, // 0x39 '9' + {1067, 10, 17, 9, 0, -15}, // 0x3A ':' + {1089, 11, 22, 9, -1, -15}, // 0x3B ';' + {1120, 18, 19, 20, 1, -18}, // 0x3C '<' + {1163, 18, 10, 20, 2, -13}, // 0x3D '=' + {1186, 18, 19, 20, 2, -18}, // 0x3E '>' + {1229, 13, 25, 17, 3, -23}, // 0x3F '?' + {1270, 25, 25, 29, 2, -23}, // 0x40 '@' + {1349, 23, 25, 24, 0, -23}, // 0x41 'A' + {1421, 24, 25, 22, 0, -23}, // 0x42 'B' + {1496, 23, 25, 22, 1, -23}, // 0x43 'C' + {1568, 26, 25, 25, 0, -23}, // 0x44 'D' + {1650, 23, 25, 22, 0, -23}, // 0x45 'E' + {1722, 23, 25, 21, 0, -23}, // 0x46 'F' + {1794, 24, 25, 25, 2, -23}, // 0x47 'G' + {1869, 29, 25, 26, 0, -23}, // 0x48 'H' + {1960, 15, 25, 13, 0, -23}, // 0x49 'I' + {2007, 20, 27, 17, 0, -23}, // 0x4A 'J' + {2075, 25, 25, 23, 0, -23}, // 0x4B 'K' + {2154, 22, 25, 21, 0, -23}, // 0x4C 'L' + {2223, 33, 25, 31, 0, -23}, // 0x4D 'M' + {2327, 27, 25, 25, 0, -23}, // 0x4E 'N' + {2412, 23, 25, 24, 1, -23}, // 0x4F 'O' + {2484, 23, 25, 21, 0, -23}, // 0x50 'P' + {2556, 23, 31, 24, 1, -23}, // 0x51 'Q' + {2646, 24, 25, 23, 0, -23}, // 0x52 'R' + {2721, 18, 25, 18, 0, -23}, // 0x53 'S' + {2778, 21, 25, 21, 3, -23}, // 0x54 'T' + {2844, 24, 25, 25, 4, -23}, // 0x55 'U' + {2919, 24, 25, 25, 4, -23}, // 0x56 'V' + {2994, 31, 25, 32, 4, -23}, // 0x57 'W' + {3091, 25, 25, 24, 0, -23}, // 0x58 'X' + {3170, 21, 25, 22, 4, -23}, // 0x59 'Y' + {3236, 21, 25, 20, 0, -23}, // 0x5A 'Z' + {3302, 14, 30, 12, -1, -23}, // 0x5B '[' + {3355, 10, 25, 14, 4, -23}, // 0x5C '\' + {3387, 14, 30, 12, -2, -23}, // 0x5D ']' + {3440, 16, 13, 20, 2, -23}, // 0x5E '^' + {3466, 18, 3, 17, 0, 3}, // 0x5F '_' + {3473, 7, 6, 12, 3, -23}, // 0x60 '`' + {3479, 18, 17, 18, 0, -15}, // 0x61 'a' + {3518, 16, 26, 17, 1, -24}, // 0x62 'b' + {3570, 13, 17, 15, 1, -15}, // 0x63 'c' + {3598, 19, 25, 18, 1, -23}, // 0x64 'd' + {3658, 13, 17, 15, 1, -15}, // 0x65 'e' + {3686, 21, 32, 17, -3, -24}, // 0x66 'f' + {3770, 19, 23, 17, -1, -15}, // 0x67 'g' + {3825, 17, 25, 19, 1, -23}, // 0x68 'h' + {3879, 9, 25, 10, 1, -23}, // 0x69 'i' + {3908, 16, 31, 12, -3, -23}, // 0x6A 'j' + {3970, 17, 25, 18, 1, -23}, // 0x6B 'k' + {4024, 11, 25, 10, 1, -23}, // 0x6C 'l' + {4059, 26, 17, 27, 0, -15}, // 0x6D 'm' + {4115, 18, 17, 18, 0, -15}, // 0x6E 'n' + {4154, 15, 17, 17, 1, -15}, // 0x6F 'o' + {4186, 19, 23, 17, -2, -15}, // 0x70 'p' + {4241, 16, 23, 17, 1, -15}, // 0x71 'q' + {4287, 15, 16, 14, 0, -15}, // 0x72 'r' + {4317, 13, 17, 12, 0, -15}, // 0x73 's' + {4345, 10, 22, 10, 1, -20}, // 0x74 't' + {4373, 17, 17, 19, 1, -15}, // 0x75 'u' + {4410, 13, 16, 15, 2, -15}, // 0x76 'v' + {4436, 19, 16, 23, 3, -15}, // 0x77 'w' + {4474, 18, 17, 17, -1, -15}, // 0x78 'x' + {4513, 17, 23, 15, -2, -15}, // 0x79 'y' + {4562, 15, 19, 14, 0, -15}, // 0x7A 'z' + {4598, 15, 32, 12, 0, -24}, // 0x7B '{' + {4658, 3, 25, 9, 4, -23}, // 0x7C '|' + {4668, 15, 32, 12, -5, -24}, // 0x7D '}' + {4728, 16, 5, 20, 2, -11}}; // 0x7E '~' + +const GFXfont FreeSerifBoldItalic18pt7b PROGMEM = { + (uint8_t *)FreeSerifBoldItalic18pt7bBitmaps, + (GFXglyph *)FreeSerifBoldItalic18pt7bGlyphs, 0x20, 0x7E, 42}; + +// Approx. 5410 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerifBoldItalic24pt7b.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerifBoldItalic24pt7b.h new file mode 100644 index 0000000..e2fa4cb --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerifBoldItalic24pt7b.h @@ -0,0 +1,795 @@ +#pragma once +#include + +const uint8_t FreeSerifBoldItalic24pt7bBitmaps[] PROGMEM = { + 0x00, 0x3C, 0x00, 0xFC, 0x01, 0xF8, 0x07, 0xF0, 0x0F, 0xE0, 0x1F, 0xC0, + 0x3F, 0x00, 0x7E, 0x00, 0xF8, 0x01, 0xF0, 0x07, 0xC0, 0x0F, 0x80, 0x1E, + 0x00, 0x3C, 0x00, 0x70, 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x00, 0x0E, 0x00, + 0x18, 0x00, 0x30, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xF0, 0x03, 0xF0, 0x0F, 0xF0, 0x1F, 0xE0, 0x3F, 0xC0, 0x3F, 0x00, + 0x3C, 0x00, 0x1C, 0x01, 0xC7, 0xC0, 0x7D, 0xF8, 0x1F, 0xBF, 0x03, 0xF7, + 0xC0, 0x7C, 0xF8, 0x0F, 0x9E, 0x01, 0xE3, 0xC0, 0x3C, 0x70, 0x07, 0x1E, + 0x00, 0xE3, 0x80, 0x38, 0x70, 0x07, 0x0C, 0x00, 0xC0, 0x00, 0x03, 0xC1, + 0xE0, 0x00, 0x70, 0x38, 0x00, 0x1E, 0x0F, 0x00, 0x03, 0xC1, 0xE0, 0x00, + 0x70, 0x38, 0x00, 0x1E, 0x0F, 0x00, 0x03, 0x81, 0xC0, 0x00, 0xF0, 0x78, + 0x00, 0x1E, 0x0F, 0x00, 0x07, 0x83, 0xC0, 0x1F, 0xFF, 0xFF, 0x83, 0xFF, + 0xFF, 0xF0, 0x7F, 0xFF, 0xFC, 0x00, 0xE0, 0x70, 0x00, 0x3C, 0x1E, 0x00, + 0x07, 0x83, 0xC0, 0x00, 0xE0, 0x70, 0x00, 0x3C, 0x1E, 0x00, 0x07, 0x83, + 0xC0, 0x00, 0xE0, 0x70, 0x07, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFC, 0x1F, + 0xFF, 0xFF, 0x00, 0x38, 0x1C, 0x00, 0x0F, 0x07, 0x80, 0x01, 0xE0, 0xF0, + 0x00, 0x38, 0x1C, 0x00, 0x0F, 0x07, 0x80, 0x01, 0xC0, 0xE0, 0x00, 0x78, + 0x3C, 0x00, 0x0F, 0x07, 0x80, 0x01, 0xC0, 0xE0, 0x00, 0x78, 0x3C, 0x00, + 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x1F, + 0xE0, 0x00, 0x7F, 0xF8, 0x01, 0xF1, 0x9E, 0x01, 0xC1, 0x8F, 0x03, 0x83, + 0x8F, 0x03, 0x83, 0x06, 0x07, 0x83, 0x06, 0x07, 0x87, 0x06, 0x07, 0xC7, + 0x04, 0x07, 0xE6, 0x04, 0x07, 0xFE, 0x00, 0x03, 0xFE, 0x00, 0x03, 0xFF, + 0x00, 0x01, 0xFF, 0x80, 0x00, 0xFF, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x1F, + 0xE0, 0x00, 0x1F, 0xF0, 0x00, 0x3F, 0xF0, 0x00, 0x3B, 0xF8, 0x20, 0x31, + 0xF8, 0x20, 0x30, 0xF8, 0x60, 0x70, 0xF8, 0x60, 0x60, 0xF8, 0x60, 0x60, + 0xF8, 0xF0, 0xE0, 0xF0, 0xF0, 0xE1, 0xE0, 0x78, 0xC3, 0xE0, 0x3C, 0xC7, + 0xC0, 0x0F, 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x01, 0x80, 0x00, 0x03, 0x80, + 0x00, 0x03, 0x80, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0xF0, + 0x00, 0x70, 0x00, 0xFF, 0x80, 0x1C, 0x00, 0x3F, 0x38, 0x1F, 0x00, 0x0F, + 0xC7, 0xFF, 0xE0, 0x03, 0xF0, 0x3F, 0xB8, 0x00, 0x7E, 0x04, 0x07, 0x00, + 0x1F, 0x80, 0x81, 0xC0, 0x03, 0xF0, 0x10, 0x38, 0x00, 0xFC, 0x02, 0x0E, + 0x00, 0x1F, 0x80, 0x81, 0x80, 0x03, 0xF0, 0x10, 0x70, 0x00, 0x7C, 0x06, + 0x1C, 0x00, 0x0F, 0x80, 0x83, 0x80, 0x01, 0xF0, 0x30, 0xE0, 0x00, 0x1E, + 0x0C, 0x1C, 0x07, 0xC3, 0xE3, 0x07, 0x03, 0xFC, 0x3F, 0xC0, 0xC0, 0xFC, + 0x43, 0xE0, 0x38, 0x3E, 0x0C, 0x00, 0x0E, 0x0F, 0xC0, 0x80, 0x01, 0xC3, + 0xF0, 0x10, 0x00, 0x70, 0xFC, 0x02, 0x00, 0x0C, 0x1F, 0x80, 0x40, 0x03, + 0x83, 0xE0, 0x08, 0x00, 0x60, 0xFC, 0x02, 0x00, 0x1C, 0x1F, 0x80, 0x40, + 0x07, 0x03, 0xE0, 0x10, 0x00, 0xE0, 0x7C, 0x02, 0x00, 0x38, 0x0F, 0x80, + 0xC0, 0x06, 0x01, 0xF0, 0x30, 0x01, 0xC0, 0x1F, 0x0C, 0x00, 0x30, 0x01, + 0xFF, 0x00, 0x0E, 0x00, 0x1F, 0x80, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, + 0xFF, 0x80, 0x00, 0x01, 0xF1, 0xE0, 0x00, 0x00, 0xF0, 0x78, 0x00, 0x00, + 0xF0, 0x3C, 0x00, 0x00, 0x78, 0x1E, 0x00, 0x00, 0x7C, 0x0F, 0x00, 0x00, + 0x3E, 0x0F, 0x80, 0x00, 0x1F, 0x07, 0x80, 0x00, 0x0F, 0x87, 0x80, 0x00, + 0x07, 0xC7, 0x80, 0x00, 0x03, 0xFF, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, + 0x00, 0xFC, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x01, 0xFF, 0x07, 0xFE, + 0x03, 0xCF, 0xC0, 0xFE, 0x03, 0xC7, 0xE0, 0x3C, 0x07, 0xC3, 0xF0, 0x1C, + 0x07, 0xC0, 0xFC, 0x0C, 0x03, 0xC0, 0x7E, 0x0E, 0x03, 0xE0, 0x3F, 0x0E, + 0x01, 0xF0, 0x1F, 0xC6, 0x01, 0xF8, 0x07, 0xF6, 0x00, 0xFC, 0x03, 0xFF, + 0x00, 0x7E, 0x00, 0xFF, 0x00, 0x3F, 0x80, 0x7F, 0x80, 0x1F, 0xC0, 0x1F, + 0xC0, 0x07, 0xF0, 0x0F, 0xF0, 0x13, 0xFE, 0x0F, 0xFE, 0x18, 0xFF, 0xFE, + 0xFF, 0xF8, 0x3F, 0xFE, 0x3F, 0xF8, 0x07, 0xF8, 0x03, 0xF0, 0x00, 0x1C, + 0x7D, 0xFB, 0xF7, 0xCF, 0x9E, 0x3C, 0x71, 0xE3, 0x87, 0x0C, 0x00, 0x00, + 0x04, 0x00, 0x70, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x3C, 0x01, + 0xE0, 0x0F, 0x00, 0x3C, 0x01, 0xE0, 0x0F, 0x80, 0x3C, 0x00, 0xF0, 0x07, + 0xC0, 0x1E, 0x00, 0x78, 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0xF0, 0x03, + 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x3C, 0x00, + 0x70, 0x01, 0xC0, 0x07, 0x00, 0x1C, 0x00, 0x30, 0x00, 0xE0, 0x01, 0x80, + 0x06, 0x00, 0x0C, 0x00, 0x30, 0x00, 0x60, 0x01, 0x80, 0x00, 0x00, 0x01, + 0x00, 0x06, 0x00, 0x08, 0x00, 0x30, 0x00, 0x40, 0x01, 0x80, 0x06, 0x00, + 0x1C, 0x00, 0x30, 0x00, 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x38, 0x00, 0xF0, + 0x03, 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x7C, + 0x01, 0xF0, 0x07, 0xC0, 0x1E, 0x00, 0x78, 0x03, 0xE0, 0x0F, 0x80, 0x3C, + 0x01, 0xF0, 0x07, 0x80, 0x1E, 0x00, 0xF0, 0x03, 0x80, 0x1E, 0x00, 0xF0, + 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x06, 0x00, 0x30, 0x00, 0x80, 0x00, 0x00, + 0xE0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x07, 0x0E, 0x1D, 0xF1, + 0xC7, 0xFF, 0x11, 0xFF, 0xE2, 0x3F, 0x7E, 0x4F, 0xC0, 0x3E, 0x00, 0x07, + 0xC0, 0x3F, 0x27, 0xEF, 0xC4, 0x7F, 0xF8, 0x8F, 0xFE, 0x38, 0xFB, 0x87, + 0x0E, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0x70, 0x00, 0x00, + 0x78, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x78, + 0x00, 0x01, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x78, 0x03, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x01, + 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, + 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, + 0x07, 0x80, 0x00, 0x0F, 0x07, 0xE1, 0xFC, 0x7F, 0x1F, 0xC3, 0xF0, 0x7C, + 0x0E, 0x03, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x1C, 0x04, 0x00, 0x7F, 0xF7, + 0xFF, 0x7F, 0xEF, 0xFE, 0xFF, 0xE0, 0x3C, 0x7E, 0xFF, 0xFF, 0xFF, 0x7E, + 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, + 0x78, 0x00, 0x1E, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x07, + 0xC0, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x3C, + 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x01, 0xE0, + 0x00, 0x7C, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x0F, 0x00, + 0x03, 0xC0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x03, 0xC0, 0x00, 0xF8, 0x00, + 0x1E, 0x00, 0x07, 0xC0, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x00, + 0xE3, 0x80, 0x0F, 0x07, 0x00, 0x7C, 0x1C, 0x03, 0xE0, 0x78, 0x0F, 0x81, + 0xE0, 0x7C, 0x07, 0x83, 0xF0, 0x1F, 0x0F, 0xC0, 0xFC, 0x7E, 0x03, 0xF1, + 0xF8, 0x0F, 0xCF, 0xE0, 0x3F, 0x3F, 0x00, 0xFD, 0xFC, 0x07, 0xF7, 0xF0, + 0x1F, 0xDF, 0xC0, 0x7F, 0x7E, 0x01, 0xFB, 0xF8, 0x0F, 0xEF, 0xE0, 0x3F, + 0xBF, 0x80, 0xFE, 0xFC, 0x03, 0xF3, 0xF0, 0x1F, 0xCF, 0xC0, 0x7F, 0x3F, + 0x01, 0xF8, 0xFC, 0x07, 0xE3, 0xE0, 0x3F, 0x0F, 0x80, 0xFC, 0x1E, 0x07, + 0xE0, 0x78, 0x1F, 0x00, 0xE0, 0x78, 0x03, 0x83, 0xC0, 0x07, 0x1E, 0x00, + 0x07, 0xE0, 0x00, 0x00, 0x00, 0x70, 0x01, 0xFE, 0x01, 0xFF, 0xE0, 0x00, + 0xFE, 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x0F, 0xC0, 0x01, 0xFC, 0x00, + 0x1F, 0x80, 0x01, 0xF8, 0x00, 0x3F, 0x80, 0x03, 0xF8, 0x00, 0x3F, 0x00, + 0x03, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0x07, 0xE0, + 0x00, 0xFE, 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x1F, 0xC0, 0x01, 0xFC, + 0x00, 0x1F, 0x80, 0x01, 0xF8, 0x00, 0x3F, 0x80, 0x03, 0xF0, 0x00, 0x3F, + 0x00, 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x1F, 0xF8, 0x0F, 0xFF, 0xF0, 0x00, + 0x0F, 0x80, 0x01, 0xFF, 0x80, 0x0F, 0xFF, 0x00, 0x7F, 0xFE, 0x03, 0x83, + 0xF8, 0x0C, 0x07, 0xF0, 0x60, 0x1F, 0xC3, 0x00, 0x3F, 0x00, 0x00, 0xFC, + 0x00, 0x03, 0xF0, 0x00, 0x0F, 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF8, 0x00, + 0x07, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x1E, + 0x00, 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x3C, 0x00, 0x01, 0xE0, 0x00, + 0x0E, 0x00, 0x00, 0x70, 0x06, 0x03, 0x80, 0x10, 0x1C, 0x00, 0xC0, 0xE0, + 0x06, 0x07, 0xFF, 0xF8, 0x3F, 0xFF, 0xE1, 0xFF, 0xFF, 0x0F, 0xFF, 0xFC, + 0x3F, 0xFF, 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0xFF, 0xC0, 0x0F, 0xFF, 0x80, + 0x60, 0xFE, 0x03, 0x01, 0xFC, 0x08, 0x03, 0xF0, 0x00, 0x0F, 0xC0, 0x00, + 0x3F, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0xFC, + 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x07, 0xF8, 0x00, 0x7F, 0xF0, 0x00, + 0x7F, 0xE0, 0x00, 0x3F, 0xC0, 0x00, 0x7F, 0x00, 0x01, 0xFC, 0x00, 0x03, + 0xF0, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xE0, + 0x00, 0x0F, 0x80, 0x00, 0x3C, 0x1C, 0x01, 0xF0, 0xF8, 0x07, 0x83, 0xF0, + 0x3C, 0x0F, 0xE1, 0xE0, 0x1F, 0xFE, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x07, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x07, 0xE0, 0x00, + 0x07, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF8, 0x00, 0x07, 0xFC, 0x00, + 0x06, 0xFC, 0x00, 0x06, 0x7E, 0x00, 0x06, 0x3F, 0x00, 0x06, 0x3F, 0x00, + 0x06, 0x1F, 0x80, 0x06, 0x0F, 0xC0, 0x06, 0x07, 0xE0, 0x03, 0x07, 0xE0, + 0x03, 0x03, 0xF0, 0x03, 0x01, 0xF8, 0x03, 0x01, 0xFC, 0x03, 0x00, 0xFC, + 0x03, 0x00, 0x7E, 0x03, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, + 0xF0, 0xFF, 0xFF, 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x07, 0xE0, 0x00, 0x03, + 0xF0, 0x00, 0x01, 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x00, + 0x7E, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, + 0x7F, 0xFC, 0x00, 0xFF, 0xFC, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x01, + 0x80, 0x00, 0x03, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x07, 0xFE, 0x00, 0x07, + 0xFF, 0x00, 0x07, 0xFF, 0x80, 0x0F, 0xFF, 0xC0, 0x00, 0xFF, 0xE0, 0x00, + 0x1F, 0xE0, 0x00, 0x0F, 0xF0, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xF0, 0x00, + 0x03, 0xF0, 0x00, 0x01, 0xF0, 0x00, 0x01, 0xF0, 0x00, 0x01, 0xF0, 0x00, + 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x03, 0xC0, 0x78, 0x03, 0xC0, 0xFC, + 0x07, 0x80, 0xFC, 0x0F, 0x00, 0xFE, 0x1E, 0x00, 0x7F, 0xF8, 0x00, 0x1F, + 0xC0, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x01, 0xF8, 0x00, 0x0F, 0x80, 0x00, + 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x01, 0xFC, + 0x00, 0x03, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x3F, 0x80, 0x00, 0xFE, 0x00, + 0x01, 0xFF, 0xF0, 0x07, 0xFF, 0xF0, 0x0F, 0xE1, 0xF0, 0x3F, 0x81, 0xF0, + 0x7F, 0x03, 0xF0, 0xFC, 0x07, 0xE3, 0xF8, 0x0F, 0xC7, 0xF0, 0x1F, 0x8F, + 0xC0, 0x7F, 0x1F, 0x80, 0xFE, 0x3F, 0x01, 0xFC, 0x7C, 0x03, 0xF0, 0xF8, + 0x0F, 0xE1, 0xF0, 0x1F, 0xC1, 0xE0, 0x3F, 0x03, 0xC0, 0xFC, 0x07, 0x81, + 0xF0, 0x07, 0x87, 0xC0, 0x07, 0xFF, 0x00, 0x03, 0xF8, 0x00, 0x0F, 0xFF, + 0xFC, 0x1F, 0xFF, 0xF8, 0x3F, 0xFF, 0xE0, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, + 0x07, 0x00, 0x1C, 0x08, 0x00, 0x78, 0x30, 0x01, 0xE0, 0x40, 0x03, 0xC0, + 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, + 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x78, 0x00, 0x01, + 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x78, + 0x00, 0x01, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, + 0x00, 0x78, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x80, 0x00, + 0x1E, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x03, 0xFE, 0x00, 0x3C, 0x78, + 0x03, 0xC1, 0xE0, 0x3C, 0x07, 0x81, 0xE0, 0x3C, 0x1F, 0x01, 0xE0, 0xF8, + 0x0F, 0x07, 0xC0, 0x78, 0x3F, 0x03, 0xC1, 0xF8, 0x3C, 0x0F, 0xE1, 0xE0, + 0x3F, 0x9E, 0x01, 0xFF, 0xC0, 0x07, 0xFC, 0x00, 0x3F, 0xC0, 0x00, 0xFF, + 0x00, 0x1F, 0xFC, 0x03, 0xCF, 0xF0, 0x3C, 0x3F, 0x83, 0xC0, 0xFC, 0x3C, + 0x03, 0xF1, 0xE0, 0x1F, 0x9E, 0x00, 0x7C, 0xF0, 0x03, 0xE7, 0x80, 0x1F, + 0x3C, 0x00, 0xF9, 0xE0, 0x07, 0x87, 0x00, 0x3C, 0x3C, 0x03, 0xC0, 0xF0, + 0x3C, 0x03, 0xC3, 0xC0, 0x07, 0xF0, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0xFF, + 0xE0, 0x03, 0xF1, 0xE0, 0x0F, 0xC1, 0xC0, 0x3F, 0x03, 0xC0, 0xFE, 0x07, + 0x81, 0xF8, 0x0F, 0x87, 0xF0, 0x1F, 0x0F, 0xC0, 0x3E, 0x3F, 0x80, 0xFC, + 0x7F, 0x01, 0xF8, 0xFC, 0x03, 0xF1, 0xF8, 0x07, 0xE3, 0xF0, 0x1F, 0xC7, + 0xE0, 0x3F, 0x8F, 0xC0, 0x7E, 0x0F, 0x81, 0xFC, 0x1F, 0x03, 0xF8, 0x1F, + 0x0F, 0xE0, 0x1F, 0xFF, 0xC0, 0x1F, 0xFF, 0x00, 0x00, 0xFE, 0x00, 0x03, + 0xF8, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0x7E, 0x00, 0x01, 0xF8, + 0x00, 0x07, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, + 0x1F, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x01, 0xE0, 0x1F, 0x81, 0xFE, 0x0F, + 0xF0, 0x7F, 0x81, 0xF8, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x7E, 0x07, 0xF8, 0x3F, + 0xC1, 0xFE, 0x07, 0xE0, 0x1E, 0x00, 0x00, 0x78, 0x01, 0xF8, 0x07, 0xF8, + 0x0F, 0xF0, 0x1F, 0xE0, 0x1F, 0x80, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, + 0x1F, 0x80, 0x3F, 0x80, 0x7F, 0x00, 0xFE, 0x00, 0xFC, 0x00, 0xF8, 0x00, + 0xE0, 0x01, 0xC0, 0x07, 0x00, 0x0C, 0x00, 0x30, 0x01, 0xC0, 0x0E, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x07, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x7F, 0x00, 0x03, 0xFF, 0x00, 0x0F, 0xFC, 0x00, 0x3F, 0xF0, + 0x01, 0xFF, 0xC0, 0x07, 0xFE, 0x00, 0x1F, 0xF8, 0x00, 0x7F, 0xE0, 0x00, + 0xFF, 0x80, 0x00, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xE0, 0x00, + 0x1F, 0xF8, 0x00, 0x07, 0xFE, 0x00, 0x01, 0xFF, 0xC0, 0x00, 0x3F, 0xF0, + 0x00, 0x0F, 0xFC, 0x00, 0x03, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x07, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x80, 0x00, 0x00, 0xE0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xFF, 0x00, 0x00, + 0xFF, 0xC0, 0x00, 0x3F, 0xF0, 0x00, 0x0F, 0xFC, 0x00, 0x03, 0xFF, 0x80, + 0x00, 0x7F, 0xE0, 0x00, 0x1F, 0xF8, 0x00, 0x07, 0xFF, 0x00, 0x00, 0xFF, + 0x00, 0x00, 0x3F, 0x00, 0x00, 0xFF, 0x00, 0x03, 0xFF, 0x00, 0x1F, 0xFC, + 0x00, 0x7F, 0xE0, 0x01, 0xFF, 0x80, 0x0F, 0xFE, 0x00, 0x3F, 0xF0, 0x00, + 0xFF, 0xC0, 0x00, 0xFF, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xE0, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x01, 0xF8, 0x01, 0xFF, 0x80, 0xF1, 0xF0, 0x38, 0x3E, + 0x1E, 0x0F, 0xC7, 0xC3, 0xF1, 0xF0, 0xFC, 0x7C, 0x3F, 0x0E, 0x0F, 0xC0, + 0x07, 0xF0, 0x01, 0xF8, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x1F, 0x00, 0x07, + 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x0C, 0x00, + 0x06, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0xC0, 0x01, 0xF8, 0x00, 0xFF, 0x00, 0x3F, 0xC0, 0x0F, 0xF0, + 0x01, 0xF8, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x1F, + 0xFF, 0xC0, 0x00, 0x3F, 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x7C, + 0x00, 0x03, 0x80, 0x7C, 0x00, 0x00, 0xE0, 0x7C, 0x00, 0x00, 0x38, 0x3C, + 0x00, 0xF0, 0x4C, 0x3E, 0x00, 0xFD, 0xE7, 0x1E, 0x00, 0xF3, 0xF1, 0x9F, + 0x00, 0xF1, 0xF0, 0xEF, 0x80, 0xF0, 0x78, 0x3F, 0x80, 0xF0, 0x3C, 0x1F, + 0xC0, 0x78, 0x1E, 0x0F, 0xE0, 0x78, 0x1E, 0x07, 0xF0, 0x3C, 0x0F, 0x03, + 0xF8, 0x3E, 0x07, 0x81, 0xFC, 0x1E, 0x07, 0x81, 0xFE, 0x0F, 0x03, 0xC0, + 0xDF, 0x07, 0x83, 0xC0, 0x6F, 0x83, 0xC3, 0xE0, 0x63, 0xE1, 0xF3, 0xF0, + 0x71, 0xF0, 0x7E, 0x78, 0x70, 0xF8, 0x1E, 0x3F, 0xF0, 0x3E, 0x00, 0x07, + 0xE0, 0x0F, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x01, 0xF0, 0x00, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x03, 0x80, 0x03, 0xF0, + 0x07, 0xC0, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x00, 0xF0, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, + 0x1F, 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x03, + 0x7E, 0x00, 0x00, 0x06, 0xFC, 0x00, 0x00, 0x19, 0xF8, 0x00, 0x00, 0x63, + 0xF8, 0x00, 0x00, 0xC7, 0xF0, 0x00, 0x03, 0x07, 0xE0, 0x00, 0x06, 0x0F, + 0xC0, 0x00, 0x18, 0x1F, 0x80, 0x00, 0x60, 0x3F, 0x00, 0x00, 0xC0, 0x7F, + 0x00, 0x03, 0x00, 0xFE, 0x00, 0x0F, 0xFF, 0xFC, 0x00, 0x1F, 0xFF, 0xF8, + 0x00, 0x60, 0x03, 0xF0, 0x00, 0xC0, 0x07, 0xE0, 0x03, 0x00, 0x0F, 0xE0, + 0x0E, 0x00, 0x1F, 0xC0, 0x18, 0x00, 0x3F, 0x80, 0x70, 0x00, 0x7F, 0x01, + 0xC0, 0x00, 0xFE, 0x03, 0x80, 0x01, 0xFE, 0x1F, 0x80, 0x07, 0xFE, 0x7F, + 0xC0, 0x3F, 0xFF, 0x01, 0xFF, 0xFF, 0x80, 0x00, 0xFF, 0xFF, 0xE0, 0x00, + 0xFE, 0x1F, 0xE0, 0x01, 0xFC, 0x1F, 0xE0, 0x03, 0xF8, 0x1F, 0xE0, 0x0F, + 0xE0, 0x3F, 0xC0, 0x1F, 0xC0, 0x7F, 0x80, 0x3F, 0x80, 0xFF, 0x00, 0x7F, + 0x01, 0xFE, 0x01, 0xFC, 0x03, 0xF8, 0x03, 0xF8, 0x0F, 0xF0, 0x07, 0xF0, + 0x1F, 0xC0, 0x0F, 0xC0, 0x7F, 0x00, 0x3F, 0x87, 0xF0, 0x00, 0x7F, 0xFF, + 0x00, 0x00, 0xFE, 0x1F, 0xC0, 0x03, 0xF8, 0x0F, 0xE0, 0x07, 0xF0, 0x0F, + 0xE0, 0x0F, 0xE0, 0x1F, 0xC0, 0x1F, 0xC0, 0x3F, 0xC0, 0x7F, 0x00, 0x7F, + 0x80, 0xFE, 0x00, 0xFF, 0x01, 0xFC, 0x01, 0xFE, 0x03, 0xF0, 0x07, 0xFC, + 0x0F, 0xE0, 0x0F, 0xF0, 0x1F, 0xC0, 0x3F, 0xE0, 0x3F, 0x80, 0x7F, 0x80, + 0xFE, 0x01, 0xFE, 0x01, 0xFE, 0x0F, 0xF8, 0x07, 0xFF, 0xFF, 0xC0, 0x3F, + 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x01, 0xFE, 0x08, 0x00, 0x7F, 0xFE, 0xC0, + 0x0F, 0xF0, 0x7E, 0x00, 0xFE, 0x01, 0xF0, 0x1F, 0xE0, 0x07, 0x01, 0xFE, + 0x00, 0x38, 0x1F, 0xE0, 0x00, 0xC0, 0xFE, 0x00, 0x06, 0x0F, 0xF0, 0x00, + 0x30, 0xFF, 0x00, 0x01, 0x07, 0xF8, 0x00, 0x08, 0x7F, 0x80, 0x00, 0x03, + 0xFC, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x0F, 0xF0, + 0x00, 0x00, 0xFF, 0x80, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, + 0x01, 0xFE, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x03, + 0xFC, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x03, 0xF8, + 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x60, 0x7F, 0x00, 0x06, 0x03, 0xFC, 0x00, + 0x70, 0x0F, 0xE0, 0x07, 0x00, 0x1F, 0xC0, 0xE0, 0x00, 0x7F, 0xFE, 0x00, + 0x00, 0x7F, 0x80, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x00, 0x3F, 0xFF, 0xFE, + 0x00, 0x00, 0xFE, 0x07, 0xF0, 0x00, 0x1F, 0xC0, 0x3F, 0x00, 0x03, 0xF8, + 0x07, 0xF0, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x1F, 0xC0, 0x07, 0xF0, 0x03, + 0xF8, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x1F, 0xC0, 0x1F, 0xC0, 0x03, 0xFC, + 0x03, 0xF8, 0x00, 0x7F, 0x80, 0x7F, 0x00, 0x0F, 0xF0, 0x0F, 0xC0, 0x01, + 0xFE, 0x03, 0xF8, 0x00, 0x3F, 0xC0, 0x7F, 0x00, 0x07, 0xF8, 0x0F, 0xE0, + 0x01, 0xFF, 0x03, 0xF8, 0x00, 0x3F, 0xE0, 0x7F, 0x00, 0x07, 0xF8, 0x0F, + 0xE0, 0x00, 0xFF, 0x01, 0xFC, 0x00, 0x3F, 0xE0, 0x7F, 0x00, 0x07, 0xF8, + 0x0F, 0xE0, 0x01, 0xFF, 0x01, 0xFC, 0x00, 0x3F, 0xC0, 0x3F, 0x00, 0x0F, + 0xF0, 0x0F, 0xE0, 0x01, 0xFC, 0x01, 0xFC, 0x00, 0x7F, 0x00, 0x3F, 0x80, + 0x1F, 0xC0, 0x0F, 0xE0, 0x0F, 0xF0, 0x01, 0xFE, 0x07, 0xF8, 0x00, 0x7F, + 0xFF, 0xFC, 0x00, 0x3F, 0xFF, 0xF8, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFF, + 0x00, 0x7F, 0xFF, 0xFF, 0x00, 0x3F, 0xC0, 0x7E, 0x00, 0x3F, 0x80, 0x1E, + 0x00, 0x3F, 0x80, 0x0E, 0x00, 0x7F, 0x00, 0x06, 0x00, 0x7F, 0x00, 0x04, + 0x00, 0x7F, 0x00, 0x04, 0x00, 0x7F, 0x00, 0x00, 0x00, 0xFE, 0x01, 0x80, + 0x00, 0xFE, 0x01, 0x00, 0x00, 0xFE, 0x03, 0x00, 0x00, 0xFC, 0x0F, 0x00, + 0x01, 0xFF, 0xFF, 0x00, 0x01, 0xFF, 0xFE, 0x00, 0x01, 0xFC, 0x3E, 0x00, + 0x03, 0xF8, 0x1E, 0x00, 0x03, 0xF8, 0x0C, 0x00, 0x03, 0xF8, 0x0C, 0x00, + 0x03, 0xF8, 0x0C, 0x00, 0x07, 0xF0, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x08, + 0x07, 0xF0, 0x00, 0x18, 0x07, 0xE0, 0x00, 0x30, 0x0F, 0xE0, 0x00, 0x30, + 0x0F, 0xE0, 0x00, 0x70, 0x0F, 0xE0, 0x01, 0xE0, 0x1F, 0xC0, 0x07, 0xE0, + 0x1F, 0xE0, 0x3F, 0xE0, 0x3F, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0xC0, + 0x01, 0xFF, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0xFC, 0x00, 0xFF, 0x03, 0xF0, + 0x01, 0xFC, 0x01, 0xE0, 0x03, 0xF8, 0x01, 0xC0, 0x0F, 0xE0, 0x01, 0x80, + 0x1F, 0xC0, 0x02, 0x00, 0x3F, 0x80, 0x04, 0x00, 0x7F, 0x00, 0x00, 0x01, + 0xFC, 0x03, 0x00, 0x03, 0xF8, 0x04, 0x00, 0x07, 0xF0, 0x18, 0x00, 0x0F, + 0xC0, 0xF0, 0x00, 0x3F, 0xFF, 0xE0, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0xFE, + 0x1F, 0x00, 0x03, 0xF8, 0x1E, 0x00, 0x07, 0xF0, 0x18, 0x00, 0x0F, 0xE0, + 0x30, 0x00, 0x1F, 0xC0, 0x60, 0x00, 0x7F, 0x00, 0x80, 0x00, 0xFE, 0x01, + 0x00, 0x01, 0xFC, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x0F, 0xE0, 0x00, + 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0xFF, 0x00, 0x00, + 0x01, 0xFE, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xFF, 0x02, 0x00, 0x0F, 0xFF, 0xEE, 0x00, 0x3F, 0xC0, + 0xFC, 0x00, 0x7F, 0x00, 0x7C, 0x01, 0xFE, 0x00, 0x3C, 0x03, 0xFC, 0x00, + 0x38, 0x07, 0xF8, 0x00, 0x18, 0x07, 0xF0, 0x00, 0x18, 0x0F, 0xF0, 0x00, + 0x10, 0x1F, 0xE0, 0x00, 0x10, 0x1F, 0xE0, 0x00, 0x00, 0x3F, 0xC0, 0x00, + 0x00, 0x3F, 0xC0, 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x00, 0x7F, 0x80, 0x00, + 0x00, 0x7F, 0x80, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0xFF, 0x80, 0x1F, + 0xFF, 0xFF, 0x00, 0x07, 0xFC, 0xFF, 0x00, 0x03, 0xF8, 0xFF, 0x00, 0x03, + 0xF8, 0xFF, 0x00, 0x03, 0xF0, 0xFF, 0x00, 0x03, 0xF0, 0xFF, 0x00, 0x07, + 0xF0, 0x7F, 0x00, 0x07, 0xF0, 0x7F, 0x00, 0x07, 0xE0, 0x7F, 0x80, 0x07, + 0xE0, 0x3F, 0x80, 0x0F, 0xE0, 0x1F, 0xC0, 0x0F, 0xC0, 0x0F, 0xE0, 0x0F, + 0xC0, 0x07, 0xF0, 0x3F, 0x80, 0x01, 0xFF, 0xFE, 0x00, 0x00, 0x3F, 0xE0, + 0x00, 0x01, 0xFF, 0xFC, 0x7F, 0xFE, 0x00, 0xFF, 0xC0, 0x3F, 0xF0, 0x00, + 0xFE, 0x00, 0x3F, 0xC0, 0x01, 0xFC, 0x00, 0x7F, 0x00, 0x03, 0xF8, 0x00, + 0xFE, 0x00, 0x0F, 0xE0, 0x01, 0xFC, 0x00, 0x1F, 0xC0, 0x07, 0xF0, 0x00, + 0x3F, 0x80, 0x0F, 0xE0, 0x00, 0x7F, 0x00, 0x1F, 0xC0, 0x01, 0xFC, 0x00, + 0x7F, 0x00, 0x03, 0xF8, 0x00, 0xFE, 0x00, 0x07, 0xF0, 0x01, 0xFC, 0x00, + 0x0F, 0xC0, 0x03, 0xF8, 0x00, 0x3F, 0x80, 0x0F, 0xE0, 0x00, 0x7F, 0xFF, + 0xFF, 0xC0, 0x00, 0xFF, 0xFF, 0xFF, 0x80, 0x03, 0xF8, 0x00, 0x7F, 0x00, + 0x07, 0xF0, 0x01, 0xFC, 0x00, 0x0F, 0xE0, 0x03, 0xF8, 0x00, 0x1F, 0xC0, + 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x1F, 0xC0, 0x00, 0xFE, 0x00, 0x3F, 0x80, + 0x01, 0xFC, 0x00, 0x7F, 0x00, 0x03, 0xF0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, + 0x03, 0xF8, 0x00, 0x1F, 0xC0, 0x07, 0xF0, 0x00, 0x3F, 0x80, 0x0F, 0xE0, + 0x00, 0xFF, 0x00, 0x3F, 0xC0, 0x01, 0xFE, 0x00, 0x7F, 0x80, 0x07, 0xFC, + 0x01, 0xFF, 0x00, 0x3F, 0xFF, 0x1F, 0xFF, 0xC0, 0x00, 0x01, 0xFF, 0xF8, + 0x03, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0x7F, 0x00, 0x03, 0xF8, 0x00, 0x3F, + 0x80, 0x01, 0xFC, 0x00, 0x0F, 0xE0, 0x00, 0x7E, 0x00, 0x07, 0xF0, 0x00, + 0x3F, 0x80, 0x01, 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0xFE, 0x00, 0x07, 0xF0, + 0x00, 0x3F, 0x80, 0x03, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0xFE, 0x00, 0x07, + 0xE0, 0x00, 0x7F, 0x00, 0x03, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0xFC, 0x00, + 0x0F, 0xE0, 0x00, 0x7F, 0x00, 0x03, 0xF8, 0x00, 0x3F, 0xC0, 0x01, 0xFC, + 0x00, 0x1F, 0xF0, 0x03, 0xFF, 0xF0, 0x00, 0x00, 0x07, 0xFF, 0xE0, 0x00, + 0x3F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x0F, 0xE0, + 0x00, 0x01, 0xFC, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x01, + 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x0F, 0xE0, 0x00, 0x01, 0xFC, 0x00, + 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, + 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, + 0x07, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, + 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x07, 0xF0, 0x00, 0x00, + 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x07, 0x03, 0xF0, 0x01, 0xF0, 0xFE, 0x00, + 0x3E, 0x1F, 0xC0, 0x07, 0xC3, 0xF0, 0x00, 0xF8, 0xFC, 0x00, 0x0F, 0x3F, + 0x80, 0x00, 0xFF, 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x01, 0xFF, 0xF8, + 0xFF, 0xC0, 0x1F, 0xF8, 0x0F, 0xC0, 0x03, 0xF8, 0x01, 0xC0, 0x00, 0xFE, + 0x00, 0xE0, 0x00, 0x3F, 0x80, 0x70, 0x00, 0x1F, 0xC0, 0x38, 0x00, 0x07, + 0xF0, 0x1C, 0x00, 0x01, 0xFC, 0x0E, 0x00, 0x00, 0x7F, 0x07, 0x00, 0x00, + 0x3F, 0x83, 0x80, 0x00, 0x0F, 0xE1, 0xC0, 0x00, 0x03, 0xF8, 0xE0, 0x00, + 0x00, 0xFC, 0x60, 0x00, 0x00, 0x7F, 0x7C, 0x00, 0x00, 0x1F, 0xFF, 0x00, + 0x00, 0x07, 0xFF, 0xE0, 0x00, 0x03, 0xFB, 0xF8, 0x00, 0x00, 0xFE, 0x7F, + 0x00, 0x00, 0x3F, 0x9F, 0xC0, 0x00, 0x0F, 0xE3, 0xF8, 0x00, 0x07, 0xF0, + 0xFE, 0x00, 0x01, 0xFC, 0x1F, 0xC0, 0x00, 0x7F, 0x07, 0xF0, 0x00, 0x1F, + 0x80, 0xFE, 0x00, 0x0F, 0xE0, 0x3F, 0x80, 0x03, 0xF8, 0x0F, 0xE0, 0x00, + 0xFE, 0x01, 0xFC, 0x00, 0x7F, 0x00, 0x7F, 0x00, 0x1F, 0xE0, 0x0F, 0xE0, + 0x0F, 0xF8, 0x07, 0xFC, 0x0F, 0xFF, 0xC7, 0xFF, 0xC0, 0x01, 0xFF, 0xF8, + 0x00, 0x03, 0xFF, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x7F, 0x00, 0x00, + 0x03, 0xF8, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x0F, + 0xE0, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x3F, 0x80, + 0x00, 0x01, 0xFC, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0xFE, 0x00, 0x00, + 0x07, 0xF0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x1F, + 0xC0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x7F, 0x00, + 0x00, 0x03, 0xF8, 0x00, 0x04, 0x1F, 0xC0, 0x00, 0x60, 0xFC, 0x00, 0x06, + 0x0F, 0xE0, 0x00, 0x30, 0x7F, 0x00, 0x03, 0x83, 0xF8, 0x00, 0x7C, 0x3F, + 0x80, 0x0F, 0xC1, 0xFE, 0x03, 0xFE, 0x1F, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, + 0xFF, 0x00, 0x01, 0xFF, 0xC0, 0x00, 0x3F, 0xF0, 0x03, 0xFC, 0x00, 0x03, + 0xFC, 0x00, 0x3F, 0xC0, 0x00, 0x7F, 0x80, 0x03, 0xFC, 0x00, 0x0F, 0xF8, + 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0x80, 0x03, 0xFC, 0x00, 0x1F, 0xF0, 0x00, + 0x6F, 0xC0, 0x03, 0xFF, 0x00, 0x06, 0xFC, 0x00, 0x37, 0xF0, 0x00, 0x6F, + 0xE0, 0x06, 0x7E, 0x00, 0x04, 0xFE, 0x00, 0xEF, 0xE0, 0x00, 0xCF, 0xE0, + 0x0C, 0xFE, 0x00, 0x0C, 0xFE, 0x01, 0x8F, 0xE0, 0x00, 0xCF, 0xE0, 0x38, + 0xFC, 0x00, 0x18, 0x7E, 0x03, 0x1F, 0xC0, 0x01, 0x87, 0xE0, 0x61, 0xFC, + 0x00, 0x18, 0x7E, 0x0E, 0x1F, 0xC0, 0x01, 0x87, 0xE0, 0xC3, 0xF8, 0x00, + 0x30, 0x7F, 0x18, 0x3F, 0x80, 0x03, 0x07, 0xF3, 0x83, 0xF8, 0x00, 0x30, + 0x7F, 0x30, 0x3F, 0x00, 0x06, 0x07, 0xF7, 0x07, 0xF0, 0x00, 0x60, 0x3F, + 0xE0, 0x7F, 0x00, 0x06, 0x03, 0xFC, 0x07, 0xF0, 0x00, 0xE0, 0x3F, 0xC0, + 0x7E, 0x00, 0x0C, 0x03, 0xF8, 0x0F, 0xE0, 0x00, 0xC0, 0x3F, 0x00, 0xFE, + 0x00, 0x0C, 0x03, 0xF0, 0x0F, 0xE0, 0x01, 0xC0, 0x3E, 0x01, 0xFC, 0x00, + 0x1C, 0x03, 0xC0, 0x1F, 0xC0, 0x07, 0xE0, 0x3C, 0x03, 0xFE, 0x00, 0xFF, + 0xC1, 0x81, 0xFF, 0xFC, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x03, 0xFF, + 0x00, 0x1F, 0xF8, 0x03, 0xF8, 0x00, 0x3F, 0x00, 0x0F, 0xE0, 0x00, 0xF0, + 0x00, 0x7F, 0x00, 0x07, 0x00, 0x03, 0xFC, 0x00, 0x38, 0x00, 0x1F, 0xE0, + 0x01, 0x80, 0x01, 0xBF, 0x80, 0x0C, 0x00, 0x0D, 0xFC, 0x00, 0x60, 0x00, + 0x67, 0xF0, 0x07, 0x00, 0x02, 0x3F, 0x80, 0x30, 0x00, 0x30, 0xFE, 0x01, + 0x80, 0x01, 0x87, 0xF0, 0x0C, 0x00, 0x0C, 0x1F, 0xC0, 0xC0, 0x00, 0xC0, + 0xFE, 0x06, 0x00, 0x06, 0x07, 0xF8, 0x30, 0x00, 0x30, 0x1F, 0xC1, 0x80, + 0x01, 0x80, 0xFF, 0x18, 0x00, 0x18, 0x03, 0xF8, 0xC0, 0x00, 0xC0, 0x1F, + 0xC6, 0x00, 0x06, 0x00, 0x7F, 0x60, 0x00, 0x60, 0x03, 0xFB, 0x00, 0x03, + 0x00, 0x0F, 0xF8, 0x00, 0x18, 0x00, 0x7F, 0xC0, 0x01, 0xC0, 0x01, 0xFC, + 0x00, 0x0C, 0x00, 0x0F, 0xE0, 0x00, 0x60, 0x00, 0x3F, 0x00, 0x03, 0x00, + 0x01, 0xF0, 0x00, 0x38, 0x00, 0x07, 0x80, 0x01, 0xC0, 0x00, 0x3C, 0x00, + 0x3F, 0x00, 0x01, 0xE0, 0x03, 0xFF, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0x7E, + 0x1F, 0x80, 0x01, 0xF0, 0x0F, 0x80, 0x0F, 0xC0, 0x1F, 0x80, 0x3F, 0x00, + 0x1F, 0x80, 0xFE, 0x00, 0x3F, 0x03, 0xF8, 0x00, 0x7E, 0x07, 0xF0, 0x00, + 0xFE, 0x1F, 0xC0, 0x01, 0xFC, 0x7F, 0x80, 0x03, 0xF8, 0xFE, 0x00, 0x07, + 0xF3, 0xFC, 0x00, 0x1F, 0xE7, 0xF0, 0x00, 0x3F, 0xDF, 0xE0, 0x00, 0x7F, + 0xBF, 0xC0, 0x00, 0xFE, 0x7F, 0x80, 0x03, 0xFC, 0xFE, 0x00, 0x07, 0xFB, + 0xFC, 0x00, 0x0F, 0xF7, 0xF8, 0x00, 0x3F, 0xCF, 0xF0, 0x00, 0x7F, 0x9F, + 0xC0, 0x00, 0xFE, 0x3F, 0x80, 0x03, 0xFC, 0x7F, 0x00, 0x07, 0xF0, 0xFE, + 0x00, 0x1F, 0xC0, 0xFC, 0x00, 0x3F, 0x81, 0xF8, 0x00, 0xFE, 0x03, 0xF0, + 0x03, 0xF8, 0x03, 0xF0, 0x07, 0xE0, 0x03, 0xE0, 0x1F, 0x00, 0x03, 0xE0, + 0xFC, 0x00, 0x03, 0xFF, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x01, 0xFF, + 0xFF, 0x80, 0x00, 0xFF, 0xFF, 0xE0, 0x00, 0xFE, 0x1F, 0xE0, 0x01, 0xFC, + 0x1F, 0xE0, 0x03, 0xF0, 0x1F, 0xC0, 0x0F, 0xE0, 0x3F, 0xC0, 0x1F, 0xC0, + 0x7F, 0x80, 0x3F, 0x80, 0xFF, 0x00, 0x7E, 0x01, 0xFE, 0x01, 0xFC, 0x03, + 0xFC, 0x03, 0xF8, 0x0F, 0xF8, 0x07, 0xF0, 0x1F, 0xE0, 0x0F, 0xC0, 0x7F, + 0x80, 0x3F, 0x81, 0xFE, 0x00, 0x7F, 0x07, 0xF8, 0x00, 0xFF, 0xFF, 0xC0, + 0x03, 0xFF, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, + 0x1F, 0x80, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x01, + 0xFC, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x1F, + 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x01, 0xFC, + 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x7E, 0x1F, 0x80, 0x01, + 0xF0, 0x0F, 0x80, 0x0F, 0xC0, 0x1F, 0x80, 0x3F, 0x80, 0x1F, 0x80, 0xFE, + 0x00, 0x3F, 0x03, 0xF8, 0x00, 0x7E, 0x07, 0xF0, 0x00, 0xFE, 0x1F, 0xC0, + 0x01, 0xFC, 0x7F, 0x80, 0x03, 0xF8, 0xFE, 0x00, 0x07, 0xF3, 0xFC, 0x00, + 0x1F, 0xE7, 0xF8, 0x00, 0x3F, 0xDF, 0xE0, 0x00, 0x7F, 0xBF, 0xC0, 0x00, + 0xFF, 0x7F, 0x80, 0x01, 0xFC, 0xFE, 0x00, 0x07, 0xFB, 0xFC, 0x00, 0x0F, + 0xF7, 0xF8, 0x00, 0x1F, 0xCF, 0xF0, 0x00, 0x7F, 0x9F, 0xC0, 0x00, 0xFE, + 0x3F, 0x80, 0x01, 0xFC, 0x7F, 0x00, 0x07, 0xF0, 0xFE, 0x00, 0x0F, 0xE1, + 0xFC, 0x00, 0x3F, 0x81, 0xF8, 0x00, 0x7E, 0x03, 0xF0, 0x01, 0xF8, 0x03, + 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x1F, 0x80, 0x03, 0xE0, 0x7E, 0x00, 0x03, + 0xF3, 0xF0, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x06, + 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0xC0, 0x7F, 0xE0, 0x03, 0x03, 0xFF, + 0xF8, 0x1C, 0x0F, 0xFF, 0xFF, 0xF0, 0x3F, 0xFF, 0xFF, 0xC0, 0xE0, 0x3F, + 0xFF, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x01, 0xFF, 0xFF, 0xC0, 0x00, 0x7F, + 0xFF, 0xF8, 0x00, 0x3F, 0xC3, 0xFC, 0x00, 0x3F, 0x81, 0xFE, 0x00, 0x3F, + 0x80, 0xFF, 0x00, 0x7F, 0x80, 0xFF, 0x00, 0x7F, 0x00, 0xFF, 0x00, 0x7F, + 0x00, 0xFF, 0x00, 0x7F, 0x00, 0xFF, 0x00, 0xFF, 0x01, 0xFE, 0x00, 0xFE, + 0x01, 0xFE, 0x00, 0xFE, 0x03, 0xFC, 0x00, 0xFE, 0x07, 0xF8, 0x01, 0xFC, + 0x1F, 0xF0, 0x01, 0xFF, 0xFF, 0xC0, 0x01, 0xFF, 0xFE, 0x00, 0x03, 0xFD, + 0xFE, 0x00, 0x03, 0xF8, 0xFF, 0x00, 0x03, 0xF8, 0xFF, 0x00, 0x03, 0xF8, + 0xFF, 0x00, 0x07, 0xF8, 0x7F, 0x80, 0x07, 0xF0, 0x7F, 0x80, 0x07, 0xF0, + 0x3F, 0x80, 0x07, 0xF0, 0x3F, 0xC0, 0x0F, 0xE0, 0x3F, 0xC0, 0x0F, 0xE0, + 0x1F, 0xC0, 0x0F, 0xE0, 0x1F, 0xE0, 0x1F, 0xE0, 0x1F, 0xE0, 0x1F, 0xE0, + 0x0F, 0xF0, 0x3F, 0xF0, 0x0F, 0xF8, 0xFF, 0xFC, 0x0F, 0xFE, 0x00, 0x1F, + 0x83, 0x00, 0x7F, 0xF7, 0x00, 0xF8, 0x7E, 0x01, 0xE0, 0x1E, 0x03, 0xC0, + 0x0E, 0x03, 0xC0, 0x0E, 0x07, 0xC0, 0x0E, 0x07, 0xC0, 0x04, 0x07, 0xC0, + 0x04, 0x07, 0xE0, 0x04, 0x07, 0xF0, 0x00, 0x07, 0xF8, 0x00, 0x03, 0xFC, + 0x00, 0x03, 0xFF, 0x00, 0x01, 0xFF, 0x80, 0x00, 0xFF, 0xC0, 0x00, 0x7F, + 0xE0, 0x00, 0x3F, 0xE0, 0x00, 0x1F, 0xF0, 0x00, 0x0F, 0xF0, 0x00, 0x07, + 0xF8, 0x00, 0x03, 0xF8, 0x00, 0x01, 0xF8, 0x20, 0x00, 0xF8, 0x20, 0x00, + 0xF8, 0x20, 0x00, 0xF8, 0x70, 0x00, 0xF8, 0x70, 0x00, 0xF0, 0x78, 0x01, + 0xF0, 0x78, 0x03, 0xE0, 0x7E, 0x07, 0xC0, 0x47, 0xFF, 0x80, 0xC0, 0xFC, + 0x00, 0x3F, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xFC, 0xFE, 0x3F, 0x8F, 0x9E, + 0x07, 0xF0, 0xF3, 0x81, 0xFC, 0x0E, 0x60, 0x3F, 0x81, 0x98, 0x07, 0xF0, + 0x13, 0x00, 0xFC, 0x02, 0x00, 0x3F, 0x80, 0x40, 0x07, 0xF0, 0x00, 0x00, + 0xFE, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, 0xFE, 0x00, + 0x00, 0x1F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, + 0xC0, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, + 0x03, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xF8, + 0x00, 0x00, 0x7E, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xF8, 0x00, 0x00, + 0xFF, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x3F, 0xFF, 0xC0, 0x00, 0x7F, 0xFF, + 0x03, 0xFF, 0x0F, 0xFC, 0x00, 0xFC, 0x07, 0xF0, 0x00, 0x38, 0x07, 0xF0, + 0x00, 0x38, 0x07, 0xF0, 0x00, 0x30, 0x0F, 0xE0, 0x00, 0x30, 0x0F, 0xE0, + 0x00, 0x70, 0x0F, 0xE0, 0x00, 0x60, 0x0F, 0xE0, 0x00, 0x60, 0x1F, 0xC0, + 0x00, 0xE0, 0x1F, 0xC0, 0x00, 0xC0, 0x1F, 0xC0, 0x00, 0xC0, 0x3F, 0x80, + 0x00, 0xC0, 0x3F, 0x80, 0x01, 0x80, 0x3F, 0x80, 0x01, 0x80, 0x3F, 0x80, + 0x01, 0x80, 0x7F, 0x00, 0x01, 0x80, 0x7F, 0x00, 0x03, 0x00, 0x7F, 0x00, + 0x03, 0x00, 0x7E, 0x00, 0x03, 0x00, 0xFE, 0x00, 0x06, 0x00, 0xFE, 0x00, + 0x06, 0x00, 0xFC, 0x00, 0x06, 0x00, 0xFC, 0x00, 0x0E, 0x00, 0xFC, 0x00, + 0x0C, 0x00, 0xFC, 0x00, 0x1C, 0x00, 0xFC, 0x00, 0x18, 0x00, 0x7E, 0x00, + 0x38, 0x00, 0x7E, 0x00, 0x70, 0x00, 0x3F, 0x81, 0xE0, 0x00, 0x0F, 0xFF, + 0x80, 0x00, 0x03, 0xFE, 0x00, 0x00, 0xFF, 0xFC, 0x03, 0xFE, 0x7F, 0xE0, + 0x01, 0xF8, 0x7F, 0x80, 0x01, 0xC0, 0xFF, 0x00, 0x03, 0x80, 0xFE, 0x00, + 0x0E, 0x01, 0xFC, 0x00, 0x18, 0x03, 0xF8, 0x00, 0x70, 0x07, 0xF0, 0x00, + 0xC0, 0x0F, 0xF0, 0x03, 0x80, 0x1F, 0xE0, 0x0E, 0x00, 0x1F, 0xC0, 0x18, + 0x00, 0x3F, 0x80, 0x70, 0x00, 0x7F, 0x00, 0xC0, 0x00, 0xFE, 0x03, 0x00, + 0x01, 0xFC, 0x0E, 0x00, 0x03, 0xF8, 0x18, 0x00, 0x07, 0xF8, 0x60, 0x00, + 0x07, 0xF1, 0xC0, 0x00, 0x0F, 0xE3, 0x00, 0x00, 0x1F, 0xCC, 0x00, 0x00, + 0x3F, 0xB8, 0x00, 0x00, 0x7F, 0x60, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x00, + 0xFF, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x07, + 0xE0, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0xFF, 0xF8, + 0xFF, 0xF0, 0xFF, 0x9F, 0xF8, 0x1F, 0xE0, 0x0F, 0x87, 0xF8, 0x07, 0xE0, + 0x07, 0x03, 0xF8, 0x03, 0xF0, 0x03, 0x80, 0xFE, 0x01, 0xF8, 0x01, 0x80, + 0x7F, 0x00, 0xFC, 0x00, 0xC0, 0x3F, 0x80, 0x7F, 0x00, 0xC0, 0x1F, 0xC0, + 0x7F, 0x80, 0x60, 0x0F, 0xE0, 0x3F, 0xC0, 0x60, 0x07, 0xF0, 0x37, 0xE0, + 0x30, 0x03, 0xF8, 0x1B, 0xF0, 0x30, 0x00, 0xFC, 0x19, 0xF8, 0x18, 0x00, + 0x7E, 0x0C, 0xFE, 0x18, 0x00, 0x3F, 0x84, 0x7F, 0x0C, 0x00, 0x1F, 0xC6, + 0x3F, 0x8C, 0x00, 0x0F, 0xE2, 0x1F, 0xC6, 0x00, 0x07, 0xF3, 0x07, 0xE6, + 0x00, 0x03, 0xF9, 0x83, 0xF3, 0x00, 0x01, 0xFD, 0x81, 0xFB, 0x00, 0x00, + 0x7E, 0xC0, 0xFD, 0x80, 0x00, 0x3F, 0xC0, 0x7F, 0x80, 0x00, 0x1F, 0xE0, + 0x3F, 0xC0, 0x00, 0x0F, 0xE0, 0x1F, 0xC0, 0x00, 0x07, 0xF0, 0x0F, 0xE0, + 0x00, 0x03, 0xF0, 0x07, 0xE0, 0x00, 0x01, 0xF8, 0x01, 0xF0, 0x00, 0x00, + 0x78, 0x00, 0xF0, 0x00, 0x00, 0x3C, 0x00, 0x78, 0x00, 0x00, 0x1C, 0x00, + 0x38, 0x00, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x00, 0x06, 0x00, 0x0C, 0x00, + 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x03, 0xFF, 0xF0, 0xFF, 0xC0, 0x3F, + 0xE0, 0x0F, 0xC0, 0x03, 0xF8, 0x01, 0xE0, 0x00, 0xFE, 0x00, 0xE0, 0x00, + 0x3F, 0x80, 0x70, 0x00, 0x07, 0xE0, 0x18, 0x00, 0x01, 0xFC, 0x0C, 0x00, + 0x00, 0x7F, 0x06, 0x00, 0x00, 0x0F, 0xC3, 0x00, 0x00, 0x03, 0xF9, 0x80, + 0x00, 0x00, 0xFE, 0xC0, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x07, 0xF8, + 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x0F, + 0xC0, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, + 0xFF, 0x80, 0x00, 0x00, 0x77, 0xF0, 0x00, 0x00, 0x39, 0xFC, 0x00, 0x00, + 0x1C, 0x3F, 0x00, 0x00, 0x06, 0x0F, 0xE0, 0x00, 0x03, 0x03, 0xF8, 0x00, + 0x01, 0x80, 0x7E, 0x00, 0x00, 0xE0, 0x1F, 0xC0, 0x00, 0x70, 0x07, 0xF0, + 0x00, 0x38, 0x01, 0xFC, 0x00, 0x1E, 0x00, 0x7F, 0x80, 0x1F, 0xC0, 0x1F, + 0xF0, 0x0F, 0xFC, 0x3F, 0xFF, 0x80, 0xFF, 0xF8, 0x3F, 0xF3, 0xFC, 0x00, + 0xFC, 0x1F, 0xC0, 0x07, 0x81, 0xFC, 0x00, 0x70, 0x0F, 0xC0, 0x0E, 0x00, + 0xFE, 0x00, 0xC0, 0x0F, 0xE0, 0x1C, 0x00, 0x7E, 0x03, 0x80, 0x07, 0xF0, + 0x30, 0x00, 0x7F, 0x06, 0x00, 0x03, 0xF0, 0xE0, 0x00, 0x3F, 0x8C, 0x00, + 0x03, 0xF9, 0x80, 0x00, 0x1F, 0xB0, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x1F, + 0xE0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x01, 0xFC, 0x00, + 0x00, 0x1F, 0x80, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, + 0xF8, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x7F, 0x00, + 0x00, 0x07, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x01, + 0xFF, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xF0, 0x3F, + 0xFF, 0xFF, 0x03, 0xF8, 0x0F, 0xF0, 0x7C, 0x01, 0xFE, 0x07, 0x80, 0x3F, + 0xC0, 0x70, 0x03, 0xF8, 0x06, 0x00, 0x7F, 0x80, 0xC0, 0x0F, 0xF0, 0x08, + 0x01, 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x7F, + 0x80, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, + 0x03, 0xFC, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x07, 0xF8, 0x00, 0x00, 0xFF, + 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, + 0x07, 0xF8, 0x00, 0xC0, 0xFF, 0x00, 0x0C, 0x1F, 0xE0, 0x01, 0x81, 0xFE, + 0x00, 0x38, 0x3F, 0xC0, 0x07, 0x87, 0xF8, 0x01, 0xF0, 0xFF, 0x00, 0xFF, + 0x0F, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x7F, 0xE0, 0x0F, + 0xFC, 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, + 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF0, + 0x00, 0x1E, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x1E, 0x00, 0x03, 0xC0, + 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x1F, 0x00, + 0x03, 0xE0, 0x00, 0x78, 0x00, 0x0F, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, + 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xE0, 0x00, + 0x3C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xFE, 0x01, + 0xFF, 0xC0, 0x00, 0xF0, 0x07, 0x80, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x1C, + 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, + 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x07, 0x00, 0x3C, 0x01, 0xE0, 0x0F, 0x00, + 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x01, + 0xC0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x0F, 0x00, 0x78, 0x00, 0x7F, 0xE0, + 0x0F, 0xFC, 0x00, 0x0F, 0x80, 0x01, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, + 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, + 0x07, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF0, 0x00, + 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x1E, 0x00, 0x07, 0xC0, 0x00, + 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xC0, 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, + 0xE0, 0x00, 0x78, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x0F, + 0x00, 0x01, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xE0, 0x07, 0xFC, + 0x01, 0xFF, 0x80, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x7F, 0x00, + 0x03, 0xF8, 0x00, 0x3F, 0xC0, 0x01, 0xEF, 0x00, 0x1E, 0x78, 0x00, 0xF1, + 0xE0, 0x0F, 0x0F, 0x00, 0x78, 0x3C, 0x07, 0xC1, 0xE0, 0x3C, 0x07, 0x83, + 0xE0, 0x3C, 0x1E, 0x00, 0xF1, 0xF0, 0x07, 0x8F, 0x00, 0x1E, 0xF8, 0x00, + 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x70, 0x3E, + 0x0F, 0x83, 0xF0, 0x3E, 0x07, 0x80, 0xF0, 0x0E, 0x01, 0xC0, 0x00, 0x3C, + 0x0C, 0x03, 0xF9, 0xF0, 0x1F, 0x3F, 0x80, 0xF8, 0x7E, 0x07, 0xC1, 0xF8, + 0x3F, 0x07, 0xC0, 0xF8, 0x1F, 0x07, 0xE0, 0x7C, 0x3F, 0x01, 0xF0, 0xFC, + 0x0F, 0x87, 0xE0, 0x3E, 0x1F, 0x80, 0xF8, 0x7E, 0x03, 0xC3, 0xF8, 0x1F, + 0x0F, 0xC0, 0x7C, 0x3F, 0x03, 0xF0, 0xFC, 0x0F, 0x83, 0xF0, 0x7E, 0x3F, + 0xC2, 0xF8, 0xBF, 0x9B, 0xE4, 0x7F, 0xCF, 0xE0, 0xFE, 0x3F, 0x01, 0xE0, + 0x78, 0x00, 0x00, 0x7C, 0x00, 0x3F, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0x7E, + 0x00, 0x01, 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x1F, 0x00, 0x00, 0x7C, 0x00, + 0x03, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x3E, 0x3E, 0x01, 0xF9, 0xFC, 0x07, + 0xEF, 0xF8, 0x1F, 0x47, 0xF0, 0x7E, 0x0F, 0xC3, 0xF8, 0x3F, 0x0F, 0xC0, + 0xFC, 0x3F, 0x03, 0xF1, 0xF8, 0x0F, 0xC7, 0xE0, 0x3F, 0x1F, 0x01, 0xF8, + 0x7C, 0x07, 0xE3, 0xF0, 0x1F, 0x8F, 0xC0, 0xFC, 0x3E, 0x03, 0xF1, 0xF8, + 0x0F, 0x87, 0xE0, 0x7C, 0x1F, 0x03, 0xE0, 0xFC, 0x0F, 0x03, 0xF0, 0x78, + 0x0F, 0xC7, 0xC0, 0x1F, 0xFE, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x3F, 0x00, + 0x3F, 0xE0, 0x1E, 0x3C, 0x0F, 0x0F, 0x07, 0x87, 0xC3, 0xE1, 0xF1, 0xF0, + 0x38, 0xFC, 0x00, 0x3E, 0x00, 0x1F, 0x80, 0x07, 0xE0, 0x01, 0xF8, 0x00, + 0xFC, 0x00, 0x3F, 0x00, 0x0F, 0xC0, 0x03, 0xF0, 0x00, 0xFC, 0x03, 0x3F, + 0x00, 0xCF, 0xE0, 0x61, 0xFC, 0x70, 0x3F, 0xF8, 0x07, 0xFC, 0x00, 0xFC, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xC0, 0x00, 0x7F, 0xE0, 0x00, + 0x07, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x01, 0xF8, 0x00, 0x00, 0xFC, 0x00, + 0x00, 0x7C, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x1F, 0x80, + 0x07, 0x9F, 0x80, 0x0F, 0xFF, 0xC0, 0x0F, 0x9F, 0xE0, 0x0F, 0x87, 0xF0, + 0x0F, 0x83, 0xF0, 0x0F, 0xC1, 0xF8, 0x07, 0xC0, 0xFC, 0x07, 0xE0, 0x7C, + 0x07, 0xE0, 0x7E, 0x03, 0xF0, 0x3F, 0x03, 0xF0, 0x1F, 0x81, 0xF8, 0x0F, + 0x80, 0xFC, 0x0F, 0xC0, 0xFE, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x3F, 0x03, + 0xF0, 0x1F, 0x83, 0xF8, 0x0F, 0xC1, 0xF8, 0xC7, 0xE1, 0xFC, 0xC3, 0xF9, + 0xBE, 0xC0, 0xFF, 0x9F, 0xC0, 0x7F, 0x8F, 0xC0, 0x0F, 0x83, 0xC0, 0x00, + 0x00, 0x3F, 0x00, 0x3F, 0xE0, 0x1E, 0x3C, 0x0F, 0x0F, 0x07, 0x83, 0xC3, + 0xE0, 0xF1, 0xF0, 0x3C, 0xFC, 0x1E, 0x3F, 0x0F, 0x9F, 0x83, 0xC7, 0xE3, + 0xE1, 0xFB, 0xE0, 0xFF, 0xE0, 0x3F, 0xC0, 0x0F, 0xC0, 0x03, 0xF0, 0x00, + 0xFC, 0x03, 0x3F, 0x01, 0x8F, 0xC0, 0xC1, 0xF8, 0x70, 0x7F, 0xF8, 0x07, + 0xFC, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x03, 0xCE, 0x00, + 0x00, 0x78, 0xF0, 0x00, 0x0F, 0x8F, 0x00, 0x00, 0xF0, 0xF0, 0x00, 0x1F, + 0x06, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x03, 0xE0, 0x00, + 0x00, 0x3E, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x03, 0xFF, 0xC0, 0x00, 0x3F, + 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0xF8, 0x00, + 0x00, 0x0F, 0x80, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x01, + 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x3F, 0x00, + 0x00, 0x03, 0xF0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, + 0x7E, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x07, 0xC0, + 0x00, 0x00, 0xFC, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, + 0x0F, 0x80, 0x00, 0x01, 0xF0, 0x00, 0x06, 0x1F, 0x00, 0x00, 0xF1, 0xE0, + 0x00, 0x0F, 0x3E, 0x00, 0x00, 0xF3, 0xC0, 0x00, 0x07, 0xF8, 0x00, 0x00, + 0x3E, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x7F, 0xF0, 0x00, 0x7E, + 0x3F, 0xE0, 0x7C, 0x0F, 0xF0, 0x7E, 0x07, 0xC0, 0x7E, 0x03, 0xE0, 0x3F, + 0x01, 0xF0, 0x1F, 0x01, 0xF8, 0x0F, 0x80, 0xFC, 0x07, 0xC0, 0xFC, 0x01, + 0xE0, 0xFC, 0x00, 0x78, 0xFC, 0x00, 0x1F, 0xFC, 0x00, 0x0F, 0xF0, 0x00, + 0x1C, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x0F, 0xF8, 0x00, + 0x07, 0xFF, 0x80, 0x01, 0xFF, 0xF8, 0x00, 0x7F, 0xFE, 0x00, 0x77, 0xFF, + 0x80, 0xF0, 0x7F, 0xC0, 0xF0, 0x07, 0xE0, 0xF0, 0x01, 0xF0, 0x78, 0x00, + 0xF8, 0x3C, 0x00, 0x78, 0x1F, 0x00, 0x7C, 0x07, 0xC0, 0x78, 0x01, 0xFF, + 0xF8, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x1F, + 0xF0, 0x00, 0x07, 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x7E, + 0x00, 0x00, 0xFC, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0xC0, + 0x00, 0x1F, 0x87, 0xC0, 0x3E, 0x1F, 0xC0, 0xFC, 0x7F, 0x81, 0xF9, 0x9F, + 0x03, 0xE6, 0x3E, 0x07, 0xD8, 0x7C, 0x1F, 0xA0, 0xF8, 0x3F, 0x83, 0xF0, + 0x7F, 0x07, 0xE0, 0xFC, 0x0F, 0xC3, 0xF8, 0x3F, 0x07, 0xE0, 0x7E, 0x0F, + 0xC0, 0xFC, 0x3F, 0x03, 0xF0, 0x7E, 0x07, 0xE0, 0xFC, 0x0F, 0xC1, 0xF0, + 0x3F, 0x17, 0xE0, 0x7E, 0x6F, 0xC0, 0xF9, 0x9F, 0x01, 0xF6, 0x3E, 0x03, + 0xF8, 0xFC, 0x07, 0xF1, 0xC0, 0x07, 0x80, 0x01, 0xE0, 0x3F, 0x03, 0xF0, + 0x3F, 0x03, 0xF0, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC7, + 0xFC, 0x1F, 0xC0, 0xF8, 0x0F, 0x81, 0xF8, 0x1F, 0x81, 0xF0, 0x1F, 0x03, + 0xF0, 0x3E, 0x03, 0xE0, 0x3E, 0x07, 0xE0, 0x7C, 0x07, 0xC0, 0xFC, 0x2F, + 0x84, 0xF8, 0xCF, 0x98, 0xFF, 0x0F, 0xE0, 0x78, 0x00, 0x00, 0x00, 0x78, + 0x00, 0x03, 0xF0, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0xFC, 0x00, + 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0xFC, 0x00, 0x1F, 0xF0, 0x00, 0x1F, 0xC0, + 0x00, 0x3E, 0x00, 0x01, 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x1F, 0x80, 0x00, + 0x7C, 0x00, 0x03, 0xF0, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0xF8, + 0x00, 0x07, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0x7E, 0x00, 0x01, 0xF0, 0x00, + 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xE0, 0x00, 0x1F, + 0x80, 0x00, 0x7E, 0x00, 0x01, 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x3F, 0x00, + 0x60, 0xF8, 0x03, 0xC3, 0xC0, 0x0F, 0x1F, 0x00, 0x3C, 0xF8, 0x00, 0x7F, + 0xC0, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0xFC, 0x00, 0x07, + 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x01, + 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x01, 0xF0, 0x00, 0x03, + 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xE3, 0xFF, 0x03, 0xE0, 0xFC, 0x07, + 0xE0, 0xF0, 0x07, 0xE0, 0xE0, 0x07, 0xC1, 0xC0, 0x0F, 0xC3, 0x80, 0x0F, + 0xC7, 0x00, 0x0F, 0x8E, 0x00, 0x0F, 0xBE, 0x00, 0x1F, 0xFE, 0x00, 0x1F, + 0xFE, 0x00, 0x1F, 0xFE, 0x00, 0x1F, 0x3E, 0x00, 0x3F, 0x3F, 0x00, 0x3F, + 0x1F, 0x00, 0x3E, 0x1F, 0x00, 0x7E, 0x1F, 0x04, 0x7E, 0x1F, 0x8C, 0x7E, + 0x0F, 0x98, 0x7C, 0x0F, 0xF0, 0xFC, 0x07, 0xE0, 0xE0, 0x03, 0xC0, 0x00, + 0x08, 0x0F, 0xC7, 0xFE, 0x07, 0xF0, 0x3F, 0x01, 0xF8, 0x0F, 0xC0, 0x7C, + 0x07, 0xE0, 0x3F, 0x01, 0xF8, 0x0F, 0x80, 0x7C, 0x07, 0xE0, 0x3E, 0x01, + 0xF0, 0x1F, 0x80, 0xFC, 0x07, 0xC0, 0x3E, 0x03, 0xF0, 0x1F, 0x80, 0xF8, + 0x0F, 0xC0, 0x7E, 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x8F, 0x8C, 0x7C, 0x43, + 0xE4, 0x1F, 0xE0, 0xFE, 0x03, 0xC0, 0x00, 0x00, 0x70, 0x78, 0x0F, 0x83, + 0xFE, 0x3F, 0x87, 0xF8, 0x1F, 0xCF, 0xF1, 0xFF, 0x03, 0xF1, 0x3E, 0x73, + 0xE0, 0x7E, 0x47, 0xD8, 0x7C, 0x0F, 0xD0, 0xFB, 0x1F, 0x81, 0xF4, 0x3E, + 0xC3, 0xF0, 0x3E, 0x87, 0xF0, 0x7C, 0x0F, 0xE0, 0xFE, 0x1F, 0x81, 0xF4, + 0x1F, 0x83, 0xF0, 0x3F, 0x07, 0xE0, 0x7C, 0x07, 0xE0, 0xFC, 0x1F, 0x81, + 0xF8, 0x1F, 0x83, 0xF0, 0x3F, 0x07, 0xE0, 0x7C, 0x07, 0xE0, 0xFC, 0x0F, + 0x80, 0xF8, 0x1F, 0x03, 0xF0, 0x3F, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0xFC, + 0x0F, 0x88, 0xF8, 0x1F, 0x81, 0xF3, 0x3F, 0x03, 0xE0, 0x3E, 0x47, 0xE0, + 0xFC, 0x07, 0xF0, 0xFC, 0x1F, 0x80, 0xFE, 0x18, 0x00, 0x00, 0x0F, 0x00, + 0x00, 0x70, 0xF8, 0x7F, 0xC3, 0xF8, 0x1F, 0x8F, 0xF0, 0x3F, 0x33, 0xE0, + 0x7C, 0x87, 0xC1, 0xF9, 0x0F, 0x83, 0xF4, 0x1F, 0x07, 0xD0, 0x3E, 0x0F, + 0xE0, 0xFC, 0x3F, 0x81, 0xF8, 0x7F, 0x03, 0xE0, 0xFC, 0x0F, 0xC1, 0xF8, + 0x1F, 0x87, 0xE0, 0x3E, 0x0F, 0xC0, 0xFC, 0x1F, 0x81, 0xF0, 0x3E, 0x03, + 0xE0, 0xFC, 0x0F, 0xC9, 0xF8, 0x1F, 0x33, 0xE0, 0x3E, 0x47, 0xC0, 0x7F, + 0x1F, 0x80, 0xFE, 0x38, 0x00, 0xF0, 0x00, 0x00, 0x3F, 0x00, 0x0E, 0x38, + 0x03, 0xC1, 0xC0, 0x78, 0x1E, 0x0F, 0x81, 0xF0, 0xF0, 0x1F, 0x1F, 0x01, + 0xF3, 0xE0, 0x1F, 0x3E, 0x03, 0xF7, 0xC0, 0x3F, 0x7C, 0x03, 0xF7, 0xC0, + 0x3E, 0xFC, 0x03, 0xEF, 0xC0, 0x7E, 0xF8, 0x07, 0xCF, 0x80, 0x7C, 0xF8, + 0x0F, 0x8F, 0x80, 0xF8, 0xF8, 0x1F, 0x07, 0x81, 0xE0, 0x78, 0x3C, 0x03, + 0xC7, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x0F, 0x1F, 0x00, 0x3F, 0xE7, 0xF8, + 0x01, 0xF9, 0xFF, 0x00, 0x1F, 0x47, 0xF0, 0x07, 0xF0, 0x7E, 0x00, 0xFE, + 0x0F, 0xC0, 0x1F, 0x81, 0xF8, 0x03, 0xF0, 0x3F, 0x00, 0xFC, 0x07, 0xE0, + 0x1F, 0x81, 0xFC, 0x03, 0xE0, 0x3F, 0x00, 0x7C, 0x07, 0xE0, 0x1F, 0x81, + 0xFC, 0x03, 0xF0, 0x3F, 0x00, 0x7C, 0x07, 0xE0, 0x0F, 0x81, 0xF8, 0x03, + 0xF0, 0x3E, 0x00, 0x7E, 0x0F, 0xC0, 0x0F, 0x81, 0xF0, 0x01, 0xF0, 0x7C, + 0x00, 0x7F, 0x1F, 0x00, 0x0F, 0xFF, 0xC0, 0x01, 0xF3, 0xE0, 0x00, 0x3E, + 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x3E, 0x00, 0x00, + 0x0F, 0xC0, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0xFC, + 0x00, 0x00, 0x00, 0x3E, 0x00, 0x03, 0xF9, 0xF0, 0x1F, 0x1F, 0xC0, 0xF8, + 0x7E, 0x07, 0xC1, 0xF8, 0x3F, 0x07, 0xE0, 0xF8, 0x1F, 0x87, 0xE0, 0x7C, + 0x3F, 0x01, 0xF0, 0xFC, 0x0F, 0xC7, 0xE0, 0x3E, 0x1F, 0x80, 0xF8, 0x7E, + 0x07, 0xE3, 0xF0, 0x1F, 0x8F, 0xC0, 0x7C, 0x3F, 0x03, 0xF0, 0xFC, 0x0F, + 0xC3, 0xF0, 0x7E, 0x0F, 0xC3, 0xF8, 0x3F, 0x9B, 0xE0, 0x7F, 0xDF, 0x01, + 0xFE, 0x7C, 0x01, 0xF1, 0xF0, 0x00, 0x0F, 0xC0, 0x00, 0x3E, 0x00, 0x00, + 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0x7C, 0x00, 0x03, 0xF8, + 0x00, 0x7F, 0xF8, 0x00, 0x00, 0x71, 0xE1, 0xFF, 0x3E, 0x07, 0xE7, 0xF0, + 0x7E, 0xFF, 0x07, 0xE9, 0xE0, 0x7D, 0x0E, 0x07, 0xD0, 0x00, 0xFE, 0x00, + 0x0F, 0xE0, 0x00, 0xFC, 0x00, 0x0F, 0xC0, 0x01, 0xFC, 0x00, 0x1F, 0x80, + 0x01, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x03, 0xF0, + 0x00, 0x7E, 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0x07, 0xC0, 0x00, 0x01, + 0xF1, 0x07, 0xFF, 0x0F, 0x0F, 0x0E, 0x07, 0x1E, 0x06, 0x1E, 0x06, 0x1F, + 0x02, 0x1F, 0x02, 0x1F, 0x80, 0x0F, 0xC0, 0x0F, 0xE0, 0x0F, 0xF0, 0x07, + 0xF8, 0x03, 0xF8, 0x01, 0xFC, 0x00, 0xFC, 0x40, 0x7C, 0x40, 0x7C, 0x60, + 0x3C, 0xE0, 0x38, 0xF0, 0x38, 0xF8, 0xF0, 0xDF, 0xC0, 0x00, 0x20, 0x03, + 0x00, 0x38, 0x03, 0x80, 0x3C, 0x03, 0xE0, 0x7F, 0x07, 0xFF, 0x3F, 0xF8, + 0x7C, 0x07, 0xE0, 0x3F, 0x01, 0xF0, 0x0F, 0x80, 0xFC, 0x07, 0xC0, 0x3E, + 0x03, 0xF0, 0x1F, 0x80, 0xF8, 0x07, 0xC0, 0x7E, 0x03, 0xF1, 0x1F, 0x08, + 0xF8, 0x87, 0xC8, 0x3F, 0xC1, 0xFC, 0x07, 0x80, 0x00, 0x00, 0x40, 0x00, + 0x1F, 0x03, 0xF7, 0xF8, 0x0F, 0x87, 0xE0, 0x3E, 0x1F, 0x81, 0xF8, 0x7E, + 0x07, 0xC1, 0xF0, 0x1F, 0x07, 0xC0, 0xFC, 0x3F, 0x03, 0xE0, 0xF8, 0x0F, + 0x83, 0xE0, 0x7E, 0x0F, 0x81, 0xF8, 0x7E, 0x0F, 0xC1, 0xF0, 0x3F, 0x07, + 0xC1, 0xFC, 0x1F, 0x07, 0xE0, 0xF8, 0x2F, 0x83, 0xE1, 0x3C, 0x6F, 0x8D, + 0xF1, 0x3E, 0x67, 0xC8, 0xFF, 0x1F, 0xE3, 0xF8, 0x7F, 0x07, 0xC0, 0xF0, + 0x00, 0x06, 0x07, 0x1F, 0x07, 0xBF, 0x83, 0xE7, 0xC1, 0xF3, 0xE0, 0xF9, + 0xF8, 0x3C, 0x7C, 0x0C, 0x3E, 0x06, 0x1F, 0x03, 0x0F, 0x83, 0x07, 0xC1, + 0x83, 0xE1, 0x81, 0xF1, 0x80, 0xF9, 0x80, 0x7C, 0xC0, 0x3E, 0xC0, 0x1F, + 0xC0, 0x0F, 0xC0, 0x07, 0xC0, 0x03, 0xC0, 0x01, 0xC0, 0x00, 0xC0, 0x00, + 0x40, 0x00, 0x06, 0x01, 0x81, 0xC7, 0xC0, 0x30, 0x7F, 0xF8, 0x0E, 0x0F, + 0x9F, 0x01, 0xC1, 0xF3, 0xE0, 0x78, 0x3E, 0x7C, 0x1F, 0x03, 0xCF, 0xC3, + 0xE0, 0x30, 0xF8, 0xFC, 0x06, 0x1F, 0x1F, 0xC0, 0x83, 0xE7, 0xF8, 0x30, + 0x7C, 0xFF, 0x04, 0x0F, 0xB7, 0xE1, 0x81, 0xF6, 0xFC, 0x60, 0x3F, 0x8F, + 0x98, 0x07, 0xE1, 0xF3, 0x00, 0xFC, 0x3E, 0xC0, 0x1F, 0x07, 0xF0, 0x03, + 0xE0, 0xFC, 0x00, 0x78, 0x1F, 0x80, 0x0F, 0x03, 0xE0, 0x01, 0xC0, 0x78, + 0x00, 0x30, 0x0E, 0x00, 0x06, 0x01, 0x80, 0x00, 0x00, 0xF0, 0x1E, 0x0F, + 0xF0, 0x3E, 0x01, 0xF8, 0x7F, 0x01, 0xF8, 0xFF, 0x00, 0xF9, 0x8E, 0x00, + 0xFB, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7C, 0x00, 0x00, + 0x7C, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, + 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xBF, 0x00, 0x01, + 0xBF, 0x08, 0x73, 0x1F, 0x18, 0xFF, 0x1F, 0x30, 0xFE, 0x1F, 0xE0, 0xFC, + 0x0F, 0xC0, 0x78, 0x07, 0x80, 0x00, 0x30, 0x1C, 0x0F, 0xF0, 0x7C, 0x07, + 0xE0, 0xF8, 0x0F, 0xC1, 0xF0, 0x0F, 0xC1, 0xE0, 0x1F, 0x81, 0xC0, 0x3F, + 0x03, 0x00, 0x3E, 0x06, 0x00, 0x7E, 0x08, 0x00, 0xFC, 0x30, 0x01, 0xF8, + 0x60, 0x01, 0xF1, 0x80, 0x03, 0xE3, 0x00, 0x07, 0xCC, 0x00, 0x0F, 0xD8, + 0x00, 0x1F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0x7E, 0x00, + 0x00, 0xF8, 0x00, 0x01, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x00, 0x00, + 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x60, 0x01, 0xC1, 0x80, 0x07, 0xE6, + 0x00, 0x0F, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x07, + 0xFF, 0xE1, 0xFF, 0xF8, 0x3F, 0xFF, 0x07, 0xFF, 0xC0, 0x80, 0x70, 0x30, + 0x1C, 0x04, 0x07, 0x00, 0x00, 0xC0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, + 0x80, 0x00, 0x60, 0x00, 0x18, 0x00, 0x06, 0x00, 0x01, 0xC0, 0x00, 0x30, + 0x00, 0x0C, 0x00, 0x03, 0xE0, 0x00, 0xFE, 0x00, 0x1F, 0xE0, 0xC7, 0xFC, + 0x3D, 0xCF, 0xC7, 0x90, 0xF8, 0xF0, 0x07, 0x9C, 0x00, 0x3E, 0x00, 0x00, + 0x01, 0xF0, 0x00, 0xFC, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, + 0x07, 0xC0, 0x00, 0x78, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x80, + 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x03, 0xE0, + 0x00, 0x3E, 0x00, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x0F, 0xC0, + 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, + 0x80, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x03, + 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, + 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7E, 0x00, + 0x03, 0xF0, 0x00, 0x07, 0xC0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, + 0x3E, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xE0, + 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, + 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, + 0x80, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x00, + 0xF8, 0x00, 0x03, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x03, 0xE0, 0x00, + 0x7C, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, + 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, + 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x0F, 0x80, + 0x03, 0xF0, 0x00, 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x03, 0xFF, 0x01, 0x3F, + 0xFE, 0x1D, 0xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0x00, 0x1F, 0xF0, 0x00, 0x1F, + 0x00}; + +const GFXglyph FreeSerifBoldItalic24pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 12, 0, 1}, // 0x20 ' ' + {0, 15, 33, 18, 3, -31}, // 0x21 '!' + {62, 19, 13, 26, 6, -31}, // 0x22 '"' + {93, 27, 33, 23, -2, -32}, // 0x23 '#' + {205, 24, 39, 24, -1, -33}, // 0x24 '$' + {322, 35, 32, 39, 2, -30}, // 0x25 '%' + {462, 33, 33, 37, 0, -31}, // 0x26 '&' + {599, 7, 13, 13, 6, -31}, // 0x27 ''' + {611, 14, 41, 16, 1, -31}, // 0x28 '(' + {683, 14, 41, 16, -2, -31}, // 0x29 ')' + {755, 19, 20, 23, 3, -31}, // 0x2A '*' + {803, 22, 23, 27, 2, -22}, // 0x2B '+' + {867, 10, 15, 12, -3, -5}, // 0x2C ',' + {886, 12, 5, 16, 0, -12}, // 0x2D '-' + {894, 8, 7, 12, 0, -5}, // 0x2E '.' + {901, 19, 33, 16, 0, -31}, // 0x2F '/' + {980, 22, 33, 23, 1, -31}, // 0x30 '0' + {1071, 20, 32, 23, 0, -31}, // 0x31 '1' + {1151, 22, 32, 23, 1, -31}, // 0x32 '2' + {1239, 22, 33, 24, 0, -31}, // 0x33 '3' + {1330, 25, 32, 23, 0, -31}, // 0x34 '4' + {1430, 24, 32, 24, 0, -30}, // 0x35 '5' + {1526, 23, 32, 24, 1, -30}, // 0x36 '6' + {1618, 23, 31, 23, 3, -30}, // 0x37 '7' + {1708, 21, 33, 23, 1, -31}, // 0x38 '8' + {1795, 23, 33, 23, 0, -31}, // 0x39 '9' + {1890, 13, 22, 12, 0, -20}, // 0x3A ':' + {1926, 15, 30, 12, -2, -20}, // 0x3B ';' + {1983, 24, 25, 27, 1, -23}, // 0x3C '<' + {2058, 24, 14, 27, 3, -18}, // 0x3D '=' + {2100, 24, 25, 27, 3, -23}, // 0x3E '>' + {2175, 18, 33, 24, 4, -31}, // 0x3F '?' + {2250, 33, 33, 39, 3, -31}, // 0x40 '@' + {2387, 31, 32, 33, 0, -31}, // 0x41 'A' + {2511, 31, 31, 30, 0, -30}, // 0x42 'B' + {2632, 29, 33, 29, 2, -31}, // 0x43 'C' + {2752, 35, 31, 34, 0, -30}, // 0x44 'D' + {2888, 32, 31, 30, 0, -30}, // 0x45 'E' + {3012, 31, 31, 29, 0, -30}, // 0x46 'F' + {3133, 32, 33, 33, 2, -31}, // 0x47 'G' + {3265, 39, 31, 35, 0, -30}, // 0x48 'H' + {3417, 21, 31, 18, 0, -30}, // 0x49 'I' + {3499, 27, 36, 23, 0, -30}, // 0x4A 'J' + {3621, 34, 31, 31, 0, -30}, // 0x4B 'K' + {3753, 29, 31, 29, 0, -30}, // 0x4C 'L' + {3866, 44, 32, 41, 0, -30}, // 0x4D 'M' + {4042, 37, 32, 33, 0, -30}, // 0x4E 'N' + {4190, 31, 33, 32, 2, -31}, // 0x4F 'O' + {4318, 31, 31, 28, 0, -30}, // 0x50 'P' + {4439, 31, 42, 32, 2, -31}, // 0x51 'Q' + {4602, 32, 31, 31, 0, -30}, // 0x52 'R' + {4726, 24, 33, 24, 0, -31}, // 0x53 'S' + {4825, 27, 31, 28, 4, -30}, // 0x54 'T' + {4930, 32, 32, 34, 5, -30}, // 0x55 'U' + {5058, 31, 32, 33, 6, -30}, // 0x56 'V' + {5182, 41, 32, 44, 6, -30}, // 0x57 'W' + {5346, 34, 31, 33, 0, -30}, // 0x58 'X' + {5478, 28, 31, 30, 6, -30}, // 0x59 'Y' + {5587, 28, 31, 26, 0, -30}, // 0x5A 'Z' + {5696, 19, 38, 16, -2, -30}, // 0x5B '[' + {5787, 13, 33, 19, 6, -31}, // 0x5C '\' + {5841, 19, 38, 16, -3, -30}, // 0x5D ']' + {5932, 21, 17, 27, 3, -30}, // 0x5E '^' + {5977, 24, 3, 23, 0, 5}, // 0x5F '_' + {5986, 10, 9, 16, 4, -32}, // 0x60 '`' + {5998, 22, 23, 24, 1, -21}, // 0x61 'a' + {6062, 22, 33, 23, 1, -31}, // 0x62 'b' + {6153, 18, 23, 20, 1, -21}, // 0x63 'c' + {6205, 25, 34, 24, 1, -32}, // 0x64 'd' + {6312, 18, 23, 20, 1, -21}, // 0x65 'e' + {6364, 28, 41, 23, -4, -31}, // 0x66 'f' + {6508, 25, 31, 23, -1, -21}, // 0x67 'g' + {6605, 23, 34, 26, 1, -32}, // 0x68 'h' + {6703, 12, 33, 14, 2, -31}, // 0x69 'i' + {6753, 22, 42, 16, -4, -31}, // 0x6A 'j' + {6869, 24, 34, 24, 1, -32}, // 0x6B 'k' + {6971, 13, 34, 14, 2, -32}, // 0x6C 'l' + {7027, 35, 23, 36, 0, -21}, // 0x6D 'm' + {7128, 23, 23, 25, 0, -21}, // 0x6E 'n' + {7195, 20, 23, 22, 1, -21}, // 0x6F 'o' + {7253, 27, 31, 23, -4, -21}, // 0x70 'p' + {7358, 22, 31, 23, 1, -21}, // 0x71 'q' + {7444, 20, 22, 19, 0, -21}, // 0x72 'r' + {7499, 16, 23, 17, 0, -21}, // 0x73 's' + {7545, 13, 29, 13, 2, -27}, // 0x74 't' + {7593, 22, 23, 25, 2, -21}, // 0x75 'u' + {7657, 17, 23, 21, 3, -21}, // 0x76 'v' + {7706, 27, 23, 31, 3, -21}, // 0x77 'w' + {7784, 24, 23, 22, -1, -21}, // 0x78 'x' + {7853, 23, 31, 20, -3, -21}, // 0x79 'y' + {7943, 19, 25, 19, 0, -20}, // 0x7A 'z' + {8003, 20, 41, 16, 0, -31}, // 0x7B '{' + {8106, 4, 33, 13, 5, -31}, // 0x7C '|' + {8123, 20, 41, 16, -6, -31}, // 0x7D '}' + {8226, 21, 7, 27, 3, -14}}; // 0x7E '~' + +const GFXfont FreeSerifBoldItalic24pt7b PROGMEM = { + (uint8_t *)FreeSerifBoldItalic24pt7bBitmaps, + (GFXglyph *)FreeSerifBoldItalic24pt7bGlyphs, 0x20, 0x7E, 56}; + +// Approx. 8917 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerifBoldItalic9pt7b.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerifBoldItalic9pt7b.h new file mode 100644 index 0000000..b5d9a55 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerifBoldItalic9pt7b.h @@ -0,0 +1,217 @@ +#pragma once +#include + +const uint8_t FreeSerifBoldItalic9pt7bBitmaps[] PROGMEM = { + 0x0C, 0x31, 0xC6, 0x18, 0x41, 0x08, 0x20, 0x0E, 0x38, 0xE0, 0xCF, 0x38, + 0xA2, 0x88, 0x02, 0x40, 0xC8, 0x13, 0x06, 0x43, 0xFC, 0x32, 0x06, 0x40, + 0x98, 0x7F, 0x84, 0xC0, 0x90, 0x32, 0x04, 0xC0, 0x01, 0x01, 0xF0, 0x4B, + 0x99, 0x33, 0x24, 0x78, 0x07, 0x80, 0x38, 0x0B, 0x89, 0x31, 0x26, 0x64, + 0xC7, 0x30, 0x3C, 0x04, 0x00, 0x38, 0x41, 0x9F, 0x06, 0x48, 0x31, 0x60, + 0xCD, 0x03, 0x2C, 0x07, 0x27, 0x81, 0x39, 0x05, 0xC4, 0x26, 0x10, 0x98, + 0x84, 0x66, 0x10, 0xE0, 0x03, 0x80, 0x22, 0x03, 0x10, 0x19, 0x00, 0xF0, + 0x0F, 0x3C, 0xF8, 0xCC, 0xC4, 0xE7, 0x47, 0x3E, 0x38, 0xE1, 0xE7, 0x97, + 0xCF, 0x00, 0xFA, 0x80, 0x08, 0x88, 0x84, 0x62, 0x10, 0x84, 0x21, 0x08, + 0x41, 0x00, 0x20, 0x84, 0x10, 0x84, 0x21, 0x08, 0xC6, 0x23, 0x11, 0x00, + 0x18, 0x18, 0xD6, 0x38, 0x18, 0xF7, 0x18, 0x18, 0x08, 0x04, 0x02, 0x01, + 0x0F, 0xF8, 0x40, 0x20, 0x10, 0x08, 0x00, 0x6D, 0x95, 0x00, 0xFF, 0xC0, + 0xFF, 0x80, 0x06, 0x0C, 0x30, 0x60, 0x83, 0x04, 0x18, 0x20, 0xC1, 0x06, + 0x00, 0x0F, 0x0C, 0x8C, 0x6E, 0x37, 0x1B, 0x1F, 0x8F, 0xC7, 0xC7, 0x63, + 0xB1, 0x89, 0x83, 0x80, 0x06, 0x1E, 0x0E, 0x0E, 0x0C, 0x0C, 0x1C, 0x18, + 0x18, 0x18, 0x38, 0x38, 0xFC, 0x1F, 0x13, 0xD0, 0xE0, 0x70, 0x38, 0x38, + 0x18, 0x18, 0x18, 0x08, 0x08, 0x4F, 0xCF, 0xE0, 0x1F, 0x11, 0xC0, 0xE0, + 0x60, 0xC1, 0xF0, 0x38, 0x0C, 0x06, 0x03, 0x01, 0x19, 0x8F, 0x00, 0x00, + 0x80, 0xC0, 0xE1, 0xE0, 0xB0, 0x98, 0x9C, 0x8C, 0xFF, 0x07, 0x03, 0x01, + 0x80, 0x0F, 0x88, 0x08, 0x07, 0x83, 0xE0, 0x78, 0x1C, 0x06, 0x03, 0x01, + 0x80, 0x9C, 0x87, 0x80, 0x03, 0x87, 0x07, 0x07, 0x07, 0x03, 0xE3, 0x99, + 0xCC, 0xC6, 0x63, 0x33, 0x89, 0x87, 0x80, 0x3F, 0xBF, 0x90, 0x80, 0xC0, + 0x40, 0x60, 0x20, 0x30, 0x30, 0x10, 0x18, 0x08, 0x00, 0x1E, 0x13, 0x31, + 0x31, 0x3A, 0x1C, 0x1C, 0x6E, 0xC6, 0xC6, 0xC6, 0x44, 0x38, 0x0E, 0x1C, + 0x8C, 0x6C, 0x36, 0x3B, 0x1D, 0x8E, 0x7E, 0x0E, 0x07, 0x07, 0x0E, 0x0C, + 0x00, 0x39, 0xCE, 0x00, 0x03, 0x9C, 0xE0, 0x39, 0xCE, 0x00, 0x01, 0x8C, + 0x22, 0x20, 0x00, 0x01, 0xC3, 0xC7, 0x8E, 0x06, 0x01, 0xE0, 0x3C, 0x07, + 0x80, 0x40, 0xFF, 0x80, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x60, 0x1E, 0x03, + 0xC0, 0x78, 0x1C, 0x3C, 0x78, 0xF0, 0x40, 0x00, 0x1C, 0x27, 0x37, 0x07, + 0x0E, 0x1C, 0x30, 0x60, 0x40, 0x00, 0xE0, 0xE0, 0xE0, 0x0F, 0x80, 0xC3, + 0x08, 0x04, 0xC3, 0x3C, 0x24, 0xE2, 0x27, 0x33, 0x39, 0x11, 0xC9, 0x93, + 0x77, 0x18, 0x00, 0x70, 0x40, 0xFC, 0x00, 0x00, 0x80, 0x18, 0x01, 0x80, + 0x38, 0x05, 0x80, 0x5C, 0x09, 0xC1, 0x1C, 0x1F, 0xC2, 0x0C, 0x20, 0xC4, + 0x0E, 0xF3, 0xF0, 0x3F, 0xE0, 0xC7, 0x0C, 0x71, 0xC7, 0x1C, 0xE1, 0xF0, + 0x39, 0xC3, 0x8E, 0x38, 0xE3, 0x0E, 0x71, 0xE7, 0x1C, 0xFF, 0x00, 0x07, + 0xD1, 0xC7, 0x38, 0x27, 0x02, 0x70, 0x0F, 0x00, 0xE0, 0x0E, 0x00, 0xE0, + 0x0E, 0x00, 0x60, 0x87, 0x18, 0x1E, 0x00, 0x3F, 0xE0, 0x30, 0xE0, 0xC1, + 0x87, 0x07, 0x1C, 0x1C, 0x60, 0x73, 0x81, 0xCE, 0x07, 0x38, 0x38, 0xC0, + 0xE7, 0x07, 0x1C, 0x78, 0xFF, 0x80, 0x1F, 0xF8, 0x61, 0xC3, 0x04, 0x38, + 0x81, 0xCC, 0x0F, 0xE0, 0xE2, 0x07, 0x10, 0x38, 0x81, 0x81, 0x1C, 0x18, + 0xE3, 0x8F, 0xFC, 0x00, 0x3F, 0xF8, 0x61, 0xC3, 0x04, 0x38, 0x81, 0xCC, + 0x0F, 0xE0, 0xE2, 0x07, 0x10, 0x38, 0x81, 0x80, 0x1C, 0x00, 0xE0, 0x0F, + 0x80, 0x00, 0x07, 0x91, 0xC7, 0x38, 0x27, 0x00, 0x70, 0x0F, 0x00, 0xE1, + 0xFE, 0x0E, 0xE0, 0xCE, 0x0C, 0x60, 0xC7, 0x1C, 0x1F, 0x00, 0x1F, 0x7E, + 0x1C, 0x38, 0x30, 0x60, 0xE1, 0xC1, 0xC3, 0x83, 0x06, 0x0F, 0xFC, 0x1C, + 0x38, 0x38, 0x70, 0x60, 0xC1, 0xC3, 0x83, 0x87, 0x0F, 0x9F, 0x00, 0x3F, + 0x0C, 0x0C, 0x1C, 0x1C, 0x18, 0x38, 0x38, 0x38, 0x30, 0x70, 0x70, 0xF8, + 0x07, 0xC0, 0xE0, 0x38, 0x0C, 0x07, 0x01, 0xC0, 0x70, 0x18, 0x0E, 0x03, + 0x80, 0xC3, 0x30, 0xDC, 0x1E, 0x00, 0x1F, 0x78, 0x71, 0x83, 0x18, 0x39, + 0x81, 0xD0, 0x0D, 0x00, 0xFC, 0x07, 0x60, 0x3B, 0x81, 0x8C, 0x1C, 0x70, + 0xE1, 0x8F, 0xBE, 0x00, 0x1F, 0x00, 0xC0, 0x0C, 0x01, 0xC0, 0x1C, 0x01, + 0x80, 0x38, 0x03, 0x80, 0x38, 0x03, 0x01, 0x70, 0x37, 0x0E, 0xFF, 0xE0, + 0x1E, 0x07, 0x87, 0x07, 0x83, 0x83, 0x82, 0xC3, 0xC1, 0x62, 0xE0, 0xB1, + 0x70, 0x99, 0x30, 0x4D, 0xB8, 0x27, 0x9C, 0x13, 0x8C, 0x11, 0xC6, 0x0C, + 0xC7, 0x0F, 0x47, 0xC0, 0x3C, 0x3C, 0x38, 0x20, 0xE0, 0x85, 0xC4, 0x13, + 0x10, 0x4E, 0x42, 0x3A, 0x08, 0x78, 0x21, 0xE0, 0x83, 0x84, 0x0C, 0x18, + 0x10, 0x00, 0x40, 0x07, 0xC1, 0xCE, 0x38, 0x73, 0x87, 0x70, 0x77, 0x07, + 0xF0, 0xFE, 0x0E, 0xE0, 0xEE, 0x1C, 0xE1, 0xC6, 0x38, 0x3E, 0x00, 0x3F, + 0xC0, 0xC7, 0x0C, 0x71, 0xC7, 0x1C, 0x71, 0x8E, 0x3F, 0xC3, 0x80, 0x30, + 0x03, 0x00, 0x70, 0x07, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0xCE, 0x38, 0x73, + 0x87, 0x70, 0x77, 0x07, 0xF0, 0x7E, 0x0E, 0xE0, 0xEE, 0x0C, 0xE1, 0xC6, + 0x38, 0x36, 0x01, 0x80, 0x3C, 0x2D, 0xFC, 0x3F, 0xC0, 0xE7, 0x0C, 0x71, + 0xC7, 0x1C, 0x71, 0x8E, 0x3F, 0x83, 0xB8, 0x3B, 0x83, 0x3C, 0x71, 0xC7, + 0x1C, 0xF9, 0xF0, 0x0C, 0x89, 0x8C, 0x46, 0x23, 0x80, 0xE0, 0x78, 0x0E, + 0x03, 0x21, 0x90, 0xCC, 0xC9, 0xC0, 0x7F, 0xE9, 0xDF, 0x31, 0x4E, 0x21, + 0xC0, 0x38, 0x06, 0x01, 0xC0, 0x38, 0x06, 0x00, 0xC0, 0x38, 0x0F, 0xC0, + 0x7C, 0xF3, 0x82, 0x30, 0x27, 0x04, 0x70, 0x46, 0x04, 0xE0, 0x4E, 0x08, + 0xE0, 0x8E, 0x08, 0xE1, 0x0F, 0x30, 0x3C, 0x00, 0xFC, 0x73, 0x82, 0x38, + 0x23, 0x84, 0x38, 0x83, 0x90, 0x39, 0x01, 0xA0, 0x1C, 0x01, 0xC0, 0x18, + 0x01, 0x00, 0xF9, 0xF7, 0x30, 0xE2, 0x30, 0xC2, 0x38, 0xC4, 0x3B, 0xC4, + 0x3A, 0xE8, 0x3C, 0xE8, 0x3C, 0xF0, 0x18, 0xF0, 0x18, 0x60, 0x10, 0x60, + 0x10, 0x40, 0x3F, 0x78, 0x61, 0x83, 0x98, 0x1D, 0x00, 0x70, 0x03, 0x80, + 0x1C, 0x01, 0x60, 0x0B, 0x80, 0x9C, 0x08, 0x60, 0xC3, 0x8F, 0x7E, 0x00, + 0xF9, 0xE6, 0x18, 0xC2, 0x1C, 0x81, 0xA0, 0x34, 0x07, 0x00, 0xC0, 0x18, + 0x07, 0x00, 0xE0, 0x1C, 0x0F, 0xC0, 0x3F, 0xE6, 0x19, 0x87, 0x21, 0xC0, + 0x30, 0x0E, 0x03, 0x80, 0x60, 0x1C, 0x07, 0x05, 0xC1, 0x38, 0xEF, 0xFC, + 0x0E, 0x08, 0x18, 0x18, 0x18, 0x10, 0x30, 0x30, 0x30, 0x20, 0x60, 0x60, + 0x60, 0x40, 0xF0, 0xC6, 0x10, 0xC6, 0x10, 0x86, 0x30, 0x86, 0x30, 0x1E, + 0x0C, 0x18, 0x20, 0xC1, 0x83, 0x04, 0x18, 0x30, 0x60, 0x83, 0x06, 0x3C, + 0x00, 0x18, 0x1C, 0x34, 0x26, 0x66, 0x43, 0xC3, 0xFF, 0x80, 0xC6, 0x30, + 0x0D, 0x9D, 0x8C, 0xCC, 0x6E, 0x26, 0x33, 0x19, 0xBE, 0x66, 0x00, 0x00, + 0x78, 0x18, 0x30, 0x30, 0x3E, 0x73, 0x63, 0x63, 0x63, 0xC6, 0xC6, 0xCC, + 0x70, 0x0F, 0x3B, 0x70, 0x70, 0xE0, 0xE0, 0xE2, 0xE4, 0x78, 0x00, 0x00, + 0xF0, 0x1C, 0x06, 0x01, 0x83, 0xE3, 0x30, 0xCC, 0x63, 0x19, 0xCC, 0x63, + 0x38, 0xCF, 0x1D, 0x80, 0x0E, 0x75, 0xCB, 0xBE, 0xDE, 0x38, 0x72, 0x78, + 0x00, 0xE0, 0x34, 0x0C, 0x01, 0x80, 0x30, 0x1F, 0x01, 0x80, 0x30, 0x06, + 0x01, 0xC0, 0x30, 0x06, 0x00, 0xC0, 0x30, 0x06, 0x04, 0x80, 0xE0, 0x00, + 0x1C, 0x19, 0xD8, 0xCC, 0x66, 0x60, 0xE1, 0x80, 0xF0, 0x7E, 0x43, 0x21, + 0x8F, 0x00, 0x00, 0x1E, 0x07, 0x03, 0x01, 0x80, 0xD8, 0xFC, 0x76, 0x33, + 0x19, 0x99, 0xCC, 0xD6, 0x77, 0x30, 0x39, 0xC0, 0x0F, 0x31, 0x8C, 0xC6, + 0x31, 0xAE, 0x00, 0x03, 0x81, 0xC0, 0x00, 0x00, 0xE0, 0x30, 0x18, 0x18, + 0x0C, 0x06, 0x03, 0x03, 0x01, 0x80, 0xC2, 0xC1, 0xC0, 0x00, 0x0F, 0x00, + 0xC0, 0x60, 0x18, 0x06, 0xF3, 0x90, 0xC8, 0x34, 0x0F, 0x06, 0xC1, 0x98, + 0x66, 0xB9, 0xC0, 0x03, 0xCC, 0x63, 0x39, 0x8C, 0x66, 0x31, 0x8E, 0x70, + 0x7B, 0x99, 0xAF, 0xCE, 0x66, 0x63, 0x67, 0x33, 0x31, 0x99, 0x8C, 0xCC, + 0xE7, 0xC6, 0x30, 0x73, 0x7F, 0x73, 0x73, 0x63, 0x67, 0xE6, 0xC7, 0xC6, + 0x1E, 0x33, 0x63, 0x63, 0xC3, 0xC6, 0xC6, 0xCC, 0x78, 0x1D, 0xC3, 0xB1, + 0xCC, 0x63, 0x19, 0xCE, 0x63, 0x18, 0xCC, 0x3E, 0x1C, 0x06, 0x03, 0xE0, + 0x0D, 0x99, 0x8C, 0xCC, 0x6E, 0x76, 0x33, 0x19, 0x9C, 0x7C, 0x06, 0x07, + 0x07, 0xC0, 0x76, 0x3A, 0x30, 0x70, 0x60, 0x60, 0x60, 0xE0, 0x3D, 0x14, + 0x58, 0x38, 0x60, 0xA2, 0xF0, 0x08, 0xCC, 0xF6, 0x31, 0x98, 0xC6, 0x35, + 0xC0, 0xE3, 0x63, 0x66, 0x66, 0x66, 0xCC, 0xCC, 0xFE, 0xEC, 0xE6, 0xCD, + 0x8B, 0x26, 0x8E, 0x18, 0x20, 0xE4, 0xD9, 0x36, 0xE5, 0xDA, 0x77, 0x19, + 0xC6, 0x61, 0x10, 0x39, 0xC7, 0xB0, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xE1, + 0x5A, 0x67, 0x00, 0x39, 0x8C, 0xC3, 0x21, 0xA0, 0xD0, 0x68, 0x38, 0x0C, + 0x04, 0x04, 0x14, 0x0C, 0x00, 0x3E, 0x46, 0x0C, 0x08, 0x10, 0x20, 0x70, + 0x1A, 0x0E, 0x03, 0x0E, 0x0C, 0x0C, 0x08, 0x18, 0x18, 0x10, 0x60, 0x30, + 0x30, 0x30, 0x60, 0x60, 0x60, 0x30, 0xFF, 0xF0, 0x0C, 0x06, 0x06, 0x06, + 0x04, 0x0C, 0x0C, 0x0C, 0x06, 0x18, 0x18, 0x18, 0x30, 0x30, 0x30, 0xE0, + 0x71, 0x8F}; + +const GFXglyph FreeSerifBoldItalic9pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 5, 0, 1}, // 0x20 ' ' + {0, 6, 13, 7, 1, -11}, // 0x21 '!' + {10, 6, 5, 10, 3, -11}, // 0x22 '"' + {14, 11, 13, 9, -1, -12}, // 0x23 '#' + {32, 11, 15, 9, -1, -12}, // 0x24 '$' + {53, 14, 13, 15, 1, -11}, // 0x25 '%' + {76, 13, 13, 14, 0, -11}, // 0x26 '&' + {98, 2, 5, 5, 3, -11}, // 0x27 ''' + {100, 5, 16, 6, 1, -11}, // 0x28 '(' + {110, 5, 16, 6, -1, -11}, // 0x29 ')' + {120, 8, 8, 9, 1, -11}, // 0x2A '*' + {128, 9, 9, 10, 0, -8}, // 0x2B '+' + {139, 3, 6, 5, -1, -2}, // 0x2C ',' + {142, 5, 2, 6, 0, -4}, // 0x2D '-' + {144, 3, 3, 4, 0, -1}, // 0x2E '.' + {146, 7, 12, 6, 0, -11}, // 0x2F '/' + {157, 9, 13, 9, 0, -11}, // 0x30 '0' + {172, 8, 13, 9, 0, -11}, // 0x31 '1' + {185, 9, 13, 9, 0, -11}, // 0x32 '2' + {200, 9, 13, 9, 0, -11}, // 0x33 '3' + {215, 9, 12, 9, 0, -11}, // 0x34 '4' + {229, 9, 13, 9, 0, -11}, // 0x35 '5' + {244, 9, 13, 9, 1, -11}, // 0x36 '6' + {259, 9, 12, 9, 1, -11}, // 0x37 '7' + {273, 8, 13, 9, 0, -11}, // 0x38 '8' + {286, 9, 13, 9, 0, -11}, // 0x39 '9' + {301, 5, 9, 5, 0, -7}, // 0x3A ':' + {307, 5, 11, 5, 0, -7}, // 0x3B ';' + {314, 9, 10, 10, 1, -9}, // 0x3C '<' + {326, 9, 5, 10, 1, -6}, // 0x3D '=' + {332, 9, 10, 10, 1, -9}, // 0x3E '>' + {344, 8, 13, 9, 1, -11}, // 0x3F '?' + {357, 13, 13, 15, 1, -12}, // 0x40 '@' + {379, 12, 13, 13, 0, -11}, // 0x41 'A' + {399, 12, 13, 12, 0, -11}, // 0x42 'B' + {419, 12, 13, 11, 1, -11}, // 0x43 'C' + {439, 14, 13, 13, 0, -11}, // 0x44 'D' + {462, 13, 13, 11, 0, -11}, // 0x45 'E' + {484, 13, 13, 11, 0, -11}, // 0x46 'F' + {506, 12, 13, 13, 1, -11}, // 0x47 'G' + {526, 15, 13, 14, 0, -11}, // 0x48 'H' + {551, 8, 13, 7, 0, -11}, // 0x49 'I' + {564, 10, 14, 9, 0, -11}, // 0x4A 'J' + {582, 13, 13, 12, 0, -11}, // 0x4B 'K' + {604, 12, 13, 11, 0, -11}, // 0x4C 'L' + {624, 17, 13, 16, 0, -11}, // 0x4D 'M' + {652, 14, 13, 13, 0, -11}, // 0x4E 'N' + {675, 12, 13, 12, 1, -11}, // 0x4F 'O' + {695, 12, 13, 11, 0, -11}, // 0x50 'P' + {715, 12, 16, 12, 1, -11}, // 0x51 'Q' + {739, 12, 13, 12, 0, -11}, // 0x52 'R' + {759, 9, 13, 9, 0, -11}, // 0x53 'S' + {774, 11, 13, 11, 2, -11}, // 0x54 'T' + {792, 12, 13, 13, 2, -11}, // 0x55 'U' + {812, 12, 12, 13, 2, -11}, // 0x56 'V' + {830, 16, 12, 17, 2, -11}, // 0x57 'W' + {854, 13, 13, 13, 0, -11}, // 0x58 'X' + {876, 11, 13, 11, 2, -11}, // 0x59 'Y' + {894, 11, 13, 10, 0, -11}, // 0x5A 'Z' + {912, 8, 15, 6, -1, -11}, // 0x5B '[' + {927, 5, 12, 7, 2, -11}, // 0x5C '\' + {935, 7, 15, 6, -1, -11}, // 0x5D ']' + {949, 8, 7, 10, 1, -11}, // 0x5E '^' + {956, 9, 1, 9, 0, 3}, // 0x5F '_' + {958, 4, 3, 6, 2, -11}, // 0x60 '`' + {960, 9, 9, 9, 0, -7}, // 0x61 'a' + {971, 8, 14, 9, 0, -12}, // 0x62 'b' + {985, 8, 9, 8, 0, -7}, // 0x63 'c' + {994, 10, 14, 9, 0, -12}, // 0x64 'd' + {1012, 7, 9, 7, 0, -7}, // 0x65 'e' + {1020, 11, 17, 9, -2, -12}, // 0x66 'f' + {1044, 9, 12, 9, 0, -7}, // 0x67 'g' + {1058, 9, 14, 10, 0, -12}, // 0x68 'h' + {1074, 5, 13, 5, 1, -11}, // 0x69 'i' + {1083, 9, 16, 6, -1, -11}, // 0x6A 'j' + {1101, 10, 14, 9, 0, -12}, // 0x6B 'k' + {1119, 5, 14, 5, 1, -12}, // 0x6C 'l' + {1128, 13, 9, 14, 0, -7}, // 0x6D 'm' + {1143, 8, 9, 9, 0, -7}, // 0x6E 'n' + {1152, 8, 9, 9, 0, -7}, // 0x6F 'o' + {1161, 10, 12, 9, -2, -7}, // 0x70 'p' + {1176, 9, 12, 9, 0, -7}, // 0x71 'q' + {1190, 8, 8, 7, 0, -7}, // 0x72 'r' + {1198, 6, 9, 6, 0, -7}, // 0x73 's' + {1205, 5, 12, 5, 1, -10}, // 0x74 't' + {1213, 8, 9, 10, 1, -7}, // 0x75 'u' + {1222, 7, 8, 8, 1, -7}, // 0x76 'v' + {1229, 10, 8, 12, 1, -7}, // 0x77 'w' + {1239, 10, 9, 9, -1, -7}, // 0x78 'x' + {1251, 9, 12, 8, -1, -7}, // 0x79 'y' + {1265, 8, 9, 7, 0, -7}, // 0x7A 'z' + {1274, 8, 16, 6, 0, -12}, // 0x7B '{' + {1290, 1, 12, 5, 2, -11}, // 0x7C '|' + {1292, 8, 16, 6, -2, -12}, // 0x7D '}' + {1308, 8, 2, 10, 1, -4}}; // 0x7E '~' + +const GFXfont FreeSerifBoldItalic9pt7b PROGMEM = { + (uint8_t *)FreeSerifBoldItalic9pt7bBitmaps, + (GFXglyph *)FreeSerifBoldItalic9pt7bGlyphs, 0x20, 0x7E, 22}; + +// Approx. 1982 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerifItalic12pt7b.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerifItalic12pt7b.h new file mode 100644 index 0000000..85de005 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerifItalic12pt7b.h @@ -0,0 +1,273 @@ +#pragma once +#include + +const uint8_t FreeSerifItalic12pt7bBitmaps[] PROGMEM = { + 0x0C, 0x31, 0xC6, 0x18, 0x43, 0x0C, 0x20, 0x84, 0x10, 0x03, 0x0C, 0x30, + 0x66, 0xCD, 0x12, 0x24, 0x51, 0x00, 0x03, 0x10, 0x11, 0x80, 0x8C, 0x0C, + 0x40, 0x46, 0x1F, 0xFC, 0x21, 0x01, 0x18, 0x18, 0x80, 0x84, 0x3F, 0xF8, + 0x62, 0x02, 0x30, 0x31, 0x01, 0x08, 0x08, 0xC0, 0x00, 0x40, 0x08, 0x07, + 0xC0, 0xCA, 0x18, 0xA1, 0x92, 0x19, 0x01, 0xD0, 0x0F, 0x00, 0x78, 0x03, + 0xC0, 0x2E, 0x02, 0x64, 0x46, 0x44, 0x64, 0x46, 0x64, 0xC1, 0xF0, 0x08, + 0x00, 0x80, 0x00, 0x08, 0x0F, 0x0C, 0x0C, 0x7C, 0x0C, 0x22, 0x06, 0x12, + 0x06, 0x09, 0x03, 0x09, 0x01, 0x84, 0x80, 0xC4, 0x8F, 0x3C, 0x4C, 0x40, + 0x4C, 0x20, 0x4E, 0x10, 0x26, 0x08, 0x23, 0x08, 0x11, 0x84, 0x10, 0xC4, + 0x08, 0x3C, 0x00, 0x00, 0xE0, 0x02, 0x60, 0x0C, 0xC0, 0x19, 0x80, 0x36, + 0x00, 0x70, 0x00, 0xC0, 0x07, 0x9F, 0x33, 0x08, 0xC3, 0x13, 0x06, 0x46, + 0x0D, 0x0C, 0x0C, 0x18, 0x1C, 0x1C, 0x5C, 0x9F, 0x1E, 0xFA, 0xA0, 0x02, + 0x08, 0x20, 0xC3, 0x06, 0x18, 0x30, 0xE1, 0x83, 0x06, 0x0C, 0x18, 0x30, + 0x60, 0x40, 0x80, 0x81, 0x00, 0x08, 0x10, 0x10, 0x20, 0x40, 0xC1, 0x83, + 0x06, 0x0C, 0x18, 0x70, 0xC1, 0x83, 0x0C, 0x10, 0x41, 0x04, 0x00, 0x18, + 0x18, 0x18, 0x93, 0x74, 0x38, 0xD7, 0x93, 0x18, 0x18, 0x04, 0x00, 0x80, + 0x10, 0x02, 0x00, 0x41, 0xFF, 0xC1, 0x00, 0x20, 0x04, 0x00, 0x80, 0x10, + 0x00, 0x6C, 0x95, 0x00, 0xF8, 0xFC, 0x00, 0x40, 0x18, 0x02, 0x00, 0xC0, + 0x30, 0x06, 0x01, 0x80, 0x20, 0x0C, 0x01, 0x00, 0x60, 0x18, 0x03, 0x00, + 0xC0, 0x10, 0x06, 0x00, 0x07, 0x81, 0x98, 0x61, 0x18, 0x33, 0x06, 0xC0, + 0xD8, 0x1B, 0x03, 0xE0, 0xF8, 0x1F, 0x03, 0x60, 0x6C, 0x19, 0x83, 0x10, + 0xC3, 0x30, 0x3C, 0x00, 0x01, 0x87, 0xC0, 0xC0, 0x60, 0x30, 0x18, 0x18, + 0x0C, 0x06, 0x07, 0x03, 0x01, 0x80, 0xC0, 0xC0, 0x60, 0x30, 0xFE, 0x00, + 0x0F, 0x0C, 0x64, 0x0C, 0x03, 0x00, 0xC0, 0x20, 0x18, 0x0C, 0x02, 0x01, + 0x00, 0x80, 0x40, 0x20, 0x10, 0x2F, 0xF0, 0x07, 0x86, 0x30, 0x0C, 0x03, + 0x01, 0x81, 0x81, 0xF0, 0x1E, 0x03, 0x80, 0x60, 0x18, 0x06, 0x01, 0x00, + 0xCC, 0x63, 0xE0, 0x00, 0x20, 0x0C, 0x03, 0x80, 0xA0, 0x2C, 0x09, 0x82, + 0x30, 0x84, 0x31, 0x8C, 0x33, 0x06, 0x7F, 0xE0, 0x30, 0x06, 0x00, 0x80, + 0x30, 0x03, 0xE1, 0x80, 0x20, 0x06, 0x00, 0xF0, 0x0F, 0x00, 0x60, 0x06, + 0x00, 0xC0, 0x18, 0x03, 0x00, 0x40, 0x18, 0x02, 0x30, 0x87, 0xE0, 0x00, + 0x70, 0x3C, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x7F, 0x07, 0x18, 0x60, + 0xCE, 0x0C, 0xC0, 0xCC, 0x0C, 0xC0, 0xCC, 0x18, 0x41, 0x86, 0x30, 0x3E, + 0x00, 0x7F, 0xF0, 0x18, 0x03, 0x00, 0xC0, 0x10, 0x06, 0x01, 0x80, 0x30, + 0x0C, 0x01, 0x00, 0x60, 0x08, 0x03, 0x00, 0xC0, 0x10, 0x06, 0x00, 0x0F, + 0x83, 0x18, 0xC1, 0x98, 0x33, 0x06, 0x71, 0x87, 0x60, 0x70, 0x17, 0x0C, + 0x71, 0x07, 0x60, 0x6C, 0x0D, 0x81, 0xB0, 0x63, 0x1C, 0x3E, 0x00, 0x07, + 0x83, 0x18, 0xC1, 0x18, 0x36, 0x06, 0xC0, 0xD8, 0x1B, 0x07, 0x60, 0xE6, + 0x38, 0x7F, 0x00, 0xC0, 0x30, 0x0C, 0x07, 0x03, 0xC0, 0xC0, 0x00, 0x33, + 0x30, 0x00, 0x00, 0xCC, 0xC0, 0x18, 0xC6, 0x00, 0x00, 0x00, 0x03, 0x18, + 0x44, 0x40, 0x00, 0x00, 0x03, 0x00, 0xF0, 0x38, 0x1E, 0x07, 0x80, 0xE0, + 0x0F, 0x00, 0x1C, 0x00, 0x78, 0x01, 0xE0, 0x07, 0x00, 0x10, 0xFF, 0xF0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x0C, 0x00, 0xF0, 0x01, + 0xC0, 0x07, 0x80, 0x1E, 0x00, 0x70, 0x0F, 0x03, 0xC1, 0xE0, 0x78, 0x0E, + 0x00, 0x80, 0x00, 0x3E, 0x21, 0x90, 0x60, 0x30, 0x38, 0x38, 0x30, 0x30, + 0x20, 0x20, 0x10, 0x00, 0x00, 0x06, 0x03, 0x01, 0x80, 0x07, 0xE0, 0x1C, + 0x18, 0x30, 0x04, 0x60, 0x02, 0x61, 0xDA, 0xC3, 0x31, 0xC6, 0x31, 0xC4, + 0x31, 0xCC, 0x31, 0xCC, 0x21, 0xCC, 0x62, 0x6C, 0xE4, 0x67, 0x38, 0x30, + 0x00, 0x1C, 0x08, 0x07, 0xF0, 0x00, 0x20, 0x00, 0xC0, 0x03, 0x80, 0x0B, + 0x00, 0x16, 0x00, 0x4E, 0x00, 0x9C, 0x02, 0x18, 0x08, 0x30, 0x1F, 0xE0, + 0x40, 0xC1, 0x81, 0xC2, 0x03, 0x8C, 0x07, 0x3C, 0x1F, 0x80, 0x1F, 0xF0, + 0x1C, 0x60, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x38, 0x60, 0xC3, 0x03, 0xF0, + 0x1C, 0x30, 0x60, 0x61, 0x81, 0x86, 0x06, 0x38, 0x18, 0xC0, 0xC3, 0x06, + 0x3F, 0xF0, 0x01, 0xF9, 0x06, 0x0F, 0x1C, 0x06, 0x38, 0x02, 0x30, 0x02, + 0x60, 0x00, 0x60, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, + 0xC0, 0x00, 0xC0, 0x08, 0x60, 0x10, 0x30, 0x60, 0x1F, 0x80, 0x1F, 0xF0, + 0x07, 0x0C, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x0E, 0x03, 0x0C, 0x03, + 0x0C, 0x03, 0x1C, 0x03, 0x1C, 0x07, 0x18, 0x06, 0x18, 0x06, 0x38, 0x0C, + 0x30, 0x18, 0x30, 0x70, 0xFF, 0x80, 0x1F, 0xFF, 0x07, 0x07, 0x06, 0x02, + 0x06, 0x02, 0x06, 0x00, 0x0E, 0x10, 0x0C, 0x30, 0x0F, 0xF0, 0x1C, 0x20, + 0x18, 0x20, 0x18, 0x00, 0x18, 0x00, 0x38, 0x04, 0x30, 0x08, 0x30, 0x38, + 0xFF, 0xF8, 0x1F, 0xFF, 0x07, 0x07, 0x07, 0x02, 0x06, 0x02, 0x06, 0x00, + 0x0E, 0x10, 0x0C, 0x30, 0x0F, 0xF0, 0x1C, 0x20, 0x1C, 0x20, 0x18, 0x00, + 0x18, 0x00, 0x38, 0x00, 0x30, 0x00, 0x30, 0x00, 0xFC, 0x00, 0x01, 0xF1, + 0x06, 0x0F, 0x18, 0x07, 0x38, 0x02, 0x30, 0x02, 0x60, 0x00, 0x60, 0x00, + 0xE0, 0x00, 0xC0, 0x7F, 0xC0, 0x1C, 0xC0, 0x1C, 0xC0, 0x18, 0xC0, 0x18, + 0x60, 0x18, 0x30, 0x38, 0x0F, 0xC0, 0x1F, 0xC7, 0xE0, 0xE0, 0x70, 0x18, + 0x0E, 0x03, 0x01, 0x80, 0x60, 0x30, 0x1C, 0x0E, 0x03, 0x01, 0x80, 0x7F, + 0xF0, 0x1C, 0x06, 0x03, 0x01, 0xC0, 0x60, 0x30, 0x0C, 0x06, 0x03, 0x81, + 0xC0, 0x60, 0x38, 0x0C, 0x06, 0x07, 0xE3, 0xF0, 0x1F, 0x83, 0x81, 0x80, + 0xC0, 0x60, 0x70, 0x30, 0x18, 0x1C, 0x0C, 0x06, 0x03, 0x03, 0x81, 0x80, + 0xC1, 0xF8, 0x03, 0xF0, 0x0C, 0x00, 0xC0, 0x1C, 0x01, 0x80, 0x18, 0x03, + 0x80, 0x30, 0x03, 0x00, 0x30, 0x07, 0x00, 0x60, 0x06, 0x0C, 0xE0, 0xCC, + 0x07, 0x80, 0x1F, 0xCF, 0x83, 0x83, 0x81, 0x81, 0x00, 0xC3, 0x00, 0x62, + 0x00, 0x72, 0x00, 0x36, 0x00, 0x1E, 0x00, 0x1D, 0x80, 0x0C, 0xE0, 0x06, + 0x30, 0x03, 0x1C, 0x03, 0x87, 0x01, 0x81, 0x80, 0xC0, 0xE1, 0xF9, 0xFC, + 0x1F, 0xC0, 0x1C, 0x00, 0x60, 0x01, 0x80, 0x06, 0x00, 0x38, 0x00, 0xC0, + 0x03, 0x00, 0x1C, 0x00, 0x60, 0x01, 0x80, 0x06, 0x00, 0x38, 0x0C, 0xC0, + 0x23, 0x03, 0xBF, 0xFE, 0x0F, 0x00, 0x78, 0x38, 0x07, 0x81, 0xC0, 0x38, + 0x0E, 0x02, 0xC0, 0x70, 0x3E, 0x05, 0xC1, 0x70, 0x2E, 0x13, 0x01, 0x31, + 0x98, 0x11, 0x89, 0xC0, 0x8C, 0x8C, 0x04, 0x6C, 0x60, 0x23, 0x43, 0x02, + 0x1C, 0x38, 0x10, 0xE1, 0x81, 0x86, 0x1C, 0x1F, 0x23, 0xF8, 0x1E, 0x07, + 0xC1, 0xC0, 0x60, 0x70, 0x10, 0x1C, 0x0C, 0x05, 0x82, 0x02, 0x60, 0x80, + 0x9C, 0x60, 0x23, 0x10, 0x10, 0xC4, 0x04, 0x19, 0x01, 0x06, 0xC0, 0x40, + 0xE0, 0x20, 0x38, 0x08, 0x0E, 0x06, 0x01, 0x03, 0xE0, 0x40, 0x01, 0xF0, + 0x0C, 0x10, 0x30, 0x10, 0xC0, 0x33, 0x00, 0x6E, 0x00, 0xD8, 0x01, 0xF0, + 0x03, 0xC0, 0x0D, 0x80, 0x1B, 0x00, 0x76, 0x00, 0xCC, 0x03, 0x08, 0x0C, + 0x18, 0x70, 0x0F, 0x80, 0x1F, 0xF0, 0x1C, 0x60, 0x60, 0xC1, 0x83, 0x06, + 0x0C, 0x38, 0x30, 0xC1, 0x83, 0x0E, 0x1F, 0xE0, 0x60, 0x01, 0x80, 0x06, + 0x00, 0x38, 0x00, 0xC0, 0x03, 0x00, 0x3F, 0x00, 0x01, 0xF0, 0x06, 0x10, + 0x30, 0x30, 0xC0, 0x33, 0x00, 0x66, 0x00, 0xD8, 0x01, 0xB0, 0x03, 0xE0, + 0x0F, 0x80, 0x1B, 0x00, 0x36, 0x00, 0xCC, 0x03, 0x98, 0x06, 0x18, 0x18, + 0x18, 0xC0, 0x0E, 0x00, 0x20, 0x01, 0xF8, 0x36, 0x7F, 0x80, 0x1F, 0xF0, + 0x1C, 0x60, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x38, 0x70, 0xC3, 0x83, 0xF8, + 0x1D, 0xC0, 0x63, 0x01, 0x8C, 0x06, 0x18, 0x38, 0x60, 0xC1, 0xC3, 0x03, + 0x3F, 0x0F, 0x07, 0x90, 0xC7, 0x18, 0x21, 0x82, 0x18, 0x01, 0xC0, 0x0E, + 0x00, 0x70, 0x03, 0x80, 0x1C, 0x00, 0xC4, 0x0C, 0x40, 0xC6, 0x08, 0xE1, + 0x89, 0xE0, 0x7F, 0xFE, 0xC7, 0x1D, 0x0C, 0x14, 0x18, 0x20, 0x70, 0x00, + 0xE0, 0x01, 0x80, 0x03, 0x00, 0x0E, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, + 0x01, 0xC0, 0x03, 0x00, 0x0E, 0x00, 0x7F, 0x80, 0x7E, 0x1F, 0x38, 0x0C, + 0x38, 0x0C, 0x30, 0x08, 0x30, 0x08, 0x70, 0x08, 0x70, 0x10, 0x60, 0x10, + 0x60, 0x10, 0xE0, 0x10, 0xC0, 0x20, 0xC0, 0x20, 0xC0, 0x60, 0xC0, 0x40, + 0x61, 0x80, 0x3F, 0x00, 0xFC, 0x3E, 0xE0, 0x18, 0xC0, 0x21, 0x80, 0xC3, + 0x81, 0x07, 0x04, 0x0E, 0x08, 0x0C, 0x20, 0x18, 0x80, 0x31, 0x00, 0x64, + 0x00, 0xF0, 0x01, 0xE0, 0x01, 0x80, 0x02, 0x00, 0x04, 0x00, 0xFD, 0xF8, + 0xF7, 0x07, 0x06, 0x30, 0x60, 0x63, 0x07, 0x04, 0x30, 0x70, 0x83, 0x8F, + 0x08, 0x38, 0xB1, 0x03, 0x93, 0x10, 0x19, 0x32, 0x01, 0xA3, 0x20, 0x1A, + 0x34, 0x01, 0xC3, 0x40, 0x1C, 0x38, 0x01, 0x83, 0x00, 0x18, 0x30, 0x01, + 0x02, 0x00, 0x1F, 0x9F, 0x0E, 0x06, 0x06, 0x04, 0x07, 0x08, 0x03, 0x10, + 0x03, 0x20, 0x03, 0xC0, 0x01, 0x80, 0x01, 0xC0, 0x03, 0xC0, 0x06, 0xE0, + 0x0C, 0x60, 0x18, 0x60, 0x30, 0x70, 0x70, 0x78, 0xF8, 0xFC, 0xFC, 0xFB, + 0x81, 0x8C, 0x08, 0x60, 0x83, 0x8C, 0x0C, 0xC0, 0x64, 0x03, 0xC0, 0x0C, + 0x00, 0xE0, 0x07, 0x00, 0x30, 0x01, 0x80, 0x1C, 0x00, 0xC0, 0x1F, 0xC0, + 0x1F, 0xFE, 0x30, 0x38, 0xC0, 0xF1, 0x01, 0xC0, 0x07, 0x00, 0x1C, 0x00, + 0x70, 0x01, 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x38, 0x00, 0xE0, 0x01, 0xC0, + 0x47, 0x01, 0x1C, 0x06, 0x7F, 0xF8, 0x07, 0x04, 0x08, 0x08, 0x08, 0x18, + 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x80, 0x80, + 0x80, 0xE0, 0xC0, 0xC0, 0x40, 0x60, 0x20, 0x30, 0x30, 0x18, 0x18, 0x08, + 0x0C, 0x04, 0x06, 0x06, 0x03, 0x03, 0x0E, 0x04, 0x08, 0x10, 0x60, 0x81, + 0x02, 0x04, 0x18, 0x20, 0x40, 0x81, 0x02, 0x08, 0x10, 0x20, 0x47, 0x80, + 0x0C, 0x03, 0x81, 0xE0, 0x4C, 0x33, 0x08, 0x66, 0x19, 0x03, 0xC0, 0xC0, + 0xFF, 0xF0, 0xCE, 0x63, 0x07, 0xA0, 0xCE, 0x18, 0x63, 0x04, 0x60, 0xC6, + 0x0C, 0xC0, 0xCC, 0x18, 0xC3, 0x8C, 0x5A, 0x79, 0xC0, 0x38, 0x06, 0x01, + 0x80, 0x40, 0x30, 0x0C, 0xE3, 0xCC, 0xC3, 0x70, 0xD8, 0x36, 0x19, 0x06, + 0xC3, 0x30, 0x8C, 0xC3, 0xE0, 0x0F, 0x0C, 0xCC, 0x6C, 0x06, 0x06, 0x03, + 0x01, 0x80, 0xC0, 0x73, 0x1E, 0x00, 0x00, 0x70, 0x01, 0x80, 0x0C, 0x00, + 0x60, 0x02, 0x03, 0xF0, 0x31, 0x83, 0x08, 0x30, 0xC3, 0x06, 0x18, 0x31, + 0x81, 0x8C, 0x18, 0x61, 0xCB, 0x16, 0x8F, 0x38, 0x07, 0x19, 0x31, 0x63, + 0x62, 0xEC, 0xD0, 0xC0, 0xC0, 0xE6, 0x78, 0x00, 0x38, 0x01, 0x30, 0x0C, + 0x00, 0x20, 0x01, 0x80, 0x06, 0x00, 0xFE, 0x00, 0x40, 0x03, 0x00, 0x0C, + 0x00, 0x30, 0x00, 0x80, 0x06, 0x00, 0x18, 0x00, 0x60, 0x01, 0x80, 0x04, + 0x00, 0x30, 0x00, 0xC0, 0x02, 0x00, 0x90, 0x03, 0x80, 0x00, 0x07, 0xC0, + 0xC7, 0x18, 0x61, 0x86, 0x18, 0xE1, 0x8C, 0x07, 0x80, 0x80, 0x1C, 0x00, + 0xF0, 0x33, 0x84, 0x18, 0x80, 0x88, 0x08, 0x61, 0x03, 0xE0, 0x1C, 0x00, + 0xC0, 0x0C, 0x00, 0xC0, 0x18, 0x01, 0x8E, 0x1B, 0x61, 0xC6, 0x38, 0x63, + 0x8C, 0x30, 0xC3, 0x0C, 0x60, 0xC6, 0x1A, 0x61, 0xA4, 0x1C, 0x18, 0xC6, + 0x00, 0x0B, 0xC6, 0x23, 0x18, 0x8C, 0x63, 0x5C, 0x01, 0x80, 0xC0, 0x60, + 0x00, 0x00, 0x0C, 0x1E, 0x02, 0x03, 0x01, 0x80, 0xC0, 0x40, 0x60, 0x30, + 0x18, 0x08, 0x0C, 0x06, 0x02, 0x1B, 0x0F, 0x00, 0x1C, 0x01, 0x80, 0x30, + 0x06, 0x01, 0x80, 0x33, 0xC6, 0x30, 0x88, 0x32, 0x06, 0x80, 0xF0, 0x1B, + 0x06, 0x60, 0xC4, 0x18, 0xD2, 0x0C, 0x3C, 0x61, 0x86, 0x18, 0xC3, 0x0C, + 0x21, 0x86, 0x18, 0x43, 0x2D, 0x38, 0x78, 0xE7, 0x0D, 0xB5, 0x8D, 0x1C, + 0xC7, 0x0C, 0x63, 0x8E, 0x31, 0x86, 0x30, 0xC3, 0x18, 0xC1, 0x0C, 0x61, + 0x84, 0xB0, 0xC6, 0xB0, 0x63, 0x80, 0x78, 0xE1, 0xB6, 0x14, 0x63, 0x84, + 0x38, 0xC3, 0x0C, 0x70, 0x86, 0x18, 0x61, 0x96, 0x1A, 0xC1, 0xC0, 0x0F, + 0x06, 0x63, 0x0D, 0x83, 0x60, 0xF0, 0x3C, 0x1B, 0x06, 0xC3, 0x39, 0x87, + 0x80, 0x1E, 0xF0, 0x39, 0xC1, 0x86, 0x0C, 0x30, 0xC1, 0x86, 0x0C, 0x30, + 0xC3, 0x06, 0x18, 0x60, 0xC6, 0x07, 0xC0, 0x60, 0x03, 0x00, 0x18, 0x00, + 0xC0, 0x1F, 0x00, 0x07, 0x81, 0x9C, 0x63, 0x98, 0x76, 0x0C, 0xC1, 0xB0, + 0x76, 0x0E, 0xC3, 0x98, 0xB1, 0xE6, 0x00, 0x80, 0x30, 0x06, 0x00, 0xC0, + 0xFC, 0x79, 0x8F, 0xC5, 0x07, 0x03, 0x01, 0x80, 0xC0, 0xC0, 0x60, 0x30, + 0x10, 0x00, 0x1E, 0x98, 0xCC, 0x27, 0x11, 0x80, 0xE0, 0x39, 0x0C, 0x86, + 0x62, 0x2E, 0x00, 0x08, 0x67, 0xCC, 0x30, 0xC6, 0x18, 0x61, 0x8C, 0x34, + 0xE0, 0xF0, 0xCC, 0x19, 0x83, 0x30, 0xC6, 0x18, 0x87, 0x31, 0x66, 0x3C, + 0xCB, 0x1A, 0x6B, 0x8E, 0x00, 0x70, 0xCC, 0x33, 0x04, 0xC2, 0x18, 0x86, + 0x41, 0x90, 0x68, 0x1C, 0x06, 0x01, 0x00, 0x61, 0x0F, 0x84, 0x36, 0x30, + 0xDC, 0xC1, 0x35, 0x08, 0xD4, 0x23, 0x91, 0x0E, 0x48, 0x30, 0xE0, 0xC3, + 0x02, 0x08, 0x00, 0x0C, 0x63, 0x4A, 0x07, 0x00, 0x70, 0x06, 0x00, 0x20, + 0x07, 0x00, 0xB0, 0x0B, 0x21, 0x14, 0xE1, 0x80, 0x38, 0x63, 0x0C, 0x30, + 0x86, 0x10, 0xC4, 0x0C, 0x81, 0xA0, 0x34, 0x07, 0x00, 0x60, 0x08, 0x02, + 0x00, 0x40, 0x10, 0x04, 0x07, 0x00, 0x1F, 0x90, 0x80, 0x80, 0xC0, 0xC0, + 0x40, 0x60, 0x60, 0x60, 0x38, 0x3E, 0x03, 0xA0, 0x60, 0x00, 0x83, 0x81, + 0x01, 0x80, 0xC0, 0x40, 0x60, 0x30, 0x10, 0x10, 0x1C, 0x06, 0x03, 0x03, + 0x01, 0x80, 0xC0, 0x40, 0x60, 0x30, 0x18, 0x07, 0x00, 0xFF, 0xFF, 0x07, + 0x00, 0xC0, 0x60, 0x30, 0x10, 0x18, 0x0C, 0x06, 0x06, 0x03, 0x01, 0x80, + 0x60, 0x40, 0x60, 0x30, 0x10, 0x18, 0x0C, 0x06, 0x06, 0x06, 0x00, 0x78, + 0x18, 0x8C, 0x0F, 0x00}; + +const GFXglyph FreeSerifItalic12pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 6, 0, 1}, // 0x20 ' ' + {0, 6, 16, 8, 1, -15}, // 0x21 '!' + {12, 7, 6, 8, 3, -15}, // 0x22 '"' + {18, 13, 16, 12, 0, -15}, // 0x23 '#' + {44, 12, 20, 12, 0, -17}, // 0x24 '$' + {74, 17, 17, 20, 2, -16}, // 0x25 '%' + {111, 15, 16, 19, 2, -15}, // 0x26 '&' + {141, 2, 6, 5, 4, -15}, // 0x27 ''' + {143, 7, 20, 8, 1, -15}, // 0x28 '(' + {161, 7, 20, 8, 0, -15}, // 0x29 ')' + {179, 8, 10, 12, 4, -15}, // 0x2A '*' + {189, 11, 11, 16, 2, -10}, // 0x2B '+' + {205, 3, 6, 6, 0, -2}, // 0x2C ',' + {208, 5, 1, 8, 1, -5}, // 0x2D '-' + {209, 2, 3, 6, 1, -2}, // 0x2E '.' + {210, 11, 16, 7, 0, -15}, // 0x2F '/' + {232, 11, 17, 12, 1, -16}, // 0x30 '0' + {256, 9, 17, 12, 1, -16}, // 0x31 '1' + {276, 10, 15, 12, 1, -14}, // 0x32 '2' + {295, 10, 16, 12, 1, -15}, // 0x33 '3' + {315, 11, 16, 12, 0, -15}, // 0x34 '4' + {337, 11, 16, 12, 0, -15}, // 0x35 '5' + {359, 12, 17, 12, 1, -16}, // 0x36 '6' + {385, 11, 16, 12, 2, -15}, // 0x37 '7' + {407, 11, 17, 12, 1, -16}, // 0x38 '8' + {431, 11, 17, 12, 1, -16}, // 0x39 '9' + {455, 4, 11, 6, 1, -10}, // 0x3A ':' + {461, 5, 14, 6, 0, -10}, // 0x3B ';' + {470, 12, 13, 14, 1, -12}, // 0x3C '<' + {490, 12, 6, 16, 2, -8}, // 0x3D '=' + {499, 12, 13, 14, 2, -12}, // 0x3E '>' + {519, 9, 16, 11, 3, -15}, // 0x3F '?' + {537, 16, 16, 19, 2, -15}, // 0x40 '@' + {569, 15, 15, 16, 0, -14}, // 0x41 'A' + {598, 14, 16, 14, 0, -15}, // 0x42 'B' + {626, 16, 16, 15, 1, -15}, // 0x43 'C' + {658, 16, 16, 17, 0, -15}, // 0x44 'D' + {690, 16, 16, 14, 0, -15}, // 0x45 'E' + {722, 16, 16, 14, 0, -15}, // 0x46 'F' + {754, 16, 16, 17, 1, -15}, // 0x47 'G' + {786, 19, 16, 17, 0, -15}, // 0x48 'H' + {824, 9, 16, 8, 0, -15}, // 0x49 'I' + {842, 12, 16, 10, 0, -15}, // 0x4A 'J' + {866, 17, 16, 15, 0, -15}, // 0x4B 'K' + {900, 14, 16, 14, 0, -15}, // 0x4C 'L' + {928, 21, 16, 20, 0, -15}, // 0x4D 'M' + {970, 18, 16, 16, 0, -15}, // 0x4E 'N' + {1006, 15, 16, 16, 1, -15}, // 0x4F 'O' + {1036, 14, 16, 14, 0, -15}, // 0x50 'P' + {1064, 15, 20, 16, 1, -15}, // 0x51 'Q' + {1102, 14, 16, 15, 0, -15}, // 0x52 'R' + {1130, 12, 16, 11, 0, -15}, // 0x53 'S' + {1154, 15, 16, 14, 2, -15}, // 0x54 'T' + {1184, 16, 16, 17, 3, -15}, // 0x55 'U' + {1216, 15, 16, 16, 3, -15}, // 0x56 'V' + {1246, 20, 16, 21, 3, -15}, // 0x57 'W' + {1286, 16, 16, 16, 0, -15}, // 0x58 'X' + {1318, 13, 16, 14, 3, -15}, // 0x59 'Y' + {1344, 15, 16, 14, 0, -15}, // 0x5A 'Z' + {1374, 8, 20, 9, 1, -15}, // 0x5B '[' + {1394, 8, 16, 12, 3, -15}, // 0x5C '\' + {1410, 7, 20, 9, 1, -15}, // 0x5D ']' + {1428, 10, 9, 10, 0, -15}, // 0x5E '^' + {1440, 12, 1, 12, 0, 3}, // 0x5F '_' + {1442, 4, 4, 6, 3, -15}, // 0x60 '`' + {1444, 12, 11, 12, 0, -10}, // 0x61 'a' + {1461, 10, 16, 11, 1, -15}, // 0x62 'b' + {1481, 9, 11, 10, 1, -10}, // 0x63 'c' + {1494, 13, 16, 12, 0, -15}, // 0x64 'd' + {1520, 8, 11, 10, 1, -10}, // 0x65 'e' + {1531, 14, 22, 10, -2, -16}, // 0x66 'f' + {1570, 12, 16, 11, -1, -10}, // 0x67 'g' + {1594, 12, 16, 12, 0, -15}, // 0x68 'h' + {1618, 5, 16, 6, 1, -15}, // 0x69 'i' + {1628, 9, 21, 7, -2, -15}, // 0x6A 'j' + {1652, 11, 16, 11, 0, -15}, // 0x6B 'k' + {1674, 6, 16, 6, 1, -15}, // 0x6C 'l' + {1686, 17, 11, 17, 0, -10}, // 0x6D 'm' + {1710, 12, 11, 12, 0, -10}, // 0x6E 'n' + {1727, 10, 11, 11, 1, -10}, // 0x6F 'o' + {1741, 13, 16, 11, -2, -10}, // 0x70 'p' + {1767, 11, 16, 12, 0, -10}, // 0x71 'q' + {1789, 9, 11, 9, 0, -10}, // 0x72 'r' + {1802, 9, 11, 8, 0, -10}, // 0x73 's' + {1815, 6, 13, 6, 1, -12}, // 0x74 't' + {1825, 11, 11, 12, 1, -10}, // 0x75 'u' + {1841, 10, 11, 11, 1, -10}, // 0x76 'v' + {1855, 14, 11, 16, 2, -10}, // 0x77 'w' + {1875, 12, 11, 10, -1, -10}, // 0x78 'x' + {1892, 11, 16, 11, 0, -10}, // 0x79 'y' + {1914, 9, 13, 9, 0, -10}, // 0x7A 'z' + {1929, 9, 21, 10, 1, -16}, // 0x7B '{' + {1953, 1, 16, 7, 3, -15}, // 0x7C '|' + {1955, 9, 21, 10, 0, -16}, // 0x7D '}' + {1979, 11, 3, 13, 1, -6}}; // 0x7E '~' + +const GFXfont FreeSerifItalic12pt7b PROGMEM = { + (uint8_t *)FreeSerifItalic12pt7bBitmaps, + (GFXglyph *)FreeSerifItalic12pt7bGlyphs, 0x20, 0x7E, 29}; + +// Approx. 2656 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerifItalic18pt7b.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerifItalic18pt7b.h new file mode 100644 index 0000000..c25db35 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerifItalic18pt7b.h @@ -0,0 +1,452 @@ +#pragma once +#include + +const uint8_t FreeSerifItalic18pt7bBitmaps[] PROGMEM = { + 0x01, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0x81, 0xE0, 0x70, 0x1C, 0x06, 0x01, + 0x80, 0xC0, 0x30, 0x0C, 0x02, 0x01, 0x80, 0x40, 0x10, 0x00, 0x00, 0x01, + 0x80, 0xF0, 0x3C, 0x06, 0x00, 0x38, 0x77, 0x8F, 0x78, 0xF7, 0x0E, 0x60, + 0xE6, 0x0C, 0xC1, 0x8C, 0x18, 0x81, 0x00, 0x00, 0x60, 0xC0, 0x0C, 0x38, + 0x03, 0x86, 0x00, 0x60, 0xC0, 0x0C, 0x38, 0x03, 0x06, 0x00, 0x60, 0xC0, + 0xFF, 0xFF, 0x1F, 0xFF, 0xE0, 0x61, 0xC0, 0x1C, 0x30, 0x03, 0x06, 0x00, + 0x61, 0xC0, 0x18, 0x30, 0x3F, 0xFF, 0xC7, 0xFF, 0xF8, 0x18, 0x30, 0x03, + 0x0E, 0x00, 0xE1, 0x80, 0x18, 0x30, 0x03, 0x0C, 0x00, 0xC1, 0x80, 0x18, + 0x70, 0x00, 0x00, 0x08, 0x00, 0x30, 0x00, 0x40, 0x0F, 0xC0, 0x61, 0xE1, + 0x86, 0xC6, 0x0D, 0x8C, 0x1A, 0x18, 0x24, 0x38, 0xC0, 0x39, 0x80, 0x7F, + 0x00, 0x7E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x7C, 0x00, 0xDC, 0x03, 0x38, + 0x06, 0x32, 0x0C, 0x64, 0x18, 0xDC, 0x71, 0xB8, 0xC6, 0x39, 0x8C, 0x3F, + 0x30, 0x1F, 0x80, 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, 0x07, 0x80, 0x60, + 0x0F, 0xE0, 0xE0, 0x0F, 0x0F, 0xB0, 0x0E, 0x04, 0x30, 0x07, 0x02, 0x18, + 0x07, 0x01, 0x18, 0x03, 0x00, 0x8C, 0x01, 0x80, 0x8C, 0x00, 0xC0, 0x4C, + 0x00, 0x60, 0x66, 0x1F, 0x30, 0x66, 0x1F, 0xCC, 0x63, 0x1C, 0x67, 0xE3, + 0x1C, 0x19, 0xE1, 0x1C, 0x04, 0x01, 0x8C, 0x02, 0x00, 0x8E, 0x01, 0x00, + 0xC7, 0x00, 0x80, 0xC3, 0x00, 0x80, 0x61, 0x80, 0xC0, 0x60, 0xC0, 0xC0, + 0x20, 0x70, 0xE0, 0x30, 0x1F, 0xC0, 0x10, 0x07, 0xC0, 0x00, 0x1E, 0x00, + 0x00, 0xFC, 0x00, 0x07, 0x18, 0x00, 0x18, 0x60, 0x00, 0xE1, 0x80, 0x03, + 0x8C, 0x00, 0x0E, 0x60, 0x00, 0x3B, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x80, + 0x00, 0x7F, 0x1F, 0xC3, 0x3C, 0x1C, 0x38, 0x70, 0x61, 0xE1, 0xE3, 0x87, + 0x07, 0x8C, 0x3C, 0x0F, 0x60, 0xF0, 0x3D, 0x03, 0xC0, 0x78, 0x0F, 0x01, + 0xE0, 0x3E, 0x07, 0xC0, 0x7C, 0x77, 0x84, 0xFF, 0x8F, 0xE1, 0xF8, 0x0F, + 0x00, 0x3B, 0xDE, 0xE7, 0x33, 0x18, 0x80, 0x00, 0x80, 0x80, 0x80, 0x80, + 0xC0, 0xC0, 0xE0, 0x60, 0x70, 0x38, 0x18, 0x0C, 0x0E, 0x07, 0x03, 0x01, + 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x01, 0x00, 0x80, 0x40, 0x30, + 0x08, 0x04, 0x02, 0x00, 0x04, 0x01, 0x00, 0x80, 0x60, 0x10, 0x08, 0x04, + 0x03, 0x01, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x0E, 0x07, 0x03, 0x81, + 0x80, 0xC0, 0xE0, 0x60, 0x30, 0x30, 0x18, 0x18, 0x08, 0x08, 0x08, 0x08, + 0x00, 0x06, 0x00, 0x60, 0x06, 0x0C, 0x43, 0xE4, 0xF1, 0x58, 0x0E, 0x00, + 0xF0, 0x74, 0xEE, 0x47, 0xC4, 0x30, 0x60, 0x06, 0x00, 0x60, 0x01, 0x80, + 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, + 0x01, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, + 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x31, 0xCE, + 0x31, 0x08, 0x98, 0xFF, 0xFF, 0x6F, 0xF6, 0x00, 0x06, 0x00, 0x0E, 0x00, + 0x0C, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x30, 0x00, 0x70, 0x00, 0x60, 0x00, + 0xE0, 0x00, 0xC0, 0x01, 0xC0, 0x03, 0x80, 0x03, 0x00, 0x07, 0x00, 0x06, + 0x00, 0x0E, 0x00, 0x0C, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x30, 0x00, 0x70, + 0x00, 0x60, 0x00, 0xE0, 0x00, 0x00, 0x78, 0x00, 0xC3, 0x00, 0xC1, 0xC0, + 0xC0, 0x60, 0xE0, 0x30, 0xE0, 0x1C, 0x70, 0x0E, 0x70, 0x07, 0x38, 0x03, + 0xBC, 0x01, 0xDC, 0x01, 0xEE, 0x00, 0xFF, 0x00, 0x7F, 0x80, 0x3B, 0x80, + 0x1D, 0xC0, 0x1E, 0xE0, 0x0E, 0x70, 0x0F, 0x38, 0x07, 0x1C, 0x07, 0x06, + 0x03, 0x83, 0x83, 0x80, 0xC3, 0x00, 0x1F, 0x00, 0x00, 0xF0, 0x7F, 0x00, + 0x70, 0x07, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x01, 0xC0, 0x1C, 0x01, + 0xC0, 0x38, 0x03, 0x80, 0x38, 0x03, 0x80, 0x70, 0x07, 0x00, 0x70, 0x0E, + 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x1E, 0x0F, 0xF8, 0x01, 0xF0, 0x07, 0xFC, + 0x0C, 0x3E, 0x10, 0x1F, 0x20, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, + 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x30, 0x00, 0x70, 0x00, 0xE0, + 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x04, + 0x30, 0x0C, 0x7F, 0xF8, 0xFF, 0xF0, 0x00, 0x7C, 0x00, 0xFF, 0x00, 0xC3, + 0xC0, 0x80, 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1C, 0x00, 0x1C, 0x00, + 0x38, 0x00, 0xF0, 0x03, 0xFC, 0x00, 0x1F, 0x00, 0x03, 0xC0, 0x01, 0xE0, + 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x06, 0x00, 0x07, + 0x00, 0x03, 0x07, 0x87, 0x03, 0xFF, 0x00, 0xFC, 0x00, 0x00, 0x01, 0x80, + 0x01, 0x80, 0x01, 0xC0, 0x01, 0xE0, 0x01, 0xF0, 0x01, 0xB0, 0x01, 0xB8, + 0x01, 0x9C, 0x01, 0x8C, 0x00, 0x86, 0x00, 0x87, 0x00, 0x83, 0x80, 0x81, + 0x80, 0x81, 0xC0, 0xC0, 0xE0, 0xC0, 0x70, 0xFF, 0xFF, 0x7F, 0xFF, 0x00, + 0x1C, 0x00, 0x0C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x03, 0x80, 0x01, 0x80, + 0x01, 0xFF, 0x01, 0xFF, 0x02, 0x00, 0x02, 0x00, 0x06, 0x00, 0x07, 0x00, + 0x0F, 0xC0, 0x0F, 0xF0, 0x00, 0xF8, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x1C, + 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x18, + 0x00, 0x30, 0x00, 0x30, 0x70, 0xE0, 0xFF, 0x80, 0x7E, 0x00, 0x00, 0x03, + 0x80, 0x1F, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, + 0x00, 0x3C, 0x00, 0x3D, 0xF0, 0x1F, 0xFE, 0x1F, 0x0F, 0x8E, 0x03, 0xC7, + 0x00, 0xF7, 0x00, 0x7B, 0x80, 0x3D, 0x80, 0x1E, 0xC0, 0x0F, 0x60, 0x0F, + 0xB0, 0x07, 0x98, 0x03, 0xC4, 0x03, 0xC3, 0x03, 0xC0, 0xC3, 0x80, 0x1F, + 0x00, 0x3F, 0xFF, 0x7F, 0xFE, 0x40, 0x0E, 0x80, 0x0C, 0x00, 0x18, 0x00, + 0x18, 0x00, 0x30, 0x00, 0x70, 0x00, 0x60, 0x00, 0xC0, 0x01, 0xC0, 0x01, + 0x80, 0x03, 0x80, 0x03, 0x00, 0x06, 0x00, 0x0E, 0x00, 0x0C, 0x00, 0x1C, + 0x00, 0x18, 0x00, 0x30, 0x00, 0x70, 0x00, 0x60, 0x00, 0xE0, 0x00, 0x00, + 0xF8, 0x03, 0x0E, 0x06, 0x06, 0x0C, 0x03, 0x0C, 0x03, 0x0C, 0x03, 0x0C, + 0x03, 0x0E, 0x06, 0x07, 0x8E, 0x07, 0xD8, 0x03, 0xE0, 0x07, 0xF0, 0x1C, + 0xF8, 0x30, 0x3C, 0x60, 0x1C, 0x60, 0x0E, 0xC0, 0x06, 0xC0, 0x06, 0xC0, + 0x06, 0xC0, 0x06, 0xE0, 0x0C, 0x60, 0x18, 0x38, 0x30, 0x0F, 0xC0, 0x01, + 0xF8, 0x07, 0x8C, 0x0E, 0x06, 0x1E, 0x02, 0x3C, 0x03, 0x3C, 0x03, 0x78, + 0x03, 0x78, 0x03, 0x78, 0x03, 0x78, 0x07, 0x78, 0x07, 0x78, 0x07, 0x3C, + 0x0E, 0x3E, 0x1E, 0x1F, 0xEE, 0x07, 0x9C, 0x00, 0x38, 0x00, 0x78, 0x00, + 0x70, 0x01, 0xE0, 0x03, 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xE0, 0x00, 0x0C, + 0x3C, 0x78, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x1E, 0x18, + 0x00, 0x07, 0x03, 0xC1, 0xE0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x03, 0x81, 0xC0, 0xE0, 0x30, 0x10, 0x10, 0x10, 0x00, 0x00, + 0x00, 0x00, 0xC0, 0x01, 0xF0, 0x01, 0xF8, 0x01, 0xF8, 0x01, 0xF0, 0x01, + 0xF0, 0x03, 0xF0, 0x03, 0xF0, 0x00, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xE0, + 0x00, 0x7E, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xF0, 0x00, 0x3F, + 0x00, 0x03, 0xC0, 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFF, + 0xFF, 0xC0, 0xC0, 0x00, 0x3C, 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0x07, + 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x3F, 0x00, 0x03, 0xC0, 0x01, + 0xF0, 0x01, 0xF8, 0x01, 0xF8, 0x01, 0xF0, 0x01, 0xF0, 0x03, 0xF0, 0x03, + 0xF0, 0x00, 0xF0, 0x00, 0x20, 0x00, 0x00, 0x0F, 0x81, 0x86, 0x30, 0x33, + 0x03, 0x30, 0x30, 0x03, 0x00, 0x60, 0x0E, 0x01, 0xC0, 0x38, 0x06, 0x00, + 0xC0, 0x08, 0x01, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, + 0x00, 0xF0, 0x0F, 0x00, 0x60, 0x00, 0x00, 0x7F, 0x00, 0x03, 0xFF, 0xE0, + 0x07, 0x80, 0xF0, 0x0E, 0x00, 0x38, 0x1C, 0x00, 0x0C, 0x38, 0x0E, 0x06, + 0x70, 0x3F, 0xE2, 0x70, 0x71, 0xE3, 0xF0, 0x60, 0xE1, 0xE0, 0xC0, 0xC1, + 0xE0, 0xC0, 0xC1, 0xE1, 0x81, 0xC1, 0xE1, 0x81, 0xC1, 0xE1, 0x81, 0x82, + 0xE1, 0x83, 0x82, 0x71, 0x83, 0x86, 0x71, 0xC7, 0x8C, 0x38, 0xF9, 0xF8, + 0x3C, 0xF0, 0xF0, 0x1E, 0x00, 0x00, 0x0F, 0x80, 0x30, 0x03, 0xFF, 0xE0, + 0x00, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, 0x01, 0xC0, 0x00, + 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x5E, 0x00, 0x04, 0xF0, + 0x00, 0x63, 0x80, 0x02, 0x1C, 0x00, 0x20, 0xE0, 0x01, 0x07, 0x00, 0x10, + 0x3C, 0x01, 0xFF, 0xE0, 0x0F, 0xFF, 0x00, 0xC0, 0x38, 0x04, 0x01, 0xC0, + 0x60, 0x0E, 0x06, 0x00, 0x78, 0x30, 0x03, 0xC3, 0x00, 0x1E, 0x38, 0x00, + 0xFB, 0xF0, 0x1F, 0xE0, 0x07, 0xFF, 0x80, 0x0F, 0xFF, 0x00, 0x78, 0x3C, + 0x03, 0xC0, 0xF0, 0x1E, 0x07, 0x80, 0xE0, 0x3C, 0x07, 0x01, 0xE0, 0x78, + 0x1E, 0x03, 0x83, 0xE0, 0x1F, 0xF8, 0x01, 0xFF, 0xC0, 0x0F, 0x0F, 0x00, + 0x70, 0x3C, 0x03, 0x80, 0xF0, 0x3C, 0x07, 0x81, 0xC0, 0x3C, 0x0E, 0x01, + 0xE0, 0xF0, 0x0F, 0x07, 0x80, 0xF0, 0x38, 0x0F, 0x81, 0xC1, 0xF8, 0x1F, + 0xFF, 0x83, 0xFF, 0xE0, 0x00, 0x00, 0x3F, 0x08, 0x07, 0xFF, 0xC0, 0xF8, + 0x3E, 0x0F, 0x00, 0x70, 0xF0, 0x03, 0x8F, 0x00, 0x08, 0xF0, 0x00, 0x47, + 0x80, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x01, 0xE0, 0x00, + 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xF0, + 0x00, 0x03, 0x80, 0x02, 0x1E, 0x00, 0x20, 0x78, 0x02, 0x03, 0xE0, 0x60, + 0x07, 0xFE, 0x00, 0x0F, 0xC0, 0x00, 0x07, 0xFF, 0xC0, 0x00, 0xFF, 0xFC, + 0x00, 0x78, 0x1F, 0x00, 0x3C, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x0E, 0x00, + 0x78, 0x07, 0x00, 0x1E, 0x07, 0x80, 0x0F, 0x03, 0x80, 0x07, 0x81, 0xC0, + 0x03, 0xC1, 0xE0, 0x01, 0xE0, 0xF0, 0x00, 0xF0, 0x70, 0x00, 0x78, 0x38, + 0x00, 0x78, 0x3C, 0x00, 0x3C, 0x1E, 0x00, 0x3E, 0x0E, 0x00, 0x1E, 0x0F, + 0x00, 0x1E, 0x07, 0x80, 0x1E, 0x03, 0x80, 0x3E, 0x01, 0xC0, 0x7E, 0x01, + 0xFF, 0xFC, 0x03, 0xFF, 0xF0, 0x00, 0x07, 0xFF, 0xFC, 0x07, 0xFF, 0xF0, + 0x1E, 0x01, 0xC0, 0x78, 0x02, 0x01, 0xE0, 0x08, 0x07, 0x00, 0x00, 0x1C, + 0x08, 0x00, 0xF0, 0x60, 0x03, 0x83, 0x80, 0x0F, 0xFC, 0x00, 0x7F, 0xF0, + 0x01, 0xE0, 0xC0, 0x07, 0x03, 0x00, 0x1C, 0x08, 0x00, 0xF0, 0x20, 0x03, + 0x80, 0x00, 0x0E, 0x00, 0x00, 0x78, 0x00, 0x81, 0xE0, 0x06, 0x07, 0x00, + 0x38, 0x1C, 0x03, 0xC0, 0xFF, 0xFF, 0x0F, 0xFF, 0xFC, 0x00, 0x07, 0xFF, + 0xFC, 0x07, 0xFF, 0xF0, 0x1E, 0x01, 0xC0, 0x78, 0x02, 0x01, 0xE0, 0x08, + 0x07, 0x00, 0x20, 0x1C, 0x00, 0x00, 0xF0, 0x20, 0x03, 0x81, 0x80, 0x0E, + 0x0C, 0x00, 0x7F, 0xF0, 0x01, 0xFF, 0xC0, 0x07, 0x03, 0x00, 0x1C, 0x0C, + 0x00, 0xF0, 0x20, 0x03, 0xC0, 0x00, 0x0E, 0x00, 0x00, 0x78, 0x00, 0x01, + 0xE0, 0x00, 0x07, 0x00, 0x00, 0x1C, 0x00, 0x00, 0xF8, 0x00, 0x0F, 0xF8, + 0x00, 0x00, 0x00, 0x3F, 0x02, 0x01, 0xFF, 0x88, 0x0F, 0x81, 0xF0, 0x3C, + 0x01, 0xE0, 0xF0, 0x01, 0xC3, 0xC0, 0x01, 0x0F, 0x80, 0x02, 0x1E, 0x00, + 0x00, 0x7C, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x07, 0xC0, 0x00, + 0x0F, 0x00, 0x3F, 0xFE, 0x00, 0x1E, 0x3C, 0x00, 0x38, 0x78, 0x00, 0x70, + 0xF0, 0x00, 0xE0, 0xE0, 0x01, 0xC1, 0xE0, 0x07, 0x01, 0xE0, 0x0E, 0x01, + 0xF0, 0x3C, 0x01, 0xFF, 0xF0, 0x00, 0xFF, 0x00, 0x00, 0x07, 0xFC, 0x3F, + 0xE0, 0x3E, 0x00, 0xF0, 0x07, 0x80, 0x1C, 0x00, 0xF0, 0x03, 0x80, 0x1C, + 0x00, 0xF0, 0x03, 0x80, 0x1E, 0x00, 0x70, 0x03, 0x80, 0x1E, 0x00, 0x70, + 0x03, 0x80, 0x1E, 0x00, 0x70, 0x03, 0x80, 0x1F, 0xFF, 0xF0, 0x03, 0xFF, + 0xFE, 0x00, 0x70, 0x03, 0xC0, 0x0E, 0x00, 0x70, 0x03, 0xC0, 0x0E, 0x00, + 0x70, 0x03, 0xC0, 0x0E, 0x00, 0x78, 0x03, 0xC0, 0x0E, 0x00, 0x78, 0x01, + 0xC0, 0x0E, 0x00, 0x78, 0x01, 0xC0, 0x0E, 0x00, 0x78, 0x03, 0xE0, 0x3F, + 0xE1, 0xFF, 0x00, 0x07, 0xFC, 0x07, 0xC0, 0x1E, 0x00, 0x78, 0x01, 0xC0, + 0x07, 0x00, 0x1C, 0x00, 0xF0, 0x03, 0x80, 0x0E, 0x00, 0x78, 0x01, 0xE0, + 0x07, 0x00, 0x1C, 0x00, 0xF0, 0x03, 0x80, 0x0E, 0x00, 0x78, 0x01, 0xE0, + 0x07, 0x00, 0x1C, 0x00, 0xF0, 0x0F, 0xF8, 0x00, 0x00, 0xFF, 0x80, 0x0F, + 0x00, 0x07, 0x80, 0x03, 0x80, 0x01, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, + 0x70, 0x00, 0x38, 0x00, 0x3C, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x0F, 0x00, + 0x07, 0x80, 0x03, 0x80, 0x01, 0xC0, 0x01, 0xE0, 0x00, 0xE0, 0x00, 0x70, + 0x1E, 0x78, 0x0F, 0x38, 0x07, 0xF8, 0x01, 0xF0, 0x00, 0x07, 0xFC, 0x7F, + 0x80, 0xF8, 0x0F, 0x00, 0x38, 0x07, 0x00, 0x3C, 0x07, 0x00, 0x1C, 0x06, + 0x00, 0x0E, 0x06, 0x00, 0x07, 0x0C, 0x00, 0x07, 0x8C, 0x00, 0x03, 0x9C, + 0x00, 0x01, 0xD8, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x73, + 0x80, 0x00, 0x39, 0xE0, 0x00, 0x3C, 0x78, 0x00, 0x1C, 0x1C, 0x00, 0x0E, + 0x0F, 0x00, 0x07, 0x03, 0x80, 0x07, 0x81, 0xE0, 0x03, 0x80, 0x70, 0x01, + 0xC0, 0x3C, 0x01, 0xE0, 0x1F, 0x03, 0xFE, 0x3F, 0xE0, 0x07, 0xFC, 0x00, + 0x1F, 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, + 0x01, 0xC0, 0x00, 0x3C, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x07, 0x80, + 0x00, 0x78, 0x00, 0x07, 0x00, 0x00, 0x70, 0x00, 0x0F, 0x00, 0x00, 0xE0, + 0x00, 0x0E, 0x00, 0x11, 0xE0, 0x03, 0x1E, 0x00, 0x61, 0xC0, 0x06, 0x1C, + 0x01, 0xE3, 0xFF, 0xFC, 0xFF, 0xFF, 0xC0, 0x07, 0xF0, 0x00, 0x7E, 0x03, + 0xE0, 0x01, 0xF0, 0x03, 0xC0, 0x03, 0xE0, 0x07, 0x80, 0x0F, 0x80, 0x1F, + 0x00, 0x37, 0x00, 0x2E, 0x00, 0x5E, 0x00, 0x5C, 0x01, 0xB8, 0x01, 0xB8, + 0x06, 0x70, 0x02, 0x78, 0x09, 0xE0, 0x04, 0x70, 0x33, 0xC0, 0x08, 0xE0, + 0xC7, 0x00, 0x31, 0xC1, 0x0E, 0x00, 0x43, 0x86, 0x3C, 0x00, 0x87, 0x18, + 0x70, 0x03, 0x0E, 0x20, 0xE0, 0x06, 0x1C, 0xC3, 0xC0, 0x08, 0x3B, 0x07, + 0x80, 0x10, 0x7C, 0x0E, 0x00, 0x60, 0x78, 0x1C, 0x00, 0x80, 0xE0, 0x78, + 0x03, 0x01, 0x80, 0xF0, 0x07, 0x03, 0x03, 0xE0, 0x3F, 0x84, 0x1F, 0xF0, + 0x00, 0x07, 0xC0, 0x3F, 0xC0, 0x78, 0x03, 0xE0, 0x0E, 0x00, 0x70, 0x03, + 0xC0, 0x18, 0x01, 0xF0, 0x0E, 0x00, 0x6C, 0x03, 0x00, 0x1B, 0x80, 0xC0, + 0x0C, 0xE0, 0x30, 0x03, 0x18, 0x1C, 0x00, 0xC7, 0x06, 0x00, 0x30, 0xC1, + 0x80, 0x18, 0x38, 0xE0, 0x06, 0x06, 0x30, 0x01, 0x81, 0x8C, 0x00, 0xC0, + 0x73, 0x00, 0x30, 0x0D, 0xC0, 0x0C, 0x03, 0xE0, 0x03, 0x00, 0x78, 0x01, + 0x80, 0x1E, 0x00, 0x60, 0x07, 0x00, 0x38, 0x00, 0xC0, 0x0E, 0x00, 0x30, + 0x0F, 0xE0, 0x04, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0xFF, 0xE0, 0x07, 0xC1, + 0xE0, 0x1E, 0x01, 0xE0, 0x78, 0x01, 0xC1, 0xE0, 0x03, 0xC7, 0x80, 0x07, + 0x9F, 0x00, 0x0F, 0x3C, 0x00, 0x1E, 0xF8, 0x00, 0x3D, 0xE0, 0x00, 0xFF, + 0xC0, 0x01, 0xEF, 0x80, 0x03, 0xDE, 0x00, 0x0F, 0xBC, 0x00, 0x1E, 0x78, + 0x00, 0x7C, 0xF0, 0x00, 0xF1, 0xE0, 0x03, 0xC1, 0xC0, 0x0F, 0x03, 0xC0, + 0x3C, 0x03, 0xC1, 0xF0, 0x03, 0xFF, 0x80, 0x01, 0xFC, 0x00, 0x00, 0x07, + 0xFF, 0xC0, 0x07, 0xFF, 0xC0, 0x0E, 0x0F, 0x80, 0x78, 0x1F, 0x01, 0xC0, + 0x3C, 0x07, 0x00, 0xF0, 0x1C, 0x03, 0xC0, 0xF0, 0x0F, 0x03, 0x80, 0x78, + 0x0E, 0x01, 0xE0, 0x78, 0x1F, 0x01, 0xFF, 0xF8, 0x07, 0x7F, 0x00, 0x1C, + 0x00, 0x00, 0xF0, 0x00, 0x03, 0x80, 0x00, 0x0E, 0x00, 0x00, 0x78, 0x00, + 0x01, 0xE0, 0x00, 0x07, 0x00, 0x00, 0x1C, 0x00, 0x00, 0xF0, 0x00, 0x0F, + 0xF0, 0x00, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0xFF, 0xE0, 0x03, 0xC1, 0xE0, + 0x1E, 0x01, 0xC0, 0x78, 0x03, 0xC1, 0xE0, 0x03, 0x87, 0x80, 0x07, 0x8F, + 0x00, 0x0F, 0x3C, 0x00, 0x1E, 0x78, 0x00, 0x3D, 0xE0, 0x00, 0x7B, 0xC0, + 0x01, 0xFF, 0x80, 0x03, 0xDE, 0x00, 0x07, 0xBC, 0x00, 0x1F, 0x78, 0x00, + 0x3C, 0xF0, 0x00, 0xF1, 0xE0, 0x01, 0xE3, 0xC0, 0x07, 0x83, 0x80, 0x1E, + 0x07, 0x80, 0x78, 0x07, 0x01, 0xC0, 0x03, 0xDE, 0x00, 0x01, 0xC0, 0x00, + 0x06, 0x00, 0x00, 0x18, 0x00, 0x10, 0x7F, 0xC0, 0xC3, 0xFF, 0xFF, 0x08, + 0x07, 0xF0, 0x00, 0x07, 0xFF, 0x80, 0x0F, 0xFF, 0x00, 0x78, 0x3C, 0x03, + 0xC0, 0xF0, 0x1E, 0x07, 0x80, 0xE0, 0x3C, 0x07, 0x01, 0xE0, 0x78, 0x1E, + 0x03, 0x83, 0xF0, 0x1F, 0xFE, 0x01, 0xFF, 0xC0, 0x0F, 0x38, 0x00, 0x71, + 0xE0, 0x03, 0x87, 0x00, 0x3C, 0x38, 0x01, 0xC1, 0xE0, 0x0E, 0x07, 0x00, + 0xF0, 0x3C, 0x07, 0x81, 0xE0, 0x38, 0x07, 0x01, 0xC0, 0x3C, 0x1E, 0x00, + 0xF3, 0xFC, 0x07, 0xC0, 0x00, 0xF8, 0x81, 0xFF, 0xC1, 0xE1, 0xE1, 0xE0, + 0x70, 0xF0, 0x10, 0x78, 0x08, 0x3C, 0x00, 0x1F, 0x00, 0x07, 0x80, 0x01, + 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0xF8, + 0x80, 0x3C, 0x40, 0x1E, 0x20, 0x0F, 0x38, 0x07, 0x9E, 0x07, 0x8F, 0x87, + 0x84, 0x7F, 0xC2, 0x0F, 0x80, 0x3F, 0xFF, 0xF7, 0xFF, 0xFF, 0x70, 0x78, + 0x76, 0x07, 0x02, 0xC0, 0x70, 0x28, 0x0F, 0x02, 0x00, 0xF0, 0x00, 0x0E, + 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x03, + 0xC0, 0x00, 0x3C, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x07, 0x80, 0x00, + 0x70, 0x00, 0x07, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x01, 0xF0, 0x00, + 0xFF, 0xE0, 0x00, 0x7F, 0xE0, 0xFE, 0x3F, 0x00, 0x78, 0x3C, 0x00, 0x60, + 0xF0, 0x01, 0x81, 0xE0, 0x03, 0x03, 0xC0, 0x06, 0x07, 0x00, 0x08, 0x1E, + 0x00, 0x30, 0x3C, 0x00, 0x60, 0x70, 0x00, 0x81, 0xE0, 0x01, 0x03, 0xC0, + 0x06, 0x07, 0x80, 0x0C, 0x0E, 0x00, 0x10, 0x3C, 0x00, 0x60, 0x78, 0x00, + 0xC0, 0xF0, 0x01, 0x01, 0xE0, 0x06, 0x03, 0xC0, 0x08, 0x03, 0xC0, 0x30, + 0x07, 0xC1, 0xC0, 0x07, 0xFF, 0x00, 0x03, 0xF8, 0x00, 0x00, 0xFF, 0x01, + 0xFB, 0xE0, 0x07, 0x8E, 0x00, 0x18, 0x78, 0x01, 0x83, 0xC0, 0x0C, 0x1E, + 0x00, 0xC0, 0xF0, 0x06, 0x03, 0x80, 0x60, 0x1C, 0x02, 0x00, 0xE0, 0x30, + 0x07, 0x83, 0x00, 0x3C, 0x10, 0x01, 0xE1, 0x80, 0x07, 0x08, 0x00, 0x38, + 0x80, 0x01, 0xC4, 0x00, 0x0E, 0x40, 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, + 0x0E, 0x00, 0x00, 0x70, 0x00, 0x03, 0x00, 0x00, 0x10, 0x00, 0x00, 0xFF, + 0x3F, 0xC3, 0xFB, 0xE0, 0x78, 0x07, 0x8E, 0x03, 0xC0, 0x18, 0x78, 0x0E, + 0x01, 0x83, 0xC0, 0x70, 0x0C, 0x1E, 0x03, 0x80, 0x40, 0xF0, 0x3C, 0x06, + 0x03, 0x81, 0xE0, 0x60, 0x1C, 0x17, 0x83, 0x00, 0xE0, 0xBC, 0x30, 0x07, + 0x09, 0xE1, 0x00, 0x38, 0x47, 0x18, 0x01, 0xE4, 0x38, 0x80, 0x0F, 0x21, + 0xCC, 0x00, 0x7A, 0x0E, 0x40, 0x01, 0xD0, 0x76, 0x00, 0x0F, 0x03, 0xA0, + 0x00, 0x78, 0x1F, 0x00, 0x03, 0x80, 0xF0, 0x00, 0x1C, 0x07, 0x00, 0x00, + 0xC0, 0x38, 0x00, 0x06, 0x00, 0x80, 0x00, 0x20, 0x04, 0x00, 0x00, 0x0F, + 0xF8, 0x7F, 0x03, 0xE0, 0x3E, 0x01, 0xC0, 0x18, 0x01, 0xE0, 0x30, 0x01, + 0xE0, 0x60, 0x00, 0xE0, 0xC0, 0x00, 0xF1, 0xC0, 0x00, 0x71, 0x80, 0x00, + 0x7B, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00, + 0x3C, 0x00, 0x00, 0x7E, 0x00, 0x00, 0xCE, 0x00, 0x01, 0x8F, 0x00, 0x01, + 0x07, 0x00, 0x03, 0x07, 0x00, 0x06, 0x07, 0x80, 0x0C, 0x03, 0x80, 0x18, + 0x03, 0xC0, 0x78, 0x03, 0xE0, 0xFE, 0x1F, 0xF8, 0xFF, 0x87, 0xE7, 0xC0, + 0x38, 0x70, 0x06, 0x0E, 0x01, 0x81, 0xE0, 0x30, 0x1C, 0x0C, 0x03, 0x83, + 0x00, 0x78, 0xC0, 0x07, 0x30, 0x00, 0xE4, 0x00, 0x1D, 0x80, 0x03, 0xE0, + 0x00, 0x38, 0x00, 0x0F, 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x07, 0x00, + 0x01, 0xE0, 0x00, 0x38, 0x00, 0x07, 0x00, 0x01, 0xE0, 0x00, 0x7C, 0x00, + 0x3F, 0xF0, 0x00, 0x07, 0xFF, 0xFC, 0x3F, 0xFF, 0xE0, 0xE0, 0x0F, 0x82, + 0x00, 0x3C, 0x18, 0x01, 0xE0, 0x40, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, + 0xC0, 0x00, 0x0E, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, + 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x1C, 0x00, 0x00, 0xF0, 0x00, 0x07, + 0x80, 0x00, 0x3C, 0x00, 0xC1, 0xE0, 0x02, 0x0F, 0x00, 0x18, 0x38, 0x01, + 0xE1, 0xFF, 0xFF, 0x0F, 0xFF, 0xFC, 0x00, 0x01, 0xF8, 0x0C, 0x00, 0xC0, + 0x06, 0x00, 0x30, 0x01, 0x80, 0x18, 0x00, 0xC0, 0x06, 0x00, 0x30, 0x03, + 0x00, 0x18, 0x00, 0xC0, 0x06, 0x00, 0x60, 0x03, 0x00, 0x18, 0x01, 0xC0, + 0x0C, 0x00, 0x60, 0x03, 0x00, 0x30, 0x01, 0x80, 0x0C, 0x00, 0x60, 0x06, + 0x00, 0x30, 0x01, 0xF8, 0x00, 0xE0, 0x0E, 0x00, 0x60, 0x07, 0x00, 0x30, + 0x03, 0x80, 0x18, 0x01, 0xC0, 0x0C, 0x00, 0xC0, 0x0E, 0x00, 0x60, 0x07, + 0x00, 0x30, 0x03, 0x80, 0x18, 0x01, 0xC0, 0x0C, 0x00, 0xC0, 0x0E, 0x00, + 0x60, 0x07, 0x00, 0x30, 0x03, 0xF0, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, + 0x0E, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x01, 0x80, 0x18, 0x01, 0x80, + 0x18, 0x03, 0x00, 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, 0x60, 0x06, 0x00, + 0x60, 0x06, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x0F, 0xC0, 0x03, 0x80, + 0x07, 0x00, 0x1F, 0x00, 0x36, 0x00, 0xCE, 0x01, 0x8C, 0x06, 0x1C, 0x0C, + 0x18, 0x38, 0x38, 0x60, 0x31, 0xC0, 0x73, 0x00, 0x6E, 0x00, 0xE0, 0xFF, + 0xFF, 0xFF, 0xFF, 0xF0, 0xE3, 0x8F, 0x0E, 0x18, 0x30, 0x01, 0xEC, 0x0E, + 0x58, 0x30, 0x70, 0xE0, 0xC3, 0x81, 0x86, 0x07, 0x1C, 0x0C, 0x38, 0x18, + 0xE0, 0x71, 0xC0, 0xE3, 0x83, 0x87, 0x0B, 0x2F, 0x36, 0xCF, 0xCF, 0x1F, + 0x1C, 0x00, 0x03, 0x00, 0x1F, 0x00, 0x07, 0x00, 0x07, 0x00, 0x06, 0x00, + 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0C, 0x00, 0x1C, 0x7C, 0x1C, 0xFE, + 0x19, 0x8F, 0x1A, 0x07, 0x3C, 0x07, 0x38, 0x07, 0x38, 0x07, 0x70, 0x0E, + 0x70, 0x0E, 0x70, 0x1C, 0x60, 0x18, 0xE0, 0x30, 0xE0, 0x60, 0xE1, 0xC0, + 0x3F, 0x00, 0x01, 0xF0, 0x38, 0xC3, 0x8E, 0x78, 0x73, 0x80, 0x3C, 0x01, + 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x47, 0x84, 0x3F, + 0xC0, 0x7C, 0x00, 0x00, 0x01, 0x80, 0x07, 0xC0, 0x00, 0xE0, 0x00, 0x60, + 0x00, 0x30, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0C, 0x00, 0x06, 0x00, 0xF7, + 0x01, 0xC7, 0x81, 0xC3, 0x81, 0xC1, 0xC1, 0xE0, 0xE0, 0xE0, 0x60, 0xF0, + 0x30, 0x78, 0x38, 0x78, 0x18, 0x3C, 0x0C, 0x1E, 0x0C, 0x0F, 0x0E, 0x27, + 0xCB, 0x21, 0xF9, 0xE0, 0x78, 0xE0, 0x00, 0xF0, 0x1C, 0xC3, 0x86, 0x38, + 0x33, 0xC3, 0x1C, 0x31, 0xE3, 0x1F, 0xE0, 0xF0, 0x07, 0x80, 0x3C, 0x01, + 0xE0, 0x47, 0x84, 0x3F, 0xC0, 0x7C, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x33, + 0x00, 0x06, 0x30, 0x00, 0xC0, 0x00, 0x0C, 0x00, 0x01, 0xC0, 0x00, 0x18, + 0x00, 0x01, 0x80, 0x00, 0x38, 0x00, 0x3F, 0xF8, 0x03, 0xFF, 0x80, 0x03, + 0x00, 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0x70, 0x00, 0x06, 0x00, 0x00, + 0x60, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x0C, 0x00, 0x00, 0xC0, 0x00, + 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x18, 0x00, 0x01, 0x80, 0x00, 0x18, 0x00, + 0x03, 0x00, 0x00, 0x30, 0x00, 0xC6, 0x00, 0x0C, 0xC0, 0x00, 0x78, 0x00, + 0x00, 0x01, 0xF8, 0x07, 0x1F, 0x0E, 0x0F, 0x0C, 0x0E, 0x18, 0x0E, 0x18, + 0x0E, 0x18, 0x1E, 0x18, 0x3C, 0x0C, 0x78, 0x07, 0xE0, 0x08, 0x00, 0x18, + 0x00, 0x1E, 0x00, 0x0F, 0xE0, 0x13, 0xF0, 0x60, 0x78, 0xC0, 0x38, 0xC0, + 0x18, 0xC0, 0x18, 0xC0, 0x30, 0x60, 0x60, 0x3F, 0x80, 0x03, 0x00, 0x1F, + 0x00, 0x07, 0x00, 0x07, 0x00, 0x06, 0x00, 0x06, 0x00, 0x0E, 0x00, 0x0E, + 0x00, 0x0C, 0x00, 0x1C, 0x38, 0x1C, 0x7C, 0x1C, 0xCC, 0x19, 0x0C, 0x3A, + 0x0C, 0x3C, 0x1C, 0x3C, 0x18, 0x38, 0x18, 0x70, 0x38, 0x70, 0x38, 0x70, + 0x30, 0x60, 0x72, 0xE0, 0x76, 0xE0, 0x7C, 0xC0, 0x70, 0x03, 0x03, 0xC1, + 0xE0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x7E, 0x0F, 0x03, 0x81, 0x81, + 0xC0, 0xE0, 0x70, 0x30, 0x38, 0x1C, 0x1C, 0x4C, 0x47, 0xC3, 0xC0, 0x00, + 0x0C, 0x00, 0x3C, 0x00, 0x78, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x18, 0x03, 0xF0, 0x00, 0xE0, 0x01, 0x80, 0x03, 0x00, + 0x0E, 0x00, 0x1C, 0x00, 0x30, 0x00, 0x60, 0x01, 0xC0, 0x03, 0x80, 0x06, + 0x00, 0x0C, 0x00, 0x38, 0x00, 0x70, 0x00, 0xC0, 0x03, 0x80, 0x06, 0x00, + 0x0C, 0x06, 0x30, 0x0C, 0xC0, 0x0F, 0x00, 0x00, 0x03, 0x00, 0x3E, 0x00, + 0x1C, 0x00, 0x38, 0x00, 0x60, 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0C, + 0x00, 0x38, 0xFC, 0x70, 0x60, 0xE1, 0x81, 0x86, 0x07, 0x10, 0x0E, 0x40, + 0x1B, 0x80, 0x3F, 0x00, 0xE7, 0x01, 0xCE, 0x03, 0x0C, 0x06, 0x1C, 0x5C, + 0x1D, 0x38, 0x3E, 0x60, 0x38, 0x03, 0x1F, 0x07, 0x07, 0x06, 0x0E, 0x0E, + 0x0E, 0x0C, 0x1C, 0x1C, 0x18, 0x38, 0x38, 0x38, 0x30, 0x70, 0x70, 0x70, + 0x64, 0xE4, 0xE8, 0xF0, 0xE0, 0x00, 0x06, 0x18, 0x1E, 0x3E, 0x3C, 0x3F, + 0x0E, 0x4C, 0x47, 0x0C, 0x8C, 0x8E, 0x1D, 0x0D, 0x0E, 0x1E, 0x1A, 0x0E, + 0x1C, 0x1E, 0x0C, 0x3C, 0x1C, 0x1C, 0x38, 0x38, 0x1C, 0x38, 0x38, 0x1C, + 0x30, 0x38, 0x18, 0x70, 0x30, 0x39, 0x70, 0x70, 0x32, 0x60, 0x70, 0x3C, + 0x60, 0x60, 0x38, 0x06, 0x0E, 0x1F, 0x1F, 0x83, 0x99, 0xC1, 0x98, 0xC1, + 0xD8, 0xE0, 0xE8, 0x70, 0x78, 0x30, 0x38, 0x38, 0x3C, 0x1C, 0x1C, 0x0E, + 0x0E, 0x06, 0x0E, 0x03, 0x17, 0x01, 0xB3, 0x80, 0xF1, 0x80, 0x70, 0x01, + 0xF0, 0x0E, 0x38, 0x38, 0x30, 0xE0, 0x73, 0x80, 0xEE, 0x01, 0xDC, 0x03, + 0xF8, 0x0F, 0xE0, 0x1D, 0xC0, 0x3B, 0x80, 0xE7, 0x03, 0x8E, 0x06, 0x0E, + 0x38, 0x07, 0xC0, 0x00, 0x00, 0xE7, 0xC0, 0x7C, 0xFE, 0x01, 0xD1, 0xF0, + 0x1E, 0x0F, 0x01, 0xC0, 0xF0, 0x38, 0x0F, 0x03, 0x80, 0xF0, 0x38, 0x0E, + 0x03, 0x01, 0xE0, 0x70, 0x1C, 0x07, 0x03, 0xC0, 0x60, 0x78, 0x06, 0x0F, + 0x00, 0xE1, 0xC0, 0x0F, 0xF0, 0x00, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xC0, + 0x00, 0x1C, 0x00, 0x01, 0x80, 0x00, 0x38, 0x00, 0x0F, 0xF0, 0x00, 0x00, + 0xF7, 0x03, 0xCE, 0x0F, 0x06, 0x1E, 0x06, 0x1C, 0x04, 0x3C, 0x04, 0x78, + 0x04, 0x78, 0x0C, 0xF0, 0x08, 0xF0, 0x18, 0xF0, 0x38, 0xF0, 0xF0, 0xF9, + 0x70, 0x7E, 0x70, 0x3C, 0x70, 0x00, 0x60, 0x00, 0xE0, 0x00, 0xE0, 0x00, + 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x0F, 0xF0, 0x7C, 0x70, 0xE7, 0xC7, 0x4C, + 0x34, 0x01, 0xA0, 0x1E, 0x00, 0xF0, 0x07, 0x00, 0x78, 0x03, 0x80, 0x1C, + 0x00, 0xC0, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x00, 0x07, 0x88, 0x63, 0x86, + 0x0C, 0x30, 0x21, 0xC1, 0x0E, 0x00, 0x38, 0x00, 0xE0, 0x03, 0x80, 0x1C, + 0x10, 0x60, 0x83, 0x06, 0x18, 0x71, 0x82, 0x78, 0x00, 0x02, 0x03, 0x03, + 0x07, 0xF7, 0xF8, 0xE0, 0x60, 0x70, 0x38, 0x1C, 0x0C, 0x0E, 0x07, 0x03, + 0x01, 0x91, 0xC8, 0xF8, 0x78, 0x00, 0x1C, 0x0D, 0xF8, 0x38, 0x60, 0x70, + 0xC1, 0xC3, 0x83, 0x87, 0x07, 0x0C, 0x1E, 0x38, 0x78, 0x70, 0xB0, 0xE2, + 0x61, 0x8D, 0xC7, 0x33, 0x2C, 0xC6, 0x5F, 0x0F, 0x38, 0x1C, 0x00, 0x18, + 0x1B, 0xE0, 0x73, 0x81, 0xC6, 0x03, 0x18, 0x0C, 0x70, 0x21, 0xC1, 0x83, + 0x0C, 0x0C, 0x20, 0x31, 0x00, 0xC8, 0x03, 0x40, 0x0E, 0x00, 0x30, 0x00, + 0x80, 0x00, 0x18, 0x04, 0x1B, 0xE0, 0x30, 0x71, 0x80, 0xC1, 0xC6, 0x07, + 0x01, 0x1C, 0x2C, 0x08, 0x70, 0xB0, 0x20, 0xC4, 0xC1, 0x03, 0x21, 0x84, + 0x0D, 0x86, 0x20, 0x34, 0x19, 0x00, 0xE0, 0x68, 0x03, 0x81, 0xA0, 0x0C, + 0x07, 0x00, 0x30, 0x18, 0x00, 0x80, 0x40, 0x00, 0x03, 0x07, 0x0F, 0x8F, + 0x13, 0x93, 0x01, 0xB0, 0x01, 0xE0, 0x01, 0xC0, 0x00, 0xC0, 0x00, 0xC0, + 0x01, 0xC0, 0x03, 0xE0, 0x02, 0x60, 0x04, 0x62, 0x08, 0x64, 0xF0, 0x7C, + 0xE0, 0x30, 0x06, 0x06, 0x3F, 0x07, 0x07, 0x07, 0x07, 0x03, 0x03, 0x81, + 0x03, 0x82, 0x01, 0x82, 0x01, 0xC4, 0x01, 0xC4, 0x01, 0xC8, 0x00, 0xC8, + 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xE0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0x80, + 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x78, 0x00, 0x70, 0x00, 0x1F, 0xFC, + 0x7F, 0xE1, 0x01, 0x08, 0x08, 0x00, 0x40, 0x02, 0x00, 0x10, 0x00, 0x80, + 0x06, 0x00, 0x10, 0x00, 0x80, 0x04, 0x00, 0x38, 0x01, 0xF0, 0x0B, 0xE0, + 0x01, 0xC6, 0x03, 0x98, 0x03, 0x80, 0x00, 0x70, 0x0C, 0x01, 0x80, 0x38, + 0x03, 0x80, 0x30, 0x07, 0x00, 0x70, 0x07, 0x00, 0x60, 0x0E, 0x00, 0xE0, + 0x0C, 0x01, 0xC0, 0x1C, 0x07, 0x80, 0x30, 0x04, 0x00, 0x20, 0x03, 0x00, + 0x30, 0x07, 0x00, 0x70, 0x06, 0x00, 0x60, 0x0E, 0x00, 0xE0, 0x0C, 0x00, + 0xC0, 0x07, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0xC0, 0x06, + 0x00, 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, 0x70, 0x07, 0x00, 0x70, 0x06, + 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0C, 0x00, 0x40, 0x04, 0x00, 0xC0, 0x1E, + 0x03, 0x80, 0x38, 0x03, 0x00, 0x70, 0x07, 0x00, 0x70, 0x06, 0x00, 0xE0, + 0x0E, 0x00, 0xC0, 0x1C, 0x01, 0x80, 0x70, 0x00, 0x1E, 0x00, 0x3F, 0xE1, + 0xF8, 0x7F, 0xC0, 0x07, 0x80}; + +const GFXglyph FreeSerifItalic18pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 9, 0, 1}, // 0x20 ' ' + {0, 10, 23, 12, 1, -22}, // 0x21 '!' + {29, 12, 9, 12, 4, -22}, // 0x22 '"' + {43, 19, 23, 17, 0, -22}, // 0x23 '#' + {98, 15, 29, 17, 1, -25}, // 0x24 '$' + {153, 25, 23, 29, 3, -22}, // 0x25 '%' + {225, 22, 23, 27, 3, -22}, // 0x26 '&' + {289, 5, 9, 7, 4, -22}, // 0x27 ''' + {295, 9, 29, 12, 1, -22}, // 0x28 '(' + {328, 9, 29, 12, 1, -22}, // 0x29 ')' + {361, 12, 14, 18, 5, -22}, // 0x2A '*' + {382, 16, 18, 24, 4, -17}, // 0x2B '+' + {418, 5, 8, 9, -1, -2}, // 0x2C ',' + {423, 8, 2, 12, 2, -8}, // 0x2D '-' + {425, 4, 4, 9, 1, -3}, // 0x2E '.' + {427, 16, 23, 10, 0, -22}, // 0x2F '/' + {473, 17, 24, 17, 1, -23}, // 0x30 '0' + {524, 12, 24, 17, 2, -23}, // 0x31 '1' + {560, 16, 23, 17, 1, -22}, // 0x32 '2' + {606, 17, 24, 18, 0, -23}, // 0x33 '3' + {657, 17, 24, 17, 0, -23}, // 0x34 '4' + {708, 16, 23, 18, 0, -22}, // 0x35 '5' + {754, 17, 24, 18, 1, -23}, // 0x36 '6' + {805, 16, 23, 17, 3, -22}, // 0x37 '7' + {851, 16, 24, 18, 1, -23}, // 0x38 '8' + {899, 16, 24, 17, 1, -23}, // 0x39 '9' + {947, 7, 15, 9, 2, -14}, // 0x3A ':' + {961, 9, 20, 9, 1, -14}, // 0x3B ';' + {984, 18, 18, 20, 2, -17}, // 0x3C '<' + {1025, 18, 9, 23, 3, -12}, // 0x3D '=' + {1046, 18, 18, 20, 2, -17}, // 0x3E '>' + {1087, 12, 23, 16, 4, -22}, // 0x3F '?' + {1122, 24, 23, 27, 2, -22}, // 0x40 '@' + {1191, 21, 23, 23, 0, -22}, // 0x41 'A' + {1252, 21, 23, 21, 0, -22}, // 0x42 'B' + {1313, 21, 23, 21, 2, -22}, // 0x43 'C' + {1374, 25, 23, 25, 0, -22}, // 0x44 'D' + {1446, 22, 23, 20, 0, -22}, // 0x45 'E' + {1510, 22, 23, 20, 0, -22}, // 0x46 'F' + {1574, 23, 23, 24, 2, -22}, // 0x47 'G' + {1641, 27, 23, 25, 0, -22}, // 0x48 'H' + {1719, 14, 23, 11, 0, -22}, // 0x49 'I' + {1760, 17, 23, 15, 0, -22}, // 0x4A 'J' + {1809, 25, 23, 22, 0, -22}, // 0x4B 'K' + {1881, 20, 23, 20, 0, -22}, // 0x4C 'L' + {1939, 31, 23, 29, 0, -22}, // 0x4D 'M' + {2029, 26, 23, 24, 0, -22}, // 0x4E 'N' + {2104, 23, 23, 23, 1, -22}, // 0x4F 'O' + {2171, 22, 23, 20, 0, -22}, // 0x50 'P' + {2235, 23, 29, 23, 1, -22}, // 0x51 'Q' + {2319, 21, 23, 22, 0, -22}, // 0x52 'R' + {2380, 17, 23, 16, 0, -22}, // 0x53 'S' + {2429, 20, 23, 21, 3, -22}, // 0x54 'T' + {2487, 23, 23, 25, 4, -22}, // 0x55 'U' + {2554, 21, 23, 23, 5, -22}, // 0x56 'V' + {2615, 29, 23, 31, 5, -22}, // 0x57 'W' + {2699, 24, 23, 23, 0, -22}, // 0x58 'X' + {2768, 19, 23, 21, 4, -22}, // 0x59 'Y' + {2823, 22, 23, 20, 0, -22}, // 0x5A 'Z' + {2887, 13, 28, 14, 1, -22}, // 0x5B '[' + {2933, 12, 23, 17, 4, -22}, // 0x5C '\' + {2968, 12, 28, 14, 1, -22}, // 0x5D ']' + {3010, 15, 13, 15, 0, -22}, // 0x5E '^' + {3035, 18, 2, 17, 0, 3}, // 0x5F '_' + {3040, 6, 6, 9, 5, -22}, // 0x60 '`' + {3045, 15, 15, 17, 1, -14}, // 0x61 'a' + {3074, 16, 24, 17, 1, -23}, // 0x62 'b' + {3122, 13, 15, 14, 1, -14}, // 0x63 'c' + {3147, 17, 24, 18, 1, -23}, // 0x64 'd' + {3198, 13, 15, 14, 1, -14}, // 0x65 'e' + {3223, 20, 31, 15, -3, -23}, // 0x66 'f' + {3301, 16, 22, 15, -1, -14}, // 0x67 'g' + {3345, 16, 24, 17, 1, -23}, // 0x68 'h' + {3393, 9, 23, 9, 1, -22}, // 0x69 'i' + {3419, 15, 30, 10, -3, -22}, // 0x6A 'j' + {3476, 15, 24, 16, 1, -23}, // 0x6B 'k' + {3521, 8, 25, 9, 1, -23}, // 0x6C 'l' + {3546, 24, 15, 25, 0, -14}, // 0x6D 'm' + {3591, 17, 15, 17, 0, -14}, // 0x6E 'n' + {3623, 15, 15, 17, 1, -14}, // 0x6F 'o' + {3652, 20, 22, 16, -3, -14}, // 0x70 'p' + {3707, 16, 22, 17, 1, -14}, // 0x71 'q' + {3751, 13, 15, 13, 1, -14}, // 0x72 'r' + {3776, 13, 15, 12, 0, -14}, // 0x73 's' + {3801, 9, 18, 8, 1, -17}, // 0x74 't' + {3822, 15, 15, 17, 1, -14}, // 0x75 'u' + {3851, 14, 15, 16, 2, -14}, // 0x76 'v' + {3878, 22, 15, 24, 1, -14}, // 0x77 'w' + {3920, 16, 15, 15, -1, -14}, // 0x78 'x' + {3950, 16, 22, 16, 0, -14}, // 0x79 'y' + {3994, 14, 18, 14, 0, -14}, // 0x7A 'z' + {4026, 12, 30, 14, 2, -23}, // 0x7B '{' + {4071, 2, 23, 10, 4, -22}, // 0x7C '|' + {4077, 12, 31, 14, 0, -24}, // 0x7D '}' + {4124, 17, 4, 19, 1, -10}}; // 0x7E '~' + +const GFXfont FreeSerifItalic18pt7b PROGMEM = { + (uint8_t *)FreeSerifItalic18pt7bBitmaps, + (GFXglyph *)FreeSerifItalic18pt7bGlyphs, 0x20, 0x7E, 42}; + +// Approx. 4805 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerifItalic24pt7b.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerifItalic24pt7b.h new file mode 100644 index 0000000..98233a7 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerifItalic24pt7b.h @@ -0,0 +1,739 @@ +#pragma once +#include + +const uint8_t FreeSerifItalic24pt7bBitmaps[] PROGMEM = { + 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x01, 0xF0, 0x1E, 0x01, 0xE0, 0x1C, + 0x01, 0xC0, 0x3C, 0x03, 0x80, 0x38, 0x03, 0x80, 0x30, 0x07, 0x00, 0x60, + 0x06, 0x00, 0x60, 0x04, 0x00, 0x40, 0x0C, 0x00, 0x80, 0x08, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0xF8, 0x0F, 0x80, 0xF8, 0x07, 0x00, + 0x38, 0x1D, 0xE0, 0x77, 0x83, 0xDC, 0x0E, 0x70, 0x39, 0xC1, 0xEE, 0x07, + 0x38, 0x1C, 0xC0, 0x63, 0x01, 0x8C, 0x06, 0x20, 0x10, 0x00, 0x06, 0x03, + 0x00, 0x07, 0x03, 0x80, 0x03, 0x81, 0xC0, 0x03, 0x81, 0xC0, 0x01, 0xC0, + 0xE0, 0x00, 0xE0, 0x70, 0x00, 0xE0, 0x70, 0x00, 0x70, 0x38, 0x00, 0x30, + 0x18, 0x00, 0x38, 0x1C, 0x03, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0xF0, 0x0E, + 0x07, 0x00, 0x06, 0x03, 0x00, 0x07, 0x03, 0x80, 0x03, 0x81, 0xC0, 0x03, + 0x81, 0xC0, 0x01, 0xC0, 0xE0, 0x00, 0xE0, 0x70, 0x1F, 0xFF, 0xFF, 0x8F, + 0xFF, 0xFF, 0x80, 0x70, 0x38, 0x00, 0x38, 0x1C, 0x00, 0x1C, 0x0C, 0x00, + 0x1C, 0x0E, 0x00, 0x0E, 0x07, 0x00, 0x0E, 0x07, 0x00, 0x07, 0x03, 0x80, + 0x03, 0x81, 0xC0, 0x03, 0x81, 0xC0, 0x01, 0xC0, 0xE0, 0x00, 0x00, 0x01, + 0x00, 0x00, 0x18, 0x00, 0x00, 0xC0, 0x00, 0xFF, 0x80, 0x1C, 0x2F, 0x01, + 0x83, 0x3C, 0x1C, 0x18, 0xE1, 0xC0, 0xC3, 0x0E, 0x06, 0x18, 0x70, 0x60, + 0x83, 0x83, 0x04, 0x1E, 0x18, 0x00, 0xF8, 0xC0, 0x03, 0xEC, 0x00, 0x0F, + 0xE0, 0x00, 0x3F, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xF0, 0x00, 0x0F, 0xC0, + 0x00, 0x7F, 0x00, 0x03, 0x7C, 0x00, 0x19, 0xE0, 0x01, 0x87, 0x80, 0x0C, + 0x3C, 0x00, 0x60, 0xE2, 0x03, 0x07, 0x10, 0x30, 0x39, 0x81, 0x81, 0xCE, + 0x0C, 0x0C, 0x70, 0x60, 0xE3, 0xC6, 0x06, 0x0F, 0x30, 0x60, 0x1F, 0x9E, + 0x00, 0x3F, 0x80, 0x00, 0xC0, 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, + 0x80, 0x00, 0x01, 0xF0, 0x00, 0xC0, 0x03, 0xFE, 0x01, 0xE0, 0x03, 0xC7, + 0x83, 0xE0, 0x03, 0xC0, 0x7F, 0x60, 0x03, 0xC0, 0x20, 0x70, 0x01, 0xC0, + 0x10, 0x30, 0x01, 0xE0, 0x08, 0x38, 0x00, 0xE0, 0x04, 0x18, 0x00, 0xF0, + 0x02, 0x1C, 0x00, 0x70, 0x02, 0x0C, 0x00, 0x38, 0x01, 0x0E, 0x00, 0x1C, + 0x01, 0x8E, 0x00, 0x0E, 0x00, 0x86, 0x00, 0x07, 0x00, 0x87, 0x03, 0xE1, + 0x80, 0xC3, 0x07, 0xFC, 0xE1, 0xC3, 0x87, 0xC6, 0x3F, 0x81, 0x87, 0x81, + 0x8F, 0x81, 0xC7, 0x80, 0x40, 0x00, 0xC3, 0xC0, 0x20, 0x00, 0xE3, 0xC0, + 0x10, 0x00, 0x61, 0xC0, 0x08, 0x00, 0x61, 0xE0, 0x04, 0x00, 0x70, 0xF0, + 0x06, 0x00, 0x30, 0x70, 0x02, 0x00, 0x38, 0x38, 0x03, 0x00, 0x18, 0x1C, + 0x01, 0x00, 0x1C, 0x0E, 0x01, 0x80, 0x0C, 0x07, 0x01, 0x80, 0x0E, 0x01, + 0xC3, 0x80, 0x06, 0x00, 0x7F, 0x80, 0x06, 0x00, 0x1F, 0x00, 0x07, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x71, + 0xC0, 0x00, 0x01, 0xC3, 0x80, 0x00, 0x0E, 0x0E, 0x00, 0x00, 0x38, 0x38, + 0x00, 0x01, 0xE0, 0xE0, 0x00, 0x07, 0x87, 0x00, 0x00, 0x1E, 0x18, 0x00, + 0x00, 0x78, 0xC0, 0x00, 0x01, 0xE6, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, + 0x1F, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x7F, + 0xC1, 0xFE, 0x03, 0x9F, 0x03, 0xE0, 0x3C, 0x3C, 0x07, 0x01, 0xE0, 0xF8, + 0x1C, 0x0F, 0x03, 0xE0, 0xE0, 0x7C, 0x07, 0x83, 0x01, 0xE0, 0x1F, 0x1C, + 0x07, 0x80, 0x7C, 0x60, 0x3E, 0x00, 0xFB, 0x00, 0xF8, 0x03, 0xFC, 0x03, + 0xE0, 0x07, 0xE0, 0x0F, 0x80, 0x1F, 0x00, 0x3F, 0x00, 0x3E, 0x00, 0x7C, + 0x00, 0xFC, 0x01, 0xF8, 0x0F, 0xF0, 0x03, 0xF0, 0xF3, 0xF0, 0x87, 0xFF, + 0x07, 0xFC, 0x07, 0xF0, 0x07, 0xC0, 0x39, 0xDE, 0xE7, 0x3B, 0x9C, 0xC6, + 0x31, 0x00, 0x00, 0x10, 0x01, 0x00, 0x18, 0x01, 0x80, 0x18, 0x01, 0x80, + 0x1C, 0x00, 0xC0, 0x0E, 0x00, 0xE0, 0x07, 0x00, 0x78, 0x03, 0x80, 0x3C, + 0x01, 0xE0, 0x0E, 0x00, 0x70, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0E, 0x00, + 0x70, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x01, 0xC0, 0x0E, + 0x00, 0x30, 0x01, 0x80, 0x0C, 0x00, 0x60, 0x01, 0x80, 0x0C, 0x00, 0x60, + 0x01, 0x00, 0x0C, 0x00, 0x20, 0x00, 0x00, 0x80, 0x06, 0x00, 0x10, 0x00, + 0x80, 0x06, 0x00, 0x30, 0x00, 0xC0, 0x06, 0x00, 0x30, 0x01, 0x80, 0x0C, + 0x00, 0x70, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x01, 0xC0, + 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xC0, 0x1E, 0x00, 0xF0, 0x07, + 0x80, 0x38, 0x03, 0xC0, 0x1C, 0x00, 0xE0, 0x0E, 0x00, 0x60, 0x07, 0x00, + 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, 0x10, 0x01, 0x00, 0x00, 0x01, 0x00, + 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0xE1, 0x07, 0xE1, 0x0F, + 0xF1, 0x1F, 0x19, 0x30, 0x07, 0xC0, 0x03, 0x80, 0x0D, 0x60, 0x79, 0x3C, + 0xF1, 0x1F, 0xE1, 0x0F, 0xE1, 0x07, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, + 0x03, 0x00, 0x00, 0x38, 0x00, 0x00, 0x70, 0x00, 0x00, 0xE0, 0x00, 0x01, + 0xC0, 0x00, 0x03, 0x80, 0x00, 0x07, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1C, + 0x00, 0x00, 0x38, 0x00, 0x00, 0x70, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xE0, 0x07, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x00, + 0x00, 0x38, 0x00, 0x00, 0x70, 0x00, 0x00, 0xE0, 0x00, 0x01, 0xC0, 0x00, + 0x03, 0x80, 0x00, 0x07, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x7C, 0xF9, + 0xF1, 0xE1, 0xC3, 0x0C, 0x10, 0xC1, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, + 0x77, 0xFF, 0xF7, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x80, 0x00, 0x3C, + 0x00, 0x01, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 0x00, + 0xF0, 0x00, 0x07, 0x00, 0x00, 0x78, 0x00, 0x03, 0x80, 0x00, 0x3C, 0x00, + 0x01, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x70, + 0x00, 0x07, 0x80, 0x00, 0x38, 0x00, 0x03, 0x80, 0x00, 0x3C, 0x00, 0x01, + 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x70, 0x00, + 0x07, 0x80, 0x00, 0x38, 0x00, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xE0, + 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x1F, 0x80, 0x03, 0x86, + 0x00, 0x30, 0x18, 0x03, 0x00, 0xC0, 0x38, 0x03, 0x03, 0x80, 0x18, 0x38, + 0x00, 0xC1, 0xC0, 0x07, 0x1C, 0x00, 0x38, 0xE0, 0x01, 0xCF, 0x00, 0x0E, + 0x70, 0x00, 0x77, 0x80, 0x07, 0xBC, 0x00, 0x3D, 0xE0, 0x01, 0xEE, 0x00, + 0x0F, 0xF0, 0x00, 0x77, 0x80, 0x07, 0xBC, 0x00, 0x3D, 0xC0, 0x01, 0xCE, + 0x00, 0x1E, 0x70, 0x00, 0xF3, 0x80, 0x07, 0x1C, 0x00, 0x78, 0xE0, 0x03, + 0x83, 0x00, 0x38, 0x18, 0x03, 0x80, 0xE0, 0x18, 0x03, 0x01, 0x80, 0x0C, + 0x38, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x80, 0x1F, 0xC0, 0x3F, 0xE0, + 0x01, 0xF0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1C, 0x00, 0x1E, + 0x00, 0x0F, 0x00, 0x07, 0x80, 0x07, 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x00, + 0xF0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x1E, 0x00, + 0x0F, 0x00, 0x07, 0x80, 0x07, 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x01, 0xE0, + 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x3F, 0x01, 0xFF, + 0xF0, 0x00, 0x3F, 0x00, 0x07, 0xFE, 0x00, 0x7F, 0xF8, 0x07, 0x07, 0xE0, + 0x60, 0x1F, 0x06, 0x00, 0x7C, 0x20, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, + 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xE0, 0x00, 0x0E, 0x00, + 0x00, 0xF0, 0x00, 0x07, 0x00, 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0x70, + 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, 0x03, + 0x00, 0x00, 0x30, 0x00, 0x03, 0x00, 0x00, 0x30, 0x01, 0x03, 0x00, 0x08, + 0x30, 0x00, 0xC3, 0xFF, 0xFC, 0x3F, 0xFF, 0xE3, 0xFF, 0xFE, 0x00, 0x00, + 0x0F, 0xC0, 0x00, 0xFF, 0xC0, 0x06, 0x0F, 0x80, 0x30, 0x1E, 0x01, 0x80, + 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x78, + 0x00, 0x01, 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xF0, 0x00, 0x0E, 0x00, 0x01, + 0xF8, 0x00, 0x3F, 0xF8, 0x00, 0x0F, 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x0F, + 0x80, 0x00, 0x3E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x80, + 0x00, 0x1E, 0x00, 0x00, 0x70, 0x00, 0x01, 0xC0, 0x00, 0x07, 0x00, 0x00, + 0x38, 0x00, 0x00, 0xC0, 0x70, 0x06, 0x03, 0xF8, 0x70, 0x07, 0xFF, 0x00, + 0x0F, 0xF0, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x70, 0x00, 0x03, 0xC0, + 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x37, 0x80, 0x00, + 0xDC, 0x00, 0x06, 0x70, 0x00, 0x33, 0xC0, 0x01, 0x8F, 0x00, 0x0C, 0x38, + 0x00, 0x60, 0xE0, 0x03, 0x07, 0x80, 0x18, 0x1E, 0x00, 0xC0, 0x70, 0x06, + 0x03, 0xC0, 0x30, 0x0F, 0x01, 0x80, 0x38, 0x0C, 0x00, 0xE0, 0x70, 0x07, + 0x81, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFE, 0x00, 0x0F, 0x00, + 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x00, + 0x70, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3F, 0xFC, 0x00, 0xFF, + 0xF0, 0x07, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x40, 0x00, 0x02, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x70, 0x00, 0x01, 0xF8, 0x00, 0x0F, 0xF0, 0x00, 0x3F, + 0xF0, 0x00, 0x1F, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, 0x03, 0x80, 0x00, 0x0E, 0x00, + 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x03, 0x80, 0x00, 0x0C, 0x00, 0x00, + 0x70, 0x00, 0x01, 0xC0, 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, 0x80, + 0x70, 0x0E, 0x03, 0xF0, 0xE0, 0x07, 0xFF, 0x00, 0x0F, 0xE0, 0x00, 0x00, + 0x00, 0x0E, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x03, + 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x7C, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xC0, + 0x00, 0x0F, 0x80, 0x00, 0x3E, 0x00, 0x00, 0xF9, 0xF8, 0x01, 0xFF, 0xFC, + 0x07, 0xE0, 0x7C, 0x0F, 0x80, 0x7C, 0x3E, 0x00, 0x78, 0x78, 0x00, 0x78, + 0xF0, 0x00, 0xF3, 0xC0, 0x01, 0xE7, 0x80, 0x03, 0xCF, 0x00, 0x07, 0x9C, + 0x00, 0x0F, 0x38, 0x00, 0x3E, 0x70, 0x00, 0x78, 0xE0, 0x00, 0xF1, 0xC0, + 0x03, 0xC1, 0x80, 0x07, 0x83, 0x00, 0x1E, 0x03, 0x00, 0x38, 0x06, 0x01, + 0xE0, 0x03, 0x07, 0x00, 0x01, 0xF8, 0x00, 0x1F, 0xFF, 0xF9, 0xFF, 0xFF, + 0xCF, 0xFF, 0xFC, 0xE0, 0x00, 0xCC, 0x00, 0x0E, 0x40, 0x00, 0x60, 0x00, + 0x07, 0x00, 0x00, 0x70, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x01, 0x80, + 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x07, + 0x00, 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0x38, 0x00, 0x03, 0x80, 0x00, + 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, + 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0x78, 0x00, 0x03, 0x80, 0x00, 0x38, + 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x03, 0x83, + 0x80, 0x1C, 0x03, 0x00, 0xE0, 0x0E, 0x07, 0x00, 0x1C, 0x1C, 0x00, 0x70, + 0x70, 0x01, 0xC1, 0xC0, 0x07, 0x07, 0x80, 0x1C, 0x1E, 0x00, 0xE0, 0x3C, + 0x07, 0x80, 0xFC, 0x38, 0x01, 0xFB, 0xC0, 0x03, 0xF8, 0x00, 0x0F, 0xE0, + 0x00, 0x7F, 0xC0, 0x07, 0x1F, 0x80, 0x78, 0x3F, 0x03, 0x80, 0x7C, 0x1E, + 0x00, 0xF8, 0x70, 0x01, 0xE3, 0x80, 0x03, 0xCE, 0x00, 0x07, 0x38, 0x00, + 0x1C, 0xE0, 0x00, 0x73, 0x80, 0x01, 0xCE, 0x00, 0x06, 0x1C, 0x00, 0x38, + 0x70, 0x01, 0xC0, 0xE0, 0x0E, 0x01, 0xE0, 0xE0, 0x01, 0xFE, 0x00, 0x00, + 0x1F, 0x80, 0x03, 0xC3, 0x00, 0x1C, 0x02, 0x00, 0xE0, 0x0C, 0x07, 0x00, + 0x18, 0x3C, 0x00, 0x60, 0xE0, 0x01, 0xC7, 0x80, 0x07, 0x1E, 0x00, 0x1C, + 0xF0, 0x00, 0x73, 0xC0, 0x01, 0xCF, 0x00, 0x07, 0x3C, 0x00, 0x3C, 0xF0, + 0x00, 0xF3, 0xC0, 0x03, 0xCF, 0x00, 0x1E, 0x1E, 0x00, 0x78, 0x7C, 0x03, + 0xE0, 0xF8, 0x3F, 0x01, 0xFF, 0xBC, 0x03, 0xF1, 0xE0, 0x00, 0x0F, 0x80, + 0x00, 0x3C, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x03, + 0xE0, 0x00, 0x1F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x78, 0x00, + 0x0F, 0x80, 0x00, 0xE0, 0x00, 0x00, 0x07, 0x07, 0xC3, 0xE1, 0xF0, 0x70, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x38, 0x3E, 0x1F, 0x0F, 0x83, 0x80, 0x01, 0xC0, 0x7C, 0x0F, 0x81, + 0xF0, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x07, 0x80, 0xF8, 0x1F, 0x01, 0xE0, + 0x1C, 0x03, 0x00, 0xC0, 0x18, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0C, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x3F, 0xC0, + 0x01, 0xFC, 0x00, 0x0F, 0xE0, 0x00, 0xFF, 0x00, 0x07, 0xF8, 0x00, 0x3F, + 0xC0, 0x01, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x1F, 0x80, + 0x00, 0x3F, 0xC0, 0x00, 0x1F, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xF8, + 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x1F, + 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x07, 0x00, 0x00, 0x02, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, + 0xE0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x3F, 0x80, 0x00, + 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x1F, 0xC0, + 0x00, 0x07, 0xF0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x3F, 0x00, 0x00, 0xFE, 0x00, 0x07, 0xF8, 0x00, 0x1F, 0xE0, + 0x00, 0x7F, 0x80, 0x01, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x3F, 0xC0, 0x00, + 0xFF, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x80, 0x00, 0x00, + 0x03, 0xF0, 0x06, 0x1C, 0x0C, 0x0E, 0x1C, 0x06, 0x1C, 0x07, 0x1C, 0x07, + 0x1C, 0x07, 0x00, 0x07, 0x00, 0x0F, 0x00, 0x0E, 0x00, 0x1E, 0x00, 0x3C, + 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x80, 0x03, 0x00, + 0x06, 0x00, 0x04, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xF8, 0x00, + 0xF8, 0x00, 0xF8, 0x00, 0x70, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x1F, + 0xFF, 0x80, 0x00, 0x3F, 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x7C, + 0x00, 0x07, 0x80, 0x7C, 0x00, 0x00, 0xE0, 0x3C, 0x00, 0x00, 0x38, 0x3C, + 0x00, 0x00, 0x0C, 0x3C, 0x00, 0x78, 0x07, 0x1E, 0x00, 0xFE, 0xE1, 0x9E, + 0x00, 0xF1, 0xF0, 0xEF, 0x00, 0xE0, 0xF0, 0x37, 0x80, 0xE0, 0x38, 0x1F, + 0x80, 0x70, 0x1C, 0x0F, 0xC0, 0x70, 0x1E, 0x07, 0xE0, 0x38, 0x0F, 0x03, + 0xF0, 0x18, 0x07, 0x01, 0xF8, 0x1C, 0x03, 0x80, 0xFC, 0x0E, 0x01, 0xC0, + 0xDE, 0x07, 0x01, 0xE0, 0x6F, 0x03, 0x80, 0xE0, 0x73, 0xC1, 0xC0, 0xF0, + 0x31, 0xE0, 0xF0, 0xF8, 0x30, 0xF0, 0x38, 0xDC, 0x30, 0x3C, 0x1F, 0xC7, + 0xF0, 0x0E, 0x07, 0x81, 0xF0, 0x07, 0x80, 0x00, 0x00, 0x01, 0xE0, 0x00, + 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x01, 0x00, 0x03, 0xF0, + 0x0F, 0x80, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, + 0x00, 0x18, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, + 0xF0, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x03, 0xF0, + 0x00, 0x00, 0x37, 0x80, 0x00, 0x03, 0x3C, 0x00, 0x00, 0x19, 0xE0, 0x00, + 0x01, 0x8F, 0x80, 0x00, 0x08, 0x7C, 0x00, 0x00, 0xC3, 0xE0, 0x00, 0x0C, + 0x0F, 0x00, 0x00, 0x60, 0x78, 0x00, 0x06, 0x03, 0xC0, 0x00, 0x20, 0x1F, + 0x00, 0x03, 0x00, 0xF8, 0x00, 0x3F, 0xFF, 0xC0, 0x01, 0xFF, 0xFE, 0x00, + 0x18, 0x00, 0xF0, 0x00, 0xC0, 0x07, 0x80, 0x0C, 0x00, 0x3E, 0x00, 0xE0, + 0x01, 0xF0, 0x06, 0x00, 0x0F, 0x80, 0x70, 0x00, 0x3C, 0x03, 0x00, 0x01, + 0xE0, 0x38, 0x00, 0x0F, 0x83, 0xC0, 0x00, 0x7C, 0x3E, 0x00, 0x07, 0xF3, + 0xFC, 0x01, 0xFF, 0xE0, 0x03, 0xFF, 0xFE, 0x00, 0x07, 0xFF, 0xF8, 0x00, + 0x3E, 0x07, 0xC0, 0x03, 0xE0, 0x3E, 0x00, 0x3E, 0x01, 0xF0, 0x03, 0xC0, + 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x78, 0x01, 0xF0, + 0x07, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x7C, 0x00, 0xF0, + 0x3F, 0x00, 0x1F, 0xFF, 0x80, 0x01, 0xFF, 0xFC, 0x00, 0x1F, 0x07, 0xE0, + 0x01, 0xE0, 0x1F, 0x00, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x07, 0xC0, 0x3C, + 0x00, 0x7C, 0x03, 0xC0, 0x07, 0xC0, 0x7C, 0x00, 0x7C, 0x07, 0xC0, 0x07, + 0xC0, 0x78, 0x00, 0x7C, 0x0F, 0x80, 0x0F, 0x80, 0xF8, 0x00, 0xF8, 0x0F, + 0x00, 0x1F, 0x00, 0xF0, 0x03, 0xE0, 0x1F, 0x81, 0xFC, 0x03, 0xFF, 0xFF, + 0x80, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x01, 0xFE, 0x04, 0x00, 0x3F, 0xFF, + 0xE0, 0x03, 0xF0, 0x1F, 0x80, 0x1F, 0x00, 0x3E, 0x00, 0xF0, 0x00, 0x78, + 0x0F, 0x80, 0x00, 0xE0, 0x3C, 0x00, 0x03, 0x81, 0xF0, 0x00, 0x04, 0x0F, + 0x80, 0x00, 0x10, 0x7C, 0x00, 0x00, 0x41, 0xF0, 0x00, 0x00, 0x0F, 0x80, + 0x00, 0x00, 0x3E, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x07, 0xC0, 0x00, + 0x00, 0x1F, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, + 0x0F, 0x80, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x03, + 0xE0, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0xF8, + 0x00, 0x00, 0x01, 0xF0, 0x00, 0x02, 0x07, 0xC0, 0x00, 0x18, 0x0F, 0x80, + 0x00, 0xC0, 0x3E, 0x00, 0x06, 0x00, 0x7C, 0x00, 0x70, 0x00, 0xFC, 0x07, + 0x00, 0x00, 0xFF, 0xF8, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x03, 0xFF, 0xFF, + 0x00, 0x00, 0x3F, 0xFF, 0xE0, 0x00, 0x0F, 0xC0, 0xFC, 0x00, 0x07, 0xC0, + 0x1F, 0x00, 0x03, 0xE0, 0x07, 0xC0, 0x01, 0xE0, 0x01, 0xF0, 0x01, 0xF0, + 0x00, 0x7C, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x7C, 0x00, 0x0F, 0x00, 0x3C, + 0x00, 0x07, 0xC0, 0x3E, 0x00, 0x03, 0xE0, 0x1F, 0x00, 0x01, 0xF0, 0x0F, + 0x00, 0x00, 0xF8, 0x0F, 0x80, 0x00, 0x7C, 0x07, 0xC0, 0x00, 0x3E, 0x03, + 0xE0, 0x00, 0x1F, 0x01, 0xE0, 0x00, 0x1F, 0x81, 0xF0, 0x00, 0x0F, 0x80, + 0xF8, 0x00, 0x07, 0xC0, 0x78, 0x00, 0x03, 0xE0, 0x3C, 0x00, 0x03, 0xE0, + 0x3E, 0x00, 0x01, 0xF0, 0x1F, 0x00, 0x01, 0xF0, 0x0F, 0x00, 0x01, 0xF0, + 0x0F, 0x80, 0x01, 0xF8, 0x07, 0xC0, 0x01, 0xF0, 0x03, 0xE0, 0x01, 0xF0, + 0x01, 0xE0, 0x03, 0xF0, 0x01, 0xF8, 0x0F, 0xE0, 0x01, 0xFF, 0xFF, 0xC0, + 0x03, 0xFF, 0xFE, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xF8, 0x03, 0xFF, 0xFF, + 0xC0, 0x0F, 0x80, 0x1E, 0x00, 0x7C, 0x00, 0x30, 0x03, 0xE0, 0x01, 0x00, + 0x1E, 0x00, 0x08, 0x01, 0xF0, 0x00, 0x40, 0x0F, 0x80, 0x00, 0x00, 0x78, + 0x00, 0x00, 0x03, 0xC0, 0x10, 0x00, 0x3E, 0x01, 0x80, 0x01, 0xF0, 0x08, + 0x00, 0x0F, 0x01, 0xC0, 0x00, 0xFF, 0xFE, 0x00, 0x07, 0xFF, 0xF0, 0x00, + 0x3E, 0x07, 0x00, 0x01, 0xE0, 0x18, 0x00, 0x1F, 0x00, 0xC0, 0x00, 0xF8, + 0x04, 0x00, 0x07, 0x80, 0x20, 0x00, 0x3C, 0x00, 0x00, 0x03, 0xE0, 0x00, + 0x00, 0x1F, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x08, 0x0F, 0x80, 0x00, 0xC0, + 0x7C, 0x00, 0x0E, 0x03, 0xC0, 0x00, 0xE0, 0x1E, 0x00, 0x0F, 0x01, 0xF8, + 0x03, 0xF8, 0x1F, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0xFC, 0x00, 0x03, 0xFF, + 0xFF, 0xF8, 0x03, 0xFF, 0xFF, 0xC0, 0x0F, 0x80, 0x1E, 0x00, 0x7C, 0x00, + 0x30, 0x03, 0xE0, 0x01, 0x00, 0x1E, 0x00, 0x08, 0x01, 0xF0, 0x00, 0x40, + 0x0F, 0x80, 0x02, 0x00, 0x7C, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x3E, + 0x00, 0x80, 0x01, 0xF0, 0x0C, 0x00, 0x0F, 0x00, 0xC0, 0x00, 0xF8, 0x0E, + 0x00, 0x07, 0xFF, 0xF0, 0x00, 0x3F, 0xFF, 0x00, 0x01, 0xE0, 0x18, 0x00, + 0x1F, 0x00, 0xC0, 0x00, 0xF8, 0x06, 0x00, 0x07, 0xC0, 0x20, 0x00, 0x3C, + 0x01, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0xF0, 0x00, + 0x00, 0x0F, 0x80, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xFF, + 0xC0, 0x00, 0x00, 0x00, 0x01, 0xFE, 0x02, 0x00, 0x1F, 0xFF, 0x8C, 0x00, + 0xFC, 0x07, 0xF8, 0x03, 0xE0, 0x03, 0xF0, 0x0F, 0x00, 0x03, 0xC0, 0x3C, + 0x00, 0x03, 0x80, 0xF0, 0x00, 0x07, 0x03, 0xC0, 0x00, 0x0E, 0x0F, 0x80, + 0x00, 0x08, 0x3E, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x00, 0x01, 0xF0, 0x00, + 0x00, 0x03, 0xE0, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x1F, 0x00, 0x00, + 0x00, 0x3E, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x3F, + 0xFF, 0xE0, 0x00, 0x0F, 0xE7, 0xC0, 0x00, 0x0F, 0x0F, 0x80, 0x00, 0x1E, + 0x1F, 0x00, 0x00, 0x7C, 0x3E, 0x00, 0x00, 0xF0, 0x7C, 0x00, 0x01, 0xE0, + 0x78, 0x00, 0x03, 0xC0, 0xF8, 0x00, 0x0F, 0x01, 0xF0, 0x00, 0x1E, 0x01, + 0xF0, 0x00, 0x3C, 0x01, 0xE0, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xE0, 0x01, + 0xF8, 0x0F, 0x80, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x03, + 0xFF, 0xE0, 0x7F, 0xF0, 0x07, 0xF8, 0x01, 0xFC, 0x00, 0x3E, 0x00, 0x0F, + 0x80, 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, + 0x00, 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, + 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0xF8, 0x00, 0x3E, + 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x1F, 0x00, + 0x03, 0xC0, 0x01, 0xFF, 0xFF, 0xFC, 0x00, 0x1F, 0xFF, 0xFF, 0x80, 0x01, + 0xE0, 0x00, 0x78, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF8, + 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x7C, 0x00, + 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x0F, + 0x80, 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x03, 0xC0, + 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x03, 0xF8, 0x00, + 0xFE, 0x00, 0xFF, 0xE0, 0x7F, 0xFC, 0x00, 0x01, 0xFF, 0xC0, 0x1F, 0xE0, + 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x07, 0xC0, 0x01, + 0xF0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF0, + 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xE0, 0x00, 0xF8, 0x00, + 0x3E, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x1E, + 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x1F, 0x00, + 0x0F, 0xE0, 0x0F, 0xFE, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x07, 0xF0, 0x00, + 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x3C, 0x00, 0x00, + 0xF8, 0x00, 0x01, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1F, + 0x00, 0x00, 0x3C, 0x00, 0x00, 0x78, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xE0, + 0x00, 0x07, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x78, 0x00, + 0x00, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF0, 0x01, 0xC1, 0xE0, 0x07, 0xC7, + 0x80, 0x0F, 0x8F, 0x00, 0x1F, 0x3C, 0x00, 0x1F, 0xF0, 0x00, 0x0F, 0x80, + 0x00, 0x01, 0xFF, 0xE1, 0xFF, 0x80, 0x3F, 0xC0, 0x1F, 0x80, 0x0F, 0x80, + 0x0F, 0x00, 0x07, 0xC0, 0x0F, 0x00, 0x03, 0xC0, 0x0F, 0x00, 0x01, 0xE0, + 0x0E, 0x00, 0x01, 0xF0, 0x0E, 0x00, 0x00, 0xF8, 0x0E, 0x00, 0x00, 0x78, + 0x1C, 0x00, 0x00, 0x3C, 0x1C, 0x00, 0x00, 0x3E, 0x3C, 0x00, 0x00, 0x1F, + 0x38, 0x00, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x07, + 0xFE, 0x00, 0x00, 0x03, 0xDF, 0x00, 0x00, 0x01, 0xE7, 0xC0, 0x00, 0x01, + 0xF3, 0xE0, 0x00, 0x00, 0xF8, 0xF8, 0x00, 0x00, 0x78, 0x3C, 0x00, 0x00, + 0x3C, 0x1F, 0x00, 0x00, 0x3E, 0x07, 0xC0, 0x00, 0x1F, 0x03, 0xE0, 0x00, + 0x0F, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x3C, 0x00, 0x07, 0xC0, 0x1F, 0x00, + 0x03, 0xC0, 0x07, 0x80, 0x01, 0xE0, 0x03, 0xE0, 0x01, 0xF0, 0x01, 0xF8, + 0x01, 0xFC, 0x01, 0xFE, 0x03, 0xFF, 0xC3, 0xFF, 0xE0, 0x03, 0xFF, 0xE0, + 0x00, 0x0F, 0xF0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, + 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x00, + 0x00, 0x78, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, + 0x00, 0x00, 0x0F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, + 0x0F, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x0F, 0x80, + 0x00, 0x01, 0xE0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x01, + 0xF0, 0x00, 0x08, 0x3C, 0x00, 0x03, 0x0F, 0x80, 0x00, 0x41, 0xF0, 0x00, + 0x18, 0x3C, 0x00, 0x07, 0x07, 0x80, 0x01, 0xC1, 0xF8, 0x01, 0xF8, 0x7F, + 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xC0, 0x01, 0xFF, 0x00, 0x00, 0x3F, 0xC0, + 0x0F, 0xC0, 0x00, 0x1F, 0xC0, 0x01, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0xFC, + 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x01, 0xFC, 0x00, 0x0F, 0xC0, 0x00, + 0xFF, 0x00, 0x02, 0xF0, 0x00, 0x37, 0x80, 0x01, 0xBC, 0x00, 0x19, 0xE0, + 0x00, 0x6F, 0x80, 0x0E, 0xF8, 0x00, 0x1B, 0xE0, 0x03, 0x3E, 0x00, 0x04, + 0x78, 0x01, 0x8F, 0x00, 0x03, 0x1E, 0x00, 0xE7, 0xC0, 0x00, 0xC7, 0x80, + 0x31, 0xF0, 0x00, 0x21, 0xE0, 0x18, 0x78, 0x00, 0x18, 0x78, 0x0E, 0x1E, + 0x00, 0x06, 0x1E, 0x03, 0x0F, 0x80, 0x01, 0x87, 0x81, 0x83, 0xE0, 0x00, + 0x41, 0xF0, 0xE0, 0xF0, 0x00, 0x30, 0x7C, 0x30, 0x3C, 0x00, 0x0C, 0x0F, + 0x18, 0x1F, 0x00, 0x03, 0x03, 0xCE, 0x07, 0xC0, 0x01, 0x80, 0xF3, 0x01, + 0xE0, 0x00, 0x60, 0x3D, 0x80, 0xF8, 0x00, 0x18, 0x0F, 0xE0, 0x3E, 0x00, + 0x0C, 0x03, 0xF0, 0x0F, 0x00, 0x03, 0x00, 0xF8, 0x03, 0xC0, 0x00, 0xC0, + 0x3E, 0x01, 0xF0, 0x00, 0x70, 0x0F, 0x00, 0x7C, 0x00, 0x1C, 0x01, 0x80, + 0x3F, 0x00, 0x0F, 0x80, 0x60, 0x1F, 0xC0, 0x0F, 0xF8, 0x10, 0x1F, 0xFE, + 0x00, 0x03, 0xFC, 0x00, 0x3F, 0xE0, 0x1F, 0xC0, 0x01, 0xF8, 0x00, 0xF8, + 0x00, 0x1C, 0x00, 0x1F, 0x00, 0x03, 0x80, 0x03, 0xF0, 0x00, 0x60, 0x00, + 0x7E, 0x00, 0x0C, 0x00, 0x0B, 0xE0, 0x03, 0x80, 0x03, 0x7C, 0x00, 0x60, + 0x00, 0x67, 0x80, 0x0C, 0x00, 0x0C, 0xF8, 0x03, 0x80, 0x03, 0x0F, 0x00, + 0x70, 0x00, 0x61, 0xF0, 0x0C, 0x00, 0x0C, 0x3E, 0x01, 0x80, 0x01, 0x83, + 0xC0, 0x70, 0x00, 0x60, 0x7C, 0x0C, 0x00, 0x0C, 0x07, 0x81, 0x80, 0x01, + 0x80, 0xF8, 0x30, 0x00, 0x60, 0x0F, 0x0E, 0x00, 0x0C, 0x01, 0xE1, 0x80, + 0x01, 0x80, 0x3E, 0x30, 0x00, 0x30, 0x03, 0xCE, 0x00, 0x0C, 0x00, 0x7D, + 0x80, 0x01, 0x80, 0x07, 0xB0, 0x00, 0x30, 0x00, 0xF6, 0x00, 0x0E, 0x00, + 0x1F, 0xC0, 0x01, 0x80, 0x01, 0xF0, 0x00, 0x30, 0x00, 0x3E, 0x00, 0x0E, + 0x00, 0x03, 0xC0, 0x01, 0xC0, 0x00, 0x70, 0x00, 0x7C, 0x00, 0x06, 0x00, + 0x3F, 0xE0, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0xFE, + 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x01, 0xF0, 0x7C, 0x00, 0x0F, 0x00, 0x78, + 0x00, 0x78, 0x00, 0xF0, 0x07, 0xC0, 0x03, 0xE0, 0x3E, 0x00, 0x07, 0x81, + 0xF0, 0x00, 0x1E, 0x07, 0xC0, 0x00, 0x7C, 0x3E, 0x00, 0x01, 0xF1, 0xF0, + 0x00, 0x07, 0xC7, 0xC0, 0x00, 0x1F, 0x3F, 0x00, 0x00, 0x7C, 0xF8, 0x00, + 0x01, 0xF7, 0xE0, 0x00, 0x0F, 0xDF, 0x00, 0x00, 0x3F, 0x7C, 0x00, 0x00, + 0xFB, 0xF0, 0x00, 0x07, 0xEF, 0xC0, 0x00, 0x1F, 0xBE, 0x00, 0x00, 0x7C, + 0xF8, 0x00, 0x03, 0xF3, 0xE0, 0x00, 0x0F, 0x8F, 0x80, 0x00, 0x3E, 0x3E, + 0x00, 0x01, 0xF0, 0xF8, 0x00, 0x0F, 0x81, 0xE0, 0x00, 0x3E, 0x07, 0x80, + 0x01, 0xF0, 0x1F, 0x00, 0x0F, 0x80, 0x3C, 0x00, 0x7C, 0x00, 0x78, 0x03, + 0xC0, 0x00, 0xF8, 0x3E, 0x00, 0x01, 0xFF, 0xE0, 0x00, 0x01, 0xFC, 0x00, + 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x0F, 0x81, 0xF8, + 0x00, 0x7C, 0x03, 0xE0, 0x03, 0xE0, 0x1F, 0x00, 0x1E, 0x00, 0x7C, 0x01, + 0xF0, 0x03, 0xE0, 0x0F, 0x80, 0x1F, 0x00, 0x78, 0x00, 0xF8, 0x03, 0xC0, + 0x07, 0xC0, 0x3E, 0x00, 0x3C, 0x01, 0xF0, 0x03, 0xE0, 0x0F, 0x00, 0x3E, + 0x00, 0xF8, 0x03, 0xF0, 0x07, 0xC0, 0x7E, 0x00, 0x3F, 0xFF, 0xE0, 0x01, + 0xEF, 0xF8, 0x00, 0x1F, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x07, 0x80, + 0x00, 0x00, 0x3C, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x1F, 0x00, 0x00, + 0x00, 0xF0, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x03, + 0xC0, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x1F, 0xC0, + 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, + 0xFE, 0x00, 0x00, 0xF0, 0x7C, 0x00, 0x0F, 0x00, 0x78, 0x00, 0x78, 0x00, + 0xF0, 0x03, 0xC0, 0x03, 0xE0, 0x1E, 0x00, 0x07, 0x80, 0xF0, 0x00, 0x1E, + 0x07, 0xC0, 0x00, 0x7C, 0x3E, 0x00, 0x01, 0xF1, 0xF8, 0x00, 0x07, 0xC7, + 0xC0, 0x00, 0x1F, 0x3F, 0x00, 0x00, 0x7C, 0xF8, 0x00, 0x01, 0xF7, 0xE0, + 0x00, 0x0F, 0xDF, 0x80, 0x00, 0x3F, 0x7C, 0x00, 0x00, 0xFB, 0xF0, 0x00, + 0x03, 0xEF, 0xC0, 0x00, 0x1F, 0xBE, 0x00, 0x00, 0x7C, 0xF8, 0x00, 0x01, + 0xF3, 0xE0, 0x00, 0x0F, 0x8F, 0x80, 0x00, 0x3E, 0x3E, 0x00, 0x01, 0xF0, + 0xF8, 0x00, 0x07, 0xC3, 0xE0, 0x00, 0x3E, 0x07, 0x80, 0x01, 0xF0, 0x1F, + 0x00, 0x07, 0x80, 0x3C, 0x00, 0x3C, 0x00, 0xF8, 0x01, 0xE0, 0x01, 0xE0, + 0x1E, 0x00, 0x01, 0xF3, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x03, 0x00, + 0x00, 0x00, 0x18, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x04, 0x0F, 0xF0, 0x00, + 0x60, 0x7F, 0xFC, 0x07, 0x03, 0xFF, 0xFF, 0xF8, 0x38, 0x1F, 0xFF, 0x80, + 0x00, 0x07, 0xF8, 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x07, 0xFF, 0xF8, 0x00, + 0x3E, 0x0F, 0xC0, 0x03, 0xE0, 0x3E, 0x00, 0x3E, 0x01, 0xF0, 0x03, 0xC0, + 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x78, 0x01, 0xF0, + 0x07, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x7C, 0x00, 0xF0, + 0x1F, 0x80, 0x1F, 0xFF, 0xE0, 0x01, 0xFF, 0xF0, 0x00, 0x1E, 0x1E, 0x00, + 0x01, 0xE1, 0xE0, 0x00, 0x3E, 0x1F, 0x00, 0x03, 0xE0, 0xF0, 0x00, 0x3C, + 0x0F, 0x00, 0x03, 0xC0, 0xF8, 0x00, 0x7C, 0x07, 0x80, 0x07, 0xC0, 0x7C, + 0x00, 0x78, 0x03, 0xC0, 0x0F, 0x80, 0x3C, 0x00, 0xF8, 0x03, 0xE0, 0x0F, + 0x00, 0x1E, 0x00, 0xF0, 0x01, 0xE0, 0x1F, 0x00, 0x1F, 0x03, 0xF8, 0x00, + 0xF8, 0xFF, 0xE0, 0x0F, 0xE0, 0x00, 0x3F, 0x06, 0x01, 0xFF, 0xDC, 0x07, + 0xC1, 0xF0, 0x1E, 0x01, 0xE0, 0x3C, 0x01, 0xC0, 0xF0, 0x03, 0x81, 0xE0, + 0x03, 0x03, 0xC0, 0x04, 0x07, 0x80, 0x08, 0x0F, 0x80, 0x00, 0x1F, 0x00, + 0x00, 0x1F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, + 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, + 0x00, 0x3E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7C, 0x08, 0x00, 0x78, 0x10, + 0x00, 0xF0, 0x20, 0x01, 0xE0, 0xC0, 0x03, 0xC1, 0x80, 0x07, 0x83, 0x80, + 0x1E, 0x07, 0x00, 0x3C, 0x0F, 0x00, 0xF0, 0x1F, 0x87, 0xC0, 0x23, 0xFF, + 0x00, 0x81, 0xF8, 0x00, 0x3F, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xFD, 0xF0, + 0x3E, 0x07, 0xB8, 0x07, 0xC0, 0x76, 0x00, 0xF8, 0x04, 0x80, 0x3E, 0x00, + 0xB0, 0x07, 0xC0, 0x14, 0x00, 0xF8, 0x02, 0x00, 0x1E, 0x00, 0x00, 0x07, + 0xC0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xC0, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0xF8, + 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, + 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x0F, 0x00, + 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x03, + 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x3F, 0xFF, 0x00, + 0x00, 0x7F, 0xFE, 0x03, 0xFE, 0x1F, 0xE0, 0x01, 0xF8, 0x1F, 0x80, 0x01, + 0xC0, 0x3E, 0x00, 0x03, 0x80, 0x7C, 0x00, 0x07, 0x00, 0xF8, 0x00, 0x0C, + 0x03, 0xE0, 0x00, 0x18, 0x07, 0xC0, 0x00, 0x70, 0x0F, 0x80, 0x00, 0xC0, + 0x1F, 0x00, 0x01, 0x80, 0x7C, 0x00, 0x03, 0x00, 0xF8, 0x00, 0x0E, 0x01, + 0xF0, 0x00, 0x18, 0x07, 0xC0, 0x00, 0x30, 0x0F, 0x80, 0x00, 0x60, 0x1F, + 0x00, 0x01, 0x80, 0x3E, 0x00, 0x03, 0x00, 0xF8, 0x00, 0x06, 0x01, 0xF0, + 0x00, 0x18, 0x03, 0xE0, 0x00, 0x30, 0x07, 0xC0, 0x00, 0x60, 0x1F, 0x00, + 0x00, 0xC0, 0x3E, 0x00, 0x03, 0x00, 0x7C, 0x00, 0x06, 0x00, 0xF8, 0x00, + 0x18, 0x01, 0xF0, 0x00, 0x30, 0x03, 0xE0, 0x00, 0xC0, 0x03, 0xE0, 0x03, + 0x80, 0x03, 0xE0, 0x0E, 0x00, 0x03, 0xF0, 0x78, 0x00, 0x03, 0xFF, 0xC0, + 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, 0xE0, 0x0F, 0xF9, 0xFC, 0x00, 0x1F, + 0x07, 0xC0, 0x00, 0x78, 0x3E, 0x00, 0x03, 0x81, 0xF0, 0x00, 0x18, 0x0F, + 0x80, 0x01, 0xC0, 0x7C, 0x00, 0x0C, 0x01, 0xE0, 0x00, 0xC0, 0x0F, 0x80, + 0x06, 0x00, 0x7C, 0x00, 0x60, 0x03, 0xE0, 0x07, 0x00, 0x1F, 0x00, 0x30, + 0x00, 0xF8, 0x03, 0x00, 0x03, 0xC0, 0x18, 0x00, 0x1E, 0x01, 0x80, 0x00, + 0xF8, 0x1C, 0x00, 0x07, 0xC0, 0xC0, 0x00, 0x3E, 0x0C, 0x00, 0x01, 0xF0, + 0x60, 0x00, 0x07, 0x86, 0x00, 0x00, 0x3C, 0x30, 0x00, 0x01, 0xE3, 0x00, + 0x00, 0x0F, 0xB0, 0x00, 0x00, 0x7D, 0x80, 0x00, 0x03, 0xF8, 0x00, 0x00, + 0x0F, 0xC0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x1E, + 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, + 0x00, 0xFF, 0xE3, 0xFF, 0x81, 0xFE, 0x7F, 0x01, 0xFC, 0x00, 0xF8, 0x7C, + 0x01, 0xF0, 0x00, 0xE0, 0xF8, 0x03, 0xE0, 0x01, 0x81, 0xF0, 0x03, 0xC0, + 0x07, 0x03, 0xE0, 0x07, 0x80, 0x0C, 0x03, 0xC0, 0x0F, 0x00, 0x18, 0x07, + 0x80, 0x1E, 0x00, 0x60, 0x0F, 0x00, 0x7E, 0x00, 0xC0, 0x1F, 0x00, 0xFC, + 0x03, 0x00, 0x3E, 0x03, 0xF8, 0x06, 0x00, 0x7C, 0x05, 0xF0, 0x18, 0x00, + 0xF8, 0x1B, 0xE0, 0x30, 0x01, 0xF0, 0x33, 0xC0, 0xC0, 0x01, 0xE0, 0xC7, + 0x83, 0x80, 0x03, 0xC1, 0x8F, 0x06, 0x00, 0x07, 0x86, 0x1E, 0x1C, 0x00, + 0x0F, 0x0C, 0x3C, 0x30, 0x00, 0x1F, 0x30, 0x7C, 0xE0, 0x00, 0x3E, 0x60, + 0xF9, 0x80, 0x00, 0x7D, 0x81, 0xF7, 0x00, 0x00, 0xFB, 0x03, 0xEC, 0x00, + 0x01, 0xFC, 0x03, 0xF8, 0x00, 0x01, 0xF8, 0x07, 0xE0, 0x00, 0x03, 0xE0, + 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x1F, 0x00, 0x00, 0x0F, 0x00, 0x3C, 0x00, + 0x00, 0x1E, 0x00, 0x78, 0x00, 0x00, 0x38, 0x00, 0xE0, 0x00, 0x00, 0x70, + 0x01, 0xC0, 0x00, 0x00, 0xC0, 0x03, 0x00, 0x00, 0x00, 0x80, 0x06, 0x00, + 0x00, 0x07, 0xFF, 0x83, 0xFF, 0x01, 0xFE, 0x00, 0xFE, 0x00, 0x7C, 0x00, + 0x78, 0x00, 0x7C, 0x00, 0x70, 0x00, 0x3C, 0x00, 0xE0, 0x00, 0x3E, 0x01, + 0xC0, 0x00, 0x3E, 0x01, 0x80, 0x00, 0x1F, 0x03, 0x00, 0x00, 0x1F, 0x07, + 0x00, 0x00, 0x0F, 0x0E, 0x00, 0x00, 0x0F, 0x9C, 0x00, 0x00, 0x0F, 0xB8, + 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x03, 0xC0, + 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x07, 0xF0, + 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x1C, 0xF0, 0x00, 0x00, 0x38, 0xF8, + 0x00, 0x00, 0x30, 0xF8, 0x00, 0x00, 0x60, 0x7C, 0x00, 0x00, 0xC0, 0x7C, + 0x00, 0x01, 0xC0, 0x3C, 0x00, 0x03, 0x80, 0x3E, 0x00, 0x07, 0x00, 0x3E, + 0x00, 0x0E, 0x00, 0x1F, 0x00, 0x1E, 0x00, 0x1F, 0x00, 0x7F, 0x00, 0x3F, + 0xC0, 0xFF, 0xC1, 0xFF, 0xF0, 0x7F, 0xF0, 0x7F, 0xC7, 0xF0, 0x03, 0xE0, + 0xF8, 0x00, 0x70, 0x3E, 0x00, 0x38, 0x07, 0x80, 0x0C, 0x01, 0xE0, 0x07, + 0x00, 0x7C, 0x03, 0x80, 0x1F, 0x00, 0xC0, 0x03, 0xC0, 0x60, 0x00, 0xF0, + 0x30, 0x00, 0x3E, 0x1C, 0x00, 0x07, 0x8E, 0x00, 0x01, 0xE3, 0x00, 0x00, + 0x7D, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xF8, 0x00, + 0x00, 0x3C, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, + 0x00, 0x00, 0x78, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, + 0xC0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, 0x00, 0x00, + 0x0F, 0xC0, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0x03, 0xFF, + 0xFF, 0xF8, 0x1F, 0xFF, 0xFF, 0x81, 0xF0, 0x00, 0xFC, 0x0E, 0x00, 0x0F, + 0xC0, 0x60, 0x00, 0xFC, 0x06, 0x00, 0x0F, 0xC0, 0x20, 0x00, 0x7C, 0x00, + 0x00, 0x07, 0xE0, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, + 0x7E, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x03, 0xF0, + 0x00, 0x00, 0x3F, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x1F, 0x00, 0x00, + 0x01, 0xF8, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x1F, + 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0xFC, 0x00, + 0x08, 0x0F, 0xC0, 0x00, 0x80, 0xFC, 0x00, 0x0C, 0x07, 0xC0, 0x00, 0x60, + 0x7E, 0x00, 0x07, 0x07, 0xE0, 0x01, 0xF0, 0x7F, 0xFF, 0xFF, 0x83, 0xFF, + 0xFF, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x3C, 0x00, 0x1C, 0x00, 0x0E, 0x00, + 0x07, 0x00, 0x07, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0xE0, + 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, + 0x00, 0x03, 0x80, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, + 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x07, 0x00, + 0x03, 0x80, 0x01, 0xC0, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x38, + 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x07, 0x80, 0x03, + 0xFC, 0x00, 0xF0, 0x00, 0x38, 0x00, 0x1E, 0x00, 0x07, 0x00, 0x03, 0x80, + 0x01, 0xE0, 0x00, 0x70, 0x00, 0x3C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x03, + 0xC0, 0x00, 0xE0, 0x00, 0x78, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x03, 0x80, + 0x01, 0xC0, 0x00, 0xF0, 0x00, 0x38, 0x00, 0x1E, 0x00, 0x07, 0x00, 0x03, + 0x80, 0x01, 0xE0, 0x00, 0x70, 0x00, 0x3C, 0x00, 0x0E, 0x00, 0x07, 0x00, + 0x03, 0xC0, 0x00, 0xE0, 0x00, 0x78, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, + 0x80, 0x00, 0xFF, 0x80, 0x07, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0xF0, + 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x07, + 0x00, 0x03, 0x80, 0x01, 0xC0, 0x01, 0xE0, 0x00, 0xE0, 0x00, 0x70, 0x00, + 0x38, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x03, 0x80, + 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x78, 0x00, 0x38, + 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 0x80, 0x01, + 0xC0, 0x00, 0xE0, 0x00, 0xF0, 0x00, 0x70, 0x00, 0x38, 0x03, 0xFC, 0x00, + 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x01, 0xF8, 0x00, 0x1F, 0x80, 0x03, 0xBC, + 0x00, 0x39, 0xC0, 0x07, 0x1E, 0x00, 0x70, 0xE0, 0x0E, 0x0F, 0x00, 0xE0, + 0x70, 0x1E, 0x07, 0x81, 0xC0, 0x38, 0x3C, 0x03, 0xC3, 0x80, 0x1C, 0x78, + 0x01, 0xE7, 0x00, 0x0E, 0xF0, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x60, 0xF0, 0xF8, 0x78, 0x3C, 0x1E, 0x0E, 0x07, 0x00, 0x1E, 0x70, + 0x03, 0x0B, 0x80, 0x70, 0x3C, 0x07, 0x01, 0xE0, 0x70, 0x0E, 0x07, 0x00, + 0x70, 0x78, 0x03, 0x83, 0x80, 0x38, 0x3C, 0x01, 0xC1, 0xC0, 0x0E, 0x1E, + 0x00, 0xF0, 0xF0, 0x07, 0x0F, 0x00, 0x78, 0x78, 0x03, 0xC3, 0xC0, 0x3E, + 0x1E, 0x01, 0x70, 0xF0, 0x17, 0x0F, 0x81, 0x38, 0xBE, 0x11, 0xC8, 0xFF, + 0x0F, 0x83, 0xF0, 0x70, 0x00, 0x00, 0xF0, 0x00, 0x7F, 0x00, 0x00, 0x78, + 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x07, 0x00, 0x00, + 0x78, 0x00, 0x03, 0x80, 0x00, 0x1C, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x0F, + 0x80, 0x71, 0xFE, 0x03, 0x98, 0xF8, 0x3D, 0x03, 0xE1, 0xE8, 0x0F, 0x0E, + 0x80, 0x78, 0x78, 0x03, 0xC7, 0xC0, 0x1E, 0x3C, 0x00, 0xF1, 0xE0, 0x0F, + 0x1E, 0x00, 0x78, 0xF0, 0x03, 0xC7, 0x80, 0x3C, 0x38, 0x01, 0xE3, 0xC0, + 0x1E, 0x1E, 0x00, 0xE0, 0xE0, 0x0E, 0x07, 0x00, 0xF0, 0x78, 0x07, 0x03, + 0xC0, 0xE0, 0x0F, 0x0E, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x3F, 0x00, 0x38, + 0x60, 0x38, 0x1C, 0x1C, 0x0F, 0x0E, 0x03, 0x87, 0x80, 0x03, 0xC0, 0x00, + 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x00, 0x03, 0xC0, 0x00, 0xF0, + 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x02, 0x3E, 0x01, + 0x87, 0x80, 0xC1, 0xF0, 0x60, 0x3F, 0xF0, 0x03, 0xF0, 0x00, 0x00, 0x00, + 0x0E, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x1E, 0x00, 0x00, + 0x1C, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x3C, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x38, 0x00, 0x00, 0x78, 0x00, 0x1E, 0x78, 0x00, 0x71, + 0x70, 0x00, 0xC1, 0x70, 0x03, 0x80, 0xF0, 0x07, 0x80, 0xE0, 0x07, 0x01, + 0xE0, 0x0E, 0x01, 0xE0, 0x1E, 0x01, 0xE0, 0x3C, 0x01, 0xC0, 0x3C, 0x01, + 0xC0, 0x78, 0x03, 0xC0, 0x78, 0x03, 0xC0, 0x78, 0x03, 0x80, 0xF0, 0x07, + 0x80, 0xF0, 0x07, 0x80, 0xF0, 0x0F, 0x80, 0xF0, 0x0F, 0x00, 0xF0, 0x17, + 0x08, 0xF0, 0x27, 0x10, 0x78, 0x47, 0x20, 0x7F, 0x87, 0xC0, 0x1E, 0x07, + 0x00, 0x00, 0x1F, 0x00, 0x1C, 0xF0, 0x1C, 0x1C, 0x0E, 0x07, 0x07, 0x01, + 0xC3, 0xC0, 0xF1, 0xE0, 0x38, 0x70, 0x1C, 0x3C, 0x0E, 0x1F, 0x0F, 0x07, + 0x8F, 0x01, 0xFE, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, + 0x00, 0xF0, 0x01, 0x3C, 0x00, 0xC7, 0x80, 0x61, 0xF0, 0x60, 0x3F, 0xF0, + 0x03, 0xE0, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x03, 0x1C, 0x00, 0x00, + 0xC3, 0x80, 0x00, 0x38, 0x70, 0x00, 0x06, 0x00, 0x00, 0x01, 0xC0, 0x00, + 0x00, 0x30, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x78, + 0x00, 0x00, 0x0E, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x07, 0xFF, 0xC0, 0x00, + 0xFF, 0xF8, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x00, + 0x00, 0x01, 0xE0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, + 0xE0, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0xF0, 0x00, + 0x00, 0x1C, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x1E, + 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x70, 0x00, 0x00, 0x0E, 0x00, 0x00, + 0x03, 0xC0, 0x00, 0x00, 0x70, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x01, 0xC0, + 0x00, 0x00, 0x70, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x01, 0x80, 0x00, 0x38, + 0x60, 0x00, 0x07, 0x0C, 0x00, 0x00, 0xE3, 0x00, 0x00, 0x0F, 0x80, 0x00, + 0x00, 0x00, 0x3F, 0x00, 0x07, 0x0E, 0x00, 0x70, 0x3E, 0x07, 0x01, 0xF0, + 0x70, 0x0E, 0x07, 0x80, 0x70, 0x3C, 0x03, 0x81, 0xC0, 0x1C, 0x0E, 0x01, + 0xE0, 0x70, 0x0E, 0x03, 0x80, 0xF0, 0x0E, 0x0F, 0x00, 0x30, 0xE0, 0x00, + 0xFE, 0x00, 0x0C, 0x00, 0x00, 0xC0, 0x00, 0x0E, 0x00, 0x00, 0x7E, 0x00, + 0x03, 0xFE, 0x00, 0x0F, 0xFC, 0x00, 0x8F, 0xF0, 0x18, 0x0F, 0xC1, 0x80, + 0x1F, 0x18, 0x00, 0x78, 0xC0, 0x01, 0xC6, 0x00, 0x0E, 0x30, 0x00, 0x61, + 0xC0, 0x07, 0x06, 0x00, 0x70, 0x1C, 0x0E, 0x00, 0x3F, 0xC0, 0x00, 0x00, + 0xF0, 0x00, 0x7F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, + 0x00, 0xE0, 0x00, 0x07, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1C, + 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x03, 0x80, 0x78, 0x7E, 0x03, 0x86, 0x70, + 0x3C, 0x43, 0x81, 0xE4, 0x1C, 0x0E, 0x40, 0xE0, 0x74, 0x0E, 0x07, 0xA0, + 0x70, 0x3E, 0x03, 0x81, 0xE0, 0x1C, 0x0F, 0x00, 0xE0, 0xF0, 0x0E, 0x07, + 0x80, 0x70, 0x38, 0x03, 0x81, 0xC0, 0x1C, 0x1E, 0x00, 0xC2, 0xF0, 0x0E, + 0x27, 0x00, 0x73, 0x38, 0x03, 0x93, 0xC0, 0x1F, 0x1E, 0x00, 0xE0, 0x03, + 0x81, 0xF0, 0x7C, 0x1F, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x71, 0xFC, 0x1F, 0x07, 0x81, 0xE0, 0x78, 0x1C, 0x07, 0x03, 0xC0, 0xF0, + 0x38, 0x0E, 0x07, 0x81, 0xE0, 0x70, 0x1C, 0x0F, 0x03, 0x84, 0xE2, 0x39, + 0x0F, 0x81, 0xC0, 0x00, 0x01, 0xC0, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, + 0xF0, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x3F, 0xC0, 0x00, 0xF0, 0x00, 0x1E, + 0x00, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x0E, 0x00, 0x03, 0xC0, 0x00, 0x78, + 0x00, 0x0F, 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x0F, 0x00, 0x01, 0xE0, + 0x00, 0x38, 0x00, 0x07, 0x00, 0x01, 0xE0, 0x00, 0x38, 0x00, 0x07, 0x00, + 0x00, 0xE0, 0x00, 0x3C, 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, + 0x07, 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x01, 0xC7, 0x00, 0x38, 0xC0, 0x07, + 0x30, 0x00, 0x7C, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x7F, 0x00, 0x00, 0x78, + 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x07, 0x00, 0x00, + 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x00, + 0x00, 0x70, 0xFF, 0x83, 0x80, 0xF0, 0x3C, 0x06, 0x01, 0xE0, 0x60, 0x0E, + 0x06, 0x00, 0x70, 0xE0, 0x07, 0x8C, 0x00, 0x3C, 0xC0, 0x01, 0xCC, 0x00, + 0x0F, 0xF0, 0x00, 0xFF, 0x80, 0x07, 0x9E, 0x00, 0x38, 0xF0, 0x01, 0xC3, + 0x80, 0x1E, 0x1E, 0x00, 0xF0, 0x70, 0x07, 0x03, 0xC2, 0x78, 0x0E, 0x13, + 0xC0, 0x79, 0x1E, 0x01, 0xF0, 0x00, 0x07, 0x00, 0x00, 0xE1, 0xFC, 0x0F, + 0x80, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1C, 0x07, 0x80, 0xF0, 0x1E, 0x03, + 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x70, 0x1E, 0x03, 0xC0, 0x78, 0x0E, 0x03, + 0xC0, 0x78, 0x0E, 0x01, 0xC0, 0x78, 0x0F, 0x01, 0xC0, 0x38, 0x4F, 0x11, + 0xE4, 0x39, 0x07, 0xC0, 0x70, 0x00, 0x07, 0x81, 0xC0, 0x78, 0xFE, 0x0F, + 0xC1, 0xF8, 0x3C, 0x33, 0x84, 0x70, 0x78, 0x87, 0x10, 0xE0, 0xF2, 0x0E, + 0x41, 0xC1, 0xC8, 0x39, 0x07, 0x87, 0xA0, 0x74, 0x0F, 0x0F, 0x40, 0xE8, + 0x1E, 0x1F, 0x01, 0xE0, 0x38, 0x3C, 0x07, 0xC0, 0xF0, 0xF8, 0x0F, 0x01, + 0xE1, 0xE0, 0x1E, 0x03, 0xC3, 0xC0, 0x38, 0x07, 0x07, 0x00, 0xF0, 0x1E, + 0x1E, 0x01, 0xE0, 0x3C, 0x3C, 0x03, 0x80, 0x79, 0x70, 0x07, 0x00, 0xE2, + 0xE0, 0x1E, 0x03, 0x8B, 0xC0, 0x3C, 0x07, 0x27, 0x80, 0x70, 0x0F, 0x8E, + 0x00, 0xE0, 0x1E, 0x00, 0x07, 0x81, 0xE3, 0xFC, 0x3F, 0x83, 0xC2, 0x3C, + 0x1E, 0x21, 0xE0, 0xF2, 0x0F, 0x07, 0x20, 0x70, 0x39, 0x07, 0x83, 0xD0, + 0x3C, 0x1F, 0x01, 0xE0, 0xE8, 0x0E, 0x0F, 0x80, 0xF0, 0x78, 0x07, 0x83, + 0xC0, 0x38, 0x1C, 0x01, 0xC1, 0xE0, 0x1E, 0x0F, 0x00, 0xF1, 0x70, 0x07, + 0x0B, 0x80, 0x38, 0xBC, 0x01, 0xC9, 0xE0, 0x0F, 0x8E, 0x00, 0x38, 0x00, + 0x00, 0x1F, 0x80, 0x07, 0x8F, 0x00, 0x70, 0x3C, 0x07, 0x00, 0xE0, 0x70, + 0x07, 0x87, 0x80, 0x3C, 0x78, 0x01, 0xE7, 0x80, 0x0F, 0x3C, 0x00, 0x7B, + 0xC0, 0x03, 0xDE, 0x00, 0x3D, 0xF0, 0x01, 0xEF, 0x80, 0x0F, 0x78, 0x00, + 0xF3, 0xC0, 0x07, 0x9E, 0x00, 0x78, 0xF0, 0x03, 0x87, 0x80, 0x38, 0x1C, + 0x03, 0x80, 0xF0, 0x38, 0x03, 0xC3, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x3C, + 0x3F, 0x00, 0x7F, 0x8F, 0xF0, 0x01, 0xF7, 0x3F, 0x00, 0x1D, 0x83, 0xF0, + 0x07, 0xA0, 0x3E, 0x00, 0xF8, 0x07, 0xC0, 0x1E, 0x00, 0xF8, 0x03, 0xC0, + 0x1F, 0x00, 0xF0, 0x03, 0xE0, 0x1E, 0x00, 0x7C, 0x03, 0xC0, 0x1F, 0x00, + 0x70, 0x03, 0xE0, 0x1E, 0x00, 0x78, 0x03, 0xC0, 0x1F, 0x00, 0x70, 0x03, + 0xC0, 0x0E, 0x00, 0xF8, 0x03, 0xC0, 0x1E, 0x00, 0x78, 0x07, 0x80, 0x0F, + 0x01, 0xE0, 0x01, 0xE0, 0x70, 0x00, 0x7C, 0x3C, 0x00, 0x0F, 0x7C, 0x00, + 0x01, 0xC0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x01, 0xE0, + 0x00, 0x00, 0x38, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, + 0x7E, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x03, 0x8D, + 0xC0, 0x38, 0x2E, 0x07, 0x80, 0xF0, 0x78, 0x07, 0x03, 0x80, 0x38, 0x38, + 0x03, 0xC3, 0xC0, 0x1E, 0x3C, 0x00, 0xE1, 0xE0, 0x07, 0x1E, 0x00, 0x78, + 0xF0, 0x03, 0x87, 0x80, 0x3C, 0x78, 0x01, 0xE3, 0xC0, 0x1F, 0x1E, 0x01, + 0x70, 0xF0, 0x17, 0x87, 0x80, 0xBC, 0x3C, 0x09, 0xC0, 0xF1, 0x8E, 0x07, + 0xF8, 0xF0, 0x1F, 0x07, 0x80, 0x00, 0x38, 0x00, 0x03, 0xC0, 0x00, 0x1E, + 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, + 0x3E, 0x00, 0x0F, 0xFE, 0x00, 0x07, 0x87, 0x3F, 0x87, 0xC3, 0xC7, 0xE1, + 0xE6, 0xF0, 0xF6, 0x00, 0x72, 0x00, 0x3A, 0x00, 0x1D, 0x00, 0x1F, 0x00, + 0x0E, 0x80, 0x07, 0x80, 0x03, 0xC0, 0x03, 0xC0, 0x01, 0xE0, 0x00, 0xF0, + 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1C, 0x00, 0x1E, 0x00, 0x0F, + 0x00, 0x00, 0x01, 0xF8, 0x81, 0x87, 0xC1, 0x80, 0xE1, 0xC0, 0x60, 0xE0, + 0x10, 0x70, 0x08, 0x3C, 0x04, 0x1F, 0x00, 0x07, 0xC0, 0x03, 0xE0, 0x00, + 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x03, 0xC1, 0x01, 0xE0, 0x80, 0x70, + 0x40, 0x38, 0x30, 0x1C, 0x38, 0x0C, 0x1C, 0x0E, 0x0F, 0x0E, 0x04, 0x7C, + 0x00, 0x00, 0xC0, 0x18, 0x03, 0x80, 0x78, 0x1F, 0x03, 0xFF, 0x7F, 0xF0, + 0xF0, 0x0E, 0x00, 0xE0, 0x1E, 0x01, 0xE0, 0x1C, 0x01, 0xC0, 0x3C, 0x03, + 0xC0, 0x38, 0x03, 0x80, 0x78, 0x07, 0x80, 0x70, 0x8F, 0x10, 0xF1, 0x0F, + 0x20, 0xFC, 0x07, 0x80, 0x00, 0x00, 0x00, 0xF0, 0x0E, 0x7F, 0x00, 0xE0, + 0xF0, 0x1E, 0x0E, 0x01, 0xE1, 0xE0, 0x3C, 0x1E, 0x03, 0xC1, 0xE0, 0x3C, + 0x1C, 0x07, 0xC3, 0xC0, 0x78, 0x3C, 0x0F, 0x83, 0xC0, 0xB8, 0x38, 0x1F, + 0x87, 0x83, 0x70, 0x78, 0x27, 0x07, 0x86, 0x70, 0x70, 0xC7, 0x1F, 0x08, + 0xE1, 0xE1, 0x0E, 0x2E, 0x60, 0xE4, 0xFC, 0x0F, 0x87, 0x00, 0x70, 0x1C, + 0x03, 0xBF, 0x00, 0xF1, 0xE0, 0x3C, 0x78, 0x07, 0x1E, 0x00, 0xC3, 0x80, + 0x30, 0xE0, 0x08, 0x38, 0x06, 0x0E, 0x01, 0x03, 0x80, 0xC0, 0xF0, 0x20, + 0x3C, 0x10, 0x07, 0x04, 0x01, 0xC2, 0x00, 0x71, 0x00, 0x1C, 0xC0, 0x07, + 0x60, 0x01, 0xF0, 0x00, 0x78, 0x00, 0x1C, 0x00, 0x06, 0x00, 0x01, 0x00, + 0x00, 0x0C, 0x00, 0x40, 0x3B, 0xF8, 0x01, 0x00, 0xF1, 0xE0, 0x0C, 0x03, + 0xC3, 0x80, 0x78, 0x07, 0x0E, 0x01, 0xE0, 0x0C, 0x38, 0x0F, 0x80, 0x20, + 0xE0, 0x6E, 0x00, 0x83, 0x81, 0x38, 0x04, 0x0F, 0x0C, 0xE0, 0x10, 0x1C, + 0x23, 0x80, 0x80, 0x71, 0x8E, 0x06, 0x01, 0xCC, 0x38, 0x10, 0x07, 0x20, + 0xE0, 0x80, 0x1D, 0x83, 0x86, 0x00, 0x7C, 0x07, 0x30, 0x01, 0xF0, 0x1C, + 0x80, 0x07, 0x80, 0x74, 0x00, 0x1E, 0x01, 0xF0, 0x00, 0x70, 0x07, 0x80, + 0x01, 0xC0, 0x1C, 0x00, 0x06, 0x00, 0x60, 0x00, 0x10, 0x01, 0x00, 0x00, + 0x00, 0xE0, 0x38, 0x1F, 0x81, 0xF0, 0x8F, 0x09, 0x80, 0x3C, 0x40, 0x00, + 0x72, 0x00, 0x01, 0xD0, 0x00, 0x07, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0x38, + 0x00, 0x00, 0xE0, 0x00, 0x03, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x7C, 0x00, + 0x01, 0x70, 0x00, 0x09, 0xC0, 0x00, 0x67, 0x00, 0x01, 0x1E, 0x10, 0x08, + 0x38, 0x40, 0x40, 0xE2, 0x39, 0x03, 0xD0, 0xF8, 0x0F, 0x83, 0xC0, 0x1C, + 0x00, 0x07, 0x80, 0x33, 0xFC, 0x03, 0xC1, 0xE0, 0x1E, 0x07, 0x80, 0x70, + 0x3C, 0x01, 0x80, 0xE0, 0x0C, 0x07, 0x80, 0x40, 0x3C, 0x02, 0x00, 0xE0, + 0x20, 0x07, 0x81, 0x00, 0x3C, 0x18, 0x01, 0xE0, 0x80, 0x07, 0x0C, 0x00, + 0x38, 0x40, 0x01, 0xE4, 0x00, 0x0F, 0x60, 0x00, 0x3A, 0x00, 0x01, 0xF0, + 0x00, 0x0F, 0x00, 0x00, 0x70, 0x00, 0x03, 0x80, 0x00, 0x18, 0x00, 0x00, + 0x80, 0x00, 0x0C, 0x00, 0x00, 0x40, 0x00, 0x04, 0x00, 0x00, 0x40, 0x00, + 0x04, 0x00, 0x0E, 0x40, 0x00, 0x7C, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x0F, + 0xFF, 0x87, 0xFF, 0x82, 0x00, 0x83, 0x00, 0xC1, 0x00, 0xC0, 0x00, 0xC0, + 0x00, 0xC0, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x20, + 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x18, 0x00, 0x1E, + 0x00, 0x1F, 0xC0, 0x1F, 0xF0, 0xE8, 0xFC, 0x70, 0x1E, 0x38, 0x03, 0x88, + 0x00, 0x78, 0x00, 0x0F, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x0E, 0x00, 0x0F, + 0x00, 0x07, 0x80, 0x03, 0x80, 0x01, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, + 0x70, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x0F, 0x00, + 0x07, 0x80, 0x07, 0x80, 0x03, 0xC0, 0x07, 0xC0, 0x07, 0xC0, 0x00, 0x80, + 0x00, 0x60, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x0F, 0x00, 0x07, + 0x80, 0x03, 0x80, 0x01, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, 0x70, 0x00, + 0x38, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x01, 0x80, + 0x00, 0x70, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xE0, 0x00, 0x18, 0x00, 0x0E, 0x00, 0x06, 0x00, 0x07, + 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0E, + 0x00, 0x0E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x3C, + 0x00, 0x3C, 0x00, 0x38, 0x00, 0x38, 0x00, 0x18, 0x00, 0x08, 0x00, 0x1C, + 0x00, 0x7E, 0x00, 0x78, 0x00, 0xF0, 0x00, 0xE0, 0x01, 0xE0, 0x01, 0xE0, + 0x01, 0xC0, 0x01, 0xC0, 0x03, 0xC0, 0x03, 0x80, 0x03, 0x80, 0x07, 0x80, + 0x07, 0x80, 0x07, 0x00, 0x07, 0x00, 0x0F, 0x00, 0x0E, 0x00, 0x1C, 0x00, + 0xF8, 0x00, 0x1F, 0x80, 0x00, 0xFF, 0x80, 0xC7, 0xFF, 0x87, 0xBC, 0x3F, + 0xFE, 0x60, 0x3F, 0xF0, 0x00, 0x1F, 0x00}; + +const GFXglyph FreeSerifItalic24pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 12, 0, 1}, // 0x20 ' ' + {0, 12, 32, 16, 2, -30}, // 0x21 '!' + {48, 14, 12, 16, 6, -31}, // 0x22 '"' + {69, 25, 31, 23, 0, -30}, // 0x23 '#' + {166, 21, 38, 24, 2, -33}, // 0x24 '$' + {266, 33, 32, 39, 4, -30}, // 0x25 '%' + {398, 30, 33, 37, 4, -31}, // 0x26 '&' + {522, 5, 12, 9, 6, -31}, // 0x27 ''' + {530, 13, 39, 16, 2, -30}, // 0x28 '(' + {594, 13, 39, 16, 0, -30}, // 0x29 ')' + {658, 16, 20, 23, 7, -31}, // 0x2A '*' + {698, 23, 23, 32, 4, -22}, // 0x2B '+' + {765, 7, 11, 12, -1, -4}, // 0x2C ',' + {775, 11, 3, 16, 2, -11}, // 0x2D '-' + {780, 5, 5, 12, 1, -3}, // 0x2E '.' + {784, 21, 33, 14, 0, -31}, // 0x2F '/' + {871, 21, 31, 23, 2, -30}, // 0x30 '0' + {953, 17, 32, 23, 2, -31}, // 0x31 '1' + {1021, 21, 31, 24, 0, -30}, // 0x32 '2' + {1103, 22, 32, 23, 0, -31}, // 0x33 '3' + {1191, 22, 32, 23, 0, -31}, // 0x34 '4' + {1279, 22, 32, 24, 0, -31}, // 0x35 '5' + {1367, 23, 32, 23, 1, -31}, // 0x36 '6' + {1459, 21, 32, 23, 4, -31}, // 0x37 '7' + {1543, 22, 32, 23, 1, -31}, // 0x38 '8' + {1631, 22, 33, 23, 1, -31}, // 0x39 '9' + {1722, 9, 22, 12, 2, -20}, // 0x3A ':' + {1747, 11, 27, 12, 1, -20}, // 0x3B ';' + {1785, 23, 25, 27, 3, -24}, // 0x3C '<' + {1857, 24, 12, 31, 4, -17}, // 0x3D '=' + {1893, 24, 25, 27, 3, -24}, // 0x3E '>' + {1968, 16, 33, 21, 6, -31}, // 0x3F '?' + {2034, 33, 33, 37, 3, -31}, // 0x40 '@' + {2171, 29, 31, 31, 0, -30}, // 0x41 'A' + {2284, 28, 31, 28, 0, -30}, // 0x42 'B' + {2393, 30, 33, 29, 2, -31}, // 0x43 'C' + {2517, 33, 31, 33, 0, -30}, // 0x44 'D' + {2645, 29, 31, 27, 0, -30}, // 0x45 'E' + {2758, 29, 31, 27, 0, -30}, // 0x46 'F' + {2871, 31, 33, 32, 2, -31}, // 0x47 'G' + {2999, 36, 31, 33, 0, -30}, // 0x48 'H' + {3139, 18, 31, 15, 0, -30}, // 0x49 'I' + {3209, 23, 32, 20, 0, -30}, // 0x4A 'J' + {3301, 33, 31, 30, 0, -30}, // 0x4B 'K' + {3429, 27, 31, 27, 0, -30}, // 0x4C 'L' + {3534, 42, 31, 39, 0, -30}, // 0x4D 'M' + {3697, 35, 32, 32, 0, -30}, // 0x4E 'N' + {3837, 30, 33, 31, 2, -31}, // 0x4F 'O' + {3961, 29, 31, 27, 0, -30}, // 0x50 'P' + {4074, 30, 41, 31, 2, -31}, // 0x51 'Q' + {4228, 28, 31, 29, 0, -30}, // 0x52 'R' + {4337, 23, 33, 21, 0, -31}, // 0x53 'S' + {4432, 27, 31, 28, 4, -30}, // 0x54 'T' + {4537, 31, 32, 33, 5, -30}, // 0x55 'U' + {4661, 29, 32, 31, 6, -30}, // 0x56 'V' + {4777, 39, 32, 42, 6, -30}, // 0x57 'W' + {4933, 32, 31, 31, 0, -30}, // 0x58 'X' + {5057, 26, 31, 28, 5, -30}, // 0x59 'Y' + {5158, 29, 31, 26, 0, -30}, // 0x5A 'Z' + {5271, 17, 39, 18, 1, -31}, // 0x5B '[' + {5354, 17, 33, 23, 5, -31}, // 0x5C '\' + {5425, 17, 39, 18, 1, -31}, // 0x5D ']' + {5508, 20, 17, 20, 0, -31}, // 0x5E '^' + {5551, 24, 2, 23, 0, 5}, // 0x5F '_' + {5557, 8, 8, 12, 6, -31}, // 0x60 '`' + {5565, 21, 21, 23, 1, -20}, // 0x61 'a' + {5621, 21, 33, 22, 1, -31}, // 0x62 'b' + {5708, 18, 22, 19, 1, -20}, // 0x63 'c' + {5758, 24, 33, 23, 1, -31}, // 0x64 'd' + {5857, 18, 22, 19, 1, -20}, // 0x65 'e' + {5907, 27, 42, 20, -4, -31}, // 0x66 'f' + {6049, 21, 31, 21, -1, -20}, // 0x67 'g' + {6131, 21, 32, 23, 1, -31}, // 0x68 'h' + {6215, 10, 32, 12, 2, -30}, // 0x69 'i' + {6255, 19, 41, 13, -3, -30}, // 0x6A 'j' + {6353, 21, 33, 21, 1, -31}, // 0x6B 'k' + {6440, 11, 33, 12, 2, -31}, // 0x6C 'l' + {6486, 31, 21, 34, 1, -20}, // 0x6D 'm' + {6568, 21, 21, 23, 1, -20}, // 0x6E 'n' + {6624, 21, 22, 22, 1, -20}, // 0x6F 'o' + {6682, 27, 31, 22, -4, -20}, // 0x70 'p' + {6787, 21, 31, 23, 1, -20}, // 0x71 'q' + {6869, 17, 21, 17, 1, -20}, // 0x72 'r' + {6914, 17, 22, 16, 0, -20}, // 0x73 's' + {6961, 12, 26, 11, 1, -24}, // 0x74 't' + {7000, 20, 22, 23, 1, -20}, // 0x75 'u' + {7055, 18, 22, 21, 3, -20}, // 0x76 'v' + {7105, 30, 22, 32, 2, -20}, // 0x77 'w' + {7188, 22, 22, 20, -1, -20}, // 0x78 'x' + {7249, 21, 31, 22, 1, -20}, // 0x79 'y' + {7331, 17, 24, 18, 0, -19}, // 0x7A 'z' + {7382, 17, 40, 19, 2, -31}, // 0x7B '{' + {7467, 3, 33, 13, 5, -31}, // 0x7C '|' + {7480, 16, 41, 19, 0, -32}, // 0x7D '}' + {7562, 22, 6, 25, 2, -14}}; // 0x7E '~' + +const GFXfont FreeSerifItalic24pt7b PROGMEM = { + (uint8_t *)FreeSerifItalic24pt7bBitmaps, + (GFXglyph *)FreeSerifItalic24pt7bGlyphs, 0x20, 0x7E, 56}; + +// Approx. 8251 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerifItalic9pt7b.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerifItalic9pt7b.h new file mode 100644 index 0000000..be4ad05 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/FreeSerifItalic9pt7b.h @@ -0,0 +1,204 @@ +#pragma once +#include + +const uint8_t FreeSerifItalic9pt7bBitmaps[] PROGMEM = { + 0x11, 0x12, 0x22, 0x24, 0x40, 0x0C, 0xDE, 0xE5, 0x40, 0x04, 0x82, 0x20, + 0x98, 0x24, 0x7F, 0xC4, 0x82, 0x23, 0xFC, 0x24, 0x11, 0x04, 0x83, 0x20, + 0x1C, 0x1B, 0x99, 0x4D, 0x26, 0x81, 0xC0, 0x70, 0x1C, 0x13, 0x49, 0xA4, + 0xDA, 0xC7, 0xC1, 0x00, 0x80, 0x1C, 0x61, 0xCF, 0x0E, 0x28, 0x30, 0xA0, + 0xC5, 0x03, 0x34, 0xE7, 0xAE, 0x40, 0xB1, 0x05, 0x84, 0x26, 0x20, 0x99, + 0x84, 0x3C, 0x03, 0x80, 0x6C, 0x06, 0xC0, 0x78, 0x06, 0x01, 0xEF, 0x66, + 0x24, 0x24, 0xC3, 0x8C, 0x10, 0xE3, 0x87, 0xCE, 0xFA, 0x08, 0x21, 0x08, + 0x61, 0x8C, 0x30, 0xC3, 0x0C, 0x30, 0x41, 0x02, 0x00, 0x10, 0x40, 0x82, + 0x0C, 0x30, 0xC3, 0x0C, 0x61, 0x84, 0x21, 0x08, 0x00, 0x30, 0xCA, 0x5E, + 0x6A, 0x93, 0x08, 0x08, 0x04, 0x02, 0x01, 0x0F, 0xF8, 0x40, 0x20, 0x10, + 0x08, 0x00, 0x56, 0xF0, 0xF0, 0x03, 0x02, 0x06, 0x04, 0x08, 0x08, 0x10, + 0x30, 0x20, 0x60, 0x40, 0xC0, 0x0E, 0x0C, 0x8C, 0x6C, 0x36, 0x1F, 0x0F, + 0x07, 0x87, 0xC3, 0x61, 0xB1, 0x88, 0x83, 0x80, 0x04, 0x70, 0xC3, 0x08, + 0x21, 0x86, 0x10, 0x43, 0x08, 0xF8, 0x1C, 0x67, 0x83, 0x03, 0x02, 0x06, + 0x0C, 0x08, 0x10, 0x20, 0x42, 0xFC, 0x0F, 0x08, 0xC0, 0x60, 0xC1, 0xE0, + 0x38, 0x0C, 0x06, 0x03, 0x01, 0x01, 0x1F, 0x00, 0x01, 0x01, 0x81, 0x41, + 0x61, 0x21, 0x11, 0x18, 0x88, 0xFF, 0x02, 0x03, 0x01, 0x00, 0x0F, 0x84, + 0x04, 0x03, 0x80, 0x60, 0x18, 0x0C, 0x06, 0x03, 0x03, 0x03, 0x1E, 0x00, + 0x01, 0x83, 0x87, 0x07, 0x03, 0x03, 0x73, 0xCD, 0x86, 0xC3, 0x61, 0xB1, + 0x88, 0xC3, 0xC0, 0x7F, 0x40, 0x80, 0x80, 0x40, 0x40, 0x60, 0x20, 0x20, + 0x10, 0x10, 0x18, 0x08, 0x00, 0x1E, 0x19, 0xCC, 0x66, 0x33, 0xB0, 0xE0, + 0x50, 0xCC, 0xC3, 0x61, 0xB0, 0xCC, 0xC3, 0xC0, 0x0E, 0x19, 0x8C, 0x6C, + 0x36, 0x1B, 0x0D, 0x86, 0xE6, 0x3F, 0x03, 0x03, 0x06, 0x0C, 0x00, 0x33, + 0x00, 0x00, 0xCC, 0x33, 0x00, 0x00, 0x44, 0x48, 0x01, 0x83, 0x86, 0x1C, + 0x0C, 0x03, 0x80, 0x30, 0x07, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x00, 0x0F, + 0xF8, 0xC0, 0x1C, 0x03, 0x80, 0x70, 0x18, 0x38, 0x70, 0xC0, 0x80, 0x00, + 0x3C, 0x8C, 0x18, 0x30, 0xC3, 0x0C, 0x20, 0x40, 0x80, 0x06, 0x00, 0x0F, + 0xC0, 0xC3, 0x0C, 0x04, 0xC7, 0xBC, 0x64, 0xE2, 0x27, 0x31, 0x39, 0x91, + 0xCC, 0x93, 0x3B, 0x0E, 0x00, 0x1F, 0x80, 0x01, 0x00, 0x60, 0x14, 0x04, + 0xC0, 0x98, 0x23, 0x07, 0xE1, 0x04, 0x20, 0x88, 0x1B, 0x8F, 0x80, 0x3F, + 0xC1, 0x8C, 0x21, 0x8C, 0x31, 0x8C, 0x3E, 0x04, 0x61, 0x86, 0x30, 0xC4, + 0x19, 0x86, 0x7F, 0x80, 0x07, 0x91, 0x86, 0x30, 0x26, 0x02, 0x60, 0x0C, + 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0x61, 0x83, 0xE0, 0x3F, 0xC0, + 0x63, 0x82, 0x0C, 0x30, 0x31, 0x81, 0x8C, 0x0C, 0x40, 0x66, 0x07, 0x30, + 0x31, 0x03, 0x18, 0x71, 0xFE, 0x00, 0x3F, 0xF0, 0xC2, 0x08, 0x21, 0x80, + 0x19, 0x81, 0xF8, 0x11, 0x03, 0x10, 0x30, 0x02, 0x04, 0x60, 0x8F, 0xF8, + 0x3F, 0xF0, 0xC2, 0x08, 0x21, 0x80, 0x19, 0x81, 0xF8, 0x11, 0x03, 0x10, + 0x30, 0x02, 0x00, 0x60, 0x0F, 0x80, 0x07, 0x91, 0x87, 0x30, 0x26, 0x02, + 0x60, 0x0C, 0x00, 0xC1, 0xFC, 0x0C, 0xC0, 0xCC, 0x0C, 0x60, 0x83, 0xF0, + 0x3E, 0x3C, 0x30, 0x60, 0x81, 0x06, 0x0C, 0x18, 0x30, 0x7F, 0x81, 0x06, + 0x0C, 0x18, 0x30, 0x60, 0x81, 0x06, 0x0C, 0x3C, 0x78, 0x1E, 0x18, 0x20, + 0xC1, 0x83, 0x04, 0x18, 0x30, 0x41, 0x87, 0x80, 0x0F, 0x81, 0x80, 0x80, + 0xC0, 0x60, 0x20, 0x30, 0x18, 0x0C, 0x04, 0x36, 0x1E, 0x00, 0x3E, 0x78, + 0x61, 0x82, 0x10, 0x31, 0x01, 0xB0, 0x0E, 0x00, 0x58, 0x06, 0x60, 0x33, + 0x01, 0x0C, 0x18, 0x61, 0xE7, 0xC0, 0x3E, 0x01, 0x80, 0x20, 0x0C, 0x01, + 0x80, 0x30, 0x04, 0x01, 0x80, 0x30, 0x04, 0x0D, 0x83, 0x7F, 0xE0, 0x1C, + 0x07, 0x0C, 0x0E, 0x0C, 0x14, 0x14, 0x1C, 0x14, 0x2C, 0x16, 0x4C, 0x26, + 0x48, 0x26, 0x98, 0x27, 0x18, 0x27, 0x10, 0x42, 0x30, 0xF4, 0x7C, 0x38, + 0x78, 0x60, 0x83, 0x04, 0x2C, 0x41, 0x22, 0x09, 0x10, 0x4D, 0x84, 0x28, + 0x21, 0x41, 0x06, 0x10, 0x21, 0xE1, 0x00, 0x07, 0x83, 0x18, 0xC1, 0xB0, + 0x36, 0x07, 0xC0, 0xF0, 0x3E, 0x06, 0xC0, 0xD8, 0x31, 0x8C, 0x1E, 0x00, + 0x3F, 0xC1, 0x9C, 0x21, 0x8C, 0x31, 0x86, 0x31, 0x87, 0xE1, 0x80, 0x30, + 0x04, 0x01, 0x80, 0x78, 0x00, 0x07, 0x83, 0x18, 0xC1, 0x98, 0x36, 0x07, + 0xC0, 0xF0, 0x1E, 0x06, 0xC0, 0xD8, 0x31, 0x04, 0x13, 0x01, 0x80, 0x70, + 0xB7, 0xE0, 0x3F, 0xC1, 0x8C, 0x21, 0x8C, 0x31, 0x8C, 0x3F, 0x04, 0xC1, + 0x98, 0x31, 0x84, 0x31, 0x86, 0x78, 0x70, 0x1E, 0x4C, 0x63, 0x08, 0xC0, + 0x38, 0x07, 0x00, 0x60, 0x0C, 0x43, 0x10, 0xC6, 0x62, 0x70, 0x7F, 0xE9, + 0x8E, 0x31, 0x04, 0x01, 0x80, 0x30, 0x06, 0x00, 0x80, 0x30, 0x06, 0x00, + 0x80, 0x7E, 0x00, 0x7C, 0xF3, 0x02, 0x30, 0x46, 0x04, 0x60, 0x46, 0x04, + 0x40, 0x8C, 0x08, 0xC0, 0x8C, 0x10, 0xE3, 0x03, 0xC0, 0xF8, 0xEC, 0x0C, + 0x81, 0x18, 0x43, 0x08, 0x62, 0x0C, 0x81, 0x90, 0x14, 0x03, 0x00, 0x60, + 0x08, 0x00, 0xFB, 0xCE, 0x43, 0x0C, 0x86, 0x11, 0x8C, 0x43, 0x38, 0x86, + 0xB2, 0x0D, 0x24, 0x1C, 0x50, 0x38, 0xA0, 0x21, 0x80, 0x42, 0x01, 0x04, + 0x00, 0x3E, 0x71, 0x82, 0x0C, 0x40, 0xC8, 0x07, 0x00, 0x60, 0x06, 0x00, + 0xB0, 0x13, 0x02, 0x18, 0x61, 0x8F, 0x3E, 0xF9, 0xC8, 0x23, 0x10, 0xC8, + 0x34, 0x05, 0x01, 0x80, 0x40, 0x30, 0x0C, 0x03, 0x03, 0xE0, 0x3F, 0xE4, + 0x19, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0x40, 0x18, 0x06, 0x05, + 0x81, 0x7F, 0xE0, 0x0E, 0x10, 0x20, 0x81, 0x02, 0x04, 0x10, 0x20, 0x40, + 0x82, 0x04, 0x08, 0x1C, 0x00, 0x81, 0x04, 0x18, 0x20, 0xC1, 0x04, 0x08, + 0x20, 0x41, 0x38, 0x20, 0x82, 0x08, 0x41, 0x04, 0x10, 0xC2, 0x08, 0x20, + 0x8C, 0x00, 0x18, 0x18, 0x2C, 0x24, 0x46, 0x42, 0x83, 0xFF, 0x80, 0xD8, + 0x80, 0x1F, 0x98, 0x98, 0x4C, 0x2C, 0x36, 0x33, 0x3A, 0xEE, 0x38, 0x08, + 0x04, 0x02, 0x03, 0x71, 0xCC, 0xC6, 0xC3, 0x63, 0x21, 0x93, 0x8F, 0x00, + 0x1F, 0x33, 0x60, 0xC0, 0xC0, 0xC0, 0xC4, 0x78, 0x01, 0x80, 0x40, 0x60, + 0x20, 0xF1, 0x89, 0x8C, 0xC4, 0xC2, 0x63, 0x33, 0xAE, 0xE0, 0x0E, 0x65, + 0x8B, 0x2F, 0x98, 0x31, 0x3C, 0x01, 0xE0, 0x40, 0x08, 0x02, 0x00, 0x40, + 0x3E, 0x03, 0x00, 0x40, 0x08, 0x01, 0x00, 0x60, 0x0C, 0x01, 0x00, 0x20, + 0x04, 0x01, 0x00, 0xC0, 0x00, 0x1E, 0x19, 0xD8, 0xCC, 0xE1, 0xC3, 0x01, + 0xE0, 0xBC, 0x82, 0x41, 0x31, 0x0F, 0x00, 0x38, 0x08, 0x04, 0x02, 0x03, + 0x39, 0x6C, 0xC6, 0x46, 0x63, 0x21, 0x11, 0xB8, 0xE0, 0x30, 0x00, 0xE2, + 0x44, 0xC8, 0xCE, 0x06, 0x00, 0x00, 0x00, 0xC0, 0x83, 0x04, 0x08, 0x10, + 0x60, 0x81, 0x02, 0x04, 0x70, 0x38, 0x10, 0x10, 0x10, 0x37, 0x22, 0x24, + 0x38, 0x78, 0x48, 0x4D, 0xC6, 0x73, 0x32, 0x26, 0x64, 0x4C, 0xDE, 0x77, + 0x39, 0x5E, 0xCC, 0xCC, 0xCE, 0x66, 0x62, 0x22, 0x11, 0x11, 0xB9, 0x8E, + 0x77, 0x3B, 0x33, 0x62, 0x62, 0x42, 0x4D, 0xCE, 0x0F, 0x18, 0xD8, 0x7C, + 0x3C, 0x3E, 0x1B, 0x18, 0xF0, 0x3B, 0x87, 0x31, 0x8C, 0x43, 0x31, 0x88, + 0x62, 0x30, 0xF0, 0x60, 0x10, 0x04, 0x03, 0x80, 0x0F, 0x18, 0x98, 0x4C, + 0x2C, 0x26, 0x33, 0x38, 0xEC, 0x04, 0x02, 0x03, 0x03, 0xC0, 0x76, 0x50, + 0xC1, 0x06, 0x08, 0x10, 0x60, 0x1A, 0x6C, 0xC8, 0xC0, 0xD1, 0xB3, 0x5C, + 0x23, 0xC8, 0xC4, 0x21, 0x18, 0xE0, 0xC3, 0x42, 0x42, 0xC6, 0x86, 0x8C, + 0x9D, 0xEE, 0x62, 0xC4, 0x89, 0xA3, 0x47, 0x0C, 0x10, 0xE2, 0x2C, 0x44, + 0xD8, 0x9D, 0x23, 0xA4, 0x65, 0x0C, 0xC1, 0x10, 0x19, 0x95, 0x43, 0x01, + 0x80, 0xC0, 0xA0, 0x91, 0x8E, 0x70, 0x88, 0x46, 0x23, 0x20, 0x90, 0x50, + 0x28, 0x18, 0x08, 0x08, 0x08, 0x18, 0x00, 0x3F, 0x42, 0x04, 0x08, 0x10, + 0x20, 0x40, 0x72, 0x0E, 0x08, 0x61, 0x04, 0x30, 0x86, 0x08, 0x61, 0x04, + 0x30, 0xC3, 0x8F, 0x00, 0xFF, 0xF0, 0x1E, 0x0C, 0x10, 0x20, 0xC1, 0x82, + 0x04, 0x1C, 0x30, 0x40, 0x83, 0x04, 0x08, 0x20, 0x60, 0x99, 0x8E}; + +const GFXglyph FreeSerifItalic9pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 5, 0, 1}, // 0x20 ' ' + {0, 4, 12, 6, 1, -11}, // 0x21 '!' + {6, 5, 4, 6, 3, -11}, // 0x22 '"' + {9, 10, 12, 9, 0, -11}, // 0x23 '#' + {24, 9, 15, 9, 1, -12}, // 0x24 '$' + {41, 14, 12, 15, 1, -11}, // 0x25 '%' + {62, 12, 12, 14, 1, -11}, // 0x26 '&' + {80, 2, 4, 4, 3, -11}, // 0x27 ''' + {81, 6, 15, 6, 1, -11}, // 0x28 '(' + {93, 6, 15, 6, 0, -11}, // 0x29 ')' + {105, 6, 8, 9, 3, -11}, // 0x2A '*' + {111, 9, 9, 12, 1, -8}, // 0x2B '+' + {122, 2, 4, 5, 0, -1}, // 0x2C ',' + {123, 4, 1, 6, 1, -3}, // 0x2D '-' + {124, 2, 2, 5, 0, -1}, // 0x2E '.' + {125, 8, 12, 5, 0, -11}, // 0x2F '/' + {137, 9, 13, 9, 1, -12}, // 0x30 '0' + {152, 6, 13, 9, 1, -12}, // 0x31 '1' + {162, 8, 12, 9, 1, -11}, // 0x32 '2' + {174, 9, 12, 9, 0, -11}, // 0x33 '3' + {188, 9, 12, 9, 0, -11}, // 0x34 '4' + {202, 9, 12, 9, 0, -11}, // 0x35 '5' + {216, 9, 13, 9, 1, -12}, // 0x36 '6' + {231, 9, 12, 9, 1, -11}, // 0x37 '7' + {245, 9, 13, 9, 1, -12}, // 0x38 '8' + {260, 9, 13, 9, 0, -12}, // 0x39 '9' + {275, 4, 8, 4, 1, -7}, // 0x3A ':' + {279, 4, 10, 4, 1, -7}, // 0x3B ';' + {284, 9, 9, 10, 1, -8}, // 0x3C '<' + {295, 9, 5, 12, 2, -6}, // 0x3D '=' + {301, 9, 9, 10, 1, -8}, // 0x3E '>' + {312, 7, 12, 8, 2, -11}, // 0x3F '?' + {323, 13, 12, 14, 1, -11}, // 0x40 '@' + {343, 11, 11, 12, 0, -10}, // 0x41 'A' + {359, 11, 12, 11, 0, -11}, // 0x42 'B' + {376, 12, 12, 11, 1, -11}, // 0x43 'C' + {394, 13, 12, 13, 0, -11}, // 0x44 'D' + {414, 12, 12, 10, 0, -11}, // 0x45 'E' + {432, 12, 12, 10, 0, -11}, // 0x46 'F' + {450, 12, 12, 12, 1, -11}, // 0x47 'G' + {468, 14, 12, 13, 0, -11}, // 0x48 'H' + {489, 7, 12, 6, 0, -11}, // 0x49 'I' + {500, 9, 12, 8, 0, -11}, // 0x4A 'J' + {514, 13, 12, 12, 0, -11}, // 0x4B 'K' + {534, 11, 12, 10, 0, -11}, // 0x4C 'L' + {551, 16, 12, 15, 0, -11}, // 0x4D 'M' + {575, 13, 12, 12, 0, -11}, // 0x4E 'N' + {595, 11, 12, 12, 1, -11}, // 0x4F 'O' + {612, 11, 12, 10, 0, -11}, // 0x50 'P' + {629, 11, 15, 12, 1, -11}, // 0x51 'Q' + {650, 11, 12, 11, 0, -11}, // 0x52 'R' + {667, 10, 12, 8, 0, -11}, // 0x53 'S' + {682, 11, 12, 11, 2, -11}, // 0x54 'T' + {699, 12, 12, 13, 2, -11}, // 0x55 'U' + {717, 11, 12, 12, 2, -11}, // 0x56 'V' + {734, 15, 12, 16, 2, -11}, // 0x57 'W' + {757, 12, 12, 12, 0, -11}, // 0x58 'X' + {775, 10, 12, 11, 2, -11}, // 0x59 'Y' + {790, 11, 12, 10, 0, -11}, // 0x5A 'Z' + {807, 7, 15, 7, 0, -11}, // 0x5B '[' + {821, 6, 12, 9, 2, -11}, // 0x5C '\' + {830, 6, 15, 7, 1, -11}, // 0x5D ']' + {842, 8, 7, 8, 0, -11}, // 0x5E '^' + {849, 9, 1, 9, 0, 2}, // 0x5F '_' + {851, 3, 3, 5, 2, -11}, // 0x60 '`' + {853, 9, 8, 9, 0, -7}, // 0x61 'a' + {862, 9, 12, 9, 0, -11}, // 0x62 'b' + {876, 8, 8, 7, 0, -7}, // 0x63 'c' + {884, 9, 12, 9, 0, -11}, // 0x64 'd' + {898, 7, 8, 7, 0, -7}, // 0x65 'e' + {905, 11, 17, 8, -1, -12}, // 0x66 'f' + {929, 9, 12, 8, 0, -7}, // 0x67 'g' + {943, 9, 12, 9, 0, -11}, // 0x68 'h' + {957, 4, 12, 4, 1, -11}, // 0x69 'i' + {963, 7, 16, 5, -1, -11}, // 0x6A 'j' + {977, 8, 12, 8, 0, -11}, // 0x6B 'k' + {989, 4, 12, 5, 1, -11}, // 0x6C 'l' + {995, 13, 8, 13, 0, -7}, // 0x6D 'm' + {1008, 8, 8, 9, 0, -7}, // 0x6E 'n' + {1016, 9, 8, 9, 0, -7}, // 0x6F 'o' + {1025, 10, 12, 8, -1, -7}, // 0x70 'p' + {1040, 9, 12, 9, 0, -7}, // 0x71 'q' + {1054, 7, 8, 7, 0, -7}, // 0x72 'r' + {1061, 7, 8, 6, 0, -7}, // 0x73 's' + {1068, 5, 9, 4, 0, -8}, // 0x74 't' + {1074, 8, 8, 9, 1, -7}, // 0x75 'u' + {1082, 7, 8, 8, 1, -7}, // 0x76 'v' + {1089, 11, 8, 12, 1, -7}, // 0x77 'w' + {1100, 9, 8, 8, -1, -7}, // 0x78 'x' + {1109, 9, 12, 9, 0, -7}, // 0x79 'y' + {1123, 8, 9, 7, 0, -7}, // 0x7A 'z' + {1132, 6, 15, 7, 1, -11}, // 0x7B '{' + {1144, 1, 12, 5, 2, -11}, // 0x7C '|' + {1146, 7, 16, 7, 0, -12}, // 0x7D '}' + {1160, 8, 3, 10, 1, -5}}; // 0x7E '~' + +const GFXfont FreeSerifItalic9pt7b PROGMEM = { + (uint8_t *)FreeSerifItalic9pt7bBitmaps, + (GFXglyph *)FreeSerifItalic9pt7bGlyphs, 0x20, 0x7E, 22}; + +// Approx. 1835 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/Org_01.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/Org_01.h new file mode 100644 index 0000000..9b80258 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/Org_01.h @@ -0,0 +1,131 @@ +#pragma once +#include + +// Org_v01 by Orgdot (www.orgdot.com/aliasfonts). A tiny, +// stylized font with all characters within a 6 pixel height. + +const uint8_t Org_01Bitmaps[] PROGMEM = { + 0xE8, 0xA0, 0x57, 0xD5, 0xF5, 0x00, 0xFD, 0x3E, 0x5F, 0x80, 0x88, 0x88, + 0x88, 0x80, 0xF4, 0xBF, 0x2E, 0x80, 0x80, 0x6A, 0x40, 0x95, 0x80, 0xAA, + 0x80, 0x5D, 0x00, 0xC0, 0xF0, 0x80, 0x08, 0x88, 0x88, 0x00, 0xFC, 0x63, + 0x1F, 0x80, 0xF8, 0xF8, 0x7F, 0x0F, 0x80, 0xF8, 0x7E, 0x1F, 0x80, 0x8C, + 0x7E, 0x10, 0x80, 0xFC, 0x3E, 0x1F, 0x80, 0xFC, 0x3F, 0x1F, 0x80, 0xF8, + 0x42, 0x10, 0x80, 0xFC, 0x7F, 0x1F, 0x80, 0xFC, 0x7E, 0x1F, 0x80, 0x90, + 0xB0, 0x2A, 0x22, 0xF0, 0xF0, 0x88, 0xA8, 0xF8, 0x4E, 0x02, 0x00, 0xFD, + 0x6F, 0x0F, 0x80, 0xFC, 0x7F, 0x18, 0x80, 0xF4, 0x7D, 0x1F, 0x00, 0xFC, + 0x21, 0x0F, 0x80, 0xF4, 0x63, 0x1F, 0x00, 0xFC, 0x3F, 0x0F, 0x80, 0xFC, + 0x3F, 0x08, 0x00, 0xFC, 0x2F, 0x1F, 0x80, 0x8C, 0x7F, 0x18, 0x80, 0xF9, + 0x08, 0x4F, 0x80, 0x78, 0x85, 0x2F, 0x80, 0x8D, 0xB1, 0x68, 0x80, 0x84, + 0x21, 0x0F, 0x80, 0xFD, 0x6B, 0x5A, 0x80, 0xFC, 0x63, 0x18, 0x80, 0xFC, + 0x63, 0x1F, 0x80, 0xFC, 0x7F, 0x08, 0x00, 0xFC, 0x63, 0x3F, 0x80, 0xFC, + 0x7F, 0x29, 0x00, 0xFC, 0x3E, 0x1F, 0x80, 0xF9, 0x08, 0x42, 0x00, 0x8C, + 0x63, 0x1F, 0x80, 0x8C, 0x62, 0xA2, 0x00, 0xAD, 0x6B, 0x5F, 0x80, 0x8A, + 0x88, 0xA8, 0x80, 0x8C, 0x54, 0x42, 0x00, 0xF8, 0x7F, 0x0F, 0x80, 0xEA, + 0xC0, 0x82, 0x08, 0x20, 0x80, 0xD5, 0xC0, 0x54, 0xF8, 0x80, 0xF1, 0xFF, + 0x8F, 0x99, 0xF0, 0xF8, 0x8F, 0x1F, 0x99, 0xF0, 0xFF, 0x8F, 0x6B, 0xA4, + 0xF9, 0x9F, 0x10, 0x8F, 0x99, 0x90, 0xF0, 0x55, 0xC0, 0x8A, 0xF9, 0x90, + 0xF8, 0xFD, 0x63, 0x10, 0xF9, 0x99, 0xF9, 0x9F, 0xF9, 0x9F, 0x80, 0xF9, + 0x9F, 0x20, 0xF8, 0x88, 0x47, 0x1F, 0x27, 0xC8, 0x42, 0x00, 0x99, 0x9F, + 0x99, 0x97, 0x8C, 0x6B, 0xF0, 0x96, 0x69, 0x99, 0x9F, 0x10, 0x2E, 0x8F, + 0x2B, 0x22, 0xF8, 0x89, 0xA8, 0x0F, 0xE0}; + +const GFXglyph Org_01Glyphs[] PROGMEM = {{0, 0, 0, 6, 0, 1}, // 0x20 ' ' + {0, 1, 5, 2, 0, -4}, // 0x21 '!' + {1, 3, 1, 4, 0, -4}, // 0x22 '"' + {2, 5, 5, 6, 0, -4}, // 0x23 '#' + {6, 5, 5, 6, 0, -4}, // 0x24 '$' + {10, 5, 5, 6, 0, -4}, // 0x25 '%' + {14, 5, 5, 6, 0, -4}, // 0x26 '&' + {18, 1, 1, 2, 0, -4}, // 0x27 ''' + {19, 2, 5, 3, 0, -4}, // 0x28 '(' + {21, 2, 5, 3, 0, -4}, // 0x29 ')' + {23, 3, 3, 4, 0, -3}, // 0x2A '*' + {25, 3, 3, 4, 0, -3}, // 0x2B '+' + {27, 1, 2, 2, 0, 0}, // 0x2C ',' + {28, 4, 1, 5, 0, -2}, // 0x2D '-' + {29, 1, 1, 2, 0, 0}, // 0x2E '.' + {30, 5, 5, 6, 0, -4}, // 0x2F '/' + {34, 5, 5, 6, 0, -4}, // 0x30 '0' + {38, 1, 5, 2, 0, -4}, // 0x31 '1' + {39, 5, 5, 6, 0, -4}, // 0x32 '2' + {43, 5, 5, 6, 0, -4}, // 0x33 '3' + {47, 5, 5, 6, 0, -4}, // 0x34 '4' + {51, 5, 5, 6, 0, -4}, // 0x35 '5' + {55, 5, 5, 6, 0, -4}, // 0x36 '6' + {59, 5, 5, 6, 0, -4}, // 0x37 '7' + {63, 5, 5, 6, 0, -4}, // 0x38 '8' + {67, 5, 5, 6, 0, -4}, // 0x39 '9' + {71, 1, 4, 2, 0, -3}, // 0x3A ':' + {72, 1, 4, 2, 0, -3}, // 0x3B ';' + {73, 3, 5, 4, 0, -4}, // 0x3C '<' + {75, 4, 3, 5, 0, -3}, // 0x3D '=' + {77, 3, 5, 4, 0, -4}, // 0x3E '>' + {79, 5, 5, 6, 0, -4}, // 0x3F '?' + {83, 5, 5, 6, 0, -4}, // 0x40 '@' + {87, 5, 5, 6, 0, -4}, // 0x41 'A' + {91, 5, 5, 6, 0, -4}, // 0x42 'B' + {95, 5, 5, 6, 0, -4}, // 0x43 'C' + {99, 5, 5, 6, 0, -4}, // 0x44 'D' + {103, 5, 5, 6, 0, -4}, // 0x45 'E' + {107, 5, 5, 6, 0, -4}, // 0x46 'F' + {111, 5, 5, 6, 0, -4}, // 0x47 'G' + {115, 5, 5, 6, 0, -4}, // 0x48 'H' + {119, 5, 5, 6, 0, -4}, // 0x49 'I' + {123, 5, 5, 6, 0, -4}, // 0x4A 'J' + {127, 5, 5, 6, 0, -4}, // 0x4B 'K' + {131, 5, 5, 6, 0, -4}, // 0x4C 'L' + {135, 5, 5, 6, 0, -4}, // 0x4D 'M' + {139, 5, 5, 6, 0, -4}, // 0x4E 'N' + {143, 5, 5, 6, 0, -4}, // 0x4F 'O' + {147, 5, 5, 6, 0, -4}, // 0x50 'P' + {151, 5, 5, 6, 0, -4}, // 0x51 'Q' + {155, 5, 5, 6, 0, -4}, // 0x52 'R' + {159, 5, 5, 6, 0, -4}, // 0x53 'S' + {163, 5, 5, 6, 0, -4}, // 0x54 'T' + {167, 5, 5, 6, 0, -4}, // 0x55 'U' + {171, 5, 5, 6, 0, -4}, // 0x56 'V' + {175, 5, 5, 6, 0, -4}, // 0x57 'W' + {179, 5, 5, 6, 0, -4}, // 0x58 'X' + {183, 5, 5, 6, 0, -4}, // 0x59 'Y' + {187, 5, 5, 6, 0, -4}, // 0x5A 'Z' + {191, 2, 5, 3, 0, -4}, // 0x5B '[' + {193, 5, 5, 6, 0, -4}, // 0x5C '\' + {197, 2, 5, 3, 0, -4}, // 0x5D ']' + {199, 3, 2, 4, 0, -4}, // 0x5E '^' + {200, 5, 1, 6, 0, 1}, // 0x5F '_' + {201, 1, 1, 2, 0, -4}, // 0x60 '`' + {202, 4, 4, 5, 0, -3}, // 0x61 'a' + {204, 4, 5, 5, 0, -4}, // 0x62 'b' + {207, 4, 4, 5, 0, -3}, // 0x63 'c' + {209, 4, 5, 5, 0, -4}, // 0x64 'd' + {212, 4, 4, 5, 0, -3}, // 0x65 'e' + {214, 3, 5, 4, 0, -4}, // 0x66 'f' + {216, 4, 5, 5, 0, -3}, // 0x67 'g' + {219, 4, 5, 5, 0, -4}, // 0x68 'h' + {222, 1, 4, 2, 0, -3}, // 0x69 'i' + {223, 2, 5, 3, 0, -3}, // 0x6A 'j' + {225, 4, 5, 5, 0, -4}, // 0x6B 'k' + {228, 1, 5, 2, 0, -4}, // 0x6C 'l' + {229, 5, 4, 6, 0, -3}, // 0x6D 'm' + {232, 4, 4, 5, 0, -3}, // 0x6E 'n' + {234, 4, 4, 5, 0, -3}, // 0x6F 'o' + {236, 4, 5, 5, 0, -3}, // 0x70 'p' + {239, 4, 5, 5, 0, -3}, // 0x71 'q' + {242, 4, 4, 5, 0, -3}, // 0x72 'r' + {244, 4, 4, 5, 0, -3}, // 0x73 's' + {246, 5, 5, 6, 0, -4}, // 0x74 't' + {250, 4, 4, 5, 0, -3}, // 0x75 'u' + {252, 4, 4, 5, 0, -3}, // 0x76 'v' + {254, 5, 4, 6, 0, -3}, // 0x77 'w' + {257, 4, 4, 5, 0, -3}, // 0x78 'x' + {259, 4, 5, 5, 0, -3}, // 0x79 'y' + {262, 4, 4, 5, 0, -3}, // 0x7A 'z' + {264, 3, 5, 4, 0, -4}, // 0x7B '{' + {266, 1, 5, 2, 0, -4}, // 0x7C '|' + {267, 3, 5, 4, 0, -4}, // 0x7D '}' + {269, 5, 3, 6, 0, -3}}; // 0x7E '~' + +const GFXfont Org_01 PROGMEM = {(uint8_t *)Org_01Bitmaps, + (GFXglyph *)Org_01Glyphs, 0x20, 0x7E, 7}; + +// Approx. 943 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/Picopixel.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/Picopixel.h new file mode 100644 index 0000000..463b1b5 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/Picopixel.h @@ -0,0 +1,123 @@ +#pragma once +#include + +// Picopixel by Sebastian Weber. A tiny font +// with all characters within a 6 pixel height. + +const uint8_t PicopixelBitmaps[] PROGMEM = { + 0xE8, 0xB4, 0x57, 0xD5, 0xF5, 0x00, 0x4E, 0x3E, 0x80, 0xA5, 0x4A, 0x4A, + 0x5A, 0x50, 0xC0, 0x6A, 0x40, 0x95, 0x80, 0xAA, 0x80, 0x5D, 0x00, 0x60, + 0xE0, 0x80, 0x25, 0x48, 0x56, 0xD4, 0x75, 0x40, 0xC5, 0x4E, 0xC5, 0x1C, + 0x97, 0x92, 0xF3, 0x1C, 0x53, 0x54, 0xE5, 0x48, 0x55, 0x54, 0x55, 0x94, + 0xA0, 0x46, 0x64, 0xE3, 0x80, 0x98, 0xC5, 0x04, 0x56, 0xC6, 0x57, 0xDA, + 0xD7, 0x5C, 0x72, 0x46, 0xD6, 0xDC, 0xF3, 0xCE, 0xF3, 0x48, 0x72, 0xD4, + 0xB7, 0xDA, 0xF8, 0x24, 0xD4, 0xBB, 0x5A, 0x92, 0x4E, 0x8E, 0xEB, 0x58, + 0x80, 0x9D, 0xB9, 0x90, 0x56, 0xD4, 0xD7, 0x48, 0x56, 0xD4, 0x40, 0xD7, + 0x5A, 0x71, 0x1C, 0xE9, 0x24, 0xB6, 0xD4, 0xB6, 0xA4, 0x8C, 0x6B, 0x55, + 0x00, 0xB5, 0x5A, 0xB5, 0x24, 0xE5, 0x4E, 0xEA, 0xC0, 0x91, 0x12, 0xD5, + 0xC0, 0x54, 0xF0, 0x90, 0xC7, 0xF0, 0x93, 0x5E, 0x71, 0x80, 0x25, 0xDE, + 0x5E, 0x30, 0x6E, 0x80, 0x77, 0x9C, 0x93, 0x5A, 0xB8, 0x45, 0x60, 0x92, + 0xEA, 0xAA, 0x40, 0xD5, 0x6A, 0xD6, 0x80, 0x55, 0x00, 0xD7, 0x40, 0x75, + 0x90, 0xE8, 0x71, 0xE0, 0xBA, 0x40, 0xB5, 0x80, 0xB5, 0x00, 0x8D, 0x54, + 0xAA, 0x80, 0xAC, 0xE0, 0xE5, 0x70, 0x6A, 0x26, 0xFC, 0xC8, 0xAC, 0x5A}; + +const GFXglyph PicopixelGlyphs[] PROGMEM = {{0, 0, 0, 2, 0, 1}, // 0x20 ' ' + {0, 1, 5, 2, 0, -4}, // 0x21 '!' + {1, 3, 2, 4, 0, -4}, // 0x22 '"' + {2, 5, 5, 6, 0, -4}, // 0x23 '#' + {6, 3, 6, 4, 0, -4}, // 0x24 '$' + {9, 3, 5, 4, 0, -4}, // 0x25 '%' + {11, 4, 5, 5, 0, -4}, // 0x26 '&' + {14, 1, 2, 2, 0, -4}, // 0x27 ''' + {15, 2, 5, 3, 0, -4}, // 0x28 '(' + {17, 2, 5, 3, 0, -4}, // 0x29 ')' + {19, 3, 3, 4, 0, -3}, // 0x2A '*' + {21, 3, 3, 4, 0, -3}, // 0x2B '+' + {23, 2, 2, 3, 0, 0}, // 0x2C ',' + {24, 3, 1, 4, 0, -2}, // 0x2D '-' + {25, 1, 1, 2, 0, 0}, // 0x2E '.' + {26, 3, 5, 4, 0, -4}, // 0x2F '/' + {28, 3, 5, 4, 0, -4}, // 0x30 '0' + {30, 2, 5, 3, 0, -4}, // 0x31 '1' + {32, 3, 5, 4, 0, -4}, // 0x32 '2' + {34, 3, 5, 4, 0, -4}, // 0x33 '3' + {36, 3, 5, 4, 0, -4}, // 0x34 '4' + {38, 3, 5, 4, 0, -4}, // 0x35 '5' + {40, 3, 5, 4, 0, -4}, // 0x36 '6' + {42, 3, 5, 4, 0, -4}, // 0x37 '7' + {44, 3, 5, 4, 0, -4}, // 0x38 '8' + {46, 3, 5, 4, 0, -4}, // 0x39 '9' + {48, 1, 3, 2, 0, -3}, // 0x3A ':' + {49, 2, 4, 3, 0, -3}, // 0x3B ';' + {50, 2, 3, 3, 0, -3}, // 0x3C '<' + {51, 3, 3, 4, 0, -3}, // 0x3D '=' + {53, 2, 3, 3, 0, -3}, // 0x3E '>' + {54, 3, 5, 4, 0, -4}, // 0x3F '?' + {56, 3, 5, 4, 0, -4}, // 0x40 '@' + {58, 3, 5, 4, 0, -4}, // 0x41 'A' + {60, 3, 5, 4, 0, -4}, // 0x42 'B' + {62, 3, 5, 4, 0, -4}, // 0x43 'C' + {64, 3, 5, 4, 0, -4}, // 0x44 'D' + {66, 3, 5, 4, 0, -4}, // 0x45 'E' + {68, 3, 5, 4, 0, -4}, // 0x46 'F' + {70, 3, 5, 4, 0, -4}, // 0x47 'G' + {72, 3, 5, 4, 0, -4}, // 0x48 'H' + {74, 1, 5, 2, 0, -4}, // 0x49 'I' + {75, 3, 5, 4, 0, -4}, // 0x4A 'J' + {77, 3, 5, 4, 0, -4}, // 0x4B 'K' + {79, 3, 5, 4, 0, -4}, // 0x4C 'L' + {81, 5, 5, 6, 0, -4}, // 0x4D 'M' + {85, 4, 5, 5, 0, -4}, // 0x4E 'N' + {88, 3, 5, 4, 0, -4}, // 0x4F 'O' + {90, 3, 5, 4, 0, -4}, // 0x50 'P' + {92, 3, 6, 4, 0, -4}, // 0x51 'Q' + {95, 3, 5, 4, 0, -4}, // 0x52 'R' + {97, 3, 5, 4, 0, -4}, // 0x53 'S' + {99, 3, 5, 4, 0, -4}, // 0x54 'T' + {101, 3, 5, 4, 0, -4}, // 0x55 'U' + {103, 3, 5, 4, 0, -4}, // 0x56 'V' + {105, 5, 5, 6, 0, -4}, // 0x57 'W' + {109, 3, 5, 4, 0, -4}, // 0x58 'X' + {111, 3, 5, 4, 0, -4}, // 0x59 'Y' + {113, 3, 5, 4, 0, -4}, // 0x5A 'Z' + {115, 2, 5, 3, 0, -4}, // 0x5B '[' + {117, 3, 5, 4, 0, -4}, // 0x5C '\' + {119, 2, 5, 3, 0, -4}, // 0x5D ']' + {121, 3, 2, 4, 0, -4}, // 0x5E '^' + {122, 4, 1, 4, 0, 1}, // 0x5F '_' + {123, 2, 2, 3, 0, -4}, // 0x60 '`' + {124, 3, 4, 4, 0, -3}, // 0x61 'a' + {126, 3, 5, 4, 0, -4}, // 0x62 'b' + {128, 3, 3, 4, 0, -2}, // 0x63 'c' + {130, 3, 5, 4, 0, -4}, // 0x64 'd' + {132, 3, 4, 4, 0, -3}, // 0x65 'e' + {134, 2, 5, 3, 0, -4}, // 0x66 'f' + {136, 3, 5, 4, 0, -3}, // 0x67 'g' + {138, 3, 5, 4, 0, -4}, // 0x68 'h' + {140, 1, 5, 2, 0, -4}, // 0x69 'i' + {141, 2, 6, 3, 0, -4}, // 0x6A 'j' + {143, 3, 5, 4, 0, -4}, // 0x6B 'k' + {145, 2, 5, 3, 0, -4}, // 0x6C 'l' + {147, 5, 3, 6, 0, -2}, // 0x6D 'm' + {149, 3, 3, 4, 0, -2}, // 0x6E 'n' + {151, 3, 3, 4, 0, -2}, // 0x6F 'o' + {153, 3, 4, 4, 0, -2}, // 0x70 'p' + {155, 3, 4, 4, 0, -2}, // 0x71 'q' + {157, 2, 3, 3, 0, -2}, // 0x72 'r' + {158, 3, 4, 4, 0, -3}, // 0x73 's' + {160, 2, 5, 3, 0, -4}, // 0x74 't' + {162, 3, 3, 4, 0, -2}, // 0x75 'u' + {164, 3, 3, 4, 0, -2}, // 0x76 'v' + {166, 5, 3, 6, 0, -2}, // 0x77 'w' + {168, 3, 3, 4, 0, -2}, // 0x78 'x' + {170, 3, 4, 4, 0, -2}, // 0x79 'y' + {172, 3, 4, 4, 0, -3}, // 0x7A 'z' + {174, 3, 5, 4, 0, -4}, // 0x7B '{' + {176, 1, 6, 2, 0, -4}, // 0x7C '|' + {177, 3, 5, 4, 0, -4}, // 0x7D '}' + {179, 4, 2, 5, 0, -3}}; // 0x7E '~' + +const GFXfont Picopixel PROGMEM = {(uint8_t *)PicopixelBitmaps, + (GFXglyph *)PicopixelGlyphs, 0x20, 0x7E, 7}; + +// Approx. 852 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/Tiny3x3a2pt7b.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/Tiny3x3a2pt7b.h new file mode 100644 index 0000000..5b0ba4a --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/Tiny3x3a2pt7b.h @@ -0,0 +1,133 @@ +#pragma once +#include + +/** +** The FontStruction “Tiny3x3a” +** (https://fontstruct.com/fontstructions/show/670512) by “Michaelangel007” is +** licensed under a Creative Commons Attribution Non-commercial Share Alike +*license +** (http://creativecommons.org/licenses/by-nc-sa/3.0/). +** “Tiny3x3a” was originally cloned (copied) from the FontStruction +** “CHECKER” (https://fontstruct.com/fontstructions/show/2391) by Wolf grant +** Grant, which is licensed under a Creative Commons Attribution Non-commercial +** Share Alike license (http://creativecommons.org/licenses/by-nc-sa/3.0/). +* +* Converted by eadmaster with fontconvert +**/ + +const uint8_t Tiny3x3a2pt7bBitmaps[] PROGMEM = { + 0xC0, 0xB4, 0xBF, 0x80, 0x6B, 0x00, 0xDD, 0x80, 0x59, 0x80, 0x80, 0x64, + 0x98, 0xF0, 0x5D, 0x00, 0xC0, 0xE0, 0x80, 0x2A, 0x00, 0x55, 0x00, 0x94, + 0xC9, 0x80, 0xEF, 0x80, 0xBC, 0x80, 0x6B, 0x00, 0x9F, 0x80, 0xE4, 0x80, + 0x7F, 0x00, 0xFC, 0x80, 0xA0, 0x58, 0x64, 0xE3, 0x80, 0x98, 0xD8, 0xD8, + 0x80, 0x5E, 0x80, 0xDF, 0x80, 0x71, 0x80, 0xD7, 0x00, 0xFB, 0x80, 0xFA, + 0x00, 0xD7, 0x80, 0xBE, 0x80, 0xE0, 0x27, 0x00, 0xBA, 0x80, 0x93, 0x80, + 0xFE, 0x80, 0xF6, 0x80, 0xF7, 0x80, 0xFE, 0x00, 0xF7, 0x00, 0xDE, 0x80, + 0x6B, 0x00, 0xE9, 0x00, 0xB7, 0x80, 0xB5, 0x00, 0xBF, 0x80, 0xAA, 0x80, + 0xA9, 0x00, 0xEB, 0x80, 0xEC, 0x88, 0x80, 0xDC, 0x54, 0xE0, 0x90, 0x70, + 0xBC, 0xF0, 0x7C, 0xB0, 0x68, 0xFC, 0xBC, 0xC0, 0x58, 0x9A, 0x80, 0xA4, + 0xDC, 0xD4, 0xF0, 0xF8, 0xF4, 0xE0, 0x60, 0x59, 0x80, 0xBC, 0xA8, 0xEC, + 0xF0, 0xAC, 0x80, 0x90, 0x79, 0x80, 0xF0, 0xCF, 0x00, 0x78}; + +const GFXglyph Tiny3x3a2pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 4, 0, 1}, // 0x20 ' ' + {0, 1, 2, 3, 1, -2}, // 0x21 '!' + {1, 3, 2, 4, 0, -2}, // 0x22 '"' + {2, 3, 3, 4, 0, -2}, // 0x23 '#' + {4, 3, 3, 4, 0, -2}, // 0x24 '$' + {6, 3, 3, 4, 0, -2}, // 0x25 '%' + {8, 3, 3, 4, 0, -2}, // 0x26 '&' + {10, 1, 1, 3, 1, -2}, // 0x27 ''' + {11, 2, 3, 3, 0, -2}, // 0x28 '(' + {12, 2, 3, 4, 1, -2}, // 0x29 ')' + {13, 2, 2, 4, 1, -2}, // 0x2A '*' + {14, 3, 3, 4, 0, -2}, // 0x2B '+' + {16, 1, 2, 2, 0, 0}, // 0x2C ',' + {17, 3, 1, 4, 0, -1}, // 0x2D '-' + {18, 1, 1, 2, 0, 0}, // 0x2E '.' + {19, 3, 3, 4, 0, -2}, // 0x2F '/' + {21, 3, 3, 4, 0, -2}, // 0x30 '0' + {23, 2, 3, 3, 0, -2}, // 0x31 '1' + {24, 3, 3, 4, 0, -2}, // 0x32 '2' + {26, 3, 3, 4, 0, -2}, // 0x33 '3' + {28, 3, 3, 4, 0, -2}, // 0x34 '4' + {30, 3, 3, 4, 0, -2}, // 0x35 '5' + {32, 3, 3, 4, 0, -2}, // 0x36 '6' + {34, 3, 3, 4, 0, -2}, // 0x37 '7' + {36, 3, 3, 4, 0, -2}, // 0x38 '8' + {38, 3, 3, 4, 0, -2}, // 0x39 '9' + {40, 1, 3, 3, 1, -2}, // 0x3A ':' + {41, 2, 3, 3, 0, -1}, // 0x3B ';' + {42, 2, 3, 3, 0, -2}, // 0x3C '<' + {43, 3, 3, 4, 0, -2}, // 0x3D '=' + {45, 2, 3, 4, 1, -2}, // 0x3E '>' + {46, 2, 3, 4, 1, -2}, // 0x3F '?' + {47, 3, 3, 4, 0, -2}, // 0x40 '@' + {49, 3, 3, 4, 0, -2}, // 0x41 'A' + {51, 3, 3, 4, 0, -2}, // 0x42 'B' + {53, 3, 3, 4, 0, -2}, // 0x43 'C' + {55, 3, 3, 4, 0, -2}, // 0x44 'D' + {57, 3, 3, 4, 0, -2}, // 0x45 'E' + {59, 3, 3, 4, 0, -2}, // 0x46 'F' + {61, 3, 3, 4, 0, -2}, // 0x47 'G' + {63, 3, 3, 4, 0, -2}, // 0x48 'H' + {65, 1, 3, 3, 1, -2}, // 0x49 'I' + {66, 3, 3, 4, 0, -2}, // 0x4A 'J' + {68, 3, 3, 4, 0, -2}, // 0x4B 'K' + {70, 3, 3, 4, 0, -2}, // 0x4C 'L' + {72, 3, 3, 4, 0, -2}, // 0x4D 'M' + {74, 3, 3, 4, 0, -2}, // 0x4E 'N' + {76, 3, 3, 4, 0, -2}, // 0x4F 'O' + {78, 3, 3, 4, 0, -2}, // 0x50 'P' + {80, 3, 3, 4, 0, -2}, // 0x51 'Q' + {82, 3, 3, 4, 0, -2}, // 0x52 'R' + {84, 3, 3, 4, 0, -2}, // 0x53 'S' + {86, 3, 3, 4, 0, -2}, // 0x54 'T' + {88, 3, 3, 4, 0, -2}, // 0x55 'U' + {90, 3, 3, 4, 0, -2}, // 0x56 'V' + {92, 3, 3, 4, 0, -2}, // 0x57 'W' + {94, 3, 3, 4, 0, -2}, // 0x58 'X' + {96, 3, 3, 4, 0, -2}, // 0x59 'Y' + {98, 3, 3, 4, 0, -2}, // 0x5A 'Z' + {100, 2, 3, 3, 0, -2}, // 0x5B '[' + {101, 3, 3, 4, 0, -2}, // 0x5C '\' + {103, 2, 3, 4, 1, -2}, // 0x5D ']' + {104, 3, 2, 4, 0, -2}, // 0x5E '^' + {105, 3, 1, 4, 0, 0}, // 0x5F '_' + {106, 2, 2, 3, 0, -2}, // 0x60 '`' + {107, 2, 2, 3, 0, -1}, // 0x61 'a' + {108, 2, 3, 3, 0, -2}, // 0x62 'b' + {109, 2, 2, 3, 0, -1}, // 0x63 'c' + {110, 2, 3, 3, 0, -2}, // 0x64 'd' + {111, 2, 2, 3, 0, -1}, // 0x65 'e' + {112, 2, 3, 3, 0, -2}, // 0x66 'f' + {113, 2, 3, 3, 0, -1}, // 0x67 'g' + {114, 2, 3, 3, 0, -2}, // 0x68 'h' + {115, 1, 2, 2, 0, -1}, // 0x69 'i' + {116, 2, 3, 3, 0, -1}, // 0x6A 'j' + {117, 3, 3, 4, 0, -2}, // 0x6B 'k' + {119, 2, 3, 3, 0, -2}, // 0x6C 'l' + {120, 3, 2, 4, 0, -1}, // 0x6D 'm' + {121, 3, 2, 4, 0, -1}, // 0x6E 'n' + {122, 2, 2, 3, 0, -1}, // 0x6F 'o' + {123, 2, 3, 3, 0, -1}, // 0x70 'p' + {124, 2, 3, 3, 0, -1}, // 0x71 'q' + {125, 2, 2, 3, 0, -1}, // 0x72 'r' + {126, 2, 2, 3, 0, -1}, // 0x73 's' + {127, 3, 3, 4, 0, -2}, // 0x74 't' + {129, 3, 2, 4, 0, -1}, // 0x75 'u' + {130, 3, 2, 4, 0, -1}, // 0x76 'v' + {131, 3, 2, 4, 0, -1}, // 0x77 'w' + {132, 2, 2, 3, 0, -1}, // 0x78 'x' + {133, 3, 3, 4, 0, -1}, // 0x79 'y' + {135, 2, 2, 3, 0, -1}, // 0x7A 'z' + {136, 3, 3, 4, 0, -2}, // 0x7B '{' + {138, 1, 4, 3, 1, -2}, // 0x7C '|' + {139, 3, 3, 4, 0, -2}, // 0x7D '}' + {141, 3, 2, 4, 0, -2}}; // 0x7E '~' + +const GFXfont Tiny3x3a2pt7b PROGMEM = {(uint8_t *)Tiny3x3a2pt7bBitmaps, + (GFXglyph *)Tiny3x3a2pt7bGlyphs, 0x20, + 0x7E, 4}; + +// Approx. 814 bytes diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/TomThumb.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/TomThumb.h new file mode 100644 index 0000000..2155500 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/Fonts/TomThumb.h @@ -0,0 +1,477 @@ +#pragma once +#include + +/** +** The original 3x5 font is licensed under the 3-clause BSD license: +** +** Copyright 1999 Brian J. Swetland +** Copyright 1999 Vassilii Khachaturov +** Portions (of vt100.c/vt100.h) copyright Dan Marks +** +** All rights reserved. +** +** Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions +** are met: +** 1. Redistributions of source code must retain the above copyright +** notice, this list of conditions, and the following disclaimer. +** 2. 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. +** 3. The name of the authors may not be used to endorse or promote products +** derived from this software without specific prior written permission. +** +** THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. +** +** Modifications to Tom Thumb for improved readability are from Robey Pointer, +** see: +** http://robey.lag.net/2010/01/23/tiny-monospace-font.html +** +** The original author does not have any objection to relicensing of Robey +** Pointer's modifications (in this file) in a more permissive license. See +** the discussion at the above blog, and also here: +** http://opengameart.org/forumtopic/how-to-submit-art-using-the-3-clause-bsd-license +** +** Feb 21, 2016: Conversion from Linux BDF --> Adafruit GFX font, +** with the help of this Python script: +** https://gist.github.com/skelliam/322d421f028545f16f6d +** William Skellenger (williamj@skellenger.net) +** Twitter: @skelliam +** +** Jan 09, 2020: Bitmaps now compressed, to fix the bounding box problem, +** because non-compressed the calculated text width were wrong. +** Andreas Merkle (web@blue-andi.de) +*/ + +#define TOMTHUMB_USE_EXTENDED 0 + +const uint8_t TomThumbBitmaps[] PROGMEM = { + 0x00, /* 0x20 space */ + 0xE8, /* 0x21 exclam */ + 0xB4, /* 0x22 quotedbl */ + 0xBE, 0xFA, /* 0x23 numbersign */ + 0x79, 0xE4, /* 0x24 dollar */ + 0x85, 0x42, /* 0x25 percent */ + 0xDB, 0xD6, /* 0x26 ampersand */ + 0xC0, /* 0x27 quotesingle */ + 0x6A, 0x40, /* 0x28 parenleft */ + 0x95, 0x80, /* 0x29 parenright */ + 0xAA, 0x80, /* 0x2A asterisk */ + 0x5D, 0x00, /* 0x2B plus */ + 0x60, /* 0x2C comma */ + 0xE0, /* 0x2D hyphen */ + 0x80, /* 0x2E period */ + 0x25, 0x48, /* 0x2F slash */ + 0x76, 0xDC, /* 0x30 zero */ + 0x75, 0x40, /* 0x31 one */ + 0xC5, 0x4E, /* 0x32 two */ + 0xC5, 0x1C, /* 0x33 three */ + 0xB7, 0x92, /* 0x34 four */ + 0xF3, 0x1C, /* 0x35 five */ + 0x73, 0xDE, /* 0x36 six */ + 0xE5, 0x48, /* 0x37 seven */ + 0xF7, 0xDE, /* 0x38 eight */ + 0xF7, 0x9C, /* 0x39 nine */ + 0xA0, /* 0x3A colon */ + 0x46, /* 0x3B semicolon */ + 0x2A, 0x22, /* 0x3C less */ + 0xE3, 0x80, /* 0x3D equal */ + 0x88, 0xA8, /* 0x3E greater */ + 0xE5, 0x04, /* 0x3F question */ + 0x57, 0xC6, /* 0x40 at */ + 0x57, 0xDA, /* 0x41 A */ + 0xD7, 0x5C, /* 0x42 B */ + 0x72, 0x46, /* 0x43 C */ + 0xD6, 0xDC, /* 0x44 D */ + 0xF3, 0xCE, /* 0x45 E */ + 0xF3, 0xC8, /* 0x46 F */ + 0x73, 0xD6, /* 0x47 G */ + 0xB7, 0xDA, /* 0x48 H */ + 0xE9, 0x2E, /* 0x49 I */ + 0x24, 0xD4, /* 0x4A J */ + 0xB7, 0x5A, /* 0x4B K */ + 0x92, 0x4E, /* 0x4C L */ + 0xBF, 0xDA, /* 0x4D M */ + 0xBF, 0xFA, /* 0x4E N */ + 0x56, 0xD4, /* 0x4F O */ + 0xD7, 0x48, /* 0x50 P */ + 0x56, 0xF6, /* 0x51 Q */ + 0xD7, 0xEA, /* 0x52 R */ + 0x71, 0x1C, /* 0x53 S */ + 0xE9, 0x24, /* 0x54 T */ + 0xB6, 0xD6, /* 0x55 U */ + 0xB6, 0xA4, /* 0x56 V */ + 0xB7, 0xFA, /* 0x57 W */ + 0xB5, 0x5A, /* 0x58 X */ + 0xB5, 0x24, /* 0x59 Y */ + 0xE5, 0x4E, /* 0x5A Z */ + 0xF2, 0x4E, /* 0x5B bracketleft */ + 0x88, 0x80, /* 0x5C backslash */ + 0xE4, 0x9E, /* 0x5D bracketright */ + 0x54, /* 0x5E asciicircum */ + 0xE0, /* 0x5F underscore */ + 0x90, /* 0x60 grave */ + 0xCE, 0xF0, /* 0x61 a */ + 0x9A, 0xDC, /* 0x62 b */ + 0x72, 0x30, /* 0x63 c */ + 0x2E, 0xD6, /* 0x64 d */ + 0x77, 0x30, /* 0x65 e */ + 0x2B, 0xA4, /* 0x66 f */ + 0x77, 0x94, /* 0x67 g */ + 0x9A, 0xDA, /* 0x68 h */ + 0xB8, /* 0x69 i */ + 0x20, 0x9A, 0x80, /* 0x6A j */ + 0x97, 0x6A, /* 0x6B k */ + 0xC9, 0x2E, /* 0x6C l */ + 0xFF, 0xD0, /* 0x6D m */ + 0xD6, 0xD0, /* 0x6E n */ + 0x56, 0xA0, /* 0x6F o */ + 0xD6, 0xE8, /* 0x70 p */ + 0x76, 0xB2, /* 0x71 q */ + 0x72, 0x40, /* 0x72 r */ + 0x79, 0xE0, /* 0x73 s */ + 0x5D, 0x26, /* 0x74 t */ + 0xB6, 0xB0, /* 0x75 u */ + 0xB7, 0xA0, /* 0x76 v */ + 0xBF, 0xF0, /* 0x77 w */ + 0xA9, 0x50, /* 0x78 x */ + 0xB5, 0x94, /* 0x79 y */ + 0xEF, 0x70, /* 0x7A z */ + 0x6A, 0x26, /* 0x7B braceleft */ + 0xD8, /* 0x7C bar */ + 0xC8, 0xAC, /* 0x7D braceright */ + 0x78, /* 0x7E asciitilde */ +#if (TOMTHUMB_USE_EXTENDED) + 0xB8, /* 0xA1 exclamdown */ + 0x5E, 0x74, /* 0xA2 cent */ + 0x6B, 0xAE, /* 0xA3 sterling */ + 0xAB, 0xAA, /* 0xA4 currency */ + 0xB5, 0x74, /* 0xA5 yen */ + 0xD8, /* 0xA6 brokenbar */ + 0x6A, 0xAC, /* 0xA7 section */ + 0xA0, /* 0xA8 dieresis */ + 0x71, 0x80, /* 0xA9 copyright */ + 0x77, 0x8E, /* 0xAA ordfeminine */ + 0x64, /* 0xAB guillemotleft */ + 0xE4, /* 0xAC logicalnot */ + 0xC0, /* 0xAD softhyphen */ + 0xDA, 0x80, /* 0xAE registered */ + 0xE0, /* 0xAF macron */ + 0x55, 0x00, /* 0xB0 degree */ + 0x5D, 0x0E, /* 0xB1 plusminus */ + 0xC9, 0x80, /* 0xB2 twosuperior */ + 0xEF, 0x80, /* 0xB3 threesuperior */ + 0x60, /* 0xB4 acute */ + 0xB6, 0xE8, /* 0xB5 mu */ + 0x75, 0xB6, /* 0xB6 paragraph */ + 0xFF, 0x80, /* 0xB7 periodcentered */ + 0x47, 0x00, /* 0xB8 cedilla */ + 0xE0, /* 0xB9 onesuperior */ + 0x55, 0x0E, /* 0xBA ordmasculine */ + 0x98, /* 0xBB guillemotright */ + 0x90, 0x32, /* 0xBC onequarter */ + 0x90, 0x66, /* 0xBD onehalf */ + 0xD8, 0x32, /* 0xBE threequarters */ + 0x41, 0x4E, /* 0xBF questiondown */ + 0x45, 0x7A, /* 0xC0 Agrave */ + 0x51, 0x7A, /* 0xC1 Aacute */ + 0xE1, 0x7A, /* 0xC2 Acircumflex */ + 0x79, 0x7A, /* 0xC3 Atilde */ + 0xAA, 0xFA, /* 0xC4 Adieresis */ + 0xDA, 0xFA, /* 0xC5 Aring */ + 0x7B, 0xEE, /* 0xC6 AE */ + 0x72, 0x32, 0x80, /* 0xC7 Ccedilla */ + 0x47, 0xEE, /* 0xC8 Egrave */ + 0x53, 0xEE, /* 0xC9 Eacute */ + 0xE3, 0xEE, /* 0xCA Ecircumflex */ + 0xA3, 0xEE, /* 0xCB Edieresis */ + 0x47, 0xAE, /* 0xCC Igrave */ + 0x53, 0xAE, /* 0xCD Iacute */ + 0xE3, 0xAE, /* 0xCE Icircumflex */ + 0xA3, 0xAE, /* 0xCF Idieresis */ + 0xD7, 0xDC, /* 0xD0 Eth */ + 0xCE, 0xFA, /* 0xD1 Ntilde */ + 0x47, 0xDE, /* 0xD2 Ograve */ + 0x53, 0xDE, /* 0xD3 Oacute */ + 0xE3, 0xDE, /* 0xD4 Ocircumflex */ + 0xCF, 0xDE, /* 0xD5 Otilde */ + 0xA3, 0xDE, /* 0xD6 Odieresis */ + 0xAA, 0x80, /* 0xD7 multiply */ + 0x77, 0xDC, /* 0xD8 Oslash */ + 0x8A, 0xDE, /* 0xD9 Ugrave */ + 0x2A, 0xDE, /* 0xDA Uacute */ + 0xE2, 0xDE, /* 0xDB Ucircumflex */ + 0xA2, 0xDE, /* 0xDC Udieresis */ + 0x2A, 0xF4, /* 0xDD Yacute */ + 0x9E, 0xF8, /* 0xDE Thorn */ + 0x77, 0x5D, 0x00, /* 0xDF germandbls */ + 0x45, 0xDE, /* 0xE0 agrave */ + 0x51, 0xDE, /* 0xE1 aacute */ + 0xE1, 0xDE, /* 0xE2 acircumflex */ + 0x79, 0xDE, /* 0xE3 atilde */ + 0xA1, 0xDE, /* 0xE4 adieresis */ + 0x6D, 0xDE, /* 0xE5 aring */ + 0x7F, 0xE0, /* 0xE6 ae */ + 0x71, 0x94, /* 0xE7 ccedilla */ + 0x45, 0xF6, /* 0xE8 egrave */ + 0x51, 0xF6, /* 0xE9 eacute */ + 0xE1, 0xF6, /* 0xEA ecircumflex */ + 0xA1, 0xF6, /* 0xEB edieresis */ + 0x9A, 0x80, /* 0xEC igrave */ + 0x65, 0x40, /* 0xED iacute */ + 0xE1, 0x24, /* 0xEE icircumflex */ + 0xA1, 0x24, /* 0xEF idieresis */ + 0x79, 0xD6, /* 0xF0 eth */ + 0xCF, 0x5A, /* 0xF1 ntilde */ + 0x45, 0x54, /* 0xF2 ograve */ + 0x51, 0x54, /* 0xF3 oacute */ + 0xE1, 0x54, /* 0xF4 ocircumflex */ + 0xCD, 0x54, /* 0xF5 otilde */ + 0xA1, 0x54, /* 0xF6 odieresis */ + 0x43, 0x84, /* 0xF7 divide */ + 0x7E, 0xE0, /* 0xF8 oslash */ + 0x8A, 0xD6, /* 0xF9 ugrave */ + 0x2A, 0xD6, /* 0xFA uacute */ + 0xE2, 0xD6, /* 0xFB ucircumflex */ + 0xA2, 0xD6, /* 0xFC udieresis */ + 0x2A, 0xB2, 0x80, /* 0xFD yacute */ + 0x9A, 0xE8, /* 0xFE thorn */ + 0xA2, 0xB2, 0x80, /* 0xFF ydieresis */ + 0x00, /* 0x11D gcircumflex */ + 0x7B, 0xE6, /* 0x152 OE */ + 0x7F, 0x70, /* 0x153 oe */ + 0xAF, 0x3C, /* 0x160 Scaron */ + 0xAF, 0x3C, /* 0x161 scaron */ + 0xA2, 0xA4, /* 0x178 Ydieresis */ + 0xBD, 0xEE, /* 0x17D Zcaron */ + 0xBD, 0xEE, /* 0x17E zcaron */ + 0x00, /* 0xEA4 uni0EA4 */ + 0x00, /* 0x13A0 uni13A0 */ + 0x80, /* 0x2022 bullet */ + 0xA0, /* 0x2026 ellipsis */ + 0x7F, 0xE6, /* 0x20AC Euro */ + 0xEA, 0xAA, 0xE0, /* 0xFFFD uniFFFD */ +#endif /* (TOMTHUMB_USE_EXTENDED) */ +}; + +/* {offset, width, height, advance cursor, x offset, y offset} */ +const GFXglyph TomThumbGlyphs[] PROGMEM = { + {0, 1, 1, 2, 0, -5}, /* 0x20 space */ + {1, 1, 5, 2, 0, -5}, /* 0x21 exclam */ + {2, 3, 2, 4, 0, -5}, /* 0x22 quotedbl */ + {3, 3, 5, 4, 0, -5}, /* 0x23 numbersign */ + {5, 3, 5, 4, 0, -5}, /* 0x24 dollar */ + {7, 3, 5, 4, 0, -5}, /* 0x25 percent */ + {9, 3, 5, 4, 0, -5}, /* 0x26 ampersand */ + {11, 1, 2, 2, 0, -5}, /* 0x27 quotesingle */ + {12, 2, 5, 3, 0, -5}, /* 0x28 parenleft */ + {14, 2, 5, 3, 0, -5}, /* 0x29 parenright */ + {16, 3, 3, 4, 0, -5}, /* 0x2A asterisk */ + {18, 3, 3, 4, 0, -4}, /* 0x2B plus */ + {20, 2, 2, 3, 0, -2}, /* 0x2C comma */ + {21, 3, 1, 4, 0, -3}, /* 0x2D hyphen */ + {22, 1, 1, 2, 0, -1}, /* 0x2E period */ + {23, 3, 5, 4, 0, -5}, /* 0x2F slash */ + {25, 3, 5, 4, 0, -5}, /* 0x30 zero */ + {27, 2, 5, 3, 0, -5}, /* 0x31 one */ + {29, 3, 5, 4, 0, -5}, /* 0x32 two */ + {31, 3, 5, 4, 0, -5}, /* 0x33 three */ + {33, 3, 5, 4, 0, -5}, /* 0x34 four */ + {35, 3, 5, 4, 0, -5}, /* 0x35 five */ + {37, 3, 5, 4, 0, -5}, /* 0x36 six */ + {39, 3, 5, 4, 0, -5}, /* 0x37 seven */ + {41, 3, 5, 4, 0, -5}, /* 0x38 eight */ + {43, 3, 5, 4, 0, -5}, /* 0x39 nine */ + {45, 1, 3, 2, 0, -4}, /* 0x3A colon */ + {46, 2, 4, 3, 0, -4}, /* 0x3B semicolon */ + {47, 3, 5, 4, 0, -5}, /* 0x3C less */ + {49, 3, 3, 4, 0, -4}, /* 0x3D equal */ + {51, 3, 5, 4, 0, -5}, /* 0x3E greater */ + {53, 3, 5, 4, 0, -5}, /* 0x3F question */ + {55, 3, 5, 4, 0, -5}, /* 0x40 at */ + {57, 3, 5, 4, 0, -5}, /* 0x41 A */ + {59, 3, 5, 4, 0, -5}, /* 0x42 B */ + {61, 3, 5, 4, 0, -5}, /* 0x43 C */ + {63, 3, 5, 4, 0, -5}, /* 0x44 D */ + {65, 3, 5, 4, 0, -5}, /* 0x45 E */ + {67, 3, 5, 4, 0, -5}, /* 0x46 F */ + {69, 3, 5, 4, 0, -5}, /* 0x47 G */ + {71, 3, 5, 4, 0, -5}, /* 0x48 H */ + {73, 3, 5, 4, 0, -5}, /* 0x49 I */ + {75, 3, 5, 4, 0, -5}, /* 0x4A J */ + {77, 3, 5, 4, 0, -5}, /* 0x4B K */ + {79, 3, 5, 4, 0, -5}, /* 0x4C L */ + {81, 3, 5, 4, 0, -5}, /* 0x4D M */ + {83, 3, 5, 4, 0, -5}, /* 0x4E N */ + {85, 3, 5, 4, 0, -5}, /* 0x4F O */ + {87, 3, 5, 4, 0, -5}, /* 0x50 P */ + {89, 3, 5, 4, 0, -5}, /* 0x51 Q */ + {91, 3, 5, 4, 0, -5}, /* 0x52 R */ + {93, 3, 5, 4, 0, -5}, /* 0x53 S */ + {95, 3, 5, 4, 0, -5}, /* 0x54 T */ + {97, 3, 5, 4, 0, -5}, /* 0x55 U */ + {99, 3, 5, 4, 0, -5}, /* 0x56 V */ + {101, 3, 5, 4, 0, -5}, /* 0x57 W */ + {103, 3, 5, 4, 0, -5}, /* 0x58 X */ + {105, 3, 5, 4, 0, -5}, /* 0x59 Y */ + {107, 3, 5, 4, 0, -5}, /* 0x5A Z */ + {109, 3, 5, 4, 0, -5}, /* 0x5B bracketleft */ + {111, 3, 3, 4, 0, -4}, /* 0x5C backslash */ + {113, 3, 5, 4, 0, -5}, /* 0x5D bracketright */ + {115, 3, 2, 4, 0, -5}, /* 0x5E asciicircum */ + {116, 3, 1, 4, 0, -1}, /* 0x5F underscore */ + {117, 2, 2, 3, 0, -5}, /* 0x60 grave */ + {118, 3, 4, 4, 0, -4}, /* 0x61 a */ + {120, 3, 5, 4, 0, -5}, /* 0x62 b */ + {122, 3, 4, 4, 0, -4}, /* 0x63 c */ + {124, 3, 5, 4, 0, -5}, /* 0x64 d */ + {126, 3, 4, 4, 0, -4}, /* 0x65 e */ + {128, 3, 5, 4, 0, -5}, /* 0x66 f */ + {130, 3, 5, 4, 0, -4}, /* 0x67 g */ + {132, 3, 5, 4, 0, -5}, /* 0x68 h */ + {134, 1, 5, 2, 0, -5}, /* 0x69 i */ + {135, 3, 6, 4, 0, -5}, /* 0x6A j */ + {138, 3, 5, 4, 0, -5}, /* 0x6B k */ + {140, 3, 5, 4, 0, -5}, /* 0x6C l */ + {142, 3, 4, 4, 0, -4}, /* 0x6D m */ + {144, 3, 4, 4, 0, -4}, /* 0x6E n */ + {146, 3, 4, 4, 0, -4}, /* 0x6F o */ + {148, 3, 5, 4, 0, -4}, /* 0x70 p */ + {150, 3, 5, 4, 0, -4}, /* 0x71 q */ + {152, 3, 4, 4, 0, -4}, /* 0x72 r */ + {154, 3, 4, 4, 0, -4}, /* 0x73 s */ + {156, 3, 5, 4, 0, -5}, /* 0x74 t */ + {158, 3, 4, 4, 0, -4}, /* 0x75 u */ + {160, 3, 4, 4, 0, -4}, /* 0x76 v */ + {162, 3, 4, 4, 0, -4}, /* 0x77 w */ + {164, 3, 4, 4, 0, -4}, /* 0x78 x */ + {166, 3, 5, 4, 0, -4}, /* 0x79 y */ + {168, 3, 4, 4, 0, -4}, /* 0x7A z */ + {170, 3, 5, 4, 0, -5}, /* 0x7B braceleft */ + {172, 1, 5, 2, 0, -5}, /* 0x7C bar */ + {173, 3, 5, 4, 0, -5}, /* 0x7D braceright */ + {175, 3, 2, 4, 0, -5}, /* 0x7E asciitilde */ +#if (TOMTHUMB_USE_EXTENDED) + {176, 1, 5, 2, 0, -5}, /* 0xA1 exclamdown */ + {177, 3, 5, 4, 0, -5}, /* 0xA2 cent */ + {179, 3, 5, 4, 0, -5}, /* 0xA3 sterling */ + {181, 3, 5, 4, 0, -5}, /* 0xA4 currency */ + {183, 3, 5, 4, 0, -5}, /* 0xA5 yen */ + {185, 1, 5, 2, 0, -5}, /* 0xA6 brokenbar */ + {186, 3, 5, 4, 0, -5}, /* 0xA7 section */ + {188, 3, 1, 4, 0, -5}, /* 0xA8 dieresis */ + {189, 3, 3, 4, 0, -5}, /* 0xA9 copyright */ + {191, 3, 5, 4, 0, -5}, /* 0xAA ordfeminine */ + {193, 2, 3, 3, 0, -5}, /* 0xAB guillemotleft */ + {194, 3, 2, 4, 0, -4}, /* 0xAC logicalnot */ + {195, 2, 1, 3, 0, -3}, /* 0xAD softhyphen */ + {196, 3, 3, 4, 0, -5}, /* 0xAE registered */ + {198, 3, 1, 4, 0, -5}, /* 0xAF macron */ + {199, 3, 3, 4, 0, -5}, /* 0xB0 degree */ + {201, 3, 5, 4, 0, -5}, /* 0xB1 plusminus */ + {203, 3, 3, 4, 0, -5}, /* 0xB2 twosuperior */ + {205, 3, 3, 4, 0, -5}, /* 0xB3 threesuperior */ + {207, 2, 2, 3, 0, -5}, /* 0xB4 acute */ + {208, 3, 5, 4, 0, -5}, /* 0xB5 mu */ + {210, 3, 5, 4, 0, -5}, /* 0xB6 paragraph */ + {212, 3, 3, 4, 0, -4}, /* 0xB7 periodcentered */ + {214, 3, 3, 4, 0, -3}, /* 0xB8 cedilla */ + {216, 1, 3, 2, 0, -5}, /* 0xB9 onesuperior */ + {217, 3, 5, 4, 0, -5}, /* 0xBA ordmasculine */ + {219, 2, 3, 3, 0, -5}, /* 0xBB guillemotright */ + {220, 3, 5, 4, 0, -5}, /* 0xBC onequarter */ + {222, 3, 5, 4, 0, -5}, /* 0xBD onehalf */ + {224, 3, 5, 4, 0, -5}, /* 0xBE threequarters */ + {226, 3, 5, 4, 0, -5}, /* 0xBF questiondown */ + {228, 3, 5, 4, 0, -5}, /* 0xC0 Agrave */ + {230, 3, 5, 4, 0, -5}, /* 0xC1 Aacute */ + {232, 3, 5, 4, 0, -5}, /* 0xC2 Acircumflex */ + {234, 3, 5, 4, 0, -5}, /* 0xC3 Atilde */ + {236, 3, 5, 4, 0, -5}, /* 0xC4 Adieresis */ + {238, 3, 5, 4, 0, -5}, /* 0xC5 Aring */ + {240, 3, 5, 4, 0, -5}, /* 0xC6 AE */ + {242, 3, 6, 4, 0, -5}, /* 0xC7 Ccedilla */ + {245, 3, 5, 4, 0, -5}, /* 0xC8 Egrave */ + {247, 3, 5, 4, 0, -5}, /* 0xC9 Eacute */ + {249, 3, 5, 4, 0, -5}, /* 0xCA Ecircumflex */ + {251, 3, 5, 4, 0, -5}, /* 0xCB Edieresis */ + {253, 3, 5, 4, 0, -5}, /* 0xCC Igrave */ + {255, 3, 5, 4, 0, -5}, /* 0xCD Iacute */ + {257, 3, 5, 4, 0, -5}, /* 0xCE Icircumflex */ + {259, 3, 5, 4, 0, -5}, /* 0xCF Idieresis */ + {261, 3, 5, 4, 0, -5}, /* 0xD0 Eth */ + {263, 3, 5, 4, 0, -5}, /* 0xD1 Ntilde */ + {265, 3, 5, 4, 0, -5}, /* 0xD2 Ograve */ + {267, 3, 5, 4, 0, -5}, /* 0xD3 Oacute */ + {269, 3, 5, 4, 0, -5}, /* 0xD4 Ocircumflex */ + {271, 3, 5, 4, 0, -5}, /* 0xD5 Otilde */ + {273, 3, 5, 4, 0, -5}, /* 0xD6 Odieresis */ + {275, 3, 3, 4, 0, -4}, /* 0xD7 multiply */ + {277, 3, 5, 4, 0, -5}, /* 0xD8 Oslash */ + {279, 3, 5, 4, 0, -5}, /* 0xD9 Ugrave */ + {281, 3, 5, 4, 0, -5}, /* 0xDA Uacute */ + {283, 3, 5, 4, 0, -5}, /* 0xDB Ucircumflex */ + {285, 3, 5, 4, 0, -5}, /* 0xDC Udieresis */ + {287, 3, 5, 4, 0, -5}, /* 0xDD Yacute */ + {289, 3, 5, 4, 0, -5}, /* 0xDE Thorn */ + {291, 3, 6, 4, 0, -5}, /* 0xDF germandbls */ + {294, 3, 5, 4, 0, -5}, /* 0xE0 agrave */ + {296, 3, 5, 4, 0, -5}, /* 0xE1 aacute */ + {298, 3, 5, 4, 0, -5}, /* 0xE2 acircumflex */ + {300, 3, 5, 4, 0, -5}, /* 0xE3 atilde */ + {302, 3, 5, 4, 0, -5}, /* 0xE4 adieresis */ + {304, 3, 5, 4, 0, -5}, /* 0xE5 aring */ + {306, 3, 4, 4, 0, -4}, /* 0xE6 ae */ + {308, 3, 5, 4, 0, -4}, /* 0xE7 ccedilla */ + {310, 3, 5, 4, 0, -5}, /* 0xE8 egrave */ + {312, 3, 5, 4, 0, -5}, /* 0xE9 eacute */ + {314, 3, 5, 4, 0, -5}, /* 0xEA ecircumflex */ + {316, 3, 5, 4, 0, -5}, /* 0xEB edieresis */ + {318, 2, 5, 3, 0, -5}, /* 0xEC igrave */ + {320, 2, 5, 3, 0, -5}, /* 0xED iacute */ + {322, 3, 5, 4, 0, -5}, /* 0xEE icircumflex */ + {324, 3, 5, 4, 0, -5}, /* 0xEF idieresis */ + {326, 3, 5, 4, 0, -5}, /* 0xF0 eth */ + {328, 3, 5, 4, 0, -5}, /* 0xF1 ntilde */ + {330, 3, 5, 4, 0, -5}, /* 0xF2 ograve */ + {332, 3, 5, 4, 0, -5}, /* 0xF3 oacute */ + {334, 3, 5, 4, 0, -5}, /* 0xF4 ocircumflex */ + {336, 3, 5, 4, 0, -5}, /* 0xF5 otilde */ + {338, 3, 5, 4, 0, -5}, /* 0xF6 odieresis */ + {340, 3, 5, 4, 0, -5}, /* 0xF7 divide */ + {342, 3, 4, 4, 0, -4}, /* 0xF8 oslash */ + {344, 3, 5, 4, 0, -5}, /* 0xF9 ugrave */ + {346, 3, 5, 4, 0, -5}, /* 0xFA uacute */ + {348, 3, 5, 4, 0, -5}, /* 0xFB ucircumflex */ + {350, 3, 5, 4, 0, -5}, /* 0xFC udieresis */ + {352, 3, 6, 4, 0, -5}, /* 0xFD yacute */ + {355, 3, 5, 4, 0, -4}, /* 0xFE thorn */ + {357, 3, 6, 4, 0, -5}, /* 0xFF ydieresis */ + {360, 1, 1, 2, 0, -1}, /* 0x11D gcircumflex */ + {361, 3, 5, 4, 0, -5}, /* 0x152 OE */ + {363, 3, 4, 4, 0, -4}, /* 0x153 oe */ + {365, 3, 5, 4, 0, -5}, /* 0x160 Scaron */ + {367, 3, 5, 4, 0, -5}, /* 0x161 scaron */ + {369, 3, 5, 4, 0, -5}, /* 0x178 Ydieresis */ + {371, 3, 5, 4, 0, -5}, /* 0x17D Zcaron */ + {373, 3, 5, 4, 0, -5}, /* 0x17E zcaron */ + {375, 1, 1, 2, 0, -1}, /* 0xEA4 uni0EA4 */ + {376, 1, 1, 2, 0, -1}, /* 0x13A0 uni13A0 */ + {377, 1, 1, 2, 0, -3}, /* 0x2022 bullet */ + {378, 3, 1, 4, 0, -1}, /* 0x2026 ellipsis */ + {379, 3, 5, 4, 0, -5}, /* 0x20AC Euro */ + {381, 4, 5, 5, 0, -5}, /* 0xFFFD uniFFFD */ +#endif /* (TOMTHUMB_USE_EXTENDED) */ +}; + +const GFXfont TomThumb PROGMEM = {(uint8_t *)TomThumbBitmaps, + (GFXglyph *)TomThumbGlyphs, 0x20, 0x7E, 6}; diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/README.md b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/README.md new file mode 100644 index 0000000..6f36460 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/README.md @@ -0,0 +1,47 @@ +# Adafruit GFX Library ![Build Status](https://github.com/adafruit/Adafruit-GFX-Library/workflows/Arduino%20Library%20CI/badge.svg) + +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 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 must be included in any redistribution. + +Recent Arduino IDE releases include the Library Manager for easy installation. Otherwise, to download, click the DOWNLOAD ZIP button, uncompress and rename the uncompressed folder Adafruit_GFX. Confirm that the Adafruit_GFX folder contains Adafruit_GFX.cpp and Adafruit_GFX.h. Place the Adafruit_GFX library folder your ArduinoSketchFolder/Libraries/ folder. You may need to create the Libraries subfolder if its your first library. Restart the IDE. + +**You will also need to install the latest Adafruit BusIO library.** Search for "Adafruit BusIO" in the library manager, or install by hand from https://github.com/adafruit/Adafruit_BusIO + +# Useful Resources + +- Image2Code: This is a handy Java GUI utility to convert a BMP file into the array code necessary to display the image with the drawBitmap function. Check out the code at ehubin's GitHub repository: https://github.com/ehubin/Adafruit-GFX-Library/tree/master/Img2Code + +- drawXBitmap function: You can use the GIMP photo editor to save a .xbm file and use the array saved in the file to draw a bitmap with the drawXBitmap function. See the pull request here for more details: https://github.com/adafruit/Adafruit-GFX-Library/pull/31 + +- 'Fonts' folder contains bitmap fonts for use with recent (1.1 and later) Adafruit_GFX. 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. + +- 'fontconvert' folder contains a command-line tool for converting TTF fonts to Adafruit_GFX header format. + +- You can also use [this GFX Font Customiser tool](https://github.com/tchapi/Adafruit-GFX-Font-Customiser) (_web version [here](https://tchapi.github.io/Adafruit-GFX-Font-Customiser/)_) to customize or correct the output from [fontconvert](https://github.com/adafruit/Adafruit-GFX-Library/tree/master/fontconvert), and create fonts with only a subset of characters to optimize size. + +--- + +### Roadmap + +The PRIME DIRECTIVE is to maintain backward compatibility with existing Arduino sketches -- many are hosted elsewhere and don't track changes here, some are in print and can never be changed! This "little" library has grown organically over time and sometimes we paint ourselves into a design corner and just have to live with it or add progressively more ungainly workarounds. + +**We are grateful for everyone's contributions, but pull requests for the following will NOT be merged:** + +- Additional or incompatible font formats (see Prime Directive above). There are already two formats and the code is quite bloaty there as it is. This also creates liabilities for tools and documentation. What's there isn't perfect but it does the job. + +- Additional or incompatible bitmap formats, for similar reasons. It's getting messy. + +- Adding background color to custom fonts to erase prior screen contents. The ONLY acceptable methods are to clear the area with a filled rect, or (to avoid flicker) draw text into a GFXcanvas1 and copy to screen with drawBitmap() w/background color. This is on purpose and by design. We've discussed this. Glyphs can overlap. + +- Scrolling, whether hardware- or software-based. Such implementations tend to rely on hardware-specific features (not universally available), read access to the screen's framebuffer (ditto) and/or the addition of virtual functions in GFX which them must be added in *every* subclass, of which there are many. The GFX API is largely "set" at this point and this is just a limitation we live with now. + +- Please don't reformat code for the sake of reformatting code. The resulting large "visual diff" makes it impossible to untangle actual bug fixes from merely rearranged lines. clang-format will be the final arbiter. + +- Please no more pentagram-drawing PRs. Any oddly-specific drawing functions can go in your own code and aren't helpful in a library context. + +If you *must* have one of these features, consider creating a fork with the features required for your project...it's easy to keep synced with the upstream code. diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/component.mk b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/component.mk new file mode 100644 index 0000000..049f190 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/component.mk @@ -0,0 +1 @@ +COMPONENT_ADD_INCLUDEDIRS = . diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/examples/GFXcanvas/GFXcanvas.ino b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/examples/GFXcanvas/GFXcanvas.ino new file mode 100644 index 0000000..d4e3370 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/examples/GFXcanvas/GFXcanvas.ino @@ -0,0 +1,113 @@ +/*** +This example is intended to demonstrate the use of getPixel() versus +getRawPixel() and the fast horizontal and vertical drawing routines +in the GFXcanvas family of classes, + +When using the GFXcanvas* classes as the image buffer for a hardware driver, +there is a need to get individual pixel color values at given physical +coordinates. Rather than subclasses or client classes call getBuffer() and +reinterpret the byte layout of the buffer, two methods are added to each of the +GFXcanvas* classes that allow fetching of specific pixel values. + + * getPixel(x, y) : Gets the pixel color value at the rotated coordinates in +the image. + * getRawPixel(x,y) : Gets the pixel color value at the unrotated coordinates +in the image. This is useful for getting the pixel value to map to a hardware +pixel location. This method was made protected as only the hardware driver +should be accessing it. + +The GFXcanvas*SerialDemo classes in this example will print to Serial the +contents of the underlying GFXcanvas buffer in both the current rotated layout +and the underlying physical layout. +***/ + +#include "GFXcanvasSerialDemo.h" +#include + +void setup() { + Serial.begin(115200); + + // first create a rectangular GFXcanvas8SerialDemo object and draw to it + GFXcanvas8SerialDemo demo8(21, 11); + + demo8.fillScreen(0x00); + demo8.setRotation(1); // now canvas is 11x21 + demo8.fillCircle(5, 10, 5, 0xAA); + demo8.writeFastHLine(0, 0, 11, 0x11); + demo8.writeFastHLine(10, 10, -11, 0x22); + demo8.writeFastHLine(0, 20, 11, 0x33); + demo8.writeFastVLine(0, 0, 21, 0x44); + demo8.writeFastVLine(10, 20, -21, 0x55); + + Serial.println("Demonstrating GFXcanvas rotated and raw pixels.\n"); + + // print it out rotated + + Serial.println("The canvas's content in the rotation of '0':\n"); + demo8.setRotation(0); + demo8.print(true); + Serial.println("\n"); + + Serial.println("The canvas's content in the rotation of '1' (which is what " + "it was drawn in):\n"); + demo8.setRotation(1); + demo8.print(true); + Serial.println("\n"); + + Serial.println("The canvas's content in the rotation of '2':\n"); + demo8.setRotation(2); + demo8.print(true); + Serial.println("\n"); + + Serial.println("The canvas's content in the rotation of '3':\n"); + demo8.setRotation(3); + demo8.print(true); + Serial.println("\n"); + + // print it out unrotated + Serial.println("The canvas's content in it's raw, physical layout:\n"); + demo8.print(false); + Serial.println("\n"); + + // Demonstrate GFXcanvas1SerialDemo + + GFXcanvas1SerialDemo demo1(21, 11); + demo1.fillScreen(0); + demo1.setRotation(0); + demo1.writeFastHLine(0, 0, 9, 1); + demo1.setRotation(1); + demo1.writeFastHLine(0, 0, 9, 1); + demo1.setRotation(2); + demo1.writeFastHLine(0, 0, 9, 1); + demo1.setRotation(3); + demo1.writeFastHLine(0, 0, 9, 1); + demo1.setRotation(1); + demo1.fillRect(3, 8, 5, 5, 1); + + Serial.println("\nThe GFXcanvas1 raw content after drawing a fast horizontal " + "line in each rotation:\n"); + demo1.print(false); + Serial.println("\n"); + + // Demonstrate GFXcanvas16SerialDemo + + GFXcanvas16SerialDemo demo16(21, 11); + demo16.fillScreen(0); + demo16.setRotation(0); + demo16.writeFastHLine(0, 0, 9, 0x1111); + demo16.setRotation(1); + demo16.writeFastHLine(0, 0, 9, 0x2222); + demo16.setRotation(2); + demo16.writeFastHLine(0, 0, 9, 0x3333); + demo16.setRotation(3); + demo16.writeFastHLine(0, 0, 9, 0x4444); + demo16.setRotation(1); + demo16.fillRect(3, 8, 5, 5, 0x8888); + + Serial.println("\nThe GFXcanvas16 raw content after drawing a fast " + "horizontal line in each rotation:\n"); + demo16.print(false); + Serial.println("\n"); +} + +void loop() {} diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/examples/GFXcanvas/GFXcanvasSerialDemo.cpp b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/examples/GFXcanvas/GFXcanvasSerialDemo.cpp new file mode 100644 index 0000000..ed83a96 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/examples/GFXcanvas/GFXcanvasSerialDemo.cpp @@ -0,0 +1,92 @@ +#include "GFXcanvasSerialDemo.h" +#include + +GFXcanvas1SerialDemo::GFXcanvas1SerialDemo(uint16_t w, uint16_t h) + : GFXcanvas1(w, h) {} + +void GFXcanvas1SerialDemo::print(bool rotated) { + char pixel_buffer[8]; + uint16_t width, height; + + if (rotated) { + width = this->width(); + height = this->height(); + } else { + width = this->WIDTH; + height = this->HEIGHT; + } + + for (uint16_t y = 0; y < height; y++) { + for (uint16_t x = 0; x < width; x++) { + bool pixel; + if (rotated) { + pixel = this->getPixel(x, y); + } else { + pixel = this->getRawPixel(x, y); + } + sprintf(pixel_buffer, " %d", pixel); + Serial.print(pixel_buffer); + } + Serial.print("\n"); + } +} + +GFXcanvas8SerialDemo::GFXcanvas8SerialDemo(uint16_t w, uint16_t h) + : GFXcanvas8(w, h) {} + +void GFXcanvas8SerialDemo::print(bool rotated) { + char pixel_buffer[8]; + uint16_t width, height; + + if (rotated) { + width = this->width(); + height = this->height(); + } else { + width = this->WIDTH; + height = this->HEIGHT; + } + + for (uint16_t y = 0; y < height; y++) { + for (uint16_t x = 0; x < width; x++) { + uint8_t pixel; + if (rotated) { + pixel = this->getPixel(x, y); + } else { + pixel = this->getRawPixel(x, y); + } + sprintf(pixel_buffer, " %02x", pixel); + Serial.print(pixel_buffer); + } + Serial.print("\n"); + } +} + +GFXcanvas16SerialDemo::GFXcanvas16SerialDemo(uint16_t w, uint16_t h) + : GFXcanvas16(w, h) {} + +void GFXcanvas16SerialDemo::print(bool rotated) { + char pixel_buffer[8]; + uint16_t width, height; + + if (rotated) { + width = this->width(); + height = this->height(); + } else { + width = this->WIDTH; + height = this->HEIGHT; + } + + for (uint16_t y = 0; y < height; y++) { + for (uint16_t x = 0; x < width; x++) { + uint16_t pixel; + if (rotated) { + pixel = this->getPixel(x, y); + } else { + pixel = this->getRawPixel(x, y); + } + sprintf(pixel_buffer, " %04x", pixel); + Serial.print(pixel_buffer); + } + Serial.print("\n"); + } +} diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/examples/GFXcanvas/GFXcanvasSerialDemo.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/examples/GFXcanvas/GFXcanvasSerialDemo.h new file mode 100644 index 0000000..80589d9 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/examples/GFXcanvas/GFXcanvasSerialDemo.h @@ -0,0 +1,65 @@ +#ifndef __GFXcanvasSerialDemo__ +#define __GFXcanvasSerialDemo__ +#include + +/**********************************************************************/ +/*! + @brief Demonstrates using the GFXconvas classes as the backing store + for a device driver. +*/ +/**********************************************************************/ +class GFXcanvas1SerialDemo : public GFXcanvas1 { +public: + GFXcanvas1SerialDemo(uint16_t w, uint16_t h); + + /**********************************************************************/ + /*! + @brief Prints the current contents of the canvas to Serial + @param rotated true to print according to the current GFX rotation, + false to print to the native rotation of the canvas (or unrotated). + */ + /**********************************************************************/ + void print(bool rotated); +}; + +/**********************************************************************/ +/*! + @brief Demonstrates using the GFXconvas classes as the backing store + for a device driver. +*/ +/**********************************************************************/ +class GFXcanvas8SerialDemo : public GFXcanvas8 { +public: + GFXcanvas8SerialDemo(uint16_t w, uint16_t h); + + /**********************************************************************/ + /*! + @brief Prints the current contents of the canvas to Serial + @param rotated true to print according to the current GFX rotation, + false to print to the native rotation of the canvas (or unrotated). + */ + /**********************************************************************/ + void print(bool rotated); +}; + +/**********************************************************************/ +/*! + @brief Demonstrates using the GFXconvas classes as the backing store + for a device driver. +*/ +/**********************************************************************/ +class GFXcanvas16SerialDemo : public GFXcanvas16 { +public: + GFXcanvas16SerialDemo(uint16_t w, uint16_t h); + + /**********************************************************************/ + /*! + @brief Prints the current contents of the canvas to Serial + @param rotated true to print according to the current GFX rotation, + false to print to the native rotation of the canvas (or unrotated). + */ + /**********************************************************************/ + void print(bool rotated); +}; + +#endif // __GFXcanvasSerialDemo__ diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/examples/mock_ili9341/mock_ili9341.ino b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/examples/mock_ili9341/mock_ili9341.ino new file mode 100644 index 0000000..d141839 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/examples/mock_ili9341/mock_ili9341.ino @@ -0,0 +1,365 @@ +/*************************************************** + This is our GFX example for the Adafruit ILI9341 Breakout and Shield + ----> http://www.adafruit.com/products/1651 + + Check out the links above for our tutorials and wiring diagrams + These displays use SPI to communicate, 4 or 5 pins are required to + interface (RST is optional) + 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. + MIT license, all text above must be included in any redistribution + ****************************************************/ + + +#include "SPI.h" +#include "Adafruit_GFX.h" +#include "Adafruit_ILI9341.h" + +// For the Adafruit shield, these are the default. +#define TFT_DC 9 +#define TFT_CS 10 + +// Use hardware SPI (on Uno, #13, #12, #11) and the above for CS/DC +Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC); +// If using the breakout, change pins as desired +//Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_MOSI, TFT_CLK, TFT_RST, TFT_MISO); + +void setup() { + Serial.begin(9600); + Serial.println("ILI9341 Test!"); + + tft.begin(); + + // read diagnostics (optional but can help debug problems) + uint8_t x = tft.readcommand8(ILI9341_RDMODE); + Serial.print("Display Power Mode: 0x"); Serial.println(x, HEX); + x = tft.readcommand8(ILI9341_RDMADCTL); + Serial.print("MADCTL Mode: 0x"); Serial.println(x, HEX); + x = tft.readcommand8(ILI9341_RDPIXFMT); + Serial.print("Pixel Format: 0x"); Serial.println(x, HEX); + x = tft.readcommand8(ILI9341_RDIMGFMT); + Serial.print("Image Format: 0x"); Serial.println(x, HEX); + x = tft.readcommand8(ILI9341_RDSELFDIAG); + Serial.print("Self Diagnostic: 0x"); Serial.println(x, HEX); + + Serial.println(F("Benchmark Time (microseconds)")); + delay(10); + Serial.print(F("Screen fill ")); + Serial.println(testFillScreen()); + delay(500); + + Serial.print(F("Text ")); + Serial.println(testText()); + delay(3000); + + Serial.print(F("Lines ")); + Serial.println(testLines(ILI9341_CYAN)); + delay(500); + + Serial.print(F("Horiz/Vert Lines ")); + Serial.println(testFastLines(ILI9341_RED, ILI9341_BLUE)); + delay(500); + + Serial.print(F("Rectangles (outline) ")); + Serial.println(testRects(ILI9341_GREEN)); + delay(500); + + Serial.print(F("Rectangles (filled) ")); + Serial.println(testFilledRects(ILI9341_YELLOW, ILI9341_MAGENTA)); + delay(500); + + Serial.print(F("Circles (filled) ")); + Serial.println(testFilledCircles(10, ILI9341_MAGENTA)); + + Serial.print(F("Circles (outline) ")); + Serial.println(testCircles(10, ILI9341_WHITE)); + delay(500); + + Serial.print(F("Triangles (outline) ")); + Serial.println(testTriangles()); + delay(500); + + Serial.print(F("Triangles (filled) ")); + Serial.println(testFilledTriangles()); + delay(500); + + Serial.print(F("Rounded rects (outline) ")); + Serial.println(testRoundRects()); + delay(500); + + Serial.print(F("Rounded rects (filled) ")); + Serial.println(testFilledRoundRects()); + delay(500); + + Serial.println(F("Done!")); + +} + + +void loop(void) { + for(uint8_t rotation=0; rotation<4; rotation++) { + tft.setRotation(rotation); + testText(); + delay(1000); + } +} + +unsigned long testFillScreen() { + unsigned long start = micros(); + tft.fillScreen(ILI9341_BLACK); + yield(); + tft.fillScreen(ILI9341_RED); + yield(); + tft.fillScreen(ILI9341_GREEN); + yield(); + tft.fillScreen(ILI9341_BLUE); + yield(); + tft.fillScreen(ILI9341_BLACK); + yield(); + return micros() - start; +} + +unsigned long testText() { + tft.fillScreen(ILI9341_BLACK); + unsigned long start = micros(); + tft.setCursor(0, 0); + tft.setTextColor(ILI9341_WHITE); tft.setTextSize(1); + tft.println("Hello World!"); + tft.setTextColor(ILI9341_YELLOW); tft.setTextSize(2); + tft.println(1234.56); + tft.setTextColor(ILI9341_RED); tft.setTextSize(3); + tft.println(0xDEADBEEF, HEX); + tft.println(); + tft.setTextColor(ILI9341_GREEN); + tft.setTextSize(5); + tft.println("Groop"); + tft.setTextSize(2); + tft.println("I implore thee,"); + tft.setTextSize(1); + tft.println("my foonting turlingdromes."); + tft.println("And hooptiously drangle me"); + tft.println("with crinkly bindlewurdles,"); + tft.println("Or I will rend thee"); + tft.println("in the gobberwarts"); + tft.println("with my blurglecruncheon,"); + tft.println("see if I don't!"); + return micros() - start; +} + +unsigned long testLines(uint16_t color) { + unsigned long start, t; + int x1, y1, x2, y2, + w = tft.width(), + h = tft.height(); + + tft.fillScreen(ILI9341_BLACK); + yield(); + + x1 = y1 = 0; + y2 = h - 1; + start = micros(); + for(x2=0; x20; i-=6) { + i2 = i / 2; + start = micros(); + tft.fillRect(cx-i2, cy-i2, i, i, color1); + t += micros() - start; + // Outlines are not included in timing results + tft.drawRect(cx-i2, cy-i2, i, i, color2); + yield(); + } + + return t; +} + +unsigned long testFilledCircles(uint8_t radius, uint16_t color) { + unsigned long start; + int x, y, w = tft.width(), h = tft.height(), r2 = radius * 2; + + tft.fillScreen(ILI9341_BLACK); + start = micros(); + for(x=radius; x10; i-=5) { + start = micros(); + tft.fillTriangle(cx, cy - i, cx - i, cy + i, cx + i, cy + i, + tft.color565(0, i*10, i*10)); + t += micros() - start; + tft.drawTriangle(cx, cy - i, cx - i, cy + i, cx + i, cy + i, + tft.color565(i*10, i*10, 0)); + yield(); + } + + return t; +} + +unsigned long testRoundRects() { + unsigned long start; + int w, i, i2, + cx = tft.width() / 2 - 1, + cy = tft.height() / 2 - 1; + + tft.fillScreen(ILI9341_BLACK); + w = min(tft.width(), tft.height()); + start = micros(); + for(i=0; i20; i-=6) { + i2 = i / 2; + tft.fillRoundRect(cx-i2, cy-i2, i, i, i/8, tft.color565(0, i, 0)); + yield(); + } + + return micros() - start; +} diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/fontconvert/Makefile b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/fontconvert/Makefile new file mode 100644 index 0000000..47f5a0e --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/fontconvert/Makefile @@ -0,0 +1,12 @@ +all: fontconvert + +CC = gcc +CFLAGS = -Wall -I/usr/local/include/freetype2 -I/usr/include/freetype2 -I/usr/include +LIBS = -lfreetype + +fontconvert: fontconvert.c + $(CC) $(CFLAGS) $< $(LIBS) -o $@ + strip $@ + +clean: + rm -f fontconvert diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/fontconvert/bdf2adafruit.py b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/fontconvert/bdf2adafruit.py new file mode 100644 index 0000000..9d9ee8a --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/fontconvert/bdf2adafruit.py @@ -0,0 +1,135 @@ +#!/usr/bin/python2 + +# MIT License. + +# Copyright (c) 2016 William Skellenger +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +# IN THE SOFTWARE. + +# This small script is designed to mostly take a BDF file and convert it to a +# format that can largely be cut/pasted as an Adafruit-format font. +# It was written in an hour or so and did what I needed it to do. +# I used it for one file. Maybe it bombs on other files. +# William Skellenger, Feb 2016 +# (email: williamj@skellenger.net) +# (Twitter: @skelliam) +# +# Usage: bdf2adafruit.py > out.txt +# +# Once you have out.txt you can cut/paste the contents into a new font +# header file as part of the Adafruit GFX library. + +import sys + +myfile = open(sys.argv[1]) + +processing = 0 +getting_rows = 0 + +chars = [] +bitmapData = [] + +class Glyph: + encoding = -1 + rows = [] + comment = "" + offset = -1 + width = 0 + height = 0 + advance = 0 + xoffs = 0 + yoffs = 0 + def __init__(self, comment): + self.comment = comment + self.rows = [] + +for line in myfile.readlines(): + if 'STARTCHAR' in line: + processing = 1 + vals = line.split() + g = Glyph(vals[1]) + #g.width = 8 #in this example always 8 bits wide + elif 'ENDCHAR' in line: + dataByteCompressed = 0 + dataByteCompressedIndex = 8 + g.height = len(bitmapData) + for value in bitmapData: + bitIndex = 0 + while bitIndex < g.width: + bit = (value >> (7 - bitIndex)) & 0x01 + dataByteCompressed |= bit << (dataByteCompressedIndex - 1) + dataByteCompressedIndex -= 1 + if dataByteCompressedIndex == 0: + dataByteCompressedIndex = 8 + g.rows.append(dataByteCompressed) + dataByteCompressed = 0 + bitIndex += 1 + if 8 != dataByteCompressedIndex: + g.rows.append(dataByteCompressed) + + chars.append(g) #append the completed glyph into list + processing = 0 + getting_rows = 0 + bitmapData.clear() + + if processing: + if 'ENCODING' in line: + vals = line.split() + g.encoding = int(vals[1]) + elif 'DWIDTH' in line: + vals = line.split() + #g.advance = int(vals[1]) #cursor advance seems to be the first number in DWIDTH + elif 'BBX' in line: + vals = line.split() + g.xoffs = 0 + g.yoffs = -(int(vals[2]) + int(vals[4])) + g.advance = (int(vals[1]) + 1) #x bounding box + 1 + g.width = int(vals[1]) + elif 'BITMAP' in line: + getting_rows = 1 + elif getting_rows: + #g.rows.append(int(line, 16)) #append pixel rows into glyph's list of rows + bitmapData.append(int(line, 16)) + +print + +i=0 +for char in chars: + char.offset = i + print("\t", end='') + num = 3 + for row in char.rows: + if num != 3: + print(" ", end = '') + print("0x%02X," %(row), end = ''), + i+=1 + num-=1 + + if num == 1: + print("\t\t", end = '') + if num == 2: + print("\t\t\t", end = '') + print("\t/* 0x%02X %s */" %(char.encoding, char.comment)) + +for char in chars: + # offset, bit-width, bit-height, advance cursor, x offset, y offset + print("\t{ %d, %d, %d, %d, %d, %d }, /* 0x%02X %s */" %( + char.offset, char.width, char.height, + char.advance, char.xoffs, char.yoffs, + char.encoding, char.comment)) diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/fontconvert/fontconvert.c b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/fontconvert/fontconvert.c new file mode 100644 index 0000000..302d1da --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/fontconvert/fontconvert.c @@ -0,0 +1,291 @@ +/* +TrueType to Adafruit_GFX font converter. Derived from Peter Jakobs' +Adafruit_ftGFX fork & makefont tool, and Paul Kourany's Adafruit_mfGFX. + +NOT AN ARDUINO SKETCH. This is a command-line tool for preprocessing +fonts to be used with the Adafruit_GFX Arduino library. + +For UNIX-like systems. Outputs to stdout; redirect to header file, e.g.: + ./fontconvert ~/Library/Fonts/FreeSans.ttf 18 > FreeSans18pt7b.h + +REQUIRES FREETYPE LIBRARY. www.freetype.org + +Currently this only extracts the printable 7-bit ASCII chars of a font. +Will eventually extend with some int'l chars a la ftGFX, not there yet. +Keep 7-bit fonts around as an option in that case, more compact. + +See notes at end for glyph nomenclature & other tidbits. +*/ +#ifndef ARDUINO + +#include +#include +#include +#include +#include FT_GLYPH_H +#include FT_MODULE_H +#include FT_TRUETYPE_DRIVER_H +#include "../gfxfont.h" // Adafruit_GFX font structures + +#define DPI 141 // Approximate res. of Adafruit 2.8" TFT + +// Accumulate bits for output, with periodic hexadecimal byte write +void enbit(uint8_t value) { + static uint8_t row = 0, sum = 0, bit = 0x80, firstCall = 1; + if (value) + sum |= bit; // Set bit if needed + if (!(bit >>= 1)) { // Advance to next bit, end of byte reached? + if (!firstCall) { // Format output table nicely + if (++row >= 12) { // Last entry on line? + printf(",\n "); // Newline format output + row = 0; // Reset row counter + } else { // Not end of line + printf(", "); // Simple comma delim + } + } + printf("0x%02X", sum); // Write byte value + sum = 0; // Clear for next byte + bit = 0x80; // Reset bit counter + firstCall = 0; // Formatting flag + } +} + +int main(int argc, char *argv[]) { + int i, j, err, size, first = ' ', last = '~', bitmapOffset = 0, x, y, byte; + char *fontName, c, *ptr; + FT_Library library; + FT_Face face; + FT_Glyph glyph; + FT_Bitmap *bitmap; + FT_BitmapGlyphRec *g; + GFXglyph *table; + uint8_t bit; + + // Parse command line. Valid syntaxes are: + // fontconvert [filename] [size] + // fontconvert [filename] [size] [last char] + // fontconvert [filename] [size] [first char] [last char] + // Unless overridden, default first and last chars are + // ' ' (space) and '~', respectively + + if (argc < 3) { + fprintf(stderr, "Usage: %s fontfile size [first] [last]\n", argv[0]); + return 1; + } + + size = atoi(argv[2]); + + if (argc == 4) { + last = atoi(argv[3]); + } else if (argc == 5) { + first = atoi(argv[3]); + last = atoi(argv[4]); + } + + if (last < first) { + i = first; + first = last; + last = i; + } + + ptr = strrchr(argv[1], '/'); // Find last slash in filename + if (ptr) + ptr++; // First character of filename (path stripped) + else + ptr = argv[1]; // No path; font in local dir. + + // Allocate space for font name and glyph table + if ((!(fontName = malloc(strlen(ptr) + 20))) || + (!(table = (GFXglyph *)malloc((last - first + 1) * sizeof(GFXglyph))))) { + fprintf(stderr, "Malloc error\n"); + return 1; + } + + // Derive font table names from filename. Period (filename + // extension) is truncated and replaced with the font size & bits. + strcpy(fontName, ptr); + ptr = strrchr(fontName, '.'); // Find last period (file ext) + if (!ptr) + ptr = &fontName[strlen(fontName)]; // If none, append + // Insert font size and 7/8 bit. fontName was alloc'd w/extra + // space to allow this, we're not sprintfing into Forbidden Zone. + sprintf(ptr, "%dpt%db", size, (last > 127) ? 8 : 7); + // Space and punctuation chars in name replaced w/ underscores. + for (i = 0; (c = fontName[i]); i++) { + if (isspace(c) || ispunct(c)) + fontName[i] = '_'; + } + + // Init FreeType lib, load font + if ((err = FT_Init_FreeType(&library))) { + fprintf(stderr, "FreeType init error: %d", err); + return err; + } + + // Use TrueType engine version 35, without subpixel rendering. + // This improves clarity of fonts since this library does not + // support rendering multiple levels of gray in a glyph. + // See https://github.com/adafruit/Adafruit-GFX-Library/issues/103 + FT_UInt interpreter_version = TT_INTERPRETER_VERSION_35; + FT_Property_Set(library, "truetype", "interpreter-version", + &interpreter_version); + + if ((err = FT_New_Face(library, argv[1], 0, &face))) { + fprintf(stderr, "Font load error: %d", err); + FT_Done_FreeType(library); + return err; + } + + // << 6 because '26dot6' fixed-point format + FT_Set_Char_Size(face, size << 6, 0, DPI, 0); + + // Currently all symbols from 'first' to 'last' are processed. + // Fonts may contain WAY more glyphs than that, but this code + // will need to handle encoding stuff to deal with extracting + // the right symbols, and that's not done yet. + // fprintf(stderr, "%ld glyphs\n", face->num_glyphs); + + printf("const uint8_t %sBitmaps[] PROGMEM = {\n ", fontName); + + // Process glyphs and output huge bitmap data array + for (i = first, j = 0; i <= last; i++, j++) { + // MONO renderer provides clean image with perfect crop + // (no wasted pixels) via bitmap struct. + if ((err = FT_Load_Char(face, i, FT_LOAD_TARGET_MONO))) { + fprintf(stderr, "Error %d loading char '%c'\n", err, i); + continue; + } + + if ((err = FT_Render_Glyph(face->glyph, FT_RENDER_MODE_MONO))) { + fprintf(stderr, "Error %d rendering char '%c'\n", err, i); + continue; + } + + if ((err = FT_Get_Glyph(face->glyph, &glyph))) { + fprintf(stderr, "Error %d getting glyph '%c'\n", err, i); + continue; + } + + bitmap = &face->glyph->bitmap; + g = (FT_BitmapGlyphRec *)glyph; + + // Minimal font and per-glyph information is stored to + // reduce flash space requirements. Glyph bitmaps are + // fully bit-packed; no per-scanline pad, though end of + // each character may be padded to next byte boundary + // when needed. 16-bit offset means 64K max for bitmaps, + // code currently doesn't check for overflow. (Doesn't + // check that size & offsets are within bounds either for + // that matter...please convert fonts responsibly.) + table[j].bitmapOffset = bitmapOffset; + table[j].width = bitmap->width; + table[j].height = bitmap->rows; + table[j].xAdvance = face->glyph->advance.x >> 6; + table[j].xOffset = g->left; + table[j].yOffset = 1 - g->top; + + for (y = 0; y < bitmap->rows; y++) { + for (x = 0; x < bitmap->width; x++) { + byte = x / 8; + bit = 0x80 >> (x & 7); + enbit(bitmap->buffer[y * bitmap->pitch + byte] & bit); + } + } + + // Pad end of char bitmap to next byte boundary if needed + int n = (bitmap->width * bitmap->rows) & 7; + if (n) { // Pixel count not an even multiple of 8? + n = 8 - n; // # bits to next multiple + while (n--) + enbit(0); + } + bitmapOffset += (bitmap->width * bitmap->rows + 7) / 8; + + FT_Done_Glyph(glyph); + } + + printf(" };\n\n"); // End bitmap array + + // Output glyph attributes table (one per character) + printf("const GFXglyph %sGlyphs[] PROGMEM = {\n", fontName); + for (i = first, j = 0; i <= last; i++, j++) { + printf(" { %5d, %3d, %3d, %3d, %4d, %4d }", table[j].bitmapOffset, + table[j].width, table[j].height, table[j].xAdvance, table[j].xOffset, + table[j].yOffset); + if (i < last) { + printf(", // 0x%02X", i); + if ((i >= ' ') && (i <= '~')) { + printf(" '%c'", i); + } + putchar('\n'); + } + } + printf(" }; // 0x%02X", last); + if ((last >= ' ') && (last <= '~')) + printf(" '%c'", last); + printf("\n\n"); + + // Output font structure + printf("const GFXfont %s PROGMEM = {\n", fontName); + printf(" (uint8_t *)%sBitmaps,\n", fontName); + printf(" (GFXglyph *)%sGlyphs,\n", fontName); + if (face->size->metrics.height == 0) { + // No face height info, assume fixed width and get from a glyph. + printf(" 0x%02X, 0x%02X, %d };\n\n", first, last, table[0].height); + } else { + printf(" 0x%02X, 0x%02X, %ld };\n\n", first, last, + face->size->metrics.height >> 6); + } + printf("// Approx. %d bytes\n", bitmapOffset + (last - first + 1) * 7 + 7); + // Size estimate is based on AVR struct and pointer sizes; + // actual size may vary. + + FT_Done_FreeType(library); + + return 0; +} + +/* ------------------------------------------------------------------------- + +Character metrics are slightly different from classic GFX & ftGFX. +In classic GFX: cursor position is the upper-left pixel of each 5x7 +character; lower extent of most glyphs (except those w/descenders) +is +6 pixels in Y direction. +W/new GFX fonts: cursor position is on baseline, where baseline is +'inclusive' (containing the bottom-most row of pixels in most symbols, +except those with descenders; ftGFX is one pixel lower). + +Cursor Y will be moved automatically when switching between classic +and new fonts. If you switch fonts, any print() calls will continue +along the same baseline. + + ...........#####.. -- yOffset + ..........######.. + ..........######.. + .........#######.. + ........#########. + * = Cursor pos. ........#########. + .......##########. + ......#####..####. + ......#####..####. + *.#.. .....#####...####. + .#.#. ....############## + #...# ...############### + #...# ...############### + ##### ..#####......##### + #...# .#####.......##### +====== #...# ====== #*###.........#### ======= Baseline + || xOffset + +glyph->xOffset and yOffset are pixel offsets, in GFX coordinate space +(+Y is down), from the cursor position to the top-left pixel of the +glyph bitmap. i.e. yOffset is typically negative, xOffset is typically +zero but a few glyphs will have other values (even negative xOffsets +sometimes, totally normal). glyph->xAdvance is the distance to move +the cursor on the X axis after drawing the corresponding symbol. + +There's also some changes with regard to 'background' color and new GFX +fonts (classic fonts unchanged). See Adafruit_GFX.cpp for explanation. +*/ + +#endif /* !ARDUINO */ diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/fontconvert/fontconvert_win.md b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/fontconvert/fontconvert_win.md new file mode 100644 index 0000000..1932841 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/fontconvert/fontconvert_win.md @@ -0,0 +1,88 @@ +### A short guide to use fontconvert.c to create your own fonts using MinGW. + +#### STEP 1: INSTALL MinGW + +Install MinGW (Minimalist GNU for Windows) from [MinGW.org](http://www.mingw.org/). +Please read carefully the instructions found on [Getting started page](http://www.mingw.org/wiki/Getting_Started). +I suggest installing with the "Graphical User Interface Installer". +To complete your initial installation you should further install some "packages". +For our purpose you should only install the "Basic Setup" packages. +To do that: + +1. Open the MinGW Installation Manager +2. From the left panel click "Basic Setup". +3. On the right panel choose "mingw32-base", "mingw-gcc-g++", "mingw-gcc-objc" and "msys-base" +and click "Mark for installation" +4. From the Menu click "Installation" and then "Apply changes". In the pop-up window select "Apply". + + +#### STEP 2: INSTALL Freetype Library + +To read about the freetype project visit [freetype.org](https://www.freetype.org/). +To Download the latest version of freetype go to [download page](http://download.savannah.gnu.org/releases/freetype/) +and choose "freetype-2.7.tar.gz" file (or a newer version if available). +To avoid long cd commands later in the command prompt, I suggest you unzip the file in the C:\ directory. +(I also renamed the folder to "ft27") +Before you build the library it's good to read these articles: +* [Using MSYS with MinGW](http://www.mingw.org/wiki/MSYS) +* [Installation and Use of Supplementary Libraries with MinGW](http://www.mingw.org/wiki/LibraryPathHOWTO) +* [Include Path](http://www.mingw.org/wiki/IncludePathHOWTO) + +Inside the unzipped folder there is another folder named "docs". Open it and read the INSTALL.UNIX (using notepad). +Pay attention to paragraph 3 (Build and Install the Library). So, let's begin the installation. +To give the appropriate commands we will use the MSYS command prompt (not cmd.exe of windows) which is UNIX like. +Follow the path C:\MinGW\msys\1.0 and double click "msys.bat". The command prompt environment appears. +Enter "ft27" directory using the cd commands: +``` +cd /c +cd ft27 +``` + +and then type one by one the commands: +``` +./configure --prefix=/mingw +make +make install +``` +Once you're finished, go inside "C:\MinGW\include" and there should be a new folder named "freetype2". +That, hopefully, means that you have installed the library correctly !! + +#### STEP 3: Build fontconvert.c + +Before proceeding I suggest you make a copy of Adafruit_GFX_library folder in C:\ directory. +Then, inside "fontconvert" folder open the "makefile" with an editor ( I used notepad++). +Change the commands so in the end the program looks like : +``` +all: fontconvert + +CC = gcc +CFLAGS = -Wall -I c:/mingw/include/freetype2 +LIBS = -lfreetype + +fontconvert: fontconvert.c + $(CC) $(CFLAGS) $< $(LIBS) -o $@ + +clean: + rm -f fontconvert +``` +Go back in the command prompt and with a cd command enter the fontconvert directory. +``` +cd /c/adafruit_gfx_library\fontconvert +``` +Give the command: +``` +make +``` +This command will, eventually, create a "fontconvert.exe" file inside fontconvert directory. + +#### STEP 4: Create your own font header files + +Now that you have an executable file, you can use it to create your own fonts to work with Adafruit GFX lib. +So, if we suppose that you already have a .ttf file with your favorite fonts, jump to the command prompt and type: +``` +./fontconvert yourfonts.ttf 9 > yourfonts9pt7b.h +``` +You can read more details at: [learn.adafruit](https://learn.adafruit.com/adafruit-gfx-graphics-library/using-fonts). + +Taraaaaaammm !! you've just created your new font header file. Put it inside the "Fonts" folder, grab a cup of coffee +and start playing with your Arduino (or whatever else ....)+ display module project. diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/fontconvert/makefonts.sh b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/fontconvert/makefonts.sh new file mode 100755 index 0000000..35f07ea --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/fontconvert/makefonts.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +# Ugly little Bash script, generates a set of .h files for GFX using +# GNU FreeFont sources. There are three fonts: 'Mono' (Courier-like), +# 'Sans' (Helvetica-like) and 'Serif' (Times-like); four styles: regular, +# bold, oblique or italic, and bold+oblique or bold+italic; and four +# sizes: 9, 12, 18 and 24 point. No real error checking or anything, +# this just powers through all the combinations, calling the fontconvert +# utility and redirecting the output to a .h file for each combo. + +# Adafruit_GFX repository does not include the source outline fonts +# (huge zipfile, different license) but they're easily acquired: +# http://savannah.gnu.org/projects/freefont/ + +convert=./fontconvert +inpath=~/Desktop/freefont/ +outpath=../Fonts/ +fonts=(FreeMono FreeSans FreeSerif) +styles=("" Bold Italic BoldItalic Oblique BoldOblique) +sizes=(9 12 18 24) + +for f in ${fonts[*]} +do + for index in ${!styles[*]} + do + st=${styles[$index]} + for si in ${sizes[*]} + do + infile=$inpath$f$st".ttf" + if [ -f $infile ] # Does source combination exist? + then + outfile=$outpath$f$st$si"pt7b.h" +# printf "%s %s %s > %s\n" $convert $infile $si $outfile + $convert $infile $si > $outfile + fi + done + done +done diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/gfxfont.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/gfxfont.h new file mode 100644 index 0000000..175bad6 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/gfxfont.h @@ -0,0 +1,29 @@ +// 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_ + +/// Font data stored PER GLYPH +typedef struct { + uint16_t bitmapOffset; ///< Pointer into GFXfont->bitmap + uint8_t width; ///< Bitmap dimensions in pixels + uint8_t height; ///< Bitmap dimensions in pixels + uint8_t xAdvance; ///< Distance to advance cursor (x axis) + int8_t xOffset; ///< X dist from cursor pos to UL corner + int8_t yOffset; ///< Y dist from cursor pos to UL corner +} GFXglyph; + +/// Data stored for FONT AS A WHOLE +typedef struct { + uint8_t *bitmap; ///< Glyph bitmaps, concatenated + GFXglyph *glyph; ///< Glyph array + uint16_t first; ///< ASCII extents (first char) + uint16_t last; ///< ASCII extents (last char) + uint8_t yAdvance; ///< Newline distance (y axis) +} GFXfont; + +#endif // _GFXFONT_H_ diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/glcdfont.c b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/glcdfont.c new file mode 100644 index 0000000..535da3a --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/glcdfont.c @@ -0,0 +1,143 @@ +// 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 +#elif defined(__IMXRT1052__) || defined(__IMXRT1062__) +// PROGMEM is defefind for T4 to place data in specific memory section +#undef PROGMEM +#define PROGMEM +#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 +}; + +// allow clean compilation with [-Wunused-const-variable=] and [-Wall] +static inline void avoid_unused_const_variable_compiler_warning(void) { + (void)font; +} + +#endif // FONT5X7_H diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/library.properties b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/library.properties new file mode 100644 index 0000000..3bbb3ff --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/library.properties @@ -0,0 +1,10 @@ +name=Adafruit GFX Library +version=1.12.6 +author=Adafruit +maintainer=Adafruit +sentence=Adafruit GFX graphics core library, this is the 'core' class that all our other graphics libraries derive from. +paragraph=Install this library in addition to the display library for your hardware. +category=Display +url=https://github.com/adafruit/Adafruit-GFX-Library +architectures=* +depends=Adafruit BusIO diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/license.txt b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/license.txt new file mode 100644 index 0000000..7492e93 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit GFX Library/license.txt @@ -0,0 +1,24 @@ +Software License Agreement (BSD License) + +Copyright (c) 2012 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. diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit IS31FL3731 Library/.github/ISSUE_TEMPLATE.md b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit IS31FL3731 Library/.github/ISSUE_TEMPLATE.md new file mode 100644 index 0000000..f0e2614 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit IS31FL3731 Library/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,46 @@ +Thank you for opening an issue on an Adafruit Arduino library repository. To +improve the speed of resolution please review the following guidelines and +common troubleshooting steps below before creating the issue: + +- **Do not use GitHub issues for troubleshooting projects and issues.** Instead use + the forums at http://forums.adafruit.com to ask questions and troubleshoot why + something isn't working as expected. In many cases the problem is a common issue + that you will more quickly receive help from the forum community. GitHub issues + are meant for known defects in the code. If you don't know if there is a defect + in the code then start with troubleshooting on the forum first. + +- **If following a tutorial or guide be sure you didn't miss a step.** Carefully + check all of the steps and commands to run have been followed. Consult the + forum if you're unsure or have questions about steps in a guide/tutorial. + +- **For Arduino projects check these very common issues to ensure they don't apply**: + + - For uploading sketches or communicating with the board make sure you're using + a **USB data cable** and **not** a **USB charge-only cable**. It is sometimes + very hard to tell the difference between a data and charge cable! Try using the + cable with other devices or swapping to another cable to confirm it is not + the problem. + + - **Be sure you are supplying adequate power to the board.** Check the specs of + your board and plug in an external power supply. In many cases just + plugging a board into your computer is not enough to power it and other + peripherals. + + - **Double check all soldering joints and connections.** Flakey connections + cause many mysterious problems. See the [guide to excellent soldering](https://learn.adafruit.com/adafruit-guide-excellent-soldering/tools) for examples of good solder joints. + + - **Ensure you are using an official Arduino or Adafruit board.** We can't + guarantee a clone board will have the same functionality and work as expected + with this code and don't support them. + +If you're sure this issue is a defect in the code and checked the steps above +please fill in the following fields to provide enough troubleshooting information. +You may delete the guideline and text above to just leave the following details: + +- Arduino board: **INSERT ARDUINO BOARD NAME/TYPE HERE** + +- Arduino IDE version (found in Arduino -> About Arduino menu): **INSERT ARDUINO + VERSION HERE** + +- List the steps to reproduce the problem below (if possible attach a sketch or + copy the sketch code in too): **LIST REPRO STEPS BELOW** diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit IS31FL3731 Library/.github/PULL_REQUEST_TEMPLATE.md b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit IS31FL3731 Library/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..7b641eb --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit IS31FL3731 Library/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,26 @@ +Thank you for creating a pull request to contribute to Adafruit's GitHub code! +Before you open the request please review the following guidelines and tips to +help it be more easily integrated: + +- **Describe the scope of your change--i.e. what the change does and what parts + of the code were modified.** This will help us understand any risks of integrating + the code. + +- **Describe any known limitations with your change.** For example if the change + doesn't apply to a supported platform of the library please mention it. + +- **Please run any tests or examples that can exercise your modified code.** We + strive to not break users of the code and running tests/examples helps with this + process. + +Thank you again for contributing! We will try to test and integrate the change +as soon as we can, but be aware we have many GitHub repositories to manage and +can't immediately respond to every request. There is no need to bump or check in +on a pull request (it will clutter the discussion of the request). + +Also don't be worried if the request is closed or not integrated--sometimes the +priorities of Adafruit's GitHub code (education, ease of use) might not match the +priorities of the pull request. Don't fret, the open source community thrives on +forks and GitHub makes it easy to keep your changes in a forked repo. + +After reviewing the guidelines above you can delete this text from the pull request. diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit IS31FL3731 Library/.github/workflows/githubci.yml b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit IS31FL3731 Library/.github/workflows/githubci.yml new file mode 100644 index 0000000..32d54d9 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit IS31FL3731 Library/.github/workflows/githubci.yml @@ -0,0 +1,32 @@ +name: Arduino Library CI + +on: [pull_request, push, repository_dispatch] + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/setup-python@v4 + with: + python-version: '3.x' + - uses: actions/checkout@v3 + - uses: actions/checkout@v3 + with: + repository: adafruit/ci-arduino + path: ci + + - name: pre-install + run: bash ci/actions_install.sh + + - name: test platforms + run: python3 ci/build_platform.py main_platforms + + - name: clang + run: python3 ci/run-clang-format.py -e "ci/*" -e "bin/*" -r . + + - name: doxygen + env: + GH_REPO_TOKEN: ${{ secrets.GH_REPO_TOKEN }} + PRETTYNAME : "Adafruit IS31FL3731 Library" + run: bash ci/doxy_gen_and_deploy.sh diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit IS31FL3731 Library/.piopm b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit IS31FL3731 Library/.piopm new file mode 100644 index 0000000..ccf819e --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit IS31FL3731 Library/.piopm @@ -0,0 +1 @@ +{"type": "library", "name": "Adafruit IS31FL3731 Library", "version": "2.0.2", "spec": {"owner": "adafruit", "id": 1241, "name": "Adafruit IS31FL3731 Library", "requirements": null, "uri": null}} \ No newline at end of file diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit IS31FL3731 Library/Adafruit_IS31FL3731.cpp b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit IS31FL3731 Library/Adafruit_IS31FL3731.cpp new file mode 100644 index 0000000..fb1a347 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit IS31FL3731 Library/Adafruit_IS31FL3731.cpp @@ -0,0 +1,273 @@ +#include + +#ifndef _swap_int16_t +#define _swap_int16_t(a, b) \ + { \ + int16_t t = a; \ + a = b; \ + b = t; \ + } +#endif + +/**************************************************************************/ +/*! + @brief Constructor for breakout version + @param width Desired width of led display + @param height Desired height of led display +*/ +/**************************************************************************/ + +Adafruit_IS31FL3731::Adafruit_IS31FL3731(uint8_t width, uint8_t height) + : Adafruit_GFX(width, height) {} + +/**************************************************************************/ +/*! + @brief Constructor for FeatherWing version (15x7 LEDs) +*/ +/**************************************************************************/ +Adafruit_IS31FL3731_Wing::Adafruit_IS31FL3731_Wing(void) + : Adafruit_IS31FL3731(15, 7) {} + +/**************************************************************************/ +/*! + @brief Initialize hardware and clear display + @param addr The I2C address we expect to find the chip at + @param theWire The TwoWire I2C bus device to use, defaults to &Wire + @returns True on success, false if chip isnt found +*/ +/**************************************************************************/ +bool Adafruit_IS31FL3731::begin(uint8_t addr, TwoWire *theWire) { + if (_i2c_dev) { + delete _i2c_dev; + } + _i2c_dev = new Adafruit_I2CDevice(addr, theWire); + + if (!_i2c_dev->begin()) { + return false; + } + + _i2c_dev->setSpeed(400000); + _frame = 0; + + // shutdown + writeRegister8(ISSI_BANK_FUNCTIONREG, ISSI_REG_SHUTDOWN, 0x00); + + delay(10); + + // out of shutdown + writeRegister8(ISSI_BANK_FUNCTIONREG, ISSI_REG_SHUTDOWN, 0x01); + + // picture mode + writeRegister8(ISSI_BANK_FUNCTIONREG, ISSI_REG_CONFIG, + ISSI_REG_CONFIG_PICTUREMODE); + + displayFrame(_frame); + + // all LEDs on & 0 PWM + clear(); // set each led to 0 PWM + + for (uint8_t f = 0; f < 8; f++) { + for (uint8_t i = 0; i <= 0x11; i++) + writeRegister8(f, i, 0xff); // each 8 LEDs on + } + + audioSync(false); + + return true; +} + +/**************************************************************************/ +/*! + @brief Sets all LEDs on & 0 PWM for current frame. +*/ +/**************************************************************************/ +void Adafruit_IS31FL3731::clear(void) { + selectBank(_frame); + uint8_t erasebuf[25]; + + memset(erasebuf, 0, 25); + + for (uint8_t i = 0; i < 6; i++) { + erasebuf[0] = 0x24 + i * 24; + _i2c_dev->write(erasebuf, 25); + } +} + +/**************************************************************************/ +/*! + @brief Low level accesssor - sets a 8-bit PWM pixel value to a bank location + does not handle rotation, x/y or any rearrangements! + @param lednum The offset into the bank that corresponds to the LED + @param bank The bank/frame we will set the data in + @param pwm brightnes, from 0 (off) to 255 (max on) +*/ +/**************************************************************************/ +void Adafruit_IS31FL3731::setLEDPWM(uint8_t lednum, uint8_t pwm, uint8_t bank) { + if (lednum >= 144) + return; + writeRegister8(bank, 0x24 + lednum, pwm); +} + +/**************************************************************************/ +/*! + @brief Adafruit GFX low level accesssor - sets a 8-bit PWM pixel value + handles rotation and pixel arrangement, unlike setLEDPWM + @param x The x position, starting with 0 for left-most side + @param y The y position, starting with 0 for top-most side + @param color Despite being a 16-bit value, takes 0 (off) to 255 (max on) +*/ +/**************************************************************************/ +void Adafruit_IS31FL3731_Wing::drawPixel(int16_t x, int16_t y, uint16_t color) { + // check rotation, move pixel around if necessary + switch (getRotation()) { + case 1: + _swap_int16_t(x, y); + x = 15 - x - 1; + break; + case 2: + x = 15 - x - 1; + y = 7 - y - 1; + break; + case 3: + _swap_int16_t(x, y); + y = 9 - y - 1; + break; + } + + // charlie wing is smaller: + if ((x < 0) || (x >= 16) || (y < 0) || (y >= 7)) + return; + + if (x > 7) { + x = 15 - x; + y += 8; + } else { + y = 7 - y; + } + + _swap_int16_t(x, y); + + if (color > 255) + color = 255; // PWM 8bit max + + setLEDPWM(x + y * 16, color, _frame); + return; +} + +/**************************************************************************/ +/*! + @brief Adafruit GFX low level accesssor - sets a 8-bit PWM pixel value + handles rotation and pixel arrangement, unlike setLEDPWM + @param x The x position, starting with 0 for left-most side + @param y The y position, starting with 0 for top-most side + @param color Despite being a 16-bit value, takes 0 (off) to 255 (max on) +*/ +/**************************************************************************/ +void Adafruit_IS31FL3731::drawPixel(int16_t x, int16_t y, uint16_t color) { + // check rotation, move pixel around if necessary + switch (getRotation()) { + case 1: + _swap_int16_t(x, y); + x = 16 - x - 1; + break; + case 2: + x = 16 - x - 1; + y = 9 - y - 1; + break; + case 3: + _swap_int16_t(x, y); + y = 9 - y - 1; + break; + } + + if ((x < 0) || (x >= 16)) + return; + if ((y < 0) || (y >= 9)) + return; + if (color > 255) + color = 255; // PWM 8bit max + + setLEDPWM(x + y * 16, color, _frame); + return; +} + +/**************************************************************************/ +/*! + @brief Set's this object's frame tracker (does not talk to the chip) + @param frame Ranges from 0 - 7 for the 8 frames +*/ +/**************************************************************************/ +void Adafruit_IS31FL3731::setFrame(uint8_t frame) { _frame = frame; } + +/**************************************************************************/ +/*! + @brief Have the chip set the display to the contents of a frame + @param frame Ranges from 0 - 7 for the 8 frames +*/ +/**************************************************************************/ +void Adafruit_IS31FL3731::displayFrame(uint8_t frame) { + if (frame > 7) + frame = 0; + writeRegister8(ISSI_BANK_FUNCTIONREG, ISSI_REG_PICTUREFRAME, frame); +} + +/**************************************************************************/ +/*! + @brief Switch to a given bank in the chip memory for future reads + @param bank The IS31 bank to switch to + @returns False if I2C command failed to be ack'd +*/ +/**************************************************************************/ +bool Adafruit_IS31FL3731::selectBank(uint8_t bank) { + uint8_t cmd[2] = {ISSI_COMMANDREGISTER, bank}; + return _i2c_dev->write(cmd, 2); +} + +/**************************************************************************/ +/*! + @brief Enable the audio 'sync' for brightness pulsing (not really tested) + @param sync True to enable, False to disable +*/ +/**************************************************************************/ +void Adafruit_IS31FL3731::audioSync(bool sync) { + if (sync) { + writeRegister8(ISSI_BANK_FUNCTIONREG, ISSI_REG_AUDIOSYNC, 0x1); + } else { + writeRegister8(ISSI_BANK_FUNCTIONREG, ISSI_REG_AUDIOSYNC, 0x0); + } +} + +/**************************************************************************/ +/*! + @brief Write one byte to a register located in a given bank + @param bank The IS31 bank to write the register location + @param reg the offset into the bank to write + @param data The byte value + @returns False if I2C command failed to be ack'd +*/ +/**************************************************************************/ +bool Adafruit_IS31FL3731::writeRegister8(uint8_t bank, uint8_t reg, + uint8_t data) { + selectBank(bank); + + uint8_t cmd[2] = {reg, data}; + return _i2c_dev->write(cmd, 2); +} + +/**************************************************************************/ +/*! + @brief Read one byte from a register located in a given bank + @param bank The IS31 bank to read the register location + @param reg the offset into the bank to read + @return 1 byte value +*/ +/**************************************************************************/ +uint8_t Adafruit_IS31FL3731::readRegister8(uint8_t bank, uint8_t reg) { + uint8_t val = 0xFF; + + selectBank(bank); + + _i2c_dev->write_then_read(®, 1, &val, 1); + + return val; +} diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit IS31FL3731 Library/Adafruit_IS31FL3731.h b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit IS31FL3731 Library/Adafruit_IS31FL3731.h new file mode 100644 index 0000000..f530253 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit IS31FL3731 Library/Adafruit_IS31FL3731.h @@ -0,0 +1,65 @@ +#ifndef _ADAFRUIT_IS31FL3731_H_ +#define _ADAFRUIT_IS31FL3731_H_ + +#include +#include +#include + +#define ISSI_ADDR_DEFAULT 0x74 + +#define ISSI_REG_CONFIG 0x00 +#define ISSI_REG_CONFIG_PICTUREMODE 0x00 +#define ISSI_REG_CONFIG_AUTOPLAYMODE 0x08 +#define ISSI_REG_CONFIG_AUDIOPLAYMODE 0x18 + +#define ISSI_CONF_PICTUREMODE 0x00 +#define ISSI_CONF_AUTOFRAMEMODE 0x04 +#define ISSI_CONF_AUDIOMODE 0x08 + +#define ISSI_REG_PICTUREFRAME 0x01 + +#define ISSI_REG_SHUTDOWN 0x0A +#define ISSI_REG_AUDIOSYNC 0x06 + +#define ISSI_COMMANDREGISTER 0xFD +#define ISSI_BANK_FUNCTIONREG 0x0B // helpfully called 'page nine' + +/**************************************************************************/ +/*! + @brief Constructor for generic IS31FL3731 breakout version +*/ +/**************************************************************************/ +class Adafruit_IS31FL3731 : public Adafruit_GFX { +public: + Adafruit_IS31FL3731(uint8_t x = 16, uint8_t y = 9); + bool begin(uint8_t addr = ISSI_ADDR_DEFAULT, TwoWire *theWire = &Wire); + void drawPixel(int16_t x, int16_t y, uint16_t color); + void clear(void); + + void setLEDPWM(uint8_t lednum, uint8_t pwm, uint8_t bank = 0); + void audioSync(bool sync); + void setFrame(uint8_t b); + void displayFrame(uint8_t frame); + +protected: + bool selectBank(uint8_t bank); + bool writeRegister8(uint8_t bank, uint8_t reg, uint8_t data); + uint8_t readRegister8(uint8_t bank, uint8_t reg); + uint8_t _frame; ///< The frame (of 8) we are currently addressing + +private: + Adafruit_I2CDevice *_i2c_dev = NULL; +}; + +/**************************************************************************/ +/*! + @brief Constructor for FeatherWing IS31FL3731 version +*/ +/**************************************************************************/ +class Adafruit_IS31FL3731_Wing : public Adafruit_IS31FL3731 { +public: + Adafruit_IS31FL3731_Wing(void); + void drawPixel(int16_t x, int16_t y, uint16_t color); +}; + +#endif diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit IS31FL3731 Library/CODE_OF_CONDUCT.md b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit IS31FL3731 Library/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..d885b36 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit IS31FL3731 Library/CODE_OF_CONDUCT.md @@ -0,0 +1,137 @@ + +# Adafruit Community Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as +contributors and leaders pledge to making participation in our project and +our community a harassment-free experience for everyone, regardless of age, body +size, disability, ethnicity, gender identity and expression, level or type of +experience, education, socio-economic status, nationality, personal appearance, +race, religion, or sexual identity and orientation. + +## Our Standards + +We are committed to providing a friendly, safe and welcoming environment for +all. + +Examples of behavior that contributes to creating a positive environment +include: + +* Be kind and courteous to others +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Collaborating with other community members +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and sexual attention or advances +* The use of inappropriate images, including in a community member's avatar +* The use of inappropriate language, including in a community member's nickname +* Any spamming, flaming, baiting or other attention-stealing behavior +* Excessive or unwelcome helping; answering outside the scope of the question + asked +* Trolling, insulting/derogatory comments, and personal or political attacks +* Promoting or spreading disinformation, lies, or conspiracy theories against + a person, group, organisation, project, or community +* Public or private harassment +* Publishing others' private information, such as a physical or electronic + address, without explicit permission +* Other conduct which could reasonably be considered inappropriate + +The goal of the standards and moderation guidelines outlined here is to build +and maintain a respectful community. We ask that you don’t just aim to be +"technically unimpeachable", but rather try to be your best self. + +We value many things beyond technical expertise, including collaboration and +supporting others within our community. Providing a positive experience for +other community members can have a much more significant impact than simply +providing the correct answer. + +## Our Responsibilities + +Project leaders are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior. + +Project leaders have the right and responsibility to remove, edit, or +reject messages, comments, commits, code, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any community member for other behaviors that they deem +inappropriate, threatening, offensive, or harmful. + +## Moderation + +Instances of behaviors that violate the Adafruit Community Code of Conduct +may be reported by any member of the community. Community members are +encouraged to report these situations, including situations they witness +involving other community members. + +You may report in the following ways: + +In any situation, you may send an email to . + +On the Adafruit Discord, you may send an open message from any channel +to all Community Moderators by tagging @community moderators. You may +also send an open message from any channel, or a direct message to +@kattni#1507, @tannewt#4653, @danh#1614, @cater#2442, +@sommersoft#0222, @Mr. Certainly#0472 or @Andon#8175. + +Email and direct message reports will be kept confidential. + +In situations on Discord where the issue is particularly egregious, possibly +illegal, requires immediate action, or violates the Discord terms of service, +you should also report the message directly to Discord. + +These are the steps for upholding our community’s standards of conduct. + +1. Any member of the community may report any situation that violates the +Adafruit Community Code of Conduct. All reports will be reviewed and +investigated. +2. If the behavior is an egregious violation, the community member who +committed the violation may be banned immediately, without warning. +3. Otherwise, moderators will first respond to such behavior with a warning. +4. Moderators follow a soft "three strikes" policy - the community member may +be given another chance, if they are receptive to the warning and change their +behavior. +5. If the community member is unreceptive or unreasonable when warned by a +moderator, or the warning goes unheeded, they may be banned for a first or +second offense. Repeated offenses will result in the community member being +banned. + +## Scope + +This Code of Conduct and the enforcement policies listed above apply to all +Adafruit Community venues. This includes but is not limited to any community +spaces (both public and private), the entire Adafruit Discord server, and +Adafruit GitHub repositories. Examples of Adafruit Community spaces include +but are not limited to meet-ups, audio chats on the Adafruit Discord, or +interaction at a conference. + +This Code of Conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. As a community +member, you are representing our community, and are expected to behave +accordingly. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant], +version 1.4, available at +, +and the [Rust Code of Conduct](https://www.rust-lang.org/en-US/conduct.html). + +For other projects adopting the Adafruit Community Code of +Conduct, please contact the maintainers of those projects for enforcement. +If you wish to use this code of conduct for your own project, consider +explicitly mentioning your moderation policy or making a copy with your +own moderation policy so as to avoid confusion. + +[Contributor Covenant]: https://www.contributor-covenant.org diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit IS31FL3731 Library/LICENSE b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit IS31FL3731 Library/LICENSE new file mode 100644 index 0000000..3f50677 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit IS31FL3731 Library/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2020 Ladyada for Adafruit Industries + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit IS31FL3731 Library/README.md b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit IS31FL3731 Library/README.md new file mode 100644 index 0000000..7f58723 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit IS31FL3731 Library/README.md @@ -0,0 +1 @@ +# Adafruit IS31FL3731 [![Build Status](https://github.com/adafruit/Adafruit_IS31FL3731/workflows/Arduino%20Library%20CI/badge.svg)](https://github.com/adafruit/Adafruit_IS31FL3731/actions)[![Documentation](https://github.com/adafruit/ci-arduino/blob/master/assets/doxygen_badge.svg)](http://adafruit.github.io/Adafruit_IS31FL3731/html/index.html) diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit IS31FL3731 Library/examples/gfxdemo/gfxdemo.ino b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit IS31FL3731 Library/examples/gfxdemo/gfxdemo.ino new file mode 100644 index 0000000..a0fdcc2 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit IS31FL3731 Library/examples/gfxdemo/gfxdemo.ino @@ -0,0 +1,107 @@ +#include +#include +#include + +// If you're using the full breakout... +Adafruit_IS31FL3731 matrix = Adafruit_IS31FL3731(); +// If you're using the FeatherWing version +//Adafruit_IS31FL3731_Wing matrix = Adafruit_IS31FL3731_Wing(); + +static const uint8_t PROGMEM + smile_bmp[] = + { 0b00111100, + 0b01000010, + 0b10100101, + 0b10000001, + 0b10100101, + 0b10011001, + 0b01000010, + 0b00111100 }, + neutral_bmp[] = + { 0b00111100, + 0b01000010, + 0b10100101, + 0b10000001, + 0b10111101, + 0b10000001, + 0b01000010, + 0b00111100 }, + frown_bmp[] = + { 0b00111100, + 0b01000010, + 0b10100101, + 0b10000001, + 0b10011001, + 0b10100101, + 0b01000010, + 0b00111100 }; + + +void setup() { + + Serial.begin(9600); + Serial.println("ISSI manual animation test"); + if (! matrix.begin()) { + Serial.println("IS31 not found"); + while (1); + } + Serial.println("IS31 Found!"); + +} + + +void loop() { + matrix.setRotation(0); + + matrix.clear(); + matrix.drawBitmap(3, 0, smile_bmp, 8, 8, 255); + delay(500); + + matrix.clear(); + matrix.drawBitmap(3, 0, neutral_bmp, 8, 8, 64); + delay(500); + + matrix.clear(); + matrix.drawBitmap(3, 0, frown_bmp, 8, 8, 32); + delay(500); + + matrix.clear(); + matrix.drawPixel(0, 0, 255); + delay(500); + + matrix.clear(); + matrix.drawLine(0,0, matrix.width()-1, matrix.height()-1, 127); + delay(500); + + matrix.clear(); + matrix.drawRect(0,0, matrix.width(), matrix.height(), 255); + matrix.fillRect(2,2, matrix.width()-4, matrix.height()-4, 20); + delay(500); + + matrix.clear(); + matrix.drawCircle(8,4, 4, 64); + matrix.drawCircle(8,4, 2, 32); + delay(500); + + + matrix.setTextSize(1); + matrix.setTextWrap(false); // we dont want text to wrap so it scrolls nicely + matrix.setTextColor(100); + for (int8_t x=0; x>=-32; x--) { + matrix.clear(); + matrix.setCursor(x,0); + matrix.print("Hello"); + delay(100); + } + + matrix.setTextSize(2); + matrix.setTextWrap(false); // we dont want text to wrap so it scrolls nicely + matrix.setTextColor(32); + matrix.setRotation(1); + for (int8_t x=7; x>=-64; x--) { + matrix.clear(); + matrix.setCursor(x,0); + matrix.print("World"); + delay(100); + } +} \ No newline at end of file diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit IS31FL3731 Library/examples/manualanim/manualanim.ino b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit IS31FL3731 Library/examples/manualanim/manualanim.ino new file mode 100644 index 0000000..2612930 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit IS31FL3731 Library/examples/manualanim/manualanim.ino @@ -0,0 +1,43 @@ +#include +#include +#include + +// If you're using the full breakout... +Adafruit_IS31FL3731 ledmatrix = Adafruit_IS31FL3731(); +// If you're using the FeatherWing version +//Adafruit_IS31FL3731_Wing ledmatrix = Adafruit_IS31FL3731_Wing(); + +void setup() { + + Serial.begin(9600); + Serial.println("ISSI manual animation test"); + if (! ledmatrix.begin()) { + Serial.println("IS31 not found"); + while (1); + } + Serial.println("IS31 Found!"); + + ledmatrix.setTextWrap(false); + ledmatrix.setTextColor(64); // quarter brightness + ledmatrix.setTextSize(1); + + // fill all 8 frames with some text + for (uint8_t frame = 0; frame < 8; frame++) { + ledmatrix.setFrame(frame); + ledmatrix.clear(); + ledmatrix.setCursor(0,0); + ledmatrix.write('a'+frame*3); + ledmatrix.write('b'+frame*3); + ledmatrix.write('c'+frame*3); + } +} + +int x = 0; + +void loop() { + // display each frame for 250 milliseconds + for (uint8_t frame = 0; frame < 8; frame++) { + ledmatrix.displayFrame(frame); + delay(250); + } +} \ No newline at end of file diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit IS31FL3731 Library/examples/swirldemo/swirldemo.ino b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit IS31FL3731 Library/examples/swirldemo/swirldemo.ino new file mode 100644 index 0000000..7b17084 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit IS31FL3731 Library/examples/swirldemo/swirldemo.ino @@ -0,0 +1,32 @@ +#include +#include +#include + +// If you're using the full breakout... +Adafruit_IS31FL3731 ledmatrix = Adafruit_IS31FL3731(); +// If you're using the FeatherWing version +//Adafruit_IS31FL3731_Wing ledmatrix = Adafruit_IS31FL3731_Wing(); + + +// The lookup table to make the brightness changes be more visible +uint8_t sweep[] = {1, 2, 3, 4, 6, 8, 10, 15, 20, 30, 40, 60, 60, 40, 30, 20, 15, 10, 8, 6, 4, 3, 2, 1}; + +void setup() { + Serial.begin(9600); + Serial.println("ISSI swirl test"); + + if (! ledmatrix.begin()) { + Serial.println("IS31 not found"); + while (1); + } + Serial.println("IS31 found!"); +} + +void loop() { + // animate over all the pixels, and set the brightness from the sweep table + for (uint8_t incr = 0; incr < 24; incr++) + for (uint8_t x = 0; x < 16; x++) + for (uint8_t y = 0; y < 9; y++) + ledmatrix.drawPixel(x, y, sweep[(x+y+incr)%24]); + delay(20); +} \ No newline at end of file diff --git a/hardware_test/.pio/libdeps/rp2040_usb/Adafruit IS31FL3731 Library/library.properties b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit IS31FL3731 Library/library.properties new file mode 100644 index 0000000..86f5f31 --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/Adafruit IS31FL3731 Library/library.properties @@ -0,0 +1,10 @@ +name=Adafruit IS31FL3731 Library +version=2.0.2 +author=Adafruit +maintainer=Adafruit +sentence=Arduino library for the Adafruit IS31FL3731 Charlieplex LED driver and CharliePlex FeatherWing. +paragraph=Arduino library for the Adafruit IS31FL3731 Charlieplex LED driver and CharliePlex FeatherWing. +category=Display +url=https://github.com/adafruit/Adafruit_IS31FL3731 +architectures=* +depends=Adafruit GFX Library, Adafruit BusIO diff --git a/hardware_test/.pio/libdeps/rp2040_usb/integrity.dat b/hardware_test/.pio/libdeps/rp2040_usb/integrity.dat new file mode 100644 index 0000000..98f8eeb --- /dev/null +++ b/hardware_test/.pio/libdeps/rp2040_usb/integrity.dat @@ -0,0 +1,2 @@ +adafruit/Adafruit IS31FL3731 Library +adafruit/Adafruit BusIO \ No newline at end of file diff --git a/hardware_test/pioold/build/project.checksum b/hardware_test/pioold/build/project.checksum new file mode 100644 index 0000000..bcbffec --- /dev/null +++ b/hardware_test/pioold/build/project.checksum @@ -0,0 +1 @@ +2de8598838f642a36072de75e9b7456cb1dbd1f6 \ No newline at end of file diff --git a/hardware_test/pioold/build/rp2040_swd/.sconsign314.dblite b/hardware_test/pioold/build/rp2040_swd/.sconsign314.dblite new file mode 100644 index 0000000000000000000000000000000000000000..2ebbf7103d3730d5b3770a774373c6802d4fa92a GIT binary patch literal 38459 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 literal 0 HcmV?d00001 diff --git a/hardware_test/pioold/build/rp2040_swd/cpp.linker_script.ld b/hardware_test/pioold/build/rp2040_swd/cpp.linker_script.ld new file mode 100644 index 0000000..3860812 --- /dev/null +++ b/hardware_test/pioold/build/rp2040_swd/cpp.linker_script.ld @@ -0,0 +1,160 @@ +MEMORY +{ + FLASH(rx) : ORIGIN = 0x10000000, LENGTH = 2048k + RAM(rwx) : ORIGIN = 0x20000000, LENGTH = 256k + SCRATCH_X(rwx) : ORIGIN = 0x20040000, LENGTH = 4k + SCRATCH_Y(rwx) : ORIGIN = 0x20041000, LENGTH = 4k +} +ENTRY(_entry_point) +SECTIONS +{ + .flash_begin : { + __flash_binary_start = .; + } > FLASH + .second_stage_ota : { + KEEP (*(.second_stage_ota)) + } > FLASH + .boot2 : { + __boot2_start__ = .; + KEEP (*(.boot2)) + __boot2_end__ = .; + } > FLASH + ASSERT(__boot2_end__ - __boot2_start__ == 256, + "ERROR: Pico second stage bootloader must be 256 bytes in size") + .text : { + __logical_binary_start = .; + KEEP (*(.vectors)) + KEEP (*(.binary_info_header)) + __binary_info_header_end = .; + KEEP (*(.reset)) + KEEP (*(.init)) + *(.fini) + *crtbegin.o(.ctors) + *crtbegin?.o(.ctors) + *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors) + *(SORT(.ctors.*)) + *(.ctors) + *crtbegin.o(.dtors) + *crtbegin?.o(.dtors) + *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors) + *(SORT(.dtors.*)) + *(.dtors) + *(.eh_frame*) + . = ALIGN(4); + } > FLASH + .rodata : { + . = ALIGN(4); + *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.flashdata*))) + . = ALIGN(4); + } > FLASH + .ARM.extab : + { + *(.ARM.extab* .gnu.linkonce.armextab.*) + } > FLASH + __exidx_start = .; + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > FLASH + __exidx_end = .; + . = ALIGN(4); + __binary_info_start = .; + .binary_info : + { + KEEP(*(.binary_info.keep.*)) + *(.binary_info.*) + } > FLASH + __binary_info_end = .; + . = ALIGN(4); + __etext = .; + .ram_vector_table (COPY): { + *(.ram_vector_table) + } > RAM + .data : { + __data_start__ = .; + *(vtable) + *(.time_critical*) + . = ALIGN(4); + *(.data*) + . = ALIGN(4); + *(.after_data.*) + . = ALIGN(4); + PROVIDE_HIDDEN (__mutex_array_start = .); + KEEP(*(SORT(.mutex_array.*))) + KEEP(*(.mutex_array)) + PROVIDE_HIDDEN (__mutex_array_end = .); + . = ALIGN(4); + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP(*(SORT(.preinit_array.*))) + KEEP(*(.preinit_array)) + PROVIDE_HIDDEN (__preinit_array_end = .); + . = ALIGN(4); + PROVIDE_HIDDEN (__init_array_start = .); + KEEP(*(SORT(.init_array.*))) + KEEP(*(.init_array)) + PROVIDE_HIDDEN (__init_array_end = .); + . = ALIGN(4); + PROVIDE_HIDDEN (__fini_array_start = .); + *(SORT(.fini_array.*)) + *(.fini_array) + PROVIDE_HIDDEN (__fini_array_end = .); + *(.jcr) + . = ALIGN(4); + __data_end__ = .; + } > RAM AT> FLASH + .uninitialized_data (COPY): { + . = ALIGN(4); + __uninitialized_data_start__ = .; + *(.uninitialized_data*) + __uninitialized_data_end__ = .; + } > RAM + .scratch_x : { + __scratch_x_start__ = .; + *(.scratch_x.*) + . = ALIGN(4); + __scratch_x_end__ = .; + } > SCRATCH_X AT > FLASH + __scratch_x_source__ = LOADADDR(.scratch_x); + .scratch_y : { + __scratch_y_start__ = .; + *(.scratch_y.*) + . = ALIGN(4); + __scratch_y_end__ = .; + } > SCRATCH_Y AT > FLASH + __scratch_y_source__ = LOADADDR(.scratch_y); + .bss : { + . = ALIGN(4); + __bss_start__ = .; + *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.bss*))) + *(COMMON) + . = ALIGN(4); + __bss_end__ = .; + } > RAM + .heap (COPY): + { + __end__ = .; + PROVIDE(end = .); + *(.heap*) + . = ORIGIN(RAM) + LENGTH(RAM) - 0x400; + __HeapLimit = .; + } > RAM + .stack1_dummy (COPY): + { + *(.stack1*) + } > SCRATCH_X + .stack_dummy (COPY): + { + *(.stack*) + } > RAM + .flash_end : { + __flash_binary_end = .; + } > FLASH + __StackTop = ORIGIN(RAM) + LENGTH(RAM); + __StackLimit = __StackTop - 0x400; + __StackOneTop = ORIGIN(SCRATCH_X) + LENGTH(SCRATCH_X); + __StackOneBottom = __StackOneTop - SIZEOF(.stack1_dummy); + __StackBottom = __StackTop - SIZEOF(.stack_dummy); + PROVIDE(__stack = __StackTop); + ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed") + ASSERT( __binary_info_header_end - __logical_binary_start <= 256, "Binary info must be in first 256 bytes of the binary") +} diff --git a/hardware_test/pioold/build/rp2040_swd/lib23c/Adafruit GFX Library/Adafruit_GFX.cpp.o b/hardware_test/pioold/build/rp2040_swd/lib23c/Adafruit GFX Library/Adafruit_GFX.cpp.o new file mode 100644 index 0000000000000000000000000000000000000000..0962137fa98140fe69cf1a64eb28412f6027dde2 GIT binary patch literal 34784 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 R(H=<0UBYo3O{>sw{{gM(QWO9H literal 0 HcmV?d00001 diff --git a/hardware_test/pioold/build/rp2040_swd/lib23c/Adafruit GFX Library/Adafruit_SPITFT.cpp.o b/hardware_test/pioold/build/rp2040_swd/lib23c/Adafruit GFX Library/Adafruit_SPITFT.cpp.o new file mode 100644 index 0000000000000000000000000000000000000000..da1d6909c5fab4acc534961f6d0374b245d1b839 GIT binary patch literal 16776 zcmcIqdvsLCdH?QSy%9o)mmWy0v=ZongjR2vr&j2J!B`Or5M)@bw2OB^k7c!h>^MPj z>;xMp#~_SBvRx9B1V>IMrE$}eoE$@&oVedNcV_qQ zXjdYCbPjiCzWILh`@Wg^X70>IM;f*?DvAOkDUc6A3Euq~h5^zj*=Cj} zU%hh$O{|E5r!Qqf!sshI=8R?xq-gD$GL(p=cr2NQ=8nF{=*-d}jZVg}Rjt6i^t)#Cgh^X6e?xC?*P;aBlD`qG`N(P|wVaN>XX44DAV}|HUr5vmG5Avu53?&45NBz`$NByLp%|(xru&49TD`H9B zY%=sx9kzRKdSAhQD!iA}KkPC7evmnN7|=sy^)B1CI_yK)dx1XRLtm3%2|xjiZ`g`6 zYObox-wye)6JnN>?0hyCc~D)MKcHljZIROmXAVH|s`13tWeK~yWr@RHB`3>UmGlem zvIDygynLWz--<5PJ+bd}6PPP2%*dQ-VAf~ZX(mqKbFNEfZs}d7yLa`Y%#p&Z+ znKzCU0O6?w%$owZbA)Q{aCw=z2JQTKLd4eJPAS><7~5sc%CFt@_+oW5qR2V{~^)S(P`gtSNb~ z{HSRt*`f^X$8p@>7?(4$rxu_HaMTF*G1k_y7N!x%Zif+EXH-WzWkgv$f-4Y;Zjb+b zDm`IB8@9!aDQlwM%ZI#DLfo4YYl?iogE5wc@trUVdAscx*+;?sh6XP-^{BWi-qcQL z&uHIoDg-n5>eVyUo?73z^30{A3y|lu&%0QBH1-83Y951?jbl(0eG{!)KbP8Wi`O!= z#N|)hzh--25>`gvJf|sT-%NGdQnXwxX~mE2mm5#niYNai^{+M4DP>)?7X4yXRNnQ) zX>VzVv(!_)jZrTquefWEc`@p*)miU{`3qj z=H&|wrd!U&bLqKS?8|UcVQV>_d%6^oMi&F%D8_<1G!OeY7h;EC<@Pak1d6ty=ghlG zSDMpSjNT>Yyt8N2)-X`$n&uGnAPc?!T^L$4mL@mD##prcj)afV@ppE-tJw`VNX zVn&8-rdua67T^xD+Fb+fp3_aSBQ?0gsUu|oLj_=AvrIZ#rFws!zO)o~+l-?zFc+3& zsY9g`NjYEM^NwvLj&k9c+>^iAMVV|l z;X>|F^&}MLO(f-Qw4bzPPeRc$v=|a?sCmw|aPps0FKT^R>$J;_>!RjjKBrHV@4cSsA z)zinc)YL(3W7cvlW+?WQB`WUvDeVtw=d|dP${LFnH)M(0^3yr=KFn5e#m9`a+i*4H ze$y6>F}iTYzu6(jZ_CB?8ht$W%ySJ2lrWLs{86H`KcGU&Uc z36if=l%)))0EN-x8}^;qXL4Wn+}wAziT3R%7VlMNdKW1ZWFz^iN-fH9&n{9CueviZ z9(Ak{r|;9rSMOfg-}ru}3bkH(`{Ajjc<%U;%^UV9IoHzbZ9D50ZQfuTRBPc{DzV?a zsuX98$1SJ#)#`x)I8p>R^gZ?itkK_Ps|S>I?XcSWK_+D1IPwWQ9YM*zkKdls_tRU! z_rR4HK#S(NP+e8Jo%joI-=rMyokqEr-anwa=du-NLGR+n)|96W=qQWZ%*N7tb#3_{ zrc^xhRG=;z-~TbJ=OgaZO;O1B=c|yb6#Vb_S2O>3F<4k3p(f6tGTT^tlP~9ugk0e~nbONZZu3wRcSuBfMxL(QLt;Z2lw^&YMWW@{n!Lq+&6zS=9o#8c2(;9lraK6b5`kPyf;$0RIb8#+c6$*Z#^)frlafaZy z!p_fl2E^DBt78R5TX5chy`KS3SS;pNC?oIK7EjVSFk`?}G-up`C*+AEP!uy(a8!>t zQ>9Y<@l*kiKc({S6h*3F*D-gQ56Tej`NWG+YpyDXq0|5l?-^zh@wHOK!*XThP2A^% z7l{EcV#mx-aFiI|Sh^OJs^3hZJkYn4YCb_fU?gZkctWQYI*ZQ(^+eDY#o!Cx5k^LB zY2$QS#xpUGXnoAVtjl0lrg77o07kxur;kzFf1$V7y4-}kWW^fjlL^~VjfyAs&+Vp? zQuzU2smgIZhUbl^Vhl&|7+%a{c+T6(Yx)dQ1gDRi^C*Iq5fQ&rnYtzYEDZcijHkJ^ z?eJSV&lP_({!1RclT-R#hMzszDfIvKr>VaF0dxL9i=%75xoPWX&2_#Wb3;$3%jtAE z&8S>yuBs^R^!N+RwIyXGR&!aYwboi%R%y=nxw>7Bepi9Hy{`44RSsWIacyy@&(YiE zHv3$MJpG=&UUOM>b!BbsZm285PB>hSP7f&ASd6aPR{RjeB*s1zucSmRR2C^q)Kn!+ zNmsIPuaJ^rkfY#tpBhBGGsGE1l;b5iL6YatiZdj-T?dnjx9m_o-MWKG#hoEkKNnI_ zO+FIRg!+0(Mlq07ptWX9^Pm^SVEcJ+T9S=u73NFr=fjUU9?!vOf4&ip zggby*5GYYWMRcftix_@m02QiL@eUhWvxMRE19-gS8j=cW5rkD5rz7jWzdqnWs-gwv$rLH!ncAUsrcz6lrP($CB7UMP@;kg>m~epNna=F>m+@>q^I2}m{e$x^bJ8J zmQ-kx^i7g}lce7y={HOI&60kLq~F5EBe)*~R~|J~VXK7SD)F^Q`W8vwD(PD#eVe3j zll0pq{dP&eQ_}C0^t&YeE@}REN%%)3{3GytM9}tUV$UNIemCO_R_+cKv7~}sk~<_h zu(7gw{3a*qRY?wgU#oz38beYc#vqaXSja{bWQAJhz#M4iGFi&Ow`ixqg=DOwPv%tB zjZX@`&-x_&S0w$nx!la~i(o>MlhF`StYrEn_#p=iJdr)Cq~FTrLDZ$-`|I@oF6vV7h7yBAO8zWmau%%QGDThrzK_}rLr#1iNq&Ok$xI5q zk4Csme_(y}BgZuGa zF4H+I1^3@27;zbS%jEU&2$u_)TnA5bnfy<|)7v*t7Kz6DBG)%!IR*F2 z_qe=}$xZNkF6;c8AT3t6ulHv&RCD<$hTj71T&6cm3hrlvTz-(rE$}Lr>12|EU!?y& zqj)#@3eb-iNrKGc35o534W^dlq)ZB2W z#MAF{l$6c@-B^D=&{EF2<>4K(kTN8a&WZ)Vpej&w0?(+gI7*^Yr?y)s90BPq(A9+tt|T+u`&0T@8n( z!z%Z7AMAId#_4&~<9Bp3ARDW)z_2zo?nG1l{b7f&-WuY>wAo-zwgjBBTAR_$!w#Pd zhqD2Fk4*X(H{!zq$Q+q9qDg9Pwfgt^Z3p{zc$|KBaAc=iVx*4#u6Z*X#JFB%;**m-Yy7qf|9}QLptHOm|wX?^u!{PDkA+>qh0FfTY z@iARLO>He@hU@#f`+N=l@Et2FXP8D$cXz9+%irR2b#;5ZUL1&iOc9oTXqy?3HG4Vl z3>a&<)8{zc=;-%1Z}IfH2pP$&0B)ZJSfTgnJ}868**KY(txYzY$KT`dqL(fH2y3;b ziw3;1sEW#r zC%fP8@cDNHx1j0qP>WG+Z`iu=KIm#(z0R4qYA~*KeS|KSu{o&M``8cxRPO0L3T#GpFRy`=V>k(m9WD2!xyPrPR zZ1Q%rZfa|Y$iUYp+b%Gm!bd?Z1^p}#FTPy(Di7OX+TnVgfw^djFfKA|b0l23fsT6D z5)m03h4M1CwYF`aHdM^zkoRCEn;<=CLf^Msg9i6aZ&u5iiM@f3X9zLd>RbE#4nKYa zgCHaL|;R*F_Q%bpq*6gc=oOVhuwS7=dvI2`1}VQbXUS-DI^RA zb2_$>OlLI8ODTU+{}yQK*Y6)BZ^Zh5{50TSFrfTZz>~R-r*kFg>3o{-oc^~+#E1W{ z&1Cu_Lh=BYvB>1FQ2sT5uXFh%mtW%YH@W;4<;Z)D*T2i0stKZ{;KneZi4{{jH3$3yltk}=;W z<=eR|@*5;SuitYM&hl}er++6-z|YPpq({<1%F#a>ck*K^&pUbEOF8=E$DI60A{i%f zG3Dp@JR}194xR8VK2L)H>qvhdpp9~r86MlQdBb+gsUF*{r2IRa7wv@be>ccqN;p1_ z#K-!Hc?Z>Feu#2x&*B69EF<|MA8*XjG?URJ(0HU%j^n}nKxGNZ=vNix2%;|`)ZWeO zSv=vmeUW4ww*<=1^0-AFic=aF<|p#d{fc-Vp&WU7DaU%&9(kT38F_?1Y+R6s`Heg* zjFulYE-5leYn=zovKe_%ZzuU?<5}_3@+}O8Ot`@jE&(_xtqRElPgZfFDYn z4!;9RI`ITkLKP+Vd9jHA4qR_a@V}k{m}wh*ge&7Ljl$jtXK54Z#y4{_<4x~AkTcz! z?xQ(fk?sQ)?*21#GviHYrpXAs^+ZNazx&K=Kin-SGP~i969CP4)0xG%bmy5FJ=^VP z=GNA*_n?{E$Ty;y(P8gK_uIs9qnV{i@D^mag57tU`?nMR4i%X8X&Xl9O)4_ZI_*9c z85{XlHA{y}`;GUj$OfztZdo(a8}D1QAPqOKnUPlc4mJyX+HGuRyy0FpGjRH?Y-YUS zel{~O%uOxwyaexSvycYwEbQhs3tHcAf)})z;nHnx7O?SNH#1bey5Y_3FKa+IxLI0+ zz4gt~CODSt{-@6lTSy1JC4b?^S7yrBM@JVtuY|iume3~^S1+D#@DE=~9Dcvg(|HiT z*+I#pzP^KAJQ&?yqVML$zt*608l3?h_|O?Oia#=L4b}@B9t$JlHlmKsw#0X81{|I9 z1P+gl5&7sGEpT|ujEHliPWX3r1{{r)z~ON^z?Xq#1)msvC=KXY;Mc@U*_aa!|2vB% z8Am!wEASyZv*GC6%s<2uI^5{-0RHRR^|PsZ+6E!S|%Zcges*EM6b2cS{v-HallZO~ z_|gz6_&${Q5^)0P|CB`%e77aOG2}aoAO}9Qb_8Dnwx{Nzzh+zj2n{4LzZDX0BjT0@ zP{DY1O1KWh(YFPWgnu1~GtRF!Prtj8f6MR@{+*EcE+ZdS1(GO#Pr|*0IAM#x0{2S^ z_d~>84zLB=Od`(c-%<3h6mjIA1s~zxJZ#U#j~no!qRPN0?9M?PHLI)1ki7jB(DAaI=EPZ8`^Ai zgz?p3F8H=cdv%!dXWU*HzdBZ$S3;SgkZt<&l2B{kS|w|VJ`UoLE<})e4@Xb419l-_&!2DvL%w> zv*5Zm&f9+??kNGnT(nt+IODusL%Slbws0Kv>oXFc7r!yr82E(Uha|o`$S1~StAS7a zJrQ`-zem0-tQSe}y(aO|!CUy(ieSNaL*h$L z3>`ngcU|I(L%wF@p}3-Rhv17xBgXkSiG0tZUL?U6jX2|cv>5odBUtdQmiV&p5PnLK zVJ`TpCBD86e>XW!_*;Rv z4g&B*{!#jwWY?Sza0%|WZnC*_$6TE3GF6kVePkY`UnjN84Y$H;4_7C?t(pPaO*hOx-QF9d zr}o{8(#G-Y$pQ0s@d)|jH_U#zp7bdior*QaS8hLCi@@GEHeix69P`Jc7~2i=dh-3a z7XQb`ZL4?8YA=5?o9Sk*Ey z%MZ-Po-T9a-~ZisV4k3At)W-zR(`|20LFU9Y+3aa4eVL(GO0hfu9~l*-}|U5>;4`_ z(a{I#mNiCo30tFrVQE+uTB{d?s|d@`=zl zD;ky1k|?~|Fun3*!ua{OekB z=4EZ%%4>;y#>i%ktcKvz+UW3LCTE|}qM@NsL>mf6qLJ{>h}Lfzi-uk{PH3-=E zZsiA~gBeRN%$u5JT*{Sm#ez08HZ~HCeuKsbFks!#Gdc40pc)vR8$3|X4zA9(CvI`*XKubDoAErs7N z|MJ*-Tt|-M?XVfrkJ5_$7xKhMojAYBdhs-89D73G_tQlWzT~lag_-|3fp4R$p7`6a z-SNAQ-6!xJ^r^?*>q-$k{%*Go>{E`-{q3hCH1614!p44?o1F^HmrB%UQ(u-+$?307 zj8CUh<)ut&DwTS5W=yxTOSwXE>@@Ny!119(E|;S^k;#$7rF#BTHWF$1f?*}hdf`Y| z#v`K%yB?xOFnj4@JwRl5shle;OciXyvX)AAqVD)2V}+vq@=k!mMj?Ba2d&TB$o%!E z6&cAIwmxsxdaXPA$cS$505&;Pzn95KeSc&$V=Uwf?orOnr6LhLp*h30u^QzBFV!%= z{!YR>dZB3Lbu5ion@xB0f@OSj$tcV(W6|23BMk0i!sbA=f_Z_Gtf)qivziDq*PIa^;u>}=5i)ZIED*kUhYmp)2eZ&Hu- zPpOo6ucvg|xSYdYOl8Z(l&Kf8iv|eJzVg^cMFBd{2uTVlmQ58=MKC1OWMds_zQv~G(L=XG1e=E>a_<-89* z592wFHF(+9EqkdH+VPu5G|d%qc1pJ_eOYXs5T8O3u!_8&u!-s(*3f)0pEnBFb-3n- zkeIDpX2~|N^%kt+QVH92r}8U>-={UzVT-MBxxVs6|+iE|pRZ-F}mGB@9!fpf2+?Dqgb{7n%xW;8%tZxcK<%M)Lhk@;L<4 zuqPxLwB-A#J8<~l-1i^C z=z}dq@_hoo`+1ym&6mHXB;R37$j$c|4EH{je4W6#`Lf`Pfk#8(uPe#-3UIvs@*Krr zOAfe2o$WIozF)Y;$6sTTF9RGucgZ&io7Y*2xi2n1f*)fm$Y3amLHOL^{}iw%v#b)mSx$pC5Y`jR=e7b_sV)K ztJT^rP^&nAi$e%W0M`Z@@_-~J)NxTtPcU^bB%z@_GNnCnN+5;wIDc?J=}8YQ_|*M= z_s;Cj&OTx|p>xjF%x}K$e)F66%v~K0ZtHM393+E-YA9yf#E@ zT+=6q9KLf^=ME=29qvHu?=Bhf#MB)_E;`;Ba9{b&|6VDhMc$v^UFH4vyV;6`6DWPI zhtm~j6H~`-dXA3lDWmx`T{Y?1MGv&n#UC%Kp<3S+pNGy>G4IqKH!WUxYG(rcG76Y; ziE13vjMSJ^K*6HO(C=mc742|2uN0eZ;!4KLMG-0ZUIXDqw%!Wx=f zb-Dg9Ihr18oi}}9=1qv4mAXoZ{FPS2d3 z;Wk?J!fCh3B|B=?PrH6XHNUyQ);pJ+8yz)ozdGYFJ8Zm6v?qBkH|&iJEJ52vo^EY= zZStmzLuq=p)i-@{=vkCJ+OcQoxjQ#k{nLRxD6u85Cvp+-#fYQ+(j^{6zt~M{Y5I64 zkATPa(AvMZdbFCJ*i-AjEwF~J_~RYy0eK(W$?+PJ9z1=CZEqZ-!bGpsJo-A1&i~j= zwO^W+xleX};Szbz4rG4%dg91HWw(pwG#CTHfwFKg{PLLv zR?XZ;X3ntwq-WrWn^t3PxqVi77(sVMz7%;qa*Rvsbv5wgMk;ZZr=P9cdSue$!kjxY zFt^?uR_%2XY&JgT97E1vYc zuN#Z&Lsiw}t#mNwezf8>TdTPxpCm8mxSp!9dcgH0TXRk)&dy;+M5vhJT%OS~c3Gvm zsLYD1$w`haHYVTse~CNW+HQ8&9PAAb?ss=?|A2dQa>N}RiNvDOSkw)0oqI!LZNyBi zcDK~k*ZJM`K7WhfSKs8WNydg_;qlmN_Z^#e^{fvkM`~MYBgydSVBDRIrOk13Y}8%f z+}zaCau;pJT0!AhIAW5c8p*N^eYHI_YwqlxYaErX`HmYLHyTxrg^opzWf(tNa45Em z-oB!kWY9d-gk7oG*K78CD$mK`-7y;s?2@@S@0!_Q&;kwT-835vx>3V#%z{W6SPygc zt2BI}hA-6cMH;?H!xwA#VhvxS;Y&1psfI7r@MRjlOv9IJ_;L-e)^HvU*;Z5{Dfc=sHTnz>_Yy4)5-<}~gXHuLna5BstzkE{627_+Va6Ua|gF&}x z_-$DbDT6j?IG;4L!JvSK2P}VasuCd}6IN_ctH$ROYBm_uuHo65Gs~ckEZMRJ7@NCYG zY!WGhc53)e4e!(NJ`L~J@P68u!zjZ&L=Cg)fNIhldML-v_9SN;^uZj|pxZTD-5r?k z)Nn(ybN3g6$~1hIX3y4abyw%|uF>$^*7i=)Oei`gIEi7K%_)GA%h`W>1b6@1?LD`^$otKm;*_V)#!@4%Hf3BMuiEtb8Oeyi~p zC_{|PZ_@1BV6(rrUM)p6{3DwEdBKlb<*ldZh5f2!`{{L!|38|2MY9(vL!SL>hRy!) z$oEhK?bYm$3Y*7|2m252=*-`ZrxN?g6Pn(4H2eGFeaZi+u%o3ghl!K5 zyXmW9NxBvDW*+s?DPePe%)`mxyTXQPwF%vBCS!Gji3F`k(TXUAI=Ag;-MlRn8lQ-S zx1ztH>^9RE3=;BQGK&9oUF4yD4$eX&$1ni@+6cWv+Uhno73j0M$VWZN_y zu(Yk_kuFHg-yDhUGe`SzYZ@Oh$N9<>j29B|H^oMyIW()i^7Q=4*oP)!*xYN5ZV!*d(A-?F;zKR3p9aSghjRL9S9f21h(=-~gNZ{W+NifX zUa;FXj>l4M!()T{gCiMF*vXcAtmYpbJQU2%hK=&GgpTGlaArWF1qLykLK7)-I5ddi zV-8}_jmHL47$Bk8XeyR0NjPYx3e~DH84E`Xw|oPJmyI+gQ)A;B`s2)PK|v$tXjo2- zZWZ+VP}^8&JcS8vy&4_vO&1(-`GYr-(`>e1X78Yxn=fZhZ?{177V~Sv-FiKbh8))fk@ajouQNL-s122h{76E00ll`svGfy%mc;vsuj zbFuL%caz}u?hg#7gQ3CU;&s}%FE$!WV(N75-Hyekt%&vpeWwaq%GeXrJNh>BLRZ+= z_eMV0FqRn44BWilyvpV%D&YUU1+dOpCx)*4PDLZ8w_-ov-WO6FMSr#@`s+ggdeOr@ z{h^M&#!%meP{F-NY%tc|XYC)EIbLLc$>7c5Xfzoc9~TQdFOn^Nv5{~hj)fX84_l4E z*-bqYsn|he*(VxhIraMo$3`)KCkFZ4;IAJW$4O)i%ln~FYNR)gMI<947T_kVuE|u; z-s_ZF^O=b&*#E)p>XK~LS=|@aiGpFMHXKV78 z{)YYgZuwsm-O2W8qEU{YCQ5VsEYU|eevAlBOHNdR>*?G=geD{BgLoK!Ld1U~{6M|t zaz0|qzrV7-bvdVyiEz^{J9d84<~t|tdysQn#0N$F{?@LKGfDVjf-(--?eF}A(EAI! zznpNA`^ouHyS~m-MC;i8l-)nhBX&DGC+zw=@3-&qPE<0$yw8gEK49NxoqtN!Z{5xh z6ZJBl68-Zr7=6a4Jl7k@0b=?%Vbpa`6bU~`A(I-*Ax}ZKOm+{XlsYQ;!NRZyaYqucZ#}}ck3z5RPR1Tneqly zhhNZ&k}`Lp9MA~WCV;}ynf~cJDOS)ixZ+SP0dSTAtTApgh2}oknsm)Y~Wu4RuRzy8& z`~hcjwdBGl-eQN9yl*`@r*l=e;5p^JIY_^I%eB>C?P0ip%kSl}xGp)y+lsoE$Yom| zk9j}x*ZFfRmA6*dA8W9><_($x*R(&@=`+7@ZCwA+&!Jflti$?5qV8(Hms)R{qh=}; zPA0>L?1s$rPT^Vb-V9g!-p2=vI{wzHm5f`3-q}H_8yp)M!KWvx!+(3!g;V$x8o@;e zCzE~2v55puGglp6oWtLpvw_d8$g+Mc57(QF-eRO3cxK_@@Dn@A z{N;NHhiW{`lRxk2JjOVz!o%(VZoGBiSmlZWSdYh&46@uk$WVE2z?K+uWg1tZ9Ny1i zbN|X9c`qQt(i6b15ML)rh$U|ZX_a>wb|Jl`AgR1LFbeTHHQs#KD+-irYP^lGrB6(k z>0=u2X4u^BGDzN(#%nFY`Re?0G zAItG@U$eh!q#j}ppMYMuowWXnY`O^vOHX9%h91AqdewNO-XY+se-FU$SxWXFsW&0@ z1U8`Pc@@1!HNA7t<8J^mNWCv>dU2(`D?yh2y`t&;6ngWe7-FgSlBRc1(c?KL_5MrK z`%mcIT0rk@P4B3pw_4F#goz7@O#jy5y)6aw7J#Sr?{Vl=fye!^7LW9Alctx3ULpT( z*7Qy*{?#gaW18L>=tY6c0MiQlHNA7tljCJQ7}CElYkFL-SA_;gQtyPO_cHXjUAVq} zJW}sPsV83i6>Pb-f|k+ywZ?k~cA<5s8p3LSxL|XcGH|&ZmLj3{M+F9{8~M!T|8ip< z*S{SJRqsyNYX35iLjVa?&j&p@fAL=m8NGzm6ZL%@cA2{HS};VZIS+oS}_O(4zVxf749 z$174#G{Co^$Ky%{*)A_hJ(2N-Qjac>rQVj=x$W}3B6{uMsqONXqSvkH{e#pK4srju zMVcd7-xsBxz-FN5Mw;u}gGc)3LgjdVVY#rvFQF$jID^xc4W8wn#lqObrYq;$4#8o2 zKK^jOI7Pe6Ku;Y9QoBOx30@WScpkBTJMl1&^(OI$W9i>z=<)yB$RPFZ2gxc|0L)`8 z86@vh;HmZSq1;D6Vs1YkS?)7J&xbq?{pjy~cGCLGW%2VIc<_yfk`Jx%a;F?)AGTN5)45K>%g~IAP5La5ig*Ww%y1p%Zas*}UY) zSe806U>{XatEVEu)c&b=7e!TBxxQ>ctO~K}rCo>z)ibIE8N*Xz+Kim*D>s*gv(R3% z)bWD#S6h~9-|o%q%h)r|MTFOa>U)c)RsWPgT=lb+yW^NK&f;1mxbouZi!Ihuqt3Xv z^zo(k1#nic&Sc?L;jGYp=jLa3EElh@#N*&>U+sH#CM)(?bAsc@=-Yu^%9F|y+u&?F z5bIhV`o!Exhs)QY+{l~oe!-FSy8<`!Lf=1gCp#P&m(S<$1{}&K`M2WW`d~Gltp#|c z6->~tDZHP*wTv}gkTYeW)!g;KM;2)EcEWR!Q!Q`!t*g&xKfVNg=A28}VHLc>-W&O! zskieKTYwt4wX%> z6vtGX6YNJu_Xg^e2}SVSDf0e-qcZ0f>@mM1P_O(4$7RZ$v^#vaa8%cFK6`y8=I_B) zpX7fUhu#lXqgf}wIg0S-yt1tK-;_0L;{#{IDoE|wt1TD&b*pb?ao}C%+z+#j0b!5e zy^-(A+|CP<&#&M!tH=B?wKcg}%bL|6XQ8_)*M4G$se9q?*``4Eg0gZoOJ3WFn;45) z2!eXzwqOA010CTNQ>wyIP%Zq%*XlbT5aHK8XM9`0l%=-H z3S^a_pen(47M0*ImP!zUfxu&uGZTtT&q%?8-;{<^Nogb*m18kECL!1(4eaiXCe%)8 z$mMalB~QP5$ldSpO3sx0v>ZvxozfG-hbQ_Xsbud^Z!{H|osLT>`B);II65nN1_!-E zL*IqrZX8`ijzkk6wBoI0V6t}ts_LpIwg@)!1HyyCm&F!go3LGY2uFIC8Q)_w{QHiP zAg+7M0YrSHMia5dXd;+lr?CQkqlsYQaGYU-iBQGiRR)yeS95qZhu3g;4ToDf+{)o~ z9A3xa^&DQ$;SC(#z~Ngtd@F}Had;DlKgjvb9KRVPWYDFXzA!USgcgq9!XT{_VLOL! z=kOgIzJtSea`^ge5aD4Cf0%18ak#|ctsG7Xzh)w|ad_Jrh<75ib9g(}fR^Qy*(S|f zYa-%;YBUiX;K2%dXTE}$4fA`3^M6wCDY6ao{Wj+x#KzRVOT(++x18UG9U=T74X=hU z=U*uJFKc)WTtS~%Bi>x&e4F7FC42;Z(*GJ>Hn74>!KXLX26b?*;J>8#_3(SH{l7S0 zGQ8rXe;9qze@tuN0LKbG&6^Fj!fOSeGRp={aJk^yHNP1?MV}ez*$hhr`Mv0qzJ_5w z%N)K~!0FAmVLrdZ`2sE})LxIj13C-7OXKf^!v&wZVZ(eqzRs86^>uzLyuZ$G0~n4) zo=nXp)UbapJ$5L3SU!?St8&UUttenu!5)KfaQu*ecsv|V&qc#y;qZ43dLAj!D&QFj zxgRZpW1hf%T>qzKHIDyS$~JW0Z^QKwCqrX}h@OFPu^;--5W~@ZV_uOr*_$s&bbU{Y zb7P#aVx)4tzwgQXKSaVYc|65=4$8A~Dlxr@XMW#}y~k4tRUQfHd3CRxV~hjwr=pYY z@Kcn323~Qh4Ln9G)hqWST2%IqQ1sA&xLP)|3-ZbG`S0#e$&pwfG98y=Bge`L?j~lr zfxGpPVKpw#hIKN|K?tXz)D)C#p?A8(19p2z+&CGN{o(SHq4&L_@l_%eDnF@SC6$;} zM?wb&BdOS2V)p33q>5cmj?g@?I&X+bjCx?YB$iB+eJq1ou%~A$3RfiSQ!!Y4gVry? z{)C#QCAH*wTUb@gw#SwA^RzcUvT|`)o|l~@@9{)Tjc<_PkEUhyTNw9gaE8hez<(WB z`tL4j54NJ%m#F+Y;BJrQ0X>ch|9Wcp7}in!1mM>LmdK~QpGqf{KKyZ|=aXtAilv&; z%Q(AJ<%|lhSVWD0E1FJ&iz-}Yx7HH-j<$_#x_NQgRLgBqw83s#`g87xmBlNywCl5h zAF>4AE%gVzxBzcVH7>&& zv$@5%f(G|klJ!<;HIh>26xSE^-Qk)(noP>Gn7?>B<%+0kDiNJi=U*X?}^7gIe8voWV`U9HGd;s4|4dp^c~NP#bw|0tbZXS;Fn#|81Fr- zG3uqzr|)`Zj5mNJBkuwd==+`-R%UjU9N=JkY*K zBS9tbaKb^*qIE= zm+xUaI$vPM^v-j7ib0P~`k3Aykw^2#`b7FHw@H&Qx*D;PN*4DGYsDMmynKp!biTuk#jQe~ab7MO#z7~SOmB$OvtvI9W5)Di9M4&T z_X@}BDZ#tK@%l^fZgafd$YXt?KC=5mg|o2!LdOS?cZ3ZBOPVvfzKuMD6bAhW9a=k? z5r>RQrcM5zkT->GX+5U38oQk{kET|Qp~Y59U8!J-&6=c1OT2}cZb4f@i{ej`-DK>pnl$WAV->-J zAc7Z9z4W37p?DIZ7olD}c+E-t2RwQ5FVHvXPO}->#DhMV%=_m1=FQA|*_mgBtMig1 z0XGR^&_MvNgKZ{|Zg(+=z;VczVe5HW+REu)$}s6G%e0|MlQJEJh6dO-w8)MO@DyUc z)*bVP^+t>Ac1FhC5ogB_!R_En1$BYeJ2N)nYn3h7+}4`A-Q15Z4zzs!k`mh}>XiqI zwscL&*)^q5Gf1^cstS_R%4|ArSaeFsswp+8q!P(&GLgzCF`GOjx(WkVS#iO-N5Whd=Y{}p~bKi^$$xU(n)z# z8k0^*6Mm#c^XAYGzkYjpxhul}GWfhSV$7b$Wbnhd2LocS$q*3ufS1N-L4n^ZDi_HR z68I3O+Pw?|0zV+|VSx_|{Gh-O3j7fP55XB6VL2Se7RB>A0{-e^wv#BH|EG)D$)b4P zqd1w(kG5L~(p`7}Zn~J|H40&P)rE0?xvGB8UbkpTBXwe1mCN`CsSvf&XuvrNrCUp> z)WMQ`s!(he=Z%#_sc7CWxZah0cO_Xeu~C<4!wkZnF_Zs3X2u|^R=v>dweAe5S9>cm zk8F#QLJ`l`D^S`ddbNQ0=p{;~m}(if+1N8D(YAaX6Lc7yQH6P8a3j& z?2h8b*L{HlUflv>@2$yo9|TNQ$y0@+_;cn<7_N%VXI<_a)-s2DExWUGljUi?^<;FD3SkL#s@B$9BupL8x i1RHw+BiPtW!)t~vj3W5VgCOSa2|@P_1AOA7NB0LE$C&E? literal 0 HcmV?d00001 diff --git a/hardware_test/pioold/build/rp2040_swd/libe40/Adafruit BusIO/Adafruit_I2CDevice.cpp.o b/hardware_test/pioold/build/rp2040_swd/libe40/Adafruit BusIO/Adafruit_I2CDevice.cpp.o new file mode 100644 index 0000000000000000000000000000000000000000..6f288940ad16c58c985da0e0d67ea3328ea8e696 GIT binary patch literal 3128 zcmb7GO>7%Q6n>NSPwIx&ahonx@ZNeS-Asu?pR}I& z_WS0|o0+$7{CeWKrx;_vjX?0X697TUkcU_?p1zqbCjDzJ7}q6z zZoZO)V9@Z_{AD7zWL+wH(IT?R(;+s`}jdkzbxw`|Q z-!`_lik7d30LSDiNhZq%3^c9FK#F2*d#ww+)i(IP{af7yN8xImZGyaA8{eJ9TZMlA zMq2Mf4`VQ=SCW_Ge<6+_?%bX8*DVj~{=n$G*CgHZ9_hT*O8ke7U$(Z_+_;*f;L=aP zjfLLwt<~#E=y@aV+xRf<-P9>|jBNBg8@{o6dyDnRuwA>e=A~Wffp^%|&*R5#{iBa` zz8{CpQ^2Z5=Lgt>AY2=T){Z`FB@k*_S37>+V)ETu30DmADe!ze{#|F8U4bk0)k4U< z&Vo_sg*slYLAjV5*Ku$4D()wf{WVBVPM(!RPzqUHHninjDYsaV zqp{e?*x1W3(T``ZXi6prtQ))TGqVFz;A!zr9by63an{C8O6{zJJs_j!vcR; z;9CT~Mc|JJ{1Jio3%p<8TLr#V-~$3a2A%kZ&WL6TfD4`x@QRITWB~W~T^paZum`@h zahHXg;YS;*7WP3CIw${BKLWTvkJ`b20L&ku$Z#%(MD@W;T+V-&dD1G(}C!plm#`5ha#uWkHERtTo)5`=MdA~z>VvM@Vzs>OOE*H7Ul6}1%HP^`2r+B=@h*oDuK_?kOG%)9iD!Ktg@!rhJu Gxb9zETf%Tz;^6g@4DD= z?=G!Fkl0wo3ZGcL58d3MR$`N2K^mbEgAr*O;sdJ?4njcbmkOjt0!gz3=ny_dM^Pdwg%c9zObnAPB%n03Y1v04{7cHRauA=Yu`a3d{35q2isU z4D1uKl{puP(Uq28=)&QZ!^6>6jF)ur8x_(vSXsWeBIMlB@Yz?+if5zIx1$p5(c}8P zg}d{xuY7jtglBedrebza23kXgJLfUndRTWwhoUd(AL=hhFBo?hYUf=LRKQo3ukaF{ z1horklx>uxgK=TU}mmlj zO84-r)_@EB8}Y3o1Piwd+Q1rFPeDpAEYCx>;+<{ax>1c0cV~o4WN*eU=-LNekVdIAZ>7O-vWmU`+Ba6e&Fn!=cclk}oqFi@zWZAN!&-pe3bna$HU%pKuk+^^mmMFu~b}FK)%eWMjlUvgGAhe1_uwwJ4pmLr*}Kmi00w+9!_7$=_@(?22Q^L zn$Y6H>LfRC_BEV+4X5A4={IruT25cf={IwFtH?7W5$ZX8JyV&zh?Q{ddT!E7rPa^E(^gHh>aU{ZSPQM#=p`4bRPD&Z-og{+fWYOOX9Vj9DAhtR@ zFB8}^qSe%}IrTrX`Ojcqhv(@Q$Cslq*>5rR9`F)l6XCUS`moJYoI0oknX{kf_-}Ij zYqtMI?CW3y{FKw*;P^k-_Evs1@TtvjGvjZ9y|{4XLb=xAbJXT7`^_+I^L3`a9>E^#r?rHvDWk`FV_ITL zO-%*@M{smLrpX8%hRDg(`7`(|3=&u`NMU!(0m+fZ!vd|(a;PhO4p9;lqvwjIJrpo) z3g*-^E}vFYroK0=rbZ?cveG+h4IrVOR*l%i2~9O*h(yf#9+^@TDupZv*Jt1lg#Ns& zg-4Y$kdP;0(<5qJo7Cm_WGbOE#AoCfZd@q{rI<l6g54DKYVc`tQHG@Fu;dDp&H77uFIOCrcQ^(if3~$ur?cV9Kv7Ob-4DNr)>z2 zeqK2<7Kjwx>~0O$mR4VZq@2VV6`MuC0*n}noQhaZ2yHqR*_lAMnL;F%O4ts#$4Gmz zRpHBBP5l9@Zd7%FS(mF00?>Ve_#x_%f7a%|Wb;&SN&hJIXq=$_5Ws7;{)*kt+VY=K z-wW`OEvMo_xD|HaKt1|PHs5LUk5i9+qqaP1%Qc(-s@+!+ZV$jl8=t-)s`~Bu9R{rU z$YXEL7n3&aKMT-I@;(5+-Qy6d9<%L&R7;UZyB*XczG;toCdVZ-{Y^i73=)s}3fs@L zL%#-F4t{+)X~f2{H#DnP*vODG2KW;(BL@C)T?apY&G|{_FS5DoEs!NaxVlv`uvx)M zTCLWpl9p>r(Enhrz(eO&u;@J8qHwqZV+XRSls<6pqo$7Ry>Erkno$aQN5%_ z{1i4Po`F2oIYtcc`zUbQeHZyH%m{mC_ZE(waifm7bW>w-e}iKu-W>88HbxBZ1`3>b z3gS`yrFoE?;r$24PP|rR=zE(H*%AF4n-lLU;$1`;;nB^H;rYHN?f5O0;< Z!e*vS5)Mx+z literal 0 HcmV?d00001 diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/.clang-format b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/.clang-format new file mode 100644 index 0000000..c6cdd16 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/.clang-format @@ -0,0 +1,243 @@ +Language: Cpp +# BasedOnStyle: LLVM +AccessModifierOffset: -2 +AlignAfterOpenBracket: Align +AlignArrayOfStructures: None +AlignConsecutiveAssignments: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + AlignFunctionPointers: false + PadOperators: true +AlignConsecutiveBitFields: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + AlignFunctionPointers: false + PadOperators: false +AlignConsecutiveDeclarations: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + AlignFunctionPointers: false + PadOperators: false +AlignConsecutiveMacros: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + AlignFunctionPointers: false + PadOperators: false +AlignConsecutiveShortCaseStatements: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCaseColons: false +AlignEscapedNewlines: Right +AlignOperands: Align +AlignTrailingComments: + Kind: Always + OverEmptyLines: 0 +AllowAllArgumentsOnNextLine: true +AllowAllParametersOfDeclarationOnNextLine: true +AllowBreakBeforeNoexceptSpecifier: Never +AllowShortBlocksOnASingleLine: Never +AllowShortCaseLabelsOnASingleLine: false +AllowShortCompoundRequirementOnASingleLine: true +AllowShortEnumsOnASingleLine: true +AllowShortFunctionsOnASingleLine: All +AllowShortIfStatementsOnASingleLine: Never +AllowShortLambdasOnASingleLine: All +AllowShortLoopsOnASingleLine: false +AlwaysBreakAfterDefinitionReturnType: None +AlwaysBreakAfterReturnType: None +AlwaysBreakBeforeMultilineStrings: false +AlwaysBreakTemplateDeclarations: MultiLine +AttributeMacros: + - __capability +BinPackArguments: true +BinPackParameters: true +BitFieldColonSpacing: Both +BraceWrapping: + AfterCaseLabel: false + AfterClass: false + AfterControlStatement: Never + AfterEnum: false + AfterExternBlock: false + AfterFunction: false + AfterNamespace: false + AfterObjCDeclaration: false + AfterStruct: false + AfterUnion: false + BeforeCatch: false + BeforeElse: false + BeforeLambdaBody: false + BeforeWhile: false + IndentBraces: false + SplitEmptyFunction: true + SplitEmptyRecord: true + SplitEmptyNamespace: true +BreakAdjacentStringLiterals: true +BreakAfterAttributes: Leave +BreakAfterJavaFieldAnnotations: false +BreakArrays: true +BreakBeforeBinaryOperators: None +BreakBeforeConceptDeclarations: Always +BreakBeforeBraces: Attach +BreakBeforeInlineASMColon: OnlyMultiline +BreakBeforeTernaryOperators: true +BreakConstructorInitializers: BeforeColon +BreakInheritanceList: BeforeColon +BreakStringLiterals: true +ColumnLimit: 80 +CommentPragmas: '^ IWYU pragma:' +CompactNamespaces: false +ConstructorInitializerIndentWidth: 4 +ContinuationIndentWidth: 4 +Cpp11BracedListStyle: true +DerivePointerAlignment: false +DisableFormat: false +EmptyLineAfterAccessModifier: Never +EmptyLineBeforeAccessModifier: LogicalBlock +ExperimentalAutoDetectBinPacking: false +FixNamespaceComments: true +ForEachMacros: + - foreach + - Q_FOREACH + - BOOST_FOREACH +IfMacros: + - KJ_IF_MAYBE +IncludeBlocks: Preserve +IncludeCategories: + - Regex: '^"(llvm|llvm-c|clang|clang-c)/' + Priority: 2 + SortPriority: 0 + CaseSensitive: false + - Regex: '^(<|"(gtest|gmock|isl|json)/)' + Priority: 3 + SortPriority: 0 + CaseSensitive: false + - Regex: '.*' + Priority: 1 + SortPriority: 0 + CaseSensitive: false +IncludeIsMainRegex: '(Test)?$' +IncludeIsMainSourceRegex: '' +IndentAccessModifiers: false +IndentCaseBlocks: false +IndentCaseLabels: false +IndentExternBlock: AfterExternBlock +IndentGotoLabels: true +IndentPPDirectives: None +IndentRequiresClause: true +IndentWidth: 2 +IndentWrappedFunctionNames: false +InsertBraces: false +InsertNewlineAtEOF: false +InsertTrailingCommas: None +IntegerLiteralSeparator: + Binary: 0 + BinaryMinDigits: 0 + Decimal: 0 + DecimalMinDigits: 0 + Hex: 0 + HexMinDigits: 0 +JavaScriptQuotes: Leave +JavaScriptWrapImports: true +KeepEmptyLinesAtTheStartOfBlocks: true +KeepEmptyLinesAtEOF: false +LambdaBodyIndentation: Signature +LineEnding: DeriveLF +MacroBlockBegin: '' +MacroBlockEnd: '' +MaxEmptyLinesToKeep: 1 +NamespaceIndentation: None +ObjCBinPackProtocolList: Auto +ObjCBlockIndentWidth: 2 +ObjCBreakBeforeNestedBlockParam: true +ObjCSpaceAfterProperty: false +ObjCSpaceBeforeProtocolList: true +PackConstructorInitializers: BinPack +PenaltyBreakAssignment: 2 +PenaltyBreakBeforeFirstCallParameter: 19 +PenaltyBreakComment: 300 +PenaltyBreakFirstLessLess: 120 +PenaltyBreakOpenParenthesis: 0 +PenaltyBreakScopeResolution: 500 +PenaltyBreakString: 1000 +PenaltyBreakTemplateDeclaration: 10 +PenaltyExcessCharacter: 1000000 +PenaltyIndentedWhitespace: 0 +PenaltyReturnTypeOnItsOwnLine: 60 +PointerAlignment: Right +PPIndentWidth: -1 +QualifierAlignment: Leave +ReferenceAlignment: Pointer +ReflowComments: true +RemoveBracesLLVM: false +RemoveParentheses: Leave +RemoveSemicolon: false +RequiresClausePosition: OwnLine +RequiresExpressionIndentation: OuterScope +SeparateDefinitionBlocks: Leave +ShortNamespaceLines: 1 +SkipMacroDefinitionBody: false +SortIncludes: CaseSensitive +SortJavaStaticImport: Before +SortUsingDeclarations: LexicographicNumeric +SpaceAfterCStyleCast: false +SpaceAfterLogicalNot: false +SpaceAfterTemplateKeyword: true +SpaceAroundPointerQualifiers: Default +SpaceBeforeAssignmentOperators: true +SpaceBeforeCaseColon: false +SpaceBeforeCpp11BracedList: false +SpaceBeforeCtorInitializerColon: true +SpaceBeforeInheritanceColon: true +SpaceBeforeJsonColon: false +SpaceBeforeParens: ControlStatements +SpaceBeforeParensOptions: + AfterControlStatements: true + AfterForeachMacros: true + AfterFunctionDefinitionName: false + AfterFunctionDeclarationName: false + AfterIfMacros: true + AfterOverloadedOperator: false + AfterPlacementOperator: true + AfterRequiresInClause: false + AfterRequiresInExpression: false + BeforeNonEmptyParentheses: false +SpaceBeforeRangeBasedForLoopColon: true +SpaceBeforeSquareBrackets: false +SpaceInEmptyBlock: false +SpacesBeforeTrailingComments: 1 +SpacesInAngles: Never +SpacesInContainerLiterals: true +SpacesInLineCommentPrefix: + Minimum: 1 + Maximum: -1 +SpacesInParens: Never +SpacesInParensOptions: + InCStyleCasts: false + InConditionalStatements: false + InEmptyParentheses: false + Other: false +SpacesInSquareBrackets: false +Standard: Latest +StatementAttributeLikeMacros: + - Q_EMIT +StatementMacros: + - Q_UNUSED + - QT_REQUIRE_VERSION +TabWidth: 8 +UseTab: Never +VerilogBreakBetweenInstancePorts: true +WhitespaceSensitiveMacros: + - BOOST_PP_STRINGIZE + - CF_SWIFT_NAME + - NS_SWIFT_NAME + - PP_STRINGIZE + - STRINGIZE \ No newline at end of file diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/.github/ISSUE_TEMPLATE.md b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/.github/ISSUE_TEMPLATE.md new file mode 100644 index 0000000..f0e2614 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,46 @@ +Thank you for opening an issue on an Adafruit Arduino library repository. To +improve the speed of resolution please review the following guidelines and +common troubleshooting steps below before creating the issue: + +- **Do not use GitHub issues for troubleshooting projects and issues.** Instead use + the forums at http://forums.adafruit.com to ask questions and troubleshoot why + something isn't working as expected. In many cases the problem is a common issue + that you will more quickly receive help from the forum community. GitHub issues + are meant for known defects in the code. If you don't know if there is a defect + in the code then start with troubleshooting on the forum first. + +- **If following a tutorial or guide be sure you didn't miss a step.** Carefully + check all of the steps and commands to run have been followed. Consult the + forum if you're unsure or have questions about steps in a guide/tutorial. + +- **For Arduino projects check these very common issues to ensure they don't apply**: + + - For uploading sketches or communicating with the board make sure you're using + a **USB data cable** and **not** a **USB charge-only cable**. It is sometimes + very hard to tell the difference between a data and charge cable! Try using the + cable with other devices or swapping to another cable to confirm it is not + the problem. + + - **Be sure you are supplying adequate power to the board.** Check the specs of + your board and plug in an external power supply. In many cases just + plugging a board into your computer is not enough to power it and other + peripherals. + + - **Double check all soldering joints and connections.** Flakey connections + cause many mysterious problems. See the [guide to excellent soldering](https://learn.adafruit.com/adafruit-guide-excellent-soldering/tools) for examples of good solder joints. + + - **Ensure you are using an official Arduino or Adafruit board.** We can't + guarantee a clone board will have the same functionality and work as expected + with this code and don't support them. + +If you're sure this issue is a defect in the code and checked the steps above +please fill in the following fields to provide enough troubleshooting information. +You may delete the guideline and text above to just leave the following details: + +- Arduino board: **INSERT ARDUINO BOARD NAME/TYPE HERE** + +- Arduino IDE version (found in Arduino -> About Arduino menu): **INSERT ARDUINO + VERSION HERE** + +- List the steps to reproduce the problem below (if possible attach a sketch or + copy the sketch code in too): **LIST REPRO STEPS BELOW** diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/.github/PULL_REQUEST_TEMPLATE.md b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..7b641eb --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,26 @@ +Thank you for creating a pull request to contribute to Adafruit's GitHub code! +Before you open the request please review the following guidelines and tips to +help it be more easily integrated: + +- **Describe the scope of your change--i.e. what the change does and what parts + of the code were modified.** This will help us understand any risks of integrating + the code. + +- **Describe any known limitations with your change.** For example if the change + doesn't apply to a supported platform of the library please mention it. + +- **Please run any tests or examples that can exercise your modified code.** We + strive to not break users of the code and running tests/examples helps with this + process. + +Thank you again for contributing! We will try to test and integrate the change +as soon as we can, but be aware we have many GitHub repositories to manage and +can't immediately respond to every request. There is no need to bump or check in +on a pull request (it will clutter the discussion of the request). + +Also don't be worried if the request is closed or not integrated--sometimes the +priorities of Adafruit's GitHub code (education, ease of use) might not match the +priorities of the pull request. Don't fret, the open source community thrives on +forks and GitHub makes it easy to keep your changes in a forked repo. + +After reviewing the guidelines above you can delete this text from the pull request. diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/.github/workflows/githubci.yml b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/.github/workflows/githubci.yml new file mode 100644 index 0000000..8a57d75 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/.github/workflows/githubci.yml @@ -0,0 +1,33 @@ +name: Arduino Library CI + +on: [pull_request, push, repository_dispatch] + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/setup-python@v4 + with: + python-version: '3.x' + - uses: actions/checkout@v3 + - uses: actions/checkout@v3 + with: + repository: adafruit/ci-arduino + path: ci + + - name: Install the prerequisites + run: bash ci/actions_install.sh + + - name: Check for correct code formatting with clang-format + run: python3 ci/run-clang-format.py -e "ci/*" -e "bin/*" -r . + + - name: Check for correct documentation with doxygen + env: + GH_REPO_TOKEN: ${{ secrets.GH_REPO_TOKEN }} + PRETTYNAME : "Adafruit Bus IO Library" + run: bash ci/doxy_gen_and_deploy.sh + + - name: Test the code on supported platforms + run: python3 ci/build_platform.py main_platforms zero feather32u4 + diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/.piopm b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/.piopm new file mode 100644 index 0000000..6bd37c1 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/.piopm @@ -0,0 +1 @@ +{"type": "library", "name": "Adafruit BusIO", "version": "1.17.4", "spec": {"owner": "adafruit", "id": 6214, "name": "Adafruit BusIO", "requirements": null, "uri": null}} \ No newline at end of file diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_BusIO_Register.cpp b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_BusIO_Register.cpp new file mode 100644 index 0000000..f3e8187 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_BusIO_Register.cpp @@ -0,0 +1,384 @@ +#include + +#if !defined(SPI_INTERFACES_COUNT) || \ + (defined(SPI_INTERFACES_COUNT) && (SPI_INTERFACES_COUNT > 0)) + +/*! + * @brief Create a register we access over an I2C Device (which defines the + * bus and address) + * @param i2cdevice The I2CDevice to use for underlying I2C access + * @param reg_addr The address pointer value for the I2C/SMBus register, can + * be 8 or 16 bits + * @param width The width of the register data itself, defaults to 1 byte + * @param byteorder The byte order of the register (used when width is > 1), + * defaults to LSBFIRST + * @param address_width The width of the register address itself, defaults + * to 1 byte + */ +Adafruit_BusIO_Register::Adafruit_BusIO_Register(Adafruit_I2CDevice *i2cdevice, + uint16_t reg_addr, + uint8_t width, + uint8_t byteorder, + uint8_t address_width) { + _i2cdevice = i2cdevice; + _spidevice = nullptr; + _addrwidth = address_width; + _address = reg_addr; + _byteorder = byteorder; + _width = width; +} + +/*! + * @brief Create a register we access over an SPI Device (which defines the + * bus and CS pin) + * @param spidevice The SPIDevice to use for underlying SPI access + * @param reg_addr The address pointer value for the SPI register, can + * be 8 or 16 bits + * @param type The method we use to read/write data to SPI (which is not + * as well defined as I2C) + * @param width The width of the register data itself, defaults to 1 byte + * @param byteorder The byte order of the register (used when width is > 1), + * defaults to LSBFIRST + * @param address_width The width of the register address itself, defaults + * to 1 byte + */ +Adafruit_BusIO_Register::Adafruit_BusIO_Register(Adafruit_SPIDevice *spidevice, + uint16_t reg_addr, + Adafruit_BusIO_SPIRegType type, + uint8_t width, + uint8_t byteorder, + uint8_t address_width) { + _spidevice = spidevice; + _spiregtype = type; + _i2cdevice = nullptr; + _addrwidth = address_width; + _address = reg_addr; + _byteorder = byteorder; + _width = width; +} + +/*! + * @brief Create a register we access over an I2C or SPI Device. This is a + * handy function because we can pass in nullptr for the unused interface, + * allowing libraries to mass-define all the registers + * @param i2cdevice The I2CDevice to use for underlying I2C access, if + * nullptr we use SPI + * @param spidevice The SPIDevice to use for underlying SPI access, if + * nullptr we use I2C + * @param reg_addr The address pointer value for the I2C/SMBus/SPI register, + * can be 8 or 16 bits + * @param type The method we use to read/write data to SPI (which is not + * as well defined as I2C) + * @param width The width of the register data itself, defaults to 1 byte + * @param byteorder The byte order of the register (used when width is > 1), + * defaults to LSBFIRST + * @param address_width The width of the register address itself, defaults + * to 1 byte + */ +Adafruit_BusIO_Register::Adafruit_BusIO_Register( + Adafruit_I2CDevice *i2cdevice, Adafruit_SPIDevice *spidevice, + Adafruit_BusIO_SPIRegType type, uint16_t reg_addr, uint8_t width, + uint8_t byteorder, uint8_t address_width) { + _spidevice = spidevice; + _i2cdevice = i2cdevice; + _spiregtype = type; + _addrwidth = address_width; + _address = reg_addr; + _byteorder = byteorder; + _width = width; +} + +/*! + * @brief Create a register we access over a GenericDevice + * @param genericdevice Generic device to use + * @param reg_addr Register address we will read/write + * @param width Width of the register in bytes (1-4) + * @param byteorder Byte order of register data (LSBFIRST or MSBFIRST) + * @param address_width Width of the register address in bytes (1 or 2) + */ +Adafruit_BusIO_Register::Adafruit_BusIO_Register( + Adafruit_GenericDevice *genericdevice, uint16_t reg_addr, uint8_t width, + uint8_t byteorder, uint8_t address_width) { + _i2cdevice = nullptr; + _spidevice = nullptr; + _genericdevice = genericdevice; + _addrwidth = address_width; + _address = reg_addr; + _byteorder = byteorder; + _width = width; +} + +/*! + * @brief Write a buffer of data to the register location + * @param buffer Pointer to data to write + * @param len Number of bytes to write + * @return True on successful write (only really useful for I2C as SPI is + * uncheckable) + */ +bool Adafruit_BusIO_Register::write(uint8_t *buffer, uint8_t len) { + uint8_t addrbuffer[2] = {(uint8_t)(_address & 0xFF), + (uint8_t)(_address >> 8)}; + if (_i2cdevice) { + return _i2cdevice->write(buffer, len, true, addrbuffer, _addrwidth); + } + if (_spidevice) { + if (_spiregtype == ADDRESSED_OPCODE_BIT0_LOW_TO_WRITE) { + // very special case! + // pass the special opcode address which we set as the high byte of the + // regaddr + addrbuffer[0] = + (uint8_t)(_address >> 8) & ~0x01; // set bottom bit low to write + // the 'actual' reg addr is the second byte then + addrbuffer[1] = (uint8_t)(_address & 0xFF); + // the address appears to be a byte longer + return _spidevice->write(buffer, len, addrbuffer, _addrwidth + 1); + } + if (_spiregtype == ADDRBIT8_HIGH_TOREAD) { + addrbuffer[0] &= ~0x80; + } + if (_spiregtype == ADDRBIT8_HIGH_TOWRITE) { + addrbuffer[0] |= 0x80; + } + if (_spiregtype == AD8_HIGH_TOREAD_AD7_HIGH_TOINC) { + addrbuffer[0] &= ~0x80; + addrbuffer[0] |= 0x40; + } + return _spidevice->write(buffer, len, addrbuffer, _addrwidth); + } + if (_genericdevice) { + return _genericdevice->writeRegister(addrbuffer, _addrwidth, buffer, len); + } + return false; +} + +/*! + * @brief Write up to 4 bytes of data to the register location + * @param value Data to write + * @param numbytes How many bytes from 'value' to write + * @return True on successful write (only really useful for I2C as SPI is + * uncheckable) + */ +bool Adafruit_BusIO_Register::write(uint32_t value, uint8_t numbytes) { + if (numbytes == 0) { + numbytes = _width; + } + if (numbytes > 4) { + return false; + } + + // store a copy + _cached = value; + + for (int i = 0; i < numbytes; i++) { + if (_byteorder == LSBFIRST) { + _buffer[i] = value & 0xFF; + } else { + _buffer[numbytes - i - 1] = value & 0xFF; + } + value >>= 8; + } + return write(_buffer, numbytes); +} + +/*! + * @brief Read data from the register location. This does not do any error + * checking! + * @return Returns 0xFFFFFFFF on failure, value otherwise + */ +uint32_t Adafruit_BusIO_Register::read(void) { + if (!read(_buffer, _width)) { + return -1; + } + + uint32_t value = 0; + + for (int i = 0; i < _width; i++) { + value <<= 8; + if (_byteorder == LSBFIRST) { + value |= _buffer[_width - i - 1]; + } else { + value |= _buffer[i]; + } + } + + return value; +} + +/*! + * @brief Read cached data from last time we wrote to this register + * @return Returns 0xFFFFFFFF on failure, value otherwise + */ +uint32_t Adafruit_BusIO_Register::readCached(void) { return _cached; } + +/*! + @brief Read a number of bytes from a register into a buffer + @param buffer Buffer to read data into + @param len Number of bytes to read into the buffer + @return true on successful read, otherwise false +*/ +bool Adafruit_BusIO_Register::read(uint8_t *buffer, uint8_t len) { + uint8_t addrbuffer[2] = {(uint8_t)(_address & 0xFF), + (uint8_t)(_address >> 8)}; + if (_i2cdevice) { + return _i2cdevice->write_then_read(addrbuffer, _addrwidth, buffer, len); + } + if (_spidevice) { + if (_spiregtype == ADDRESSED_OPCODE_BIT0_LOW_TO_WRITE) { + // very special case! + // pass the special opcode address which we set as the high byte of the + // regaddr + addrbuffer[0] = + (uint8_t)(_address >> 8) | 0x01; // set bottom bit high to read + // the 'actual' reg addr is the second byte then + addrbuffer[1] = (uint8_t)(_address & 0xFF); + // the address appears to be a byte longer + return _spidevice->write_then_read(addrbuffer, _addrwidth + 1, buffer, + len); + } + if (_spiregtype == ADDRBIT8_HIGH_TOREAD) { + addrbuffer[0] |= 0x80; + } + if (_spiregtype == ADDRBIT8_HIGH_TOWRITE) { + addrbuffer[0] &= ~0x80; + } + if (_spiregtype == AD8_HIGH_TOREAD_AD7_HIGH_TOINC) { + addrbuffer[0] |= 0x80 | 0x40; + } + return _spidevice->write_then_read(addrbuffer, _addrwidth, buffer, len); + } + if (_genericdevice) { + return _genericdevice->readRegister(addrbuffer, _addrwidth, buffer, len); + } + return false; +} + +/*! + * @brief Read 2 bytes of data from the register location + * @param value Pointer to uint16_t variable to read into + * @return True on successful write (only really useful for I2C as SPI is + * uncheckable) + */ +bool Adafruit_BusIO_Register::read(uint16_t *value) { + if (!read(_buffer, 2)) { + return false; + } + + if (_byteorder == LSBFIRST) { + *value = _buffer[1]; + *value <<= 8; + *value |= _buffer[0]; + } else { + *value = _buffer[0]; + *value <<= 8; + *value |= _buffer[1]; + } + return true; +} + +/*! + * @brief Read 1 byte of data from the register location + * @param value Pointer to uint8_t variable to read into + * @return True on successful write (only really useful for I2C as SPI is + * uncheckable) + */ +bool Adafruit_BusIO_Register::read(uint8_t *value) { + if (!read(_buffer, 1)) { + return false; + } + + *value = _buffer[0]; + return true; +} + +/*! + * @brief Pretty printer for this register + * @param s The Stream to print to, defaults to &Serial + */ +void Adafruit_BusIO_Register::print(Stream *s) { + uint32_t val = read(); + s->print("0x"); + s->print(val, HEX); +} + +/*! + * @brief Pretty printer for this register + * @param s The Stream to print to, defaults to &Serial + */ +void Adafruit_BusIO_Register::println(Stream *s) { + print(s); + s->println(); +} + +/*! + * @brief Create a slice of the register that we can address without + * touching other bits + * @param reg The Adafruit_BusIO_Register which defines the bus/register + * @param bits The number of bits wide we are slicing + * @param shift The number of bits that our bit-slice is shifted from LSB + */ +Adafruit_BusIO_RegisterBits::Adafruit_BusIO_RegisterBits( + Adafruit_BusIO_Register *reg, uint8_t bits, uint8_t shift) { + _register = reg; + _bits = bits; + _shift = shift; +} + +/*! + * @brief Read 4 bytes of data from the register + * @return data The 4 bytes to read + */ +uint32_t Adafruit_BusIO_RegisterBits::read(void) { + uint32_t val = _register->read(); + val >>= _shift; + return val & ((1 << (_bits)) - 1); +} + +/*! + * @brief Write 4 bytes of data to the register + * @param data The 4 bytes to write + * @return True on successful write (only really useful for I2C as SPI is + * uncheckable) + */ +bool Adafruit_BusIO_RegisterBits::write(uint32_t data) { + uint32_t val = _register->read(); + + // mask off the data before writing + uint32_t mask = (1 << (_bits)) - 1; + data &= mask; + + mask <<= _shift; + val &= ~mask; // remove the current data at that spot + val |= data << _shift; // and add in the new data + + return _register->write(val, _register->width()); +} + +/*! + * @brief The width of the register data, helpful for doing calculations + * @returns The data width used when initializing the register + */ +uint8_t Adafruit_BusIO_Register::width(void) { return _width; } + +/*! + * @brief Set the default width of data + * @param width the default width of data read from register + */ +void Adafruit_BusIO_Register::setWidth(uint8_t width) { _width = width; } + +/*! + * @brief Set register address + * @param address the address from register + */ +void Adafruit_BusIO_Register::setAddress(uint16_t address) { + _address = address; +} + +/*! + * @brief Set the width of register address + * @param address_width the width for register address + */ +void Adafruit_BusIO_Register::setAddressWidth(uint16_t address_width) { + _addrwidth = address_width; +} + +#endif // SPI exists diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_BusIO_Register.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_BusIO_Register.h new file mode 100644 index 0000000..046e04c --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_BusIO_Register.h @@ -0,0 +1,117 @@ +#ifndef Adafruit_BusIO_Register_h +#define Adafruit_BusIO_Register_h + +#include + +#if !defined(SPI_INTERFACES_COUNT) || \ + (defined(SPI_INTERFACES_COUNT) && (SPI_INTERFACES_COUNT > 0)) + +#include +#include +#include + +typedef enum _Adafruit_BusIO_SPIRegType { + ADDRBIT8_HIGH_TOREAD = 0, + /*!< + * ADDRBIT8_HIGH_TOREAD + * When reading a register you must actually send the value 0x80 + register + * address to the device. e.g. To read the register 0x0B the register value + * 0x8B is sent and to write 0x0B is sent. + */ + AD8_HIGH_TOREAD_AD7_HIGH_TOINC = 1, + + /*!< + * ADDRBIT8_HIGH_TOWRITE + * When writing to a register you must actually send the value 0x80 + + * the register address to the device. e.g. To write to the register 0x19 the + * register value 0x99 is sent and to read 0x19 is sent. + */ + ADDRBIT8_HIGH_TOWRITE = 2, + + /*!< + * ADDRESSED_OPCODE_LOWBIT_TO_WRITE + * Used by the MCP23S series, we send 0x40 |'rd with the opcode + * Then set the lowest bit to write + */ + ADDRESSED_OPCODE_BIT0_LOW_TO_WRITE = 3, + +} Adafruit_BusIO_SPIRegType; + +/*! + * @brief The class which defines a device register (a location to read/write + * data from) + */ +class Adafruit_BusIO_Register { +public: + Adafruit_BusIO_Register(Adafruit_I2CDevice *i2cdevice, uint16_t reg_addr, + uint8_t width = 1, uint8_t byteorder = LSBFIRST, + uint8_t address_width = 1); + + Adafruit_BusIO_Register(Adafruit_SPIDevice *spidevice, uint16_t reg_addr, + Adafruit_BusIO_SPIRegType type, uint8_t width = 1, + uint8_t byteorder = LSBFIRST, + uint8_t address_width = 1); + + Adafruit_BusIO_Register(Adafruit_I2CDevice *i2cdevice, + Adafruit_SPIDevice *spidevice, + Adafruit_BusIO_SPIRegType type, uint16_t reg_addr, + uint8_t width = 1, uint8_t byteorder = LSBFIRST, + uint8_t address_width = 1); + + Adafruit_BusIO_Register(Adafruit_GenericDevice *genericdevice, + uint16_t reg_addr, uint8_t width = 1, + uint8_t byteorder = LSBFIRST, + uint8_t address_width = 1); + + bool read(uint8_t *buffer, uint8_t len); + bool read(uint8_t *value); + bool read(uint16_t *value); + uint32_t read(void); + uint32_t readCached(void); + bool write(uint8_t *buffer, uint8_t len); + bool write(uint32_t value, uint8_t numbytes = 0); + + uint8_t width(void); + + void setWidth(uint8_t width); + void setAddress(uint16_t address); + void setAddressWidth(uint16_t address_width); + +#if !defined(NO_GLOBAL_INSTANCES) && !defined(NO_GLOBAL_SERIAL) + void print(Stream *s = &Serial); + void println(Stream *s = &Serial); +#else + void print(Stream *s); + void println(Stream *s); +#endif + +private: + Adafruit_I2CDevice *_i2cdevice; + Adafruit_SPIDevice *_spidevice; + Adafruit_GenericDevice *_genericdevice; + Adafruit_BusIO_SPIRegType _spiregtype; + uint16_t _address; + uint8_t _width, _addrwidth, _byteorder; + uint8_t _buffer[4]; // we won't support anything larger than uint32 for + // non-buffered read + uint32_t _cached = 0; +}; + +/*! + * @brief The class which defines a slice of bits from within a device register + * (a location to read/write data from) + */ +class Adafruit_BusIO_RegisterBits { +public: + Adafruit_BusIO_RegisterBits(Adafruit_BusIO_Register *reg, uint8_t bits, + uint8_t shift); + bool write(uint32_t value); + uint32_t read(void); + +private: + Adafruit_BusIO_Register *_register; + uint8_t _bits, _shift; +}; + +#endif // SPI exists +#endif // BusIO_Register_h diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_GenericDevice.cpp b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_GenericDevice.cpp new file mode 100644 index 0000000..37f9cfd --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_GenericDevice.cpp @@ -0,0 +1,90 @@ +/* + Written with help by Claude! + https://claude.ai/chat/335f50b1-3dd8-435e-9139-57ec7ca26a3c (at this time + chats are not shareable :( +*/ + +#include "Adafruit_GenericDevice.h" + +/*! + * @brief Create a Generic device with the provided read/write functions + * @param obj Pointer to object instance + * @param read_func Function pointer for reading raw data + * @param write_func Function pointer for writing raw data + * @param readreg_func Function pointer for reading registers (optional) + * @param writereg_func Function pointer for writing registers (optional) */ +Adafruit_GenericDevice::Adafruit_GenericDevice( + void *obj, busio_genericdevice_read_t read_func, + busio_genericdevice_write_t write_func, + busio_genericdevice_readreg_t readreg_func, + busio_genericdevice_writereg_t writereg_func) { + _obj = obj; + _read_func = read_func; + _write_func = write_func; + _readreg_func = readreg_func; + _writereg_func = writereg_func; + _begun = false; +} + +/*! @brief Simple begin function (doesn't do much at this time) + @return true always +*/ +bool Adafruit_GenericDevice::begin(void) { + _begun = true; + return true; +} + +/*! +@brief Marks the GenericDevice as no longer in use. +@note: Since this is a GenericDevice, if you are using this with a Serial +object, this does NOT disable serial communication or release the RX/TX pins. +That must be done manually by calling Serial.end(). +*/ +void Adafruit_GenericDevice::end(void) { _begun = false; } + +/*! @brief Write a buffer of data + @param buffer Pointer to buffer of data to write + @param len Number of bytes to write + @return true if write was successful, otherwise false */ +bool Adafruit_GenericDevice::write(const uint8_t *buffer, size_t len) { + if (!_begun) + return false; + return _write_func(_obj, buffer, len); +} + +/*! @brief Read data into a buffer + @param buffer Pointer to buffer to read data into + @param len Number of bytes to read + @return true if read was successful, otherwise false */ +bool Adafruit_GenericDevice::read(uint8_t *buffer, size_t len) { + if (!_begun) + return false; + return _read_func(_obj, buffer, len); +} + +/*! @brief Read from a register location + @param addr_buf Buffer containing register address + @param addrsiz Size of register address in bytes + @param buf Buffer to store read data + @param bufsiz Size of data to read in bytes + @return true if read was successful, otherwise false */ +bool Adafruit_GenericDevice::readRegister(uint8_t *addr_buf, uint8_t addrsiz, + uint8_t *buf, uint16_t bufsiz) { + if (!_begun || !_readreg_func) + return false; + return _readreg_func(_obj, addr_buf, addrsiz, buf, bufsiz); +} + +/*! @brief Write to a register location + @param addr_buf Buffer containing register address + @param addrsiz Size of register address in bytes + @param buf Buffer containing data to write + @param bufsiz Size of data to write in bytes + @return true if write was successful, otherwise false */ +bool Adafruit_GenericDevice::writeRegister(uint8_t *addr_buf, uint8_t addrsiz, + const uint8_t *buf, + uint16_t bufsiz) { + if (!_begun || !_writereg_func) + return false; + return _writereg_func(_obj, addr_buf, addrsiz, buf, bufsiz); +} diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_GenericDevice.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_GenericDevice.h new file mode 100644 index 0000000..d5cb326 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_GenericDevice.h @@ -0,0 +1,56 @@ +#ifndef ADAFRUIT_GENERICDEVICE_H +#define ADAFRUIT_GENERICDEVICE_H + +#include + +typedef bool (*busio_genericdevice_read_t)(void *obj, uint8_t *buffer, + size_t len); +typedef bool (*busio_genericdevice_write_t)(void *obj, const uint8_t *buffer, + size_t len); +typedef bool (*busio_genericdevice_readreg_t)(void *obj, uint8_t *addr_buf, + uint8_t addrsiz, uint8_t *data, + uint16_t datalen); +typedef bool (*busio_genericdevice_writereg_t)(void *obj, uint8_t *addr_buf, + uint8_t addrsiz, + const uint8_t *data, + uint16_t datalen); + +/*! + * @brief Class for communicating with a device via generic read/write functions + */ +class Adafruit_GenericDevice { +public: + Adafruit_GenericDevice( + void *obj, busio_genericdevice_read_t read_func, + busio_genericdevice_write_t write_func, + busio_genericdevice_readreg_t readreg_func = nullptr, + busio_genericdevice_writereg_t writereg_func = nullptr); + + bool begin(void); + void end(void); + + bool read(uint8_t *buffer, size_t len); + bool write(const uint8_t *buffer, size_t len); + bool readRegister(uint8_t *addr_buf, uint8_t addrsiz, uint8_t *buf, + uint16_t bufsiz); + bool writeRegister(uint8_t *addr_buf, uint8_t addrsiz, const uint8_t *buf, + uint16_t bufsiz); + +protected: + /*! @brief Function pointer for reading raw data from the device */ + busio_genericdevice_read_t _read_func; + /*! @brief Function pointer for writing raw data to the device */ + busio_genericdevice_write_t _write_func; + /*! @brief Function pointer for reading a 'register' from the device */ + busio_genericdevice_readreg_t _readreg_func; + /*! @brief Function pointer for writing a 'register' to the device */ + busio_genericdevice_writereg_t _writereg_func; + + bool _begun; ///< whether we have initialized yet (in case the function needs + ///< to do something) + +private: + void *_obj; ///< Pointer to object instance +}; + +#endif // ADAFRUIT_GENERICDEVICE_H diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_I2CDevice.cpp b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_I2CDevice.cpp new file mode 100644 index 0000000..2633cf1 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_I2CDevice.cpp @@ -0,0 +1,320 @@ +#include "Adafruit_I2CDevice.h" + +// #define DEBUG_SERIAL Serial + +/*! + * @brief Create an I2C device at a given address + * @param addr The 7-bit I2C address for the device + * @param theWire The I2C bus to use, defaults to &Wire + */ +Adafruit_I2CDevice::Adafruit_I2CDevice(uint8_t addr, TwoWire *theWire) { + _addr = addr; + _wire = theWire; + _begun = false; +#ifdef ARDUINO_ARCH_SAMD + _maxBufferSize = 250; // as defined in Wire.h's RingBuffer +#elif defined(ESP32) + _maxBufferSize = I2C_BUFFER_LENGTH; +#else + _maxBufferSize = 32; +#endif +} + +/*! + * @brief Initializes and does basic address detection + * @param addr_detect Whether we should attempt to detect the I2C address + * with a scan. 99% of sensors/devices don't mind, but once in a while they + * don't respond well to a scan! + * @return True if I2C initialized and a device with the addr found + */ +bool Adafruit_I2CDevice::begin(bool addr_detect) { + _wire->begin(); + _begun = true; + + if (addr_detect) { + return detected(); + } + return true; +} + +/*! + * @brief De-initialize device, turn off the Wire interface + */ +void Adafruit_I2CDevice::end(void) { + // Not all port implement Wire::end(), such as + // - ESP8266 + // - AVR core without WIRE_HAS_END + // - ESP32: end() is implemented since 2.0.1 which is latest at the moment. + // Temporarily disable for now to give time for user to update. +#if !(defined(ESP8266) || \ + (defined(ARDUINO_ARCH_AVR) && !defined(WIRE_HAS_END)) || \ + defined(ARDUINO_ARCH_ESP32)) + _wire->end(); + _begun = false; +#endif +} + +/*! + * @brief Scans I2C for the address - note will give a false-positive + * if there's no pullups on I2C + * @return True if I2C initialized and a device with the addr found + */ +bool Adafruit_I2CDevice::detected(void) { + // Init I2C if not done yet + if (!_begun && !begin()) { + return false; + } + + // A basic scanner, see if it ACK's + _wire->beginTransmission(_addr); +#ifdef DEBUG_SERIAL + DEBUG_SERIAL.print(F("Address 0x")); + DEBUG_SERIAL.print(_addr, HEX); +#endif +#ifdef ARDUINO_ARCH_MBED + _wire->write(0); // forces a write request instead of a read +#endif + if (_wire->endTransmission() == 0) { +#ifdef DEBUG_SERIAL + DEBUG_SERIAL.println(F(" Detected")); +#endif + return true; + } +#ifdef DEBUG_SERIAL + DEBUG_SERIAL.println(F(" Not detected")); +#endif + return false; +} + +/*! + * @brief Write a buffer or two to the I2C device. Cannot be more than + * maxBufferSize() bytes. + * @param buffer Pointer to buffer of data to write. This is const to + * ensure the content of this buffer doesn't change. + * @param len Number of bytes from buffer to write + * @param prefix_buffer Pointer to optional array of data to write before + * buffer. Cannot be more than maxBufferSize() bytes. This is const to + * ensure the content of this buffer doesn't change. + * @param prefix_len Number of bytes from prefix buffer to write + * @param stop Whether to send an I2C STOP signal on write + * @return True if write was successful, otherwise false. + */ +bool Adafruit_I2CDevice::write(const uint8_t *buffer, size_t len, bool stop, + const uint8_t *prefix_buffer, + size_t prefix_len) { + if ((len + prefix_len) > maxBufferSize()) { + // currently not guaranteed to work if more than 32 bytes! + // we will need to find out if some platforms have larger + // I2C buffer sizes :/ +#ifdef DEBUG_SERIAL + DEBUG_SERIAL.println(F("\tI2CDevice could not write such a large buffer")); +#endif + return false; + } + + _wire->beginTransmission(_addr); + + // Write the prefix data (usually an address) + if ((prefix_len != 0) && (prefix_buffer != nullptr)) { + if (_wire->write(prefix_buffer, prefix_len) != prefix_len) { +#ifdef DEBUG_SERIAL + DEBUG_SERIAL.println(F("\tI2CDevice failed to write")); +#endif + return false; + } + } + + // Write the data itself + if (_wire->write(buffer, len) != len) { +#ifdef DEBUG_SERIAL + DEBUG_SERIAL.println(F("\tI2CDevice failed to write")); +#endif + return false; + } + +#ifdef DEBUG_SERIAL + + DEBUG_SERIAL.print(F("\tI2CWRITE @ 0x")); + DEBUG_SERIAL.print(_addr, HEX); + DEBUG_SERIAL.print(F(" :: ")); + if ((prefix_len != 0) && (prefix_buffer != nullptr)) { + for (uint16_t i = 0; i < prefix_len; i++) { + DEBUG_SERIAL.print(F("0x")); + DEBUG_SERIAL.print(prefix_buffer[i], HEX); + DEBUG_SERIAL.print(F(", ")); + } + } + for (uint16_t i = 0; i < len; i++) { + DEBUG_SERIAL.print(F("0x")); + DEBUG_SERIAL.print(buffer[i], HEX); + DEBUG_SERIAL.print(F(", ")); + if (i % 32 == 31) { + DEBUG_SERIAL.println(); + } + } + + if (stop) { + DEBUG_SERIAL.print("\tSTOP"); + } +#endif + + if (_wire->endTransmission(stop) == 0) { +#ifdef DEBUG_SERIAL + DEBUG_SERIAL.println(); + // DEBUG_SERIAL.println("Sent!"); +#endif + return true; + } else { +#ifdef DEBUG_SERIAL + DEBUG_SERIAL.println("\tFailed to send!"); +#endif + return false; + } +} + +/*! + * @brief Read from I2C into a buffer from the I2C device. + * Cannot be more than maxBufferSize() bytes. + * @param buffer Pointer to buffer of data to read into + * @param len Number of bytes from buffer to read. + * @param stop Whether to send an I2C STOP signal on read + * @return True if read was successful, otherwise false. + */ +bool Adafruit_I2CDevice::read(uint8_t *buffer, size_t len, bool stop) { + size_t pos = 0; + while (pos < len) { + size_t read_len = + ((len - pos) > maxBufferSize()) ? maxBufferSize() : (len - pos); + bool read_stop = (pos < (len - read_len)) ? false : stop; + if (!_read(buffer + pos, read_len, read_stop)) + return false; + pos += read_len; + } + return true; +} + +bool Adafruit_I2CDevice::_read(uint8_t *buffer, size_t len, bool stop) { +#if defined(TinyWireM_h) + size_t recv = _wire->requestFrom((uint8_t)_addr, (uint8_t)len); +#elif defined(ARDUINO_ARCH_MEGAAVR) + size_t recv = _wire->requestFrom(_addr, len, stop); +#else + size_t recv = _wire->requestFrom((uint8_t)_addr, (uint8_t)len, (uint8_t)stop); +#endif + + if (recv != len) { + // Not enough data available to fulfill our obligation! +#ifdef DEBUG_SERIAL + DEBUG_SERIAL.print(F("\tI2CDevice did not receive enough data: ")); + DEBUG_SERIAL.println(recv); +#endif + return false; + } + + for (uint16_t i = 0; i < len; i++) { + buffer[i] = _wire->read(); + } + +#ifdef DEBUG_SERIAL + DEBUG_SERIAL.print(F("\tI2CREAD @ 0x")); + DEBUG_SERIAL.print(_addr, HEX); + DEBUG_SERIAL.print(F(" :: ")); + for (uint16_t i = 0; i < len; i++) { + DEBUG_SERIAL.print(F("0x")); + DEBUG_SERIAL.print(buffer[i], HEX); + DEBUG_SERIAL.print(F(", ")); + if (len % 32 == 31) { + DEBUG_SERIAL.println(); + } + } + DEBUG_SERIAL.println(); +#endif + + return true; +} + +/*! + * @brief Write some data, then read some data from I2C into another buffer. + * Cannot be more than maxBufferSize() bytes. The buffers can point to + * same/overlapping locations. + * @param write_buffer Pointer to buffer of data to write from + * @param write_len Number of bytes from buffer to write. + * @param read_buffer Pointer to buffer of data to read into. + * @param read_len Number of bytes from buffer to read. + * @param stop Whether to send an I2C STOP signal between the write and read + * @return True if write & read was successful, otherwise false. + */ +bool Adafruit_I2CDevice::write_then_read(const uint8_t *write_buffer, + size_t write_len, uint8_t *read_buffer, + size_t read_len, bool stop) { + if (!write(write_buffer, write_len, stop)) { + return false; + } + + return read(read_buffer, read_len); +} + +/*! + * @brief Returns the 7-bit address of this device + * @return The 7-bit address of this device + */ +uint8_t Adafruit_I2CDevice::address(void) { return _addr; } + +/*! + * @brief Change the I2C clock speed to desired (relies on + * underlying Wire support! + * @param desiredclk The desired I2C SCL frequency + * @return True if this platform supports changing I2C speed. + * Not necessarily that the speed was achieved! + */ +bool Adafruit_I2CDevice::setSpeed(uint32_t desiredclk) { +#if defined(__AVR_ATmega328__) || \ + defined(__AVR_ATmega328P__) // fix arduino core set clock + // calculate TWBR correctly + + if ((F_CPU / 18) < desiredclk) { +#ifdef DEBUG_SERIAL + Serial.println(F("I2C.setSpeed too high.")); +#endif + return false; + } + uint32_t atwbr = ((F_CPU / desiredclk) - 16) / 2; + if (atwbr > 16320) { +#ifdef DEBUG_SERIAL + Serial.println(F("I2C.setSpeed too low.")); +#endif + return false; + } + + if (atwbr <= 255) { + atwbr /= 1; + TWSR = 0x0; + } else if (atwbr <= 1020) { + atwbr /= 4; + TWSR = 0x1; + } else if (atwbr <= 4080) { + atwbr /= 16; + TWSR = 0x2; + } else { // if (atwbr <= 16320) + atwbr /= 64; + TWSR = 0x3; + } + TWBR = atwbr; + +#ifdef DEBUG_SERIAL + Serial.print(F("TWSR prescaler = ")); + Serial.println(pow(4, TWSR)); + Serial.print(F("TWBR = ")); + Serial.println(atwbr); +#endif + return true; +#elif (ARDUINO >= 157) && !defined(ARDUINO_STM32_FEATHER) && \ + !defined(TinyWireM_h) + _wire->setClock(desiredclk); + return true; + +#else + (void)desiredclk; + return false; +#endif +} diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_I2CDevice.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_I2CDevice.h new file mode 100644 index 0000000..6bda7ba --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_I2CDevice.h @@ -0,0 +1,36 @@ +#ifndef Adafruit_I2CDevice_h +#define Adafruit_I2CDevice_h + +#include +#include + +///< The class which defines how we will talk to this device over I2C +class Adafruit_I2CDevice { +public: + Adafruit_I2CDevice(uint8_t addr, TwoWire *theWire = &Wire); + uint8_t address(void); + bool begin(bool addr_detect = true); + void end(void); + bool detected(void); + + bool read(uint8_t *buffer, size_t len, bool stop = true); + bool write(const uint8_t *buffer, size_t len, bool stop = true, + const uint8_t *prefix_buffer = nullptr, size_t prefix_len = 0); + bool write_then_read(const uint8_t *write_buffer, size_t write_len, + uint8_t *read_buffer, size_t read_len, + bool stop = false); + bool setSpeed(uint32_t desiredclk); + + /*! @brief How many bytes we can read in a transaction + * @return The size of the Wire receive/transmit buffer */ + size_t maxBufferSize() { return _maxBufferSize; } + +private: + uint8_t _addr; + TwoWire *_wire; + bool _begun; + size_t _maxBufferSize; + bool _read(uint8_t *buffer, size_t len, bool stop); +}; + +#endif // Adafruit_I2CDevice_h diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_I2CRegister.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_I2CRegister.h new file mode 100644 index 0000000..186850f --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_I2CRegister.h @@ -0,0 +1,10 @@ +#ifndef _ADAFRUIT_I2C_REGISTER_H_ +#define _ADAFRUIT_I2C_REGISTER_H_ + +#include +#include + +typedef Adafruit_BusIO_Register Adafruit_I2CRegister; +typedef Adafruit_BusIO_RegisterBits Adafruit_I2CRegisterBits; + +#endif diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_SPIDevice.cpp b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_SPIDevice.cpp new file mode 100644 index 0000000..3283de6 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_SPIDevice.cpp @@ -0,0 +1,512 @@ +#include "Adafruit_SPIDevice.h" + +// #define DEBUG_SERIAL Serial + +#ifdef BUSIO_USE_FAST_PINIO +#define BUSIO_SET_CLOCK_LOW() (*clkPort = *clkPort & ~clkPinMask) +#define BUSIO_SET_CLOCK_HIGH() (*clkPort = *clkPort | clkPinMask) +#define BUSIO_READ_MISO() (*misoPort & misoPinMask) +#define BUSIO_WRITE_MOSI(value) \ + do { \ + if (value) \ + *mosiPort = *mosiPort | mosiPinMask; \ + else \ + *mosiPort = *mosiPort & ~mosiPinMask; \ + } while (0) +#else +#define BUSIO_SET_CLOCK_LOW() digitalWrite(_sck, LOW) +#define BUSIO_SET_CLOCK_HIGH() digitalWrite(_sck, HIGH) +#define BUSIO_READ_MISO() digitalRead(_miso) +#define BUSIO_WRITE_MOSI(value) digitalWrite(_mosi, value) +#endif + +/*! + * @brief Create an SPI device with the given CS pin and settings + * @param cspin The arduino pin number to use for chip select + * @param freq The SPI clock frequency to use, defaults to 1MHz + * @param dataOrder The SPI data order to use for bits within each byte, + * defaults to SPI_BITORDER_MSBFIRST + * @param dataMode The SPI mode to use, defaults to SPI_MODE0 + * @param theSPI The SPI bus to use, defaults to &theSPI + */ +Adafruit_SPIDevice::Adafruit_SPIDevice(int8_t cspin, uint32_t freq, + BusIOBitOrder dataOrder, + uint8_t dataMode, SPIClass *theSPI) { +#ifdef BUSIO_HAS_HW_SPI + _cs = cspin; + _sck = _mosi = _miso = -1; + _spi = theSPI; + _begun = false; + _spiSetting = new SPISettings(freq, dataOrder, dataMode); + _freq = freq; + _dataOrder = dataOrder; + _dataMode = dataMode; +#else + // unused, but needed to suppress compiler warns + (void)cspin; + (void)freq; + (void)dataOrder; + (void)dataMode; + (void)theSPI; +#endif +} + +/*! + * @brief Create an SPI device with the given CS pin and settings + * @param cspin The arduino pin number to use for chip select + * @param sckpin The arduino pin number to use for SCK + * @param misopin The arduino pin number to use for MISO, set to -1 if not + * used + * @param mosipin The arduino pin number to use for MOSI, set to -1 if not + * used + * @param freq The SPI clock frequency to use, defaults to 1MHz + * @param dataOrder The SPI data order to use for bits within each byte, + * defaults to SPI_BITORDER_MSBFIRST + * @param dataMode The SPI mode to use, defaults to SPI_MODE0 + */ +Adafruit_SPIDevice::Adafruit_SPIDevice(int8_t cspin, int8_t sckpin, + int8_t misopin, int8_t mosipin, + uint32_t freq, BusIOBitOrder dataOrder, + uint8_t dataMode) { + _cs = cspin; + _sck = sckpin; + _miso = misopin; + _mosi = mosipin; + +#ifdef BUSIO_USE_FAST_PINIO + csPort = (BusIO_PortReg *)portOutputRegister(digitalPinToPort(cspin)); + csPinMask = digitalPinToBitMask(cspin); + if (mosipin != -1) { + mosiPort = (BusIO_PortReg *)portOutputRegister(digitalPinToPort(mosipin)); + mosiPinMask = digitalPinToBitMask(mosipin); + } + if (misopin != -1) { + misoPort = (BusIO_PortReg *)portInputRegister(digitalPinToPort(misopin)); + misoPinMask = digitalPinToBitMask(misopin); + } + clkPort = (BusIO_PortReg *)portOutputRegister(digitalPinToPort(sckpin)); + clkPinMask = digitalPinToBitMask(sckpin); +#endif + + _freq = freq; + _dataOrder = dataOrder; + _dataMode = dataMode; + _begun = false; +} + +/*! + * @brief Release memory allocated in constructors + */ +Adafruit_SPIDevice::~Adafruit_SPIDevice() { + if (_spiSetting) + delete _spiSetting; +} + +/*! + * @brief Initializes SPI bus and sets CS pin high + * @return Always returns true because there's no way to test success of SPI + * init + */ +bool Adafruit_SPIDevice::begin(void) { + if (_cs != -1) { + pinMode(_cs, OUTPUT); + digitalWrite(_cs, HIGH); + } + + if (_spi) { // hardware SPI +#ifdef BUSIO_HAS_HW_SPI + _spi->begin(); +#endif + } else { + pinMode(_sck, OUTPUT); + + if ((_dataMode == SPI_MODE0) || (_dataMode == SPI_MODE1)) { + // idle low on mode 0 and 1 + digitalWrite(_sck, LOW); + } else { + // idle high on mode 2 or 3 + digitalWrite(_sck, HIGH); + } + if (_mosi != -1) { + pinMode(_mosi, OUTPUT); + digitalWrite(_mosi, HIGH); + } + if (_miso != -1) { + pinMode(_miso, INPUT); + } + } + + _begun = true; + return true; +} + +/*! + * @brief Transfer (send/receive) a buffer over hard/soft SPI, without + * transaction management + * @param buffer The buffer to send and receive at the same time + * @param len The number of bytes to transfer + */ +void Adafruit_SPIDevice::transfer(uint8_t *buffer, size_t len) { + // + // HARDWARE SPI + // + if (_spi) { +#ifdef BUSIO_HAS_HW_SPI +#if defined(SPARK) + _spi->transfer(buffer, buffer, len, nullptr); +#elif defined(STM32) + for (size_t i = 0; i < len; i++) { + _spi->transfer(buffer[i]); + } +#else + _spi->transfer(buffer, len); +#endif + return; +#endif + } + + // + // SOFTWARE SPI + // + uint8_t startbit; + if (_dataOrder == SPI_BITORDER_LSBFIRST) { + startbit = 0x1; + } else { + startbit = 0x80; + } + + bool towrite, lastmosi = !(buffer[0] & startbit); + uint8_t bitdelay_us = (1000000 / _freq) / 2; + + for (size_t i = 0; i < len; i++) { + uint8_t reply = 0; + uint8_t send = buffer[i]; + + /* + Serial.print("\tSending software SPI byte 0x"); + Serial.print(send, HEX); + Serial.print(" -> 0x"); + */ + + // Serial.print(send, HEX); + for (uint8_t b = startbit; b != 0; + b = (_dataOrder == SPI_BITORDER_LSBFIRST) ? b << 1 : b >> 1) { + + if (bitdelay_us) { + delayMicroseconds(bitdelay_us); + } + + if (_dataMode == SPI_MODE0 || _dataMode == SPI_MODE2) { + towrite = send & b; + if ((_mosi != -1) && (lastmosi != towrite)) { + BUSIO_WRITE_MOSI(towrite); + lastmosi = towrite; + } + + BUSIO_SET_CLOCK_HIGH(); + + if (bitdelay_us) { + delayMicroseconds(bitdelay_us); + } + + if (_miso != -1) { + if (BUSIO_READ_MISO()) + reply |= b; + } + + BUSIO_SET_CLOCK_LOW(); + + } else if (_dataMode == SPI_MODE3) { + + if (_mosi != -1) { // transmit on falling edge + BUSIO_WRITE_MOSI(send & b); + } + + BUSIO_SET_CLOCK_LOW(); + + if (bitdelay_us) { + delayMicroseconds(bitdelay_us); + } + + BUSIO_SET_CLOCK_HIGH(); + + if (bitdelay_us) { + delayMicroseconds(bitdelay_us); + } + + if (_miso != -1) { // read on rising edge + if (BUSIO_READ_MISO()) { + reply |= b; + } + } + + } else { // || _dataMode == SPI_MODE1) + + BUSIO_SET_CLOCK_HIGH(); + + if (bitdelay_us) { + delayMicroseconds(bitdelay_us); + } + + if (_mosi != -1) { + BUSIO_WRITE_MOSI(send & b); + } + + BUSIO_SET_CLOCK_LOW(); + + if (_miso != -1) { + if (BUSIO_READ_MISO()) { + reply |= b; + } + } + } + } + if (_miso != -1) { + buffer[i] = reply; + } + } + return; +} + +/*! + * @brief Transfer (send/receive) one byte over hard/soft SPI, without + * transaction management + * @param send The byte to send + * @return The byte received while transmitting + */ +uint8_t Adafruit_SPIDevice::transfer(uint8_t send) { + uint8_t data = send; + transfer(&data, 1); + return data; +} + +/*! + * @brief Manually begin a transaction (calls beginTransaction if hardware + * SPI) + */ +void Adafruit_SPIDevice::beginTransaction(void) { + if (_spi) { +#ifdef BUSIO_HAS_HW_SPI + _spi->beginTransaction(*_spiSetting); +#endif + } +} + +/*! + * @brief Manually end a transaction (calls endTransaction if hardware SPI) + */ +void Adafruit_SPIDevice::endTransaction(void) { + if (_spi) { +#ifdef BUSIO_HAS_HW_SPI + _spi->endTransaction(); +#endif + } +} + +/*! + * @brief Assert/Deassert the CS pin if it is defined + * @param value The state the CS is set to + */ +void Adafruit_SPIDevice::setChipSelect(int value) { + if (_cs != -1) { + digitalWrite(_cs, value); + } +} + +/*! + * @brief Write a buffer or two to the SPI device, with transaction + * management. + * @brief Manually begin a transaction (calls beginTransaction if hardware + * SPI) with asserting the CS pin + */ +void Adafruit_SPIDevice::beginTransactionWithAssertingCS() { + beginTransaction(); + setChipSelect(LOW); +} + +/*! + * @brief Manually end a transaction (calls endTransaction if hardware SPI) + * with deasserting the CS pin + */ +void Adafruit_SPIDevice::endTransactionWithDeassertingCS() { + setChipSelect(HIGH); + endTransaction(); +} + +/*! + * @brief Write a buffer or two to the SPI device, with transaction + * management. + * @param buffer Pointer to buffer of data to write + * @param len Number of bytes from buffer to write + * @param prefix_buffer Pointer to optional array of data to write before + * buffer. + * @param prefix_len Number of bytes from prefix buffer to write + * @return Always returns true because there's no way to test success of SPI + * writes + */ +bool Adafruit_SPIDevice::write(const uint8_t *buffer, size_t len, + const uint8_t *prefix_buffer, + size_t prefix_len) { + beginTransactionWithAssertingCS(); + + // do the writing +#if defined(ARDUINO_ARCH_ESP32) + if (_spi) { + if (prefix_len > 0) { + _spi->transferBytes((uint8_t *)prefix_buffer, nullptr, prefix_len); + } + if (len > 0) { + _spi->transferBytes((uint8_t *)buffer, nullptr, len); + } + } else +#endif + { + for (size_t i = 0; i < prefix_len; i++) { + transfer(prefix_buffer[i]); + } + for (size_t i = 0; i < len; i++) { + transfer(buffer[i]); + } + } + endTransactionWithDeassertingCS(); + +#ifdef DEBUG_SERIAL + DEBUG_SERIAL.print(F("\tSPIDevice Wrote: ")); + if ((prefix_len != 0) && (prefix_buffer != nullptr)) { + for (uint16_t i = 0; i < prefix_len; i++) { + DEBUG_SERIAL.print(F("0x")); + DEBUG_SERIAL.print(prefix_buffer[i], HEX); + DEBUG_SERIAL.print(F(", ")); + } + } + for (uint16_t i = 0; i < len; i++) { + DEBUG_SERIAL.print(F("0x")); + DEBUG_SERIAL.print(buffer[i], HEX); + DEBUG_SERIAL.print(F(", ")); + if (i % 32 == 31) { + DEBUG_SERIAL.println(); + } + } + DEBUG_SERIAL.println(); +#endif + + return true; +} + +/*! + * @brief Read from SPI into a buffer from the SPI device, with transaction + * management. + * @param buffer Pointer to buffer of data to read into + * @param len Number of bytes from buffer to read. + * @param sendvalue The 8-bits of data to write when doing the data read, + * defaults to 0xFF + * @return Always returns true because there's no way to test success of SPI + * writes + */ +bool Adafruit_SPIDevice::read(uint8_t *buffer, size_t len, uint8_t sendvalue) { + memset(buffer, sendvalue, len); // clear out existing buffer + + beginTransactionWithAssertingCS(); + transfer(buffer, len); + endTransactionWithDeassertingCS(); + +#ifdef DEBUG_SERIAL + DEBUG_SERIAL.print(F("\tSPIDevice Read: ")); + for (uint16_t i = 0; i < len; i++) { + DEBUG_SERIAL.print(F("0x")); + DEBUG_SERIAL.print(buffer[i], HEX); + DEBUG_SERIAL.print(F(", ")); + if (len % 32 == 31) { + DEBUG_SERIAL.println(); + } + } + DEBUG_SERIAL.println(); +#endif + + return true; +} + +/*! + * @brief Write some data, then read some data from SPI into another buffer, + * with transaction management. The buffers can point to same/overlapping + * locations. This does not transmit-receive at the same time! + * @param write_buffer Pointer to buffer of data to write from + * @param write_len Number of bytes from buffer to write. + * @param read_buffer Pointer to buffer of data to read into. + * @param read_len Number of bytes from buffer to read. + * @param sendvalue The 8-bits of data to write when doing the data read, + * defaults to 0xFF + * @return Always returns true because there's no way to test success of SPI + * writes + */ +bool Adafruit_SPIDevice::write_then_read(const uint8_t *write_buffer, + size_t write_len, uint8_t *read_buffer, + size_t read_len, uint8_t sendvalue) { + beginTransactionWithAssertingCS(); + // do the writing +#if defined(ARDUINO_ARCH_ESP32) + if (_spi) { + if (write_len > 0) { + _spi->transferBytes((uint8_t *)write_buffer, nullptr, write_len); + } + } else +#endif + { + for (size_t i = 0; i < write_len; i++) { + transfer(write_buffer[i]); + } + } + +#ifdef DEBUG_SERIAL + DEBUG_SERIAL.print(F("\tSPIDevice Wrote: ")); + for (uint16_t i = 0; i < write_len; i++) { + DEBUG_SERIAL.print(F("0x")); + DEBUG_SERIAL.print(write_buffer[i], HEX); + DEBUG_SERIAL.print(F(", ")); + if (write_len % 32 == 31) { + DEBUG_SERIAL.println(); + } + } + DEBUG_SERIAL.println(); +#endif + + // do the reading + for (size_t i = 0; i < read_len; i++) { + read_buffer[i] = transfer(sendvalue); + } + +#ifdef DEBUG_SERIAL + DEBUG_SERIAL.print(F("\tSPIDevice Read: ")); + for (uint16_t i = 0; i < read_len; i++) { + DEBUG_SERIAL.print(F("0x")); + DEBUG_SERIAL.print(read_buffer[i], HEX); + DEBUG_SERIAL.print(F(", ")); + if (read_len % 32 == 31) { + DEBUG_SERIAL.println(); + } + } + DEBUG_SERIAL.println(); +#endif + + endTransactionWithDeassertingCS(); + + return true; +} + +/*! + * @brief Write some data and read some data at the same time from SPI + * into the same buffer, with transaction management. This is basicaly a wrapper + * for transfer() with CS-pin and transaction management. This /does/ + * transmit-receive at the same time! + * @param buffer Pointer to buffer of data to write/read to/from + * @param len Number of bytes from buffer to write/read. + * @return Always returns true because there's no way to test success of SPI + * writes + */ +bool Adafruit_SPIDevice::write_and_read(uint8_t *buffer, size_t len) { + beginTransactionWithAssertingCS(); + transfer(buffer, len); + endTransactionWithDeassertingCS(); + + return true; +} diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_SPIDevice.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_SPIDevice.h new file mode 100644 index 0000000..82a0281 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/Adafruit_SPIDevice.h @@ -0,0 +1,149 @@ +#ifndef Adafruit_SPIDevice_h +#define Adafruit_SPIDevice_h + +#include + +#if !defined(SPI_INTERFACES_COUNT) || \ + (defined(SPI_INTERFACES_COUNT) && (SPI_INTERFACES_COUNT > 0)) +// HW SPI available +#include +#define BUSIO_HAS_HW_SPI +#else +// SW SPI ONLY +enum { SPI_MODE0, SPI_MODE1, SPI_MODE2, SPI_MODE3 }; +typedef uint8_t SPIClass; +#endif + +// some modern SPI definitions don't have BitOrder enum +#if (defined(__AVR__) && !defined(ARDUINO_ARCH_MEGAAVR)) || \ + defined(ESP8266) || defined(TEENSYDUINO) || defined(SPARK) || \ + defined(ARDUINO_ARCH_SPRESENSE) || defined(MEGATINYCORE) || \ + defined(DXCORE) || defined(ARDUINO_AVR_ATmega4809) || \ + defined(ARDUINO_AVR_ATmega4808) || defined(ARDUINO_AVR_ATmega3209) || \ + defined(ARDUINO_AVR_ATmega3208) || defined(ARDUINO_AVR_ATmega1609) || \ + defined(ARDUINO_AVR_ATmega1608) || defined(ARDUINO_AVR_ATmega809) || \ + defined(ARDUINO_AVR_ATmega808) || defined(ARDUINO_ARCH_ARC32) || \ + defined(ARDUINO_ARCH_XMC) + +typedef enum _BitOrder { + SPI_BITORDER_MSBFIRST = MSBFIRST, + SPI_BITORDER_LSBFIRST = LSBFIRST, +} BusIOBitOrder; + +#elif defined(ESP32) || defined(__ASR6501__) || defined(__ASR6502__) + +// some modern SPI definitions don't have BitOrder enum and have different SPI +// mode defines +typedef enum _BitOrder { + SPI_BITORDER_MSBFIRST = SPI_MSBFIRST, + SPI_BITORDER_LSBFIRST = SPI_LSBFIRST, +} BusIOBitOrder; + +#else +// Some platforms have a BitOrder enum but its named MSBFIRST/LSBFIRST +#define SPI_BITORDER_MSBFIRST MSBFIRST +#define SPI_BITORDER_LSBFIRST LSBFIRST +typedef BitOrder BusIOBitOrder; +#endif + +#if defined(__IMXRT1062__) // Teensy 4.x +// *Warning* I disabled the usage of FAST_PINIO as the set/clear operations +// used in the cpp file are not atomic and can effect multiple IO pins +// and if an interrupt happens in between the time the code reads the register +// and writes out the updated value, that changes one or more other IO pins +// on that same IO port, those change will be clobbered when the updated +// values are written back. A fast version can be implemented that uses the +// ports set and clear registers which are atomic. +// typedef volatile uint32_t BusIO_PortReg; +// typedef uint32_t BusIO_PortMask; +// #define BUSIO_USE_FAST_PINIO + +#elif defined(__MBED__) || defined(__ZEPHYR__) +// Boards based on RTOS cores like mbed or Zephyr are not going to expose the +// low level registers needed for fast pin manipulation +#undef BUSIO_USE_FAST_PINIO + +#elif defined(ARDUINO_ARCH_XMC) +#undef BUSIO_USE_FAST_PINIO + +#elif defined(__AVR__) || defined(TEENSYDUINO) +typedef volatile uint8_t BusIO_PortReg; +typedef uint8_t BusIO_PortMask; +#define BUSIO_USE_FAST_PINIO + +#elif defined(ESP8266) || defined(ESP32) || defined(__SAM3X8E__) || \ + defined(ARDUINO_ARCH_SAMD) +typedef volatile uint32_t BusIO_PortReg; +typedef uint32_t BusIO_PortMask; +#define BUSIO_USE_FAST_PINIO + +#elif (defined(__arm__) || defined(ARDUINO_FEATHER52)) && \ + !defined(ARDUINO_ARCH_RP2040) && !defined(ARDUINO_SILABS) && \ + !defined(ARDUINO_UNOR4_MINIMA) && !defined(ARDUINO_UNOR4_WIFI) && \ + !defined(PORTDUINO) +typedef volatile uint32_t BusIO_PortReg; +typedef uint32_t BusIO_PortMask; +#if !defined(__ASR6501__) && !defined(__ASR6502__) +#define BUSIO_USE_FAST_PINIO +#endif + +#else +#undef BUSIO_USE_FAST_PINIO +#endif + +/**! The class which defines how we will talk to this device over SPI **/ +class Adafruit_SPIDevice { +public: +#ifdef BUSIO_HAS_HW_SPI + Adafruit_SPIDevice(int8_t cspin, uint32_t freq = 1000000, + BusIOBitOrder dataOrder = SPI_BITORDER_MSBFIRST, + uint8_t dataMode = SPI_MODE0, SPIClass *theSPI = &SPI); +#else + Adafruit_SPIDevice(int8_t cspin, uint32_t freq = 1000000, + BusIOBitOrder dataOrder = SPI_BITORDER_MSBFIRST, + uint8_t dataMode = SPI_MODE0, SPIClass *theSPI = nullptr); +#endif + Adafruit_SPIDevice(int8_t cspin, int8_t sck, int8_t miso, int8_t mosi, + uint32_t freq = 1000000, + BusIOBitOrder dataOrder = SPI_BITORDER_MSBFIRST, + uint8_t dataMode = SPI_MODE0); + ~Adafruit_SPIDevice(); + + bool begin(void); + bool read(uint8_t *buffer, size_t len, uint8_t sendvalue = 0xFF); + bool write(const uint8_t *buffer, size_t len, + const uint8_t *prefix_buffer = nullptr, size_t prefix_len = 0); + bool write_then_read(const uint8_t *write_buffer, size_t write_len, + uint8_t *read_buffer, size_t read_len, + uint8_t sendvalue = 0xFF); + bool write_and_read(uint8_t *buffer, size_t len); + + uint8_t transfer(uint8_t send); + void transfer(uint8_t *buffer, size_t len); + void beginTransaction(void); + void endTransaction(void); + void beginTransactionWithAssertingCS(); + void endTransactionWithDeassertingCS(); + +private: +#ifdef BUSIO_HAS_HW_SPI + SPIClass *_spi = nullptr; + SPISettings *_spiSetting = nullptr; +#else + uint8_t *_spi = nullptr; + uint8_t *_spiSetting = nullptr; +#endif + uint32_t _freq; + BusIOBitOrder _dataOrder; + uint8_t _dataMode; + void setChipSelect(int value); + + int8_t _cs, _sck, _mosi, _miso; +#ifdef BUSIO_USE_FAST_PINIO + BusIO_PortReg *mosiPort, *clkPort, *misoPort, *csPort; + BusIO_PortMask mosiPinMask, misoPinMask, clkPinMask, csPinMask; +#endif + bool _begun; +}; + +#endif // Adafruit_SPIDevice_h diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/CMakeLists.txt b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/CMakeLists.txt new file mode 100644 index 0000000..3fcb0b8 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/CMakeLists.txt @@ -0,0 +1,11 @@ +# Adafruit Bus IO Library +# https://github.com/adafruit/Adafruit_BusIO +# MIT License + +cmake_minimum_required(VERSION 3.5) + +idf_component_register(SRCS "Adafruit_I2CDevice.cpp" "Adafruit_BusIO_Register.cpp" "Adafruit_SPIDevice.cpp" "Adafruit_GenericDevice.cpp" + INCLUDE_DIRS "." + REQUIRES arduino-esp32) + +project(Adafruit_BusIO) diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/LICENSE b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/LICENSE new file mode 100644 index 0000000..860e3e2 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2017 Adafruit Industries + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/README.md b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/README.md new file mode 100644 index 0000000..59712ff --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/README.md @@ -0,0 +1,8 @@ +# Adafruit Bus IO Library [![Build Status](https://github.com/adafruit/Adafruit_BusIO/workflows/Arduino%20Library%20CI/badge.svg)](https://github.com/adafruit/Adafruit_BusIO/actions) + + +This is a helper library to abstract away I2C, SPI, and 'generic transport' (e.g. UART) transactions and registers + +Adafruit invests time and resources providing this open source code, please support Adafruit and open-source hardware by purchasing products from Adafruit! + +MIT license, all text above must be included in any redistribution diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/component.mk b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/component.mk new file mode 100644 index 0000000..049f190 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/component.mk @@ -0,0 +1 @@ +COMPONENT_ADD_INCLUDEDIRS = . diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/examples/genericdevice_uartregtest/.uno.test.skip b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/examples/genericdevice_uartregtest/.uno.test.skip new file mode 100644 index 0000000..e69de29 diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/examples/genericdevice_uartregtest/genericdevice_uartregtest.ino b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/examples/genericdevice_uartregtest/genericdevice_uartregtest.ino new file mode 100644 index 0000000..59af308 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/examples/genericdevice_uartregtest/genericdevice_uartregtest.ino @@ -0,0 +1,219 @@ +/* + Advanced example of using bstracted transport for reading and writing + register data from a UART-based device such as a TMC2209 + + Written with help by Claude! + https://claude.ai/chat/335f50b1-3dd8-435e-9139-57ec7ca26a3c (at this time + chats are not shareable :( +*/ + +#include "Adafruit_BusIO_Register.h" +#include "Adafruit_GenericDevice.h" + +// Debugging macros +#define DEBUG_SERIAL Serial + +#ifdef DEBUG_SERIAL +#define DEBUG_PRINT(x) DEBUG_SERIAL.print(x) +#define DEBUG_PRINTLN(x) DEBUG_SERIAL.println(x) +#define DEBUG_PRINT_HEX(x) \ + do { \ + if (x < 0x10) \ + DEBUG_SERIAL.print('0'); \ + DEBUG_SERIAL.print(x, HEX); \ + DEBUG_SERIAL.print(' '); \ + } while (0) +#else +#define DEBUG_PRINT(x) +#define DEBUG_PRINTLN(x) +#define DEBUG_PRINT_HEX(x) +#endif + +#define TMC2209_IOIN 0x06 + +class TMC2209_UART { +private: + Stream *_uart_stream; + uint8_t _addr; + + static bool uart_read(void *thiz, uint8_t *buffer, size_t len) { + TMC2209_UART *dev = (TMC2209_UART *)thiz; + uint16_t timeout = 100; + while (dev->_uart_stream->available() < len && timeout--) { + delay(1); + } + if (timeout == 0) { + DEBUG_PRINTLN("Read timeout!"); + return false; + } + + DEBUG_PRINT("Reading: "); + for (size_t i = 0; i < len; i++) { + buffer[i] = dev->_uart_stream->read(); + DEBUG_PRINT_HEX(buffer[i]); + } + DEBUG_PRINTLN(""); + + return true; + } + + static bool uart_write(void *thiz, const uint8_t *buffer, size_t len) { + TMC2209_UART *dev = (TMC2209_UART *)thiz; + DEBUG_PRINT("Writing: "); + for (size_t i = 0; i < len; i++) { + DEBUG_PRINT_HEX(buffer[i]); + } + DEBUG_PRINTLN(""); + + dev->_uart_stream->write(buffer, len); + return true; + } + + static bool uart_readreg(void *thiz, uint8_t *addr_buf, uint8_t addrsiz, + uint8_t *data, uint16_t datalen) { + TMC2209_UART *dev = (TMC2209_UART *)thiz; + while (dev->_uart_stream->available()) + dev->_uart_stream->read(); + + uint8_t packet[4] = {0x05, uint8_t(dev->_addr << 1), addr_buf[0], 0x00}; + + packet[3] = calcCRC(packet, 3); + if (!uart_write(thiz, packet, 4)) + return false; + + // Read back echo + uint8_t echo[4]; + if (!uart_read(thiz, echo, 4)) + return false; + + // Verify echo + for (uint8_t i = 0; i < 4; i++) { + if (echo[i] != packet[i]) { + DEBUG_PRINTLN("Echo mismatch"); + return false; + } + } + + uint8_t response[8]; // sync + 0xFF + reg + 4 data bytes + CRC + if (!uart_read(thiz, response, 8)) + return false; + + // Verify response + if (response[0] != 0x05) { + DEBUG_PRINTLN("Invalid sync byte"); + return false; + } + + if (response[1] != 0xFF) { + DEBUG_PRINTLN("Invalid reply address"); + return false; + } + + if (response[2] != addr_buf[0]) { + DEBUG_PRINTLN("Register mismatch"); + return false; + } + + uint8_t crc = calcCRC(response, 7); + if (crc != response[7]) { + DEBUG_PRINTLN("CRC mismatch"); + return false; + } + + memcpy(data, &response[3], 4); + return true; + } + + static bool uart_writereg(void *thiz, uint8_t *addr_buf, uint8_t addrsiz, + const uint8_t *data, uint16_t datalen) { + TMC2209_UART *dev = (TMC2209_UART *)thiz; + while (dev->_uart_stream->available()) + dev->_uart_stream->read(); + + uint8_t packet[8] = {0x05, + uint8_t(dev->_addr << 1), + uint8_t(addr_buf[0] | 0x80), + data[0], + data[1], + data[2], + data[3], + 0x00}; + + packet[7] = calcCRC(packet, 7); + if (!uart_write(thiz, packet, 8)) + return false; + + uint8_t echo[8]; + if (!uart_read(thiz, echo, 8)) + return false; + + for (uint8_t i = 0; i < 8; i++) { + if (echo[i] != packet[i]) { + DEBUG_PRINTLN("Write echo mismatch"); + return false; + } + } + + return true; + } + + static uint8_t calcCRC(uint8_t *data, uint8_t length) { + uint8_t crc = 0; + for (uint8_t i = 0; i < length; i++) { + uint8_t currentByte = data[i]; + for (uint8_t j = 0; j < 8; j++) { + if ((crc >> 7) ^ (currentByte & 0x01)) { + crc = (crc << 1) ^ 0x07; + } else { + crc = crc << 1; + } + currentByte = currentByte >> 1; + } + } + return crc; + } + +public: + TMC2209_UART(Stream *serial, uint8_t addr) + : _uart_stream(serial), _addr(addr) {} + + Adafruit_GenericDevice *createDevice() { + return new Adafruit_GenericDevice(this, uart_read, uart_write, uart_readreg, + uart_writereg); + } +}; + +void setup() { + Serial.begin(115200); + while (!Serial) + ; + delay(100); + Serial.println("TMC2209 Generic Device register read/write test!"); + + Serial1.begin(115200); + + TMC2209_UART uart(&Serial1, 0); + Adafruit_GenericDevice *device = uart.createDevice(); + device->begin(); + + // Create register object for IOIN + Adafruit_BusIO_Register ioin_reg(device, + TMC2209_IOIN, // device and register address + 4, // width = 4 bytes + MSBFIRST, // byte order + 1); // address width = 1 byte + Serial.print("IOIN = 0x"); + Serial.println(ioin_reg.read(), HEX); + + // Create RegisterBits for VERSION field (bits 31:24) + Adafruit_BusIO_RegisterBits version_bits( + &ioin_reg, 8, 24); // 8 bits wide, starting at bit 24 + + Serial.println("Reading VERSION..."); + uint8_t version = version_bits.read(); + + Serial.print("VERSION = 0x"); + Serial.println(version, HEX); +} + +void loop() { delay(1000); } \ No newline at end of file diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/examples/genericdevice_uarttest/.uno.test.skip b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/examples/genericdevice_uarttest/.uno.test.skip new file mode 100644 index 0000000..e69de29 diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/examples/genericdevice_uarttest/genericdevice_uarttest.ino b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/examples/genericdevice_uarttest/genericdevice_uarttest.ino new file mode 100644 index 0000000..6a11dbf --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/examples/genericdevice_uarttest/genericdevice_uarttest.ino @@ -0,0 +1,98 @@ +/* + Abstracted transport for reading and writing data from a UART-based + device such as a TMC2209 + + Written with help by Claude! + https://claude.ai/chat/335f50b1-3dd8-435e-9139-57ec7ca26a3c (at this time + chats are not shareable :( +*/ + +#include "Adafruit_GenericDevice.h" + +/** + * Basic UART device class that demonstrates using GenericDevice with a Stream + * interface. This example shows how to wrap a Stream (like HardwareSerial or + * SoftwareSerial) with read/write callbacks that can be used by BusIO's + * register functions. + */ +class UARTDevice { +public: + UARTDevice(Stream *serial) : _serial(serial) {} + + // Static callback for writing data to UART + // Called by GenericDevice when data needs to be sent + static bool uart_write(void *thiz, const uint8_t *buffer, size_t len) { + UARTDevice *dev = (UARTDevice *)thiz; + dev->_serial->write(buffer, len); + return true; + } + + // Static callback for reading data from UART + // Includes timeout and will return false if not enough data available + static bool uart_read(void *thiz, uint8_t *buffer, size_t len) { + UARTDevice *dev = (UARTDevice *)thiz; + uint16_t timeout = 100; + while (dev->_serial->available() < len && timeout--) { + delay(1); + } + if (timeout == 0) { + return false; + } + for (size_t i = 0; i < len; i++) { + buffer[i] = dev->_serial->read(); + } + return true; + } + + // Create a GenericDevice instance using our callbacks + Adafruit_GenericDevice *createDevice() { + return new Adafruit_GenericDevice(this, uart_read, uart_write); + } + +private: + Stream *_serial; // Underlying Stream instance (HardwareSerial, etc) +}; + +void setup() { + Serial.begin(115200); + while (!Serial) + ; + delay(100); + + Serial.println("Generic Device test!"); + + // Initialize UART for device communication + Serial1.begin(115200); + + // Create UART wrapper and BusIO device + UARTDevice uart(&Serial1); + Adafruit_GenericDevice *device = uart.createDevice(); + device->begin(); + + // Test write/read cycle + uint8_t write_buf[4] = {0x5, 0x0, 0x0, 0x48}; + uint8_t read_buf[8]; + + Serial.println("Writing data..."); + if (!device->write(write_buf, 4)) { + Serial.println("Write failed!"); + return; + } + + Serial.println("Reading response..."); + if (!device->read(read_buf, 8)) { + Serial.println("Read failed!"); + return; + } + + // Print response bytes + Serial.print("Got response: "); + for (int i = 0; i < 8; i++) { + Serial.print("0x"); + Serial.print(read_buf[i], HEX); + Serial.print(" "); + } + Serial.println(); +} + +void loop() { delay(1000); } \ No newline at end of file diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/examples/i2c_address_detect/i2c_address_detect.ino b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/examples/i2c_address_detect/i2c_address_detect.ino new file mode 100644 index 0000000..f2e6ba7 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/examples/i2c_address_detect/i2c_address_detect.ino @@ -0,0 +1,22 @@ +#include + +Adafruit_I2CDevice i2c_dev = Adafruit_I2CDevice(0x10); + +void setup() { + while (!Serial) { + delay(10); + } + Serial.begin(115200); + Serial.println("I2C address detection test"); + + if (!i2c_dev.begin()) { + Serial.print("Did not find device at 0x"); + Serial.println(i2c_dev.address(), HEX); + while (1) + ; + } + Serial.print("Device found on address 0x"); + Serial.println(i2c_dev.address(), HEX); +} + +void loop() {} diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/examples/i2c_readwrite/i2c_readwrite.ino b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/examples/i2c_readwrite/i2c_readwrite.ino new file mode 100644 index 0000000..4ac2626 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/examples/i2c_readwrite/i2c_readwrite.ino @@ -0,0 +1,45 @@ +#include + +#define I2C_ADDRESS 0x60 +Adafruit_I2CDevice i2c_dev = Adafruit_I2CDevice(I2C_ADDRESS); + +void setup() { + while (!Serial) { + delay(10); + } + Serial.begin(115200); + Serial.println("I2C device read and write test"); + + if (!i2c_dev.begin()) { + Serial.print("Did not find device at 0x"); + Serial.println(i2c_dev.address(), HEX); + while (1) + ; + } + Serial.print("Device found on address 0x"); + Serial.println(i2c_dev.address(), HEX); + + uint8_t buffer[32]; + // Try to read 32 bytes + i2c_dev.read(buffer, 32); + Serial.print("Read: "); + for (uint8_t i = 0; i < 32; i++) { + Serial.print("0x"); + Serial.print(buffer[i], HEX); + Serial.print(", "); + } + Serial.println(); + + // read a register by writing first, then reading + buffer[0] = 0x0C; // we'll reuse the same buffer + i2c_dev.write_then_read(buffer, 1, buffer, 2, false); + Serial.print("Write then Read: "); + for (uint8_t i = 0; i < 2; i++) { + Serial.print("0x"); + Serial.print(buffer[i], HEX); + Serial.print(", "); + } + Serial.println(); +} + +void loop() {} diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/examples/i2c_registers/i2c_registers.ino b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/examples/i2c_registers/i2c_registers.ino new file mode 100644 index 0000000..2d44c83 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/examples/i2c_registers/i2c_registers.ino @@ -0,0 +1,43 @@ +#include +#include + +#define I2C_ADDRESS 0x60 +Adafruit_I2CDevice i2c_dev = Adafruit_I2CDevice(I2C_ADDRESS); + +void setup() { + while (!Serial) { + delay(10); + } + Serial.begin(115200); + Serial.println("I2C device register test"); + + if (!i2c_dev.begin()) { + Serial.print("Did not find device at 0x"); + Serial.println(i2c_dev.address(), HEX); + while (1) + ; + } + Serial.print("Device found on address 0x"); + Serial.println(i2c_dev.address(), HEX); + + Adafruit_BusIO_Register id_reg = + Adafruit_BusIO_Register(&i2c_dev, 0x0C, 2, LSBFIRST); + uint16_t id; + id_reg.read(&id); + Serial.print("ID register = 0x"); + Serial.println(id, HEX); + + Adafruit_BusIO_Register thresh_reg = + Adafruit_BusIO_Register(&i2c_dev, 0x01, 2, LSBFIRST); + uint16_t thresh; + thresh_reg.read(&thresh); + Serial.print("Initial threshold register = 0x"); + Serial.println(thresh, HEX); + + thresh_reg.write(~thresh); + + Serial.print("Post threshold register = 0x"); + Serial.println(thresh_reg.read(), HEX); +} + +void loop() {} \ No newline at end of file diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/examples/i2corspi_register/i2corspi_register.ino b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/examples/i2corspi_register/i2corspi_register.ino new file mode 100644 index 0000000..be04606 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/examples/i2corspi_register/i2corspi_register.ino @@ -0,0 +1,40 @@ +#include + +// Define which interface to use by setting the unused interface to NULL! + +#define SPIDEVICE_CS 10 +Adafruit_SPIDevice *spi_dev = NULL; // new Adafruit_SPIDevice(SPIDEVICE_CS); + +#define I2C_ADDRESS 0x5D +Adafruit_I2CDevice *i2c_dev = new Adafruit_I2CDevice(I2C_ADDRESS); + +void setup() { + while (!Serial) { + delay(10); + } + Serial.begin(115200); + Serial.println("I2C or SPI device register test"); + + if (spi_dev && !spi_dev->begin()) { + Serial.println("Could not initialize SPI device"); + } + + if (i2c_dev) { + if (i2c_dev->begin()) { + Serial.print("Device found on I2C address 0x"); + Serial.println(i2c_dev->address(), HEX); + } else { + Serial.print("Did not find I2C device at 0x"); + Serial.println(i2c_dev->address(), HEX); + } + } + + Adafruit_BusIO_Register id_reg = + Adafruit_BusIO_Register(i2c_dev, spi_dev, ADDRBIT8_HIGH_TOREAD, 0x0F); + uint8_t id = 0; + id_reg.read(&id); + Serial.print("ID register = 0x"); + Serial.println(id, HEX); +} + +void loop() {} diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/examples/spi_modetest/spi_modetest.ino b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/examples/spi_modetest/spi_modetest.ino new file mode 100644 index 0000000..ebf14f9 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/examples/spi_modetest/spi_modetest.ino @@ -0,0 +1,35 @@ +#include + +#define SPIDEVICE_CS 10 +Adafruit_SPIDevice spi_dev = + Adafruit_SPIDevice(SPIDEVICE_CS, 100000, SPI_BITORDER_MSBFIRST, SPI_MODE1); +// Adafruit_SPIDevice spi_dev = Adafruit_SPIDevice(SPIDEVICE_CS, 13, 12, 11, +// 100000, SPI_BITORDER_MSBFIRST, SPI_MODE1); + +void setup() { + while (!Serial) { + delay(10); + } + Serial.begin(115200); + Serial.println("SPI device mode test"); + + if (!spi_dev.begin()) { + Serial.println("Could not initialize SPI device"); + while (1) + ; + } +} + +void loop() { + Serial.println("\n\nTransfer test"); + for (uint16_t x = 0; x <= 0xFF; x++) { + uint8_t i = x; + Serial.print("0x"); + Serial.print(i, HEX); + spi_dev.read(&i, 1, i); + Serial.print("/"); + Serial.print(i, HEX); + Serial.print(", "); + delay(25); + } +} \ No newline at end of file diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/examples/spi_readwrite/spi_readwrite.ino b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/examples/spi_readwrite/spi_readwrite.ino new file mode 100644 index 0000000..4b9ecf1 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/examples/spi_readwrite/spi_readwrite.ino @@ -0,0 +1,43 @@ +#include + +#define SPIDEVICE_CS 10 +Adafruit_SPIDevice spi_dev = Adafruit_SPIDevice(SPIDEVICE_CS); + +void setup() { + while (!Serial) { + delay(10); + } + Serial.begin(115200); + Serial.println("SPI device read and write test"); + + if (!spi_dev.begin()) { + Serial.println("Could not initialize SPI device"); + while (1) + ; + } + + uint8_t buffer[32]; + + // Try to read 32 bytes + spi_dev.read(buffer, 32); + Serial.print("Read: "); + for (uint8_t i = 0; i < 32; i++) { + Serial.print("0x"); + Serial.print(buffer[i], HEX); + Serial.print(", "); + } + Serial.println(); + + // read a register by writing first, then reading + buffer[0] = 0x8F; // we'll reuse the same buffer + spi_dev.write_then_read(buffer, 1, buffer, 2, false); + Serial.print("Write then Read: "); + for (uint8_t i = 0; i < 2; i++) { + Serial.print("0x"); + Serial.print(buffer[i], HEX); + Serial.print(", "); + } + Serial.println(); +} + +void loop() {} diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/examples/spi_register_bits/spi_register_bits.ino b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/examples/spi_register_bits/spi_register_bits.ino new file mode 100644 index 0000000..d11b440 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/examples/spi_register_bits/spi_register_bits.ino @@ -0,0 +1,268 @@ +/*************************************************** + + This is an example for how to use Adafruit_BusIO_RegisterBits from + Adafruit_BusIO library. + + Designed specifically to work with the Adafruit RTD Sensor + ----> https://www.adafruit.com/products/3328 + uisng a MAX31865 RTD-to-Digital Converter + ----> https://datasheets.maximintegrated.com/en/ds/MAX31865.pdf + + This sensor uses SPI to communicate, 4 pins are required to + interface. + A fifth pin helps to detect when a new conversion is ready. + + Adafruit invests time and resources providing this open source code, + please support Adafruit and open-source hardware by purchasing + products from Adafruit! + + Example written (2020/3) by Andreas Hardtung/AnHard. + BSD license, all text above must be included in any redistribution + ****************************************************/ + +#include +#include + +#define MAX31865_SPI_SPEED (5000000) +#define MAX31865_SPI_BITORDER (SPI_BITORDER_MSBFIRST) +#define MAX31865_SPI_MODE (SPI_MODE1) + +#define MAX31865_SPI_CS (10) +#define MAX31865_READY_PIN (2) + +Adafruit_SPIDevice spi_dev = Adafruit_SPIDevice( + MAX31865_SPI_CS, MAX31865_SPI_SPEED, MAX31865_SPI_BITORDER, + MAX31865_SPI_MODE, &SPI); // Hardware SPI +// Adafruit_SPIDevice spi_dev = Adafruit_SPIDevice( MAX31865_SPI_CS, 13, 12, 11, +// MAX31865_SPI_SPEED, MAX31865_SPI_BITORDER, MAX31865_SPI_MODE); // Software +// SPI + +// MAX31865 chip related +// ********************************************************************************************* +Adafruit_BusIO_Register config_reg = + Adafruit_BusIO_Register(&spi_dev, 0x00, ADDRBIT8_HIGH_TOWRITE, 1, MSBFIRST); +Adafruit_BusIO_RegisterBits bias_bit = + Adafruit_BusIO_RegisterBits(&config_reg, 1, 7); +Adafruit_BusIO_RegisterBits auto_bit = + Adafruit_BusIO_RegisterBits(&config_reg, 1, 6); +Adafruit_BusIO_RegisterBits oneS_bit = + Adafruit_BusIO_RegisterBits(&config_reg, 1, 5); +Adafruit_BusIO_RegisterBits wire_bit = + Adafruit_BusIO_RegisterBits(&config_reg, 1, 4); +Adafruit_BusIO_RegisterBits faultT_bits = + Adafruit_BusIO_RegisterBits(&config_reg, 2, 2); +Adafruit_BusIO_RegisterBits faultR_bit = + Adafruit_BusIO_RegisterBits(&config_reg, 1, 1); +Adafruit_BusIO_RegisterBits fi50hz_bit = + Adafruit_BusIO_RegisterBits(&config_reg, 1, 0); + +Adafruit_BusIO_Register rRatio_reg = + Adafruit_BusIO_Register(&spi_dev, 0x01, ADDRBIT8_HIGH_TOWRITE, 2, MSBFIRST); +Adafruit_BusIO_RegisterBits rRatio_bits = + Adafruit_BusIO_RegisterBits(&rRatio_reg, 15, 1); +Adafruit_BusIO_RegisterBits fault_bit = + Adafruit_BusIO_RegisterBits(&rRatio_reg, 1, 0); + +Adafruit_BusIO_Register maxRratio_reg = + Adafruit_BusIO_Register(&spi_dev, 0x03, ADDRBIT8_HIGH_TOWRITE, 2, MSBFIRST); +Adafruit_BusIO_RegisterBits maxRratio_bits = + Adafruit_BusIO_RegisterBits(&maxRratio_reg, 15, 1); + +Adafruit_BusIO_Register minRratio_reg = + Adafruit_BusIO_Register(&spi_dev, 0x05, ADDRBIT8_HIGH_TOWRITE, 2, MSBFIRST); +Adafruit_BusIO_RegisterBits minRratio_bits = + Adafruit_BusIO_RegisterBits(&minRratio_reg, 15, 1); + +Adafruit_BusIO_Register fault_reg = + Adafruit_BusIO_Register(&spi_dev, 0x07, ADDRBIT8_HIGH_TOWRITE, 1, MSBFIRST); +Adafruit_BusIO_RegisterBits range_high_fault_bit = + Adafruit_BusIO_RegisterBits(&fault_reg, 1, 7); +Adafruit_BusIO_RegisterBits range_low_fault_bit = + Adafruit_BusIO_RegisterBits(&fault_reg, 1, 6); +Adafruit_BusIO_RegisterBits refin_high_fault_bit = + Adafruit_BusIO_RegisterBits(&fault_reg, 1, 5); +Adafruit_BusIO_RegisterBits refin_low_fault_bit = + Adafruit_BusIO_RegisterBits(&fault_reg, 1, 4); +Adafruit_BusIO_RegisterBits rtdin_low_fault_bit = + Adafruit_BusIO_RegisterBits(&fault_reg, 1, 3); +Adafruit_BusIO_RegisterBits voltage_fault_bit = + Adafruit_BusIO_RegisterBits(&fault_reg, 1, 2); + +// Print the details of the configuration register. +void printConfig(void) { + Serial.print("BIAS: "); + if (bias_bit.read()) + Serial.print("ON"); + else + Serial.print("OFF"); + Serial.print(", AUTO: "); + if (auto_bit.read()) + Serial.print("ON"); + else + Serial.print("OFF"); + Serial.print(", ONES: "); + if (oneS_bit.read()) + Serial.print("ON"); + else + Serial.print("OFF"); + Serial.print(", WIRE: "); + if (wire_bit.read()) + Serial.print("3"); + else + Serial.print("2/4"); + Serial.print(", FAULTCLEAR: "); + if (faultR_bit.read()) + Serial.print("ON"); + else + Serial.print("OFF"); + Serial.print(", "); + if (fi50hz_bit.read()) + Serial.print("50HZ"); + else + Serial.print("60HZ"); + Serial.println(); +} + +// Check and print faults. Then clear them. +void checkFaults(void) { + if (fault_bit.read()) { + Serial.print("MAX: "); + Serial.println(maxRratio_bits.read()); + Serial.print("VAL: "); + Serial.println(rRatio_bits.read()); + Serial.print("MIN: "); + Serial.println(minRratio_bits.read()); + + if (range_high_fault_bit.read()) + Serial.println("Range high fault"); + if (range_low_fault_bit.read()) + Serial.println("Range low fault"); + if (refin_high_fault_bit.read()) + Serial.println("REFIN high fault"); + if (refin_low_fault_bit.read()) + Serial.println("REFIN low fault"); + if (rtdin_low_fault_bit.read()) + Serial.println("RTDIN low fault"); + if (voltage_fault_bit.read()) + Serial.println("Voltage fault"); + + faultR_bit.write(1); // clear fault + } +} + +void setup() { +#if (MAX31865_1_READY_PIN != -1) + pinMode(MAX31865_READY_PIN, INPUT_PULLUP); +#endif + + while (!Serial) { + delay(10); + } + Serial.begin(115200); + Serial.println("SPI Adafruit_BusIO_RegisterBits test on MAX31865"); + + if (!spi_dev.begin()) { + Serial.println("Could not initialize SPI device"); + while (1) + ; + } + + // Set up for automode 50Hz. We don't care about selfheating. We want the + // highest possible sampling rate. + auto_bit.write(0); // Don't switch filtermode while auto_mode is on. + fi50hz_bit.write(1); // Set filter to 50Hz mode. + faultR_bit.write(1); // Clear faults. + bias_bit.write(1); // In automode we want to have the bias current always on. + delay(5); // Wait until bias current settles down. + // 10.5 time constants of the input RC network is required. + // 10ms worst case for 10kω reference resistor and a 0.1µF capacitor + // across the RTD inputs. Adafruit Module has 0.1µF and only + // 430/4300ω So here 0.43/4.3ms + auto_bit.write( + 1); // Now we can set automode. Automatically starting first conversion. + +// Test the READY_PIN +#if (defined(MAX31865_READY_PIN) && (MAX31865_READY_PIN != -1)) + int i = 0; + while (digitalRead(MAX31865_READY_PIN) && i++ <= 100) { + delay(1); + } + if (i >= 100) { + Serial.print("ERROR: Max31865 Pin detection does not work. PIN:"); + Serial.println(MAX31865_READY_PIN); + } +#else + delay(100); +#endif + + // Set ratio range. + // Setting the temperatures would need some more calculation - not related to + // Adafruit_BusIO_RegisterBits. + uint16_t ratio = rRatio_bits.read(); + maxRratio_bits.write((ratio < 0x8fffu - 1000u) ? ratio + 1000u : 0x8fffu); + minRratio_bits.write((ratio > 1000u) ? ratio - 1000u : 0u); + + printConfig(); + checkFaults(); +} + +void loop() { +#if (defined(MAX31865_READY_PIN) && (MAX31865_1_READY_PIN != -1)) + // Is conversion ready? + if (!digitalRead(MAX31865_READY_PIN)) +#else + // Warant conversion is ready. + delay(21); // 21ms for 50Hz-mode. 19ms in 60Hz-mode. +#endif + { + // Read ratio, calculate temperature, scale, filter and print. + Serial.println(rRatio2C(rRatio_bits.read()) * 100.0f, + 0); // Temperature scaled by 100 + // Check, print, clear faults. + checkFaults(); + } + + // Do something else. + // delay(15000); +} + +// Module/Sensor related. Here Adafruit PT100 module with a 2_Wire PT100 Class C +// ***************************** +float rRatio2C(uint16_t ratio) { + // A simple linear conversion. + const float R0 = 100.0f; + const float Rref = 430.0f; + const float alphaPT = 0.003850f; + const float ADCmax = (1u << 15) - 1.0f; + const float rscale = Rref / ADCmax; + // Measured temperature in boiling water 101.08°C with factor a = 1 and b = 0. + // Rref and MAX at about 22±2°C. Measured temperature in ice/water bath 0.76°C + // with factor a = 1 and b = 0. Rref and MAX at about 22±2°C. + // const float a = 1.0f / (alphaPT * R0); + const float a = (100.0f / 101.08f) / (alphaPT * R0); + // const float b = 0.0f; // 101.08 + const float b = -0.76f; // 100.32 > 101.08 + + return filterRing(((ratio * rscale) - R0) * a + b); +} + +// General purpose +// ********************************************************************************************* +#define RINGLENGTH 250 +float filterRing(float newVal) { + static float ring[RINGLENGTH] = {0.0}; + static uint8_t ringIndex = 0; + static bool ringFull = false; + + if (ringIndex == RINGLENGTH) { + ringFull = true; + ringIndex = 0; + } + ring[ringIndex] = newVal; + uint8_t loopEnd = (ringFull) ? RINGLENGTH : ringIndex + 1; + float ringSum = 0.0f; + for (uint8_t i = 0; i < loopEnd; i++) + ringSum += ring[i]; + ringIndex++; + return ringSum / loopEnd; +} diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/examples/spi_registers/spi_registers.ino b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/examples/spi_registers/spi_registers.ino new file mode 100644 index 0000000..af6069b --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/examples/spi_registers/spi_registers.ino @@ -0,0 +1,40 @@ +#include +#include + +#define SPIDEVICE_CS 10 +Adafruit_SPIDevice spi_dev = Adafruit_SPIDevice(SPIDEVICE_CS); + +void setup() { + while (!Serial) { + delay(10); + } + Serial.begin(115200); + Serial.println("SPI device register test"); + + if (!spi_dev.begin()) { + Serial.println("Could not initialize SPI device"); + while (1) + ; + } + + Adafruit_BusIO_Register id_reg = + Adafruit_BusIO_Register(&spi_dev, 0x0F, ADDRBIT8_HIGH_TOREAD); + uint8_t id = 0; + id_reg.read(&id); + Serial.print("ID register = 0x"); + Serial.println(id, HEX); + + Adafruit_BusIO_Register thresh_reg = Adafruit_BusIO_Register( + &spi_dev, 0x0C, ADDRBIT8_HIGH_TOREAD, 2, LSBFIRST); + uint16_t thresh = 0; + thresh_reg.read(&thresh); + Serial.print("Initial threshold register = 0x"); + Serial.println(thresh, HEX); + + thresh_reg.write(~thresh); + + Serial.print("Post threshold register = 0x"); + Serial.println(thresh_reg.read(), HEX); +} + +void loop() {} diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/library.properties b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/library.properties new file mode 100644 index 0000000..1615468 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit BusIO/library.properties @@ -0,0 +1,9 @@ +name=Adafruit BusIO +version=1.17.4 +author=Adafruit +maintainer=Adafruit +sentence=This is a library for abstracting away UART, I2C and SPI interfacing +paragraph=This is a library for abstracting away UART, I2C and SPI interfacing +category=Signal Input/Output +url=https://github.com/adafruit/Adafruit_BusIO +architectures=* diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/.clang-format b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/.clang-format new file mode 100644 index 0000000..e1b53a0 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/.clang-format @@ -0,0 +1,239 @@ +Language: Cpp +# BasedOnStyle: LLVM +AccessModifierOffset: -2 +AlignAfterOpenBracket: Align +AlignArrayOfStructures: None +AlignConsecutiveAssignments: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + PadOperators: true +AlignConsecutiveBitFields: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + PadOperators: false +AlignConsecutiveDeclarations: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + PadOperators: false +AlignConsecutiveMacros: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + PadOperators: false +AlignConsecutiveShortCaseStatements: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCaseColons: false +AlignEscapedNewlines: Right +AlignOperands: Align +AlignTrailingComments: + Kind: Always + OverEmptyLines: 0 +AllowAllArgumentsOnNextLine: true +AllowAllParametersOfDeclarationOnNextLine: true +AllowBreakBeforeNoexceptSpecifier: Never +AllowShortBlocksOnASingleLine: Never +AllowShortCaseLabelsOnASingleLine: false +AllowShortCompoundRequirementOnASingleLine: true +AllowShortEnumsOnASingleLine: true +AllowShortFunctionsOnASingleLine: All +AllowShortIfStatementsOnASingleLine: Never +AllowShortLambdasOnASingleLine: All +AllowShortLoopsOnASingleLine: false +AlwaysBreakAfterDefinitionReturnType: None +AlwaysBreakAfterReturnType: None +AlwaysBreakBeforeMultilineStrings: false +AlwaysBreakTemplateDeclarations: MultiLine +AttributeMacros: + - __capability +BinPackArguments: true +BinPackParameters: true +BitFieldColonSpacing: Both +BraceWrapping: + AfterCaseLabel: false + AfterClass: false + AfterControlStatement: Never + AfterEnum: false + AfterExternBlock: false + AfterFunction: false + AfterNamespace: false + AfterObjCDeclaration: false + AfterStruct: false + AfterUnion: false + BeforeCatch: false + BeforeElse: false + BeforeLambdaBody: false + BeforeWhile: false + IndentBraces: false + SplitEmptyFunction: true + SplitEmptyRecord: true + SplitEmptyNamespace: true +BreakAdjacentStringLiterals: true +BreakAfterAttributes: Leave +BreakAfterJavaFieldAnnotations: false +BreakArrays: true +BreakBeforeBinaryOperators: None +BreakBeforeConceptDeclarations: Always +BreakBeforeBraces: Attach +BreakBeforeInlineASMColon: OnlyMultiline +BreakBeforeTernaryOperators: true +BreakConstructorInitializers: BeforeColon +BreakInheritanceList: BeforeColon +BreakStringLiterals: true +ColumnLimit: 80 +CommentPragmas: '^ IWYU pragma:' +CompactNamespaces: false +ConstructorInitializerIndentWidth: 4 +ContinuationIndentWidth: 4 +Cpp11BracedListStyle: true +DerivePointerAlignment: false +DisableFormat: false +EmptyLineAfterAccessModifier: Never +EmptyLineBeforeAccessModifier: LogicalBlock +ExperimentalAutoDetectBinPacking: false +FixNamespaceComments: true +ForEachMacros: + - foreach + - Q_FOREACH + - BOOST_FOREACH +IfMacros: + - KJ_IF_MAYBE +IncludeBlocks: Preserve +IncludeCategories: + - Regex: '^"(llvm|llvm-c|clang|clang-c)/' + Priority: 2 + SortPriority: 0 + CaseSensitive: false + - Regex: '^(<|"(gtest|gmock|isl|json)/)' + Priority: 3 + SortPriority: 0 + CaseSensitive: false + - Regex: '.*' + Priority: 1 + SortPriority: 0 + CaseSensitive: false +IncludeIsMainRegex: '(Test)?$' +IncludeIsMainSourceRegex: '' +IndentAccessModifiers: false +IndentCaseBlocks: false +IndentCaseLabels: false +IndentExternBlock: AfterExternBlock +IndentGotoLabels: true +IndentPPDirectives: None +IndentRequiresClause: true +IndentWidth: 2 +IndentWrappedFunctionNames: false +InsertBraces: false +InsertNewlineAtEOF: false +InsertTrailingCommas: None +IntegerLiteralSeparator: + Binary: 0 + BinaryMinDigits: 0 + Decimal: 0 + DecimalMinDigits: 0 + Hex: 0 + HexMinDigits: 0 +JavaScriptQuotes: Leave +JavaScriptWrapImports: true +KeepEmptyLinesAtTheStartOfBlocks: true +KeepEmptyLinesAtEOF: false +LambdaBodyIndentation: Signature +LineEnding: DeriveLF +MacroBlockBegin: '' +MacroBlockEnd: '' +MaxEmptyLinesToKeep: 1 +NamespaceIndentation: None +ObjCBinPackProtocolList: Auto +ObjCBlockIndentWidth: 2 +ObjCBreakBeforeNestedBlockParam: true +ObjCSpaceAfterProperty: false +ObjCSpaceBeforeProtocolList: true +PackConstructorInitializers: BinPack +PenaltyBreakAssignment: 2 +PenaltyBreakBeforeFirstCallParameter: 19 +PenaltyBreakComment: 300 +PenaltyBreakFirstLessLess: 120 +PenaltyBreakOpenParenthesis: 0 +PenaltyBreakScopeResolution: 500 +PenaltyBreakString: 1000 +PenaltyBreakTemplateDeclaration: 10 +PenaltyExcessCharacter: 1000000 +PenaltyIndentedWhitespace: 0 +PenaltyReturnTypeOnItsOwnLine: 60 +PointerAlignment: Right +PPIndentWidth: -1 +QualifierAlignment: Leave +ReferenceAlignment: Pointer +ReflowComments: true +RemoveBracesLLVM: false +RemoveParentheses: Leave +RemoveSemicolon: false +RequiresClausePosition: OwnLine +RequiresExpressionIndentation: OuterScope +SeparateDefinitionBlocks: Leave +ShortNamespaceLines: 1 +SkipMacroDefinitionBody: false +SortIncludes: CaseSensitive +SortJavaStaticImport: Before +SortUsingDeclarations: LexicographicNumeric +SpaceAfterCStyleCast: false +SpaceAfterLogicalNot: false +SpaceAfterTemplateKeyword: true +SpaceAroundPointerQualifiers: Default +SpaceBeforeAssignmentOperators: true +SpaceBeforeCaseColon: false +SpaceBeforeCpp11BracedList: false +SpaceBeforeCtorInitializerColon: true +SpaceBeforeInheritanceColon: true +SpaceBeforeJsonColon: false +SpaceBeforeParens: ControlStatements +SpaceBeforeParensOptions: + AfterControlStatements: true + AfterForeachMacros: true + AfterFunctionDefinitionName: false + AfterFunctionDeclarationName: false + AfterIfMacros: true + AfterOverloadedOperator: false + AfterPlacementOperator: true + AfterRequiresInClause: false + AfterRequiresInExpression: false + BeforeNonEmptyParentheses: false +SpaceBeforeRangeBasedForLoopColon: true +SpaceBeforeSquareBrackets: false +SpaceInEmptyBlock: false +SpacesBeforeTrailingComments: 1 +SpacesInAngles: Never +SpacesInContainerLiterals: true +SpacesInLineCommentPrefix: + Minimum: 1 + Maximum: -1 +SpacesInParens: Never +SpacesInParensOptions: + InCStyleCasts: false + InConditionalStatements: false + InEmptyParentheses: false + Other: false +SpacesInSquareBrackets: false +Standard: Latest +StatementAttributeLikeMacros: + - Q_EMIT +StatementMacros: + - Q_UNUSED + - QT_REQUIRE_VERSION +TabWidth: 8 +UseTab: Never +VerilogBreakBetweenInstancePorts: true +WhitespaceSensitiveMacros: + - BOOST_PP_STRINGIZE + - CF_SWIFT_NAME + - NS_SWIFT_NAME + - PP_STRINGIZE + - STRINGIZE diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/.github/ISSUE_TEMPLATE.md b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/.github/ISSUE_TEMPLATE.md new file mode 100644 index 0000000..f0e2614 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,46 @@ +Thank you for opening an issue on an Adafruit Arduino library repository. To +improve the speed of resolution please review the following guidelines and +common troubleshooting steps below before creating the issue: + +- **Do not use GitHub issues for troubleshooting projects and issues.** Instead use + the forums at http://forums.adafruit.com to ask questions and troubleshoot why + something isn't working as expected. In many cases the problem is a common issue + that you will more quickly receive help from the forum community. GitHub issues + are meant for known defects in the code. If you don't know if there is a defect + in the code then start with troubleshooting on the forum first. + +- **If following a tutorial or guide be sure you didn't miss a step.** Carefully + check all of the steps and commands to run have been followed. Consult the + forum if you're unsure or have questions about steps in a guide/tutorial. + +- **For Arduino projects check these very common issues to ensure they don't apply**: + + - For uploading sketches or communicating with the board make sure you're using + a **USB data cable** and **not** a **USB charge-only cable**. It is sometimes + very hard to tell the difference between a data and charge cable! Try using the + cable with other devices or swapping to another cable to confirm it is not + the problem. + + - **Be sure you are supplying adequate power to the board.** Check the specs of + your board and plug in an external power supply. In many cases just + plugging a board into your computer is not enough to power it and other + peripherals. + + - **Double check all soldering joints and connections.** Flakey connections + cause many mysterious problems. See the [guide to excellent soldering](https://learn.adafruit.com/adafruit-guide-excellent-soldering/tools) for examples of good solder joints. + + - **Ensure you are using an official Arduino or Adafruit board.** We can't + guarantee a clone board will have the same functionality and work as expected + with this code and don't support them. + +If you're sure this issue is a defect in the code and checked the steps above +please fill in the following fields to provide enough troubleshooting information. +You may delete the guideline and text above to just leave the following details: + +- Arduino board: **INSERT ARDUINO BOARD NAME/TYPE HERE** + +- Arduino IDE version (found in Arduino -> About Arduino menu): **INSERT ARDUINO + VERSION HERE** + +- List the steps to reproduce the problem below (if possible attach a sketch or + copy the sketch code in too): **LIST REPRO STEPS BELOW** diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/.github/PULL_REQUEST_TEMPLATE.md b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..7b641eb --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,26 @@ +Thank you for creating a pull request to contribute to Adafruit's GitHub code! +Before you open the request please review the following guidelines and tips to +help it be more easily integrated: + +- **Describe the scope of your change--i.e. what the change does and what parts + of the code were modified.** This will help us understand any risks of integrating + the code. + +- **Describe any known limitations with your change.** For example if the change + doesn't apply to a supported platform of the library please mention it. + +- **Please run any tests or examples that can exercise your modified code.** We + strive to not break users of the code and running tests/examples helps with this + process. + +Thank you again for contributing! We will try to test and integrate the change +as soon as we can, but be aware we have many GitHub repositories to manage and +can't immediately respond to every request. There is no need to bump or check in +on a pull request (it will clutter the discussion of the request). + +Also don't be worried if the request is closed or not integrated--sometimes the +priorities of Adafruit's GitHub code (education, ease of use) might not match the +priorities of the pull request. Don't fret, the open source community thrives on +forks and GitHub makes it easy to keep your changes in a forked repo. + +After reviewing the guidelines above you can delete this text from the pull request. diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/.github/workflows/githubci.yml b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/.github/workflows/githubci.yml new file mode 100644 index 0000000..a04a162 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/.github/workflows/githubci.yml @@ -0,0 +1,36 @@ +name: Arduino Library CI + +on: [pull_request, push, repository_dispatch] + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/setup-python@v4 + with: + python-version: '3.x' + - uses: actions/checkout@v3 + - uses: actions/checkout@v3 + with: + repository: adafruit/ci-arduino + path: ci + + - name: pre-install + run: bash ci/actions_install.sh + + - name: extra libraries + run: | + git clone --quiet https://github.com/adafruit/Adafruit_ILI9341.git /home/runner/Arduino/libraries/Adafruit_ILI9341 + + - name: test platforms + run: python3 ci/build_platform.py main_platforms + + - name: clang + run: python3 ci/run-clang-format.py -e "ci/*" -e "bin/*" -r . + + - name: doxygen + env: + GH_REPO_TOKEN: ${{ secrets.GH_REPO_TOKEN }} + PRETTYNAME : "Adafruit GFX Library" + run: bash ci/doxy_gen_and_deploy.sh diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/.gitignore b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/.gitignore new file mode 100644 index 0000000..469bb73 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/.gitignore @@ -0,0 +1,6 @@ +default.vim +fontconvert/fontconvert +# Our handy .gitignore for automation ease +Doxyfile* +doxygen_sqlite3.db +html \ No newline at end of file diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/.piopm b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/.piopm new file mode 100644 index 0000000..9ed8464 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/.piopm @@ -0,0 +1 @@ +{"type": "library", "name": "Adafruit GFX Library", "version": "1.12.6", "spec": {"owner": "adafruit", "id": 13, "name": "Adafruit GFX Library", "requirements": null, "uri": null}} \ No newline at end of file diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Adafruit_GFX.cpp b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Adafruit_GFX.cpp new file mode 100644 index 0000000..ae26bf1 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Adafruit_GFX.cpp @@ -0,0 +1,2952 @@ +/* +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. + */ + +#include "Adafruit_GFX.h" +#include "glcdfont.c" +#ifdef __AVR__ +#include +#elif defined(ESP8266) || defined(ESP32) +#include +#endif + +// 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 + +inline GFXglyph *pgm_read_glyph_ptr(const GFXfont *gfxFont, uint8_t c) { +#ifdef __AVR__ + return &(((GFXglyph *)pgm_read_pointer(&gfxFont->glyph))[c]); +#else + // expression in __AVR__ section may generate "dereferencing type-punned + // pointer will break strict-aliasing rules" warning In fact, on other + // platforms (such as STM32) there is no need to do this pointer magic as + // program memory may be read in a usual way So expression may be simplified + return gfxFont->glyph + c; +#endif //__AVR__ +} + +inline uint8_t *pgm_read_bitmap_ptr(const GFXfont *gfxFont) { +#ifdef __AVR__ + return (uint8_t *)pgm_read_pointer(&gfxFont->bitmap); +#else + // expression in __AVR__ section generates "dereferencing type-punned pointer + // will break strict-aliasing rules" warning In fact, on other platforms (such + // as STM32) there is no need to do this pointer magic as program memory may + // be read in a usual way So expression may be simplified + return gfxFont->bitmap; +#endif //__AVR__ +} + +#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 + +/**************************************************************************/ +/*! + @brief Instatiate a GFX context for graphics! Can only be done by a + superclass + @param w Display width, in pixels + @param h Display height, in pixels +*/ +/**************************************************************************/ +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_x = textsize_y = 1; + textcolor = textbgcolor = 0xFFFF; + wrap = true; + _cp437 = false; + gfxFont = NULL; +} + +/**************************************************************************/ +/*! + @brief Write a line. Bresenham's algorithm - thx wikpedia + @param x0 Start point x coordinate + @param y0 Start point y coordinate + @param x1 End point x coordinate + @param y1 End point y coordinate + @param color 16-bit 5-6-5 Color to draw with +*/ +/**************************************************************************/ +void Adafruit_GFX::writeLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, + uint16_t color) { +#if defined(ESP8266) + yield(); +#endif + 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) { + writePixel(y0, x0, color); + } else { + writePixel(x0, y0, color); + } + err -= dy; + if (err < 0) { + y0 += ystep; + err += dx; + } + } +} + +/**************************************************************************/ +/*! + @brief Start a display-writing routine, overwrite in subclasses. +*/ +/**************************************************************************/ +void Adafruit_GFX::startWrite() {} + +/**************************************************************************/ +/*! + @brief Write a pixel, overwrite in subclasses if startWrite is defined! + @param x x coordinate + @param y y coordinate + @param color 16-bit 5-6-5 Color to fill with +*/ +/**************************************************************************/ +void Adafruit_GFX::writePixel(int16_t x, int16_t y, uint16_t color) { + drawPixel(x, y, color); +} + +/**************************************************************************/ +/*! + @brief Write a perfectly vertical line, overwrite in subclasses if + startWrite is defined! + @param x Top-most x coordinate + @param y Top-most y coordinate + @param h Height in pixels + @param color 16-bit 5-6-5 Color to fill with +*/ +/**************************************************************************/ +void Adafruit_GFX::writeFastVLine(int16_t x, int16_t y, int16_t h, + uint16_t color) { + // Overwrite in subclasses if startWrite is defined! + // Can be just writeLine(x, y, x, y+h-1, color); + // or writeFillRect(x, y, 1, h, color); + drawFastVLine(x, y, h, color); +} + +/**************************************************************************/ +/*! + @brief Write a perfectly horizontal line, overwrite in subclasses if + startWrite is defined! + @param x Left-most x coordinate + @param y Left-most y coordinate + @param w Width in pixels + @param color 16-bit 5-6-5 Color to fill with +*/ +/**************************************************************************/ +void Adafruit_GFX::writeFastHLine(int16_t x, int16_t y, int16_t w, + uint16_t color) { + // Overwrite in subclasses if startWrite is defined! + // Example: writeLine(x, y, x+w-1, y, color); + // or writeFillRect(x, y, w, 1, color); + drawFastHLine(x, y, w, color); +} + +/**************************************************************************/ +/*! + @brief Write a rectangle completely with one color, overwrite in + subclasses if startWrite is defined! + @param x Top left corner x coordinate + @param y Top left corner y coordinate + @param w Width in pixels + @param h Height in pixels + @param color 16-bit 5-6-5 Color to fill with +*/ +/**************************************************************************/ +void Adafruit_GFX::writeFillRect(int16_t x, int16_t y, int16_t w, int16_t h, + uint16_t color) { + // Overwrite in subclasses if desired! + fillRect(x, y, w, h, color); +} + +/**************************************************************************/ +/*! + @brief End a display-writing routine, overwrite in subclasses if + startWrite is defined! +*/ +/**************************************************************************/ +void Adafruit_GFX::endWrite() {} + +/**************************************************************************/ +/*! + @brief Draw a perfectly vertical line (this is often optimized in a + subclass!) + @param x Top-most x coordinate + @param y Top-most y coordinate + @param h Height in pixels + @param color 16-bit 5-6-5 Color to fill with +*/ +/**************************************************************************/ +void Adafruit_GFX::drawFastVLine(int16_t x, int16_t y, int16_t h, + uint16_t color) { + startWrite(); + writeLine(x, y, x, y + h - 1, color); + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Draw a perfectly horizontal line (this is often optimized in a + subclass!) + @param x Left-most x coordinate + @param y Left-most y coordinate + @param w Width in pixels + @param color 16-bit 5-6-5 Color to fill with +*/ +/**************************************************************************/ +void Adafruit_GFX::drawFastHLine(int16_t x, int16_t y, int16_t w, + uint16_t color) { + startWrite(); + writeLine(x, y, x + w - 1, y, color); + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Fill a rectangle completely with one color. Update in subclasses if + desired! + @param x Top left corner x coordinate + @param y Top left corner y coordinate + @param w Width in pixels + @param h Height in pixels + @param color 16-bit 5-6-5 Color to fill with +*/ +/**************************************************************************/ +void Adafruit_GFX::fillRect(int16_t x, int16_t y, int16_t w, int16_t h, + uint16_t color) { + startWrite(); + for (int16_t i = x; i < x + w; i++) { + writeFastVLine(i, y, h, color); + } + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Fill the screen completely with one color. Update in subclasses if + desired! + @param color 16-bit 5-6-5 Color to fill with +*/ +/**************************************************************************/ +void Adafruit_GFX::fillScreen(uint16_t color) { + fillRect(0, 0, _width, _height, color); +} + +/**************************************************************************/ +/*! + @brief Draw a line + @param x0 Start point x coordinate + @param y0 Start point y coordinate + @param x1 End point x coordinate + @param y1 End point y coordinate + @param color 16-bit 5-6-5 Color to draw with +*/ +/**************************************************************************/ +void Adafruit_GFX::drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, + uint16_t color) { + // Update in subclasses if desired! + if (x0 == x1) { + if (y0 > y1) + _swap_int16_t(y0, y1); + drawFastVLine(x0, y0, y1 - y0 + 1, color); + } else if (y0 == y1) { + if (x0 > x1) + _swap_int16_t(x0, x1); + drawFastHLine(x0, y0, x1 - x0 + 1, color); + } else { + startWrite(); + writeLine(x0, y0, x1, y1, color); + endWrite(); + } +} + +/**************************************************************************/ +/*! + @brief Draw an ellipse outline + @param x0 Center-point x coordinate + @param y0 Center-point y coordinate + @param rw Horizontal radius of ellipse + @param rh Vertical radius of ellipse + @param color 16-bit 5-6-5 Color to draw with +*/ +/**************************************************************************/ +void Adafruit_GFX::drawEllipse(int16_t x0, int16_t y0, int16_t rw, int16_t rh, + uint16_t color) { +#if defined(ESP8266) + yield(); +#endif + // Bresenham's ellipse algorithm + int16_t x = 0, y = rh; + int32_t rw2 = rw * rw, rh2 = rh * rh; + int32_t twoRw2 = 2 * rw2, twoRh2 = 2 * rh2; + + int32_t decision = rh2 - (rw2 * rh) + (rw2 / 4); + + startWrite(); + + // region 1 + while ((twoRh2 * x) < (twoRw2 * y)) { + writePixel(x0 + x, y0 + y, color); + writePixel(x0 - x, y0 + y, color); + writePixel(x0 + x, y0 - y, color); + writePixel(x0 - x, y0 - y, color); + x++; + if (decision < 0) { + decision += rh2 + (twoRh2 * x); + } else { + decision += rh2 + (twoRh2 * x) - (twoRw2 * y); + y--; + } + } + + // region 2 + decision = ((rh2 * (2 * x + 1) * (2 * x + 1)) >> 2) + + (rw2 * (y - 1) * (y - 1)) - (rw2 * rh2); + while (y >= 0) { + writePixel(x0 + x, y0 + y, color); + writePixel(x0 - x, y0 + y, color); + writePixel(x0 + x, y0 - y, color); + writePixel(x0 - x, y0 - y, color); + y--; + if (decision > 0) { + decision += rw2 - (twoRw2 * y); + } else { + decision += rw2 + (twoRh2 * x) - (twoRw2 * y); + x++; + } + } + + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Draw an ellipse with filled colour + @param x0 Center-point x coordinate + @param y0 Center-point y coordinate + @param rw Horizontal radius of ellipse + @param rh Vertical radius of ellipse + @param color 16-bit 5-6-5 Color to draw with +*/ +/**************************************************************************/ +void Adafruit_GFX::fillEllipse(int16_t x0, int16_t y0, int16_t rw, int16_t rh, + uint16_t color) { +#if defined(ESP8266) + yield(); +#endif + // Bresenham's ellipse algorithm + int16_t x = 0, y = rh; + int32_t rw2 = rw * rw, rh2 = rh * rh; + int32_t twoRw2 = 2 * rw2, twoRh2 = 2 * rh2; + + int32_t decision = rh2 - (rw2 * rh) + (rw2 / 4); + + startWrite(); + + // region 1 + while ((twoRh2 * x) < (twoRw2 * y)) { + x++; + if (decision < 0) { + decision += rh2 + (twoRh2 * x); + } else { + decision += rh2 + (twoRh2 * x) - (twoRw2 * y); + drawFastHLine(x0 - (x - 1), y0 + y, 2 * (x - 1) + 1, color); + drawFastHLine(x0 - (x - 1), y0 - y, 2 * (x - 1) + 1, color); + y--; + } + } + + // region 2 + decision = ((rh2 * (2 * x + 1) * (2 * x + 1)) >> 2) + + (rw2 * (y - 1) * (y - 1)) - (rw2 * rh2); + while (y >= 0) { + drawFastHLine(x0 - x, y0 + y, 2 * x + 1, color); + drawFastHLine(x0 - x, y0 - y, 2 * x + 1, color); + + y--; + if (decision > 0) { + decision += rw2 - (twoRw2 * y); + } else { + decision += rw2 + (twoRh2 * x) - (twoRw2 * y); + x++; + } + } + + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Draw a circle outline + @param x0 Center-point x coordinate + @param y0 Center-point y coordinate + @param r Radius of circle + @param color 16-bit 5-6-5 Color to draw with +*/ +/**************************************************************************/ +void Adafruit_GFX::drawCircle(int16_t x0, int16_t y0, int16_t r, + uint16_t color) { +#if defined(ESP8266) + yield(); +#endif + int16_t f = 1 - r; + int16_t ddF_x = 1; + int16_t ddF_y = -2 * r; + int16_t x = 0; + int16_t y = r; + + startWrite(); + writePixel(x0, y0 + r, color); + writePixel(x0, y0 - r, color); + writePixel(x0 + r, y0, color); + writePixel(x0 - r, y0, color); + + while (x < y) { + if (f >= 0) { + y--; + ddF_y += 2; + f += ddF_y; + } + x++; + ddF_x += 2; + f += ddF_x; + + writePixel(x0 + x, y0 + y, color); + writePixel(x0 - x, y0 + y, color); + writePixel(x0 + x, y0 - y, color); + writePixel(x0 - x, y0 - y, color); + writePixel(x0 + y, y0 + x, color); + writePixel(x0 - y, y0 + x, color); + writePixel(x0 + y, y0 - x, color); + writePixel(x0 - y, y0 - x, color); + } + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Quarter-circle drawer, used to do circles and roundrects + @param x0 Center-point x coordinate + @param y0 Center-point y coordinate + @param r Radius of circle + @param cornername Mask bit #1, #2, #4, and #8 to indicate which quarters + of the circle we're doing + @param color 16-bit 5-6-5 Color to draw with +*/ +/**************************************************************************/ +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 < y) { + if (f >= 0) { + y--; + ddF_y += 2; + f += ddF_y; + } + x++; + ddF_x += 2; + f += ddF_x; + if (cornername & 0x4) { + writePixel(x0 + x, y0 + y, color); + writePixel(x0 + y, y0 + x, color); + } + if (cornername & 0x2) { + writePixel(x0 + x, y0 - y, color); + writePixel(x0 + y, y0 - x, color); + } + if (cornername & 0x8) { + writePixel(x0 - y, y0 + x, color); + writePixel(x0 - x, y0 + y, color); + } + if (cornername & 0x1) { + writePixel(x0 - y, y0 - x, color); + writePixel(x0 - x, y0 - y, color); + } + } +} + +/**************************************************************************/ +/*! + @brief Draw a circle with filled color + @param x0 Center-point x coordinate + @param y0 Center-point y coordinate + @param r Radius of circle + @param color 16-bit 5-6-5 Color to fill with +*/ +/**************************************************************************/ +void Adafruit_GFX::fillCircle(int16_t x0, int16_t y0, int16_t r, + uint16_t color) { + startWrite(); + writeFastVLine(x0, y0 - r, 2 * r + 1, color); + fillCircleHelper(x0, y0, r, 3, 0, color); + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Half-circle drawer with fill, used for circles and roundrects + @param x0 Center-point x coordinate + @param y0 Center-point y coordinate + @param r Radius of circle + @param corners Mask bits indicating which sides of the circle we are + doing, left (1) and/or right (2) + @param delta Offset from center-point, used for round-rects + @param color 16-bit 5-6-5 Color to fill with +*/ +/**************************************************************************/ +void Adafruit_GFX::fillCircleHelper(int16_t x0, int16_t y0, int16_t r, + uint8_t corners, 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; + int16_t px = x; + int16_t py = y; + + delta++; // Avoid some +1's in the loop + + while (x < y) { + if (f >= 0) { + y--; + ddF_y += 2; + f += ddF_y; + } + x++; + ddF_x += 2; + f += ddF_x; + // These checks avoid double-drawing certain lines, important + // for the SSD1306 library which has an INVERT drawing mode. + if (x < (y + 1)) { + if (corners & 1) + writeFastVLine(x0 + x, y0 - y, 2 * y + delta, color); + if (corners & 2) + writeFastVLine(x0 - x, y0 - y, 2 * y + delta, color); + } + if (y != py) { + if (corners & 1) + writeFastVLine(x0 + py, y0 - px, 2 * px + delta, color); + if (corners & 2) + writeFastVLine(x0 - py, y0 - px, 2 * px + delta, color); + py = y; + } + px = x; + } +} + +/**************************************************************************/ +/*! + @brief Draw a rectangle with no fill color + @param x Top left corner x coordinate + @param y Top left corner y coordinate + @param w Width in pixels + @param h Height in pixels + @param color 16-bit 5-6-5 Color to draw with +*/ +/**************************************************************************/ +void Adafruit_GFX::drawRect(int16_t x, int16_t y, int16_t w, int16_t h, + uint16_t color) { + startWrite(); + writeFastHLine(x, y, w, color); + writeFastHLine(x, y + h - 1, w, color); + writeFastVLine(x, y, h, color); + writeFastVLine(x + w - 1, y, h, color); + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Draw a rounded rectangle with no fill color + @param x Top left corner x coordinate + @param y Top left corner y coordinate + @param w Width in pixels + @param h Height in pixels + @param r Radius of corner rounding + @param color 16-bit 5-6-5 Color to draw with +*/ +/**************************************************************************/ +void Adafruit_GFX::drawRoundRect(int16_t x, int16_t y, int16_t w, int16_t h, + int16_t r, uint16_t color) { + int16_t max_radius = ((w < h) ? w : h) / 2; // 1/2 minor axis + if (r > max_radius) + r = max_radius; + // smarter version + startWrite(); + writeFastHLine(x + r, y, w - 2 * r, color); // Top + writeFastHLine(x + r, y + h - 1, w - 2 * r, color); // Bottom + writeFastVLine(x, y + r, h - 2 * r, color); // Left + writeFastVLine(x + w - 1, y + r, h - 2 * r, color); // Right + // draw four corners + drawCircleHelper(x + r, y + r, r, 1, color); + drawCircleHelper(x + w - r - 1, y + r, r, 2, color); + drawCircleHelper(x + w - r - 1, y + h - r - 1, r, 4, color); + drawCircleHelper(x + r, y + h - r - 1, r, 8, color); + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Draw a rounded rectangle with fill color + @param x Top left corner x coordinate + @param y Top left corner y coordinate + @param w Width in pixels + @param h Height in pixels + @param r Radius of corner rounding + @param color 16-bit 5-6-5 Color to draw/fill with +*/ +/**************************************************************************/ +void Adafruit_GFX::fillRoundRect(int16_t x, int16_t y, int16_t w, int16_t h, + int16_t r, uint16_t color) { + int16_t max_radius = ((w < h) ? w : h) / 2; // 1/2 minor axis + if (r > max_radius) + r = max_radius; + // smarter version + startWrite(); + writeFillRect(x + r, y, w - 2 * r, h, color); + // draw four corners + fillCircleHelper(x + w - r - 1, y + r, r, 1, h - 2 * r - 1, color); + fillCircleHelper(x + r, y + r, r, 2, h - 2 * r - 1, color); + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Draw a rotated rectangle + @param cenX x coordinate of center of rectangle. + For even width rectangles, this point + represents the pixel to the left of + true center. + @param cenY y coordinate of center of rectangle. + For even height rectangles, this point + represents the pixel above + true center. + @param w width of rectangle + @param h height of rectangle + @param angleDeg angle of rotation of rectangle + @param color 16-bit 5-6-5 Color to fill/draw with +*/ +/**************************************************************************/ +void Adafruit_GFX::drawRotatedRect(int16_t cenX, int16_t cenY, int16_t w, + int16_t h, int16_t angleDeg, + uint16_t color) { + + if (w < 1 || h < 1) + return; // We don't draw zero dimensioned objects + + int16_t W = w - 1; + int16_t H = h - 1; + + int16_t halfW = (W / 2); // Midpoint should always be integer + int16_t halfH = (H / 2); // Midpoint should always be integer + + int16_t x0 = W - halfW; // bottom-right + int16_t y0 = H - halfH; // bottom-right + int16_t x1 = -halfW; // bottom-left + int16_t y1 = H - halfH; // bottom-left + int16_t x2 = -halfW; // top-left + int16_t y2 = -halfH; // top-left + int16_t x3 = W - halfW; // top-right + int16_t y3 = -halfH; // top-right + + rotatePoint(x0, y0, angleDeg); + rotatePoint(x1, y1, angleDeg); + rotatePoint(x2, y2, angleDeg); + rotatePoint(x3, y3, angleDeg); + + x0 += cenX; + x1 += cenX; + x2 += cenX; + x3 += cenX; + + y0 += cenY; + y1 += cenY; + y2 += cenY; + y3 += cenY; + + drawLine(x0, y0, x1, y1, color); // bottom right to bottom left + drawLine(x1, y1, x2, y2, color); // bottom left to top left + drawLine(x2, y2, x3, y3, color); // top left to top right + drawLine(x3, y3, x0, y0, color); // top right to bottom right +} + +/**************************************************************************/ +/*! + @brief Draw a filled rotated rectangle + @param cenX x coordinate of center of rectangle. + For even width rectangles, this point + represents the pixel to the left of + true center. + @param cenY y coordinate of center of rectangle. + For even height rectangles, this point + represents the pixel above + true center. + @param w width of rectangle + @param h height of rectangle + @param angleDeg angle of rotation of rectangle + @param color 16-bit 5-6-5 Color to fill/draw with +*/ +/**************************************************************************/ +void Adafruit_GFX::fillRotatedRect(int16_t cenX, int16_t cenY, int16_t w, + int16_t h, int16_t angleDeg, + uint16_t color) { + + if (w < 1 || h < 1) + return; // We don't draw zero dimensioned objects + + int16_t W = w - 1; + int16_t H = h - 1; + + int16_t halfW = (W / 2); // Midpoint should always be integer + int16_t halfH = (H / 2); // Midpoint should always be integer + + int16_t x0 = W - halfW; // bottom-right + int16_t y0 = H - halfH; // bottom-right + int16_t x1 = -halfW; // bottom-left + int16_t y1 = H - halfH; // bottom-left + int16_t x2 = -halfW; // top-left + int16_t y2 = -halfH; // top-left + int16_t x3 = W - halfW; // top-right + int16_t y3 = -halfH; // top-right + + rotatePoint(x0, y0, angleDeg); + rotatePoint(x1, y1, angleDeg); + rotatePoint(x2, y2, angleDeg); + rotatePoint(x3, y3, angleDeg); + + x0 += cenX; + x1 += cenX; + x2 += cenX; + x3 += cenX; + + y0 += cenY; + y1 += cenY; + y2 += cenY; + y3 += cenY; + + fillTriangle(x0, y0, x1, y1, x2, y2, color); + fillTriangle(x2, y2, x3, y3, x0, y0, color); +} + +/**************************************************************************/ +/*! + @brief Rotate a point in standard position + @param x0 x coordinate of point to rotate. This is passed by reference + and updated upon return + @param y0 y coordinate of point to rotate. This is passed by reference + and updated upon return + @param angleDeg angle to rotate the point by (degrees) +*/ +/**************************************************************************/ +void Adafruit_GFX::rotatePoint(int16_t &x0, int16_t &y0, int16_t angleDeg) { + float angleRad = radians(angleDeg); + float s = sin(angleRad); + float c = cos(angleRad); + + float x = x0; + float y = y0; + + // Rotate point + x0 = (int16_t)((x * c) - (y * s)); + y0 = (int16_t)((x * s) + (y * c)); +} + +/**************************************************************************/ +/*! + @brief Draw a triangle with no fill color + @param x0 Vertex #0 x coordinate + @param y0 Vertex #0 y coordinate + @param x1 Vertex #1 x coordinate + @param y1 Vertex #1 y coordinate + @param x2 Vertex #2 x coordinate + @param y2 Vertex #2 y coordinate + @param color 16-bit 5-6-5 Color to draw with +*/ +/**************************************************************************/ +void Adafruit_GFX::drawTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, + int16_t x2, int16_t y2, uint16_t color) { + drawLine(x0, y0, x1, y1, color); + drawLine(x1, y1, x2, y2, color); + drawLine(x2, y2, x0, y0, color); +} + +/**************************************************************************/ +/*! + @brief Draw a triangle with color-fill + @param x0 Vertex #0 x coordinate + @param y0 Vertex #0 y coordinate + @param x1 Vertex #1 x coordinate + @param y1 Vertex #1 y coordinate + @param x2 Vertex #2 x coordinate + @param y2 Vertex #2 y coordinate + @param color 16-bit 5-6-5 Color to fill/draw with +*/ +/**************************************************************************/ +void Adafruit_GFX::fillTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, + int16_t x2, int16_t y2, uint16_t color) { + + int16_t a, b, y, last; + + // Sort coordinates by Y order (y2 >= 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); + } + + startWrite(); + 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; + writeFastHLine(a, y0, b - a + 1, color); + endWrite(); + 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); + writeFastHLine(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 = (int32_t)dx12 * (y - y1); + sb = (int32_t)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); + writeFastHLine(a, y, b - a + 1, color); + } + endWrite(); +} + +// BITMAP / XBITMAP / GRAYSCALE / RGB BITMAP FUNCTIONS --------------------- + +/**************************************************************************/ +/*! + @brief Draw a PROGMEM-resident 1-bit image at the specified (x,y) + position, using the specified foreground color (unset bits are transparent). + @param x Top left corner x coordinate + @param y Top left corner y coordinate + @param bitmap byte array with monochrome bitmap + @param w Width of bitmap in pixels + @param h Height of bitmap in pixels + @param color 16-bit 5-6-5 Color to draw with +*/ +/**************************************************************************/ +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 byteWidth = (w + 7) / 8; // Bitmap scanline pad = whole byte + uint8_t b = 0; + + startWrite(); + for (int16_t j = 0; j < h; j++, y++) { + for (int16_t i = 0; i < w; i++) { + if (i & 7) + b <<= 1; + else + b = pgm_read_byte(&bitmap[j * byteWidth + i / 8]); + if (b & 0x80) + writePixel(x + i, y, color); + } + } + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Draw a PROGMEM-resident 1-bit image at the specified (x,y) + position, using the specified foreground (for set bits) and background (unset + bits) colors. + @param x Top left corner x coordinate + @param y Top left corner y coordinate + @param bitmap byte array with monochrome bitmap + @param w Width of bitmap in pixels + @param h Height of bitmap in pixels + @param color 16-bit 5-6-5 Color to draw pixels with + @param bg 16-bit 5-6-5 Color to draw background with +*/ +/**************************************************************************/ +void Adafruit_GFX::drawBitmap(int16_t x, int16_t y, const uint8_t bitmap[], + int16_t w, int16_t h, uint16_t color, + uint16_t bg) { + + int16_t byteWidth = (w + 7) / 8; // Bitmap scanline pad = whole byte + uint8_t b = 0; + + startWrite(); + for (int16_t j = 0; j < h; j++, y++) { + for (int16_t i = 0; i < w; i++) { + if (i & 7) + b <<= 1; + else + b = pgm_read_byte(&bitmap[j * byteWidth + i / 8]); + writePixel(x + i, y, (b & 0x80) ? color : bg); + } + } + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Draw a RAM-resident 1-bit image at the specified (x,y) position, + using the specified foreground color (unset bits are transparent). + @param x Top left corner x coordinate + @param y Top left corner y coordinate + @param bitmap byte array with monochrome bitmap + @param w Width of bitmap in pixels + @param h Height of bitmap in pixels + @param color 16-bit 5-6-5 Color to draw with +*/ +/**************************************************************************/ +void Adafruit_GFX::drawBitmap(int16_t x, int16_t y, uint8_t *bitmap, int16_t w, + int16_t h, uint16_t color) { + + int16_t byteWidth = (w + 7) / 8; // Bitmap scanline pad = whole byte + uint8_t b = 0; + + startWrite(); + for (int16_t j = 0; j < h; j++, y++) { + for (int16_t i = 0; i < w; i++) { + if (i & 7) + b <<= 1; + else + b = bitmap[j * byteWidth + i / 8]; + if (b & 0x80) + writePixel(x + i, y, color); + } + } + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Draw a RAM-resident 1-bit image at the specified (x,y) position, + using the specified foreground (for set bits) and background (unset bits) + colors. + @param x Top left corner x coordinate + @param y Top left corner y coordinate + @param bitmap byte array with monochrome bitmap + @param w Width of bitmap in pixels + @param h Height of bitmap in pixels + @param color 16-bit 5-6-5 Color to draw pixels with + @param bg 16-bit 5-6-5 Color to draw background with +*/ +/**************************************************************************/ +void Adafruit_GFX::drawBitmap(int16_t x, int16_t y, uint8_t *bitmap, int16_t w, + int16_t h, uint16_t color, uint16_t bg) { + + int16_t byteWidth = (w + 7) / 8; // Bitmap scanline pad = whole byte + uint8_t b = 0; + + startWrite(); + for (int16_t j = 0; j < h; j++, y++) { + for (int16_t i = 0; i < w; i++) { + if (i & 7) + b <<= 1; + else + b = bitmap[j * byteWidth + i / 8]; + writePixel(x + i, y, (b & 0x80) ? color : bg); + } + } + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Draw PROGMEM-resident XBitMap Files (*.xbm), exported from GIMP. + Usage: Export from GIMP to *.xbm, rename *.xbm to *.c and open in editor. + C Array can be directly used with this function. + There is no RAM-resident version of this function; if generating bitmaps + in RAM, use the format defined by drawBitmap() and call that instead. + @param x Top left corner x coordinate + @param y Top left corner y coordinate + @param bitmap byte array with monochrome bitmap + @param w Width of bitmap in pixels + @param h Height of bitmap in pixels + @param color 16-bit 5-6-5 Color to draw pixels with +*/ +/**************************************************************************/ +void Adafruit_GFX::drawXBitmap(int16_t x, int16_t y, const uint8_t bitmap[], + int16_t w, int16_t h, uint16_t color) { + + int16_t byteWidth = (w + 7) / 8; // Bitmap scanline pad = whole byte + uint8_t b = 0; + + startWrite(); + for (int16_t j = 0; j < h; j++, y++) { + for (int16_t i = 0; i < w; i++) { + if (i & 7) + b >>= 1; + else + b = pgm_read_byte(&bitmap[j * byteWidth + i / 8]); + // Nearly identical to drawBitmap(), only the bit order + // is reversed here (left-to-right = LSB to MSB): + if (b & 0x01) + writePixel(x + i, y, color); + } + } + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Draw a PROGMEM-resident 8-bit image (grayscale) at the specified + (x,y) pos. Specifically for 8-bit display devices such as IS31FL3731; no + color reduction/expansion is performed. + @param x Top left corner x coordinate + @param y Top left corner y coordinate + @param bitmap byte array with grayscale bitmap + @param w Width of bitmap in pixels + @param h Height of bitmap in pixels +*/ +/**************************************************************************/ +void Adafruit_GFX::drawGrayscaleBitmap(int16_t x, int16_t y, + const uint8_t bitmap[], int16_t w, + int16_t h) { + startWrite(); + for (int16_t j = 0; j < h; j++, y++) { + for (int16_t i = 0; i < w; i++) { + writePixel(x + i, y, (uint8_t)pgm_read_byte(&bitmap[j * w + i])); + } + } + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Draw a RAM-resident 8-bit image (grayscale) at the specified (x,y) + pos. Specifically for 8-bit display devices such as IS31FL3731; no color + reduction/expansion is performed. + @param x Top left corner x coordinate + @param y Top left corner y coordinate + @param bitmap byte array with grayscale bitmap + @param w Width of bitmap in pixels + @param h Height of bitmap in pixels +*/ +/**************************************************************************/ +void Adafruit_GFX::drawGrayscaleBitmap(int16_t x, int16_t y, uint8_t *bitmap, + int16_t w, int16_t h) { + startWrite(); + for (int16_t j = 0; j < h; j++, y++) { + for (int16_t i = 0; i < w; i++) { + writePixel(x + i, y, bitmap[j * w + i]); + } + } + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Draw a PROGMEM-resident 8-bit image (grayscale) with a 1-bit mask + (set bits = opaque, unset bits = clear) at the specified (x,y) position. + BOTH buffers (grayscale and mask) must be PROGMEM-resident. + Specifically for 8-bit display devices such as IS31FL3731; no color + reduction/expansion is performed. + @param x Top left corner x coordinate + @param y Top left corner y coordinate + @param bitmap byte array with grayscale bitmap + @param mask byte array with mask bitmap + @param w Width of bitmap in pixels + @param h Height of bitmap in pixels +*/ +/**************************************************************************/ +void Adafruit_GFX::drawGrayscaleBitmap(int16_t x, int16_t y, + const uint8_t bitmap[], + const uint8_t mask[], int16_t w, + int16_t h) { + int16_t bw = (w + 7) / 8; // Bitmask scanline pad = whole byte + uint8_t b = 0; + startWrite(); + for (int16_t j = 0; j < h; j++, y++) { + for (int16_t i = 0; i < w; i++) { + if (i & 7) + b <<= 1; + else + b = pgm_read_byte(&mask[j * bw + i / 8]); + if (b & 0x80) { + writePixel(x + i, y, (uint8_t)pgm_read_byte(&bitmap[j * w + i])); + } + } + } + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Draw a RAM-resident 8-bit image (grayscale) with a 1-bit mask + (set bits = opaque, unset bits = clear) at the specified (x,y) position. + BOTH buffers (grayscale and mask) must be RAM-residentt, no mix-and-match + Specifically for 8-bit display devices such as IS31FL3731; no color + reduction/expansion is performed. + @param x Top left corner x coordinate + @param y Top left corner y coordinate + @param bitmap byte array with grayscale bitmap + @param mask byte array with mask bitmap + @param w Width of bitmap in pixels + @param h Height of bitmap in pixels +*/ +/**************************************************************************/ +void Adafruit_GFX::drawGrayscaleBitmap(int16_t x, int16_t y, uint8_t *bitmap, + uint8_t *mask, int16_t w, int16_t h) { + int16_t bw = (w + 7) / 8; // Bitmask scanline pad = whole byte + uint8_t b = 0; + startWrite(); + for (int16_t j = 0; j < h; j++, y++) { + for (int16_t i = 0; i < w; i++) { + if (i & 7) + b <<= 1; + else + b = mask[j * bw + i / 8]; + if (b & 0x80) { + writePixel(x + i, y, bitmap[j * w + i]); + } + } + } + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Draw a PROGMEM-resident 16-bit image (RGB 5/6/5) at the specified + (x,y) position. For 16-bit display devices; no color reduction performed. + @param x Top left corner x coordinate + @param y Top left corner y coordinate + @param bitmap byte array with 16-bit color bitmap + @param w Width of bitmap in pixels + @param h Height of bitmap in pixels +*/ +/**************************************************************************/ +void Adafruit_GFX::drawRGBBitmap(int16_t x, int16_t y, const uint16_t bitmap[], + int16_t w, int16_t h) { + startWrite(); + for (int16_t j = 0; j < h; j++, y++) { + for (int16_t i = 0; i < w; i++) { + writePixel(x + i, y, pgm_read_word(&bitmap[j * w + i])); + } + } + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Draw a RAM-resident 16-bit image (RGB 5/6/5) at the specified (x,y) + position. For 16-bit display devices; no color reduction performed. + @param x Top left corner x coordinate + @param y Top left corner y coordinate + @param bitmap byte array with 16-bit color bitmap + @param w Width of bitmap in pixels + @param h Height of bitmap in pixels +*/ +/**************************************************************************/ +void Adafruit_GFX::drawRGBBitmap(int16_t x, int16_t y, uint16_t *bitmap, + int16_t w, int16_t h) { + startWrite(); + for (int16_t j = 0; j < h; j++, y++) { + for (int16_t i = 0; i < w; i++) { + writePixel(x + i, y, bitmap[j * w + i]); + } + } + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Draw a PROGMEM-resident 16-bit image (RGB 5/6/5) with a 1-bit mask + (set bits = opaque, unset bits = clear) at the specified (x,y) position. BOTH + buffers (color and mask) must be PROGMEM-resident. For 16-bit display + devices; no color reduction performed. + @param x Top left corner x coordinate + @param y Top left corner y coordinate + @param bitmap byte array with 16-bit color bitmap + @param mask byte array with monochrome mask bitmap + @param w Width of bitmap in pixels + @param h Height of bitmap in pixels +*/ +/**************************************************************************/ +void Adafruit_GFX::drawRGBBitmap(int16_t x, int16_t y, const uint16_t bitmap[], + const uint8_t mask[], int16_t w, int16_t h) { + int16_t bw = (w + 7) / 8; // Bitmask scanline pad = whole byte + uint8_t b = 0; + startWrite(); + for (int16_t j = 0; j < h; j++, y++) { + for (int16_t i = 0; i < w; i++) { + if (i & 7) + b <<= 1; + else + b = pgm_read_byte(&mask[j * bw + i / 8]); + if (b & 0x80) { + writePixel(x + i, y, pgm_read_word(&bitmap[j * w + i])); + } + } + } + endWrite(); +} + +/**************************************************************************/ +/*! + @brief Draw a RAM-resident 16-bit image (RGB 5/6/5) with a 1-bit mask (set + bits = opaque, unset bits = clear) at the specified (x,y) position. BOTH + buffers (color and mask) must be RAM-resident. For 16-bit display devices; no + color reduction performed. + @param x Top left corner x coordinate + @param y Top left corner y coordinate + @param bitmap byte array with 16-bit color bitmap + @param mask byte array with monochrome mask bitmap + @param w Width of bitmap in pixels + @param h Height of bitmap in pixels +*/ +/**************************************************************************/ +void Adafruit_GFX::drawRGBBitmap(int16_t x, int16_t y, uint16_t *bitmap, + uint8_t *mask, int16_t w, int16_t h) { + int16_t bw = (w + 7) / 8; // Bitmask scanline pad = whole byte + uint8_t b = 0; + startWrite(); + for (int16_t j = 0; j < h; j++, y++) { + for (int16_t i = 0; i < w; i++) { + if (i & 7) + b <<= 1; + else + b = mask[j * bw + i / 8]; + if (b & 0x80) { + writePixel(x + i, y, bitmap[j * w + i]); + } + } + } + endWrite(); +} + +// TEXT- AND CHARACTER-HANDLING FUNCTIONS ---------------------------------- + +// Draw a character +/**************************************************************************/ +/*! + @brief Draw a single character + @param x Bottom left corner x coordinate + @param y Bottom left corner y coordinate + @param c The 8-bit font-indexed character (likely ascii) + @param color 16-bit 5-6-5 Color to draw chraracter with + @param bg 16-bit 5-6-5 Color to fill background with (if same as color, + no background) + @param size Font magnification level, 1 is 'original' size +*/ +/**************************************************************************/ +void Adafruit_GFX::drawChar(int16_t x, int16_t y, unsigned char c, + uint16_t color, uint16_t bg, uint8_t size) { + drawChar(x, y, c, color, bg, size, size); +} + +// Draw a character +/**************************************************************************/ +/*! + @brief Draw a single character + @param x Bottom left corner x coordinate + @param y Bottom left corner y coordinate + @param c The 8-bit font-indexed character (likely ascii) + @param color 16-bit 5-6-5 Color to draw chraracter with + @param bg 16-bit 5-6-5 Color to fill background with (if same as color, + no background) + @param size_x Font magnification level in X-axis, 1 is 'original' size + @param size_y Font magnification level in Y-axis, 1 is 'original' size +*/ +/**************************************************************************/ +void Adafruit_GFX::drawChar(int16_t x, int16_t y, unsigned char c, + uint16_t color, uint16_t bg, uint8_t size_x, + uint8_t size_y) { + + if (!gfxFont) { // 'Classic' built-in font + + if ((x >= _width) || // Clip right + (y >= _height) || // Clip bottom + ((x + 6 * size_x - 1) < 0) || // Clip left + ((y + 8 * size_y - 1) < 0)) // Clip top + return; + + if (!_cp437 && (c >= 176)) + c++; // Handle 'classic' charset behavior + + startWrite(); + for (int8_t i = 0; i < 5; i++) { // Char bitmap = 5 columns + uint8_t line = pgm_read_byte(&font[c * 5 + i]); + for (int8_t j = 0; j < 8; j++, line >>= 1) { + if (line & 1) { + if (size_x == 1 && size_y == 1) + writePixel(x + i, y + j, color); + else + writeFillRect(x + i * size_x, y + j * size_y, size_x, size_y, + color); + } else if (bg != color) { + if (size_x == 1 && size_y == 1) + writePixel(x + i, y + j, bg); + else + writeFillRect(x + i * size_x, y + j * size_y, size_x, size_y, bg); + } + } + } + if (bg != color) { // If opaque, draw vertical line for last column + if (size_x == 1 && size_y == 1) + writeFastVLine(x + 5, y, 8, bg); + else + writeFillRect(x + 5 * size_x, y, size_x, 8 * size_y, bg); + } + endWrite(); + + } 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 -= (uint8_t)pgm_read_byte(&gfxFont->first); + GFXglyph *glyph = pgm_read_glyph_ptr(gfxFont, c); + uint8_t *bitmap = pgm_read_bitmap_ptr(gfxFont); + + uint16_t bo = pgm_read_word(&glyph->bitmapOffset); + uint8_t w = pgm_read_byte(&glyph->width), h = pgm_read_byte(&glyph->height); + int8_t xo = pgm_read_byte(&glyph->xOffset), + yo = pgm_read_byte(&glyph->yOffset); + uint8_t xx, yy, bits = 0, bit = 0; + int16_t xo16 = 0, yo16 = 0; + + if (size_x > 1 || size_y > 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. + + startWrite(); + for (yy = 0; yy < h; yy++) { + for (xx = 0; xx < w; xx++) { + if (!(bit++ & 7)) { + bits = pgm_read_byte(&bitmap[bo++]); + } + if (bits & 0x80) { + if (size_x == 1 && size_y == 1) { + writePixel(x + xo + xx, y + yo + yy, color); + } else { + writeFillRect(x + (xo16 + xx) * size_x, y + (yo16 + yy) * size_y, + size_x, size_y, color); + } + } + bits <<= 1; + } + } + endWrite(); + + } // End classic vs custom font +} +/**************************************************************************/ +/*! + @brief Print one byte/character of data, used to support print() + @param c The 8-bit ascii character to write +*/ +/**************************************************************************/ +size_t Adafruit_GFX::write(uint8_t c) { + if (!gfxFont) { // 'Classic' built-in font + + if (c == '\n') { // Newline? + cursor_x = 0; // Reset x to zero, + cursor_y += textsize_y * 8; // advance y one line + } else if (c != '\r') { // Ignore carriage returns + if (wrap && ((cursor_x + textsize_x * 6) > _width)) { // Off right? + cursor_x = 0; // Reset x to zero, + cursor_y += textsize_y * 8; // advance y one line + } + drawChar(cursor_x, cursor_y, c, textcolor, textbgcolor, textsize_x, + textsize_y); + cursor_x += textsize_x * 6; // Advance x one char + } + + } else { // Custom font + + if (c == '\n') { + cursor_x = 0; + cursor_y += + (int16_t)textsize_y * (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))) { + GFXglyph *glyph = pgm_read_glyph_ptr(gfxFont, c - first); + 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_x * (xo + w)) > _width)) { + cursor_x = 0; + cursor_y += (int16_t)textsize_y * + (uint8_t)pgm_read_byte(&gfxFont->yAdvance); + } + drawChar(cursor_x, cursor_y, c, textcolor, textbgcolor, textsize_x, + textsize_y); + } + cursor_x += + (uint8_t)pgm_read_byte(&glyph->xAdvance) * (int16_t)textsize_x; + } + } + } + return 1; +} + +/**************************************************************************/ +/*! + @brief Set text 'magnification' size. Each increase in s makes 1 pixel + that much bigger. + @param s Desired text size. 1 is default 6x8, 2 is 12x16, 3 is 18x24, etc +*/ +/**************************************************************************/ +void Adafruit_GFX::setTextSize(uint8_t s) { setTextSize(s, s); } + +/**************************************************************************/ +/*! + @brief Set text 'magnification' size. Each increase in s makes 1 pixel + that much bigger. + @param s_x Desired text width magnification level in X-axis. 1 is default + @param s_y Desired text width magnification level in Y-axis. 1 is default +*/ +/**************************************************************************/ +void Adafruit_GFX::setTextSize(uint8_t s_x, uint8_t s_y) { + textsize_x = (s_x > 0) ? s_x : 1; + textsize_y = (s_y > 0) ? s_y : 1; +} + +/**************************************************************************/ +/*! + @brief Set rotation setting for display + @param x 0 thru 3 corresponding to 4 cardinal rotations +*/ +/**************************************************************************/ +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; + } +} + +/**************************************************************************/ +/*! + @brief Set the font to display when print()ing, either custom or default + @param f The GFXfont object, if NULL use built in 6x8 font +*/ +/**************************************************************************/ +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; +} + +/**************************************************************************/ +/*! + @brief Helper to determine size of a character with current font/size. + Broke this out as it's used by both the PROGMEM- and RAM-resident + getTextBounds() functions. + @param c The ASCII character in question + @param x Pointer to x location of character. Value is modified by + this function to advance to next character. + @param y Pointer to y location of character. Value is modified by + this function to advance to next character. + @param minx Pointer to minimum X coordinate, passed in to AND returned + by this function -- this is used to incrementally build a + bounding rectangle for a string. + @param miny Pointer to minimum Y coord, passed in AND returned. + @param maxx Pointer to maximum X coord, passed in AND returned. + @param maxy Pointer to maximum Y coord, passed in AND returned. +*/ +/**************************************************************************/ +void Adafruit_GFX::charBounds(unsigned char c, int16_t *x, int16_t *y, + int16_t *minx, int16_t *miny, int16_t *maxx, + int16_t *maxy) { + + if (gfxFont) { + + if (c == '\n') { // Newline? + *x = 0; // Reset x to zero, advance y by one line + *y += textsize_y * (uint8_t)pgm_read_byte(&gfxFont->yAdvance); + } else if (c != '\r') { // Not a carriage return; is normal char + uint8_t first = pgm_read_byte(&gfxFont->first), + last = pgm_read_byte(&gfxFont->last); + if ((c >= first) && (c <= last)) { // Char present in this font? + GFXglyph *glyph = pgm_read_glyph_ptr(gfxFont, c - first); + uint8_t gw = pgm_read_byte(&glyph->width), + gh = 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); + if (wrap && ((*x + (((int16_t)xo + gw) * textsize_x)) > _width)) { + *x = 0; // Reset x to zero, advance y by one line + *y += textsize_y * (uint8_t)pgm_read_byte(&gfxFont->yAdvance); + } + int16_t tsx = (int16_t)textsize_x, tsy = (int16_t)textsize_y, + x1 = *x + xo * tsx, y1 = *y + yo * tsy, x2 = x1 + gw * tsx - 1, + y2 = y1 + gh * tsy - 1; + if (x1 < *minx) + *minx = x1; + if (y1 < *miny) + *miny = y1; + if (x2 > *maxx) + *maxx = x2; + if (y2 > *maxy) + *maxy = y2; + *x += xa * tsx; + } + } + + } else { // Default font + + if (c == '\n') { // Newline? + *x = 0; // Reset x to zero, + *y += textsize_y * 8; // advance y one line + // min/max x/y unchaged -- that waits for next 'normal' character + } else if (c != '\r') { // Normal char; ignore carriage returns + if (wrap && ((*x + textsize_x * 6) > _width)) { // Off right? + *x = 0; // Reset x to zero, + *y += textsize_y * 8; // advance y one line + } + int x2 = *x + textsize_x * 6 - 1, // Lower-right pixel of char + y2 = *y + textsize_y * 8 - 1; + if (x2 > *maxx) + *maxx = x2; // Track max x, y + if (y2 > *maxy) + *maxy = y2; + if (*x < *minx) + *minx = *x; // Track min x, y + if (*y < *miny) + *miny = *y; + *x += textsize_x * 6; // Advance x one char + } + } +} + +/**************************************************************************/ +/*! + @brief Helper to determine size of a string with current font/size. + Pass string and a cursor position, returns UL corner and W,H. + @param str The ASCII string to measure + @param x The current cursor X + @param y The current cursor Y + @param x1 The boundary X coordinate, returned by function + @param y1 The boundary Y coordinate, returned by function + @param w The boundary width, returned by function + @param h The boundary height, returned by function +*/ +/**************************************************************************/ +void Adafruit_GFX::getTextBounds(const 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 + int16_t minx = 0x7FFF, miny = 0x7FFF, maxx = -1, maxy = -1; // Bound rect + // Bound rect is intentionally initialized inverted, so 1st char sets it + + *x1 = x; // Initial position is value passed in + *y1 = y; + *w = *h = 0; // Initial size is zero + + while ((c = *str++)) { + // charBounds() modifies x/y to advance for each character, + // and min/max x/y are updated to incrementally build bounding rect. + charBounds(c, &x, &y, &minx, &miny, &maxx, &maxy); + } + + if (maxx >= minx) { // If legit string bounds were found... + *x1 = minx; // Update x1 to least X coord, + *w = maxx - minx + 1; // And w to bound rect width + } + if (maxy >= miny) { // Same for height + *y1 = miny; + *h = maxy - miny + 1; + } +} + +/**************************************************************************/ +/*! + @brief Helper to determine size of a string with current font/size. Pass + string and a cursor position, returns UL corner and W,H. + @param str The ascii string to measure (as an arduino String() class) + @param x The current cursor X + @param y The current cursor Y + @param x1 The boundary X coordinate, set by function + @param y1 The boundary Y coordinate, set by function + @param w The boundary width, set by function + @param h The boundary height, set by function +*/ +/**************************************************************************/ +void Adafruit_GFX::getTextBounds(const String &str, int16_t x, int16_t y, + int16_t *x1, int16_t *y1, uint16_t *w, + uint16_t *h) { + if (str.length() != 0) { + getTextBounds(const_cast(str.c_str()), x, y, x1, y1, w, h); + } +} + +/**************************************************************************/ +/*! + @brief Helper to determine size of a PROGMEM string with current + font/size. Pass string and a cursor position, returns UL corner and W,H. + @param str The flash-memory ascii string to measure + @param x The current cursor X + @param y The current cursor Y + @param x1 The boundary X coordinate, set by function + @param y1 The boundary Y coordinate, set by function + @param w The boundary width, set by function + @param h The boundary height, set by function +*/ +/**************************************************************************/ +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; + + int16_t minx = _width, miny = _height, maxx = -1, maxy = -1; + + while ((c = pgm_read_byte(s++))) + charBounds(c, &x, &y, &minx, &miny, &maxx, &maxy); + + if (maxx >= minx) { + *x1 = minx; + *w = maxx - minx + 1; + } + if (maxy >= miny) { + *y1 = miny; + *h = maxy - miny + 1; + } +} + +/**************************************************************************/ +/*! + @brief Invert the display (ideally using built-in hardware command) + @param i True if you want to invert, false to make 'normal' +*/ +/**************************************************************************/ +void Adafruit_GFX::invertDisplay(bool i) { + // Do nothing, must be subclassed if supported by hardware + (void)i; // disable -Wunused-parameter warning +} + +/***************************************************************************/ + +/**************************************************************************/ +/*! + @brief Create a simple drawn button UI element +*/ +/**************************************************************************/ +Adafruit_GFX_Button::Adafruit_GFX_Button(void) { _gfx = 0; } + +/**************************************************************************/ +/*! + @brief Initialize button with our desired color/size/settings + @param gfx Pointer to our display so we can draw to it! + @param x The X coordinate of the center of the button + @param y The Y coordinate of the center of the button + @param w Width of the buttton + @param h Height of the buttton + @param outline Color of the outline (16-bit 5-6-5 standard) + @param fill Color of the button fill (16-bit 5-6-5 standard) + @param textcolor Color of the button label (16-bit 5-6-5 standard) + @param label Ascii string of the text inside the button + @param textsize The font magnification of the label text +*/ +/**************************************************************************/ +// Classic initButton() function: pass center & size +void Adafruit_GFX_Button::initButton(Adafruit_GFX *gfx, int16_t x, int16_t y, + uint16_t w, uint16_t h, uint16_t outline, + uint16_t fill, uint16_t textcolor, + char *label, uint8_t textsize) { + // Tweak arguments and pass to the newer initButtonUL() function... + initButtonUL(gfx, x - (w / 2), y - (h / 2), w, h, outline, fill, textcolor, + label, textsize); +} + +/**************************************************************************/ +/*! + @brief Initialize button with our desired color/size/settings + @param gfx Pointer to our display so we can draw to it! + @param x The X coordinate of the center of the button + @param y The Y coordinate of the center of the button + @param w Width of the buttton + @param h Height of the buttton + @param outline Color of the outline (16-bit 5-6-5 standard) + @param fill Color of the button fill (16-bit 5-6-5 standard) + @param textcolor Color of the button label (16-bit 5-6-5 standard) + @param label Ascii string of the text inside the button + @param textsize_x The font magnification in X-axis of the label text + @param textsize_y The font magnification in Y-axis of the label text +*/ +/**************************************************************************/ +// Classic initButton() function: pass center & size +void Adafruit_GFX_Button::initButton(Adafruit_GFX *gfx, int16_t x, int16_t y, + uint16_t w, uint16_t h, uint16_t outline, + uint16_t fill, uint16_t textcolor, + char *label, uint8_t textsize_x, + uint8_t textsize_y) { + // Tweak arguments and pass to the newer initButtonUL() function... + initButtonUL(gfx, x - (w / 2), y - (h / 2), w, h, outline, fill, textcolor, + label, textsize_x, textsize_y); +} + +/**************************************************************************/ +/*! + @brief Initialize button with our desired color/size/settings, with + upper-left coordinates + @param gfx Pointer to our display so we can draw to it! + @param x1 The X coordinate of the Upper-Left corner of the button + @param y1 The Y coordinate of the Upper-Left corner of the button + @param w Width of the buttton + @param h Height of the buttton + @param outline Color of the outline (16-bit 5-6-5 standard) + @param fill Color of the button fill (16-bit 5-6-5 standard) + @param textcolor Color of the button label (16-bit 5-6-5 standard) + @param label Ascii string of the text inside the button + @param textsize The font magnification of the label text +*/ +/**************************************************************************/ +void Adafruit_GFX_Button::initButtonUL(Adafruit_GFX *gfx, int16_t x1, + int16_t y1, uint16_t w, uint16_t h, + uint16_t outline, uint16_t fill, + uint16_t textcolor, char *label, + uint8_t textsize) { + initButtonUL(gfx, x1, y1, w, h, outline, fill, textcolor, label, textsize, + textsize); +} + +/**************************************************************************/ +/*! + @brief Initialize button with our desired color/size/settings, with + upper-left coordinates + @param gfx Pointer to our display so we can draw to it! + @param x1 The X coordinate of the Upper-Left corner of the button + @param y1 The Y coordinate of the Upper-Left corner of the button + @param w Width of the buttton + @param h Height of the buttton + @param outline Color of the outline (16-bit 5-6-5 standard) + @param fill Color of the button fill (16-bit 5-6-5 standard) + @param textcolor Color of the button label (16-bit 5-6-5 standard) + @param label Ascii string of the text inside the button + @param textsize_x The font magnification in X-axis of the label text + @param textsize_y The font magnification in Y-axis of the label text +*/ +/**************************************************************************/ +void Adafruit_GFX_Button::initButtonUL(Adafruit_GFX *gfx, int16_t x1, + int16_t y1, uint16_t w, uint16_t h, + uint16_t outline, uint16_t fill, + uint16_t textcolor, char *label, + uint8_t textsize_x, uint8_t textsize_y) { + _x1 = x1; + _y1 = y1; + _w = w; + _h = h; + _outlinecolor = outline; + _fillcolor = fill; + _textcolor = textcolor; + _textsize_x = textsize_x; + _textsize_y = textsize_y; + _gfx = gfx; + strncpy(_label, label, 9); + _label[9] = 0; // strncpy does not place a null at the end. + // When 'label' is >9 characters, _label is not terminated. +} + +/**************************************************************************/ +/*! + @brief Draw the button on the screen + @param inverted Whether to draw with fill/text swapped to indicate + 'pressed' +*/ +/**************************************************************************/ +void Adafruit_GFX_Button::drawButton(bool inverted) { + uint16_t fill, outline, text; + + if (!inverted) { + fill = _fillcolor; + outline = _outlinecolor; + text = _textcolor; + } else { + fill = _textcolor; + outline = _outlinecolor; + text = _fillcolor; + } + + uint8_t r = min(_w, _h) / 4; // Corner radius + _gfx->fillRoundRect(_x1, _y1, _w, _h, r, fill); + _gfx->drawRoundRect(_x1, _y1, _w, _h, r, outline); + + _gfx->setCursor(_x1 + (_w / 2) - (strlen(_label) * 3 * _textsize_x), + _y1 + (_h / 2) - (4 * _textsize_y)); + _gfx->setTextColor(text); + _gfx->setTextSize(_textsize_x, _textsize_y); + _gfx->print(_label); +} + +/**************************************************************************/ +/*! + @brief Helper to let us know if a coordinate is within the bounds of the + button + @param x The X coordinate to check + @param y The Y coordinate to check + @returns True if within button graphics outline +*/ +/**************************************************************************/ +bool Adafruit_GFX_Button::contains(int16_t x, int16_t y) { + return ((x >= _x1) && (x < (int16_t)(_x1 + _w)) && (y >= _y1) && + (y < (int16_t)(_y1 + _h))); +} + +/**************************************************************************/ +/*! + @brief Query whether the button was pressed since we last checked state + @returns True if was not-pressed before, now is. +*/ +/**************************************************************************/ +bool Adafruit_GFX_Button::justPressed() { return (currstate && !laststate); } + +/**************************************************************************/ +/*! + @brief Query whether the button was released since we last checked state + @returns True if was pressed before, now is not. +*/ +/**************************************************************************/ +bool Adafruit_GFX_Button::justReleased() { return (!currstate && laststate); } + +// ------------------------------------------------------------------------- + +// GFXcanvas1, GFXcanvas8 and GFXcanvas16 (currently a WIP, don't get too +// comfy with the implementation) provide 1-, 8- and 16-bit offscreen +// canvases, the address of which can be passed to drawBitmap() or +// pushColors() (the latter appears only in a couple of GFX-subclassed TFT +// libraries 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 the others are much more likely to +// require at least a Mega or various recent ARM-type boards (recommended, +// as the text+bitmap draw can be pokey). GFXcanvas1 requires 1 bit per +// pixel (rounded up to nearest byte per scanline), GFXcanvas8 is 1 byte +// per pixel (no scanline pad), and GFXcanvas16 uses 2 bytes per pixel (no +// scanline pad). +// NOT EXTENSIVELY TESTED YET. MAY CONTAIN WORST BUGS KNOWN TO HUMANKIND. + +#ifdef __AVR__ +// Bitmask tables of 0x80>>X and ~(0x80>>X), because X>>Y is slow on AVR +const uint8_t PROGMEM GFXcanvas1::GFXsetBit[] = {0x80, 0x40, 0x20, 0x10, + 0x08, 0x04, 0x02, 0x01}; +const uint8_t PROGMEM GFXcanvas1::GFXclrBit[] = {0x7F, 0xBF, 0xDF, 0xEF, + 0xF7, 0xFB, 0xFD, 0xFE}; +#endif + +/**************************************************************************/ +/*! + @brief Instatiate a GFX 1-bit canvas context for graphics + @param w Display width, in pixels + @param h Display height, in pixels + @param allocate_buffer If true, a buffer is allocated with malloc. If + false, the subclass must initialize the buffer before any drawing operation, + and free it in the destructor. If false (the default), the buffer is + allocated and freed by the library. +*/ +/**************************************************************************/ +GFXcanvas1::GFXcanvas1(uint16_t w, uint16_t h, bool allocate_buffer) + : Adafruit_GFX(w, h), buffer_owned(allocate_buffer) { + if (allocate_buffer) { + uint32_t bytes = ((w + 7) / 8) * h; + if ((buffer = (uint8_t *)malloc(bytes))) { + memset(buffer, 0, bytes); + } + } else { + buffer = nullptr; + } +} + +/**************************************************************************/ +/*! + @brief Delete the canvas, free memory +*/ +/**************************************************************************/ +GFXcanvas1::~GFXcanvas1(void) { + if (buffer && buffer_owned) + free(buffer); +} + +/**************************************************************************/ +/*! + @brief Draw a pixel to the canvas framebuffer + @param x x coordinate + @param y y coordinate + @param color Binary (on or off) color to fill with +*/ +/**************************************************************************/ +void GFXcanvas1::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; + } + + uint8_t *ptr = &buffer[(x / 8) + y * ((WIDTH + 7) / 8)]; +#ifdef __AVR__ + if (color) + *ptr |= pgm_read_byte(&GFXsetBit[x & 7]); + else + *ptr &= pgm_read_byte(&GFXclrBit[x & 7]); +#else + if (color) + *ptr |= 0x80 >> (x & 7); + else + *ptr &= ~(0x80 >> (x & 7)); +#endif + } +} + +/**********************************************************************/ +/*! + @brief Get the pixel color value at a given coordinate + @param x x coordinate + @param y y coordinate + @returns The desired pixel's binary color value, either 0x1 (on) or 0x0 + (off) +*/ +/**********************************************************************/ +bool GFXcanvas1::getPixel(int16_t x, int16_t y) const { + 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; + } + return getRawPixel(x, y); +} + +/**********************************************************************/ +/*! + @brief Get the pixel color value at a given, unrotated coordinate. + This method is intended for hardware drivers to get pixel value + in physical coordinates. + @param x x coordinate + @param y y coordinate + @returns The desired pixel's binary color value, either 0x1 (on) or 0x0 + (off) +*/ +/**********************************************************************/ +bool GFXcanvas1::getRawPixel(int16_t x, int16_t y) const { + if ((x < 0) || (y < 0) || (x >= WIDTH) || (y >= HEIGHT)) + return 0; + if (buffer) { + uint8_t *ptr = &buffer[(x / 8) + y * ((WIDTH + 7) / 8)]; + +#ifdef __AVR__ + return ((*ptr) & pgm_read_byte(&GFXsetBit[x & 7])) != 0; +#else + return ((*ptr) & (0x80 >> (x & 7))) != 0; +#endif + } + return 0; +} + +/**************************************************************************/ +/*! + @brief Fill the framebuffer completely with one color + @param color Binary (on or off) color to fill with +*/ +/**************************************************************************/ +void GFXcanvas1::fillScreen(uint16_t color) { + if (buffer) { + uint32_t bytes = ((WIDTH + 7) / 8) * HEIGHT; + memset(buffer, color ? 0xFF : 0x00, bytes); + } +} + +/**************************************************************************/ +/*! + @brief Speed optimized vertical line drawing + @param x Line horizontal start point + @param y Line vertical start point + @param h Length of vertical line to be drawn, including first point + @param color Color to fill with +*/ +/**************************************************************************/ +void GFXcanvas1::drawFastVLine(int16_t x, int16_t y, int16_t h, + uint16_t color) { + + if (h < 0) { // Convert negative heights to positive equivalent + h *= -1; + y -= h - 1; + if (y < 0) { + h += y; + y = 0; + } + } + + // Edge rejection (no-draw if totally off canvas) + if ((x < 0) || (x >= width()) || (y >= height()) || ((y + h - 1) < 0)) { + return; + } + + if (y < 0) { // Clip top + h += y; + y = 0; + } + if (y + h > height()) { // Clip bottom + h = height() - y; + } + + if (getRotation() == 0) { + drawFastRawVLine(x, y, h, color); + } else if (getRotation() == 1) { + int16_t t = x; + x = WIDTH - 1 - y; + y = t; + x -= h - 1; + drawFastRawHLine(x, y, h, color); + } else if (getRotation() == 2) { + x = WIDTH - 1 - x; + y = HEIGHT - 1 - y; + + y -= h - 1; + drawFastRawVLine(x, y, h, color); + } else if (getRotation() == 3) { + int16_t t = x; + x = y; + y = HEIGHT - 1 - t; + drawFastRawHLine(x, y, h, color); + } +} + +/**************************************************************************/ +/*! + @brief Speed optimized horizontal line drawing + @param x Line horizontal start point + @param y Line vertical start point + @param w Length of horizontal line to be drawn, including first point + @param color Color to fill with +*/ +/**************************************************************************/ +void GFXcanvas1::drawFastHLine(int16_t x, int16_t y, int16_t w, + uint16_t color) { + if (w < 0) { // Convert negative widths to positive equivalent + w *= -1; + x -= w - 1; + if (x < 0) { + w += x; + x = 0; + } + } + + // Edge rejection (no-draw if totally off canvas) + if ((y < 0) || (y >= height()) || (x >= width()) || ((x + w - 1) < 0)) { + return; + } + + if (x < 0) { // Clip left + w += x; + x = 0; + } + if (x + w >= width()) { // Clip right + w = width() - x; + } + + if (getRotation() == 0) { + drawFastRawHLine(x, y, w, color); + } else if (getRotation() == 1) { + int16_t t = x; + x = WIDTH - 1 - y; + y = t; + drawFastRawVLine(x, y, w, color); + } else if (getRotation() == 2) { + x = WIDTH - 1 - x; + y = HEIGHT - 1 - y; + + x -= w - 1; + drawFastRawHLine(x, y, w, color); + } else if (getRotation() == 3) { + int16_t t = x; + x = y; + y = HEIGHT - 1 - t; + y -= w - 1; + drawFastRawVLine(x, y, w, color); + } +} + +/**************************************************************************/ +/*! + @brief Speed optimized vertical line drawing into the raw canvas buffer + @param x Line horizontal start point + @param y Line vertical start point + @param h length of vertical line to be drawn, including first point + @param color Binary (on or off) color to fill with +*/ +/**************************************************************************/ +void GFXcanvas1::drawFastRawVLine(int16_t x, int16_t y, int16_t h, + uint16_t color) { + // x & y already in raw (rotation 0) coordinates, no need to transform. + int16_t row_bytes = ((WIDTH + 7) / 8); + uint8_t *ptr = &buffer[(x / 8) + y * row_bytes]; + + if (color > 0) { +#ifdef __AVR__ + uint8_t bit_mask = pgm_read_byte(&GFXsetBit[x & 7]); +#else + uint8_t bit_mask = (0x80 >> (x & 7)); +#endif + for (int16_t i = 0; i < h; i++) { + *ptr |= bit_mask; + ptr += row_bytes; + } + } else { +#ifdef __AVR__ + uint8_t bit_mask = pgm_read_byte(&GFXclrBit[x & 7]); +#else + uint8_t bit_mask = ~(0x80 >> (x & 7)); +#endif + for (int16_t i = 0; i < h; i++) { + *ptr &= bit_mask; + ptr += row_bytes; + } + } +} + +/**************************************************************************/ +/*! + @brief Speed optimized horizontal line drawing into the raw canvas buffer + @param x Line horizontal start point + @param y Line vertical start point + @param w length of horizontal line to be drawn, including first point + @param color Binary (on or off) color to fill with +*/ +/**************************************************************************/ +void GFXcanvas1::drawFastRawHLine(int16_t x, int16_t y, int16_t w, + uint16_t color) { + // x & y already in raw (rotation 0) coordinates, no need to transform. + int16_t rowBytes = ((WIDTH + 7) / 8); + uint8_t *ptr = &buffer[(x / 8) + y * rowBytes]; + size_t remainingWidthBits = w; + + // check to see if first byte needs to be partially filled + if ((x & 7) > 0) { + // create bit mask for first byte + uint8_t startByteBitMask = 0x00; + for (int8_t i = (x & 7); ((i < 8) && (remainingWidthBits > 0)); i++) { +#ifdef __AVR__ + startByteBitMask |= pgm_read_byte(&GFXsetBit[i]); +#else + startByteBitMask |= (0x80 >> i); +#endif + remainingWidthBits--; + } + if (color > 0) { + *ptr |= startByteBitMask; + } else { + *ptr &= ~startByteBitMask; + } + + ptr++; + } + + // do the next remainingWidthBits bits + if (remainingWidthBits > 0) { + size_t remainingWholeBytes = remainingWidthBits / 8; + size_t lastByteBits = remainingWidthBits % 8; + uint8_t wholeByteColor = color > 0 ? 0xFF : 0x00; + + memset(ptr, wholeByteColor, remainingWholeBytes); + + if (lastByteBits > 0) { + uint8_t lastByteBitMask = 0x00; + for (size_t i = 0; i < lastByteBits; i++) { +#ifdef __AVR__ + lastByteBitMask |= pgm_read_byte(&GFXsetBit[i]); +#else + lastByteBitMask |= (0x80 >> i); +#endif + } + ptr += remainingWholeBytes; + + if (color > 0) { + *ptr |= lastByteBitMask; + } else { + *ptr &= ~lastByteBitMask; + } + } + } +} + +/**************************************************************************/ +/*! + @brief Instatiate a GFX 8-bit canvas context for graphics + @param w Display width, in pixels + @param h Display height, in pixels + @param allocate_buffer If true, a buffer is allocated with malloc. If + false, the subclass must initialize the buffer before any drawing operation, + and free it in the destructor. If false (the default), the buffer is + allocated and freed by the library. +*/ +/**************************************************************************/ +GFXcanvas8::GFXcanvas8(uint16_t w, uint16_t h, bool allocate_buffer) + : Adafruit_GFX(w, h), buffer_owned(allocate_buffer) { + if (allocate_buffer) { + uint32_t bytes = w * h; + if ((buffer = (uint8_t *)malloc(bytes))) { + memset(buffer, 0, bytes); + } + } else + buffer = nullptr; +} + +/**************************************************************************/ +/*! + @brief Delete the canvas, free memory +*/ +/**************************************************************************/ +GFXcanvas8::~GFXcanvas8(void) { + if (buffer && buffer_owned) + free(buffer); +} + +/**************************************************************************/ +/*! + @brief Draw a pixel to the canvas framebuffer + @param x x coordinate + @param y y coordinate + @param color 8-bit Color to fill with. Only lower byte of uint16_t is used. +*/ +/**************************************************************************/ +void GFXcanvas8::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; + } +} + +/**********************************************************************/ +/*! + @brief Get the pixel color value at a given coordinate + @param x x coordinate + @param y y coordinate + @returns The desired pixel's 8-bit color value +*/ +/**********************************************************************/ +uint8_t GFXcanvas8::getPixel(int16_t x, int16_t y) const { + 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; + } + return getRawPixel(x, y); +} + +/**********************************************************************/ +/*! + @brief Get the pixel color value at a given, unrotated coordinate. + This method is intended for hardware drivers to get pixel value + in physical coordinates. + @param x x coordinate + @param y y coordinate + @returns The desired pixel's 8-bit color value +*/ +/**********************************************************************/ +uint8_t GFXcanvas8::getRawPixel(int16_t x, int16_t y) const { + if ((x < 0) || (y < 0) || (x >= WIDTH) || (y >= HEIGHT)) + return 0; + if (buffer) { + return buffer[x + y * WIDTH]; + } + return 0; +} + +/**************************************************************************/ +/*! + @brief Fill the framebuffer completely with one color + @param color 8-bit Color to fill with. Only lower byte of uint16_t is used. +*/ +/**************************************************************************/ +void GFXcanvas8::fillScreen(uint16_t color) { + if (buffer) { + memset(buffer, color, WIDTH * HEIGHT); + } +} + +/**************************************************************************/ +/*! + @brief Speed optimized vertical line drawing + @param x Line horizontal start point + @param y Line vertical start point + @param h Length of vertical line to be drawn, including first point + @param color 8-bit Color to fill with. Only lower byte of uint16_t is + used. +*/ +/**************************************************************************/ +void GFXcanvas8::drawFastVLine(int16_t x, int16_t y, int16_t h, + uint16_t color) { + if (h < 0) { // Convert negative heights to positive equivalent + h *= -1; + y -= h - 1; + if (y < 0) { + h += y; + y = 0; + } + } + + // Edge rejection (no-draw if totally off canvas) + if ((x < 0) || (x >= width()) || (y >= height()) || ((y + h - 1) < 0)) { + return; + } + + if (y < 0) { // Clip top + h += y; + y = 0; + } + if (y + h > height()) { // Clip bottom + h = height() - y; + } + + if (getRotation() == 0) { + drawFastRawVLine(x, y, h, color); + } else if (getRotation() == 1) { + int16_t t = x; + x = WIDTH - 1 - y; + y = t; + x -= h - 1; + drawFastRawHLine(x, y, h, color); + } else if (getRotation() == 2) { + x = WIDTH - 1 - x; + y = HEIGHT - 1 - y; + + y -= h - 1; + drawFastRawVLine(x, y, h, color); + } else if (getRotation() == 3) { + int16_t t = x; + x = y; + y = HEIGHT - 1 - t; + drawFastRawHLine(x, y, h, color); + } +} + +/**************************************************************************/ +/*! + @brief Speed optimized horizontal line drawing + @param x Line horizontal start point + @param y Line vertical start point + @param w Length of horizontal line to be drawn, including 1st point + @param color 8-bit Color to fill with. Only lower byte of uint16_t is + used. +*/ +/**************************************************************************/ +void GFXcanvas8::drawFastHLine(int16_t x, int16_t y, int16_t w, + uint16_t color) { + + if (w < 0) { // Convert negative widths to positive equivalent + w *= -1; + x -= w - 1; + if (x < 0) { + w += x; + x = 0; + } + } + + // Edge rejection (no-draw if totally off canvas) + if ((y < 0) || (y >= height()) || (x >= width()) || ((x + w - 1) < 0)) { + return; + } + + if (x < 0) { // Clip left + w += x; + x = 0; + } + if (x + w >= width()) { // Clip right + w = width() - x; + } + + if (getRotation() == 0) { + drawFastRawHLine(x, y, w, color); + } else if (getRotation() == 1) { + int16_t t = x; + x = WIDTH - 1 - y; + y = t; + drawFastRawVLine(x, y, w, color); + } else if (getRotation() == 2) { + x = WIDTH - 1 - x; + y = HEIGHT - 1 - y; + + x -= w - 1; + drawFastRawHLine(x, y, w, color); + } else if (getRotation() == 3) { + int16_t t = x; + x = y; + y = HEIGHT - 1 - t; + y -= w - 1; + drawFastRawVLine(x, y, w, color); + } +} + +/**************************************************************************/ +/*! + @brief Speed optimized vertical line drawing into the raw canvas buffer + @param x Line horizontal start point + @param y Line vertical start point + @param h length of vertical line to be drawn, including first point + @param color 8-bit Color to fill with. Only lower byte of uint16_t is + used. +*/ +/**************************************************************************/ +void GFXcanvas8::drawFastRawVLine(int16_t x, int16_t y, int16_t h, + uint16_t color) { + // x & y already in raw (rotation 0) coordinates, no need to transform. + uint8_t *buffer_ptr = buffer + y * WIDTH + x; + for (int16_t i = 0; i < h; i++) { + (*buffer_ptr) = color; + buffer_ptr += WIDTH; + } +} + +/**************************************************************************/ +/*! + @brief Speed optimized horizontal line drawing into the raw canvas buffer + @param x Line horizontal start point + @param y Line vertical start point + @param w length of horizontal line to be drawn, including first point + @param color 8-bit Color to fill with. Only lower byte of uint16_t is + used. +*/ +/**************************************************************************/ +void GFXcanvas8::drawFastRawHLine(int16_t x, int16_t y, int16_t w, + uint16_t color) { + // x & y already in raw (rotation 0) coordinates, no need to transform. + memset(buffer + y * WIDTH + x, color, w); +} + +/**************************************************************************/ +/*! + @brief Instatiate a GFX 16-bit canvas context for graphics + @param w Display width, in pixels + @param h Display height, in pixels + @param allocate_buffer If true, a buffer is allocated with malloc. If + false, the subclass must initialize the buffer before any drawing operation, + and free it in the destructor. If false (the default), the buffer is + allocated and freed by the library. +*/ +/**************************************************************************/ +GFXcanvas16::GFXcanvas16(uint16_t w, uint16_t h, bool allocate_buffer) + : Adafruit_GFX(w, h), buffer_owned(allocate_buffer) { + if (allocate_buffer) { + uint32_t bytes = w * h * 2; + if ((buffer = (uint16_t *)malloc(bytes))) { + memset(buffer, 0, bytes); + } + } else { + buffer = nullptr; + } +} + +/**************************************************************************/ +/*! + @brief Delete the canvas, free memory +*/ +/**************************************************************************/ +GFXcanvas16::~GFXcanvas16(void) { + if (buffer && buffer_owned) + free(buffer); +} + +/**************************************************************************/ +/*! + @brief Draw a pixel to the canvas framebuffer + @param x x coordinate + @param y y coordinate + @param color 16-bit 5-6-5 Color to fill with +*/ +/**************************************************************************/ +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; + } +} + +/**********************************************************************/ +/*! + @brief Get the pixel color value at a given coordinate + @param x x coordinate + @param y y coordinate + @returns The desired pixel's 16-bit 5-6-5 color value +*/ +/**********************************************************************/ +uint16_t GFXcanvas16::getPixel(int16_t x, int16_t y) const { + 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; + } + return getRawPixel(x, y); +} + +/**********************************************************************/ +/*! + @brief Get the pixel color value at a given, unrotated coordinate. + This method is intended for hardware drivers to get pixel value + in physical coordinates. + @param x x coordinate + @param y y coordinate + @returns The desired pixel's 16-bit 5-6-5 color value +*/ +/**********************************************************************/ +uint16_t GFXcanvas16::getRawPixel(int16_t x, int16_t y) const { + if ((x < 0) || (y < 0) || (x >= WIDTH) || (y >= HEIGHT)) + return 0; + if (buffer) { + return buffer[x + y * WIDTH]; + } + return 0; +} + +/**************************************************************************/ +/*! + @brief Fill the framebuffer completely with one color + @param color 16-bit 5-6-5 Color to fill with +*/ +/**************************************************************************/ +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 { + uint32_t i, pixels = WIDTH * HEIGHT; + for (i = 0; i < pixels; i++) + buffer[i] = color; + } + } +} + +/**************************************************************************/ +/*! + @brief Reverses the "endian-ness" of each 16-bit pixel within the + canvas; little-endian to big-endian, or big-endian to little. + Most microcontrollers (such as SAMD) are little-endian, while + most displays tend toward big-endianness. All the drawing + functions (including RGB bitmap drawing) take care of this + automatically, but some specialized code (usually involving + DMA) can benefit from having pixel data already in the + display-native order. Note that this does NOT convert to a + SPECIFIC endian-ness, it just flips the bytes within each word. +*/ +/**************************************************************************/ +void GFXcanvas16::byteSwap(void) { + if (buffer) { + uint32_t i, pixels = WIDTH * HEIGHT; + for (i = 0; i < pixels; i++) + buffer[i] = __builtin_bswap16(buffer[i]); + } +} + +/**************************************************************************/ +/*! + @brief Speed optimized vertical line drawing + @param x Line horizontal start point + @param y Line vertical start point + @param h length of vertical line to be drawn, including first point + @param color color 16-bit 5-6-5 Color to draw line with +*/ +/**************************************************************************/ +void GFXcanvas16::drawFastVLine(int16_t x, int16_t y, int16_t h, + uint16_t color) { + if (h < 0) { // Convert negative heights to positive equivalent + h *= -1; + y -= h - 1; + if (y < 0) { + h += y; + y = 0; + } + } + + // Edge rejection (no-draw if totally off canvas) + if ((x < 0) || (x >= width()) || (y >= height()) || ((y + h - 1) < 0)) { + return; + } + + if (y < 0) { // Clip top + h += y; + y = 0; + } + if (y + h > height()) { // Clip bottom + h = height() - y; + } + + if (getRotation() == 0) { + drawFastRawVLine(x, y, h, color); + } else if (getRotation() == 1) { + int16_t t = x; + x = WIDTH - 1 - y; + y = t; + x -= h - 1; + drawFastRawHLine(x, y, h, color); + } else if (getRotation() == 2) { + x = WIDTH - 1 - x; + y = HEIGHT - 1 - y; + + y -= h - 1; + drawFastRawVLine(x, y, h, color); + } else if (getRotation() == 3) { + int16_t t = x; + x = y; + y = HEIGHT - 1 - t; + drawFastRawHLine(x, y, h, color); + } +} + +/**************************************************************************/ +/*! + @brief Speed optimized horizontal line drawing + @param x Line horizontal start point + @param y Line vertical start point + @param w Length of horizontal line to be drawn, including 1st point + @param color Color 16-bit 5-6-5 Color to draw line with +*/ +/**************************************************************************/ +void GFXcanvas16::drawFastHLine(int16_t x, int16_t y, int16_t w, + uint16_t color) { + if (w < 0) { // Convert negative widths to positive equivalent + w *= -1; + x -= w - 1; + if (x < 0) { + w += x; + x = 0; + } + } + + // Edge rejection (no-draw if totally off canvas) + if ((y < 0) || (y >= height()) || (x >= width()) || ((x + w - 1) < 0)) { + return; + } + + if (x < 0) { // Clip left + w += x; + x = 0; + } + if (x + w >= width()) { // Clip right + w = width() - x; + } + + if (getRotation() == 0) { + drawFastRawHLine(x, y, w, color); + } else if (getRotation() == 1) { + int16_t t = x; + x = WIDTH - 1 - y; + y = t; + drawFastRawVLine(x, y, w, color); + } else if (getRotation() == 2) { + x = WIDTH - 1 - x; + y = HEIGHT - 1 - y; + + x -= w - 1; + drawFastRawHLine(x, y, w, color); + } else if (getRotation() == 3) { + int16_t t = x; + x = y; + y = HEIGHT - 1 - t; + y -= w - 1; + drawFastRawVLine(x, y, w, color); + } +} + +/**************************************************************************/ +/*! + @brief Speed optimized vertical line drawing into the raw canvas buffer + @param x Line horizontal start point + @param y Line vertical start point + @param h length of vertical line to be drawn, including first point + @param color color 16-bit 5-6-5 Color to draw line with +*/ +/**************************************************************************/ +void GFXcanvas16::drawFastRawVLine(int16_t x, int16_t y, int16_t h, + uint16_t color) { + // x & y already in raw (rotation 0) coordinates, no need to transform. + uint16_t *buffer_ptr = buffer + y * WIDTH + x; + for (int16_t i = 0; i < h; i++) { + (*buffer_ptr) = color; + buffer_ptr += WIDTH; + } +} + +/**************************************************************************/ +/*! + @brief Speed optimized horizontal line drawing into the raw canvas buffer + @param x Line horizontal start point + @param y Line vertical start point + @param w length of horizontal line to be drawn, including first point + @param color color 16-bit 5-6-5 Color to draw line with +*/ +/**************************************************************************/ +void GFXcanvas16::drawFastRawHLine(int16_t x, int16_t y, int16_t w, + uint16_t color) { + // x & y already in raw (rotation 0) coordinates, no need to transform. + uint32_t buffer_index = y * WIDTH + x; + for (uint32_t i = buffer_index; i < buffer_index + w; i++) { + buffer[i] = color; + } +} diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Adafruit_GFX.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Adafruit_GFX.h new file mode 100644 index 0000000..dd9dc0d --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Adafruit_GFX.h @@ -0,0 +1,406 @@ +#ifndef _ADAFRUIT_GFX_H +#define _ADAFRUIT_GFX_H + +#if ARDUINO >= 100 +#include "Arduino.h" +#include "Print.h" +#else +#include "WProgram.h" +#endif +#include "gfxfont.h" + +#include +#include + +/// A generic graphics superclass that can handle all sorts of drawing. At a +/// minimum you can subclass and provide drawPixel(). At a maximum you can do a +/// ton of overriding to optimize. Used for any/all Adafruit displays! +class Adafruit_GFX : public Print { + +public: + Adafruit_GFX(int16_t w, int16_t h); // Constructor + + /**********************************************************************/ + /*! + @brief Draw to the screen/framebuffer/etc. + Must be overridden in subclass. + @param x X coordinate in pixels + @param y Y coordinate in pixels + @param color 16-bit pixel color. + */ + /**********************************************************************/ + virtual void drawPixel(int16_t x, int16_t y, uint16_t color) = 0; + + // TRANSACTION API / CORE DRAW API + // These MAY be overridden by the subclass to provide device-specific + // optimized code. Otherwise 'generic' versions are used. + virtual void startWrite(void); + virtual void writePixel(int16_t x, int16_t y, uint16_t color); + virtual void writeFillRect(int16_t x, int16_t y, int16_t w, int16_t h, + uint16_t color); + virtual void writeFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color); + virtual void writeFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color); + virtual void writeLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, + uint16_t color); + virtual void endWrite(void); + + // CONTROL API + // These MAY be overridden by the subclass to provide device-specific + // optimized code. Otherwise 'generic' versions are used. + virtual void setRotation(uint8_t r); + virtual void invertDisplay(bool i); + + // BASIC DRAW API + // These MAY be overridden by the subclass to provide device-specific + // optimized code. Otherwise 'generic' versions are used. + + // It's good to implement those, even if using transaction API + 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); + virtual void fillRect(int16_t x, int16_t y, int16_t w, int16_t h, + uint16_t color); + virtual void fillScreen(uint16_t color); + // Optional and probably not necessary to change + virtual void drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, + uint16_t color); + virtual void drawRect(int16_t x, int16_t y, int16_t w, int16_t h, + uint16_t color); + + // These exist only with Adafruit_GFX (no subclass overrides) + void drawCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color); + void drawCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername, + uint16_t color); + void fillCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color); + void fillCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername, + int16_t delta, uint16_t color); + void drawEllipse(int16_t x0, int16_t y0, int16_t rw, int16_t rh, + uint16_t color); + void fillEllipse(int16_t x0, int16_t y0, int16_t rw, int16_t rh, + uint16_t color); + void drawTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, + int16_t y2, uint16_t color); + void fillTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, + int16_t y2, uint16_t color); + void drawRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h, + int16_t radius, uint16_t color); + void fillRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h, + int16_t radius, uint16_t color); + void drawRotatedRect(int16_t cenX, int16_t cenY, int16_t w, int16_t h, + int16_t angleDeg, uint16_t color); + void fillRotatedRect(int16_t cenX, int16_t cenY, int16_t w, int16_t h, + int16_t angleDeg, uint16_t color); + void rotatePoint(int16_t &x0, int16_t &y0, int16_t angleDeg); + void drawBitmap(int16_t x, int16_t y, const uint8_t bitmap[], int16_t w, + int16_t h, uint16_t color); + void drawBitmap(int16_t x, int16_t y, const uint8_t bitmap[], int16_t w, + int16_t h, uint16_t color, uint16_t bg); + void drawBitmap(int16_t x, int16_t y, uint8_t *bitmap, int16_t w, int16_t h, + uint16_t color); + void drawBitmap(int16_t x, int16_t y, uint8_t *bitmap, int16_t w, int16_t h, + uint16_t color, uint16_t bg); + void drawXBitmap(int16_t x, int16_t y, const uint8_t bitmap[], int16_t w, + int16_t h, uint16_t color); + void drawGrayscaleBitmap(int16_t x, int16_t y, const uint8_t bitmap[], + int16_t w, int16_t h); + void drawGrayscaleBitmap(int16_t x, int16_t y, uint8_t *bitmap, int16_t w, + int16_t h); + void drawGrayscaleBitmap(int16_t x, int16_t y, const uint8_t bitmap[], + const uint8_t mask[], int16_t w, int16_t h); + void drawGrayscaleBitmap(int16_t x, int16_t y, uint8_t *bitmap, uint8_t *mask, + int16_t w, int16_t h); + void drawRGBBitmap(int16_t x, int16_t y, const uint16_t bitmap[], int16_t w, + int16_t h); + void drawRGBBitmap(int16_t x, int16_t y, uint16_t *bitmap, int16_t w, + int16_t h); + void drawRGBBitmap(int16_t x, int16_t y, const uint16_t bitmap[], + const uint8_t mask[], int16_t w, int16_t h); + void drawRGBBitmap(int16_t x, int16_t y, uint16_t *bitmap, uint8_t *mask, + int16_t w, int16_t h); + void drawChar(int16_t x, int16_t y, unsigned char c, uint16_t color, + uint16_t bg, uint8_t size); + void drawChar(int16_t x, int16_t y, unsigned char c, uint16_t color, + uint16_t bg, uint8_t size_x, uint8_t size_y); + void getTextBounds(const char *string, int16_t x, int16_t y, int16_t *x1, + int16_t *y1, uint16_t *w, uint16_t *h); + void getTextBounds(const __FlashStringHelper *s, int16_t x, int16_t y, + int16_t *x1, int16_t *y1, uint16_t *w, uint16_t *h); + void getTextBounds(const String &str, int16_t x, int16_t y, int16_t *x1, + int16_t *y1, uint16_t *w, uint16_t *h); + void setTextSize(uint8_t s); + void setTextSize(uint8_t sx, uint8_t sy); + void setFont(const GFXfont *f = NULL); + + /**********************************************************************/ + /*! + @brief Set text cursor location + @param x X coordinate in pixels + @param y Y coordinate in pixels + */ + /**********************************************************************/ + void setCursor(int16_t x, int16_t y) { + cursor_x = x; + cursor_y = y; + } + + /**********************************************************************/ + /*! + @brief Set text font color with transparant background + @param c 16-bit 5-6-5 Color to draw text with + @note For 'transparent' background, background and foreground + are set to same color rather than using a separate flag. + */ + /**********************************************************************/ + void setTextColor(uint16_t c) { textcolor = textbgcolor = c; } + + /**********************************************************************/ + /*! + @brief Set text font color with custom background color + @param c 16-bit 5-6-5 Color to draw text with + @param bg 16-bit 5-6-5 Color to draw background/fill with + */ + /**********************************************************************/ + void setTextColor(uint16_t c, uint16_t bg) { + textcolor = c; + textbgcolor = bg; + } + + /**********************************************************************/ + /*! + @brief Set whether text that is too long for the screen width should + automatically wrap around to the next line (else clip right). + @param w true for wrapping, false for clipping + */ + /**********************************************************************/ + void setTextWrap(bool w) { wrap = w; } + + /**********************************************************************/ + /*! + @brief 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. + @param x true = enable (new behavior), false = disable (old behavior) + */ + /**********************************************************************/ + void cp437(bool x = true) { _cp437 = x; } + + using Print::write; +#if ARDUINO >= 100 + virtual size_t write(uint8_t); +#else + virtual void write(uint8_t); +#endif + + /************************************************************************/ + /*! + @brief Get width of the display, accounting for current rotation + @returns Width in pixels + */ + /************************************************************************/ + int16_t width(void) const { return _width; }; + + /************************************************************************/ + /*! + @brief Get height of the display, accounting for current rotation + @returns Height in pixels + */ + /************************************************************************/ + int16_t height(void) const { return _height; } + + /************************************************************************/ + /*! + @brief Get rotation setting for display + @returns 0 thru 3 corresponding to 4 cardinal rotations + */ + /************************************************************************/ + uint8_t getRotation(void) const { return rotation; } + + // get current cursor position (get rotation safe maximum values, + // using: width() for x, height() for y) + /************************************************************************/ + /*! + @brief Get text cursor X location + @returns X coordinate in pixels + */ + /************************************************************************/ + int16_t getCursorX(void) const { return cursor_x; } + + /************************************************************************/ + /*! + @brief Get text cursor Y location + @returns Y coordinate in pixels + */ + /************************************************************************/ + int16_t getCursorY(void) const { return cursor_y; }; + +protected: + void charBounds(unsigned char c, int16_t *x, int16_t *y, int16_t *minx, + int16_t *miny, int16_t *maxx, int16_t *maxy); + int16_t WIDTH; ///< This is the 'raw' display width - never changes + int16_t HEIGHT; ///< This is the 'raw' display height - never changes + int16_t _width; ///< Display width as modified by current rotation + int16_t _height; ///< Display height as modified by current rotation + int16_t cursor_x; ///< x location to start print()ing text + int16_t cursor_y; ///< y location to start print()ing text + uint16_t textcolor; ///< 16-bit background color for print() + uint16_t textbgcolor; ///< 16-bit text color for print() + uint8_t textsize_x; ///< Desired magnification in X-axis of text to print() + uint8_t textsize_y; ///< Desired magnification in Y-axis of text to print() + uint8_t rotation; ///< Display rotation (0 thru 3) + bool wrap; ///< If set, 'wrap' text at right edge of display + bool _cp437; ///< If set, use correct CP437 charset (default is off) + GFXfont *gfxFont; ///< Pointer to special font +}; + +/// A simple drawn button UI element +class Adafruit_GFX_Button { + +public: + Adafruit_GFX_Button(void); + // "Classic" initButton() uses center & size + void initButton(Adafruit_GFX *gfx, int16_t x, int16_t y, uint16_t w, + uint16_t h, uint16_t outline, uint16_t fill, + uint16_t textcolor, char *label, uint8_t textsize); + void initButton(Adafruit_GFX *gfx, int16_t x, int16_t y, uint16_t w, + uint16_t h, uint16_t outline, uint16_t fill, + uint16_t textcolor, char *label, uint8_t textsize_x, + uint8_t textsize_y); + // New/alt initButton() uses upper-left corner & size + void initButtonUL(Adafruit_GFX *gfx, int16_t x1, int16_t y1, uint16_t w, + uint16_t h, uint16_t outline, uint16_t fill, + uint16_t textcolor, char *label, uint8_t textsize); + void initButtonUL(Adafruit_GFX *gfx, int16_t x1, int16_t y1, uint16_t w, + uint16_t h, uint16_t outline, uint16_t fill, + uint16_t textcolor, char *label, uint8_t textsize_x, + uint8_t textsize_y); + void drawButton(bool inverted = false); + bool contains(int16_t x, int16_t y); + + /**********************************************************************/ + /*! + @brief Sets button state, should be done by some touch function + @param p True for pressed, false for not. + */ + /**********************************************************************/ + void press(bool p) { + laststate = currstate; + currstate = p; + } + + bool justPressed(); + bool justReleased(); + + /**********************************************************************/ + /*! + @brief Query whether the button is currently pressed + @returns True if pressed + */ + /**********************************************************************/ + bool isPressed(void) { return currstate; }; + +private: + Adafruit_GFX *_gfx; + int16_t _x1, _y1; // Coordinates of top-left corner + uint16_t _w, _h; + uint8_t _textsize_x; + uint8_t _textsize_y; + uint16_t _outlinecolor, _fillcolor, _textcolor; + char _label[10]; + + bool currstate, laststate; +}; + +/// A GFX 1-bit canvas context for graphics +class GFXcanvas1 : public Adafruit_GFX { +public: + GFXcanvas1(uint16_t w, uint16_t h, bool allocate_buffer = true); + ~GFXcanvas1(void); + void drawPixel(int16_t x, int16_t y, uint16_t color); + void fillScreen(uint16_t color); + void drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color); + void drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color); + bool getPixel(int16_t x, int16_t y) const; + /**********************************************************************/ + /*! + @brief Get a pointer to the internal buffer memory + @returns A pointer to the allocated buffer + */ + /**********************************************************************/ + uint8_t *getBuffer(void) const { return buffer; } + +protected: + bool getRawPixel(int16_t x, int16_t y) const; + void drawFastRawVLine(int16_t x, int16_t y, int16_t h, uint16_t color); + void drawFastRawHLine(int16_t x, int16_t y, int16_t w, uint16_t color); + uint8_t *buffer; ///< Raster data: no longer private, allow subclass access + bool buffer_owned; ///< If true, destructor will free buffer, else it will do + ///< nothing + +private: +#ifdef __AVR__ + // Bitmask tables of 0x80>>X and ~(0x80>>X), because X>>Y is slow on AVR + static const uint8_t PROGMEM GFXsetBit[], GFXclrBit[]; +#endif +}; + +/// A GFX 8-bit canvas context for graphics +class GFXcanvas8 : public Adafruit_GFX { +public: + GFXcanvas8(uint16_t w, uint16_t h, bool allocate_buffer = true); + ~GFXcanvas8(void); + void drawPixel(int16_t x, int16_t y, uint16_t color); + void fillScreen(uint16_t color); + void drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color); + void drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color); + uint8_t getPixel(int16_t x, int16_t y) const; + /**********************************************************************/ + /*! + @brief Get a pointer to the internal buffer memory + @returns A pointer to the allocated buffer + */ + /**********************************************************************/ + uint8_t *getBuffer(void) const { return buffer; } + +protected: + uint8_t getRawPixel(int16_t x, int16_t y) const; + void drawFastRawVLine(int16_t x, int16_t y, int16_t h, uint16_t color); + void drawFastRawHLine(int16_t x, int16_t y, int16_t w, uint16_t color); + uint8_t *buffer; ///< Raster data: no longer private, allow subclass access + bool buffer_owned; ///< If true, destructor will free buffer, else it will do + ///< nothing +}; + +/// A GFX 16-bit canvas context for graphics +class GFXcanvas16 : public Adafruit_GFX { +public: + GFXcanvas16(uint16_t w, uint16_t h, bool allocate_buffer = true); + ~GFXcanvas16(void); + void drawPixel(int16_t x, int16_t y, uint16_t color); + void fillScreen(uint16_t color); + void byteSwap(void); + void drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color); + void drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color); + uint16_t getPixel(int16_t x, int16_t y) const; + /**********************************************************************/ + /*! + @brief Get a pointer to the internal buffer memory + @returns A pointer to the allocated buffer + */ + /**********************************************************************/ + uint16_t *getBuffer(void) const { return buffer; } + +protected: + uint16_t getRawPixel(int16_t x, int16_t y) const; + void drawFastRawVLine(int16_t x, int16_t y, int16_t h, uint16_t color); + void drawFastRawHLine(int16_t x, int16_t y, int16_t w, uint16_t color); + uint16_t *buffer; ///< Raster data: no longer private, allow subclass access + bool buffer_owned; ///< If true, destructor will free buffer, else it will do + ///< nothing +}; + +#endif // _ADAFRUIT_GFX_H diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Adafruit_GrayOLED.cpp b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Adafruit_GrayOLED.cpp new file mode 100644 index 0000000..e3cbc72 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Adafruit_GrayOLED.cpp @@ -0,0 +1,422 @@ +/*! + * @file Adafruit_GrayOLED.cpp + * + * This is documentation for Adafruit's generic library for grayscale + * OLED displays: http://www.adafruit.com/category/63_98 + * + * These displays use I2C or SPI to communicate. I2C requires 2 pins + * (SCL+SDA) and optionally a RESET pin. SPI requires 4 pins (MOSI, SCK, + * select, data/command) and optionally a reset pin. Hardware SPI or + * 'bitbang' software SPI are both supported. + * + * Adafruit invests time and resources providing this open source code, + * please support Adafruit and open-source hardware by purchasing + * products from Adafruit! + * + */ + +// Not for ATtiny, at all +#if !defined(__AVR_ATtiny85__) && !defined(__AVR_ATtiny84__) + +#include "Adafruit_GrayOLED.h" +#include + +// SOME DEFINES AND STATIC VARIABLES USED INTERNALLY ----------------------- + +#define grayoled_swap(a, b) \ + (((a) ^= (b)), ((b) ^= (a)), ((a) ^= (b))) ///< No-temp-var swap operation + +// CONSTRUCTORS, DESTRUCTOR ------------------------------------------------ + +/*! + @brief Constructor for I2C-interfaced OLED displays. + @param bpp Bits per pixel, 1 for monochrome, 4 for 16-gray + @param w + Display width in pixels + @param h + Display height in pixels + @param twi + Pointer to an existing TwoWire instance (e.g. &Wire, the + microcontroller's primary I2C bus). + @param rst_pin + Reset pin (using Arduino pin numbering), or -1 if not used + (some displays might be wired to share the microcontroller's + reset pin). + @param clkDuring + Speed (in Hz) for Wire transmissions in library calls. + Defaults to 400000 (400 KHz), a known 'safe' value for most + microcontrollers, and meets the OLED datasheet spec. + Some systems can operate I2C faster (800 KHz for ESP32, 1 MHz + for many other 32-bit MCUs), and some (perhaps not all) + Many OLED's can work with this -- so it's optionally be specified + here and is not a default behavior. (Ignored if using pre-1.5.7 + Arduino software, which operates I2C at a fixed 100 KHz.) + @param clkAfter + Speed (in Hz) for Wire transmissions following library + calls. Defaults to 100000 (100 KHz), the default Arduino Wire + speed. This is done rather than leaving it at the 'during' speed + because other devices on the I2C bus might not be compatible + with the faster rate. (Ignored if using pre-1.5.7 Arduino + software, which operates I2C at a fixed 100 KHz.) + @note Call the object's begin() function before use -- buffer + allocation is performed there! +*/ +Adafruit_GrayOLED::Adafruit_GrayOLED(uint8_t bpp, uint16_t w, uint16_t h, + TwoWire *twi, int16_t rst_pin, + uint32_t clkDuring, uint32_t clkAfter) + : Adafruit_GFX(w, h), i2c_preclk(clkDuring), i2c_postclk(clkAfter), + buffer(NULL), dcPin(-1), csPin(-1), rstPin(rst_pin), _bpp(bpp) { + i2c_dev = NULL; + _theWire = twi; +} + +/*! + @brief Constructor for SPI GrayOLED displays, using software (bitbang) + SPI. + @param bpp Bits per pixel, 1 for monochrome, 4 for 16-gray + @param w + Display width in pixels + @param h + Display height in pixels + @param mosi_pin + MOSI (master out, slave in) pin (using Arduino pin numbering). + This transfers serial data from microcontroller to display. + @param sclk_pin + SCLK (serial clock) pin (using Arduino pin numbering). + This clocks each bit from MOSI. + @param dc_pin + Data/command pin (using Arduino pin numbering), selects whether + display is receiving commands (low) or data (high). + @param rst_pin + Reset pin (using Arduino pin numbering), or -1 if not used + (some displays might be wired to share the microcontroller's + reset pin). + @param cs_pin + Chip-select pin (using Arduino pin numbering) for sharing the + bus with other devices. Active low. + @note Call the object's begin() function before use -- buffer + allocation is performed there! +*/ +Adafruit_GrayOLED::Adafruit_GrayOLED(uint8_t bpp, uint16_t w, uint16_t h, + int16_t mosi_pin, int16_t sclk_pin, + int16_t dc_pin, int16_t rst_pin, + int16_t cs_pin) + : Adafruit_GFX(w, h), dcPin(dc_pin), csPin(cs_pin), rstPin(rst_pin), + _bpp(bpp) { + + spi_dev = new Adafruit_SPIDevice(cs_pin, sclk_pin, -1, mosi_pin, 1000000); +} + +/*! + @brief Constructor for SPI GrayOLED displays, using native hardware SPI. + @param bpp Bits per pixel, 1 for monochrome, 4 for 16-gray + @param w + Display width in pixels + @param h + Display height in pixels + @param spi + Pointer to an existing SPIClass instance (e.g. &SPI, the + microcontroller's primary SPI bus). + @param dc_pin + Data/command pin (using Arduino pin numbering), selects whether + display is receiving commands (low) or data (high). + @param rst_pin + Reset pin (using Arduino pin numbering), or -1 if not used + (some displays might be wired to share the microcontroller's + reset pin). + @param cs_pin + Chip-select pin (using Arduino pin numbering) for sharing the + bus with other devices. Active low. + @param bitrate + SPI clock rate for transfers to this display. Default if + unspecified is 8000000UL (8 MHz). + @note Call the object's begin() function before use -- buffer + allocation is performed there! +*/ +Adafruit_GrayOLED::Adafruit_GrayOLED(uint8_t bpp, uint16_t w, uint16_t h, + SPIClass *spi, int16_t dc_pin, + int16_t rst_pin, int16_t cs_pin, + uint32_t bitrate) + : Adafruit_GFX(w, h), dcPin(dc_pin), csPin(cs_pin), rstPin(rst_pin), + _bpp(bpp) { + + spi_dev = new Adafruit_SPIDevice(cs_pin, bitrate, SPI_BITORDER_MSBFIRST, + SPI_MODE0, spi); +} + +/*! + @brief Destructor for Adafruit_GrayOLED object. +*/ +Adafruit_GrayOLED::~Adafruit_GrayOLED(void) { + if (buffer) { + free(buffer); + buffer = NULL; + } + if (spi_dev) + delete spi_dev; + if (i2c_dev) + delete i2c_dev; +} + +// LOW-LEVEL UTILS --------------------------------------------------------- + +/*! + @brief Issue single command byte to OLED, using I2C or hard/soft SPI as + needed. + @param c The single byte command +*/ +void Adafruit_GrayOLED::oled_command(uint8_t c) { + if (i2c_dev) { // I2C + uint8_t buf[2] = {0x00, c}; // Co = 0, D/C = 0 + i2c_dev->write(buf, 2); + } else { // SPI (hw or soft) -- transaction started in calling function + digitalWrite(dcPin, LOW); + spi_dev->write(&c, 1); + } +} + +// Issue list of commands to GrayOLED +/*! + @brief Issue multiple bytes of commands OLED, using I2C or hard/soft SPI as + needed. + @param c Pointer to the command array + @param n The number of bytes in the command array + @returns True for success on ability to write the data in I2C. +*/ + +bool Adafruit_GrayOLED::oled_commandList(const uint8_t *c, uint8_t n) { + if (i2c_dev) { // I2C + uint8_t dc_byte = 0x00; // Co = 0, D/C = 0 + if (!i2c_dev->write((uint8_t *)c, n, true, &dc_byte, 1)) { + return false; + } + } else { // SPI -- transaction started in calling function + digitalWrite(dcPin, LOW); + if (!spi_dev->write((uint8_t *)c, n)) { + return false; + } + } + return true; +} + +// ALLOCATE & INIT DISPLAY ------------------------------------------------- + +/*! + @brief Allocate RAM for image buffer, initialize peripherals and pins. + Note that subclasses must call this before other begin() init + @param addr + I2C address of corresponding oled display. + SPI displays (hardware or software) do not use addresses, but + this argument is still required. Default if unspecified is 0x3C. + @param reset + If true, and if the reset pin passed to the constructor is + valid, a hard reset will be performed before initializing the + display. If using multiple oled displays on the same bus, and + if they all share the same reset pin, you should only pass true + on the first display being initialized, false on all others, + else the already-initialized displays would be reset. Default if + unspecified is true. + @return true on successful allocation/init, false otherwise. + Well-behaved code should check the return value before + proceeding. + @note MUST call this function before any drawing or updates! +*/ +bool Adafruit_GrayOLED::_init(uint8_t addr, bool reset) { + + // attempt to malloc the bitmap framebuffer + if ((!buffer) && + !(buffer = (uint8_t *)malloc(_bpp * WIDTH * ((HEIGHT + 7) / 8)))) { + return false; + } + + // Reset OLED if requested and reset pin specified in constructor + if (reset && (rstPin >= 0)) { + pinMode(rstPin, OUTPUT); + digitalWrite(rstPin, HIGH); + delay(10); // VDD goes high at start, pause + digitalWrite(rstPin, LOW); // Bring reset low + delay(10); // Wait 10 ms + digitalWrite(rstPin, HIGH); // Bring out of reset + delay(10); + } + + // Setup pin directions + if (_theWire) { // using I2C + i2c_dev = new Adafruit_I2CDevice(addr, _theWire); + // look for i2c address: + if (!i2c_dev || !i2c_dev->begin()) { + return false; + } + } else { // Using one of the SPI modes, either soft or hardware + if (!spi_dev || !spi_dev->begin()) { + return false; + } + pinMode(dcPin, OUTPUT); // Set data/command pin as output + } + + clearDisplay(); + + // set max dirty window + window_x1 = 0; + window_y1 = 0; + window_x2 = WIDTH - 1; + window_y2 = HEIGHT - 1; + + return true; // Success +} + +// DRAWING FUNCTIONS ------------------------------------------------------- + +/*! + @brief Set/clear/invert a single pixel. This is also invoked by the + Adafruit_GFX library in generating many higher-level graphics + primitives. + @param x + Column of display -- 0 at left to (screen width - 1) at right. + @param y + Row of display -- 0 at top to (screen height -1) at bottom. + @param color + Pixel color, one of: MONOOLED_BLACK, MONOOLED_WHITE or + MONOOLED_INVERT. + @note Changes buffer contents only, no immediate effect on display. + Follow up with a call to display(), or with other graphics + commands as needed by one's own application. +*/ +void Adafruit_GrayOLED::drawPixel(int16_t x, int16_t y, uint16_t color) { + if ((x >= 0) && (x < width()) && (y >= 0) && (y < height())) { + // Pixel is in-bounds. Rotate coordinates if needed. + switch (getRotation()) { + case 1: + grayoled_swap(x, y); + x = WIDTH - x - 1; + break; + case 2: + x = WIDTH - x - 1; + y = HEIGHT - y - 1; + break; + case 3: + grayoled_swap(x, y); + y = HEIGHT - y - 1; + break; + } + + // adjust dirty window + window_x1 = min(window_x1, x); + window_y1 = min(window_y1, y); + window_x2 = max(window_x2, x); + window_y2 = max(window_y2, y); + + if (_bpp == 1) { + switch (color) { + case MONOOLED_WHITE: + buffer[x + (y / 8) * WIDTH] |= (1 << (y & 7)); + break; + case MONOOLED_BLACK: + buffer[x + (y / 8) * WIDTH] &= ~(1 << (y & 7)); + break; + case MONOOLED_INVERSE: + buffer[x + (y / 8) * WIDTH] ^= (1 << (y & 7)); + break; + } + } + if (_bpp == 4) { + uint8_t *pixelptr = &buffer[x / 2 + (y * WIDTH / 2)]; + // Serial.printf("(%d, %d) -> offset %d\n", x, y, x/2 + (y * WIDTH / 2)); + if (x % 2 == 0) { // even, left nibble + uint8_t t = pixelptr[0] & 0x0F; + t |= (color & 0xF) << 4; + pixelptr[0] = t; + } else { // odd, right lower nibble + uint8_t t = pixelptr[0] & 0xF0; + t |= color & 0xF; + pixelptr[0] = t; + } + } + } +} + +/*! + @brief Clear contents of display buffer (set all pixels to off). + @note Changes buffer contents only, no immediate effect on display. + Follow up with a call to display(), or with other graphics + commands as needed by one's own application. +*/ +void Adafruit_GrayOLED::clearDisplay(void) { + memset(buffer, 0, _bpp * WIDTH * ((HEIGHT + 7) / 8)); + // set max dirty window + window_x1 = 0; + window_y1 = 0; + window_x2 = WIDTH - 1; + window_y2 = HEIGHT - 1; +} + +/*! + @brief Return color of a single pixel in display buffer. + @param x + Column of display -- 0 at left to (screen width - 1) at right. + @param y + Row of display -- 0 at top to (screen height -1) at bottom. + @return true if pixel is set (usually MONOOLED_WHITE, unless display invert + mode is enabled), false if clear (MONOOLED_BLACK). + @note Reads from buffer contents; may not reflect current contents of + screen if display() has not been called. +*/ +bool Adafruit_GrayOLED::getPixel(int16_t x, int16_t y) { + if ((x >= 0) && (x < width()) && (y >= 0) && (y < height())) { + // Pixel is in-bounds. Rotate coordinates if needed. + switch (getRotation()) { + case 1: + grayoled_swap(x, y); + x = WIDTH - x - 1; + break; + case 2: + x = WIDTH - x - 1; + y = HEIGHT - y - 1; + break; + case 3: + grayoled_swap(x, y); + y = HEIGHT - y - 1; + break; + } + return (buffer[x + (y / 8) * WIDTH] & (1 << (y & 7))); + } + return false; // Pixel out of bounds +} + +/*! + @brief Get base address of display buffer for direct reading or writing. + @return Pointer to an unsigned 8-bit array, column-major, columns padded + to full byte boundary if needed. +*/ +uint8_t *Adafruit_GrayOLED::getBuffer(void) { return buffer; } + +// OTHER HARDWARE SETTINGS ------------------------------------------------- + +/*! + @brief Enable or disable display invert mode (white-on-black vs + black-on-white). Handy for testing! + @param i + If true, switch to invert mode (black-on-white), else normal + mode (white-on-black). + @note This has an immediate effect on the display, no need to call the + display() function -- buffer contents are not changed, rather a + different pixel mode of the display hardware is used. When + enabled, drawing MONOOLED_BLACK (value 0) pixels will actually draw + white, MONOOLED_WHITE (value 1) will draw black. +*/ +void Adafruit_GrayOLED::invertDisplay(bool i) { + oled_command(i ? GRAYOLED_INVERTDISPLAY : GRAYOLED_NORMALDISPLAY); +} + +/*! + @brief Adjust the display contrast. + @param level The contrast level from 0 to 0x7F + @note This has an immediate effect on the display, no need to call the + display() function -- buffer contents are not changed. +*/ +void Adafruit_GrayOLED::setContrast(uint8_t level) { + uint8_t cmd[] = {GRAYOLED_SETCONTRAST, level}; + oled_commandList(cmd, 2); +} + +#endif /* ATTIN85 not supported */ diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Adafruit_GrayOLED.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Adafruit_GrayOLED.h new file mode 100644 index 0000000..4c836a4 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Adafruit_GrayOLED.h @@ -0,0 +1,101 @@ +/*! + * @file Adafruit_GrayOLED.h + * + * This is part of for Adafruit's GFX library, supplying generic support + * for grayscale OLED displays: http://www.adafruit.com/category/63_98 + * + * These displays use I2C or SPI to communicate. I2C requires 2 pins + * (SCL+SDA) and optionally a RESET pin. SPI requires 4 pins (MOSI, SCK, + * select, data/command) and optionally a reset pin. Hardware SPI or + * 'bitbang' software SPI are both supported. + * + * 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, with + * contributions from the open source community. + * + * BSD license, all text above, and the splash screen header file, + * must be included in any redistribution. + * + */ + +#ifndef _Adafruit_GRAYOLED_H_ +#define _Adafruit_GRAYOLED_H_ + +// Not for ATtiny, at all +#if !defined(__AVR_ATtiny85__) && !defined(__AVR_ATtiny84__) + +#include +#include +#include +#include +#include + +#define GRAYOLED_SETCONTRAST 0x81 ///< Generic contrast for almost all OLEDs +#define GRAYOLED_NORMALDISPLAY 0xA6 ///< Generic non-invert for almost all OLEDs +#define GRAYOLED_INVERTDISPLAY 0xA7 ///< Generic invert for almost all OLEDs + +#define MONOOLED_BLACK 0 ///< Default black 'color' for monochrome OLEDS +#define MONOOLED_WHITE 1 ///< Default white 'color' for monochrome OLEDS +#define MONOOLED_INVERSE 2 ///< Default inversion command for monochrome OLEDS + +/*! + @brief Class that stores state and functions for interacting with + generic grayscale OLED displays. +*/ +class Adafruit_GrayOLED : public Adafruit_GFX { +public: + Adafruit_GrayOLED(uint8_t bpp, uint16_t w, uint16_t h, TwoWire *twi = &Wire, + int16_t rst_pin = -1, uint32_t preclk = 400000, + uint32_t postclk = 100000); + Adafruit_GrayOLED(uint8_t bpp, uint16_t w, uint16_t h, int16_t mosi_pin, + int16_t sclk_pin, int16_t dc_pin, int16_t rst_pin, + int16_t cs_pin); + Adafruit_GrayOLED(uint8_t bpp, uint16_t w, uint16_t h, SPIClass *spi, + int16_t dc_pin, int16_t rst_pin, int16_t cs_pin, + uint32_t bitrate = 8000000UL); + + ~Adafruit_GrayOLED(void); + + /** + @brief The function that sub-classes define that writes out the buffer to + the display over I2C or SPI + **/ + virtual void display(void) = 0; + void clearDisplay(void); + void invertDisplay(bool i); + void setContrast(uint8_t contrastlevel); + void drawPixel(int16_t x, int16_t y, uint16_t color); + bool getPixel(int16_t x, int16_t y); + uint8_t *getBuffer(void); + + void oled_command(uint8_t c); + bool oled_commandList(const uint8_t *c, uint8_t n); + +protected: + bool _init(uint8_t i2caddr = 0x3C, bool reset = true); + + Adafruit_SPIDevice *spi_dev = NULL; ///< The SPI interface BusIO device + Adafruit_I2CDevice *i2c_dev = NULL; ///< The I2C interface BusIO device + int32_t i2c_preclk = 400000, ///< Configurable 'high speed' I2C rate + i2c_postclk = 100000; ///< Configurable 'low speed' I2C rate + uint8_t *buffer = NULL; ///< Internal 1:1 framebuffer of display mem + + int16_t window_x1, ///< Dirty tracking window minimum x + window_y1, ///< Dirty tracking window minimum y + window_x2, ///< Dirty tracking window maximum x + window_y2; ///< Dirty tracking window maximum y + + int dcPin, ///< The Arduino pin connected to D/C (for SPI) + csPin, ///< The Arduino pin connected to CS (for SPI) + rstPin; ///< The Arduino pin connected to reset (-1 if unused) + + uint8_t _bpp = 1; ///< Bits per pixel color for this display +private: + TwoWire *_theWire = NULL; ///< The underlying hardware I2C +}; + +#endif // end __AVR_ATtiny85__ __AVR_ATtiny84__ +#endif // _Adafruit_GrayOLED_H_ diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Adafruit_SPITFT.cpp b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Adafruit_SPITFT.cpp new file mode 100644 index 0000000..870979b --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Adafruit_SPITFT.cpp @@ -0,0 +1,2621 @@ +/*! + * @file Adafruit_SPITFT.cpp + * + * @mainpage Adafruit SPI TFT Displays (and some others) + * + * @section intro_sec Introduction + * + * Part of Adafruit's GFX graphics library. Originally this class was + * written to handle a range of color TFT displays connected via SPI, + * but over time this library and some display-specific subclasses have + * mutated to include some color OLEDs as well as parallel-interfaced + * displays. The name's been kept for the sake of older code. + * + * Adafruit invests time and resources providing this open source code, + * please support Adafruit and open-source hardware by purchasing + * products from Adafruit! + + * @section dependencies Dependencies + * + * This library depends on + * Adafruit_GFX + * being present on your system. Please make sure you have installed the latest + * version before using this library. + * + * @section author Author + * + * Written by Limor "ladyada" Fried for Adafruit Industries, + * with contributions from the open source community. + * + * @section license License + * + * BSD license, all text here must be included in any redistribution. + */ + +// Not for ATtiny, at all +#if !defined(__AVR_ATtiny85__) && !defined(__AVR_ATtiny84__) + +#include "Adafruit_SPITFT.h" + +#if defined(__AVR__) +#if defined(__AVR_XMEGA__) // only tested with __AVR_ATmega4809__ +#define AVR_WRITESPI(x) \ + for (SPI0_DATA = (x); (!(SPI0_INTFLAGS & _BV(SPI_IF_bp)));) +#elif defined(__LGT8F__) +#define AVR_WRITESPI(x) \ + SPDR = (x); \ + asm volatile("nop"); \ + while ((SPFR & _BV(RDEMPT))) \ + ; \ + SPFR = _BV(RDEMPT) | _BV(WREMPT) +#else +#define AVR_WRITESPI(x) for (SPDR = (x); (!(SPSR & _BV(SPIF)));) +#endif +#endif + +#if defined(PORT_IOBUS) +// On SAMD21, redefine digitalPinToPort() to use the slightly-faster +// PORT_IOBUS rather than PORT (not needed on SAMD51). +#undef digitalPinToPort +#define digitalPinToPort(P) (&(PORT_IOBUS->Group[g_APinDescription[P].ulPort])) +#endif // end PORT_IOBUS + +#if defined(USE_SPI_DMA) && (defined(__SAMD51__) || defined(ARDUINO_SAMD_ZERO)) +// #pragma message ("GFX DMA IS ENABLED. HIGHLY EXPERIMENTAL.") +#include "wiring_private.h" // pinPeripheral() function +#include +#include // memalign() function +#define tcNum 2 // Timer/Counter for parallel write strobe PWM +#define wrPeripheral PIO_CCL // Use CCL to invert write strobe + +// DMA transfer-in-progress indicator and callback +static volatile bool dma_busy = false; +static void dma_callback(Adafruit_ZeroDMA *dma) { dma_busy = false; } + +#if defined(__SAMD51__) +// Timer/counter info by index # +static const struct { + Tc *tc; // -> Timer/Counter base address + int gclk; // GCLK ID + int evu; // EVSYS user ID +} tcList[] = {{TC0, TC0_GCLK_ID, EVSYS_ID_USER_TC0_EVU}, + {TC1, TC1_GCLK_ID, EVSYS_ID_USER_TC1_EVU}, + {TC2, TC2_GCLK_ID, EVSYS_ID_USER_TC2_EVU}, + {TC3, TC3_GCLK_ID, EVSYS_ID_USER_TC3_EVU}, +#if defined(TC4) + {TC4, TC4_GCLK_ID, EVSYS_ID_USER_TC4_EVU}, +#endif +#if defined(TC5) + {TC5, TC5_GCLK_ID, EVSYS_ID_USER_TC5_EVU}, +#endif +#if defined(TC6) + {TC6, TC6_GCLK_ID, EVSYS_ID_USER_TC6_EVU}, +#endif +#if defined(TC7) + {TC7, TC7_GCLK_ID, EVSYS_ID_USER_TC7_EVU} +#endif +}; +#define NUM_TIMERS (sizeof tcList / sizeof tcList[0]) ///< # timer/counters +#endif // end __SAMD51__ + +#endif // end USE_SPI_DMA + +// Possible values for Adafruit_SPITFT.connection: +#define TFT_HARD_SPI 0 ///< Display interface = hardware SPI +#define TFT_SOFT_SPI 1 ///< Display interface = software SPI +#define TFT_PARALLEL 2 ///< Display interface = 8- or 16-bit parallel + +// CONSTRUCTORS ------------------------------------------------------------ + +/*! + @brief Adafruit_SPITFT constructor for software (bitbang) SPI. + @param w Display width in pixels at default rotation setting (0). + @param h Display height in pixels at default rotation setting (0). + @param cs Arduino pin # for chip-select (-1 if unused, tie CS low). + @param dc Arduino pin # for data/command select (required). + @param mosi Arduino pin # for bitbang SPI MOSI signal (required). + @param sck Arduino pin # for bitbang SPI SCK signal (required). + @param rst Arduino pin # for display reset (optional, display reset + can be tied to MCU reset, default of -1 means unused). + @param miso Arduino pin # for bitbang SPI MISO signal (optional, + -1 default, many displays don't support SPI read). + @note Output pins are not initialized; application typically will + need to call subclass' begin() function, which in turn calls + this library's initSPI() function to initialize pins. +*/ +Adafruit_SPITFT::Adafruit_SPITFT(uint16_t w, uint16_t h, int8_t cs, int8_t dc, + int8_t mosi, int8_t sck, int8_t rst, + int8_t miso) + : Adafruit_GFX(w, h), connection(TFT_SOFT_SPI), _rst(rst), _cs(cs), + _dc(dc) { + swspi._sck = sck; + swspi._mosi = mosi; + swspi._miso = miso; +#if defined(USE_FAST_PINIO) +#if defined(HAS_PORT_SET_CLR) +#if defined(CORE_TEENSY) +#if !defined(KINETISK) + dcPinMask = digitalPinToBitMask(dc); + swspi.sckPinMask = digitalPinToBitMask(sck); + swspi.mosiPinMask = digitalPinToBitMask(mosi); +#endif + dcPortSet = portSetRegister(dc); + dcPortClr = portClearRegister(dc); + swspi.sckPortSet = portSetRegister(sck); + swspi.sckPortClr = portClearRegister(sck); + swspi.mosiPortSet = portSetRegister(mosi); + swspi.mosiPortClr = portClearRegister(mosi); + if (cs >= 0) { +#if !defined(KINETISK) + csPinMask = digitalPinToBitMask(cs); +#endif + csPortSet = portSetRegister(cs); + csPortClr = portClearRegister(cs); + } else { +#if !defined(KINETISK) + csPinMask = 0; +#endif + csPortSet = dcPortSet; + csPortClr = dcPortClr; + } + if (miso >= 0) { + swspi.misoPort = portInputRegister(miso); +#if !defined(KINETISK) + swspi.misoPinMask = digitalPinToBitMask(miso); +#endif + } else { + swspi.misoPort = portInputRegister(dc); + } +#else // !CORE_TEENSY + dcPinMask = digitalPinToBitMask(dc); + swspi.sckPinMask = digitalPinToBitMask(sck); + swspi.mosiPinMask = digitalPinToBitMask(mosi); + dcPortSet = &(PORT->Group[g_APinDescription[dc].ulPort].OUTSET.reg); + dcPortClr = &(PORT->Group[g_APinDescription[dc].ulPort].OUTCLR.reg); + swspi.sckPortSet = &(PORT->Group[g_APinDescription[sck].ulPort].OUTSET.reg); + swspi.sckPortClr = &(PORT->Group[g_APinDescription[sck].ulPort].OUTCLR.reg); + swspi.mosiPortSet = &(PORT->Group[g_APinDescription[mosi].ulPort].OUTSET.reg); + swspi.mosiPortClr = &(PORT->Group[g_APinDescription[mosi].ulPort].OUTCLR.reg); + if (cs >= 0) { + csPinMask = digitalPinToBitMask(cs); + csPortSet = &(PORT->Group[g_APinDescription[cs].ulPort].OUTSET.reg); + csPortClr = &(PORT->Group[g_APinDescription[cs].ulPort].OUTCLR.reg); + } else { + // No chip-select line defined; might be permanently tied to GND. + // Assign a valid GPIO register (though not used for CS), and an + // empty pin bitmask...the nonsense bit-twiddling might be faster + // than checking _cs and possibly branching. + csPortSet = dcPortSet; + csPortClr = dcPortClr; + csPinMask = 0; + } + if (miso >= 0) { + swspi.misoPinMask = digitalPinToBitMask(miso); + swspi.misoPort = (PORTreg_t)portInputRegister(digitalPinToPort(miso)); + } else { + swspi.misoPinMask = 0; + swspi.misoPort = (PORTreg_t)portInputRegister(digitalPinToPort(dc)); + } +#endif // end !CORE_TEENSY +#else // !HAS_PORT_SET_CLR + dcPort = (PORTreg_t)portOutputRegister(digitalPinToPort(dc)); + dcPinMaskSet = digitalPinToBitMask(dc); + swspi.sckPort = (PORTreg_t)portOutputRegister(digitalPinToPort(sck)); + swspi.sckPinMaskSet = digitalPinToBitMask(sck); + swspi.mosiPort = (PORTreg_t)portOutputRegister(digitalPinToPort(mosi)); + swspi.mosiPinMaskSet = digitalPinToBitMask(mosi); + if (cs >= 0) { + csPort = (PORTreg_t)portOutputRegister(digitalPinToPort(cs)); + csPinMaskSet = digitalPinToBitMask(cs); + } else { + // No chip-select line defined; might be permanently tied to GND. + // Assign a valid GPIO register (though not used for CS), and an + // empty pin bitmask...the nonsense bit-twiddling might be faster + // than checking _cs and possibly branching. + csPort = dcPort; + csPinMaskSet = 0; + } + if (miso >= 0) { + swspi.misoPort = (PORTreg_t)portInputRegister(digitalPinToPort(miso)); + swspi.misoPinMask = digitalPinToBitMask(miso); + } else { + swspi.misoPort = (PORTreg_t)portInputRegister(digitalPinToPort(dc)); + swspi.misoPinMask = 0; + } + csPinMaskClr = ~csPinMaskSet; + dcPinMaskClr = ~dcPinMaskSet; + swspi.sckPinMaskClr = ~swspi.sckPinMaskSet; + swspi.mosiPinMaskClr = ~swspi.mosiPinMaskSet; +#endif // !end HAS_PORT_SET_CLR +#endif // end USE_FAST_PINIO +} + +/*! + @brief Adafruit_SPITFT constructor for hardware SPI using the board's + default SPI peripheral. + @param w Display width in pixels at default rotation setting (0). + @param h Display height in pixels at default rotation setting (0). + @param cs Arduino pin # for chip-select (-1 if unused, tie CS low). + @param dc Arduino pin # for data/command select (required). + @param rst Arduino pin # for display reset (optional, display reset + can be tied to MCU reset, default of -1 means unused). + @note Output pins are not initialized; application typically will + need to call subclass' begin() function, which in turn calls + this library's initSPI() function to initialize pins. +*/ +#if defined(ESP8266) // See notes below +Adafruit_SPITFT::Adafruit_SPITFT(uint16_t w, uint16_t h, int8_t cs, int8_t dc, + int8_t rst) + : Adafruit_GFX(w, h), connection(TFT_HARD_SPI), _rst(rst), _cs(cs), + _dc(dc) { + hwspi._spi = &SPI; +} +#else // !ESP8266 +Adafruit_SPITFT::Adafruit_SPITFT(uint16_t w, uint16_t h, int8_t cs, int8_t dc, + int8_t rst) + : Adafruit_SPITFT(w, h, &SPI, cs, dc, rst) { + // This just invokes the hardware SPI constructor below, + // passing the default SPI device (&SPI). +} +#endif // end !ESP8266 + +#if !defined(ESP8266) +// ESP8266 compiler freaks out at this constructor -- it can't disambiguate +// beteween the SPIClass pointer (argument #3) and a regular integer. +// Solution here it to just not offer this variant on the ESP8266. You can +// use the default hardware SPI peripheral, or you can use software SPI, +// but if there's any library out there that creates a 'virtual' SPIClass +// peripheral and drives it with software bitbanging, that's not supported. +/*! + @brief Adafruit_SPITFT constructor for hardware SPI using a specific + SPI peripheral. + @param w Display width in pixels at default rotation (0). + @param h Display height in pixels at default rotation (0). + @param spiClass Pointer to SPIClass type (e.g. &SPI or &SPI1). + @param cs Arduino pin # for chip-select (-1 if unused, tie CS low). + @param dc Arduino pin # for data/command select (required). + @param rst Arduino pin # for display reset (optional, display reset + can be tied to MCU reset, default of -1 means unused). + @note Output pins are not initialized in constructor; application + typically will need to call subclass' begin() function, which + in turn calls this library's initSPI() function to initialize + pins. EXCEPT...if you have built your own SERCOM SPI peripheral + (calling the SPIClass constructor) rather than one of the + built-in SPI devices (e.g. &SPI, &SPI1 and so forth), you will + need to call the begin() function for your object as well as + pinPeripheral() for the MOSI, MISO and SCK pins to configure + GPIO manually. Do this BEFORE calling the display-specific + begin or init function. Unfortunate but unavoidable. +*/ +Adafruit_SPITFT::Adafruit_SPITFT(uint16_t w, uint16_t h, SPIClass *spiClass, + int8_t cs, int8_t dc, int8_t rst) + : Adafruit_GFX(w, h), connection(TFT_HARD_SPI), _rst(rst), _cs(cs), + _dc(dc) { + hwspi._spi = spiClass; +#if defined(USE_FAST_PINIO) +#if defined(HAS_PORT_SET_CLR) +#if defined(CORE_TEENSY) +#if !defined(KINETISK) + dcPinMask = digitalPinToBitMask(dc); +#endif + dcPortSet = portSetRegister(dc); + dcPortClr = portClearRegister(dc); + if (cs >= 0) { +#if !defined(KINETISK) + csPinMask = digitalPinToBitMask(cs); +#endif + csPortSet = portSetRegister(cs); + csPortClr = portClearRegister(cs); + } else { // see comments below +#if !defined(KINETISK) + csPinMask = 0; +#endif + csPortSet = dcPortSet; + csPortClr = dcPortClr; + } +#else // !CORE_TEENSY + dcPinMask = digitalPinToBitMask(dc); + dcPortSet = &(PORT->Group[g_APinDescription[dc].ulPort].OUTSET.reg); + dcPortClr = &(PORT->Group[g_APinDescription[dc].ulPort].OUTCLR.reg); + if (cs >= 0) { + csPinMask = digitalPinToBitMask(cs); + csPortSet = &(PORT->Group[g_APinDescription[cs].ulPort].OUTSET.reg); + csPortClr = &(PORT->Group[g_APinDescription[cs].ulPort].OUTCLR.reg); + } else { + // No chip-select line defined; might be permanently tied to GND. + // Assign a valid GPIO register (though not used for CS), and an + // empty pin bitmask...the nonsense bit-twiddling might be faster + // than checking _cs and possibly branching. + csPortSet = dcPortSet; + csPortClr = dcPortClr; + csPinMask = 0; + } +#endif // end !CORE_TEENSY +#else // !HAS_PORT_SET_CLR + dcPort = (PORTreg_t)portOutputRegister(digitalPinToPort(dc)); + dcPinMaskSet = digitalPinToBitMask(dc); + if (cs >= 0) { + csPort = (PORTreg_t)portOutputRegister(digitalPinToPort(cs)); + csPinMaskSet = digitalPinToBitMask(cs); + } else { + // No chip-select line defined; might be permanently tied to GND. + // Assign a valid GPIO register (though not used for CS), and an + // empty pin bitmask...the nonsense bit-twiddling might be faster + // than checking _cs and possibly branching. + csPort = dcPort; + csPinMaskSet = 0; + } + csPinMaskClr = ~csPinMaskSet; + dcPinMaskClr = ~dcPinMaskSet; +#endif // end !HAS_PORT_SET_CLR +#endif // end USE_FAST_PINIO +} +#endif // end !ESP8266 + +/*! + @brief Adafruit_SPITFT constructor for parallel display connection. + @param w Display width in pixels at default rotation (0). + @param h Display height in pixels at default rotation (0). + @param busWidth If tft16 (enumeration in header file), is a 16-bit + parallel connection, else 8-bit. + 16-bit isn't fully implemented or tested yet so + applications should pass "tft8bitbus" for now...needed to + stick a required enum argument in there to + disambiguate this constructor from the soft-SPI case. + Argument is ignored on 8-bit architectures (no 'wide' + support there since PORTs are 8 bits anyway). + @param d0 Arduino pin # for data bit 0 (1+ are extrapolated). + The 8 (or 16) data bits MUST be contiguous and byte- + aligned (or word-aligned for wide interface) within + the same PORT register (might not correspond to + Arduino pin sequence). + @param wr Arduino pin # for write strobe (required). + @param dc Arduino pin # for data/command select (required). + @param cs Arduino pin # for chip-select (optional, -1 if unused, + tie CS low). + @param rst Arduino pin # for display reset (optional, display reset + can be tied to MCU reset, default of -1 means unused). + @param rd Arduino pin # for read strobe (optional, -1 if unused). + @note Output pins are not initialized; application typically will need + to call subclass' begin() function, which in turn calls this + library's initSPI() function to initialize pins. + Yes, the name is a misnomer...this library originally handled + only SPI displays, parallel being a recent addition (but not + wanting to break existing code). +*/ +Adafruit_SPITFT::Adafruit_SPITFT(uint16_t w, uint16_t h, tftBusWidth busWidth, + int8_t d0, int8_t wr, int8_t dc, int8_t cs, + int8_t rst, int8_t rd) + : Adafruit_GFX(w, h), connection(TFT_PARALLEL), _rst(rst), _cs(cs), + _dc(dc) { + tft8._d0 = d0; + tft8._wr = wr; + tft8._rd = rd; + tft8.wide = (busWidth == tft16bitbus); +#if defined(USE_FAST_PINIO) +#if defined(HAS_PORT_SET_CLR) +#if defined(CORE_TEENSY) + tft8.wrPortSet = portSetRegister(wr); + tft8.wrPortClr = portClearRegister(wr); +#if !defined(KINETISK) + dcPinMask = digitalPinToBitMask(dc); +#endif + dcPortSet = portSetRegister(dc); + dcPortClr = portClearRegister(dc); + if (cs >= 0) { +#if !defined(KINETISK) + csPinMask = digitalPinToBitMask(cs); +#endif + csPortSet = portSetRegister(cs); + csPortClr = portClearRegister(cs); + } else { // see comments below +#if !defined(KINETISK) + csPinMask = 0; +#endif + csPortSet = dcPortSet; + csPortClr = dcPortClr; + } + if (rd >= 0) { // if read-strobe pin specified... +#if defined(KINETISK) + tft8.rdPinMask = 1; +#else // !KINETISK + tft8.rdPinMask = digitalPinToBitMask(rd); +#endif + tft8.rdPortSet = portSetRegister(rd); + tft8.rdPortClr = portClearRegister(rd); + } else { + tft8.rdPinMask = 0; + tft8.rdPortSet = dcPortSet; + tft8.rdPortClr = dcPortClr; + } + // These are all uint8_t* pointers -- elsewhere they're recast + // as necessary if a 'wide' 16-bit interface is in use. + tft8.writePort = portOutputRegister(d0); + tft8.readPort = portInputRegister(d0); + tft8.dirSet = portModeRegister(d0); + tft8.dirClr = portModeRegister(d0); +#else // !CORE_TEENSY + tft8.wrPinMask = digitalPinToBitMask(wr); + tft8.wrPortSet = &(PORT->Group[g_APinDescription[wr].ulPort].OUTSET.reg); + tft8.wrPortClr = &(PORT->Group[g_APinDescription[wr].ulPort].OUTCLR.reg); + dcPinMask = digitalPinToBitMask(dc); + dcPortSet = &(PORT->Group[g_APinDescription[dc].ulPort].OUTSET.reg); + dcPortClr = &(PORT->Group[g_APinDescription[dc].ulPort].OUTCLR.reg); + if (cs >= 0) { + csPinMask = digitalPinToBitMask(cs); + csPortSet = &(PORT->Group[g_APinDescription[cs].ulPort].OUTSET.reg); + csPortClr = &(PORT->Group[g_APinDescription[cs].ulPort].OUTCLR.reg); + } else { + // No chip-select line defined; might be permanently tied to GND. + // Assign a valid GPIO register (though not used for CS), and an + // empty pin bitmask...the nonsense bit-twiddling might be faster + // than checking _cs and possibly branching. + csPortSet = dcPortSet; + csPortClr = dcPortClr; + csPinMask = 0; + } + if (rd >= 0) { // if read-strobe pin specified... + tft8.rdPinMask = digitalPinToBitMask(rd); + tft8.rdPortSet = &(PORT->Group[g_APinDescription[rd].ulPort].OUTSET.reg); + tft8.rdPortClr = &(PORT->Group[g_APinDescription[rd].ulPort].OUTCLR.reg); + } else { + tft8.rdPinMask = 0; + tft8.rdPortSet = dcPortSet; + tft8.rdPortClr = dcPortClr; + } + // Get pointers to PORT write/read/dir bytes within 32-bit PORT + uint8_t dBit = g_APinDescription[d0].ulPin; // d0 bit # in PORT + PortGroup *p = (&(PORT->Group[g_APinDescription[d0].ulPort])); + uint8_t offset = dBit / 8; // d[7:0] byte # within PORT + if (tft8.wide) + offset &= ~1; // d[15:8] byte # within PORT + // These are all uint8_t* pointers -- elsewhere they're recast + // as necessary if a 'wide' 16-bit interface is in use. + tft8.writePort = (volatile uint8_t *)&(p->OUT.reg) + offset; + tft8.readPort = (volatile uint8_t *)&(p->IN.reg) + offset; + tft8.dirSet = (volatile uint8_t *)&(p->DIRSET.reg) + offset; + tft8.dirClr = (volatile uint8_t *)&(p->DIRCLR.reg) + offset; +#endif // end !CORE_TEENSY +#else // !HAS_PORT_SET_CLR + tft8.wrPort = (PORTreg_t)portOutputRegister(digitalPinToPort(wr)); + tft8.wrPinMaskSet = digitalPinToBitMask(wr); + dcPort = (PORTreg_t)portOutputRegister(digitalPinToPort(dc)); + dcPinMaskSet = digitalPinToBitMask(dc); + if (cs >= 0) { + csPort = (PORTreg_t)portOutputRegister(digitalPinToPort(cs)); + csPinMaskSet = digitalPinToBitMask(cs); + } else { + // No chip-select line defined; might be permanently tied to GND. + // Assign a valid GPIO register (though not used for CS), and an + // empty pin bitmask...the nonsense bit-twiddling might be faster + // than checking _cs and possibly branching. + csPort = dcPort; + csPinMaskSet = 0; + } + if (rd >= 0) { // if read-strobe pin specified... + tft8.rdPort = (PORTreg_t)portOutputRegister(digitalPinToPort(rd)); + tft8.rdPinMaskSet = digitalPinToBitMask(rd); + } else { + tft8.rdPort = dcPort; + tft8.rdPinMaskSet = 0; + } + csPinMaskClr = ~csPinMaskSet; + dcPinMaskClr = ~dcPinMaskSet; + tft8.wrPinMaskClr = ~tft8.wrPinMaskSet; + tft8.rdPinMaskClr = ~tft8.rdPinMaskSet; + tft8.writePort = (PORTreg_t)portOutputRegister(digitalPinToPort(d0)); + tft8.readPort = (PORTreg_t)portInputRegister(digitalPinToPort(d0)); + tft8.portDir = (PORTreg_t)portModeRegister(digitalPinToPort(d0)); +#endif // end !HAS_PORT_SET_CLR +#endif // end USE_FAST_PINIO +} + +// end constructors ------- + +// CLASS MEMBER FUNCTIONS -------------------------------------------------- + +// begin() and setAddrWindow() MUST be declared by any subclass. + +/*! + @brief Configure microcontroller pins for TFT interfacing. Typically + called by a subclass' begin() function. + @param freq SPI frequency when using hardware SPI. If default (0) + is passed, will fall back on a device-specific value. + Value is ignored when using software SPI or parallel + connection. + @param spiMode SPI mode when using hardware SPI. MUST be one of the + values SPI_MODE0, SPI_MODE1, SPI_MODE2 or SPI_MODE3 + defined in SPI.h. Do NOT attempt to pass '0' for + SPI_MODE0 and so forth...the values are NOT the same! + Use ONLY the defines! (Pity it's not an enum.) + @note Another anachronistically-named function; this is called even + when the display connection is parallel (not SPI). Also, this + could probably be made private...quite a few class functions + were generously put in the public section. +*/ +void Adafruit_SPITFT::initSPI(uint32_t freq, uint8_t spiMode) { + + if (!freq) + freq = DEFAULT_SPI_FREQ; // If no freq specified, use default + + // Init basic control pins common to all connection types + if (_cs >= 0) { + pinMode(_cs, OUTPUT); + digitalWrite(_cs, HIGH); // Deselect + } + pinMode(_dc, OUTPUT); + digitalWrite(_dc, HIGH); // Data mode + + if (connection == TFT_HARD_SPI) { + +#if defined(SPI_HAS_TRANSACTION) + hwspi.settings = SPISettings(freq, MSBFIRST, spiMode); +#else + hwspi._freq = freq; // Save freq value for later +#endif + hwspi._mode = spiMode; // Save spiMode value for later + // Call hwspi._spi->begin() ONLY if this is among the 'established' + // SPI interfaces in variant.h. For DIY roll-your-own SERCOM SPIs, + // begin() and pinPeripheral() calls MUST be made in one's calling + // code, BEFORE the screen-specific begin/init function is called. + // Reason for this is that SPI::begin() makes its own calls to + // pinPeripheral() based on g_APinDescription[n].ulPinType, which + // on non-established SPI interface pins will always be PIO_DIGITAL + // or similar, while we need PIO_SERCOM or PIO_SERCOM_ALT...it's + // highly unique between devices and variants for each pin or + // SERCOM so we can't make those calls ourselves here. And the SPI + // device needs to be set up before calling this because it's + // immediately followed with initialization commands. Blargh. + if ( +#if !defined(SPI_INTERFACES_COUNT) + 1 +#else +#if SPI_INTERFACES_COUNT > 0 + (hwspi._spi == &SPI) +#endif +#if SPI_INTERFACES_COUNT > 1 + || (hwspi._spi == &SPI1) +#endif +#if SPI_INTERFACES_COUNT > 2 + || (hwspi._spi == &SPI2) +#endif +#if SPI_INTERFACES_COUNT > 3 + || (hwspi._spi == &SPI3) +#endif +#if SPI_INTERFACES_COUNT > 4 + || (hwspi._spi == &SPI4) +#endif +#if SPI_INTERFACES_COUNT > 5 + || (hwspi._spi == &SPI5) +#endif +#endif // end SPI_INTERFACES_COUNT + ) { + hwspi._spi->begin(); + } + } else if (connection == TFT_SOFT_SPI) { + + pinMode(swspi._mosi, OUTPUT); + digitalWrite(swspi._mosi, LOW); + pinMode(swspi._sck, OUTPUT); + digitalWrite(swspi._sck, LOW); + if (swspi._miso >= 0) { + pinMode(swspi._miso, INPUT); + } + + } else { // TFT_PARALLEL + // Initialize data pins. We were only passed d0, so scan + // the pin description list looking for the other pins. + // They'll be on the same PORT, and within the next 7 (or 15) bits + // (because we need to write to a contiguous PORT byte or word). +#if defined(__AVR__) + // PORT registers are 8 bits wide, so just need a register match... + for (uint8_t i = 0; i < NUM_DIGITAL_PINS; i++) { + if ((PORTreg_t)portOutputRegister(digitalPinToPort(i)) == + tft8.writePort) { + pinMode(i, OUTPUT); + digitalWrite(i, LOW); + } + } +#elif defined(USE_FAST_PINIO) +#if defined(CORE_TEENSY) + if (!tft8.wide) { + *tft8.dirSet = 0xFF; // Set port to output + *tft8.writePort = 0x00; // Write all 0s + } else { + *(volatile uint16_t *)tft8.dirSet = 0xFFFF; + *(volatile uint16_t *)tft8.writePort = 0x0000; + } +#else // !CORE_TEENSY + uint8_t portNum = g_APinDescription[tft8._d0].ulPort, // d0 PORT # + dBit = g_APinDescription[tft8._d0].ulPin, // d0 bit in PORT + lastBit = dBit + (tft8.wide ? 15 : 7); + for (uint8_t i = 0; i < PINS_COUNT; i++) { + if ((g_APinDescription[i].ulPort == portNum) && + (g_APinDescription[i].ulPin >= dBit) && + (g_APinDescription[i].ulPin <= (uint32_t)lastBit)) { + pinMode(i, OUTPUT); + digitalWrite(i, LOW); + } + } +#endif // end !CORE_TEENSY +#endif + pinMode(tft8._wr, OUTPUT); + digitalWrite(tft8._wr, HIGH); + if (tft8._rd >= 0) { + pinMode(tft8._rd, OUTPUT); + digitalWrite(tft8._rd, HIGH); + } + } + + if (_rst >= 0) { + // Toggle _rst low to reset + pinMode(_rst, OUTPUT); + digitalWrite(_rst, HIGH); + delay(100); + digitalWrite(_rst, LOW); + delay(100); + digitalWrite(_rst, HIGH); + delay(200); + } + +#if defined(USE_SPI_DMA) && (defined(__SAMD51__) || defined(ARDUINO_SAMD_ZERO)) + if (((connection == TFT_HARD_SPI) || (connection == TFT_PARALLEL)) && + (dma.allocate() == DMA_STATUS_OK)) { // Allocate channel + // The DMA library needs to alloc at least one valid descriptor, + // so we do that here. It's not used in the usual sense though, + // just before a transfer we copy descriptor[0] to this address. + if (dptr = dma.addDescriptor(NULL, NULL, 42, DMA_BEAT_SIZE_BYTE, false, + false)) { + // Alloc 2 scanlines worth of pixels on display's major axis, + // whichever that is, rounding each up to 2-pixel boundary. + int major = (WIDTH > HEIGHT) ? WIDTH : HEIGHT; + major += (major & 1); // -> next 2-pixel bound, if needed. + maxFillLen = major * 2; // 2 scanlines + // Note to future self: if you decide to make the pixel buffer + // much larger, remember that DMA transfer descriptors can't + // exceed 65,535 bytes (not 65,536), meaning 32,767 pixels max. + // Not that we have that kind of RAM to throw around right now. + if ((pixelBuf[0] = (uint16_t *)malloc(maxFillLen * sizeof(uint16_t)))) { + // Alloc OK. Get pointer to start of second scanline. + pixelBuf[1] = &pixelBuf[0][major]; + // Determine number of DMA descriptors needed to cover + // entire screen when entire 2-line pixelBuf is used + // (round up for fractional last descriptor). + int numDescriptors = (WIDTH * HEIGHT + (maxFillLen - 1)) / maxFillLen; + // DMA descriptors MUST be 128-bit (16 byte) aligned. + // memalign() is considered obsolete but it's replacements + // (aligned_alloc() or posix_memalign()) are not currently + // available in the version of ARM GCC in use, but this + // is, so here we are. + if ((descriptor = (DmacDescriptor *)memalign( + 16, numDescriptors * sizeof(DmacDescriptor)))) { + int dmac_id; + volatile uint32_t *data_reg; + + if (connection == TFT_HARD_SPI) { + // THIS IS AN AFFRONT TO NATURE, but I don't know + // any "clean" way to get the sercom number from the + // the SPIClass pointer (e.g. &SPI or &SPI1), which + // is all we have to work with. SPIClass does contain + // a SERCOM pointer but it is a PRIVATE member! + // Doing an UNSPEAKABLY HORRIBLE THING here, directly + // accessing the first 32-bit value in the SPIClass + // structure, knowing that's (currently) where the + // SERCOM pointer lives, but this ENTIRELY DEPENDS on + // that structure not changing nor the compiler + // rearranging things. Oh the humanity! + + if (*(SERCOM **)hwspi._spi == &sercom0) { + dmac_id = SERCOM0_DMAC_ID_TX; + data_reg = &SERCOM0->SPI.DATA.reg; +#if defined SERCOM1 + } else if (*(SERCOM **)hwspi._spi == &sercom1) { + dmac_id = SERCOM1_DMAC_ID_TX; + data_reg = &SERCOM1->SPI.DATA.reg; +#endif +#if defined SERCOM2 + } else if (*(SERCOM **)hwspi._spi == &sercom2) { + dmac_id = SERCOM2_DMAC_ID_TX; + data_reg = &SERCOM2->SPI.DATA.reg; +#endif +#if defined SERCOM3 + } else if (*(SERCOM **)hwspi._spi == &sercom3) { + dmac_id = SERCOM3_DMAC_ID_TX; + data_reg = &SERCOM3->SPI.DATA.reg; +#endif +#if defined SERCOM4 + } else if (*(SERCOM **)hwspi._spi == &sercom4) { + dmac_id = SERCOM4_DMAC_ID_TX; + data_reg = &SERCOM4->SPI.DATA.reg; +#endif +#if defined SERCOM5 + } else if (*(SERCOM **)hwspi._spi == &sercom5) { + dmac_id = SERCOM5_DMAC_ID_TX; + data_reg = &SERCOM5->SPI.DATA.reg; +#endif +#if defined SERCOM6 + } else if (*(SERCOM **)hwspi._spi == &sercom6) { + dmac_id = SERCOM6_DMAC_ID_TX; + data_reg = &SERCOM6->SPI.DATA.reg; +#endif +#if defined SERCOM7 + } else if (*(SERCOM **)hwspi._spi == &sercom7) { + dmac_id = SERCOM7_DMAC_ID_TX; + data_reg = &SERCOM7->SPI.DATA.reg; +#endif + } + dma.setPriority(DMA_PRIORITY_3); + dma.setTrigger(dmac_id); + dma.setAction(DMA_TRIGGER_ACTON_BEAT); + + // Initialize descriptor list. + for (int d = 0; d < numDescriptors; d++) { + // No need to set SRCADDR, DESCADDR or BTCNT -- + // those are done in the pixel-writing functions. + descriptor[d].BTCTRL.bit.VALID = true; + descriptor[d].BTCTRL.bit.EVOSEL = DMA_EVENT_OUTPUT_DISABLE; + descriptor[d].BTCTRL.bit.BLOCKACT = DMA_BLOCK_ACTION_NOACT; + descriptor[d].BTCTRL.bit.BEATSIZE = DMA_BEAT_SIZE_BYTE; + descriptor[d].BTCTRL.bit.DSTINC = 0; + descriptor[d].BTCTRL.bit.STEPSEL = DMA_STEPSEL_SRC; + descriptor[d].BTCTRL.bit.STEPSIZE = + DMA_ADDRESS_INCREMENT_STEP_SIZE_1; + descriptor[d].DSTADDR.reg = (uint32_t)data_reg; + } + + } else { // Parallel connection + +#if defined(__SAMD51__) + int dmaChannel = dma.getChannel(); + // Enable event output, use EVOSEL output + DMAC->Channel[dmaChannel].CHEVCTRL.bit.EVOE = 1; + DMAC->Channel[dmaChannel].CHEVCTRL.bit.EVOMODE = 0; + + // CONFIGURE TIMER/COUNTER (for write strobe) + + Tc *timer = tcList[tcNum].tc; // -> Timer struct + int id = tcList[tcNum].gclk; // Timer GCLK ID + GCLK_PCHCTRL_Type pchctrl; + + // Set up timer clock source from GCLK + GCLK->PCHCTRL[id].bit.CHEN = 0; // Stop timer + while (GCLK->PCHCTRL[id].bit.CHEN) + ; // Wait for it + pchctrl.bit.GEN = GCLK_PCHCTRL_GEN_GCLK0_Val; + pchctrl.bit.CHEN = 1; // Enable + GCLK->PCHCTRL[id].reg = pchctrl.reg; + while (!GCLK->PCHCTRL[id].bit.CHEN) + ; // Wait for it + + // Disable timer/counter before configuring it + timer->COUNT8.CTRLA.bit.ENABLE = 0; + while (timer->COUNT8.SYNCBUSY.bit.STATUS) + ; + + timer->COUNT8.WAVE.bit.WAVEGEN = 2; // NPWM + timer->COUNT8.CTRLA.bit.MODE = 1; // 8-bit + timer->COUNT8.CTRLA.bit.PRESCALER = 0; // 1:1 + while (timer->COUNT8.SYNCBUSY.bit.STATUS) + ; + + timer->COUNT8.CTRLBCLR.bit.DIR = 1; // Count UP + while (timer->COUNT8.SYNCBUSY.bit.CTRLB) + ; + timer->COUNT8.CTRLBSET.bit.ONESHOT = 1; // One-shot + while (timer->COUNT8.SYNCBUSY.bit.CTRLB) + ; + timer->COUNT8.PER.reg = 6; // PWM top + while (timer->COUNT8.SYNCBUSY.bit.PER) + ; + timer->COUNT8.CC[0].reg = 2; // Compare + while (timer->COUNT8.SYNCBUSY.bit.CC0) + ; + // Enable async input events, + // event action = restart. + timer->COUNT8.EVCTRL.bit.TCEI = 1; + timer->COUNT8.EVCTRL.bit.EVACT = 1; + + // Enable timer + timer->COUNT8.CTRLA.reg |= TC_CTRLA_ENABLE; + while (timer->COUNT8.SYNCBUSY.bit.STATUS) + ; + +#if (wrPeripheral == PIO_CCL) + // CONFIGURE CCL (inverts timer/counter output) + + MCLK->APBCMASK.bit.CCL_ = 1; // Enable CCL clock + CCL->CTRL.bit.ENABLE = 0; // Disable to config + CCL->CTRL.bit.SWRST = 1; // Reset CCL registers + CCL->LUTCTRL[tcNum].bit.ENABLE = 0; // Disable LUT + CCL->LUTCTRL[tcNum].bit.FILTSEL = 0; // No filter + CCL->LUTCTRL[tcNum].bit.INSEL0 = 6; // TC input + CCL->LUTCTRL[tcNum].bit.INSEL1 = 0; // MASK + CCL->LUTCTRL[tcNum].bit.INSEL2 = 0; // MASK + CCL->LUTCTRL[tcNum].bit.TRUTH = 1; // Invert in 0 + CCL->LUTCTRL[tcNum].bit.ENABLE = 1; // Enable LUT + CCL->CTRL.bit.ENABLE = 1; // Enable CCL +#endif + + // CONFIGURE EVENT SYSTEM + + // Set up event system clock source from GCLK... + // Disable EVSYS, wait for disable + GCLK->PCHCTRL[EVSYS_GCLK_ID_0].bit.CHEN = 0; + while (GCLK->PCHCTRL[EVSYS_GCLK_ID_0].bit.CHEN) + ; + pchctrl.bit.GEN = GCLK_PCHCTRL_GEN_GCLK0_Val; + pchctrl.bit.CHEN = 1; // Re-enable + GCLK->PCHCTRL[EVSYS_GCLK_ID_0].reg = pchctrl.reg; + // Wait for it, then enable EVSYS clock + while (!GCLK->PCHCTRL[EVSYS_GCLK_ID_0].bit.CHEN) + ; + MCLK->APBBMASK.bit.EVSYS_ = 1; + + // Connect Timer EVU to ch 0 + EVSYS->USER[tcList[tcNum].evu].reg = 1; + // Datasheet recommends single write operation; + // reg instead of bit. Also datasheet: PATH bits + // must be zero when using async! + EVSYS_CHANNEL_Type ev; + ev.reg = 0; + ev.bit.PATH = 2; // Asynchronous + ev.bit.EVGEN = 0x22 + dmaChannel; // DMA channel 0+ + EVSYS->Channel[0].CHANNEL.reg = ev.reg; + + // Initialize descriptor list. + for (int d = 0; d < numDescriptors; d++) { + // No need to set SRCADDR, DESCADDR or BTCNT -- + // those are done in the pixel-writing functions. + descriptor[d].BTCTRL.bit.VALID = true; + // Event strobe on beat xfer: + descriptor[d].BTCTRL.bit.EVOSEL = 0x3; + descriptor[d].BTCTRL.bit.BLOCKACT = DMA_BLOCK_ACTION_NOACT; + descriptor[d].BTCTRL.bit.BEATSIZE = + tft8.wide ? DMA_BEAT_SIZE_HWORD : DMA_BEAT_SIZE_BYTE; + descriptor[d].BTCTRL.bit.SRCINC = 1; + descriptor[d].BTCTRL.bit.DSTINC = 0; + descriptor[d].BTCTRL.bit.STEPSEL = DMA_STEPSEL_SRC; + descriptor[d].BTCTRL.bit.STEPSIZE = + DMA_ADDRESS_INCREMENT_STEP_SIZE_1; + descriptor[d].DSTADDR.reg = (uint32_t)tft8.writePort; + } +#endif // __SAMD51 + } // end parallel-specific DMA setup + + lastFillColor = 0x0000; + lastFillLen = 0; + dma.setCallback(dma_callback); + return; // Success! + // else clean up any partial allocation... + } // end descriptor memalign() + free(pixelBuf[0]); + pixelBuf[0] = pixelBuf[1] = NULL; + } // end pixelBuf malloc() + // Don't currently have a descriptor delete function in + // ZeroDMA lib, but if we did, it would be called here. + } // end addDescriptor() + dma.free(); // Deallocate DMA channel + } +#endif // end USE_SPI_DMA +} + +/*! + @brief Allow changing the SPI clock speed after initialization + @param freq Desired frequency of SPI clock, may not be the + end frequency you get based on what the chip can do! +*/ +void Adafruit_SPITFT::setSPISpeed(uint32_t freq) { +#if defined(SPI_HAS_TRANSACTION) + hwspi.settings = SPISettings(freq, MSBFIRST, hwspi._mode); +#else + hwspi._freq = freq; // Save freq value for later +#endif +} + +/*! + @brief Call before issuing command(s) or data to display. Performs + chip-select (if required) and starts an SPI transaction (if + using hardware SPI and transactions are supported). Required + for all display types; not an SPI-specific function. +*/ +void Adafruit_SPITFT::startWrite(void) { + SPI_BEGIN_TRANSACTION(); + if (_cs >= 0) + SPI_CS_LOW(); +} + +/*! + @brief Call after issuing command(s) or data to display. Performs + chip-deselect (if required) and ends an SPI transaction (if + using hardware SPI and transactions are supported). Required + for all display types; not an SPI-specific function. +*/ +void Adafruit_SPITFT::endWrite(void) { + if (_cs >= 0) + SPI_CS_HIGH(); + SPI_END_TRANSACTION(); +} + +// ------------------------------------------------------------------------- +// Lower-level graphics operations. These functions require a chip-select +// and/or SPI transaction around them (via startWrite(), endWrite() above). +// Higher-level graphics primitives might start a single transaction and +// then make multiple calls to these functions (e.g. circle or text +// rendering might make repeated lines or rects) before ending the +// transaction. It's more efficient than starting a transaction every time. + +/*! + @brief Draw a single pixel to the display at requested coordinates. + Not self-contained; should follow a startWrite() call. + @param x Horizontal position (0 = left). + @param y Vertical position (0 = top). + @param color 16-bit pixel color in '565' RGB format. +*/ +void Adafruit_SPITFT::writePixel(int16_t x, int16_t y, uint16_t color) { + if ((x >= 0) && (x < _width) && (y >= 0) && (y < _height)) { + setAddrWindow(x, y, 1, 1); + SPI_WRITE16(color); + } +} + +/*! + @brief Swap bytes in an array of pixels; converts little-to-big or + big-to-little endian. Used by writePixels() below in some + situations, but may also be helpful for user code occasionally. + @param src Source address of 16-bit pixels buffer. + @param len Number of pixels to byte-swap. + @param dest Optional destination address if different than src -- + otherwise, if NULL (default) or same address is passed, + pixel buffer is overwritten in-place. +*/ +void Adafruit_SPITFT::swapBytes(uint16_t *src, uint32_t len, uint16_t *dest) { + if (!dest) + dest = src; // NULL -> overwrite src buffer + for (uint32_t i = 0; i < len; i++) { + dest[i] = __builtin_bswap16(src[i]); + } +} + +/*! + @brief Issue a series of pixels from memory to the display. Not self- + contained; should follow startWrite() and setAddrWindow() calls. + @param colors Pointer to array of 16-bit pixel values in '565' RGB + format. + @param len Number of elements in 'colors' array. + @param block If true (default case if unspecified), function blocks + until DMA transfer is complete. This is simply IGNORED + if DMA is not enabled. If false, the function returns + immediately after the last DMA transfer is started, + and one should use the dmaWait() function before + doing ANY other display-related activities (or even + any SPI-related activities, if using an SPI display + that shares the bus with other devices). + @param bigEndian If true, bitmap in memory is in big-endian order (most + significant byte first). By default this is false, as + most microcontrollers seem to be little-endian and + 16-bit pixel values must be byte-swapped before + issuing to the display (which tend toward big-endian + when using SPI or 8-bit parallel). If an application + can optimize around this -- for example, a bitmap in a + uint16_t array having the byte values already ordered + big-endian, this can save time here, ESPECIALLY if + using this function's non-blocking DMA mode. +*/ +void Adafruit_SPITFT::writePixels(uint16_t *colors, uint32_t len, bool block, + bool bigEndian) { + + if (!len) + return; // Avoid 0-byte transfers + + // avoid paramater-not-used complaints + (void)block; + (void)bigEndian; + +#if defined(ESP32) + if (connection == TFT_HARD_SPI) { + if (!bigEndian) { + hwspi._spi->writePixels(colors, len * 2); // Inbuilt endian-swap + } else { + hwspi._spi->writeBytes((uint8_t *)colors, len * 2); // Issue bytes direct + } + return; + } +#elif defined(ARDUINO_NRF52_ADAFRUIT) && \ + defined(NRF52840_XXAA) // Adafruit nRF52 use SPIM3 DMA at 32Mhz + if (!bigEndian) { + swapBytes(colors, len); // convert little-to-big endian for display + } + hwspi._spi->transfer(colors, NULL, 2 * len); // NULL RX to avoid overwrite + if (!bigEndian) { + swapBytes(colors, len); // big-to-little endian to restore pixel buffer + } + + return; +#elif defined(ARDUINO_ARCH_RP2040) + spi_inst_t *pi_spi = hwspi._spi == &SPI ? __SPI0_DEVICE : __SPI1_DEVICE; + + if (!bigEndian) { + // switch to 16-bit writes + hw_write_masked(&spi_get_hw(pi_spi)->cr0, 15 << SPI_SSPCR0_DSS_LSB, + SPI_SSPCR0_DSS_BITS); + spi_write16_blocking(pi_spi, colors, len); + // switch back to 8-bit + hw_write_masked(&spi_get_hw(pi_spi)->cr0, 7 << SPI_SSPCR0_DSS_LSB, + SPI_SSPCR0_DSS_BITS); + } else { + spi_write_blocking(pi_spi, (uint8_t *)colors, len * 2); + } + return; +#elif defined(ARDUINO_ARCH_RTTHREAD) + if (!bigEndian) { + swapBytes(colors, len); // convert little-to-big endian for display + } + hwspi._spi->transfer(colors, 2 * len); + if (!bigEndian) { + swapBytes(colors, len); // big-to-little endian to restore pixel buffer + } + return; +#elif defined(USE_SPI_DMA) && \ + (defined(__SAMD51__) || defined(ARDUINO_SAMD_ZERO)) + if ((connection == TFT_HARD_SPI) || (connection == TFT_PARALLEL)) { + int maxSpan = maxFillLen / 2; // One scanline max + uint8_t pixelBufIdx = 0; // Active pixel buffer number +#if defined(__SAMD51__) + if (connection == TFT_PARALLEL) { + // Switch WR pin to PWM or CCL + pinPeripheral(tft8._wr, wrPeripheral); + } +#endif // end __SAMD51__ + if (!bigEndian) { // Normal little-endian situation... + while (len) { + int count = (len < maxSpan) ? len : maxSpan; + + // Because TFT and SAMD endianisms are different, must swap + // bytes from the 'colors' array passed into a DMA working + // buffer. This can take place while the prior DMA transfer + // is in progress, hence the need for two pixelBufs. + swapBytes(colors, count, pixelBuf[pixelBufIdx]); + colors += count; + + // The transfers themselves are relatively small, so we don't + // need a long descriptor list. We just alternate between the + // first two, sharing pixelBufIdx for that purpose. + descriptor[pixelBufIdx].SRCADDR.reg = + (uint32_t)pixelBuf[pixelBufIdx] + count * 2; + descriptor[pixelBufIdx].BTCTRL.bit.SRCINC = 1; + descriptor[pixelBufIdx].BTCNT.reg = count * 2; + descriptor[pixelBufIdx].DESCADDR.reg = 0; + + while (dma_busy) + ; // Wait for prior line to finish + + // Move new descriptor into place... + memcpy(dptr, &descriptor[pixelBufIdx], sizeof(DmacDescriptor)); + dma_busy = true; + dma.startJob(); // Trigger SPI DMA transfer + if (connection == TFT_PARALLEL) + dma.trigger(); + pixelBufIdx = 1 - pixelBufIdx; // Swap DMA pixel buffers + + len -= count; + } + } else { // bigEndian == true + // With big-endian pixel data, this can be handled as a single + // DMA transfer using chained descriptors. Even full screen, this + // needs only a relatively short descriptor list, each + // transferring a max of 32,767 (not 32,768) pixels. The list + // was allocated large enough to accommodate a full screen's + // worth of data, so this won't run past the end of the list. + int d, numDescriptors = (len + 32766) / 32767; + for (d = 0; d < numDescriptors; d++) { + int count = (len < 32767) ? len : 32767; + descriptor[d].SRCADDR.reg = (uint32_t)colors + count * 2; + descriptor[d].BTCTRL.bit.SRCINC = 1; + descriptor[d].BTCNT.reg = count * 2; + descriptor[d].DESCADDR.reg = (uint32_t)&descriptor[d + 1]; + len -= count; + colors += count; + } + descriptor[d - 1].DESCADDR.reg = 0; + + while (dma_busy) + ; // Wait for prior transfer (if any) to finish + + // Move first descriptor into place and start transfer... + memcpy(dptr, &descriptor[0], sizeof(DmacDescriptor)); + dma_busy = true; + dma.startJob(); // Trigger SPI DMA transfer + if (connection == TFT_PARALLEL) + dma.trigger(); + } // end bigEndian + + lastFillColor = 0x0000; // pixelBuf has been sullied + lastFillLen = 0; + if (block) { + while (dma_busy) + ; // Wait for last line to complete +#if defined(__SAMD51__) || defined(ARDUINO_SAMD_ZERO) + if (connection == TFT_HARD_SPI) { + // See SAMD51/21 note in writeColor() + hwspi._spi->setDataMode(hwspi._mode); + } else { + pinPeripheral(tft8._wr, PIO_OUTPUT); // Switch WR back to GPIO + } +#endif // end __SAMD51__ || ARDUINO_SAMD_ZERO + } + return; + } +#endif // end USE_SPI_DMA + + // All other cases (bitbang SPI or non-DMA hard SPI or parallel), + // use a loop with the normal 16-bit data write function: + + if (!bigEndian) { + while (len--) { + SPI_WRITE16(*colors++); + } + } else { + // Well this is awkward. SPI_WRITE16() was designed for little-endian + // hosts and big-endian displays as that's nearly always the typical + // case. If the bigEndian flag was set, data is already in display's + // order...so each pixel needs byte-swapping before being issued. + // Rather than having a separate big-endian SPI_WRITE16 (adding more + // bloat), it's preferred if calling function is smart and only uses + // bigEndian where DMA is supported. But we gotta handle this... + while (len--) { + SPI_WRITE16(__builtin_bswap16(*colors++)); + } + } +} + +/*! + @brief Wait for the last DMA transfer in a prior non-blocking + writePixels() call to complete. This does nothing if DMA + is not enabled, and is not needed if blocking writePixels() + was used (as is the default case). +*/ +void Adafruit_SPITFT::dmaWait(void) { +#if defined(USE_SPI_DMA) && (defined(__SAMD51__) || defined(ARDUINO_SAMD_ZERO)) + while (dma_busy) + ; +#if defined(__SAMD51__) || defined(ARDUINO_SAMD_ZERO) + if (connection == TFT_HARD_SPI) { + // See SAMD51/21 note in writeColor() + hwspi._spi->setDataMode(hwspi._mode); + } else { + pinPeripheral(tft8._wr, PIO_OUTPUT); // Switch WR back to GPIO + } +#endif // end __SAMD51__ || ARDUINO_SAMD_ZERO +#endif +} + +/*! + @brief Check if DMA transfer is active. Always returts false if DMA + is not enabled. + @return true if DMA is enabled and transmitting data, false otherwise. +*/ +bool Adafruit_SPITFT::dmaBusy(void) const { +#if defined(USE_SPI_DMA) && (defined(__SAMD51__) || defined(ARDUINO_SAMD_ZERO)) + return dma_busy; +#else + return false; +#endif +} + +/*! + @brief Issue a series of pixels, all the same color. Not self- + contained; should follow startWrite() and setAddrWindow() calls. + @param color 16-bit pixel color in '565' RGB format. + @param len Number of pixels to draw. +*/ +void Adafruit_SPITFT::writeColor(uint16_t color, uint32_t len) { + + if (!len) + return; // Avoid 0-byte transfers + + uint8_t hi = color >> 8, lo = color; + +#if defined(ESP32) // ESP32 has a special SPI pixel-writing function... + if (connection == TFT_HARD_SPI) { +#define SPI_MAX_PIXELS_AT_ONCE 32 +#define TMPBUF_LONGWORDS (SPI_MAX_PIXELS_AT_ONCE + 1) / 2 +#define TMPBUF_PIXELS (TMPBUF_LONGWORDS * 2) + static uint32_t temp[TMPBUF_LONGWORDS]; + uint32_t c32 = color * 0x00010001; + uint16_t bufLen = (len < TMPBUF_PIXELS) ? len : TMPBUF_PIXELS, xferLen, + fillLen; + // Fill temp buffer 32 bits at a time + fillLen = (bufLen + 1) / 2; // Round up to next 32-bit boundary + for (uint32_t t = 0; t < fillLen; t++) { + temp[t] = c32; + } + // Issue pixels in blocks from temp buffer + while (len) { // While pixels remain + xferLen = (bufLen < len) ? bufLen : len; // How many this pass? + writePixels((uint16_t *)temp, xferLen); + len -= xferLen; + } + return; + } +#elif defined(ARDUINO_NRF52_ADAFRUIT) && \ + defined(NRF52840_XXAA) // Adafruit nRF52840 use SPIM3 DMA at 32Mhz + // at most 2 scan lines + uint32_t const pixbufcount = min(len, ((uint32_t)2 * width())); + uint16_t *pixbuf = (uint16_t *)rtos_malloc(2 * pixbufcount); + + // use SPI3 DMA if we could allocate buffer, else fall back to writing each + // pixel loop below + if (pixbuf) { + uint16_t const swap_color = __builtin_bswap16(color); + + // fill buffer with color + for (uint32_t i = 0; i < pixbufcount; i++) { + pixbuf[i] = swap_color; + } + + while (len) { + uint32_t const count = min(len, pixbufcount); + writePixels(pixbuf, count, true, true); + len -= count; + } + + rtos_free(pixbuf); + return; + } +#elif defined(ARDUINO_ARCH_RTTHREAD) + uint16_t pixbufcount; + uint16_t *pixbuf; + int16_t lines = height() / 4; +#define QUICKPATH_MAX_LEN 16 + uint16_t quickpath_buffer[QUICKPATH_MAX_LEN]; + + do { + pixbufcount = min(len, (lines * width())); + if (pixbufcount > QUICKPATH_MAX_LEN) { + pixbuf = (uint16_t *)rt_malloc(2 * pixbufcount); + } else { + pixbuf = quickpath_buffer; + } + lines -= 2; + } while (!pixbuf && lines > 0); + + if (pixbuf) { + uint16_t const swap_color = __builtin_bswap16(color); + + while (len) { + uint16_t count = min(len, pixbufcount); + // fill buffer with color + for (uint16_t i = 0; i < count; i++) { + pixbuf[i] = swap_color; + } + // Don't need to swap color inside the function + // It has been done outside this function + writePixels(pixbuf, count, true, true); + len -= count; + } + if (pixbufcount > QUICKPATH_MAX_LEN) { + rt_free(pixbuf); + } +#undef QUICKPATH_MAX_LEN + return; + } +#else // !ESP32 +#if defined(USE_SPI_DMA) && (defined(__SAMD51__) || defined(ARDUINO_SAMD_ZERO)) + if (((connection == TFT_HARD_SPI) || (connection == TFT_PARALLEL)) && + (len >= 16)) { // Don't bother with DMA on short pixel runs + int i, d, numDescriptors; + if (hi == lo) { // If high & low bytes are same... + onePixelBuf = color; + // Can do this with a relatively short descriptor list, + // each transferring a max of 32,767 (not 32,768) pixels. + // This won't run off the end of the allocated descriptor list, + // since we're using much larger chunks per descriptor here. + numDescriptors = (len + 32766) / 32767; + for (d = 0; d < numDescriptors; d++) { + int count = (len < 32767) ? len : 32767; + descriptor[d].SRCADDR.reg = (uint32_t)&onePixelBuf; + descriptor[d].BTCTRL.bit.SRCINC = 0; + descriptor[d].BTCNT.reg = count * 2; + descriptor[d].DESCADDR.reg = (uint32_t)&descriptor[d + 1]; + len -= count; + } + descriptor[d - 1].DESCADDR.reg = 0; + } else { + // If high and low bytes are distinct, it's necessary to fill + // a buffer with pixel data (swapping high and low bytes because + // TFT and SAMD are different endianisms) and create a longer + // descriptor list pointing repeatedly to this data. We can do + // this slightly faster working 2 pixels (32 bits) at a time. + uint32_t *pixelPtr = (uint32_t *)pixelBuf[0], + twoPixels = __builtin_bswap16(color) * 0x00010001; + // We can avoid some or all of the buffer-filling if the color + // is the same as last time... + if (color == lastFillColor) { + // If length is longer than prior instance, fill only the + // additional pixels in the buffer and update lastFillLen. + if (len > lastFillLen) { + int fillStart = lastFillLen / 2, + fillEnd = (((len < maxFillLen) ? len : maxFillLen) + 1) / 2; + for (i = fillStart; i < fillEnd; i++) + pixelPtr[i] = twoPixels; + lastFillLen = fillEnd * 2; + } // else do nothing, don't set pixels or change lastFillLen + } else { + int fillEnd = (((len < maxFillLen) ? len : maxFillLen) + 1) / 2; + for (i = 0; i < fillEnd; i++) + pixelPtr[i] = twoPixels; + lastFillLen = fillEnd * 2; + lastFillColor = color; + } + + numDescriptors = (len + maxFillLen - 1) / maxFillLen; + for (d = 0; d < numDescriptors; d++) { + int pixels = (len < maxFillLen) ? len : maxFillLen, bytes = pixels * 2; + descriptor[d].SRCADDR.reg = (uint32_t)pixelPtr + bytes; + descriptor[d].BTCTRL.bit.SRCINC = 1; + descriptor[d].BTCNT.reg = bytes; + descriptor[d].DESCADDR.reg = (uint32_t)&descriptor[d + 1]; + len -= pixels; + } + descriptor[d - 1].DESCADDR.reg = 0; + } + memcpy(dptr, &descriptor[0], sizeof(DmacDescriptor)); +#if defined(__SAMD51__) + if (connection == TFT_PARALLEL) { + // Switch WR pin to PWM or CCL + pinPeripheral(tft8._wr, wrPeripheral); + } +#endif // end __SAMD51__ + + dma_busy = true; + dma.startJob(); + if (connection == TFT_PARALLEL) + dma.trigger(); + while (dma_busy) + ; // Wait for completion + // Unfortunately blocking is necessary. An earlier version returned + // immediately and checked dma_busy on startWrite() instead, but it + // turns out to be MUCH slower on many graphics operations (as when + // drawing lines, pixel-by-pixel), perhaps because it's a volatile + // type and doesn't cache. Working on this. +#if defined(__SAMD51__) || defined(ARDUINO_SAMD_ZERO) + if (connection == TFT_HARD_SPI) { + // SAMD51: SPI DMA seems to leave the SPI peripheral in a freaky + // state on completion. Workaround is to explicitly set it back... + // (5/17/2019: apparently SAMD21 too, in certain cases, observed + // with ST7789 display.) + hwspi._spi->setDataMode(hwspi._mode); + } else { + pinPeripheral(tft8._wr, PIO_OUTPUT); // Switch WR back to GPIO + } +#endif // end __SAMD51__ + return; + } +#endif // end USE_SPI_DMA +#endif // end !ESP32 + + // All other cases (non-DMA hard SPI, bitbang SPI, parallel)... + + if (connection == TFT_HARD_SPI) { +#if defined(ESP8266) + do { + uint32_t pixelsThisPass = len; + if (pixelsThisPass > 50000) + pixelsThisPass = 50000; + len -= pixelsThisPass; + delay(1); // Periodic delay on long fills + while (pixelsThisPass--) { + hwspi._spi->write(hi); + hwspi._spi->write(lo); + } + } while (len); +#elif defined(ARDUINO_ARCH_RP2040) + spi_inst_t *pi_spi = hwspi._spi == &SPI ? __SPI0_DEVICE : __SPI1_DEVICE; + color = __builtin_bswap16(color); + + while (len--) + spi_write_blocking(pi_spi, (uint8_t *)&color, 2); +#else // !ESP8266 && !ARDUINO_ARCH_RP2040 + while (len--) { +#if defined(__AVR__) + AVR_WRITESPI(hi); + AVR_WRITESPI(lo); +#elif defined(ESP32) + hwspi._spi->write(hi); + hwspi._spi->write(lo); +#else + hwspi._spi->transfer(hi); + hwspi._spi->transfer(lo); +#endif + } +#endif // end !ESP8266 + } else if (connection == TFT_SOFT_SPI) { +#if defined(ESP8266) + do { + uint32_t pixelsThisPass = len; + if (pixelsThisPass > 20000) + pixelsThisPass = 20000; + len -= pixelsThisPass; + yield(); // Periodic yield() on long fills + while (pixelsThisPass--) { + for (uint16_t bit = 0, x = color; bit < 16; bit++) { + if (x & 0x8000) + SPI_MOSI_HIGH(); + else + SPI_MOSI_LOW(); + SPI_SCK_HIGH(); + SPI_SCK_LOW(); + x <<= 1; + } + } + } while (len); +#else // !ESP8266 + while (len--) { +#if defined(__AVR__) + for (uint8_t bit = 0, x = hi; bit < 8; bit++) { + if (x & 0x80) + SPI_MOSI_HIGH(); + else + SPI_MOSI_LOW(); + SPI_SCK_HIGH(); + SPI_SCK_LOW(); + x <<= 1; + } + for (uint8_t bit = 0, x = lo; bit < 8; bit++) { + if (x & 0x80) + SPI_MOSI_HIGH(); + else + SPI_MOSI_LOW(); + SPI_SCK_HIGH(); + SPI_SCK_LOW(); + x <<= 1; + } +#else // !__AVR__ + for (uint16_t bit = 0, x = color; bit < 16; bit++) { + if (x & 0x8000) + SPI_MOSI_HIGH(); + else + SPI_MOSI_LOW(); + SPI_SCK_HIGH(); + x <<= 1; + SPI_SCK_LOW(); + } +#endif // end !__AVR__ + } +#endif // end !ESP8266 + } else { // PARALLEL + if (hi == lo) { +#if defined(__AVR__) + len *= 2; + *tft8.writePort = hi; + while (len--) { + TFT_WR_STROBE(); + } +#elif defined(USE_FAST_PINIO) + if (!tft8.wide) { + len *= 2; + *tft8.writePort = hi; + } else { + *(volatile uint16_t *)tft8.writePort = color; + } + while (len--) { + TFT_WR_STROBE(); + } +#endif + } else { + while (len--) { +#if defined(__AVR__) + *tft8.writePort = hi; + TFT_WR_STROBE(); + *tft8.writePort = lo; +#elif defined(USE_FAST_PINIO) + if (!tft8.wide) { + *tft8.writePort = hi; + TFT_WR_STROBE(); + *tft8.writePort = lo; + } else { + *(volatile uint16_t *)tft8.writePort = color; + } +#endif + TFT_WR_STROBE(); + } + } + } +} + +/*! + @brief Draw a filled rectangle to the display. Not self-contained; + should follow startWrite(). Typically used by higher-level + graphics primitives; user code shouldn't need to call this and + is likely to use the self-contained fillRect() instead. + writeFillRect() performs its own edge clipping and rejection; + see writeFillRectPreclipped() for a more 'raw' implementation. + @param x Horizontal position of first corner. + @param y Vertical position of first corner. + @param w Rectangle width in pixels (positive = right of first + corner, negative = left of first corner). + @param h Rectangle height in pixels (positive = below first + corner, negative = above first corner). + @param color 16-bit fill color in '565' RGB format. + @note Written in this deep-nested way because C by definition will + optimize for the 'if' case, not the 'else' -- avoids branches + and rejects clipped rectangles at the least-work possibility. +*/ +void Adafruit_SPITFT::writeFillRect(int16_t x, int16_t y, int16_t w, int16_t h, + uint16_t color) { + if (w && h) { // Nonzero width and height? + if (w < 0) { // If negative width... + x += w + 1; // Move X to left edge + w = -w; // Use positive width + } + if (x < _width) { // Not off right + if (h < 0) { // If negative height... + y += h + 1; // Move Y to top edge + h = -h; // Use positive height + } + if (y < _height) { // Not off bottom + int16_t x2 = x + w - 1; + if (x2 >= 0) { // Not off left + int16_t y2 = y + h - 1; + if (y2 >= 0) { // Not off top + // Rectangle partly or fully overlaps screen + if (x < 0) { + x = 0; + w = x2 + 1; + } // Clip left + if (y < 0) { + y = 0; + h = y2 + 1; + } // Clip top + if (x2 >= _width) { + w = _width - x; + } // Clip right + if (y2 >= _height) { + h = _height - y; + } // Clip bottom + writeFillRectPreclipped(x, y, w, h, color); + } + } + } + } + } +} + +/*! + @brief Draw a horizontal line on the display. Performs edge clipping + and rejection. Not self-contained; should follow startWrite(). + Typically used by higher-level graphics primitives; user code + shouldn't need to call this and is likely to use the self- + contained drawFastHLine() instead. + @param x Horizontal position of first point. + @param y Vertical position of first point. + @param w Line width in pixels (positive = right of first point, + negative = point of first corner). + @param color 16-bit line color in '565' RGB format. +*/ +void inline Adafruit_SPITFT::writeFastHLine(int16_t x, int16_t y, int16_t w, + uint16_t color) { + if ((y >= 0) && (y < _height) && w) { // Y on screen, nonzero width + if (w < 0) { // If negative width... + x += w + 1; // Move X to left edge + w = -w; // Use positive width + } + if (x < _width) { // Not off right + int16_t x2 = x + w - 1; + if (x2 >= 0) { // Not off left + // Line partly or fully overlaps screen + if (x < 0) { + x = 0; + w = x2 + 1; + } // Clip left + if (x2 >= _width) { + w = _width - x; + } // Clip right + writeFillRectPreclipped(x, y, w, 1, color); + } + } + } +} + +/*! + @brief Draw a vertical line on the display. Performs edge clipping and + rejection. Not self-contained; should follow startWrite(). + Typically used by higher-level graphics primitives; user code + shouldn't need to call this and is likely to use the self- + contained drawFastVLine() instead. + @param x Horizontal position of first point. + @param y Vertical position of first point. + @param h Line height in pixels (positive = below first point, + negative = above first point). + @param color 16-bit line color in '565' RGB format. +*/ +void inline Adafruit_SPITFT::writeFastVLine(int16_t x, int16_t y, int16_t h, + uint16_t color) { + if ((x >= 0) && (x < _width) && h) { // X on screen, nonzero height + if (h < 0) { // If negative height... + y += h + 1; // Move Y to top edge + h = -h; // Use positive height + } + if (y < _height) { // Not off bottom + int16_t y2 = y + h - 1; + if (y2 >= 0) { // Not off top + // Line partly or fully overlaps screen + if (y < 0) { + y = 0; + h = y2 + 1; + } // Clip top + if (y2 >= _height) { + h = _height - y; + } // Clip bottom + writeFillRectPreclipped(x, y, 1, h, color); + } + } + } +} + +/*! + @brief A lower-level version of writeFillRect(). This version requires + all inputs are in-bounds, that width and height are positive, + and no part extends offscreen. NO EDGE CLIPPING OR REJECTION IS + PERFORMED. If higher-level graphics primitives are written to + handle their own clipping earlier in the drawing process, this + can avoid unnecessary function calls and repeated clipping + operations in the lower-level functions. + @param x Horizontal position of first corner. MUST BE WITHIN + SCREEN BOUNDS. + @param y Vertical position of first corner. MUST BE WITHIN SCREEN + BOUNDS. + @param w Rectangle width in pixels. MUST BE POSITIVE AND NOT + EXTEND OFF SCREEN. + @param h Rectangle height in pixels. MUST BE POSITIVE AND NOT + EXTEND OFF SCREEN. + @param color 16-bit fill color in '565' RGB format. + @note This is a new function, no graphics primitives besides rects + and horizontal/vertical lines are written to best use this yet. +*/ +inline void Adafruit_SPITFT::writeFillRectPreclipped(int16_t x, int16_t y, + int16_t w, int16_t h, + uint16_t color) { + setAddrWindow(x, y, w, h); + writeColor(color, (uint32_t)w * h); +} + +// ------------------------------------------------------------------------- +// Ever-so-slightly higher-level graphics operations. Similar to the 'write' +// functions above, but these contain their own chip-select and SPI +// transactions as needed (via startWrite(), endWrite()). They're typically +// used solo -- as graphics primitives in themselves, not invoked by higher- +// level primitives (which should use the functions above for better +// performance). + +/*! + @brief Draw a single pixel to the display at requested coordinates. + Self-contained and provides its own transaction as needed + (see writePixel(x,y,color) for a lower-level variant). + Edge clipping is performed here. + @param x Horizontal position (0 = left). + @param y Vertical position (0 = top). + @param color 16-bit pixel color in '565' RGB format. +*/ +void Adafruit_SPITFT::drawPixel(int16_t x, int16_t y, uint16_t color) { + // Clip first... + if ((x >= 0) && (x < _width) && (y >= 0) && (y < _height)) { + // THEN set up transaction (if needed) and draw... + startWrite(); + setAddrWindow(x, y, 1, 1); + SPI_WRITE16(color); + endWrite(); + } +} + +/*! + @brief Draw a filled rectangle to the display. Self-contained and + provides its own transaction as needed (see writeFillRect() or + writeFillRectPreclipped() for lower-level variants). Edge + clipping and rejection is performed here. + @param x Horizontal position of first corner. + @param y Vertical position of first corner. + @param w Rectangle width in pixels (positive = right of first + corner, negative = left of first corner). + @param h Rectangle height in pixels (positive = below first + corner, negative = above first corner). + @param color 16-bit fill color in '565' RGB format. + @note This repeats the writeFillRect() function almost in its entirety, + with the addition of a transaction start/end. It's done this way + (rather than starting the transaction and calling writeFillRect() + to handle clipping and so forth) so that the transaction isn't + performed at all if the rectangle is rejected. It's really not + that much code. +*/ +void Adafruit_SPITFT::fillRect(int16_t x, int16_t y, int16_t w, int16_t h, + uint16_t color) { + if (w && h) { // Nonzero width and height? + if (w < 0) { // If negative width... + x += w + 1; // Move X to left edge + w = -w; // Use positive width + } + if (x < _width) { // Not off right + if (h < 0) { // If negative height... + y += h + 1; // Move Y to top edge + h = -h; // Use positive height + } + if (y < _height) { // Not off bottom + int16_t x2 = x + w - 1; + if (x2 >= 0) { // Not off left + int16_t y2 = y + h - 1; + if (y2 >= 0) { // Not off top + // Rectangle partly or fully overlaps screen + if (x < 0) { + x = 0; + w = x2 + 1; + } // Clip left + if (y < 0) { + y = 0; + h = y2 + 1; + } // Clip top + if (x2 >= _width) { + w = _width - x; + } // Clip right + if (y2 >= _height) { + h = _height - y; + } // Clip bottom + startWrite(); + writeFillRectPreclipped(x, y, w, h, color); + endWrite(); + } + } + } + } + } +} + +/*! + @brief Draw a horizontal line on the display. Self-contained and + provides its own transaction as needed (see writeFastHLine() for + a lower-level variant). Edge clipping and rejection is performed + here. + @param x Horizontal position of first point. + @param y Vertical position of first point. + @param w Line width in pixels (positive = right of first point, + negative = point of first corner). + @param color 16-bit line color in '565' RGB format. + @note This repeats the writeFastHLine() function almost in its + entirety, with the addition of a transaction start/end. It's + done this way (rather than starting the transaction and calling + writeFastHLine() to handle clipping and so forth) so that the + transaction isn't performed at all if the line is rejected. +*/ +void Adafruit_SPITFT::drawFastHLine(int16_t x, int16_t y, int16_t w, + uint16_t color) { + if ((y >= 0) && (y < _height) && w) { // Y on screen, nonzero width + if (w < 0) { // If negative width... + x += w + 1; // Move X to left edge + w = -w; // Use positive width + } + if (x < _width) { // Not off right + int16_t x2 = x + w - 1; + if (x2 >= 0) { // Not off left + // Line partly or fully overlaps screen + if (x < 0) { + x = 0; + w = x2 + 1; + } // Clip left + if (x2 >= _width) { + w = _width - x; + } // Clip right + startWrite(); + writeFillRectPreclipped(x, y, w, 1, color); + endWrite(); + } + } + } +} + +/*! + @brief Draw a vertical line on the display. Self-contained and provides + its own transaction as needed (see writeFastHLine() for a lower- + level variant). Edge clipping and rejection is performed here. + @param x Horizontal position of first point. + @param y Vertical position of first point. + @param h Line height in pixels (positive = below first point, + negative = above first point). + @param color 16-bit line color in '565' RGB format. + @note This repeats the writeFastVLine() function almost in its + entirety, with the addition of a transaction start/end. It's + done this way (rather than starting the transaction and calling + writeFastVLine() to handle clipping and so forth) so that the + transaction isn't performed at all if the line is rejected. +*/ +void Adafruit_SPITFT::drawFastVLine(int16_t x, int16_t y, int16_t h, + uint16_t color) { + if ((x >= 0) && (x < _width) && h) { // X on screen, nonzero height + if (h < 0) { // If negative height... + y += h + 1; // Move Y to top edge + h = -h; // Use positive height + } + if (y < _height) { // Not off bottom + int16_t y2 = y + h - 1; + if (y2 >= 0) { // Not off top + // Line partly or fully overlaps screen + if (y < 0) { + y = 0; + h = y2 + 1; + } // Clip top + if (y2 >= _height) { + h = _height - y; + } // Clip bottom + startWrite(); + writeFillRectPreclipped(x, y, 1, h, color); + endWrite(); + } + } + } +} + +/*! + @brief Essentially writePixel() with a transaction around it. I don't + think this is in use by any of our code anymore (believe it was + for some older BMP-reading examples), but is kept here in case + any user code relies on it. Consider it DEPRECATED. + @param color 16-bit pixel color in '565' RGB format. +*/ +void Adafruit_SPITFT::pushColor(uint16_t color) { + startWrite(); + SPI_WRITE16(color); + endWrite(); +} + +/*! + @brief Draw a 16-bit image (565 RGB) at the specified (x,y) position. + For 16-bit display devices; no color reduction performed. + Adapted from https://github.com/PaulStoffregen/ILI9341_t3 + by Marc MERLIN. See examples/pictureEmbed to use this. + 5/6/2017: function name and arguments have changed for + compatibility with current GFX library and to avoid naming + problems in prior implementation. Formerly drawBitmap() with + arguments in different order. Handles its own transaction and + edge clipping/rejection. + @param x Top left corner horizontal coordinate. + @param y Top left corner vertical coordinate. + @param pcolors Pointer to 16-bit array of pixel values. + @param w Width of bitmap in pixels. + @param h Height of bitmap in pixels. +*/ +void Adafruit_SPITFT::drawRGBBitmap(int16_t x, int16_t y, uint16_t *pcolors, + int16_t w, int16_t h) { + + int16_t x2, y2; // Lower-right coord + if ((x >= _width) || // Off-edge right + (y >= _height) || // " top + ((x2 = (x + w - 1)) < 0) || // " left + ((y2 = (y + h - 1)) < 0)) + return; // " bottom + + int16_t bx1 = 0, by1 = 0, // Clipped top-left within bitmap + saveW = w; // Save original bitmap width value + if (x < 0) { // Clip left + w += x; + bx1 = -x; + x = 0; + } + if (y < 0) { // Clip top + h += y; + by1 = -y; + y = 0; + } + if (x2 >= _width) + w = _width - x; // Clip right + if (y2 >= _height) + h = _height - y; // Clip bottom + + pcolors += by1 * saveW + bx1; // Offset bitmap ptr to clipped top-left + startWrite(); + setAddrWindow(x, y, w, h); // Clipped area + while (h--) { // For each (clipped) scanline... + writePixels(pcolors, w); // Push one (clipped) row + pcolors += saveW; // Advance pointer by one full (unclipped) line + } + endWrite(); +} + +// ------------------------------------------------------------------------- +// Miscellaneous class member functions that don't draw anything. + +/*! + @brief Invert the colors of the display (if supported by hardware). + Self-contained, no transaction setup required. + @param i true = inverted display, false = normal display. +*/ +void Adafruit_SPITFT::invertDisplay(bool i) { + startWrite(); + writeCommand(i ? invertOnCommand : invertOffCommand); + endWrite(); +} + +/*! + @brief Given 8-bit red, green and blue values, return a 'packed' + 16-bit color value in '565' RGB format (5 bits red, 6 bits + green, 5 bits blue). This is just a mathematical operation, + no hardware is touched. + @param red 8-bit red brightnesss (0 = off, 255 = max). + @param green 8-bit green brightnesss (0 = off, 255 = max). + @param blue 8-bit blue brightnesss (0 = off, 255 = max). + @return 'Packed' 16-bit color value (565 format). +*/ +uint16_t Adafruit_SPITFT::color565(uint8_t red, uint8_t green, uint8_t blue) { + return ((red & 0xF8) << 8) | ((green & 0xFC) << 3) | (blue >> 3); +} + +/*! +@brief Adafruit_SPITFT Send Command handles complete sending of commands and +data +@param commandByte The Command Byte +@param dataBytes A pointer to the Data bytes to send +@param numDataBytes The number of bytes we should send +*/ +void Adafruit_SPITFT::sendCommand(uint8_t commandByte, uint8_t *dataBytes, + uint8_t numDataBytes) { + SPI_BEGIN_TRANSACTION(); + if (_cs >= 0) + SPI_CS_LOW(); + + SPI_DC_LOW(); // Command mode + spiWrite(commandByte); // Send the command byte + + SPI_DC_HIGH(); + for (int i = 0; i < numDataBytes; i++) { + if ((connection == TFT_PARALLEL) && tft8.wide) { + SPI_WRITE16(*(uint16_t *)dataBytes); + dataBytes += 2; + } else { + spiWrite(*dataBytes); // Send the data bytes + dataBytes++; + } + } + + if (_cs >= 0) + SPI_CS_HIGH(); + SPI_END_TRANSACTION(); +} + +/*! + @brief Adafruit_SPITFT Send Command handles complete sending of commands and + data + @param commandByte The Command Byte + @param dataBytes A pointer to the Data bytes to send + @param numDataBytes The number of bytes we should send + */ +void Adafruit_SPITFT::sendCommand(uint8_t commandByte, const uint8_t *dataBytes, + uint8_t numDataBytes) { + SPI_BEGIN_TRANSACTION(); + if (_cs >= 0) + SPI_CS_LOW(); + + SPI_DC_LOW(); // Command mode + spiWrite(commandByte); // Send the command byte + + SPI_DC_HIGH(); + for (int i = 0; i < numDataBytes; i++) { + if ((connection == TFT_PARALLEL) && tft8.wide) { + SPI_WRITE16(*(uint16_t *)dataBytes); + dataBytes += 2; + } else { + spiWrite(pgm_read_byte(dataBytes++)); + } + } + + if (_cs >= 0) + SPI_CS_HIGH(); + SPI_END_TRANSACTION(); +} + +/*! + @brief Adafruit_SPITFT sendCommand16 handles complete sending of + commands and data for 16-bit parallel displays. Currently somewhat + rigged for the NT35510, which has the odd behavior of wanting + commands 16-bit, but subsequent data as 8-bit values, despite + the 16-bit bus (high byte is always 0). Also seems to require + issuing and incrementing address with each transfer. + @param commandWord The command word (16 bits) + @param dataBytes A pointer to the data bytes to send + @param numDataBytes The number of bytes we should send + */ +void Adafruit_SPITFT::sendCommand16(uint16_t commandWord, + const uint8_t *dataBytes, + uint8_t numDataBytes) { + SPI_BEGIN_TRANSACTION(); + if (_cs >= 0) + SPI_CS_LOW(); + + if (numDataBytes == 0) { + SPI_DC_LOW(); // Command mode + SPI_WRITE16(commandWord); // Send the command word + SPI_DC_HIGH(); // Data mode + } + for (int i = 0; i < numDataBytes; i++) { + SPI_DC_LOW(); // Command mode + SPI_WRITE16(commandWord); // Send the command word + SPI_DC_HIGH(); // Data mode + commandWord++; + SPI_WRITE16((uint16_t)pgm_read_byte(dataBytes++)); + } + + if (_cs >= 0) + SPI_CS_HIGH(); + SPI_END_TRANSACTION(); +} + +/*! + @brief Read 8 bits of data from display configuration memory (not RAM). + This is highly undocumented/supported and should be avoided, + function is only included because some of the examples use it. + @param commandByte + The command register to read data from. + @param index + The byte index into the command to read from. + @return Unsigned 8-bit data read from display register. + */ +/**************************************************************************/ +uint8_t Adafruit_SPITFT::readcommand8(uint8_t commandByte, uint8_t index) { + uint8_t result; + startWrite(); + SPI_DC_LOW(); // Command mode + spiWrite(commandByte); + SPI_DC_HIGH(); // Data mode + do { + result = spiRead(); + } while (index--); // Discard bytes up to index'th + endWrite(); + return result; +} + +/*! + @brief Read 16 bits of data from display register. + For 16-bit parallel displays only. + @param addr Command/register to access. + @return Unsigned 16-bit data. + */ +uint16_t Adafruit_SPITFT::readcommand16(uint16_t addr) { +#if defined(USE_FAST_PINIO) // NOT SUPPORTED without USE_FAST_PINIO + uint16_t result = 0; + if ((connection == TFT_PARALLEL) && tft8.wide) { + startWrite(); + SPI_DC_LOW(); // Command mode + SPI_WRITE16(addr); + SPI_DC_HIGH(); // Data mode + TFT_RD_LOW(); // Read line LOW +#if defined(HAS_PORT_SET_CLR) + *(volatile uint16_t *)tft8.dirClr = 0xFFFF; // Input state + result = *(volatile uint16_t *)tft8.readPort; // 16-bit read + *(volatile uint16_t *)tft8.dirSet = 0xFFFF; // Output state +#else // !HAS_PORT_SET_CLR + *(volatile uint16_t *)tft8.portDir = 0x0000; // Input state + result = *(volatile uint16_t *)tft8.readPort; // 16-bit read + *(volatile uint16_t *)tft8.portDir = 0xFFFF; // Output state +#endif // end !HAS_PORT_SET_CLR + TFT_RD_HIGH(); // Read line HIGH + endWrite(); + } + return result; +#else + (void)addr; // disable -Wunused-parameter warning + return 0; +#endif // end !USE_FAST_PINIO +} + +// ------------------------------------------------------------------------- +// Lowest-level hardware-interfacing functions. Many of these are inline and +// compile to different things based on #defines -- typically just a few +// instructions. Others, not so much, those are not inlined. + +/*! + @brief Start an SPI transaction if using the hardware SPI interface to + the display. If using an earlier version of the Arduino platform + (before the addition of SPI transactions), this instead attempts + to set up the SPI clock and mode. No action is taken if the + connection is not hardware SPI-based. This does NOT include a + chip-select operation -- see startWrite() for a function that + encapsulated both actions. +*/ +inline void Adafruit_SPITFT::SPI_BEGIN_TRANSACTION(void) { + if (connection == TFT_HARD_SPI) { +#if defined(SPI_HAS_TRANSACTION) + hwspi._spi->beginTransaction(hwspi.settings); +#else // No transactions, configure SPI manually... +#if defined(__AVR__) || defined(TEENSYDUINO) || defined(ARDUINO_ARCH_STM32F1) + hwspi._spi->setClockDivider(SPI_CLOCK_DIV2); +#elif defined(__arm__) + hwspi._spi->setClockDivider(11); +#elif defined(ESP8266) || defined(ESP32) + hwspi._spi->setFrequency(hwspi._freq); +#elif defined(RASPI) || defined(ARDUINO_ARCH_STM32F1) + hwspi._spi->setClock(hwspi._freq); +#endif + hwspi._spi->setBitOrder(MSBFIRST); + hwspi._spi->setDataMode(hwspi._mode); +#endif // end !SPI_HAS_TRANSACTION + } +} + +/*! + @brief End an SPI transaction if using the hardware SPI interface to + the display. No action is taken if the connection is not + hardware SPI-based or if using an earlier version of the Arduino + platform (before the addition of SPI transactions). This does + NOT include a chip-deselect operation -- see endWrite() for a + function that encapsulated both actions. +*/ +inline void Adafruit_SPITFT::SPI_END_TRANSACTION(void) { +#if defined(SPI_HAS_TRANSACTION) + if (connection == TFT_HARD_SPI) { + hwspi._spi->endTransaction(); + } +#endif +} + +/*! + @brief Issue a single 8-bit value to the display. Chip-select, + transaction and data/command selection must have been + previously set -- this ONLY issues the byte. This is another of + those functions in the library with a now-not-accurate name + that's being maintained for compatibility with outside code. + This function is used even if display connection is parallel. + @param b 8-bit value to write. +*/ +void Adafruit_SPITFT::spiWrite(uint8_t b) { + if (connection == TFT_HARD_SPI) { +#if defined(__AVR__) + AVR_WRITESPI(b); +#elif defined(ESP8266) || defined(ESP32) + hwspi._spi->write(b); +#elif defined(ARDUINO_ARCH_RP2040) + spi_inst_t *pi_spi = hwspi._spi == &SPI ? __SPI0_DEVICE : __SPI1_DEVICE; + spi_write_blocking(pi_spi, &b, 1); +#else + hwspi._spi->transfer(b); +#endif + } else if (connection == TFT_SOFT_SPI) { + for (uint8_t bit = 0; bit < 8; bit++) { + if (b & 0x80) + SPI_MOSI_HIGH(); + else + SPI_MOSI_LOW(); + SPI_SCK_HIGH(); + b <<= 1; + SPI_SCK_LOW(); + } + } else { // TFT_PARALLEL +#if defined(__AVR__) + *tft8.writePort = b; +#elif defined(USE_FAST_PINIO) + if (!tft8.wide) + *tft8.writePort = b; + else + *(volatile uint16_t *)tft8.writePort = b; +#endif + TFT_WR_STROBE(); + } +} + +/*! + @brief Write a single command byte to the display. Chip-select and + transaction must have been previously set -- this ONLY sets + the device to COMMAND mode, issues the byte and then restores + DATA mode. There is no corresponding explicit writeData() + function -- just use spiWrite(). + @param cmd 8-bit command to write. +*/ +void Adafruit_SPITFT::writeCommand(uint8_t cmd) { + SPI_DC_LOW(); + spiWrite(cmd); + SPI_DC_HIGH(); +} + +/*! + @brief Read a single 8-bit value from the display. Chip-select and + transaction must have been previously set -- this ONLY reads + the byte. This is another of those functions in the library + with a now-not-accurate name that's being maintained for + compatibility with outside code. This function is used even if + display connection is parallel. + @return Unsigned 8-bit value read (always zero if USE_FAST_PINIO is + not supported by the MCU architecture). +*/ +uint8_t Adafruit_SPITFT::spiRead(void) { + uint8_t b = 0; + uint16_t w = 0; + if (connection == TFT_HARD_SPI) { + return hwspi._spi->transfer((uint8_t)0); + } else if (connection == TFT_SOFT_SPI) { + if (swspi._miso >= 0) { + for (uint8_t i = 0; i < 8; i++) { + SPI_SCK_HIGH(); + b <<= 1; + if (SPI_MISO_READ()) + b++; + SPI_SCK_LOW(); + } + } + return b; + } else { // TFT_PARALLEL + if (tft8._rd >= 0) { +#if defined(USE_FAST_PINIO) + TFT_RD_LOW(); // Read line LOW +#if defined(__AVR__) + *tft8.portDir = 0x00; // Set port to input state + w = *tft8.readPort; // Read value from port + *tft8.portDir = 0xFF; // Restore port to output +#else // !__AVR__ + if (!tft8.wide) { // 8-bit TFT connection +#if defined(HAS_PORT_SET_CLR) + *tft8.dirClr = 0xFF; // Set port to input state + w = *tft8.readPort; // Read value from port + *tft8.dirSet = 0xFF; // Restore port to output +#else // !HAS_PORT_SET_CLR + *tft8.portDir = 0x00; // Set port to input state + w = *tft8.readPort; // Read value from port + *tft8.portDir = 0xFF; // Restore port to output +#endif // end HAS_PORT_SET_CLR + } else { // 16-bit TFT connection +#if defined(HAS_PORT_SET_CLR) + *(volatile uint16_t *)tft8.dirClr = 0xFFFF; // Input state + w = *(volatile uint16_t *)tft8.readPort; // 16-bit read + *(volatile uint16_t *)tft8.dirSet = 0xFFFF; // Output state +#else // !HAS_PORT_SET_CLR + *(volatile uint16_t *)tft8.portDir = 0x0000; // Input state + w = *(volatile uint16_t *)tft8.readPort; // 16-bit read + *(volatile uint16_t *)tft8.portDir = 0xFFFF; // Output state +#endif // end !HAS_PORT_SET_CLR + } + TFT_RD_HIGH(); // Read line HIGH +#endif // end !__AVR__ +#else // !USE_FAST_PINIO + w = 0; // Parallel TFT is NOT SUPPORTED without USE_FAST_PINIO +#endif // end !USE_FAST_PINIO + } + return w; + } +} + +/*! + @brief Issue a single 16-bit value to the display. Chip-select, + transaction and data/command selection must have been + previously set -- this ONLY issues the word. + Thus operates ONLY on 'wide' (16-bit) parallel displays! + @param w 16-bit value to write. +*/ +void Adafruit_SPITFT::write16(uint16_t w) { + if (connection == TFT_PARALLEL) { +#if defined(USE_FAST_PINIO) + if (tft8.wide) + *(volatile uint16_t *)tft8.writePort = w; +#else + (void)w; // disable -Wunused-parameter warning +#endif + TFT_WR_STROBE(); + } +} + +/*! + @brief Write a single command word to the display. Chip-select and + transaction must have been previously set -- this ONLY sets + the device to COMMAND mode, issues the byte and then restores + DATA mode. This operates ONLY on 'wide' (16-bit) parallel + displays! + @param cmd 16-bit command to write. +*/ +void Adafruit_SPITFT::writeCommand16(uint16_t cmd) { + SPI_DC_LOW(); + write16(cmd); + SPI_DC_HIGH(); +} + +/*! + @brief Read a single 16-bit value from the display. Chip-select and + transaction must have been previously set -- this ONLY reads + the byte. This operates ONLY on 'wide' (16-bit) parallel + displays! + @return Unsigned 16-bit value read (always zero if USE_FAST_PINIO is + not supported by the MCU architecture). +*/ +uint16_t Adafruit_SPITFT::read16(void) { + uint16_t w = 0; + if (connection == TFT_PARALLEL) { + if (tft8._rd >= 0) { +#if defined(USE_FAST_PINIO) + TFT_RD_LOW(); // Read line LOW + if (tft8.wide) { // 16-bit TFT connection +#if defined(HAS_PORT_SET_CLR) + *(volatile uint16_t *)tft8.dirClr = 0xFFFF; // Input state + w = *(volatile uint16_t *)tft8.readPort; // 16-bit read + *(volatile uint16_t *)tft8.dirSet = 0xFFFF; // Output state +#else // !HAS_PORT_SET_CLR + *(volatile uint16_t *)tft8.portDir = 0x0000; // Input state + w = *(volatile uint16_t *)tft8.readPort; // 16-bit read + *(volatile uint16_t *)tft8.portDir = 0xFFFF; // Output state +#endif // end !HAS_PORT_SET_CLR + } + TFT_RD_HIGH(); // Read line HIGH +#else // !USE_FAST_PINIO + w = 0; // Parallel TFT is NOT SUPPORTED without USE_FAST_PINIO +#endif // end !USE_FAST_PINIO + } + } + return w; +} + +/*! + @brief Set the software (bitbang) SPI MOSI line HIGH. +*/ +inline void Adafruit_SPITFT::SPI_MOSI_HIGH(void) { +#if defined(USE_FAST_PINIO) +#if defined(HAS_PORT_SET_CLR) +#if defined(KINETISK) + *swspi.mosiPortSet = 1; +#else // !KINETISK + *swspi.mosiPortSet = swspi.mosiPinMask; +#endif +#else // !HAS_PORT_SET_CLR + *swspi.mosiPort |= swspi.mosiPinMaskSet; +#endif // end !HAS_PORT_SET_CLR +#else // !USE_FAST_PINIO + digitalWrite(swspi._mosi, HIGH); +#endif // end !USE_FAST_PINIO +} + +/*! + @brief Set the software (bitbang) SPI MOSI line LOW. +*/ +inline void Adafruit_SPITFT::SPI_MOSI_LOW(void) { +#if defined(USE_FAST_PINIO) +#if defined(HAS_PORT_SET_CLR) +#if defined(KINETISK) + *swspi.mosiPortClr = 1; +#else // !KINETISK + *swspi.mosiPortClr = swspi.mosiPinMask; +#endif +#else // !HAS_PORT_SET_CLR + *swspi.mosiPort &= swspi.mosiPinMaskClr; +#endif // end !HAS_PORT_SET_CLR +#else // !USE_FAST_PINIO + digitalWrite(swspi._mosi, LOW); +#endif // end !USE_FAST_PINIO +} + +/*! + @brief Set the software (bitbang) SPI SCK line HIGH. +*/ +inline void Adafruit_SPITFT::SPI_SCK_HIGH(void) { +#if defined(USE_FAST_PINIO) +#if defined(HAS_PORT_SET_CLR) +#if defined(KINETISK) + *swspi.sckPortSet = 1; +#else // !KINETISK + *swspi.sckPortSet = swspi.sckPinMask; +#endif +#else // !HAS_PORT_SET_CLR + *swspi.sckPort |= swspi.sckPinMaskSet; +#endif // end !HAS_PORT_SET_CLR +#else // !USE_FAST_PINIO + digitalWrite(swspi._sck, HIGH); +#endif // end !USE_FAST_PINIO +} + +/*! + @brief Set the software (bitbang) SPI SCK line LOW. +*/ +inline void Adafruit_SPITFT::SPI_SCK_LOW(void) { +#if defined(USE_FAST_PINIO) +#if defined(HAS_PORT_SET_CLR) +#if defined(KINETISK) + *swspi.sckPortClr = 1; +#else // !KINETISK + *swspi.sckPortClr = swspi.sckPinMask; +#endif +#else // !HAS_PORT_SET_CLR + *swspi.sckPort &= swspi.sckPinMaskClr; +#endif // end !HAS_PORT_SET_CLR +#else // !USE_FAST_PINIO + digitalWrite(swspi._sck, LOW); +#endif // end !USE_FAST_PINIO +} + +/*! + @brief Read the state of the software (bitbang) SPI MISO line. + @return true if HIGH, false if LOW. +*/ +inline bool Adafruit_SPITFT::SPI_MISO_READ(void) { +#if defined(USE_FAST_PINIO) +#if defined(KINETISK) + return *swspi.misoPort; +#else // !KINETISK + return *swspi.misoPort & swspi.misoPinMask; +#endif // end !KINETISK +#else // !USE_FAST_PINIO + return digitalRead(swspi._miso); +#endif // end !USE_FAST_PINIO +} + +/*! + @brief Issue a single 16-bit value to the display. Chip-select, + transaction and data/command selection must have been + previously set -- this ONLY issues the word. Despite the name, + this function is used even if display connection is parallel; + name was maintaned for backward compatibility. Naming is also + not consistent with the 8-bit version, spiWrite(). Sorry about + that. Again, staying compatible with outside code. + @param w 16-bit value to write. +*/ +void Adafruit_SPITFT::SPI_WRITE16(uint16_t w) { + if (connection == TFT_HARD_SPI) { +#if defined(__AVR__) + AVR_WRITESPI(w >> 8); + AVR_WRITESPI(w); +#elif defined(ESP8266) || defined(ESP32) + hwspi._spi->write16(w); +#elif defined(ARDUINO_ARCH_RP2040) + spi_inst_t *pi_spi = hwspi._spi == &SPI ? __SPI0_DEVICE : __SPI1_DEVICE; + w = __builtin_bswap16(w); + spi_write_blocking(pi_spi, (uint8_t *)&w, 2); +#elif defined(ARDUINO_ARCH_RTTHREAD) + hwspi._spi->transfer16(w); +#else + // MSB, LSB because TFTs are generally big-endian + hwspi._spi->transfer(w >> 8); + hwspi._spi->transfer(w); +#endif + } else if (connection == TFT_SOFT_SPI) { + for (uint8_t bit = 0; bit < 16; bit++) { + if (w & 0x8000) + SPI_MOSI_HIGH(); + else + SPI_MOSI_LOW(); + SPI_SCK_HIGH(); + SPI_SCK_LOW(); + w <<= 1; + } + } else { // TFT_PARALLEL +#if defined(__AVR__) + *tft8.writePort = w >> 8; + TFT_WR_STROBE(); + *tft8.writePort = w; +#elif defined(USE_FAST_PINIO) + if (!tft8.wide) { + *tft8.writePort = w >> 8; + TFT_WR_STROBE(); + *tft8.writePort = w; + } else { + *(volatile uint16_t *)tft8.writePort = w; + } +#endif + TFT_WR_STROBE(); + } +} + +/*! + @brief Issue a single 32-bit value to the display. Chip-select, + transaction and data/command selection must have been + previously set -- this ONLY issues the longword. Despite the + name, this function is used even if display connection is + parallel; name was maintaned for backward compatibility. Naming + is also not consistent with the 8-bit version, spiWrite(). + Sorry about that. Again, staying compatible with outside code. + @param l 32-bit value to write. +*/ +void Adafruit_SPITFT::SPI_WRITE32(uint32_t l) { + if (connection == TFT_HARD_SPI) { +#if defined(__AVR__) + AVR_WRITESPI(l >> 24); + AVR_WRITESPI(l >> 16); + AVR_WRITESPI(l >> 8); + AVR_WRITESPI(l); +#elif defined(ESP8266) || defined(ESP32) + hwspi._spi->write32(l); +#elif defined(ARDUINO_ARCH_RP2040) + spi_inst_t *pi_spi = hwspi._spi == &SPI ? __SPI0_DEVICE : __SPI1_DEVICE; + l = __builtin_bswap32(l); + spi_write_blocking(pi_spi, (uint8_t *)&l, 4); +#elif defined(ARDUINO_ARCH_RTTHREAD) + hwspi._spi->transfer16(l >> 16); + hwspi._spi->transfer16(l); +#else + hwspi._spi->transfer(l >> 24); + hwspi._spi->transfer(l >> 16); + hwspi._spi->transfer(l >> 8); + hwspi._spi->transfer(l); +#endif + } else if (connection == TFT_SOFT_SPI) { + for (uint8_t bit = 0; bit < 32; bit++) { + if (l & 0x80000000) + SPI_MOSI_HIGH(); + else + SPI_MOSI_LOW(); + SPI_SCK_HIGH(); + SPI_SCK_LOW(); + l <<= 1; + } + } else { // TFT_PARALLEL +#if defined(__AVR__) + *tft8.writePort = l >> 24; + TFT_WR_STROBE(); + *tft8.writePort = l >> 16; + TFT_WR_STROBE(); + *tft8.writePort = l >> 8; + TFT_WR_STROBE(); + *tft8.writePort = l; +#elif defined(USE_FAST_PINIO) + if (!tft8.wide) { + *tft8.writePort = l >> 24; + TFT_WR_STROBE(); + *tft8.writePort = l >> 16; + TFT_WR_STROBE(); + *tft8.writePort = l >> 8; + TFT_WR_STROBE(); + *tft8.writePort = l; + } else { + *(volatile uint16_t *)tft8.writePort = l >> 16; + TFT_WR_STROBE(); + *(volatile uint16_t *)tft8.writePort = l; + } +#endif + TFT_WR_STROBE(); + } +} + +/*! + @brief Set the WR line LOW, then HIGH. Used for parallel-connected + interfaces when writing data. +*/ +inline void Adafruit_SPITFT::TFT_WR_STROBE(void) { +#if defined(USE_FAST_PINIO) +#if defined(HAS_PORT_SET_CLR) +#if defined(KINETISK) + *tft8.wrPortClr = 1; + *tft8.wrPortSet = 1; +#else // !KINETISK + *tft8.wrPortClr = tft8.wrPinMask; + *tft8.wrPortSet = tft8.wrPinMask; +#endif // end !KINETISK +#else // !HAS_PORT_SET_CLR + *tft8.wrPort &= tft8.wrPinMaskClr; + *tft8.wrPort |= tft8.wrPinMaskSet; +#endif // end !HAS_PORT_SET_CLR +#else // !USE_FAST_PINIO + digitalWrite(tft8._wr, LOW); + digitalWrite(tft8._wr, HIGH); +#endif // end !USE_FAST_PINIO +} + +/*! + @brief Set the RD line HIGH. Used for parallel-connected interfaces + when reading data. +*/ +inline void Adafruit_SPITFT::TFT_RD_HIGH(void) { +#if defined(USE_FAST_PINIO) +#if defined(HAS_PORT_SET_CLR) + *tft8.rdPortSet = tft8.rdPinMask; +#else // !HAS_PORT_SET_CLR + *tft8.rdPort |= tft8.rdPinMaskSet; +#endif // end !HAS_PORT_SET_CLR +#else // !USE_FAST_PINIO + digitalWrite(tft8._rd, HIGH); +#endif // end !USE_FAST_PINIO +} + +/*! + @brief Set the RD line LOW. Used for parallel-connected interfaces + when reading data. +*/ +inline void Adafruit_SPITFT::TFT_RD_LOW(void) { +#if defined(USE_FAST_PINIO) +#if defined(HAS_PORT_SET_CLR) + *tft8.rdPortClr = tft8.rdPinMask; +#else // !HAS_PORT_SET_CLR + *tft8.rdPort &= tft8.rdPinMaskClr; +#endif // end !HAS_PORT_SET_CLR +#else // !USE_FAST_PINIO + digitalWrite(tft8._rd, LOW); +#endif // end !USE_FAST_PINIO +} + +#endif // end __AVR_ATtiny85__ __AVR_ATtiny84__ diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Adafruit_SPITFT.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Adafruit_SPITFT.h new file mode 100644 index 0000000..7d0843e --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Adafruit_SPITFT.h @@ -0,0 +1,541 @@ +/*! + * @file Adafruit_SPITFT.h + * + * Part of Adafruit's GFX graphics library. Originally this class was + * written to handle a range of color TFT displays connected via SPI, + * but over time this library and some display-specific subclasses have + * mutated to include some color OLEDs as well as parallel-interfaced + * displays. The name's been kept for the sake of older code. + * + * 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 "ladyada" Fried for Adafruit Industries, + * with contributions from the open source community. + * + * BSD license, all text here must be included in any redistribution. + */ + +#ifndef _ADAFRUIT_SPITFT_H_ +#define _ADAFRUIT_SPITFT_H_ + +// Not for ATtiny, at all +#if !defined(__AVR_ATtiny85__) && !defined(__AVR_ATtiny84__) + +#include "Adafruit_GFX.h" +#include + +// HARDWARE CONFIG --------------------------------------------------------- + +#if defined(__AVR__) +typedef uint8_t ADAGFX_PORT_t; ///< PORT values are 8-bit +#define USE_FAST_PINIO ///< Use direct PORT register access +#elif defined(ARDUINO_STM32_FEATHER) // WICED +typedef class HardwareSPI SPIClass; ///< SPI is a bit odd on WICED +typedef uint32_t ADAGFX_PORT_t; ///< PORT values are 32-bit +#elif defined(__arm__) +#if defined(ARDUINO_ARCH_SAMD) +// Adafruit M0, M4 +typedef uint32_t ADAGFX_PORT_t; ///< PORT values are 32-bit +#define USE_FAST_PINIO ///< Use direct PORT register access +#define HAS_PORT_SET_CLR ///< PORTs have set & clear registers +#elif defined(CORE_TEENSY) +// PJRC Teensy 4.x +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) // Teensy 4.x +typedef uint32_t ADAGFX_PORT_t; ///< PORT values are 32-bit + // PJRC Teensy 3.x +#else +typedef uint8_t ADAGFX_PORT_t; ///< PORT values are 8-bit +#endif +#define USE_FAST_PINIO ///< Use direct PORT register access +#define HAS_PORT_SET_CLR ///< PORTs have set & clear registers +#else +// Arduino Due? +typedef uint32_t ADAGFX_PORT_t; ///< PORT values are 32-bit +// USE_FAST_PINIO not available here (yet)...Due has a totally different +// GPIO register set and will require some changes elsewhere (e.g. in +// constructors especially). +#endif +#else // !ARM +// Probably ESP8266 or ESP32. USE_FAST_PINIO is not available here (yet) +// but don't worry about it too much...the digitalWrite() implementation +// on these platforms is reasonably efficient and already RAM-resident, +// only gotcha then is no parallel connection support for now. +typedef uint32_t ADAGFX_PORT_t; ///< PORT values are 32-bit +#endif // end !ARM +typedef volatile ADAGFX_PORT_t *PORTreg_t; ///< PORT register type + +#if defined(__AVR__) && !defined(__LGT8F__) +#define DEFAULT_SPI_FREQ 8000000L ///< Hardware SPI default speed +#else +#define DEFAULT_SPI_FREQ 16000000L ///< Hardware SPI default speed +#endif + +#if defined(ADAFRUIT_PYPORTAL) || defined(ADAFRUIT_PYPORTAL_M4_TITANO) || \ + defined(ADAFRUIT_PYBADGE_M4_EXPRESS) || \ + defined(ADAFRUIT_PYGAMER_M4_EXPRESS) || \ + defined(ADAFRUIT_MONSTER_M4SK_EXPRESS) || defined(NRF52_SERIES) || \ + defined(ADAFRUIT_CIRCUITPLAYGROUND_M0) +#define USE_SPI_DMA ///< Auto DMA +#else + // #define USE_SPI_DMA ///< If set, + // use DMA if available +#endif +// Another "oops" name -- this now also handles parallel DMA. +// If DMA is enabled, Arduino sketch MUST #include +// Estimated RAM usage: +// 4 bytes/pixel on display major axis + 8 bytes/pixel on minor axis, +// e.g. 320x240 pixels = 320 * 4 + 240 * 8 = 3,200 bytes. + +#if defined(USE_SPI_DMA) && (defined(__SAMD51__) || defined(ARDUINO_SAMD_ZERO)) +#include +#endif + +// This is kind of a kludge. Needed a way to disambiguate the software SPI +// and parallel constructors via their argument lists. Originally tried a +// bool as the first argument to the parallel constructor (specifying 8-bit +// vs 16-bit interface) but the compiler regards this as equivalent to an +// integer and thus still ambiguous. SO...the parallel constructor requires +// an enumerated type as the first argument: tft8 (for 8-bit parallel) or +// tft16 (for 16-bit)...even though 16-bit isn't fully implemented or tested +// and might never be, still needed that disambiguation from soft SPI. +/*! For first arg to parallel constructor */ +enum tftBusWidth { tft8bitbus, tft16bitbus }; + +// SPI defaults for RP2040 +#if defined(ARDUINO_ARCH_RP2040) +#ifndef __SPI0_DEVICE +#define __SPI0_DEVICE spi0 +#endif +#ifndef __SPI1_DEVICE +#define __SPI1_DEVICE spi1 +#endif +#endif + +// CLASS DEFINITION -------------------------------------------------------- + +/*! + @brief Adafruit_SPITFT is an intermediary class between Adafruit_GFX + and various hardware-specific subclasses for different displays. + It handles certain operations that are common to a range of + displays (address window, area fills, etc.). Originally these were + all color TFT displays interfaced via SPI, but it's since expanded + to include color OLEDs and parallel-interfaced TFTs. THE NAME HAS + BEEN KEPT TO AVOID BREAKING A LOT OF SUBCLASSES AND EXAMPLE CODE. + Many of the class member functions similarly live on with names + that don't necessarily accurately describe what they're doing, + again to avoid breaking a lot of other code. If in doubt, read + the comments. +*/ +class Adafruit_SPITFT : public Adafruit_GFX { + +public: + // CONSTRUCTORS -------------------------------------------------------- + + // Software SPI constructor: expects width & height (at default rotation + // setting 0), 4 signal pins (cs, dc, mosi, sclk), 2 optional pins + // (reset, miso). cs argument is required but can be -1 if unused -- + // rather than moving it to the optional arguments, it was done this way + // to avoid breaking existing code (-1 option was a later addition). + Adafruit_SPITFT(uint16_t w, uint16_t h, int8_t cs, int8_t dc, int8_t mosi, + int8_t sck, int8_t rst = -1, int8_t miso = -1); + + // Hardware SPI constructor using the default SPI port: expects width & + // height (at default rotation setting 0), 2 signal pins (cs, dc), + // optional reset pin. cs is required but can be -1 if unused -- rather + // than moving it to the optional arguments, it was done this way to + // avoid breaking existing code (-1 option was a later addition). + Adafruit_SPITFT(uint16_t w, uint16_t h, int8_t cs, int8_t dc, + int8_t rst = -1); + +#if !defined(ESP8266) // See notes in .cpp + // Hardware SPI constructor using an arbitrary SPI peripheral: expects + // width & height (rotation 0), SPIClass pointer, 2 signal pins (cs, dc) + // and optional reset pin. cs is required but can be -1 if unused. + Adafruit_SPITFT(uint16_t w, uint16_t h, SPIClass *spiClass, int8_t cs, + int8_t dc, int8_t rst = -1); +#endif // end !ESP8266 + + // Parallel constructor: expects width & height (rotation 0), flag + // indicating whether 16-bit (true) or 8-bit (false) interface, 3 signal + // pins (d0, wr, dc), 3 optional pins (cs, rst, rd). 16-bit parallel + // isn't even fully implemented but the 'wide' flag was added as a + // required argument to avoid ambiguity with other constructors. + Adafruit_SPITFT(uint16_t w, uint16_t h, tftBusWidth busWidth, int8_t d0, + int8_t wr, int8_t dc, int8_t cs = -1, int8_t rst = -1, + int8_t rd = -1); + + // DESTRUCTOR ---------------------------------------------------------- + + ~Adafruit_SPITFT(){}; + + // CLASS MEMBER FUNCTIONS ---------------------------------------------- + + // These first two functions MUST be declared by subclasses: + + /*! + @brief Display-specific initialization function. + @param freq SPI frequency, in hz (or 0 for default or unused). + */ + virtual void begin(uint32_t freq) = 0; + + /*! + @brief Set up the specific display hardware's "address window" + for subsequent pixel-pushing operations. + @param x Leftmost pixel of area to be drawn (MUST be within + display bounds at current rotation setting). + @param y Topmost pixel of area to be drawn (MUST be within + display bounds at current rotation setting). + @param w Width of area to be drawn, in pixels (MUST be >0 and, + added to x, within display bounds at current rotation). + @param h Height of area to be drawn, in pixels (MUST be >0 and, + added to x, within display bounds at current rotation). + */ + virtual void setAddrWindow(uint16_t x, uint16_t y, uint16_t w, + uint16_t h) = 0; + + // Remaining functions do not need to be declared in subclasses + // unless they wish to provide hardware-specific optimizations. + // Brief comments here...documented more thoroughly in .cpp file. + + // Subclass' begin() function invokes this to initialize hardware. + // freq=0 to use default SPI speed. spiMode must be one of the SPI_MODEn + // values defined in SPI.h, which are NOT the same as 0 for SPI_MODE0, + // 1 for SPI_MODE1, etc...use ONLY the SPI_MODEn defines! Only! + // Name is outdated (interface may be parallel) but for compatibility: + void initSPI(uint32_t freq = 0, uint8_t spiMode = SPI_MODE0); + void setSPISpeed(uint32_t freq); + // Chip select and/or hardware SPI transaction start as needed: + void startWrite(void); + // Chip deselect and/or hardware SPI transaction end as needed: + void endWrite(void); + void sendCommand(uint8_t commandByte, uint8_t *dataBytes, + uint8_t numDataBytes); + void sendCommand(uint8_t commandByte, const uint8_t *dataBytes = NULL, + uint8_t numDataBytes = 0); + void sendCommand16(uint16_t commandWord, const uint8_t *dataBytes = NULL, + uint8_t numDataBytes = 0); + uint8_t readcommand8(uint8_t commandByte, uint8_t index = 0); + uint16_t readcommand16(uint16_t addr); + + // These functions require a chip-select and/or SPI transaction + // around them. Higher-level graphics primitives might start a + // single transaction and then make multiple calls to these functions + // (e.g. circle or text rendering might make repeated lines or rects) + // before ending the transaction. It's more efficient than starting a + // transaction every time. + void writePixel(int16_t x, int16_t y, uint16_t color); + void writePixels(uint16_t *colors, uint32_t len, bool block = true, + bool bigEndian = false); + void writeColor(uint16_t color, uint32_t len); + void writeFillRect(int16_t x, int16_t y, int16_t w, int16_t h, + uint16_t color); + void writeFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color); + void writeFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color); + // This is a new function, similar to writeFillRect() except that + // all arguments MUST be onscreen, sorted and clipped. If higher-level + // primitives can handle their own sorting/clipping, it avoids repeating + // such operations in the low-level code, making it potentially faster. + // CALLING THIS WITH UNCLIPPED OR NEGATIVE VALUES COULD BE DISASTROUS. + inline void writeFillRectPreclipped(int16_t x, int16_t y, int16_t w, + int16_t h, uint16_t color); + // Another new function, companion to the new non-blocking + // writePixels() variant. + void dmaWait(void); + // Used by writePixels() in some situations, but might have rare need in + // user code, so it's public... + bool dmaBusy(void) const; // true if DMA is used and busy, false otherwise + void swapBytes(uint16_t *src, uint32_t len, uint16_t *dest = NULL); + + // These functions are similar to the 'write' functions above, but with + // a chip-select and/or SPI transaction built-in. They're typically used + // solo -- that is, as graphics primitives in themselves, not invoked by + // higher-level primitives (which should use the functions above). + void drawPixel(int16_t x, int16_t y, uint16_t color); + void fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); + void drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color); + void drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color); + // A single-pixel push encapsulated in a transaction. I don't think + // this is used anymore (BMP demos might've used it?) but is provided + // for backward compatibility, consider it deprecated: + void pushColor(uint16_t color); + + using Adafruit_GFX::drawRGBBitmap; // Check base class first + void drawRGBBitmap(int16_t x, int16_t y, uint16_t *pcolors, int16_t w, + int16_t h); + + void invertDisplay(bool i); + uint16_t color565(uint8_t r, uint8_t g, uint8_t b); + + // Despite parallel additions, function names kept for compatibility: + void spiWrite(uint8_t b); // Write single byte as DATA + void writeCommand(uint8_t cmd); // Write single byte as COMMAND + uint8_t spiRead(void); // Read single byte of data + void write16(uint16_t w); // Write 16-bit value as DATA + void writeCommand16(uint16_t cmd); // Write 16-bit value as COMMAND + uint16_t read16(void); // Read single 16-bit value + + // Most of these low-level functions were formerly macros in + // Adafruit_SPITFT_Macros.h. Some have been made into inline functions + // to avoid macro mishaps. Despite the addition of code for a parallel + // display interface, the names have been kept for backward + // compatibility (some subclasses may be invoking these): + void SPI_WRITE16(uint16_t w); // Not inline + void SPI_WRITE32(uint32_t l); // Not inline + // Old code had both a spiWrite16() function and SPI_WRITE16 macro + // in addition to the SPI_WRITE32 macro. The latter two have been + // made into functions here, and spiWrite16() removed (use SPI_WRITE16() + // instead). It looks like most subclasses had gotten comfortable with + // SPI_WRITE16 and SPI_WRITE32 anyway so those names were kept rather + // than the less-obnoxious camelcase variants, oh well. + + // Placing these functions entirely in the class definition inlines + // them implicitly them while allowing their use in other code: + + /*! + @brief Set the chip-select line HIGH. Does NOT check whether CS pin + is set (>=0), that should be handled in calling function. + Despite function name, this is used even if the display + connection is parallel. + */ + void SPI_CS_HIGH(void) { +#if defined(USE_FAST_PINIO) +#if defined(HAS_PORT_SET_CLR) +#if defined(KINETISK) + *csPortSet = 1; +#else // !KINETISK + *csPortSet = csPinMask; +#endif // end !KINETISK +#else // !HAS_PORT_SET_CLR + *csPort |= csPinMaskSet; +#endif // end !HAS_PORT_SET_CLR +#else // !USE_FAST_PINIO + digitalWrite(_cs, HIGH); +#endif // end !USE_FAST_PINIO + } + + /*! + @brief Set the chip-select line LOW. Does NOT check whether CS pin + is set (>=0), that should be handled in calling function. + Despite function name, this is used even if the display + connection is parallel. + */ + void SPI_CS_LOW(void) { +#if defined(USE_FAST_PINIO) +#if defined(HAS_PORT_SET_CLR) +#if defined(KINETISK) + *csPortClr = 1; +#else // !KINETISK + *csPortClr = csPinMask; +#endif // end !KINETISK +#else // !HAS_PORT_SET_CLR + *csPort &= csPinMaskClr; +#endif // end !HAS_PORT_SET_CLR +#else // !USE_FAST_PINIO + digitalWrite(_cs, LOW); +#endif // end !USE_FAST_PINIO + } + + /*! + @brief Set the data/command line HIGH (data mode). + */ + void SPI_DC_HIGH(void) { +#if defined(USE_FAST_PINIO) +#if defined(HAS_PORT_SET_CLR) +#if defined(KINETISK) + *dcPortSet = 1; +#else // !KINETISK + *dcPortSet = dcPinMask; +#endif // end !KINETISK +#else // !HAS_PORT_SET_CLR + *dcPort |= dcPinMaskSet; +#endif // end !HAS_PORT_SET_CLR +#else // !USE_FAST_PINIO + digitalWrite(_dc, HIGH); +#endif // end !USE_FAST_PINIO + } + + /*! + @brief Set the data/command line LOW (command mode). + */ + void SPI_DC_LOW(void) { +#if defined(USE_FAST_PINIO) +#if defined(HAS_PORT_SET_CLR) +#if defined(KINETISK) + *dcPortClr = 1; +#else // !KINETISK + *dcPortClr = dcPinMask; +#endif // end !KINETISK +#else // !HAS_PORT_SET_CLR + *dcPort &= dcPinMaskClr; +#endif // end !HAS_PORT_SET_CLR +#else // !USE_FAST_PINIO + digitalWrite(_dc, LOW); +#endif // end !USE_FAST_PINIO + } + +protected: + // A few more low-level member functions -- some may have previously + // been macros. Shouldn't have a need to access these externally, so + // they've been moved to the protected section. Additionally, they're + // declared inline here and the code is in the .cpp file, since outside + // code doesn't need to see these. + inline void SPI_MOSI_HIGH(void); + inline void SPI_MOSI_LOW(void); + inline void SPI_SCK_HIGH(void); + inline void SPI_SCK_LOW(void); + inline bool SPI_MISO_READ(void); + inline void SPI_BEGIN_TRANSACTION(void); + inline void SPI_END_TRANSACTION(void); + inline void TFT_WR_STROBE(void); // Parallel interface write strobe + inline void TFT_RD_HIGH(void); // Parallel interface read high + inline void TFT_RD_LOW(void); // Parallel interface read low + + // CLASS INSTANCE VARIABLES -------------------------------------------- + + // Here be dragons! There's a big union of three structures here -- + // one each for hardware SPI, software (bitbang) SPI, and parallel + // interfaces. This is to save some memory, since a display's connection + // will be only one of these. The order of some things is a little weird + // in an attempt to get values to align and pack better in RAM. + +#if defined(USE_FAST_PINIO) +#if defined(HAS_PORT_SET_CLR) + PORTreg_t csPortSet; ///< PORT register for chip select SET + PORTreg_t csPortClr; ///< PORT register for chip select CLEAR + PORTreg_t dcPortSet; ///< PORT register for data/command SET + PORTreg_t dcPortClr; ///< PORT register for data/command CLEAR +#else // !HAS_PORT_SET_CLR + PORTreg_t csPort; ///< PORT register for chip select + PORTreg_t dcPort; ///< PORT register for data/command +#endif // end HAS_PORT_SET_CLR +#endif // end USE_FAST_PINIO +#if defined(__cplusplus) && (__cplusplus >= 201100) + union { +#endif + struct { // Values specific to HARDWARE SPI: + SPIClass *_spi; ///< SPI class pointer +#if defined(SPI_HAS_TRANSACTION) + SPISettings settings; ///< SPI transaction settings +#else + uint32_t _freq; ///< SPI bitrate (if no SPI transactions) +#endif + uint32_t _mode; ///< SPI data mode (transactions or no) + } hwspi; ///< Hardware SPI values + struct { // Values specific to SOFTWARE SPI: +#if defined(USE_FAST_PINIO) + PORTreg_t misoPort; ///< PORT (PIN) register for MISO +#if defined(HAS_PORT_SET_CLR) + PORTreg_t mosiPortSet; ///< PORT register for MOSI SET + PORTreg_t mosiPortClr; ///< PORT register for MOSI CLEAR + PORTreg_t sckPortSet; ///< PORT register for SCK SET + PORTreg_t sckPortClr; ///< PORT register for SCK CLEAR +#if !defined(KINETISK) + ADAGFX_PORT_t mosiPinMask; ///< Bitmask for MOSI + ADAGFX_PORT_t sckPinMask; ///< Bitmask for SCK +#endif // end !KINETISK +#else // !HAS_PORT_SET_CLR + PORTreg_t mosiPort; ///< PORT register for MOSI + PORTreg_t sckPort; ///< PORT register for SCK + ADAGFX_PORT_t mosiPinMaskSet; ///< Bitmask for MOSI SET (OR) + ADAGFX_PORT_t mosiPinMaskClr; ///< Bitmask for MOSI CLEAR (AND) + ADAGFX_PORT_t sckPinMaskSet; ///< Bitmask for SCK SET (OR bitmask) + ADAGFX_PORT_t sckPinMaskClr; ///< Bitmask for SCK CLEAR (AND) +#endif // end HAS_PORT_SET_CLR +#if !defined(KINETISK) + ADAGFX_PORT_t misoPinMask; ///< Bitmask for MISO +#endif // end !KINETISK +#endif // end USE_FAST_PINIO + int8_t _mosi; ///< MOSI pin # + int8_t _miso; ///< MISO pin # + int8_t _sck; ///< SCK pin # + } swspi; ///< Software SPI values + struct { // Values specific to 8-bit parallel: +#if defined(USE_FAST_PINIO) + +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) // Teensy 4.x + volatile uint32_t *writePort; ///< PORT register for DATA WRITE + volatile uint32_t *readPort; ///< PORT (PIN) register for DATA READ +#else + volatile uint8_t *writePort; ///< PORT register for DATA WRITE + volatile uint8_t *readPort; ///< PORT (PIN) register for DATA READ +#endif +#if defined(HAS_PORT_SET_CLR) + // Port direction register pointers are always 8-bit regardless of + // PORTreg_t -- even if 32-bit port, we modify a byte-aligned 8 bits. +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) // Teensy 4.x + volatile uint32_t *dirSet; ///< PORT byte data direction SET + volatile uint32_t *dirClr; ///< PORT byte data direction CLEAR +#else + volatile uint8_t *dirSet; ///< PORT byte data direction SET + volatile uint8_t *dirClr; ///< PORT byte data direction CLEAR +#endif + PORTreg_t wrPortSet; ///< PORT register for write strobe SET + PORTreg_t wrPortClr; ///< PORT register for write strobe CLEAR + PORTreg_t rdPortSet; ///< PORT register for read strobe SET + PORTreg_t rdPortClr; ///< PORT register for read strobe CLEAR +#if !defined(KINETISK) + ADAGFX_PORT_t wrPinMask; ///< Bitmask for write strobe +#endif // end !KINETISK + ADAGFX_PORT_t rdPinMask; ///< Bitmask for read strobe +#else // !HAS_PORT_SET_CLR + // Port direction register pointer is always 8-bit regardless of + // PORTreg_t -- even if 32-bit port, we modify a byte-aligned 8 bits. + volatile uint8_t *portDir; ///< PORT direction register + PORTreg_t wrPort; ///< PORT register for write strobe + PORTreg_t rdPort; ///< PORT register for read strobe + ADAGFX_PORT_t wrPinMaskSet; ///< Bitmask for write strobe SET (OR) + ADAGFX_PORT_t wrPinMaskClr; ///< Bitmask for write strobe CLEAR (AND) + ADAGFX_PORT_t rdPinMaskSet; ///< Bitmask for read strobe SET (OR) + ADAGFX_PORT_t rdPinMaskClr; ///< Bitmask for read strobe CLEAR (AND) +#endif // end HAS_PORT_SET_CLR +#endif // end USE_FAST_PINIO + int8_t _d0; ///< Data pin 0 # + int8_t _wr; ///< Write strobe pin # + int8_t _rd; ///< Read strobe pin # (or -1) + bool wide = 0; ///< If true, is 16-bit interface + } tft8; ///< Parallel interface settings +#if defined(__cplusplus) && (__cplusplus >= 201100) + }; ///< Only one interface is active +#endif +#if defined(USE_SPI_DMA) && \ + (defined(__SAMD51__) || \ + defined(ARDUINO_SAMD_ZERO)) // Used by hardware SPI and tft8 + Adafruit_ZeroDMA dma; ///< DMA instance + DmacDescriptor *dptr = NULL; ///< 1st descriptor + DmacDescriptor *descriptor = NULL; ///< Allocated descriptor list + uint16_t *pixelBuf[2]; ///< Working buffers + uint16_t maxFillLen; ///< Max pixels per DMA xfer + uint16_t lastFillColor = 0; ///< Last color used w/fill + uint32_t lastFillLen = 0; ///< # of pixels w/last fill + uint8_t onePixelBuf; ///< For hi==lo fill +#endif +#if defined(USE_FAST_PINIO) +#if defined(HAS_PORT_SET_CLR) +#if !defined(KINETISK) + ADAGFX_PORT_t csPinMask; ///< Bitmask for chip select + ADAGFX_PORT_t dcPinMask; ///< Bitmask for data/command +#endif // end !KINETISK +#else // !HAS_PORT_SET_CLR + ADAGFX_PORT_t csPinMaskSet; ///< Bitmask for chip select SET (OR) + ADAGFX_PORT_t csPinMaskClr; ///< Bitmask for chip select CLEAR (AND) + ADAGFX_PORT_t dcPinMaskSet; ///< Bitmask for data/command SET (OR) + ADAGFX_PORT_t dcPinMaskClr; ///< Bitmask for data/command CLEAR (AND) +#endif // end HAS_PORT_SET_CLR +#endif // end USE_FAST_PINIO + uint8_t connection; ///< TFT_HARD_SPI, TFT_SOFT_SPI, etc. + int8_t _rst; ///< Reset pin # (or -1) + int8_t _cs; ///< Chip select pin # (or -1) + int8_t _dc; ///< Data/command pin # + + int16_t _xstart = 0; ///< Internal framebuffer X offset + int16_t _ystart = 0; ///< Internal framebuffer Y offset + uint8_t invertOnCommand = 0; ///< Command to enable invert mode + uint8_t invertOffCommand = 0; ///< Command to disable invert mode + + uint32_t _freq = 0; ///< Dummy var to keep subclasses happy +}; + +#endif // end __AVR_ATtiny85__ __AVR_ATtiny84__ +#endif // end _ADAFRUIT_SPITFT_H_ diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Adafruit_SPITFT_Macros.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Adafruit_SPITFT_Macros.h new file mode 100644 index 0000000..fcd6253 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Adafruit_SPITFT_Macros.h @@ -0,0 +1,6 @@ +// THIS FILE INTENTIONALLY LEFT BLANK. + +// Macros previously #defined here have been made into (mostly) inline +// functions in the Adafruit_SPITFT class. Other libraries might still +// contain code trying to #include this header file, so until everything's +// updated this file still exists (but doing nothing) to avoid trouble. diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/CMakeLists.txt b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/CMakeLists.txt new file mode 100644 index 0000000..531c721 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/CMakeLists.txt @@ -0,0 +1,11 @@ +# Adafruit GFX Library +# https://github.com/adafruit/Adafruit-GFX-Library +# BSD License + +cmake_minimum_required(VERSION 3.5) + +idf_component_register(SRCS "Adafruit_GFX.cpp" "Adafruit_GrayOLED.cpp" "Adafruit_SPITFT.cpp" "glcdfont.c" + INCLUDE_DIRS "." + REQUIRES arduino Adafruit_BusIO) + +project(Adafruit-GFX-Library) diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMono12pt7b.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMono12pt7b.h new file mode 100644 index 0000000..d124f20 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMono12pt7b.h @@ -0,0 +1,229 @@ +#pragma once +#include + +const uint8_t FreeMono12pt7bBitmaps[] PROGMEM = { + 0x49, 0x24, 0x92, 0x48, 0x01, 0xF8, 0xE7, 0xE7, 0x67, 0x42, 0x42, 0x42, + 0x42, 0x09, 0x02, 0x41, 0x10, 0x44, 0x11, 0x1F, 0xF1, 0x10, 0x4C, 0x12, + 0x3F, 0xE1, 0x20, 0x48, 0x12, 0x04, 0x81, 0x20, 0x48, 0x04, 0x07, 0xA2, + 0x19, 0x02, 0x40, 0x10, 0x03, 0x00, 0x3C, 0x00, 0x80, 0x10, 0x06, 0x01, + 0xE0, 0xA7, 0xC0, 0x40, 0x10, 0x04, 0x00, 0x3C, 0x19, 0x84, 0x21, 0x08, + 0x66, 0x0F, 0x00, 0x0C, 0x1C, 0x78, 0x01, 0xE0, 0xCC, 0x21, 0x08, 0x43, + 0x30, 0x78, 0x3E, 0x30, 0x10, 0x08, 0x02, 0x03, 0x03, 0x47, 0x14, 0x8A, + 0x43, 0x11, 0x8F, 0x60, 0xFD, 0xA4, 0x90, 0x05, 0x25, 0x24, 0x92, 0x48, + 0x92, 0x24, 0x11, 0x24, 0x89, 0x24, 0x92, 0x92, 0x90, 0x00, 0x04, 0x02, + 0x11, 0x07, 0xF0, 0xC0, 0x50, 0x48, 0x42, 0x00, 0x08, 0x04, 0x02, 0x01, + 0x00, 0x87, 0xFC, 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, 0x3B, 0x9C, 0xCE, + 0x62, 0x00, 0xFF, 0xE0, 0xFF, 0x80, 0x00, 0x80, 0xC0, 0x40, 0x20, 0x20, + 0x10, 0x10, 0x08, 0x08, 0x04, 0x04, 0x02, 0x02, 0x01, 0x01, 0x00, 0x80, + 0x80, 0x40, 0x00, 0x1C, 0x31, 0x90, 0x58, 0x38, 0x0C, 0x06, 0x03, 0x01, + 0x80, 0xC0, 0x60, 0x30, 0x34, 0x13, 0x18, 0x70, 0x30, 0xE1, 0x44, 0x81, + 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x81, 0x1F, 0xC0, 0x1E, 0x10, 0x90, + 0x68, 0x10, 0x08, 0x0C, 0x04, 0x04, 0x04, 0x06, 0x06, 0x06, 0x06, 0x0E, + 0x07, 0xFE, 0x3E, 0x10, 0x40, 0x08, 0x02, 0x00, 0x80, 0x40, 0xE0, 0x04, + 0x00, 0x80, 0x10, 0x04, 0x01, 0x00, 0xD8, 0x63, 0xE0, 0x06, 0x0A, 0x0A, + 0x12, 0x22, 0x22, 0x42, 0x42, 0x82, 0x82, 0xFF, 0x02, 0x02, 0x02, 0x0F, + 0x7F, 0x20, 0x10, 0x08, 0x04, 0x02, 0xF1, 0x8C, 0x03, 0x00, 0x80, 0x40, + 0x20, 0x18, 0x16, 0x18, 0xF0, 0x0F, 0x8C, 0x08, 0x08, 0x04, 0x04, 0x02, + 0x79, 0x46, 0xC1, 0xE0, 0x60, 0x28, 0x14, 0x19, 0x08, 0x78, 0xFF, 0x81, + 0x81, 0x02, 0x02, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, + 0x08, 0x3E, 0x31, 0xB0, 0x70, 0x18, 0x0C, 0x05, 0x8C, 0x38, 0x63, 0x40, + 0x60, 0x30, 0x18, 0x1B, 0x18, 0xF8, 0x3C, 0x31, 0x30, 0x50, 0x28, 0x0C, + 0x0F, 0x06, 0x85, 0x3C, 0x80, 0x40, 0x40, 0x20, 0x20, 0x63, 0xE0, 0xFF, + 0x80, 0x07, 0xFC, 0x39, 0xCE, 0x00, 0x00, 0x06, 0x33, 0x98, 0xC4, 0x00, + 0x00, 0xC0, 0x60, 0x18, 0x0C, 0x06, 0x01, 0x80, 0x0C, 0x00, 0x60, 0x03, + 0x00, 0x30, 0x01, 0x00, 0xFF, 0xF0, 0x00, 0x00, 0x0F, 0xFF, 0xC0, 0x06, + 0x00, 0x30, 0x01, 0x80, 0x18, 0x01, 0x80, 0xC0, 0x30, 0x18, 0x0C, 0x02, + 0x00, 0x00, 0x3E, 0x60, 0xA0, 0x20, 0x10, 0x08, 0x08, 0x18, 0x10, 0x08, + 0x00, 0x00, 0x00, 0x01, 0xC0, 0xE0, 0x1C, 0x31, 0x10, 0x50, 0x28, 0x14, + 0x3A, 0x25, 0x22, 0x91, 0x4C, 0xA3, 0xF0, 0x08, 0x02, 0x01, 0x80, 0x7C, + 0x3F, 0x00, 0x0C, 0x00, 0x48, 0x01, 0x20, 0x04, 0x40, 0x21, 0x00, 0x84, + 0x04, 0x08, 0x1F, 0xE0, 0x40, 0x82, 0x01, 0x08, 0x04, 0x20, 0x13, 0xE1, + 0xF0, 0xFF, 0x08, 0x11, 0x01, 0x20, 0x24, 0x04, 0x81, 0x1F, 0xC2, 0x06, + 0x40, 0x68, 0x05, 0x00, 0xA0, 0x14, 0x05, 0xFF, 0x00, 0x1E, 0x48, 0x74, + 0x05, 0x01, 0x80, 0x20, 0x08, 0x02, 0x00, 0x80, 0x20, 0x04, 0x01, 0x01, + 0x30, 0x87, 0xC0, 0xFE, 0x10, 0x44, 0x09, 0x02, 0x40, 0x50, 0x14, 0x05, + 0x01, 0x40, 0x50, 0x14, 0x0D, 0x02, 0x41, 0x3F, 0x80, 0xFF, 0xC8, 0x09, + 0x01, 0x20, 0x04, 0x00, 0x88, 0x1F, 0x02, 0x20, 0x40, 0x08, 0x01, 0x00, + 0xA0, 0x14, 0x03, 0xFF, 0xC0, 0xFF, 0xE8, 0x05, 0x00, 0xA0, 0x04, 0x00, + 0x88, 0x1F, 0x02, 0x20, 0x40, 0x08, 0x01, 0x00, 0x20, 0x04, 0x01, 0xF0, + 0x00, 0x1F, 0x46, 0x19, 0x01, 0x60, 0x28, 0x01, 0x00, 0x20, 0x04, 0x00, + 0x83, 0xF0, 0x0B, 0x01, 0x20, 0x23, 0x0C, 0x3E, 0x00, 0xE1, 0xD0, 0x24, + 0x09, 0x02, 0x40, 0x90, 0x27, 0xF9, 0x02, 0x40, 0x90, 0x24, 0x09, 0x02, + 0x40, 0xB8, 0x70, 0xFE, 0x20, 0x40, 0x81, 0x02, 0x04, 0x08, 0x10, 0x20, + 0x40, 0x81, 0x1F, 0xC0, 0x0F, 0xE0, 0x10, 0x02, 0x00, 0x40, 0x08, 0x01, + 0x00, 0x20, 0x04, 0x80, 0x90, 0x12, 0x02, 0x40, 0xC6, 0x30, 0x7C, 0x00, + 0xF1, 0xE4, 0x0C, 0x41, 0x04, 0x20, 0x44, 0x04, 0x80, 0x5C, 0x06, 0x60, + 0x43, 0x04, 0x10, 0x40, 0x84, 0x08, 0x40, 0xCF, 0x07, 0xF8, 0x04, 0x00, + 0x80, 0x10, 0x02, 0x00, 0x40, 0x08, 0x01, 0x00, 0x20, 0x04, 0x04, 0x80, + 0x90, 0x12, 0x03, 0xFF, 0xC0, 0xE0, 0x3B, 0x01, 0x94, 0x14, 0xA0, 0xA4, + 0x89, 0x24, 0x49, 0x14, 0x48, 0xA2, 0x45, 0x12, 0x10, 0x90, 0x04, 0x80, + 0x24, 0x01, 0x78, 0x3C, 0xE0, 0xF6, 0x02, 0x50, 0x25, 0x02, 0x48, 0x24, + 0xC2, 0x44, 0x24, 0x22, 0x43, 0x24, 0x12, 0x40, 0xA4, 0x0A, 0x40, 0x6F, + 0x06, 0x0F, 0x03, 0x0C, 0x60, 0x64, 0x02, 0x80, 0x18, 0x01, 0x80, 0x18, + 0x01, 0x80, 0x18, 0x01, 0x40, 0x26, 0x06, 0x30, 0xC0, 0xF0, 0xFF, 0x10, + 0x64, 0x05, 0x01, 0x40, 0x50, 0x34, 0x19, 0xFC, 0x40, 0x10, 0x04, 0x01, + 0x00, 0x40, 0x3E, 0x00, 0x0F, 0x03, 0x0C, 0x60, 0x64, 0x02, 0x80, 0x18, + 0x01, 0x80, 0x18, 0x01, 0x80, 0x18, 0x01, 0x40, 0x26, 0x06, 0x30, 0xC1, + 0xF0, 0x0C, 0x01, 0xF1, 0x30, 0xE0, 0xFF, 0x04, 0x18, 0x40, 0xC4, 0x04, + 0x40, 0x44, 0x0C, 0x41, 0x87, 0xE0, 0x43, 0x04, 0x10, 0x40, 0x84, 0x04, + 0x40, 0x4F, 0x03, 0x1F, 0x48, 0x34, 0x05, 0x01, 0x40, 0x08, 0x01, 0xC0, + 0x0E, 0x00, 0x40, 0x18, 0x06, 0x01, 0xE1, 0xA7, 0xC0, 0xFF, 0xF0, 0x86, + 0x10, 0x82, 0x00, 0x40, 0x08, 0x01, 0x00, 0x20, 0x04, 0x00, 0x80, 0x10, + 0x02, 0x00, 0x40, 0x7F, 0x00, 0xF0, 0xF4, 0x02, 0x40, 0x24, 0x02, 0x40, + 0x24, 0x02, 0x40, 0x24, 0x02, 0x40, 0x24, 0x02, 0x40, 0x22, 0x04, 0x30, + 0xC0, 0xF0, 0xF8, 0x7C, 0x80, 0x22, 0x01, 0x04, 0x04, 0x10, 0x20, 0x40, + 0x80, 0x82, 0x02, 0x10, 0x08, 0x40, 0x11, 0x00, 0x48, 0x01, 0xA0, 0x03, + 0x00, 0x0C, 0x00, 0xF8, 0x7C, 0x80, 0x22, 0x00, 0x88, 0xC2, 0x23, 0x10, + 0x8E, 0x42, 0x29, 0x09, 0x24, 0x24, 0x90, 0x91, 0x41, 0x85, 0x06, 0x14, + 0x18, 0x70, 0x60, 0x80, 0xF0, 0xF2, 0x06, 0x30, 0x41, 0x08, 0x09, 0x80, + 0x50, 0x06, 0x00, 0x60, 0x0D, 0x00, 0x88, 0x10, 0xC2, 0x04, 0x60, 0x2F, + 0x0F, 0xF0, 0xF2, 0x02, 0x10, 0x41, 0x04, 0x08, 0x80, 0x50, 0x05, 0x00, + 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x01, 0xFC, 0xFF, 0x40, + 0xA0, 0x90, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x10, 0x50, 0x30, 0x18, + 0x0F, 0xFC, 0xF2, 0x49, 0x24, 0x92, 0x49, 0x24, 0x9C, 0x80, 0x60, 0x10, + 0x08, 0x02, 0x01, 0x00, 0x40, 0x20, 0x08, 0x04, 0x01, 0x00, 0x80, 0x20, + 0x10, 0x04, 0x02, 0x00, 0x80, 0x40, 0xE4, 0x92, 0x49, 0x24, 0x92, 0x49, + 0x3C, 0x08, 0x0C, 0x09, 0x0C, 0x4C, 0x14, 0x04, 0xFF, 0xFC, 0x84, 0x21, + 0x3E, 0x00, 0x60, 0x08, 0x02, 0x3F, 0x98, 0x28, 0x0A, 0x02, 0xC3, 0x9F, + 0x30, 0xE0, 0x01, 0x00, 0x08, 0x00, 0x40, 0x02, 0x00, 0x13, 0xE0, 0xA0, + 0x86, 0x02, 0x20, 0x09, 0x00, 0x48, 0x02, 0x40, 0x13, 0x01, 0x14, 0x1B, + 0x9F, 0x00, 0x1F, 0x4C, 0x19, 0x01, 0x40, 0x28, 0x01, 0x00, 0x20, 0x02, + 0x00, 0x60, 0x43, 0xF0, 0x00, 0xC0, 0x08, 0x01, 0x00, 0x20, 0x04, 0x3C, + 0x98, 0x52, 0x06, 0x80, 0x50, 0x0A, 0x01, 0x40, 0x24, 0x0C, 0xC2, 0x87, + 0x98, 0x3F, 0x18, 0x68, 0x06, 0x01, 0xFF, 0xE0, 0x08, 0x03, 0x00, 0x60, + 0xC7, 0xC0, 0x0F, 0x98, 0x08, 0x04, 0x02, 0x07, 0xF8, 0x80, 0x40, 0x20, + 0x10, 0x08, 0x04, 0x02, 0x01, 0x03, 0xF8, 0x1E, 0x6C, 0x39, 0x03, 0x40, + 0x28, 0x05, 0x00, 0xA0, 0x12, 0x06, 0x61, 0x43, 0xC8, 0x01, 0x00, 0x20, + 0x08, 0x3E, 0x00, 0xC0, 0x10, 0x04, 0x01, 0x00, 0x40, 0x13, 0x87, 0x11, + 0x82, 0x40, 0x90, 0x24, 0x09, 0x02, 0x40, 0x90, 0x2E, 0x1C, 0x08, 0x04, + 0x02, 0x00, 0x00, 0x03, 0xC0, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x00, + 0x80, 0x43, 0xFE, 0x04, 0x08, 0x10, 0x00, 0x1F, 0xC0, 0x81, 0x02, 0x04, + 0x08, 0x10, 0x20, 0x40, 0x81, 0x02, 0x0B, 0xE0, 0xE0, 0x02, 0x00, 0x20, + 0x02, 0x00, 0x20, 0x02, 0x3C, 0x21, 0x02, 0x60, 0x2C, 0x03, 0x80, 0x24, + 0x02, 0x20, 0x21, 0x02, 0x08, 0xE1, 0xF0, 0x78, 0x04, 0x02, 0x01, 0x00, + 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x00, 0x80, 0x43, 0xFE, + 0xDC, 0xE3, 0x19, 0x90, 0x84, 0x84, 0x24, 0x21, 0x21, 0x09, 0x08, 0x48, + 0x42, 0x42, 0x17, 0x18, 0xC0, 0x67, 0x83, 0x84, 0x20, 0x22, 0x02, 0x20, + 0x22, 0x02, 0x20, 0x22, 0x02, 0x20, 0x2F, 0x07, 0x1F, 0x04, 0x11, 0x01, + 0x40, 0x18, 0x03, 0x00, 0x60, 0x0A, 0x02, 0x20, 0x83, 0xE0, 0xCF, 0x85, + 0x06, 0x60, 0x24, 0x01, 0x40, 0x14, 0x01, 0x40, 0x16, 0x02, 0x50, 0x44, + 0xF8, 0x40, 0x04, 0x00, 0x40, 0x0F, 0x00, 0x1E, 0x6C, 0x3B, 0x03, 0x40, + 0x28, 0x05, 0x00, 0xA0, 0x12, 0x06, 0x61, 0x43, 0xC8, 0x01, 0x00, 0x20, + 0x04, 0x03, 0xC0, 0xE3, 0x8B, 0x13, 0x80, 0x80, 0x20, 0x08, 0x02, 0x00, + 0x80, 0x20, 0x3F, 0x80, 0x1F, 0x58, 0x34, 0x05, 0x80, 0x1E, 0x00, 0x60, + 0x06, 0x01, 0xC0, 0xAF, 0xC0, 0x20, 0x04, 0x00, 0x80, 0x10, 0x0F, 0xF0, + 0x40, 0x08, 0x01, 0x00, 0x20, 0x04, 0x00, 0x80, 0x10, 0x03, 0x04, 0x3F, + 0x00, 0xC1, 0xC8, 0x09, 0x01, 0x20, 0x24, 0x04, 0x80, 0x90, 0x12, 0x02, + 0x61, 0xC7, 0xCC, 0xF8, 0xF9, 0x01, 0x08, 0x10, 0x60, 0x81, 0x08, 0x08, + 0x40, 0x22, 0x01, 0x20, 0x05, 0x00, 0x30, 0x00, 0xF0, 0x7A, 0x01, 0x10, + 0x08, 0x8C, 0x42, 0x62, 0x12, 0x90, 0xA5, 0x05, 0x18, 0x28, 0xC0, 0x86, + 0x00, 0x78, 0xF3, 0x04, 0x18, 0x80, 0xD0, 0x06, 0x00, 0x70, 0x09, 0x81, + 0x0C, 0x20, 0x6F, 0x8F, 0xF0, 0xF2, 0x02, 0x20, 0x41, 0x04, 0x10, 0x80, + 0x88, 0x09, 0x00, 0x50, 0x06, 0x00, 0x20, 0x04, 0x00, 0x40, 0x08, 0x0F, + 0xE0, 0xFF, 0x41, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x40, 0xBF, + 0xC0, 0x19, 0x08, 0x42, 0x10, 0x84, 0x64, 0x18, 0x42, 0x10, 0x84, 0x20, + 0xC0, 0xFF, 0xFF, 0xC0, 0xC1, 0x08, 0x42, 0x10, 0x84, 0x10, 0x4C, 0x42, + 0x10, 0x84, 0x26, 0x00, 0x38, 0x13, 0x38, 0x38}; + +const GFXglyph FreeMono12pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 14, 0, 1}, // 0x20 ' ' + {0, 3, 15, 14, 6, -14}, // 0x21 '!' + {6, 8, 7, 14, 3, -14}, // 0x22 '"' + {13, 10, 16, 14, 2, -14}, // 0x23 '#' + {33, 10, 17, 14, 2, -14}, // 0x24 '$' + {55, 10, 15, 14, 2, -14}, // 0x25 '%' + {74, 9, 12, 14, 3, -11}, // 0x26 '&' + {88, 3, 7, 14, 5, -14}, // 0x27 ''' + {91, 3, 18, 14, 7, -14}, // 0x28 '(' + {98, 3, 18, 14, 4, -14}, // 0x29 ')' + {105, 9, 9, 14, 3, -14}, // 0x2A '*' + {116, 9, 11, 14, 3, -11}, // 0x2B '+' + {129, 5, 7, 14, 3, -3}, // 0x2C ',' + {134, 11, 1, 14, 2, -6}, // 0x2D '-' + {136, 3, 3, 14, 5, -2}, // 0x2E '.' + {138, 9, 18, 14, 3, -15}, // 0x2F '/' + {159, 9, 15, 14, 3, -14}, // 0x30 '0' + {176, 7, 14, 14, 4, -13}, // 0x31 '1' + {189, 9, 15, 14, 2, -14}, // 0x32 '2' + {206, 10, 15, 14, 2, -14}, // 0x33 '3' + {225, 8, 15, 14, 3, -14}, // 0x34 '4' + {240, 9, 15, 14, 3, -14}, // 0x35 '5' + {257, 9, 15, 14, 3, -14}, // 0x36 '6' + {274, 8, 15, 14, 3, -14}, // 0x37 '7' + {289, 9, 15, 14, 3, -14}, // 0x38 '8' + {306, 9, 15, 14, 3, -14}, // 0x39 '9' + {323, 3, 10, 14, 5, -9}, // 0x3A ':' + {327, 5, 13, 14, 3, -9}, // 0x3B ';' + {336, 11, 11, 14, 2, -11}, // 0x3C '<' + {352, 12, 4, 14, 1, -8}, // 0x3D '=' + {358, 11, 11, 14, 2, -11}, // 0x3E '>' + {374, 9, 14, 14, 3, -13}, // 0x3F '?' + {390, 9, 16, 14, 3, -14}, // 0x40 '@' + {408, 14, 14, 14, 0, -13}, // 0x41 'A' + {433, 11, 14, 14, 2, -13}, // 0x42 'B' + {453, 10, 14, 14, 2, -13}, // 0x43 'C' + {471, 10, 14, 14, 2, -13}, // 0x44 'D' + {489, 11, 14, 14, 2, -13}, // 0x45 'E' + {509, 11, 14, 14, 2, -13}, // 0x46 'F' + {529, 11, 14, 14, 2, -13}, // 0x47 'G' + {549, 10, 14, 14, 2, -13}, // 0x48 'H' + {567, 7, 14, 14, 4, -13}, // 0x49 'I' + {580, 11, 14, 14, 2, -13}, // 0x4A 'J' + {600, 12, 14, 14, 2, -13}, // 0x4B 'K' + {621, 11, 14, 14, 2, -13}, // 0x4C 'L' + {641, 13, 14, 14, 1, -13}, // 0x4D 'M' + {664, 12, 14, 14, 1, -13}, // 0x4E 'N' + {685, 12, 14, 14, 1, -13}, // 0x4F 'O' + {706, 10, 14, 14, 2, -13}, // 0x50 'P' + {724, 12, 17, 14, 1, -13}, // 0x51 'Q' + {750, 12, 14, 14, 2, -13}, // 0x52 'R' + {771, 10, 14, 14, 2, -13}, // 0x53 'S' + {789, 11, 14, 14, 2, -13}, // 0x54 'T' + {809, 12, 14, 14, 1, -13}, // 0x55 'U' + {830, 14, 14, 14, 0, -13}, // 0x56 'V' + {855, 14, 14, 14, 0, -13}, // 0x57 'W' + {880, 12, 14, 14, 1, -13}, // 0x58 'X' + {901, 12, 14, 14, 1, -13}, // 0x59 'Y' + {922, 9, 14, 14, 3, -13}, // 0x5A 'Z' + {938, 3, 18, 14, 7, -14}, // 0x5B '[' + {945, 9, 18, 14, 3, -15}, // 0x5C '\' + {966, 3, 18, 14, 5, -14}, // 0x5D ']' + {973, 9, 6, 14, 3, -14}, // 0x5E '^' + {980, 14, 1, 14, 0, 3}, // 0x5F '_' + {982, 4, 4, 14, 4, -15}, // 0x60 '`' + {984, 10, 10, 14, 2, -9}, // 0x61 'a' + {997, 13, 15, 14, 0, -14}, // 0x62 'b' + {1022, 11, 10, 14, 2, -9}, // 0x63 'c' + {1036, 11, 15, 14, 2, -14}, // 0x64 'd' + {1057, 10, 10, 14, 2, -9}, // 0x65 'e' + {1070, 9, 15, 14, 4, -14}, // 0x66 'f' + {1087, 11, 14, 14, 2, -9}, // 0x67 'g' + {1107, 10, 15, 14, 2, -14}, // 0x68 'h' + {1126, 9, 15, 14, 3, -14}, // 0x69 'i' + {1143, 7, 19, 14, 3, -14}, // 0x6A 'j' + {1160, 12, 15, 14, 1, -14}, // 0x6B 'k' + {1183, 9, 15, 14, 3, -14}, // 0x6C 'l' + {1200, 13, 10, 14, 1, -9}, // 0x6D 'm' + {1217, 12, 10, 14, 1, -9}, // 0x6E 'n' + {1232, 11, 10, 14, 2, -9}, // 0x6F 'o' + {1246, 12, 14, 14, 1, -9}, // 0x70 'p' + {1267, 11, 14, 14, 2, -9}, // 0x71 'q' + {1287, 10, 10, 14, 3, -9}, // 0x72 'r' + {1300, 10, 10, 14, 2, -9}, // 0x73 's' + {1313, 11, 14, 14, 1, -13}, // 0x74 't' + {1333, 11, 10, 14, 2, -9}, // 0x75 'u' + {1347, 13, 10, 14, 1, -9}, // 0x76 'v' + {1364, 13, 10, 14, 1, -9}, // 0x77 'w' + {1381, 12, 10, 14, 1, -9}, // 0x78 'x' + {1396, 12, 14, 14, 1, -9}, // 0x79 'y' + {1417, 9, 10, 14, 3, -9}, // 0x7A 'z' + {1429, 5, 18, 14, 5, -14}, // 0x7B '{' + {1441, 1, 18, 14, 7, -14}, // 0x7C '|' + {1444, 5, 18, 14, 5, -14}, // 0x7D '}' + {1456, 10, 3, 14, 2, -7}}; // 0x7E '~' + +const GFXfont FreeMono12pt7b PROGMEM = {(uint8_t *)FreeMono12pt7bBitmaps, + (GFXglyph *)FreeMono12pt7bGlyphs, 0x20, + 0x7E, 24}; + +// Approx. 2132 bytes diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMono18pt7b.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMono18pt7b.h new file mode 100644 index 0000000..6a3641c --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMono18pt7b.h @@ -0,0 +1,365 @@ +#pragma once +#include + +const uint8_t FreeMono18pt7bBitmaps[] PROGMEM = { + 0x27, 0x77, 0x77, 0x77, 0x77, 0x22, 0x22, 0x20, 0x00, 0x6F, 0xF6, 0xF1, + 0xFE, 0x3F, 0xC7, 0xF8, 0xFF, 0x1E, 0xC3, 0x98, 0x33, 0x06, 0x60, 0xCC, + 0x18, 0x04, 0x20, 0x10, 0x80, 0x42, 0x01, 0x08, 0x04, 0x20, 0x10, 0x80, + 0x42, 0x01, 0x10, 0x04, 0x41, 0xFF, 0xF0, 0x44, 0x02, 0x10, 0x08, 0x40, + 0x21, 0x0F, 0xFF, 0xC2, 0x10, 0x08, 0x40, 0x21, 0x00, 0x84, 0x02, 0x10, + 0x08, 0x40, 0x23, 0x00, 0x88, 0x02, 0x20, 0x02, 0x00, 0x10, 0x00, 0x80, + 0x1F, 0xA3, 0x07, 0x10, 0x09, 0x00, 0x48, 0x00, 0x40, 0x03, 0x00, 0x0C, + 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x18, 0x00, 0x20, 0x01, 0x80, 0x0C, 0x00, + 0x70, 0x05, 0xE0, 0xC9, 0xF8, 0x01, 0x00, 0x08, 0x00, 0x40, 0x02, 0x00, + 0x10, 0x00, 0x1E, 0x00, 0x42, 0x01, 0x02, 0x02, 0x04, 0x04, 0x08, 0x08, + 0x10, 0x08, 0x40, 0x0F, 0x00, 0x00, 0x1E, 0x01, 0xF0, 0x1F, 0x01, 0xE0, + 0x0E, 0x00, 0x00, 0x3C, 0x00, 0x86, 0x02, 0x06, 0x04, 0x04, 0x08, 0x08, + 0x10, 0x30, 0x10, 0xC0, 0x1E, 0x00, 0x0F, 0xC1, 0x00, 0x20, 0x02, 0x00, + 0x20, 0x02, 0x00, 0x10, 0x01, 0x00, 0x08, 0x03, 0xC0, 0x6C, 0x3C, 0x62, + 0x82, 0x68, 0x34, 0x81, 0xCC, 0x08, 0x61, 0xC3, 0xE7, 0xFF, 0xFF, 0xF6, + 0x66, 0x66, 0x08, 0xC4, 0x62, 0x31, 0x8C, 0xC6, 0x31, 0x8C, 0x63, 0x18, + 0xC3, 0x18, 0xC2, 0x18, 0xC3, 0x18, 0x86, 0x10, 0xC2, 0x18, 0xC6, 0x10, + 0xC6, 0x31, 0x8C, 0x63, 0x18, 0x8C, 0x62, 0x31, 0x98, 0x80, 0x02, 0x00, + 0x10, 0x00, 0x80, 0x04, 0x0C, 0x21, 0x9D, 0x70, 0x1C, 0x00, 0xA0, 0x0D, + 0x80, 0xC6, 0x04, 0x10, 0x40, 0x80, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, + 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0xFF, 0xFE, 0x02, + 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, + 0x01, 0x00, 0x3E, 0x78, 0xF3, 0xC7, 0x8E, 0x18, 0x70, 0xC1, 0x80, 0xFF, + 0xFE, 0x77, 0xFF, 0xF7, 0x00, 0x00, 0x08, 0x00, 0xC0, 0x04, 0x00, 0x60, + 0x02, 0x00, 0x30, 0x01, 0x00, 0x18, 0x00, 0x80, 0x0C, 0x00, 0x40, 0x02, + 0x00, 0x20, 0x01, 0x00, 0x10, 0x00, 0x80, 0x08, 0x00, 0x40, 0x04, 0x00, + 0x20, 0x02, 0x00, 0x10, 0x01, 0x00, 0x08, 0x00, 0x80, 0x04, 0x00, 0x00, + 0x0F, 0x81, 0x82, 0x08, 0x08, 0x80, 0x24, 0x01, 0x60, 0x0E, 0x00, 0x30, + 0x01, 0x80, 0x0C, 0x00, 0x60, 0x03, 0x00, 0x18, 0x00, 0xC0, 0x06, 0x00, + 0x30, 0x03, 0x40, 0x12, 0x00, 0x88, 0x08, 0x60, 0xC0, 0xF8, 0x00, 0x06, + 0x00, 0x70, 0x06, 0x80, 0x64, 0x06, 0x20, 0x31, 0x00, 0x08, 0x00, 0x40, + 0x02, 0x00, 0x10, 0x00, 0x80, 0x04, 0x00, 0x20, 0x01, 0x00, 0x08, 0x00, + 0x40, 0x02, 0x00, 0x10, 0x00, 0x80, 0x04, 0x0F, 0xFF, 0x80, 0x0F, 0x80, + 0xC3, 0x08, 0x04, 0x80, 0x24, 0x00, 0x80, 0x04, 0x00, 0x20, 0x02, 0x00, + 0x10, 0x01, 0x00, 0x10, 0x01, 0x80, 0x18, 0x01, 0x80, 0x18, 0x01, 0x80, + 0x18, 0x01, 0x80, 0x58, 0x03, 0x80, 0x1F, 0xFF, 0x80, 0x0F, 0xC0, 0xC0, + 0x86, 0x01, 0x00, 0x02, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, 0x04, 0x00, + 0x20, 0x0F, 0x00, 0x06, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x40, + 0x01, 0x00, 0x04, 0x00, 0x2C, 0x01, 0x9C, 0x0C, 0x0F, 0xC0, 0x01, 0xC0, + 0x14, 0x02, 0x40, 0x64, 0x04, 0x40, 0xC4, 0x08, 0x41, 0x84, 0x10, 0x42, + 0x04, 0x20, 0x44, 0x04, 0x40, 0x48, 0x04, 0xFF, 0xF0, 0x04, 0x00, 0x40, + 0x04, 0x00, 0x40, 0x04, 0x07, 0xF0, 0x3F, 0xF0, 0x80, 0x02, 0x00, 0x08, + 0x00, 0x20, 0x00, 0x80, 0x02, 0x00, 0x0B, 0xF0, 0x30, 0x30, 0x00, 0x60, + 0x00, 0x80, 0x01, 0x00, 0x04, 0x00, 0x10, 0x00, 0x40, 0x01, 0x00, 0x0E, + 0x00, 0x2C, 0x01, 0x0C, 0x18, 0x0F, 0xC0, 0x01, 0xF0, 0x60, 0x18, 0x03, + 0x00, 0x20, 0x04, 0x00, 0x40, 0x0C, 0x00, 0x80, 0x08, 0xF8, 0x98, 0x4A, + 0x02, 0xE0, 0x3C, 0x01, 0x80, 0x14, 0x01, 0x40, 0x14, 0x03, 0x20, 0x21, + 0x0C, 0x0F, 0x80, 0xFF, 0xF8, 0x01, 0x80, 0x18, 0x03, 0x00, 0x20, 0x02, + 0x00, 0x20, 0x04, 0x00, 0x40, 0x04, 0x00, 0xC0, 0x08, 0x00, 0x80, 0x18, + 0x01, 0x00, 0x10, 0x01, 0x00, 0x30, 0x02, 0x00, 0x20, 0x02, 0x00, 0x0F, + 0x81, 0x83, 0x10, 0x05, 0x80, 0x38, 0x00, 0xC0, 0x06, 0x00, 0x30, 0x03, + 0x40, 0x11, 0x83, 0x07, 0xF0, 0x60, 0xC4, 0x01, 0x60, 0x0E, 0x00, 0x30, + 0x01, 0x80, 0x0E, 0x00, 0xD0, 0x04, 0x60, 0xC1, 0xFC, 0x00, 0x1F, 0x03, + 0x08, 0x40, 0x4C, 0x02, 0x80, 0x28, 0x02, 0x80, 0x18, 0x03, 0xC0, 0x74, + 0x05, 0x21, 0x91, 0xF1, 0x00, 0x10, 0x03, 0x00, 0x20, 0x02, 0x00, 0x40, + 0x0C, 0x01, 0x80, 0x60, 0xF8, 0x00, 0x77, 0xFF, 0xF7, 0x00, 0x00, 0x00, + 0x1D, 0xFF, 0xFD, 0xC0, 0x1C, 0x7C, 0xF9, 0xF1, 0xC0, 0x00, 0x00, 0x00, + 0x00, 0xF1, 0xE3, 0x8F, 0x1C, 0x38, 0xE1, 0xC3, 0x06, 0x00, 0x00, 0x06, + 0x00, 0x18, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x01, 0xC0, 0x06, 0x00, 0x38, + 0x00, 0xE0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x18, 0x00, 0x1C, 0x00, 0x0E, + 0x00, 0x07, 0x00, 0x03, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0xFF, 0xFC, 0xC0, 0x00, 0xC0, 0x00, 0xE0, 0x00, 0x70, + 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0C, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x70, + 0x03, 0x80, 0x0C, 0x00, 0x70, 0x03, 0x80, 0x1C, 0x00, 0x60, 0x00, 0x3F, + 0x8E, 0x0C, 0x80, 0x28, 0x01, 0x80, 0x10, 0x01, 0x00, 0x10, 0x02, 0x00, + 0xC0, 0x38, 0x06, 0x00, 0x40, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, + 0x01, 0xF0, 0x1F, 0x00, 0xE0, 0x0F, 0x01, 0x86, 0x08, 0x08, 0x80, 0x24, + 0x01, 0x40, 0x0A, 0x00, 0x50, 0x1E, 0x83, 0x14, 0x20, 0xA2, 0x05, 0x10, + 0x28, 0x81, 0x46, 0x0A, 0x18, 0x50, 0x3F, 0x80, 0x04, 0x00, 0x10, 0x00, + 0x80, 0x02, 0x00, 0x18, 0x18, 0x3F, 0x00, 0x1F, 0xF0, 0x00, 0x06, 0x80, + 0x00, 0x34, 0x00, 0x01, 0x30, 0x00, 0x18, 0x80, 0x00, 0x86, 0x00, 0x04, + 0x30, 0x00, 0x60, 0x80, 0x02, 0x06, 0x00, 0x10, 0x10, 0x01, 0x80, 0x80, + 0x08, 0x06, 0x00, 0x7F, 0xF0, 0x06, 0x00, 0x80, 0x20, 0x06, 0x01, 0x00, + 0x10, 0x18, 0x00, 0xC0, 0x80, 0x06, 0x04, 0x00, 0x11, 0xFC, 0x0F, 0xF0, + 0xFF, 0xF8, 0x04, 0x01, 0x01, 0x00, 0x20, 0x40, 0x04, 0x10, 0x01, 0x04, + 0x00, 0x41, 0x00, 0x10, 0x40, 0x08, 0x10, 0x0C, 0x07, 0xFF, 0x01, 0x00, + 0x70, 0x40, 0x06, 0x10, 0x00, 0x84, 0x00, 0x11, 0x00, 0x04, 0x40, 0x01, + 0x10, 0x00, 0x44, 0x00, 0x21, 0x00, 0x33, 0xFF, 0xF8, 0x03, 0xF1, 0x06, + 0x0E, 0x8C, 0x01, 0xC4, 0x00, 0x64, 0x00, 0x12, 0x00, 0x0A, 0x00, 0x01, + 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x01, 0x00, 0x00, 0x80, 0x00, 0x20, 0x01, 0x88, 0x01, 0x83, + 0x03, 0x80, 0x7E, 0x00, 0xFF, 0xE0, 0x20, 0x18, 0x20, 0x0C, 0x20, 0x04, + 0x20, 0x02, 0x20, 0x02, 0x20, 0x01, 0x20, 0x01, 0x20, 0x01, 0x20, 0x01, + 0x20, 0x01, 0x20, 0x01, 0x20, 0x01, 0x20, 0x01, 0x20, 0x02, 0x20, 0x02, + 0x20, 0x04, 0x20, 0x0C, 0x20, 0x18, 0xFF, 0xE0, 0xFF, 0xFF, 0x08, 0x00, + 0x84, 0x00, 0x42, 0x00, 0x21, 0x00, 0x10, 0x80, 0x00, 0x40, 0x00, 0x20, + 0x40, 0x10, 0x20, 0x0F, 0xF0, 0x04, 0x08, 0x02, 0x04, 0x01, 0x00, 0x00, + 0x80, 0x00, 0x40, 0x02, 0x20, 0x01, 0x10, 0x00, 0x88, 0x00, 0x44, 0x00, + 0x3F, 0xFF, 0xF0, 0xFF, 0xFF, 0x88, 0x00, 0x44, 0x00, 0x22, 0x00, 0x11, + 0x00, 0x08, 0x80, 0x00, 0x40, 0x00, 0x20, 0x40, 0x10, 0x20, 0x0F, 0xF0, + 0x04, 0x08, 0x02, 0x04, 0x01, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, + 0x00, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x1F, 0xF8, 0x00, 0x03, 0xF9, + 0x06, 0x07, 0x84, 0x00, 0xC4, 0x00, 0x24, 0x00, 0x12, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, 0x10, 0x0F, 0xF8, + 0x00, 0x14, 0x00, 0x09, 0x00, 0x04, 0x80, 0x02, 0x20, 0x01, 0x18, 0x00, + 0x83, 0x01, 0xC0, 0x7F, 0x00, 0xFC, 0x3F, 0x20, 0x04, 0x20, 0x04, 0x20, + 0x04, 0x20, 0x04, 0x20, 0x04, 0x20, 0x04, 0x20, 0x04, 0x20, 0x04, 0x3F, + 0xFC, 0x20, 0x04, 0x20, 0x04, 0x20, 0x04, 0x20, 0x04, 0x20, 0x04, 0x20, + 0x04, 0x20, 0x04, 0x20, 0x04, 0x20, 0x04, 0xFC, 0x3F, 0xFF, 0xF8, 0x10, + 0x00, 0x80, 0x04, 0x00, 0x20, 0x01, 0x00, 0x08, 0x00, 0x40, 0x02, 0x00, + 0x10, 0x00, 0x80, 0x04, 0x00, 0x20, 0x01, 0x00, 0x08, 0x00, 0x40, 0x02, + 0x00, 0x10, 0x00, 0x81, 0xFF, 0xF0, 0x03, 0xFF, 0x80, 0x04, 0x00, 0x02, + 0x00, 0x01, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, 0x10, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x02, 0x10, 0x01, 0x08, 0x00, 0x84, 0x00, 0x42, + 0x00, 0x21, 0x00, 0x10, 0x80, 0x10, 0x20, 0x18, 0x0C, 0x18, 0x01, 0xF0, + 0x00, 0xFF, 0x1F, 0x84, 0x01, 0x81, 0x00, 0xC0, 0x40, 0x60, 0x10, 0x30, + 0x04, 0x18, 0x01, 0x0C, 0x00, 0x46, 0x00, 0x13, 0x00, 0x05, 0xF0, 0x01, + 0xC6, 0x00, 0x60, 0xC0, 0x10, 0x18, 0x04, 0x06, 0x01, 0x00, 0xC0, 0x40, + 0x30, 0x10, 0x04, 0x04, 0x01, 0x81, 0x00, 0x23, 0xFC, 0x0F, 0xFF, 0x80, + 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0x01, 0x00, 0x02, 0x00, 0x04, + 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0x01, 0x00, + 0x42, 0x00, 0x84, 0x01, 0x08, 0x02, 0x10, 0x04, 0x20, 0x0F, 0xFF, 0xF0, + 0xF0, 0x01, 0xE7, 0x00, 0x70, 0xA0, 0x0A, 0x16, 0x03, 0x42, 0x40, 0x48, + 0x4C, 0x19, 0x08, 0x82, 0x21, 0x10, 0x44, 0x23, 0x18, 0x84, 0x22, 0x10, + 0x86, 0xC2, 0x10, 0x50, 0x42, 0x0E, 0x08, 0x41, 0xC1, 0x08, 0x00, 0x21, + 0x00, 0x04, 0x20, 0x00, 0x84, 0x00, 0x10, 0x80, 0x02, 0x7F, 0x03, 0xF0, + 0xF8, 0x1F, 0xC6, 0x00, 0x41, 0xC0, 0x10, 0x50, 0x04, 0x12, 0x01, 0x04, + 0xC0, 0x41, 0x10, 0x10, 0x46, 0x04, 0x10, 0x81, 0x04, 0x10, 0x41, 0x04, + 0x10, 0x40, 0x84, 0x10, 0x31, 0x04, 0x04, 0x41, 0x01, 0x90, 0x40, 0x24, + 0x10, 0x05, 0x04, 0x01, 0xC1, 0x00, 0x31, 0xFC, 0x0C, 0x03, 0xE0, 0x06, + 0x0C, 0x04, 0x01, 0x04, 0x00, 0x46, 0x00, 0x32, 0x00, 0x0B, 0x00, 0x05, + 0x00, 0x01, 0x80, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x18, 0x00, + 0x0E, 0x00, 0x0D, 0x00, 0x04, 0xC0, 0x06, 0x20, 0x02, 0x08, 0x02, 0x03, + 0x06, 0x00, 0x7C, 0x00, 0xFF, 0xF0, 0x10, 0x0C, 0x10, 0x02, 0x10, 0x03, + 0x10, 0x01, 0x10, 0x01, 0x10, 0x01, 0x10, 0x03, 0x10, 0x06, 0x10, 0x0C, + 0x1F, 0xF0, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, + 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0xFF, 0xC0, 0x03, 0xE0, 0x06, 0x0C, + 0x04, 0x01, 0x04, 0x00, 0x46, 0x00, 0x32, 0x00, 0x0B, 0x00, 0x07, 0x00, + 0x01, 0x80, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x18, 0x00, 0x0E, + 0x00, 0x0D, 0x00, 0x04, 0xC0, 0x06, 0x20, 0x02, 0x08, 0x02, 0x03, 0x06, + 0x00, 0xFC, 0x00, 0x30, 0x00, 0x30, 0x00, 0x7F, 0xC6, 0x38, 0x1E, 0xFF, + 0xF0, 0x02, 0x01, 0x80, 0x40, 0x08, 0x08, 0x01, 0x81, 0x00, 0x10, 0x20, + 0x02, 0x04, 0x00, 0x40, 0x80, 0x18, 0x10, 0x06, 0x02, 0x03, 0x80, 0x7F, + 0xC0, 0x08, 0x18, 0x01, 0x01, 0x80, 0x20, 0x18, 0x04, 0x01, 0x80, 0x80, + 0x10, 0x10, 0x03, 0x02, 0x00, 0x20, 0x40, 0x06, 0x7F, 0x80, 0x70, 0x0F, + 0xC8, 0x61, 0xE2, 0x01, 0x90, 0x02, 0x40, 0x09, 0x00, 0x04, 0x00, 0x08, + 0x00, 0x38, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x18, + 0x00, 0x60, 0x01, 0x80, 0x0F, 0x00, 0x2B, 0x03, 0x23, 0xF0, 0xFF, 0xFF, + 0x02, 0x06, 0x04, 0x0C, 0x08, 0x18, 0x10, 0x20, 0x20, 0x00, 0x40, 0x00, + 0x80, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, + 0x00, 0x40, 0x00, 0x80, 0x01, 0x00, 0x02, 0x00, 0x04, 0x01, 0xFF, 0xC0, + 0xFC, 0x1F, 0x90, 0x01, 0x08, 0x00, 0x84, 0x00, 0x42, 0x00, 0x21, 0x00, + 0x10, 0x80, 0x08, 0x40, 0x04, 0x20, 0x02, 0x10, 0x01, 0x08, 0x00, 0x84, + 0x00, 0x42, 0x00, 0x21, 0x00, 0x10, 0x80, 0x08, 0x40, 0x04, 0x10, 0x04, + 0x0C, 0x06, 0x03, 0x06, 0x00, 0x7C, 0x00, 0xFE, 0x03, 0xF8, 0x80, 0x02, + 0x04, 0x00, 0x10, 0x30, 0x01, 0x80, 0x80, 0x08, 0x06, 0x00, 0xC0, 0x30, + 0x06, 0x00, 0x80, 0x20, 0x06, 0x03, 0x00, 0x30, 0x10, 0x00, 0x80, 0x80, + 0x06, 0x0C, 0x00, 0x10, 0x40, 0x00, 0x86, 0x00, 0x06, 0x20, 0x00, 0x11, + 0x00, 0x00, 0xD8, 0x00, 0x06, 0x80, 0x00, 0x1C, 0x00, 0x00, 0xE0, 0x00, + 0xFC, 0x0F, 0xE8, 0x00, 0x19, 0x00, 0x03, 0x10, 0x00, 0x62, 0x00, 0x08, + 0x41, 0x81, 0x08, 0x28, 0x21, 0x05, 0x04, 0x21, 0xA0, 0x84, 0x36, 0x30, + 0x84, 0x46, 0x08, 0x88, 0xC1, 0x31, 0x18, 0x24, 0x12, 0x04, 0x82, 0x40, + 0xB0, 0x48, 0x14, 0x09, 0x02, 0x80, 0xA0, 0x30, 0x1C, 0x06, 0x03, 0x80, + 0x7E, 0x0F, 0xC2, 0x00, 0x60, 0x60, 0x0C, 0x06, 0x03, 0x00, 0x60, 0xC0, + 0x0C, 0x10, 0x00, 0xC6, 0x00, 0x0D, 0x80, 0x00, 0xA0, 0x00, 0x1C, 0x00, + 0x03, 0x80, 0x00, 0xD8, 0x00, 0x11, 0x00, 0x06, 0x30, 0x01, 0x83, 0x00, + 0x60, 0x30, 0x08, 0x06, 0x03, 0x00, 0x60, 0xC0, 0x06, 0x7F, 0x07, 0xF0, + 0xFC, 0x1F, 0x98, 0x03, 0x04, 0x01, 0x03, 0x01, 0x80, 0xC1, 0x80, 0x20, + 0x80, 0x18, 0xC0, 0x04, 0x40, 0x03, 0x60, 0x00, 0xE0, 0x00, 0x20, 0x00, + 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x80, + 0x00, 0x40, 0x00, 0x20, 0x03, 0xFF, 0x80, 0xFF, 0xF4, 0x00, 0xA0, 0x09, + 0x00, 0x48, 0x04, 0x40, 0x40, 0x02, 0x00, 0x20, 0x02, 0x00, 0x10, 0x01, + 0x00, 0x10, 0x00, 0x80, 0x08, 0x04, 0x80, 0x24, 0x01, 0x40, 0x0C, 0x00, + 0x60, 0x03, 0xFF, 0xF0, 0xFC, 0x21, 0x08, 0x42, 0x10, 0x84, 0x21, 0x08, + 0x42, 0x10, 0x84, 0x21, 0x08, 0x42, 0x10, 0xF8, 0x80, 0x02, 0x00, 0x10, + 0x00, 0xC0, 0x02, 0x00, 0x18, 0x00, 0x40, 0x03, 0x00, 0x08, 0x00, 0x40, + 0x01, 0x00, 0x08, 0x00, 0x20, 0x01, 0x00, 0x04, 0x00, 0x20, 0x00, 0x80, + 0x04, 0x00, 0x10, 0x00, 0x80, 0x02, 0x00, 0x10, 0x00, 0x40, 0x02, 0x00, + 0x08, 0x00, 0x40, 0xF8, 0x42, 0x10, 0x84, 0x21, 0x08, 0x42, 0x10, 0x84, + 0x21, 0x08, 0x42, 0x10, 0x84, 0x21, 0xF8, 0x02, 0x00, 0x38, 0x03, 0x60, + 0x11, 0x01, 0x8C, 0x18, 0x31, 0x80, 0xD8, 0x03, 0x80, 0x08, 0xFF, 0xFF, + 0xF8, 0xC1, 0x83, 0x06, 0x0C, 0x0F, 0xC0, 0x70, 0x30, 0x00, 0x10, 0x00, + 0x08, 0x00, 0x08, 0x00, 0x08, 0x0F, 0xF8, 0x30, 0x08, 0x40, 0x08, 0x80, + 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x38, 0x60, 0xE8, 0x3F, 0x8F, 0xF0, + 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x40, 0x00, 0x10, 0x00, 0x04, 0x00, + 0x01, 0x0F, 0x80, 0x4C, 0x18, 0x14, 0x01, 0x06, 0x00, 0x21, 0x80, 0x08, + 0x40, 0x01, 0x10, 0x00, 0x44, 0x00, 0x11, 0x00, 0x04, 0x40, 0x01, 0x18, + 0x00, 0x86, 0x00, 0x21, 0xC0, 0x10, 0x5C, 0x18, 0xF1, 0xF8, 0x00, 0x07, + 0xE4, 0x30, 0x78, 0x80, 0x32, 0x00, 0x24, 0x00, 0x50, 0x00, 0x20, 0x00, + 0x40, 0x00, 0x80, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x12, 0x00, 0xC3, + 0x07, 0x01, 0xF8, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x80, 0x00, 0x20, 0x00, + 0x08, 0x00, 0x02, 0x00, 0x00, 0x80, 0x7C, 0x20, 0x60, 0xC8, 0x20, 0x0A, + 0x10, 0x01, 0x84, 0x00, 0x62, 0x00, 0x08, 0x80, 0x02, 0x20, 0x00, 0x88, + 0x00, 0x22, 0x00, 0x08, 0xC0, 0x06, 0x10, 0x01, 0x82, 0x00, 0xE0, 0x60, + 0xE8, 0x0F, 0xE3, 0xC0, 0x07, 0xE0, 0x1C, 0x18, 0x30, 0x0C, 0x60, 0x06, + 0x40, 0x03, 0xC0, 0x03, 0xC0, 0x01, 0xFF, 0xFF, 0xC0, 0x00, 0xC0, 0x00, + 0x40, 0x00, 0x60, 0x00, 0x30, 0x03, 0x0C, 0x0E, 0x03, 0xF0, 0x03, 0xFC, + 0x18, 0x00, 0x80, 0x02, 0x00, 0x08, 0x00, 0x20, 0x0F, 0xFF, 0x82, 0x00, + 0x08, 0x00, 0x20, 0x00, 0x80, 0x02, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, + 0x02, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, 0x02, 0x00, 0xFF, 0xF0, 0x0F, + 0xC7, 0x9C, 0x3A, 0x18, 0x07, 0x08, 0x01, 0x8C, 0x00, 0xC4, 0x00, 0x22, + 0x00, 0x11, 0x00, 0x08, 0x80, 0x04, 0x40, 0x02, 0x10, 0x03, 0x08, 0x01, + 0x82, 0x01, 0x40, 0xC3, 0x20, 0x3F, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x7F, 0x00, 0xF0, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x80, 0x00, 0x47, + 0xC0, 0x2C, 0x18, 0x1C, 0x04, 0x0C, 0x01, 0x04, 0x00, 0x82, 0x00, 0x41, + 0x00, 0x20, 0x80, 0x10, 0x40, 0x08, 0x20, 0x04, 0x10, 0x02, 0x08, 0x01, + 0x04, 0x00, 0x82, 0x00, 0x47, 0xC0, 0xF8, 0x06, 0x00, 0x18, 0x00, 0x60, + 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x80, 0x02, 0x00, 0x08, + 0x00, 0x20, 0x00, 0x80, 0x02, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, 0x02, + 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, 0x02, 0x03, 0xFF, 0xF0, 0x03, 0x00, + 0xC0, 0x30, 0x0C, 0x00, 0x00, 0x00, 0x03, 0xFF, 0x00, 0x40, 0x10, 0x04, + 0x01, 0x00, 0x40, 0x10, 0x04, 0x01, 0x00, 0x40, 0x10, 0x04, 0x01, 0x00, + 0x40, 0x10, 0x04, 0x01, 0x00, 0x40, 0x10, 0x08, 0x06, 0xFE, 0x00, 0xF0, + 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, + 0xFE, 0x10, 0x30, 0x10, 0xE0, 0x11, 0xC0, 0x13, 0x00, 0x16, 0x00, 0x1E, + 0x00, 0x1B, 0x00, 0x11, 0x80, 0x10, 0xC0, 0x10, 0x60, 0x10, 0x30, 0x10, + 0x18, 0x10, 0x1C, 0xF0, 0x3F, 0x7E, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, + 0x02, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, 0x02, 0x00, 0x08, 0x00, 0x20, + 0x00, 0x80, 0x02, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, 0x02, 0x00, 0x08, + 0x00, 0x20, 0x00, 0x80, 0xFF, 0xFC, 0xEF, 0x9E, 0x07, 0x1E, 0x20, 0xC1, + 0x82, 0x10, 0x20, 0x42, 0x04, 0x08, 0x40, 0x81, 0x08, 0x10, 0x21, 0x02, + 0x04, 0x20, 0x40, 0x84, 0x08, 0x10, 0x81, 0x02, 0x10, 0x20, 0x42, 0x04, + 0x08, 0x40, 0x81, 0x3E, 0x1C, 0x38, 0x71, 0xF0, 0x0B, 0x06, 0x07, 0x01, + 0x03, 0x00, 0x41, 0x00, 0x20, 0x80, 0x10, 0x40, 0x08, 0x20, 0x04, 0x10, + 0x02, 0x08, 0x01, 0x04, 0x00, 0x82, 0x00, 0x41, 0x00, 0x20, 0x80, 0x13, + 0xF0, 0x3E, 0x07, 0xC0, 0x30, 0x60, 0x80, 0x22, 0x00, 0x24, 0x00, 0x50, + 0x00, 0x60, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, 0x05, 0x00, 0x12, 0x00, + 0x22, 0x00, 0x83, 0x06, 0x01, 0xF0, 0x00, 0xF1, 0xFC, 0x05, 0xC1, 0x81, + 0xC0, 0x10, 0x60, 0x02, 0x18, 0x00, 0xC4, 0x00, 0x11, 0x00, 0x04, 0x40, + 0x01, 0x10, 0x00, 0x44, 0x00, 0x11, 0x80, 0x08, 0x60, 0x02, 0x14, 0x01, + 0x04, 0xC1, 0x81, 0x0F, 0x80, 0x40, 0x00, 0x10, 0x00, 0x04, 0x00, 0x01, + 0x00, 0x00, 0x40, 0x00, 0x10, 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xE3, 0xC6, + 0x0E, 0x86, 0x00, 0xE1, 0x00, 0x18, 0xC0, 0x06, 0x20, 0x00, 0x88, 0x00, + 0x22, 0x00, 0x08, 0x80, 0x02, 0x20, 0x00, 0x84, 0x00, 0x61, 0x00, 0x18, + 0x20, 0x0A, 0x06, 0x0C, 0x80, 0x7C, 0x20, 0x00, 0x08, 0x00, 0x02, 0x00, + 0x00, 0x80, 0x00, 0x20, 0x00, 0x08, 0x00, 0x02, 0x00, 0x0F, 0xF0, 0xF8, + 0x7C, 0x11, 0x8C, 0x2C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x02, 0x00, + 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0x01, + 0x00, 0x3F, 0xFC, 0x00, 0x0F, 0xD1, 0x83, 0x98, 0x04, 0x80, 0x24, 0x00, + 0x30, 0x00, 0xF0, 0x00, 0xFC, 0x00, 0x30, 0x00, 0xE0, 0x03, 0x00, 0x1C, + 0x01, 0xF0, 0x1A, 0x7F, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, + 0x00, 0x08, 0x00, 0xFF, 0xFC, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, + 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, + 0x00, 0x08, 0x00, 0x08, 0x01, 0x06, 0x0F, 0x03, 0xF8, 0xF0, 0x3E, 0x08, + 0x01, 0x04, 0x00, 0x82, 0x00, 0x41, 0x00, 0x20, 0x80, 0x10, 0x40, 0x08, + 0x20, 0x04, 0x10, 0x02, 0x08, 0x01, 0x04, 0x00, 0x82, 0x00, 0x41, 0x00, + 0xE0, 0x41, 0xD0, 0x1F, 0x8E, 0xFE, 0x0F, 0xE2, 0x00, 0x20, 0x60, 0x0C, + 0x0C, 0x01, 0x80, 0x80, 0x20, 0x18, 0x0C, 0x01, 0x01, 0x00, 0x30, 0x60, + 0x02, 0x08, 0x00, 0x41, 0x00, 0x0C, 0x60, 0x00, 0x88, 0x00, 0x19, 0x00, + 0x01, 0x40, 0x00, 0x38, 0x00, 0xFC, 0x07, 0xE4, 0x00, 0x10, 0x80, 0x02, + 0x18, 0x20, 0xC3, 0x0E, 0x18, 0x21, 0x42, 0x04, 0x28, 0x40, 0x8D, 0x88, + 0x19, 0x93, 0x03, 0x22, 0x60, 0x2C, 0x68, 0x05, 0x85, 0x00, 0xA0, 0xA0, + 0x1C, 0x1C, 0x01, 0x81, 0x80, 0x7C, 0x1F, 0x18, 0x03, 0x06, 0x03, 0x01, + 0x83, 0x00, 0x63, 0x00, 0x1B, 0x00, 0x07, 0x00, 0x03, 0x80, 0x03, 0x60, + 0x03, 0x18, 0x03, 0x06, 0x03, 0x01, 0x83, 0x00, 0x61, 0x00, 0x33, 0xF0, + 0x7E, 0xFC, 0x1F, 0x90, 0x01, 0x8C, 0x00, 0x86, 0x00, 0xC1, 0x80, 0x40, + 0xC0, 0x60, 0x20, 0x20, 0x18, 0x30, 0x04, 0x10, 0x03, 0x08, 0x00, 0x8C, + 0x00, 0x64, 0x00, 0x16, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x01, 0x00, 0x01, + 0x80, 0x00, 0x80, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x20, 0x07, 0xFE, 0x00, + 0xFF, 0xF4, 0x01, 0x20, 0x09, 0x00, 0x80, 0x08, 0x00, 0x80, 0x08, 0x00, + 0xC0, 0x04, 0x00, 0x40, 0x04, 0x00, 0x40, 0x14, 0x00, 0xA0, 0x07, 0xFF, + 0xE0, 0x07, 0x0C, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x30, 0xC0, 0x30, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x0C, 0x07, 0xFF, 0xFF, 0xFF, 0x80, 0xE0, 0x30, 0x10, 0x10, 0x10, 0x10, + 0x10, 0x10, 0x10, 0x10, 0x10, 0x08, 0x07, 0x0C, 0x10, 0x10, 0x10, 0x10, + 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0xE0, 0x1C, 0x00, 0x44, 0x0D, 0x84, + 0x36, 0x04, 0x40, 0x07, 0x00}; + +const GFXglyph FreeMono18pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 21, 0, 1}, // 0x20 ' ' + {0, 4, 22, 21, 8, -21}, // 0x21 '!' + {11, 11, 10, 21, 5, -20}, // 0x22 '"' + {25, 14, 24, 21, 3, -21}, // 0x23 '#' + {67, 13, 26, 21, 4, -22}, // 0x24 '$' + {110, 15, 21, 21, 3, -20}, // 0x25 '%' + {150, 12, 18, 21, 4, -17}, // 0x26 '&' + {177, 4, 10, 21, 8, -20}, // 0x27 ''' + {182, 5, 25, 21, 10, -20}, // 0x28 '(' + {198, 5, 25, 21, 6, -20}, // 0x29 ')' + {214, 13, 12, 21, 4, -20}, // 0x2A '*' + {234, 15, 17, 21, 3, -17}, // 0x2B '+' + {266, 7, 10, 21, 5, -4}, // 0x2C ',' + {275, 15, 1, 21, 3, -9}, // 0x2D '-' + {277, 5, 5, 21, 8, -4}, // 0x2E '.' + {281, 13, 26, 21, 4, -22}, // 0x2F '/' + {324, 13, 21, 21, 4, -20}, // 0x30 '0' + {359, 13, 21, 21, 4, -20}, // 0x31 '1' + {394, 13, 21, 21, 3, -20}, // 0x32 '2' + {429, 14, 21, 21, 3, -20}, // 0x33 '3' + {466, 12, 21, 21, 4, -20}, // 0x34 '4' + {498, 14, 21, 21, 3, -20}, // 0x35 '5' + {535, 12, 21, 21, 5, -20}, // 0x36 '6' + {567, 12, 21, 21, 4, -20}, // 0x37 '7' + {599, 13, 21, 21, 4, -20}, // 0x38 '8' + {634, 12, 21, 21, 5, -20}, // 0x39 '9' + {666, 5, 15, 21, 8, -14}, // 0x3A ':' + {676, 7, 20, 21, 5, -14}, // 0x3B ';' + {694, 15, 16, 21, 3, -17}, // 0x3C '<' + {724, 17, 6, 21, 2, -12}, // 0x3D '=' + {737, 15, 16, 21, 3, -17}, // 0x3E '>' + {767, 12, 20, 21, 5, -19}, // 0x3F '?' + {797, 13, 23, 21, 4, -20}, // 0x40 '@' + {835, 21, 20, 21, 0, -19}, // 0x41 'A' + {888, 18, 20, 21, 1, -19}, // 0x42 'B' + {933, 17, 20, 21, 2, -19}, // 0x43 'C' + {976, 16, 20, 21, 2, -19}, // 0x44 'D' + {1016, 17, 20, 21, 1, -19}, // 0x45 'E' + {1059, 17, 20, 21, 1, -19}, // 0x46 'F' + {1102, 17, 20, 21, 2, -19}, // 0x47 'G' + {1145, 16, 20, 21, 2, -19}, // 0x48 'H' + {1185, 13, 20, 21, 4, -19}, // 0x49 'I' + {1218, 17, 20, 21, 3, -19}, // 0x4A 'J' + {1261, 18, 20, 21, 1, -19}, // 0x4B 'K' + {1306, 15, 20, 21, 3, -19}, // 0x4C 'L' + {1344, 19, 20, 21, 1, -19}, // 0x4D 'M' + {1392, 18, 20, 21, 1, -19}, // 0x4E 'N' + {1437, 17, 20, 21, 2, -19}, // 0x4F 'O' + {1480, 16, 20, 21, 1, -19}, // 0x50 'P' + {1520, 17, 24, 21, 2, -19}, // 0x51 'Q' + {1571, 19, 20, 21, 1, -19}, // 0x52 'R' + {1619, 14, 20, 21, 3, -19}, // 0x53 'S' + {1654, 15, 20, 21, 3, -19}, // 0x54 'T' + {1692, 17, 20, 21, 2, -19}, // 0x55 'U' + {1735, 21, 20, 21, 0, -19}, // 0x56 'V' + {1788, 19, 20, 21, 1, -19}, // 0x57 'W' + {1836, 19, 20, 21, 1, -19}, // 0x58 'X' + {1884, 17, 20, 21, 2, -19}, // 0x59 'Y' + {1927, 13, 20, 21, 4, -19}, // 0x5A 'Z' + {1960, 5, 25, 21, 10, -20}, // 0x5B '[' + {1976, 13, 26, 21, 4, -22}, // 0x5C '\' + {2019, 5, 25, 21, 6, -20}, // 0x5D ']' + {2035, 13, 9, 21, 4, -20}, // 0x5E '^' + {2050, 21, 1, 21, 0, 4}, // 0x5F '_' + {2053, 6, 5, 21, 5, -21}, // 0x60 '`' + {2057, 16, 15, 21, 3, -14}, // 0x61 'a' + {2087, 18, 21, 21, 1, -20}, // 0x62 'b' + {2135, 15, 15, 21, 3, -14}, // 0x63 'c' + {2164, 18, 21, 21, 2, -20}, // 0x64 'd' + {2212, 16, 15, 21, 2, -14}, // 0x65 'e' + {2242, 14, 21, 21, 4, -20}, // 0x66 'f' + {2279, 17, 22, 21, 2, -14}, // 0x67 'g' + {2326, 17, 21, 21, 1, -20}, // 0x68 'h' + {2371, 14, 22, 21, 4, -21}, // 0x69 'i' + {2410, 10, 29, 21, 5, -21}, // 0x6A 'j' + {2447, 16, 21, 21, 2, -20}, // 0x6B 'k' + {2489, 14, 21, 21, 4, -20}, // 0x6C 'l' + {2526, 19, 15, 21, 1, -14}, // 0x6D 'm' + {2562, 17, 15, 21, 1, -14}, // 0x6E 'n' + {2594, 15, 15, 21, 3, -14}, // 0x6F 'o' + {2623, 18, 22, 21, 1, -14}, // 0x70 'p' + {2673, 18, 22, 21, 2, -14}, // 0x71 'q' + {2723, 15, 15, 21, 3, -14}, // 0x72 'r' + {2752, 13, 15, 21, 4, -14}, // 0x73 's' + {2777, 16, 20, 21, 1, -19}, // 0x74 't' + {2817, 17, 15, 21, 1, -14}, // 0x75 'u' + {2849, 19, 15, 21, 1, -14}, // 0x76 'v' + {2885, 19, 15, 21, 1, -14}, // 0x77 'w' + {2921, 17, 15, 21, 2, -14}, // 0x78 'x' + {2953, 17, 22, 21, 2, -14}, // 0x79 'y' + {3000, 13, 15, 21, 4, -14}, // 0x7A 'z' + {3025, 8, 25, 21, 6, -20}, // 0x7B '{' + {3050, 1, 25, 21, 10, -20}, // 0x7C '|' + {3054, 8, 25, 21, 7, -20}, // 0x7D '}' + {3079, 15, 5, 21, 3, -11}}; // 0x7E '~' + +const GFXfont FreeMono18pt7b PROGMEM = {(uint8_t *)FreeMono18pt7bBitmaps, + (GFXglyph *)FreeMono18pt7bGlyphs, 0x20, + 0x7E, 35}; + +// Approx. 3761 bytes diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMono24pt7b.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMono24pt7b.h new file mode 100644 index 0000000..2540ed4 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMono24pt7b.h @@ -0,0 +1,579 @@ +#pragma once +#include + +const uint8_t FreeMono24pt7bBitmaps[] PROGMEM = { + 0x73, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x9C, 0xE7, 0x10, 0x84, 0x21, 0x08, + 0x00, 0x00, 0x00, 0x03, 0xBF, 0xFF, 0xB8, 0xFE, 0x7F, 0x7C, 0x3E, 0x7C, + 0x3E, 0x7C, 0x3E, 0x7C, 0x3E, 0x7C, 0x3E, 0x7C, 0x3E, 0x7C, 0x3E, 0x3C, + 0x3E, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x01, + 0x86, 0x00, 0x30, 0xC0, 0x06, 0x18, 0x00, 0xC3, 0x00, 0x18, 0x60, 0x03, + 0x0C, 0x00, 0x61, 0x80, 0x0C, 0x70, 0x01, 0x8C, 0x00, 0x61, 0x80, 0x0C, + 0x30, 0x3F, 0xFF, 0xF7, 0xFF, 0xFE, 0x06, 0x18, 0x00, 0xC3, 0x00, 0x18, + 0x60, 0x03, 0x0C, 0x00, 0x61, 0x80, 0x0C, 0x30, 0x7F, 0xFF, 0xEF, 0xFF, + 0xFC, 0x06, 0x18, 0x00, 0xC7, 0x00, 0x38, 0xC0, 0x06, 0x18, 0x00, 0xC3, + 0x00, 0x18, 0x60, 0x03, 0x0C, 0x00, 0x61, 0x80, 0x0C, 0x30, 0x01, 0x86, + 0x00, 0x30, 0xC0, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x0C, 0x00, 0x0F, 0xC0, + 0x0F, 0xFD, 0x87, 0x03, 0xE3, 0x80, 0x39, 0xC0, 0x06, 0x60, 0x01, 0x98, + 0x00, 0x06, 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x07, 0xC0, 0x00, 0x7F, + 0x80, 0x03, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0x60, 0x00, 0x1C, 0x00, 0x03, + 0x80, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x1F, 0x80, 0x0E, 0xFC, 0x0F, 0x37, + 0xFF, 0x80, 0x7F, 0x80, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x0C, + 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x07, 0x80, 0x01, 0xFE, 0x00, 0x38, + 0x70, 0x03, 0x03, 0x00, 0x60, 0x18, 0x06, 0x01, 0x80, 0x60, 0x18, 0x06, + 0x01, 0x80, 0x30, 0x30, 0x03, 0x87, 0x00, 0x1F, 0xE0, 0x30, 0x78, 0x1F, + 0x00, 0x1F, 0x80, 0x0F, 0xC0, 0x07, 0xE0, 0x03, 0xF0, 0x00, 0xF8, 0x00, + 0x0C, 0x01, 0xE0, 0x00, 0x7F, 0x80, 0x0E, 0x1C, 0x00, 0xC0, 0xC0, 0x18, + 0x06, 0x01, 0x80, 0x60, 0x18, 0x06, 0x01, 0x80, 0x60, 0x0C, 0x0E, 0x00, + 0xE1, 0xC0, 0x07, 0xF8, 0x00, 0x1E, 0x00, 0x03, 0xEC, 0x01, 0xFF, 0x00, + 0xE1, 0x00, 0x70, 0x00, 0x18, 0x00, 0x06, 0x00, 0x01, 0x80, 0x00, 0x30, + 0x00, 0x0C, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, 0x7C, 0x00, 0x3B, 0x83, + 0xD8, 0x60, 0xFE, 0x0C, 0x33, 0x03, 0x98, 0xC0, 0x66, 0x30, 0x0D, 0x8C, + 0x03, 0xC3, 0x00, 0x70, 0x60, 0x1C, 0x1C, 0x0F, 0x03, 0x87, 0x7C, 0x7F, + 0x9F, 0x07, 0x80, 0x00, 0xFE, 0xF9, 0xF3, 0xE7, 0xCF, 0x9F, 0x3E, 0x3C, + 0x70, 0xE1, 0xC3, 0x87, 0x00, 0x06, 0x1C, 0x30, 0xE1, 0x87, 0x0E, 0x18, + 0x70, 0xE1, 0xC3, 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xC3, 0x87, 0x0E, 0x0C, + 0x1C, 0x38, 0x70, 0x60, 0xE1, 0xC1, 0x83, 0x83, 0x06, 0x06, 0x04, 0xC1, + 0xC1, 0x83, 0x83, 0x07, 0x0E, 0x0C, 0x1C, 0x38, 0x70, 0xE0, 0xE1, 0xC3, + 0x87, 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0x87, 0x0E, 0x1C, 0x30, 0x61, 0xC3, + 0x0E, 0x18, 0x70, 0xC1, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x0C, 0x00, + 0x03, 0x00, 0x00, 0xC0, 0x10, 0x30, 0x3F, 0x8C, 0x7C, 0xFF, 0xFC, 0x07, + 0xF8, 0x00, 0x78, 0x00, 0x1F, 0x00, 0x0C, 0xC0, 0x06, 0x18, 0x03, 0x87, + 0x00, 0xC0, 0xC0, 0x60, 0x18, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, 0x60, + 0x00, 0x06, 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, 0x60, 0x00, 0x06, + 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, + 0x60, 0x00, 0x06, 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, 0x60, 0x00, + 0x06, 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, + 0x1F, 0x8F, 0x87, 0xC7, 0xC3, 0xE1, 0xE1, 0xF0, 0xF0, 0x78, 0x38, 0x3C, + 0x1C, 0x0E, 0x06, 0x00, 0x7F, 0xFF, 0xFD, 0xFF, 0xFF, 0xF0, 0x7D, 0xFF, + 0xFF, 0xFF, 0xEF, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x70, 0x00, 0x18, 0x00, + 0x06, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x18, 0x00, 0x0C, + 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, 0x30, 0x00, 0x0C, 0x00, + 0x06, 0x00, 0x01, 0x80, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x18, 0x00, 0x06, + 0x00, 0x03, 0x80, 0x00, 0xC0, 0x00, 0x70, 0x00, 0x18, 0x00, 0x0E, 0x00, + 0x03, 0x00, 0x01, 0xC0, 0x00, 0x60, 0x00, 0x38, 0x00, 0x0C, 0x00, 0x07, + 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, 0x30, 0x00, 0x0C, 0x00, 0x00, 0x03, + 0xF0, 0x03, 0xFF, 0x01, 0xE1, 0xE0, 0xE0, 0x18, 0x30, 0x03, 0x1C, 0x00, + 0xE6, 0x00, 0x19, 0x80, 0x06, 0xE0, 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x0F, + 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, + 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF8, 0x00, + 0x76, 0x00, 0x19, 0x80, 0x06, 0x70, 0x03, 0x8C, 0x00, 0xC3, 0x80, 0x60, + 0x78, 0x78, 0x0F, 0xFC, 0x00, 0xFC, 0x00, 0x03, 0x80, 0x07, 0x80, 0x0F, + 0x80, 0x1D, 0x80, 0x39, 0x80, 0x71, 0x80, 0xE1, 0x80, 0xC1, 0x80, 0x01, + 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, + 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, + 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, + 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xF0, 0x03, 0xFF, 0x01, 0xC0, 0xE0, + 0xC0, 0x1C, 0x60, 0x03, 0xB8, 0x00, 0x6C, 0x00, 0x0F, 0x00, 0x03, 0x00, + 0x00, 0xC0, 0x00, 0x30, 0x00, 0x18, 0x00, 0x06, 0x00, 0x03, 0x00, 0x01, + 0x80, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x18, 0x00, 0x0C, 0x00, + 0x06, 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x30, + 0x00, 0xD0, 0x00, 0x38, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x03, + 0xF8, 0x01, 0xFF, 0xC0, 0x70, 0x3C, 0x18, 0x01, 0xC6, 0x00, 0x18, 0x00, + 0x01, 0x80, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0xC0, 0x00, 0x18, 0x00, + 0x06, 0x00, 0x01, 0xC0, 0x00, 0x70, 0x01, 0xFC, 0x00, 0x3F, 0x00, 0x00, + 0x78, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, + 0x06, 0x00, 0x00, 0xC0, 0x00, 0x18, 0x00, 0x03, 0x00, 0x00, 0xD8, 0x00, + 0x3B, 0x80, 0x0E, 0x3E, 0x07, 0x81, 0xFF, 0xE0, 0x07, 0xE0, 0x00, 0x00, + 0x3C, 0x00, 0x7C, 0x00, 0x6C, 0x00, 0xCC, 0x00, 0x8C, 0x01, 0x8C, 0x03, + 0x0C, 0x03, 0x0C, 0x06, 0x0C, 0x04, 0x0C, 0x0C, 0x0C, 0x08, 0x0C, 0x10, + 0x0C, 0x30, 0x0C, 0x20, 0x0C, 0x60, 0x0C, 0x40, 0x0C, 0x80, 0x0C, 0xFF, + 0xFF, 0xFF, 0xFF, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, + 0x0C, 0x00, 0x0C, 0x00, 0xFF, 0x00, 0xFF, 0x3F, 0xFF, 0x07, 0xFF, 0xE0, + 0xC0, 0x00, 0x18, 0x00, 0x03, 0x00, 0x00, 0x60, 0x00, 0x0C, 0x00, 0x01, + 0x80, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0xC7, 0xE0, 0x1F, 0xFF, 0x03, + 0x80, 0x70, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0x60, + 0x00, 0x0C, 0x00, 0x01, 0x80, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0xC0, + 0x00, 0x30, 0x00, 0x06, 0xC0, 0x01, 0xDC, 0x00, 0x71, 0xF0, 0x3C, 0x0F, + 0xFF, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x80, 0x3F, 0xF0, 0x3E, 0x00, 0x1E, + 0x00, 0x0E, 0x00, 0x07, 0x00, 0x03, 0x80, 0x00, 0xC0, 0x00, 0x70, 0x00, + 0x18, 0x00, 0x06, 0x00, 0x03, 0x80, 0x00, 0xC1, 0xF8, 0x31, 0xFF, 0x0C, + 0xF0, 0xF3, 0x70, 0x0C, 0xD8, 0x01, 0xBC, 0x00, 0x6E, 0x00, 0x0F, 0x80, + 0x03, 0xC0, 0x00, 0xD8, 0x00, 0x36, 0x00, 0x0D, 0x80, 0x03, 0x30, 0x01, + 0x8E, 0x00, 0x61, 0xC0, 0x30, 0x38, 0x38, 0x07, 0xFC, 0x00, 0x7C, 0x00, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x01, 0xC0, + 0x00, 0x60, 0x00, 0x18, 0x00, 0x0E, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, + 0x30, 0x00, 0x18, 0x00, 0x06, 0x00, 0x01, 0x80, 0x00, 0xC0, 0x00, 0x30, + 0x00, 0x0C, 0x00, 0x06, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, 0x30, 0x00, + 0x0C, 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, 0x18, 0x00, 0x0C, + 0x00, 0x03, 0x00, 0x03, 0xF0, 0x03, 0xFF, 0x03, 0xC0, 0xF1, 0xC0, 0x0E, + 0x60, 0x01, 0xB8, 0x00, 0x7C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, + 0x00, 0x36, 0x00, 0x18, 0xC0, 0x0C, 0x1C, 0x0E, 0x03, 0xFF, 0x00, 0xFF, + 0xC0, 0x70, 0x38, 0x30, 0x03, 0x18, 0x00, 0x66, 0x00, 0x1B, 0x00, 0x03, + 0xC0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0x60, 0x01, 0x98, + 0x00, 0xE3, 0x00, 0x70, 0x70, 0x38, 0x0F, 0xFC, 0x00, 0xFC, 0x00, 0x07, + 0xE0, 0x03, 0xFE, 0x01, 0xC1, 0xC0, 0xC0, 0x38, 0x60, 0x07, 0x18, 0x00, + 0xCC, 0x00, 0x1B, 0x00, 0x06, 0xC0, 0x01, 0xB0, 0x00, 0x3C, 0x00, 0x1F, + 0x00, 0x07, 0x60, 0x03, 0xD8, 0x01, 0xB3, 0x00, 0xCC, 0xF0, 0xF3, 0x0F, + 0xF8, 0xC1, 0xF8, 0x30, 0x00, 0x1C, 0x00, 0x06, 0x00, 0x01, 0x80, 0x00, + 0xE0, 0x00, 0x30, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x07, 0x80, + 0x07, 0xC0, 0xFF, 0xC0, 0x1F, 0xC0, 0x00, 0x7D, 0xFF, 0xFF, 0xFF, 0xEF, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xFF, 0xFF, 0xFF, + 0xF7, 0xC0, 0x0F, 0x87, 0xF1, 0xFC, 0x7F, 0x1F, 0xC3, 0xE0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF1, 0xF8, 0x7C, 0x3F, 0x0F, + 0x83, 0xE0, 0xF0, 0x7C, 0x1E, 0x07, 0x81, 0xC0, 0xF0, 0x38, 0x04, 0x00, + 0x00, 0x00, 0x18, 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, + 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x00, + 0x00, 0x78, 0x00, 0x07, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x1E, 0x00, 0x00, + 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x20, 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, + 0xFF, 0x7F, 0xFF, 0xFF, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x0F, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x38, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x03, + 0xC0, 0x00, 0x07, 0x80, 0x00, 0x0E, 0x00, 0x00, 0x3C, 0x00, 0x01, 0xE0, + 0x00, 0x3C, 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x01, 0xE0, + 0x00, 0x3C, 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x0E, 0x00, 0x00, 0x60, + 0x00, 0x00, 0x07, 0xF0, 0x1F, 0xFE, 0x3E, 0x07, 0x98, 0x00, 0xEC, 0x00, + 0x36, 0x00, 0x0F, 0x00, 0x06, 0x00, 0x03, 0x00, 0x01, 0x80, 0x01, 0xC0, + 0x00, 0xC0, 0x01, 0xC0, 0x03, 0xC0, 0x07, 0xC0, 0x07, 0x00, 0x03, 0x00, + 0x01, 0x80, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x80, 0x07, 0xE0, 0x03, 0xF0, 0x01, 0xF8, 0x00, + 0x78, 0x00, 0x03, 0xF0, 0x03, 0xFF, 0x01, 0xE0, 0xE0, 0xE0, 0x1C, 0x30, + 0x03, 0x1C, 0x00, 0x66, 0x00, 0x19, 0x80, 0x06, 0xC0, 0x01, 0xB0, 0x07, + 0xEC, 0x07, 0xFB, 0x03, 0xC6, 0xC1, 0xC1, 0xB0, 0xE0, 0x6C, 0x30, 0x1B, + 0x0C, 0x06, 0xC3, 0x01, 0xB0, 0xC0, 0x6C, 0x18, 0x1B, 0x07, 0x86, 0xC0, + 0xFF, 0xF0, 0x0F, 0xFC, 0x00, 0x03, 0x00, 0x00, 0x60, 0x00, 0x18, 0x00, + 0x07, 0x00, 0x00, 0xC0, 0x00, 0x38, 0x00, 0x07, 0x80, 0xC0, 0xFF, 0xF0, + 0x0F, 0xE0, 0x07, 0xFF, 0x00, 0x00, 0x7F, 0xF0, 0x00, 0x00, 0x1B, 0x00, + 0x00, 0x01, 0x98, 0x00, 0x00, 0x11, 0x80, 0x00, 0x03, 0x0C, 0x00, 0x00, + 0x30, 0xC0, 0x00, 0x06, 0x0C, 0x00, 0x00, 0x60, 0x60, 0x00, 0x06, 0x06, + 0x00, 0x00, 0xC0, 0x30, 0x00, 0x0C, 0x03, 0x00, 0x00, 0x80, 0x30, 0x00, + 0x18, 0x01, 0x80, 0x01, 0x80, 0x18, 0x00, 0x3F, 0xFF, 0x80, 0x03, 0xFF, + 0xFC, 0x00, 0x20, 0x00, 0xC0, 0x06, 0x00, 0x06, 0x00, 0x60, 0x00, 0x60, + 0x0C, 0x00, 0x06, 0x00, 0xC0, 0x00, 0x30, 0x0C, 0x00, 0x03, 0x01, 0x80, + 0x00, 0x18, 0x7F, 0xC0, 0x3F, 0xF7, 0xFC, 0x03, 0xFF, 0xFF, 0xFF, 0x03, + 0xFF, 0xFF, 0x01, 0x80, 0x0E, 0x06, 0x00, 0x1C, 0x18, 0x00, 0x38, 0x60, + 0x00, 0x61, 0x80, 0x01, 0x86, 0x00, 0x06, 0x18, 0x00, 0x38, 0x60, 0x01, + 0xC1, 0x80, 0x1E, 0x07, 0xFF, 0xE0, 0x1F, 0xFF, 0xC0, 0x60, 0x03, 0xC1, + 0x80, 0x03, 0x86, 0x00, 0x06, 0x18, 0x00, 0x1C, 0x60, 0x00, 0x31, 0x80, + 0x00, 0xC6, 0x00, 0x03, 0x18, 0x00, 0x0C, 0x60, 0x00, 0x61, 0x80, 0x03, + 0x86, 0x00, 0x1C, 0xFF, 0xFF, 0xE3, 0xFF, 0xFE, 0x00, 0x00, 0xFC, 0x00, + 0x0F, 0xFE, 0x60, 0xF0, 0x3D, 0x87, 0x00, 0x3E, 0x38, 0x00, 0x38, 0xC0, + 0x00, 0xE7, 0x00, 0x01, 0x98, 0x00, 0x06, 0x60, 0x00, 0x03, 0x00, 0x00, + 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x0C, + 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, + 0x00, 0x18, 0x00, 0x00, 0x60, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, 0x00, + 0xC7, 0x00, 0x06, 0x0E, 0x00, 0x70, 0x1E, 0x07, 0x80, 0x3F, 0xFC, 0x00, + 0x1F, 0x80, 0xFF, 0xFE, 0x03, 0xFF, 0xFE, 0x03, 0x00, 0x3C, 0x0C, 0x00, + 0x38, 0x30, 0x00, 0x70, 0xC0, 0x00, 0xC3, 0x00, 0x03, 0x8C, 0x00, 0x06, + 0x30, 0x00, 0x1C, 0xC0, 0x00, 0x33, 0x00, 0x00, 0xCC, 0x00, 0x03, 0x30, + 0x00, 0x0C, 0xC0, 0x00, 0x33, 0x00, 0x00, 0xCC, 0x00, 0x03, 0x30, 0x00, + 0x0C, 0xC0, 0x00, 0x33, 0x00, 0x01, 0x8C, 0x00, 0x06, 0x30, 0x00, 0x30, + 0xC0, 0x01, 0xC3, 0x00, 0x0E, 0x0C, 0x00, 0xF0, 0xFF, 0xFF, 0x83, 0xFF, + 0xF8, 0x00, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xE1, 0x80, 0x01, 0x86, 0x00, + 0x06, 0x18, 0x00, 0x18, 0x60, 0x00, 0x61, 0x80, 0x01, 0x86, 0x00, 0x00, + 0x18, 0x0C, 0x00, 0x60, 0x30, 0x01, 0x80, 0xC0, 0x07, 0xFF, 0x00, 0x1F, + 0xFC, 0x00, 0x60, 0x30, 0x01, 0x80, 0xC0, 0x06, 0x03, 0x00, 0x18, 0x00, + 0x00, 0x60, 0x00, 0x01, 0x80, 0x00, 0xC6, 0x00, 0x03, 0x18, 0x00, 0x0C, + 0x60, 0x00, 0x31, 0x80, 0x00, 0xC6, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0x80, 0x00, 0xC6, 0x00, + 0x03, 0x18, 0x00, 0x0C, 0x60, 0x00, 0x31, 0x80, 0x00, 0xC6, 0x00, 0x00, + 0x18, 0x0C, 0x00, 0x60, 0x30, 0x01, 0x80, 0xC0, 0x07, 0xFF, 0x00, 0x1F, + 0xFC, 0x00, 0x60, 0x30, 0x01, 0x80, 0xC0, 0x06, 0x03, 0x00, 0x18, 0x00, + 0x00, 0x60, 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0x18, 0x00, 0x00, + 0x60, 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0xFF, 0xF0, 0x03, 0xFF, + 0xC0, 0x00, 0x00, 0xFF, 0x00, 0x07, 0xFF, 0x98, 0x1E, 0x03, 0xF0, 0x70, + 0x01, 0xE1, 0x80, 0x01, 0xC6, 0x00, 0x01, 0x9C, 0x00, 0x03, 0x30, 0x00, + 0x00, 0x60, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, + 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, 0x03, 0xFF, + 0xC0, 0x07, 0xFF, 0x80, 0x00, 0x1B, 0x00, 0x00, 0x37, 0x00, 0x00, 0x66, + 0x00, 0x00, 0xCC, 0x00, 0x01, 0x8C, 0x00, 0x03, 0x1C, 0x00, 0x06, 0x1E, + 0x00, 0x0C, 0x0F, 0x00, 0xF8, 0x0F, 0xFF, 0xC0, 0x03, 0xFC, 0x00, 0x7F, + 0x01, 0xFC, 0xFE, 0x03, 0xF8, 0x60, 0x00, 0xC0, 0xC0, 0x01, 0x81, 0x80, + 0x03, 0x03, 0x00, 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x18, 0x00, + 0x30, 0x30, 0x00, 0x60, 0x60, 0x00, 0xC0, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, + 0x03, 0x00, 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x18, 0x00, 0x30, + 0x30, 0x00, 0x60, 0x60, 0x00, 0xC0, 0xC0, 0x01, 0x81, 0x80, 0x03, 0x03, + 0x00, 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0xFF, 0x01, 0xFF, 0xFE, + 0x03, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, + 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, + 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, + 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, + 0x01, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFE, 0x01, 0xFF, 0xFC, + 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x18, 0x00, + 0x00, 0x30, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, + 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, + 0x30, 0x60, 0x00, 0x60, 0xC0, 0x00, 0xC1, 0x80, 0x01, 0x83, 0x00, 0x03, + 0x06, 0x00, 0x06, 0x0C, 0x00, 0x0C, 0x18, 0x00, 0x30, 0x38, 0x00, 0x60, + 0x38, 0x01, 0x80, 0x3C, 0x0E, 0x00, 0x3F, 0xF8, 0x00, 0x0F, 0xC0, 0x00, + 0xFF, 0x81, 0xFE, 0xFF, 0x81, 0xFE, 0x18, 0x00, 0x30, 0x18, 0x00, 0xE0, + 0x18, 0x01, 0xC0, 0x18, 0x03, 0x80, 0x18, 0x07, 0x00, 0x18, 0x0E, 0x00, + 0x18, 0x18, 0x00, 0x18, 0x70, 0x00, 0x18, 0xE0, 0x00, 0x19, 0xE0, 0x00, + 0x1B, 0xF8, 0x00, 0x1F, 0x1C, 0x00, 0x1C, 0x06, 0x00, 0x18, 0x03, 0x00, + 0x18, 0x03, 0x80, 0x18, 0x01, 0x80, 0x18, 0x00, 0xC0, 0x18, 0x00, 0xC0, + 0x18, 0x00, 0x60, 0x18, 0x00, 0x60, 0x18, 0x00, 0x70, 0x18, 0x00, 0x30, + 0xFF, 0x80, 0x3F, 0xFF, 0x80, 0x1F, 0xFF, 0xF0, 0x07, 0xFF, 0x80, 0x01, + 0x80, 0x00, 0x0C, 0x00, 0x00, 0x60, 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, + 0x00, 0xC0, 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, 0x80, 0x00, 0x0C, + 0x00, 0x00, 0x60, 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, 0x00, 0xC0, 0x00, + 0x06, 0x00, 0x18, 0x30, 0x00, 0xC1, 0x80, 0x06, 0x0C, 0x00, 0x30, 0x60, + 0x01, 0x83, 0x00, 0x0C, 0x18, 0x00, 0x60, 0xC0, 0x03, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xC0, 0xFC, 0x00, 0x0F, 0xFF, 0x00, 0x03, 0xF3, 0x60, 0x01, + 0xB0, 0xD8, 0x00, 0x6C, 0x33, 0x00, 0x33, 0x0C, 0xC0, 0x0C, 0xC3, 0x38, + 0x07, 0x30, 0xC6, 0x01, 0x8C, 0x31, 0xC0, 0xE3, 0x0C, 0x30, 0x30, 0xC3, + 0x0C, 0x0C, 0x30, 0xC1, 0x86, 0x0C, 0x30, 0x61, 0x83, 0x0C, 0x0C, 0xC0, + 0xC3, 0x03, 0x30, 0x30, 0xC0, 0x78, 0x0C, 0x30, 0x1E, 0x03, 0x0C, 0x03, + 0x00, 0xC3, 0x00, 0x00, 0x30, 0xC0, 0x00, 0x0C, 0x30, 0x00, 0x03, 0x0C, + 0x00, 0x00, 0xC3, 0x00, 0x00, 0x30, 0xC0, 0x00, 0x0C, 0xFF, 0x00, 0x3F, + 0xFF, 0xC0, 0x0F, 0xF0, 0xFC, 0x00, 0xFF, 0xFC, 0x00, 0xFF, 0x1E, 0x00, + 0x0C, 0x1F, 0x00, 0x0C, 0x1B, 0x00, 0x0C, 0x19, 0x80, 0x0C, 0x19, 0xC0, + 0x0C, 0x18, 0xC0, 0x0C, 0x18, 0x60, 0x0C, 0x18, 0x60, 0x0C, 0x18, 0x30, + 0x0C, 0x18, 0x38, 0x0C, 0x18, 0x18, 0x0C, 0x18, 0x0C, 0x0C, 0x18, 0x0E, + 0x0C, 0x18, 0x06, 0x0C, 0x18, 0x03, 0x0C, 0x18, 0x03, 0x0C, 0x18, 0x01, + 0x8C, 0x18, 0x01, 0xCC, 0x18, 0x00, 0xCC, 0x18, 0x00, 0x6C, 0x18, 0x00, + 0x7C, 0x18, 0x00, 0x3C, 0x7F, 0x80, 0x1C, 0x7F, 0x80, 0x1C, 0x00, 0x7E, + 0x00, 0x01, 0xFF, 0xC0, 0x07, 0x81, 0xE0, 0x0E, 0x00, 0x70, 0x1C, 0x00, + 0x38, 0x38, 0x00, 0x1C, 0x30, 0x00, 0x0C, 0x70, 0x00, 0x0E, 0x60, 0x00, + 0x06, 0x60, 0x00, 0x06, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, + 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, + 0x03, 0xC0, 0x00, 0x03, 0x60, 0x00, 0x06, 0x60, 0x00, 0x06, 0x70, 0x00, + 0x0E, 0x30, 0x00, 0x0C, 0x38, 0x00, 0x1C, 0x1C, 0x00, 0x38, 0x0E, 0x00, + 0x70, 0x07, 0x81, 0xE0, 0x03, 0xFF, 0xC0, 0x00, 0x7E, 0x00, 0xFF, 0xFF, + 0x07, 0xFF, 0xFE, 0x06, 0x00, 0x78, 0x30, 0x00, 0xE1, 0x80, 0x03, 0x0C, + 0x00, 0x0C, 0x60, 0x00, 0x63, 0x00, 0x03, 0x18, 0x00, 0x18, 0xC0, 0x01, + 0xC6, 0x00, 0x0C, 0x30, 0x00, 0xC1, 0x80, 0x1E, 0x0F, 0xFF, 0xC0, 0x7F, + 0xF8, 0x03, 0x00, 0x00, 0x18, 0x00, 0x00, 0xC0, 0x00, 0x06, 0x00, 0x00, + 0x30, 0x00, 0x01, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x60, 0x00, 0x03, 0x00, + 0x00, 0xFF, 0xF0, 0x07, 0xFF, 0x80, 0x00, 0x00, 0x7E, 0x00, 0x01, 0xFF, + 0x80, 0x07, 0x81, 0xE0, 0x0E, 0x00, 0x70, 0x1C, 0x00, 0x38, 0x38, 0x00, + 0x1C, 0x30, 0x00, 0x0C, 0x70, 0x00, 0x0E, 0x60, 0x00, 0x06, 0x60, 0x00, + 0x06, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, + 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, + 0x03, 0x60, 0x00, 0x06, 0x60, 0x00, 0x06, 0x70, 0x00, 0x0E, 0x30, 0x00, + 0x0C, 0x18, 0x00, 0x1C, 0x0C, 0x00, 0x38, 0x06, 0x00, 0x70, 0x03, 0x81, + 0xE0, 0x00, 0xFF, 0xC0, 0x00, 0x7E, 0x00, 0x00, 0xE0, 0x00, 0x03, 0xFF, + 0x87, 0x07, 0xFF, 0xFE, 0x07, 0x00, 0xF8, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, + 0x80, 0x18, 0x03, 0xC0, 0x18, 0x00, 0xE0, 0x18, 0x00, 0x60, 0x18, 0x00, + 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, + 0x70, 0x18, 0x00, 0x60, 0x18, 0x01, 0xC0, 0x18, 0x07, 0x80, 0x1F, 0xFF, + 0x00, 0x1F, 0xFC, 0x00, 0x18, 0x0E, 0x00, 0x18, 0x07, 0x00, 0x18, 0x03, + 0x80, 0x18, 0x01, 0xC0, 0x18, 0x00, 0xE0, 0x18, 0x00, 0x60, 0x18, 0x00, + 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, 0x18, 0xFF, 0x80, 0x1F, 0xFF, 0x80, + 0x0F, 0x03, 0xF8, 0x00, 0xFF, 0xE6, 0x1E, 0x07, 0xE3, 0x80, 0x1E, 0x30, + 0x00, 0xE6, 0x00, 0x06, 0x60, 0x00, 0x66, 0x00, 0x06, 0x60, 0x00, 0x07, + 0x00, 0x00, 0x30, 0x00, 0x01, 0xC0, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0xC0, + 0x00, 0x3F, 0x80, 0x00, 0x1C, 0x00, 0x00, 0xE0, 0x00, 0x07, 0x00, 0x00, + 0x30, 0x00, 0x03, 0xC0, 0x00, 0x3C, 0x00, 0x03, 0xE0, 0x00, 0x7E, 0x00, + 0x06, 0xF8, 0x01, 0xED, 0xE0, 0x7C, 0xCF, 0xFF, 0x00, 0x3F, 0xC0, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x03, 0x00, 0xF0, 0x0C, 0x03, 0xC0, 0x30, + 0x0F, 0x00, 0xC0, 0x3C, 0x03, 0x00, 0xC0, 0x0C, 0x00, 0x00, 0x30, 0x00, + 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, + 0xC0, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, + 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, + 0x03, 0x00, 0x00, 0x0C, 0x00, 0x0F, 0xFF, 0xC0, 0x3F, 0xFF, 0x00, 0xFF, + 0x01, 0xFF, 0xFE, 0x03, 0xFC, 0xC0, 0x00, 0x61, 0x80, 0x00, 0xC3, 0x00, + 0x01, 0x86, 0x00, 0x03, 0x0C, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x30, 0x00, + 0x18, 0x60, 0x00, 0x30, 0xC0, 0x00, 0x61, 0x80, 0x00, 0xC3, 0x00, 0x01, + 0x86, 0x00, 0x03, 0x0C, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x30, 0x00, 0x18, + 0x60, 0x00, 0x30, 0xC0, 0x00, 0x61, 0x80, 0x00, 0xC3, 0x80, 0x03, 0x83, + 0x00, 0x06, 0x07, 0x00, 0x1C, 0x07, 0x00, 0x70, 0x07, 0x83, 0xC0, 0x07, + 0xFF, 0x00, 0x03, 0xF8, 0x00, 0x7F, 0xC0, 0x3F, 0xF7, 0xFC, 0x03, 0xFF, + 0x18, 0x00, 0x01, 0x80, 0xC0, 0x00, 0x30, 0x0C, 0x00, 0x03, 0x00, 0x60, + 0x00, 0x30, 0x06, 0x00, 0x06, 0x00, 0x60, 0x00, 0x60, 0x03, 0x00, 0x0C, + 0x00, 0x30, 0x00, 0xC0, 0x03, 0x80, 0x0C, 0x00, 0x18, 0x01, 0x80, 0x01, + 0x80, 0x18, 0x00, 0x0C, 0x03, 0x00, 0x00, 0xC0, 0x30, 0x00, 0x0E, 0x03, + 0x00, 0x00, 0x60, 0x60, 0x00, 0x06, 0x06, 0x00, 0x00, 0x30, 0xC0, 0x00, + 0x03, 0x0C, 0x00, 0x00, 0x30, 0x80, 0x00, 0x01, 0x98, 0x00, 0x00, 0x19, + 0x80, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0xE0, 0x00, + 0xFF, 0x80, 0x7F, 0xFF, 0xE0, 0x1F, 0xF3, 0x00, 0x00, 0x30, 0xC0, 0x00, + 0x0C, 0x30, 0x00, 0x03, 0x0C, 0x03, 0x80, 0xC3, 0x01, 0xE0, 0x30, 0x60, + 0x78, 0x0C, 0x18, 0x1F, 0x02, 0x06, 0x04, 0xC0, 0x81, 0x83, 0x30, 0x60, + 0x60, 0xCC, 0x18, 0x18, 0x31, 0x86, 0x06, 0x18, 0x61, 0x81, 0x86, 0x18, + 0x60, 0x71, 0x87, 0x18, 0x0C, 0x40, 0xC6, 0x03, 0x30, 0x31, 0x00, 0xCC, + 0x0C, 0xC0, 0x33, 0x01, 0xB0, 0x0D, 0x80, 0x6C, 0x03, 0x60, 0x1B, 0x00, + 0xD8, 0x06, 0xC0, 0x34, 0x00, 0xF0, 0x07, 0x00, 0x3C, 0x01, 0xC0, 0x0E, + 0x00, 0x7F, 0x00, 0xFF, 0x7F, 0x00, 0xFF, 0x18, 0x00, 0x18, 0x0C, 0x00, + 0x38, 0x0E, 0x00, 0x70, 0x07, 0x00, 0x60, 0x03, 0x00, 0xC0, 0x01, 0x81, + 0x80, 0x01, 0xC3, 0x80, 0x00, 0xE7, 0x00, 0x00, 0x76, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0x18, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x66, + 0x00, 0x00, 0xC3, 0x00, 0x01, 0x81, 0x80, 0x03, 0x81, 0xC0, 0x07, 0x00, + 0xE0, 0x06, 0x00, 0x60, 0x0C, 0x00, 0x30, 0x18, 0x00, 0x18, 0x38, 0x00, + 0x1C, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, + 0xFF, 0x18, 0x00, 0x18, 0x0C, 0x00, 0x30, 0x0E, 0x00, 0x70, 0x06, 0x00, + 0x60, 0x03, 0x00, 0xC0, 0x03, 0x81, 0xC0, 0x01, 0x81, 0x80, 0x00, 0xC3, + 0x00, 0x00, 0xE7, 0x00, 0x00, 0x66, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, + 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, + 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x07, 0xFF, 0xE0, 0x07, 0xFF, + 0xE0, 0x7F, 0xFF, 0x9F, 0xFF, 0xE6, 0x00, 0x19, 0x80, 0x0C, 0x60, 0x07, + 0x18, 0x03, 0x86, 0x00, 0xC1, 0x80, 0x70, 0x00, 0x38, 0x00, 0x0C, 0x00, + 0x07, 0x00, 0x03, 0x80, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x38, 0x00, 0x1C, + 0x00, 0x06, 0x00, 0x03, 0x80, 0x31, 0xC0, 0x0C, 0x60, 0x03, 0x30, 0x00, + 0xDC, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, + 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, + 0x0C, 0x18, 0x30, 0x60, 0xFF, 0xFC, 0xC0, 0x00, 0x30, 0x00, 0x06, 0x00, + 0x01, 0x80, 0x00, 0x30, 0x00, 0x0C, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, + 0x0C, 0x00, 0x03, 0x00, 0x00, 0x60, 0x00, 0x18, 0x00, 0x03, 0x00, 0x00, + 0xC0, 0x00, 0x18, 0x00, 0x06, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x06, + 0x00, 0x01, 0x80, 0x00, 0x30, 0x00, 0x0C, 0x00, 0x03, 0x80, 0x00, 0x60, + 0x00, 0x1C, 0x00, 0x03, 0x00, 0x00, 0xE0, 0x00, 0x18, 0x00, 0x07, 0x00, + 0x00, 0xC0, 0x00, 0x30, 0x00, 0x06, 0x00, 0x01, 0x80, 0x00, 0x30, 0x00, + 0x0C, 0xFF, 0xFC, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, + 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, + 0x18, 0x30, 0x60, 0xC1, 0x83, 0xFF, 0xFC, 0x00, 0x40, 0x00, 0x30, 0x00, + 0x1E, 0x00, 0x0E, 0xC0, 0x07, 0x38, 0x01, 0x87, 0x00, 0xC0, 0xC0, 0x60, + 0x18, 0x38, 0x03, 0x1C, 0x00, 0xE6, 0x00, 0x1F, 0x00, 0x03, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xE0, 0x70, 0x3C, 0x0E, 0x07, 0x03, + 0x01, 0xFC, 0x00, 0x7F, 0xFC, 0x01, 0xC0, 0x3C, 0x00, 0x00, 0x30, 0x00, + 0x00, 0x60, 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0x18, 0x00, 0x00, + 0x60, 0x0F, 0xF9, 0x81, 0xFF, 0xFE, 0x0F, 0x80, 0x38, 0x70, 0x00, 0x63, + 0x80, 0x01, 0x8C, 0x00, 0x06, 0x30, 0x00, 0x18, 0xC0, 0x00, 0xE3, 0x00, + 0x07, 0x86, 0x00, 0x76, 0x1E, 0x07, 0x9F, 0x3F, 0xF8, 0x7C, 0x3F, 0x80, + 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, + 0x01, 0x80, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x1F, 0x80, + 0x18, 0xFF, 0xC0, 0x33, 0x81, 0xC0, 0x6E, 0x01, 0xC0, 0xF0, 0x00, 0xC1, + 0xE0, 0x01, 0xC3, 0x80, 0x01, 0x87, 0x00, 0x03, 0x8C, 0x00, 0x03, 0x18, + 0x00, 0x06, 0x30, 0x00, 0x0C, 0x60, 0x00, 0x18, 0xC0, 0x00, 0x31, 0x80, + 0x00, 0x63, 0x80, 0x01, 0x87, 0x00, 0x03, 0x0F, 0x00, 0x0E, 0x1F, 0x00, + 0x38, 0x37, 0x00, 0xE3, 0xE7, 0x03, 0x87, 0xC7, 0xFE, 0x00, 0x03, 0xF0, + 0x00, 0x01, 0xFC, 0x00, 0x3F, 0xF9, 0x83, 0xC0, 0xFC, 0x38, 0x01, 0xE3, + 0x00, 0x07, 0x38, 0x00, 0x19, 0x80, 0x00, 0xDC, 0x00, 0x06, 0xC0, 0x00, + 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x60, + 0x00, 0x03, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x70, 0x00, 0x01, 0x80, 0x00, + 0xC7, 0x00, 0x1E, 0x1E, 0x03, 0xC0, 0x7F, 0xFC, 0x00, 0xFF, 0x00, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, + 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x01, 0xF8, 0x18, 0x07, + 0xFE, 0x18, 0x0F, 0x07, 0x98, 0x1C, 0x01, 0xD8, 0x38, 0x00, 0xF8, 0x70, + 0x00, 0x78, 0x60, 0x00, 0x38, 0xE0, 0x00, 0x38, 0xC0, 0x00, 0x18, 0xC0, + 0x00, 0x18, 0xC0, 0x00, 0x18, 0xC0, 0x00, 0x18, 0xC0, 0x00, 0x18, 0xC0, + 0x00, 0x18, 0x60, 0x00, 0x38, 0x60, 0x00, 0x38, 0x70, 0x00, 0x78, 0x38, + 0x00, 0xD8, 0x1C, 0x01, 0xD8, 0x0F, 0x07, 0x9F, 0x07, 0xFE, 0x1F, 0x01, + 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x3F, 0xF8, 0x07, 0x80, 0xF0, 0x70, 0x01, + 0xC3, 0x00, 0x07, 0x30, 0x00, 0x19, 0x80, 0x00, 0x78, 0x00, 0x03, 0xC0, + 0x00, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x0C, 0x00, 0x00, + 0x60, 0x00, 0x01, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, 0x01, 0xC0, + 0x00, 0xC7, 0x00, 0x0E, 0x1E, 0x03, 0xE0, 0x3F, 0xFC, 0x00, 0x7F, 0x00, + 0x00, 0x7F, 0xC0, 0x3F, 0xFC, 0x0E, 0x00, 0x03, 0x80, 0x00, 0x60, 0x00, + 0x0C, 0x00, 0x01, 0x80, 0x00, 0x30, 0x00, 0xFF, 0xFF, 0x9F, 0xFF, 0xF0, + 0x18, 0x00, 0x03, 0x00, 0x00, 0x60, 0x00, 0x0C, 0x00, 0x01, 0x80, 0x00, + 0x30, 0x00, 0x06, 0x00, 0x00, 0xC0, 0x00, 0x18, 0x00, 0x03, 0x00, 0x00, + 0x60, 0x00, 0x0C, 0x00, 0x01, 0x80, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, + 0xC0, 0x03, 0xFF, 0xFC, 0x7F, 0xFF, 0x80, 0x01, 0xF8, 0x00, 0x0F, 0xFC, + 0x7C, 0x38, 0x1C, 0xF8, 0xE0, 0x0D, 0x83, 0x00, 0x0F, 0x0E, 0x00, 0x1E, + 0x18, 0x00, 0x1C, 0x70, 0x00, 0x38, 0xC0, 0x00, 0x31, 0x80, 0x00, 0x63, + 0x00, 0x00, 0xC6, 0x00, 0x01, 0x8C, 0x00, 0x03, 0x18, 0x00, 0x06, 0x18, + 0x00, 0x1C, 0x30, 0x00, 0x38, 0x30, 0x00, 0xF0, 0x70, 0x03, 0x60, 0x78, + 0x1C, 0xC0, 0x3F, 0xF1, 0x80, 0x1F, 0x83, 0x00, 0x00, 0x06, 0x00, 0x00, + 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x03, + 0x80, 0x00, 0x0E, 0x00, 0x3F, 0xF8, 0x00, 0x7F, 0xC0, 0x00, 0xF8, 0x00, + 0x01, 0xF0, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, + 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x3F, 0x00, 0x18, 0xFF, 0x80, + 0x37, 0x03, 0x80, 0x7C, 0x03, 0x80, 0xF0, 0x03, 0x81, 0xC0, 0x03, 0x03, + 0x00, 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x18, 0x00, 0x30, 0x30, + 0x00, 0x60, 0x60, 0x00, 0xC0, 0xC0, 0x01, 0x81, 0x80, 0x03, 0x03, 0x00, + 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x18, 0x00, 0x30, 0x30, 0x00, + 0x63, 0xFC, 0x07, 0xFF, 0xF8, 0x0F, 0xF0, 0x01, 0xC0, 0x00, 0x70, 0x00, + 0x1C, 0x00, 0x07, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0F, 0xF0, 0x03, 0xFC, 0x00, 0x03, 0x00, 0x00, 0xC0, + 0x00, 0x30, 0x00, 0x0C, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, + 0x0C, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x0C, 0x00, 0x03, + 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x0C, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, + 0xC0, 0x00, 0x70, 0x01, 0xC0, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xC0, 0x03, 0x00, 0x0C, + 0x00, 0x30, 0x00, 0xC0, 0x03, 0x00, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x03, + 0x00, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x03, 0x00, 0x0C, 0x00, 0x30, 0x00, + 0xC0, 0x03, 0x00, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x03, 0x00, 0x0C, 0x00, + 0x70, 0x03, 0x80, 0x1C, 0xFF, 0xE3, 0xFF, 0x00, 0xF8, 0x00, 0x03, 0xE0, + 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0x18, 0x00, 0x00, 0x60, 0x00, + 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0x18, 0x1F, 0xE0, 0x60, 0x7F, 0x81, + 0x80, 0x60, 0x06, 0x07, 0x00, 0x18, 0x38, 0x00, 0x61, 0xC0, 0x01, 0x8E, + 0x00, 0x06, 0x70, 0x00, 0x1B, 0x80, 0x00, 0x7F, 0x00, 0x01, 0xCE, 0x00, + 0x06, 0x1C, 0x00, 0x18, 0x38, 0x00, 0x60, 0x70, 0x01, 0x80, 0xE0, 0x06, + 0x01, 0xC0, 0x18, 0x03, 0x80, 0x60, 0x07, 0x0F, 0x80, 0x7F, 0xFE, 0x01, + 0xFF, 0x3F, 0xC0, 0x0F, 0xF0, 0x00, 0x0C, 0x00, 0x03, 0x00, 0x00, 0xC0, + 0x00, 0x30, 0x00, 0x0C, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, + 0x0C, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x0C, 0x00, 0x03, + 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x0C, 0x00, 0x03, 0x00, 0x00, 0xC0, + 0x00, 0x30, 0x00, 0x0C, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x0F, + 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xF0, 0x3C, 0x0F, 0x9F, 0x87, 0xE0, 0xFB, + 0x1C, 0xC7, 0x01, 0xE0, 0xD8, 0x38, 0x1C, 0x07, 0x01, 0x81, 0x80, 0x60, + 0x18, 0x18, 0x06, 0x01, 0x81, 0x80, 0x60, 0x18, 0x18, 0x06, 0x01, 0x81, + 0x80, 0x60, 0x18, 0x18, 0x06, 0x01, 0x81, 0x80, 0x60, 0x18, 0x18, 0x06, + 0x01, 0x81, 0x80, 0x60, 0x18, 0x18, 0x06, 0x01, 0x81, 0x80, 0x60, 0x18, + 0x18, 0x06, 0x01, 0x81, 0x80, 0x60, 0x18, 0x18, 0x06, 0x01, 0x8F, 0xE0, + 0x7C, 0x1F, 0xFE, 0x07, 0xC1, 0xF0, 0x00, 0x1F, 0x00, 0xF8, 0xFF, 0x81, + 0xF3, 0x83, 0x80, 0x6C, 0x03, 0x80, 0xF0, 0x03, 0x81, 0xC0, 0x03, 0x03, + 0x00, 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x18, 0x00, 0x30, 0x30, + 0x00, 0x60, 0x60, 0x00, 0xC0, 0xC0, 0x01, 0x81, 0x80, 0x03, 0x03, 0x00, + 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x18, 0x00, 0x30, 0x30, 0x00, + 0x67, 0xFC, 0x03, 0xFF, 0xF8, 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0xFE, + 0x00, 0xF0, 0x3C, 0x07, 0x00, 0x38, 0x38, 0x00, 0x71, 0xC0, 0x00, 0xE6, + 0x00, 0x01, 0x98, 0x00, 0x06, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, + 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x36, 0x00, 0x01, + 0x98, 0x00, 0x06, 0x70, 0x00, 0x38, 0xE0, 0x01, 0xC1, 0xC0, 0x0E, 0x03, + 0xC0, 0xF0, 0x07, 0xFF, 0x80, 0x03, 0xF0, 0x00, 0x00, 0x3F, 0x01, 0xF1, + 0xFF, 0x83, 0xE7, 0x03, 0x80, 0xD8, 0x01, 0x81, 0xE0, 0x01, 0x83, 0xC0, + 0x03, 0x87, 0x00, 0x03, 0x0E, 0x00, 0x07, 0x18, 0x00, 0x06, 0x30, 0x00, + 0x0C, 0x60, 0x00, 0x18, 0xC0, 0x00, 0x31, 0x80, 0x00, 0x63, 0x00, 0x00, + 0xC7, 0x00, 0x03, 0x0E, 0x00, 0x06, 0x1E, 0x00, 0x18, 0x36, 0x00, 0x70, + 0x67, 0x03, 0xC0, 0xC7, 0xFE, 0x01, 0x83, 0xF0, 0x03, 0x00, 0x00, 0x06, + 0x00, 0x00, 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, + 0x00, 0x00, 0xC0, 0x00, 0x0F, 0xFC, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x01, + 0xF8, 0x00, 0x07, 0xFF, 0x1F, 0x0F, 0x07, 0x9F, 0x1C, 0x01, 0xD8, 0x38, + 0x00, 0x78, 0x70, 0x00, 0x78, 0x60, 0x00, 0x38, 0xE0, 0x00, 0x38, 0xC0, + 0x00, 0x18, 0xC0, 0x00, 0x18, 0xC0, 0x00, 0x18, 0xC0, 0x00, 0x18, 0xC0, + 0x00, 0x18, 0xC0, 0x00, 0x18, 0x60, 0x00, 0x38, 0x70, 0x00, 0x78, 0x30, + 0x00, 0x78, 0x1C, 0x01, 0xD8, 0x0F, 0x07, 0x98, 0x07, 0xFF, 0x18, 0x01, + 0xFC, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, + 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, + 0x03, 0xFF, 0x00, 0x03, 0xFF, 0x7E, 0x03, 0xC3, 0xF0, 0x7F, 0x81, 0x8F, + 0x0E, 0x0C, 0xE0, 0x00, 0x7E, 0x00, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x00, + 0xC0, 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, 0x80, 0x00, 0x0C, 0x00, + 0x00, 0x60, 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, 0x00, 0xC0, 0x00, 0x06, + 0x00, 0x00, 0x30, 0x00, 0x3F, 0xFF, 0xC1, 0xFF, 0xFE, 0x00, 0x07, 0xF0, + 0x07, 0xFF, 0x63, 0xC0, 0xF9, 0xC0, 0x0E, 0x60, 0x01, 0x98, 0x00, 0x66, + 0x00, 0x19, 0xC0, 0x00, 0x38, 0x00, 0x07, 0xC0, 0x00, 0x7F, 0xC0, 0x00, + 0x7C, 0x00, 0x03, 0x80, 0x00, 0x70, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, + 0xF8, 0x00, 0x7F, 0x00, 0x3B, 0xF0, 0x3C, 0xDF, 0xFE, 0x00, 0xFE, 0x00, + 0x0C, 0x00, 0x00, 0x60, 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, 0x00, 0xC0, + 0x00, 0x06, 0x00, 0x03, 0xFF, 0xFE, 0x1F, 0xFF, 0xF0, 0x0C, 0x00, 0x00, + 0x60, 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, 0x00, 0xC0, 0x00, 0x06, 0x00, + 0x00, 0x30, 0x00, 0x01, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x60, 0x00, 0x03, + 0x00, 0x00, 0x18, 0x00, 0x00, 0xC0, 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, + 0x00, 0xC0, 0x07, 0x07, 0x01, 0xF0, 0x1F, 0xFF, 0x00, 0x3F, 0x80, 0xF8, + 0x03, 0xF1, 0xF0, 0x07, 0xE0, 0x60, 0x00, 0xC0, 0xC0, 0x01, 0x81, 0x80, + 0x03, 0x03, 0x00, 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x18, 0x00, + 0x30, 0x30, 0x00, 0x60, 0x60, 0x00, 0xC0, 0xC0, 0x01, 0x81, 0x80, 0x03, + 0x03, 0x00, 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x38, 0x18, 0x00, 0xF0, + 0x18, 0x03, 0x60, 0x38, 0x3C, 0xF8, 0x3F, 0xF1, 0xF0, 0x1F, 0x00, 0x00, + 0x7F, 0xC0, 0xFF, 0xDF, 0xF0, 0x3F, 0xF0, 0xC0, 0x00, 0xC0, 0x30, 0x00, + 0x30, 0x06, 0x00, 0x1C, 0x01, 0x80, 0x06, 0x00, 0x30, 0x01, 0x80, 0x0C, + 0x00, 0xC0, 0x03, 0x80, 0x30, 0x00, 0x60, 0x18, 0x00, 0x18, 0x06, 0x00, + 0x03, 0x03, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x18, 0x30, 0x00, 0x06, 0x18, + 0x00, 0x00, 0xC6, 0x00, 0x00, 0x33, 0x00, 0x00, 0x0E, 0xC0, 0x00, 0x01, + 0xE0, 0x00, 0x00, 0x78, 0x00, 0x7F, 0x00, 0x3F, 0xDF, 0xC0, 0x0F, 0xF1, + 0x80, 0x00, 0x20, 0x60, 0x00, 0x18, 0x18, 0x00, 0x06, 0x06, 0x03, 0x01, + 0x80, 0x81, 0xE0, 0x60, 0x30, 0x78, 0x10, 0x0C, 0x1E, 0x0C, 0x03, 0x0C, + 0xC3, 0x00, 0xC3, 0x30, 0xC0, 0x10, 0xCC, 0x30, 0x06, 0x61, 0x98, 0x01, + 0x98, 0x66, 0x00, 0x66, 0x19, 0x80, 0x0B, 0x03, 0x60, 0x03, 0xC0, 0xD0, + 0x00, 0xF0, 0x1C, 0x00, 0x38, 0x07, 0x00, 0x0E, 0x01, 0xC0, 0x3F, 0x81, + 0xFE, 0x3F, 0x81, 0xFE, 0x0C, 0x00, 0x38, 0x06, 0x00, 0x70, 0x03, 0x00, + 0xE0, 0x01, 0x81, 0xC0, 0x00, 0xC3, 0x80, 0x00, 0x67, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0x18, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x67, 0x00, 0x00, 0xC3, + 0x80, 0x01, 0x81, 0xC0, 0x03, 0x00, 0xE0, 0x06, 0x00, 0x70, 0x0C, 0x00, + 0x38, 0x18, 0x00, 0x1C, 0x7F, 0x81, 0xFF, 0x7F, 0x81, 0xFF, 0x7F, 0x00, + 0xFF, 0x7F, 0x00, 0xFF, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x18, 0x0C, 0x00, + 0x18, 0x0C, 0x00, 0x30, 0x06, 0x00, 0x30, 0x06, 0x00, 0x60, 0x03, 0x00, + 0x60, 0x03, 0x00, 0xC0, 0x01, 0x80, 0xC0, 0x01, 0x81, 0x80, 0x00, 0xC1, + 0x80, 0x00, 0xC3, 0x00, 0x00, 0x63, 0x00, 0x00, 0x66, 0x00, 0x00, 0x36, + 0x00, 0x00, 0x34, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, + 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, + 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x7F, 0xFC, 0x00, 0x7F, 0xFC, + 0x00, 0xFF, 0xFF, 0x7F, 0xFF, 0xB0, 0x01, 0x98, 0x01, 0xCC, 0x01, 0xC0, + 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xE0, + 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x03, 0x70, + 0x01, 0xB0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0xE0, 0x7C, 0x0C, + 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x03, + 0x00, 0x60, 0x0C, 0x03, 0x00, 0xE0, 0xF0, 0x1E, 0x00, 0x70, 0x06, 0x00, + 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, + 0x0C, 0x01, 0x80, 0x18, 0x03, 0xE0, 0x1C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xF0, 0xE0, 0x1F, 0x00, 0x60, 0x06, 0x00, 0xC0, 0x18, + 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x01, + 0x80, 0x38, 0x01, 0xE0, 0x3C, 0x1C, 0x03, 0x00, 0xC0, 0x18, 0x03, 0x00, + 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0xC0, + 0xF8, 0x1C, 0x00, 0x0F, 0x00, 0x03, 0xFC, 0x03, 0x70, 0xE0, 0x76, 0x07, + 0x8E, 0xC0, 0x1F, 0xC0, 0x00, 0xF0}; + +const GFXglyph FreeMono24pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 28, 0, 1}, // 0x20 ' ' + {0, 5, 30, 28, 11, -28}, // 0x21 '!' + {19, 16, 14, 28, 6, -28}, // 0x22 '"' + {47, 19, 32, 28, 4, -29}, // 0x23 '#' + {123, 18, 33, 28, 5, -29}, // 0x24 '$' + {198, 20, 29, 28, 4, -27}, // 0x25 '%' + {271, 18, 25, 28, 5, -23}, // 0x26 '&' + {328, 7, 14, 28, 11, -28}, // 0x27 ''' + {341, 7, 34, 28, 14, -27}, // 0x28 '(' + {371, 7, 34, 28, 8, -27}, // 0x29 ')' + {401, 18, 16, 28, 5, -27}, // 0x2A '*' + {437, 20, 22, 28, 4, -23}, // 0x2B '+' + {492, 9, 14, 28, 6, -6}, // 0x2C ',' + {508, 22, 2, 28, 3, -13}, // 0x2D '-' + {514, 7, 6, 28, 11, -4}, // 0x2E '.' + {520, 18, 35, 28, 5, -30}, // 0x2F '/' + {599, 18, 30, 28, 5, -28}, // 0x30 '0' + {667, 16, 29, 28, 6, -28}, // 0x31 '1' + {725, 18, 29, 28, 5, -28}, // 0x32 '2' + {791, 19, 30, 28, 5, -28}, // 0x33 '3' + {863, 16, 28, 28, 6, -27}, // 0x34 '4' + {919, 19, 29, 28, 5, -27}, // 0x35 '5' + {988, 18, 30, 28, 6, -28}, // 0x36 '6' + {1056, 18, 28, 28, 5, -27}, // 0x37 '7' + {1119, 18, 30, 28, 5, -28}, // 0x38 '8' + {1187, 18, 30, 28, 6, -28}, // 0x39 '9' + {1255, 7, 21, 28, 11, -19}, // 0x3A ':' + {1274, 10, 27, 28, 7, -19}, // 0x3B ';' + {1308, 22, 22, 28, 3, -23}, // 0x3C '<' + {1369, 24, 9, 28, 2, -17}, // 0x3D '=' + {1396, 21, 22, 28, 4, -23}, // 0x3E '>' + {1454, 17, 28, 28, 6, -26}, // 0x3F '?' + {1514, 18, 32, 28, 5, -28}, // 0x40 '@' + {1586, 28, 26, 28, 0, -25}, // 0x41 'A' + {1677, 22, 26, 28, 3, -25}, // 0x42 'B' + {1749, 22, 28, 28, 3, -26}, // 0x43 'C' + {1826, 22, 26, 28, 3, -25}, // 0x44 'D' + {1898, 22, 26, 28, 3, -25}, // 0x45 'E' + {1970, 22, 26, 28, 3, -25}, // 0x46 'F' + {2042, 23, 28, 28, 3, -26}, // 0x47 'G' + {2123, 23, 26, 28, 3, -25}, // 0x48 'H' + {2198, 16, 26, 28, 6, -25}, // 0x49 'I' + {2250, 23, 27, 28, 4, -25}, // 0x4A 'J' + {2328, 24, 26, 28, 3, -25}, // 0x4B 'K' + {2406, 21, 26, 28, 4, -25}, // 0x4C 'L' + {2475, 26, 26, 28, 1, -25}, // 0x4D 'M' + {2560, 24, 26, 28, 2, -25}, // 0x4E 'N' + {2638, 24, 28, 28, 2, -26}, // 0x4F 'O' + {2722, 21, 26, 28, 3, -25}, // 0x50 'P' + {2791, 24, 32, 28, 2, -26}, // 0x51 'Q' + {2887, 24, 26, 28, 3, -25}, // 0x52 'R' + {2965, 20, 28, 28, 4, -26}, // 0x53 'S' + {3035, 22, 26, 28, 3, -25}, // 0x54 'T' + {3107, 23, 27, 28, 3, -25}, // 0x55 'U' + {3185, 28, 26, 28, 0, -25}, // 0x56 'V' + {3276, 26, 26, 28, 1, -25}, // 0x57 'W' + {3361, 24, 26, 28, 2, -25}, // 0x58 'X' + {3439, 24, 26, 28, 2, -25}, // 0x59 'Y' + {3517, 18, 26, 28, 5, -25}, // 0x5A 'Z' + {3576, 7, 34, 28, 13, -27}, // 0x5B '[' + {3606, 18, 35, 28, 5, -30}, // 0x5C '\' + {3685, 7, 34, 28, 8, -27}, // 0x5D ']' + {3715, 18, 12, 28, 5, -28}, // 0x5E '^' + {3742, 28, 2, 28, 0, 5}, // 0x5F '_' + {3749, 8, 7, 28, 7, -29}, // 0x60 '`' + {3756, 22, 22, 28, 3, -20}, // 0x61 'a' + {3817, 23, 29, 28, 2, -27}, // 0x62 'b' + {3901, 21, 22, 28, 4, -20}, // 0x63 'c' + {3959, 24, 29, 28, 3, -27}, // 0x64 'd' + {4046, 21, 22, 28, 3, -20}, // 0x65 'e' + {4104, 19, 28, 28, 6, -27}, // 0x66 'f' + {4171, 23, 30, 28, 3, -20}, // 0x67 'g' + {4258, 23, 28, 28, 3, -27}, // 0x68 'h' + {4339, 18, 29, 28, 5, -28}, // 0x69 'i' + {4405, 14, 38, 28, 6, -28}, // 0x6A 'j' + {4472, 22, 28, 28, 4, -27}, // 0x6B 'k' + {4549, 18, 28, 28, 5, -27}, // 0x6C 'l' + {4612, 28, 21, 28, 0, -20}, // 0x6D 'm' + {4686, 23, 21, 28, 2, -20}, // 0x6E 'n' + {4747, 22, 22, 28, 3, -20}, // 0x6F 'o' + {4808, 23, 30, 28, 2, -20}, // 0x70 'p' + {4895, 24, 30, 28, 3, -20}, // 0x71 'q' + {4985, 21, 20, 28, 5, -19}, // 0x72 'r' + {5038, 18, 22, 28, 5, -20}, // 0x73 's' + {5088, 21, 27, 28, 3, -25}, // 0x74 't' + {5159, 23, 21, 28, 3, -19}, // 0x75 'u' + {5220, 26, 20, 28, 1, -19}, // 0x76 'v' + {5285, 26, 20, 28, 1, -19}, // 0x77 'w' + {5350, 24, 20, 28, 2, -19}, // 0x78 'x' + {5410, 24, 29, 28, 2, -19}, // 0x79 'y' + {5497, 17, 20, 28, 6, -19}, // 0x7A 'z' + {5540, 11, 34, 28, 8, -27}, // 0x7B '{' + {5587, 2, 34, 28, 13, -27}, // 0x7C '|' + {5596, 11, 34, 28, 9, -27}, // 0x7D '}' + {5643, 20, 6, 28, 4, -15}}; // 0x7E '~' + +const GFXfont FreeMono24pt7b PROGMEM = {(uint8_t *)FreeMono24pt7bBitmaps, + (GFXglyph *)FreeMono24pt7bGlyphs, 0x20, + 0x7E, 47}; + +// Approx. 6330 bytes diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMono9pt7b.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMono9pt7b.h new file mode 100644 index 0000000..a2e9a00 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMono9pt7b.h @@ -0,0 +1,178 @@ +#pragma once +#include + +const uint8_t FreeMono9pt7bBitmaps[] PROGMEM = { + 0xAA, 0xA8, 0x0C, 0xED, 0x24, 0x92, 0x48, 0x24, 0x48, 0x91, 0x2F, 0xE4, + 0x89, 0x7F, 0x28, 0x51, 0x22, 0x40, 0x08, 0x3E, 0x62, 0x40, 0x30, 0x0E, + 0x01, 0x81, 0xC3, 0xBE, 0x08, 0x08, 0x71, 0x12, 0x23, 0x80, 0x23, 0xB8, + 0x0E, 0x22, 0x44, 0x70, 0x38, 0x81, 0x02, 0x06, 0x1A, 0x65, 0x46, 0xC8, + 0xEC, 0xE9, 0x24, 0x5A, 0xAA, 0xA9, 0x40, 0xA9, 0x55, 0x5A, 0x80, 0x10, + 0x22, 0x4B, 0xE3, 0x05, 0x11, 0x00, 0x10, 0x20, 0x47, 0xF1, 0x02, 0x04, + 0x00, 0x6B, 0x48, 0xFF, 0x00, 0xF0, 0x02, 0x08, 0x10, 0x60, 0x81, 0x04, + 0x08, 0x20, 0x41, 0x02, 0x08, 0x00, 0x38, 0x8A, 0x0C, 0x18, 0x30, 0x60, + 0xC1, 0x82, 0x88, 0xE0, 0x27, 0x28, 0x42, 0x10, 0x84, 0x21, 0x3E, 0x38, + 0x8A, 0x08, 0x10, 0x20, 0x82, 0x08, 0x61, 0x03, 0xF8, 0x7C, 0x06, 0x02, + 0x02, 0x1C, 0x06, 0x01, 0x01, 0x01, 0x42, 0x3C, 0x18, 0xA2, 0x92, 0x8A, + 0x28, 0xBF, 0x08, 0x21, 0xC0, 0x7C, 0x81, 0x03, 0xE4, 0x40, 0x40, 0x81, + 0x03, 0x88, 0xE0, 0x1E, 0x41, 0x04, 0x0B, 0x98, 0xB0, 0xC1, 0xC2, 0x88, + 0xE0, 0xFE, 0x04, 0x08, 0x20, 0x40, 0x82, 0x04, 0x08, 0x20, 0x40, 0x38, + 0x8A, 0x0C, 0x14, 0x47, 0x11, 0x41, 0x83, 0x8C, 0xE0, 0x38, 0x8A, 0x1C, + 0x18, 0x68, 0xCE, 0x81, 0x04, 0x13, 0xC0, 0xF0, 0x0F, 0x6C, 0x00, 0xD2, + 0xD2, 0x00, 0x03, 0x04, 0x18, 0x60, 0x60, 0x18, 0x04, 0x03, 0xFF, 0x80, + 0x00, 0x1F, 0xF0, 0x40, 0x18, 0x03, 0x00, 0x60, 0x20, 0x60, 0xC0, 0x80, + 0x3D, 0x84, 0x08, 0x30, 0xC2, 0x00, 0x00, 0x00, 0x30, 0x3C, 0x46, 0x82, + 0x8E, 0xB2, 0xA2, 0xA2, 0x9F, 0x80, 0x80, 0x40, 0x3C, 0x3C, 0x01, 0x40, + 0x28, 0x09, 0x01, 0x10, 0x42, 0x0F, 0xC1, 0x04, 0x40, 0x9E, 0x3C, 0xFE, + 0x21, 0x90, 0x48, 0x67, 0xE2, 0x09, 0x02, 0x81, 0x41, 0xFF, 0x80, 0x3E, + 0xB0, 0xF0, 0x30, 0x08, 0x04, 0x02, 0x00, 0x80, 0x60, 0x8F, 0x80, 0xFE, + 0x21, 0x90, 0x68, 0x14, 0x0A, 0x05, 0x02, 0x83, 0x43, 0x7F, 0x00, 0xFF, + 0x20, 0x90, 0x08, 0x87, 0xC2, 0x21, 0x00, 0x81, 0x40, 0xFF, 0xC0, 0xFF, + 0xA0, 0x50, 0x08, 0x87, 0xC2, 0x21, 0x00, 0x80, 0x40, 0x78, 0x00, 0x1E, + 0x98, 0x6C, 0x0A, 0x00, 0x80, 0x20, 0xF8, 0x0B, 0x02, 0x60, 0x87, 0xC0, + 0xE3, 0xA0, 0x90, 0x48, 0x27, 0xF2, 0x09, 0x04, 0x82, 0x41, 0x71, 0xC0, + 0xF9, 0x08, 0x42, 0x10, 0x84, 0x27, 0xC0, 0x1F, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x82, 0x82, 0xC6, 0x78, 0xE3, 0xA1, 0x11, 0x09, 0x05, 0x83, 0x21, + 0x08, 0x84, 0x41, 0x70, 0xC0, 0xE0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x41, + 0x41, 0x41, 0xFF, 0xE0, 0xEC, 0x19, 0x45, 0x28, 0xA4, 0xA4, 0x94, 0x91, + 0x12, 0x02, 0x40, 0x5C, 0x1C, 0xC3, 0xB0, 0x94, 0x4A, 0x24, 0x92, 0x49, + 0x14, 0x8A, 0x43, 0x70, 0x80, 0x1E, 0x31, 0x90, 0x50, 0x18, 0x0C, 0x06, + 0x02, 0x82, 0x63, 0x0F, 0x00, 0xFE, 0x43, 0x41, 0x41, 0x42, 0x7C, 0x40, + 0x40, 0x40, 0xF0, 0x1C, 0x31, 0x90, 0x50, 0x18, 0x0C, 0x06, 0x02, 0x82, + 0x63, 0x1F, 0x04, 0x07, 0x92, 0x30, 0xFE, 0x21, 0x90, 0x48, 0x24, 0x23, + 0xE1, 0x10, 0x84, 0x41, 0x70, 0xC0, 0x3A, 0xCD, 0x0A, 0x03, 0x01, 0x80, + 0xC1, 0xC7, 0x78, 0xFF, 0xC4, 0x62, 0x21, 0x00, 0x80, 0x40, 0x20, 0x10, + 0x08, 0x1F, 0x00, 0xE3, 0xA0, 0x90, 0x48, 0x24, 0x12, 0x09, 0x04, 0x82, + 0x22, 0x0E, 0x00, 0xF1, 0xE8, 0x10, 0x82, 0x10, 0x42, 0x10, 0x22, 0x04, + 0x80, 0x50, 0x0C, 0x00, 0x80, 0xF1, 0xE8, 0x09, 0x11, 0x25, 0x44, 0xA8, + 0x55, 0x0C, 0xA1, 0x8C, 0x31, 0x84, 0x30, 0xE3, 0xA0, 0x88, 0x82, 0x80, + 0x80, 0xC0, 0x90, 0x44, 0x41, 0x71, 0xC0, 0xE3, 0xA0, 0x88, 0x82, 0x81, + 0x40, 0x40, 0x20, 0x10, 0x08, 0x1F, 0x00, 0xFD, 0x0A, 0x20, 0x81, 0x04, + 0x10, 0x21, 0x83, 0xFC, 0xEA, 0xAA, 0xAA, 0xC0, 0x80, 0x81, 0x03, 0x02, + 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0xD5, 0x55, 0x55, 0xC0, + 0x10, 0x51, 0x22, 0x28, 0x20, 0xFF, 0xE0, 0x88, 0x80, 0x7E, 0x00, 0x80, + 0x47, 0xEC, 0x14, 0x0A, 0x0C, 0xFB, 0xC0, 0x20, 0x10, 0x0B, 0xC6, 0x12, + 0x05, 0x02, 0x81, 0x40, 0xB0, 0xB7, 0x80, 0x3A, 0x8E, 0x0C, 0x08, 0x10, + 0x10, 0x9E, 0x03, 0x00, 0x80, 0x47, 0xA4, 0x34, 0x0A, 0x05, 0x02, 0x81, + 0x21, 0x8F, 0x60, 0x3C, 0x43, 0x81, 0xFF, 0x80, 0x80, 0x61, 0x3E, 0x3D, + 0x04, 0x3E, 0x41, 0x04, 0x10, 0x41, 0x0F, 0x80, 0x3D, 0xA1, 0xA0, 0x50, + 0x28, 0x14, 0x09, 0x0C, 0x7A, 0x01, 0x01, 0x87, 0x80, 0xC0, 0x20, 0x10, + 0x0B, 0xC6, 0x32, 0x09, 0x04, 0x82, 0x41, 0x20, 0xB8, 0xE0, 0x10, 0x01, + 0xC0, 0x81, 0x02, 0x04, 0x08, 0x11, 0xFC, 0x10, 0x3E, 0x10, 0x84, 0x21, + 0x08, 0x42, 0x3F, 0x00, 0xC0, 0x40, 0x40, 0x4F, 0x44, 0x58, 0x70, 0x48, + 0x44, 0x42, 0xC7, 0x70, 0x20, 0x40, 0x81, 0x02, 0x04, 0x08, 0x10, 0x23, + 0xF8, 0xB7, 0x64, 0x62, 0x31, 0x18, 0x8C, 0x46, 0x23, 0x91, 0x5E, 0x31, + 0x90, 0x48, 0x24, 0x12, 0x09, 0x05, 0xC7, 0x3E, 0x31, 0xA0, 0x30, 0x18, + 0x0C, 0x05, 0x8C, 0x7C, 0xDE, 0x30, 0x90, 0x28, 0x14, 0x0A, 0x05, 0x84, + 0xBC, 0x40, 0x20, 0x38, 0x00, 0x3D, 0xA1, 0xA0, 0x50, 0x28, 0x14, 0x09, + 0x0C, 0x7A, 0x01, 0x00, 0x80, 0xE0, 0xCE, 0xA1, 0x82, 0x04, 0x08, 0x10, + 0x7C, 0x3A, 0x8D, 0x0B, 0x80, 0xF0, 0x70, 0xDE, 0x40, 0x40, 0xFC, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x41, 0x3E, 0xC3, 0x41, 0x41, 0x41, 0x41, 0x41, + 0x43, 0x3D, 0xE3, 0xA0, 0x90, 0x84, 0x42, 0x20, 0xA0, 0x50, 0x10, 0xE3, + 0xC0, 0x92, 0x4B, 0x25, 0x92, 0xA9, 0x98, 0x44, 0xE3, 0x31, 0x05, 0x01, + 0x01, 0x41, 0x11, 0x05, 0xC7, 0xE3, 0xA0, 0x90, 0x84, 0x42, 0x40, 0xA0, + 0x60, 0x10, 0x10, 0x08, 0x3E, 0x00, 0xFD, 0x08, 0x20, 0x82, 0x08, 0x10, + 0xBF, 0x29, 0x24, 0xA2, 0x49, 0x26, 0xFF, 0xF8, 0x89, 0x24, 0x8A, 0x49, + 0x2C, 0x61, 0x24, 0x30}; + +const GFXglyph FreeMono9pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 11, 0, 1}, // 0x20 ' ' + {0, 2, 11, 11, 4, -10}, // 0x21 '!' + {3, 6, 5, 11, 2, -10}, // 0x22 '"' + {7, 7, 12, 11, 2, -10}, // 0x23 '#' + {18, 8, 12, 11, 1, -10}, // 0x24 '$' + {30, 7, 11, 11, 2, -10}, // 0x25 '%' + {40, 7, 10, 11, 2, -9}, // 0x26 '&' + {49, 3, 5, 11, 4, -10}, // 0x27 ''' + {51, 2, 13, 11, 5, -10}, // 0x28 '(' + {55, 2, 13, 11, 4, -10}, // 0x29 ')' + {59, 7, 7, 11, 2, -10}, // 0x2A '*' + {66, 7, 7, 11, 2, -8}, // 0x2B '+' + {73, 3, 5, 11, 2, -1}, // 0x2C ',' + {75, 9, 1, 11, 1, -5}, // 0x2D '-' + {77, 2, 2, 11, 4, -1}, // 0x2E '.' + {78, 7, 13, 11, 2, -11}, // 0x2F '/' + {90, 7, 11, 11, 2, -10}, // 0x30 '0' + {100, 5, 11, 11, 3, -10}, // 0x31 '1' + {107, 7, 11, 11, 2, -10}, // 0x32 '2' + {117, 8, 11, 11, 1, -10}, // 0x33 '3' + {128, 6, 11, 11, 3, -10}, // 0x34 '4' + {137, 7, 11, 11, 2, -10}, // 0x35 '5' + {147, 7, 11, 11, 2, -10}, // 0x36 '6' + {157, 7, 11, 11, 2, -10}, // 0x37 '7' + {167, 7, 11, 11, 2, -10}, // 0x38 '8' + {177, 7, 11, 11, 2, -10}, // 0x39 '9' + {187, 2, 8, 11, 4, -7}, // 0x3A ':' + {189, 3, 11, 11, 3, -7}, // 0x3B ';' + {194, 8, 8, 11, 1, -8}, // 0x3C '<' + {202, 9, 4, 11, 1, -6}, // 0x3D '=' + {207, 9, 8, 11, 1, -8}, // 0x3E '>' + {216, 7, 10, 11, 2, -9}, // 0x3F '?' + {225, 8, 12, 11, 2, -10}, // 0x40 '@' + {237, 11, 10, 11, 0, -9}, // 0x41 'A' + {251, 9, 10, 11, 1, -9}, // 0x42 'B' + {263, 9, 10, 11, 1, -9}, // 0x43 'C' + {275, 9, 10, 11, 1, -9}, // 0x44 'D' + {287, 9, 10, 11, 1, -9}, // 0x45 'E' + {299, 9, 10, 11, 1, -9}, // 0x46 'F' + {311, 10, 10, 11, 1, -9}, // 0x47 'G' + {324, 9, 10, 11, 1, -9}, // 0x48 'H' + {336, 5, 10, 11, 3, -9}, // 0x49 'I' + {343, 8, 10, 11, 2, -9}, // 0x4A 'J' + {353, 9, 10, 11, 1, -9}, // 0x4B 'K' + {365, 8, 10, 11, 2, -9}, // 0x4C 'L' + {375, 11, 10, 11, 0, -9}, // 0x4D 'M' + {389, 9, 10, 11, 1, -9}, // 0x4E 'N' + {401, 9, 10, 11, 1, -9}, // 0x4F 'O' + {413, 8, 10, 11, 1, -9}, // 0x50 'P' + {423, 9, 13, 11, 1, -9}, // 0x51 'Q' + {438, 9, 10, 11, 1, -9}, // 0x52 'R' + {450, 7, 10, 11, 2, -9}, // 0x53 'S' + {459, 9, 10, 11, 1, -9}, // 0x54 'T' + {471, 9, 10, 11, 1, -9}, // 0x55 'U' + {483, 11, 10, 11, 0, -9}, // 0x56 'V' + {497, 11, 10, 11, 0, -9}, // 0x57 'W' + {511, 9, 10, 11, 1, -9}, // 0x58 'X' + {523, 9, 10, 11, 1, -9}, // 0x59 'Y' + {535, 7, 10, 11, 2, -9}, // 0x5A 'Z' + {544, 2, 13, 11, 5, -10}, // 0x5B '[' + {548, 7, 13, 11, 2, -11}, // 0x5C '\' + {560, 2, 13, 11, 4, -10}, // 0x5D ']' + {564, 7, 5, 11, 2, -10}, // 0x5E '^' + {569, 11, 1, 11, 0, 2}, // 0x5F '_' + {571, 3, 3, 11, 3, -11}, // 0x60 '`' + {573, 9, 8, 11, 1, -7}, // 0x61 'a' + {582, 9, 11, 11, 1, -10}, // 0x62 'b' + {595, 7, 8, 11, 2, -7}, // 0x63 'c' + {602, 9, 11, 11, 1, -10}, // 0x64 'd' + {615, 8, 8, 11, 1, -7}, // 0x65 'e' + {623, 6, 11, 11, 3, -10}, // 0x66 'f' + {632, 9, 11, 11, 1, -7}, // 0x67 'g' + {645, 9, 11, 11, 1, -10}, // 0x68 'h' + {658, 7, 10, 11, 2, -9}, // 0x69 'i' + {667, 5, 13, 11, 3, -9}, // 0x6A 'j' + {676, 8, 11, 11, 2, -10}, // 0x6B 'k' + {687, 7, 11, 11, 2, -10}, // 0x6C 'l' + {697, 9, 8, 11, 1, -7}, // 0x6D 'm' + {706, 9, 8, 11, 1, -7}, // 0x6E 'n' + {715, 9, 8, 11, 1, -7}, // 0x6F 'o' + {724, 9, 11, 11, 1, -7}, // 0x70 'p' + {737, 9, 11, 11, 1, -7}, // 0x71 'q' + {750, 7, 8, 11, 3, -7}, // 0x72 'r' + {757, 7, 8, 11, 2, -7}, // 0x73 's' + {764, 8, 10, 11, 2, -9}, // 0x74 't' + {774, 8, 8, 11, 1, -7}, // 0x75 'u' + {782, 9, 8, 11, 1, -7}, // 0x76 'v' + {791, 9, 8, 11, 1, -7}, // 0x77 'w' + {800, 9, 8, 11, 1, -7}, // 0x78 'x' + {809, 9, 11, 11, 1, -7}, // 0x79 'y' + {822, 7, 8, 11, 2, -7}, // 0x7A 'z' + {829, 3, 13, 11, 4, -10}, // 0x7B '{' + {834, 1, 13, 11, 5, -10}, // 0x7C '|' + {836, 3, 13, 11, 4, -10}, // 0x7D '}' + {841, 7, 3, 11, 2, -6}}; // 0x7E '~' + +const GFXfont FreeMono9pt7b PROGMEM = {(uint8_t *)FreeMono9pt7bBitmaps, + (GFXglyph *)FreeMono9pt7bGlyphs, 0x20, + 0x7E, 18}; + +// Approx. 1516 bytes diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBold12pt7b.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBold12pt7b.h new file mode 100644 index 0000000..a205386 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBold12pt7b.h @@ -0,0 +1,252 @@ +#pragma once +#include + +const uint8_t FreeMonoBold12pt7bBitmaps[] PROGMEM = { + 0xFF, 0xFF, 0xFF, 0xF6, 0x66, 0x60, 0x6F, 0x60, 0xE7, 0xE7, 0x62, 0x42, + 0x42, 0x42, 0x42, 0x11, 0x87, 0x30, 0xC6, 0x18, 0xC3, 0x31, 0xFF, 0xFF, + 0xF9, 0x98, 0x33, 0x06, 0x60, 0xCC, 0x7F, 0xEF, 0xFC, 0x66, 0x0C, 0xC3, + 0x98, 0x63, 0x04, 0x40, 0x0C, 0x03, 0x00, 0xC0, 0xFE, 0x7F, 0x9C, 0x66, + 0x09, 0x80, 0x78, 0x0F, 0xE0, 0x7F, 0x03, 0xE0, 0xF8, 0x7F, 0xFB, 0xFC, + 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x38, 0x1F, 0x0C, 0x42, 0x10, 0xC4, 0x1F, + 0x03, 0x9C, 0x3C, 0x7F, 0x33, 0xE0, 0x8C, 0x21, 0x08, 0xC3, 0xE0, 0x70, + 0x3E, 0x1F, 0xC6, 0x61, 0x80, 0x70, 0x0C, 0x07, 0x83, 0xEE, 0xDF, 0xB3, + 0xCC, 0x73, 0xFE, 0x7F, 0x80, 0xFD, 0x24, 0x90, 0x39, 0xDC, 0xE6, 0x73, + 0x18, 0xC6, 0x31, 0x8C, 0x31, 0x8E, 0x31, 0xC4, 0xE7, 0x1C, 0xE3, 0x1C, + 0x63, 0x18, 0xC6, 0x31, 0x98, 0xCE, 0x67, 0x10, 0x0C, 0x03, 0x00, 0xC3, + 0xB7, 0xFF, 0xDF, 0xE1, 0xE0, 0xFC, 0x33, 0x0C, 0xC0, 0x06, 0x00, 0x60, + 0x06, 0x00, 0x60, 0x06, 0x0F, 0xFF, 0xFF, 0xF0, 0x60, 0x06, 0x00, 0x60, + 0x06, 0x00, 0x60, 0x06, 0x00, 0x3B, 0x9C, 0xCE, 0x62, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x80, 0x00, 0x40, 0x30, 0x1C, 0x07, 0x03, 0x80, 0xE0, 0x30, + 0x1C, 0x06, 0x03, 0x80, 0xC0, 0x70, 0x18, 0x0E, 0x03, 0x01, 0xC0, 0x60, + 0x38, 0x0E, 0x01, 0x00, 0x1E, 0x0F, 0xC6, 0x1B, 0x87, 0xC0, 0xF0, 0x3C, + 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x87, 0x61, 0x8F, 0xC1, 0xE0, 0x1C, + 0x0F, 0x0F, 0xC3, 0xB0, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, + 0xC0, 0x30, 0x0C, 0x3F, 0xFF, 0xFC, 0x1F, 0x1F, 0xEE, 0x1F, 0x83, 0xC0, + 0xC0, 0x70, 0x38, 0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xE3, 0xF0, 0xFF, 0xFF, + 0xFC, 0x3F, 0x0F, 0xF1, 0x87, 0x00, 0x60, 0x0C, 0x03, 0x83, 0xE0, 0x7C, + 0x01, 0xC0, 0x0C, 0x01, 0x80, 0x3C, 0x0F, 0xFF, 0x9F, 0xC0, 0x07, 0x07, + 0x83, 0xC3, 0xE1, 0xB1, 0xD8, 0xCC, 0xC6, 0xE3, 0x7F, 0xFF, 0xE0, 0x61, + 0xF8, 0xFC, 0x7F, 0x9F, 0xE6, 0x01, 0x80, 0x60, 0x1F, 0x87, 0xF9, 0x86, + 0x00, 0xC0, 0x30, 0x0C, 0x03, 0xC1, 0xBF, 0xE7, 0xE0, 0x07, 0xC7, 0xF3, + 0xC1, 0xC0, 0x60, 0x38, 0x0E, 0xF3, 0xFE, 0xF1, 0xF8, 0x3E, 0x0F, 0x83, + 0x71, 0xCF, 0xE1, 0xF0, 0xFF, 0xFF, 0xFC, 0x1F, 0x07, 0x01, 0x80, 0x60, + 0x38, 0x0C, 0x03, 0x01, 0xC0, 0x60, 0x18, 0x0E, 0x03, 0x00, 0xC0, 0x1E, + 0x1F, 0xEE, 0x1F, 0x03, 0xC0, 0xF0, 0x36, 0x19, 0xFE, 0x7F, 0xB8, 0x7C, + 0x0F, 0x03, 0xE1, 0xDF, 0xE3, 0xF0, 0x3E, 0x1F, 0xCE, 0x3B, 0x07, 0xC1, + 0xF0, 0x7E, 0x3D, 0xFF, 0x3D, 0xC0, 0x70, 0x18, 0x0E, 0x0F, 0x3F, 0x8F, + 0x80, 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x77, 0x70, 0x00, 0x00, 0x76, 0x6C, + 0xC8, 0x80, 0x00, 0x30, 0x0F, 0x03, 0xE0, 0xF8, 0x3E, 0x0F, 0x80, 0x3E, + 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x00, 0x20, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xF0, 0x60, 0x0F, 0x80, 0x3E, 0x00, 0xF8, + 0x03, 0xE0, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x0F, 0x00, 0x40, 0x00, 0x7C, + 0x7F, 0xB0, 0xF8, 0x30, 0x18, 0x1C, 0x3C, 0x3C, 0x18, 0x08, 0x00, 0x07, + 0x03, 0x81, 0xC0, 0x1E, 0x07, 0xF1, 0xC7, 0x30, 0x6C, 0x0D, 0x87, 0xB3, + 0xF6, 0xE6, 0xD8, 0xDB, 0x1B, 0x73, 0x67, 0xFC, 0x7F, 0x80, 0x30, 0x03, + 0x00, 0x71, 0xC7, 0xF8, 0x7C, 0x00, 0x3F, 0x80, 0x7F, 0x80, 0x1F, 0x00, + 0x76, 0x00, 0xEE, 0x01, 0x8C, 0x07, 0x18, 0x0E, 0x38, 0x1F, 0xF0, 0x7F, + 0xF0, 0xC0, 0x61, 0x80, 0xCF, 0xC7, 0xFF, 0x8F, 0xC0, 0xFF, 0xC7, 0xFF, + 0x0C, 0x1C, 0x60, 0x63, 0x03, 0x18, 0x38, 0xFF, 0x87, 0xFE, 0x30, 0x39, + 0x80, 0xCC, 0x06, 0x60, 0x7F, 0xFF, 0x7F, 0xF0, 0x0F, 0xF3, 0xFF, 0x70, + 0x76, 0x03, 0xC0, 0x3C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0x60, + 0x37, 0x07, 0x3F, 0xF0, 0xFC, 0xFF, 0x0F, 0xFC, 0x60, 0xE6, 0x06, 0x60, + 0x36, 0x03, 0x60, 0x36, 0x03, 0x60, 0x36, 0x03, 0x60, 0x76, 0x0E, 0xFF, + 0xCF, 0xF8, 0xFF, 0xF7, 0xFF, 0x8C, 0x0C, 0x60, 0x63, 0x1B, 0x18, 0xC0, + 0xFE, 0x07, 0xF0, 0x31, 0x81, 0x8C, 0xCC, 0x06, 0x60, 0x3F, 0xFF, 0xFF, + 0xFC, 0xFF, 0xFF, 0xFF, 0xCC, 0x06, 0x60, 0x33, 0x19, 0x98, 0xC0, 0xFE, + 0x07, 0xF0, 0x31, 0x81, 0x8C, 0x0C, 0x00, 0x60, 0x0F, 0xF0, 0x7F, 0x80, + 0x0F, 0xF1, 0xFF, 0x9C, 0x1C, 0xC0, 0x6C, 0x03, 0x60, 0x03, 0x00, 0x18, + 0x7F, 0xC3, 0xFE, 0x01, 0xB8, 0x0C, 0xE0, 0xE3, 0xFF, 0x07, 0xE0, 0x7C, + 0xF9, 0xF3, 0xE3, 0x03, 0x0C, 0x0C, 0x30, 0x30, 0xC0, 0xC3, 0xFF, 0x0F, + 0xFC, 0x30, 0x30, 0xC0, 0xC3, 0x03, 0x0C, 0x0C, 0xFC, 0xFF, 0xF3, 0xF0, + 0xFF, 0xFF, 0xF0, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, + 0x00, 0xC0, 0x30, 0xFF, 0xFF, 0xF0, 0x0F, 0xF8, 0x7F, 0xC0, 0x30, 0x01, + 0x80, 0x0C, 0x00, 0x60, 0x03, 0x18, 0x18, 0xC0, 0xC6, 0x06, 0x30, 0x31, + 0xC3, 0x0F, 0xF8, 0x1F, 0x00, 0xFC, 0xFB, 0xF3, 0xE3, 0x0E, 0x0C, 0x70, + 0x33, 0x80, 0xFC, 0x03, 0xF0, 0x0F, 0xE0, 0x39, 0xC0, 0xC3, 0x03, 0x0E, + 0x0C, 0x18, 0xFC, 0x7F, 0xF0, 0xF0, 0xFF, 0x0F, 0xF0, 0x18, 0x01, 0x80, + 0x18, 0x01, 0x80, 0x18, 0x01, 0x80, 0x18, 0x31, 0x83, 0x18, 0x31, 0x83, + 0xFF, 0xFF, 0xFF, 0xF0, 0x3F, 0xC0, 0xF7, 0x87, 0x9E, 0x1E, 0x7C, 0xF9, + 0xB3, 0xE6, 0xFD, 0x99, 0xF6, 0x67, 0x99, 0x8E, 0x66, 0x31, 0x98, 0x06, + 0xFC, 0xFF, 0xF3, 0xF0, 0xF1, 0xFF, 0xCF, 0xCF, 0x0C, 0x78, 0x63, 0xE3, + 0x1B, 0x18, 0xDC, 0xC6, 0x76, 0x31, 0xB1, 0x8F, 0x8C, 0x3C, 0x61, 0xE7, + 0xE7, 0x3F, 0x18, 0x0F, 0x03, 0xFC, 0x70, 0xE6, 0x06, 0xE0, 0x7C, 0x03, + 0xC0, 0x3C, 0x03, 0xC0, 0x3E, 0x07, 0x60, 0x67, 0x0E, 0x3F, 0xC0, 0xF0, + 0xFF, 0x8F, 0xFE, 0x30, 0x73, 0x03, 0x30, 0x33, 0x03, 0x30, 0x73, 0xFE, + 0x3F, 0x83, 0x00, 0x30, 0x03, 0x00, 0xFF, 0x0F, 0xF0, 0x0F, 0x03, 0xFC, + 0x70, 0xE6, 0x06, 0xE0, 0x7C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3E, 0x07, + 0x60, 0x67, 0x0E, 0x3F, 0xC1, 0xF0, 0x18, 0x33, 0xFF, 0x3F, 0xE0, 0xFF, + 0x83, 0xFF, 0x83, 0x07, 0x0C, 0x0C, 0x30, 0x30, 0xC1, 0xC3, 0xFE, 0x0F, + 0xF0, 0x31, 0xE0, 0xC3, 0x83, 0x07, 0x0C, 0x0C, 0xFE, 0x3F, 0xF8, 0x70, + 0x3F, 0xDF, 0xFE, 0x1F, 0x03, 0xC0, 0xF8, 0x07, 0xE0, 0x7E, 0x01, 0xF0, + 0x3C, 0x0F, 0x87, 0xFF, 0xBF, 0xC0, 0xFF, 0xFF, 0xFF, 0xC6, 0x3C, 0x63, + 0xC6, 0x3C, 0x63, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, + 0x3F, 0xC3, 0xFC, 0xFF, 0xFF, 0xFF, 0x60, 0x66, 0x06, 0x60, 0x66, 0x06, + 0x60, 0x66, 0x06, 0x60, 0x66, 0x06, 0x60, 0x63, 0x9C, 0x1F, 0xC0, 0xF0, + 0xFC, 0x3F, 0xFC, 0x3F, 0x30, 0x0C, 0x38, 0x1C, 0x18, 0x18, 0x1C, 0x38, + 0x1C, 0x38, 0x0E, 0x70, 0x0E, 0x70, 0x0F, 0x60, 0x07, 0xE0, 0x07, 0xE0, + 0x03, 0xC0, 0x03, 0xC0, 0xFC, 0xFF, 0xF3, 0xF6, 0x01, 0xDC, 0xC6, 0x77, + 0x99, 0xDE, 0x67, 0x79, 0x8D, 0xFE, 0x3F, 0xF8, 0xF3, 0xE3, 0xCF, 0x8F, + 0x3C, 0x38, 0x70, 0xE1, 0xC0, 0xF8, 0xFB, 0xE3, 0xE3, 0x86, 0x0F, 0x38, + 0x1F, 0xC0, 0x3E, 0x00, 0x70, 0x03, 0xE0, 0x0F, 0x80, 0x77, 0x03, 0x8E, + 0x1E, 0x1C, 0xFC, 0xFF, 0xF3, 0xF0, 0xF9, 0xFF, 0x9F, 0x30, 0xC3, 0x9C, + 0x19, 0x81, 0xF8, 0x0F, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, + 0x3F, 0xC3, 0xFC, 0xFF, 0xBF, 0xEC, 0x3B, 0x0C, 0xC6, 0x33, 0x80, 0xC0, + 0x60, 0x38, 0xCC, 0x36, 0x0F, 0x03, 0xFF, 0xFF, 0xF0, 0xFF, 0xF1, 0x8C, + 0x63, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0xC7, 0xFE, 0x40, 0x30, 0x0E, + 0x01, 0x80, 0x70, 0x0C, 0x03, 0x80, 0x60, 0x1C, 0x03, 0x00, 0xE0, 0x18, + 0x07, 0x00, 0xC0, 0x38, 0x0E, 0x01, 0xC0, 0x70, 0x0C, 0x01, 0xFF, 0xC6, + 0x31, 0x8C, 0x63, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x1F, 0xFE, 0x04, 0x03, + 0x01, 0xE0, 0xFC, 0x7B, 0x9C, 0x7E, 0x1F, 0x03, 0xFF, 0xFF, 0xFF, 0xF0, + 0xCE, 0x73, 0x3F, 0x07, 0xF8, 0x00, 0xC0, 0x0C, 0x1F, 0xC7, 0xFC, 0x60, + 0xCC, 0x0C, 0xC1, 0xCF, 0xFF, 0x3F, 0xF0, 0xF0, 0x07, 0x80, 0x0C, 0x00, + 0x60, 0x03, 0x7C, 0x1F, 0xF8, 0xF1, 0xC7, 0x07, 0x30, 0x19, 0x80, 0xCC, + 0x06, 0x60, 0x73, 0xC7, 0x7F, 0xFB, 0xDF, 0x00, 0x1F, 0xB3, 0xFF, 0x70, + 0xFE, 0x07, 0xC0, 0x3C, 0x00, 0xC0, 0x0C, 0x00, 0x70, 0x77, 0xFF, 0x1F, + 0xC0, 0x01, 0xE0, 0x0F, 0x00, 0x18, 0x00, 0xC1, 0xF6, 0x3F, 0xF1, 0xC7, + 0x9C, 0x1C, 0xC0, 0x66, 0x03, 0x30, 0x19, 0x81, 0xC7, 0x1E, 0x3F, 0xFC, + 0x7D, 0xE0, 0x1F, 0x83, 0xFC, 0x70, 0xEE, 0x07, 0xFF, 0xFF, 0xFF, 0xE0, + 0x0E, 0x00, 0x70, 0x73, 0xFF, 0x1F, 0xC0, 0x07, 0xC3, 0xFC, 0x60, 0x0C, + 0x0F, 0xFD, 0xFF, 0x86, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, + 0x81, 0xFF, 0xBF, 0xF0, 0x1F, 0x79, 0xFF, 0xDC, 0x79, 0x81, 0xCC, 0x06, + 0x60, 0x33, 0x01, 0x9C, 0x1C, 0x71, 0xE1, 0xFF, 0x07, 0xD8, 0x00, 0xC0, + 0x06, 0x00, 0x70, 0x7F, 0x03, 0xF0, 0xF0, 0x03, 0xC0, 0x03, 0x00, 0x0C, + 0x00, 0x37, 0xC0, 0xFF, 0x83, 0xC7, 0x0C, 0x0C, 0x30, 0x30, 0xC0, 0xC3, + 0x03, 0x0C, 0x0C, 0x30, 0x33, 0xF3, 0xFF, 0xCF, 0xC0, 0x06, 0x00, 0xC0, + 0x00, 0x3F, 0x07, 0xE0, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, + 0x03, 0x0F, 0xFF, 0xFF, 0xC0, 0x06, 0x06, 0x00, 0xFF, 0xFF, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x07, 0xFE, 0xFC, + 0xF0, 0x07, 0x80, 0x0C, 0x00, 0x60, 0x03, 0x3F, 0x19, 0xF8, 0xDE, 0x07, + 0xE0, 0x3E, 0x01, 0xF0, 0x0F, 0xC0, 0x6F, 0x03, 0x1C, 0x78, 0xFF, 0xC7, + 0xE0, 0x7E, 0x0F, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, + 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x61, 0xFF, 0xFF, 0xF8, 0xFE, 0xF1, + 0xFF, 0xF1, 0xCE, 0x63, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0xC6, 0x31, + 0x8C, 0x63, 0x19, 0xF7, 0xBF, 0xEF, 0x78, 0x77, 0xC1, 0xFF, 0x83, 0xC7, + 0x0C, 0x0C, 0x30, 0x30, 0xC0, 0xC3, 0x03, 0x0C, 0x0C, 0x30, 0x33, 0xF1, + 0xFF, 0xC7, 0xC0, 0x1F, 0x83, 0xFC, 0x70, 0xEE, 0x07, 0xC0, 0x3C, 0x03, + 0xC0, 0x3E, 0x07, 0x70, 0xE3, 0xFC, 0x1F, 0x80, 0xF7, 0xE3, 0xFF, 0xC3, + 0xC3, 0x8E, 0x07, 0x30, 0x0C, 0xC0, 0x33, 0x00, 0xCE, 0x07, 0x3C, 0x38, + 0xFF, 0xC3, 0x7E, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x0F, 0xE0, 0x3F, 0x80, + 0x1F, 0xBC, 0xFF, 0xF7, 0x0F, 0x38, 0x1C, 0xC0, 0x33, 0x00, 0xCC, 0x03, + 0x38, 0x1C, 0x70, 0xF0, 0xFF, 0xC1, 0xFB, 0x00, 0x0C, 0x00, 0x30, 0x00, + 0xC0, 0x1F, 0xC0, 0x7F, 0x79, 0xE7, 0xFF, 0x1F, 0x31, 0xC0, 0x18, 0x01, + 0x80, 0x18, 0x01, 0x80, 0x18, 0x0F, 0xFC, 0xFF, 0xC0, 0x3F, 0x9F, 0xFE, + 0x1F, 0x82, 0xFE, 0x1F, 0xE0, 0xFF, 0x03, 0xE0, 0xFF, 0xFF, 0xF0, 0x30, + 0x06, 0x00, 0xC0, 0x7F, 0xEF, 0xFC, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, + 0x00, 0xC0, 0x18, 0x71, 0xFE, 0x1F, 0x00, 0xF1, 0xF7, 0x8F, 0x8C, 0x0C, + 0x60, 0x63, 0x03, 0x18, 0x18, 0xC0, 0xC6, 0x06, 0x38, 0xF0, 0xFF, 0xC3, + 0xEE, 0xFC, 0xFF, 0xF3, 0xF3, 0x87, 0x0E, 0x1C, 0x1C, 0x60, 0x73, 0x80, + 0xEC, 0x03, 0xF0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x00, 0xF8, 0x7F, 0xE1, + 0xF7, 0x39, 0x8C, 0xE6, 0x37, 0xB0, 0xFF, 0xC3, 0xFF, 0x07, 0xBC, 0x1C, + 0xF0, 0x73, 0x81, 0x86, 0x00, 0x7C, 0xF9, 0xF3, 0xE3, 0xCF, 0x07, 0xF8, + 0x0F, 0xC0, 0x1E, 0x00, 0xFC, 0x07, 0x38, 0x38, 0x73, 0xF3, 0xFF, 0xCF, + 0xC0, 0xF9, 0xFF, 0x9F, 0x70, 0xE3, 0x0C, 0x39, 0xC1, 0x98, 0x19, 0x81, + 0xF8, 0x0F, 0x00, 0xF0, 0x06, 0x00, 0x60, 0x0E, 0x00, 0xC0, 0xFF, 0x0F, + 0xF0, 0x7F, 0xCF, 0xF9, 0x8E, 0x33, 0x80, 0x70, 0x1C, 0x07, 0x01, 0xC6, + 0x70, 0xFF, 0xFF, 0xFF, 0x80, 0x0E, 0x3C, 0x60, 0xC1, 0x83, 0x06, 0x0C, + 0x39, 0xE3, 0xC0, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x3C, 0x38, 0xFF, 0xFF, + 0xFF, 0xFF, 0xF0, 0xE1, 0xC0, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x3C, + 0x79, 0x83, 0x06, 0x0C, 0x18, 0x31, 0xE3, 0x80, 0x3C, 0x37, 0xE7, 0x67, + 0xE6, 0x1C}; + +const GFXglyph FreeMonoBold12pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 14, 0, 1}, // 0x20 ' ' + {0, 4, 15, 14, 5, -14}, // 0x21 '!' + {8, 8, 7, 14, 3, -13}, // 0x22 '"' + {15, 11, 18, 14, 2, -15}, // 0x23 '#' + {40, 10, 20, 14, 2, -16}, // 0x24 '$' + {65, 10, 15, 14, 2, -14}, // 0x25 '%' + {84, 10, 13, 14, 2, -12}, // 0x26 '&' + {101, 3, 7, 14, 5, -13}, // 0x27 ''' + {104, 5, 19, 14, 6, -14}, // 0x28 '(' + {116, 5, 19, 14, 3, -14}, // 0x29 ')' + {128, 10, 10, 14, 2, -14}, // 0x2A '*' + {141, 12, 13, 14, 1, -12}, // 0x2B '+' + {161, 5, 7, 14, 4, -2}, // 0x2C ',' + {166, 12, 2, 14, 1, -7}, // 0x2D '-' + {169, 3, 3, 14, 5, -2}, // 0x2E '.' + {171, 10, 20, 14, 2, -16}, // 0x2F '/' + {196, 10, 15, 14, 2, -14}, // 0x30 '0' + {215, 10, 15, 14, 2, -14}, // 0x31 '1' + {234, 10, 15, 14, 2, -14}, // 0x32 '2' + {253, 11, 15, 14, 1, -14}, // 0x33 '3' + {274, 9, 14, 14, 2, -13}, // 0x34 '4' + {290, 10, 15, 14, 2, -14}, // 0x35 '5' + {309, 10, 15, 14, 2, -14}, // 0x36 '6' + {328, 10, 15, 14, 2, -14}, // 0x37 '7' + {347, 10, 15, 14, 2, -14}, // 0x38 '8' + {366, 10, 15, 14, 3, -14}, // 0x39 '9' + {385, 3, 11, 14, 5, -10}, // 0x3A ':' + {390, 4, 15, 14, 4, -10}, // 0x3B ';' + {398, 12, 11, 14, 1, -11}, // 0x3C '<' + {415, 12, 7, 14, 1, -9}, // 0x3D '=' + {426, 12, 11, 14, 1, -11}, // 0x3E '>' + {443, 9, 14, 14, 3, -13}, // 0x3F '?' + {459, 11, 19, 14, 2, -14}, // 0x40 '@' + {486, 15, 14, 14, -1, -13}, // 0x41 'A' + {513, 13, 14, 14, 0, -13}, // 0x42 'B' + {536, 12, 14, 14, 1, -13}, // 0x43 'C' + {557, 12, 14, 14, 1, -13}, // 0x44 'D' + {578, 13, 14, 14, 0, -13}, // 0x45 'E' + {601, 13, 14, 14, 0, -13}, // 0x46 'F' + {624, 13, 14, 14, 1, -13}, // 0x47 'G' + {647, 14, 14, 14, 0, -13}, // 0x48 'H' + {672, 10, 14, 14, 2, -13}, // 0x49 'I' + {690, 13, 14, 14, 1, -13}, // 0x4A 'J' + {713, 14, 14, 14, 0, -13}, // 0x4B 'K' + {738, 12, 14, 14, 1, -13}, // 0x4C 'L' + {759, 14, 14, 14, 0, -13}, // 0x4D 'M' + {784, 13, 14, 14, 0, -13}, // 0x4E 'N' + {807, 12, 14, 14, 1, -13}, // 0x4F 'O' + {828, 12, 14, 14, 0, -13}, // 0x50 'P' + {849, 12, 17, 14, 1, -13}, // 0x51 'Q' + {875, 14, 14, 14, 0, -13}, // 0x52 'R' + {900, 10, 14, 14, 2, -13}, // 0x53 'S' + {918, 12, 14, 14, 1, -13}, // 0x54 'T' + {939, 12, 14, 14, 1, -13}, // 0x55 'U' + {960, 16, 14, 14, -1, -13}, // 0x56 'V' + {988, 14, 14, 14, 0, -13}, // 0x57 'W' + {1013, 14, 14, 14, 0, -13}, // 0x58 'X' + {1038, 12, 14, 14, 1, -13}, // 0x59 'Y' + {1059, 10, 14, 14, 2, -13}, // 0x5A 'Z' + {1077, 5, 19, 14, 6, -14}, // 0x5B '[' + {1089, 10, 20, 14, 2, -16}, // 0x5C '\' + {1114, 5, 19, 14, 3, -14}, // 0x5D ']' + {1126, 10, 8, 14, 2, -15}, // 0x5E '^' + {1136, 14, 2, 14, 0, 4}, // 0x5F '_' + {1140, 4, 4, 14, 4, -15}, // 0x60 '`' + {1142, 12, 11, 14, 1, -10}, // 0x61 'a' + {1159, 13, 15, 14, 0, -14}, // 0x62 'b' + {1184, 12, 11, 14, 1, -10}, // 0x63 'c' + {1201, 13, 15, 14, 1, -14}, // 0x64 'd' + {1226, 12, 11, 14, 1, -10}, // 0x65 'e' + {1243, 11, 15, 14, 2, -14}, // 0x66 'f' + {1264, 13, 16, 14, 1, -10}, // 0x67 'g' + {1290, 14, 15, 14, 0, -14}, // 0x68 'h' + {1317, 11, 14, 14, 1, -13}, // 0x69 'i' + {1337, 8, 19, 15, 3, -13}, // 0x6A 'j' + {1356, 13, 15, 14, 1, -14}, // 0x6B 'k' + {1381, 11, 15, 14, 1, -14}, // 0x6C 'l' + {1402, 15, 11, 14, 0, -10}, // 0x6D 'm' + {1423, 14, 11, 14, 0, -10}, // 0x6E 'n' + {1443, 12, 11, 14, 1, -10}, // 0x6F 'o' + {1460, 14, 16, 14, 0, -10}, // 0x70 'p' + {1488, 14, 16, 14, 0, -10}, // 0x71 'q' + {1516, 12, 11, 14, 1, -10}, // 0x72 'r' + {1533, 10, 11, 14, 2, -10}, // 0x73 's' + {1547, 11, 14, 14, 1, -13}, // 0x74 't' + {1567, 13, 11, 14, 0, -10}, // 0x75 'u' + {1585, 14, 11, 14, 0, -10}, // 0x76 'v' + {1605, 14, 11, 14, 0, -10}, // 0x77 'w' + {1625, 14, 11, 14, 0, -10}, // 0x78 'x' + {1645, 12, 16, 14, 1, -10}, // 0x79 'y' + {1669, 11, 11, 14, 1, -10}, // 0x7A 'z' + {1685, 7, 19, 14, 3, -14}, // 0x7B '{' + {1702, 2, 19, 14, 6, -14}, // 0x7C '|' + {1707, 7, 19, 14, 4, -14}, // 0x7D '}' + {1724, 12, 4, 14, 1, -7}}; // 0x7E '~' + +const GFXfont FreeMonoBold12pt7b PROGMEM = { + (uint8_t *)FreeMonoBold12pt7bBitmaps, (GFXglyph *)FreeMonoBold12pt7bGlyphs, + 0x20, 0x7E, 24}; + +// Approx. 2402 bytes diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBold18pt7b.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBold18pt7b.h new file mode 100644 index 0000000..36664c1 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBold18pt7b.h @@ -0,0 +1,425 @@ +#pragma once +#include + +const uint8_t FreeMonoBold18pt7bBitmaps[] PROGMEM = { + 0x77, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0x9C, 0xE7, 0x39, 0xC4, 0x03, 0xBF, + 0xFF, 0xB8, 0xF1, 0xFE, 0x3F, 0xC7, 0xF8, 0xFF, 0x1E, 0xC1, 0x98, 0x33, + 0x06, 0x60, 0xCC, 0x18, 0x0E, 0x1C, 0x0F, 0x3C, 0x1F, 0x3C, 0x1E, 0x3C, + 0x1E, 0x3C, 0x1E, 0x78, 0x1E, 0x78, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0x1E, 0x78, 0x1E, 0x78, 0x1E, 0x78, 0x7F, 0xFE, 0x7F, 0xFE, + 0x7F, 0xFE, 0x7F, 0xFE, 0x3C, 0x78, 0x3C, 0x78, 0x3C, 0x78, 0x3C, 0xF0, + 0x3C, 0xF0, 0x3C, 0xF0, 0x3C, 0xF0, 0x03, 0x00, 0x1E, 0x00, 0x78, 0x01, + 0xE0, 0x1F, 0xF1, 0xFF, 0xE7, 0xFF, 0xBE, 0x1E, 0xF0, 0x3B, 0xC0, 0xCF, + 0xE0, 0x3F, 0xF8, 0x7F, 0xF0, 0x7F, 0xE0, 0x1F, 0xF0, 0x0F, 0xE0, 0x3F, + 0x80, 0xFF, 0x87, 0xFF, 0xFE, 0xFF, 0xF3, 0x7F, 0x80, 0x78, 0x01, 0xE0, + 0x07, 0x80, 0x1E, 0x00, 0x78, 0x00, 0xC0, 0x1E, 0x00, 0xFF, 0x03, 0x86, + 0x06, 0x06, 0x0C, 0x0C, 0x18, 0x18, 0x38, 0x70, 0x3F, 0xC2, 0x1E, 0x3E, + 0x03, 0xF8, 0x3F, 0x83, 0xF8, 0x0F, 0x8F, 0x18, 0x7F, 0x01, 0xC7, 0x03, + 0x06, 0x06, 0x0C, 0x0C, 0x18, 0x1C, 0x70, 0x1F, 0xC0, 0x0F, 0x00, 0x03, + 0xD0, 0x1F, 0xF0, 0x7F, 0xE1, 0xFF, 0xC3, 0xE6, 0x07, 0x80, 0x0F, 0x00, + 0x0F, 0x00, 0x1F, 0x00, 0x3E, 0x00, 0xFE, 0x03, 0xFE, 0xFF, 0xBD, 0xFE, + 0x3F, 0xFC, 0x3F, 0x7C, 0x7C, 0xFF, 0xFE, 0xFF, 0xFC, 0xFF, 0xF8, 0x7E, + 0xF0, 0xFF, 0xFF, 0xF6, 0x66, 0x66, 0x07, 0x0F, 0x1F, 0x1E, 0x3E, 0x3C, + 0x78, 0x78, 0x78, 0x70, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0x78, 0x78, 0x78, 0x3C, 0x3C, 0x1E, 0x1F, 0x0F, 0x07, 0xE0, 0xF0, 0xF8, + 0x78, 0x7C, 0x3C, 0x3E, 0x1E, 0x1E, 0x1E, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x0F, 0x0F, 0x0E, 0x1E, 0x1E, 0x1E, 0x3C, 0x3C, 0x78, 0xF8, 0xF0, 0xE0, + 0x01, 0x80, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0xFF, 0xFF, + 0xFF, 0xFF, 0x7F, 0xFE, 0x1F, 0xF8, 0x07, 0xE0, 0x0F, 0xF0, 0x1F, 0xF8, + 0x1E, 0x78, 0x1C, 0x38, 0x18, 0x18, 0x01, 0xC0, 0x03, 0xC0, 0x03, 0xC0, + 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, + 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x01, 0x80, 0x3E, 0x78, 0xF3, 0xC7, + 0x8E, 0x1C, 0x70, 0xE1, 0x80, 0x7F, 0xFF, 0xDF, 0xFF, 0xF9, 0xFF, 0xFF, + 0x3F, 0xFF, 0xE0, 0x77, 0xFF, 0xF7, 0x00, 0x00, 0x0E, 0x00, 0x3C, 0x00, + 0x78, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x00, 0x1E, 0x00, 0x38, 0x00, 0xF0, + 0x01, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x3C, 0x00, 0x78, 0x01, 0xE0, 0x03, + 0xC0, 0x0F, 0x00, 0x1E, 0x00, 0x78, 0x00, 0xF0, 0x03, 0xC0, 0x07, 0x80, + 0x1E, 0x00, 0x3C, 0x00, 0x70, 0x01, 0xE0, 0x03, 0x80, 0x03, 0x00, 0x00, + 0x07, 0xE0, 0x1F, 0xF8, 0x3F, 0xFC, 0x3F, 0xFC, 0x7C, 0x3E, 0x78, 0x1E, + 0xF8, 0x1F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, + 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF8, 0x1F, 0x78, 0x1E, + 0x7C, 0x3E, 0x3F, 0xFC, 0x3F, 0xFC, 0x1F, 0xF8, 0x07, 0xE0, 0x07, 0xC0, + 0x1F, 0x80, 0xFF, 0x03, 0xFE, 0x0F, 0xBC, 0x0C, 0x78, 0x00, 0xF0, 0x01, + 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, + 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x81, 0xFF, 0xFB, 0xFF, 0xF7, + 0xFF, 0xE7, 0xFF, 0x80, 0x0F, 0xC0, 0x7F, 0xE1, 0xFF, 0xE3, 0xFF, 0xEF, + 0x87, 0xDE, 0x07, 0xF8, 0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x7C, 0x01, + 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, + 0x78, 0x03, 0xE0, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, + 0x0F, 0xC0, 0x7F, 0xF0, 0xFF, 0xF8, 0xFF, 0xFC, 0x70, 0x3E, 0x00, 0x1E, + 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x3C, 0x03, 0xFC, 0x03, 0xF0, 0x03, 0xF0, + 0x03, 0xFC, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, + 0xE0, 0x3F, 0xFF, 0xFE, 0xFF, 0xFC, 0x7F, 0xF8, 0x1F, 0xE0, 0x00, 0xF8, + 0x03, 0xF0, 0x07, 0xE0, 0x1F, 0xC0, 0x77, 0x80, 0xEF, 0x03, 0x9E, 0x0F, + 0x3C, 0x1C, 0x78, 0x70, 0xF1, 0xE1, 0xE3, 0x83, 0xCF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x78, 0x07, 0xFC, 0x0F, 0xF8, 0x1F, 0xF0, + 0x1F, 0xC0, 0x3F, 0xFC, 0x1F, 0xFE, 0x0F, 0xFF, 0x07, 0xFF, 0x83, 0xC0, + 0x01, 0xE0, 0x00, 0xF0, 0x00, 0x7B, 0xE0, 0x3F, 0xFC, 0x1F, 0xFF, 0x0F, + 0xFF, 0xC3, 0x83, 0xE0, 0x00, 0xF8, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x0F, + 0x00, 0x0F, 0xB8, 0x0F, 0xBF, 0xFF, 0xCF, 0xFF, 0xC3, 0xFF, 0xC0, 0x7F, + 0x80, 0x00, 0xFC, 0x07, 0xFC, 0x3F, 0xF8, 0xFF, 0xF1, 0xF8, 0x07, 0xC0, + 0x1F, 0x00, 0x3C, 0x00, 0xF0, 0x01, 0xE7, 0xC3, 0xDF, 0xC7, 0x7F, 0xCF, + 0xFF, 0xDF, 0x8F, 0xFC, 0x07, 0xF0, 0x0F, 0xF0, 0x1F, 0xE0, 0x3D, 0xE0, + 0xFB, 0xFF, 0xE3, 0xFF, 0xC3, 0xFF, 0x01, 0xF8, 0x00, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x01, 0xE0, 0x03, 0x80, 0x0F, 0x00, 0x1E, + 0x00, 0x38, 0x00, 0xF0, 0x01, 0xE0, 0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, + 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x38, + 0x00, 0x70, 0x00, 0x07, 0xC0, 0x3F, 0xE0, 0xFF, 0xE3, 0xFF, 0xEF, 0x83, + 0xFE, 0x03, 0xFC, 0x07, 0xF8, 0x0F, 0xF0, 0x1E, 0xF0, 0x78, 0xFF, 0xE0, + 0xFF, 0x81, 0xFF, 0x0F, 0xFF, 0x9E, 0x0F, 0x78, 0x0F, 0xF0, 0x1F, 0xE0, + 0x3F, 0xE0, 0xFB, 0xFF, 0xE7, 0xFF, 0xC7, 0xFF, 0x03, 0xF8, 0x00, 0x0F, + 0xC0, 0x3F, 0xE0, 0xFF, 0xE3, 0xFF, 0xEF, 0xC3, 0xDF, 0x03, 0xBC, 0x07, + 0xF8, 0x0F, 0xF0, 0x1F, 0xF0, 0x3D, 0xF1, 0xFB, 0xFF, 0xF3, 0xFE, 0xE3, + 0xFB, 0xC3, 0xE7, 0x80, 0x1E, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xE7, 0xFF, + 0x8F, 0xFE, 0x1F, 0xF0, 0x1F, 0x80, 0x00, 0x77, 0xFF, 0xF7, 0x00, 0x00, + 0x00, 0x00, 0xEF, 0xFF, 0xEE, 0x1C, 0x7C, 0xF9, 0xF1, 0xC0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xF3, 0xC7, 0x8E, 0x3C, 0x70, 0xE1, 0x87, 0x0C, 0x00, + 0x00, 0x00, 0x00, 0x80, 0x00, 0xF0, 0x00, 0xFC, 0x00, 0xFE, 0x00, 0xFE, + 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x07, 0xF0, 0x00, + 0x7F, 0x00, 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xF0, 0x00, 0x7C, 0x00, + 0x07, 0x7F, 0xFF, 0xDF, 0xFF, 0xF9, 0xFF, 0xFF, 0x3F, 0xFF, 0xE0, 0x00, + 0x00, 0x00, 0x00, 0x1F, 0xFF, 0xF7, 0xFF, 0xFE, 0x7F, 0xFF, 0xCF, 0xFF, + 0xF8, 0x00, 0x00, 0x3C, 0x00, 0x0F, 0xC0, 0x01, 0xFC, 0x00, 0x1F, 0xC0, + 0x01, 0xFC, 0x00, 0x1F, 0xC0, 0x01, 0xFC, 0x00, 0x3F, 0x80, 0x3F, 0x80, + 0x3F, 0x80, 0x3F, 0x80, 0x3F, 0x80, 0x3F, 0x80, 0x0F, 0x80, 0x03, 0x80, + 0x00, 0x1F, 0xC0, 0xFF, 0xE3, 0xFF, 0xF7, 0xFF, 0xEF, 0x07, 0xFE, 0x03, + 0xDC, 0x07, 0x80, 0x0F, 0x00, 0x7C, 0x03, 0xF8, 0x1F, 0xC0, 0x1E, 0x00, + 0x30, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x1F, 0x00, 0x3E, + 0x00, 0x7C, 0x00, 0x70, 0x00, 0x07, 0xE0, 0x1F, 0xE0, 0x7F, 0xE1, 0xE1, + 0xC7, 0x83, 0xCE, 0x03, 0xBC, 0x07, 0x70, 0x0E, 0xE0, 0x7D, 0xC3, 0xFB, + 0x8F, 0xF7, 0x3C, 0xEE, 0x71, 0xDC, 0xE3, 0xB9, 0xC7, 0x73, 0xCE, 0xE3, + 0xFF, 0xC3, 0xFF, 0x83, 0xFF, 0x00, 0x07, 0x00, 0x0E, 0x00, 0x1E, 0x02, + 0x1E, 0x1E, 0x3F, 0xFC, 0x1F, 0xF0, 0x1F, 0x80, 0x0F, 0xF8, 0x00, 0x7F, + 0xF0, 0x01, 0xFF, 0xC0, 0x03, 0xFF, 0x00, 0x01, 0xFE, 0x00, 0x07, 0xF8, + 0x00, 0x1C, 0xF0, 0x00, 0xF3, 0xC0, 0x03, 0xCF, 0x00, 0x1E, 0x1E, 0x00, + 0x78, 0x78, 0x03, 0xC0, 0xF0, 0x0F, 0xFF, 0xC0, 0x3F, 0xFF, 0x01, 0xFF, + 0xFE, 0x07, 0xFF, 0xF8, 0x3C, 0x00, 0xF3, 0xFC, 0x1F, 0xEF, 0xF8, 0x7F, + 0xFF, 0xE1, 0xFF, 0x7F, 0x03, 0xF8, 0x7F, 0xFC, 0x0F, 0xFF, 0xF0, 0xFF, + 0xFF, 0x8F, 0xFF, 0xF8, 0x3C, 0x07, 0xC3, 0xC0, 0x3C, 0x3C, 0x03, 0xC3, + 0xC0, 0x7C, 0x3F, 0xFF, 0x83, 0xFF, 0xF0, 0x3F, 0xFF, 0x83, 0xFF, 0xFE, + 0x3C, 0x03, 0xE3, 0xC0, 0x1F, 0x3C, 0x00, 0xF3, 0xC0, 0x0F, 0x3C, 0x01, + 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xEF, 0xFF, 0xFC, 0x7F, 0xFF, 0x00, 0x01, + 0xF8, 0xC1, 0xFF, 0xFC, 0x7F, 0xFF, 0x9F, 0xFF, 0xF7, 0xE0, 0x7E, 0xF8, + 0x07, 0xFE, 0x00, 0x7F, 0x80, 0x0E, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0xC0, + 0x00, 0x78, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xE0, + 0x07, 0x7F, 0x03, 0xE7, 0xFF, 0xFC, 0x7F, 0xFF, 0x03, 0xFF, 0xC0, 0x1F, + 0xE0, 0xFF, 0xF0, 0x3F, 0xFF, 0x0F, 0xFF, 0xE3, 0xFF, 0xFC, 0x78, 0x1F, + 0x9E, 0x03, 0xE7, 0x80, 0x79, 0xE0, 0x0F, 0x78, 0x03, 0xDE, 0x00, 0xF7, + 0x80, 0x3D, 0xE0, 0x0F, 0x78, 0x03, 0xDE, 0x00, 0xF7, 0x80, 0x7D, 0xE0, + 0x1E, 0x78, 0x1F, 0xBF, 0xFF, 0xCF, 0xFF, 0xF3, 0xFF, 0xF0, 0x7F, 0xF0, + 0x00, 0x7F, 0xFF, 0xDF, 0xFF, 0xFB, 0xFF, 0xFF, 0x7F, 0xFF, 0xE3, 0xC0, + 0x3C, 0x78, 0x07, 0x8F, 0x1C, 0xF1, 0xE3, 0xCC, 0x3F, 0xF8, 0x07, 0xFF, + 0x00, 0xFF, 0xE0, 0x1F, 0xFC, 0x03, 0xC7, 0x80, 0x78, 0xF1, 0x8F, 0x0C, + 0x79, 0xE0, 0x0F, 0x3C, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF7, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF3, 0xC0, 0x1E, 0x78, 0x63, 0xCF, 0x1E, 0x79, 0xE3, 0xC6, 0x3F, 0xF8, + 0x07, 0xFF, 0x00, 0xFF, 0xE0, 0x1F, 0xFC, 0x03, 0xC7, 0x80, 0x78, 0xE0, + 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x1F, 0xFC, 0x03, 0xFF, 0x80, + 0x7F, 0xF0, 0x07, 0xFC, 0x00, 0x01, 0xFC, 0xE0, 0x7F, 0xFE, 0x1F, 0xFF, + 0xE3, 0xFF, 0xFE, 0x7F, 0x03, 0xE7, 0xC0, 0x1E, 0xF8, 0x00, 0xEF, 0x00, + 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x03, 0xFE, 0xF0, + 0x3F, 0xFF, 0x03, 0xFF, 0xF8, 0x3F, 0xF7, 0x80, 0x1E, 0x7E, 0x01, 0xE3, + 0xFF, 0xFE, 0x1F, 0xFF, 0xE0, 0xFF, 0xF8, 0x01, 0xFE, 0x00, 0x7F, 0x0F, + 0xE3, 0xFC, 0x7F, 0x9F, 0xE3, 0xFC, 0x7F, 0x1F, 0xC1, 0xE0, 0x3C, 0x0F, + 0x01, 0xE0, 0x78, 0x0F, 0x03, 0xC0, 0x78, 0x1E, 0x03, 0xC0, 0xFF, 0xFE, + 0x07, 0xFF, 0xF0, 0x3F, 0xFF, 0x81, 0xFF, 0xFC, 0x0F, 0x01, 0xE0, 0x78, + 0x0F, 0x03, 0xC0, 0x78, 0x1E, 0x03, 0xC3, 0xFC, 0x7F, 0xBF, 0xE3, 0xFF, + 0xFF, 0x1F, 0xF7, 0xF0, 0x7F, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x00, + 0x78, 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x01, 0xE0, 0x07, 0x83, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xF8, 0x01, 0xFF, 0xE0, 0x3F, 0xFC, + 0x07, 0xFF, 0x80, 0xFF, 0xF0, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0xC0, + 0x00, 0x78, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x3C, 0x38, 0x07, 0x8F, + 0x00, 0xF1, 0xE0, 0x1E, 0x3C, 0x03, 0xC7, 0x80, 0xF8, 0xF8, 0x3F, 0x1F, + 0xFF, 0xC3, 0xFF, 0xF0, 0x1F, 0xFC, 0x00, 0x7E, 0x00, 0xFF, 0x0F, 0xCF, + 0xF9, 0xFE, 0xFF, 0x9F, 0xEF, 0xF8, 0xFC, 0x3C, 0x1F, 0x03, 0xC3, 0xE0, + 0x3C, 0x7C, 0x03, 0xCF, 0x80, 0x3D, 0xF0, 0x03, 0xFE, 0x00, 0x3F, 0xF8, + 0x03, 0xFF, 0x80, 0x3E, 0x7C, 0x03, 0xC3, 0xE0, 0x3C, 0x1E, 0x03, 0xC0, + 0xF0, 0x3C, 0x0F, 0x0F, 0xF8, 0x7E, 0xFF, 0x87, 0xFF, 0xF8, 0x7F, 0x7F, + 0x03, 0xE0, 0xFF, 0xC0, 0x3F, 0xF0, 0x0F, 0xFC, 0x03, 0xFF, 0x00, 0x1E, + 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, + 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x01, 0x87, 0x80, 0xF1, 0xE0, 0x3C, + 0x78, 0x0F, 0x1E, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, + 0xFF, 0xC0, 0x3E, 0x00, 0xF8, 0xFC, 0x01, 0xF9, 0xFC, 0x07, 0xF3, 0xF8, + 0x0F, 0xE3, 0xF8, 0x3F, 0x87, 0xF0, 0x7F, 0x0F, 0xF1, 0xFE, 0x1F, 0xE3, + 0xFC, 0x3D, 0xE7, 0x78, 0x7B, 0xDE, 0xF0, 0xF7, 0xBD, 0xE1, 0xE7, 0xF3, + 0xC3, 0xCF, 0xE7, 0x87, 0x8F, 0x8F, 0x0F, 0x1F, 0x1E, 0x1E, 0x1E, 0x3C, + 0x3C, 0x00, 0x79, 0xFF, 0x07, 0xFF, 0xFE, 0x0F, 0xFF, 0xFC, 0x1F, 0xF7, + 0xF0, 0x1F, 0xC0, 0xFC, 0x1F, 0xEF, 0xE1, 0xFF, 0xFE, 0x1F, 0xFF, 0xF1, + 0xFF, 0x3F, 0x83, 0xC3, 0xF8, 0x3C, 0x3F, 0xC3, 0xC3, 0xFC, 0x3C, 0x3D, + 0xE3, 0xC3, 0xDE, 0x3C, 0x3C, 0xF3, 0xC3, 0xC7, 0xBC, 0x3C, 0x7B, 0xC3, + 0xC3, 0xFC, 0x3C, 0x3F, 0xC3, 0xC1, 0xFC, 0x3C, 0x1F, 0xCF, 0xF8, 0xFC, + 0xFF, 0x87, 0xCF, 0xF8, 0x7C, 0x7F, 0x03, 0xC0, 0x01, 0xF8, 0x00, 0x7F, + 0xE0, 0x0F, 0xFF, 0x81, 0xFF, 0xFC, 0x3F, 0x0F, 0xC7, 0xC0, 0x3E, 0x78, + 0x01, 0xEF, 0x80, 0x1F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, + 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x80, 0x1F, 0x78, 0x01, 0xE7, 0xC0, 0x3E, + 0x3F, 0x0F, 0xC1, 0xFF, 0xF8, 0x1F, 0xFF, 0x00, 0x7F, 0xE0, 0x01, 0xF8, + 0x00, 0x7F, 0xF8, 0x3F, 0xFF, 0x8F, 0xFF, 0xF3, 0xFF, 0xFE, 0x3C, 0x0F, + 0xCF, 0x00, 0xF3, 0xC0, 0x3C, 0xF0, 0x0F, 0x3C, 0x03, 0xCF, 0x03, 0xF3, + 0xFF, 0xF8, 0xFF, 0xFC, 0x3F, 0xFE, 0x0F, 0xFE, 0x03, 0xC0, 0x00, 0xF0, + 0x00, 0x3C, 0x00, 0x3F, 0xF8, 0x0F, 0xFE, 0x03, 0xFF, 0x80, 0x7F, 0xC0, + 0x00, 0x01, 0xF8, 0x00, 0x7F, 0xE0, 0x0F, 0xFF, 0x01, 0xFF, 0xF8, 0x3F, + 0x0F, 0xC7, 0xC0, 0x3E, 0x78, 0x01, 0xEF, 0x80, 0x1F, 0xF0, 0x00, 0xFF, + 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x80, 0x1F, + 0x78, 0x01, 0xE7, 0xC0, 0x3E, 0x3F, 0x0F, 0xC1, 0xFF, 0xF8, 0x0F, 0xFF, + 0x00, 0x7F, 0xE0, 0x03, 0xF8, 0x00, 0x3F, 0x8E, 0x07, 0xFF, 0xF0, 0xFF, + 0xFF, 0x0F, 0xFF, 0xE0, 0x60, 0x78, 0x7F, 0xF8, 0x07, 0xFF, 0xF0, 0x3F, + 0xFF, 0xE0, 0xFF, 0xFF, 0x01, 0xE0, 0x7C, 0x0F, 0x01, 0xE0, 0x78, 0x0F, + 0x03, 0xC0, 0x78, 0x1E, 0x0F, 0xC0, 0xFF, 0xFC, 0x07, 0xFF, 0xC0, 0x3F, + 0xF8, 0x01, 0xFF, 0xE0, 0x0F, 0x0F, 0x80, 0x78, 0x3C, 0x03, 0xC0, 0xF0, + 0x1E, 0x07, 0xC3, 0xFE, 0x1F, 0xBF, 0xF0, 0x7F, 0xFF, 0x83, 0xF7, 0xF8, + 0x0F, 0x00, 0x07, 0xE7, 0x07, 0xFF, 0x8F, 0xFF, 0xC7, 0xFF, 0xE7, 0xC1, + 0xF3, 0xC0, 0x79, 0xE0, 0x3C, 0xF8, 0x00, 0x7F, 0x80, 0x1F, 0xFC, 0x07, + 0xFF, 0x81, 0xFF, 0xE0, 0x0F, 0xFB, 0x00, 0x7F, 0xC0, 0x1F, 0xE0, 0x0F, + 0xFC, 0x1F, 0xFF, 0xFF, 0xBF, 0xFF, 0x8D, 0xFF, 0x80, 0x3F, 0x00, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x1F, 0xE1, + 0xE3, 0xFC, 0x3C, 0x7F, 0x87, 0x8F, 0x60, 0xF0, 0xC0, 0x1E, 0x00, 0x03, + 0xC0, 0x00, 0x78, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x07, + 0x80, 0x00, 0xF0, 0x01, 0xFF, 0xE0, 0x3F, 0xFC, 0x07, 0xFF, 0x80, 0x7F, + 0xE0, 0xFF, 0x0F, 0xF7, 0xFC, 0x7F, 0xFF, 0xE3, 0xFE, 0xFF, 0x1F, 0xF3, + 0xC0, 0x1E, 0x1E, 0x00, 0xF0, 0xF0, 0x07, 0x87, 0x80, 0x3C, 0x3C, 0x01, + 0xE1, 0xE0, 0x0F, 0x0F, 0x00, 0x78, 0x78, 0x03, 0xC3, 0xC0, 0x1E, 0x1E, + 0x00, 0xF0, 0xF0, 0x07, 0x87, 0xC0, 0x7C, 0x1F, 0x07, 0xC0, 0xFF, 0xFE, + 0x03, 0xFF, 0xE0, 0x0F, 0xFE, 0x00, 0x1F, 0xC0, 0x00, 0xFF, 0x03, 0xFD, + 0xFF, 0x07, 0xFF, 0xFE, 0x0F, 0xFB, 0xF8, 0x1F, 0xE1, 0xC0, 0x07, 0x03, + 0xC0, 0x1E, 0x07, 0x80, 0x3C, 0x07, 0x80, 0xF0, 0x0F, 0x01, 0xE0, 0x0F, + 0x03, 0x80, 0x1E, 0x0F, 0x00, 0x3E, 0x1E, 0x00, 0x3C, 0x78, 0x00, 0x78, + 0xF0, 0x00, 0x7B, 0xC0, 0x00, 0xF7, 0x80, 0x01, 0xFF, 0x00, 0x01, 0xFC, + 0x00, 0x03, 0xF8, 0x00, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0xFF, 0x0F, + 0xF7, 0xFC, 0x7F, 0xFF, 0xE3, 0xFF, 0xFE, 0x0F, 0xF7, 0x80, 0x0F, 0x3C, + 0x38, 0x78, 0xE3, 0xE3, 0x87, 0x1F, 0x1C, 0x38, 0xF8, 0xE1, 0xEF, 0xE7, + 0x0F, 0x7F, 0x78, 0x7B, 0xBB, 0xC3, 0xFD, 0xFE, 0x0F, 0xEF, 0xF0, 0x7E, + 0x3F, 0x03, 0xF1, 0xF8, 0x1F, 0x8F, 0xC0, 0xFC, 0x3E, 0x07, 0xC1, 0xF0, + 0x3E, 0x0F, 0x81, 0xF0, 0x7C, 0x00, 0x7E, 0x0F, 0xDF, 0xE3, 0xFF, 0xFC, + 0x7F, 0xBF, 0x07, 0xE1, 0xE0, 0xF8, 0x3E, 0x3E, 0x03, 0xEF, 0x80, 0x3D, + 0xE0, 0x03, 0xF8, 0x00, 0x3E, 0x00, 0x03, 0xC0, 0x00, 0xF8, 0x00, 0x3F, + 0x80, 0x0F, 0x78, 0x03, 0xC7, 0x80, 0xF8, 0x78, 0x3E, 0x0F, 0x8F, 0xE3, + 0xFF, 0xFC, 0x7F, 0xFF, 0x8F, 0xF7, 0xE0, 0xFC, 0x7E, 0x07, 0xEF, 0xF0, + 0xFF, 0xFF, 0x0F, 0xF7, 0xE0, 0x7E, 0x1E, 0x07, 0x81, 0xF0, 0xF8, 0x0F, + 0x0F, 0x00, 0x79, 0xE0, 0x07, 0xFE, 0x00, 0x3F, 0xC0, 0x01, 0xF8, 0x00, + 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, + 0x00, 0xF0, 0x00, 0xFF, 0xE0, 0x0F, 0xFF, 0x00, 0xFF, 0xF0, 0x07, 0xFE, + 0x00, 0xFF, 0xFC, 0xFF, 0xFC, 0xFF, 0xFC, 0xFF, 0xFC, 0xF0, 0x3C, 0xF0, + 0x78, 0xF0, 0xF0, 0x70, 0xE0, 0x01, 0xE0, 0x03, 0xC0, 0x03, 0x80, 0x07, + 0x00, 0x0F, 0x00, 0x1E, 0x0E, 0x1C, 0x0F, 0x38, 0x0F, 0x78, 0x0F, 0x7F, + 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xFE, 0xFF, 0xFF, 0xFE, 0xE0, 0x01, + 0xE0, 0x03, 0xC0, 0x03, 0xC0, 0x07, 0x80, 0x07, 0x00, 0x0F, 0x00, 0x0E, + 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x3C, 0x00, 0x78, 0x00, 0x78, 0x00, 0xF0, + 0x00, 0xF0, 0x01, 0xE0, 0x01, 0xE0, 0x03, 0xC0, 0x03, 0xC0, 0x07, 0x80, + 0x07, 0x80, 0x0F, 0x00, 0x0F, 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x3C, 0x00, + 0x38, 0x00, 0x70, 0x7F, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x0F, 0x0F, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x07, 0x00, 0x1F, 0x00, + 0x7F, 0x00, 0xFE, 0x03, 0xDE, 0x0F, 0x1E, 0x3E, 0x3E, 0xF8, 0x3F, 0xE0, + 0x3F, 0x80, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xF0, 0xC3, 0x87, 0x0E, 0x1C, 0x30, 0x01, 0xFC, 0x01, 0xFF, 0xC0, + 0x3F, 0xFC, 0x07, 0xFF, 0xC0, 0x00, 0x78, 0x0F, 0xFF, 0x07, 0xFF, 0xE1, + 0xFF, 0xFC, 0x7F, 0xFF, 0x9F, 0x80, 0xF3, 0xC0, 0x1E, 0x78, 0x0F, 0xCF, + 0xFF, 0xFE, 0xFF, 0xFF, 0xCF, 0xFF, 0xF8, 0x7F, 0x3E, 0x7C, 0x00, 0x1F, + 0x80, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x0F, + 0x3F, 0x01, 0xFF, 0xF8, 0x3F, 0xFF, 0x87, 0xFF, 0xF0, 0xFC, 0x1F, 0x1F, + 0x01, 0xF3, 0xC0, 0x1E, 0x78, 0x03, 0xCF, 0x00, 0x79, 0xE0, 0x0F, 0x3E, + 0x03, 0xE7, 0xE0, 0xFB, 0xFF, 0xFF, 0x7F, 0xFF, 0xCF, 0xFF, 0xF0, 0xF9, + 0xF8, 0x00, 0x03, 0xF3, 0x87, 0xFF, 0xCF, 0xFF, 0xEF, 0xFF, 0xF7, 0xE0, + 0xFF, 0xC0, 0x3F, 0xC0, 0x0F, 0xE0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3E, + 0x00, 0x4F, 0x80, 0xF7, 0xFF, 0xF9, 0xFF, 0xF8, 0x7F, 0xF8, 0x0F, 0xF0, + 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x03, + 0xC0, 0x00, 0x3C, 0x03, 0xF3, 0xC0, 0xFF, 0xBC, 0x1F, 0xFF, 0xC3, 0xFF, + 0xFC, 0x7E, 0x0F, 0xC7, 0x80, 0x7C, 0xF0, 0x03, 0xCF, 0x00, 0x3C, 0xF0, + 0x03, 0xCF, 0x00, 0x3C, 0xF8, 0x07, 0xC7, 0xE0, 0xFC, 0x7F, 0xFF, 0xF3, + 0xFF, 0xFF, 0x0F, 0xFF, 0xF0, 0x3F, 0x3E, 0x03, 0xF0, 0x03, 0xFF, 0x01, + 0xFF, 0xE0, 0xFF, 0xFC, 0x7E, 0x0F, 0x9E, 0x01, 0xEF, 0x00, 0x3F, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xE0, 0x00, 0x7F, 0xFF, + 0xCF, 0xFF, 0xF1, 0xFF, 0xF8, 0x0F, 0xF0, 0x03, 0xFC, 0x07, 0xFF, 0x0F, + 0xFF, 0x1F, 0xFF, 0x1E, 0x00, 0x1E, 0x00, 0xFF, 0xF8, 0xFF, 0xFC, 0xFF, + 0xFC, 0xFF, 0xF8, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, + 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0xFF, 0xF8, 0xFF, 0xF8, 0xFF, + 0xF8, 0xFF, 0xF8, 0x07, 0xE7, 0xC3, 0xFF, 0xFC, 0xFF, 0xFF, 0xBF, 0xFF, + 0xF7, 0xC1, 0xF9, 0xF0, 0x1F, 0x3C, 0x01, 0xE7, 0x80, 0x3C, 0xF0, 0x07, + 0x9E, 0x00, 0xF3, 0xE0, 0x3E, 0x3E, 0x0F, 0xC7, 0xFF, 0xF8, 0x7F, 0xFF, + 0x07, 0xFD, 0xE0, 0x3F, 0x3C, 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x3E, + 0x03, 0xFF, 0x80, 0x7F, 0xF0, 0x0F, 0xFC, 0x00, 0xFE, 0x00, 0x3E, 0x00, + 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x01, 0xE0, 0x00, 0x0F, + 0x00, 0x00, 0x78, 0xF8, 0x03, 0xDF, 0xE0, 0x1F, 0xFF, 0x80, 0xFF, 0xFE, + 0x07, 0xE1, 0xF0, 0x3E, 0x07, 0x81, 0xE0, 0x3C, 0x0F, 0x01, 0xE0, 0x78, + 0x0F, 0x03, 0xC0, 0x78, 0x1E, 0x03, 0xC0, 0xF0, 0x1E, 0x1F, 0xC1, 0xFD, + 0xFE, 0x0F, 0xFF, 0xF0, 0x7F, 0xBF, 0x01, 0xF8, 0x03, 0xC0, 0x03, 0xC0, + 0x03, 0xC0, 0x03, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xC0, 0x3F, 0xC0, + 0x3F, 0xC0, 0x3F, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, + 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0xFF, 0xFE, 0xFF, 0xFF, + 0xFF, 0xFF, 0x7F, 0xFE, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x00, 0x00, + 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0x00, 0xF0, 0x0F, 0x00, 0xF0, + 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, + 0x0F, 0x00, 0xF0, 0x0F, 0x01, 0xFF, 0xFE, 0xFF, 0xEF, 0xFC, 0x7F, 0x00, + 0x7C, 0x00, 0x3F, 0x00, 0x0F, 0xC0, 0x03, 0xF0, 0x00, 0x3C, 0x00, 0x0F, + 0x00, 0x03, 0xC7, 0xF0, 0xF3, 0xFC, 0x3C, 0xFF, 0x0F, 0x3F, 0x83, 0xDF, + 0x00, 0xFF, 0x80, 0x3F, 0xC0, 0x0F, 0xE0, 0x03, 0xFC, 0x00, 0xF7, 0x80, + 0x3C, 0xF0, 0x0F, 0x1F, 0x0F, 0xC3, 0xFB, 0xF1, 0xFF, 0xFC, 0x7F, 0xDF, + 0x0F, 0xE0, 0x3F, 0xC0, 0x3F, 0xC0, 0x3F, 0xC0, 0x3F, 0xC0, 0x03, 0xC0, + 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, + 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, + 0x03, 0xC0, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFE, 0x3D, 0xE3, + 0xC1, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0x1F, 0xFF, 0xFE, 0x3E, 0x3C, 0x78, + 0xF0, 0xF1, 0xE3, 0xC3, 0xC7, 0x8F, 0x0F, 0x1E, 0x3C, 0x3C, 0x78, 0xF0, + 0xF1, 0xE3, 0xC3, 0xC7, 0x8F, 0x0F, 0x1E, 0xFE, 0x3E, 0x7F, 0xF8, 0xF9, + 0xFF, 0xE3, 0xE7, 0xDF, 0x0F, 0x1E, 0x1E, 0x7C, 0x03, 0xEF, 0xF0, 0x3F, + 0xFF, 0x83, 0xFF, 0xFC, 0x1F, 0x87, 0xC1, 0xE0, 0x3C, 0x1E, 0x03, 0xC1, + 0xE0, 0x3C, 0x1E, 0x03, 0xC1, 0xE0, 0x3C, 0x1E, 0x03, 0xC1, 0xE0, 0x3C, + 0x7F, 0x0F, 0xFF, 0xF0, 0xFF, 0xFF, 0x0F, 0xF7, 0xE0, 0x7E, 0x03, 0xF8, + 0x01, 0xFF, 0xC0, 0x7F, 0xFC, 0x1F, 0xFF, 0xC7, 0xE0, 0xFD, 0xF0, 0x07, + 0xFC, 0x00, 0x7F, 0x80, 0x0F, 0xF0, 0x01, 0xFE, 0x00, 0x3F, 0xE0, 0x0F, + 0xBF, 0x07, 0xE3, 0xFF, 0xF8, 0x3F, 0xFE, 0x03, 0xFF, 0x80, 0x1F, 0xC0, + 0x3E, 0x7E, 0x03, 0xF7, 0xFC, 0x1F, 0xFF, 0xF0, 0xFF, 0xFF, 0xC1, 0xF8, + 0x3F, 0x0F, 0x80, 0x7C, 0x78, 0x01, 0xE3, 0xC0, 0x0F, 0x1E, 0x00, 0x78, + 0xF0, 0x03, 0xC7, 0xC0, 0x3E, 0x3F, 0x07, 0xE1, 0xFF, 0xFE, 0x0F, 0xFF, + 0xE0, 0x7B, 0xFE, 0x03, 0xCF, 0xC0, 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x07, + 0x80, 0x00, 0xFF, 0x80, 0x0F, 0xFC, 0x00, 0x7F, 0xE0, 0x01, 0xFE, 0x00, + 0x00, 0x03, 0xF3, 0xE0, 0x7F, 0xDF, 0x87, 0xFF, 0xFC, 0x7F, 0xFF, 0xE7, + 0xE0, 0xFC, 0x7C, 0x03, 0xE3, 0xC0, 0x0F, 0x1E, 0x00, 0x78, 0xF0, 0x03, + 0xC7, 0x80, 0x1E, 0x3E, 0x01, 0xF0, 0xFC, 0x1F, 0x83, 0xFF, 0xFC, 0x1F, + 0xFF, 0xE0, 0x3F, 0xEF, 0x00, 0x7E, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, + 0x00, 0x00, 0xF0, 0x00, 0x3F, 0xE0, 0x01, 0xFF, 0x80, 0x0F, 0xFC, 0x00, + 0x3F, 0xC0, 0x7E, 0x1E, 0x7F, 0x3F, 0xFF, 0xBF, 0xFF, 0xFF, 0xF1, 0xFE, + 0x00, 0xFC, 0x00, 0x7C, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x07, + 0x80, 0x03, 0xC0, 0x0F, 0xFF, 0x87, 0xFF, 0xC3, 0xFF, 0xE1, 0xFF, 0xE0, + 0x07, 0xE6, 0x1F, 0xFE, 0x7F, 0xFE, 0x7F, 0xFE, 0x78, 0x1E, 0x78, 0x0E, + 0x7F, 0xE0, 0x3F, 0xFC, 0x03, 0xFE, 0x60, 0x1F, 0xE0, 0x0F, 0xF8, 0x1F, + 0xFF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFC, 0x07, 0xE0, 0x0C, 0x00, 0x0F, 0x00, + 0x07, 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x07, 0xFF, 0xF3, 0xFF, 0xF9, 0xFF, + 0xFC, 0xFF, 0xFC, 0x0F, 0x00, 0x07, 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x00, + 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1E, 0x07, 0x8F, 0xFF, 0xC3, 0xFF, + 0xC1, 0xFF, 0xC0, 0x3F, 0x80, 0xFC, 0x1F, 0xBF, 0x0F, 0xEF, 0xC3, 0xFB, + 0xF0, 0xFE, 0x3C, 0x07, 0x8F, 0x01, 0xE3, 0xC0, 0x78, 0xF0, 0x1E, 0x3C, + 0x07, 0x8F, 0x01, 0xE3, 0xC0, 0x78, 0xF8, 0x7E, 0x3F, 0xFF, 0xC7, 0xFF, + 0xF0, 0xFF, 0x7C, 0x0F, 0x9E, 0x7F, 0x07, 0xF7, 0xFC, 0x7F, 0xFF, 0xE3, + 0xFE, 0xFE, 0x0F, 0xE1, 0xE0, 0x3C, 0x0F, 0x01, 0xE0, 0x3C, 0x1E, 0x01, + 0xE0, 0xF0, 0x07, 0x8F, 0x00, 0x3E, 0x78, 0x00, 0xF7, 0x80, 0x07, 0xFC, + 0x00, 0x1F, 0xC0, 0x00, 0xFE, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x7E, + 0x03, 0xF7, 0xF8, 0x3F, 0xFF, 0xC1, 0xFE, 0xFC, 0x07, 0xF3, 0xC7, 0x0F, + 0x1E, 0x7C, 0xF0, 0x73, 0xE7, 0x83, 0x9F, 0x7C, 0x1F, 0xFF, 0xC0, 0xFF, + 0xFE, 0x03, 0xF7, 0xF0, 0x1F, 0xBF, 0x80, 0xFC, 0xF8, 0x07, 0xC7, 0xC0, + 0x1E, 0x3E, 0x00, 0xE0, 0xE0, 0x7E, 0x0F, 0xDF, 0xE3, 0xFF, 0xFC, 0x7F, + 0xBF, 0x07, 0xE1, 0xF1, 0xF0, 0x1F, 0xFC, 0x01, 0xFF, 0x00, 0x1F, 0xC0, + 0x07, 0xF8, 0x01, 0xFF, 0xC0, 0x7E, 0xFC, 0x1F, 0x8F, 0xC7, 0xE0, 0xFD, + 0xFE, 0x3F, 0xFF, 0xC7, 0xFF, 0xF0, 0x7F, 0x7E, 0x0F, 0xDF, 0xE3, 0xFF, + 0xFC, 0x7F, 0xBF, 0x07, 0xE3, 0xC0, 0x78, 0x3C, 0x0E, 0x07, 0x83, 0xC0, + 0x78, 0x70, 0x0F, 0x1E, 0x00, 0xE3, 0x80, 0x1E, 0xF0, 0x01, 0xDC, 0x00, + 0x3F, 0x80, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x07, 0x00, 0x01, 0xE0, 0x00, + 0x38, 0x00, 0x0F, 0x00, 0x3F, 0xF0, 0x0F, 0xFF, 0x01, 0xFF, 0xE0, 0x1F, + 0xF8, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF9, 0xC7, + 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x78, 0x03, 0xC0, 0x1E, 0x07, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x81, 0xF0, 0xFC, 0x7E, 0x1F, + 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0xF8, 0xFC, 0x3E, 0x0F, + 0x83, 0xF0, 0x3E, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xF0, 0x7E, + 0x0F, 0xC3, 0xF0, 0x38, 0x6F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x70, 0x3E, 0x0F, 0xC1, 0xF8, 0x3E, + 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x7C, 0x0F, 0xC1, 0xF0, + 0x7C, 0x3F, 0x1F, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x83, 0xE1, 0xF8, + 0xFC, 0x3F, 0x07, 0x00, 0x1E, 0x00, 0x1F, 0xC0, 0x1F, 0xF0, 0xDF, 0xFC, + 0xFF, 0x3F, 0xFB, 0x0F, 0xF8, 0x03, 0xF8, 0x00, 0x78}; + +const GFXglyph FreeMonoBold18pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 21, 0, 1}, // 0x20 ' ' + {0, 5, 22, 21, 8, -21}, // 0x21 '!' + {14, 11, 10, 21, 5, -20}, // 0x22 '"' + {28, 16, 25, 21, 3, -22}, // 0x23 '#' + {78, 14, 28, 21, 4, -23}, // 0x24 '$' + {127, 15, 21, 21, 3, -20}, // 0x25 '%' + {167, 15, 20, 21, 3, -19}, // 0x26 '&' + {205, 4, 10, 21, 8, -20}, // 0x27 ''' + {210, 8, 27, 21, 9, -21}, // 0x28 '(' + {237, 8, 27, 21, 4, -21}, // 0x29 ')' + {264, 16, 15, 21, 3, -21}, // 0x2A '*' + {294, 16, 19, 21, 3, -18}, // 0x2B '+' + {332, 7, 10, 21, 5, -3}, // 0x2C ',' + {341, 19, 4, 21, 1, -11}, // 0x2D '-' + {351, 5, 5, 21, 8, -4}, // 0x2E '.' + {355, 15, 28, 21, 3, -23}, // 0x2F '/' + {408, 16, 23, 21, 3, -22}, // 0x30 '0' + {454, 15, 22, 21, 3, -21}, // 0x31 '1' + {496, 15, 23, 21, 3, -22}, // 0x32 '2' + {540, 16, 23, 21, 3, -22}, // 0x33 '3' + {586, 15, 21, 21, 3, -20}, // 0x34 '4' + {626, 17, 22, 21, 2, -21}, // 0x35 '5' + {673, 15, 23, 21, 4, -22}, // 0x36 '6' + {717, 15, 22, 21, 3, -21}, // 0x37 '7' + {759, 15, 23, 21, 3, -22}, // 0x38 '8' + {803, 15, 23, 21, 4, -22}, // 0x39 '9' + {847, 5, 16, 21, 8, -15}, // 0x3A ':' + {857, 7, 22, 21, 5, -15}, // 0x3B ';' + {877, 18, 16, 21, 1, -17}, // 0x3C '<' + {913, 19, 10, 21, 1, -14}, // 0x3D '=' + {937, 18, 16, 21, 2, -17}, // 0x3E '>' + {973, 15, 21, 21, 4, -20}, // 0x3F '?' + {1013, 15, 27, 21, 3, -21}, // 0x40 '@' + {1064, 22, 21, 21, -1, -20}, // 0x41 'A' + {1122, 20, 21, 21, 1, -20}, // 0x42 'B' + {1175, 19, 21, 21, 1, -20}, // 0x43 'C' + {1225, 18, 21, 21, 2, -20}, // 0x44 'D' + {1273, 19, 21, 21, 1, -20}, // 0x45 'E' + {1323, 19, 21, 21, 1, -20}, // 0x46 'F' + {1373, 20, 21, 21, 1, -20}, // 0x47 'G' + {1426, 21, 21, 21, 0, -20}, // 0x48 'H' + {1482, 14, 21, 21, 4, -20}, // 0x49 'I' + {1519, 19, 21, 21, 2, -20}, // 0x4A 'J' + {1569, 20, 21, 21, 1, -20}, // 0x4B 'K' + {1622, 18, 21, 21, 2, -20}, // 0x4C 'L' + {1670, 23, 21, 21, -1, -20}, // 0x4D 'M' + {1731, 20, 21, 21, 1, -20}, // 0x4E 'N' + {1784, 20, 21, 21, 1, -20}, // 0x4F 'O' + {1837, 18, 21, 21, 1, -20}, // 0x50 'P' + {1885, 20, 26, 21, 1, -20}, // 0x51 'Q' + {1950, 21, 21, 21, 0, -20}, // 0x52 'R' + {2006, 17, 21, 21, 2, -20}, // 0x53 'S' + {2051, 19, 21, 21, 1, -20}, // 0x54 'T' + {2101, 21, 21, 21, 0, -20}, // 0x55 'U' + {2157, 23, 21, 21, -1, -20}, // 0x56 'V' + {2218, 21, 21, 21, 0, -20}, // 0x57 'W' + {2274, 19, 21, 21, 1, -20}, // 0x58 'X' + {2324, 20, 21, 21, 1, -20}, // 0x59 'Y' + {2377, 16, 21, 21, 3, -20}, // 0x5A 'Z' + {2419, 8, 27, 21, 9, -21}, // 0x5B '[' + {2446, 15, 28, 21, 3, -23}, // 0x5C '\' + {2499, 8, 27, 21, 4, -21}, // 0x5D ']' + {2526, 15, 11, 21, 3, -21}, // 0x5E '^' + {2547, 21, 4, 21, 0, 4}, // 0x5F '_' + {2558, 6, 6, 21, 6, -22}, // 0x60 '`' + {2563, 19, 16, 21, 1, -15}, // 0x61 'a' + {2601, 19, 22, 21, 1, -21}, // 0x62 'b' + {2654, 17, 16, 21, 2, -15}, // 0x63 'c' + {2688, 20, 22, 21, 1, -21}, // 0x64 'd' + {2743, 18, 16, 21, 1, -15}, // 0x65 'e' + {2779, 16, 22, 21, 4, -21}, // 0x66 'f' + {2823, 19, 23, 21, 1, -15}, // 0x67 'g' + {2878, 21, 22, 21, 0, -21}, // 0x68 'h' + {2936, 16, 22, 21, 3, -21}, // 0x69 'i' + {2980, 12, 29, 21, 5, -21}, // 0x6A 'j' + {3024, 18, 22, 21, 2, -21}, // 0x6B 'k' + {3074, 16, 22, 21, 3, -21}, // 0x6C 'l' + {3118, 22, 16, 21, -1, -15}, // 0x6D 'm' + {3162, 20, 16, 21, 0, -15}, // 0x6E 'n' + {3202, 19, 16, 21, 1, -15}, // 0x6F 'o' + {3240, 21, 23, 21, 0, -15}, // 0x70 'p' + {3301, 21, 23, 22, 1, -15}, // 0x71 'q' + {3362, 17, 16, 21, 3, -15}, // 0x72 'r' + {3396, 16, 16, 21, 3, -15}, // 0x73 's' + {3428, 17, 21, 21, 1, -20}, // 0x74 't' + {3473, 18, 16, 21, 1, -15}, // 0x75 'u' + {3509, 21, 16, 21, 0, -15}, // 0x76 'v' + {3551, 21, 16, 21, 0, -15}, // 0x77 'w' + {3593, 19, 16, 21, 1, -15}, // 0x78 'x' + {3631, 19, 23, 21, 1, -15}, // 0x79 'y' + {3686, 14, 16, 21, 3, -15}, // 0x7A 'z' + {3714, 10, 27, 21, 6, -21}, // 0x7B '{' + {3748, 4, 27, 21, 9, -21}, // 0x7C '|' + {3762, 10, 27, 21, 6, -21}, // 0x7D '}' + {3796, 17, 8, 21, 2, -13}}; // 0x7E '~' + +const GFXfont FreeMonoBold18pt7b PROGMEM = { + (uint8_t *)FreeMonoBold18pt7bBitmaps, (GFXglyph *)FreeMonoBold18pt7bGlyphs, + 0x20, 0x7E, 35}; + +// Approx. 4485 bytes diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBold24pt7b.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBold24pt7b.h new file mode 100644 index 0000000..eb79d6e --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBold24pt7b.h @@ -0,0 +1,674 @@ +#pragma once +#include + +const uint8_t FreeMonoBold24pt7bBitmaps[] PROGMEM = { + 0x38, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xF3, 0xE7, 0xCF, + 0x9F, 0x3E, 0x7C, 0xF9, 0xF3, 0xE3, 0x82, 0x00, 0x00, 0x00, 0x71, 0xF7, + 0xFF, 0xEF, 0x9E, 0x00, 0xFC, 0x7E, 0xF8, 0x7D, 0xF0, 0xFB, 0xE1, 0xF7, + 0xC3, 0xEF, 0x87, 0xDF, 0x0F, 0xBE, 0x1F, 0x38, 0x1C, 0x70, 0x38, 0xE0, + 0x71, 0xC0, 0xE3, 0x81, 0xC7, 0x03, 0x80, 0x01, 0xC1, 0xC0, 0x0F, 0x8F, + 0x80, 0x3E, 0x3E, 0x00, 0xF8, 0xF8, 0x03, 0xE3, 0xE0, 0x0F, 0x8F, 0x80, + 0x7E, 0x3E, 0x01, 0xF0, 0xF8, 0x07, 0xC7, 0xC0, 0x1F, 0x1F, 0x03, 0xFF, + 0xFF, 0x9F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFD, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, + 0x81, 0xF1, 0xF0, 0x07, 0xC7, 0xC0, 0x1F, 0x1F, 0x00, 0x7C, 0x7C, 0x1F, + 0xFF, 0xFC, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0x9F, 0xFF, + 0xFC, 0x0F, 0x8F, 0x80, 0x3E, 0x3E, 0x00, 0xF8, 0xF8, 0x03, 0xE3, 0xE0, + 0x0F, 0x8F, 0x80, 0x3E, 0x3E, 0x00, 0xF8, 0xF8, 0x03, 0xE3, 0xE0, 0x0F, + 0x8F, 0x80, 0x3C, 0x3C, 0x00, 0x00, 0xE0, 0x00, 0x3E, 0x00, 0x07, 0xC0, + 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x1F, 0xFF, 0x07, 0xFF, 0xF1, 0xFF, 0xFE, + 0x7F, 0xFF, 0xDF, 0xC1, 0xFB, 0xF0, 0x1F, 0x7C, 0x01, 0xEF, 0x80, 0x39, + 0xF8, 0x00, 0x3F, 0xF8, 0x03, 0xFF, 0xE0, 0x3F, 0xFF, 0x03, 0xFF, 0xF0, + 0x0F, 0xFF, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0xC0, 0x07, 0xF8, 0x00, 0xFF, + 0x80, 0x1F, 0xF8, 0x07, 0xFF, 0x81, 0xFB, 0xFF, 0xFF, 0x7F, 0xFF, 0xCF, + 0xFF, 0xF1, 0xDF, 0xFC, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, + 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x01, 0xC0, 0x00, + 0x0F, 0x80, 0x00, 0xFF, 0x00, 0x1F, 0xFC, 0x00, 0xF0, 0xE0, 0x0F, 0x07, + 0x80, 0x70, 0x1C, 0x03, 0x80, 0xE0, 0x1C, 0x07, 0x00, 0xF0, 0x78, 0x03, + 0xC3, 0x80, 0x1F, 0xFC, 0x00, 0x7F, 0xC1, 0xF0, 0xF8, 0x7F, 0x00, 0x3F, + 0xF0, 0x0F, 0xFC, 0x03, 0xFF, 0x00, 0xFF, 0xC0, 0x07, 0xE0, 0xF8, 0x38, + 0x1F, 0xE0, 0x01, 0xFF, 0x80, 0x0F, 0x1E, 0x00, 0xF0, 0x78, 0x07, 0x01, + 0xC0, 0x38, 0x0E, 0x01, 0xC0, 0x70, 0x0F, 0x07, 0x80, 0x38, 0x78, 0x01, + 0xFF, 0xC0, 0x07, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x1F, 0xFC, + 0x01, 0xFF, 0xE0, 0x1F, 0xFF, 0x00, 0xFF, 0xF8, 0x0F, 0xC7, 0x00, 0x7C, + 0x10, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xF0, 0x00, + 0x1F, 0x80, 0x00, 0xFE, 0x00, 0x0F, 0xF8, 0x00, 0xFF, 0xC7, 0xCF, 0xFF, + 0x3F, 0x7E, 0xFF, 0xFF, 0xE7, 0xFF, 0xBE, 0x1F, 0xF9, 0xF0, 0x7F, 0x8F, + 0x83, 0xFC, 0x7C, 0x0F, 0xE3, 0xF0, 0x7F, 0xCF, 0xFF, 0xFF, 0x7F, 0xFF, + 0xF9, 0xFF, 0xFF, 0xC7, 0xFF, 0xFC, 0x0F, 0xE0, 0x00, 0xFD, 0xF7, 0xDF, + 0x7D, 0xF7, 0xDF, 0x38, 0xE3, 0x8E, 0x38, 0xE0, 0x01, 0x80, 0xF0, 0x7C, + 0x3F, 0x0F, 0xC7, 0xE1, 0xF8, 0xFC, 0x3E, 0x0F, 0x87, 0xC1, 0xF0, 0x7C, + 0x1F, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, + 0x81, 0xF0, 0x7C, 0x1F, 0x07, 0xC0, 0xF8, 0x3E, 0x0F, 0xC1, 0xF0, 0x7E, + 0x0F, 0x83, 0xF0, 0x7C, 0x1F, 0x03, 0xC0, 0x60, 0x3C, 0x0F, 0x83, 0xF0, + 0xFC, 0x1F, 0x83, 0xE0, 0xFC, 0x1F, 0x07, 0xC1, 0xF8, 0x3E, 0x0F, 0x83, + 0xE0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, + 0x1E, 0x0F, 0x83, 0xE0, 0xF8, 0x7C, 0x1F, 0x0F, 0xC3, 0xE1, 0xF8, 0x7C, + 0x3F, 0x0F, 0x83, 0xE0, 0xF0, 0x00, 0x00, 0x70, 0x00, 0x07, 0xC0, 0x00, + 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x10, 0x7C, 0x11, 0xF3, 0xE7, + 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0x87, 0xFF, 0xF0, 0x07, + 0xFC, 0x00, 0x3F, 0xE0, 0x03, 0xFF, 0x80, 0x3F, 0x7E, 0x01, 0xFB, 0xF0, + 0x1F, 0x8F, 0xC0, 0xF8, 0x3E, 0x03, 0x80, 0xE0, 0x00, 0x38, 0x00, 0x00, + 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, + 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, + 0x01, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xDF, 0xFF, 0xFF, 0x00, 0x3E, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, + 0x01, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, + 0x1F, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x70, 0x00, 0x1F, + 0x8F, 0x87, 0xC7, 0xC3, 0xE1, 0xE1, 0xF0, 0xF0, 0x78, 0x38, 0x3C, 0x1C, + 0x0E, 0x06, 0x00, 0x7F, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFE, 0x7D, 0xFF, 0xFF, 0xFF, 0xEF, 0x80, + 0x00, 0x00, 0x60, 0x00, 0x0F, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x01, + 0xF0, 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, + 0xF8, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, + 0x3E, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x0F, 0xC0, 0x00, 0xF8, 0x00, + 0x1F, 0x80, 0x01, 0xF0, 0x00, 0x3F, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, + 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x1F, 0x00, + 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x07, 0xC0, + 0x00, 0xFC, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x00, 0x00, 0x01, + 0xFC, 0x00, 0x3F, 0xF8, 0x03, 0xFF, 0xE0, 0x3F, 0xFF, 0x83, 0xFF, 0xFE, + 0x1F, 0x83, 0xF1, 0xF8, 0x0F, 0xCF, 0x80, 0x3E, 0x7C, 0x01, 0xF7, 0xC0, + 0x07, 0xFE, 0x00, 0x3F, 0xF0, 0x01, 0xFF, 0x80, 0x0F, 0xFC, 0x00, 0x7F, + 0xE0, 0x03, 0xFF, 0x00, 0x1F, 0xF8, 0x00, 0xFF, 0xC0, 0x07, 0xFE, 0x00, + 0x3F, 0xF0, 0x01, 0xFF, 0x80, 0x0F, 0xFC, 0x00, 0x7D, 0xF0, 0x07, 0xCF, + 0x80, 0x3E, 0x7E, 0x03, 0xF1, 0xF8, 0x3F, 0x0F, 0xFF, 0xF8, 0x3F, 0xFF, + 0x80, 0xFF, 0xF8, 0x03, 0xFF, 0x80, 0x07, 0xF0, 0x00, 0x01, 0xF8, 0x00, + 0x3F, 0x80, 0x0F, 0xF8, 0x01, 0xFF, 0x80, 0x7F, 0xF8, 0x0F, 0xEF, 0x80, + 0xFC, 0xF8, 0x07, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, + 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, + 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, + 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x3F, 0xFF, 0xE7, + 0xFF, 0xFF, 0x7F, 0xFF, 0xF7, 0xFF, 0xFF, 0x3F, 0xFF, 0xE0, 0x01, 0xFC, + 0x00, 0x3F, 0xF8, 0x07, 0xFF, 0xF0, 0x7F, 0xFF, 0xC7, 0xFF, 0xFF, 0x3F, + 0x03, 0xFB, 0xF0, 0x07, 0xFF, 0x00, 0x1F, 0xF8, 0x00, 0xFB, 0x80, 0x07, + 0xC0, 0x00, 0x3E, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x03, 0xF8, 0x00, + 0x3F, 0x80, 0x03, 0xF8, 0x00, 0x3F, 0x80, 0x03, 0xF8, 0x00, 0x3F, 0x00, + 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xE0, + 0x0E, 0xFE, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x03, 0xF8, 0x00, 0xFF, 0xF8, 0x0F, 0xFF, + 0xE0, 0xFF, 0xFF, 0x8F, 0xFF, 0xFE, 0x7E, 0x03, 0xF1, 0xC0, 0x0F, 0xC0, + 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xFC, 0x00, 0x0F, + 0xC0, 0x0F, 0xFC, 0x00, 0xFF, 0xC0, 0x07, 0xFC, 0x00, 0x3F, 0xF0, 0x00, + 0xFF, 0xC0, 0x00, 0x7F, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xF0, 0x00, 0x0F, + 0x80, 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x01, 0xFF, 0xC0, + 0x3F, 0xBF, 0xFF, 0xFD, 0xFF, 0xFF, 0xC7, 0xFF, 0xFC, 0x1F, 0xFF, 0xC0, + 0x1F, 0xF0, 0x00, 0x00, 0x3F, 0x80, 0x03, 0xF8, 0x00, 0x7F, 0x80, 0x07, + 0xF8, 0x00, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xEF, 0x80, 0x3E, 0xF8, 0x03, + 0xCF, 0x80, 0x7C, 0xF8, 0x0F, 0x8F, 0x80, 0xF0, 0xF8, 0x1F, 0x0F, 0x81, + 0xE0, 0xF8, 0x3E, 0x0F, 0x87, 0xC0, 0xF8, 0x78, 0x0F, 0x8F, 0xFF, 0xFE, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x0F, + 0x80, 0x07, 0xFE, 0x00, 0xFF, 0xF0, 0x0F, 0xFF, 0x00, 0xFF, 0xF0, 0x07, + 0xFE, 0x3F, 0xFF, 0xC1, 0xFF, 0xFF, 0x0F, 0xFF, 0xF8, 0x7F, 0xFF, 0xC3, + 0xFF, 0xFC, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, + 0x01, 0xF0, 0x00, 0x0F, 0xBF, 0x00, 0x7F, 0xFF, 0x03, 0xFF, 0xFC, 0x1F, + 0xFF, 0xF0, 0xFF, 0xFF, 0x83, 0xC0, 0xFE, 0x00, 0x01, 0xF0, 0x00, 0x0F, + 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, + 0x03, 0xE0, 0x00, 0x3F, 0xF0, 0x03, 0xF7, 0xE0, 0x3F, 0xBF, 0xFF, 0xF9, + 0xFF, 0xFF, 0xC7, 0xFF, 0xFC, 0x1F, 0xFF, 0x80, 0x1F, 0xF0, 0x00, 0x00, + 0x1F, 0xC0, 0x0F, 0xFF, 0x01, 0xFF, 0xF0, 0x7F, 0xFF, 0x0F, 0xFF, 0xE1, + 0xFF, 0x00, 0x1F, 0xC0, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x07, 0xE0, 0x00, + 0x7C, 0x00, 0x0F, 0x8F, 0xC0, 0xF9, 0xFF, 0x0F, 0xFF, 0xF8, 0xFF, 0xFF, + 0xCF, 0xFF, 0xFC, 0xFF, 0x0F, 0xEF, 0xE0, 0x3E, 0xFC, 0x03, 0xFF, 0x80, + 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xF7, 0xC0, 0x3F, 0x7E, + 0x03, 0xF3, 0xF0, 0x7E, 0x3F, 0xFF, 0xE1, 0xFF, 0xFC, 0x0F, 0xFF, 0x80, + 0x7F, 0xF0, 0x01, 0xFC, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x1F, 0xF0, 0x03, 0xE0, 0x00, + 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, + 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x1F, 0x00, + 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x07, 0xC0, + 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, + 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x06, 0x00, 0x01, 0xF8, 0x00, 0xFF, + 0xF0, 0x1F, 0xFF, 0x83, 0xFF, 0xFC, 0x7F, 0xFF, 0xE7, 0xE0, 0x7E, 0xFC, + 0x03, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xF7, + 0xC0, 0x3E, 0x7E, 0x07, 0xE3, 0xFF, 0xFC, 0x0F, 0xFF, 0x00, 0xFF, 0xF0, + 0x1F, 0xFF, 0x83, 0xFF, 0xFC, 0x7F, 0x0F, 0xE7, 0xC0, 0x3E, 0xF8, 0x01, + 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xFC, 0x03, 0xF7, 0xE0, + 0x7E, 0x7F, 0xFF, 0xE3, 0xFF, 0xFC, 0x1F, 0xFF, 0x80, 0xFF, 0xF0, 0x03, + 0xFC, 0x00, 0x03, 0xF8, 0x00, 0xFF, 0xE0, 0x1F, 0xFF, 0x83, 0xFF, 0xF8, + 0x7F, 0xFF, 0xC7, 0xE0, 0xFE, 0xFC, 0x03, 0xEF, 0x80, 0x3E, 0xF8, 0x01, + 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x3F, 0xFC, 0x07, 0xF7, 0xE0, + 0xFF, 0x7F, 0xFF, 0xF3, 0xFF, 0xFF, 0x1F, 0xFF, 0xF0, 0xFF, 0x9F, 0x03, + 0xF1, 0xF0, 0x00, 0x3F, 0x00, 0x03, 0xE0, 0x00, 0x7E, 0x00, 0x0F, 0xC0, + 0x01, 0xFC, 0x00, 0x3F, 0x80, 0x0F, 0xF0, 0x7F, 0xFE, 0x0F, 0xFF, 0xC0, + 0xFF, 0xF8, 0x0F, 0xFF, 0x00, 0x3F, 0x80, 0x00, 0x7D, 0xFF, 0xFF, 0xFF, + 0xEF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xFF, + 0xFF, 0xFF, 0xEF, 0x80, 0x0F, 0x87, 0xF1, 0xFC, 0x7F, 0x1F, 0xC3, 0xE0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, + 0x1F, 0x87, 0xE1, 0xF0, 0xFC, 0x3E, 0x0F, 0x03, 0xC1, 0xE0, 0x78, 0x1C, + 0x07, 0x01, 0x80, 0x00, 0x00, 0x04, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x7F, + 0x00, 0x01, 0xFE, 0x00, 0x07, 0xFC, 0x00, 0x1F, 0xF0, 0x00, 0x7F, 0xC0, + 0x01, 0xFF, 0x00, 0x07, 0xFE, 0x00, 0x1F, 0xF8, 0x00, 0x7F, 0xE0, 0x00, + 0xFF, 0xE0, 0x00, 0x1F, 0xF8, 0x00, 0x07, 0xFE, 0x00, 0x01, 0xFF, 0x80, + 0x00, 0x7F, 0xE0, 0x00, 0x1F, 0xF8, 0x00, 0x07, 0xFC, 0x00, 0x01, 0xFE, + 0x00, 0x00, 0x7F, 0x00, 0x00, 0x1E, 0x7F, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFE, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFE, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFE, + 0x00, 0x00, 0x01, 0xE0, 0x00, 0x03, 0xF0, 0x00, 0x07, 0xF8, 0x00, 0x07, + 0xFC, 0x00, 0x03, 0xFE, 0x00, 0x01, 0xFF, 0x00, 0x00, 0xFF, 0x80, 0x00, + 0x7F, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x3F, 0xF0, 0x00, 0x3F, 0xF0, 0x01, + 0xFF, 0x00, 0x0F, 0xF8, 0x00, 0x7F, 0xC0, 0x03, 0xFE, 0x00, 0x1F, 0xF0, + 0x00, 0xFF, 0x80, 0x03, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x0F, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0xF8, 0x01, 0xFF, 0xF0, 0xFF, 0xFF, 0x8F, + 0xFF, 0xFC, 0xFF, 0xFF, 0xEF, 0xC0, 0x7E, 0xF8, 0x03, 0xFF, 0x80, 0x1F, + 0x70, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x3F, + 0xE0, 0x0F, 0xFC, 0x01, 0xFF, 0x00, 0x0F, 0xC0, 0x00, 0xF0, 0x00, 0x0F, + 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1F, 0x00, 0x03, 0xF8, 0x00, 0x3F, 0x80, 0x03, 0xF8, 0x00, + 0x3F, 0x80, 0x01, 0xF0, 0x00, 0x01, 0xF0, 0x00, 0xFF, 0x80, 0x3F, 0xF8, + 0x0F, 0xFF, 0x83, 0xE0, 0xF8, 0x78, 0x07, 0x1E, 0x00, 0xF3, 0x80, 0x0E, + 0x70, 0x01, 0xDE, 0x00, 0x3B, 0x80, 0x3F, 0x70, 0x1F, 0xEE, 0x07, 0xFD, + 0xC1, 0xFF, 0xB8, 0x7E, 0x77, 0x0F, 0x0E, 0xE3, 0xC1, 0xDC, 0x70, 0x3B, + 0x8E, 0x07, 0x71, 0xC0, 0xEE, 0x3C, 0x1D, 0xC3, 0xC3, 0xB8, 0x7F, 0xF7, + 0x07, 0xFF, 0xE0, 0x7F, 0xFC, 0x03, 0xFB, 0xC0, 0x00, 0x38, 0x00, 0x07, + 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x61, 0xF0, 0x3E, 0x1F, 0xFF, 0xC3, + 0xFF, 0xF0, 0x1F, 0xFC, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x80, 0x00, 0x7F, + 0xFE, 0x00, 0x03, 0xFF, 0xF0, 0x00, 0x1F, 0xFF, 0xC0, 0x00, 0x7F, 0xFE, + 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x01, 0xF7, 0xC0, 0x00, 0x0F, 0xBE, 0x00, + 0x00, 0x7D, 0xF8, 0x00, 0x07, 0xC7, 0xC0, 0x00, 0x3E, 0x3E, 0x00, 0x03, + 0xE0, 0xF8, 0x00, 0x1F, 0x07, 0xC0, 0x00, 0xF0, 0x3F, 0x00, 0x0F, 0x80, + 0xF8, 0x00, 0x7F, 0xFF, 0xC0, 0x07, 0xFF, 0xFF, 0x00, 0x3F, 0xFF, 0xF8, + 0x03, 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xFF, 0x00, 0xF8, 0x00, 0xF8, 0x0F, + 0x80, 0x03, 0xE1, 0xFF, 0x80, 0xFF, 0xDF, 0xFE, 0x0F, 0xFF, 0xFF, 0xF0, + 0x7F, 0xFF, 0xFF, 0x83, 0xFF, 0xDF, 0xF8, 0x0F, 0xFC, 0x7F, 0xFF, 0xC0, + 0x3F, 0xFF, 0xFC, 0x0F, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xF8, 0x7F, 0xFF, + 0xFE, 0x07, 0xC0, 0x1F, 0xC1, 0xF0, 0x01, 0xF0, 0x7C, 0x00, 0x7C, 0x1F, + 0x00, 0x1F, 0x07, 0xC0, 0x0F, 0xC1, 0xF0, 0x07, 0xE0, 0x7F, 0xFF, 0xF0, + 0x1F, 0xFF, 0xF8, 0x07, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, + 0xFC, 0x1F, 0x00, 0x3F, 0x87, 0xC0, 0x03, 0xF1, 0xF0, 0x00, 0x7C, 0x7C, + 0x00, 0x1F, 0x1F, 0x00, 0x07, 0xC7, 0xC0, 0x03, 0xF7, 0xFF, 0xFF, 0xFB, + 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, + 0x00, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0xE7, 0x01, 0xFF, 0xFF, 0xC1, 0xFF, + 0xFF, 0xE1, 0xFF, 0xFF, 0xF1, 0xFE, 0x07, 0xF8, 0xFC, 0x01, 0xFC, 0xFC, + 0x00, 0x7E, 0x7C, 0x00, 0x1F, 0x7E, 0x00, 0x0F, 0xBE, 0x00, 0x03, 0x9F, + 0x00, 0x00, 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, + 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x3E, 0x00, 0x00, + 0x1F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, 0xF0, 0x00, 0x39, 0xFC, 0x00, + 0x7C, 0x7F, 0x80, 0xFF, 0x1F, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0x81, 0xFF, + 0xFF, 0x00, 0x3F, 0xFF, 0x00, 0x07, 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0x7F, + 0xFF, 0xF0, 0x3F, 0xFF, 0xFC, 0x1F, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xC1, + 0xF0, 0x0F, 0xF0, 0xF8, 0x01, 0xF8, 0x7C, 0x00, 0x7E, 0x3E, 0x00, 0x1F, + 0x1F, 0x00, 0x0F, 0xCF, 0x80, 0x03, 0xE7, 0xC0, 0x01, 0xF3, 0xE0, 0x00, + 0xF9, 0xF0, 0x00, 0x7C, 0xF8, 0x00, 0x3E, 0x7C, 0x00, 0x1F, 0x3E, 0x00, + 0x0F, 0x9F, 0x00, 0x07, 0xCF, 0x80, 0x07, 0xE7, 0xC0, 0x03, 0xE3, 0xE0, + 0x03, 0xF1, 0xF0, 0x07, 0xF1, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xF8, 0xFF, + 0xFF, 0xF8, 0x7F, 0xFF, 0xF0, 0x1F, 0xFF, 0xE0, 0x00, 0x7F, 0xFF, 0xFF, + 0x7F, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, + 0xF0, 0xF8, 0x00, 0xF8, 0x7C, 0x00, 0x7C, 0x3E, 0x0E, 0x3E, 0x1F, 0x0F, + 0x9F, 0x0F, 0x87, 0xC7, 0x07, 0xC3, 0xE0, 0x03, 0xFF, 0xF0, 0x01, 0xFF, + 0xF8, 0x00, 0xFF, 0xFC, 0x00, 0x7F, 0xFE, 0x00, 0x3F, 0xFF, 0x00, 0x1F, + 0x0F, 0x80, 0x0F, 0x87, 0xC3, 0x87, 0xC1, 0xC3, 0xE3, 0xE0, 0x01, 0xF1, + 0xF0, 0x00, 0xF8, 0xF8, 0x00, 0x7D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, + 0xFF, 0xF8, 0xF8, 0x00, 0x7C, 0x7C, 0x00, 0x3E, 0x3E, 0x00, 0x1F, 0x1F, + 0x07, 0x0F, 0x8F, 0x87, 0xC3, 0x87, 0xC3, 0xE0, 0x03, 0xFF, 0xF0, 0x01, + 0xFF, 0xF8, 0x00, 0xFF, 0xFC, 0x00, 0x7F, 0xFE, 0x00, 0x3F, 0xFF, 0x00, + 0x1F, 0x0F, 0x80, 0x0F, 0x87, 0xC0, 0x07, 0xC3, 0xE0, 0x03, 0xE0, 0xE0, + 0x01, 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xFF, 0xF0, 0x01, 0xFF, 0xFC, + 0x00, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, + 0x7F, 0x8E, 0x00, 0xFF, 0xF7, 0x81, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0xE1, + 0xFF, 0xFF, 0xF1, 0xFE, 0x03, 0xF8, 0xFC, 0x00, 0xFC, 0xFC, 0x00, 0x3E, + 0x7C, 0x00, 0x1F, 0x7E, 0x00, 0x07, 0x3E, 0x00, 0x00, 0x1F, 0x00, 0x00, + 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, 0xF0, 0x0F, + 0xFE, 0xF8, 0x0F, 0xFF, 0xFC, 0x07, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, 0x00, + 0xFF, 0xFF, 0xC0, 0x01, 0xF3, 0xF0, 0x00, 0xF9, 0xFC, 0x00, 0x7C, 0x7F, + 0x80, 0xFE, 0x3F, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0x80, + 0x7F, 0xFF, 0x00, 0x07, 0xFC, 0x00, 0x3F, 0xE1, 0xFF, 0x1F, 0xFC, 0xFF, + 0xE7, 0xFF, 0x3F, 0xF9, 0xFF, 0xCF, 0xFE, 0x3F, 0xE1, 0xFF, 0x07, 0xC0, + 0x0F, 0x81, 0xF0, 0x03, 0xE0, 0x7C, 0x00, 0xF8, 0x1F, 0x00, 0x3E, 0x07, + 0xC0, 0x0F, 0x81, 0xF0, 0x03, 0xE0, 0x7F, 0xFF, 0xF8, 0x1F, 0xFF, 0xFE, + 0x07, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, 0xF8, 0x1F, 0x00, + 0x3E, 0x07, 0xC0, 0x0F, 0x81, 0xF0, 0x03, 0xE0, 0x7C, 0x00, 0xF8, 0x1F, + 0x00, 0x3E, 0x07, 0xC0, 0x0F, 0x87, 0xFE, 0x1F, 0xFB, 0xFF, 0xCF, 0xFF, + 0xFF, 0xF3, 0xFF, 0xFF, 0xFC, 0xFF, 0xF7, 0xFE, 0x1F, 0xF8, 0x7F, 0xFF, + 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFC, 0x03, 0xE0, + 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, + 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, + 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x1F, 0x00, + 0x03, 0xE0, 0x1F, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, + 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xC0, 0x7F, 0xFF, + 0xE0, 0x3F, 0xFF, 0xF0, 0x0F, 0xFF, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x07, + 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x00, + 0x7C, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x0F, 0x80, 0x00, + 0x07, 0xC0, 0xE0, 0x03, 0xE0, 0xF8, 0x01, 0xF0, 0x7C, 0x00, 0xF8, 0x3E, + 0x00, 0x7C, 0x1F, 0x00, 0x3E, 0x0F, 0x80, 0x1F, 0x07, 0xC0, 0x1F, 0x83, + 0xF8, 0x3F, 0x81, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, 0xC0, + 0x07, 0xFF, 0xC0, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0xE0, 0xFF, 0x9F, 0xFE, + 0x3F, 0xFB, 0xFF, 0xC7, 0xFF, 0x7F, 0xF8, 0xFF, 0xE7, 0xFE, 0x0F, 0xF8, + 0x3E, 0x01, 0xF8, 0x07, 0xC0, 0xFE, 0x00, 0xF8, 0x3F, 0x80, 0x1F, 0x0F, + 0xE0, 0x03, 0xE3, 0xF8, 0x00, 0x7D, 0xFC, 0x00, 0x0F, 0xFF, 0x00, 0x01, + 0xFF, 0xF0, 0x00, 0x3F, 0xFF, 0x00, 0x07, 0xFF, 0xF0, 0x00, 0xFE, 0x7F, + 0x00, 0x1F, 0x87, 0xF0, 0x03, 0xE0, 0x7E, 0x00, 0x7C, 0x07, 0xE0, 0x0F, + 0x80, 0x7E, 0x01, 0xF0, 0x0F, 0xC0, 0x3E, 0x00, 0xF8, 0x1F, 0xF8, 0x1F, + 0xF7, 0xFF, 0x81, 0xFF, 0xFF, 0xF0, 0x3F, 0xFF, 0xFE, 0x07, 0xFD, 0xFF, + 0x80, 0x7F, 0x00, 0x7F, 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0x3F, 0xFF, 0x80, + 0x1F, 0xFF, 0xC0, 0x07, 0xFF, 0xC0, 0x00, 0x3E, 0x00, 0x00, 0x1F, 0x00, + 0x00, 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, 0xF0, + 0x00, 0x00, 0xF8, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x0F, 0x80, 0x0E, 0x07, 0xC0, 0x0F, 0x83, 0xE0, 0x07, 0xC1, + 0xF0, 0x03, 0xE0, 0xF8, 0x01, 0xF0, 0x7C, 0x00, 0xF8, 0x3E, 0x00, 0x7D, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xDF, 0xFF, 0xFF, 0xE0, 0x3F, 0x80, 0x03, 0xF8, 0xFF, 0x80, 0x0F, 0xF9, + 0xFF, 0x00, 0x1F, 0xF3, 0xFF, 0x00, 0x7F, 0xE3, 0xFE, 0x00, 0xFF, 0x83, + 0xFE, 0x03, 0xFE, 0x07, 0xFC, 0x07, 0xFC, 0x0F, 0xFC, 0x1F, 0xF8, 0x1F, + 0xF8, 0x3F, 0xF0, 0x3F, 0xF0, 0x7F, 0xE0, 0x7D, 0xF1, 0xF7, 0xC0, 0xFB, + 0xE3, 0xEF, 0x81, 0xF7, 0xEF, 0xDF, 0x03, 0xE7, 0xDF, 0x3E, 0x07, 0xCF, + 0xFE, 0x7C, 0x0F, 0x8F, 0xF8, 0xF8, 0x1F, 0x1F, 0xF1, 0xF0, 0x3E, 0x1F, + 0xE3, 0xE0, 0x7C, 0x3F, 0x87, 0xC0, 0xF8, 0x3F, 0x0F, 0x81, 0xF0, 0x00, + 0x1F, 0x03, 0xE0, 0x00, 0x3E, 0x1F, 0xF8, 0x03, 0xFF, 0x7F, 0xF8, 0x0F, + 0xFF, 0xFF, 0xF0, 0x1F, 0xFF, 0xFF, 0xE0, 0x3F, 0xFD, 0xFF, 0x80, 0x3F, + 0xF0, 0x7F, 0x00, 0x7F, 0xEF, 0xF8, 0x0F, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, + 0xFC, 0x0F, 0xFF, 0x7F, 0xE0, 0x7F, 0xE1, 0xFF, 0x00, 0xF8, 0x1F, 0xF0, + 0x0F, 0x81, 0xFF, 0x80, 0xF8, 0x1F, 0xFC, 0x0F, 0x81, 0xFF, 0xC0, 0xF8, + 0x1F, 0x7E, 0x0F, 0x81, 0xF3, 0xF0, 0xF8, 0x1F, 0x3F, 0x0F, 0x81, 0xF1, + 0xF8, 0xF8, 0x1F, 0x0F, 0xCF, 0x81, 0xF0, 0xFC, 0xF8, 0x1F, 0x07, 0xEF, + 0x81, 0xF0, 0x3F, 0xF8, 0x1F, 0x03, 0xFF, 0x81, 0xF0, 0x1F, 0xF8, 0x1F, + 0x00, 0xFF, 0x81, 0xF0, 0x0F, 0xF8, 0x7F, 0xE0, 0x7F, 0x8F, 0xFF, 0x03, + 0xF8, 0xFF, 0xF0, 0x3F, 0x8F, 0xFF, 0x01, 0xF8, 0x7F, 0xE0, 0x0F, 0x80, + 0x00, 0x3F, 0x80, 0x00, 0x3F, 0xFC, 0x00, 0x0F, 0xFF, 0xE0, 0x03, 0xFF, + 0xFE, 0x00, 0xFF, 0xFF, 0xE0, 0x3F, 0xC1, 0xFE, 0x0F, 0xE0, 0x0F, 0xE1, + 0xF8, 0x00, 0xFC, 0x7E, 0x00, 0x0F, 0xCF, 0x80, 0x00, 0xFB, 0xF0, 0x00, + 0x1F, 0xFC, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x3F, 0xF0, 0x00, 0x07, 0xFE, + 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x1F, 0xF8, 0x00, 0x03, 0xFF, 0x00, 0x00, + 0x7F, 0xF0, 0x00, 0x1F, 0xBE, 0x00, 0x03, 0xE7, 0xE0, 0x00, 0xFC, 0x7E, + 0x00, 0x3F, 0x0F, 0xE0, 0x0F, 0xE0, 0xFF, 0x07, 0xF8, 0x0F, 0xFF, 0xFE, + 0x00, 0xFF, 0xFF, 0x80, 0x0F, 0xFF, 0xE0, 0x00, 0xFF, 0xF8, 0x00, 0x03, + 0xF8, 0x00, 0x7F, 0xFF, 0x80, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xF8, 0xFF, + 0xFF, 0xFC, 0x7F, 0xFF, 0xFE, 0x1F, 0x00, 0xFE, 0x1F, 0x00, 0x3F, 0x1F, + 0x00, 0x1F, 0x1F, 0x00, 0x1F, 0x1F, 0x00, 0x1F, 0x1F, 0x00, 0x1F, 0x1F, + 0x00, 0x3F, 0x1F, 0x00, 0x7E, 0x1F, 0xFF, 0xFE, 0x1F, 0xFF, 0xFC, 0x1F, + 0xFF, 0xF8, 0x1F, 0xFF, 0xF0, 0x1F, 0xFF, 0x80, 0x1F, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x7F, 0xFC, 0x00, 0xFF, + 0xFE, 0x00, 0xFF, 0xFE, 0x00, 0xFF, 0xFE, 0x00, 0x7F, 0xFC, 0x00, 0x00, + 0x3F, 0x80, 0x00, 0x3F, 0xFC, 0x00, 0x0F, 0xFF, 0xE0, 0x03, 0xFF, 0xFE, + 0x00, 0xFF, 0xFF, 0xE0, 0x3F, 0xC1, 0xFE, 0x0F, 0xE0, 0x0F, 0xE1, 0xF8, + 0x00, 0xFC, 0x7E, 0x00, 0x0F, 0xCF, 0x80, 0x00, 0xFB, 0xF0, 0x00, 0x1F, + 0xFC, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x3F, 0xF0, 0x00, 0x07, 0xFE, 0x00, + 0x00, 0xFF, 0xC0, 0x00, 0x1F, 0xF8, 0x00, 0x03, 0xFF, 0x80, 0x00, 0xFD, + 0xF0, 0x00, 0x1F, 0x3F, 0x00, 0x07, 0xE7, 0xF0, 0x01, 0xF8, 0x7F, 0x00, + 0x7F, 0x07, 0xF8, 0x3F, 0xC0, 0xFF, 0xFF, 0xF0, 0x07, 0xFF, 0xFC, 0x00, + 0x7F, 0xFF, 0x00, 0x07, 0xFF, 0xC0, 0x00, 0x7F, 0xC0, 0x00, 0x0F, 0x00, + 0x00, 0x03, 0xFF, 0x87, 0x80, 0xFF, 0xFF, 0xF8, 0x3F, 0xFF, 0xFF, 0x07, + 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xF0, 0x0F, 0x01, 0xF8, 0x00, 0x7F, 0xFF, + 0x80, 0x0F, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, 0xC0, + 0x7F, 0xFF, 0xFE, 0x00, 0xF8, 0x07, 0xE0, 0x0F, 0x80, 0x3F, 0x00, 0xF8, + 0x01, 0xF0, 0x0F, 0x80, 0x1F, 0x00, 0xF8, 0x01, 0xF0, 0x0F, 0x80, 0x3F, + 0x00, 0xF8, 0x0F, 0xE0, 0x0F, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0xC0, 0x0F, + 0xFF, 0xF0, 0x00, 0xFF, 0xFE, 0x00, 0x0F, 0xFF, 0xF0, 0x00, 0xF8, 0x3F, + 0x80, 0x0F, 0x81, 0xFC, 0x00, 0xF8, 0x0F, 0xE0, 0x0F, 0x80, 0x7E, 0x00, + 0xF8, 0x03, 0xF0, 0x7F, 0xF0, 0x1F, 0xEF, 0xFF, 0x81, 0xFF, 0xFF, 0xF8, + 0x0F, 0xFF, 0xFF, 0x80, 0x7F, 0x7F, 0xF0, 0x07, 0xE0, 0x01, 0xFC, 0x70, + 0x1F, 0xFD, 0xE0, 0xFF, 0xFF, 0x87, 0xFF, 0xFE, 0x3F, 0xFF, 0xF8, 0xFC, + 0x0F, 0xE7, 0xE0, 0x1F, 0x9F, 0x00, 0x3E, 0x7C, 0x00, 0xF9, 0xF0, 0x01, + 0xC7, 0xF0, 0x00, 0x0F, 0xF8, 0x00, 0x3F, 0xFF, 0x00, 0x7F, 0xFF, 0x00, + 0xFF, 0xFF, 0x00, 0xFF, 0xFC, 0x00, 0x1F, 0xF8, 0x00, 0x07, 0xE0, 0x00, + 0x0F, 0xDC, 0x00, 0x1F, 0xF8, 0x00, 0x7F, 0xE0, 0x01, 0xFF, 0xC0, 0x0F, + 0xFF, 0xC0, 0xFE, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xCF, 0xFF, 0xFE, 0x1C, + 0xFF, 0xF0, 0x00, 0xFE, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0xF0, 0x7F, + 0xE0, 0xF8, 0x3F, 0xF0, 0x7C, 0x1F, 0xF8, 0x3E, 0x0F, 0xFC, 0x1F, 0x07, + 0xFE, 0x0F, 0x83, 0xEE, 0x07, 0xC0, 0xE0, 0x03, 0xE0, 0x00, 0x01, 0xF0, + 0x00, 0x00, 0xF8, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, + 0xF0, 0x00, 0x0F, 0xFF, 0x80, 0x0F, 0xFF, 0xE0, 0x07, 0xFF, 0xF0, 0x03, + 0xFF, 0xF8, 0x00, 0xFF, 0xF8, 0x00, 0x7F, 0xE0, 0x7F, 0xEF, 0xFF, 0x0F, + 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0x7F, 0xE0, 0x7F, 0xE1, + 0xF0, 0x00, 0xF8, 0x1F, 0x00, 0x0F, 0x81, 0xF0, 0x00, 0xF8, 0x1F, 0x00, + 0x0F, 0x81, 0xF0, 0x00, 0xF8, 0x1F, 0x00, 0x0F, 0x81, 0xF0, 0x00, 0xF8, + 0x1F, 0x00, 0x0F, 0x81, 0xF0, 0x00, 0xF8, 0x1F, 0x00, 0x0F, 0x81, 0xF0, + 0x00, 0xF8, 0x1F, 0x00, 0x0F, 0x81, 0xF0, 0x00, 0xF8, 0x1F, 0x00, 0x0F, + 0x81, 0xF0, 0x00, 0xF8, 0x1F, 0x80, 0x1F, 0x80, 0xF8, 0x01, 0xF0, 0x0F, + 0xE0, 0x7F, 0x00, 0x7F, 0xFF, 0xE0, 0x03, 0xFF, 0xFE, 0x00, 0x1F, 0xFF, + 0x80, 0x00, 0xFF, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x7F, 0xE0, 0x1F, 0xFB, + 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xFC, 0x0F, 0xFF, 0x7F, + 0xE0, 0x1F, 0xF8, 0x7C, 0x00, 0x0F, 0x80, 0xF8, 0x00, 0x7C, 0x03, 0xE0, + 0x01, 0xF0, 0x07, 0xC0, 0x0F, 0x80, 0x1F, 0x00, 0x3E, 0x00, 0x7E, 0x00, + 0xF8, 0x00, 0xF8, 0x07, 0xC0, 0x03, 0xF0, 0x1F, 0x00, 0x07, 0xC0, 0xF8, + 0x00, 0x1F, 0x03, 0xE0, 0x00, 0x7E, 0x1F, 0x00, 0x00, 0xF8, 0x7C, 0x00, + 0x03, 0xF3, 0xF0, 0x00, 0x07, 0xCF, 0x80, 0x00, 0x1F, 0xBE, 0x00, 0x00, + 0x3F, 0xF0, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x07, + 0xF8, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0xFC, + 0x00, 0x00, 0x7F, 0xE0, 0x7F, 0xEF, 0xFF, 0x0F, 0xFF, 0xFF, 0xF0, 0xFF, + 0xFF, 0xFF, 0x0F, 0xFF, 0x7F, 0xE0, 0x7F, 0xE3, 0xE0, 0x00, 0x3C, 0x3E, + 0x0F, 0x83, 0xC3, 0xE1, 0xF8, 0x3C, 0x3E, 0x1F, 0x87, 0xC3, 0xE1, 0xFC, + 0x7C, 0x3E, 0x3F, 0xC7, 0xC1, 0xE3, 0xFC, 0x7C, 0x1F, 0x3F, 0xE7, 0xC1, + 0xF7, 0xFE, 0x78, 0x1F, 0x7F, 0xE7, 0x81, 0xF7, 0x9F, 0xF8, 0x1F, 0xF9, + 0xFF, 0x81, 0xFF, 0x9F, 0xF8, 0x0F, 0xF9, 0xFF, 0x80, 0xFF, 0x0F, 0xF8, + 0x0F, 0xF0, 0xFF, 0x80, 0xFF, 0x0F, 0xF0, 0x0F, 0xE0, 0x7F, 0x00, 0xFE, + 0x07, 0xF0, 0x0F, 0xE0, 0x7F, 0x00, 0xFC, 0x03, 0xF0, 0x07, 0xC0, 0x3F, + 0x00, 0x7F, 0x80, 0xFF, 0x3F, 0xF0, 0x7F, 0xEF, 0xFC, 0x1F, 0xFB, 0xFF, + 0x07, 0xFE, 0x7F, 0x80, 0xFF, 0x07, 0xE0, 0x3F, 0x00, 0xFC, 0x0F, 0x80, + 0x1F, 0x87, 0xC0, 0x03, 0xF3, 0xE0, 0x00, 0xFF, 0xF8, 0x00, 0x1F, 0xFC, + 0x00, 0x03, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x07, + 0xF0, 0x00, 0x03, 0xFE, 0x00, 0x01, 0xFF, 0xC0, 0x00, 0xFC, 0xF8, 0x00, + 0x7E, 0x3F, 0x00, 0x3F, 0x07, 0xE0, 0x1F, 0x80, 0xFC, 0x07, 0xE0, 0x1F, + 0x07, 0xFC, 0x0F, 0xFB, 0xFF, 0x87, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0xF8, + 0x7F, 0xF7, 0xFC, 0x0F, 0xF8, 0x7F, 0x80, 0x7F, 0xBF, 0xF0, 0x3F, 0xFF, + 0xFC, 0x0F, 0xFF, 0xFF, 0x03, 0xFF, 0x7F, 0x80, 0x7F, 0x87, 0xE0, 0x1F, + 0x80, 0xFC, 0x07, 0xC0, 0x1F, 0x03, 0xE0, 0x03, 0xE1, 0xF8, 0x00, 0xFC, + 0x7C, 0x00, 0x1F, 0xBE, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x7F, 0xC0, 0x00, + 0x1F, 0xE0, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, 0x00, + 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x07, 0xC0, 0x00, 0x1F, 0xFF, 0x00, 0x0F, 0xFF, 0xE0, 0x03, + 0xFF, 0xF8, 0x00, 0xFF, 0xFE, 0x00, 0x1F, 0xFF, 0x00, 0x7F, 0xFF, 0xF3, + 0xFF, 0xFF, 0x9F, 0xFF, 0xFC, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0x3E, 0x03, + 0xF1, 0xF0, 0x1F, 0x8F, 0x81, 0xF8, 0x7C, 0x1F, 0x83, 0xE1, 0xF8, 0x0E, + 0x1F, 0x80, 0x01, 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x0F, 0xC0, + 0x00, 0xFC, 0x00, 0x0F, 0xE0, 0x70, 0x7E, 0x07, 0xC7, 0xE0, 0x3E, 0x7E, + 0x01, 0xF7, 0xE0, 0x0F, 0xFF, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xBF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xBE, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, + 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, + 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, + 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x60, 0x00, 0x0F, 0x00, 0x00, + 0xF8, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7E, 0x00, + 0x03, 0xE0, 0x00, 0x3F, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x00, 0xF8, + 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x03, + 0xE0, 0x00, 0x1F, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, + 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xF0, + 0x00, 0x1F, 0x00, 0x01, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x07, + 0xC0, 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, + 0x1F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, + 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, + 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, + 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x7F, 0xFF, + 0xFF, 0xFF, 0xFF, 0x7F, 0xC0, 0x00, 0x40, 0x00, 0x06, 0x00, 0x00, 0xF0, + 0x00, 0x1F, 0x80, 0x03, 0xFC, 0x00, 0x7F, 0xE0, 0x0F, 0xFF, 0x00, 0xFF, + 0xF8, 0x1F, 0x9F, 0x83, 0xF0, 0xFC, 0x7E, 0x07, 0xEF, 0xC0, 0x3F, 0xF8, + 0x01, 0xFF, 0x80, 0x0F, 0x70, 0x00, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF0, 0xE0, 0x78, 0x3E, 0x0F, 0xC3, 0xF0, 0x7C, 0x1E, 0x06, 0x01, 0xFF, + 0x00, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0xE0, 0x1F, 0xFF, 0xF0, 0x0F, 0xFF, + 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x01, 0xFF, + 0xF8, 0x07, 0xFF, 0xF8, 0x1F, 0xFF, 0xF8, 0x3F, 0xFF, 0xF8, 0x7F, 0xFF, + 0xF8, 0x7F, 0x00, 0xF8, 0xFC, 0x00, 0xF8, 0xF8, 0x00, 0xF8, 0xF8, 0x03, + 0xF8, 0xFC, 0x0F, 0xFE, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x3F, 0xFF, + 0xFF, 0x1F, 0xFE, 0xFE, 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x00, 0x1F, 0xE0, + 0x00, 0x03, 0xFC, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, + 0x3E, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x1F, 0x0F, + 0xE0, 0x03, 0xEF, 0xFF, 0x00, 0x7F, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, 0x81, + 0xFF, 0xFF, 0xF8, 0x3F, 0xE0, 0x7F, 0x07, 0xF0, 0x03, 0xF0, 0xFC, 0x00, + 0x3E, 0x1F, 0x80, 0x07, 0xE3, 0xE0, 0x00, 0x7C, 0x7C, 0x00, 0x0F, 0x8F, + 0x80, 0x01, 0xF1, 0xF0, 0x00, 0x3E, 0x3E, 0x00, 0x07, 0xC7, 0xE0, 0x01, + 0xF8, 0xFC, 0x00, 0x3E, 0x1F, 0xC0, 0x0F, 0xCF, 0xFE, 0x07, 0xF3, 0xFF, + 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0x8F, 0xFF, 0xFF, 0xE0, 0xFE, 0x7F, 0xF0, + 0x00, 0x03, 0xF8, 0x00, 0x00, 0xFF, 0x18, 0x03, 0xFF, 0xFC, 0x0F, 0xFF, + 0xFC, 0x1F, 0xFF, 0xFC, 0x3F, 0xFF, 0xFC, 0x3F, 0x81, 0xFC, 0x7E, 0x00, + 0x7C, 0x7C, 0x00, 0x7C, 0xFC, 0x00, 0x3C, 0xF8, 0x00, 0x38, 0xF8, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xFC, 0x00, + 0x00, 0x7C, 0x00, 0x06, 0x7E, 0x00, 0x1F, 0x7F, 0x80, 0x7F, 0x3F, 0xFF, + 0xFF, 0x1F, 0xFF, 0xFE, 0x0F, 0xFF, 0xFC, 0x07, 0xFF, 0xF8, 0x00, 0xFF, + 0xC0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x1F, 0xE0, 0x00, + 0x07, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, 0xE0, + 0x00, 0x00, 0xF8, 0x00, 0xFE, 0x3E, 0x00, 0xFF, 0xEF, 0x80, 0xFF, 0xFF, + 0xE0, 0x7F, 0xFF, 0xF8, 0x3F, 0xFF, 0xFE, 0x1F, 0xE0, 0xFF, 0x87, 0xE0, + 0x0F, 0xE1, 0xF0, 0x01, 0xF8, 0xFC, 0x00, 0x7E, 0x3E, 0x00, 0x0F, 0x8F, + 0x80, 0x03, 0xE3, 0xE0, 0x00, 0xF8, 0xF8, 0x00, 0x3E, 0x3E, 0x00, 0x0F, + 0x8F, 0xC0, 0x07, 0xE1, 0xF0, 0x01, 0xF8, 0x7E, 0x00, 0xFE, 0x0F, 0xE0, + 0x7F, 0xE3, 0xFF, 0xFF, 0xFC, 0x7F, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xC0, + 0xFF, 0xEF, 0xE0, 0x0F, 0xC0, 0x00, 0x00, 0xFE, 0x00, 0x03, 0xFF, 0xC0, + 0x0F, 0xFF, 0xE0, 0x1F, 0xFF, 0xF0, 0x3F, 0xFF, 0xF8, 0x7F, 0x81, 0xFC, + 0x7E, 0x00, 0x7E, 0xFC, 0x00, 0x3E, 0xF8, 0x00, 0x3E, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF8, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7F, 0x80, 0x7E, + 0x3F, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0x0F, 0xFF, 0xFE, 0x07, 0xFF, 0xF8, + 0x00, 0xFF, 0x80, 0x00, 0x3F, 0xE0, 0x03, 0xFF, 0xE0, 0x1F, 0xFF, 0xC0, + 0xFF, 0xFF, 0x07, 0xFF, 0xF8, 0x1F, 0x80, 0x00, 0x7C, 0x00, 0x01, 0xF0, + 0x00, 0x07, 0xC0, 0x01, 0xFF, 0xFF, 0x0F, 0xFF, 0xFE, 0x3F, 0xFF, 0xF8, + 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0x00, 0x7C, 0x00, 0x01, 0xF0, 0x00, 0x07, + 0xC0, 0x00, 0x1F, 0x00, 0x00, 0x7C, 0x00, 0x01, 0xF0, 0x00, 0x07, 0xC0, + 0x00, 0x1F, 0x00, 0x00, 0x7C, 0x00, 0x01, 0xF0, 0x00, 0x07, 0xC0, 0x01, + 0xFF, 0xFF, 0x0F, 0xFF, 0xFE, 0x3F, 0xFF, 0xF8, 0xFF, 0xFF, 0xE1, 0xFF, + 0xFF, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xFF, 0xBF, 0x83, 0xFF, 0xFF, 0xE3, + 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xFB, 0xFC, 0x3F, 0xF9, 0xF8, 0x07, 0xF0, + 0xF8, 0x01, 0xF8, 0xFC, 0x00, 0xFC, 0x7C, 0x00, 0x3E, 0x3E, 0x00, 0x1F, + 0x1F, 0x00, 0x0F, 0x8F, 0x80, 0x07, 0xC7, 0xC0, 0x03, 0xE3, 0xF0, 0x03, + 0xF0, 0xF8, 0x01, 0xF8, 0x7E, 0x01, 0xFC, 0x3F, 0xC3, 0xFE, 0x0F, 0xFF, + 0xFF, 0x03, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xC0, 0x3F, 0xFB, 0xE0, 0x07, + 0xF1, 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xFE, 0x00, + 0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0x00, 0x3F, 0xFE, 0x00, + 0x0F, 0xFC, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, + 0x03, 0xFC, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, 0x0F, 0xC0, 0x07, 0xCF, 0xFC, 0x01, + 0xF7, 0xFF, 0x80, 0x7F, 0xFF, 0xF0, 0x1F, 0xFF, 0xFC, 0x07, 0xFC, 0x1F, + 0x81, 0xFC, 0x03, 0xE0, 0x7E, 0x00, 0xF8, 0x1F, 0x00, 0x3E, 0x07, 0xC0, + 0x0F, 0x81, 0xF0, 0x03, 0xE0, 0x7C, 0x00, 0xF8, 0x1F, 0x00, 0x3E, 0x07, + 0xC0, 0x0F, 0x81, 0xF0, 0x03, 0xE0, 0x7C, 0x00, 0xF8, 0x1F, 0x00, 0x3E, + 0x1F, 0xF0, 0x3F, 0xEF, 0xFE, 0x1F, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0xE1, + 0xFF, 0xDF, 0xF0, 0x3F, 0xE0, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, + 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1F, 0xF8, 0x01, 0xFF, 0xC0, 0x0F, 0xFE, 0x00, 0x7F, 0xF0, + 0x01, 0xFF, 0x80, 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x00, + 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, + 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x7F, 0xFF, 0xF7, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0x00, 0x00, 0x7C, + 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, + 0xFF, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, + 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, + 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, + 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x3F, 0x00, 0x3F, 0xBF, 0xFF, 0xBF, 0xFF, + 0x9F, 0xFF, 0xCF, 0xFF, 0x83, 0xFF, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x80, + 0x00, 0x3F, 0xC0, 0x00, 0x1F, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x00, 0xF8, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x0F, + 0x87, 0xFC, 0x07, 0xC7, 0xFF, 0x03, 0xE3, 0xFF, 0x81, 0xF1, 0xFF, 0xC0, + 0xF8, 0x7F, 0xC0, 0x7C, 0xFE, 0x00, 0x3E, 0xFE, 0x00, 0x1F, 0xFE, 0x00, + 0x0F, 0xFE, 0x00, 0x07, 0xFE, 0x00, 0x03, 0xFF, 0x80, 0x01, 0xFF, 0xE0, + 0x00, 0xFF, 0xF8, 0x00, 0x7C, 0xFE, 0x00, 0x3E, 0x3F, 0x80, 0x1F, 0x0F, + 0xE0, 0x3F, 0x81, 0xFF, 0xBF, 0xC1, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xF0, + 0x7F, 0xFB, 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, 0x01, 0xFF, 0xC0, 0x0F, 0xFE, + 0x00, 0x7F, 0xF0, 0x01, 0xFF, 0x80, 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, + 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, + 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x00, + 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, + 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x03, 0xFF, + 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xF8, + 0x00, 0x3C, 0x1F, 0x00, 0xFD, 0xFC, 0xFF, 0x07, 0xFF, 0xFF, 0xFE, 0x1F, + 0xFF, 0xFF, 0xF8, 0x7F, 0xFF, 0xFF, 0xF0, 0xFF, 0x1F, 0x87, 0xC1, 0xF8, + 0x7E, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, + 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, + 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, + 0x1F, 0x07, 0xC1, 0xF1, 0xFE, 0x1F, 0x87, 0xEF, 0xFC, 0x7F, 0x1F, 0xFF, + 0xF1, 0xFC, 0x7F, 0xFF, 0xC7, 0xF1, 0xFD, 0xFE, 0x1F, 0x87, 0xE0, 0x00, + 0x1F, 0x80, 0x1F, 0x9F, 0xF8, 0x1F, 0xDF, 0xFE, 0x0F, 0xFF, 0xFF, 0x87, + 0xFF, 0xFF, 0xC1, 0xFF, 0x07, 0xF0, 0x7F, 0x01, 0xF8, 0x3F, 0x00, 0x7C, + 0x1F, 0x00, 0x3E, 0x0F, 0x80, 0x1F, 0x07, 0xC0, 0x0F, 0x83, 0xE0, 0x07, + 0xC1, 0xF0, 0x03, 0xE0, 0xF8, 0x01, 0xF0, 0x7C, 0x00, 0xF8, 0x3E, 0x00, + 0x7C, 0x1F, 0x00, 0x3E, 0x3F, 0xE0, 0x7F, 0xBF, 0xF8, 0x7F, 0xFF, 0xFC, + 0x3F, 0xFF, 0xFE, 0x1F, 0xFB, 0xFE, 0x07, 0xF8, 0x00, 0x7F, 0x00, 0x01, + 0xFF, 0xF0, 0x01, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0xC1, + 0xFE, 0x0F, 0xF1, 0xFC, 0x01, 0xFC, 0xFC, 0x00, 0x7E, 0xFC, 0x00, 0x1F, + 0xFC, 0x00, 0x07, 0xFE, 0x00, 0x03, 0xFF, 0x00, 0x01, 0xFF, 0x80, 0x00, + 0xFF, 0xC0, 0x00, 0x7F, 0xF0, 0x00, 0x7E, 0xF8, 0x00, 0x7E, 0x7F, 0x00, + 0x7F, 0x1F, 0xC0, 0xFF, 0x07, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0x80, 0x7F, + 0xFF, 0x00, 0x1F, 0xFF, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x07, 0xE0, 0x03, + 0xF9, 0xFF, 0xC0, 0x7F, 0xBF, 0xFE, 0x07, 0xFF, 0xFF, 0xF8, 0x7F, 0xFF, + 0xFF, 0xC3, 0xFF, 0x83, 0xFC, 0x0F, 0xE0, 0x0F, 0xE0, 0xFC, 0x00, 0x7E, + 0x0F, 0xC0, 0x03, 0xF0, 0xF8, 0x00, 0x1F, 0x0F, 0x80, 0x01, 0xF0, 0xF8, + 0x00, 0x1F, 0x0F, 0x80, 0x01, 0xF0, 0xF8, 0x00, 0x3F, 0x0F, 0xC0, 0x03, + 0xF0, 0xFE, 0x00, 0x7E, 0x0F, 0xF8, 0x1F, 0xE0, 0xFF, 0xFF, 0xFC, 0x0F, + 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xF0, 0x0F, 0x9F, 0xFC, 0x00, 0xF8, 0x7F, + 0x00, 0x0F, 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, + 0xF8, 0x00, 0x00, 0x7F, 0xF8, 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0xFF, 0xFC, + 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0x7F, 0xF8, 0x00, 0x00, 0x00, 0x7E, 0x00, + 0x00, 0x3F, 0xF9, 0xFC, 0x0F, 0xFF, 0xDF, 0xE1, 0xFF, 0xFF, 0xFE, 0x3F, + 0xFF, 0xFF, 0xE3, 0xF8, 0x1F, 0xFC, 0x7F, 0x00, 0x7F, 0x07, 0xC0, 0x03, + 0xF0, 0xFC, 0x00, 0x3F, 0x0F, 0x80, 0x01, 0xF0, 0xF8, 0x00, 0x1F, 0x0F, + 0x80, 0x01, 0xF0, 0xF8, 0x00, 0x1F, 0x0F, 0xC0, 0x01, 0xF0, 0xFC, 0x00, + 0x3F, 0x07, 0xE0, 0x07, 0xF0, 0x7F, 0x81, 0xFF, 0x03, 0xFF, 0xFF, 0xF0, + 0x1F, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xF0, 0x03, 0xFF, 0x9F, 0x00, 0x0F, + 0xE1, 0xF0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x01, 0xF0, 0x00, 0x01, 0xFF, 0xE0, 0x00, 0x3F, 0xFF, 0x00, + 0x03, 0xFF, 0xF0, 0x00, 0x3F, 0xFF, 0x00, 0x01, 0xFF, 0xE0, 0x00, 0x01, + 0xF0, 0x3F, 0xC7, 0xFC, 0x7F, 0xCF, 0xFE, 0x7F, 0xDF, 0xFF, 0x7F, 0xFF, + 0xFF, 0x3F, 0xFF, 0x0E, 0x07, 0xFC, 0x00, 0x07, 0xF8, 0x00, 0x07, 0xF0, + 0x00, 0x07, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x07, 0xC0, 0x00, 0x07, 0xC0, + 0x00, 0x07, 0xC0, 0x00, 0x07, 0xC0, 0x00, 0x07, 0xC0, 0x00, 0x07, 0xC0, + 0x00, 0x7F, 0xFF, 0xC0, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, + 0xE0, 0x7F, 0xFF, 0xC0, 0x03, 0xFC, 0x60, 0x7F, 0xFF, 0x87, 0xFF, 0xFC, + 0x7F, 0xFF, 0xE7, 0xFF, 0xFF, 0x3F, 0x01, 0xF9, 0xF0, 0x07, 0xCF, 0xC0, + 0x1C, 0x7F, 0xF0, 0x03, 0xFF, 0xF8, 0x0F, 0xFF, 0xF0, 0x3F, 0xFF, 0xC0, + 0x3F, 0xFF, 0x00, 0x0F, 0xFD, 0xC0, 0x07, 0xFE, 0x00, 0x1F, 0xF8, 0x00, + 0xFF, 0xF0, 0x1F, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xEF, 0xFF, 0xFE, 0x3F, + 0xFF, 0xC0, 0x07, 0xF8, 0x00, 0x07, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x3E, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0xFF, + 0xF8, 0x7F, 0xFF, 0xF8, 0xFF, 0xFF, 0xF1, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, + 0x80, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xE0, 0x00, + 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3E, 0x00, 0x00, + 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x03, 0x83, 0xF0, 0x1F, 0x87, + 0xFF, 0xFF, 0x07, 0xFF, 0xFE, 0x0F, 0xFF, 0xF8, 0x07, 0xFF, 0xC0, 0x03, + 0xFC, 0x00, 0x7F, 0x01, 0xFE, 0x7F, 0x81, 0xFF, 0x3F, 0xC0, 0xFF, 0x9F, + 0xE0, 0x7F, 0xC7, 0xF0, 0x1F, 0xE0, 0xF8, 0x01, 0xF0, 0x7C, 0x00, 0xF8, + 0x3E, 0x00, 0x7C, 0x1F, 0x00, 0x3E, 0x0F, 0x80, 0x1F, 0x07, 0xC0, 0x0F, + 0x83, 0xE0, 0x07, 0xC1, 0xF0, 0x03, 0xE0, 0xF8, 0x01, 0xF0, 0x7C, 0x01, + 0xF8, 0x3F, 0x01, 0xFC, 0x1F, 0xC1, 0xFF, 0x07, 0xFF, 0xFF, 0xC3, 0xFF, + 0xFF, 0xE0, 0xFF, 0xF7, 0xF0, 0x3F, 0xF3, 0xF0, 0x03, 0xF0, 0x00, 0x7F, + 0xE0, 0x7F, 0xEF, 0xFF, 0x0F, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0x0F, + 0xFF, 0x7F, 0xE0, 0x7F, 0xE0, 0xF8, 0x01, 0xF0, 0x0F, 0xC0, 0x1F, 0x00, + 0x7C, 0x03, 0xE0, 0x07, 0xE0, 0x3E, 0x00, 0x3E, 0x07, 0xC0, 0x03, 0xF0, + 0x7C, 0x00, 0x1F, 0x0F, 0x80, 0x01, 0xF8, 0xF8, 0x00, 0x0F, 0x9F, 0x00, + 0x00, 0xFD, 0xF0, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0x03, + 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x1F, 0x80, + 0x00, 0x7F, 0x80, 0x1F, 0xEF, 0xFC, 0x03, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, + 0xFC, 0x03, 0xFF, 0x7F, 0x80, 0x1F, 0xE1, 0xF0, 0xF8, 0x7C, 0x1F, 0x1F, + 0x87, 0xC1, 0xF1, 0xF8, 0xFC, 0x1F, 0x1F, 0xCF, 0x80, 0xFB, 0xFC, 0xF8, + 0x0F, 0xBF, 0xDF, 0x80, 0xFB, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0x00, 0x7F, + 0xDF, 0xF0, 0x07, 0xF9, 0xFF, 0x00, 0x7F, 0x9F, 0xE0, 0x07, 0xF0, 0xFE, + 0x00, 0x3F, 0x0F, 0xE0, 0x03, 0xF0, 0x7E, 0x00, 0x3E, 0x07, 0xC0, 0x03, + 0xE0, 0x3C, 0x00, 0x3F, 0xC0, 0xFF, 0x1F, 0xF8, 0x7F, 0xE7, 0xFE, 0x1F, + 0xF9, 0xFF, 0x87, 0xFE, 0x3F, 0xC0, 0xFF, 0x03, 0xF8, 0x7F, 0x00, 0x7F, + 0x3F, 0x80, 0x0F, 0xFF, 0xC0, 0x01, 0xFF, 0xE0, 0x00, 0x3F, 0xE0, 0x00, + 0x07, 0xF8, 0x00, 0x07, 0xFF, 0x00, 0x03, 0xFF, 0xE0, 0x01, 0xFF, 0xFE, + 0x00, 0xFE, 0x1F, 0xC0, 0x7F, 0x03, 0xF8, 0x7F, 0xC0, 0xFF, 0xBF, 0xF8, + 0x7F, 0xFF, 0xFE, 0x1F, 0xFF, 0xFF, 0x87, 0xFF, 0x7F, 0xC0, 0xFF, 0x80, + 0x7F, 0x80, 0x7F, 0xBF, 0xF0, 0x3F, 0xFF, 0xFC, 0x0F, 0xFF, 0xFF, 0x03, + 0xFF, 0x7F, 0x80, 0x7F, 0x8F, 0xC0, 0x07, 0x81, 0xF0, 0x03, 0xE0, 0x7E, + 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xF0, 0x3E, 0x00, 0x7C, 0x0F, 0x80, + 0x0F, 0x87, 0xC0, 0x03, 0xE1, 0xF0, 0x00, 0x7C, 0xF8, 0x00, 0x1F, 0xFE, + 0x00, 0x03, 0xFF, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x1F, 0xE0, 0x00, 0x07, + 0xF0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x1F, 0x80, 0x00, + 0x07, 0xC0, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x1F, 0xFF, 0x80, + 0x0F, 0xFF, 0xF0, 0x03, 0xFF, 0xFC, 0x00, 0xFF, 0xFF, 0x00, 0x1F, 0xFF, + 0x80, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xF0, 0x3F, 0xBE, 0x0F, 0xC3, 0x83, 0xF0, 0x00, 0xFC, 0x00, + 0x3F, 0x00, 0x0F, 0xC0, 0x03, 0xF0, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x0F, + 0xC0, 0x3B, 0xF0, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x78, 0x03, 0xF0, 0x1F, 0xC0, 0xFF, 0x07, + 0xF8, 0x1F, 0x80, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, + 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x0F, 0x81, 0xFE, 0x0F, + 0xF0, 0x3F, 0x80, 0xFF, 0x01, 0xFE, 0x00, 0xFC, 0x01, 0xF0, 0x07, 0xC0, + 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, 0xF8, + 0x07, 0xF8, 0x0F, 0xF0, 0x3F, 0xC0, 0x7F, 0x00, 0x78, 0x77, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xE0, 0x78, 0x03, 0xF0, 0x0F, + 0xE0, 0x3F, 0xC0, 0x7F, 0x00, 0x7E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, + 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, + 0x07, 0xC0, 0x1F, 0xE0, 0x3F, 0xC0, 0x7F, 0x03, 0xFC, 0x1F, 0xE0, 0xFC, + 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, + 0x00, 0xF8, 0x07, 0xE0, 0x7F, 0x83, 0xFC, 0x0F, 0xF0, 0x3F, 0x80, 0x78, + 0x00, 0x07, 0x80, 0x00, 0x7F, 0x80, 0x03, 0xFF, 0x03, 0x9F, 0xFE, 0x1F, + 0xFF, 0xFC, 0xFF, 0xF3, 0xFF, 0xFF, 0x87, 0xFF, 0x9C, 0x0F, 0xFC, 0x00, + 0x0F, 0xE0, 0x00, 0x1F, 0x00}; + +const GFXglyph FreeMonoBold24pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 28, 0, 1}, // 0x20 ' ' + {0, 7, 31, 28, 10, -29}, // 0x21 '!' + {28, 15, 14, 28, 6, -28}, // 0x22 '"' + {55, 22, 34, 28, 3, -30}, // 0x23 '#' + {149, 19, 38, 28, 5, -31}, // 0x24 '$' + {240, 21, 30, 28, 4, -28}, // 0x25 '%' + {319, 21, 28, 28, 4, -26}, // 0x26 '&' + {393, 6, 14, 28, 11, -28}, // 0x27 ''' + {404, 10, 37, 28, 12, -29}, // 0x28 '(' + {451, 10, 37, 28, 6, -29}, // 0x29 ')' + {498, 21, 19, 28, 4, -28}, // 0x2A '*' + {548, 23, 26, 28, 3, -25}, // 0x2B '+' + {623, 9, 14, 28, 7, -6}, // 0x2C ',' + {639, 24, 5, 28, 2, -15}, // 0x2D '-' + {654, 7, 6, 28, 11, -4}, // 0x2E '.' + {660, 20, 38, 28, 4, -32}, // 0x2F '/' + {755, 21, 31, 28, 4, -29}, // 0x30 '0' + {837, 20, 29, 28, 4, -28}, // 0x31 '1' + {910, 21, 30, 28, 3, -29}, // 0x32 '2' + {989, 21, 31, 28, 4, -29}, // 0x33 '3' + {1071, 20, 28, 28, 4, -27}, // 0x34 '4' + {1141, 21, 31, 28, 4, -29}, // 0x35 '5' + {1223, 20, 31, 28, 5, -29}, // 0x36 '6' + {1301, 20, 30, 28, 4, -29}, // 0x37 '7' + {1376, 20, 31, 28, 4, -29}, // 0x38 '8' + {1454, 20, 31, 28, 5, -29}, // 0x39 '9' + {1532, 7, 22, 28, 11, -20}, // 0x3A ':' + {1552, 10, 28, 28, 6, -20}, // 0x3B ';' + {1587, 24, 21, 28, 2, -23}, // 0x3C '<' + {1650, 24, 14, 28, 2, -19}, // 0x3D '=' + {1692, 23, 22, 28, 3, -23}, // 0x3E '>' + {1756, 20, 29, 28, 5, -27}, // 0x3F '?' + {1829, 19, 36, 28, 4, -28}, // 0x40 '@' + {1915, 29, 27, 28, -1, -26}, // 0x41 'A' + {2013, 26, 27, 28, 1, -26}, // 0x42 'B' + {2101, 25, 29, 28, 2, -27}, // 0x43 'C' + {2192, 25, 27, 28, 1, -26}, // 0x44 'D' + {2277, 25, 27, 28, 1, -26}, // 0x45 'E' + {2362, 25, 27, 28, 1, -26}, // 0x46 'F' + {2447, 25, 29, 28, 2, -27}, // 0x47 'G' + {2538, 26, 27, 28, 1, -26}, // 0x48 'H' + {2626, 19, 27, 28, 5, -26}, // 0x49 'I' + {2691, 25, 28, 28, 3, -26}, // 0x4A 'J' + {2779, 27, 27, 28, 1, -26}, // 0x4B 'K' + {2871, 25, 27, 28, 2, -26}, // 0x4C 'L' + {2956, 31, 27, 28, -1, -26}, // 0x4D 'M' + {3061, 28, 27, 28, 0, -26}, // 0x4E 'N' + {3156, 27, 29, 28, 1, -27}, // 0x4F 'O' + {3254, 24, 27, 28, 1, -26}, // 0x50 'P' + {3335, 27, 35, 28, 1, -27}, // 0x51 'Q' + {3454, 28, 27, 28, 0, -26}, // 0x52 'R' + {3549, 22, 29, 28, 3, -27}, // 0x53 'S' + {3629, 25, 27, 28, 2, -26}, // 0x54 'T' + {3714, 28, 28, 28, 0, -26}, // 0x55 'U' + {3812, 30, 27, 28, -1, -26}, // 0x56 'V' + {3914, 28, 27, 28, 0, -26}, // 0x57 'W' + {4009, 26, 27, 28, 1, -26}, // 0x58 'X' + {4097, 26, 27, 28, 1, -26}, // 0x59 'Y' + {4185, 21, 27, 28, 4, -26}, // 0x5A 'Z' + {4256, 10, 37, 28, 12, -29}, // 0x5B '[' + {4303, 20, 38, 28, 4, -32}, // 0x5C '\' + {4398, 10, 37, 28, 6, -29}, // 0x5D ']' + {4445, 20, 15, 28, 4, -29}, // 0x5E '^' + {4483, 28, 5, 28, 0, 5}, // 0x5F '_' + {4501, 9, 8, 28, 8, -30}, // 0x60 '`' + {4510, 24, 23, 28, 2, -21}, // 0x61 'a' + {4579, 27, 31, 28, 0, -29}, // 0x62 'b' + {4684, 24, 23, 28, 3, -21}, // 0x63 'c' + {4753, 26, 31, 28, 2, -29}, // 0x64 'd' + {4854, 24, 23, 28, 2, -21}, // 0x65 'e' + {4923, 22, 30, 28, 4, -29}, // 0x66 'f' + {5006, 25, 31, 28, 2, -21}, // 0x67 'g' + {5103, 26, 30, 28, 1, -29}, // 0x68 'h' + {5201, 21, 29, 28, 4, -28}, // 0x69 'i' + {5278, 17, 38, 28, 5, -28}, // 0x6A 'j' + {5359, 25, 30, 28, 2, -29}, // 0x6B 'k' + {5453, 21, 30, 28, 4, -29}, // 0x6C 'l' + {5532, 30, 22, 28, -1, -21}, // 0x6D 'm' + {5615, 25, 22, 28, 1, -21}, // 0x6E 'n' + {5684, 25, 23, 28, 2, -21}, // 0x6F 'o' + {5756, 28, 31, 28, 0, -21}, // 0x70 'p' + {5865, 28, 31, 28, 1, -21}, // 0x71 'q' + {5974, 24, 22, 28, 3, -21}, // 0x72 'r' + {6040, 21, 23, 28, 4, -21}, // 0x73 's' + {6101, 23, 28, 28, 1, -26}, // 0x74 't' + {6182, 25, 22, 28, 1, -20}, // 0x75 'u' + {6251, 28, 21, 28, 0, -20}, // 0x76 'v' + {6325, 28, 21, 28, 0, -20}, // 0x77 'w' + {6399, 26, 21, 28, 1, -20}, // 0x78 'x' + {6468, 26, 30, 28, 1, -20}, // 0x79 'y' + {6566, 19, 21, 28, 5, -20}, // 0x7A 'z' + {6616, 14, 37, 28, 7, -29}, // 0x7B '{' + {6681, 5, 36, 28, 12, -28}, // 0x7C '|' + {6704, 14, 37, 28, 8, -29}, // 0x7D '}' + {6769, 22, 10, 28, 3, -17}}; // 0x7E '~' + +const GFXfont FreeMonoBold24pt7b PROGMEM = { + (uint8_t *)FreeMonoBold24pt7bBitmaps, (GFXglyph *)FreeMonoBold24pt7bGlyphs, + 0x20, 0x7E, 47}; + +// Approx. 7469 bytes diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBold9pt7b.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBold9pt7b.h new file mode 100644 index 0000000..44320f8 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBold9pt7b.h @@ -0,0 +1,191 @@ +#pragma once +#include + +const uint8_t FreeMonoBold9pt7bBitmaps[] PROGMEM = { + 0xFF, 0xFF, 0xD2, 0x1F, 0x80, 0xEC, 0x89, 0x12, 0x24, 0x40, 0x36, 0x36, + 0x36, 0x7F, 0x7F, 0x36, 0xFF, 0xFF, 0x3C, 0x3C, 0x3C, 0x00, 0x18, 0xFF, + 0xFE, 0x3C, 0x1F, 0x1F, 0x83, 0x46, 0x8D, 0xF0, 0xC1, 0x83, 0x00, 0x61, + 0x22, 0x44, 0x86, 0x67, 0x37, 0x11, 0x22, 0x4C, 0x70, 0x3C, 0x7E, 0x60, + 0x60, 0x30, 0x7B, 0xDF, 0xCE, 0xFF, 0x7F, 0xC9, 0x24, 0x37, 0x66, 0xCC, + 0xCC, 0xCC, 0x66, 0x31, 0xCE, 0x66, 0x33, 0x33, 0x33, 0x66, 0xC8, 0x18, + 0x18, 0xFF, 0xFF, 0x3C, 0x3C, 0x66, 0x18, 0x18, 0x18, 0xFF, 0xFF, 0x18, + 0x18, 0x18, 0x18, 0x6B, 0x48, 0xFF, 0xFF, 0xC0, 0xF0, 0x02, 0x0C, 0x18, + 0x60, 0xC3, 0x06, 0x0C, 0x30, 0x61, 0x83, 0x0C, 0x18, 0x20, 0x00, 0x38, + 0xFB, 0xBE, 0x3C, 0x78, 0xF1, 0xE3, 0xC7, 0xDD, 0xF1, 0xC0, 0x38, 0xF3, + 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0xFD, 0xF8, 0x3C, 0xFE, 0xC7, 0x03, + 0x03, 0x06, 0x0C, 0x18, 0x70, 0xE3, 0xFF, 0xFF, 0x7C, 0xFE, 0x03, 0x03, + 0x03, 0x1E, 0x1E, 0x07, 0x03, 0x03, 0xFE, 0x7C, 0x1C, 0x38, 0xB1, 0x64, + 0xD9, 0xBF, 0xFF, 0x3E, 0x7C, 0x7E, 0x3F, 0x18, 0x0F, 0xC7, 0xF3, 0x1C, + 0x06, 0x03, 0xC3, 0xFF, 0x9F, 0x80, 0x0F, 0x3F, 0x30, 0x60, 0x60, 0xDC, + 0xFE, 0xE3, 0xC3, 0x63, 0x7E, 0x3C, 0xFF, 0xFF, 0xC3, 0x03, 0x06, 0x06, + 0x06, 0x0C, 0x0C, 0x0C, 0x18, 0x38, 0xFB, 0x1E, 0x3C, 0x6F, 0x9F, 0x63, + 0xC7, 0x8F, 0xF1, 0xC0, 0x3C, 0x7E, 0xE6, 0xC3, 0xC3, 0xE7, 0x7F, 0x3B, + 0x06, 0x0E, 0xFC, 0xF0, 0xF0, 0x0F, 0x6C, 0x00, 0x1A, 0xD2, 0x00, 0x01, + 0x83, 0x87, 0x0E, 0x0F, 0x80, 0xE0, 0x1C, 0x03, 0xFF, 0xFF, 0xC0, 0x00, + 0x0F, 0xFF, 0xFC, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0xF9, 0xE3, 0xC1, 0x80, + 0x7C, 0xFE, 0xC7, 0x03, 0x0E, 0x1C, 0x00, 0x00, 0x00, 0x30, 0x30, 0x1E, + 0x1F, 0x1C, 0xDC, 0x6C, 0x76, 0x7B, 0x6D, 0xB6, 0xDB, 0x6F, 0xF3, 0xFC, + 0x06, 0x33, 0xF8, 0x78, 0x3C, 0x07, 0xC0, 0x38, 0x05, 0x81, 0xB0, 0x36, + 0x0F, 0xE1, 0xFC, 0x71, 0xDF, 0x7F, 0xEF, 0x80, 0xFF, 0x3F, 0xE6, 0x19, + 0x86, 0x7F, 0x1F, 0xE6, 0x1D, 0x83, 0x60, 0xFF, 0xFF, 0xF0, 0x1F, 0xBF, + 0xD8, 0xF8, 0x3C, 0x06, 0x03, 0x01, 0x80, 0x61, 0xBF, 0xC7, 0xC0, 0xFE, + 0x3F, 0xE6, 0x19, 0x83, 0x60, 0xD8, 0x36, 0x0D, 0x83, 0x61, 0xBF, 0xEF, + 0xE0, 0xFF, 0xFF, 0xD8, 0x6D, 0xB7, 0xC3, 0xE1, 0xB0, 0xC3, 0x61, 0xFF, + 0xFF, 0xE0, 0xFF, 0xFF, 0xD8, 0x6D, 0xB7, 0xC3, 0xE1, 0xB0, 0xC0, 0x60, + 0x7C, 0x3E, 0x00, 0x1F, 0x9F, 0xE6, 0x1B, 0x06, 0xC0, 0x30, 0x0C, 0x7F, + 0x1F, 0xE1, 0x9F, 0xE3, 0xF0, 0xF7, 0xFB, 0xD8, 0xCC, 0x66, 0x33, 0xF9, + 0xFC, 0xC6, 0x63, 0x7B, 0xFD, 0xE0, 0xFF, 0xF3, 0x0C, 0x30, 0xC3, 0x0C, + 0x33, 0xFF, 0xC0, 0x1F, 0xC7, 0xF0, 0x30, 0x0C, 0x03, 0x00, 0xCC, 0x33, + 0x0C, 0xC7, 0x3F, 0x87, 0xC0, 0xF7, 0xBD, 0xE6, 0x61, 0xB0, 0x78, 0x1F, + 0x06, 0xE1, 0x98, 0x63, 0x3C, 0xFF, 0x3C, 0xFC, 0x7E, 0x0C, 0x06, 0x03, + 0x01, 0x80, 0xC6, 0x63, 0x31, 0xFF, 0xFF, 0xE0, 0xE0, 0xFE, 0x3D, 0xC7, + 0x3D, 0xE7, 0xBC, 0xD7, 0x9B, 0xB3, 0x76, 0x60, 0xDE, 0x3F, 0xC7, 0x80, + 0xE1, 0xFE, 0x3D, 0xE3, 0x3C, 0x66, 0xCC, 0xDD, 0x99, 0xB3, 0x1E, 0x63, + 0xDE, 0x3B, 0xC3, 0x00, 0x1F, 0x07, 0xF1, 0xC7, 0x70, 0x7C, 0x07, 0x80, + 0xF0, 0x1F, 0x07, 0x71, 0xC7, 0xF0, 0x7C, 0x00, 0xFE, 0x7F, 0x98, 0x6C, + 0x36, 0x1B, 0xF9, 0xF8, 0xC0, 0x60, 0x7C, 0x3E, 0x00, 0x1F, 0x07, 0xF1, + 0xC7, 0x70, 0x7C, 0x07, 0x80, 0xF0, 0x1F, 0x07, 0x71, 0xC7, 0xF0, 0x7C, + 0x0C, 0x33, 0xFE, 0x7F, 0x80, 0xFC, 0x7F, 0x18, 0xCC, 0x66, 0x73, 0xF1, + 0xF0, 0xCC, 0x63, 0x7D, 0xFE, 0x60, 0x3F, 0xBF, 0xF0, 0x78, 0x0F, 0x03, + 0xF8, 0x3F, 0x83, 0xC3, 0xFF, 0xBF, 0x80, 0xFF, 0xFF, 0xF6, 0x7B, 0x3D, + 0x98, 0xC0, 0x60, 0x30, 0x18, 0x3F, 0x1F, 0x80, 0xF1, 0xFE, 0x3D, 0x83, + 0x30, 0x66, 0x0C, 0xC1, 0x98, 0x33, 0x06, 0x60, 0xC7, 0xF0, 0x7C, 0x00, + 0xFB, 0xFF, 0x7D, 0xC3, 0x18, 0xC3, 0x18, 0x36, 0x06, 0xC0, 0x50, 0x0E, + 0x01, 0xC0, 0x10, 0x00, 0xFB, 0xFE, 0xF6, 0x0D, 0x93, 0x6E, 0xDB, 0xB7, + 0xAD, 0xEE, 0x7B, 0x8E, 0xE3, 0x18, 0xF3, 0xFC, 0xF7, 0x38, 0xFC, 0x1E, + 0x03, 0x01, 0xE0, 0xCC, 0x73, 0xBC, 0xFF, 0x3C, 0xF3, 0xFC, 0xF7, 0x38, + 0xCC, 0x1E, 0x07, 0x80, 0xC0, 0x30, 0x0C, 0x0F, 0xC3, 0xF0, 0xFE, 0xFE, + 0xC6, 0xCC, 0x18, 0x18, 0x30, 0x63, 0xC3, 0xFF, 0xFF, 0xFF, 0xCC, 0xCC, + 0xCC, 0xCC, 0xCC, 0xFF, 0x01, 0x03, 0x06, 0x06, 0x0C, 0x0C, 0x18, 0x18, + 0x30, 0x30, 0x60, 0x60, 0xC0, 0x80, 0xFF, 0x33, 0x33, 0x33, 0x33, 0x33, + 0xFF, 0x10, 0x71, 0xE3, 0x6C, 0x70, 0x40, 0xFF, 0xFF, 0xFC, 0x88, 0x80, + 0x7E, 0x3F, 0x8F, 0xCF, 0xEE, 0x36, 0x1B, 0xFE, 0xFF, 0xE0, 0x38, 0x06, + 0x01, 0xBC, 0x7F, 0x9C, 0x76, 0x0D, 0x83, 0x71, 0xFF, 0xEE, 0xF0, 0x3F, + 0xBF, 0xF8, 0x78, 0x3C, 0x07, 0x05, 0xFE, 0x7E, 0x03, 0x80, 0xE0, 0x18, + 0xF6, 0x7F, 0xB8, 0xEC, 0x1B, 0x06, 0xE3, 0x9F, 0xF3, 0xFC, 0x3E, 0x3F, + 0xB0, 0xFF, 0xFF, 0xFE, 0x01, 0xFE, 0x7E, 0x1F, 0x3F, 0x30, 0x7E, 0x7E, + 0x30, 0x30, 0x30, 0x30, 0xFE, 0xFE, 0x3F, 0xBF, 0xF9, 0xD8, 0x6C, 0x37, + 0x39, 0xFC, 0x76, 0x03, 0x01, 0x8F, 0xC7, 0xC0, 0xE0, 0x70, 0x18, 0x0D, + 0xC7, 0xF3, 0x99, 0x8C, 0xC6, 0x63, 0x7B, 0xFD, 0xE0, 0x18, 0x18, 0x00, + 0x78, 0x78, 0x18, 0x18, 0x18, 0x18, 0xFF, 0xFF, 0x18, 0x60, 0x3F, 0xFC, + 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0F, 0xFF, 0x80, 0xE0, 0x70, 0x18, 0x0D, + 0xE6, 0xF3, 0xE1, 0xE0, 0xF8, 0x6E, 0x73, 0xF9, 0xE0, 0x78, 0x78, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xFF, 0xFF, 0xFD, 0x9F, 0xF9, 0x9B, + 0x33, 0x66, 0x6C, 0xCD, 0xBD, 0xFF, 0xBF, 0xEE, 0x7F, 0x98, 0xCC, 0x66, + 0x33, 0x1B, 0xDF, 0xEF, 0x3E, 0x3F, 0xB8, 0xF8, 0x3C, 0x1F, 0x1D, 0xFC, + 0x7C, 0xEF, 0x1F, 0xF9, 0xC3, 0xB0, 0x36, 0x06, 0xE1, 0xDF, 0xF3, 0x78, + 0x60, 0x0C, 0x03, 0xE0, 0x7C, 0x00, 0x1E, 0xEF, 0xFF, 0x87, 0x60, 0x6C, + 0x0D, 0xC3, 0x9F, 0xF0, 0xF6, 0x00, 0xC0, 0x18, 0x0F, 0x81, 0xF0, 0x77, + 0xBF, 0xCF, 0x06, 0x03, 0x01, 0x83, 0xF9, 0xFC, 0x3F, 0xFF, 0xC3, 0xFC, + 0x3F, 0xC3, 0xFF, 0xFC, 0x60, 0x60, 0x60, 0xFE, 0xFE, 0x60, 0x60, 0x60, + 0x61, 0x7F, 0x3E, 0xE7, 0x73, 0x98, 0xCC, 0x66, 0x33, 0x19, 0xFE, 0x7F, + 0xFB, 0xFF, 0x7C, 0xC6, 0x18, 0xC1, 0xB0, 0x36, 0x03, 0x80, 0x70, 0xF1, + 0xFE, 0x3D, 0xBB, 0x37, 0x63, 0xF8, 0x77, 0x0E, 0xE1, 0x8C, 0xF7, 0xFB, + 0xCD, 0x83, 0x83, 0xC3, 0xBB, 0xDF, 0xEF, 0xF3, 0xFC, 0xF6, 0x18, 0xCC, + 0x33, 0x07, 0x81, 0xE0, 0x30, 0x0C, 0x06, 0x0F, 0xC3, 0xF0, 0xFF, 0xFF, + 0x30, 0xC3, 0x0C, 0x7F, 0xFF, 0x37, 0x66, 0x66, 0xCC, 0x66, 0x66, 0x73, + 0xFF, 0xFF, 0xFF, 0xF0, 0xCE, 0x66, 0x66, 0x33, 0x66, 0x66, 0xEC, 0x70, + 0x7C, 0xF3, 0xC0, 0xC0}; + +const GFXglyph FreeMonoBold9pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 11, 0, 1}, // 0x20 ' ' + {0, 3, 11, 11, 4, -10}, // 0x21 '!' + {5, 7, 5, 11, 2, -10}, // 0x22 '"' + {10, 8, 12, 11, 1, -10}, // 0x23 '#' + {22, 7, 14, 11, 2, -11}, // 0x24 '$' + {35, 7, 11, 11, 2, -10}, // 0x25 '%' + {45, 8, 10, 11, 1, -9}, // 0x26 '&' + {55, 3, 5, 11, 4, -10}, // 0x27 ''' + {57, 4, 14, 11, 5, -10}, // 0x28 '(' + {64, 4, 14, 11, 2, -10}, // 0x29 ')' + {71, 8, 7, 11, 2, -10}, // 0x2A '*' + {78, 8, 9, 11, 2, -8}, // 0x2B '+' + {87, 3, 5, 11, 3, -1}, // 0x2C ',' + {89, 9, 2, 11, 1, -5}, // 0x2D '-' + {92, 2, 2, 11, 4, -1}, // 0x2E '.' + {93, 7, 15, 11, 2, -12}, // 0x2F '/' + {107, 7, 12, 11, 2, -11}, // 0x30 '0' + {118, 7, 11, 11, 2, -10}, // 0x31 '1' + {128, 8, 12, 11, 1, -11}, // 0x32 '2' + {140, 8, 12, 11, 2, -11}, // 0x33 '3' + {152, 7, 10, 11, 2, -9}, // 0x34 '4' + {161, 9, 11, 11, 1, -10}, // 0x35 '5' + {174, 8, 12, 11, 2, -11}, // 0x36 '6' + {186, 8, 11, 11, 1, -10}, // 0x37 '7' + {197, 7, 12, 11, 2, -11}, // 0x38 '8' + {208, 8, 12, 11, 2, -11}, // 0x39 '9' + {220, 2, 8, 11, 4, -7}, // 0x3A ':' + {222, 3, 11, 11, 3, -7}, // 0x3B ';' + {227, 9, 8, 11, 1, -8}, // 0x3C '<' + {236, 9, 6, 11, 1, -7}, // 0x3D '=' + {243, 9, 8, 11, 1, -8}, // 0x3E '>' + {252, 8, 11, 11, 2, -10}, // 0x3F '?' + {263, 9, 15, 11, 1, -11}, // 0x40 '@' + {280, 11, 11, 11, 0, -10}, // 0x41 'A' + {296, 10, 11, 11, 1, -10}, // 0x42 'B' + {310, 9, 11, 11, 1, -10}, // 0x43 'C' + {323, 10, 11, 11, 0, -10}, // 0x44 'D' + {337, 9, 11, 11, 1, -10}, // 0x45 'E' + {350, 9, 11, 11, 1, -10}, // 0x46 'F' + {363, 10, 11, 11, 1, -10}, // 0x47 'G' + {377, 9, 11, 11, 1, -10}, // 0x48 'H' + {390, 6, 11, 11, 3, -10}, // 0x49 'I' + {399, 10, 11, 11, 1, -10}, // 0x4A 'J' + {413, 10, 11, 11, 1, -10}, // 0x4B 'K' + {427, 9, 11, 11, 1, -10}, // 0x4C 'L' + {440, 11, 11, 11, 0, -10}, // 0x4D 'M' + {456, 11, 11, 11, 0, -10}, // 0x4E 'N' + {472, 11, 11, 11, 0, -10}, // 0x4F 'O' + {488, 9, 11, 11, 1, -10}, // 0x50 'P' + {501, 11, 14, 11, 0, -10}, // 0x51 'Q' + {521, 9, 11, 11, 1, -10}, // 0x52 'R' + {534, 9, 11, 11, 1, -10}, // 0x53 'S' + {547, 9, 11, 11, 1, -10}, // 0x54 'T' + {560, 11, 11, 11, 0, -10}, // 0x55 'U' + {576, 11, 11, 11, 0, -10}, // 0x56 'V' + {592, 10, 11, 11, 0, -10}, // 0x57 'W' + {606, 10, 11, 11, 0, -10}, // 0x58 'X' + {620, 10, 11, 11, 0, -10}, // 0x59 'Y' + {634, 8, 11, 11, 2, -10}, // 0x5A 'Z' + {645, 4, 14, 11, 5, -10}, // 0x5B '[' + {652, 7, 15, 11, 2, -12}, // 0x5C '\' + {666, 4, 14, 11, 2, -10}, // 0x5D ']' + {673, 7, 6, 11, 2, -11}, // 0x5E '^' + {679, 11, 2, 11, 0, 3}, // 0x5F '_' + {682, 3, 3, 11, 3, -11}, // 0x60 '`' + {684, 9, 8, 11, 1, -7}, // 0x61 'a' + {693, 10, 11, 11, 0, -10}, // 0x62 'b' + {707, 9, 8, 11, 1, -7}, // 0x63 'c' + {716, 10, 11, 11, 1, -10}, // 0x64 'd' + {730, 9, 8, 11, 1, -7}, // 0x65 'e' + {739, 8, 11, 11, 2, -10}, // 0x66 'f' + {750, 9, 12, 11, 1, -7}, // 0x67 'g' + {764, 9, 11, 11, 1, -10}, // 0x68 'h' + {777, 8, 11, 11, 2, -10}, // 0x69 'i' + {788, 6, 15, 11, 2, -10}, // 0x6A 'j' + {800, 9, 11, 11, 1, -10}, // 0x6B 'k' + {813, 8, 11, 11, 2, -10}, // 0x6C 'l' + {824, 11, 8, 11, 0, -7}, // 0x6D 'm' + {835, 9, 8, 11, 1, -7}, // 0x6E 'n' + {844, 9, 8, 11, 1, -7}, // 0x6F 'o' + {853, 11, 12, 11, 0, -7}, // 0x70 'p' + {870, 11, 12, 11, 0, -7}, // 0x71 'q' + {887, 9, 8, 11, 1, -7}, // 0x72 'r' + {896, 8, 8, 11, 2, -7}, // 0x73 's' + {904, 8, 11, 11, 1, -10}, // 0x74 't' + {915, 9, 8, 11, 1, -7}, // 0x75 'u' + {924, 11, 8, 11, 0, -7}, // 0x76 'v' + {935, 11, 8, 11, 0, -7}, // 0x77 'w' + {946, 9, 8, 11, 1, -7}, // 0x78 'x' + {955, 10, 12, 11, 0, -7}, // 0x79 'y' + {970, 7, 8, 11, 2, -7}, // 0x7A 'z' + {977, 4, 14, 11, 3, -10}, // 0x7B '{' + {984, 2, 14, 11, 5, -10}, // 0x7C '|' + {988, 4, 14, 11, 4, -10}, // 0x7D '}' + {995, 9, 4, 11, 1, -6}}; // 0x7E '~' + +const GFXfont FreeMonoBold9pt7b PROGMEM = {(uint8_t *)FreeMonoBold9pt7bBitmaps, + (GFXglyph *)FreeMonoBold9pt7bGlyphs, + 0x20, 0x7E, 18}; + +// Approx. 1672 bytes diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBoldOblique12pt7b.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBoldOblique12pt7b.h new file mode 100644 index 0000000..095fdd3 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBoldOblique12pt7b.h @@ -0,0 +1,271 @@ +#pragma once +#include + +const uint8_t FreeMonoBoldOblique12pt7bBitmaps[] PROGMEM = { + 0x1C, 0xF3, 0xCE, 0x38, 0xE7, 0x1C, 0x61, 0x86, 0x00, 0x63, 0x8C, 0x00, + 0xE7, 0xE7, 0xE6, 0xC6, 0xC6, 0xC4, 0x84, 0x03, 0x30, 0x19, 0x81, 0xDC, + 0x0C, 0xE0, 0x66, 0x1F, 0xFC, 0xFF, 0xE1, 0x98, 0x0C, 0xC0, 0xEE, 0x06, + 0x70, 0xFF, 0xCF, 0xFE, 0x1D, 0xC0, 0xCC, 0x06, 0x60, 0x77, 0x03, 0x30, + 0x00, 0x01, 0x00, 0x70, 0x0C, 0x07, 0xF1, 0xFE, 0x71, 0xCC, 0x11, 0x80, + 0x3F, 0x03, 0xF0, 0x0F, 0x20, 0x6E, 0x0D, 0xC3, 0x3F, 0xE7, 0xF8, 0x1C, + 0x03, 0x00, 0x60, 0x0C, 0x00, 0x0E, 0x03, 0xE0, 0xC4, 0x10, 0x82, 0x30, + 0x7C, 0x07, 0x78, 0x7C, 0x7F, 0x19, 0xF0, 0x62, 0x08, 0x41, 0x18, 0x3E, + 0x03, 0x80, 0x07, 0xC1, 0xF8, 0x62, 0x0C, 0x01, 0x80, 0x38, 0x0F, 0x03, + 0xF7, 0x6F, 0xD8, 0xF3, 0x1E, 0x7F, 0xE7, 0xF8, 0xFF, 0x6D, 0x20, 0x06, + 0x1C, 0x70, 0xC3, 0x06, 0x18, 0x30, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, + 0x70, 0x60, 0xC1, 0x00, 0x0C, 0x18, 0x38, 0x30, 0x60, 0xC1, 0x83, 0x06, + 0x0C, 0x30, 0x61, 0xC3, 0x0E, 0x38, 0x61, 0xC2, 0x00, 0x06, 0x00, 0xC0, + 0x18, 0x3F, 0x7F, 0xFE, 0xFF, 0x07, 0x81, 0xF8, 0x77, 0x0C, 0x60, 0x03, + 0x00, 0x70, 0x07, 0x00, 0x60, 0x06, 0x0F, 0xFF, 0xFF, 0xF0, 0xE0, 0x0C, + 0x00, 0xC0, 0x0C, 0x01, 0xC0, 0x18, 0x00, 0x1C, 0xE3, 0x1C, 0x63, 0x08, + 0x00, 0x7F, 0xFF, 0xFF, 0xC0, 0x7F, 0x00, 0x00, 0x08, 0x00, 0x70, 0x01, + 0x80, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x0C, 0x00, 0x70, 0x03, 0x80, 0x0C, + 0x00, 0x70, 0x03, 0x80, 0x0C, 0x00, 0x70, 0x03, 0x80, 0x0C, 0x00, 0x70, + 0x03, 0x80, 0x0C, 0x00, 0x20, 0x00, 0x07, 0x83, 0xF8, 0xE3, 0x98, 0x37, + 0x06, 0xC0, 0xD8, 0x1B, 0x03, 0xE0, 0xF8, 0x1B, 0x03, 0x60, 0xEE, 0x38, + 0xFE, 0x0F, 0x00, 0x03, 0xC1, 0xF0, 0x7E, 0x0C, 0xC0, 0x38, 0x07, 0x00, + 0xC0, 0x18, 0x07, 0x00, 0xE0, 0x18, 0x03, 0x00, 0x61, 0xFF, 0xFF, 0xF0, + 0x03, 0xE0, 0x3F, 0x83, 0x8E, 0x38, 0x31, 0x81, 0x80, 0x18, 0x01, 0xC0, + 0x1C, 0x01, 0xC0, 0x38, 0x03, 0x80, 0x38, 0x47, 0x87, 0x3F, 0xF3, 0xFF, + 0x80, 0x07, 0xC1, 0xFF, 0x18, 0x70, 0x03, 0x00, 0x30, 0x06, 0x07, 0xC0, + 0x7C, 0x00, 0xE0, 0x06, 0x00, 0x60, 0x06, 0xC1, 0xCF, 0xF8, 0x7E, 0x00, + 0x01, 0xE0, 0x3C, 0x0F, 0x03, 0x60, 0xCC, 0x3B, 0x8E, 0x63, 0x8C, 0x61, + 0x9F, 0xFB, 0xFF, 0x01, 0x81, 0xF8, 0x3F, 0x00, 0x0F, 0xF1, 0xFE, 0x18, + 0x01, 0x80, 0x18, 0x03, 0xF8, 0x3F, 0xC3, 0x8E, 0x00, 0x60, 0x06, 0x00, + 0x60, 0x0C, 0xC1, 0xCF, 0xF8, 0x7E, 0x00, 0x03, 0xE1, 0xFC, 0x70, 0x1C, + 0x03, 0x00, 0xC0, 0x1B, 0xC7, 0xFC, 0xF3, 0x98, 0x33, 0x06, 0x60, 0xCE, + 0x30, 0xFC, 0x0F, 0x00, 0xFF, 0xFF, 0xFB, 0x07, 0x60, 0xC0, 0x38, 0x06, + 0x01, 0xC0, 0x30, 0x0E, 0x01, 0x80, 0x70, 0x1C, 0x03, 0x80, 0x60, 0x08, + 0x00, 0x07, 0x83, 0xF8, 0xE3, 0xB0, 0x36, 0x06, 0xC0, 0xDC, 0x31, 0xFC, + 0x3F, 0x8C, 0x3B, 0x03, 0x60, 0x6C, 0x39, 0xFE, 0x1F, 0x00, 0x07, 0x81, + 0xF8, 0x63, 0x98, 0x33, 0x06, 0x60, 0xCE, 0x79, 0xFF, 0x1E, 0xC0, 0x18, + 0x06, 0x01, 0xC0, 0x71, 0xFC, 0x3E, 0x00, 0x19, 0xCC, 0x00, 0x00, 0x00, + 0x67, 0x30, 0x06, 0x1C, 0x30, 0x00, 0x00, 0x00, 0x00, 0x38, 0x71, 0xC3, + 0x0E, 0x18, 0x20, 0x00, 0x00, 0x18, 0x03, 0xC0, 0x7C, 0x1F, 0x03, 0xE0, + 0x3E, 0x00, 0x7C, 0x01, 0xF0, 0x03, 0xE0, 0x07, 0x80, 0x08, 0x7F, 0xFB, + 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFB, 0xFF, 0xC0, 0x30, 0x01, + 0xE0, 0x07, 0xC0, 0x0F, 0x00, 0x3E, 0x00, 0x7C, 0x1F, 0x03, 0xE0, 0x7C, + 0x07, 0x80, 0x20, 0x00, 0x3E, 0x7F, 0xB0, 0xF8, 0x30, 0x18, 0x1C, 0x1C, + 0x3C, 0x38, 0x18, 0x00, 0x06, 0x07, 0x03, 0x00, 0x03, 0xC0, 0x7E, 0x0C, + 0x71, 0x83, 0x30, 0x33, 0x0F, 0x33, 0xE6, 0x76, 0x6C, 0x66, 0xC6, 0x6C, + 0x6C, 0xFC, 0xC7, 0xEC, 0x00, 0xC0, 0x0C, 0x00, 0xE3, 0x07, 0xF0, 0x3C, + 0x00, 0x07, 0xF0, 0x1F, 0xE0, 0x07, 0xC0, 0x1F, 0x80, 0x3B, 0x00, 0xE7, + 0x01, 0x8E, 0x07, 0x1C, 0x1F, 0xF8, 0x3F, 0xF0, 0xE0, 0x71, 0x80, 0xEF, + 0xC7, 0xFF, 0x8F, 0xC0, 0x3F, 0xF1, 0xFF, 0xC3, 0x06, 0x38, 0x31, 0xC1, + 0x8C, 0x18, 0x7F, 0xC3, 0xFE, 0x38, 0x39, 0xC0, 0xCC, 0x06, 0x60, 0x6F, + 0xFF, 0x7F, 0xE0, 0x03, 0xEC, 0x3F, 0xF1, 0xC3, 0x8C, 0x06, 0x60, 0x19, + 0x80, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x03, 0x00, 0x0C, 0x03, 0x3C, 0x1C, + 0x7F, 0xE0, 0x7E, 0x00, 0x3F, 0xE1, 0xFF, 0x87, 0x0C, 0x30, 0x31, 0x81, + 0x8C, 0x0C, 0xE0, 0x67, 0x03, 0x30, 0x31, 0x81, 0x8C, 0x0C, 0xE1, 0xCF, + 0xFC, 0x7F, 0x80, 0x1F, 0xFE, 0x3F, 0xFC, 0x38, 0x38, 0x70, 0x70, 0xCC, + 0xC1, 0x98, 0x03, 0xF0, 0x0F, 0xE0, 0x1D, 0x80, 0x31, 0x18, 0x60, 0x70, + 0xC0, 0xE7, 0xFF, 0x9F, 0xFF, 0x00, 0x1F, 0xFF, 0x1F, 0xFE, 0x0E, 0x06, + 0x0C, 0x0E, 0x0C, 0xC4, 0x0C, 0xC0, 0x1F, 0xC0, 0x1F, 0xC0, 0x19, 0xC0, + 0x19, 0x80, 0x18, 0x00, 0x38, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x07, 0xEC, + 0x7F, 0xF3, 0x83, 0x9C, 0x06, 0x60, 0x19, 0x80, 0x0C, 0x00, 0x30, 0xFE, + 0xC3, 0xFB, 0x01, 0xCC, 0x07, 0x3C, 0x38, 0x7F, 0xE0, 0x7E, 0x00, 0x0F, + 0xBF, 0x1F, 0xBE, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x1C, 0x0C, 0x1C, 0x1F, + 0xF8, 0x1F, 0xF8, 0x18, 0x18, 0x18, 0x38, 0x18, 0x38, 0x38, 0x30, 0x7C, + 0xFC, 0xFC, 0xF8, 0x3F, 0xF3, 0xFF, 0x03, 0x00, 0x70, 0x07, 0x00, 0x60, + 0x06, 0x00, 0x60, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xC0, 0xFF, 0xCF, 0xFC, + 0x03, 0xFF, 0x03, 0xFF, 0x00, 0x38, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, + 0x00, 0x70, 0x20, 0x70, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xE1, 0xC0, + 0xFF, 0x80, 0x3F, 0x00, 0x1F, 0x9F, 0x1F, 0x9E, 0x0E, 0x38, 0x0C, 0x70, + 0x0C, 0xE0, 0x0F, 0xC0, 0x1F, 0xC0, 0x1F, 0xE0, 0x1C, 0xE0, 0x18, 0x60, + 0x18, 0x70, 0x38, 0x70, 0xFE, 0x3C, 0xFC, 0x3C, 0x3F, 0xC1, 0xFE, 0x01, + 0x80, 0x1C, 0x00, 0xE0, 0x06, 0x00, 0x30, 0x01, 0x80, 0x1C, 0x18, 0xE0, + 0xC6, 0x06, 0x30, 0x7F, 0xFF, 0xFF, 0xF8, 0x1E, 0x07, 0x87, 0x81, 0xE0, + 0xF0, 0xF0, 0x7C, 0x7C, 0x1F, 0x1F, 0x06, 0xCF, 0x81, 0xBF, 0x60, 0xEF, + 0x98, 0x3B, 0xEE, 0x0C, 0x73, 0x83, 0x1C, 0xC0, 0xC0, 0x30, 0xFC, 0x7E, + 0x3F, 0x1F, 0x80, 0x3C, 0x3F, 0x3E, 0x3F, 0x1E, 0x0C, 0x1F, 0x1C, 0x1F, + 0x1C, 0x1B, 0x98, 0x3B, 0x98, 0x3B, 0x98, 0x31, 0xF8, 0x31, 0xF8, 0x30, + 0xF0, 0x70, 0xF0, 0xFC, 0x70, 0xF8, 0x70, 0x03, 0xE0, 0x3F, 0xE1, 0xC3, + 0x8C, 0x07, 0x60, 0x0D, 0x80, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x1B, 0x00, + 0x6E, 0x03, 0x1C, 0x38, 0x7F, 0xC0, 0x7C, 0x00, 0x3F, 0xE1, 0xFF, 0x83, + 0x0E, 0x38, 0x31, 0xC1, 0x8C, 0x0C, 0x60, 0xC3, 0xFC, 0x3F, 0xC1, 0xC0, + 0x0C, 0x00, 0x60, 0x0F, 0xF0, 0x7F, 0x80, 0x03, 0xE0, 0x3F, 0xE1, 0xC3, + 0x8C, 0x07, 0x60, 0x0D, 0x80, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x1B, 0x00, + 0x6E, 0x03, 0x1C, 0x38, 0x7F, 0xC0, 0xFC, 0x03, 0x02, 0x1F, 0xFC, 0xFF, + 0xE0, 0x1F, 0xF0, 0x3F, 0xF0, 0x38, 0x70, 0x60, 0x60, 0xC0, 0xC1, 0x87, + 0x07, 0xFC, 0x0F, 0xF0, 0x18, 0xF0, 0x30, 0xE0, 0x60, 0xC1, 0xC1, 0xCF, + 0xE1, 0xFF, 0xC3, 0xC0, 0x0F, 0xB1, 0xFF, 0x30, 0xE6, 0x06, 0x60, 0x67, + 0x80, 0x7F, 0x01, 0xFC, 0x01, 0xC4, 0x0C, 0xC0, 0xCE, 0x18, 0xFF, 0x8B, + 0xE0, 0x7F, 0xFB, 0xFF, 0xD9, 0xCF, 0xCE, 0x7C, 0x63, 0x63, 0x18, 0x18, + 0x01, 0xC0, 0x0E, 0x00, 0x60, 0x03, 0x00, 0x18, 0x0F, 0xF8, 0x7F, 0xC0, + 0x7E, 0xFF, 0xF3, 0xF3, 0x03, 0x1C, 0x0C, 0x60, 0x31, 0x81, 0xC6, 0x06, + 0x38, 0x18, 0xE0, 0x63, 0x03, 0x8C, 0x0C, 0x30, 0x70, 0x7F, 0x80, 0xF8, + 0x00, 0xFC, 0x7F, 0xF8, 0xFD, 0xC0, 0x61, 0x81, 0xC3, 0x87, 0x07, 0x0C, + 0x0E, 0x38, 0x0C, 0x60, 0x19, 0xC0, 0x3F, 0x00, 0x7C, 0x00, 0xF8, 0x00, + 0xE0, 0x01, 0x80, 0x00, 0x7E, 0x7E, 0xFC, 0xFD, 0xC0, 0x73, 0x9C, 0xE7, + 0x79, 0x8E, 0xF7, 0x1B, 0xEE, 0x36, 0xD8, 0x7D, 0xF0, 0xF3, 0xE1, 0xE7, + 0x83, 0x8F, 0x07, 0x1E, 0x1C, 0x38, 0x00, 0x1F, 0x1F, 0x1F, 0x1F, 0x0E, + 0x1C, 0x07, 0x38, 0x07, 0x70, 0x03, 0xE0, 0x03, 0xC0, 0x03, 0xC0, 0x07, + 0xE0, 0x0E, 0xE0, 0x1C, 0x70, 0x38, 0x70, 0xFC, 0xFC, 0xFC, 0xFC, 0xF8, + 0xFF, 0xC7, 0xCC, 0x38, 0x73, 0x83, 0x9C, 0x0F, 0xC0, 0x7C, 0x01, 0xC0, + 0x0C, 0x00, 0x60, 0x03, 0x00, 0x38, 0x0F, 0xF8, 0x7F, 0x80, 0x0F, 0xF8, + 0x7F, 0xE1, 0xC7, 0x86, 0x1C, 0x18, 0xE0, 0x07, 0x00, 0x38, 0x01, 0xC0, + 0x0E, 0x00, 0x70, 0xC3, 0x83, 0x1C, 0x1C, 0x7F, 0xF3, 0xFF, 0x80, 0x0F, + 0x87, 0xC3, 0x03, 0x81, 0xC0, 0xC0, 0x60, 0x30, 0x38, 0x1C, 0x0C, 0x06, + 0x03, 0x03, 0x81, 0xC0, 0xC0, 0x60, 0x3E, 0x3F, 0x00, 0x41, 0xC3, 0x83, + 0x07, 0x0E, 0x1C, 0x18, 0x38, 0x70, 0xE0, 0xC1, 0xC3, 0x83, 0x06, 0x0E, + 0x1C, 0x18, 0x20, 0x1F, 0x0F, 0x80, 0xC0, 0xE0, 0x70, 0x30, 0x18, 0x0C, + 0x0E, 0x07, 0x03, 0x01, 0x80, 0xC0, 0xE0, 0x70, 0x30, 0x18, 0x7C, 0x3E, + 0x00, 0x02, 0x01, 0x80, 0xF0, 0x7E, 0x3B, 0x9C, 0x7E, 0x1F, 0x03, 0xFF, + 0xFF, 0xFF, 0xFC, 0xCE, 0x73, 0x1F, 0xC3, 0xFE, 0x00, 0x60, 0x06, 0x0F, + 0xE3, 0xFE, 0x70, 0xCC, 0x0C, 0xC3, 0xCF, 0xFF, 0x7F, 0xF0, 0x1E, 0x00, + 0x3C, 0x00, 0x38, 0x00, 0x70, 0x00, 0xDF, 0x81, 0xFF, 0x83, 0xC3, 0x8F, + 0x03, 0x1C, 0x06, 0x38, 0x0C, 0x70, 0x18, 0xE0, 0x63, 0xE1, 0x9F, 0xFE, + 0x3D, 0xF8, 0x00, 0x0F, 0xF3, 0xFF, 0x30, 0x76, 0x07, 0xE0, 0x6C, 0x00, + 0xC0, 0x0C, 0x00, 0xE0, 0x67, 0xFE, 0x3F, 0x80, 0x00, 0x3C, 0x00, 0xF0, + 0x01, 0xC0, 0x06, 0x07, 0xD8, 0x7F, 0xE3, 0x0F, 0x98, 0x1E, 0x60, 0x73, + 0x01, 0xCC, 0x07, 0x30, 0x3C, 0xE1, 0xF1, 0xFF, 0xE3, 0xF7, 0x80, 0x0F, + 0xC1, 0xFE, 0x78, 0x76, 0x03, 0xFF, 0xFF, 0xFF, 0xC0, 0x0C, 0x00, 0xE0, + 0xE7, 0xFE, 0x1F, 0x80, 0x00, 0xFC, 0x07, 0xF8, 0x0C, 0x00, 0x38, 0x01, + 0xFF, 0x07, 0xFE, 0x01, 0x80, 0x07, 0x00, 0x0E, 0x00, 0x18, 0x00, 0x30, + 0x00, 0x60, 0x01, 0xC0, 0x1F, 0xF8, 0x3F, 0xF0, 0x00, 0x0F, 0xBC, 0x7F, + 0xF3, 0x0F, 0x18, 0x1C, 0xC0, 0x73, 0x01, 0x8C, 0x0E, 0x30, 0x38, 0xE3, + 0xE1, 0xFF, 0x83, 0xEC, 0x00, 0x30, 0x01, 0xC0, 0x06, 0x07, 0xF0, 0x1F, + 0x80, 0x1E, 0x01, 0xF0, 0x03, 0x00, 0x18, 0x00, 0xDE, 0x0F, 0xF8, 0x78, + 0xC3, 0x86, 0x18, 0x30, 0xC1, 0x8E, 0x1C, 0x70, 0xE3, 0x06, 0x7E, 0xFF, + 0xE7, 0xE0, 0x03, 0x80, 0x70, 0x00, 0x0F, 0xC1, 0xF0, 0x06, 0x00, 0xC0, + 0x38, 0x07, 0x00, 0xC0, 0x18, 0x03, 0x0F, 0xFF, 0xFF, 0xC0, 0x00, 0x70, + 0x07, 0x00, 0x00, 0xFF, 0x1F, 0xF0, 0x07, 0x00, 0x70, 0x06, 0x00, 0x60, + 0x06, 0x00, 0xE0, 0x0E, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x1C, 0x03, 0x87, + 0xF0, 0xFE, 0x00, 0x1E, 0x00, 0x78, 0x00, 0xE0, 0x03, 0x80, 0x0C, 0xFC, + 0x33, 0xE0, 0xDE, 0x07, 0xE0, 0x1F, 0x00, 0x7C, 0x01, 0xF8, 0x06, 0xF0, + 0x39, 0xC3, 0xE7, 0xEF, 0x1F, 0x80, 0x0F, 0x81, 0xF0, 0x06, 0x01, 0xC0, + 0x38, 0x06, 0x00, 0xC0, 0x18, 0x07, 0x00, 0xE0, 0x18, 0x03, 0x00, 0x61, + 0xFF, 0xFF, 0xF8, 0x3F, 0xBC, 0x7F, 0xFC, 0xF3, 0x98, 0xC6, 0x33, 0x9C, + 0xE7, 0x39, 0xCC, 0x63, 0x18, 0xC6, 0x31, 0x8D, 0xF7, 0xBF, 0xEF, 0x78, + 0x3D, 0xE1, 0xFF, 0x8F, 0x8C, 0x38, 0x61, 0x83, 0x0C, 0x18, 0xE1, 0xC7, + 0x0E, 0x30, 0x67, 0xEF, 0xFE, 0x7E, 0x07, 0xC1, 0xFE, 0x38, 0x76, 0x03, + 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x06, 0xE1, 0xC7, 0xF8, 0x3E, 0x00, 0x1E, + 0xFC, 0x1F, 0xFE, 0x0F, 0x87, 0x0F, 0x03, 0x0E, 0x03, 0x0E, 0x03, 0x0E, + 0x07, 0x0E, 0x06, 0x1F, 0x0C, 0x1F, 0xF8, 0x19, 0xF0, 0x18, 0x00, 0x18, + 0x00, 0x38, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0x0F, 0xDE, 0x3F, 0xFC, 0xC3, + 0xE3, 0x03, 0x84, 0x07, 0x18, 0x0E, 0x30, 0x1C, 0x60, 0x78, 0xE1, 0xE0, + 0xFF, 0xC0, 0xF9, 0x80, 0x03, 0x00, 0x0E, 0x00, 0x1C, 0x01, 0xFC, 0x03, + 0xF8, 0x1E, 0x78, 0x7F, 0xF0, 0x7C, 0xC3, 0xC0, 0x0E, 0x00, 0x30, 0x00, + 0xC0, 0x03, 0x00, 0x1C, 0x03, 0xFF, 0x0F, 0xFC, 0x00, 0x07, 0xF1, 0xFF, + 0x30, 0x73, 0x86, 0x3F, 0x81, 0xFE, 0x03, 0xE6, 0x06, 0xE0, 0xEF, 0xFC, + 0xFF, 0x00, 0x0C, 0x07, 0x01, 0x83, 0xFF, 0xFF, 0xCE, 0x03, 0x00, 0xC0, + 0x30, 0x1C, 0x07, 0x01, 0x83, 0x7F, 0xCF, 0xC0, 0xF0, 0xFF, 0x1F, 0x60, + 0x76, 0x07, 0x60, 0x76, 0x06, 0x60, 0x66, 0x0E, 0x61, 0xE7, 0xFF, 0x3E, + 0xF0, 0x7E, 0x7E, 0xFC, 0xFC, 0xE0, 0xC0, 0xC3, 0x81, 0x86, 0x03, 0x98, + 0x07, 0x70, 0x06, 0xC0, 0x0F, 0x80, 0x1E, 0x00, 0x38, 0x00, 0xF8, 0x7F, + 0xE3, 0xE6, 0x63, 0x1B, 0xDC, 0x6F, 0x61, 0xFF, 0x87, 0xFC, 0x1E, 0xF0, + 0x73, 0x81, 0xCE, 0x06, 0x38, 0x00, 0x3E, 0x7C, 0xF9, 0xF1, 0xE7, 0x03, + 0xF8, 0x07, 0xC0, 0x1F, 0x01, 0xFC, 0x0F, 0x38, 0x78, 0xFB, 0xF7, 0xEF, + 0x9F, 0x80, 0x1F, 0x1F, 0x3E, 0x1F, 0x1C, 0x1C, 0x0C, 0x18, 0x0E, 0x38, + 0x0E, 0x70, 0x06, 0x60, 0x07, 0xE0, 0x07, 0xC0, 0x07, 0xC0, 0x03, 0x80, + 0x07, 0x00, 0x07, 0x00, 0x0E, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x1F, 0xF1, + 0xFF, 0x38, 0xE3, 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC6, 0x38, 0x67, + 0xFE, 0x7F, 0xE0, 0x01, 0xC0, 0xF0, 0x70, 0x18, 0x06, 0x03, 0x80, 0xE0, + 0x30, 0x1C, 0x3E, 0x0F, 0x00, 0x60, 0x18, 0x06, 0x03, 0x80, 0xC0, 0x30, + 0x0F, 0x01, 0xC0, 0x0C, 0x71, 0xC7, 0x18, 0x63, 0x8E, 0x30, 0xC3, 0x1C, + 0x71, 0x86, 0x38, 0xE3, 0x04, 0x00, 0x0E, 0x07, 0x80, 0xC0, 0x60, 0x70, + 0x30, 0x18, 0x0C, 0x06, 0x01, 0xC1, 0xE1, 0xC0, 0xC0, 0xE0, 0x70, 0x30, + 0x38, 0x78, 0x38, 0x00, 0x3C, 0x27, 0xE6, 0xEF, 0xCC, 0x38}; + +const GFXglyph FreeMonoBoldOblique12pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 14, 0, 1}, // 0x20 ' ' + {0, 6, 15, 14, 6, -14}, // 0x21 '!' + {12, 8, 7, 14, 6, -13}, // 0x22 '"' + {19, 13, 18, 14, 2, -15}, // 0x23 '#' + {49, 11, 20, 14, 3, -16}, // 0x24 '$' + {77, 11, 15, 14, 3, -14}, // 0x25 '%' + {98, 11, 13, 14, 2, -12}, // 0x26 '&' + {116, 3, 7, 14, 8, -13}, // 0x27 ''' + {119, 7, 19, 14, 7, -14}, // 0x28 '(' + {136, 7, 19, 14, 2, -14}, // 0x29 ')' + {153, 11, 10, 14, 4, -14}, // 0x2A '*' + {167, 12, 13, 14, 3, -12}, // 0x2B '+' + {187, 6, 7, 14, 3, -2}, // 0x2C ',' + {193, 13, 2, 14, 2, -7}, // 0x2D '-' + {197, 3, 3, 14, 6, -2}, // 0x2E '.' + {199, 14, 20, 14, 2, -16}, // 0x2F '/' + {234, 11, 15, 14, 3, -14}, // 0x30 '0' + {255, 11, 15, 14, 2, -14}, // 0x31 '1' + {276, 13, 15, 14, 1, -14}, // 0x32 '2' + {301, 12, 15, 14, 2, -14}, // 0x33 '3' + {324, 11, 14, 14, 3, -13}, // 0x34 '4' + {344, 12, 15, 14, 2, -14}, // 0x35 '5' + {367, 11, 15, 14, 4, -14}, // 0x36 '6' + {388, 11, 15, 14, 4, -14}, // 0x37 '7' + {409, 11, 15, 14, 3, -14}, // 0x38 '8' + {430, 11, 15, 14, 3, -14}, // 0x39 '9' + {451, 5, 11, 14, 5, -10}, // 0x3A ':' + {458, 7, 15, 14, 3, -10}, // 0x3B ';' + {472, 13, 11, 14, 2, -11}, // 0x3C '<' + {490, 13, 7, 14, 2, -9}, // 0x3D '=' + {502, 13, 11, 14, 2, -11}, // 0x3E '>' + {520, 9, 14, 14, 5, -13}, // 0x3F '?' + {536, 12, 19, 14, 2, -14}, // 0x40 '@' + {565, 15, 14, 14, 0, -13}, // 0x41 'A' + {592, 13, 14, 14, 1, -13}, // 0x42 'B' + {615, 14, 14, 14, 2, -13}, // 0x43 'C' + {640, 13, 14, 14, 1, -13}, // 0x44 'D' + {663, 15, 14, 14, 0, -13}, // 0x45 'E' + {690, 16, 14, 14, 0, -13}, // 0x46 'F' + {718, 14, 14, 14, 1, -13}, // 0x47 'G' + {743, 16, 14, 14, 0, -13}, // 0x48 'H' + {771, 12, 14, 14, 2, -13}, // 0x49 'I' + {792, 16, 14, 14, 0, -13}, // 0x4A 'J' + {820, 16, 14, 14, 0, -13}, // 0x4B 'K' + {848, 13, 14, 14, 1, -13}, // 0x4C 'L' + {871, 18, 14, 14, 0, -13}, // 0x4D 'M' + {903, 16, 14, 14, 1, -13}, // 0x4E 'N' + {931, 14, 14, 14, 1, -13}, // 0x4F 'O' + {956, 13, 14, 14, 1, -13}, // 0x50 'P' + {979, 14, 17, 14, 1, -13}, // 0x51 'Q' + {1009, 15, 14, 14, 0, -13}, // 0x52 'R' + {1036, 12, 14, 14, 3, -13}, // 0x53 'S' + {1057, 13, 14, 14, 2, -13}, // 0x54 'T' + {1080, 14, 14, 14, 2, -13}, // 0x55 'U' + {1105, 15, 14, 14, 1, -13}, // 0x56 'V' + {1132, 15, 14, 14, 1, -13}, // 0x57 'W' + {1159, 16, 14, 14, 0, -13}, // 0x58 'X' + {1187, 13, 14, 14, 2, -13}, // 0x59 'Y' + {1210, 14, 14, 14, 1, -13}, // 0x5A 'Z' + {1235, 9, 19, 14, 5, -14}, // 0x5B '[' + {1257, 7, 20, 14, 5, -16}, // 0x5C '\' + {1275, 9, 19, 14, 3, -14}, // 0x5D ']' + {1297, 10, 8, 14, 4, -15}, // 0x5E '^' + {1307, 15, 2, 14, -1, 4}, // 0x5F '_' + {1311, 4, 4, 14, 7, -15}, // 0x60 '`' + {1313, 12, 11, 14, 2, -10}, // 0x61 'a' + {1330, 15, 15, 14, -1, -14}, // 0x62 'b' + {1359, 12, 11, 14, 2, -10}, // 0x63 'c' + {1376, 14, 15, 14, 2, -14}, // 0x64 'd' + {1403, 12, 11, 14, 2, -10}, // 0x65 'e' + {1420, 15, 15, 14, 2, -14}, // 0x66 'f' + {1449, 14, 16, 14, 2, -10}, // 0x67 'g' + {1477, 13, 15, 14, 1, -14}, // 0x68 'h' + {1502, 11, 14, 14, 2, -13}, // 0x69 'i' + {1522, 12, 19, 14, 1, -13}, // 0x6A 'j' + {1551, 14, 15, 14, 1, -14}, // 0x6B 'k' + {1578, 11, 15, 14, 2, -14}, // 0x6C 'l' + {1599, 15, 11, 14, 0, -10}, // 0x6D 'm' + {1620, 13, 11, 14, 1, -10}, // 0x6E 'n' + {1638, 12, 11, 14, 2, -10}, // 0x6F 'o' + {1655, 16, 16, 14, -1, -10}, // 0x70 'p' + {1687, 15, 16, 14, 1, -10}, // 0x71 'q' + {1717, 14, 11, 14, 1, -10}, // 0x72 'r' + {1737, 12, 11, 14, 2, -10}, // 0x73 's' + {1754, 10, 14, 14, 2, -13}, // 0x74 't' + {1772, 12, 11, 14, 2, -10}, // 0x75 'u' + {1789, 15, 11, 14, 1, -10}, // 0x76 'v' + {1810, 14, 11, 14, 2, -10}, // 0x77 'w' + {1830, 14, 11, 14, 1, -10}, // 0x78 'x' + {1850, 16, 16, 14, 0, -10}, // 0x79 'y' + {1882, 12, 11, 14, 2, -10}, // 0x7A 'z' + {1899, 10, 19, 14, 4, -14}, // 0x7B '{' + {1923, 6, 19, 14, 5, -14}, // 0x7C '|' + {1938, 9, 19, 14, 3, -14}, // 0x7D '}' + {1960, 12, 4, 14, 3, -7}}; // 0x7E '~' + +const GFXfont FreeMonoBoldOblique12pt7b PROGMEM = { + (uint8_t *)FreeMonoBoldOblique12pt7bBitmaps, + (GFXglyph *)FreeMonoBoldOblique12pt7bGlyphs, 0x20, 0x7E, 24}; + +// Approx. 2638 bytes diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBoldOblique18pt7b.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBoldOblique18pt7b.h new file mode 100644 index 0000000..0400f25 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBoldOblique18pt7b.h @@ -0,0 +1,462 @@ +#pragma once +#include + +const uint8_t FreeMonoBoldOblique18pt7bBitmaps[] PROGMEM = { + 0x0F, 0x07, 0xC7, 0xE3, 0xF1, 0xF0, 0xF8, 0xFC, 0x7C, 0x3E, 0x1F, 0x0F, + 0x07, 0x87, 0xC3, 0xC1, 0xE0, 0x60, 0x00, 0x38, 0x3E, 0x1F, 0x0F, 0x83, + 0x80, 0xF8, 0xFF, 0x0E, 0xF1, 0xEF, 0x1E, 0xE1, 0xCE, 0x1C, 0xC1, 0xCC, + 0x18, 0xC1, 0x88, 0x18, 0x00, 0xE3, 0x80, 0x79, 0xE0, 0x1C, 0x70, 0x07, + 0x1C, 0x03, 0xCF, 0x00, 0xF3, 0xC0, 0x38, 0xE0, 0x7F, 0xFF, 0x3F, 0xFF, + 0xCF, 0xFF, 0xF3, 0xFF, 0xF8, 0x3C, 0xF0, 0x0F, 0x3C, 0x03, 0x8E, 0x0F, + 0xFF, 0xE3, 0xFF, 0xFC, 0xFF, 0xFF, 0x3F, 0xFF, 0x83, 0xCF, 0x00, 0xF3, + 0xC0, 0x38, 0xE0, 0x1E, 0x78, 0x07, 0x9E, 0x01, 0xC7, 0x00, 0x71, 0xC0, + 0x00, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x07, 0x80, 0x03, 0xF0, 0x03, 0xFF, + 0x81, 0xFF, 0xF0, 0xFF, 0xF8, 0x3C, 0x1E, 0x1E, 0x07, 0x87, 0x80, 0x01, + 0xF0, 0x00, 0x7F, 0xC0, 0x0F, 0xFC, 0x01, 0xFF, 0x80, 0x07, 0xF0, 0x00, + 0x3C, 0x70, 0x0F, 0x3C, 0x03, 0xCF, 0x83, 0xE3, 0xFF, 0xF8, 0xFF, 0xFC, + 0x3F, 0xFE, 0x0C, 0xFE, 0x00, 0x1C, 0x00, 0x07, 0x00, 0x03, 0xC0, 0x00, + 0xF0, 0x00, 0x18, 0x00, 0x03, 0xC0, 0x0F, 0xE0, 0x1C, 0x70, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x70, 0x38, 0xE0, 0x1F, 0xC3, 0x0F, 0x1F, 0x01, 0xFC, + 0x0F, 0xE0, 0x7F, 0x00, 0xF8, 0xF0, 0x83, 0xF8, 0x07, 0x1C, 0x0E, 0x0C, + 0x0C, 0x0C, 0x0C, 0x1C, 0x0E, 0x38, 0x07, 0xF0, 0x03, 0xC0, 0x00, 0x7A, + 0x01, 0xFF, 0x03, 0xFF, 0x07, 0xFE, 0x0F, 0x9C, 0x0F, 0x00, 0x0F, 0x00, + 0x0F, 0x00, 0x07, 0x80, 0x1F, 0x80, 0x3F, 0xC0, 0x7F, 0xCF, 0x79, 0xFF, + 0xF1, 0xFE, 0xF1, 0xFC, 0xF0, 0xF8, 0xFF, 0xFE, 0xFF, 0xFE, 0x7F, 0xFE, + 0x1F, 0xBC, 0x7B, 0xFD, 0xEF, 0x73, 0x9C, 0xC6, 0x00, 0x01, 0xC0, 0xF0, + 0x3C, 0x1E, 0x0F, 0x03, 0xC1, 0xE0, 0x70, 0x3C, 0x0F, 0x07, 0x81, 0xE0, + 0x78, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3E, + 0x07, 0x81, 0xE0, 0x7C, 0x1F, 0x03, 0x80, 0x07, 0x03, 0xC0, 0xF8, 0x3E, + 0x07, 0x81, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, + 0xF0, 0x78, 0x1E, 0x07, 0x81, 0xC0, 0xF0, 0x3C, 0x1E, 0x07, 0x83, 0xC1, + 0xE0, 0x78, 0x3C, 0x0E, 0x00, 0x00, 0xC0, 0x03, 0xC0, 0x07, 0x00, 0x0E, + 0x02, 0x3C, 0x0F, 0xFF, 0xFF, 0xFF, 0xBF, 0xFE, 0x1F, 0xF0, 0x1F, 0x80, + 0x7F, 0x81, 0xEF, 0x07, 0x8F, 0x0F, 0x1E, 0x08, 0x10, 0x00, 0x00, 0x70, + 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xE0, 0x00, 0x38, 0x00, + 0x1E, 0x03, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x0F, + 0x00, 0x03, 0xC0, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x07, 0x80, + 0x01, 0xC0, 0x00, 0x70, 0x00, 0x0F, 0x87, 0x87, 0x83, 0x83, 0xC1, 0xC1, + 0xC0, 0xC0, 0xE0, 0x60, 0x00, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0x77, 0xFF, 0xF7, 0x00, 0x00, 0x00, 0x38, 0x00, 0x03, 0xC0, + 0x00, 0x1C, 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, 0xE0, 0x00, 0x0F, + 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x07, 0x80, 0x00, + 0x78, 0x00, 0x03, 0xC0, 0x00, 0x3C, 0x00, 0x03, 0xC0, 0x00, 0x1C, 0x00, + 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0xF0, + 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x07, 0x80, 0x00, 0x78, 0x00, 0x03, + 0xC0, 0x00, 0x3C, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0xFC, 0x01, 0xFF, + 0x01, 0xFF, 0xC1, 0xFF, 0xE1, 0xF1, 0xF9, 0xE0, 0x7C, 0xF0, 0x1E, 0xF0, + 0x0F, 0x78, 0x07, 0xB8, 0x03, 0x9C, 0x03, 0xDE, 0x01, 0xCF, 0x00, 0xE7, + 0x00, 0x73, 0xC0, 0x79, 0xE0, 0x3C, 0xF0, 0x1C, 0x78, 0x1E, 0x3E, 0x1E, + 0x0F, 0xFF, 0x07, 0xFF, 0x01, 0xFF, 0x00, 0x7E, 0x00, 0x00, 0x7C, 0x03, + 0xF8, 0x0F, 0xE0, 0x7F, 0xC0, 0xF7, 0x81, 0x8F, 0x00, 0x1C, 0x00, 0x38, + 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x00, 0x0E, 0x00, 0x3C, 0x00, + 0x78, 0x00, 0xF0, 0x01, 0xC0, 0x03, 0x81, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xEF, 0xFF, 0xC0, 0x00, 0x1F, 0x00, 0x07, 0xFC, 0x00, 0xFF, 0xE0, 0x1F, + 0xFF, 0x03, 0xC1, 0xF0, 0x78, 0x0F, 0x07, 0x80, 0xF0, 0x70, 0x0F, 0x00, + 0x01, 0xE0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x3F, 0x00, + 0x07, 0xE0, 0x01, 0xFC, 0x00, 0x3F, 0x80, 0x07, 0xE0, 0x01, 0xF8, 0x00, + 0x3F, 0x03, 0x87, 0xFF, 0xF8, 0x7F, 0xFF, 0x87, 0xFF, 0xF8, 0xFF, 0xFF, + 0x00, 0x00, 0xFE, 0x00, 0xFF, 0xC0, 0x7F, 0xF8, 0x3F, 0xFF, 0x0E, 0x07, + 0xC0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x1F, 0x00, 0x07, 0x80, 0x1F, 0xC0, + 0x0F, 0xE0, 0x03, 0xF0, 0x00, 0xFF, 0x00, 0x03, 0xE0, 0x00, 0x78, 0x00, + 0x1E, 0x00, 0x07, 0x80, 0x03, 0xC0, 0x03, 0xF1, 0xFF, 0xF8, 0xFF, 0xFC, + 0x3F, 0xFE, 0x03, 0xFE, 0x00, 0x00, 0x1F, 0x00, 0x3F, 0x00, 0x7F, 0x00, + 0xFE, 0x00, 0xFE, 0x01, 0xEE, 0x03, 0xDE, 0x07, 0x9E, 0x0F, 0x1C, 0x1E, + 0x1C, 0x3C, 0x3C, 0x78, 0x3C, 0xFF, 0xFE, 0xFF, 0xFE, 0xFF, 0xFE, 0xFF, + 0xFC, 0x00, 0x70, 0x03, 0xFC, 0x07, 0xFC, 0x07, 0xFC, 0x07, 0xF8, 0x07, + 0xFF, 0xC1, 0xFF, 0xF0, 0x7F, 0xFC, 0x3F, 0xFE, 0x0F, 0x00, 0x03, 0xC0, + 0x00, 0xE0, 0x00, 0x3B, 0xE0, 0x1F, 0xFE, 0x07, 0xFF, 0xC1, 0xFF, 0xF8, + 0x78, 0x3E, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, + 0x0F, 0x18, 0x0F, 0xCF, 0xFF, 0xE3, 0xFF, 0xF0, 0x7F, 0xF8, 0x07, 0xF0, + 0x00, 0x00, 0x0F, 0xC0, 0x0F, 0xFC, 0x03, 0xFF, 0x81, 0xFF, 0xE0, 0x7F, + 0x00, 0x1F, 0x80, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x9F, + 0x01, 0xEF, 0xF0, 0x3F, 0xFF, 0x0F, 0xFF, 0xF1, 0xFC, 0x3E, 0x3E, 0x03, + 0xC7, 0x80, 0x78, 0xF0, 0x0F, 0x1E, 0x03, 0xC3, 0xE0, 0xF8, 0x7F, 0xFE, + 0x07, 0xFF, 0x80, 0x7F, 0xE0, 0x07, 0xF0, 0x00, 0x7F, 0xFF, 0x7F, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x0E, 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x3C, + 0x00, 0x78, 0x00, 0x70, 0x00, 0xF0, 0x00, 0xE0, 0x01, 0xE0, 0x01, 0xC0, + 0x03, 0xC0, 0x07, 0x80, 0x07, 0x80, 0x0F, 0x00, 0x0E, 0x00, 0x1E, 0x00, + 0x1C, 0x00, 0x1C, 0x00, 0x00, 0x7E, 0x00, 0x3F, 0xF0, 0x0F, 0xFF, 0x03, + 0xFF, 0xF0, 0xF8, 0x3E, 0x3E, 0x03, 0xC7, 0x80, 0x78, 0xF0, 0x0F, 0x1E, + 0x03, 0xC3, 0xE0, 0xF0, 0x3F, 0xFC, 0x03, 0xFF, 0x00, 0xFF, 0xE0, 0x7F, + 0xFE, 0x1F, 0x83, 0xE3, 0xC0, 0x3C, 0xF0, 0x07, 0x9E, 0x01, 0xF3, 0xE0, + 0x7C, 0x7F, 0xFF, 0x87, 0xFF, 0xE0, 0x7F, 0xF0, 0x03, 0xF8, 0x00, 0x00, + 0x7E, 0x00, 0x7F, 0xC0, 0x3F, 0xF8, 0x1F, 0xFE, 0x0F, 0x87, 0xC3, 0xC0, + 0xF1, 0xE0, 0x3C, 0x78, 0x0F, 0x1E, 0x03, 0xC7, 0x81, 0xF1, 0xF1, 0xFC, + 0x7F, 0xFE, 0x0F, 0xFF, 0x81, 0xFD, 0xE0, 0x3E, 0xF0, 0x00, 0x7C, 0x00, + 0x3E, 0x00, 0x1F, 0x00, 0x1F, 0x81, 0xFF, 0xC0, 0xFF, 0xE0, 0x3F, 0xE0, + 0x07, 0xE0, 0x00, 0x1C, 0x7C, 0xF9, 0xF1, 0xC0, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x8F, 0x9F, 0x3E, 0x38, 0x01, 0xC0, 0x7C, 0x0F, 0x81, 0xF0, 0x3C, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xC0, 0xF0, 0x1E, + 0x07, 0x80, 0xE0, 0x38, 0x07, 0x01, 0xC0, 0x30, 0x0E, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xFC, 0x00, 0xFE, 0x00, 0xFE, 0x00, + 0xFE, 0x01, 0xFE, 0x01, 0xFE, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, + 0x00, 0x1F, 0xC0, 0x01, 0xFC, 0x00, 0x1F, 0xC0, 0x01, 0xF0, 0x00, 0x38, + 0x3F, 0xFF, 0xEF, 0xFF, 0xFD, 0xFF, 0xFF, 0x9F, 0xFF, 0xE0, 0x00, 0x00, + 0x00, 0x00, 0x1F, 0xFF, 0xF7, 0xFF, 0xFE, 0xFF, 0xFF, 0xDF, 0xFF, 0xF0, + 0x00, 0x00, 0x03, 0x80, 0x00, 0xFC, 0x00, 0x0F, 0xE0, 0x00, 0x7F, 0x00, + 0x07, 0xF0, 0x00, 0x3F, 0x80, 0x01, 0xFC, 0x00, 0x1F, 0xC0, 0x0F, 0xE0, + 0x07, 0xF0, 0x07, 0xF8, 0x03, 0xF8, 0x01, 0xFC, 0x00, 0x3E, 0x00, 0x07, + 0x00, 0x00, 0x07, 0xE0, 0xFF, 0xC7, 0xFF, 0xBF, 0xFF, 0xF0, 0x7F, 0x80, + 0xFE, 0x03, 0xC0, 0x0F, 0x00, 0x78, 0x0F, 0xE1, 0xFE, 0x0F, 0xF0, 0x7E, + 0x01, 0xE0, 0x07, 0x00, 0x00, 0x00, 0x70, 0x03, 0xE0, 0x0F, 0x80, 0x3E, + 0x00, 0x70, 0x00, 0x00, 0x3E, 0x00, 0x3F, 0xE0, 0x1F, 0xF8, 0x0F, 0x0F, + 0x07, 0x01, 0xC3, 0x80, 0x71, 0xE0, 0x1C, 0x70, 0x0E, 0x18, 0x0F, 0x8E, + 0x1F, 0xE3, 0x8F, 0xF0, 0xE7, 0x9C, 0x33, 0xC7, 0x1C, 0xE1, 0xC7, 0x38, + 0x71, 0xCF, 0x18, 0x73, 0xFE, 0x38, 0x7F, 0xCE, 0x0F, 0xF3, 0x80, 0x00, + 0xE0, 0x00, 0x38, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0xC0, 0x7F, 0xF0, 0x0F, + 0xF8, 0x01, 0xF8, 0x00, 0x01, 0xFF, 0x80, 0x07, 0xFE, 0x00, 0x1F, 0xF8, + 0x00, 0x7F, 0xE0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0x00, 0x07, 0xBC, 0x00, + 0x1C, 0xF0, 0x00, 0xF3, 0xC0, 0x07, 0x87, 0x80, 0x1E, 0x1E, 0x00, 0xF0, + 0x78, 0x07, 0xFF, 0xE0, 0x1F, 0xFF, 0x80, 0xFF, 0xFF, 0x07, 0xFF, 0xFC, + 0x1E, 0x00, 0xF1, 0xFE, 0x1F, 0xFF, 0xF8, 0x7F, 0xFF, 0xE1, 0xFF, 0xFF, + 0x07, 0xF8, 0x0F, 0xFF, 0xC0, 0x7F, 0xFF, 0x87, 0xFF, 0xFC, 0x1F, 0xFF, + 0xF0, 0x38, 0x0F, 0x81, 0xC0, 0x3C, 0x1E, 0x01, 0xE0, 0xF0, 0x3E, 0x07, + 0xFF, 0xE0, 0x3F, 0xFE, 0x03, 0xFF, 0xF8, 0x1F, 0xFF, 0xE0, 0xE0, 0x1F, + 0x87, 0x00, 0x3C, 0x38, 0x01, 0xE3, 0xC0, 0x0F, 0x1E, 0x00, 0xF3, 0xFF, + 0xFF, 0xBF, 0xFF, 0xF9, 0xFF, 0xFF, 0x8F, 0xFF, 0xF0, 0x00, 0x00, 0x7F, + 0x30, 0x0F, 0xFF, 0xC1, 0xFF, 0xFE, 0x1F, 0xFF, 0xF1, 0xF8, 0x3F, 0x1F, + 0x00, 0x78, 0xF0, 0x03, 0xCF, 0x80, 0x1C, 0x78, 0x00, 0x03, 0xC0, 0x00, + 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, + 0x00, 0x1F, 0x00, 0x38, 0x7E, 0x07, 0xC3, 0xFF, 0xFC, 0x0F, 0xFF, 0xC0, + 0x3F, 0xFC, 0x00, 0x7F, 0x80, 0x00, 0x0F, 0xFF, 0x80, 0x7F, 0xFE, 0x07, + 0xFF, 0xF8, 0x1F, 0xFF, 0xE0, 0x78, 0x1F, 0x03, 0x80, 0x7C, 0x1C, 0x01, + 0xE1, 0xE0, 0x0F, 0x0F, 0x00, 0x78, 0x70, 0x03, 0xC3, 0x80, 0x1E, 0x1C, + 0x00, 0xF1, 0xE0, 0x0F, 0x0F, 0x00, 0x78, 0x70, 0x07, 0xC3, 0x80, 0x7C, + 0x3C, 0x07, 0xC3, 0xFF, 0xFC, 0x3F, 0xFF, 0xC1, 0xFF, 0xFC, 0x0F, 0xFF, + 0x80, 0x00, 0x07, 0xFF, 0xFC, 0x3F, 0xFF, 0xF0, 0xFF, 0xFF, 0xC3, 0xFF, + 0xFF, 0x03, 0xC0, 0x3C, 0x0F, 0x00, 0xE0, 0x3C, 0x73, 0x80, 0xE3, 0xCC, + 0x03, 0xFF, 0x00, 0x1F, 0xFC, 0x00, 0x7F, 0xE0, 0x01, 0xFF, 0x80, 0x07, + 0x1E, 0x00, 0x3C, 0x70, 0x00, 0xF0, 0x07, 0x03, 0xC0, 0x1C, 0x0E, 0x00, + 0xF1, 0xFF, 0xFF, 0xC7, 0xFF, 0xFE, 0x3F, 0xFF, 0xF8, 0x7F, 0xFF, 0xE0, + 0x07, 0xFF, 0xFE, 0x1F, 0xFF, 0xFC, 0x3F, 0xFF, 0xF0, 0x7F, 0xFF, 0xE0, + 0x3C, 0x01, 0xC0, 0x70, 0x07, 0x80, 0xE1, 0x8E, 0x03, 0xC7, 0x1C, 0x07, + 0xFE, 0x00, 0x0F, 0xFC, 0x00, 0x1F, 0xF8, 0x00, 0x3F, 0xF0, 0x00, 0xF1, + 0xC0, 0x01, 0xE3, 0x80, 0x03, 0x80, 0x00, 0x07, 0x00, 0x00, 0x1E, 0x00, + 0x00, 0xFF, 0xE0, 0x03, 0xFF, 0xC0, 0x07, 0xFF, 0x80, 0x0F, 0xFE, 0x00, + 0x00, 0x00, 0x3F, 0x18, 0x0F, 0xFF, 0xC0, 0xFF, 0xFE, 0x0F, 0xFF, 0xF0, + 0xFC, 0x0F, 0x0F, 0x80, 0x38, 0xF8, 0x01, 0x87, 0x80, 0x00, 0x78, 0x00, + 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x7F, 0xEF, 0x07, 0xFF, 0x78, + 0x3F, 0xFB, 0xC0, 0xFF, 0x9E, 0x00, 0x38, 0xFC, 0x03, 0xC3, 0xFF, 0xFE, + 0x1F, 0xFF, 0xE0, 0x3F, 0xFC, 0x00, 0x7F, 0x80, 0x00, 0x03, 0xF8, 0xFE, + 0x0F, 0xF3, 0xFC, 0x1F, 0xE7, 0xF8, 0x3F, 0x8F, 0xE0, 0x3C, 0x07, 0x80, + 0x70, 0x0E, 0x00, 0xE0, 0x1C, 0x03, 0xC0, 0x78, 0x07, 0x80, 0xF0, 0x0F, + 0xFF, 0xC0, 0x1F, 0xFF, 0x80, 0x3F, 0xFF, 0x00, 0xFF, 0xFE, 0x01, 0xE0, + 0x3C, 0x03, 0x80, 0x70, 0x07, 0x00, 0xE0, 0x1E, 0x03, 0xC0, 0xFF, 0x1F, + 0xE1, 0xFE, 0x7F, 0xC7, 0xFC, 0xFF, 0x87, 0xF1, 0xFE, 0x00, 0x07, 0xFF, + 0xE1, 0xFF, 0xFC, 0x3F, 0xFF, 0x87, 0xFF, 0xE0, 0x07, 0x80, 0x00, 0xE0, + 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0x80, + 0x00, 0x70, 0x00, 0x1E, 0x00, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x0E, 0x00, + 0x01, 0xC0, 0x0F, 0xFF, 0xC3, 0xFF, 0xF8, 0x7F, 0xFF, 0x07, 0xFF, 0xE0, + 0x00, 0x3F, 0xFE, 0x00, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, 0x03, 0xFF, 0xE0, + 0x00, 0x1C, 0x00, 0x00, 0x38, 0x00, 0x00, 0x70, 0x00, 0x01, 0xE0, 0x00, + 0x03, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x0E, 0x00, 0x80, 0x1C, 0x03, 0x80, + 0x78, 0x0F, 0x00, 0xF0, 0x1E, 0x01, 0xC0, 0x38, 0x07, 0x80, 0x70, 0x1F, + 0x01, 0xFF, 0xFC, 0x03, 0xFF, 0xF0, 0x03, 0xFF, 0xC0, 0x00, 0xFC, 0x00, + 0x00, 0x07, 0xF8, 0xFC, 0x1F, 0xFB, 0xFC, 0x3F, 0xE7, 0xF0, 0x7F, 0xCF, + 0xE0, 0x3C, 0x1E, 0x00, 0x70, 0xF8, 0x00, 0xE3, 0xE0, 0x03, 0xCF, 0x00, + 0x07, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x1F, 0xF0, 0x00, 0x3F, 0xF0, 0x00, + 0xF9, 0xF0, 0x01, 0xE1, 0xE0, 0x03, 0x83, 0xE0, 0x07, 0x03, 0xC0, 0x1E, + 0x07, 0x80, 0xFF, 0x8F, 0xE3, 0xFF, 0x0F, 0xC7, 0xFE, 0x1F, 0x8F, 0xF8, + 0x3E, 0x00, 0x0F, 0xFE, 0x00, 0xFF, 0xF0, 0x1F, 0xFE, 0x00, 0xFF, 0xE0, + 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x03, 0xC0, + 0x00, 0x3C, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x07, 0x80, 0x60, 0x78, + 0x0F, 0x07, 0x80, 0xF0, 0x70, 0x0E, 0x07, 0x00, 0xE7, 0xFF, 0xFE, 0xFF, + 0xFF, 0xEF, 0xFF, 0xFE, 0xFF, 0xFF, 0xC0, 0x0F, 0xC0, 0x1F, 0x87, 0xE0, + 0x0F, 0xC7, 0xF8, 0x0F, 0xE1, 0xFC, 0x0F, 0xE0, 0x7E, 0x07, 0xE0, 0x3F, + 0x07, 0xF0, 0x3F, 0xC7, 0xF8, 0x1F, 0xE3, 0xF8, 0x0E, 0xF3, 0xDC, 0x07, + 0x7B, 0xDE, 0x03, 0x9F, 0xEF, 0x03, 0xCF, 0xE7, 0x81, 0xE7, 0xE3, 0x80, + 0xE3, 0xF1, 0xC0, 0x70, 0xF1, 0xE0, 0x38, 0x70, 0xF0, 0x3C, 0x00, 0x70, + 0x3F, 0xC1, 0xFE, 0x3F, 0xE1, 0xFF, 0x1F, 0xF0, 0xFF, 0x8F, 0xF0, 0x7F, + 0x80, 0x0F, 0xC1, 0xFE, 0x1F, 0xC1, 0xFF, 0x1F, 0xC3, 0xFE, 0x1F, 0xE1, + 0xFE, 0x07, 0xE0, 0x38, 0x07, 0xF0, 0x78, 0x07, 0xF0, 0x78, 0x0F, 0xF8, + 0x70, 0x0F, 0x78, 0x70, 0x0E, 0x78, 0xF0, 0x0E, 0x7C, 0xF0, 0x1E, 0x3C, + 0xF0, 0x1E, 0x3E, 0xE0, 0x1E, 0x1E, 0xE0, 0x1C, 0x1F, 0xE0, 0x1C, 0x0F, + 0xE0, 0x3C, 0x0F, 0xE0, 0x7F, 0x87, 0xC0, 0xFF, 0x87, 0xC0, 0xFF, 0x87, + 0xC0, 0xFF, 0x03, 0xC0, 0x00, 0x7E, 0x00, 0x1F, 0xF8, 0x07, 0xFF, 0xC0, + 0xFF, 0xFE, 0x1F, 0x87, 0xE3, 0xE0, 0x1F, 0x3C, 0x01, 0xF7, 0xC0, 0x0F, + 0x78, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x01, + 0xEF, 0x00, 0x3E, 0xF8, 0x03, 0xCF, 0x80, 0x7C, 0x7C, 0x1F, 0x87, 0xFF, + 0xF0, 0x3F, 0xFE, 0x01, 0xFF, 0x80, 0x07, 0xE0, 0x00, 0x0F, 0xFF, 0x80, + 0x7F, 0xFF, 0x07, 0xFF, 0xFC, 0x1F, 0xFF, 0xF0, 0x38, 0x0F, 0x81, 0xC0, + 0x3C, 0x1E, 0x01, 0xE0, 0xF0, 0x0F, 0x07, 0x00, 0xF0, 0x38, 0x0F, 0x83, + 0xFF, 0xF8, 0x1F, 0xFF, 0x80, 0xFF, 0xF8, 0x07, 0xFF, 0x00, 0x38, 0x00, + 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x03, 0xFF, 0x80, 0x3F, 0xFC, 0x01, 0xFF, + 0xE0, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x1F, 0xF8, 0x07, 0xFF, + 0xC0, 0xFF, 0xFE, 0x1F, 0x87, 0xE3, 0xE0, 0x1F, 0x3C, 0x01, 0xF7, 0xC0, + 0x0F, 0x78, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, + 0x01, 0xEF, 0x00, 0x3E, 0xF8, 0x03, 0xCF, 0x80, 0x7C, 0x7C, 0x1F, 0x87, + 0xFF, 0xF0, 0x3F, 0xFE, 0x01, 0xFF, 0x80, 0x07, 0xE0, 0x01, 0xFE, 0x30, + 0x3F, 0xFF, 0x87, 0xFF, 0xF0, 0x7F, 0xFF, 0x07, 0x83, 0xC0, 0x07, 0xFF, + 0x80, 0x3F, 0xFF, 0x80, 0xFF, 0xFF, 0x03, 0xFF, 0xFE, 0x03, 0xC0, 0xF8, + 0x0E, 0x01, 0xE0, 0x38, 0x07, 0x81, 0xE0, 0x3E, 0x07, 0x83, 0xF0, 0x1F, + 0xFF, 0x80, 0x7F, 0xFC, 0x01, 0xFF, 0xC0, 0x0F, 0xFF, 0x80, 0x3C, 0x3E, + 0x00, 0xE0, 0x7C, 0x03, 0x80, 0xF0, 0x1E, 0x03, 0xE1, 0xFF, 0x07, 0xFF, + 0xFC, 0x1F, 0xFF, 0xF0, 0x3F, 0xFF, 0x80, 0xF8, 0x00, 0x7C, 0xE0, 0x7F, + 0xFC, 0x1F, 0xFF, 0x87, 0xFF, 0xE0, 0xF8, 0x7C, 0x3C, 0x07, 0x87, 0x80, + 0xE0, 0xF0, 0x00, 0x1F, 0x00, 0x03, 0xFE, 0x00, 0x3F, 0xF8, 0x03, 0xFF, + 0x80, 0x07, 0xF8, 0x40, 0x1F, 0x3C, 0x01, 0xE7, 0x80, 0x3C, 0xFC, 0x1F, + 0x1F, 0xFF, 0xE3, 0xFF, 0xF8, 0x7F, 0xFE, 0x00, 0x7E, 0x00, 0x7F, 0xFF, + 0xEF, 0xFF, 0xFD, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0x0E, 0x1F, 0xE1, 0xC3, + 0xBC, 0x78, 0x77, 0x0F, 0x1E, 0xE1, 0xC1, 0x80, 0x38, 0x00, 0x0F, 0x00, + 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, 0x3C, 0x00, + 0x07, 0x80, 0x0F, 0xFE, 0x03, 0xFF, 0xE0, 0x7F, 0xFC, 0x0F, 0xFF, 0x00, + 0x7F, 0x8F, 0xF3, 0xFE, 0x7F, 0xDF, 0xF7, 0xFC, 0xFF, 0x1F, 0xE3, 0xC0, + 0x3C, 0x1C, 0x01, 0xE0, 0xE0, 0x0F, 0x0F, 0x00, 0x70, 0x78, 0x03, 0x83, + 0xC0, 0x3C, 0x1C, 0x01, 0xE0, 0xE0, 0x0E, 0x0F, 0x00, 0x70, 0x78, 0x03, + 0x83, 0xC0, 0x3C, 0x1F, 0x01, 0xC0, 0xFC, 0x3E, 0x03, 0xFF, 0xE0, 0x1F, + 0xFE, 0x00, 0x7F, 0xE0, 0x00, 0xFC, 0x00, 0x00, 0x7F, 0x81, 0xFE, 0xFF, + 0x87, 0xFF, 0xFF, 0x0F, 0xFB, 0xFC, 0x1F, 0xE1, 0xC0, 0x0F, 0x03, 0xC0, + 0x1C, 0x07, 0x80, 0x78, 0x0F, 0x01, 0xE0, 0x1E, 0x03, 0x80, 0x1E, 0x0F, + 0x00, 0x3C, 0x3C, 0x00, 0x78, 0x70, 0x00, 0xF1, 0xE0, 0x01, 0xE7, 0x80, + 0x01, 0xEF, 0x00, 0x03, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, + 0x0F, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x7F, 0x87, 0xFF, + 0xFF, 0x1F, 0xFF, 0xF8, 0x7F, 0xFF, 0xE1, 0xFE, 0x78, 0x00, 0xF1, 0xE3, + 0xC3, 0x87, 0x8F, 0x0E, 0x1E, 0x7C, 0x78, 0x79, 0xF9, 0xC1, 0xEF, 0xEF, + 0x07, 0xBF, 0xBC, 0x1D, 0xFE, 0xE0, 0x77, 0x7F, 0x81, 0xFD, 0xFE, 0x07, + 0xE3, 0xF0, 0x3F, 0x8F, 0xC0, 0xFC, 0x3F, 0x03, 0xF0, 0xF8, 0x0F, 0x83, + 0xE0, 0x3E, 0x0F, 0x80, 0xF0, 0x3C, 0x00, 0x07, 0xE0, 0x7E, 0x0F, 0xF0, + 0xFF, 0x0F, 0xF0, 0xFE, 0x0F, 0xE0, 0xFE, 0x03, 0xC0, 0xF8, 0x01, 0xE1, + 0xE0, 0x01, 0xF3, 0xC0, 0x00, 0xF7, 0x80, 0x00, 0x7F, 0x00, 0x00, 0x7E, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFF, 0x00, 0x03, 0xEF, + 0x00, 0x07, 0xCF, 0x80, 0x0F, 0x87, 0xC0, 0x1F, 0x03, 0xC0, 0x7F, 0x07, + 0xF0, 0xFF, 0x8F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xE0, 0x7E, 0x0F, + 0xEF, 0xF0, 0xFF, 0xFF, 0x0F, 0xEF, 0xE0, 0xFE, 0x3C, 0x0F, 0x01, 0xE1, + 0xE0, 0x1E, 0x3E, 0x00, 0xF7, 0xC0, 0x0F, 0xF8, 0x00, 0x7F, 0x00, 0x07, + 0xE0, 0x00, 0x3C, 0x00, 0x03, 0x80, 0x00, 0x78, 0x00, 0x07, 0x80, 0x00, + 0x78, 0x00, 0x07, 0x00, 0x07, 0xFF, 0x00, 0xFF, 0xF8, 0x0F, 0xFF, 0x00, + 0xFF, 0xF0, 0x00, 0x07, 0xFF, 0xE0, 0xFF, 0xFC, 0x3F, 0xFF, 0x87, 0xFF, + 0xF0, 0xF0, 0x7C, 0x1C, 0x1F, 0x03, 0x87, 0xC0, 0x61, 0xF0, 0x00, 0x7C, + 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x07, + 0x07, 0xC0, 0xE1, 0xF0, 0x3C, 0x7C, 0x07, 0x9F, 0xFF, 0xF3, 0xFF, 0xFC, + 0x7F, 0xFF, 0x8F, 0xFF, 0xF0, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xE0, + 0x70, 0x07, 0x80, 0x3C, 0x01, 0xC0, 0x0E, 0x00, 0xF0, 0x07, 0x80, 0x3C, + 0x01, 0xC0, 0x0E, 0x00, 0xF0, 0x07, 0x80, 0x38, 0x01, 0xC0, 0x0E, 0x00, + 0xF0, 0x07, 0x80, 0x38, 0x01, 0xC0, 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3F, + 0x80, 0xE0, 0x38, 0x0F, 0x03, 0xC0, 0xF0, 0x1C, 0x07, 0x81, 0xE0, 0x78, + 0x0E, 0x03, 0xC0, 0xF0, 0x3C, 0x07, 0x01, 0xE0, 0x78, 0x1E, 0x03, 0x80, + 0xF0, 0x3C, 0x0F, 0x01, 0xE0, 0x78, 0x1E, 0x03, 0x80, 0xF0, 0x3C, 0x06, + 0x07, 0xF8, 0x3F, 0xC1, 0xFC, 0x0F, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, + 0x1C, 0x00, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0x80, 0x1C, 0x01, 0xE0, 0x0F, + 0x00, 0x78, 0x03, 0x80, 0x1C, 0x01, 0xE0, 0x0F, 0x00, 0x70, 0x03, 0x80, + 0x1C, 0x0F, 0xE0, 0xFF, 0x07, 0xF0, 0x3F, 0x80, 0x00, 0x40, 0x01, 0x80, + 0x07, 0x80, 0x3F, 0x80, 0xFF, 0x03, 0xFF, 0x0F, 0x9F, 0x3E, 0x1E, 0xF8, + 0x3F, 0xE0, 0x3F, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xF0, 0xC3, 0xC7, 0x0E, 0x3C, 0x30, 0x00, 0xFE, 0x00, + 0x7F, 0xF0, 0x1F, 0xFF, 0x03, 0xFF, 0xE0, 0x00, 0x3C, 0x07, 0xFF, 0x83, + 0xFF, 0xF0, 0xFF, 0xFC, 0x3F, 0xFF, 0x8F, 0x80, 0xF3, 0xE0, 0x1E, 0x78, + 0x1F, 0x8F, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xF8, 0xFE, 0x7E, 0x07, + 0xE0, 0x00, 0x3F, 0x80, 0x00, 0xFC, 0x00, 0x03, 0xF0, 0x00, 0x01, 0xC0, + 0x00, 0x0F, 0x00, 0x00, 0x3C, 0xFC, 0x00, 0xEF, 0xFC, 0x03, 0xFF, 0xF8, + 0x1F, 0xFF, 0xE0, 0x7E, 0x0F, 0xC1, 0xE0, 0x1F, 0x07, 0x00, 0x3C, 0x1C, + 0x00, 0xF0, 0xE0, 0x03, 0xC3, 0x80, 0x1E, 0x0F, 0x00, 0xF8, 0x3E, 0x07, + 0xC7, 0xFF, 0xFF, 0x3F, 0xFF, 0xF8, 0xFF, 0xFF, 0x81, 0xF1, 0xF8, 0x00, + 0x00, 0xFE, 0x60, 0xFF, 0xFC, 0x3F, 0xFF, 0x8F, 0xFF, 0xF3, 0xF0, 0x3C, + 0xF8, 0x03, 0x9E, 0x00, 0x67, 0x80, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, + 0xC0, 0x00, 0x7E, 0x01, 0xC7, 0xFF, 0xF8, 0xFF, 0xFE, 0x0F, 0xFF, 0x80, + 0x7F, 0x80, 0x00, 0x01, 0xF8, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, + 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x70, 0x07, 0xE3, 0x80, 0xFF, 0xDC, 0x0F, + 0xFF, 0xE0, 0xFF, 0xFF, 0x0F, 0xC1, 0xF0, 0xF8, 0x07, 0x87, 0x80, 0x1C, + 0x78, 0x00, 0xE3, 0xC0, 0x0F, 0x1E, 0x00, 0x70, 0xF0, 0x07, 0x87, 0xE0, + 0xFC, 0x1F, 0xFF, 0xF8, 0xFF, 0xFF, 0xC3, 0xFF, 0xFE, 0x07, 0xE3, 0xE0, + 0x00, 0xFC, 0x01, 0xFF, 0xC0, 0xFF, 0xF8, 0x7F, 0xFE, 0x3E, 0x0F, 0xCE, + 0x00, 0xF7, 0x00, 0x3D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xE0, 0x1E, 0xFF, 0xFF, 0x9F, 0xFF, 0xE3, 0xFF, 0xF0, 0x3F, 0xF0, + 0x00, 0x0F, 0xF0, 0x01, 0xFF, 0xC0, 0x1F, 0xFE, 0x01, 0xFF, 0xE0, 0x0F, + 0x00, 0x00, 0xF0, 0x00, 0x3F, 0xFF, 0x03, 0xFF, 0xF8, 0x1F, 0xFF, 0xC0, + 0xFF, 0xFC, 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x38, 0x00, 0x01, 0xC0, + 0x00, 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x00, 0x00, 0x38, 0x00, 0x1F, + 0xFF, 0x81, 0xFF, 0xFC, 0x0F, 0xFF, 0xE0, 0x7F, 0xFE, 0x00, 0x01, 0xF9, + 0xF8, 0x3F, 0xFF, 0xC3, 0xFF, 0xFE, 0x7F, 0xFF, 0xE3, 0xE0, 0xFC, 0x3E, + 0x03, 0xE1, 0xE0, 0x0E, 0x1E, 0x00, 0x70, 0xF0, 0x03, 0x87, 0x80, 0x3C, + 0x3E, 0x03, 0xE1, 0xF8, 0x7E, 0x07, 0xFF, 0xF0, 0x3F, 0xFF, 0x80, 0xFF, + 0xFC, 0x01, 0xF9, 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x80, + 0x7F, 0xF8, 0x07, 0xFF, 0x80, 0x3F, 0xF8, 0x00, 0xFF, 0x00, 0x00, 0x0F, + 0xC0, 0x00, 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x03, 0xC0, 0x00, + 0x38, 0x00, 0x03, 0x9F, 0x00, 0x7F, 0xFC, 0x07, 0xFF, 0xC0, 0x7F, 0xFE, + 0x07, 0xC3, 0xE0, 0x70, 0x1E, 0x0F, 0x01, 0xC0, 0xF0, 0x1C, 0x0E, 0x03, + 0xC0, 0xE0, 0x3C, 0x1E, 0x03, 0x81, 0xE0, 0x38, 0x7F, 0x0F, 0xFF, 0xF8, + 0xFF, 0xFF, 0x8F, 0xF7, 0xF0, 0xFE, 0x00, 0x78, 0x00, 0x78, 0x00, 0x78, + 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF0, 0x0F, 0xF0, 0x1F, 0xF0, + 0x0F, 0xF0, 0x00, 0xF0, 0x00, 0xE0, 0x00, 0xE0, 0x01, 0xE0, 0x01, 0xE0, + 0x01, 0xE0, 0x01, 0xC0, 0x01, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0xF8, 0x00, 0x3C, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFC, 0x3F, 0xFE, 0x0F, 0xFF, 0x81, 0xFF, + 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x00, 0x01, 0xC0, 0x00, 0xF0, + 0x00, 0x3C, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, 0x78, 0x00, + 0x1E, 0x00, 0x07, 0x00, 0x01, 0xC0, 0x00, 0xF0, 0x00, 0x7C, 0x1F, 0xFE, + 0x0F, 0xFF, 0x03, 0xFF, 0x80, 0x7F, 0x80, 0x00, 0x07, 0xE0, 0x00, 0xFE, + 0x00, 0x0F, 0xE0, 0x00, 0x7C, 0x00, 0x01, 0xC0, 0x00, 0x3C, 0x00, 0x03, + 0xCF, 0xF0, 0x3C, 0xFF, 0x03, 0x9F, 0xF0, 0x38, 0xFE, 0x07, 0xBF, 0x00, + 0x7F, 0xC0, 0x07, 0xF8, 0x00, 0x7F, 0x00, 0x07, 0xF8, 0x00, 0xFF, 0xC0, + 0x0F, 0x7E, 0x00, 0xE3, 0xF0, 0x7E, 0x1F, 0xE7, 0xE1, 0xFE, 0xFE, 0x3F, + 0xE7, 0xE1, 0xFC, 0x03, 0xFC, 0x07, 0xFC, 0x07, 0xF8, 0x07, 0xF8, 0x00, + 0x78, 0x00, 0x78, 0x00, 0x78, 0x00, 0x70, 0x00, 0x70, 0x00, 0xF0, 0x00, + 0xF0, 0x00, 0xE0, 0x00, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x01, + 0xC0, 0x01, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x1F, + 0x7C, 0x78, 0x7F, 0xFF, 0xF8, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xF0, 0xF1, + 0xF1, 0xE1, 0xC3, 0x83, 0xC7, 0x87, 0x07, 0x8F, 0x0E, 0x0E, 0x1C, 0x3C, + 0x1C, 0x38, 0x78, 0x78, 0x70, 0xE0, 0xF1, 0xE1, 0xC1, 0xC7, 0xE3, 0xC3, + 0xFF, 0xCF, 0xC7, 0xFF, 0x9F, 0x9F, 0xFF, 0x3E, 0x3E, 0x0F, 0x8F, 0x80, + 0xFD, 0xFF, 0x07, 0xFF, 0xF8, 0x3F, 0xFF, 0xE0, 0x7E, 0x1F, 0x07, 0xC0, + 0x78, 0x3C, 0x03, 0x81, 0xE0, 0x1C, 0x0E, 0x01, 0xE0, 0x70, 0x0F, 0x07, + 0x80, 0x70, 0x3C, 0x03, 0x87, 0xF0, 0x3F, 0x7F, 0xC3, 0xFF, 0xFE, 0x1F, + 0xEF, 0xE0, 0xFE, 0x01, 0xFC, 0x01, 0xFF, 0x80, 0xFF, 0xF8, 0x7F, 0xFE, + 0x3E, 0x0F, 0xDF, 0x01, 0xF7, 0x80, 0x3F, 0xC0, 0x0F, 0xF0, 0x03, 0xFC, + 0x01, 0xEF, 0x80, 0xFB, 0xF0, 0x7C, 0x7F, 0xFF, 0x1F, 0xFF, 0x03, 0xFF, + 0x80, 0x3F, 0x80, 0x07, 0xC7, 0xE0, 0x1F, 0xBF, 0xF0, 0x3F, 0xFF, 0xF0, + 0x7F, 0xFF, 0xE0, 0x3F, 0x07, 0xE0, 0x78, 0x03, 0xC0, 0xE0, 0x07, 0x81, + 0xC0, 0x0F, 0x07, 0x00, 0x1E, 0x0F, 0x00, 0x78, 0x1E, 0x01, 0xF0, 0x3E, + 0x07, 0xC0, 0xFF, 0xFF, 0x81, 0xFF, 0xFE, 0x03, 0xDF, 0xF0, 0x07, 0x1F, + 0x80, 0x0E, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x78, 0x00, 0x03, 0xFE, 0x00, + 0x0F, 0xFE, 0x00, 0x1F, 0xF8, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x01, 0xF8, + 0xF8, 0x1F, 0xFF, 0xF1, 0xFF, 0xFF, 0xCF, 0xFF, 0xFE, 0x3E, 0x07, 0xC1, + 0xF0, 0x0F, 0x07, 0x80, 0x1C, 0x3C, 0x00, 0x70, 0xF0, 0x03, 0x83, 0xC0, + 0x0E, 0x0F, 0x80, 0x78, 0x3F, 0x07, 0xE0, 0x7F, 0xFF, 0x81, 0xFF, 0xFC, + 0x03, 0xFF, 0x70, 0x03, 0xF3, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, + 0x00, 0xE0, 0x00, 0x3F, 0xE0, 0x01, 0xFF, 0xC0, 0x07, 0xFF, 0x00, 0x1F, + 0xF8, 0x00, 0x0F, 0xC3, 0xC1, 0xFC, 0xFF, 0x1F, 0xFF, 0xF1, 0xFF, 0xFE, + 0x03, 0xFC, 0x00, 0x3F, 0x00, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x07, 0x80, + 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0xF0, 0x00, 0xFF, 0xFC, 0x0F, 0xFF, + 0xE0, 0xFF, 0xFC, 0x0F, 0xFF, 0xC0, 0x03, 0xF3, 0x0F, 0xFF, 0x3F, 0xFF, + 0x3F, 0xFF, 0x7C, 0x0E, 0x78, 0x00, 0x7F, 0xE0, 0x3F, 0xFC, 0x1F, 0xFF, + 0x00, 0x3F, 0x70, 0x0F, 0xF8, 0x1F, 0xFF, 0xFE, 0xFF, 0xFC, 0xFF, 0xF8, + 0x0F, 0xE0, 0x06, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0E, 0x00, 0x0E, 0x00, + 0x7F, 0xFE, 0xFF, 0xFE, 0xFF, 0xFE, 0xFF, 0xFC, 0x1C, 0x00, 0x3C, 0x00, + 0x3C, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x78, 0x00, 0x7C, 0x0E, + 0x7F, 0xFF, 0x7F, 0xFE, 0x3F, 0xFC, 0x0F, 0xE0, 0x7C, 0x0F, 0xFF, 0x07, + 0xFF, 0x81, 0xFF, 0xE0, 0x7E, 0x78, 0x03, 0x9E, 0x00, 0xE7, 0x80, 0x79, + 0xE0, 0x1E, 0x78, 0x07, 0x1E, 0x01, 0xC7, 0x80, 0xF1, 0xE0, 0xFC, 0x7F, + 0xFF, 0x9F, 0xFF, 0xE3, 0xFF, 0xF8, 0x3E, 0x7C, 0x7F, 0x87, 0xFF, 0xFC, + 0x7F, 0xFF, 0xE3, 0xFF, 0xFF, 0x1F, 0xE1, 0xE0, 0x3C, 0x0F, 0x03, 0xC0, + 0x78, 0x3C, 0x01, 0xE1, 0xC0, 0x0F, 0x1E, 0x00, 0x79, 0xE0, 0x03, 0xCE, + 0x00, 0x0F, 0xF0, 0x00, 0x7F, 0x00, 0x03, 0xF0, 0x00, 0x0F, 0x80, 0x00, + 0x78, 0x00, 0x7E, 0x03, 0xF7, 0xF0, 0x3F, 0xFF, 0x81, 0xFD, 0xF8, 0x0F, + 0xE7, 0x8E, 0x1C, 0x3C, 0xF9, 0xE1, 0xE7, 0xCE, 0x0F, 0x7E, 0xF0, 0x7B, + 0xF7, 0x03, 0xFF, 0xF8, 0x1F, 0xDF, 0x80, 0xFC, 0xFC, 0x07, 0xE7, 0xE0, + 0x3E, 0x3E, 0x01, 0xF1, 0xF0, 0x0F, 0x07, 0x00, 0x0F, 0xE3, 0xF8, 0xFF, + 0x1F, 0xC7, 0xF9, 0xFE, 0x1F, 0x87, 0xF0, 0x7E, 0x7C, 0x01, 0xFF, 0xC0, + 0x07, 0xFC, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x1F, 0xF0, 0x01, 0xF7, + 0xC0, 0x1F, 0x1F, 0x03, 0xF0, 0x7C, 0x7F, 0xCF, 0xFB, 0xFE, 0x7F, 0xDF, + 0xE3, 0xFC, 0x07, 0xF0, 0x7F, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x07, + 0xE0, 0xFE, 0x03, 0xC0, 0x78, 0x03, 0xC0, 0x78, 0x03, 0xC0, 0xF0, 0x01, + 0xE1, 0xE0, 0x01, 0xE1, 0xC0, 0x01, 0xE3, 0xC0, 0x00, 0xF7, 0x80, 0x00, + 0xFF, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7C, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x70, 0x00, 0x00, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x7F, + 0xF0, 0x00, 0xFF, 0xF8, 0x00, 0xFF, 0xF0, 0x00, 0x7F, 0xF0, 0x00, 0x1F, + 0xFF, 0xC7, 0xFF, 0xF1, 0xFF, 0xF8, 0xFF, 0xFE, 0x3C, 0x1F, 0x0E, 0x1F, + 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, + 0xF8, 0x3C, 0xFF, 0xFF, 0x3F, 0xFF, 0xCF, 0xFF, 0xE3, 0xFF, 0xF8, 0x00, + 0xF0, 0x1F, 0x03, 0xF0, 0x7E, 0x07, 0x80, 0x70, 0x0F, 0x00, 0xF0, 0x0E, + 0x00, 0xE0, 0x1E, 0x01, 0xC0, 0xFC, 0x0F, 0x80, 0xF8, 0x0F, 0xC0, 0x3C, + 0x03, 0xC0, 0x38, 0x03, 0x80, 0x78, 0x07, 0x80, 0x78, 0x07, 0xE0, 0x7E, + 0x03, 0xE0, 0x1C, 0x00, 0x02, 0x07, 0x07, 0x0F, 0x0F, 0x0E, 0x0E, 0x0E, + 0x1E, 0x1E, 0x1C, 0x1C, 0x1C, 0x3C, 0x3C, 0x38, 0x38, 0x38, 0x78, 0x78, + 0x70, 0x70, 0x70, 0xF0, 0xF0, 0xE0, 0xE0, 0x01, 0xC0, 0x1F, 0x00, 0xFC, + 0x07, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1C, 0x00, 0xE0, 0x0F, 0x00, + 0x78, 0x03, 0xC0, 0x1F, 0x80, 0x7C, 0x03, 0xE0, 0x3F, 0x03, 0xC0, 0x1C, + 0x00, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0x80, 0x3C, 0x0F, 0xE0, 0x7E, 0x07, + 0xE0, 0x1E, 0x00, 0x0F, 0x00, 0x1F, 0xC0, 0x1F, 0xF0, 0xFF, 0xFC, 0xFF, + 0x3F, 0xFF, 0x0F, 0xF8, 0x03, 0xF8, 0x00, 0xF0}; + +const GFXglyph FreeMonoBoldOblique18pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 21, 0, 1}, // 0x20 ' ' + {0, 9, 22, 21, 9, -21}, // 0x21 '!' + {25, 12, 10, 21, 9, -20}, // 0x22 '"' + {40, 18, 25, 21, 4, -22}, // 0x23 '#' + {97, 18, 28, 21, 4, -23}, // 0x24 '$' + {160, 16, 21, 21, 5, -20}, // 0x25 '%' + {202, 16, 20, 21, 4, -19}, // 0x26 '&' + {242, 5, 10, 21, 12, -20}, // 0x27 ''' + {249, 10, 27, 21, 11, -21}, // 0x28 '(' + {283, 10, 27, 21, 4, -21}, // 0x29 ')' + {317, 15, 15, 21, 6, -21}, // 0x2A '*' + {346, 18, 19, 21, 4, -18}, // 0x2B '+' + {389, 9, 10, 21, 4, -3}, // 0x2C ',' + {401, 18, 4, 21, 4, -11}, // 0x2D '-' + {410, 5, 5, 21, 8, -4}, // 0x2E '.' + {414, 21, 28, 21, 2, -23}, // 0x2F '/' + {488, 17, 23, 21, 5, -22}, // 0x30 '0' + {537, 15, 22, 21, 3, -21}, // 0x31 '1' + {579, 20, 23, 21, 2, -22}, // 0x32 '2' + {637, 18, 23, 21, 3, -22}, // 0x33 '3' + {689, 16, 21, 21, 4, -20}, // 0x34 '4' + {731, 18, 22, 21, 4, -21}, // 0x35 '5' + {781, 19, 23, 21, 5, -22}, // 0x36 '6' + {836, 16, 22, 21, 6, -21}, // 0x37 '7' + {880, 19, 23, 21, 3, -22}, // 0x38 '8' + {935, 18, 23, 21, 4, -22}, // 0x39 '9' + {987, 7, 16, 21, 9, -15}, // 0x3A ':' + {1001, 11, 22, 21, 4, -15}, // 0x3B ';' + {1032, 18, 16, 21, 4, -17}, // 0x3C '<' + {1068, 19, 10, 21, 3, -14}, // 0x3D '=' + {1092, 19, 16, 21, 3, -17}, // 0x3E '>' + {1130, 14, 21, 21, 8, -20}, // 0x3F '?' + {1167, 18, 27, 21, 3, -21}, // 0x40 '@' + {1228, 22, 21, 21, 0, -20}, // 0x41 'A' + {1286, 21, 21, 21, 1, -20}, // 0x42 'B' + {1342, 21, 21, 21, 2, -20}, // 0x43 'C' + {1398, 21, 21, 21, 1, -20}, // 0x44 'D' + {1454, 22, 21, 21, 0, -20}, // 0x45 'E' + {1512, 23, 21, 21, 0, -20}, // 0x46 'F' + {1573, 21, 21, 21, 2, -20}, // 0x47 'G' + {1629, 23, 21, 21, 0, -20}, // 0x48 'H' + {1690, 19, 21, 21, 2, -20}, // 0x49 'I' + {1740, 23, 21, 21, 0, -20}, // 0x4A 'J' + {1801, 23, 21, 21, 0, -20}, // 0x4B 'K' + {1862, 20, 21, 21, 1, -20}, // 0x4C 'L' + {1915, 25, 21, 21, 0, -20}, // 0x4D 'M' + {1981, 24, 21, 21, 1, -20}, // 0x4E 'N' + {2044, 20, 21, 21, 2, -20}, // 0x4F 'O' + {2097, 21, 21, 21, 1, -20}, // 0x50 'P' + {2153, 20, 26, 21, 2, -20}, // 0x51 'Q' + {2218, 22, 21, 21, 0, -20}, // 0x52 'R' + {2276, 19, 21, 21, 3, -20}, // 0x53 'S' + {2326, 19, 21, 21, 3, -20}, // 0x54 'T' + {2376, 21, 21, 21, 3, -20}, // 0x55 'U' + {2432, 23, 21, 21, 1, -20}, // 0x56 'V' + {2493, 22, 21, 21, 2, -20}, // 0x57 'W' + {2551, 24, 21, 21, 0, -20}, // 0x58 'X' + {2614, 20, 21, 21, 3, -20}, // 0x59 'Y' + {2667, 19, 21, 21, 2, -20}, // 0x5A 'Z' + {2717, 13, 27, 21, 8, -21}, // 0x5B '[' + {2761, 10, 28, 21, 8, -23}, // 0x5C '\' + {2796, 13, 27, 21, 4, -21}, // 0x5D ']' + {2840, 15, 11, 21, 6, -21}, // 0x5E '^' + {2861, 21, 4, 21, -1, 4}, // 0x5F '_' + {2872, 6, 6, 21, 10, -22}, // 0x60 '`' + {2877, 19, 16, 21, 2, -15}, // 0x61 'a' + {2915, 22, 22, 21, 0, -21}, // 0x62 'b' + {2976, 19, 16, 21, 3, -15}, // 0x63 'c' + {3014, 21, 22, 21, 3, -21}, // 0x64 'd' + {3072, 18, 16, 21, 3, -15}, // 0x65 'e' + {3108, 21, 22, 21, 3, -21}, // 0x66 'f' + {3166, 21, 23, 21, 2, -15}, // 0x67 'g' + {3227, 20, 22, 21, 1, -21}, // 0x68 'h' + {3282, 16, 22, 21, 3, -21}, // 0x69 'i' + {3326, 18, 29, 21, 2, -21}, // 0x6A 'j' + {3392, 20, 22, 21, 1, -21}, // 0x6B 'k' + {3447, 16, 22, 21, 3, -21}, // 0x6C 'l' + {3491, 23, 16, 21, 0, -15}, // 0x6D 'm' + {3537, 21, 16, 21, 1, -15}, // 0x6E 'n' + {3579, 18, 16, 21, 3, -15}, // 0x6F 'o' + {3615, 23, 23, 21, -1, -15}, // 0x70 'p' + {3682, 22, 23, 21, 2, -15}, // 0x71 'q' + {3746, 20, 16, 21, 2, -15}, // 0x72 'r' + {3786, 16, 16, 21, 4, -15}, // 0x73 's' + {3818, 16, 21, 21, 4, -20}, // 0x74 't' + {3860, 18, 16, 21, 3, -15}, // 0x75 'u' + {3896, 21, 16, 21, 2, -15}, // 0x76 'v' + {3938, 21, 16, 21, 3, -15}, // 0x77 'w' + {3980, 21, 16, 21, 1, -15}, // 0x78 'x' + {4022, 24, 23, 21, -1, -15}, // 0x79 'y' + {4091, 18, 16, 21, 3, -15}, // 0x7A 'z' + {4127, 12, 27, 21, 8, -21}, // 0x7B '{' + {4168, 8, 27, 21, 8, -21}, // 0x7C '|' + {4195, 13, 27, 21, 4, -21}, // 0x7D '}' + {4239, 17, 8, 21, 4, -13}}; // 0x7E '~' + +const GFXfont FreeMonoBoldOblique18pt7b PROGMEM = { + (uint8_t *)FreeMonoBoldOblique18pt7bBitmaps, + (GFXglyph *)FreeMonoBoldOblique18pt7bGlyphs, 0x20, 0x7E, 35}; + +// Approx. 4928 bytes diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBoldOblique24pt7b.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBoldOblique24pt7b.h new file mode 100644 index 0000000..ac923bf --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBoldOblique24pt7b.h @@ -0,0 +1,744 @@ +#pragma once +#include + +const uint8_t FreeMonoBoldOblique24pt7bBitmaps[] PROGMEM = { + 0x01, 0xE0, 0x3F, 0x07, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xE0, 0xFE, + 0x0F, 0xE0, 0xFE, 0x0F, 0xC0, 0xFC, 0x1F, 0xC1, 0xF8, 0x1F, 0x81, 0xF8, + 0x1F, 0x81, 0xF0, 0x1F, 0x01, 0xF0, 0x1E, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x03, 0xC0, 0x7E, 0x0F, 0xE0, 0xFE, 0x0F, 0xC0, 0x78, 0x00, 0x7E, + 0x1F, 0xBF, 0x0F, 0xDF, 0x87, 0xCF, 0x83, 0xE7, 0xC1, 0xF3, 0xE0, 0xF1, + 0xE0, 0xF8, 0xF0, 0x7C, 0x78, 0x3C, 0x38, 0x1E, 0x1C, 0x0F, 0x0E, 0x07, + 0x0E, 0x03, 0x83, 0x01, 0x80, 0x00, 0x1C, 0x1C, 0x00, 0x3E, 0x3E, 0x00, + 0x3E, 0x3E, 0x00, 0x3C, 0x3C, 0x00, 0x7C, 0x7C, 0x00, 0x7C, 0x7C, 0x00, + 0x7C, 0x7C, 0x00, 0xF8, 0xF8, 0x00, 0xF8, 0xF8, 0x00, 0xF8, 0xF8, 0x0F, + 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0x1F, + 0xFF, 0xFE, 0x03, 0xE3, 0xE0, 0x03, 0xE3, 0xE0, 0x03, 0xC3, 0xC0, 0x07, + 0xC7, 0xC0, 0x7F, 0xFF, 0xF8, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFC, 0xFF, + 0xFF, 0xF8, 0xFF, 0xFF, 0xF0, 0x0F, 0x0F, 0x00, 0x1F, 0x1F, 0x00, 0x1F, + 0x1F, 0x00, 0x1F, 0x1F, 0x00, 0x3E, 0x1E, 0x00, 0x3E, 0x3E, 0x00, 0x3E, + 0x3E, 0x00, 0x3C, 0x3C, 0x00, 0x7C, 0x7C, 0x00, 0x38, 0x38, 0x00, 0x00, + 0x00, 0xE0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x7C, 0x00, + 0x00, 0xFF, 0x00, 0x01, 0xFF, 0xFC, 0x03, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, + 0x01, 0xFF, 0xFF, 0x81, 0xFC, 0x1F, 0xC1, 0xF8, 0x03, 0xC0, 0xF8, 0x01, + 0xE0, 0x7C, 0x00, 0x40, 0x3F, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x0F, 0xFF, + 0x80, 0x03, 0xFF, 0xF8, 0x00, 0xFF, 0xFE, 0x00, 0x0F, 0xFF, 0x00, 0x00, + 0x7F, 0xC0, 0x00, 0x07, 0xE0, 0xE0, 0x01, 0xF0, 0xF0, 0x00, 0xF8, 0xF8, + 0x00, 0xFC, 0x7E, 0x00, 0xFC, 0x3F, 0x81, 0xFE, 0x1F, 0xFF, 0xFE, 0x0F, + 0xFF, 0xFE, 0x0F, 0xFF, 0xFE, 0x03, 0xFF, 0xFC, 0x00, 0x07, 0xF0, 0x00, + 0x01, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x7C, 0x00, + 0x00, 0x3E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0xF8, + 0x00, 0x0F, 0xF8, 0x00, 0x7F, 0xE0, 0x03, 0xC3, 0xC0, 0x0E, 0x07, 0x00, + 0x70, 0x1C, 0x01, 0xC0, 0x70, 0x07, 0x01, 0xC0, 0x1C, 0x0E, 0x00, 0x78, + 0x78, 0x00, 0xFF, 0xC0, 0x03, 0xFE, 0x1F, 0x03, 0xE3, 0xFC, 0x00, 0x7F, + 0xC0, 0x0F, 0xF8, 0x03, 0xFF, 0x00, 0x7F, 0xC0, 0x03, 0xF8, 0x7C, 0x0F, + 0x07, 0xFC, 0x00, 0x3F, 0xF0, 0x01, 0xE1, 0xE0, 0x07, 0x03, 0x80, 0x38, + 0x0E, 0x00, 0xE0, 0x38, 0x03, 0x80, 0xE0, 0x0E, 0x07, 0x00, 0x3C, 0x3C, + 0x00, 0x7F, 0xE0, 0x01, 0xFF, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x1F, 0x00, + 0x01, 0xFF, 0x80, 0x3F, 0xFC, 0x03, 0xFF, 0xE0, 0x1F, 0xFE, 0x01, 0xF1, + 0xE0, 0x1F, 0x04, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x01, + 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x07, 0xF8, 0x00, 0x7F, 0xE3, + 0xE7, 0xFF, 0x3F, 0x7E, 0xFF, 0xFB, 0xE7, 0xFF, 0x9E, 0x1F, 0xF1, 0xF0, + 0xFF, 0x8F, 0x83, 0xF8, 0x7C, 0x1F, 0xC3, 0xF0, 0xFF, 0x9F, 0xFF, 0xFC, + 0x7F, 0xFF, 0xE3, 0xFF, 0xFF, 0x0F, 0xFD, 0xF0, 0x1F, 0x80, 0x00, 0x7E, + 0xFD, 0xF3, 0xE7, 0xCF, 0x3E, 0x7C, 0xF1, 0xE3, 0xC7, 0x0E, 0x18, 0x00, + 0x00, 0x18, 0x00, 0xF0, 0x07, 0xC0, 0x3F, 0x01, 0xF8, 0x07, 0xC0, 0x3E, + 0x01, 0xF8, 0x07, 0xC0, 0x3E, 0x00, 0xF8, 0x07, 0xC0, 0x1F, 0x00, 0xF8, + 0x03, 0xE0, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x3E, 0x00, 0xF8, + 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, + 0x00, 0xFC, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x80, 0x7E, 0x00, 0xFC, 0x03, + 0xF0, 0x07, 0xC0, 0x1E, 0x00, 0x00, 0xC0, 0x07, 0x80, 0x3F, 0x00, 0xFC, + 0x03, 0xF0, 0x07, 0xE0, 0x1F, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xF0, 0x07, + 0xC0, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, + 0xF0, 0x07, 0xC0, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x1F, 0x00, 0x7C, 0x01, + 0xF0, 0x0F, 0x80, 0x3E, 0x01, 0xF0, 0x0F, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, + 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x3E, 0x00, 0xF0, 0x00, 0x00, 0x3C, + 0x00, 0x01, 0xE0, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x08, + 0x3C, 0x09, 0xF9, 0xE7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, + 0x87, 0xFF, 0xE0, 0x07, 0xF8, 0x00, 0x7F, 0xC0, 0x07, 0xFF, 0x00, 0x7F, + 0xF8, 0x07, 0xE7, 0xE0, 0x3E, 0x3F, 0x01, 0xE0, 0xF8, 0x0E, 0x07, 0x80, + 0x00, 0x07, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x0F, 0x00, + 0x00, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1E, 0x00, + 0x00, 0x3E, 0x00, 0x00, 0x3E, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x7C, 0x00, + 0x00, 0x78, 0x00, 0x00, 0x78, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xF0, 0x00, + 0x01, 0xF0, 0x00, 0x00, 0xE0, 0x00, 0x03, 0xF0, 0x7E, 0x07, 0xC0, 0xFC, + 0x0F, 0x81, 0xF0, 0x1E, 0x03, 0xE0, 0x3C, 0x07, 0x80, 0x78, 0x0F, 0x00, + 0xE0, 0x0C, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x3C, 0xFF, 0xFF, 0xFF, 0xCF, 0x00, + 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x01, 0xF0, 0x00, + 0x00, 0x3E, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x0F, + 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x00, + 0x00, 0x3E, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x1F, + 0x80, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x07, 0xE0, 0x00, + 0x00, 0x7C, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x07, 0xC0, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x3E, + 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x0F, 0x80, 0x00, + 0x01, 0xF0, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, + 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x07, 0x00, 0x00, + 0x00, 0x00, 0x0F, 0xC0, 0x00, 0xFF, 0xE0, 0x03, 0xFF, 0xE0, 0x1F, 0xFF, + 0xE0, 0x7F, 0xFF, 0xC0, 0xFC, 0x1F, 0x83, 0xF0, 0x1F, 0x8F, 0xC0, 0x1F, + 0x1F, 0x00, 0x3E, 0x7C, 0x00, 0x7C, 0xF8, 0x00, 0xF9, 0xF0, 0x01, 0xF3, + 0xC0, 0x07, 0xCF, 0x80, 0x0F, 0x9F, 0x00, 0x1E, 0x3E, 0x00, 0x3C, 0x78, + 0x00, 0xF8, 0xF0, 0x01, 0xF3, 0xE0, 0x03, 0xE7, 0xC0, 0x07, 0x8F, 0x80, + 0x1F, 0x1F, 0x00, 0x3E, 0x3E, 0x00, 0xF8, 0x7C, 0x01, 0xF0, 0xFC, 0x07, + 0xC1, 0xFC, 0x3F, 0x81, 0xFF, 0xFE, 0x03, 0xFF, 0xF8, 0x03, 0xFF, 0xE0, + 0x03, 0xFF, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x7E, + 0x00, 0x0F, 0xF0, 0x01, 0xFF, 0x80, 0x1F, 0xFC, 0x03, 0xFB, 0xE0, 0x1F, + 0x9E, 0x00, 0xF1, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x03, 0xE0, + 0x00, 0x1E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x03, + 0xC0, 0x00, 0x1E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, + 0x03, 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, + 0x01, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, + 0xFF, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0x03, 0xFF, 0x80, 0x03, 0xFF, 0xF0, + 0x01, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0x80, 0x7F, 0x07, 0xF0, 0x1F, 0x00, + 0xFC, 0x0F, 0x80, 0x1F, 0x03, 0xE0, 0x07, 0xC0, 0xF0, 0x01, 0xF0, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0xC0, + 0x00, 0x0F, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF8, 0x00, 0x03, 0xF8, + 0x00, 0x03, 0xFC, 0x00, 0x01, 0xFE, 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, + 0x00, 0x00, 0xFF, 0x00, 0x00, 0x7F, 0x80, 0x70, 0x3F, 0x80, 0x3E, 0x1F, + 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFC, + 0x3F, 0xFF, 0xFF, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x0F, 0xFE, 0x00, 0x1F, + 0xFF, 0x80, 0x1F, 0xFF, 0xE0, 0x1F, 0xFF, 0xF8, 0x0F, 0x81, 0xFC, 0x07, + 0x00, 0x3E, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x0F, 0xC0, + 0x00, 0x07, 0xC0, 0x00, 0x0F, 0xC0, 0x01, 0xFF, 0xC0, 0x01, 0xFF, 0xC0, + 0x00, 0xFF, 0x80, 0x00, 0x7F, 0xE0, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0xFE, + 0x00, 0x00, 0x1F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, + 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xFC, 0x3C, 0x01, + 0xFC, 0x3F, 0xFF, 0xFC, 0x1F, 0xFF, 0xFC, 0x0F, 0xFF, 0xFC, 0x03, 0xFF, + 0xFC, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x07, 0xF0, 0x00, + 0x3F, 0xC0, 0x01, 0xFE, 0x00, 0x0F, 0xF8, 0x00, 0x7F, 0xE0, 0x03, 0xFF, + 0x80, 0x1F, 0xBE, 0x00, 0x7C, 0xF0, 0x03, 0xE7, 0xC0, 0x1F, 0x1F, 0x00, + 0xF8, 0x7C, 0x07, 0xE1, 0xE0, 0x3F, 0x07, 0x81, 0xF8, 0x3E, 0x07, 0xC0, + 0xF8, 0x3E, 0x03, 0xC1, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFE, + 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0x80, 0x00, 0xF8, 0x00, 0x3F, 0xF8, 0x01, + 0xFF, 0xE0, 0x07, 0xFF, 0x80, 0x1F, 0xFE, 0x00, 0x7F, 0xF0, 0x01, 0xFF, + 0xFF, 0x00, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0xC0, 0x3F, 0xFF, 0xE0, 0x3F, + 0xFF, 0xE0, 0x1F, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, + 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, 0xF7, 0xF0, 0x00, 0xFF, 0xFE, 0x00, + 0x7F, 0xFF, 0x80, 0x3F, 0xFF, 0xE0, 0x1F, 0xFF, 0xF0, 0x0F, 0x01, 0xFC, + 0x00, 0x00, 0x7E, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x07, + 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, 0xF0, 0x00, 0x01, 0xF0, 0x00, 0x00, + 0xF8, 0x00, 0x00, 0xF8, 0x3C, 0x03, 0xFC, 0x3F, 0xFF, 0xFC, 0x1F, 0xFF, + 0xFC, 0x0F, 0xFF, 0xFC, 0x03, 0xFF, 0xF8, 0x00, 0x3F, 0xE0, 0x00, 0x00, + 0x01, 0xFC, 0x00, 0x07, 0xFE, 0x00, 0x1F, 0xFF, 0x00, 0x7F, 0xFF, 0x00, + 0xFF, 0xFE, 0x01, 0xFE, 0x1C, 0x03, 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x0F, + 0xC0, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3E, 0x3E, 0x00, 0x3E, + 0xFF, 0x80, 0x7D, 0xFF, 0xC0, 0x7F, 0xFF, 0xE0, 0x7F, 0xFF, 0xE0, 0x7F, + 0x87, 0xF0, 0xFF, 0x03, 0xF0, 0xFC, 0x01, 0xF0, 0xF8, 0x01, 0xF0, 0xF8, + 0x01, 0xF0, 0xF8, 0x01, 0xF0, 0xF8, 0x03, 0xE0, 0xF8, 0x03, 0xE0, 0xFC, + 0x07, 0xC0, 0xFE, 0x0F, 0xC0, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, 0x00, 0x3F, + 0xFE, 0x00, 0x1F, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x7F, 0xFF, 0xFD, 0xFF, + 0xFF, 0xE7, 0xFF, 0xFF, 0xBF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFB, 0xE0, 0x07, + 0xCF, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x00, + 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x01, + 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, + 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x00, + 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xE0, + 0x00, 0x1F, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0xFF, + 0xE0, 0x07, 0xFF, 0xE0, 0x1F, 0xFF, 0xE0, 0x7F, 0xFF, 0xC0, 0xFC, 0x1F, + 0xC3, 0xF0, 0x1F, 0x8F, 0xC0, 0x1F, 0x1F, 0x00, 0x3E, 0x3E, 0x00, 0x7C, + 0x7C, 0x01, 0xF0, 0xFC, 0x07, 0xE0, 0xFC, 0x1F, 0x81, 0xFF, 0xFE, 0x01, + 0xFF, 0xF0, 0x01, 0xFF, 0xE0, 0x0F, 0xFF, 0xE0, 0x3F, 0xFF, 0xE0, 0xFE, + 0x0F, 0xC3, 0xF0, 0x0F, 0xC7, 0xC0, 0x0F, 0x9F, 0x00, 0x1F, 0x3E, 0x00, + 0x3E, 0x7C, 0x00, 0xFC, 0xFC, 0x03, 0xF1, 0xFC, 0x1F, 0xE3, 0xFF, 0xFF, + 0x83, 0xFF, 0xFE, 0x03, 0xFF, 0xF8, 0x03, 0xFF, 0xC0, 0x01, 0xFC, 0x00, + 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x3F, 0xF8, 0x00, 0xFF, 0xFC, 0x01, 0xFF, + 0xFE, 0x03, 0xFF, 0xFE, 0x03, 0xF0, 0x7F, 0x07, 0xE0, 0x3F, 0x07, 0xC0, + 0x1F, 0x0F, 0xC0, 0x1F, 0x0F, 0x80, 0x1F, 0x0F, 0x80, 0x1F, 0x0F, 0x80, + 0x3F, 0x0F, 0xC0, 0x7F, 0x0F, 0xE1, 0xFF, 0x07, 0xFF, 0xFE, 0x07, 0xFF, + 0xFE, 0x03, 0xFF, 0xBE, 0x01, 0xFF, 0x7C, 0x00, 0xFC, 0x7C, 0x00, 0x00, + 0xFC, 0x00, 0x01, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x03, 0xF0, 0x00, 0x0F, + 0xE0, 0x00, 0x1F, 0xC0, 0x38, 0x7F, 0x80, 0x7F, 0xFF, 0x00, 0xFF, 0xFE, + 0x00, 0xFF, 0xF8, 0x00, 0x7F, 0xE0, 0x00, 0x3F, 0x80, 0x00, 0x07, 0x83, + 0xF1, 0xFC, 0x7F, 0x1F, 0x83, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x1F, 0x8F, 0xE3, 0xF8, 0xFC, + 0x1E, 0x00, 0x00, 0x3C, 0x00, 0xFC, 0x03, 0xF8, 0x07, 0xF0, 0x0F, 0xC0, + 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x03, 0xE0, 0x0F, 0xC0, + 0x1F, 0x00, 0x7C, 0x00, 0xF0, 0x03, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x38, + 0x00, 0xF0, 0x01, 0xC0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x03, 0xC0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xF0, 0x00, 0x3F, 0xE0, 0x00, + 0x7F, 0xC0, 0x00, 0xFF, 0x80, 0x03, 0xFF, 0x00, 0x07, 0xFE, 0x00, 0x0F, + 0xFC, 0x00, 0x1F, 0xF0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0xFF, 0x00, 0x00, + 0x3F, 0xE0, 0x00, 0x0F, 0xFC, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x3F, 0xE0, + 0x00, 0x07, 0xFC, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, + 0x80, 0x1F, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xFC, 0xFF, + 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, + 0xF3, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0x80, 0x00, + 0x00, 0x00, 0x07, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, + 0xFF, 0x80, 0x00, 0x1F, 0xF0, 0x00, 0x07, 0xFE, 0x00, 0x00, 0xFF, 0xC0, + 0x00, 0x1F, 0xF0, 0x00, 0x07, 0xFE, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x7F, + 0xE0, 0x00, 0xFF, 0xC0, 0x01, 0xFF, 0x80, 0x03, 0xFE, 0x00, 0x07, 0xFC, + 0x00, 0x1F, 0xF8, 0x00, 0x3F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0x1F, 0x80, + 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x01, 0xFF, + 0xE1, 0xFF, 0xFE, 0x3F, 0xFF, 0xE7, 0xFF, 0xFF, 0xF8, 0x1F, 0xFE, 0x00, + 0xFF, 0x80, 0x1F, 0xF0, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x0F, + 0xE0, 0x07, 0xF8, 0x07, 0xFE, 0x01, 0xFF, 0x80, 0x7F, 0xC0, 0x0F, 0xE0, + 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xF0, 0x00, 0x3F, 0x00, 0x0F, 0xE0, 0x01, 0xFC, 0x00, + 0x3F, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x7F, 0xF0, 0x01, + 0xFF, 0xF0, 0x0F, 0xFF, 0xE0, 0x3F, 0x07, 0xE0, 0x7C, 0x07, 0xC1, 0xE0, + 0x07, 0x87, 0xC0, 0x0F, 0x0F, 0x00, 0x1C, 0x3C, 0x00, 0x78, 0x78, 0x07, + 0xF1, 0xE0, 0x3F, 0xE3, 0xC1, 0xFF, 0x87, 0x87, 0xFF, 0x0E, 0x1F, 0x9E, + 0x3C, 0x7C, 0x3C, 0x78, 0xF0, 0x78, 0xF3, 0xC0, 0xE1, 0xC7, 0x83, 0xC3, + 0x8F, 0x07, 0x8F, 0x1E, 0x0F, 0x1E, 0x3E, 0x1C, 0x3C, 0x7F, 0xFC, 0x78, + 0x7F, 0xFC, 0xF0, 0x7F, 0xF1, 0xE0, 0x3F, 0xE3, 0xC0, 0x00, 0x07, 0x80, + 0x00, 0x0F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x3F, 0x01, + 0xC0, 0x7F, 0xFF, 0x80, 0x7F, 0xFE, 0x00, 0x7F, 0xF8, 0x00, 0x3F, 0x80, + 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x01, 0xFF, 0xF8, 0x00, 0x07, 0xFF, 0xE0, + 0x00, 0x1F, 0xFF, 0x80, 0x00, 0x7F, 0xFE, 0x00, 0x00, 0x0F, 0xFC, 0x00, + 0x00, 0x7F, 0xF0, 0x00, 0x01, 0xE7, 0xC0, 0x00, 0x0F, 0x9F, 0x00, 0x00, + 0x7C, 0x7C, 0x00, 0x01, 0xE1, 0xF8, 0x00, 0x0F, 0x87, 0xE0, 0x00, 0x7C, + 0x0F, 0x80, 0x01, 0xF0, 0x3E, 0x00, 0x0F, 0x80, 0xF8, 0x00, 0x3F, 0xFF, + 0xF0, 0x01, 0xFF, 0xFF, 0xC0, 0x0F, 0xFF, 0xFF, 0x00, 0x3F, 0xFF, 0xFC, + 0x01, 0xFF, 0xFF, 0xF8, 0x0F, 0xC0, 0x07, 0xE0, 0x3E, 0x00, 0x0F, 0x87, + 0xFF, 0x03, 0xFF, 0xBF, 0xFC, 0x1F, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xFF, + 0xC1, 0xFF, 0xEF, 0xFE, 0x07, 0xFF, 0x00, 0x03, 0xFF, 0xFF, 0x80, 0x3F, + 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0xFC, 0x0F, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, + 0xFF, 0x80, 0x7C, 0x00, 0xFC, 0x03, 0xE0, 0x03, 0xE0, 0x1E, 0x00, 0x1F, + 0x01, 0xF0, 0x00, 0xF8, 0x0F, 0x80, 0x0F, 0x80, 0x7C, 0x01, 0xF8, 0x03, + 0xFF, 0xFF, 0x80, 0x1F, 0xFF, 0xF8, 0x01, 0xFF, 0xFF, 0xC0, 0x0F, 0xFF, + 0xFF, 0x80, 0x7F, 0xFF, 0xFC, 0x03, 0xC0, 0x0F, 0xF0, 0x3E, 0x00, 0x1F, + 0x81, 0xF0, 0x00, 0x7C, 0x0F, 0x80, 0x03, 0xE0, 0x78, 0x00, 0x1F, 0x03, + 0xC0, 0x03, 0xF1, 0xFF, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, + 0xFF, 0x87, 0xFF, 0xFF, 0xF0, 0x1F, 0xFF, 0xFE, 0x00, 0x00, 0x07, 0xF0, + 0x00, 0x03, 0xFF, 0xE6, 0x00, 0x7F, 0xFF, 0xF0, 0x1F, 0xFF, 0xFF, 0x03, + 0xFF, 0xFF, 0xF0, 0x7F, 0x81, 0xFF, 0x0F, 0xE0, 0x07, 0xE1, 0xF8, 0x00, + 0x3E, 0x1F, 0x00, 0x03, 0xE3, 0xF0, 0x00, 0x3C, 0x3E, 0x00, 0x03, 0xC7, + 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x7C, 0x00, + 0x00, 0x0F, 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, + 0xF8, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x0F, 0xC0, + 0x00, 0x70, 0x7E, 0x00, 0x1F, 0x07, 0xF8, 0x07, 0xF0, 0x3F, 0xFF, 0xFF, + 0x03, 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xF8, 0x00, 0x7F, 0xFE, 0x00, 0x00, + 0xFF, 0x00, 0x00, 0x03, 0xFF, 0xFC, 0x00, 0x7F, 0xFF, 0xF0, 0x07, 0xFF, + 0xFF, 0x80, 0x7F, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0xE0, 0x1F, 0x00, 0xFE, + 0x01, 0xF0, 0x07, 0xE0, 0x1E, 0x00, 0x3F, 0x01, 0xE0, 0x01, 0xF0, 0x3E, + 0x00, 0x1F, 0x03, 0xE0, 0x01, 0xF0, 0x3E, 0x00, 0x1F, 0x03, 0xC0, 0x01, + 0xF0, 0x7C, 0x00, 0x1F, 0x07, 0xC0, 0x03, 0xF0, 0x7C, 0x00, 0x3E, 0x07, + 0x80, 0x03, 0xE0, 0x78, 0x00, 0x7E, 0x0F, 0x80, 0x07, 0xC0, 0xF8, 0x00, + 0xFC, 0x0F, 0x80, 0x1F, 0x80, 0xF0, 0x07, 0xF0, 0x7F, 0xFF, 0xFE, 0x07, + 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, + 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xF8, 0x3F, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, + 0xFE, 0x1F, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, 0xFF, 0x00, 0x78, 0x00, 0xF8, + 0x07, 0xC0, 0x07, 0xC0, 0x3E, 0x00, 0x3E, 0x01, 0xF0, 0xF1, 0xE0, 0x0F, + 0x0F, 0x8E, 0x00, 0x78, 0x7C, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0x3F, 0xFE, + 0x00, 0x01, 0xFF, 0xF0, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0xFF, 0xFC, 0x00, + 0x07, 0xC3, 0xC0, 0x00, 0x3E, 0x1E, 0x1E, 0x01, 0xE0, 0xE0, 0xF0, 0x0F, + 0x00, 0x0F, 0x80, 0xF8, 0x00, 0x7C, 0x07, 0xC0, 0x03, 0xE1, 0xFF, 0xFF, + 0xFE, 0x1F, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0xFC, + 0x3F, 0xFF, 0xFF, 0xC0, 0x03, 0xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0xF8, + 0x1F, 0xFF, 0xFF, 0xF0, 0x3F, 0xFF, 0xFF, 0xE0, 0x3F, 0xFF, 0xFF, 0xC0, + 0x1F, 0x00, 0x0F, 0x80, 0x3E, 0x00, 0x1E, 0x00, 0x78, 0x00, 0x7C, 0x00, + 0xF0, 0x70, 0xF8, 0x03, 0xE1, 0xF0, 0xE0, 0x07, 0xC3, 0xC0, 0x00, 0x0F, + 0xFF, 0x80, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x7F, 0xFE, 0x00, 0x00, 0xFF, + 0xFC, 0x00, 0x01, 0xFF, 0xF0, 0x00, 0x03, 0xC3, 0xE0, 0x00, 0x07, 0x87, + 0xC0, 0x00, 0x1F, 0x07, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x7C, 0x00, + 0x00, 0x00, 0xF0, 0x00, 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0x3F, 0xFF, 0x80, + 0x00, 0xFF, 0xFF, 0x00, 0x01, 0xFF, 0xFE, 0x00, 0x01, 0xFF, 0xF8, 0x00, + 0x00, 0x00, 0x07, 0xF8, 0x60, 0x03, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0xF0, + 0x1F, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xE0, 0x7F, 0x80, 0xFE, 0x0F, 0xE0, + 0x03, 0xE0, 0xF8, 0x00, 0x3C, 0x1F, 0x00, 0x03, 0xC3, 0xF0, 0x00, 0x00, + 0x3E, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x07, 0xC0, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0x07, 0xC0, 0x7F, 0xFC, 0xF8, 0x0F, 0xFF, + 0xEF, 0x80, 0xFF, 0xFE, 0xF8, 0x0F, 0xFF, 0xCF, 0x80, 0x7F, 0xF8, 0xF8, + 0x00, 0x1F, 0x0F, 0xC0, 0x01, 0xF0, 0xFE, 0x00, 0x1F, 0x07, 0xF8, 0x07, + 0xE0, 0x7F, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xFC, 0x00, + 0x7F, 0xFE, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x01, 0xFF, 0x0F, 0xF8, 0x0F, + 0xFC, 0x7F, 0xF0, 0x7F, 0xF1, 0xFF, 0xC1, 0xFF, 0xC7, 0xFE, 0x03, 0xFE, + 0x1F, 0xF0, 0x07, 0xC0, 0x0F, 0x80, 0x1F, 0x00, 0x3C, 0x00, 0x78, 0x00, + 0xF0, 0x01, 0xE0, 0x07, 0xC0, 0x0F, 0x80, 0x1F, 0x00, 0x3E, 0x00, 0x7C, + 0x00, 0xFF, 0xFF, 0xE0, 0x03, 0xFF, 0xFF, 0x80, 0x1F, 0xFF, 0xFE, 0x00, + 0x7F, 0xFF, 0xF8, 0x01, 0xFF, 0xFF, 0xC0, 0x07, 0x80, 0x1F, 0x00, 0x1E, + 0x00, 0x7C, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xE0, 0x07, 0xC0, 0x0F, 0x80, + 0x1E, 0x00, 0x3C, 0x00, 0xF8, 0x07, 0xFE, 0x1F, 0xF8, 0x3F, 0xF8, 0xFF, + 0xF0, 0xFF, 0xE3, 0xFF, 0xC3, 0xFF, 0x8F, 0xFE, 0x0F, 0xFC, 0x3F, 0xF8, + 0x00, 0x03, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0xE0, 0xFF, + 0xFF, 0xF0, 0x7F, 0xFF, 0xF0, 0x00, 0x7C, 0x00, 0x00, 0x3E, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x00, + 0x03, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, 0xF0, 0x00, 0x00, 0xF8, 0x00, + 0x00, 0x7C, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x1F, 0x00, + 0x00, 0x0F, 0x80, 0x00, 0x07, 0x80, 0x00, 0x07, 0xC0, 0x01, 0xFF, 0xFF, + 0xC1, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xF8, 0x1F, 0xFF, + 0xF8, 0x00, 0x00, 0x07, 0xFF, 0xFE, 0x00, 0x1F, 0xFF, 0xFC, 0x00, 0x3F, + 0xFF, 0xF8, 0x00, 0x7F, 0xFF, 0xF0, 0x00, 0x7F, 0xFF, 0xC0, 0x00, 0x01, + 0xF0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x0F, + 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0xF8, + 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x07, 0xC0, 0x07, 0x00, 0x0F, 0x80, + 0x1F, 0x00, 0x1F, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x78, 0x00, 0x78, 0x01, + 0xF0, 0x01, 0xF0, 0x03, 0xE0, 0x03, 0xE0, 0x07, 0xC0, 0x0F, 0x80, 0x0F, + 0x80, 0x3F, 0x00, 0x1F, 0xC0, 0xFC, 0x00, 0x7F, 0xFF, 0xF8, 0x00, 0xFF, + 0xFF, 0xE0, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x3F, 0xFC, 0x00, 0x00, 0x1F, + 0xC0, 0x00, 0x00, 0x03, 0xFF, 0xC3, 0xFE, 0x0F, 0xFF, 0x8F, 0xFC, 0x1F, + 0xFF, 0x3F, 0xF8, 0x3F, 0xFE, 0x7F, 0xF0, 0x7F, 0xF8, 0x7F, 0xC0, 0x1F, + 0x01, 0xFC, 0x00, 0x3E, 0x07, 0xF0, 0x00, 0x78, 0x3F, 0x80, 0x01, 0xF0, + 0xFE, 0x00, 0x03, 0xE3, 0xF0, 0x00, 0x07, 0xDF, 0xC0, 0x00, 0x0F, 0xFE, + 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x7F, 0xFE, 0x00, 0x00, 0xFF, 0xFE, + 0x00, 0x01, 0xFC, 0xFC, 0x00, 0x03, 0xE0, 0xFC, 0x00, 0x0F, 0x81, 0xF8, + 0x00, 0x1F, 0x01, 0xF8, 0x00, 0x3E, 0x03, 0xF0, 0x00, 0x78, 0x03, 0xE0, + 0x00, 0xF0, 0x07, 0xE0, 0x1F, 0xFE, 0x0F, 0xF8, 0x7F, 0xFC, 0x1F, 0xF8, + 0xFF, 0xF8, 0x1F, 0xF1, 0xFF, 0xF0, 0x3F, 0xE1, 0xFF, 0xC0, 0x7F, 0x80, + 0x03, 0xFF, 0xF8, 0x00, 0xFF, 0xFF, 0x00, 0x1F, 0xFF, 0xE0, 0x03, 0xFF, + 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x0F, 0x80, 0x00, + 0x01, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x01, 0xF0, + 0x00, 0x00, 0x3C, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xF0, 0x00, 0x00, + 0x3E, 0x00, 0x00, 0x07, 0xC0, 0x0E, 0x00, 0xF0, 0x01, 0xE0, 0x3E, 0x00, + 0x7C, 0x07, 0xC0, 0x0F, 0x80, 0xF8, 0x01, 0xF0, 0x1E, 0x00, 0x7C, 0x07, + 0xC0, 0x0F, 0x9F, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, + 0x9F, 0xFF, 0xFF, 0xF1, 0xFF, 0xFF, 0xFE, 0x00, 0x03, 0xFC, 0x00, 0x3F, + 0xC1, 0xFF, 0x00, 0x1F, 0xF0, 0x7F, 0xC0, 0x07, 0xFC, 0x1F, 0xF0, 0x03, + 0xFE, 0x01, 0xFE, 0x01, 0xFE, 0x00, 0xFF, 0x80, 0xFF, 0x80, 0x3F, 0xE0, + 0x3F, 0xE0, 0x0F, 0xF8, 0x1F, 0xF0, 0x03, 0xFF, 0x0F, 0xFC, 0x00, 0xF7, + 0xC3, 0xFF, 0x00, 0x7D, 0xF1, 0xF7, 0xC0, 0x1F, 0x7C, 0xFD, 0xF0, 0x07, + 0xDF, 0xBE, 0x78, 0x01, 0xE3, 0xFF, 0x3E, 0x00, 0x78, 0xFF, 0xCF, 0x80, + 0x3E, 0x3F, 0xE3, 0xE0, 0x0F, 0x87, 0xF0, 0xF8, 0x03, 0xE1, 0xFC, 0x3C, + 0x00, 0xF0, 0x7E, 0x1F, 0x00, 0x7C, 0x1F, 0x07, 0xC0, 0x1F, 0x00, 0x01, + 0xF0, 0x07, 0xC0, 0x00, 0x78, 0x07, 0xFE, 0x01, 0xFF, 0x83, 0xFF, 0xC0, + 0xFF, 0xF0, 0xFF, 0xF0, 0x7F, 0xFC, 0x3F, 0xF8, 0x1F, 0xFE, 0x0F, 0xFC, + 0x03, 0xFF, 0x00, 0x07, 0xF8, 0x07, 0xFF, 0x0F, 0xFC, 0x0F, 0xFF, 0x0F, + 0xFC, 0x0F, 0xFF, 0x0F, 0xFC, 0x0F, 0xFF, 0x0F, 0xFE, 0x0F, 0xFE, 0x01, + 0xFE, 0x00, 0xF8, 0x01, 0xFF, 0x00, 0xF0, 0x01, 0xFF, 0x01, 0xF0, 0x03, + 0xFF, 0x81, 0xF0, 0x03, 0xFF, 0x81, 0xF0, 0x03, 0xEF, 0xC1, 0xF0, 0x03, + 0xCF, 0xC1, 0xE0, 0x07, 0xC7, 0xE3, 0xE0, 0x07, 0xC7, 0xE3, 0xE0, 0x07, + 0xC3, 0xF3, 0xE0, 0x07, 0xC3, 0xF3, 0xC0, 0x07, 0x81, 0xF7, 0xC0, 0x0F, + 0x81, 0xFF, 0xC0, 0x0F, 0x80, 0xFF, 0xC0, 0x0F, 0x80, 0xFF, 0xC0, 0x0F, + 0x00, 0xFF, 0x80, 0x0F, 0x00, 0x7F, 0x80, 0x7F, 0xF0, 0x7F, 0x80, 0xFF, + 0xF0, 0x3F, 0x80, 0xFF, 0xF0, 0x3F, 0x00, 0xFF, 0xF0, 0x1F, 0x00, 0x7F, + 0xE0, 0x1F, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xFF, 0x80, 0x01, 0xFF, + 0xF8, 0x00, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xF8, 0x0F, 0xF0, 0x7F, 0x83, + 0xF8, 0x03, 0xF0, 0xFC, 0x00, 0x7E, 0x1F, 0x00, 0x07, 0xE7, 0xE0, 0x00, + 0x7C, 0xF8, 0x00, 0x0F, 0xBE, 0x00, 0x01, 0xF7, 0xC0, 0x00, 0x3E, 0xF0, + 0x00, 0x07, 0xFE, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x3E, 0xF8, 0x00, 0x07, + 0xDF, 0x00, 0x00, 0xFB, 0xE0, 0x00, 0x3E, 0x7C, 0x00, 0x0F, 0xCF, 0xC0, + 0x01, 0xF0, 0xF8, 0x00, 0x7E, 0x1F, 0x80, 0x3F, 0x83, 0xFC, 0x1F, 0xE0, + 0x3F, 0xFF, 0xF8, 0x03, 0xFF, 0xFE, 0x00, 0x3F, 0xFF, 0x00, 0x03, 0xFF, + 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xF8, + 0x07, 0xFF, 0xFF, 0xC0, 0x7F, 0xFF, 0xFE, 0x07, 0xFF, 0xFF, 0xF0, 0x0F, + 0x80, 0x7F, 0x00, 0xF8, 0x01, 0xF0, 0x0F, 0x00, 0x1F, 0x01, 0xF0, 0x01, + 0xF0, 0x1F, 0x00, 0x1F, 0x01, 0xF0, 0x03, 0xE0, 0x1E, 0x00, 0x7E, 0x01, + 0xE0, 0x0F, 0xC0, 0x3F, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, + 0xE0, 0x03, 0xFF, 0xFC, 0x00, 0x7F, 0xFE, 0x00, 0x07, 0xC0, 0x00, 0x00, + 0x7C, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x78, 0x00, 0x00, 0x7F, 0xFF, + 0x00, 0x0F, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0x00, 0x0F, 0xFF, 0xF0, 0x00, + 0x7F, 0xFE, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xFF, 0x80, 0x03, + 0xFF, 0xF8, 0x00, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xF8, 0x0F, 0xF0, 0x7F, + 0x83, 0xF8, 0x03, 0xF0, 0xFC, 0x00, 0x3F, 0x1F, 0x00, 0x07, 0xE7, 0xC0, + 0x00, 0x7D, 0xF8, 0x00, 0x0F, 0xBE, 0x00, 0x01, 0xF7, 0xC0, 0x00, 0x3F, + 0xF0, 0x00, 0x07, 0xFE, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x3E, 0xF8, 0x00, + 0x07, 0xDF, 0x00, 0x01, 0xFB, 0xE0, 0x00, 0x3E, 0x7E, 0x00, 0x0F, 0x8F, + 0xC0, 0x03, 0xF0, 0xFC, 0x01, 0xFC, 0x1F, 0xE0, 0xFF, 0x01, 0xFF, 0xFF, + 0xC0, 0x1F, 0xFF, 0xF0, 0x01, 0xFF, 0xFC, 0x00, 0x1F, 0xFE, 0x00, 0x01, + 0xFE, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1F, 0xF8, 0x38, 0x0F, 0xFF, 0xFF, + 0x81, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xFC, 0x0F, 0xFF, 0xFF, 0x00, 0xF0, + 0x1F, 0x80, 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x3F, 0xFF, 0xFC, 0x01, 0xFF, + 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, 0xFF, 0x00, 0x7C, 0x03, + 0xF8, 0x03, 0xE0, 0x07, 0xC0, 0x1E, 0x00, 0x3E, 0x00, 0xF0, 0x01, 0xF0, + 0x0F, 0x80, 0x1F, 0x80, 0x7C, 0x01, 0xF8, 0x03, 0xE0, 0x3F, 0x80, 0x1F, + 0xFF, 0xFC, 0x01, 0xFF, 0xFF, 0x80, 0x0F, 0xFF, 0xF8, 0x00, 0x7F, 0xFF, + 0x00, 0x03, 0xFF, 0xFC, 0x00, 0x1E, 0x07, 0xF0, 0x01, 0xF0, 0x1F, 0xC0, + 0x0F, 0x80, 0x7E, 0x00, 0x7C, 0x03, 0xF8, 0x03, 0xC0, 0x0F, 0xC0, 0xFF, + 0xE0, 0x7F, 0xCF, 0xFF, 0x01, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, 0xC0, + 0x3F, 0xDF, 0xFC, 0x01, 0xFC, 0x00, 0x0F, 0xE1, 0x80, 0x0F, 0xFF, 0xF0, + 0x0F, 0xFF, 0xFC, 0x07, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xC1, 0xFC, 0x0F, + 0xE0, 0x7C, 0x01, 0xF8, 0x3E, 0x00, 0x3E, 0x0F, 0x80, 0x0F, 0x03, 0xE0, + 0x03, 0xC0, 0xFC, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x07, 0xFF, 0x80, 0x01, + 0xFF, 0xFC, 0x00, 0x3F, 0xFF, 0x80, 0x03, 0xFF, 0xF0, 0x00, 0x07, 0xFE, + 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0xE1, 0xE0, 0x00, 0xF8, 0xF8, 0x00, + 0x3E, 0x3E, 0x00, 0x1F, 0x8F, 0xC0, 0x0F, 0xC3, 0xFC, 0x0F, 0xF0, 0xFF, + 0xFF, 0xF8, 0x3F, 0xFF, 0xFC, 0x0F, 0xFF, 0xFE, 0x03, 0x9F, 0xFE, 0x00, + 0x01, 0xFE, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xF7, 0xFF, + 0xFF, 0xFD, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0x9F, 0x07, 0x83, 0xE7, + 0x83, 0xE0, 0xFB, 0xE0, 0xF8, 0x3E, 0xF8, 0x3E, 0x0F, 0x3E, 0x0F, 0x07, + 0xCF, 0x07, 0xC1, 0xF3, 0x81, 0xF0, 0x38, 0x00, 0x7C, 0x00, 0x00, 0x1E, + 0x00, 0x00, 0x07, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0xF8, 0x00, 0x00, + 0x3E, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, 0x00, + 0x00, 0x7C, 0x00, 0x07, 0xFF, 0xF8, 0x01, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, + 0x80, 0x3F, 0xFF, 0xE0, 0x07, 0xFF, 0xF0, 0x00, 0x3F, 0xF0, 0x7F, 0xE7, + 0xFF, 0x8F, 0xFF, 0x7F, 0xF9, 0xFF, 0xF7, 0xFF, 0x1F, 0xFE, 0x7F, 0xF0, + 0xFF, 0xC1, 0xE0, 0x01, 0xF0, 0x1E, 0x00, 0x1F, 0x03, 0xE0, 0x01, 0xF0, + 0x3E, 0x00, 0x1F, 0x03, 0xE0, 0x01, 0xE0, 0x3C, 0x00, 0x3E, 0x07, 0xC0, + 0x03, 0xE0, 0x7C, 0x00, 0x3E, 0x07, 0xC0, 0x03, 0xC0, 0x7C, 0x00, 0x3C, + 0x07, 0x80, 0x07, 0xC0, 0xF8, 0x00, 0x7C, 0x0F, 0x80, 0x07, 0xC0, 0xF8, + 0x00, 0x78, 0x0F, 0x80, 0x0F, 0x80, 0xFC, 0x01, 0xF8, 0x0F, 0xC0, 0x3F, + 0x00, 0xFF, 0x07, 0xE0, 0x07, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xC0, 0x03, + 0xFF, 0xF0, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x7F, 0xF0, + 0x1F, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xFC, 0x0F, + 0xFF, 0x7F, 0xE0, 0x3F, 0xF8, 0x7C, 0x00, 0x1F, 0x01, 0xF0, 0x00, 0xF8, + 0x07, 0xC0, 0x03, 0xE0, 0x1F, 0x80, 0x1F, 0x00, 0x3E, 0x00, 0xF8, 0x00, + 0xF8, 0x03, 0xE0, 0x03, 0xE0, 0x1F, 0x00, 0x0F, 0xC0, 0xFC, 0x00, 0x1F, + 0x03, 0xE0, 0x00, 0x7C, 0x1F, 0x00, 0x01, 0xF0, 0xFC, 0x00, 0x07, 0xC3, + 0xE0, 0x00, 0x1F, 0x9F, 0x00, 0x00, 0x3E, 0xFC, 0x00, 0x00, 0xFB, 0xE0, + 0x00, 0x03, 0xFF, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x3F, 0xE0, 0x00, + 0x00, 0x7F, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, + 0x1F, 0x00, 0x00, 0x00, 0x7F, 0xF0, 0x3F, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, + 0xFC, 0x1F, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFE, 0x07, 0xFF, 0x1E, 0x00, + 0x01, 0xE0, 0xF0, 0x7C, 0x1F, 0x0F, 0x87, 0xE0, 0xF0, 0x7C, 0x3F, 0x0F, + 0x83, 0xE3, 0xF8, 0x7C, 0x1F, 0x1F, 0xE3, 0xC0, 0xF9, 0xFF, 0x3E, 0x07, + 0xCF, 0xF9, 0xF0, 0x3E, 0xFF, 0xCF, 0x01, 0xF7, 0xBE, 0xF8, 0x0F, 0xFD, + 0xF7, 0xC0, 0x7B, 0xCF, 0xFC, 0x03, 0xFE, 0x7F, 0xE0, 0x3F, 0xE3, 0xFF, + 0x01, 0xFF, 0x0F, 0xF0, 0x0F, 0xF0, 0x7F, 0x80, 0x7F, 0x83, 0xFC, 0x03, + 0xF8, 0x1F, 0xC0, 0x1F, 0xC0, 0xFE, 0x00, 0xFC, 0x07, 0xF0, 0x07, 0xE0, + 0x3F, 0x00, 0x3E, 0x01, 0xF8, 0x00, 0x01, 0xFE, 0x03, 0xFE, 0x03, 0xFF, + 0x07, 0xFF, 0x07, 0xFF, 0x07, 0xFF, 0x07, 0xFE, 0x07, 0xFE, 0x03, 0xFC, + 0x03, 0xFC, 0x00, 0xFC, 0x03, 0xF0, 0x00, 0xFE, 0x07, 0xE0, 0x00, 0x7E, + 0x1F, 0xC0, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x1F, + 0xFC, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x07, + 0xE0, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x7F, + 0xF8, 0x00, 0x00, 0xFC, 0xFC, 0x00, 0x01, 0xF8, 0x7E, 0x00, 0x03, 0xF0, + 0x7E, 0x00, 0x07, 0xE0, 0x3F, 0x00, 0x0F, 0xC0, 0x1F, 0x80, 0x7F, 0xE0, + 0x7F, 0xE0, 0xFF, 0xE0, 0xFF, 0xE0, 0xFF, 0xE0, 0xFF, 0xE0, 0xFF, 0xE0, + 0xFF, 0xE0, 0x7F, 0xC0, 0xFF, 0xC0, 0x7F, 0xC0, 0x7F, 0xFF, 0xF0, 0x3F, + 0xFF, 0xFC, 0x0F, 0xFF, 0xFF, 0x03, 0xFF, 0x7F, 0x80, 0xFF, 0x87, 0xC0, + 0x1F, 0x01, 0xF8, 0x0F, 0x80, 0x3E, 0x07, 0xC0, 0x0F, 0xC3, 0xE0, 0x01, + 0xF1, 0xF0, 0x00, 0x7E, 0xF8, 0x00, 0x0F, 0xFC, 0x00, 0x03, 0xFE, 0x00, + 0x00, 0x7F, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x00, 0xF0, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, + 0xE0, 0x00, 0x00, 0x78, 0x00, 0x07, 0xFF, 0xF0, 0x03, 0xFF, 0xFE, 0x00, + 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xC0, 0x0F, 0xFF, 0xE0, 0x00, 0x01, 0xFF, + 0xFF, 0xC0, 0x3F, 0xFF, 0xF8, 0x07, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xE0, + 0x3F, 0xFF, 0xFC, 0x07, 0xC0, 0x3F, 0x00, 0xF8, 0x0F, 0xC0, 0x1F, 0x03, + 0xF0, 0x03, 0xC0, 0xFC, 0x00, 0xF8, 0x3F, 0x00, 0x0E, 0x0F, 0xC0, 0x00, + 0x03, 0xF0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x1F, 0x80, + 0x00, 0x07, 0xE0, 0x00, 0x01, 0xF8, 0x0E, 0x00, 0x7E, 0x03, 0xE0, 0x1F, + 0x80, 0x7C, 0x07, 0xE0, 0x0F, 0x01, 0xF8, 0x03, 0xE0, 0x7E, 0x00, 0x7C, + 0x1F, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xFC, 0x0F, 0xFF, + 0xFF, 0x81, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0xFF, 0xC0, 0x3F, 0xF0, 0x0F, + 0xFC, 0x07, 0xFF, 0x01, 0xFF, 0x80, 0x7C, 0x00, 0x1E, 0x00, 0x07, 0x80, + 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x07, 0xC0, 0x01, + 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x07, 0x80, 0x03, 0xE0, 0x00, 0xF8, + 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, + 0x1F, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, + 0x80, 0x03, 0xC0, 0x01, 0xF0, 0x00, 0x7F, 0xE0, 0x1F, 0xF8, 0x07, 0xFE, + 0x01, 0xFF, 0x80, 0xFF, 0xC0, 0x00, 0x20, 0x03, 0xC0, 0x3E, 0x01, 0xF0, + 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x3E, 0x01, 0xF0, 0x0F, 0x80, + 0x7C, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x0F, 0x80, 0x7C, 0x03, + 0xE0, 0x1F, 0x80, 0x7C, 0x03, 0xE0, 0x1F, 0x00, 0x7C, 0x03, 0xE0, 0x1F, + 0x00, 0xF8, 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x07, 0xC0, 0x1F, 0x00, 0xF8, + 0x07, 0xC0, 0x3E, 0x00, 0xF0, 0x07, 0x80, 0x38, 0x00, 0xFF, 0xC0, 0x7F, + 0xE0, 0x1F, 0xF8, 0x07, 0xFE, 0x01, 0xFF, 0x80, 0x03, 0xE0, 0x00, 0xF0, + 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xE0, 0x00, 0x78, 0x00, + 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x1F, + 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x78, 0x00, 0x3E, 0x00, 0x0F, 0x80, + 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3C, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, + 0xF0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x0F, 0x80, 0x7F, 0xE0, 0x3F, 0xF8, + 0x0F, 0xFC, 0x03, 0xFF, 0x00, 0xFF, 0xC0, 0x00, 0x00, 0x08, 0x00, 0x01, + 0xC0, 0x00, 0x3C, 0x00, 0x07, 0xE0, 0x00, 0xFE, 0x00, 0x1F, 0xF0, 0x03, + 0xFF, 0x80, 0xFF, 0xF8, 0x1F, 0xCF, 0xC3, 0xF8, 0xFE, 0x7E, 0x07, 0xEF, + 0xC0, 0x3F, 0xF8, 0x03, 0xFF, 0x00, 0x1F, 0xE0, 0x00, 0xE0, 0x7F, 0xFF, + 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xEF, 0xFF, 0xFF, 0xFF, 0x00, 0x60, 0xF0, 0xF8, 0x7C, 0x3E, 0x1F, 0x0F, + 0x06, 0x00, 0x3F, 0xE0, 0x03, 0xFF, 0xF8, 0x07, 0xFF, 0xFC, 0x07, 0xFF, + 0xFE, 0x07, 0xFF, 0xFE, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3E, 0x00, 0x00, + 0x3E, 0x00, 0x7F, 0xFE, 0x03, 0xFF, 0xFC, 0x0F, 0xFF, 0xFC, 0x1F, 0xFF, + 0xFC, 0x3F, 0xFF, 0xFC, 0x7F, 0x00, 0x78, 0x7C, 0x00, 0x78, 0xF8, 0x00, + 0xF8, 0xF8, 0x03, 0xF8, 0xFC, 0x0F, 0xFE, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, + 0xFF, 0x7F, 0xFF, 0xFF, 0x3F, 0xFD, 0xFE, 0x0F, 0xE0, 0x00, 0x03, 0xFC, + 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x0F, 0xF0, 0x00, + 0x00, 0x3F, 0x80, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, + 0x1F, 0x00, 0x00, 0x00, 0xF0, 0xFE, 0x00, 0x0F, 0xBF, 0xFC, 0x00, 0x7F, + 0xFF, 0xF8, 0x03, 0xFF, 0xFF, 0xC0, 0x1F, 0xFF, 0xFF, 0x00, 0xFF, 0x03, + 0xF8, 0x0F, 0xE0, 0x07, 0xE0, 0x7E, 0x00, 0x3F, 0x03, 0xE0, 0x00, 0xF8, + 0x1F, 0x00, 0x07, 0xC0, 0xF0, 0x00, 0x3E, 0x0F, 0x80, 0x01, 0xF0, 0x7C, + 0x00, 0x1F, 0x03, 0xE0, 0x00, 0xF8, 0x1F, 0x00, 0x0F, 0xC0, 0xFC, 0x00, + 0x7C, 0x0F, 0xE0, 0x07, 0xE3, 0xFF, 0xC0, 0xFE, 0x3F, 0xFF, 0xFF, 0xE1, + 0xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0xE0, 0x7F, 0x9F, 0xFC, 0x00, 0x00, + 0x3F, 0x80, 0x00, 0x00, 0x1F, 0xE3, 0x80, 0x7F, 0xFF, 0xC0, 0x7F, 0xFF, + 0xE0, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xF8, 0xFF, 0x01, 0xFC, 0x7E, 0x00, + 0x7C, 0x7E, 0x00, 0x3E, 0x3E, 0x00, 0x0E, 0x3E, 0x00, 0x00, 0x1F, 0x00, + 0x00, 0x1F, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, 0xE0, + 0x00, 0x01, 0xF0, 0x00, 0x00, 0xFC, 0x00, 0x0C, 0x7F, 0x80, 0x3F, 0x1F, + 0xFF, 0xFF, 0x8F, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0x00, + 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x01, 0xFE, 0x00, 0x00, + 0x1F, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x3E, + 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x7C, 0x00, 0x3F, 0x87, 0xC0, 0x0F, + 0xFF, 0x7C, 0x03, 0xFF, 0xFF, 0xC0, 0x7F, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, + 0x81, 0xFC, 0x0F, 0xF8, 0x3F, 0x00, 0x3F, 0x83, 0xE0, 0x01, 0xF0, 0x7C, + 0x00, 0x1F, 0x07, 0xC0, 0x01, 0xF0, 0xF8, 0x00, 0x1F, 0x0F, 0x80, 0x01, + 0xF0, 0xF8, 0x00, 0x1E, 0x0F, 0x80, 0x03, 0xE0, 0xF8, 0x00, 0x3E, 0x0F, + 0xC0, 0x07, 0xE0, 0xFC, 0x00, 0xFE, 0x07, 0xF0, 0x3F, 0xF8, 0x7F, 0xFF, + 0xFF, 0xC3, 0xFF, 0xFF, 0xFC, 0x3F, 0xFF, 0xFF, 0xC0, 0xFF, 0xE7, 0xF8, + 0x03, 0xF8, 0x00, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0xFF, 0xF0, 0x03, 0xFF, + 0xF8, 0x07, 0xFF, 0xFC, 0x0F, 0xFF, 0xFE, 0x1F, 0xE0, 0x7E, 0x3F, 0x80, + 0x1F, 0x3F, 0x00, 0x0F, 0x7E, 0x00, 0x0F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x00, + 0x00, 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x1C, 0x7F, 0x01, 0xFE, 0x7F, 0xFF, + 0xFE, 0x3F, 0xFF, 0xFE, 0x1F, 0xFF, 0xFC, 0x0F, 0xFF, 0xF0, 0x03, 0xFF, + 0x00, 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x3F, 0xFF, 0x00, 0x07, 0xFF, 0xF0, + 0x00, 0xFF, 0xFF, 0x00, 0x1F, 0xFF, 0xE0, 0x01, 0xF0, 0x00, 0x00, 0x3E, + 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x7F, 0xFF, 0xF0, + 0x0F, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0x00, 0xFF, + 0xFF, 0xE0, 0x00, 0x78, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0xF8, 0x00, + 0x00, 0x0F, 0x80, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, + 0xF0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x1E, 0x00, + 0x00, 0x03, 0xE0, 0x00, 0x07, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xF0, 0x0F, + 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xF0, 0x07, 0xFF, 0xFE, 0x00, 0x00, 0x3F, + 0x80, 0x00, 0x0F, 0xFE, 0xFF, 0x03, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xFF, + 0x0F, 0xFF, 0xFF, 0xF1, 0xFC, 0x1F, 0xFE, 0x3F, 0x80, 0x7F, 0x03, 0xE0, + 0x03, 0xF0, 0x7E, 0x00, 0x3E, 0x07, 0xC0, 0x03, 0xE0, 0xF8, 0x00, 0x3E, + 0x0F, 0x80, 0x03, 0xE0, 0xF8, 0x00, 0x3E, 0x0F, 0x80, 0x03, 0xC0, 0xF8, + 0x00, 0x7C, 0x0F, 0xC0, 0x0F, 0xC0, 0xFC, 0x01, 0xFC, 0x07, 0xF0, 0x7F, + 0x80, 0x7F, 0xFF, 0xF8, 0x03, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xF8, 0x00, + 0xFF, 0xEF, 0x80, 0x03, 0xF0, 0xF0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, + 0xF0, 0x00, 0x00, 0x7E, 0x00, 0x1F, 0xFF, 0xE0, 0x03, 0xFF, 0xFC, 0x00, + 0x3F, 0xFF, 0x80, 0x03, 0xFF, 0xE0, 0x00, 0x3F, 0xF8, 0x00, 0x00, 0x03, + 0xF8, 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x3F, 0xE0, 0x00, + 0x07, 0xF0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0xC0, + 0x00, 0x01, 0xF1, 0xF8, 0x00, 0x79, 0xFF, 0x80, 0x1E, 0xFF, 0xF0, 0x0F, + 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0x80, 0xFF, 0x07, 0xE0, 0x3F, 0x00, 0xF8, + 0x1F, 0x80, 0x3E, 0x07, 0xC0, 0x0F, 0x81, 0xF0, 0x03, 0xC0, 0x7C, 0x00, + 0xF0, 0x1E, 0x00, 0x7C, 0x0F, 0x80, 0x1F, 0x03, 0xE0, 0x07, 0xC0, 0xF8, + 0x01, 0xE0, 0x3C, 0x00, 0xF8, 0x0F, 0x00, 0x3E, 0x1F, 0xF8, 0x3F, 0xEF, + 0xFE, 0x1F, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0xF0, 0x3F, + 0xE0, 0x00, 0x07, 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0x1F, 0x80, 0x00, 0x3E, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0xFF, 0xC0, 0x07, 0xFF, 0x80, 0x0F, 0xFE, 0x00, 0x1F, 0xFC, 0x00, + 0x3F, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x80, 0x00, + 0x1F, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF0, 0x00, 0x01, + 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x00, 0x3F, 0xFF, + 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, + 0x80, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xF0, 0x00, 0x07, + 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0xFF, 0xFE, 0x07, 0xFF, 0xFC, 0x0F, 0xFF, 0xF8, 0x1F, 0xFF, 0xF0, + 0x3F, 0xFF, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3E, 0x00, + 0x00, 0x7C, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x07, 0xC0, 0x00, + 0x0F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xF8, 0x00, 0x01, + 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x3E, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0xC0, + 0xFF, 0xFF, 0x03, 0xFF, 0xFC, 0x07, 0xFF, 0xF0, 0x0F, 0xFF, 0xC0, 0x0F, + 0xFC, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x7F, 0xC0, + 0x00, 0x1F, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x0F, + 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x3C, 0x3F, 0xF0, + 0x1F, 0x1F, 0xFC, 0x07, 0xC7, 0xFF, 0x01, 0xF1, 0xFF, 0xC0, 0x78, 0x7F, + 0xE0, 0x1E, 0x7F, 0x80, 0x0F, 0xBF, 0x80, 0x03, 0xFF, 0xC0, 0x00, 0xFF, + 0xC0, 0x00, 0x3F, 0xE0, 0x00, 0x0F, 0xFC, 0x00, 0x07, 0xFF, 0x80, 0x01, + 0xF7, 0xF0, 0x00, 0x7C, 0xFE, 0x00, 0x1E, 0x1F, 0xC0, 0x0F, 0x83, 0xF8, + 0x1F, 0xE0, 0xFF, 0xEF, 0xF8, 0x3F, 0xFB, 0xFE, 0x1F, 0xFE, 0xFF, 0x07, + 0xFF, 0x9F, 0xC0, 0xFF, 0xC0, 0x00, 0x7F, 0xF0, 0x01, 0xFF, 0xC0, 0x03, + 0xFF, 0x80, 0x07, 0xFF, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x7C, 0x00, 0x00, + 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1F, + 0x00, 0x00, 0x3C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xE0, + 0x00, 0x07, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x7C, 0x00, + 0x00, 0xF8, 0x00, 0x01, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x80, 0x00, + 0x1F, 0x00, 0x00, 0x3E, 0x00, 0x7F, 0xFF, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0x00, 0x00, 0x07, 0x81, 0xE0, + 0x3F, 0xBF, 0x9F, 0xE1, 0xFF, 0xFE, 0xFF, 0x87, 0xFF, 0xFF, 0xFF, 0x1F, + 0xFF, 0xFF, 0xFC, 0x7F, 0xC7, 0xF1, 0xF0, 0x7E, 0x1F, 0x87, 0xC1, 0xF0, + 0x7C, 0x1F, 0x07, 0x81, 0xE0, 0x7C, 0x1E, 0x0F, 0x81, 0xE0, 0xF8, 0x3E, + 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3C, 0x0F, 0x03, + 0xC1, 0xF0, 0x7C, 0x0F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF1, + 0xFE, 0x1F, 0x87, 0xEF, 0xFC, 0x7F, 0x1F, 0xFF, 0xF3, 0xFC, 0x7F, 0xFF, + 0xCF, 0xF3, 0xFF, 0xFE, 0x3F, 0x8F, 0xE0, 0x00, 0x01, 0xF8, 0x01, 0xF9, + 0xFF, 0x80, 0xFE, 0xFF, 0xF0, 0x7F, 0xFF, 0xFC, 0x1F, 0xFF, 0xFF, 0x83, + 0xFF, 0x07, 0xE0, 0x3F, 0x00, 0xF8, 0x1F, 0x80, 0x3E, 0x07, 0xC0, 0x0F, + 0x81, 0xF0, 0x03, 0xC0, 0x7C, 0x00, 0xF0, 0x1E, 0x00, 0x7C, 0x0F, 0x80, + 0x1F, 0x03, 0xE0, 0x07, 0xC0, 0xF8, 0x01, 0xE0, 0x3C, 0x00, 0xF8, 0x0F, + 0x00, 0x3E, 0x1F, 0xF8, 0x3F, 0xEF, 0xFE, 0x1F, 0xFF, 0xFF, 0x87, 0xFF, + 0xFF, 0xE1, 0xFF, 0xFF, 0xF0, 0x3F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0x7F, + 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xF0, 0xFF, + 0x03, 0xF8, 0xFE, 0x00, 0xFE, 0x7C, 0x00, 0x3F, 0x7C, 0x00, 0x0F, 0xBE, + 0x00, 0x07, 0xFE, 0x00, 0x03, 0xFF, 0x00, 0x01, 0xFF, 0x80, 0x00, 0xFF, + 0xC0, 0x00, 0xFB, 0xE0, 0x00, 0xFD, 0xF8, 0x00, 0x7C, 0xFE, 0x00, 0xFE, + 0x3F, 0x81, 0xFE, 0x1F, 0xFF, 0xFE, 0x07, 0xFF, 0xFE, 0x01, 0xFF, 0xFC, + 0x00, 0x7F, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x07, + 0xF9, 0xFF, 0xC0, 0x1F, 0xF7, 0xFF, 0xC0, 0x3F, 0xFF, 0xFF, 0xC0, 0x7F, + 0xFF, 0xFF, 0xC0, 0x7F, 0xF0, 0x3F, 0x80, 0x3F, 0x80, 0x1F, 0x80, 0x7E, + 0x00, 0x3F, 0x00, 0xF8, 0x00, 0x3E, 0x01, 0xF0, 0x00, 0x7C, 0x03, 0xC0, + 0x00, 0xF8, 0x0F, 0x80, 0x01, 0xF0, 0x1F, 0x00, 0x07, 0xE0, 0x3E, 0x00, + 0x0F, 0x80, 0x7C, 0x00, 0x3F, 0x01, 0xFC, 0x00, 0xFC, 0x03, 0xFE, 0x07, + 0xF8, 0x07, 0xFF, 0xFF, 0xE0, 0x0F, 0xFF, 0xFF, 0x80, 0x1E, 0xFF, 0xFC, + 0x00, 0x7C, 0xFF, 0xF0, 0x00, 0xF8, 0x7F, 0x00, 0x01, 0xF0, 0x00, 0x00, + 0x03, 0xE0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, + 0xFF, 0xF0, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0x1F, + 0xFF, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, + 0x07, 0xFF, 0x3F, 0xC0, 0xFF, 0xFD, 0xFE, 0x0F, 0xFF, 0xFF, 0xF0, 0xFF, + 0xFF, 0xFF, 0x8F, 0xE0, 0x7F, 0xF8, 0xFC, 0x00, 0xFE, 0x07, 0xC0, 0x03, + 0xE0, 0x7C, 0x00, 0x1F, 0x03, 0xE0, 0x00, 0xF8, 0x1E, 0x00, 0x07, 0xC1, + 0xF0, 0x00, 0x3E, 0x0F, 0x80, 0x01, 0xE0, 0x7C, 0x00, 0x1F, 0x03, 0xF0, + 0x01, 0xF8, 0x1F, 0x80, 0x1F, 0xC0, 0xFF, 0x03, 0xFC, 0x03, 0xFF, 0xFF, + 0xE0, 0x1F, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0xF8, 0x00, 0xFF, 0xE7, 0xC0, + 0x01, 0xFC, 0x3C, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x1F, 0x00, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x07, 0xFF, 0x80, 0x00, 0x7F, + 0xFE, 0x00, 0x07, 0xFF, 0xF0, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0xFF, 0xF0, + 0x00, 0x00, 0x00, 0x0F, 0x80, 0x3F, 0xC3, 0xFE, 0x07, 0xFC, 0xFF, 0xE0, + 0x7F, 0xDF, 0xFF, 0x07, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, 0x1C, 0x00, 0x7F, + 0xC0, 0x00, 0x07, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x0F, 0xC0, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x01, 0xE0, 0x00, + 0x07, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0x00, 0xFF, + 0xFF, 0xF0, 0x07, 0xFF, 0xFE, 0x00, 0x00, 0x3F, 0xCE, 0x03, 0xFF, 0xFC, + 0x0F, 0xFF, 0xF8, 0x3F, 0xFF, 0xF0, 0xFF, 0xFF, 0xC3, 0xF8, 0x0F, 0x87, + 0xC0, 0x0E, 0x0F, 0x80, 0x00, 0x1F, 0xF0, 0x00, 0x3F, 0xFF, 0x80, 0x3F, + 0xFF, 0xC0, 0x3F, 0xFF, 0xC0, 0x1F, 0xFF, 0xC0, 0x01, 0xFF, 0x80, 0x00, + 0x3F, 0x1C, 0x00, 0x3E, 0x7C, 0x00, 0x7C, 0xFC, 0x03, 0xF3, 0xFF, 0xFF, + 0xE7, 0xFF, 0xFF, 0x8F, 0xFF, 0xFE, 0x1F, 0xFF, 0xF0, 0x00, 0xFF, 0x00, + 0x00, 0x03, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, + 0x80, 0x00, 0x78, 0x00, 0x7F, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xE0, 0x00, + 0x1E, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x3C, 0x00, + 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7E, 0x00, 0xF7, 0xFF, + 0xFF, 0x7F, 0xFF, 0xF3, 0xFF, 0xFE, 0x1F, 0xFF, 0x80, 0x7F, 0x80, 0x7F, + 0x01, 0xFF, 0xFE, 0x07, 0xFF, 0xF8, 0x1F, 0xFF, 0xF0, 0x3F, 0xFF, 0xE0, + 0x3F, 0xC7, 0xC0, 0x07, 0x8F, 0x80, 0x1F, 0x3E, 0x00, 0x3E, 0x7C, 0x00, + 0x7C, 0xF8, 0x00, 0xF1, 0xF0, 0x03, 0xE3, 0xE0, 0x07, 0xC7, 0xC0, 0x0F, + 0x8F, 0x80, 0x1F, 0x1F, 0x00, 0x7C, 0x3E, 0x01, 0xF8, 0x7E, 0x0F, 0xFC, + 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xF1, 0xFF, 0xEF, 0xE1, 0xFF, 0xBF, 0x80, + 0xFC, 0x00, 0x00, 0x7F, 0xF0, 0x7F, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xE0, 0xFF, 0xE1, 0xF8, 0x03, 0xE0, + 0x0F, 0x80, 0x3E, 0x00, 0xF8, 0x07, 0xC0, 0x0F, 0x80, 0xF8, 0x00, 0xFC, + 0x1F, 0x80, 0x07, 0xC1, 0xF0, 0x00, 0x7C, 0x3E, 0x00, 0x07, 0xE7, 0xE0, + 0x00, 0x3E, 0x7C, 0x00, 0x03, 0xEF, 0x80, 0x00, 0x3F, 0xF0, 0x00, 0x03, + 0xFF, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x1F, 0xC0, + 0x00, 0x00, 0xF8, 0x00, 0x00, 0x7F, 0xC0, 0x1F, 0xEF, 0xFC, 0x03, 0xFF, + 0xFF, 0xC0, 0x7F, 0xFF, 0xFC, 0x07, 0xFE, 0x7F, 0x80, 0x3F, 0xC3, 0xE1, + 0xF0, 0xF8, 0x3E, 0x3F, 0x0F, 0x03, 0xE3, 0xF1, 0xF0, 0x3E, 0x7F, 0x1E, + 0x03, 0xE7, 0xF3, 0xE0, 0x3E, 0xFF, 0xBC, 0x03, 0xFF, 0xFF, 0xC0, 0x3F, + 0xFF, 0xFC, 0x03, 0xFE, 0xFF, 0x80, 0x3F, 0xEF, 0xF8, 0x03, 0xFC, 0xFF, + 0x00, 0x3F, 0x8F, 0xF0, 0x03, 0xF8, 0x7E, 0x00, 0x3F, 0x07, 0xE0, 0x01, + 0xF0, 0x7C, 0x00, 0x1E, 0x07, 0xC0, 0x00, 0x03, 0xFE, 0x0F, 0xF8, 0x3F, + 0xF0, 0xFF, 0xC1, 0xFF, 0x8F, 0xFE, 0x0F, 0xFC, 0x7F, 0xF0, 0x7F, 0xC1, + 0xFF, 0x00, 0xFE, 0x1F, 0xC0, 0x03, 0xF9, 0xFC, 0x00, 0x0F, 0xFF, 0xC0, + 0x00, 0x3F, 0xF8, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x07, 0xF8, 0x00, 0x00, + 0x7F, 0xE0, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0xFE, 0xFE, 0x00, 0x0F, 0xE3, + 0xF8, 0x00, 0xFE, 0x0F, 0xE0, 0x3F, 0xE0, 0x7F, 0xC3, 0xFF, 0x87, 0xFF, + 0x3F, 0xFC, 0x7F, 0xF9, 0xFF, 0xE3, 0xFF, 0x87, 0xFE, 0x0F, 0xF8, 0x00, + 0x01, 0xFE, 0x03, 0xFE, 0x03, 0xFF, 0x07, 0xFF, 0x07, 0xFF, 0x07, 0xFF, + 0x07, 0xFF, 0x07, 0xFE, 0x03, 0xFC, 0x03, 0xFC, 0x01, 0xF8, 0x01, 0xF0, + 0x00, 0xF8, 0x03, 0xF0, 0x00, 0xF8, 0x03, 0xE0, 0x00, 0xFC, 0x07, 0xC0, + 0x00, 0x7C, 0x0F, 0x80, 0x00, 0x7C, 0x0F, 0x80, 0x00, 0x7E, 0x1F, 0x00, + 0x00, 0x7E, 0x3E, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x00, 0x3E, 0x7C, 0x00, + 0x00, 0x3F, 0xF8, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0x1F, 0xE0, 0x00, + 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x0F, 0x80, 0x00, + 0x00, 0x1F, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, + 0x00, 0x7C, 0x00, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, + 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x7F, 0xFE, 0x00, 0x00, + 0x07, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, + 0xE0, 0xFF, 0xFF, 0xE0, 0x7C, 0x0F, 0xE0, 0x3C, 0x0F, 0xE0, 0x1E, 0x0F, + 0xC0, 0x00, 0x1F, 0xC0, 0x00, 0x1F, 0xC0, 0x00, 0x1F, 0xC0, 0x00, 0x1F, + 0x80, 0x00, 0x3F, 0x80, 0x00, 0x3F, 0x80, 0x00, 0x3F, 0x80, 0xF0, 0x3F, + 0x00, 0xF8, 0x3F, 0xFF, 0xFC, 0x3F, 0xFF, 0xFE, 0x1F, 0xFF, 0xFE, 0x0F, + 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0x80, 0x00, 0x0F, 0x00, 0x1F, 0xC0, 0x1F, + 0xE0, 0x1F, 0xF0, 0x0F, 0xE0, 0x0F, 0xC0, 0x07, 0xC0, 0x07, 0xC0, 0x03, + 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x78, 0x00, 0x7C, 0x00, 0x3E, 0x00, + 0x1F, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x3F, 0x80, 0x3F, 0xC0, 0x1F, 0xC0, + 0x0F, 0xE0, 0x07, 0xF8, 0x00, 0xFC, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, + 0x80, 0x07, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, + 0x7E, 0x00, 0x3F, 0x80, 0x1F, 0xE0, 0x07, 0xF0, 0x03, 0xF8, 0x00, 0x78, + 0x00, 0x01, 0xE0, 0x3C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, 0x80, 0xF0, 0x3E, + 0x07, 0xC0, 0xF0, 0x1E, 0x03, 0xC0, 0xF8, 0x1F, 0x03, 0xC0, 0x78, 0x0F, + 0x03, 0xE0, 0x7C, 0x0F, 0x01, 0xE0, 0x3C, 0x0F, 0x81, 0xF0, 0x3C, 0x07, + 0x80, 0xF0, 0x3E, 0x07, 0xC0, 0xF0, 0x1E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, + 0xC0, 0x70, 0x00, 0x00, 0xF0, 0x00, 0xFC, 0x00, 0x7F, 0x00, 0x3F, 0xC0, + 0x0F, 0xE0, 0x03, 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, + 0x00, 0x0F, 0x80, 0x07, 0x80, 0x03, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, + 0xF8, 0x00, 0x7E, 0x00, 0x3F, 0xC0, 0x0F, 0xE0, 0x07, 0xF0, 0x07, 0xF8, + 0x07, 0xF8, 0x03, 0xE0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF0, 0x00, 0x78, + 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x00, 0x1F, 0x80, 0x7F, + 0xC0, 0x7F, 0xC0, 0x3F, 0xC0, 0x1F, 0xC0, 0x07, 0x80, 0x00, 0x03, 0xE0, + 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0xE0, 0x39, 0xFF, 0xE0, 0xF7, 0xFF, 0xE7, + 0xFF, 0xCF, 0xFF, 0xFE, 0x0F, 0xFF, 0x38, 0x0F, 0xFC, 0x00, 0x0F, 0xE0, + 0x00, 0x0F, 0x80}; + +const GFXglyph FreeMonoBoldOblique24pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 28, 0, 1}, // 0x20 ' ' + {0, 12, 31, 28, 12, -29}, // 0x21 '!' + {47, 17, 14, 28, 11, -28}, // 0x22 '"' + {77, 24, 34, 28, 5, -30}, // 0x23 '#' + {179, 25, 38, 28, 4, -31}, // 0x24 '$' + {298, 22, 30, 28, 6, -28}, // 0x25 '%' + {381, 21, 28, 28, 5, -26}, // 0x26 '&' + {455, 7, 14, 28, 16, -28}, // 0x27 ''' + {468, 14, 37, 28, 14, -29}, // 0x28 '(' + {533, 14, 37, 28, 5, -29}, // 0x29 ')' + {598, 21, 19, 28, 8, -28}, // 0x2A '*' + {648, 24, 26, 28, 5, -25}, // 0x2B '+' + {726, 12, 14, 28, 6, -6}, // 0x2C ',' + {747, 24, 5, 28, 5, -15}, // 0x2D '-' + {762, 7, 6, 28, 11, -4}, // 0x2E '.' + {768, 28, 38, 28, 3, -32}, // 0x2F '/' + {901, 23, 31, 28, 6, -29}, // 0x30 '0' + {991, 21, 30, 28, 4, -29}, // 0x31 '1' + {1070, 26, 30, 28, 3, -29}, // 0x32 '2' + {1168, 25, 31, 28, 4, -29}, // 0x33 '3' + {1265, 22, 28, 28, 5, -27}, // 0x34 '4' + {1342, 25, 31, 28, 4, -29}, // 0x35 '5' + {1439, 24, 31, 28, 7, -29}, // 0x36 '6' + {1532, 22, 30, 28, 9, -29}, // 0x37 '7' + {1615, 23, 31, 28, 6, -29}, // 0x38 '8' + {1705, 24, 31, 28, 5, -29}, // 0x39 '9' + {1798, 10, 22, 28, 11, -20}, // 0x3A ':' + {1826, 15, 28, 28, 5, -20}, // 0x3B ';' + {1879, 25, 21, 28, 5, -23}, // 0x3C '<' + {1945, 26, 14, 28, 4, -19}, // 0x3D '=' + {1991, 25, 22, 28, 4, -23}, // 0x3E '>' + {2060, 19, 29, 28, 10, -27}, // 0x3F '?' + {2129, 23, 36, 28, 5, -28}, // 0x40 '@' + {2233, 30, 27, 28, 0, -26}, // 0x41 'A' + {2335, 29, 27, 28, 1, -26}, // 0x42 'B' + {2433, 28, 29, 28, 3, -27}, // 0x43 'C' + {2535, 28, 27, 28, 1, -26}, // 0x44 'D' + {2630, 29, 27, 28, 1, -26}, // 0x45 'E' + {2728, 31, 27, 28, 0, -26}, // 0x46 'F' + {2833, 28, 29, 28, 3, -27}, // 0x47 'G' + {2935, 30, 27, 28, 1, -26}, // 0x48 'H' + {3037, 25, 27, 28, 3, -26}, // 0x49 'I' + {3122, 31, 28, 28, 0, -26}, // 0x4A 'J' + {3231, 31, 27, 28, 0, -26}, // 0x4B 'K' + {3336, 27, 27, 28, 1, -26}, // 0x4C 'L' + {3428, 34, 27, 28, 0, -26}, // 0x4D 'M' + {3543, 32, 27, 28, 1, -26}, // 0x4E 'N' + {3651, 27, 29, 28, 3, -27}, // 0x4F 'O' + {3749, 28, 27, 28, 1, -26}, // 0x50 'P' + {3844, 27, 35, 28, 3, -27}, // 0x51 'Q' + {3963, 29, 27, 28, 0, -26}, // 0x52 'R' + {4061, 26, 29, 28, 3, -27}, // 0x53 'S' + {4156, 26, 27, 28, 4, -26}, // 0x54 'T' + {4244, 28, 28, 28, 4, -26}, // 0x55 'U' + {4342, 30, 27, 28, 2, -26}, // 0x56 'V' + {4444, 29, 27, 28, 3, -26}, // 0x57 'W' + {4542, 32, 27, 28, 0, -26}, // 0x58 'X' + {4650, 26, 27, 28, 4, -26}, // 0x59 'Y' + {4738, 27, 27, 28, 2, -26}, // 0x5A 'Z' + {4830, 18, 37, 28, 10, -29}, // 0x5B '[' + {4914, 13, 38, 28, 10, -32}, // 0x5C '\' + {4976, 18, 37, 28, 5, -29}, // 0x5D ']' + {5060, 20, 15, 28, 8, -29}, // 0x5E '^' + {5098, 29, 5, 28, -2, 5}, // 0x5F '_' + {5117, 8, 8, 28, 13, -30}, // 0x60 '`' + {5125, 24, 23, 28, 3, -21}, // 0x61 'a' + {5194, 29, 31, 28, 0, -29}, // 0x62 'b' + {5307, 25, 23, 28, 3, -21}, // 0x63 'c' + {5379, 28, 31, 28, 3, -29}, // 0x64 'd' + {5488, 24, 23, 28, 3, -21}, // 0x65 'e' + {5557, 28, 30, 28, 4, -29}, // 0x66 'f' + {5662, 28, 31, 28, 3, -21}, // 0x67 'g' + {5771, 26, 30, 28, 2, -29}, // 0x68 'h' + {5869, 23, 29, 28, 3, -28}, // 0x69 'i' + {5953, 23, 38, 28, 3, -28}, // 0x6A 'j' + {6063, 26, 30, 28, 2, -29}, // 0x6B 'k' + {6161, 23, 30, 28, 3, -29}, // 0x6C 'l' + {6248, 30, 22, 28, 0, -21}, // 0x6D 'm' + {6331, 26, 22, 28, 2, -21}, // 0x6E 'n' + {6403, 25, 23, 28, 3, -21}, // 0x6F 'o' + {6475, 31, 31, 28, -1, -21}, // 0x70 'p' + {6596, 29, 31, 28, 2, -21}, // 0x71 'q' + {6709, 28, 22, 28, 2, -21}, // 0x72 'r' + {6786, 23, 23, 28, 4, -21}, // 0x73 's' + {6853, 20, 28, 28, 5, -26}, // 0x74 't' + {6923, 23, 22, 28, 5, -20}, // 0x75 'u' + {6987, 28, 21, 28, 3, -20}, // 0x76 'v' + {7061, 28, 21, 28, 3, -20}, // 0x77 'w' + {7135, 29, 21, 28, 1, -20}, // 0x78 'x' + {7212, 32, 30, 28, -1, -20}, // 0x79 'y' + {7332, 25, 21, 28, 4, -20}, // 0x7A 'z' + {7398, 17, 37, 28, 10, -29}, // 0x7B '{' + {7477, 11, 36, 28, 11, -28}, // 0x7C '|' + {7527, 17, 37, 28, 6, -29}, // 0x7D '}' + {7606, 23, 10, 28, 5, -17}}; // 0x7E '~' + +const GFXfont FreeMonoBoldOblique24pt7b PROGMEM = { + (uint8_t *)FreeMonoBoldOblique24pt7bBitmaps, + (GFXglyph *)FreeMonoBoldOblique24pt7bGlyphs, 0x20, 0x7E, 47}; + +// Approx. 8307 bytes diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBoldOblique9pt7b.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBoldOblique9pt7b.h new file mode 100644 index 0000000..86d3e9c --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoBoldOblique9pt7b.h @@ -0,0 +1,205 @@ +#pragma once +#include + +const uint8_t FreeMonoBoldOblique9pt7bBitmaps[] PROGMEM = { + 0x39, 0xCC, 0x67, 0x31, 0x8C, 0x07, 0x38, 0x6C, 0xD9, 0x36, 0x48, 0x80, + 0x09, 0x0D, 0x86, 0xCF, 0xF7, 0xF9, 0xB3, 0xFD, 0xFE, 0x6C, 0x36, 0x1B, + 0x00, 0x00, 0x06, 0x07, 0x07, 0xE6, 0x33, 0x01, 0xE0, 0x7C, 0x06, 0x43, + 0x33, 0xBF, 0x83, 0x03, 0x00, 0x80, 0x1C, 0x11, 0x10, 0x88, 0x83, 0xB8, + 0xF3, 0xB8, 0x22, 0x21, 0x11, 0x07, 0x00, 0x0F, 0x1F, 0x30, 0x30, 0x38, + 0x7B, 0xDF, 0xCE, 0xFF, 0x7E, 0xFA, 0x80, 0x19, 0x8C, 0xC6, 0x63, 0x18, + 0xC6, 0x31, 0xC6, 0x30, 0x31, 0xC6, 0x31, 0x8C, 0x63, 0x31, 0x98, 0xCC, + 0x40, 0x08, 0x08, 0xFF, 0xFF, 0x38, 0x6C, 0x6C, 0x0C, 0x06, 0x03, 0x1F, + 0xFF, 0xF8, 0xC0, 0x60, 0x30, 0x10, 0x00, 0x36, 0x4C, 0x80, 0xFF, 0xFF, + 0xC0, 0xFC, 0x00, 0x00, 0x0C, 0x03, 0x00, 0xC0, 0x18, 0x06, 0x01, 0x80, + 0x30, 0x0C, 0x03, 0x00, 0x60, 0x18, 0x06, 0x00, 0xC0, 0x30, 0x00, 0x0F, + 0x0F, 0xCC, 0x6C, 0x36, 0x1B, 0x0D, 0x05, 0x86, 0xC3, 0x63, 0x3F, 0x8F, + 0x00, 0x06, 0x1C, 0x3C, 0x6C, 0x0C, 0x0C, 0x08, 0x18, 0x18, 0x18, 0xFE, + 0xFE, 0x07, 0x83, 0xF1, 0x8C, 0x43, 0x00, 0xC0, 0xE0, 0x70, 0x38, 0x38, + 0x1C, 0x6F, 0xF3, 0xFC, 0x1F, 0x1F, 0xC0, 0x60, 0x30, 0x30, 0x70, 0x38, + 0x06, 0x03, 0x03, 0xBF, 0x9F, 0x80, 0x03, 0x07, 0x0B, 0x1B, 0x32, 0x66, + 0xFF, 0xFF, 0x1E, 0x1E, 0x3F, 0x9F, 0x98, 0x0F, 0xC7, 0xF3, 0x18, 0x0C, + 0x06, 0x06, 0x7F, 0x1E, 0x00, 0x07, 0x87, 0xCE, 0x06, 0x06, 0x03, 0xF3, + 0xFD, 0xC6, 0xC3, 0x63, 0xBF, 0x8F, 0x80, 0xFF, 0xFF, 0xC3, 0x06, 0x06, + 0x0C, 0x18, 0x18, 0x30, 0x30, 0x60, 0x1F, 0x1F, 0xDC, 0x6C, 0x36, 0x31, + 0xF1, 0xF8, 0xC6, 0xC3, 0x63, 0xBF, 0x8F, 0x80, 0x1E, 0x3F, 0x33, 0x63, + 0x63, 0x67, 0x7F, 0x3E, 0x06, 0x1C, 0xF8, 0xF0, 0x77, 0x00, 0x00, 0xEE, + 0x1C, 0x70, 0x00, 0x00, 0x03, 0x0C, 0x61, 0x08, 0x00, 0x00, 0xC1, 0xE1, + 0xE1, 0xE0, 0xF0, 0x07, 0x00, 0xF0, 0x0C, 0x7F, 0xDF, 0xF0, 0x00, 0x00, + 0x7F, 0xFF, 0xF0, 0x30, 0x0F, 0x00, 0xE0, 0x1E, 0x07, 0xC7, 0x87, 0x83, + 0x00, 0x7D, 0xFF, 0x18, 0x30, 0xE3, 0x9C, 0x30, 0x01, 0xC3, 0x80, 0x0F, + 0x0F, 0xCC, 0x6C, 0x36, 0x72, 0x79, 0x7D, 0xB6, 0xDA, 0x6F, 0xB3, 0xD8, + 0x0C, 0x07, 0xE1, 0xE0, 0x0F, 0x83, 0xF0, 0x1E, 0x03, 0xC0, 0xD8, 0x31, + 0x87, 0xF1, 0xFE, 0x30, 0xDF, 0x3F, 0xC7, 0x80, 0x3F, 0xC7, 0xFC, 0x61, + 0x8C, 0x31, 0xFC, 0x3F, 0x84, 0x19, 0x83, 0x30, 0x6F, 0xFB, 0xFE, 0x00, + 0x0F, 0xF1, 0xFF, 0x30, 0x66, 0x06, 0x60, 0x0C, 0x00, 0xC0, 0x0C, 0x00, + 0xE0, 0xC7, 0xF8, 0x3F, 0x00, 0x3F, 0x87, 0xF8, 0x63, 0x8C, 0x31, 0x06, + 0x60, 0xCC, 0x19, 0x86, 0x31, 0xCF, 0xF3, 0xF8, 0x00, 0x3F, 0xE3, 0xFE, + 0x18, 0x61, 0xB6, 0x1F, 0x01, 0xF0, 0x32, 0x03, 0x00, 0x30, 0x4F, 0xFC, + 0xFF, 0xC0, 0x3F, 0xF3, 0xFE, 0x18, 0x61, 0xB6, 0x1F, 0x03, 0xF0, 0x32, + 0x03, 0x00, 0x30, 0x0F, 0xC0, 0xFC, 0x00, 0x0F, 0xE3, 0xFC, 0xC1, 0x30, + 0x06, 0x01, 0x80, 0x31, 0xF6, 0x3E, 0xE1, 0x9F, 0xF0, 0xF8, 0x00, 0x1E, + 0xF3, 0xCF, 0x18, 0x61, 0x84, 0x10, 0xC3, 0xFC, 0x3F, 0xC3, 0x08, 0x31, + 0x8F, 0xBC, 0xFB, 0xC0, 0x3F, 0xCF, 0xF0, 0x60, 0x10, 0x0C, 0x03, 0x00, + 0xC0, 0x20, 0x18, 0x3F, 0xCF, 0xF0, 0x07, 0xF0, 0x7F, 0x00, 0x80, 0x18, + 0x01, 0x80, 0x18, 0x61, 0x84, 0x10, 0xC3, 0x0F, 0xE0, 0x7C, 0x00, 0x3E, + 0xE7, 0xFC, 0x66, 0x0D, 0x81, 0x60, 0x7C, 0x0E, 0xC1, 0x98, 0x31, 0x1F, + 0x3B, 0xE7, 0x00, 0x3F, 0x07, 0xE0, 0x30, 0x06, 0x00, 0xC0, 0x10, 0x06, + 0x00, 0xC3, 0x18, 0x6F, 0xFB, 0xFF, 0x00, 0x38, 0x39, 0xC3, 0xC7, 0x3C, + 0x79, 0xE3, 0xDA, 0x1F, 0xF0, 0x9D, 0x8C, 0xCC, 0x60, 0x67, 0xCF, 0x3C, + 0x78, 0x3C, 0xF9, 0xE7, 0x87, 0x18, 0x3C, 0xC1, 0x66, 0x1B, 0xB0, 0xCD, + 0x06, 0x78, 0x31, 0xC3, 0xCE, 0x3E, 0x30, 0x0F, 0x0F, 0xE7, 0x1D, 0x83, + 0xC0, 0xF0, 0x3C, 0x0F, 0x06, 0xE3, 0x9F, 0xC3, 0xC0, 0x3F, 0xC7, 0xFC, + 0x61, 0x8C, 0x31, 0x8E, 0x3F, 0x87, 0xE1, 0x80, 0x30, 0x0F, 0xC3, 0xF0, + 0x00, 0x0F, 0x0F, 0xE7, 0x1D, 0x83, 0xC0, 0xF0, 0x3C, 0x0F, 0x06, 0xE3, + 0x1F, 0xC3, 0xC0, 0x80, 0x7F, 0x3F, 0xC0, 0x3F, 0xC3, 0xFE, 0x18, 0x61, + 0x86, 0x10, 0xE3, 0xFC, 0x3F, 0x83, 0x18, 0x31, 0xCF, 0x8F, 0xF8, 0x70, + 0x1E, 0xCF, 0xF7, 0x19, 0x80, 0x70, 0x1F, 0x81, 0xF3, 0x0C, 0xC3, 0x3F, + 0x8B, 0xC0, 0x7F, 0xCF, 0xF9, 0x93, 0x66, 0x60, 0xC0, 0x18, 0x02, 0x00, + 0xC0, 0x18, 0x0F, 0xC1, 0xF8, 0x00, 0xF9, 0xFF, 0x7D, 0x83, 0x30, 0x64, + 0x09, 0x83, 0x30, 0x66, 0x0C, 0xE3, 0x0F, 0xC0, 0xF0, 0x00, 0xF9, 0xFE, + 0x3D, 0x83, 0x30, 0xC6, 0x30, 0xE6, 0x0D, 0x81, 0xB0, 0x3C, 0x07, 0x00, + 0x60, 0x00, 0xF9, 0xFF, 0x3D, 0x83, 0x36, 0x64, 0xC8, 0xBF, 0x35, 0xE7, + 0xB8, 0xE7, 0x1C, 0xE3, 0x18, 0x00, 0x3C, 0xF3, 0xCF, 0x1C, 0xC0, 0xD8, + 0x0F, 0x00, 0x60, 0x0F, 0x01, 0xB8, 0x31, 0x8F, 0x3C, 0xF3, 0xC0, 0x79, + 0xEE, 0x38, 0xC6, 0x19, 0x81, 0xE0, 0x38, 0x06, 0x00, 0xC0, 0x18, 0x0F, + 0xC3, 0xF8, 0x00, 0x3F, 0xCF, 0xF3, 0x18, 0xCC, 0x06, 0x03, 0x01, 0x80, + 0xC6, 0x61, 0xBF, 0xCF, 0xF0, 0x1E, 0x3C, 0xC1, 0x83, 0x06, 0x08, 0x30, + 0x60, 0xC1, 0x06, 0x0F, 0x1E, 0x00, 0x06, 0x31, 0x86, 0x31, 0x8C, 0x31, + 0x8C, 0x61, 0x8C, 0x60, 0x1E, 0x78, 0x30, 0x60, 0xC1, 0x86, 0x0C, 0x18, + 0x30, 0x41, 0x8F, 0x1E, 0x00, 0x08, 0x1C, 0x3C, 0x76, 0xE7, 0xC3, 0x7F, + 0xFF, 0xFC, 0x88, 0x80, 0x0F, 0x07, 0xE1, 0xF9, 0xFE, 0xE3, 0x30, 0xCF, + 0xFD, 0xFF, 0x38, 0x07, 0x00, 0x60, 0x0F, 0xC1, 0xFC, 0x71, 0xCC, 0x19, + 0x83, 0x30, 0xDF, 0xFB, 0xBC, 0x00, 0x1F, 0xCF, 0xF6, 0x1B, 0x00, 0xC0, + 0x30, 0x0F, 0xF1, 0xF8, 0x01, 0xE0, 0x38, 0x03, 0x0F, 0x63, 0xFC, 0xC3, + 0x30, 0x66, 0x0C, 0xC3, 0x9F, 0xF9, 0xF7, 0x00, 0x1F, 0x1F, 0xD8, 0x3F, + 0xFF, 0xFE, 0x1B, 0xFC, 0xF8, 0x07, 0xC3, 0xF1, 0x81, 0xFE, 0x7F, 0x84, + 0x03, 0x00, 0xC0, 0x30, 0x3F, 0x8F, 0xE0, 0x1E, 0xE7, 0xFD, 0x86, 0x60, + 0xCC, 0x19, 0xC6, 0x3F, 0xC1, 0xD8, 0x03, 0x00, 0xE1, 0xF8, 0x3E, 0x00, + 0x38, 0x1E, 0x01, 0x00, 0xDC, 0x3F, 0x8C, 0x62, 0x19, 0x84, 0x63, 0x3D, + 0xFF, 0x7C, 0x06, 0x03, 0x00, 0x03, 0xC3, 0xE0, 0x20, 0x30, 0x18, 0x0C, + 0x3F, 0xFF, 0xE0, 0x01, 0x81, 0x80, 0x07, 0xF3, 0xF8, 0x0C, 0x04, 0x06, + 0x03, 0x01, 0x80, 0xC0, 0x40, 0x67, 0xE3, 0xE0, 0x38, 0x0E, 0x01, 0x80, + 0x4F, 0x37, 0xCF, 0x83, 0xC0, 0xF0, 0x26, 0x39, 0xEE, 0x78, 0x1F, 0x0F, + 0x01, 0x80, 0xC0, 0x60, 0x20, 0x30, 0x18, 0x0C, 0x3F, 0xFF, 0xE0, 0x7E, + 0xE7, 0xFF, 0x33, 0x32, 0x63, 0x66, 0x36, 0x62, 0xF7, 0x7F, 0x67, 0x77, + 0x8F, 0xF8, 0xC3, 0x10, 0x66, 0x08, 0xC3, 0x3C, 0x7F, 0x8F, 0x1F, 0x0F, + 0xE6, 0x1F, 0x03, 0xC0, 0xF8, 0x67, 0xF0, 0xF8, 0x3F, 0xE3, 0xFF, 0x1C, + 0x31, 0x83, 0x18, 0x31, 0x86, 0x3F, 0xE3, 0x78, 0x30, 0x03, 0x00, 0xFC, + 0x0F, 0x80, 0x1E, 0xEF, 0xFD, 0x86, 0x60, 0xCC, 0x19, 0xC7, 0x3F, 0xE1, + 0xE8, 0x03, 0x00, 0x60, 0x3E, 0x07, 0xC0, 0x39, 0xDF, 0xF1, 0xC0, 0x60, + 0x10, 0x0C, 0x0F, 0xF3, 0xF8, 0x1F, 0x7F, 0x63, 0x7E, 0x1F, 0xC3, 0xFE, + 0xFC, 0x10, 0x08, 0x0C, 0x1F, 0xEF, 0xF1, 0x80, 0x80, 0xC0, 0x60, 0x3F, + 0x8F, 0x80, 0xF3, 0xFC, 0xF6, 0x09, 0x86, 0x61, 0x98, 0xE7, 0xF8, 0xFE, + 0xFB, 0xFF, 0x7C, 0xC6, 0x19, 0x83, 0x60, 0x6C, 0x07, 0x00, 0xC0, 0xF1, + 0xFE, 0x3D, 0xB3, 0x37, 0xC7, 0xF8, 0xEE, 0x1D, 0xC3, 0x30, 0x79, 0xEF, + 0x38, 0xEE, 0x0F, 0x01, 0xE0, 0x6E, 0x3C, 0xE7, 0xBC, 0x3C, 0xF3, 0x8F, + 0x18, 0xC1, 0x9C, 0x19, 0x81, 0xF0, 0x0E, 0x00, 0xE0, 0x0C, 0x01, 0x80, + 0xFC, 0x0F, 0xC0, 0x7F, 0xBF, 0xD9, 0xC1, 0x83, 0x83, 0x1B, 0xFD, 0xFE, + 0x06, 0x1C, 0x60, 0xC1, 0x86, 0x3C, 0x70, 0x30, 0x41, 0x83, 0x07, 0x06, + 0x00, 0x33, 0x32, 0x26, 0x66, 0x44, 0xCC, 0xC8, 0x0C, 0x0E, 0x04, 0x0C, + 0x0C, 0x0C, 0x0F, 0x0F, 0x18, 0x18, 0x10, 0x30, 0xF0, 0xE0, 0x38, 0x7C, + 0xF7, 0xC1, 0xC0}; + +const GFXglyph FreeMonoBoldOblique9pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 11, 0, 1}, // 0x20 ' ' + {0, 5, 11, 11, 4, -10}, // 0x21 '!' + {7, 7, 5, 11, 4, -10}, // 0x22 '"' + {12, 9, 12, 11, 2, -10}, // 0x23 '#' + {26, 9, 14, 11, 2, -11}, // 0x24 '$' + {42, 9, 11, 11, 2, -10}, // 0x25 '%' + {55, 8, 10, 11, 2, -9}, // 0x26 '&' + {65, 2, 5, 11, 6, -10}, // 0x27 ''' + {67, 5, 14, 11, 5, -10}, // 0x28 '(' + {76, 5, 14, 11, 2, -10}, // 0x29 ')' + {85, 8, 7, 11, 3, -10}, // 0x2A '*' + {92, 9, 9, 11, 2, -8}, // 0x2B '+' + {103, 4, 5, 11, 2, -1}, // 0x2C ',' + {106, 9, 2, 11, 2, -5}, // 0x2D '-' + {109, 3, 2, 11, 4, -1}, // 0x2E '.' + {110, 11, 15, 11, 1, -12}, // 0x2F '/' + {131, 9, 12, 11, 2, -11}, // 0x30 '0' + {145, 8, 12, 11, 2, -11}, // 0x31 '1' + {157, 10, 12, 11, 1, -11}, // 0x32 '2' + {172, 9, 12, 11, 2, -11}, // 0x33 '3' + {186, 8, 10, 11, 2, -9}, // 0x34 '4' + {196, 9, 11, 11, 3, -10}, // 0x35 '5' + {209, 9, 12, 11, 3, -11}, // 0x36 '6' + {223, 8, 11, 11, 3, -10}, // 0x37 '7' + {234, 9, 12, 11, 2, -11}, // 0x38 '8' + {248, 8, 12, 11, 3, -11}, // 0x39 '9' + {260, 4, 8, 11, 4, -7}, // 0x3A ':' + {264, 6, 11, 11, 2, -7}, // 0x3B ';' + {273, 10, 8, 11, 2, -8}, // 0x3C '<' + {283, 10, 6, 11, 1, -7}, // 0x3D '=' + {291, 10, 8, 11, 1, -8}, // 0x3E '>' + {301, 7, 11, 11, 4, -10}, // 0x3F '?' + {311, 9, 15, 11, 2, -11}, // 0x40 '@' + {328, 11, 11, 11, 0, -10}, // 0x41 'A' + {344, 11, 11, 11, 0, -10}, // 0x42 'B' + {360, 12, 11, 11, 1, -10}, // 0x43 'C' + {377, 11, 11, 11, 0, -10}, // 0x44 'D' + {393, 12, 11, 11, 0, -10}, // 0x45 'E' + {410, 12, 11, 11, 0, -10}, // 0x46 'F' + {427, 11, 11, 11, 1, -10}, // 0x47 'G' + {443, 12, 11, 11, 0, -10}, // 0x48 'H' + {460, 10, 11, 11, 1, -10}, // 0x49 'I' + {474, 12, 11, 11, 0, -10}, // 0x4A 'J' + {491, 11, 11, 11, 0, -10}, // 0x4B 'K' + {507, 11, 11, 11, 0, -10}, // 0x4C 'L' + {523, 13, 11, 11, 0, -10}, // 0x4D 'M' + {541, 13, 11, 11, 0, -10}, // 0x4E 'N' + {559, 10, 11, 11, 1, -10}, // 0x4F 'O' + {573, 11, 11, 11, 0, -10}, // 0x50 'P' + {589, 10, 14, 11, 1, -10}, // 0x51 'Q' + {607, 12, 11, 11, 0, -10}, // 0x52 'R' + {624, 10, 11, 11, 2, -10}, // 0x53 'S' + {638, 11, 11, 11, 1, -10}, // 0x54 'T' + {654, 11, 11, 11, 1, -10}, // 0x55 'U' + {670, 11, 11, 11, 1, -10}, // 0x56 'V' + {686, 11, 11, 11, 1, -10}, // 0x57 'W' + {702, 12, 11, 11, 0, -10}, // 0x58 'X' + {719, 11, 11, 11, 1, -10}, // 0x59 'Y' + {735, 10, 11, 11, 1, -10}, // 0x5A 'Z' + {749, 7, 14, 11, 4, -10}, // 0x5B '[' + {762, 5, 15, 11, 4, -12}, // 0x5C '\' + {772, 7, 14, 11, 2, -10}, // 0x5D ']' + {785, 8, 6, 11, 3, -11}, // 0x5E '^' + {791, 11, 2, 11, -1, 3}, // 0x5F '_' + {794, 3, 3, 11, 5, -11}, // 0x60 '`' + {796, 10, 8, 11, 1, -7}, // 0x61 'a' + {806, 11, 11, 11, 0, -10}, // 0x62 'b' + {822, 10, 8, 11, 1, -7}, // 0x63 'c' + {832, 11, 11, 11, 1, -10}, // 0x64 'd' + {848, 9, 8, 11, 1, -7}, // 0x65 'e' + {857, 10, 11, 11, 2, -10}, // 0x66 'f' + {871, 11, 12, 11, 1, -7}, // 0x67 'g' + {888, 10, 11, 11, 1, -10}, // 0x68 'h' + {902, 9, 11, 11, 1, -10}, // 0x69 'i' + {915, 9, 15, 11, 1, -10}, // 0x6A 'j' + {932, 10, 11, 11, 1, -10}, // 0x6B 'k' + {946, 9, 11, 11, 1, -10}, // 0x6C 'l' + {959, 12, 8, 11, 0, -7}, // 0x6D 'm' + {971, 11, 8, 11, 1, -7}, // 0x6E 'n' + {982, 10, 8, 11, 1, -7}, // 0x6F 'o' + {992, 12, 12, 11, -1, -7}, // 0x70 'p' + {1010, 11, 12, 11, 1, -7}, // 0x71 'q' + {1027, 10, 8, 11, 1, -7}, // 0x72 'r' + {1037, 8, 8, 11, 2, -7}, // 0x73 's' + {1045, 9, 11, 11, 1, -10}, // 0x74 't' + {1058, 10, 8, 11, 1, -7}, // 0x75 'u' + {1068, 11, 8, 11, 1, -7}, // 0x76 'v' + {1079, 11, 8, 11, 1, -7}, // 0x77 'w' + {1090, 11, 8, 11, 1, -7}, // 0x78 'x' + {1101, 12, 12, 11, 0, -7}, // 0x79 'y' + {1119, 9, 8, 11, 2, -7}, // 0x7A 'z' + {1128, 7, 14, 11, 3, -10}, // 0x7B '{' + {1141, 4, 14, 11, 4, -10}, // 0x7C '|' + {1148, 8, 14, 11, 2, -10}, // 0x7D '}' + {1162, 9, 4, 11, 2, -6}}; // 0x7E '~' + +const GFXfont FreeMonoBoldOblique9pt7b PROGMEM = { + (uint8_t *)FreeMonoBoldOblique9pt7bBitmaps, + (GFXglyph *)FreeMonoBoldOblique9pt7bGlyphs, 0x20, 0x7E, 18}; + +// Approx. 1839 bytes diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoOblique12pt7b.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoOblique12pt7b.h new file mode 100644 index 0000000..0617603 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoOblique12pt7b.h @@ -0,0 +1,250 @@ +#pragma once +#include + +const uint8_t FreeMonoOblique12pt7bBitmaps[] PROGMEM = { + 0x11, 0x11, 0x12, 0x22, 0x22, 0x00, 0x0E, 0xE0, 0xE7, 0xE7, 0xC6, 0xC6, + 0xC6, 0x84, 0x84, 0x02, 0x40, 0x88, 0x12, 0x02, 0x40, 0x48, 0x7F, 0xC2, + 0x40, 0x48, 0x11, 0x1F, 0xF8, 0x48, 0x09, 0x02, 0x40, 0x48, 0x09, 0x02, + 0x20, 0x02, 0x01, 0x00, 0xF4, 0xC3, 0x60, 0x50, 0x04, 0x00, 0xC0, 0x0F, + 0x00, 0x60, 0x0A, 0x02, 0x81, 0x30, 0xC7, 0xC0, 0x80, 0x20, 0x08, 0x00, + 0x0E, 0x02, 0x20, 0x84, 0x10, 0x82, 0x20, 0x38, 0x00, 0x38, 0x38, 0x38, + 0x08, 0xE0, 0x22, 0x08, 0x41, 0x08, 0x22, 0x03, 0x80, 0x07, 0x84, 0x04, + 0x02, 0x01, 0x00, 0xC1, 0xA2, 0x8A, 0x85, 0x43, 0x31, 0x8F, 0x60, 0xFF, + 0x6D, 0x20, 0x00, 0x44, 0x42, 0x21, 0x08, 0x84, 0x21, 0x08, 0x42, 0x10, + 0x42, 0x00, 0x00, 0x84, 0x10, 0x84, 0x21, 0x08, 0x46, 0x21, 0x10, 0x88, + 0x44, 0x00, 0x04, 0x02, 0x02, 0x1D, 0x13, 0xF0, 0x40, 0x50, 0x48, 0x44, + 0x00, 0x02, 0x00, 0x40, 0x08, 0x02, 0x00, 0x41, 0xFF, 0xC1, 0x00, 0x20, + 0x08, 0x01, 0x00, 0x20, 0x00, 0x1C, 0xE3, 0x18, 0x63, 0x08, 0x00, 0xFF, + 0xE0, 0x7F, 0x00, 0x00, 0x08, 0x00, 0x80, 0x04, 0x00, 0x40, 0x04, 0x00, + 0x60, 0x02, 0x00, 0x20, 0x03, 0x00, 0x10, 0x01, 0x00, 0x18, 0x00, 0x80, + 0x08, 0x00, 0x80, 0x04, 0x00, 0x40, 0x04, 0x00, 0x00, 0x07, 0x06, 0x23, + 0x04, 0x81, 0x40, 0x50, 0x14, 0x06, 0x02, 0x80, 0xA0, 0x28, 0x0A, 0x04, + 0x83, 0x11, 0x83, 0x80, 0x03, 0x03, 0x83, 0x83, 0x43, 0x20, 0x10, 0x08, + 0x08, 0x04, 0x02, 0x01, 0x01, 0x00, 0x80, 0x43, 0xFE, 0x01, 0xC0, 0x62, + 0x0C, 0x10, 0x81, 0x00, 0x10, 0x02, 0x00, 0x60, 0x0C, 0x01, 0x00, 0x20, + 0x0C, 0x01, 0x80, 0x20, 0x04, 0x04, 0xFF, 0xC0, 0x07, 0xC3, 0x0C, 0x00, + 0x80, 0x10, 0x06, 0x01, 0x81, 0xC0, 0x0C, 0x00, 0x40, 0x08, 0x01, 0x00, + 0x20, 0x09, 0x86, 0x0F, 0x00, 0x00, 0xC0, 0x50, 0x24, 0x12, 0x04, 0x82, + 0x21, 0x08, 0x82, 0x21, 0x10, 0x4F, 0xF8, 0x04, 0x01, 0x00, 0x80, 0xF8, + 0x0F, 0xE2, 0x00, 0x40, 0x08, 0x01, 0x00, 0x4E, 0x0E, 0x20, 0x02, 0x00, + 0x40, 0x08, 0x01, 0x00, 0x40, 0x19, 0x06, 0x1F, 0x00, 0x01, 0xE0, 0xC0, + 0x60, 0x18, 0x02, 0x00, 0x80, 0x13, 0xC5, 0x88, 0xE0, 0x98, 0x12, 0x02, + 0x40, 0x48, 0x10, 0x84, 0x0F, 0x00, 0xFF, 0xA0, 0x20, 0x08, 0x04, 0x01, + 0x00, 0x80, 0x20, 0x10, 0x04, 0x02, 0x00, 0x80, 0x40, 0x10, 0x08, 0x02, + 0x00, 0x07, 0x81, 0x08, 0x40, 0x90, 0x12, 0x02, 0x40, 0x84, 0x20, 0x78, + 0x30, 0x88, 0x0A, 0x01, 0x40, 0x28, 0x08, 0x82, 0x0F, 0x80, 0x07, 0x81, + 0x08, 0x40, 0x90, 0x12, 0x02, 0x40, 0xC8, 0x39, 0x8D, 0x1E, 0x40, 0x08, + 0x02, 0x00, 0xC0, 0x30, 0x18, 0x3E, 0x00, 0x19, 0xCC, 0x00, 0x00, 0x0C, + 0xE6, 0x00, 0x06, 0x1C, 0x30, 0x00, 0x00, 0x00, 0x1C, 0x30, 0xE1, 0x86, + 0x08, 0x00, 0x00, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x06, 0x00, 0x30, + 0x00, 0xC0, 0x06, 0x00, 0x18, 0x00, 0xC0, 0x7F, 0xF8, 0x00, 0x00, 0x01, + 0xFF, 0xE0, 0x18, 0x00, 0xC0, 0x03, 0x00, 0x18, 0x00, 0x60, 0x03, 0x00, + 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x00, 0x3E, 0xC3, 0x81, 0x01, 0x03, + 0x06, 0x18, 0x20, 0x20, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0x07, 0x82, 0x31, + 0x04, 0x81, 0x20, 0x48, 0x74, 0x65, 0x21, 0x48, 0x92, 0x28, 0x7A, 0x00, + 0x80, 0x20, 0x04, 0x00, 0xF8, 0x07, 0xE0, 0x02, 0x80, 0x0A, 0x00, 0x48, + 0x01, 0x20, 0x08, 0x40, 0x41, 0x01, 0x04, 0x0F, 0xF0, 0x20, 0x41, 0x01, + 0x04, 0x02, 0x20, 0x0B, 0xE1, 0xF0, 0x1F, 0xF0, 0x40, 0xC2, 0x02, 0x10, + 0x10, 0x81, 0x84, 0x18, 0x7F, 0x82, 0x02, 0x10, 0x08, 0x80, 0x44, 0x02, + 0x60, 0x22, 0x03, 0x7F, 0xE0, 0x07, 0x91, 0x87, 0x20, 0x34, 0x02, 0x40, + 0x08, 0x00, 0x80, 0x08, 0x00, 0x80, 0x08, 0x00, 0x80, 0x04, 0x04, 0x61, + 0x81, 0xE0, 0x1F, 0xE0, 0x41, 0x82, 0x06, 0x10, 0x11, 0x00, 0x88, 0x04, + 0x40, 0x22, 0x01, 0x10, 0x11, 0x00, 0x88, 0x08, 0x40, 0xC2, 0x0C, 0x7F, + 0x80, 0x1F, 0xFC, 0x20, 0x10, 0x80, 0x82, 0x00, 0x08, 0x00, 0x22, 0x01, + 0xF8, 0x04, 0x20, 0x10, 0x00, 0x40, 0x01, 0x01, 0x0C, 0x04, 0x20, 0x13, + 0xFF, 0xC0, 0x1F, 0xFC, 0x20, 0x10, 0x80, 0x42, 0x01, 0x08, 0x00, 0x22, + 0x01, 0xF8, 0x04, 0x20, 0x10, 0x00, 0x40, 0x01, 0x00, 0x0C, 0x00, 0x20, + 0x03, 0xF8, 0x00, 0x07, 0xD0, 0x83, 0x30, 0x12, 0x00, 0x40, 0x04, 0x00, + 0x80, 0x08, 0x00, 0x83, 0xE8, 0x04, 0x80, 0x4C, 0x04, 0x60, 0x41, 0xF8, + 0x0F, 0x3C, 0x08, 0x10, 0x20, 0x20, 0x40, 0x40, 0x81, 0x01, 0x02, 0x03, + 0xFC, 0x08, 0x08, 0x10, 0x10, 0x20, 0x40, 0x40, 0x80, 0x81, 0x02, 0x02, + 0x1F, 0x1E, 0x00, 0x3F, 0xE0, 0x40, 0x08, 0x01, 0x00, 0x20, 0x08, 0x01, + 0x00, 0x20, 0x04, 0x00, 0x80, 0x20, 0x04, 0x00, 0x81, 0xFF, 0x00, 0x03, + 0xFE, 0x00, 0x20, 0x00, 0x80, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, + 0x00, 0x20, 0x40, 0x40, 0x80, 0x81, 0x01, 0x02, 0x04, 0x06, 0x10, 0x07, + 0xC0, 0x00, 0x1F, 0x1E, 0x10, 0x10, 0x20, 0xC0, 0x43, 0x00, 0x88, 0x01, + 0x20, 0x07, 0xC0, 0x0C, 0x40, 0x10, 0x40, 0x20, 0x80, 0x41, 0x01, 0x81, + 0x02, 0x02, 0x1F, 0x87, 0x00, 0x3F, 0x80, 0x40, 0x04, 0x00, 0x40, 0x08, + 0x00, 0x80, 0x08, 0x00, 0x80, 0x08, 0x01, 0x01, 0x10, 0x11, 0x02, 0x10, + 0x2F, 0xFE, 0x1C, 0x03, 0x85, 0x03, 0x02, 0x82, 0x81, 0x41, 0x40, 0xA1, + 0x20, 0x89, 0x30, 0x44, 0x90, 0x22, 0x88, 0x11, 0x44, 0x08, 0x42, 0x08, + 0x03, 0x04, 0x01, 0x02, 0x00, 0x87, 0xC3, 0xE0, 0x3C, 0x3E, 0x18, 0x08, + 0x38, 0x20, 0x50, 0x41, 0x20, 0x82, 0x61, 0x04, 0x42, 0x08, 0x88, 0x10, + 0x90, 0x41, 0x20, 0x83, 0x41, 0x02, 0x82, 0x06, 0x1F, 0x04, 0x00, 0x03, + 0xC0, 0x61, 0x84, 0x04, 0x40, 0x14, 0x00, 0xA0, 0x06, 0x00, 0x30, 0x01, + 0x80, 0x14, 0x00, 0xA0, 0x08, 0x80, 0x86, 0x18, 0x0F, 0x00, 0x1F, 0xE0, + 0x40, 0x82, 0x02, 0x10, 0x10, 0x80, 0x84, 0x08, 0x40, 0x83, 0xF8, 0x10, + 0x00, 0x80, 0x04, 0x00, 0x60, 0x02, 0x00, 0x7F, 0x00, 0x03, 0xC0, 0x61, + 0x84, 0x04, 0x40, 0x14, 0x00, 0xA0, 0x06, 0x00, 0x30, 0x01, 0x80, 0x14, + 0x00, 0xA0, 0x08, 0x80, 0x86, 0x18, 0x1F, 0x00, 0x40, 0x0F, 0xC4, 0x41, + 0xC0, 0x1F, 0xE0, 0x40, 0x82, 0x02, 0x10, 0x10, 0x80, 0x84, 0x08, 0x60, + 0x83, 0xF8, 0x10, 0xC0, 0x82, 0x04, 0x08, 0x40, 0x42, 0x03, 0x7E, 0x0C, + 0x07, 0xA3, 0x0C, 0x40, 0x90, 0x12, 0x00, 0x40, 0x06, 0x00, 0x3C, 0x00, + 0x40, 0x0A, 0x01, 0x40, 0x4C, 0x11, 0x7C, 0x00, 0xFF, 0xE8, 0x42, 0x84, + 0x20, 0x40, 0x04, 0x00, 0x80, 0x08, 0x00, 0x80, 0x08, 0x00, 0x80, 0x10, + 0x01, 0x00, 0x10, 0x0F, 0xE0, 0xF8, 0xF9, 0x00, 0x88, 0x08, 0x80, 0x44, + 0x02, 0x20, 0x11, 0x01, 0x08, 0x08, 0x80, 0x44, 0x02, 0x20, 0x31, 0x01, + 0x04, 0x30, 0x1E, 0x00, 0xF8, 0x7D, 0x00, 0x42, 0x01, 0x08, 0x08, 0x20, + 0x40, 0x81, 0x02, 0x08, 0x08, 0x20, 0x11, 0x00, 0x48, 0x01, 0x20, 0x05, + 0x00, 0x14, 0x00, 0x60, 0x00, 0xF8, 0x7D, 0x00, 0x44, 0x01, 0x11, 0x84, + 0x46, 0x21, 0x18, 0x84, 0xA2, 0x12, 0x90, 0x91, 0x42, 0x45, 0x0A, 0x14, + 0x28, 0x60, 0xC1, 0x83, 0x06, 0x00, 0x1E, 0x1E, 0x10, 0x10, 0x10, 0x40, + 0x21, 0x00, 0x24, 0x00, 0x78, 0x00, 0x60, 0x01, 0xC0, 0x06, 0x80, 0x09, + 0x80, 0x21, 0x00, 0x81, 0x02, 0x02, 0x1E, 0x1F, 0x00, 0xF0, 0xF4, 0x04, + 0x20, 0x82, 0x18, 0x11, 0x01, 0x20, 0x1C, 0x00, 0x80, 0x08, 0x00, 0x80, + 0x10, 0x01, 0x00, 0x10, 0x0F, 0xE0, 0x0F, 0xF1, 0x01, 0x10, 0x21, 0x04, + 0x00, 0x80, 0x10, 0x02, 0x00, 0x40, 0x0C, 0x01, 0x82, 0x10, 0x22, 0x04, + 0x40, 0x47, 0xFC, 0x0E, 0x20, 0x40, 0x81, 0x02, 0x08, 0x10, 0x20, 0x40, + 0x82, 0x04, 0x08, 0x10, 0x20, 0x81, 0xE0, 0x84, 0x20, 0x84, 0x20, 0x84, + 0x21, 0x04, 0x21, 0x08, 0x21, 0x08, 0x40, 0x1E, 0x04, 0x08, 0x20, 0x40, + 0x81, 0x02, 0x04, 0x10, 0x20, 0x40, 0x81, 0x02, 0x08, 0x11, 0xE0, 0x04, + 0x06, 0x04, 0x84, 0x44, 0x14, 0x0C, 0xFF, 0xFE, 0x99, 0x90, 0x1F, 0xC0, + 0x06, 0x00, 0x20, 0x02, 0x1F, 0xE6, 0x04, 0xC0, 0x48, 0x04, 0x81, 0xC7, + 0xEF, 0x18, 0x00, 0x40, 0x02, 0x00, 0x10, 0x00, 0x80, 0x09, 0xF0, 0x50, + 0xC3, 0x03, 0x10, 0x08, 0x80, 0x48, 0x02, 0x40, 0x23, 0x03, 0x1C, 0x33, + 0xBE, 0x00, 0x0F, 0xD3, 0x07, 0x60, 0x24, 0x02, 0x80, 0x08, 0x00, 0x80, + 0x08, 0x06, 0x41, 0xC3, 0xF0, 0x00, 0x38, 0x00, 0x40, 0x02, 0x00, 0x20, + 0x01, 0x07, 0xC8, 0x43, 0x44, 0x0E, 0x40, 0x24, 0x01, 0x20, 0x09, 0x00, + 0xC8, 0x0E, 0x20, 0xE0, 0xF9, 0xC0, 0x0F, 0x86, 0x09, 0x00, 0xA0, 0x1F, + 0xFF, 0x00, 0x20, 0x06, 0x00, 0x60, 0xC7, 0xE0, 0x01, 0xF8, 0x10, 0x01, + 0x00, 0x08, 0x00, 0x40, 0x1F, 0xF0, 0x20, 0x01, 0x00, 0x08, 0x00, 0x40, + 0x04, 0x00, 0x20, 0x01, 0x00, 0x08, 0x03, 0xFE, 0x00, 0x0F, 0x31, 0x86, + 0x10, 0x10, 0x80, 0x88, 0x04, 0x40, 0x22, 0x02, 0x10, 0x10, 0x43, 0x81, + 0xE4, 0x00, 0x40, 0x02, 0x00, 0x20, 0x3E, 0x00, 0x1C, 0x00, 0x20, 0x03, + 0x00, 0x10, 0x00, 0x80, 0x05, 0xF0, 0x30, 0xC3, 0x02, 0x10, 0x10, 0x80, + 0x84, 0x0C, 0x20, 0x63, 0x02, 0x10, 0x13, 0xE3, 0xE0, 0x01, 0x80, 0x40, + 0x10, 0x00, 0x00, 0x07, 0xC0, 0x20, 0x08, 0x02, 0x00, 0x80, 0x20, 0x10, + 0x04, 0x01, 0x0F, 0xFC, 0x00, 0x40, 0x10, 0x0C, 0x00, 0x00, 0x07, 0xF0, + 0x04, 0x01, 0x00, 0x40, 0x20, 0x08, 0x02, 0x00, 0x80, 0x20, 0x10, 0x04, + 0x01, 0x00, 0x8F, 0xC0, 0x18, 0x00, 0x80, 0x08, 0x00, 0x80, 0x08, 0x01, + 0x1F, 0x10, 0x81, 0x30, 0x14, 0x01, 0xC0, 0x26, 0x02, 0x20, 0x21, 0x02, + 0x08, 0xE1, 0xE0, 0x0F, 0x80, 0x40, 0x10, 0x04, 0x01, 0x00, 0x40, 0x20, + 0x08, 0x02, 0x00, 0x80, 0x20, 0x10, 0x04, 0x01, 0x0F, 0xFC, 0x3B, 0xB8, + 0x33, 0x91, 0x08, 0x44, 0x21, 0x10, 0x84, 0x42, 0x12, 0x10, 0x48, 0x42, + 0x21, 0x0B, 0xC6, 0x30, 0x19, 0xE0, 0xE3, 0x08, 0x11, 0x01, 0x10, 0x11, + 0x02, 0x10, 0x21, 0x02, 0x20, 0x2F, 0x87, 0x0F, 0x86, 0x19, 0x80, 0xA0, + 0x18, 0x03, 0x00, 0x60, 0x14, 0x06, 0x61, 0x87, 0xC0, 0x19, 0xF0, 0x28, + 0x20, 0xC0, 0x42, 0x01, 0x10, 0x04, 0x40, 0x11, 0x00, 0x86, 0x06, 0x14, + 0x30, 0xCF, 0x02, 0x00, 0x08, 0x00, 0x20, 0x03, 0xF0, 0x00, 0x0F, 0x39, + 0x85, 0x18, 0x18, 0x80, 0x88, 0x04, 0x40, 0x22, 0x01, 0x18, 0x18, 0x63, + 0x81, 0xE4, 0x00, 0x20, 0x01, 0x00, 0x10, 0x07, 0xE0, 0x1C, 0x78, 0x2C, + 0x01, 0x80, 0x18, 0x00, 0x80, 0x04, 0x00, 0x20, 0x02, 0x00, 0x10, 0x07, + 0xFC, 0x00, 0x0F, 0x44, 0x32, 0x04, 0x80, 0x1E, 0x00, 0x60, 0x0A, 0x02, + 0xC1, 0x2F, 0x80, 0x10, 0x08, 0x04, 0x02, 0x0F, 0xF9, 0x00, 0x80, 0x40, + 0x20, 0x20, 0x10, 0x08, 0x04, 0x19, 0xF0, 0xE0, 0xF2, 0x02, 0x40, 0x24, + 0x02, 0x40, 0x24, 0x06, 0x40, 0x44, 0x04, 0x41, 0xC3, 0xE6, 0xF8, 0xFA, + 0x01, 0x08, 0x10, 0x41, 0x02, 0x08, 0x10, 0x80, 0x48, 0x02, 0x40, 0x14, + 0x00, 0xC0, 0x00, 0xE0, 0x7A, 0x01, 0x10, 0x08, 0x8C, 0x84, 0xA4, 0x25, + 0x21, 0x4A, 0x0A, 0x50, 0x63, 0x02, 0x18, 0x00, 0x1E, 0x3C, 0x20, 0x40, + 0x46, 0x00, 0xB0, 0x03, 0x00, 0x0E, 0x00, 0xC8, 0x06, 0x10, 0x20, 0x23, + 0xE3, 0xC0, 0x3C, 0x3C, 0x40, 0x20, 0x81, 0x02, 0x08, 0x08, 0x20, 0x31, + 0x00, 0x48, 0x01, 0x40, 0x05, 0x00, 0x08, 0x00, 0x40, 0x02, 0x00, 0x08, + 0x03, 0xF0, 0x00, 0x3F, 0xC4, 0x18, 0x06, 0x01, 0x80, 0x60, 0x10, 0x04, + 0x01, 0x00, 0x40, 0x9F, 0xF0, 0x06, 0x10, 0x20, 0x41, 0x02, 0x04, 0x08, + 0x21, 0x80, 0x81, 0x02, 0x08, 0x10, 0x20, 0x40, 0xC0, 0x01, 0x11, 0x12, + 0x22, 0x24, 0x44, 0x44, 0x88, 0x80, 0x0C, 0x08, 0x10, 0x20, 0x40, 0x82, + 0x04, 0x08, 0x0C, 0x20, 0x81, 0x02, 0x04, 0x08, 0x21, 0x80, 0x38, 0x28, + 0x88, 0x0E, 0x00}; + +const GFXglyph FreeMonoOblique12pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 14, 0, 1}, // 0x20 ' ' + {0, 4, 15, 14, 6, -14}, // 0x21 '!' + {8, 8, 7, 14, 5, -14}, // 0x22 '"' + {15, 11, 16, 14, 3, -14}, // 0x23 '#' + {37, 10, 18, 14, 4, -15}, // 0x24 '$' + {60, 11, 15, 14, 3, -14}, // 0x25 '%' + {81, 9, 12, 14, 3, -11}, // 0x26 '&' + {95, 3, 7, 14, 8, -14}, // 0x27 ''' + {98, 5, 18, 14, 8, -14}, // 0x28 '(' + {110, 5, 18, 14, 4, -14}, // 0x29 ')' + {122, 9, 9, 14, 5, -14}, // 0x2A '*' + {133, 11, 11, 14, 3, -11}, // 0x2B '+' + {149, 6, 7, 14, 3, -3}, // 0x2C ',' + {155, 11, 1, 14, 3, -6}, // 0x2D '-' + {157, 3, 3, 14, 6, -2}, // 0x2E '.' + {159, 13, 18, 14, 2, -15}, // 0x2F '/' + {189, 10, 15, 14, 4, -14}, // 0x30 '0' + {208, 9, 15, 14, 3, -14}, // 0x31 '1' + {225, 12, 15, 14, 2, -14}, // 0x32 '2' + {248, 11, 15, 14, 3, -14}, // 0x33 '3' + {269, 10, 15, 14, 3, -14}, // 0x34 '4' + {288, 11, 15, 14, 3, -14}, // 0x35 '5' + {309, 11, 15, 14, 4, -14}, // 0x36 '6' + {330, 10, 15, 14, 5, -14}, // 0x37 '7' + {349, 11, 15, 14, 3, -14}, // 0x38 '8' + {370, 11, 15, 14, 3, -14}, // 0x39 '9' + {391, 5, 10, 14, 5, -9}, // 0x3A ':' + {398, 7, 13, 14, 3, -9}, // 0x3B ';' + {410, 12, 11, 14, 3, -11}, // 0x3C '<' + {427, 13, 4, 14, 2, -8}, // 0x3D '=' + {434, 12, 11, 14, 2, -11}, // 0x3E '>' + {451, 8, 14, 14, 6, -13}, // 0x3F '?' + {465, 10, 16, 14, 3, -14}, // 0x40 '@' + {485, 14, 14, 14, 0, -13}, // 0x41 'A' + {510, 13, 14, 14, 1, -13}, // 0x42 'B' + {533, 12, 14, 14, 3, -13}, // 0x43 'C' + {554, 13, 14, 14, 1, -13}, // 0x44 'D' + {577, 14, 14, 14, 1, -13}, // 0x45 'E' + {602, 14, 14, 14, 1, -13}, // 0x46 'F' + {627, 12, 14, 14, 3, -13}, // 0x47 'G' + {648, 15, 14, 14, 1, -13}, // 0x48 'H' + {675, 11, 14, 14, 3, -13}, // 0x49 'I' + {695, 15, 14, 14, 2, -13}, // 0x4A 'J' + {722, 15, 14, 14, 1, -13}, // 0x4B 'K' + {749, 12, 14, 14, 2, -13}, // 0x4C 'L' + {770, 17, 14, 14, 0, -13}, // 0x4D 'M' + {800, 15, 14, 14, 1, -13}, // 0x4E 'N' + {827, 13, 14, 14, 2, -13}, // 0x4F 'O' + {850, 13, 14, 14, 1, -13}, // 0x50 'P' + {873, 13, 17, 14, 2, -13}, // 0x51 'Q' + {901, 13, 14, 14, 1, -13}, // 0x52 'R' + {924, 11, 14, 14, 3, -13}, // 0x53 'S' + {944, 12, 14, 14, 4, -13}, // 0x54 'T' + {965, 13, 14, 14, 3, -13}, // 0x55 'U' + {988, 14, 14, 14, 3, -13}, // 0x56 'V' + {1013, 14, 14, 14, 3, -13}, // 0x57 'W' + {1038, 15, 14, 14, 1, -13}, // 0x58 'X' + {1065, 12, 14, 14, 4, -13}, // 0x59 'Y' + {1086, 12, 14, 14, 2, -13}, // 0x5A 'Z' + {1107, 7, 18, 14, 6, -14}, // 0x5B '[' + {1123, 5, 18, 14, 6, -15}, // 0x5C '\' + {1135, 7, 18, 14, 3, -14}, // 0x5D ']' + {1151, 9, 6, 14, 5, -14}, // 0x5E '^' + {1158, 15, 1, 14, -1, 3}, // 0x5F '_' + {1160, 3, 4, 14, 6, -15}, // 0x60 '`' + {1162, 12, 10, 14, 2, -9}, // 0x61 'a' + {1177, 13, 15, 14, 1, -14}, // 0x62 'b' + {1202, 12, 10, 14, 3, -9}, // 0x63 'c' + {1217, 13, 15, 14, 2, -14}, // 0x64 'd' + {1242, 11, 10, 14, 3, -9}, // 0x65 'e' + {1256, 13, 15, 14, 3, -14}, // 0x66 'f' + {1281, 13, 14, 14, 3, -9}, // 0x67 'g' + {1304, 13, 15, 14, 1, -14}, // 0x68 'h' + {1329, 10, 15, 14, 2, -14}, // 0x69 'i' + {1348, 10, 19, 14, 2, -14}, // 0x6A 'j' + {1372, 12, 15, 14, 2, -14}, // 0x6B 'k' + {1395, 10, 15, 14, 2, -14}, // 0x6C 'l' + {1414, 14, 10, 14, 0, -9}, // 0x6D 'm' + {1432, 12, 10, 14, 1, -9}, // 0x6E 'n' + {1447, 11, 10, 14, 3, -9}, // 0x6F 'o' + {1461, 14, 14, 14, 0, -9}, // 0x70 'p' + {1486, 13, 14, 14, 3, -9}, // 0x71 'q' + {1509, 13, 10, 14, 2, -9}, // 0x72 'r' + {1526, 10, 10, 14, 3, -9}, // 0x73 's' + {1539, 9, 14, 14, 3, -13}, // 0x74 't' + {1555, 12, 10, 14, 2, -9}, // 0x75 'u' + {1570, 13, 10, 14, 3, -9}, // 0x76 'v' + {1587, 13, 10, 14, 3, -9}, // 0x77 'w' + {1604, 14, 10, 14, 1, -9}, // 0x78 'x' + {1622, 14, 14, 14, 1, -9}, // 0x79 'y' + {1647, 11, 10, 14, 3, -9}, // 0x7A 'z' + {1661, 7, 18, 14, 5, -14}, // 0x7B '{' + {1677, 4, 17, 14, 6, -13}, // 0x7C '|' + {1686, 7, 18, 14, 4, -14}, // 0x7D '}' + {1702, 11, 3, 14, 3, -7}}; // 0x7E '~' + +const GFXfont FreeMonoOblique12pt7b PROGMEM = { + (uint8_t *)FreeMonoOblique12pt7bBitmaps, + (GFXglyph *)FreeMonoOblique12pt7bGlyphs, 0x20, 0x7E, 24}; + +// Approx. 2379 bytes diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoOblique18pt7b.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoOblique18pt7b.h new file mode 100644 index 0000000..c12ae08 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoOblique18pt7b.h @@ -0,0 +1,400 @@ +#pragma once +#include + +const uint8_t FreeMonoOblique18pt7bBitmaps[] PROGMEM = { + 0x00, 0x1C, 0x38, 0x70, 0xC1, 0x83, 0x06, 0x18, 0x30, 0x60, 0xC1, 0x02, + 0x04, 0x00, 0x00, 0x01, 0xC7, 0x8F, 0x1C, 0x00, 0x78, 0x7B, 0xC3, 0xFC, + 0x3D, 0xE1, 0xEF, 0x0F, 0x70, 0x73, 0x83, 0x98, 0x18, 0xC0, 0xC6, 0x06, + 0x00, 0x00, 0x8C, 0x01, 0x18, 0x06, 0x20, 0x08, 0x40, 0x11, 0x80, 0x62, + 0x00, 0xC4, 0x01, 0x18, 0x02, 0x30, 0x7F, 0xFC, 0x10, 0x80, 0x23, 0x00, + 0xC4, 0x01, 0x88, 0x3F, 0xFF, 0x04, 0x60, 0x18, 0x80, 0x21, 0x00, 0x46, + 0x01, 0x88, 0x03, 0x10, 0x04, 0x60, 0x08, 0xC0, 0x31, 0x00, 0x00, 0x30, + 0x00, 0x20, 0x00, 0x20, 0x00, 0xF9, 0x03, 0x0F, 0x06, 0x03, 0x04, 0x03, + 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x04, 0x00, 0x03, 0xC0, 0x00, 0x78, + 0x00, 0x0C, 0x00, 0x04, 0x00, 0x04, 0x40, 0x04, 0x40, 0x08, 0x40, 0x18, + 0xF0, 0x60, 0x9F, 0x80, 0x02, 0x00, 0x06, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x04, 0x00, 0x03, 0xC0, 0x0C, 0x60, 0x08, 0x20, 0x10, 0x20, 0x10, 0x20, + 0x10, 0x40, 0x18, 0x80, 0x0F, 0x00, 0x00, 0x0F, 0x00, 0x78, 0x07, 0xC0, + 0x3C, 0x00, 0xE0, 0x00, 0x01, 0xE0, 0x02, 0x18, 0x04, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x10, 0x0C, 0x20, 0x07, 0xC0, 0x01, 0xF0, 0x11, 0x81, + 0x00, 0x10, 0x00, 0x80, 0x04, 0x00, 0x20, 0x01, 0x80, 0x04, 0x00, 0xF0, + 0x09, 0x86, 0x84, 0x48, 0x32, 0x40, 0xA2, 0x07, 0x10, 0x30, 0x43, 0x81, + 0xE7, 0x80, 0x7B, 0xFD, 0xEF, 0x73, 0x98, 0xC6, 0x00, 0x01, 0x02, 0x06, + 0x0C, 0x0C, 0x18, 0x10, 0x30, 0x30, 0x60, 0x60, 0x60, 0xC0, 0xC0, 0xC0, + 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x40, 0x60, 0x60, 0x20, 0x04, 0x06, + 0x06, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x06, + 0x06, 0x06, 0x0C, 0x0C, 0x0C, 0x18, 0x10, 0x30, 0x60, 0x40, 0xC0, 0x01, + 0x00, 0x04, 0x00, 0x10, 0x00, 0xC6, 0xE3, 0xF8, 0x7E, 0x00, 0x70, 0x03, + 0x40, 0x19, 0x80, 0xC2, 0x06, 0x0C, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x02, + 0x00, 0x04, 0x00, 0x08, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0xFF, 0xFE, + 0x02, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0x02, + 0x00, 0x04, 0x00, 0x0F, 0x87, 0x87, 0x83, 0x83, 0xC1, 0xC1, 0xC0, 0xC0, + 0xE0, 0x60, 0x00, 0xFF, 0xFF, 0x77, 0xFF, 0xF7, 0x00, 0x00, 0x00, 0x60, + 0x00, 0x08, 0x00, 0x02, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x04, 0x00, + 0x01, 0x80, 0x00, 0x60, 0x00, 0x08, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, + 0x10, 0x00, 0x06, 0x00, 0x01, 0x80, 0x00, 0x20, 0x00, 0x0C, 0x00, 0x03, + 0x00, 0x00, 0x40, 0x00, 0x18, 0x00, 0x06, 0x00, 0x00, 0x80, 0x00, 0x20, + 0x00, 0x0C, 0x00, 0x03, 0x00, 0x00, 0x40, 0x00, 0x08, 0x00, 0x00, 0x01, + 0xF0, 0x18, 0x60, 0x80, 0x86, 0x01, 0x10, 0x04, 0x80, 0x12, 0x00, 0x50, + 0x01, 0x40, 0x0D, 0x00, 0x24, 0x00, 0xA0, 0x02, 0x80, 0x1A, 0x00, 0x48, + 0x01, 0x20, 0x0C, 0x80, 0x22, 0x01, 0x84, 0x0C, 0x18, 0x60, 0x3E, 0x00, + 0x00, 0x60, 0x07, 0x00, 0x68, 0x06, 0x40, 0xE4, 0x04, 0x20, 0x01, 0x00, + 0x08, 0x00, 0x40, 0x04, 0x00, 0x20, 0x01, 0x00, 0x08, 0x00, 0x80, 0x04, + 0x00, 0x20, 0x01, 0x00, 0x08, 0x00, 0x80, 0x04, 0x0F, 0xFF, 0x80, 0x00, + 0x3C, 0x00, 0x61, 0x80, 0x40, 0x40, 0x40, 0x10, 0x60, 0x08, 0x00, 0x04, + 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x07, 0x00, 0x07, + 0x00, 0x06, 0x00, 0x06, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0C, 0x00, 0x0C, + 0x00, 0x1C, 0x01, 0x1C, 0x00, 0x8F, 0xFF, 0xC0, 0x00, 0xFC, 0x03, 0x06, + 0x06, 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, + 0x00, 0x0C, 0x00, 0xF0, 0x00, 0x18, 0x00, 0x04, 0x00, 0x02, 0x00, 0x02, + 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x04, 0x40, 0x18, 0x70, 0x30, + 0x0F, 0xC0, 0x00, 0x1C, 0x00, 0xD0, 0x06, 0x80, 0x32, 0x00, 0x88, 0x04, + 0x20, 0x30, 0x81, 0x84, 0x04, 0x10, 0x20, 0x41, 0x81, 0x0C, 0x08, 0x60, + 0x21, 0x00, 0x8F, 0xFF, 0x80, 0x18, 0x00, 0x40, 0x01, 0x00, 0x04, 0x00, + 0x10, 0x07, 0xE0, 0x03, 0xFF, 0x03, 0x00, 0x01, 0x80, 0x00, 0x80, 0x00, + 0x40, 0x00, 0x20, 0x00, 0x30, 0x00, 0x1B, 0xE0, 0x0E, 0x0C, 0x00, 0x02, + 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, + 0x08, 0x00, 0x04, 0x60, 0x04, 0x18, 0x04, 0x06, 0x0C, 0x00, 0xF8, 0x00, + 0x00, 0x3F, 0x00, 0xC0, 0x03, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, + 0x30, 0x00, 0x20, 0x00, 0x40, 0x00, 0x43, 0xE0, 0x4C, 0x30, 0xB0, 0x18, + 0xE0, 0x08, 0xC0, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x10, 0xC0, 0x10, + 0x40, 0x20, 0x20, 0xC0, 0x1F, 0x00, 0xFF, 0xFC, 0x00, 0xE0, 0x04, 0x00, + 0x60, 0x02, 0x00, 0x30, 0x01, 0x00, 0x18, 0x00, 0x80, 0x0C, 0x00, 0x40, + 0x06, 0x00, 0x20, 0x03, 0x00, 0x10, 0x01, 0x80, 0x08, 0x00, 0xC0, 0x04, + 0x00, 0x60, 0x02, 0x00, 0x00, 0x00, 0xF0, 0x06, 0x18, 0x10, 0x18, 0x40, + 0x11, 0x00, 0x22, 0x00, 0x44, 0x00, 0x88, 0x02, 0x18, 0x08, 0x18, 0x60, + 0x1F, 0x80, 0xC1, 0x82, 0x01, 0x88, 0x01, 0x20, 0x02, 0x40, 0x04, 0x80, + 0x09, 0x00, 0x23, 0x00, 0x83, 0x06, 0x01, 0xF0, 0x00, 0x00, 0xF0, 0x06, + 0x18, 0x10, 0x10, 0x40, 0x30, 0x80, 0x22, 0x00, 0x44, 0x00, 0x88, 0x03, + 0x10, 0x0E, 0x30, 0x34, 0x30, 0xD0, 0x3E, 0x20, 0x00, 0x40, 0x01, 0x00, + 0x02, 0x00, 0x08, 0x00, 0x20, 0x00, 0xC0, 0x02, 0x00, 0x18, 0x0F, 0xC0, + 0x00, 0x1C, 0x7C, 0xF9, 0xF1, 0xC0, 0x00, 0x00, 0x00, 0x01, 0xC7, 0xCF, + 0x9F, 0x1C, 0x00, 0x01, 0xC0, 0x7C, 0x0F, 0x81, 0xF0, 0x1C, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x07, 0x81, 0xE0, 0x3C, 0x0F, 0x01, + 0xC0, 0x70, 0x0E, 0x03, 0x80, 0x60, 0x00, 0x00, 0x01, 0x80, 0x03, 0x80, + 0x07, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x00, + 0xE0, 0x00, 0x1C, 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x07, + 0x00, 0x00, 0xE0, 0x00, 0x38, 0x7F, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x18, 0x00, 0x03, 0x80, + 0x00, 0x38, 0x00, 0x07, 0x00, 0x00, 0x70, 0x00, 0x0E, 0x00, 0x00, 0xE0, + 0x00, 0x0E, 0x00, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, + 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x00, 0x1F, 0xCE, 0x06, 0x80, + 0x38, 0x01, 0x80, 0x10, 0x01, 0x00, 0x20, 0x04, 0x01, 0x80, 0xF0, 0x18, + 0x01, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0F, 0x80, 0xF8, + 0x07, 0x00, 0x01, 0xF0, 0x0C, 0x30, 0x30, 0x30, 0x40, 0x21, 0x00, 0x44, + 0x00, 0x88, 0x01, 0x10, 0x1E, 0x40, 0xC4, 0x86, 0x11, 0x08, 0x22, 0x20, + 0x48, 0x40, 0x90, 0x82, 0x21, 0x84, 0x40, 0xFC, 0x80, 0x01, 0x00, 0x02, + 0x00, 0x04, 0x00, 0x04, 0x00, 0x0C, 0x18, 0x07, 0xC0, 0x00, 0x01, 0xFE, + 0x00, 0x00, 0x68, 0x00, 0x06, 0x40, 0x00, 0x32, 0x00, 0x03, 0x10, 0x00, + 0x10, 0x80, 0x01, 0x84, 0x00, 0x18, 0x10, 0x00, 0xC0, 0x80, 0x0C, 0x04, + 0x00, 0x60, 0x20, 0x06, 0x01, 0x00, 0x3F, 0xFC, 0x02, 0x00, 0x20, 0x10, + 0x01, 0x01, 0x00, 0x08, 0x08, 0x00, 0x40, 0x80, 0x02, 0x0C, 0x00, 0x09, + 0xFC, 0x07, 0xF0, 0x0F, 0xFF, 0x00, 0x40, 0x60, 0x20, 0x0C, 0x08, 0x01, + 0x02, 0x00, 0x40, 0x80, 0x10, 0x40, 0x08, 0x10, 0x06, 0x04, 0x03, 0x01, + 0xFF, 0x80, 0x40, 0x38, 0x20, 0x02, 0x08, 0x00, 0x42, 0x00, 0x10, 0x80, + 0x04, 0x40, 0x01, 0x10, 0x00, 0x84, 0x00, 0x41, 0x00, 0x23, 0xFF, 0xF0, + 0x00, 0xFC, 0x40, 0xC1, 0xF0, 0xC0, 0x1C, 0x60, 0x06, 0x10, 0x00, 0x88, + 0x00, 0x24, 0x00, 0x01, 0x00, 0x00, 0x40, 0x00, 0x30, 0x00, 0x08, 0x00, + 0x02, 0x00, 0x00, 0x80, 0x00, 0x20, 0x00, 0x08, 0x00, 0x03, 0x00, 0x00, + 0x40, 0x06, 0x08, 0x03, 0x01, 0x83, 0x80, 0x3F, 0x00, 0x0F, 0xFE, 0x00, + 0x80, 0xC0, 0x20, 0x18, 0x10, 0x02, 0x04, 0x00, 0x41, 0x00, 0x10, 0x40, + 0x04, 0x20, 0x01, 0x08, 0x00, 0x42, 0x00, 0x10, 0x80, 0x08, 0x20, 0x02, + 0x10, 0x00, 0x84, 0x00, 0x21, 0x00, 0x10, 0x40, 0x08, 0x20, 0x06, 0x08, + 0x03, 0x02, 0x01, 0x83, 0xFF, 0x80, 0x0F, 0xFF, 0xE0, 0x10, 0x02, 0x02, + 0x00, 0x60, 0x20, 0x06, 0x02, 0x00, 0x60, 0x20, 0x00, 0x04, 0x00, 0x00, + 0x40, 0x80, 0x04, 0x10, 0x00, 0x7F, 0x00, 0x04, 0x10, 0x00, 0x81, 0x00, + 0x08, 0x00, 0x00, 0x80, 0x00, 0x08, 0x00, 0x81, 0x00, 0x08, 0x10, 0x00, + 0x81, 0x00, 0x18, 0x10, 0x01, 0x8F, 0xFF, 0xF0, 0x0F, 0xFF, 0xF0, 0x10, + 0x03, 0x02, 0x00, 0x30, 0x20, 0x03, 0x02, 0x00, 0x20, 0x20, 0x00, 0x04, + 0x00, 0x00, 0x40, 0x80, 0x04, 0x10, 0x00, 0x7F, 0x00, 0x04, 0x10, 0x00, + 0x81, 0x00, 0x08, 0x00, 0x00, 0x80, 0x00, 0x08, 0x00, 0x01, 0x00, 0x00, + 0x10, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0xFE, + 0x40, 0xC0, 0xF0, 0x40, 0x1C, 0x20, 0x03, 0x10, 0x00, 0x88, 0x00, 0x02, + 0x00, 0x01, 0x00, 0x00, 0x40, 0x00, 0x10, 0x00, 0x08, 0x00, 0x02, 0x01, + 0xFE, 0x80, 0x02, 0x20, 0x00, 0x88, 0x00, 0x22, 0x00, 0x08, 0x40, 0x04, + 0x18, 0x01, 0x03, 0x81, 0xC0, 0x3F, 0x80, 0x07, 0xE1, 0xF8, 0x08, 0x02, + 0x00, 0x80, 0x10, 0x04, 0x00, 0x80, 0x20, 0x04, 0x01, 0x00, 0x20, 0x18, + 0x02, 0x00, 0x80, 0x10, 0x04, 0x00, 0x80, 0x3F, 0xFC, 0x01, 0x00, 0x60, + 0x10, 0x02, 0x00, 0x80, 0x10, 0x04, 0x00, 0x80, 0x20, 0x04, 0x02, 0x00, + 0x40, 0x10, 0x02, 0x00, 0x80, 0x10, 0x04, 0x00, 0x81, 0xF8, 0x3F, 0x00, + 0x0F, 0xFF, 0x80, 0x10, 0x00, 0x08, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, + 0x00, 0x01, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, + 0x10, 0x00, 0x08, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x80, 0x1F, 0xFF, 0x00, 0x00, 0xFF, 0xF0, 0x00, 0x20, + 0x00, 0x02, 0x00, 0x00, 0x20, 0x00, 0x02, 0x00, 0x00, 0x20, 0x00, 0x04, + 0x00, 0x00, 0x40, 0x00, 0x04, 0x00, 0x00, 0x40, 0x00, 0x0C, 0x04, 0x00, + 0x80, 0x40, 0x08, 0x08, 0x00, 0x80, 0x80, 0x08, 0x08, 0x01, 0x00, 0x80, + 0x10, 0x0C, 0x02, 0x00, 0x60, 0xC0, 0x01, 0xF0, 0x00, 0x0F, 0xE1, 0xF8, + 0x08, 0x03, 0x00, 0x80, 0x60, 0x04, 0x06, 0x00, 0x20, 0x60, 0x01, 0x06, + 0x00, 0x10, 0xC0, 0x00, 0x8C, 0x00, 0x04, 0xC0, 0x00, 0x2F, 0x80, 0x01, + 0x8E, 0x00, 0x18, 0x30, 0x00, 0x80, 0xC0, 0x04, 0x06, 0x00, 0x20, 0x10, + 0x02, 0x00, 0xC0, 0x10, 0x06, 0x00, 0x80, 0x30, 0x04, 0x00, 0x81, 0xFC, + 0x07, 0x80, 0x07, 0xFC, 0x00, 0x10, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00, + 0x80, 0x00, 0x20, 0x00, 0x08, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x40, + 0x00, 0x10, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00, 0x80, 0x10, 0x20, 0x04, + 0x08, 0x01, 0x04, 0x00, 0x81, 0x00, 0x20, 0x40, 0x0B, 0xFF, 0xFE, 0x0F, + 0x00, 0x1E, 0x03, 0x00, 0x38, 0x05, 0x00, 0x68, 0x04, 0x80, 0x68, 0x04, + 0x80, 0xC8, 0x04, 0x80, 0x90, 0x04, 0x81, 0x90, 0x08, 0x43, 0x10, 0x08, + 0x42, 0x10, 0x08, 0x46, 0x10, 0x08, 0x4C, 0x20, 0x10, 0x2C, 0x20, 0x10, + 0x38, 0x20, 0x10, 0x30, 0x20, 0x10, 0x00, 0x40, 0x10, 0x00, 0x40, 0x20, + 0x00, 0x40, 0x20, 0x00, 0x40, 0x20, 0x00, 0x40, 0xFC, 0x07, 0xE0, 0x1F, + 0x01, 0xFC, 0x0C, 0x00, 0x80, 0x78, 0x02, 0x01, 0xE0, 0x18, 0x04, 0x80, + 0x60, 0x13, 0x01, 0x00, 0x4C, 0x04, 0x03, 0x18, 0x10, 0x0C, 0x60, 0xC0, + 0x20, 0x83, 0x00, 0x83, 0x08, 0x06, 0x0C, 0x20, 0x18, 0x18, 0x80, 0x40, + 0x66, 0x01, 0x00, 0x98, 0x04, 0x03, 0x40, 0x30, 0x0D, 0x00, 0xC0, 0x14, + 0x02, 0x00, 0x70, 0x3F, 0x80, 0xC0, 0x00, 0xF8, 0x01, 0x83, 0x01, 0x00, + 0xC1, 0x00, 0x21, 0x00, 0x19, 0x00, 0x04, 0x80, 0x02, 0x80, 0x01, 0x40, + 0x00, 0xC0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x28, 0x00, 0x14, 0x00, 0x12, + 0x00, 0x09, 0x80, 0x08, 0x40, 0x08, 0x30, 0x08, 0x0C, 0x18, 0x01, 0xF0, + 0x00, 0x0F, 0xFE, 0x00, 0x40, 0x60, 0x20, 0x0C, 0x08, 0x01, 0x02, 0x00, + 0x40, 0x80, 0x10, 0x40, 0x04, 0x10, 0x02, 0x04, 0x01, 0x01, 0x01, 0x80, + 0x7F, 0x80, 0x20, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00, 0x80, 0x00, 0x40, + 0x00, 0x10, 0x00, 0x04, 0x00, 0x01, 0x00, 0x03, 0xFE, 0x00, 0x00, 0xF8, + 0x01, 0x83, 0x01, 0x00, 0xC1, 0x00, 0x21, 0x00, 0x19, 0x00, 0x05, 0x00, + 0x02, 0x80, 0x01, 0x40, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x28, + 0x00, 0x14, 0x00, 0x12, 0x00, 0x09, 0x80, 0x08, 0x40, 0x08, 0x30, 0x08, + 0x0C, 0x18, 0x03, 0xF0, 0x00, 0xC0, 0x01, 0xC0, 0x01, 0xFE, 0x18, 0xC0, + 0xF0, 0x0F, 0xFE, 0x00, 0x40, 0x60, 0x20, 0x0C, 0x08, 0x01, 0x02, 0x00, + 0x40, 0x80, 0x10, 0x40, 0x04, 0x10, 0x02, 0x04, 0x01, 0x01, 0x01, 0x80, + 0x7F, 0x80, 0x20, 0x60, 0x08, 0x0C, 0x02, 0x03, 0x80, 0x80, 0x60, 0x40, + 0x18, 0x10, 0x03, 0x04, 0x00, 0xC1, 0x00, 0x1B, 0xF8, 0x07, 0x00, 0x7E, + 0x40, 0x60, 0xF0, 0x20, 0x1C, 0x10, 0x02, 0x08, 0x00, 0x82, 0x00, 0x00, + 0x80, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xC0, 0x00, + 0x18, 0x00, 0x01, 0x00, 0x00, 0x44, 0x00, 0x11, 0x00, 0x04, 0x40, 0x02, + 0x38, 0x01, 0x0B, 0x81, 0x82, 0x3F, 0x80, 0x3F, 0xFF, 0xA0, 0x20, 0x50, + 0x10, 0x28, 0x08, 0x24, 0x08, 0x10, 0x04, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, 0x10, 0x00, 0x10, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x1F, + 0xFC, 0x00, 0x7E, 0x0F, 0xC4, 0x00, 0x42, 0x00, 0x10, 0x80, 0x08, 0x20, + 0x02, 0x08, 0x00, 0x82, 0x00, 0x21, 0x00, 0x08, 0x40, 0x04, 0x10, 0x01, + 0x04, 0x00, 0x41, 0x00, 0x10, 0x80, 0x0C, 0x20, 0x02, 0x08, 0x00, 0x82, + 0x00, 0x60, 0x80, 0x10, 0x10, 0x08, 0x06, 0x0C, 0x00, 0x7C, 0x00, 0xFE, + 0x03, 0xF9, 0x80, 0x02, 0x0C, 0x00, 0x30, 0x20, 0x01, 0x01, 0x00, 0x10, + 0x08, 0x01, 0x80, 0x60, 0x08, 0x03, 0x00, 0xC0, 0x18, 0x04, 0x00, 0x40, + 0x60, 0x02, 0x06, 0x00, 0x10, 0x20, 0x00, 0xC3, 0x00, 0x06, 0x10, 0x00, + 0x31, 0x80, 0x00, 0x88, 0x00, 0x04, 0x80, 0x00, 0x2C, 0x00, 0x01, 0xC0, + 0x00, 0x0E, 0x00, 0x00, 0x7F, 0x07, 0xF2, 0x00, 0x04, 0x20, 0x00, 0xC2, + 0x00, 0x08, 0x20, 0xC0, 0x82, 0x0C, 0x18, 0x21, 0xA1, 0x02, 0x1A, 0x10, + 0x23, 0x23, 0x04, 0x32, 0x30, 0x46, 0x22, 0x04, 0x62, 0x60, 0x4C, 0x26, + 0x04, 0xC2, 0x40, 0x58, 0x24, 0x05, 0x82, 0xC0, 0x70, 0x28, 0x07, 0x02, + 0x80, 0xE0, 0x38, 0x0E, 0x03, 0x00, 0x0F, 0xC1, 0xF8, 0x30, 0x03, 0x00, + 0xC0, 0x30, 0x06, 0x03, 0x00, 0x18, 0x10, 0x00, 0xC1, 0x00, 0x03, 0x18, + 0x00, 0x09, 0x80, 0x00, 0x78, 0x00, 0x01, 0x80, 0x00, 0x1C, 0x00, 0x01, + 0xA0, 0x00, 0x19, 0x80, 0x01, 0x84, 0x00, 0x18, 0x30, 0x01, 0x80, 0xC0, + 0x08, 0x06, 0x00, 0x80, 0x18, 0x08, 0x00, 0xC1, 0xF8, 0x3F, 0x80, 0x7E, + 0x0F, 0xC4, 0x00, 0xC1, 0x80, 0x60, 0x20, 0x30, 0x0C, 0x08, 0x03, 0x04, + 0x00, 0x43, 0x00, 0x19, 0x80, 0x02, 0xC0, 0x00, 0xE0, 0x00, 0x10, 0x00, + 0x04, 0x00, 0x01, 0x00, 0x00, 0x80, 0x00, 0x20, 0x00, 0x08, 0x00, 0x02, + 0x00, 0x01, 0x00, 0x00, 0x40, 0x03, 0xFF, 0x80, 0x0F, 0xFF, 0x86, 0x00, + 0x82, 0x00, 0x81, 0x00, 0xC1, 0x80, 0xC0, 0xC0, 0xC0, 0x00, 0xC0, 0x00, + 0xC0, 0x00, 0x40, 0x00, 0x40, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x60, 0x10, 0x60, 0x18, 0x20, 0x08, 0x20, 0x04, 0x20, 0x02, 0x30, 0x03, + 0x1F, 0xFF, 0x80, 0x07, 0xE0, 0x80, 0x10, 0x02, 0x00, 0xC0, 0x18, 0x02, + 0x00, 0x40, 0x18, 0x03, 0x00, 0x40, 0x08, 0x01, 0x00, 0x60, 0x0C, 0x01, + 0x00, 0x20, 0x04, 0x01, 0x80, 0x30, 0x04, 0x00, 0x80, 0x10, 0x06, 0x00, + 0xFC, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, + 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, + 0x02, 0x02, 0x02, 0x02, 0x00, 0x07, 0xE0, 0x0C, 0x01, 0x00, 0x20, 0x04, + 0x01, 0x80, 0x30, 0x04, 0x00, 0x80, 0x30, 0x06, 0x00, 0x80, 0x10, 0x02, + 0x00, 0xC0, 0x18, 0x02, 0x00, 0x40, 0x18, 0x03, 0x00, 0x40, 0x08, 0x03, + 0x00, 0x60, 0xF8, 0x00, 0x01, 0x00, 0x1C, 0x01, 0xB0, 0x19, 0x81, 0x86, + 0x18, 0x11, 0x80, 0xD8, 0x03, 0x80, 0x18, 0xFF, 0xFF, 0xF8, 0xC7, 0x1C, + 0x71, 0x80, 0x03, 0xF8, 0x0C, 0x0C, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, + 0x00, 0x02, 0x07, 0xFC, 0x18, 0x0C, 0x20, 0x04, 0x40, 0x04, 0x80, 0x04, + 0x80, 0x08, 0x80, 0x38, 0xC0, 0xE8, 0x3F, 0x0F, 0x0F, 0x00, 0x00, 0x20, + 0x00, 0x04, 0x00, 0x01, 0x80, 0x00, 0x30, 0x00, 0x04, 0x00, 0x00, 0x87, + 0xC0, 0x13, 0x0C, 0x06, 0x80, 0x40, 0xE0, 0x0C, 0x18, 0x00, 0x82, 0x00, + 0x10, 0xC0, 0x02, 0x10, 0x00, 0x42, 0x00, 0x08, 0x40, 0x02, 0x08, 0x00, + 0x43, 0x80, 0x10, 0x70, 0x04, 0x09, 0x83, 0x0F, 0x1F, 0x80, 0x01, 0xFC, + 0x83, 0x03, 0xC6, 0x00, 0xE4, 0x00, 0x22, 0x00, 0x12, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, 0x18, 0x00, 0x64, + 0x00, 0x61, 0x81, 0xC0, 0x7F, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x30, 0x00, + 0x0C, 0x00, 0x02, 0x00, 0x00, 0x80, 0x00, 0x60, 0x3F, 0x18, 0x10, 0x64, + 0x18, 0x0D, 0x08, 0x01, 0xC2, 0x00, 0x71, 0x00, 0x0C, 0x80, 0x02, 0x20, + 0x00, 0x88, 0x00, 0x62, 0x00, 0x18, 0x80, 0x0E, 0x20, 0x03, 0x04, 0x03, + 0x40, 0xC1, 0xB0, 0x1F, 0x8F, 0x00, 0x01, 0xF0, 0x0E, 0x0C, 0x18, 0x06, + 0x30, 0x02, 0x60, 0x01, 0x40, 0x01, 0xC0, 0x01, 0xFF, 0xFF, 0x80, 0x00, + 0x80, 0x00, 0x80, 0x00, 0x40, 0x00, 0x60, 0x06, 0x30, 0x1C, 0x0F, 0xE0, + 0x00, 0x1F, 0xE0, 0x0C, 0x00, 0x03, 0x00, 0x00, 0x40, 0x00, 0x08, 0x00, + 0x02, 0x00, 0x07, 0xFF, 0xC0, 0x08, 0x00, 0x01, 0x00, 0x00, 0x20, 0x00, + 0x08, 0x00, 0x01, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x00, 0x80, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x00, 0x80, 0x00, 0x10, 0x00, 0x04, 0x00, 0x0F, + 0xFF, 0x00, 0x03, 0xE3, 0xE1, 0x83, 0x60, 0x40, 0x38, 0x10, 0x03, 0x04, + 0x00, 0x60, 0x80, 0x0C, 0x20, 0x01, 0x84, 0x00, 0x20, 0x80, 0x04, 0x10, + 0x01, 0x82, 0x00, 0x30, 0x60, 0x0C, 0x04, 0x02, 0x80, 0x61, 0x90, 0x07, + 0xC6, 0x00, 0x00, 0xC0, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x80, 0x00, + 0x30, 0x00, 0x0C, 0x00, 0xFE, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x40, 0x00, + 0x10, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00, 0x80, 0x00, 0x23, 0xE0, 0x0B, + 0x0C, 0x05, 0x00, 0x81, 0x80, 0x20, 0x40, 0x08, 0x10, 0x02, 0x08, 0x00, + 0x82, 0x00, 0x60, 0x80, 0x18, 0x20, 0x06, 0x10, 0x01, 0x84, 0x00, 0x61, + 0x00, 0x30, 0x40, 0x0C, 0xFC, 0x1F, 0xC0, 0x00, 0x30, 0x00, 0x60, 0x00, + 0xC0, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x20, + 0x00, 0x40, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, + 0x40, 0x00, 0x80, 0x01, 0x00, 0x02, 0x00, 0x08, 0x00, 0x10, 0x1F, 0xFF, + 0x80, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, + 0x00, 0x80, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x20, 0x00, + 0x40, 0x00, 0x80, 0x01, 0x00, 0x06, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, + 0x00, 0x80, 0x03, 0x00, 0x0C, 0x0F, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x60, + 0x00, 0x10, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0xC0, 0x00, 0x30, 0xFC, + 0x08, 0x18, 0x02, 0x0C, 0x00, 0x8C, 0x00, 0x66, 0x00, 0x1B, 0x00, 0x05, + 0x80, 0x01, 0xB0, 0x00, 0x46, 0x00, 0x31, 0xC0, 0x0C, 0x30, 0x02, 0x06, + 0x00, 0x80, 0xC0, 0x60, 0x30, 0xF8, 0x1F, 0x80, 0x01, 0xF8, 0x00, 0x20, + 0x00, 0x40, 0x00, 0x80, 0x01, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, + 0x20, 0x00, 0x80, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x20, + 0x00, 0x40, 0x00, 0x80, 0x01, 0x00, 0x04, 0x00, 0x08, 0x0F, 0xFF, 0xC0, + 0x1C, 0xF1, 0xE0, 0xF1, 0xE3, 0x0E, 0x1C, 0x10, 0xC1, 0x81, 0x08, 0x10, + 0x30, 0x81, 0x03, 0x18, 0x10, 0x21, 0x83, 0x02, 0x10, 0x30, 0x21, 0x02, + 0x06, 0x10, 0x20, 0x63, 0x02, 0x04, 0x30, 0x60, 0x42, 0x06, 0x04, 0xF8, + 0x70, 0xF0, 0x0E, 0x3E, 0x01, 0x60, 0x81, 0xC0, 0x20, 0xC0, 0x10, 0x40, + 0x08, 0x20, 0x04, 0x30, 0x02, 0x10, 0x02, 0x08, 0x01, 0x04, 0x00, 0x82, + 0x00, 0x42, 0x00, 0x21, 0x00, 0x20, 0x80, 0x13, 0xF0, 0x3E, 0x01, 0xF0, + 0x06, 0x0C, 0x18, 0x06, 0x20, 0x03, 0x60, 0x01, 0x40, 0x01, 0x80, 0x01, + 0x80, 0x01, 0x80, 0x01, 0x80, 0x02, 0x80, 0x06, 0xC0, 0x04, 0x40, 0x18, + 0x30, 0x60, 0x1F, 0x80, 0x0F, 0x1F, 0x80, 0x16, 0x0C, 0x01, 0xC0, 0x20, + 0x30, 0x03, 0x03, 0x00, 0x10, 0x20, 0x01, 0x02, 0x00, 0x10, 0x40, 0x01, + 0x04, 0x00, 0x10, 0x40, 0x02, 0x06, 0x00, 0x60, 0x60, 0x04, 0x0B, 0x00, + 0x80, 0x98, 0x30, 0x08, 0xFC, 0x00, 0x80, 0x00, 0x08, 0x00, 0x01, 0x00, + 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x0F, 0xF0, 0x00, 0x03, + 0xF1, 0xE1, 0x83, 0x20, 0x40, 0x34, 0x10, 0x03, 0x84, 0x00, 0x30, 0x80, + 0x04, 0x20, 0x00, 0x84, 0x00, 0x10, 0x80, 0x06, 0x10, 0x00, 0xC2, 0x00, + 0x30, 0x60, 0x0E, 0x04, 0x03, 0x40, 0x60, 0xC8, 0x07, 0xE2, 0x00, 0x00, + 0x40, 0x00, 0x08, 0x00, 0x01, 0x00, 0x00, 0x20, 0x00, 0x08, 0x00, 0x01, + 0x00, 0x03, 0xFC, 0x00, 0x0F, 0x87, 0xC0, 0x23, 0x08, 0x04, 0xC0, 0x00, + 0xE0, 0x00, 0x18, 0x00, 0x02, 0x00, 0x00, 0x80, 0x00, 0x10, 0x00, 0x02, + 0x00, 0x00, 0x40, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x40, 0x00, 0x08, + 0x00, 0x3F, 0xFE, 0x00, 0x01, 0xFA, 0x0C, 0x1C, 0x20, 0x08, 0x80, 0x11, + 0x00, 0x03, 0x00, 0x03, 0xF8, 0x00, 0x7C, 0x00, 0x0C, 0x00, 0x09, 0x00, + 0x16, 0x00, 0x2C, 0x00, 0x9E, 0x06, 0x27, 0xF0, 0x00, 0x08, 0x00, 0x40, + 0x02, 0x00, 0x10, 0x00, 0x80, 0x7F, 0xFC, 0x40, 0x02, 0x00, 0x10, 0x00, + 0x80, 0x08, 0x00, 0x40, 0x02, 0x00, 0x10, 0x01, 0x00, 0x08, 0x00, 0x40, + 0x02, 0x00, 0xD8, 0x1C, 0x3F, 0x00, 0xF0, 0x1E, 0x20, 0x04, 0x80, 0x09, + 0x00, 0x12, 0x00, 0x24, 0x00, 0xC8, 0x01, 0x20, 0x02, 0x40, 0x04, 0x80, + 0x09, 0x00, 0x12, 0x00, 0x64, 0x03, 0x8C, 0x1D, 0x0F, 0xC3, 0x80, 0xFE, + 0x0F, 0xE6, 0x00, 0x20, 0x40, 0x08, 0x08, 0x03, 0x01, 0x80, 0x40, 0x30, + 0x18, 0x06, 0x02, 0x00, 0x40, 0x80, 0x08, 0x30, 0x01, 0x84, 0x00, 0x31, + 0x80, 0x02, 0x20, 0x00, 0x48, 0x00, 0x09, 0x00, 0x01, 0xC0, 0x00, 0xF8, + 0x0F, 0xA0, 0x01, 0x90, 0x00, 0x88, 0x40, 0xC4, 0x30, 0x42, 0x18, 0x61, + 0x1A, 0x20, 0x8D, 0x10, 0x4C, 0x98, 0x26, 0x48, 0x16, 0x2C, 0x0B, 0x14, + 0x07, 0x0A, 0x03, 0x07, 0x01, 0x81, 0x00, 0x0F, 0x83, 0xE0, 0xC0, 0x18, + 0x0C, 0x0C, 0x01, 0x83, 0x00, 0x18, 0xC0, 0x01, 0xB0, 0x00, 0x1C, 0x00, + 0x03, 0x00, 0x00, 0xF0, 0x00, 0x63, 0x00, 0x18, 0x30, 0x06, 0x06, 0x01, + 0x80, 0x60, 0x60, 0x06, 0x3F, 0x07, 0xE0, 0x0F, 0xC0, 0xF8, 0x30, 0x01, + 0x00, 0x80, 0x18, 0x04, 0x00, 0x80, 0x30, 0x0C, 0x01, 0x80, 0xC0, 0x04, + 0x04, 0x00, 0x30, 0x60, 0x01, 0x86, 0x00, 0x04, 0x20, 0x00, 0x23, 0x00, + 0x01, 0xB0, 0x00, 0x0D, 0x00, 0x00, 0x38, 0x00, 0x01, 0x80, 0x00, 0x08, + 0x00, 0x00, 0xC0, 0x00, 0x04, 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, + 0x20, 0x00, 0x7F, 0xE0, 0x00, 0x1F, 0xFF, 0x10, 0x06, 0x10, 0x0C, 0x10, + 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, 0x06, + 0x00, 0x0C, 0x00, 0x18, 0x04, 0x30, 0x0C, 0x60, 0x0C, 0xFF, 0xF8, 0x00, + 0xE0, 0x20, 0x08, 0x01, 0x00, 0x20, 0x04, 0x01, 0x00, 0x20, 0x04, 0x00, + 0x80, 0x20, 0x08, 0x0E, 0x00, 0x60, 0x04, 0x00, 0x80, 0x10, 0x02, 0x00, + 0x40, 0x08, 0x02, 0x00, 0x40, 0x08, 0x01, 0x00, 0x18, 0x00, 0x00, 0x10, + 0xC3, 0x08, 0x20, 0x86, 0x18, 0x41, 0x04, 0x30, 0xC2, 0x08, 0x21, 0x86, + 0x10, 0x43, 0x0C, 0x20, 0x06, 0x00, 0x40, 0x10, 0x04, 0x01, 0x00, 0x40, + 0x10, 0x04, 0x02, 0x00, 0x80, 0x20, 0x0C, 0x01, 0xC0, 0xC0, 0x40, 0x10, + 0x04, 0x03, 0x00, 0x80, 0x20, 0x08, 0x02, 0x01, 0x00, 0xC0, 0xE0, 0x00, + 0x1E, 0x02, 0x66, 0x0D, 0x86, 0x16, 0x06, 0x48, 0x07, 0x00}; + +const GFXglyph FreeMonoOblique18pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 21, 0, 1}, // 0x20 ' ' + {0, 7, 22, 21, 9, -21}, // 0x21 '!' + {20, 13, 10, 21, 7, -20}, // 0x22 '"' + {37, 15, 24, 21, 5, -21}, // 0x23 '#' + {82, 16, 26, 21, 4, -22}, // 0x24 '$' + {134, 16, 21, 21, 5, -20}, // 0x25 '%' + {176, 13, 18, 21, 5, -17}, // 0x26 '&' + {206, 5, 10, 21, 12, -20}, // 0x27 ''' + {213, 8, 25, 21, 12, -20}, // 0x28 '(' + {238, 8, 25, 21, 5, -20}, // 0x29 ')' + {263, 14, 11, 21, 7, -19}, // 0x2A '*' + {283, 15, 17, 21, 5, -17}, // 0x2B '+' + {315, 9, 10, 21, 4, -4}, // 0x2C ',' + {327, 16, 1, 21, 5, -9}, // 0x2D '-' + {329, 5, 5, 21, 8, -4}, // 0x2E '.' + {333, 19, 26, 21, 3, -22}, // 0x2F '/' + {395, 14, 21, 21, 5, -20}, // 0x30 '0' + {432, 13, 21, 21, 4, -20}, // 0x31 '1' + {467, 17, 21, 21, 3, -20}, // 0x32 '2' + {512, 16, 21, 21, 3, -20}, // 0x33 '3' + {554, 14, 21, 21, 5, -20}, // 0x34 '4' + {591, 17, 21, 21, 4, -20}, // 0x35 '5' + {636, 16, 21, 21, 6, -20}, // 0x36 '6' + {678, 13, 21, 21, 8, -20}, // 0x37 '7' + {713, 15, 21, 21, 5, -20}, // 0x38 '8' + {753, 15, 21, 21, 5, -20}, // 0x39 '9' + {793, 7, 15, 21, 8, -14}, // 0x3A ':' + {807, 11, 20, 21, 4, -14}, // 0x3B ';' + {835, 17, 16, 21, 5, -17}, // 0x3C '<' + {869, 19, 6, 21, 3, -12}, // 0x3D '=' + {884, 18, 16, 21, 3, -17}, // 0x3E '>' + {920, 12, 20, 21, 8, -19}, // 0x3F '?' + {950, 15, 23, 21, 5, -20}, // 0x40 '@' + {994, 21, 20, 21, 0, -19}, // 0x41 'A' + {1047, 18, 20, 21, 2, -19}, // 0x42 'B' + {1092, 18, 20, 21, 4, -19}, // 0x43 'C' + {1137, 18, 20, 21, 2, -19}, // 0x44 'D' + {1182, 20, 20, 21, 2, -19}, // 0x45 'E' + {1232, 20, 20, 21, 2, -19}, // 0x46 'F' + {1282, 18, 20, 21, 4, -19}, // 0x47 'G' + {1327, 21, 20, 21, 2, -19}, // 0x48 'H' + {1380, 17, 20, 21, 4, -19}, // 0x49 'I' + {1423, 20, 20, 21, 4, -19}, // 0x4A 'J' + {1473, 21, 20, 21, 2, -19}, // 0x4B 'K' + {1526, 18, 20, 21, 2, -19}, // 0x4C 'L' + {1571, 24, 20, 21, 1, -19}, // 0x4D 'M' + {1631, 22, 20, 21, 2, -19}, // 0x4E 'N' + {1686, 17, 20, 21, 4, -19}, // 0x4F 'O' + {1729, 18, 20, 21, 2, -19}, // 0x50 'P' + {1774, 17, 24, 21, 4, -19}, // 0x51 'Q' + {1825, 18, 20, 21, 2, -19}, // 0x52 'R' + {1870, 18, 20, 21, 3, -19}, // 0x53 'S' + {1915, 17, 20, 21, 5, -19}, // 0x54 'T' + {1958, 18, 20, 21, 5, -19}, // 0x55 'U' + {2003, 21, 20, 21, 4, -19}, // 0x56 'V' + {2056, 20, 20, 21, 4, -19}, // 0x57 'W' + {2106, 21, 20, 21, 2, -19}, // 0x58 'X' + {2159, 18, 20, 21, 5, -19}, // 0x59 'Y' + {2204, 17, 20, 21, 4, -19}, // 0x5A 'Z' + {2247, 11, 25, 21, 9, -20}, // 0x5B '[' + {2282, 8, 27, 21, 9, -22}, // 0x5C '\' + {2309, 11, 25, 21, 5, -20}, // 0x5D ']' + {2344, 13, 9, 21, 7, -20}, // 0x5E '^' + {2359, 21, 1, 21, -1, 4}, // 0x5F '_' + {2362, 5, 5, 21, 9, -21}, // 0x60 '`' + {2366, 16, 15, 21, 3, -14}, // 0x61 'a' + {2396, 19, 21, 21, 1, -20}, // 0x62 'b' + {2446, 17, 15, 21, 4, -14}, // 0x63 'c' + {2478, 18, 21, 21, 4, -20}, // 0x64 'd' + {2526, 16, 15, 21, 4, -14}, // 0x65 'e' + {2556, 19, 21, 21, 4, -20}, // 0x66 'f' + {2606, 19, 22, 21, 4, -14}, // 0x67 'g' + {2659, 18, 21, 21, 2, -20}, // 0x68 'h' + {2707, 15, 22, 21, 3, -21}, // 0x69 'i' + {2749, 15, 29, 21, 3, -21}, // 0x6A 'j' + {2804, 18, 21, 21, 2, -20}, // 0x6B 'k' + {2852, 15, 21, 21, 3, -20}, // 0x6C 'l' + {2892, 20, 15, 21, 1, -14}, // 0x6D 'm' + {2930, 17, 15, 21, 2, -14}, // 0x6E 'n' + {2962, 16, 15, 21, 4, -14}, // 0x6F 'o' + {2992, 20, 22, 21, 0, -14}, // 0x70 'p' + {3047, 19, 22, 21, 4, -14}, // 0x71 'q' + {3100, 19, 15, 21, 3, -14}, // 0x72 'r' + {3136, 15, 15, 21, 4, -14}, // 0x73 's' + {3165, 13, 20, 21, 5, -19}, // 0x74 't' + {3198, 15, 15, 21, 4, -14}, // 0x75 'u' + {3227, 19, 15, 21, 4, -14}, // 0x76 'v' + {3263, 17, 15, 21, 5, -14}, // 0x77 'w' + {3295, 19, 15, 21, 2, -14}, // 0x78 'x' + {3331, 21, 22, 21, 1, -14}, // 0x79 'y' + {3389, 16, 15, 21, 4, -14}, // 0x7A 'z' + {3419, 11, 25, 21, 8, -20}, // 0x7B '{' + {3454, 6, 24, 21, 9, -19}, // 0x7C '|' + {3472, 10, 25, 21, 6, -20}, // 0x7D '}' + {3504, 15, 5, 21, 5, -11}}; // 0x7E '~' + +const GFXfont FreeMonoOblique18pt7b PROGMEM = { + (uint8_t *)FreeMonoOblique18pt7bBitmaps, + (GFXglyph *)FreeMonoOblique18pt7bGlyphs, 0x20, 0x7E, 35}; + +// Approx. 4186 bytes diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoOblique24pt7b.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoOblique24pt7b.h new file mode 100644 index 0000000..28bbf9e --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoOblique24pt7b.h @@ -0,0 +1,645 @@ +#pragma once +#include + +const uint8_t FreeMonoOblique24pt7bBitmaps[] PROGMEM = { + 0x01, 0xC0, 0xF0, 0x3C, 0x0E, 0x03, 0x81, 0xE0, 0x78, 0x1C, 0x07, 0x01, + 0xC0, 0xE0, 0x38, 0x0E, 0x03, 0x00, 0xC0, 0x70, 0x1C, 0x06, 0x01, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x0F, 0x83, 0xE0, 0xF8, + 0x1C, 0x00, 0x7E, 0x3F, 0x7E, 0x3F, 0x7C, 0x3E, 0x7C, 0x3E, 0x7C, 0x3E, + 0x78, 0x3C, 0xF8, 0x7C, 0xF0, 0x78, 0xF0, 0x78, 0xF0, 0x78, 0xE0, 0x70, + 0xE0, 0x70, 0xE0, 0x70, 0xC0, 0x60, 0x00, 0x18, 0x30, 0x00, 0x61, 0x80, + 0x01, 0x86, 0x00, 0x04, 0x18, 0x00, 0x30, 0xC0, 0x00, 0xC3, 0x00, 0x03, + 0x0C, 0x00, 0x18, 0x30, 0x00, 0x61, 0x80, 0x01, 0x86, 0x00, 0x06, 0x18, + 0x07, 0xFF, 0xFF, 0x1F, 0xFF, 0xFC, 0x03, 0x0C, 0x00, 0x18, 0x30, 0x00, + 0x61, 0x80, 0x01, 0x86, 0x00, 0x06, 0x18, 0x00, 0x30, 0xC0, 0x1F, 0xFF, + 0xF8, 0x7F, 0xFF, 0xE0, 0x18, 0x30, 0x00, 0x61, 0x80, 0x01, 0x86, 0x00, + 0x06, 0x18, 0x00, 0x30, 0x40, 0x00, 0xC3, 0x00, 0x03, 0x0C, 0x00, 0x18, + 0x30, 0x00, 0x61, 0x80, 0x01, 0x86, 0x00, 0x06, 0x18, 0x00, 0x00, 0x03, + 0x00, 0x00, 0x18, 0x00, 0x00, 0x80, 0x00, 0x3F, 0x00, 0x07, 0xFD, 0x80, + 0x70, 0x7C, 0x06, 0x00, 0xE0, 0x60, 0x02, 0x07, 0x00, 0x10, 0x30, 0x00, + 0x01, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x70, 0x00, 0x01, 0xF0, 0x00, 0x07, + 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x18, + 0x00, 0x00, 0xC2, 0x00, 0x06, 0x30, 0x00, 0x61, 0x80, 0x03, 0x1E, 0x00, + 0x30, 0xFC, 0x07, 0x06, 0x7F, 0xF0, 0x00, 0xFE, 0x00, 0x01, 0x80, 0x00, + 0x0C, 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, 0x80, + 0x00, 0x00, 0x78, 0x00, 0x07, 0xF8, 0x00, 0x38, 0x60, 0x01, 0xC0, 0xC0, + 0x06, 0x03, 0x00, 0x30, 0x0C, 0x00, 0xC0, 0x30, 0x03, 0x01, 0x80, 0x0C, + 0x0E, 0x00, 0x38, 0x70, 0x00, 0x7F, 0x81, 0xC0, 0xF8, 0x3F, 0x00, 0x07, + 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x00, 0x07, 0xC0, 0x00, 0x78, 0x00, 0x01, + 0x00, 0x78, 0x00, 0x07, 0xF8, 0x00, 0x38, 0x60, 0x01, 0x80, 0xC0, 0x06, + 0x03, 0x00, 0x30, 0x0C, 0x00, 0xC0, 0x30, 0x03, 0x01, 0x80, 0x0C, 0x0E, + 0x00, 0x18, 0x70, 0x00, 0x7F, 0x80, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, + 0x0F, 0xF8, 0x03, 0x8E, 0x00, 0xC0, 0x00, 0x38, 0x00, 0x06, 0x00, 0x00, + 0xC0, 0x00, 0x18, 0x00, 0x01, 0x00, 0x00, 0x30, 0x00, 0x06, 0x00, 0x03, + 0xE0, 0x01, 0xCC, 0x0E, 0x60, 0xC3, 0xD8, 0x18, 0x63, 0x03, 0x18, 0xC0, + 0x33, 0x18, 0x06, 0xC3, 0x00, 0x70, 0x60, 0x0E, 0x0C, 0x01, 0xC0, 0xC0, + 0x78, 0x1C, 0x3B, 0xE1, 0xFE, 0x3C, 0x1F, 0x00, 0x00, 0x7E, 0xFD, 0xF3, + 0xE7, 0xCF, 0x3E, 0x78, 0xF1, 0xE3, 0x87, 0x0E, 0x18, 0x00, 0x00, 0x60, + 0x18, 0x07, 0x00, 0xC0, 0x30, 0x0E, 0x01, 0x80, 0x70, 0x0C, 0x03, 0x80, + 0x60, 0x1C, 0x03, 0x80, 0xE0, 0x1C, 0x03, 0x80, 0xF0, 0x1C, 0x03, 0x80, + 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x30, + 0x06, 0x00, 0xC0, 0x1C, 0x01, 0x80, 0x30, 0x02, 0x00, 0x01, 0x80, 0x30, + 0x06, 0x00, 0xE0, 0x0C, 0x01, 0x80, 0x30, 0x07, 0x00, 0xE0, 0x1C, 0x03, + 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x38, 0x07, 0x00, + 0xE0, 0x3C, 0x07, 0x00, 0xE0, 0x38, 0x07, 0x01, 0xC0, 0x38, 0x0E, 0x01, + 0x80, 0x70, 0x0C, 0x03, 0x00, 0xC0, 0x10, 0x00, 0x00, 0x20, 0x00, 0x18, + 0x00, 0x06, 0x00, 0x01, 0x80, 0x00, 0xC0, 0x00, 0x30, 0x0E, 0x0C, 0x0B, + 0xF3, 0x3E, 0x3F, 0xFE, 0x01, 0xFC, 0x00, 0x3C, 0x00, 0x1F, 0x00, 0x0E, + 0x60, 0x07, 0x18, 0x01, 0x83, 0x00, 0xC0, 0xC0, 0x60, 0x30, 0x00, 0x00, + 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x18, + 0x00, 0x00, 0x60, 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, + 0x00, 0xC0, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x30, 0x00, 0x01, + 0x80, 0x00, 0x06, 0x00, 0x00, 0x18, 0x00, 0x00, 0x60, 0x00, 0x01, 0x80, + 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, + 0x03, 0xF0, 0x7E, 0x07, 0xC0, 0xF8, 0x0F, 0x81, 0xF0, 0x1E, 0x03, 0xE0, + 0x3C, 0x07, 0x80, 0x70, 0x0F, 0x00, 0xE0, 0x0C, 0x00, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xE0, 0x3C, 0xFF, 0xFF, 0xFF, 0xCF, 0x00, 0x00, 0x00, 0x03, + 0x00, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, + 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, + 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x03, 0x00, + 0x00, 0x07, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x1C, 0x00, + 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x70, 0x00, 0x00, 0x60, 0x00, + 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x03, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, 0x00, 0x00, 0xE0, 0x00, 0x00, + 0xC0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x0F, 0xF8, 0x01, + 0xC1, 0xC0, 0x38, 0x0E, 0x07, 0x00, 0x60, 0xE0, 0x03, 0x0C, 0x00, 0x31, + 0x80, 0x03, 0x18, 0x00, 0x33, 0x00, 0x03, 0x30, 0x00, 0x33, 0x00, 0x03, + 0x20, 0x00, 0x26, 0x00, 0x06, 0x60, 0x00, 0x66, 0x00, 0x06, 0x40, 0x00, + 0x4C, 0x00, 0x0C, 0xC0, 0x00, 0xCC, 0x00, 0x0C, 0xC0, 0x01, 0x8C, 0x00, + 0x18, 0xC0, 0x01, 0x8C, 0x00, 0x30, 0xC0, 0x07, 0x06, 0x00, 0xE0, 0x60, + 0x1C, 0x03, 0x87, 0x80, 0x3F, 0xF0, 0x00, 0xFC, 0x00, 0x00, 0x0E, 0x00, + 0x0F, 0x00, 0x0F, 0x80, 0x0E, 0xC0, 0x1C, 0xC0, 0x1C, 0x60, 0x1C, 0x30, + 0x08, 0x18, 0x00, 0x1C, 0x00, 0x0C, 0x00, 0x06, 0x00, 0x03, 0x00, 0x01, + 0x80, 0x01, 0xC0, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x18, 0x00, + 0x18, 0x00, 0x0C, 0x00, 0x06, 0x00, 0x03, 0x00, 0x01, 0x80, 0x01, 0x80, + 0x00, 0xC0, 0x00, 0x60, 0x00, 0x30, 0x1F, 0xFF, 0xFF, 0xFF, 0xF8, 0x00, + 0x07, 0xE0, 0x00, 0x3F, 0xE0, 0x01, 0xE0, 0xE0, 0x07, 0x00, 0xE0, 0x1C, + 0x00, 0xE0, 0x30, 0x00, 0xC0, 0xC0, 0x01, 0x81, 0x00, 0x03, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x03, + 0x00, 0x00, 0x1C, 0x00, 0x00, 0x70, 0x00, 0x01, 0xC0, 0x00, 0x07, 0x00, + 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x03, 0x80, 0x00, 0x0E, 0x00, 0x00, + 0x70, 0x00, 0x01, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xE0, + 0x00, 0xC3, 0x80, 0x01, 0x87, 0xFF, 0xFF, 0x0F, 0xFF, 0xFC, 0x00, 0x00, + 0x0F, 0xC0, 0x01, 0xFF, 0xC0, 0x1E, 0x07, 0x80, 0xE0, 0x06, 0x03, 0x00, + 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x0C, + 0x00, 0x00, 0x60, 0x00, 0x03, 0x80, 0x00, 0x1C, 0x00, 0x00, 0xE0, 0x00, + 0xFE, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xE0, 0x00, 0x01, + 0x80, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, + 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, 0x00, 0xE3, 0x00, 0x07, 0x0E, 0x00, + 0x38, 0x1E, 0x03, 0xC0, 0x3F, 0xFC, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x03, + 0xE0, 0x00, 0xF8, 0x00, 0x1B, 0x00, 0x06, 0x60, 0x01, 0x8C, 0x00, 0x63, + 0x00, 0x18, 0x60, 0x07, 0x0C, 0x00, 0xC1, 0x80, 0x30, 0x30, 0x0C, 0x0C, + 0x03, 0x01, 0x80, 0xC0, 0x30, 0x18, 0x06, 0x06, 0x00, 0xC1, 0x80, 0x30, + 0x60, 0x06, 0x18, 0x00, 0xC3, 0xFF, 0xFE, 0x7F, 0xFF, 0xC0, 0x00, 0xC0, + 0x00, 0x18, 0x00, 0x03, 0x00, 0x00, 0x60, 0x00, 0x18, 0x00, 0x03, 0x00, + 0x0F, 0xFC, 0x01, 0xFF, 0x80, 0x01, 0xFF, 0xF8, 0x0F, 0xFF, 0xC0, 0x40, + 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, 0x80, 0x00, 0x0C, 0x00, 0x00, + 0xC0, 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, 0xBF, 0xC0, 0x0F, 0xFF, + 0x80, 0xF8, 0x1E, 0x02, 0x00, 0x30, 0x00, 0x01, 0xC0, 0x00, 0x06, 0x00, + 0x00, 0x30, 0x00, 0x01, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x60, 0x00, 0x06, + 0x00, 0x00, 0x30, 0x00, 0x03, 0x80, 0x00, 0x18, 0xC0, 0x01, 0x87, 0x00, + 0x38, 0x1E, 0x07, 0x80, 0x7F, 0xF8, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x03, + 0xF0, 0x00, 0xFF, 0xC0, 0x1F, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x01, + 0x80, 0x00, 0x18, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x00, 0xC0, 0x00, + 0x0E, 0x00, 0x00, 0x60, 0x00, 0x07, 0x0F, 0x80, 0x31, 0xFF, 0x01, 0x9C, + 0x3C, 0x0D, 0x80, 0x60, 0xD8, 0x03, 0x87, 0x80, 0x0C, 0x38, 0x00, 0x61, + 0xC0, 0x03, 0x0C, 0x00, 0x18, 0x60, 0x00, 0xC3, 0x00, 0x0C, 0x18, 0x00, + 0x60, 0xE0, 0x06, 0x03, 0x00, 0x30, 0x1C, 0x07, 0x00, 0x70, 0x70, 0x01, + 0xFF, 0x00, 0x07, 0xE0, 0x00, 0x7F, 0xFF, 0xDF, 0xFF, 0xFC, 0x00, 0x0F, + 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, 0x30, 0x00, 0x18, 0x00, + 0x06, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x18, 0x00, 0x0C, + 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, 0x30, 0x00, 0x0C, 0x00, + 0x06, 0x00, 0x01, 0x80, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x18, 0x00, 0x0C, + 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, 0x00, 0x3F, 0x00, 0x0F, + 0xFC, 0x01, 0xC1, 0xE0, 0x70, 0x06, 0x06, 0x00, 0x30, 0xC0, 0x03, 0x1C, + 0x00, 0x31, 0x80, 0x03, 0x18, 0x00, 0x31, 0x80, 0x06, 0x18, 0x00, 0xE0, + 0xC0, 0x1C, 0x0F, 0x07, 0x80, 0x3F, 0xE0, 0x03, 0xFE, 0x00, 0xE0, 0x70, + 0x18, 0x03, 0x83, 0x00, 0x1C, 0x60, 0x00, 0xC6, 0x00, 0x0C, 0xC0, 0x00, + 0xCC, 0x00, 0x0C, 0xC0, 0x00, 0xCC, 0x00, 0x18, 0xC0, 0x03, 0x8E, 0x00, + 0x70, 0x60, 0x0E, 0x07, 0x83, 0xC0, 0x3F, 0xF0, 0x00, 0xFC, 0x00, 0x00, + 0x0F, 0x80, 0x00, 0xFF, 0x80, 0x0F, 0x07, 0x00, 0x70, 0x0E, 0x03, 0x80, + 0x18, 0x0C, 0x00, 0x70, 0x60, 0x00, 0xC1, 0x80, 0x03, 0x0C, 0x00, 0x0C, + 0x30, 0x00, 0x30, 0xC0, 0x01, 0xC3, 0x00, 0x0F, 0x0C, 0x00, 0x6C, 0x38, + 0x03, 0xF0, 0x60, 0x1D, 0x81, 0xE1, 0xE6, 0x03, 0xFE, 0x18, 0x03, 0xE0, + 0xC0, 0x00, 0x03, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x60, 0x00, 0x03, 0x00, + 0x00, 0x1C, 0x00, 0x00, 0xE0, 0x00, 0x07, 0x00, 0x00, 0x38, 0x00, 0x03, + 0xC0, 0x00, 0x7C, 0x00, 0xFF, 0xC0, 0x01, 0xF8, 0x00, 0x00, 0x07, 0x83, + 0xF1, 0xFC, 0x7F, 0x1F, 0x83, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x7E, 0x3F, 0x8F, 0xE3, 0xF0, 0x78, + 0x00, 0x00, 0x3C, 0x00, 0xFC, 0x03, 0xF8, 0x07, 0xF0, 0x0F, 0xC0, 0x0F, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7E, 0x00, 0xFC, 0x03, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x3E, + 0x00, 0xF8, 0x01, 0xE0, 0x07, 0x80, 0x0F, 0x00, 0x3C, 0x00, 0x70, 0x01, + 0xC0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x3C, 0x00, 0x01, + 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, + 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x03, + 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0xF0, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x78, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x0C, 0x00, 0x3F, 0xFF, 0xFF, 0x9F, + 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, + 0x00, 0x06, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x00, 0xF0, + 0x00, 0x00, 0x3C, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, + 0xC0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x1E, 0x00, 0x00, + 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, + 0x00, 0x70, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x07, 0xF0, 0x3F, 0xFC, 0x78, + 0x1E, 0xC0, 0x07, 0xC0, 0x03, 0xC0, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x1C, 0x00, 0x38, 0x00, 0xE0, 0x07, 0xC0, 0x07, + 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x7E, 0x00, 0xFE, 0x00, 0xFE, + 0x00, 0x7C, 0x00, 0x00, 0x3F, 0x00, 0x1F, 0xF0, 0x07, 0x07, 0x01, 0xC0, + 0x70, 0x60, 0x06, 0x1C, 0x00, 0xC3, 0x00, 0x18, 0xC0, 0x03, 0x18, 0x00, + 0x66, 0x00, 0xFC, 0xC0, 0x7F, 0x98, 0x1C, 0x66, 0x06, 0x0C, 0xC1, 0x81, + 0x98, 0x30, 0x33, 0x0C, 0x0E, 0x61, 0x81, 0x98, 0x30, 0x33, 0x06, 0x06, + 0x60, 0xF0, 0xCC, 0x0F, 0xF9, 0x80, 0x7F, 0x30, 0x00, 0x06, 0x00, 0x00, + 0xC0, 0x00, 0x18, 0x00, 0x03, 0x80, 0x00, 0x30, 0x00, 0x07, 0x00, 0x00, + 0x70, 0x18, 0x0F, 0xFE, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0xF0, 0x00, 0x0F, + 0xFE, 0x00, 0x00, 0x06, 0xC0, 0x00, 0x00, 0xCC, 0x00, 0x00, 0x31, 0x80, + 0x00, 0x06, 0x30, 0x00, 0x01, 0x86, 0x00, 0x00, 0x60, 0xC0, 0x00, 0x0C, + 0x1C, 0x00, 0x03, 0x01, 0x80, 0x00, 0x40, 0x30, 0x00, 0x18, 0x06, 0x00, + 0x06, 0x00, 0xC0, 0x00, 0xC0, 0x18, 0x00, 0x30, 0x01, 0x80, 0x07, 0xFF, + 0xF0, 0x01, 0xFF, 0xFE, 0x00, 0x60, 0x00, 0xC0, 0x0C, 0x00, 0x18, 0x03, + 0x00, 0x03, 0x00, 0x40, 0x00, 0x30, 0x18, 0x00, 0x06, 0x06, 0x00, 0x00, + 0xC0, 0xC0, 0x00, 0x18, 0xFF, 0x80, 0x7F, 0xFF, 0xF0, 0x0F, 0xFC, 0x03, + 0xFF, 0xFC, 0x01, 0xFF, 0xFF, 0xC0, 0x06, 0x00, 0x38, 0x01, 0x80, 0x07, + 0x00, 0xC0, 0x00, 0xC0, 0x30, 0x00, 0x30, 0x0C, 0x00, 0x0C, 0x03, 0x00, + 0x03, 0x00, 0xC0, 0x01, 0x80, 0x60, 0x00, 0xC0, 0x18, 0x01, 0xE0, 0x07, + 0xFF, 0xE0, 0x01, 0xFF, 0xFC, 0x00, 0xE0, 0x03, 0x80, 0x30, 0x00, 0x70, + 0x0C, 0x00, 0x0E, 0x03, 0x00, 0x01, 0x80, 0xC0, 0x00, 0x60, 0x60, 0x00, + 0x18, 0x18, 0x00, 0x06, 0x06, 0x00, 0x03, 0x01, 0x80, 0x01, 0xC0, 0x60, + 0x00, 0xE0, 0x30, 0x00, 0x70, 0xFF, 0xFF, 0xF8, 0x3F, 0xFF, 0xF8, 0x00, + 0x00, 0x0F, 0xE0, 0x00, 0x3F, 0xFC, 0xC0, 0x3C, 0x0F, 0x60, 0x78, 0x01, + 0xF0, 0x70, 0x00, 0x70, 0x70, 0x00, 0x18, 0x30, 0x00, 0x0C, 0x30, 0x00, + 0x06, 0x38, 0x00, 0x02, 0x18, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x0C, 0x00, + 0x00, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, + 0x00, 0x00, 0xC0, 0x00, 0x00, 0x60, 0x00, 0x00, 0x30, 0x00, 0x00, 0x18, + 0x00, 0x00, 0x0C, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x60, + 0x60, 0x00, 0x60, 0x38, 0x00, 0xE0, 0x0F, 0x01, 0xE0, 0x03, 0xFF, 0xC0, + 0x00, 0x3F, 0x00, 0x00, 0x03, 0xFF, 0xF0, 0x01, 0xFF, 0xFF, 0x00, 0x0C, + 0x00, 0xF0, 0x03, 0x00, 0x1C, 0x01, 0xC0, 0x03, 0x80, 0x60, 0x00, 0x60, + 0x18, 0x00, 0x1C, 0x06, 0x00, 0x03, 0x01, 0x80, 0x00, 0xC0, 0xC0, 0x00, + 0x30, 0x30, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0x03, 0x00, 0x00, 0xC0, 0xC0, + 0x00, 0x60, 0x60, 0x00, 0x18, 0x18, 0x00, 0x06, 0x06, 0x00, 0x03, 0x01, + 0x80, 0x00, 0xC0, 0xE0, 0x00, 0x70, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x0C, + 0x03, 0x00, 0x06, 0x00, 0xC0, 0x07, 0x00, 0x60, 0x07, 0x80, 0xFF, 0xFF, + 0xC0, 0x3F, 0xFF, 0x80, 0x00, 0x03, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFC, + 0x01, 0x80, 0x01, 0x80, 0x30, 0x00, 0x60, 0x0C, 0x00, 0x0C, 0x01, 0x80, + 0x01, 0x80, 0x30, 0x00, 0x30, 0x06, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0x00, + 0x30, 0x18, 0x00, 0x06, 0x03, 0x00, 0x00, 0xFF, 0xE0, 0x00, 0x1F, 0xF8, + 0x00, 0x07, 0x03, 0x00, 0x00, 0xC0, 0x60, 0x00, 0x18, 0x0C, 0x00, 0x03, + 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x18, 0x00, 0x0C, 0x03, 0x00, 0x01, + 0x80, 0x60, 0x00, 0x30, 0x0C, 0x00, 0x0C, 0x01, 0x80, 0x01, 0x80, 0x60, + 0x00, 0x30, 0xFF, 0xFF, 0xFE, 0x1F, 0xFF, 0xFF, 0xC0, 0x03, 0xFF, 0xFF, + 0xF0, 0x7F, 0xFF, 0xFF, 0x00, 0x60, 0x00, 0x30, 0x06, 0x00, 0x06, 0x00, + 0xC0, 0x00, 0x60, 0x0C, 0x00, 0x06, 0x00, 0xC0, 0x00, 0x60, 0x0C, 0x00, + 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x18, 0x0C, 0x00, 0x01, 0x80, 0xC0, 0x00, + 0x1F, 0xFC, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x38, 0x18, 0x00, 0x03, 0x01, + 0x80, 0x00, 0x30, 0x18, 0x00, 0x03, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x60, + 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xFF, 0xFC, 0x00, + 0x0F, 0xFF, 0xC0, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x3F, 0xFC, 0xC0, 0x3C, + 0x0F, 0xE0, 0x78, 0x01, 0xF0, 0x70, 0x00, 0x30, 0x70, 0x00, 0x18, 0x70, + 0x00, 0x0C, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, + 0x00, 0x00, 0x0C, 0x00, 0x00, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, + 0x80, 0x00, 0x01, 0x80, 0x1F, 0xFE, 0xC0, 0x0F, 0xFF, 0x60, 0x00, 0x06, + 0x30, 0x00, 0x06, 0x18, 0x00, 0x03, 0x0C, 0x00, 0x01, 0x87, 0x00, 0x00, + 0xC1, 0x80, 0x00, 0xE0, 0xE0, 0x00, 0x60, 0x38, 0x00, 0x70, 0x0F, 0x00, + 0xF8, 0x03, 0xFF, 0xF0, 0x00, 0x3F, 0x80, 0x00, 0x03, 0xFC, 0x1F, 0xE0, + 0x7F, 0x83, 0xFC, 0x03, 0x00, 0x06, 0x00, 0x60, 0x01, 0x80, 0x1C, 0x00, + 0x30, 0x03, 0x00, 0x06, 0x00, 0x60, 0x00, 0xC0, 0x0C, 0x00, 0x38, 0x01, + 0x80, 0x06, 0x00, 0x60, 0x00, 0xC0, 0x0C, 0x00, 0x18, 0x01, 0xFF, 0xFF, + 0x00, 0x3F, 0xFF, 0xC0, 0x06, 0x00, 0x18, 0x01, 0x80, 0x03, 0x00, 0x30, + 0x00, 0x60, 0x06, 0x00, 0x0C, 0x00, 0xC0, 0x03, 0x00, 0x38, 0x00, 0x60, + 0x06, 0x00, 0x0C, 0x00, 0xC0, 0x01, 0x80, 0x18, 0x00, 0x70, 0x03, 0x00, + 0x0C, 0x00, 0xE0, 0x01, 0x80, 0xFF, 0x83, 0xFE, 0x1F, 0xF0, 0x7F, 0xC0, + 0x07, 0xFF, 0xFC, 0x1F, 0xFF, 0xF0, 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, + 0x0C, 0x00, 0x00, 0x70, 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0x18, + 0x00, 0x00, 0x60, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, + 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, 0x00, 0x60, 0x00, 0x01, + 0x80, 0x00, 0x06, 0x00, 0x00, 0x38, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x00, + 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, 0xFF, 0xFF, 0x83, 0xFF, 0xFE, 0x00, + 0x00, 0x0F, 0xFF, 0xF0, 0x01, 0xFF, 0xFF, 0x00, 0x00, 0x0C, 0x00, 0x00, + 0x00, 0xC0, 0x00, 0x00, 0x18, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x18, + 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x38, 0x00, 0x00, 0x03, 0x00, 0x00, + 0x00, 0x30, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x07, + 0x00, 0x20, 0x00, 0x60, 0x06, 0x00, 0x06, 0x00, 0x60, 0x00, 0x60, 0x06, + 0x00, 0x06, 0x00, 0x60, 0x00, 0xC0, 0x0C, 0x00, 0x0C, 0x00, 0xC0, 0x00, + 0xC0, 0x0C, 0x00, 0x18, 0x00, 0xE0, 0x03, 0x00, 0x07, 0x00, 0x70, 0x00, + 0x3C, 0x1C, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x03, + 0xFF, 0x07, 0xF8, 0x3F, 0xF8, 0x3F, 0xC0, 0x18, 0x00, 0x70, 0x00, 0xC0, + 0x07, 0x00, 0x0C, 0x00, 0x60, 0x00, 0x60, 0x0E, 0x00, 0x03, 0x00, 0xE0, + 0x00, 0x18, 0x0C, 0x00, 0x00, 0xC1, 0xC0, 0x00, 0x0C, 0x1C, 0x00, 0x00, + 0x61, 0x80, 0x00, 0x03, 0x3C, 0x00, 0x00, 0x1B, 0x78, 0x00, 0x01, 0xF0, + 0xE0, 0x00, 0x0F, 0x03, 0x80, 0x00, 0x60, 0x0C, 0x00, 0x03, 0x00, 0x70, + 0x00, 0x18, 0x01, 0x80, 0x01, 0x80, 0x0C, 0x00, 0x0C, 0x00, 0x60, 0x00, + 0x60, 0x01, 0x80, 0x03, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x60, 0x01, 0x80, + 0x03, 0x00, 0xFF, 0xE0, 0x1F, 0x87, 0xFF, 0x00, 0x7C, 0x00, 0x07, 0xFF, + 0xE0, 0x03, 0xFF, 0xF0, 0x00, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, + 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x60, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x30, 0x00, 0x00, 0x18, 0x00, 0x00, 0x0C, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, + 0x00, 0xC0, 0x03, 0x00, 0x60, 0x01, 0x80, 0x60, 0x00, 0xC0, 0x30, 0x00, + 0x60, 0x18, 0x00, 0x30, 0x0C, 0x00, 0x30, 0x0E, 0x00, 0x18, 0x06, 0x00, + 0x0C, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0x00, 0x07, 0xF0, 0x00, 0x3F, + 0x07, 0xF0, 0x00, 0x7F, 0x01, 0xB0, 0x00, 0xD8, 0x01, 0xB0, 0x00, 0xD8, + 0x01, 0x98, 0x01, 0x98, 0x01, 0x98, 0x03, 0x30, 0x01, 0x98, 0x03, 0x30, + 0x03, 0x18, 0x06, 0x30, 0x03, 0x1C, 0x0C, 0x30, 0x03, 0x0C, 0x0C, 0x30, + 0x03, 0x0C, 0x18, 0x60, 0x07, 0x0C, 0x30, 0x60, 0x06, 0x0C, 0x30, 0x60, + 0x06, 0x06, 0x60, 0x60, 0x06, 0x06, 0xC0, 0x60, 0x06, 0x06, 0xC0, 0xC0, + 0x0C, 0x07, 0x80, 0xC0, 0x0C, 0x03, 0x00, 0xC0, 0x0C, 0x00, 0x00, 0xC0, + 0x0C, 0x00, 0x01, 0xC0, 0x0C, 0x00, 0x01, 0x80, 0x18, 0x00, 0x01, 0x80, + 0x18, 0x00, 0x01, 0x80, 0x18, 0x00, 0x01, 0x80, 0xFF, 0x80, 0x3F, 0xE0, + 0xFF, 0x80, 0x3F, 0xE0, 0x07, 0xE0, 0x0F, 0xFC, 0x3F, 0x80, 0x3F, 0xF0, + 0x0F, 0x00, 0x06, 0x00, 0x3C, 0x00, 0x10, 0x01, 0x98, 0x00, 0xC0, 0x06, + 0x60, 0x03, 0x00, 0x19, 0xC0, 0x0C, 0x00, 0x63, 0x00, 0x30, 0x01, 0x0C, + 0x01, 0x80, 0x0C, 0x18, 0x06, 0x00, 0x30, 0x60, 0x18, 0x00, 0xC1, 0xC0, + 0x60, 0x03, 0x03, 0x01, 0x00, 0x08, 0x0C, 0x0C, 0x00, 0x60, 0x18, 0x30, + 0x01, 0x80, 0x60, 0xC0, 0x06, 0x01, 0xC3, 0x00, 0x18, 0x03, 0x18, 0x00, + 0xC0, 0x0C, 0x60, 0x03, 0x00, 0x19, 0x80, 0x0C, 0x00, 0x66, 0x00, 0x30, + 0x01, 0xD8, 0x00, 0x80, 0x03, 0xC0, 0x06, 0x00, 0x0F, 0x00, 0xFF, 0xC0, + 0x1C, 0x03, 0xFE, 0x00, 0x70, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x7F, 0xF0, + 0x00, 0xF0, 0x78, 0x03, 0x80, 0x1C, 0x07, 0x00, 0x0E, 0x0E, 0x00, 0x06, + 0x0C, 0x00, 0x06, 0x18, 0x00, 0x07, 0x38, 0x00, 0x03, 0x30, 0x00, 0x03, + 0x60, 0x00, 0x03, 0x60, 0x00, 0x03, 0x60, 0x00, 0x03, 0xC0, 0x00, 0x03, + 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x06, 0xC0, 0x00, 0x06, 0xC0, 0x00, 0x06, + 0xC0, 0x00, 0x0C, 0xC0, 0x00, 0x1C, 0xC0, 0x00, 0x18, 0x60, 0x00, 0x30, + 0x60, 0x00, 0x70, 0x70, 0x00, 0xE0, 0x38, 0x01, 0xC0, 0x1E, 0x0F, 0x00, + 0x0F, 0xFE, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xFF, 0xFC, 0x01, 0xFF, 0xFF, + 0xC0, 0x06, 0x00, 0x78, 0x01, 0x80, 0x06, 0x00, 0xC0, 0x01, 0xC0, 0x30, + 0x00, 0x30, 0x0C, 0x00, 0x0C, 0x03, 0x00, 0x03, 0x00, 0xC0, 0x01, 0xC0, + 0x60, 0x00, 0x60, 0x18, 0x00, 0x30, 0x06, 0x00, 0x18, 0x01, 0x80, 0x3C, + 0x00, 0xFF, 0xFE, 0x00, 0x3F, 0xFC, 0x00, 0x0C, 0x00, 0x00, 0x03, 0x00, + 0x00, 0x00, 0xC0, 0x00, 0x00, 0x60, 0x00, 0x00, 0x18, 0x00, 0x00, 0x06, + 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x60, 0x00, 0x00, 0x30, 0x00, 0x00, + 0xFF, 0xFC, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x7F, + 0xF0, 0x00, 0xF0, 0x78, 0x03, 0x80, 0x1C, 0x07, 0x00, 0x0E, 0x0E, 0x00, + 0x06, 0x0C, 0x00, 0x06, 0x18, 0x00, 0x03, 0x38, 0x00, 0x03, 0x30, 0x00, + 0x03, 0x60, 0x00, 0x03, 0x60, 0x00, 0x03, 0x60, 0x00, 0x03, 0xC0, 0x00, + 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x06, 0xC0, 0x00, 0x06, 0xC0, 0x00, + 0x06, 0xC0, 0x00, 0x0C, 0xC0, 0x00, 0x1C, 0xC0, 0x00, 0x18, 0x60, 0x00, + 0x30, 0x60, 0x00, 0x70, 0x30, 0x00, 0xE0, 0x38, 0x01, 0xC0, 0x0E, 0x0F, + 0x00, 0x07, 0xFE, 0x00, 0x03, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0x1F, 0xF8, + 0x30, 0x3F, 0xFF, 0xF0, 0x78, 0x0F, 0x80, 0x07, 0xFF, 0xFC, 0x01, 0xFF, + 0xFF, 0xC0, 0x06, 0x00, 0x78, 0x01, 0x80, 0x0E, 0x00, 0xC0, 0x01, 0xC0, + 0x30, 0x00, 0x30, 0x0C, 0x00, 0x0C, 0x03, 0x00, 0x03, 0x00, 0xC0, 0x00, + 0xC0, 0x60, 0x00, 0x60, 0x18, 0x00, 0x30, 0x06, 0x00, 0x38, 0x01, 0x80, + 0x3C, 0x00, 0xFF, 0xFC, 0x00, 0x3F, 0xFC, 0x00, 0x0C, 0x07, 0x80, 0x03, + 0x00, 0x70, 0x00, 0xC0, 0x0E, 0x00, 0x60, 0x01, 0x80, 0x18, 0x00, 0x70, + 0x06, 0x00, 0x0C, 0x01, 0x80, 0x03, 0x80, 0x60, 0x00, 0x60, 0x30, 0x00, + 0x1C, 0xFF, 0xE0, 0x07, 0xFF, 0xF8, 0x00, 0xF0, 0x00, 0x1F, 0xC0, 0x00, + 0x7F, 0xF3, 0x00, 0xE0, 0x3B, 0x03, 0x80, 0x0F, 0x07, 0x00, 0x0E, 0x06, + 0x00, 0x06, 0x0C, 0x00, 0x06, 0x0C, 0x00, 0x06, 0x0C, 0x00, 0x00, 0x0C, + 0x00, 0x00, 0x0E, 0x00, 0x00, 0x07, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, + 0x7F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x70, 0x00, 0x00, 0x38, 0x00, + 0x00, 0x18, 0x00, 0x00, 0x18, 0x20, 0x00, 0x18, 0x60, 0x00, 0x18, 0x60, + 0x00, 0x30, 0x60, 0x00, 0x70, 0xF0, 0x00, 0xE0, 0xF8, 0x01, 0xC0, 0xDC, + 0x07, 0x80, 0x8F, 0xFE, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0xFF, 0xFE, 0x3F, + 0xFF, 0xFE, 0x30, 0x18, 0x06, 0x60, 0x18, 0x06, 0x60, 0x18, 0x06, 0x60, + 0x38, 0x0C, 0x60, 0x30, 0x04, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x70, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, + 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x01, + 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0xFF, 0xFE, 0x00, 0xFF, + 0xFC, 0x00, 0x7F, 0xC0, 0xFF, 0xDF, 0xF0, 0x3F, 0xF1, 0x80, 0x00, 0x60, + 0x60, 0x00, 0x30, 0x18, 0x00, 0x0C, 0x06, 0x00, 0x03, 0x03, 0x80, 0x00, + 0xC0, 0xC0, 0x00, 0x30, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x06, 0x03, 0x00, + 0x01, 0x81, 0xC0, 0x00, 0x60, 0x60, 0x00, 0x18, 0x18, 0x00, 0x0C, 0x06, + 0x00, 0x03, 0x01, 0x80, 0x00, 0xC0, 0xC0, 0x00, 0x30, 0x30, 0x00, 0x1C, + 0x0C, 0x00, 0x06, 0x03, 0x00, 0x01, 0x80, 0xC0, 0x00, 0xC0, 0x30, 0x00, + 0x70, 0x0E, 0x00, 0x38, 0x01, 0xC0, 0x1C, 0x00, 0x38, 0x1E, 0x00, 0x07, + 0xFE, 0x00, 0x00, 0x7E, 0x00, 0x00, 0xFF, 0x80, 0x3F, 0xFF, 0xF0, 0x07, + 0xFC, 0xE0, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0x01, 0x80, 0x00, 0x60, 0x30, + 0x00, 0x18, 0x06, 0x00, 0x02, 0x00, 0xC0, 0x00, 0xC0, 0x0C, 0x00, 0x30, + 0x01, 0x80, 0x06, 0x00, 0x30, 0x01, 0x80, 0x06, 0x00, 0x60, 0x00, 0xC0, + 0x0C, 0x00, 0x18, 0x03, 0x00, 0x01, 0x80, 0xC0, 0x00, 0x30, 0x18, 0x00, + 0x06, 0x06, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x18, 0x30, 0x00, 0x03, 0x8C, + 0x00, 0x00, 0x31, 0x80, 0x00, 0x06, 0x60, 0x00, 0x00, 0xD8, 0x00, 0x00, + 0x1B, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x38, 0x00, 0x00, 0xFF, 0xC0, + 0x7F, 0xFF, 0xF8, 0x0F, 0xF8, 0xC0, 0x00, 0x0C, 0x18, 0x00, 0x01, 0x83, + 0x00, 0x00, 0x30, 0x60, 0x08, 0x0C, 0x0C, 0x07, 0x01, 0x81, 0x81, 0xE0, + 0x30, 0x60, 0x2C, 0x0C, 0x0C, 0x0D, 0x81, 0x81, 0x81, 0x30, 0x30, 0x30, + 0x66, 0x0C, 0x06, 0x08, 0xC1, 0x80, 0xC3, 0x0C, 0x30, 0x18, 0x41, 0x8C, + 0x03, 0x18, 0x31, 0x80, 0x62, 0x06, 0x30, 0x0C, 0xC0, 0xCC, 0x03, 0x10, + 0x19, 0x80, 0x66, 0x03, 0x30, 0x0C, 0x80, 0x6C, 0x01, 0xB0, 0x0D, 0x80, + 0x34, 0x01, 0xB0, 0x07, 0x80, 0x3C, 0x00, 0xE0, 0x07, 0x80, 0x1C, 0x00, + 0xF0, 0x00, 0x03, 0xF8, 0x03, 0xF8, 0x1F, 0xC0, 0x3F, 0xC0, 0x30, 0x00, + 0x30, 0x01, 0xC0, 0x03, 0x00, 0x06, 0x00, 0x30, 0x00, 0x18, 0x03, 0x00, + 0x00, 0xE0, 0x30, 0x00, 0x03, 0x03, 0x00, 0x00, 0x1C, 0x30, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x03, 0xB0, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x30, + 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x36, 0x00, 0x00, 0x03, 0x38, 0x00, + 0x00, 0x30, 0xC0, 0x00, 0x03, 0x07, 0x00, 0x00, 0x30, 0x18, 0x00, 0x03, + 0x00, 0x60, 0x00, 0x30, 0x03, 0x80, 0x03, 0x00, 0x0C, 0x00, 0x30, 0x00, + 0x70, 0x03, 0x00, 0x01, 0x80, 0xFF, 0x80, 0xFF, 0x07, 0xFC, 0x07, 0xF8, + 0x00, 0x7F, 0x80, 0x7F, 0x7F, 0x00, 0x7F, 0x1C, 0x00, 0x18, 0x0C, 0x00, + 0x30, 0x0C, 0x00, 0x70, 0x06, 0x00, 0xE0, 0x06, 0x00, 0xC0, 0x03, 0x01, + 0x80, 0x03, 0x03, 0x00, 0x01, 0x86, 0x00, 0x01, 0x8C, 0x00, 0x00, 0xD8, + 0x00, 0x00, 0xF0, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, + 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, + 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, + 0x00, 0xFF, 0xFE, 0x00, 0xFF, 0xFC, 0x00, 0x03, 0xFF, 0xFE, 0x07, 0xFF, + 0xF8, 0x0C, 0x00, 0x30, 0x10, 0x00, 0xC0, 0x60, 0x03, 0x80, 0xC0, 0x0E, + 0x01, 0x80, 0x38, 0x03, 0x00, 0xE0, 0x00, 0x03, 0x80, 0x00, 0x0E, 0x00, + 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x60, 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x60, 0x18, + 0x00, 0xC0, 0x60, 0x01, 0x81, 0x80, 0x02, 0x06, 0x00, 0x0C, 0x18, 0x00, + 0x18, 0x60, 0x00, 0x30, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0x80, 0x01, 0xFE, + 0x03, 0xFC, 0x06, 0x00, 0x08, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x01, + 0x80, 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0x40, 0x01, 0x80, + 0x03, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x10, 0x00, 0x60, 0x00, 0xC0, 0x01, + 0x80, 0x03, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, 0x80, + 0x03, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x20, 0x00, 0xFF, 0x01, + 0xFE, 0x00, 0xC0, 0x30, 0x0E, 0x01, 0x80, 0x60, 0x18, 0x07, 0x00, 0xC0, + 0x30, 0x0C, 0x03, 0x80, 0x60, 0x18, 0x06, 0x00, 0xC0, 0x30, 0x0C, 0x03, + 0x00, 0x60, 0x18, 0x06, 0x01, 0x80, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x18, + 0x06, 0x01, 0x80, 0x60, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x04, 0x01, 0xFE, + 0x03, 0xFC, 0x00, 0x10, 0x00, 0x60, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, + 0x04, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x03, 0x00, 0x06, + 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, + 0x06, 0x00, 0x08, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x01, 0x80, 0x06, + 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x01, 0x80, 0xFF, 0x01, + 0xFE, 0x00, 0x00, 0x10, 0x00, 0x0C, 0x00, 0x07, 0x80, 0x03, 0x60, 0x01, + 0x8C, 0x00, 0xC3, 0x80, 0xE0, 0x60, 0x70, 0x1C, 0x38, 0x03, 0x1C, 0x00, + 0x6E, 0x00, 0x1F, 0x00, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xC3, 0x86, 0x0C, 0x18, 0x70, 0xC0, 0x00, 0x3F, 0x80, 0x0F, 0xFF, 0x80, + 0x78, 0x07, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x18, 0x00, 0x00, 0x60, 0x00, + 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0x38, 0x03, 0xFC, 0xC0, 0x7F, 0xFF, + 0x07, 0xC0, 0x0C, 0x38, 0x00, 0x31, 0xC0, 0x01, 0xCE, 0x00, 0x06, 0x30, + 0x00, 0x18, 0xC0, 0x00, 0xE3, 0x00, 0x07, 0x8E, 0x00, 0x7C, 0x1C, 0x0F, + 0x3F, 0x3F, 0xF0, 0xFC, 0x7F, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x7C, + 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x30, 0x00, 0x00, 0x06, 0x00, 0x00, + 0x00, 0xC0, 0x00, 0x00, 0x10, 0x00, 0x00, 0x06, 0x07, 0xE0, 0x00, 0xC3, + 0xFF, 0x00, 0x19, 0xC0, 0xF0, 0x03, 0x60, 0x07, 0x00, 0xD8, 0x00, 0x60, + 0x1E, 0x00, 0x0E, 0x03, 0x80, 0x00, 0xC0, 0x60, 0x00, 0x18, 0x0C, 0x00, + 0x03, 0x03, 0x00, 0x00, 0x60, 0x60, 0x00, 0x0C, 0x0C, 0x00, 0x01, 0x81, + 0x80, 0x00, 0x60, 0x70, 0x00, 0x0C, 0x0E, 0x00, 0x03, 0x01, 0xC0, 0x00, + 0x60, 0x3C, 0x00, 0x18, 0x05, 0x80, 0x06, 0x01, 0xB8, 0x01, 0x83, 0xF3, + 0xC1, 0xE0, 0x7E, 0x3F, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x3F, 0x00, + 0x07, 0xFF, 0x30, 0x38, 0x0F, 0xC1, 0x80, 0x1F, 0x0C, 0x00, 0x18, 0x60, + 0x00, 0x63, 0x00, 0x01, 0x9C, 0x00, 0x06, 0x60, 0x00, 0x01, 0x80, 0x00, + 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x0C, + 0x00, 0x00, 0x30, 0x00, 0x00, 0xE0, 0x00, 0x01, 0x80, 0x00, 0xC7, 0x00, + 0x0E, 0x0F, 0x01, 0xF0, 0x1F, 0xFF, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x00, + 0x1F, 0x80, 0x00, 0x0F, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x60, 0x00, + 0x00, 0x30, 0x00, 0x00, 0x10, 0x00, 0x00, 0x18, 0x00, 0xFC, 0x0C, 0x01, + 0xFF, 0x86, 0x01, 0xC0, 0xE3, 0x03, 0x80, 0x1B, 0x03, 0x80, 0x05, 0x81, + 0x80, 0x03, 0xC1, 0x80, 0x00, 0xE1, 0x80, 0x00, 0x60, 0xC0, 0x00, 0x30, + 0x60, 0x00, 0x18, 0x60, 0x00, 0x0C, 0x30, 0x00, 0x06, 0x18, 0x00, 0x02, + 0x0C, 0x00, 0x03, 0x06, 0x00, 0x01, 0x83, 0x00, 0x01, 0xC1, 0xC0, 0x01, + 0xE0, 0x60, 0x01, 0xE0, 0x38, 0x01, 0xB0, 0x0F, 0x03, 0x9F, 0x03, 0xFF, + 0x0F, 0x80, 0x7E, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x07, 0xFF, 0x80, 0x78, + 0x0F, 0x03, 0x80, 0x0E, 0x1C, 0x00, 0x18, 0xE0, 0x00, 0x73, 0x00, 0x00, + 0xD8, 0x00, 0x03, 0x60, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x00, 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x38, 0x00, + 0x00, 0x60, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, 0x03, 0x07, 0x80, 0xF8, + 0x0F, 0xFF, 0x80, 0x0F, 0xF0, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, 0xFF, + 0xF0, 0x00, 0xF0, 0x00, 0x00, 0x70, 0x00, 0x00, 0x18, 0x00, 0x00, 0x06, + 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x07, 0xFF, 0xFC, 0x03, + 0xFF, 0xFF, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x60, 0x00, + 0x00, 0x18, 0x00, 0x00, 0x06, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0xC0, + 0x00, 0x00, 0x30, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, + 0x80, 0x00, 0x00, 0x60, 0x00, 0x00, 0x18, 0x00, 0x00, 0x06, 0x00, 0x00, + 0x01, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x0F, 0xFF, 0xFC, 0x03, 0xFF, 0xFE, + 0x00, 0x00, 0x7E, 0x00, 0x00, 0xFF, 0x87, 0xC1, 0xE0, 0xF3, 0xE1, 0xC0, + 0x1B, 0x01, 0xC0, 0x07, 0x81, 0xC0, 0x03, 0xC0, 0xC0, 0x00, 0xE0, 0xC0, + 0x00, 0x60, 0x60, 0x00, 0x30, 0x60, 0x00, 0x18, 0x30, 0x00, 0x0C, 0x18, + 0x00, 0x06, 0x0C, 0x00, 0x06, 0x06, 0x00, 0x03, 0x03, 0x00, 0x03, 0x81, + 0xC0, 0x01, 0xC0, 0x60, 0x01, 0xC0, 0x38, 0x03, 0x60, 0x0F, 0x07, 0x30, + 0x03, 0xFF, 0x18, 0x00, 0x7E, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x06, + 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x01, + 0x80, 0x00, 0x03, 0x80, 0x03, 0xFF, 0x80, 0x01, 0xFF, 0x00, 0x00, 0x07, + 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, + 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x01, 0x83, 0xF0, 0x01, + 0x8F, 0xF8, 0x01, 0x98, 0x1C, 0x03, 0xB0, 0x0E, 0x03, 0x40, 0x06, 0x03, + 0x80, 0x06, 0x03, 0x00, 0x06, 0x03, 0x00, 0x06, 0x07, 0x00, 0x06, 0x06, + 0x00, 0x0E, 0x06, 0x00, 0x0E, 0x06, 0x00, 0x0E, 0x06, 0x00, 0x0C, 0x0C, + 0x00, 0x0C, 0x0C, 0x00, 0x1C, 0x0C, 0x00, 0x1C, 0x0C, 0x00, 0x18, 0x0C, + 0x00, 0x18, 0x18, 0x00, 0x18, 0xFF, 0x01, 0xFF, 0xFF, 0x01, 0xFF, 0x00, + 0x07, 0x00, 0x00, 0xC0, 0x00, 0x38, 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x1F, + 0xF0, 0x00, 0x06, 0x00, 0x01, 0xC0, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, + 0xC0, 0x00, 0x18, 0x00, 0x07, 0x00, 0x00, 0xC0, 0x00, 0x18, 0x00, 0x03, + 0x00, 0x00, 0x60, 0x00, 0x1C, 0x00, 0x03, 0x00, 0x00, 0x60, 0x00, 0x0C, + 0x00, 0x01, 0x80, 0x7F, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x70, 0x00, + 0x07, 0x00, 0x00, 0x70, 0x00, 0x06, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x03, 0xFF, 0xF0, + 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0x60, 0x00, 0x06, + 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, 0xC0, 0x00, 0x0C, 0x00, 0x00, + 0xC0, 0x00, 0x0C, 0x00, 0x01, 0xC0, 0x00, 0x18, 0x00, 0x01, 0x80, 0x00, + 0x18, 0x00, 0x01, 0x80, 0x00, 0x38, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, + 0x03, 0x00, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, + 0x03, 0x80, 0xFF, 0xF0, 0x0F, 0xFC, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xE0, + 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, + 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0xFF, 0x00, 0xC1, + 0xFF, 0x00, 0x80, 0x70, 0x01, 0x80, 0xC0, 0x01, 0x83, 0x80, 0x01, 0x87, + 0x00, 0x01, 0x8C, 0x00, 0x03, 0x38, 0x00, 0x03, 0x70, 0x00, 0x03, 0xF8, + 0x00, 0x03, 0x9C, 0x00, 0x03, 0x0C, 0x00, 0x06, 0x0E, 0x00, 0x06, 0x07, + 0x00, 0x06, 0x03, 0x80, 0x06, 0x01, 0x80, 0x04, 0x00, 0xC0, 0x0C, 0x00, + 0xE0, 0xFC, 0x03, 0xFE, 0xFC, 0x03, 0xFC, 0x01, 0xFF, 0x00, 0x3F, 0xE0, + 0x00, 0x0C, 0x00, 0x03, 0x00, 0x00, 0x60, 0x00, 0x0C, 0x00, 0x01, 0x80, + 0x00, 0x70, 0x00, 0x0C, 0x00, 0x01, 0x80, 0x00, 0x30, 0x00, 0x06, 0x00, + 0x01, 0x80, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0xC0, 0x00, 0x18, 0x00, + 0x06, 0x00, 0x00, 0xC0, 0x00, 0x18, 0x00, 0x03, 0x00, 0x00, 0xE0, 0x00, + 0x18, 0x00, 0x03, 0x00, 0x00, 0x60, 0x00, 0x0C, 0x03, 0xFF, 0xFF, 0xFF, + 0xFF, 0xF0, 0x00, 0x1E, 0x07, 0x81, 0xE7, 0xE1, 0xF8, 0x3D, 0x8E, 0xE3, + 0x81, 0xE0, 0xF8, 0x30, 0x38, 0x1E, 0x06, 0x06, 0x03, 0x80, 0xC1, 0x80, + 0x60, 0x18, 0x30, 0x0C, 0x03, 0x06, 0x01, 0x80, 0x60, 0xC0, 0x30, 0x08, + 0x18, 0x0C, 0x03, 0x06, 0x01, 0x80, 0x60, 0xC0, 0x30, 0x0C, 0x18, 0x06, + 0x01, 0x83, 0x00, 0x80, 0x60, 0x40, 0x30, 0x0C, 0x18, 0x06, 0x01, 0x83, + 0x00, 0xC0, 0x30, 0x60, 0x18, 0x06, 0x7F, 0x03, 0xC1, 0xFF, 0xE0, 0xF8, + 0x3E, 0x00, 0x03, 0xE0, 0x1F, 0x1F, 0xF0, 0x3E, 0x60, 0x70, 0x0F, 0x80, + 0x70, 0x3C, 0x00, 0x60, 0x70, 0x00, 0xC0, 0xC0, 0x01, 0x81, 0x80, 0x03, + 0x07, 0x00, 0x06, 0x0C, 0x00, 0x1C, 0x18, 0x00, 0x30, 0x30, 0x00, 0x60, + 0x60, 0x00, 0xC1, 0xC0, 0x01, 0x83, 0x00, 0x06, 0x06, 0x00, 0x0C, 0x0C, + 0x00, 0x18, 0x18, 0x00, 0x30, 0x70, 0x00, 0x67, 0xFC, 0x07, 0xFF, 0xF0, + 0x0F, 0xE0, 0x00, 0x3F, 0x00, 0x07, 0xFF, 0x00, 0x3C, 0x0F, 0x01, 0xC0, + 0x1C, 0x0C, 0x00, 0x38, 0x60, 0x00, 0x63, 0x00, 0x00, 0xDC, 0x00, 0x03, + 0x60, 0x00, 0x0D, 0x80, 0x00, 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, + 0x00, 0x1B, 0x00, 0x00, 0x6C, 0x00, 0x03, 0xB0, 0x00, 0x0C, 0x60, 0x00, + 0x61, 0xC0, 0x03, 0x03, 0x80, 0x38, 0x0F, 0x03, 0xC0, 0x0F, 0xFE, 0x00, + 0x0F, 0xC0, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x1F, 0x8F, 0xFE, 0x00, 0xFC, + 0xE0, 0x78, 0x00, 0xCC, 0x00, 0xE0, 0x06, 0xC0, 0x03, 0x00, 0x3C, 0x00, + 0x1C, 0x01, 0xC0, 0x00, 0x60, 0x0C, 0x00, 0x03, 0x00, 0xE0, 0x00, 0x18, + 0x06, 0x00, 0x00, 0xC0, 0x30, 0x00, 0x06, 0x01, 0x80, 0x00, 0x30, 0x0C, + 0x00, 0x03, 0x00, 0xE0, 0x00, 0x18, 0x07, 0x00, 0x01, 0x80, 0x3C, 0x00, + 0x1C, 0x01, 0xE0, 0x01, 0xC0, 0x0D, 0x80, 0x1C, 0x00, 0xCF, 0x03, 0xC0, + 0x06, 0x3F, 0xF8, 0x00, 0x30, 0x7F, 0x00, 0x01, 0x80, 0x00, 0x00, 0x0C, + 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, + 0x00, 0x01, 0x80, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x07, 0xFF, 0x00, 0x00, + 0x7F, 0xF8, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7F, 0xE1, 0xF0, 0x78, + 0x1C, 0xFC, 0x38, 0x01, 0xB0, 0x1C, 0x00, 0x2C, 0x0E, 0x00, 0x0F, 0x03, + 0x00, 0x01, 0xC1, 0x80, 0x00, 0x60, 0x60, 0x00, 0x18, 0x30, 0x00, 0x06, + 0x0C, 0x00, 0x01, 0x83, 0x00, 0x00, 0x60, 0xC0, 0x00, 0x30, 0x30, 0x00, + 0x0C, 0x0C, 0x00, 0x07, 0x03, 0x80, 0x03, 0xC0, 0x60, 0x01, 0xB0, 0x1C, + 0x00, 0xD8, 0x03, 0xC0, 0xE6, 0x00, 0x7F, 0xF1, 0x80, 0x07, 0xE0, 0x60, + 0x00, 0x00, 0x18, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0xC0, 0x00, 0x00, 0x30, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x06, 0x00, 0x00, + 0x7F, 0xF8, 0x00, 0x1F, 0xFE, 0x00, 0x07, 0xF0, 0x3E, 0x03, 0xF8, 0x7F, + 0xC0, 0x18, 0xF0, 0x60, 0x0C, 0xE0, 0x00, 0x07, 0xE0, 0x00, 0x03, 0xC0, + 0x00, 0x03, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x60, + 0x00, 0x00, 0x30, 0x00, 0x00, 0x38, 0x00, 0x00, 0x18, 0x00, 0x00, 0x0C, + 0x00, 0x00, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x80, 0x00, 0x01, + 0x80, 0x00, 0x3F, 0xFF, 0xF0, 0x1F, 0xFF, 0xF0, 0x00, 0x00, 0x3F, 0x00, + 0x0F, 0xFE, 0xC0, 0xF0, 0x3E, 0x0E, 0x00, 0x70, 0xE0, 0x01, 0x06, 0x00, + 0x08, 0x30, 0x00, 0x41, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x3F, 0xF0, 0x00, + 0x3F, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x18, 0x00, 0x00, + 0xCC, 0x00, 0x06, 0x60, 0x00, 0x33, 0x00, 0x03, 0x3C, 0x00, 0x71, 0xF8, + 0x0F, 0x0D, 0xFF, 0xF0, 0x01, 0xFC, 0x00, 0x03, 0x00, 0x03, 0x00, 0x01, + 0x80, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x70, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, + 0x0C, 0x00, 0x06, 0x00, 0x06, 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0xC0, + 0x00, 0xE0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x18, 0x00, 0x0C, 0x00, 0x0E, + 0x00, 0x06, 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0xC0, 0x03, 0x38, 0x0F, + 0x9F, 0xFF, 0x03, 0xF8, 0x00, 0xFC, 0x03, 0xFF, 0xE0, 0x1F, 0xC6, 0x00, + 0x0C, 0x30, 0x00, 0x61, 0x80, 0x03, 0x0C, 0x00, 0x18, 0x60, 0x01, 0x86, + 0x00, 0x0C, 0x30, 0x00, 0x61, 0x80, 0x03, 0x0C, 0x00, 0x18, 0x60, 0x01, + 0x86, 0x00, 0x0C, 0x30, 0x00, 0x61, 0x80, 0x03, 0x0C, 0x00, 0x38, 0x60, + 0x07, 0x83, 0x80, 0x6C, 0x1E, 0x1E, 0x7C, 0x7F, 0xE3, 0xE0, 0xF8, 0x00, + 0x00, 0x7F, 0xC0, 0xFF, 0xFF, 0xF0, 0x3F, 0xF1, 0xC0, 0x00, 0xC0, 0x30, + 0x00, 0x60, 0x0C, 0x00, 0x18, 0x03, 0x00, 0x0C, 0x00, 0xE0, 0x06, 0x00, + 0x18, 0x01, 0x80, 0x06, 0x00, 0xC0, 0x01, 0x80, 0x30, 0x00, 0x60, 0x18, + 0x00, 0x0C, 0x0C, 0x00, 0x03, 0x03, 0x00, 0x00, 0xC1, 0x80, 0x00, 0x30, + 0xC0, 0x00, 0x06, 0x30, 0x00, 0x01, 0x98, 0x00, 0x00, 0x6C, 0x00, 0x00, + 0x1F, 0x00, 0x00, 0x07, 0x80, 0x00, 0xFE, 0x00, 0x7F, 0xFF, 0x00, 0x3F, + 0xCC, 0x00, 0x03, 0x06, 0x00, 0x01, 0x83, 0x00, 0x01, 0x81, 0x81, 0x80, + 0xC0, 0xC1, 0xE0, 0x60, 0x60, 0xF0, 0x60, 0x30, 0xD8, 0x30, 0x18, 0x6C, + 0x30, 0x0C, 0x66, 0x18, 0x06, 0x33, 0x18, 0x03, 0x31, 0x8C, 0x01, 0x98, + 0x66, 0x00, 0xD8, 0x36, 0x00, 0x6C, 0x1B, 0x00, 0x3C, 0x0F, 0x00, 0x1E, + 0x07, 0x80, 0x0E, 0x03, 0x80, 0x07, 0x01, 0xC0, 0x00, 0x07, 0xF0, 0x3F, + 0xC3, 0xFC, 0x0F, 0xF0, 0x38, 0x00, 0x60, 0x07, 0x00, 0x70, 0x00, 0xE0, + 0x38, 0x00, 0x18, 0x1C, 0x00, 0x03, 0x0C, 0x00, 0x00, 0xEE, 0x00, 0x00, + 0x1F, 0x00, 0x00, 0x03, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xDC, 0x00, + 0x00, 0xE3, 0x80, 0x00, 0x70, 0x70, 0x00, 0x38, 0x0E, 0x00, 0x18, 0x01, + 0x80, 0x1C, 0x00, 0x30, 0x0E, 0x00, 0x0E, 0x0F, 0xF0, 0x3F, 0xE3, 0xFC, + 0x0F, 0xF8, 0x03, 0xF8, 0x07, 0xF8, 0x3F, 0xC0, 0x3F, 0xC0, 0x60, 0x00, + 0x30, 0x01, 0x80, 0x01, 0x80, 0x0C, 0x00, 0x18, 0x00, 0x60, 0x01, 0x80, + 0x03, 0x80, 0x0C, 0x00, 0x0C, 0x00, 0xC0, 0x00, 0x60, 0x0C, 0x00, 0x03, + 0x00, 0x60, 0x00, 0x0C, 0x06, 0x00, 0x00, 0x60, 0x60, 0x00, 0x03, 0x06, + 0x00, 0x00, 0x1C, 0x30, 0x00, 0x00, 0x63, 0x00, 0x00, 0x03, 0x30, 0x00, + 0x00, 0x19, 0x80, 0x00, 0x00, 0x78, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, + 0x1C, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x60, + 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x03, 0x00, 0x00, + 0x00, 0x30, 0x00, 0x01, 0xFF, 0xF8, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0x00, + 0x07, 0xFF, 0xF8, 0x3F, 0xFF, 0xC3, 0x00, 0x0C, 0x18, 0x00, 0xC0, 0xC0, + 0x0C, 0x00, 0x00, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, + 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x18, 0x00, 0x01, 0x80, + 0x00, 0x18, 0x00, 0x01, 0x80, 0x0C, 0x18, 0x00, 0x61, 0x80, 0x02, 0x1F, + 0xFF, 0xF0, 0xFF, 0xFF, 0x80, 0x00, 0x0E, 0x00, 0x7C, 0x01, 0xC0, 0x03, + 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x01, 0xC0, 0x03, 0x00, + 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x60, 0x01, 0xC0, 0x0F, 0x00, 0xF8, + 0x01, 0xF0, 0x00, 0x30, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x03, 0x80, + 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0xE0, 0x01, 0x80, 0x03, + 0x00, 0x06, 0x00, 0x0E, 0x00, 0x0F, 0x00, 0x0E, 0x00, 0x01, 0x80, 0xC0, + 0x60, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x06, 0x03, 0x01, 0x80, 0xC0, 0x40, + 0x60, 0x30, 0x18, 0x0C, 0x0C, 0x06, 0x03, 0x01, 0x80, 0xC0, 0xC0, 0x60, + 0x30, 0x18, 0x08, 0x0C, 0x06, 0x03, 0x01, 0x80, 0x80, 0xC0, 0x60, 0x30, + 0x00, 0x01, 0xC0, 0x03, 0xC0, 0x01, 0xC0, 0x01, 0x80, 0x03, 0x00, 0x06, + 0x00, 0x0C, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, + 0x0C, 0x00, 0x18, 0x00, 0x38, 0x00, 0x38, 0x00, 0x3E, 0x00, 0x7C, 0x03, + 0xC0, 0x0E, 0x00, 0x18, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, + 0x06, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x03, 0x00, 0x0E, + 0x00, 0xF8, 0x01, 0xC0, 0x00, 0x0F, 0x00, 0x01, 0xFC, 0x03, 0x70, 0xE0, + 0x7E, 0x07, 0x1E, 0xC0, 0x3F, 0x80, 0x01, 0xE0}; + +const GFXglyph FreeMonoOblique24pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 28, 0, 1}, // 0x20 ' ' + {0, 10, 30, 28, 12, -28}, // 0x21 '!' + {38, 16, 14, 28, 10, -28}, // 0x22 '"' + {66, 22, 32, 28, 6, -29}, // 0x23 '#' + {154, 21, 33, 28, 6, -29}, // 0x24 '$' + {241, 22, 29, 28, 6, -27}, // 0x25 '%' + {321, 19, 25, 28, 6, -23}, // 0x26 '&' + {381, 7, 14, 28, 16, -28}, // 0x27 ''' + {394, 11, 34, 28, 16, -27}, // 0x28 '(' + {441, 11, 34, 28, 7, -27}, // 0x29 ')' + {488, 18, 17, 28, 10, -28}, // 0x2A '*' + {527, 22, 22, 28, 6, -23}, // 0x2B '+' + {588, 12, 14, 28, 5, -6}, // 0x2C ',' + {609, 22, 2, 28, 6, -13}, // 0x2D '-' + {615, 7, 6, 28, 11, -4}, // 0x2E '.' + {621, 24, 35, 28, 5, -30}, // 0x2F '/' + {726, 20, 30, 28, 7, -28}, // 0x30 '0' + {801, 17, 29, 28, 6, -28}, // 0x31 '1' + {863, 23, 29, 28, 4, -28}, // 0x32 '2' + {947, 22, 30, 28, 5, -28}, // 0x33 '3' + {1030, 19, 28, 28, 7, -27}, // 0x34 '4' + {1097, 21, 29, 28, 6, -27}, // 0x35 '5' + {1174, 21, 30, 28, 9, -28}, // 0x36 '6' + {1253, 18, 28, 28, 10, -27}, // 0x37 '7' + {1316, 20, 30, 28, 7, -28}, // 0x38 '8' + {1391, 22, 30, 28, 6, -28}, // 0x39 '9' + {1474, 10, 21, 28, 11, -19}, // 0x3A ':' + {1501, 15, 27, 28, 5, -19}, // 0x3B ';' + {1552, 23, 22, 28, 6, -23}, // 0x3C '<' + {1616, 25, 9, 28, 4, -17}, // 0x3D '=' + {1645, 24, 22, 28, 4, -23}, // 0x3E '>' + {1711, 16, 28, 28, 11, -26}, // 0x3F '?' + {1767, 19, 32, 28, 7, -28}, // 0x40 '@' + {1843, 27, 26, 28, 1, -25}, // 0x41 'A' + {1931, 26, 26, 28, 2, -25}, // 0x42 'B' + {2016, 25, 28, 28, 5, -26}, // 0x43 'C' + {2104, 26, 26, 28, 2, -25}, // 0x44 'D' + {2189, 27, 26, 28, 2, -25}, // 0x45 'E' + {2277, 28, 26, 28, 2, -25}, // 0x46 'F' + {2368, 25, 28, 28, 5, -26}, // 0x47 'G' + {2456, 27, 26, 28, 3, -25}, // 0x48 'H' + {2544, 22, 26, 28, 6, -25}, // 0x49 'I' + {2616, 28, 27, 28, 5, -25}, // 0x4A 'J' + {2711, 29, 26, 28, 2, -25}, // 0x4B 'K' + {2806, 25, 26, 28, 3, -25}, // 0x4C 'L' + {2888, 32, 26, 28, 1, -25}, // 0x4D 'M' + {2992, 30, 26, 28, 2, -25}, // 0x4E 'N' + {3090, 24, 28, 28, 5, -26}, // 0x4F 'O' + {3174, 26, 26, 28, 2, -25}, // 0x50 'P' + {3259, 24, 32, 28, 5, -26}, // 0x51 'Q' + {3355, 26, 26, 28, 2, -25}, // 0x52 'R' + {3440, 24, 28, 28, 5, -26}, // 0x53 'S' + {3524, 24, 26, 28, 7, -25}, // 0x54 'T' + {3602, 26, 27, 28, 6, -25}, // 0x55 'U' + {3690, 27, 26, 28, 6, -25}, // 0x56 'V' + {3778, 27, 26, 28, 6, -25}, // 0x57 'W' + {3866, 29, 26, 28, 2, -25}, // 0x58 'X' + {3961, 24, 26, 28, 7, -25}, // 0x59 'Y' + {4039, 23, 26, 28, 5, -25}, // 0x5A 'Z' + {4114, 15, 34, 28, 12, -27}, // 0x5B '[' + {4178, 10, 35, 28, 12, -30}, // 0x5C '\' + {4222, 15, 34, 28, 6, -27}, // 0x5D ']' + {4286, 18, 12, 28, 9, -28}, // 0x5E '^' + {4313, 28, 2, 28, -1, 5}, // 0x5F '_' + {4320, 6, 7, 28, 13, -29}, // 0x60 '`' + {4326, 22, 22, 28, 4, -20}, // 0x61 'a' + {4387, 27, 29, 28, 1, -27}, // 0x62 'b' + {4485, 22, 22, 28, 6, -20}, // 0x63 'c' + {4546, 25, 29, 28, 5, -27}, // 0x64 'd' + {4637, 22, 22, 28, 5, -20}, // 0x65 'e' + {4698, 26, 28, 28, 5, -27}, // 0x66 'f' + {4789, 25, 30, 28, 5, -20}, // 0x67 'g' + {4883, 24, 28, 28, 3, -27}, // 0x68 'h' + {4967, 19, 29, 28, 5, -28}, // 0x69 'i' + {5036, 20, 38, 28, 4, -28}, // 0x6A 'j' + {5131, 24, 28, 28, 3, -27}, // 0x6B 'k' + {5215, 19, 28, 28, 5, -27}, // 0x6C 'l' + {5282, 27, 21, 28, 1, -20}, // 0x6D 'm' + {5353, 23, 21, 28, 3, -20}, // 0x6E 'n' + {5414, 22, 22, 28, 5, -20}, // 0x6F 'o' + {5475, 29, 30, 28, -1, -20}, // 0x70 'p' + {5584, 26, 30, 28, 5, -20}, // 0x71 'q' + {5682, 25, 20, 28, 4, -19}, // 0x72 'r' + {5745, 21, 22, 28, 5, -20}, // 0x73 's' + {5803, 17, 27, 28, 7, -25}, // 0x74 't' + {5861, 21, 21, 28, 6, -19}, // 0x75 'u' + {5917, 26, 20, 28, 5, -19}, // 0x76 'v' + {5982, 25, 20, 28, 6, -19}, // 0x77 'w' + {6045, 26, 20, 28, 3, -19}, // 0x78 'x' + {6110, 29, 29, 28, 1, -19}, // 0x79 'y' + {6216, 21, 20, 28, 5, -19}, // 0x7A 'z' + {6269, 15, 34, 28, 10, -27}, // 0x7B '{' + {6333, 9, 35, 28, 12, -28}, // 0x7C '|' + {6373, 15, 34, 28, 8, -27}, // 0x7D '}' + {6437, 20, 6, 28, 7, -15}}; // 0x7E '~' + +const GFXfont FreeMonoOblique24pt7b PROGMEM = { + (uint8_t *)FreeMonoOblique24pt7bBitmaps, + (GFXglyph *)FreeMonoOblique24pt7bGlyphs, 0x20, 0x7E, 47}; + +// Approx. 7124 bytes diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoOblique9pt7b.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoOblique9pt7b.h new file mode 100644 index 0000000..1e82964 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeMonoOblique9pt7b.h @@ -0,0 +1,189 @@ +#pragma once +#include + +const uint8_t FreeMonoOblique9pt7bBitmaps[] PROGMEM = { + 0x11, 0x22, 0x24, 0x40, 0x00, 0xC0, 0xDE, 0xE5, 0x29, 0x00, 0x09, 0x05, + 0x02, 0x82, 0x47, 0xF8, 0xA0, 0x51, 0xFE, 0x28, 0x14, 0x0A, 0x09, 0x00, + 0x08, 0x1D, 0x23, 0x40, 0x70, 0x1C, 0x02, 0x82, 0x84, 0x78, 0x20, 0x20, + 0x1C, 0x11, 0x08, 0x83, 0x80, 0x18, 0x71, 0xC0, 0x1C, 0x11, 0x08, 0x83, + 0x80, 0x1E, 0x60, 0x81, 0x03, 0x0A, 0x65, 0x46, 0x88, 0xE8, 0xFA, 0x80, + 0x12, 0x24, 0x48, 0x88, 0x88, 0x88, 0x80, 0x01, 0x11, 0x11, 0x11, 0x22, + 0x44, 0x80, 0x10, 0x22, 0x5B, 0xC3, 0x0A, 0x22, 0x00, 0x04, 0x02, 0x02, + 0x1F, 0xF0, 0x80, 0x40, 0x20, 0x00, 0x36, 0x4C, 0x80, 0xFF, 0x80, 0xF0, + 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, + 0x08, 0x08, 0x00, 0x1C, 0x45, 0x0A, 0x18, 0x30, 0x61, 0x42, 0x85, 0x11, + 0xC0, 0x04, 0x38, 0x90, 0x20, 0x81, 0x02, 0x04, 0x08, 0x23, 0xF8, 0x07, + 0x04, 0xC4, 0x20, 0x10, 0x10, 0x30, 0x20, 0x20, 0x60, 0x40, 0x3F, 0x80, + 0x0F, 0x00, 0x40, 0x20, 0x20, 0x60, 0x18, 0x04, 0x02, 0x01, 0x43, 0x1E, + 0x00, 0x03, 0x05, 0x0A, 0x12, 0x22, 0x22, 0x42, 0x7F, 0x04, 0x04, 0x1E, + 0x1F, 0x88, 0x08, 0x05, 0xC3, 0x30, 0x08, 0x04, 0x02, 0x02, 0x42, 0x1E, + 0x00, 0x07, 0x18, 0x20, 0x40, 0x5C, 0xA6, 0xC2, 0x82, 0x82, 0xC4, 0x78, + 0xFF, 0x04, 0x10, 0x20, 0x82, 0x04, 0x10, 0x20, 0x81, 0x00, 0x1E, 0x23, + 0x41, 0x41, 0x62, 0x1C, 0x66, 0x82, 0x82, 0x84, 0x78, 0x1E, 0x23, 0x41, + 0x41, 0x43, 0x65, 0x3A, 0x02, 0x04, 0x18, 0xE0, 0x6C, 0x00, 0x36, 0x18, + 0xC0, 0x00, 0x19, 0x8C, 0xC4, 0x00, 0x01, 0x83, 0x06, 0x0C, 0x06, 0x00, + 0x80, 0x30, 0x04, 0xFF, 0x80, 0x00, 0x1F, 0xF0, 0x20, 0x0C, 0x01, 0x00, + 0x60, 0x20, 0x60, 0xC1, 0x80, 0x3D, 0x8E, 0x08, 0x10, 0xC6, 0x08, 0x00, + 0x01, 0x80, 0x1C, 0x45, 0x0A, 0x79, 0x34, 0x69, 0x4E, 0x81, 0x03, 0x03, + 0xC0, 0x0F, 0x00, 0x60, 0x12, 0x02, 0x40, 0x88, 0x21, 0x07, 0xE1, 0x04, + 0x20, 0x5E, 0x3C, 0x3F, 0x84, 0x11, 0x04, 0x82, 0x3F, 0x88, 0x32, 0x04, + 0x81, 0x60, 0xBF, 0xC0, 0x1E, 0x98, 0xD0, 0x28, 0x08, 0x04, 0x02, 0x01, + 0x00, 0x41, 0x1F, 0x00, 0x3F, 0x0C, 0x22, 0x04, 0x81, 0x20, 0x48, 0x12, + 0x09, 0x02, 0x43, 0x3F, 0x00, 0x3F, 0xC4, 0x11, 0x00, 0x88, 0x3E, 0x08, + 0x82, 0x00, 0x82, 0x60, 0xBF, 0xE0, 0x3F, 0xE2, 0x08, 0x40, 0x11, 0x03, + 0xE0, 0x44, 0x08, 0x01, 0x00, 0x60, 0x1F, 0x00, 0x1E, 0x98, 0xD0, 0x08, + 0x08, 0x04, 0x7A, 0x05, 0x02, 0x41, 0x1F, 0x00, 0x3D, 0xE2, 0x18, 0x42, + 0x08, 0x43, 0xF8, 0x41, 0x08, 0x21, 0x08, 0x21, 0x1E, 0xF0, 0x3F, 0x82, + 0x02, 0x01, 0x00, 0x80, 0x40, 0x20, 0x20, 0x10, 0x7F, 0x00, 0x0F, 0xE0, + 0x20, 0x04, 0x00, 0x80, 0x10, 0x02, 0x20, 0x84, 0x10, 0x84, 0x0F, 0x00, + 0x3C, 0xE2, 0x10, 0x44, 0x11, 0x02, 0xC0, 0x64, 0x08, 0x81, 0x08, 0x61, + 0x1E, 0x38, 0x3E, 0x02, 0x00, 0x80, 0x20, 0x10, 0x04, 0x01, 0x04, 0x42, + 0x10, 0xBF, 0xE0, 0x38, 0x38, 0xC3, 0x05, 0x28, 0x29, 0x42, 0x52, 0x13, + 0x10, 0x99, 0x84, 0x08, 0x20, 0x47, 0x8F, 0x00, 0x70, 0xE6, 0x08, 0xA1, + 0x14, 0x22, 0x48, 0x49, 0x11, 0x22, 0x14, 0x43, 0x1E, 0x20, 0x1E, 0x18, + 0x90, 0x28, 0x18, 0x0C, 0x06, 0x05, 0x02, 0x46, 0x1E, 0x00, 0x3F, 0x84, + 0x31, 0x04, 0x81, 0x20, 0x8F, 0xC2, 0x00, 0x80, 0x60, 0x3E, 0x00, 0x1E, + 0x18, 0x90, 0x28, 0x18, 0x0C, 0x06, 0x05, 0x02, 0x46, 0x1E, 0x08, 0x0F, + 0x44, 0x60, 0x3F, 0x84, 0x31, 0x04, 0x81, 0x20, 0x8F, 0xC2, 0x10, 0x84, + 0x60, 0xBC, 0x10, 0x0F, 0x88, 0xC8, 0x24, 0x01, 0x80, 0x38, 0x05, 0x02, + 0xC2, 0x5E, 0x00, 0xFF, 0xC4, 0x44, 0x02, 0x01, 0x00, 0x80, 0x40, 0x60, + 0x20, 0x7E, 0x00, 0xF1, 0xD0, 0x24, 0x09, 0x02, 0x41, 0xA0, 0x48, 0x12, + 0x04, 0xC6, 0x1F, 0x00, 0xF1, 0xE8, 0x11, 0x02, 0x20, 0x82, 0x20, 0x44, + 0x09, 0x01, 0x40, 0x28, 0x02, 0x00, 0xF1, 0xE8, 0x09, 0x12, 0x26, 0x45, + 0x48, 0xAA, 0x29, 0x45, 0x28, 0xC6, 0x18, 0xC0, 0x38, 0xE2, 0x08, 0x26, + 0x05, 0x00, 0x40, 0x18, 0x04, 0x81, 0x08, 0x41, 0x1C, 0x70, 0xE3, 0xA0, + 0x90, 0x84, 0x81, 0x80, 0x80, 0x40, 0x20, 0x20, 0x7E, 0x00, 0x3F, 0x90, + 0x88, 0x80, 0x80, 0x80, 0x80, 0x80, 0x82, 0x82, 0x7F, 0x00, 0x39, 0x08, + 0x44, 0x21, 0x08, 0x42, 0x21, 0x0E, 0x00, 0x88, 0x44, 0x44, 0x22, 0x22, + 0x11, 0x11, 0x38, 0x42, 0x11, 0x08, 0x42, 0x10, 0x84, 0x2E, 0x00, 0x08, + 0x28, 0x92, 0x18, 0x20, 0xFF, 0xC0, 0xA4, 0x3E, 0x00, 0x80, 0x47, 0xA4, + 0x34, 0x12, 0x18, 0xF7, 0x38, 0x01, 0x00, 0x40, 0x09, 0xE1, 0xC6, 0x20, + 0x44, 0x09, 0x01, 0x30, 0x46, 0x13, 0xBC, 0x00, 0x1F, 0x48, 0x74, 0x0A, + 0x00, 0x80, 0x20, 0x0C, 0x18, 0xF8, 0x01, 0x80, 0x40, 0x23, 0x96, 0x32, + 0x0A, 0x05, 0x02, 0x81, 0x61, 0x1F, 0xE0, 0x1F, 0x30, 0xD0, 0x3F, 0xF8, + 0x04, 0x01, 0x00, 0x7C, 0x07, 0xC3, 0x00, 0x80, 0xFE, 0x10, 0x04, 0x01, + 0x00, 0x40, 0x10, 0x08, 0x0F, 0xE0, 0x1D, 0xD8, 0xC4, 0x12, 0x04, 0x82, + 0x20, 0x8C, 0x61, 0xE8, 0x02, 0x01, 0x07, 0x80, 0x30, 0x04, 0x01, 0x00, + 0x5C, 0x38, 0x88, 0x22, 0x08, 0x82, 0x21, 0x18, 0x4F, 0x3C, 0x04, 0x04, + 0x00, 0x38, 0x08, 0x08, 0x08, 0x08, 0x10, 0x10, 0xFF, 0x01, 0x00, 0x80, + 0x03, 0xF0, 0x10, 0x08, 0x04, 0x02, 0x02, 0x01, 0x00, 0x80, 0x40, 0x47, + 0xC0, 0x38, 0x08, 0x04, 0x02, 0x71, 0x20, 0xA0, 0xA0, 0x68, 0x24, 0x11, + 0x38, 0xE0, 0x3C, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x10, 0x10, + 0xFF, 0x3E, 0xE2, 0x64, 0x88, 0x91, 0x12, 0x24, 0x48, 0x91, 0x17, 0x33, + 0x37, 0x14, 0x4C, 0x24, 0x12, 0x09, 0x08, 0x85, 0xE3, 0x1E, 0x10, 0x90, + 0x30, 0x18, 0x0C, 0x0B, 0x08, 0x78, 0x33, 0xC3, 0x8C, 0x40, 0x88, 0x12, + 0x02, 0x60, 0x8C, 0x31, 0x78, 0x20, 0x08, 0x03, 0xE0, 0x00, 0x1C, 0xD8, + 0xC4, 0x12, 0x04, 0x81, 0x20, 0x4C, 0x21, 0xF8, 0x02, 0x00, 0x81, 0xF0, + 0x73, 0x8E, 0x04, 0x04, 0x02, 0x01, 0x00, 0x81, 0xFC, 0x1F, 0x61, 0x40, + 0x3C, 0x03, 0x81, 0x82, 0xFC, 0x10, 0x63, 0xF9, 0x02, 0x04, 0x10, 0x20, + 0x40, 0x7C, 0xE3, 0x10, 0x90, 0x48, 0x24, 0x22, 0x11, 0x18, 0xF6, 0xF3, + 0xD0, 0x44, 0x10, 0x88, 0x24, 0x09, 0x02, 0x80, 0x40, 0xE1, 0xD0, 0x24, + 0x91, 0x24, 0x55, 0x19, 0x86, 0x61, 0x10, 0x39, 0xC4, 0x20, 0xB0, 0x30, + 0x0C, 0x04, 0x86, 0x13, 0x8E, 0x3C, 0x71, 0x04, 0x10, 0x40, 0x88, 0x09, + 0x00, 0xA0, 0x06, 0x00, 0x40, 0x08, 0x01, 0x00, 0xFC, 0x00, 0x7F, 0x42, + 0x04, 0x08, 0x10, 0x20, 0x42, 0xFE, 0x0C, 0x41, 0x04, 0x30, 0x8C, 0x08, + 0x21, 0x04, 0x10, 0x60, 0x24, 0x94, 0x92, 0x52, 0x40, 0x18, 0x20, 0x82, + 0x10, 0x40, 0xC4, 0x10, 0x82, 0x08, 0xC0, 0x61, 0x24, 0x30}; + +const GFXglyph FreeMonoOblique9pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 11, 0, 1}, // 0x20 ' ' + {0, 4, 11, 11, 4, -10}, // 0x21 '!' + {6, 5, 5, 11, 4, -10}, // 0x22 '"' + {10, 9, 12, 11, 2, -10}, // 0x23 '#' + {24, 8, 12, 11, 3, -10}, // 0x24 '$' + {36, 9, 11, 11, 2, -10}, // 0x25 '%' + {49, 7, 10, 11, 2, -9}, // 0x26 '&' + {58, 2, 5, 11, 6, -10}, // 0x27 ''' + {60, 4, 13, 11, 6, -10}, // 0x28 '(' + {67, 4, 13, 11, 3, -10}, // 0x29 ')' + {74, 7, 7, 11, 4, -10}, // 0x2A '*' + {81, 9, 8, 11, 2, -8}, // 0x2B '+' + {90, 4, 5, 11, 2, -1}, // 0x2C ',' + {93, 9, 1, 11, 2, -5}, // 0x2D '-' + {95, 2, 2, 11, 4, -1}, // 0x2E '.' + {96, 9, 13, 11, 2, -11}, // 0x2F '/' + {111, 7, 11, 11, 3, -10}, // 0x30 '0' + {121, 7, 11, 11, 2, -10}, // 0x31 '1' + {131, 9, 11, 11, 2, -10}, // 0x32 '2' + {144, 9, 11, 11, 2, -10}, // 0x33 '3' + {157, 8, 11, 11, 2, -10}, // 0x34 '4' + {168, 9, 11, 11, 2, -10}, // 0x35 '5' + {181, 8, 11, 11, 3, -10}, // 0x36 '6' + {192, 7, 11, 11, 4, -10}, // 0x37 '7' + {202, 8, 11, 11, 3, -10}, // 0x38 '8' + {213, 8, 11, 11, 3, -10}, // 0x39 '9' + {224, 3, 8, 11, 4, -7}, // 0x3A ':' + {227, 5, 11, 11, 2, -7}, // 0x3B ';' + {234, 9, 8, 11, 2, -8}, // 0x3C '<' + {243, 9, 4, 11, 2, -6}, // 0x3D '=' + {248, 9, 8, 11, 2, -8}, // 0x3E '>' + {257, 7, 10, 11, 4, -9}, // 0x3F '?' + {266, 7, 12, 11, 3, -10}, // 0x40 '@' + {277, 11, 10, 11, 0, -9}, // 0x41 'A' + {291, 10, 10, 11, 1, -9}, // 0x42 'B' + {304, 9, 10, 11, 2, -9}, // 0x43 'C' + {316, 10, 10, 11, 1, -9}, // 0x44 'D' + {329, 10, 10, 11, 1, -9}, // 0x45 'E' + {342, 11, 10, 11, 1, -9}, // 0x46 'F' + {356, 9, 10, 11, 2, -9}, // 0x47 'G' + {368, 11, 10, 11, 1, -9}, // 0x48 'H' + {382, 9, 10, 11, 2, -9}, // 0x49 'I' + {394, 11, 10, 11, 2, -9}, // 0x4A 'J' + {408, 11, 10, 11, 1, -9}, // 0x4B 'K' + {422, 10, 10, 11, 1, -9}, // 0x4C 'L' + {435, 13, 10, 11, 0, -9}, // 0x4D 'M' + {452, 11, 10, 11, 1, -9}, // 0x4E 'N' + {466, 9, 10, 11, 2, -9}, // 0x4F 'O' + {478, 10, 10, 11, 1, -9}, // 0x50 'P' + {491, 9, 13, 11, 2, -9}, // 0x51 'Q' + {506, 10, 10, 11, 1, -9}, // 0x52 'R' + {519, 9, 10, 11, 2, -9}, // 0x53 'S' + {531, 9, 10, 11, 3, -9}, // 0x54 'T' + {543, 10, 10, 11, 2, -9}, // 0x55 'U' + {556, 11, 10, 11, 2, -9}, // 0x56 'V' + {570, 11, 10, 11, 2, -9}, // 0x57 'W' + {584, 11, 10, 11, 1, -9}, // 0x58 'X' + {598, 9, 10, 11, 3, -9}, // 0x59 'Y' + {610, 9, 10, 11, 2, -9}, // 0x5A 'Z' + {622, 5, 13, 11, 5, -10}, // 0x5B '[' + {631, 4, 14, 11, 4, -11}, // 0x5C '\' + {638, 5, 13, 11, 2, -10}, // 0x5D ']' + {647, 7, 5, 11, 3, -10}, // 0x5E '^' + {652, 11, 1, 11, 0, 2}, // 0x5F '_' + {654, 2, 3, 11, 5, -11}, // 0x60 '`' + {655, 9, 8, 11, 2, -7}, // 0x61 'a' + {664, 11, 11, 11, 0, -10}, // 0x62 'b' + {680, 10, 8, 11, 2, -7}, // 0x63 'c' + {690, 9, 11, 11, 2, -10}, // 0x64 'd' + {703, 9, 8, 11, 2, -7}, // 0x65 'e' + {712, 10, 11, 11, 2, -10}, // 0x66 'f' + {726, 10, 11, 11, 2, -7}, // 0x67 'g' + {740, 10, 11, 11, 1, -10}, // 0x68 'h' + {754, 8, 11, 11, 2, -10}, // 0x69 'i' + {765, 9, 14, 11, 1, -10}, // 0x6A 'j' + {781, 9, 11, 11, 1, -10}, // 0x6B 'k' + {794, 8, 11, 11, 2, -10}, // 0x6C 'l' + {805, 11, 8, 11, 0, -7}, // 0x6D 'm' + {816, 9, 8, 11, 1, -7}, // 0x6E 'n' + {825, 9, 8, 11, 2, -7}, // 0x6F 'o' + {834, 11, 11, 11, 0, -7}, // 0x70 'p' + {850, 10, 11, 11, 2, -7}, // 0x71 'q' + {864, 9, 8, 11, 2, -7}, // 0x72 'r' + {873, 8, 8, 11, 2, -7}, // 0x73 's' + {881, 7, 10, 11, 2, -9}, // 0x74 't' + {890, 9, 8, 11, 2, -7}, // 0x75 'u' + {899, 10, 8, 11, 2, -7}, // 0x76 'v' + {909, 10, 8, 11, 2, -7}, // 0x77 'w' + {919, 10, 8, 11, 1, -7}, // 0x78 'x' + {929, 12, 11, 11, 0, -7}, // 0x79 'y' + {946, 8, 8, 11, 2, -7}, // 0x7A 'z' + {954, 6, 13, 11, 4, -10}, // 0x7B '{' + {964, 3, 12, 11, 5, -9}, // 0x7C '|' + {969, 6, 13, 11, 3, -10}, // 0x7D '}' + {979, 7, 3, 11, 3, -6}}; // 0x7E '~' + +const GFXfont FreeMonoOblique9pt7b PROGMEM = { + (uint8_t *)FreeMonoOblique9pt7bBitmaps, + (GFXglyph *)FreeMonoOblique9pt7bGlyphs, 0x20, 0x7E, 18}; + +// Approx. 1654 bytes diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSans12pt7b.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSans12pt7b.h new file mode 100644 index 0000000..6e77392 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSans12pt7b.h @@ -0,0 +1,272 @@ +#pragma once +#include + +const uint8_t FreeSans12pt7bBitmaps[] PROGMEM = { + 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xCF, 0x3C, 0xF3, 0x8A, 0x20, 0x06, 0x30, + 0x31, 0x03, 0x18, 0x18, 0xC7, 0xFF, 0xBF, 0xFC, 0x31, 0x03, 0x18, 0x18, + 0xC7, 0xFF, 0xBF, 0xFC, 0x31, 0x01, 0x18, 0x18, 0xC0, 0xC6, 0x06, 0x30, + 0x04, 0x03, 0xE1, 0xFF, 0x72, 0x6C, 0x47, 0x88, 0xF1, 0x07, 0x20, 0x7E, + 0x03, 0xF0, 0x17, 0x02, 0x3C, 0x47, 0x88, 0xF1, 0x1B, 0x26, 0x7F, 0xC3, + 0xE0, 0x10, 0x02, 0x00, 0x00, 0x06, 0x03, 0xC0, 0x40, 0x7E, 0x0C, 0x0E, + 0x70, 0x80, 0xC3, 0x18, 0x0C, 0x31, 0x00, 0xE7, 0x30, 0x07, 0xE6, 0x00, + 0x3C, 0x40, 0x00, 0x0C, 0x7C, 0x00, 0x8F, 0xE0, 0x19, 0xC7, 0x01, 0x18, + 0x30, 0x31, 0x83, 0x02, 0x1C, 0x70, 0x40, 0xFE, 0x04, 0x07, 0xC0, 0x0F, + 0x00, 0x7E, 0x03, 0x9C, 0x0C, 0x30, 0x30, 0xC0, 0xE7, 0x01, 0xF8, 0x03, + 0x80, 0x3E, 0x01, 0xCC, 0x6E, 0x19, 0xB0, 0x7C, 0xC0, 0xF3, 0x03, 0xCE, + 0x1F, 0x9F, 0xE6, 0x1E, 0x1C, 0xFF, 0xA0, 0x08, 0x8C, 0x66, 0x31, 0x98, + 0xC6, 0x31, 0x8C, 0x63, 0x08, 0x63, 0x08, 0x61, 0x0C, 0x20, 0x82, 0x18, + 0xC3, 0x18, 0xC3, 0x18, 0xC6, 0x31, 0x8C, 0x62, 0x31, 0x88, 0xC4, 0x62, + 0x00, 0x10, 0x23, 0x5B, 0xE3, 0x8D, 0x91, 0x00, 0x0C, 0x03, 0x00, 0xC0, + 0x30, 0xFF, 0xFF, 0xF0, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0xF5, 0x60, + 0xFF, 0xF0, 0xF0, 0x02, 0x0C, 0x10, 0x20, 0xC1, 0x02, 0x0C, 0x10, 0x20, + 0xC1, 0x02, 0x0C, 0x10, 0x20, 0xC1, 0x00, 0x1F, 0x07, 0xF1, 0xC7, 0x30, + 0x6E, 0x0F, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, + 0x0E, 0xC1, 0x9C, 0x71, 0xFC, 0x1F, 0x00, 0x08, 0xCF, 0xFF, 0x8C, 0x63, + 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0x1F, 0x0F, 0xF9, 0x87, 0x60, 0x7C, + 0x06, 0x00, 0xC0, 0x18, 0x07, 0x01, 0xC0, 0xF0, 0x78, 0x1C, 0x06, 0x00, + 0x80, 0x30, 0x07, 0xFF, 0xFF, 0xE0, 0x3F, 0x0F, 0xF3, 0x87, 0x60, 0x6C, + 0x0C, 0x01, 0x80, 0x70, 0x7C, 0x0F, 0x80, 0x18, 0x01, 0x80, 0x3C, 0x07, + 0x80, 0xD8, 0x73, 0xFC, 0x1F, 0x00, 0x01, 0x80, 0x70, 0x0E, 0x03, 0xC0, + 0xD8, 0x1B, 0x06, 0x61, 0x8C, 0x21, 0x8C, 0x33, 0x06, 0x7F, 0xFF, 0xFE, + 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x3F, 0xCF, 0xF9, 0x80, 0x30, 0x06, + 0x00, 0xDE, 0x1F, 0xE7, 0x0E, 0x00, 0xE0, 0x0C, 0x01, 0x80, 0x30, 0x07, + 0x81, 0xF8, 0x73, 0xFC, 0x1F, 0x00, 0x0F, 0x07, 0xF9, 0xC3, 0x30, 0x74, + 0x01, 0x80, 0x33, 0xC7, 0xFE, 0xF0, 0xDC, 0x1F, 0x01, 0xE0, 0x3C, 0x06, + 0xC1, 0xDC, 0x71, 0xFC, 0x1F, 0x00, 0xFF, 0xFF, 0xFC, 0x01, 0x00, 0x60, + 0x18, 0x02, 0x00, 0xC0, 0x30, 0x06, 0x01, 0x80, 0x30, 0x04, 0x01, 0x80, + 0x30, 0x06, 0x01, 0x80, 0x30, 0x00, 0x1F, 0x07, 0xF1, 0xC7, 0x30, 0x66, + 0x0C, 0xC1, 0x8C, 0x61, 0xFC, 0x3F, 0x8E, 0x3B, 0x01, 0xE0, 0x3C, 0x07, + 0x80, 0xD8, 0x31, 0xFC, 0x1F, 0x00, 0x1F, 0x07, 0xF1, 0xC7, 0x70, 0x6C, + 0x07, 0x80, 0xF0, 0x1E, 0x07, 0x61, 0xEF, 0xFC, 0x79, 0x80, 0x30, 0x05, + 0x81, 0x98, 0x73, 0xFC, 0x1E, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0xF0, 0x00, + 0x0F, 0x56, 0x00, 0x00, 0x07, 0x01, 0xE0, 0xF8, 0x3C, 0x0F, 0x00, 0xE0, + 0x07, 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xF0, 0x01, 0xFF, 0xFF, 0xFF, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x0E, 0x00, 0x78, 0x01, 0xF0, 0x07, + 0xC0, 0x0F, 0x00, 0x70, 0x1E, 0x0F, 0x03, 0xC0, 0xF0, 0x08, 0x00, 0x1F, + 0x1F, 0xEE, 0x1B, 0x03, 0xC0, 0xC0, 0x30, 0x0C, 0x06, 0x03, 0x81, 0xC0, + 0xE0, 0x30, 0x0C, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x03, 0x00, 0x00, 0xFE, + 0x00, 0x0F, 0xFE, 0x00, 0xF0, 0x3E, 0x07, 0x00, 0x3C, 0x38, 0x00, 0x30, + 0xC1, 0xE0, 0x66, 0x0F, 0xD9, 0xD8, 0x61, 0xC3, 0xC3, 0x07, 0x0F, 0x1C, + 0x1C, 0x3C, 0x60, 0x60, 0xF1, 0x81, 0x83, 0xC6, 0x06, 0x1B, 0x18, 0x38, + 0xEE, 0x71, 0xE7, 0x18, 0xFD, 0xF8, 0x71, 0xE7, 0xC0, 0xE0, 0x00, 0x01, + 0xE0, 0x00, 0x01, 0xFF, 0xC0, 0x01, 0xFC, 0x00, 0x03, 0xC0, 0x03, 0xC0, + 0x03, 0xC0, 0x07, 0xE0, 0x06, 0x60, 0x06, 0x60, 0x0E, 0x70, 0x0C, 0x30, + 0x0C, 0x30, 0x1C, 0x38, 0x18, 0x18, 0x1F, 0xF8, 0x3F, 0xFC, 0x30, 0x1C, + 0x30, 0x0C, 0x70, 0x0E, 0x60, 0x06, 0x60, 0x06, 0xFF, 0xC7, 0xFF, 0x30, + 0x19, 0x80, 0x6C, 0x03, 0x60, 0x1B, 0x00, 0xD8, 0x0C, 0xFF, 0xC7, 0xFF, + 0x30, 0x0D, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x06, 0xFF, 0xF7, + 0xFE, 0x00, 0x07, 0xE0, 0x3F, 0xF0, 0xE0, 0x73, 0x80, 0x66, 0x00, 0x6C, + 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, 0x06, 0x00, + 0x06, 0x00, 0x6C, 0x00, 0xDC, 0x03, 0x1E, 0x0E, 0x1F, 0xF8, 0x0F, 0xC0, + 0xFF, 0x83, 0xFF, 0x8C, 0x07, 0x30, 0x0E, 0xC0, 0x1B, 0x00, 0x7C, 0x00, + 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x1F, 0x00, + 0x6C, 0x03, 0xB0, 0x1C, 0xFF, 0xE3, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xC0, + 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xFF, 0xEF, 0xFE, 0xC0, + 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xFF, 0xDF, + 0xFB, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x00, + 0x07, 0xF0, 0x1F, 0xFC, 0x3C, 0x1E, 0x70, 0x06, 0x60, 0x03, 0xE0, 0x00, + 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x7F, 0xC0, 0x7F, 0xC0, 0x03, 0xC0, 0x03, + 0x60, 0x03, 0x60, 0x07, 0x30, 0x0F, 0x3C, 0x1F, 0x1F, 0xFB, 0x07, 0xE1, + 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, + 0x03, 0xFF, 0xFF, 0xFF, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, + 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x01, + 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x80, 0xC0, 0x60, + 0x3C, 0x1E, 0x0F, 0x07, 0xC7, 0x7F, 0x1F, 0x00, 0xC0, 0x3B, 0x01, 0xCC, + 0x0E, 0x30, 0x70, 0xC3, 0x83, 0x1C, 0x0C, 0xE0, 0x33, 0x80, 0xDE, 0x03, + 0xDC, 0x0E, 0x38, 0x30, 0x60, 0xC1, 0xC3, 0x03, 0x8C, 0x06, 0x30, 0x1C, + 0xC0, 0x3B, 0x00, 0x60, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, + 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, + 0xFF, 0xFF, 0xF0, 0xE0, 0x07, 0xE0, 0x07, 0xF0, 0x0F, 0xF0, 0x0F, 0xD0, + 0x0F, 0xD8, 0x1B, 0xD8, 0x1B, 0xD8, 0x1B, 0xCC, 0x33, 0xCC, 0x33, 0xCC, + 0x33, 0xC6, 0x63, 0xC6, 0x63, 0xC6, 0x63, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, + 0xC3, 0xC1, 0x83, 0xE0, 0x1F, 0x00, 0xFC, 0x07, 0xE0, 0x3D, 0x81, 0xEE, + 0x0F, 0x30, 0x79, 0xC3, 0xC6, 0x1E, 0x18, 0xF0, 0xE7, 0x83, 0x3C, 0x1D, + 0xE0, 0x6F, 0x01, 0xF8, 0x0F, 0xC0, 0x3E, 0x01, 0xC0, 0x03, 0xE0, 0x0F, + 0xFC, 0x0F, 0x07, 0x86, 0x00, 0xC6, 0x00, 0x33, 0x00, 0x1B, 0x00, 0x07, + 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x36, 0x00, + 0x33, 0x00, 0x18, 0xC0, 0x18, 0x78, 0x3C, 0x1F, 0xFC, 0x03, 0xF8, 0x00, + 0xFF, 0x8F, 0xFE, 0xC0, 0x6C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x07, + 0xFF, 0xEF, 0xFC, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, + 0xC0, 0x0C, 0x00, 0x03, 0xE0, 0x0F, 0xFC, 0x0F, 0x07, 0x86, 0x00, 0xC6, + 0x00, 0x33, 0x00, 0x1B, 0x00, 0x07, 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x00, + 0xF0, 0x00, 0x78, 0x00, 0x36, 0x00, 0x33, 0x01, 0x98, 0xC0, 0xFC, 0x78, + 0x3C, 0x1F, 0xFF, 0x03, 0xF9, 0x80, 0x00, 0x40, 0xFF, 0xC3, 0xFF, 0xCC, + 0x03, 0xB0, 0x06, 0xC0, 0x1B, 0x00, 0x6C, 0x01, 0xB0, 0x0C, 0xFF, 0xE3, + 0xFF, 0xCC, 0x03, 0xB0, 0x06, 0xC0, 0x1B, 0x00, 0x6C, 0x01, 0xB0, 0x06, + 0xC0, 0x1B, 0x00, 0x70, 0x0F, 0xE0, 0x7F, 0xC3, 0x83, 0x9C, 0x07, 0x60, + 0x0D, 0x80, 0x06, 0x00, 0x1E, 0x00, 0x3F, 0x80, 0x3F, 0xC0, 0x0F, 0x80, + 0x07, 0xC0, 0x0F, 0x00, 0x3E, 0x00, 0xDE, 0x0E, 0x3F, 0xF0, 0x3F, 0x80, + 0xFF, 0xFF, 0xFF, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, + 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, + 0x06, 0x00, 0x60, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, + 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, + 0xE0, 0x0F, 0x80, 0xEE, 0x0E, 0x3F, 0xE0, 0x7C, 0x00, 0x60, 0x06, 0xC0, + 0x1D, 0xC0, 0x31, 0x80, 0x63, 0x01, 0xC7, 0x03, 0x06, 0x06, 0x0C, 0x1C, + 0x1C, 0x30, 0x18, 0x60, 0x31, 0xC0, 0x73, 0x00, 0x66, 0x00, 0xDC, 0x01, + 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x00, 0xE0, 0x30, 0x1D, 0x80, 0xE0, + 0x76, 0x07, 0x81, 0xD8, 0x1E, 0x06, 0x70, 0x7C, 0x18, 0xC1, 0xB0, 0xE3, + 0x0C, 0xC3, 0x8C, 0x33, 0x0C, 0x38, 0xC6, 0x30, 0x67, 0x18, 0xC1, 0x98, + 0x67, 0x06, 0x61, 0xD8, 0x1D, 0x83, 0x60, 0x3C, 0x0D, 0x80, 0xF0, 0x3E, + 0x03, 0xC0, 0x70, 0x0F, 0x01, 0xC0, 0x18, 0x07, 0x00, 0x70, 0x0E, 0x60, + 0x38, 0xE0, 0x60, 0xE1, 0xC0, 0xC3, 0x01, 0xCC, 0x01, 0xF8, 0x01, 0xE0, + 0x03, 0x80, 0x07, 0x80, 0x1F, 0x00, 0x33, 0x00, 0xE7, 0x03, 0x86, 0x06, + 0x0E, 0x1C, 0x0E, 0x70, 0x0C, 0xC0, 0x1C, 0x60, 0x06, 0x70, 0x0E, 0x30, + 0x1C, 0x38, 0x18, 0x1C, 0x38, 0x0C, 0x30, 0x0E, 0x70, 0x06, 0x60, 0x03, + 0xC0, 0x03, 0xC0, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, + 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0xFF, 0xFF, 0xFF, 0xC0, 0x0E, + 0x00, 0xE0, 0x0E, 0x00, 0x60, 0x07, 0x00, 0x70, 0x07, 0x00, 0x30, 0x03, + 0x80, 0x38, 0x03, 0x80, 0x18, 0x01, 0xC0, 0x1C, 0x00, 0xFF, 0xFF, 0xFF, + 0xC0, 0xFF, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCF, + 0xF0, 0x81, 0x81, 0x02, 0x06, 0x04, 0x08, 0x18, 0x10, 0x20, 0x60, 0x40, + 0x81, 0x81, 0x02, 0x06, 0x04, 0xFF, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, + 0x33, 0x33, 0x33, 0x3F, 0xF0, 0x0C, 0x0E, 0x05, 0x86, 0xC3, 0x21, 0x19, + 0x8C, 0x83, 0xC1, 0x80, 0xFF, 0xFE, 0xE3, 0x8C, 0x30, 0x3F, 0x07, 0xF8, + 0xE1, 0xCC, 0x0C, 0x00, 0xC0, 0x1C, 0x3F, 0xCF, 0x8C, 0xC0, 0xCC, 0x0C, + 0xE3, 0xC7, 0xEF, 0x3C, 0x70, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, + 0x0C, 0xF8, 0xDF, 0xCF, 0x0E, 0xE0, 0x7C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, + 0x3C, 0x03, 0xE0, 0x6F, 0x0E, 0xDF, 0xCC, 0xF8, 0x1F, 0x0F, 0xE7, 0x1B, + 0x83, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x38, 0x37, 0x1C, 0xFE, 0x1F, + 0x00, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x3C, 0xCF, 0xFB, 0x8F, + 0xE0, 0xF8, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF8, 0x3B, 0x8F, 0x3F, + 0x63, 0xCC, 0x1F, 0x07, 0xF1, 0xC7, 0x70, 0x3C, 0x07, 0xFF, 0xFF, 0xFE, + 0x00, 0xC0, 0x1C, 0x0D, 0xC3, 0x1F, 0xE1, 0xF0, 0x3B, 0xD8, 0xC6, 0x7F, + 0xEC, 0x63, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x00, 0x1E, 0x67, 0xFD, 0xC7, + 0xF0, 0x7C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x7C, 0x1D, 0xC7, 0x9F, + 0xB1, 0xE6, 0x00, 0xC0, 0x3E, 0x0E, 0x7F, 0xC7, 0xE0, 0xC0, 0x30, 0x0C, + 0x03, 0x00, 0xC0, 0x33, 0xCD, 0xFB, 0xC7, 0xE0, 0xF0, 0x3C, 0x0F, 0x03, + 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x30, 0xF0, 0x3F, 0xFF, 0xFF, + 0xF0, 0x33, 0x00, 0x03, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x3F, + 0xE0, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, 0x83, 0x30, 0xC6, 0x30, + 0xCC, 0x1B, 0x83, 0xF0, 0x77, 0x0C, 0x61, 0x8E, 0x30, 0xE6, 0x0C, 0xC1, + 0xD8, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xCF, 0x1F, 0x6F, 0xDF, 0xFC, + 0x78, 0xFC, 0x18, 0x3C, 0x0C, 0x1E, 0x06, 0x0F, 0x03, 0x07, 0x81, 0x83, + 0xC0, 0xC1, 0xE0, 0x60, 0xF0, 0x30, 0x78, 0x18, 0x3C, 0x0C, 0x18, 0xCF, + 0x37, 0xEF, 0x1F, 0x83, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, + 0x0F, 0x03, 0xC0, 0xC0, 0x1F, 0x07, 0xF1, 0xC7, 0x70, 0x7C, 0x07, 0x80, + 0xF0, 0x1E, 0x03, 0xC0, 0x7C, 0x1D, 0xC7, 0x1F, 0xC1, 0xF0, 0xCF, 0x8D, + 0xFC, 0xF0, 0xEE, 0x06, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3E, + 0x07, 0xF0, 0xEF, 0xFC, 0xCF, 0x8C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x00, + 0x1E, 0x67, 0xFD, 0xC7, 0xF0, 0x7C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, + 0x7C, 0x1D, 0xC7, 0x9F, 0xF1, 0xE6, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, + 0xCF, 0x7F, 0x38, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC0, 0x3E, 0x1F, + 0xEE, 0x1B, 0x00, 0xC0, 0x3C, 0x07, 0xF0, 0x3E, 0x01, 0xF0, 0x3E, 0x1D, + 0xFE, 0x3E, 0x00, 0x63, 0x19, 0xFF, 0xB1, 0x8C, 0x63, 0x18, 0xC6, 0x31, + 0xE7, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, + 0xF0, 0x7E, 0x3D, 0xFB, 0x3C, 0xC0, 0xE0, 0x66, 0x06, 0x60, 0x67, 0x0C, + 0x30, 0xC3, 0x0C, 0x39, 0x81, 0x98, 0x19, 0x81, 0xF0, 0x0F, 0x00, 0xE0, + 0x0E, 0x00, 0xC1, 0xC1, 0xB0, 0xE1, 0xD8, 0x70, 0xCC, 0x2C, 0x66, 0x36, + 0x31, 0x9B, 0x18, 0xCD, 0x98, 0x64, 0x6C, 0x16, 0x36, 0x0F, 0x1A, 0x07, + 0x8F, 0x03, 0x83, 0x80, 0xC1, 0xC0, 0x60, 0xEE, 0x18, 0xC6, 0x0C, 0xC1, + 0xF0, 0x1C, 0x01, 0x80, 0x78, 0x1B, 0x03, 0x30, 0xC7, 0x30, 0x66, 0x06, + 0xE0, 0x6C, 0x0D, 0x83, 0x38, 0x63, 0x0C, 0x63, 0x0E, 0x60, 0xCC, 0x1B, + 0x03, 0x60, 0x3C, 0x07, 0x00, 0xE0, 0x18, 0x03, 0x00, 0xE0, 0x78, 0x0E, + 0x00, 0xFF, 0xFF, 0xF0, 0x18, 0x0C, 0x07, 0x03, 0x81, 0xC0, 0x60, 0x30, + 0x18, 0x0E, 0x03, 0xFF, 0xFF, 0xC0, 0x19, 0xCC, 0x63, 0x18, 0xC6, 0x31, + 0x99, 0x86, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x1C, 0x60, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFC, 0xC7, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x0C, 0x33, 0x31, + 0x8C, 0x63, 0x18, 0xC6, 0x73, 0x00, 0x70, 0x3E, 0x09, 0xE4, 0x1F, 0x03, + 0x80}; + +const GFXglyph FreeSans12pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 6, 0, 1}, // 0x20 ' ' + {0, 2, 18, 8, 3, -17}, // 0x21 '!' + {5, 6, 6, 8, 1, -16}, // 0x22 '"' + {10, 13, 16, 13, 0, -15}, // 0x23 '#' + {36, 11, 20, 13, 1, -17}, // 0x24 '$' + {64, 20, 17, 21, 1, -16}, // 0x25 '%' + {107, 14, 17, 16, 1, -16}, // 0x26 '&' + {137, 2, 6, 5, 1, -16}, // 0x27 ''' + {139, 5, 23, 8, 2, -17}, // 0x28 '(' + {154, 5, 23, 8, 1, -17}, // 0x29 ')' + {169, 7, 7, 9, 1, -17}, // 0x2A '*' + {176, 10, 11, 14, 2, -10}, // 0x2B '+' + {190, 2, 6, 7, 2, -1}, // 0x2C ',' + {192, 6, 2, 8, 1, -7}, // 0x2D '-' + {194, 2, 2, 6, 2, -1}, // 0x2E '.' + {195, 7, 18, 7, 0, -17}, // 0x2F '/' + {211, 11, 17, 13, 1, -16}, // 0x30 '0' + {235, 5, 17, 13, 3, -16}, // 0x31 '1' + {246, 11, 17, 13, 1, -16}, // 0x32 '2' + {270, 11, 17, 13, 1, -16}, // 0x33 '3' + {294, 11, 17, 13, 1, -16}, // 0x34 '4' + {318, 11, 17, 13, 1, -16}, // 0x35 '5' + {342, 11, 17, 13, 1, -16}, // 0x36 '6' + {366, 11, 17, 13, 1, -16}, // 0x37 '7' + {390, 11, 17, 13, 1, -16}, // 0x38 '8' + {414, 11, 17, 13, 1, -16}, // 0x39 '9' + {438, 2, 13, 6, 2, -12}, // 0x3A ':' + {442, 2, 16, 6, 2, -11}, // 0x3B ';' + {446, 12, 12, 14, 1, -11}, // 0x3C '<' + {464, 12, 6, 14, 1, -8}, // 0x3D '=' + {473, 12, 12, 14, 1, -11}, // 0x3E '>' + {491, 10, 18, 13, 2, -17}, // 0x3F '?' + {514, 22, 21, 24, 1, -17}, // 0x40 '@' + {572, 16, 18, 16, 0, -17}, // 0x41 'A' + {608, 13, 18, 16, 2, -17}, // 0x42 'B' + {638, 15, 18, 17, 1, -17}, // 0x43 'C' + {672, 14, 18, 17, 2, -17}, // 0x44 'D' + {704, 12, 18, 15, 2, -17}, // 0x45 'E' + {731, 11, 18, 14, 2, -17}, // 0x46 'F' + {756, 16, 18, 18, 1, -17}, // 0x47 'G' + {792, 13, 18, 17, 2, -17}, // 0x48 'H' + {822, 2, 18, 7, 2, -17}, // 0x49 'I' + {827, 9, 18, 13, 1, -17}, // 0x4A 'J' + {848, 14, 18, 16, 2, -17}, // 0x4B 'K' + {880, 10, 18, 14, 2, -17}, // 0x4C 'L' + {903, 16, 18, 20, 2, -17}, // 0x4D 'M' + {939, 13, 18, 18, 2, -17}, // 0x4E 'N' + {969, 17, 18, 19, 1, -17}, // 0x4F 'O' + {1008, 12, 18, 16, 2, -17}, // 0x50 'P' + {1035, 17, 19, 19, 1, -17}, // 0x51 'Q' + {1076, 14, 18, 17, 2, -17}, // 0x52 'R' + {1108, 14, 18, 16, 1, -17}, // 0x53 'S' + {1140, 12, 18, 15, 1, -17}, // 0x54 'T' + {1167, 13, 18, 17, 2, -17}, // 0x55 'U' + {1197, 15, 18, 15, 0, -17}, // 0x56 'V' + {1231, 22, 18, 22, 0, -17}, // 0x57 'W' + {1281, 15, 18, 16, 0, -17}, // 0x58 'X' + {1315, 16, 18, 16, 0, -17}, // 0x59 'Y' + {1351, 13, 18, 15, 1, -17}, // 0x5A 'Z' + {1381, 4, 23, 7, 2, -17}, // 0x5B '[' + {1393, 7, 18, 7, 0, -17}, // 0x5C '\' + {1409, 4, 23, 7, 1, -17}, // 0x5D ']' + {1421, 9, 9, 11, 1, -16}, // 0x5E '^' + {1432, 15, 1, 13, -1, 4}, // 0x5F '_' + {1434, 5, 4, 6, 1, -17}, // 0x60 '`' + {1437, 12, 13, 13, 1, -12}, // 0x61 'a' + {1457, 12, 18, 13, 1, -17}, // 0x62 'b' + {1484, 10, 13, 12, 1, -12}, // 0x63 'c' + {1501, 11, 18, 13, 1, -17}, // 0x64 'd' + {1526, 11, 13, 13, 1, -12}, // 0x65 'e' + {1544, 5, 18, 7, 1, -17}, // 0x66 'f' + {1556, 11, 18, 13, 1, -12}, // 0x67 'g' + {1581, 10, 18, 13, 1, -17}, // 0x68 'h' + {1604, 2, 18, 5, 2, -17}, // 0x69 'i' + {1609, 4, 23, 6, 0, -17}, // 0x6A 'j' + {1621, 11, 18, 12, 1, -17}, // 0x6B 'k' + {1646, 2, 18, 5, 1, -17}, // 0x6C 'l' + {1651, 17, 13, 19, 1, -12}, // 0x6D 'm' + {1679, 10, 13, 13, 1, -12}, // 0x6E 'n' + {1696, 11, 13, 13, 1, -12}, // 0x6F 'o' + {1714, 12, 17, 13, 1, -12}, // 0x70 'p' + {1740, 11, 17, 13, 1, -12}, // 0x71 'q' + {1764, 6, 13, 8, 1, -12}, // 0x72 'r' + {1774, 10, 13, 12, 1, -12}, // 0x73 's' + {1791, 5, 16, 7, 1, -15}, // 0x74 't' + {1801, 10, 13, 13, 1, -12}, // 0x75 'u' + {1818, 12, 13, 12, 0, -12}, // 0x76 'v' + {1838, 17, 13, 17, 0, -12}, // 0x77 'w' + {1866, 11, 13, 11, 0, -12}, // 0x78 'x' + {1884, 11, 18, 11, 0, -12}, // 0x79 'y' + {1909, 10, 13, 12, 1, -12}, // 0x7A 'z' + {1926, 5, 23, 8, 1, -17}, // 0x7B '{' + {1941, 2, 23, 6, 2, -17}, // 0x7C '|' + {1947, 5, 23, 8, 2, -17}, // 0x7D '}' + {1962, 10, 5, 12, 1, -10}}; // 0x7E '~' + +const GFXfont FreeSans12pt7b PROGMEM = {(uint8_t *)FreeSans12pt7bBitmaps, + (GFXglyph *)FreeSans12pt7bGlyphs, 0x20, + 0x7E, 29}; + +// Approx. 2641 bytes diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSans18pt7b.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSans18pt7b.h new file mode 100644 index 0000000..f3a9606 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSans18pt7b.h @@ -0,0 +1,454 @@ +#pragma once +#include + +const uint8_t FreeSans18pt7bBitmaps[] PROGMEM = { + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE9, 0x20, 0x3F, 0xFC, 0xE3, 0xF1, + 0xF8, 0xFC, 0x7E, 0x3F, 0x1F, 0x8E, 0x82, 0x41, 0x00, 0x01, 0xC3, 0x80, + 0x38, 0x70, 0x06, 0x0E, 0x00, 0xC1, 0x80, 0x38, 0x70, 0x07, 0x0E, 0x0F, + 0xFF, 0xF9, 0xFF, 0xFF, 0x3F, 0xFF, 0xE0, 0xE1, 0xC0, 0x1C, 0x38, 0x03, + 0x87, 0x00, 0x70, 0xE0, 0x0C, 0x18, 0x3F, 0xFF, 0xF7, 0xFF, 0xFE, 0xFF, + 0xFF, 0xC1, 0xC3, 0x80, 0x30, 0x60, 0x06, 0x0C, 0x01, 0xC3, 0x80, 0x38, + 0x70, 0x07, 0x0E, 0x00, 0xC1, 0x80, 0x03, 0x00, 0x0F, 0xC0, 0x3F, 0xF0, + 0x3F, 0xF8, 0x7B, 0x3C, 0xF3, 0x1C, 0xE3, 0x0E, 0xE3, 0x0E, 0xE3, 0x0E, + 0xE3, 0x00, 0xE3, 0x00, 0xF3, 0x00, 0x7B, 0x00, 0x7F, 0x80, 0x1F, 0xF0, + 0x07, 0xFC, 0x03, 0x7E, 0x03, 0x0F, 0x03, 0x07, 0xE3, 0x07, 0xE3, 0x07, + 0xE3, 0x07, 0xE3, 0x0F, 0x73, 0x3E, 0x7F, 0xFC, 0x3F, 0xF8, 0x0F, 0xE0, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x78, 0x00, + 0xE0, 0x0F, 0xF0, 0x06, 0x00, 0xFF, 0xC0, 0x70, 0x07, 0x0E, 0x07, 0x00, + 0x70, 0x38, 0x38, 0x03, 0x00, 0xC3, 0x80, 0x18, 0x06, 0x1C, 0x00, 0xE0, + 0x71, 0xC0, 0x03, 0x87, 0x8C, 0x00, 0x1F, 0xF8, 0xE0, 0x00, 0x7F, 0x86, + 0x00, 0x01, 0xF8, 0x70, 0x00, 0x00, 0x03, 0x03, 0xC0, 0x00, 0x38, 0x7F, + 0x80, 0x01, 0x87, 0xFE, 0x00, 0x1C, 0x38, 0x70, 0x00, 0xC3, 0x81, 0xC0, + 0x0E, 0x18, 0x06, 0x00, 0xE0, 0xC0, 0x30, 0x07, 0x07, 0x03, 0x80, 0x70, + 0x1C, 0x38, 0x03, 0x80, 0xFF, 0xC0, 0x38, 0x03, 0xFC, 0x01, 0x80, 0x07, + 0x80, 0x01, 0xF0, 0x00, 0x7F, 0x80, 0x0F, 0xFC, 0x01, 0xE1, 0xE0, 0x1C, + 0x0E, 0x01, 0xC0, 0xE0, 0x1C, 0x0E, 0x01, 0xE1, 0xE0, 0x0E, 0x3C, 0x00, + 0x77, 0x80, 0x07, 0xF0, 0x00, 0x7C, 0x00, 0x0F, 0xE0, 0x03, 0xCF, 0x1C, + 0x78, 0x79, 0xC7, 0x03, 0xDC, 0xE0, 0x1F, 0x8E, 0x00, 0xF8, 0xE0, 0x0F, + 0x0E, 0x00, 0x70, 0xF0, 0x0F, 0x87, 0xC3, 0xFC, 0x7F, 0xFD, 0xC3, 0xFF, + 0x0E, 0x0F, 0xC0, 0xF0, 0xFF, 0xFF, 0xFA, 0x40, 0x06, 0x06, 0x0C, 0x0C, + 0x18, 0x18, 0x38, 0x30, 0x70, 0x70, 0x70, 0x60, 0xE0, 0xE0, 0xE0, 0xE0, + 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x60, 0x70, 0x70, 0x70, 0x30, 0x38, 0x18, + 0x18, 0x0C, 0x0C, 0x06, 0x03, 0xC0, 0x60, 0x30, 0x30, 0x38, 0x18, 0x1C, + 0x0C, 0x0E, 0x0E, 0x0E, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, + 0x07, 0x07, 0x06, 0x0E, 0x0E, 0x0E, 0x0C, 0x1C, 0x18, 0x38, 0x30, 0x30, + 0x60, 0xC0, 0x0C, 0x03, 0x00, 0xC3, 0xB7, 0xFF, 0xC7, 0x81, 0xE0, 0xEC, + 0x73, 0x88, 0x40, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, + 0x80, 0x01, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x80, 0x01, + 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0xFF, + 0xF6, 0xDA, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0xC0, 0x30, 0x18, + 0x06, 0x01, 0x80, 0xC0, 0x30, 0x0C, 0x06, 0x01, 0x80, 0x60, 0x30, 0x0C, + 0x03, 0x00, 0xC0, 0x60, 0x18, 0x06, 0x03, 0x00, 0xC0, 0x30, 0x18, 0x06, + 0x01, 0x80, 0xC0, 0x30, 0x00, 0x07, 0xE0, 0x0F, 0xF8, 0x1F, 0xFC, 0x3C, + 0x3C, 0x78, 0x1E, 0x70, 0x0E, 0x70, 0x0E, 0xE0, 0x07, 0xE0, 0x07, 0xE0, + 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, + 0x07, 0xE0, 0x07, 0xE0, 0x0F, 0x70, 0x0E, 0x70, 0x0E, 0x78, 0x1E, 0x3C, + 0x3C, 0x1F, 0xF8, 0x1F, 0xF0, 0x07, 0xE0, 0x03, 0x03, 0x07, 0x0F, 0x3F, + 0xFF, 0xFF, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0xE0, 0x1F, 0xF8, + 0x3F, 0xFC, 0x7C, 0x3E, 0x70, 0x0F, 0xF0, 0x0F, 0xE0, 0x07, 0xE0, 0x07, + 0x00, 0x07, 0x00, 0x07, 0x00, 0x0F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0xF8, + 0x03, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x3C, 0x00, 0x38, 0x00, 0x70, 0x00, + 0x60, 0x00, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xF0, + 0x07, 0xFE, 0x07, 0xFF, 0x87, 0x83, 0xC3, 0x80, 0xF3, 0x80, 0x39, 0xC0, + 0x1C, 0xE0, 0x0E, 0x00, 0x07, 0x00, 0x0F, 0x00, 0x7F, 0x00, 0x3F, 0x00, + 0x1F, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x00, 0x03, 0xF0, 0x01, + 0xF8, 0x00, 0xFE, 0x00, 0x77, 0x00, 0x73, 0xE0, 0xF8, 0xFF, 0xF8, 0x3F, + 0xF8, 0x07, 0xF0, 0x00, 0x00, 0x38, 0x00, 0x38, 0x00, 0x78, 0x00, 0xF8, + 0x00, 0xF8, 0x01, 0xF8, 0x03, 0xB8, 0x03, 0x38, 0x07, 0x38, 0x0E, 0x38, + 0x1C, 0x38, 0x18, 0x38, 0x38, 0x38, 0x70, 0x38, 0x60, 0x38, 0xE0, 0x38, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, + 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x1F, 0xFF, 0x0F, 0xFF, 0x8F, 0xFF, + 0xC7, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x39, + 0xF0, 0x3F, 0xFE, 0x1F, 0xFF, 0x8F, 0x83, 0xE7, 0x00, 0xF0, 0x00, 0x3C, + 0x00, 0x0E, 0x00, 0x07, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xFC, 0x00, + 0xEF, 0x00, 0x73, 0xC0, 0xF0, 0xFF, 0xF8, 0x3F, 0xF8, 0x07, 0xE0, 0x00, + 0x03, 0xE0, 0x0F, 0xF8, 0x1F, 0xFC, 0x3C, 0x1E, 0x38, 0x0E, 0x70, 0x0E, + 0x70, 0x00, 0x60, 0x00, 0xE0, 0x00, 0xE3, 0xE0, 0xEF, 0xF8, 0xFF, 0xFC, + 0xFC, 0x3E, 0xF0, 0x0E, 0xF0, 0x0F, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, + 0x60, 0x07, 0x70, 0x0F, 0x70, 0x0E, 0x3C, 0x3E, 0x3F, 0xFC, 0x1F, 0xF8, + 0x07, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x06, 0x00, 0x0E, + 0x00, 0x1C, 0x00, 0x18, 0x00, 0x38, 0x00, 0x70, 0x00, 0x60, 0x00, 0xE0, + 0x00, 0xC0, 0x01, 0xC0, 0x01, 0x80, 0x03, 0x80, 0x03, 0x80, 0x07, 0x00, + 0x07, 0x00, 0x07, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0C, 0x00, + 0x1C, 0x00, 0x1C, 0x00, 0x07, 0xF0, 0x0F, 0xFE, 0x0F, 0xFF, 0x87, 0x83, + 0xC7, 0x80, 0xF3, 0x80, 0x39, 0xC0, 0x1C, 0xE0, 0x0E, 0x78, 0x0F, 0x1E, + 0x0F, 0x07, 0xFF, 0x01, 0xFF, 0x03, 0xFF, 0xE3, 0xE0, 0xF9, 0xC0, 0x1D, + 0xC0, 0x0F, 0xE0, 0x03, 0xF0, 0x01, 0xF8, 0x00, 0xFC, 0x00, 0xF7, 0x00, + 0x73, 0xE0, 0xF8, 0xFF, 0xF8, 0x3F, 0xF8, 0x07, 0xF0, 0x00, 0x07, 0xE0, + 0x1F, 0xF8, 0x3F, 0xFC, 0x7C, 0x3C, 0x70, 0x0E, 0xF0, 0x0E, 0xE0, 0x06, + 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x0F, 0x70, 0x0F, 0x78, 0x3F, + 0x3F, 0xFF, 0x1F, 0xF7, 0x07, 0xC7, 0x00, 0x07, 0x00, 0x06, 0x00, 0x0E, + 0x70, 0x0E, 0x70, 0x1C, 0x78, 0x3C, 0x3F, 0xF8, 0x1F, 0xF0, 0x07, 0xC0, + 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x07, 0xFF, 0x80, 0xFF, 0xF0, 0x00, 0x00, + 0x00, 0x07, 0xFF, 0xB6, 0xD6, 0x00, 0x00, 0x80, 0x03, 0xC0, 0x07, 0xE0, + 0x0F, 0xC0, 0x3F, 0x80, 0x7E, 0x00, 0xFC, 0x01, 0xF0, 0x00, 0xE0, 0x00, + 0x7C, 0x00, 0x1F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x80, 0x07, 0xF0, 0x00, + 0x7E, 0x00, 0x0F, 0x00, 0x01, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x80, 0x80, 0x00, 0x70, 0x00, 0x3E, 0x00, 0x0F, 0xE0, 0x00, 0xFC, + 0x00, 0x1F, 0xC0, 0x03, 0xF8, 0x00, 0x3F, 0x00, 0x07, 0x80, 0x0F, 0xC0, + 0x1F, 0x80, 0x7F, 0x00, 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x01, 0xC0, 0x00, + 0x80, 0x00, 0x00, 0x0F, 0xC0, 0x7F, 0xE1, 0xFF, 0xE3, 0xC3, 0xEF, 0x01, + 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x07, 0x00, 0x0E, 0x00, 0x38, 0x00, 0xF0, + 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x00, 0xE0, 0x03, 0xC0, 0x07, 0x00, 0x0E, + 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC0, 0x03, 0x80, + 0x07, 0x00, 0x0E, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x3F, 0xFF, 0x00, + 0x00, 0xFF, 0xFF, 0xC0, 0x01, 0xF8, 0x0F, 0xE0, 0x03, 0xE0, 0x01, 0xF0, + 0x07, 0x80, 0x00, 0xF8, 0x0F, 0x00, 0x00, 0x3C, 0x1E, 0x00, 0x00, 0x1E, + 0x3C, 0x03, 0xE0, 0x1E, 0x38, 0x0F, 0xF3, 0x8E, 0x78, 0x1E, 0x3F, 0x0F, + 0x70, 0x38, 0x1F, 0x07, 0x70, 0x78, 0x0F, 0x07, 0xE0, 0x70, 0x0E, 0x07, + 0xE0, 0x70, 0x0E, 0x07, 0xE0, 0xE0, 0x0E, 0x07, 0xE0, 0xE0, 0x1C, 0x07, + 0xE0, 0xE0, 0x1C, 0x0E, 0xE0, 0xE0, 0x1C, 0x0E, 0xE0, 0xE0, 0x38, 0x1C, + 0xF0, 0x70, 0x78, 0x3C, 0x70, 0x78, 0xFC, 0x78, 0x78, 0x3F, 0xDF, 0xF0, + 0x38, 0x1F, 0x0F, 0xC0, 0x3C, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, + 0x0F, 0x80, 0x00, 0x00, 0x07, 0xF0, 0x0E, 0x00, 0x01, 0xFF, 0xFE, 0x00, + 0x00, 0x7F, 0xFE, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x03, + 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0x7F, 0x00, 0x01, 0xDC, 0x00, 0x07, 0x78, + 0x00, 0x3C, 0xE0, 0x00, 0xE3, 0x80, 0x03, 0x8F, 0x00, 0x1E, 0x1C, 0x00, + 0x70, 0x70, 0x01, 0xC1, 0xE0, 0x0E, 0x03, 0x80, 0x38, 0x0E, 0x00, 0xE0, + 0x3C, 0x07, 0xFF, 0xF0, 0x1F, 0xFF, 0xE0, 0xFF, 0xFF, 0x83, 0xC0, 0x0E, + 0x0E, 0x00, 0x3C, 0x78, 0x00, 0xF1, 0xE0, 0x01, 0xC7, 0x00, 0x07, 0xBC, + 0x00, 0x1E, 0xF0, 0x00, 0x3B, 0x80, 0x00, 0xF0, 0xFF, 0xFC, 0x1F, 0xFF, + 0xE3, 0xFF, 0xFE, 0x70, 0x03, 0xCE, 0x00, 0x3D, 0xC0, 0x03, 0xB8, 0x00, + 0x77, 0x00, 0x0E, 0xE0, 0x01, 0xDC, 0x00, 0x73, 0x80, 0x1E, 0x7F, 0xFF, + 0x8F, 0xFF, 0xF1, 0xFF, 0xFF, 0x38, 0x00, 0xF7, 0x00, 0x0E, 0xE0, 0x00, + 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x03, + 0xF8, 0x00, 0xF7, 0xFF, 0xFC, 0xFF, 0xFF, 0x1F, 0xFF, 0x80, 0x00, 0xFF, + 0x00, 0x0F, 0xFF, 0x00, 0xFF, 0xFE, 0x07, 0xE0, 0x7C, 0x3E, 0x00, 0x78, + 0xF0, 0x00, 0xE7, 0x80, 0x03, 0xDC, 0x00, 0x07, 0x70, 0x00, 0x03, 0x80, + 0x00, 0x0E, 0x00, 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x03, 0x80, 0x00, + 0x0E, 0x00, 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x1D, 0xC0, 0x00, 0x77, + 0x00, 0x03, 0xDE, 0x00, 0x0E, 0x3C, 0x00, 0x78, 0xF8, 0x03, 0xC1, 0xF8, + 0x1F, 0x03, 0xFF, 0xF8, 0x03, 0xFF, 0xC0, 0x03, 0xF8, 0x00, 0xFF, 0xF8, + 0x0F, 0xFF, 0xE0, 0xFF, 0xFF, 0x0E, 0x00, 0xF8, 0xE0, 0x03, 0xCE, 0x00, + 0x1C, 0xE0, 0x00, 0xEE, 0x00, 0x0E, 0xE0, 0x00, 0xFE, 0x00, 0x07, 0xE0, + 0x00, 0x7E, 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0x07, 0xE0, 0x00, 0x7E, + 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0x0F, 0xE0, 0x00, 0xEE, 0x00, 0x0E, + 0xE0, 0x01, 0xEE, 0x00, 0x3C, 0xE0, 0x0F, 0x8F, 0xFF, 0xF0, 0xFF, 0xFE, + 0x0F, 0xFF, 0x80, 0xFF, 0xFF, 0xBF, 0xFF, 0xEF, 0xFF, 0xFB, 0x80, 0x00, + 0xE0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, 0x38, + 0x00, 0x0E, 0x00, 0x03, 0xFF, 0xFE, 0xFF, 0xFF, 0xBF, 0xFF, 0xEE, 0x00, + 0x03, 0x80, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, + 0xE0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x0E, 0x00, + 0x07, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x38, + 0x00, 0x1F, 0xFF, 0xCF, 0xFF, 0xE7, 0xFF, 0xF3, 0x80, 0x01, 0xC0, 0x00, + 0xE0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, 0x00, + 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x00, 0x00, 0x7F, + 0x80, 0x03, 0xFF, 0xE0, 0x07, 0xFF, 0xF8, 0x0F, 0x80, 0xFC, 0x1E, 0x00, + 0x3E, 0x3C, 0x00, 0x0E, 0x78, 0x00, 0x0F, 0x70, 0x00, 0x07, 0x70, 0x00, + 0x00, 0xE0, 0x00, 0x00, 0xE0, 0x00, 0x00, 0xE0, 0x00, 0x00, 0xE0, 0x03, + 0xFF, 0xE0, 0x03, 0xFF, 0xE0, 0x03, 0xFF, 0xE0, 0x00, 0x07, 0xF0, 0x00, + 0x07, 0x70, 0x00, 0x07, 0x70, 0x00, 0x0F, 0x78, 0x00, 0x0F, 0x3C, 0x00, + 0x1F, 0x1E, 0x00, 0x3F, 0x0F, 0xC0, 0xF7, 0x07, 0xFF, 0xE7, 0x03, 0xFF, + 0xC3, 0x00, 0xFF, 0x03, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, + 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x00, 0x07, 0xE0, + 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xF8, 0x00, 0x3F, 0x00, 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x80, + 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x00, + 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x1C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x1C, 0x00, 0x70, 0x01, 0xC0, 0x07, 0x00, + 0x1C, 0x00, 0x70, 0x01, 0xC0, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x01, 0xC0, + 0x07, 0x00, 0x1C, 0x00, 0x70, 0x01, 0xC0, 0x07, 0x00, 0x1F, 0x80, 0x7E, + 0x01, 0xF8, 0x07, 0xE0, 0x1F, 0xC0, 0xF7, 0x87, 0x9F, 0xFE, 0x3F, 0xF0, + 0x3F, 0x00, 0xE0, 0x01, 0xEE, 0x00, 0x3C, 0xE0, 0x07, 0x8E, 0x00, 0xF0, + 0xE0, 0x1E, 0x0E, 0x03, 0xE0, 0xE0, 0x7C, 0x0E, 0x0F, 0x80, 0xE1, 0xF0, + 0x0E, 0x1E, 0x00, 0xE3, 0xC0, 0x0E, 0x7C, 0x00, 0xEF, 0xE0, 0x0F, 0xCE, + 0x00, 0xF8, 0xF0, 0x0F, 0x07, 0x80, 0xE0, 0x3C, 0x0E, 0x03, 0xC0, 0xE0, + 0x1E, 0x0E, 0x00, 0xF0, 0xE0, 0x0F, 0x0E, 0x00, 0x78, 0xE0, 0x03, 0xCE, + 0x00, 0x3C, 0xE0, 0x01, 0xEE, 0x00, 0x0F, 0xE0, 0x01, 0xC0, 0x03, 0x80, + 0x07, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x01, + 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, + 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, 0x1C, 0x00, + 0x38, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xF8, 0x00, 0x1F, 0xF8, + 0x00, 0x1F, 0xF8, 0x00, 0x1F, 0xFC, 0x00, 0x3F, 0xFC, 0x00, 0x3F, 0xFC, + 0x00, 0x3F, 0xEE, 0x00, 0x77, 0xEE, 0x00, 0x77, 0xEE, 0x00, 0x77, 0xE7, + 0x00, 0xE7, 0xE7, 0x00, 0xE7, 0xE7, 0x00, 0xE7, 0xE3, 0x81, 0xC7, 0xE3, + 0x81, 0xC7, 0xE3, 0x81, 0xC7, 0xE1, 0xC3, 0x87, 0xE1, 0xC3, 0x87, 0xE1, + 0xC3, 0x87, 0xE0, 0xE7, 0x07, 0xE0, 0xE7, 0x07, 0xE0, 0xE7, 0x07, 0xE0, + 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x3C, 0x07, 0xE0, + 0x3C, 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xF8, 0x00, 0x7F, 0xC0, 0x07, + 0xFC, 0x00, 0x7F, 0xE0, 0x07, 0xEF, 0x00, 0x7E, 0x70, 0x07, 0xE7, 0x80, + 0x7E, 0x3C, 0x07, 0xE1, 0xC0, 0x7E, 0x1E, 0x07, 0xE0, 0xE0, 0x7E, 0x0F, + 0x07, 0xE0, 0x78, 0x7E, 0x03, 0x87, 0xE0, 0x3C, 0x7E, 0x01, 0xE7, 0xE0, + 0x0E, 0x7E, 0x00, 0xF7, 0xE0, 0x07, 0xFE, 0x00, 0x3F, 0xE0, 0x03, 0xFE, + 0x00, 0x1F, 0xE0, 0x01, 0xFE, 0x00, 0x0F, 0x00, 0x7F, 0x00, 0x01, 0xFF, + 0xF0, 0x01, 0xFF, 0xFC, 0x01, 0xF0, 0x1F, 0x01, 0xE0, 0x03, 0xC1, 0xE0, + 0x00, 0xF1, 0xE0, 0x00, 0x3C, 0xE0, 0x00, 0x0E, 0x70, 0x00, 0x07, 0x70, + 0x00, 0x03, 0xF8, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3F, + 0x00, 0x00, 0x1F, 0x80, 0x00, 0x0F, 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x03, + 0xB8, 0x00, 0x03, 0x9C, 0x00, 0x01, 0xCF, 0x00, 0x01, 0xE3, 0xC0, 0x01, + 0xE0, 0xF0, 0x01, 0xE0, 0x3E, 0x03, 0xE0, 0x0F, 0xFF, 0xE0, 0x03, 0xFF, + 0xE0, 0x00, 0x3F, 0x80, 0x00, 0xFF, 0xFC, 0x3F, 0xFF, 0x8F, 0xFF, 0xF3, + 0x80, 0x3E, 0xE0, 0x03, 0xF8, 0x00, 0x7E, 0x00, 0x1F, 0x80, 0x07, 0xE0, + 0x01, 0xF8, 0x00, 0x7E, 0x00, 0x3F, 0x80, 0x1E, 0xFF, 0xFF, 0x3F, 0xFF, + 0x8F, 0xFF, 0xC3, 0x80, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, + 0x80, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, + 0x00, 0x38, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x01, 0xFF, 0xF0, 0x01, 0xFF, + 0xFC, 0x01, 0xF0, 0x1F, 0x01, 0xE0, 0x03, 0xC1, 0xE0, 0x00, 0xF1, 0xE0, + 0x00, 0x3C, 0xE0, 0x00, 0x0E, 0x70, 0x00, 0x07, 0x70, 0x00, 0x01, 0xF8, + 0x00, 0x00, 0xFC, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x1F, + 0x80, 0x00, 0x0F, 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x07, 0xB8, 0x00, 0x03, + 0x9C, 0x00, 0x01, 0xCF, 0x00, 0x39, 0xE3, 0xC0, 0x1F, 0xE0, 0xF0, 0x07, + 0xE0, 0x3E, 0x03, 0xF0, 0x0F, 0xFF, 0xFC, 0x03, 0xFF, 0xEE, 0x00, 0x3F, + 0x83, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x20, 0xFF, 0xFE, 0x0F, 0xFF, + 0xF8, 0xFF, 0xFF, 0xCE, 0x00, 0x3C, 0xE0, 0x01, 0xEE, 0x00, 0x0E, 0xE0, + 0x00, 0xEE, 0x00, 0x0E, 0xE0, 0x00, 0xEE, 0x00, 0x0E, 0xE0, 0x01, 0xCE, + 0x00, 0x3C, 0xFF, 0xFF, 0x8F, 0xFF, 0xF0, 0xFF, 0xFF, 0x8E, 0x00, 0x3C, + 0xE0, 0x01, 0xEE, 0x00, 0x0E, 0xE0, 0x00, 0xEE, 0x00, 0x0E, 0xE0, 0x00, + 0xEE, 0x00, 0x0E, 0xE0, 0x00, 0xEE, 0x00, 0x0E, 0xE0, 0x00, 0xFE, 0x00, + 0x0F, 0x03, 0xFC, 0x00, 0xFF, 0xF0, 0x1F, 0xFF, 0x83, 0xE0, 0x7C, 0x38, + 0x01, 0xE7, 0x00, 0x0E, 0x70, 0x00, 0xE7, 0x00, 0x00, 0x70, 0x00, 0x07, + 0x80, 0x00, 0x3E, 0x00, 0x01, 0xFE, 0x00, 0x0F, 0xFE, 0x00, 0x3F, 0xF8, + 0x00, 0x3F, 0xE0, 0x00, 0x3E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0xE0, 0x00, + 0x7E, 0x00, 0x07, 0xF0, 0x00, 0x77, 0x80, 0x0E, 0x7C, 0x03, 0xE3, 0xFF, + 0xFC, 0x1F, 0xFF, 0x80, 0x3F, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x80, 0x70, 0x00, 0x0E, 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x07, + 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0x70, 0x00, 0x0E, + 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, 0x1C, + 0x00, 0x03, 0x80, 0x00, 0x70, 0x00, 0x0E, 0x00, 0x01, 0xC0, 0x00, 0x38, + 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, 0xE0, 0x00, 0xFC, 0x00, + 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, + 0x3F, 0x00, 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, + 0x7E, 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x00, 0x07, 0xE0, 0x00, + 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7F, 0x00, 0x1E, 0xF0, 0x07, + 0x9F, 0x01, 0xF1, 0xFF, 0xFC, 0x1F, 0xFE, 0x00, 0x7F, 0x00, 0xE0, 0x00, + 0x7F, 0x80, 0x03, 0xFC, 0x00, 0x1C, 0xE0, 0x01, 0xE7, 0x80, 0x0F, 0x3C, + 0x00, 0x70, 0xE0, 0x07, 0x87, 0x80, 0x3C, 0x1C, 0x01, 0xC0, 0xE0, 0x0E, + 0x07, 0x80, 0xE0, 0x1C, 0x07, 0x00, 0xE0, 0x38, 0x07, 0x83, 0x80, 0x1C, + 0x1C, 0x00, 0xE0, 0xE0, 0x07, 0x8E, 0x00, 0x1C, 0x70, 0x00, 0xE3, 0x80, + 0x07, 0xB8, 0x00, 0x1D, 0xC0, 0x00, 0xEE, 0x00, 0x07, 0xE0, 0x00, 0x1F, + 0x00, 0x00, 0xF8, 0x00, 0x03, 0x80, 0x00, 0x70, 0x03, 0xC0, 0x0F, 0x70, + 0x03, 0xC0, 0x0F, 0x78, 0x03, 0xE0, 0x0F, 0x78, 0x03, 0xE0, 0x0E, 0x38, + 0x07, 0xE0, 0x0E, 0x38, 0x07, 0xF0, 0x1E, 0x3C, 0x07, 0x70, 0x1E, 0x3C, + 0x07, 0x70, 0x1C, 0x1C, 0x0E, 0x70, 0x1C, 0x1C, 0x0E, 0x38, 0x3C, 0x1C, + 0x0E, 0x38, 0x3C, 0x1E, 0x1E, 0x38, 0x38, 0x0E, 0x1C, 0x38, 0x38, 0x0E, + 0x1C, 0x1C, 0x38, 0x0E, 0x1C, 0x1C, 0x78, 0x0F, 0x3C, 0x1C, 0x70, 0x07, + 0x38, 0x0E, 0x70, 0x07, 0x38, 0x0E, 0x70, 0x07, 0x38, 0x0E, 0x70, 0x07, + 0x70, 0x0E, 0xE0, 0x03, 0xF0, 0x07, 0xE0, 0x03, 0xF0, 0x07, 0xE0, 0x03, + 0xF0, 0x07, 0xE0, 0x03, 0xE0, 0x03, 0xC0, 0x01, 0xE0, 0x03, 0xC0, 0x01, + 0xE0, 0x03, 0xC0, 0xF0, 0x00, 0x7B, 0xC0, 0x07, 0x8F, 0x00, 0x38, 0x78, + 0x03, 0xC1, 0xE0, 0x3C, 0x07, 0x81, 0xC0, 0x3C, 0x1E, 0x00, 0xF1, 0xE0, + 0x03, 0x8E, 0x00, 0x1E, 0xF0, 0x00, 0x7F, 0x00, 0x01, 0xF0, 0x00, 0x0F, + 0x80, 0x00, 0x7C, 0x00, 0x07, 0xF0, 0x00, 0x3B, 0x80, 0x03, 0xDE, 0x00, + 0x3C, 0x78, 0x01, 0xC1, 0xC0, 0x1E, 0x0F, 0x01, 0xE0, 0x3C, 0x0E, 0x00, + 0xE0, 0xF0, 0x07, 0x8F, 0x00, 0x1E, 0x70, 0x00, 0xF7, 0x80, 0x03, 0xC0, + 0xF0, 0x00, 0x3C, 0xF0, 0x00, 0x78, 0xF0, 0x01, 0xE1, 0xE0, 0x03, 0x81, + 0xE0, 0x0F, 0x01, 0xC0, 0x1C, 0x03, 0xC0, 0x78, 0x03, 0xC1, 0xE0, 0x07, + 0x83, 0x80, 0x07, 0x8F, 0x00, 0x07, 0x1C, 0x00, 0x0F, 0x78, 0x00, 0x0E, + 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x70, 0x00, 0x00, 0xE0, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, + 0x00, 0x07, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x38, 0x00, + 0x00, 0x70, 0x00, 0x7F, 0xFF, 0xEF, 0xFF, 0xFD, 0xFF, 0xFF, 0x80, 0x00, + 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, + 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, + 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x7C, 0x00, + 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xF8, 0xE3, 0x8E, 0x38, 0xE3, + 0x8E, 0x38, 0xE3, 0x8E, 0x38, 0xE3, 0x8E, 0x38, 0xE3, 0x8E, 0x38, 0xE3, + 0x8E, 0x38, 0xE3, 0x8F, 0xFF, 0xFC, 0xC0, 0x30, 0x06, 0x01, 0x80, 0x60, + 0x0C, 0x03, 0x00, 0xC0, 0x18, 0x06, 0x01, 0x80, 0x20, 0x0C, 0x03, 0x00, + 0x40, 0x18, 0x06, 0x01, 0x80, 0x30, 0x0C, 0x03, 0x00, 0x60, 0x18, 0x06, + 0x00, 0xC0, 0x30, 0xFF, 0xFF, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, + 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, + 0x1C, 0x7F, 0xFF, 0xFC, 0x07, 0x00, 0x78, 0x03, 0xC0, 0x3F, 0x01, 0xD8, + 0x0C, 0xE0, 0xE3, 0x06, 0x1C, 0x70, 0xE3, 0x83, 0x18, 0x1D, 0xC0, 0x6C, + 0x03, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xF0, 0xF0, 0xE0, 0xE0, + 0xE0, 0x07, 0xF0, 0x0F, 0xFC, 0x0F, 0xFF, 0x0F, 0x03, 0xC7, 0x00, 0xE0, + 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0xFE, 0x0F, 0xFF, 0x1F, 0xF3, + 0x9F, 0x01, 0xCF, 0x00, 0xE7, 0x00, 0x73, 0x80, 0x79, 0xE0, 0xFC, 0x7F, + 0xEF, 0x9F, 0xE3, 0xC7, 0xE1, 0xE0, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, + 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE3, 0xE0, 0xEF, 0xF8, + 0xFF, 0xFC, 0xFC, 0x3E, 0xF8, 0x1E, 0xF0, 0x0E, 0xE0, 0x0F, 0xE0, 0x07, + 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xF0, 0x0E, + 0xF8, 0x1E, 0xFC, 0x3C, 0xEF, 0xFC, 0xEF, 0xF8, 0xE3, 0xE0, 0x07, 0xF0, + 0x1F, 0xF8, 0x3F, 0xFC, 0x3C, 0x1E, 0x78, 0x0E, 0x70, 0x07, 0xE0, 0x00, + 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x07, + 0x70, 0x07, 0x78, 0x0E, 0x7C, 0x1E, 0x3F, 0xFC, 0x1F, 0xF8, 0x07, 0xE0, + 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x38, 0x00, + 0x1C, 0x00, 0x0E, 0x0F, 0xC7, 0x1F, 0xFB, 0x9F, 0xFF, 0xDF, 0x07, 0xEF, + 0x01, 0xF7, 0x00, 0x7F, 0x80, 0x3F, 0x80, 0x0F, 0xC0, 0x07, 0xE0, 0x03, + 0xF0, 0x01, 0xF8, 0x00, 0xFC, 0x00, 0x77, 0x00, 0x7B, 0xC0, 0x7D, 0xF0, + 0x7E, 0x7F, 0xFB, 0x1F, 0xF9, 0x83, 0xF0, 0xC0, 0x07, 0xE0, 0x1F, 0xF8, + 0x3F, 0xFC, 0x7C, 0x1E, 0x70, 0x0E, 0x60, 0x06, 0xE0, 0x07, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0x70, 0x07, + 0x78, 0x0E, 0x3C, 0x1E, 0x3F, 0xFC, 0x1F, 0xF8, 0x07, 0xE0, 0x0E, 0x3C, + 0xF9, 0xC3, 0x87, 0x0E, 0x7F, 0xFF, 0xFC, 0xE1, 0xC3, 0x87, 0x0E, 0x1C, + 0x38, 0x70, 0xE1, 0xC3, 0x87, 0x0E, 0x1C, 0x38, 0x70, 0x07, 0xC7, 0x1F, + 0xF7, 0x3F, 0xFF, 0x3C, 0x3F, 0x78, 0x0F, 0x70, 0x0F, 0xE0, 0x07, 0xE0, + 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0x70, + 0x0F, 0x78, 0x0F, 0x7C, 0x3F, 0x3F, 0xF7, 0x1F, 0xE7, 0x07, 0xC7, 0x00, + 0x07, 0x00, 0x07, 0x00, 0x0E, 0x70, 0x0E, 0x78, 0x1E, 0x3F, 0xFC, 0x1F, + 0xF8, 0x07, 0xE0, 0xE0, 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, + 0x1C, 0x00, 0x38, 0x00, 0x71, 0xF8, 0xE7, 0xFD, 0xDF, 0xFB, 0xF0, 0xFF, + 0xC0, 0xFF, 0x00, 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x07, 0xE0, 0x0F, 0xC0, + 0x1F, 0x80, 0x3F, 0x00, 0x7E, 0x00, 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x07, + 0xE0, 0x0F, 0xC0, 0x1C, 0xFF, 0xF0, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFC, 0x1C, 0x71, 0xC7, 0x00, 0x00, 0x07, 0x1C, 0x71, 0xC7, 0x1C, + 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, + 0x73, 0xFF, 0xFB, 0xC0, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, + 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x3C, 0xE0, 0x78, 0xE0, 0xF0, + 0xE1, 0xE0, 0xE3, 0xC0, 0xE7, 0x80, 0xEF, 0x00, 0xEF, 0x80, 0xFF, 0x80, + 0xFB, 0xC0, 0xF1, 0xE0, 0xE0, 0xE0, 0xE0, 0xF0, 0xE0, 0x70, 0xE0, 0x78, + 0xE0, 0x3C, 0xE0, 0x1C, 0xE0, 0x1E, 0xE0, 0x0E, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xE3, 0xE0, 0xF8, 0xE7, 0xF1, 0xFE, + 0xEF, 0xFB, 0xFE, 0xF8, 0x7F, 0x0F, 0xF0, 0x3E, 0x07, 0xF0, 0x1C, 0x07, + 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, + 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, + 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, + 0xE0, 0x1C, 0x07, 0xE3, 0xF1, 0xCF, 0xFB, 0xBF, 0xF7, 0xE1, 0xFF, 0x81, + 0xFE, 0x01, 0xF8, 0x03, 0xF0, 0x07, 0xE0, 0x0F, 0xC0, 0x1F, 0x80, 0x3F, + 0x00, 0x7E, 0x00, 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x07, 0xE0, 0x0F, 0xC0, + 0x1F, 0x80, 0x38, 0x07, 0xF0, 0x0F, 0xFE, 0x0F, 0xFF, 0x87, 0x83, 0xC7, + 0x80, 0xF3, 0x80, 0x3B, 0x80, 0x1F, 0xC0, 0x07, 0xE0, 0x03, 0xF0, 0x01, + 0xF8, 0x00, 0xFC, 0x00, 0x7E, 0x00, 0x3B, 0x80, 0x39, 0xE0, 0x3C, 0x78, + 0x3C, 0x3F, 0xFE, 0x0F, 0xFE, 0x01, 0xFC, 0x00, 0xE3, 0xE0, 0xE7, 0xF8, + 0xEF, 0xFC, 0xFC, 0x3E, 0xF8, 0x1E, 0xF0, 0x0E, 0xE0, 0x0F, 0xE0, 0x07, + 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xF0, 0x0E, + 0xF8, 0x1E, 0xFC, 0x3E, 0xFF, 0xFC, 0xEF, 0xF8, 0xE3, 0xE0, 0xE0, 0x00, + 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0x07, 0xE1, + 0x8F, 0xFC, 0xCF, 0xFF, 0x67, 0x83, 0xF7, 0x80, 0xFB, 0x80, 0x3F, 0xC0, + 0x1F, 0xC0, 0x07, 0xE0, 0x03, 0xF0, 0x01, 0xF8, 0x00, 0xFC, 0x00, 0x7E, + 0x00, 0x3B, 0x80, 0x3D, 0xE0, 0x3E, 0xF8, 0x3F, 0x3F, 0xFF, 0x8F, 0xFD, + 0xC1, 0xF8, 0xE0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, + 0x07, 0x00, 0x03, 0x80, 0xE3, 0xF7, 0xFB, 0xFF, 0x8F, 0x07, 0x83, 0x81, + 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, + 0x38, 0x00, 0x0F, 0xC0, 0xFF, 0x87, 0xFF, 0x3C, 0x1E, 0xE0, 0x3B, 0x80, + 0x0E, 0x00, 0x3C, 0x00, 0x7F, 0x00, 0xFF, 0x80, 0xFF, 0x80, 0x7F, 0x00, + 0x3F, 0x80, 0x7E, 0x01, 0xFC, 0x1F, 0x7F, 0xF8, 0xFF, 0xC1, 0xFC, 0x00, + 0x38, 0x70, 0xE1, 0xCF, 0xFF, 0xFF, 0x9C, 0x38, 0x70, 0xE1, 0xC3, 0x87, + 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xC3, 0xE7, 0xC7, 0x80, 0xE0, 0x0F, 0xC0, + 0x1F, 0x80, 0x3F, 0x00, 0x7E, 0x00, 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x07, + 0xE0, 0x0F, 0xC0, 0x1F, 0x80, 0x3F, 0x00, 0x7E, 0x00, 0xFC, 0x03, 0xFC, + 0x0F, 0xFC, 0x3F, 0x7F, 0xEE, 0xFF, 0x9C, 0x7E, 0x38, 0x70, 0x03, 0xB8, + 0x03, 0x9C, 0x01, 0xC7, 0x00, 0xE3, 0x80, 0xE1, 0xC0, 0x70, 0x70, 0x38, + 0x38, 0x38, 0x1C, 0x1C, 0x07, 0x0E, 0x03, 0x8E, 0x01, 0xC7, 0x00, 0x77, + 0x00, 0x3B, 0x80, 0x1D, 0xC0, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, + 0x70, 0x00, 0xF0, 0x1C, 0x03, 0xB8, 0x1F, 0x03, 0xDC, 0x0F, 0x81, 0xCE, + 0x07, 0xC0, 0xE7, 0x83, 0xE0, 0x71, 0xC3, 0xB8, 0x70, 0xE1, 0xDC, 0x38, + 0x70, 0xEE, 0x1C, 0x1C, 0x63, 0x0E, 0x0E, 0x71, 0xCE, 0x07, 0x38, 0xE7, + 0x03, 0x9C, 0x73, 0x80, 0xEC, 0x19, 0x80, 0x7E, 0x0F, 0xC0, 0x3F, 0x07, + 0xE0, 0x0F, 0x83, 0xF0, 0x07, 0x80, 0xF0, 0x03, 0xC0, 0x78, 0x01, 0xE0, + 0x3C, 0x00, 0x70, 0x07, 0x38, 0x0E, 0x3C, 0x1C, 0x1C, 0x1C, 0x0E, 0x38, + 0x0F, 0x70, 0x07, 0x70, 0x03, 0xE0, 0x03, 0xC0, 0x01, 0xC0, 0x03, 0xE0, + 0x07, 0xE0, 0x07, 0x70, 0x0E, 0x78, 0x1E, 0x38, 0x1C, 0x1C, 0x38, 0x1E, + 0x78, 0x0E, 0x70, 0x07, 0x70, 0x07, 0x38, 0x03, 0x9C, 0x01, 0xC7, 0x01, + 0xC3, 0x80, 0xE1, 0xC0, 0x70, 0x70, 0x70, 0x38, 0x38, 0x1C, 0x3C, 0x07, + 0x1C, 0x03, 0x8E, 0x01, 0xCE, 0x00, 0x77, 0x00, 0x3B, 0x80, 0x1F, 0x80, + 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xE0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x38, + 0x00, 0x1C, 0x00, 0x1E, 0x00, 0x0E, 0x00, 0x3F, 0x00, 0x1F, 0x00, 0x0F, + 0x00, 0x00, 0x7F, 0xFC, 0xFF, 0xF9, 0xFF, 0xF0, 0x00, 0xE0, 0x03, 0x80, + 0x0E, 0x00, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x1C, 0x00, 0x70, + 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xF8, 0x07, 0x0F, 0x1F, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, + 0x1C, 0x1C, 0x1C, 0x1C, 0x38, 0xF8, 0xE0, 0xF8, 0x38, 0x1C, 0x1C, 0x1C, + 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1F, 0x0F, 0x07, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xE0, 0xF0, 0xF8, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x1C, 0x1F, + 0x07, 0x1F, 0x1C, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x38, 0xF8, 0xF0, 0xE0, 0x38, 0x00, 0xFC, 0x03, 0xFC, 0x1F, 0x3E, + 0x3C, 0x1F, 0xE0, 0x1F, 0x80, 0x1E, 0x00}; + +const GFXglyph FreeSans18pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 9, 0, 1}, // 0x20 ' ' + {0, 3, 26, 12, 4, -25}, // 0x21 '!' + {10, 9, 9, 12, 1, -24}, // 0x22 '"' + {21, 19, 24, 19, 0, -23}, // 0x23 '#' + {78, 16, 30, 19, 2, -26}, // 0x24 '$' + {138, 29, 25, 31, 1, -24}, // 0x25 '%' + {229, 20, 25, 23, 2, -24}, // 0x26 '&' + {292, 3, 9, 7, 2, -24}, // 0x27 ''' + {296, 8, 33, 12, 3, -25}, // 0x28 '(' + {329, 8, 33, 12, 1, -25}, // 0x29 ')' + {362, 10, 10, 14, 2, -25}, // 0x2A '*' + {375, 16, 16, 20, 2, -15}, // 0x2B '+' + {407, 3, 9, 10, 3, -3}, // 0x2C ',' + {411, 8, 3, 12, 2, -10}, // 0x2D '-' + {414, 3, 4, 9, 3, -3}, // 0x2E '.' + {416, 10, 26, 10, 0, -25}, // 0x2F '/' + {449, 16, 25, 19, 2, -24}, // 0x30 '0' + {499, 8, 25, 19, 4, -24}, // 0x31 '1' + {524, 16, 25, 19, 2, -24}, // 0x32 '2' + {574, 17, 25, 19, 1, -24}, // 0x33 '3' + {628, 16, 25, 19, 1, -24}, // 0x34 '4' + {678, 17, 25, 19, 1, -24}, // 0x35 '5' + {732, 16, 25, 19, 2, -24}, // 0x36 '6' + {782, 16, 25, 19, 2, -24}, // 0x37 '7' + {832, 17, 25, 19, 1, -24}, // 0x38 '8' + {886, 16, 25, 19, 1, -24}, // 0x39 '9' + {936, 3, 19, 9, 3, -18}, // 0x3A ':' + {944, 3, 24, 9, 3, -18}, // 0x3B ';' + {953, 17, 17, 20, 2, -16}, // 0x3C '<' + {990, 17, 9, 20, 2, -12}, // 0x3D '=' + {1010, 17, 17, 20, 2, -16}, // 0x3E '>' + {1047, 15, 26, 19, 3, -25}, // 0x3F '?' + {1096, 32, 31, 36, 1, -25}, // 0x40 '@' + {1220, 22, 26, 23, 1, -25}, // 0x41 'A' + {1292, 19, 26, 23, 3, -25}, // 0x42 'B' + {1354, 22, 26, 25, 1, -25}, // 0x43 'C' + {1426, 20, 26, 24, 3, -25}, // 0x44 'D' + {1491, 18, 26, 22, 3, -25}, // 0x45 'E' + {1550, 17, 26, 21, 3, -25}, // 0x46 'F' + {1606, 24, 26, 27, 1, -25}, // 0x47 'G' + {1684, 19, 26, 25, 3, -25}, // 0x48 'H' + {1746, 3, 26, 10, 4, -25}, // 0x49 'I' + {1756, 14, 26, 18, 1, -25}, // 0x4A 'J' + {1802, 20, 26, 24, 3, -25}, // 0x4B 'K' + {1867, 15, 26, 20, 3, -25}, // 0x4C 'L' + {1916, 24, 26, 30, 3, -25}, // 0x4D 'M' + {1994, 20, 26, 26, 3, -25}, // 0x4E 'N' + {2059, 25, 26, 27, 1, -25}, // 0x4F 'O' + {2141, 18, 26, 23, 3, -25}, // 0x50 'P' + {2200, 25, 28, 27, 1, -25}, // 0x51 'Q' + {2288, 20, 26, 25, 3, -25}, // 0x52 'R' + {2353, 20, 26, 23, 1, -25}, // 0x53 'S' + {2418, 19, 26, 22, 1, -25}, // 0x54 'T' + {2480, 19, 26, 25, 3, -25}, // 0x55 'U' + {2542, 21, 26, 23, 1, -25}, // 0x56 'V' + {2611, 32, 26, 33, 0, -25}, // 0x57 'W' + {2715, 21, 26, 23, 1, -25}, // 0x58 'X' + {2784, 23, 26, 24, 0, -25}, // 0x59 'Y' + {2859, 19, 26, 22, 1, -25}, // 0x5A 'Z' + {2921, 6, 33, 10, 2, -25}, // 0x5B '[' + {2946, 10, 26, 10, 0, -25}, // 0x5C '\' + {2979, 6, 33, 10, 1, -25}, // 0x5D ']' + {3004, 13, 13, 16, 2, -24}, // 0x5E '^' + {3026, 21, 2, 19, -1, 5}, // 0x5F '_' + {3032, 7, 5, 9, 1, -25}, // 0x60 '`' + {3037, 17, 19, 19, 1, -18}, // 0x61 'a' + {3078, 16, 26, 20, 2, -25}, // 0x62 'b' + {3130, 16, 19, 18, 1, -18}, // 0x63 'c' + {3168, 17, 26, 20, 1, -25}, // 0x64 'd' + {3224, 16, 19, 19, 1, -18}, // 0x65 'e' + {3262, 7, 26, 10, 1, -25}, // 0x66 'f' + {3285, 16, 27, 19, 1, -18}, // 0x67 'g' + {3339, 15, 26, 19, 2, -25}, // 0x68 'h' + {3388, 3, 26, 8, 2, -25}, // 0x69 'i' + {3398, 6, 34, 9, 0, -25}, // 0x6A 'j' + {3424, 16, 26, 18, 2, -25}, // 0x6B 'k' + {3476, 3, 26, 7, 2, -25}, // 0x6C 'l' + {3486, 24, 19, 28, 2, -18}, // 0x6D 'm' + {3543, 15, 19, 19, 2, -18}, // 0x6E 'n' + {3579, 17, 19, 19, 1, -18}, // 0x6F 'o' + {3620, 16, 25, 20, 2, -18}, // 0x70 'p' + {3670, 17, 25, 20, 1, -18}, // 0x71 'q' + {3724, 9, 19, 12, 2, -18}, // 0x72 'r' + {3746, 14, 19, 17, 2, -18}, // 0x73 's' + {3780, 7, 23, 10, 1, -22}, // 0x74 't' + {3801, 15, 19, 19, 2, -18}, // 0x75 'u' + {3837, 17, 19, 17, 0, -18}, // 0x76 'v' + {3878, 25, 19, 25, 0, -18}, // 0x77 'w' + {3938, 16, 19, 17, 0, -18}, // 0x78 'x' + {3976, 17, 27, 17, 0, -18}, // 0x79 'y' + {4034, 15, 19, 17, 1, -18}, // 0x7A 'z' + {4070, 8, 33, 12, 1, -25}, // 0x7B '{' + {4103, 2, 33, 9, 3, -25}, // 0x7C '|' + {4112, 8, 33, 12, 3, -25}, // 0x7D '}' + {4145, 15, 7, 18, 1, -15}}; // 0x7E '~' + +const GFXfont FreeSans18pt7b PROGMEM = {(uint8_t *)FreeSans18pt7bBitmaps, + (GFXglyph *)FreeSans18pt7bGlyphs, 0x20, + 0x7E, 42}; + +// Approx. 4831 bytes diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSans24pt7b.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSans24pt7b.h new file mode 100644 index 0000000..3559530 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSans24pt7b.h @@ -0,0 +1,729 @@ +#pragma once +#include + +const uint8_t FreeSans24pt7bBitmaps[] PROGMEM = { + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x76, 0x66, + 0x66, 0x00, 0x0F, 0xFF, 0xFF, 0xF1, 0xFE, 0x3F, 0xC7, 0xF8, 0xFF, 0x1F, + 0xE3, 0xFC, 0x7F, 0x8F, 0xF1, 0xEC, 0x19, 0x83, 0x30, 0x60, 0x00, 0x70, + 0x3C, 0x00, 0x70, 0x3C, 0x00, 0xF0, 0x38, 0x00, 0xF0, 0x38, 0x00, 0xF0, + 0x78, 0x00, 0xE0, 0x78, 0x00, 0xE0, 0x78, 0x01, 0xE0, 0x70, 0x01, 0xE0, + 0x70, 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x03, 0xC0, + 0xE0, 0x03, 0xC0, 0xE0, 0x03, 0xC0, 0xE0, 0x03, 0x81, 0xE0, 0x03, 0x81, + 0xE0, 0x03, 0x81, 0xE0, 0x07, 0x81, 0xC0, 0x07, 0x81, 0xC0, 0xFF, 0xFF, + 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0x0F, 0x03, 0x80, 0x0F, 0x03, + 0x80, 0x0F, 0x07, 0x80, 0x0E, 0x07, 0x80, 0x0E, 0x07, 0x80, 0x1E, 0x07, + 0x00, 0x1E, 0x07, 0x00, 0x1E, 0x07, 0x00, 0x1C, 0x0F, 0x00, 0x1C, 0x0F, + 0x00, 0x00, 0x38, 0x00, 0x01, 0xFC, 0x00, 0x1F, 0xFE, 0x00, 0x7F, 0xFE, + 0x01, 0xFF, 0xFE, 0x07, 0xE7, 0x3E, 0x0F, 0x8E, 0x3C, 0x3E, 0x1C, 0x3C, + 0x78, 0x38, 0x38, 0xF0, 0x70, 0x71, 0xE0, 0xE0, 0xE3, 0xC1, 0xC0, 0x07, + 0x83, 0x80, 0x0F, 0x87, 0x00, 0x0F, 0x8E, 0x00, 0x1F, 0xDC, 0x00, 0x1F, + 0xF8, 0x00, 0x1F, 0xFF, 0x00, 0x0F, 0xFF, 0x80, 0x07, 0xFF, 0x80, 0x03, + 0xFF, 0x80, 0x07, 0x1F, 0x80, 0x0E, 0x1F, 0x00, 0x1C, 0x1F, 0x00, 0x38, + 0x1F, 0xC0, 0x70, 0x3F, 0x80, 0xE0, 0x7F, 0x81, 0xC0, 0xFF, 0x03, 0x81, + 0xEF, 0x07, 0x07, 0x9F, 0x0E, 0x0F, 0x3E, 0x1C, 0x3E, 0x3F, 0x39, 0xF8, + 0x3F, 0xFF, 0xE0, 0x3F, 0xFF, 0x00, 0x0F, 0xF8, 0x00, 0x03, 0x80, 0x00, + 0x07, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x00, 0x00, 0x1C, 0x00, 0x0F, 0xC0, 0x00, 0x78, 0x00, 0x3F, 0xE0, 0x00, + 0xE0, 0x01, 0xFF, 0xE0, 0x03, 0x80, 0x03, 0xFF, 0xE0, 0x07, 0x00, 0x0F, + 0x87, 0xC0, 0x1C, 0x00, 0x3C, 0x03, 0xC0, 0x38, 0x00, 0x70, 0x03, 0x80, + 0xE0, 0x00, 0xE0, 0x07, 0x03, 0xC0, 0x01, 0xC0, 0x0E, 0x07, 0x00, 0x03, + 0x80, 0x1C, 0x1E, 0x00, 0x07, 0x80, 0x78, 0x38, 0x00, 0x07, 0xC3, 0xE0, + 0xF0, 0x00, 0x07, 0xFF, 0xC1, 0xC0, 0x00, 0x0F, 0xFF, 0x07, 0x80, 0x00, + 0x0F, 0xFC, 0x0E, 0x00, 0x00, 0x07, 0xE0, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x01, 0xC0, 0x3F, 0x00, 0x00, 0x03, 0x80, 0xFF, + 0x80, 0x00, 0x0E, 0x07, 0xFF, 0x80, 0x00, 0x3C, 0x0F, 0xFF, 0x80, 0x00, + 0x70, 0x3E, 0x1F, 0x00, 0x01, 0xE0, 0xF0, 0x0F, 0x00, 0x03, 0x81, 0xC0, + 0x0E, 0x00, 0x0F, 0x03, 0x80, 0x1C, 0x00, 0x1C, 0x07, 0x00, 0x38, 0x00, + 0x78, 0x0E, 0x00, 0x70, 0x00, 0xE0, 0x1E, 0x01, 0xE0, 0x03, 0x80, 0x1F, + 0x0F, 0x80, 0x07, 0x00, 0x1F, 0xFF, 0x00, 0x1C, 0x00, 0x3F, 0xFC, 0x00, + 0x38, 0x00, 0x1F, 0xF0, 0x00, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0x7E, 0x00, + 0x00, 0x1F, 0xF0, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x7F, 0xFC, 0x00, 0x07, + 0xC3, 0xC0, 0x00, 0xF8, 0x1E, 0x00, 0x0F, 0x00, 0xE0, 0x00, 0xF0, 0x0E, + 0x00, 0x0F, 0x00, 0xE0, 0x00, 0xF0, 0x0E, 0x00, 0x07, 0x81, 0xE0, 0x00, + 0x7C, 0x3C, 0x00, 0x03, 0xEF, 0x80, 0x00, 0x1F, 0xF0, 0x00, 0x01, 0xFE, + 0x00, 0x00, 0x1F, 0x80, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0xE0, 0x00, + 0x1F, 0x1E, 0x07, 0x83, 0xE0, 0xF0, 0x78, 0x7C, 0x0F, 0x8F, 0x87, 0x80, + 0x7C, 0xF0, 0xF0, 0x03, 0xFF, 0x0F, 0x00, 0x1F, 0xE0, 0xF0, 0x00, 0xFE, + 0x0F, 0x00, 0x0F, 0xC0, 0xF0, 0x00, 0x7E, 0x0F, 0x80, 0x0F, 0xF0, 0x7C, + 0x01, 0xFF, 0x07, 0xF0, 0x7D, 0xF8, 0x3F, 0xFF, 0x8F, 0xC1, 0xFF, 0xF0, + 0x7E, 0x0F, 0xFE, 0x03, 0xE0, 0x3F, 0x80, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF6, 0x66, 0x01, 0xC0, 0x70, 0x38, 0x1C, 0x07, 0x03, 0xC0, 0xE0, 0x78, + 0x1C, 0x07, 0x03, 0xC0, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x70, 0x3C, + 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, + 0xC0, 0x70, 0x1E, 0x07, 0x81, 0xE0, 0x38, 0x0F, 0x03, 0xC0, 0x70, 0x1E, + 0x03, 0x80, 0xE0, 0x1C, 0x07, 0x00, 0xE0, 0x18, 0x07, 0xE0, 0x38, 0x07, + 0x01, 0xC0, 0x38, 0x0F, 0x01, 0xC0, 0x78, 0x0E, 0x03, 0x80, 0xF0, 0x1C, + 0x07, 0x01, 0xE0, 0x78, 0x1E, 0x03, 0x80, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, + 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x07, 0x81, 0xE0, 0x78, + 0x1E, 0x07, 0x03, 0xC0, 0xF0, 0x38, 0x1E, 0x07, 0x01, 0xC0, 0xE0, 0x38, + 0x1C, 0x06, 0x03, 0x80, 0x03, 0x00, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x63, + 0x1B, 0xFF, 0xFF, 0xFF, 0xC3, 0xF0, 0x07, 0x80, 0x3F, 0x01, 0xCE, 0x07, + 0x3C, 0x38, 0x70, 0x21, 0x00, 0x00, 0x38, 0x00, 0x00, 0x70, 0x00, 0x00, + 0xE0, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, 0x00, 0x07, 0x00, 0x00, 0x0E, + 0x00, 0x00, 0x1C, 0x00, 0x00, 0x38, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x07, 0x00, 0x00, 0x0E, 0x00, + 0x00, 0x1C, 0x00, 0x00, 0x38, 0x00, 0x00, 0x70, 0x00, 0x00, 0xE0, 0x00, + 0x01, 0xC0, 0x00, 0x03, 0x80, 0x00, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xF3, + 0x33, 0x36, 0xEC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xF0, + 0x00, 0x38, 0x01, 0xC0, 0x0C, 0x00, 0xE0, 0x07, 0x00, 0x30, 0x03, 0x80, + 0x1C, 0x00, 0xC0, 0x06, 0x00, 0x70, 0x03, 0x80, 0x18, 0x01, 0xC0, 0x0E, + 0x00, 0x60, 0x03, 0x00, 0x38, 0x01, 0x80, 0x0C, 0x00, 0xE0, 0x07, 0x00, + 0x30, 0x03, 0x80, 0x1C, 0x00, 0xC0, 0x06, 0x00, 0x70, 0x03, 0x80, 0x18, + 0x01, 0xC0, 0x0E, 0x00, 0x60, 0x07, 0x00, 0x38, 0x00, 0x00, 0xFC, 0x00, + 0x0F, 0xFC, 0x00, 0xFF, 0xFC, 0x07, 0xFF, 0xF8, 0x1F, 0x87, 0xE0, 0xF8, + 0x07, 0xC3, 0xC0, 0x0F, 0x1F, 0x00, 0x3E, 0x78, 0x00, 0x79, 0xE0, 0x01, + 0xE7, 0x80, 0x07, 0xBC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, + 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0x00, + 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0x00, 0x03, + 0xDE, 0x00, 0x1E, 0x78, 0x00, 0x79, 0xE0, 0x01, 0xE7, 0xC0, 0x0F, 0x8F, + 0x00, 0x3C, 0x3E, 0x01, 0xF0, 0x7C, 0x1F, 0x81, 0xFF, 0xFE, 0x03, 0xFF, + 0xF0, 0x03, 0xFF, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x60, 0x1C, 0x03, 0x80, + 0xF0, 0x3E, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x3C, 0x07, 0x80, 0xF0, + 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, + 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, + 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x01, 0xFE, 0x00, 0x1F, 0xFE, 0x01, 0xFF, + 0xFE, 0x0F, 0xFF, 0xFC, 0x3F, 0x03, 0xF9, 0xF0, 0x03, 0xE7, 0x80, 0x07, + 0xFE, 0x00, 0x1F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0x00, 0x03, 0xC0, + 0x00, 0x0F, 0x00, 0x00, 0x7C, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, + 0x7C, 0x00, 0x07, 0xF0, 0x00, 0x7F, 0x80, 0x07, 0xF8, 0x00, 0x3F, 0xC0, + 0x03, 0xFC, 0x00, 0x1F, 0xC0, 0x00, 0xFC, 0x00, 0x07, 0xC0, 0x00, 0x3E, + 0x00, 0x00, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1C, 0x00, 0x00, 0x70, 0x00, + 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, + 0x00, 0xFE, 0x00, 0x0F, 0xFF, 0x80, 0x3F, 0xFF, 0x80, 0xFF, 0xFF, 0x83, + 0xF0, 0x1F, 0x87, 0xC0, 0x1F, 0x1F, 0x00, 0x1F, 0x3C, 0x00, 0x1E, 0x78, + 0x00, 0x3C, 0xF0, 0x00, 0x78, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, + 0x07, 0x80, 0x00, 0x7F, 0x00, 0x1F, 0xFC, 0x00, 0x3F, 0xE0, 0x00, 0x7F, + 0xE0, 0x00, 0xFF, 0xF0, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x03, + 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x0F, 0xF0, 0x00, 0x1F, + 0xE0, 0x00, 0x3F, 0xE0, 0x00, 0xFB, 0xC0, 0x01, 0xE7, 0xC0, 0x07, 0xC7, + 0xE0, 0x3F, 0x0F, 0xFF, 0xFE, 0x0F, 0xFF, 0xF8, 0x07, 0xFF, 0xC0, 0x03, + 0xFC, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x1F, 0x00, 0x00, + 0x7E, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xF8, 0x00, 0x0F, 0xF0, 0x00, 0x3F, + 0xE0, 0x00, 0x7B, 0xC0, 0x01, 0xE7, 0x80, 0x07, 0x8F, 0x00, 0x0F, 0x1E, + 0x00, 0x3C, 0x3C, 0x00, 0xF0, 0x78, 0x03, 0xC0, 0xF0, 0x07, 0x81, 0xE0, + 0x1E, 0x03, 0xC0, 0x78, 0x07, 0x81, 0xE0, 0x0F, 0x03, 0xC0, 0x1E, 0x0F, + 0x00, 0x3C, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0x00, 0x07, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, 0x00, + 0x3C, 0x00, 0x00, 0x78, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x03, + 0xC0, 0x1F, 0xFF, 0xF0, 0x7F, 0xFF, 0xC1, 0xFF, 0xFF, 0x07, 0xFF, 0xFC, + 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x1F, 0x3F, 0x80, 0x7B, 0xFF, + 0x81, 0xFF, 0xFF, 0x07, 0xFF, 0xFE, 0x1F, 0x80, 0xFC, 0x78, 0x01, 0xF8, + 0x00, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, + 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3F, 0xC0, 0x00, + 0xFF, 0x80, 0x07, 0x9E, 0x00, 0x1E, 0x7C, 0x00, 0xF1, 0xFC, 0x0F, 0xC3, + 0xFF, 0xFE, 0x07, 0xFF, 0xF0, 0x0F, 0xFF, 0x80, 0x07, 0xF0, 0x00, 0x00, + 0xFE, 0x00, 0x0F, 0xFE, 0x00, 0x7F, 0xFC, 0x03, 0xFF, 0xF8, 0x1F, 0x83, + 0xF0, 0xF8, 0x07, 0xC3, 0xC0, 0x0F, 0x8F, 0x00, 0x1E, 0x78, 0x00, 0x79, + 0xE0, 0x00, 0x07, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xF0, 0xFE, 0x03, 0xCF, + 0xFE, 0x0F, 0x7F, 0xFE, 0x3F, 0xFF, 0xFC, 0xFF, 0x03, 0xF3, 0xF0, 0x03, + 0xEF, 0x80, 0x07, 0xBE, 0x00, 0x1F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, + 0x00, 0x03, 0xFC, 0x00, 0x0F, 0x70, 0x00, 0x3D, 0xC0, 0x00, 0xF7, 0x80, + 0x07, 0x9F, 0x00, 0x3E, 0x3E, 0x00, 0xF8, 0xFC, 0x0F, 0xC1, 0xFF, 0xFE, + 0x03, 0xFF, 0xF0, 0x07, 0xFF, 0x80, 0x07, 0xF8, 0x00, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x07, 0x00, 0x00, + 0x78, 0x00, 0x07, 0x80, 0x00, 0x38, 0x00, 0x03, 0xC0, 0x00, 0x3C, 0x00, + 0x01, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x70, + 0x00, 0x07, 0x80, 0x00, 0x38, 0x00, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x01, + 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x38, 0x00, + 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, + 0x00, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, + 0x01, 0xFE, 0x00, 0x1F, 0xFE, 0x00, 0xFF, 0xFC, 0x07, 0xFF, 0xF8, 0x3F, + 0x03, 0xF1, 0xF0, 0x03, 0xC7, 0xC0, 0x0F, 0x9E, 0x00, 0x1E, 0x78, 0x00, + 0x79, 0xE0, 0x01, 0xE7, 0x80, 0x0F, 0x8F, 0x00, 0x3C, 0x3F, 0x03, 0xF0, + 0x7F, 0xFF, 0x80, 0x7F, 0xF8, 0x03, 0xFF, 0xF0, 0x1F, 0xFF, 0xE0, 0xFC, + 0x0F, 0xC7, 0xC0, 0x0F, 0x9E, 0x00, 0x1E, 0xF8, 0x00, 0x7F, 0xC0, 0x00, + 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, + 0x80, 0x07, 0xDE, 0x00, 0x1E, 0x7C, 0x00, 0xF8, 0xFC, 0x0F, 0xC3, 0xFF, + 0xFF, 0x07, 0xFF, 0xF8, 0x07, 0xFF, 0x80, 0x07, 0xF8, 0x00, 0x01, 0xFC, + 0x00, 0x3F, 0xF8, 0x03, 0xFF, 0xE0, 0x3F, 0xFF, 0x83, 0xF0, 0x7E, 0x3E, + 0x00, 0xF1, 0xE0, 0x07, 0xCF, 0x00, 0x1E, 0xF0, 0x00, 0x77, 0x80, 0x03, + 0xBC, 0x00, 0x1F, 0xE0, 0x00, 0xFF, 0x00, 0x07, 0xF8, 0x00, 0x3F, 0xE0, + 0x03, 0xEF, 0x00, 0x1F, 0x7C, 0x01, 0xF9, 0xF8, 0x3F, 0xCF, 0xFF, 0xFE, + 0x3F, 0xFE, 0xF0, 0xFF, 0xE7, 0x80, 0xFC, 0x3C, 0x00, 0x01, 0xE0, 0x00, + 0x0E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x9E, 0x00, 0x3C, 0xF0, 0x03, 0xC7, + 0xC0, 0x3E, 0x1F, 0x03, 0xE0, 0xFF, 0xFE, 0x03, 0xFF, 0xE0, 0x0F, 0xFE, + 0x00, 0x1F, 0xC0, 0x00, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xF3, 0x33, 0x36, 0xEC, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1C, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x7F, 0xC0, + 0x03, 0xFC, 0x00, 0x3F, 0xE0, 0x01, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, + 0x80, 0x03, 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0xE0, 0x00, 0x0F, 0xF0, + 0x00, 0x07, 0xFC, 0x00, 0x03, 0xFE, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x7F, + 0xC0, 0x00, 0x3F, 0xE0, 0x00, 0x0F, 0xF0, 0x00, 0x07, 0xE0, 0x00, 0x01, + 0xC0, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xF0, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x03, 0xF0, 0x00, 0x07, + 0xF8, 0x00, 0x03, 0xFC, 0x00, 0x01, 0xFF, 0x00, 0x00, 0xFF, 0x80, 0x00, + 0x3F, 0xC0, 0x00, 0x1F, 0xF0, 0x00, 0x07, 0xF8, 0x00, 0x03, 0xF8, 0x00, + 0x01, 0xF0, 0x00, 0x07, 0xE0, 0x00, 0x3F, 0xC0, 0x03, 0xFC, 0x00, 0x1F, + 0xE0, 0x01, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x80, 0x07, 0xFC, 0x00, + 0x0F, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x03, 0xF8, + 0x00, 0xFF, 0xF0, 0x1F, 0xFF, 0x83, 0xFF, 0xFC, 0x7E, 0x0F, 0xE7, 0x80, + 0x3E, 0x78, 0x01, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, + 0x00, 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xE0, 0x00, 0x3E, 0x00, 0x07, 0xC0, + 0x00, 0xF8, 0x00, 0x3F, 0x00, 0x07, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, + 0x01, 0xF0, 0x00, 0x1E, 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, 0xE0, + 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, + 0xE0, 0x00, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xC0, + 0x00, 0x00, 0x3F, 0xFF, 0xFE, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xF0, 0x00, + 0x07, 0xFC, 0x03, 0xFF, 0x00, 0x01, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x7E, + 0x00, 0x00, 0x7F, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xF0, 0x07, 0xC0, 0x00, + 0x00, 0x3F, 0x01, 0xF0, 0x00, 0x00, 0x03, 0xF0, 0x3C, 0x00, 0x7E, 0x00, + 0x3E, 0x0F, 0x00, 0x3F, 0xE3, 0xC3, 0xE3, 0xE0, 0x1F, 0xFE, 0x78, 0x3C, + 0x78, 0x07, 0xE1, 0xFF, 0x07, 0xDF, 0x01, 0xF0, 0x1F, 0xC0, 0xFB, 0xC0, + 0x7C, 0x01, 0xF8, 0x0F, 0x78, 0x0F, 0x00, 0x3F, 0x01, 0xEF, 0x03, 0xC0, + 0x07, 0xC0, 0x3F, 0xC0, 0x78, 0x00, 0xF8, 0x07, 0xF8, 0x0F, 0x00, 0x1F, + 0x00, 0xFF, 0x03, 0xC0, 0x03, 0xC0, 0x1F, 0xE0, 0x78, 0x00, 0x78, 0x07, + 0xFC, 0x0F, 0x00, 0x1F, 0x00, 0xF7, 0x81, 0xE0, 0x03, 0xC0, 0x1E, 0xF0, + 0x3C, 0x00, 0x78, 0x07, 0x9E, 0x07, 0x80, 0x1F, 0x01, 0xF3, 0xE0, 0xF8, + 0x07, 0xC0, 0x3C, 0x3C, 0x0F, 0x81, 0xF8, 0x0F, 0x87, 0x81, 0xF8, 0x7F, + 0x87, 0xE0, 0xF8, 0x1F, 0xFE, 0xFF, 0xF8, 0x0F, 0x01, 0xFF, 0x1F, 0xFC, + 0x01, 0xF0, 0x0F, 0x80, 0xFE, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x03, + 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF8, + 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, + 0x7C, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0x80, 0x00, 0x01, 0xFF, 0xFF, 0xF8, + 0x00, 0x00, 0x0F, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, + 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, + 0x07, 0xF8, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x00, 0xF7, 0xC0, 0x00, 0x03, + 0xDF, 0x00, 0x00, 0x1F, 0x3C, 0x00, 0x00, 0x78, 0xF8, 0x00, 0x01, 0xE3, + 0xE0, 0x00, 0x0F, 0x87, 0x80, 0x00, 0x3C, 0x1F, 0x00, 0x01, 0xF0, 0x7C, + 0x00, 0x07, 0x80, 0xF0, 0x00, 0x1E, 0x03, 0xE0, 0x00, 0xF8, 0x0F, 0x80, + 0x03, 0xC0, 0x1E, 0x00, 0x0F, 0x00, 0x7C, 0x00, 0x7C, 0x01, 0xF0, 0x01, + 0xE0, 0x03, 0xC0, 0x07, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xFE, 0x00, 0xFF, + 0xFF, 0xFC, 0x07, 0xFF, 0xFF, 0xF0, 0x1F, 0x00, 0x07, 0xC0, 0x78, 0x00, + 0x0F, 0x83, 0xE0, 0x00, 0x3E, 0x0F, 0x80, 0x00, 0xF8, 0x3C, 0x00, 0x01, + 0xF1, 0xF0, 0x00, 0x07, 0xC7, 0xC0, 0x00, 0x1F, 0x1E, 0x00, 0x00, 0x3E, + 0xF8, 0x00, 0x00, 0xFB, 0xE0, 0x00, 0x01, 0xE0, 0xFF, 0xFF, 0x80, 0x7F, + 0xFF, 0xF0, 0x3F, 0xFF, 0xFE, 0x1F, 0xFF, 0xFF, 0x0F, 0x00, 0x0F, 0xC7, + 0x80, 0x01, 0xE3, 0xC0, 0x00, 0xF9, 0xE0, 0x00, 0x3C, 0xF0, 0x00, 0x1E, + 0x78, 0x00, 0x0F, 0x3C, 0x00, 0x07, 0x9E, 0x00, 0x07, 0x8F, 0x00, 0x03, + 0xC7, 0x80, 0x07, 0xC3, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, + 0xF8, 0x7F, 0xFF, 0xFE, 0x3C, 0x00, 0x0F, 0x9E, 0x00, 0x03, 0xEF, 0x00, + 0x00, 0xF7, 0x80, 0x00, 0x3F, 0xC0, 0x00, 0x1F, 0xE0, 0x00, 0x0F, 0xF0, + 0x00, 0x07, 0xF8, 0x00, 0x03, 0xFC, 0x00, 0x01, 0xFE, 0x00, 0x01, 0xFF, + 0x00, 0x01, 0xF7, 0x80, 0x01, 0xFB, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xF8, + 0xFF, 0xFF, 0xF8, 0x7F, 0xFF, 0xF0, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x07, + 0xFF, 0xE0, 0x00, 0x7F, 0xFF, 0xC0, 0x0F, 0xFF, 0xFF, 0x00, 0xFE, 0x01, + 0xF8, 0x07, 0xC0, 0x03, 0xE0, 0x7C, 0x00, 0x0F, 0x87, 0xC0, 0x00, 0x3C, + 0x3C, 0x00, 0x01, 0xE3, 0xE0, 0x00, 0x07, 0x9E, 0x00, 0x00, 0x3C, 0xF0, + 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x78, 0x00, 0x00, 0x03, 0xC0, 0x00, + 0x00, 0x1E, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, + 0x3C, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x78, + 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x0F, 0x78, 0x00, + 0x00, 0x7B, 0xC0, 0x00, 0x07, 0xDF, 0x00, 0x00, 0x3C, 0x78, 0x00, 0x01, + 0xE3, 0xE0, 0x00, 0x1F, 0x0F, 0x80, 0x01, 0xF0, 0x3E, 0x00, 0x1F, 0x81, + 0xFE, 0x03, 0xF8, 0x07, 0xFF, 0xFF, 0x80, 0x0F, 0xFF, 0xF8, 0x00, 0x3F, + 0xFF, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0xFF, 0x80, 0x1F, 0xFF, 0xFE, + 0x03, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, 0xFE, 0x0F, 0x00, 0x0F, 0xE1, 0xE0, + 0x00, 0x7E, 0x3C, 0x00, 0x07, 0xE7, 0x80, 0x00, 0x7C, 0xF0, 0x00, 0x07, + 0xDE, 0x00, 0x00, 0x7B, 0xC0, 0x00, 0x0F, 0x78, 0x00, 0x01, 0xEF, 0x00, + 0x00, 0x1F, 0xE0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x0F, + 0xF0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x07, 0xF8, 0x00, + 0x00, 0xFF, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xF7, + 0x80, 0x00, 0x1E, 0xF0, 0x00, 0x03, 0xDE, 0x00, 0x00, 0xFB, 0xC0, 0x00, + 0x3E, 0x78, 0x00, 0x0F, 0xCF, 0x00, 0x03, 0xF1, 0xE0, 0x01, 0xFC, 0x3F, + 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xF0, 0x1F, 0xFF, 0xF0, + 0x00, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, + 0xFE, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, + 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, + 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xFF, 0xFF, + 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xF0, 0x00, + 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, + 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, + 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, + 0x00, 0x00, 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, + 0x00, 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, + 0x3F, 0xFF, 0xFC, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0x3C, + 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, + 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, 0x00, + 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xF0, + 0x00, 0x03, 0xC0, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0xFF, 0xFE, + 0x00, 0x07, 0xFF, 0xFF, 0x00, 0x1F, 0xFF, 0xFF, 0x00, 0x7F, 0x80, 0x7F, + 0x01, 0xF8, 0x00, 0x3F, 0x07, 0xE0, 0x00, 0x1F, 0x0F, 0x80, 0x00, 0x1E, + 0x3E, 0x00, 0x00, 0x3E, 0x78, 0x00, 0x00, 0x3D, 0xF0, 0x00, 0x00, 0x03, + 0xC0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x01, 0xE0, + 0x00, 0xFF, 0xFF, 0xC0, 0x01, 0xFF, 0xFF, 0x80, 0x03, 0xFF, 0xFF, 0x00, + 0x07, 0xFF, 0xFE, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x07, 0xBC, 0x00, + 0x00, 0x0F, 0x78, 0x00, 0x00, 0x1E, 0xF8, 0x00, 0x00, 0x7D, 0xF0, 0x00, + 0x00, 0xF9, 0xF0, 0x00, 0x03, 0xF3, 0xF0, 0x00, 0x07, 0xE3, 0xF0, 0x00, + 0x1F, 0xC3, 0xF0, 0x00, 0xFF, 0x83, 0xFC, 0x07, 0xEF, 0x03, 0xFF, 0xFF, + 0x9E, 0x03, 0xFF, 0xFE, 0x1C, 0x01, 0xFF, 0xF0, 0x38, 0x00, 0x7F, 0x80, + 0x00, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x3F, 0xC0, + 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x3F, + 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, + 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, + 0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, + 0xFF, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, + 0x00, 0xFF, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, + 0x00, 0x00, 0xFF, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, + 0xFC, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0xE0, + 0x00, 0x3C, 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0xC0, + 0x00, 0x78, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x07, 0x80, + 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x0F, 0x00, + 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x1E, 0x00, + 0x03, 0xC0, 0x00, 0x7F, 0x80, 0x0F, 0xF0, 0x01, 0xFE, 0x00, 0x3F, 0xC0, + 0x07, 0xF8, 0x01, 0xFF, 0x80, 0x3E, 0xF0, 0x0F, 0x9F, 0x83, 0xF1, 0xFF, + 0xFC, 0x3F, 0xFF, 0x01, 0xFF, 0xC0, 0x0F, 0xE0, 0x00, 0xF0, 0x00, 0x07, + 0xDE, 0x00, 0x01, 0xF3, 0xC0, 0x00, 0x7C, 0x78, 0x00, 0x1F, 0x0F, 0x00, + 0x07, 0xC1, 0xE0, 0x01, 0xF0, 0x3C, 0x00, 0x7C, 0x07, 0x80, 0x1F, 0x00, + 0xF0, 0x07, 0xC0, 0x1E, 0x01, 0xF0, 0x03, 0xC0, 0x7C, 0x00, 0x78, 0x1F, + 0x00, 0x0F, 0x07, 0xC0, 0x01, 0xE1, 0xF0, 0x00, 0x3C, 0x7E, 0x00, 0x07, + 0x9F, 0xE0, 0x00, 0xF7, 0xFE, 0x00, 0x1F, 0xF7, 0xC0, 0x03, 0xFC, 0x7C, + 0x00, 0x7F, 0x07, 0xC0, 0x0F, 0xC0, 0xF8, 0x01, 0xF0, 0x0F, 0x80, 0x3C, + 0x00, 0xF8, 0x07, 0x80, 0x1F, 0x80, 0xF0, 0x01, 0xF0, 0x1E, 0x00, 0x1F, + 0x03, 0xC0, 0x03, 0xF0, 0x78, 0x00, 0x3E, 0x0F, 0x00, 0x03, 0xE1, 0xE0, + 0x00, 0x3E, 0x3C, 0x00, 0x07, 0xC7, 0x80, 0x00, 0x7C, 0xF0, 0x00, 0x07, + 0xDE, 0x00, 0x00, 0xFC, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x3C, 0x00, 0x01, + 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, + 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x0F, + 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xF0, 0x00, + 0x07, 0x80, 0x00, 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, + 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, + 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xFC, 0x00, + 0x00, 0x3F, 0xFC, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x7F, 0xFE, 0x00, + 0x00, 0x7F, 0xFE, 0x00, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, + 0x00, 0xFF, 0xF7, 0x00, 0x00, 0xEF, 0xF7, 0x80, 0x01, 0xEF, 0xF7, 0x80, + 0x01, 0xEF, 0xF3, 0xC0, 0x01, 0xCF, 0xF3, 0xC0, 0x03, 0xCF, 0xF3, 0xC0, + 0x03, 0xCF, 0xF1, 0xE0, 0x03, 0x8F, 0xF1, 0xE0, 0x07, 0x8F, 0xF1, 0xE0, + 0x07, 0x8F, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, + 0x0F, 0x0F, 0xF0, 0x78, 0x1E, 0x0F, 0xF0, 0x78, 0x1E, 0x0F, 0xF0, 0x78, + 0x1E, 0x0F, 0xF0, 0x3C, 0x3C, 0x0F, 0xF0, 0x3C, 0x3C, 0x0F, 0xF0, 0x3C, + 0x3C, 0x0F, 0xF0, 0x1E, 0x78, 0x0F, 0xF0, 0x1E, 0x78, 0x0F, 0xF0, 0x0E, + 0x78, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x07, + 0xF0, 0x0F, 0xF0, 0x07, 0xE0, 0x0F, 0xF0, 0x07, 0xE0, 0x0F, 0xF0, 0x03, + 0xE0, 0x0F, 0xF8, 0x00, 0x03, 0xFF, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x3F, + 0xF8, 0x00, 0x0F, 0xFE, 0x00, 0x03, 0xFF, 0xC0, 0x00, 0xFF, 0xF8, 0x00, + 0x3F, 0xDE, 0x00, 0x0F, 0xF7, 0xC0, 0x03, 0xFC, 0xF8, 0x00, 0xFF, 0x1E, + 0x00, 0x3F, 0xC7, 0xC0, 0x0F, 0xF0, 0xF0, 0x03, 0xFC, 0x3E, 0x00, 0xFF, + 0x07, 0xC0, 0x3F, 0xC0, 0xF0, 0x0F, 0xF0, 0x3E, 0x03, 0xFC, 0x07, 0xC0, + 0xFF, 0x00, 0xF0, 0x3F, 0xC0, 0x3E, 0x0F, 0xF0, 0x07, 0x83, 0xFC, 0x01, + 0xF0, 0xFF, 0x00, 0x3E, 0x3F, 0xC0, 0x07, 0x8F, 0xF0, 0x01, 0xF3, 0xFC, + 0x00, 0x3E, 0xFF, 0x00, 0x07, 0xBF, 0xC0, 0x01, 0xFF, 0xF0, 0x00, 0x3F, + 0xFC, 0x00, 0x0F, 0xFF, 0x00, 0x01, 0xFF, 0xC0, 0x00, 0x3F, 0xF0, 0x00, + 0x0F, 0xFC, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x3F, 0xFF, + 0x80, 0x00, 0x7F, 0xFF, 0xF0, 0x00, 0x7F, 0xFF, 0xFC, 0x00, 0x7F, 0x80, + 0xFF, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x7E, 0x00, 0x03, 0xF0, 0x3E, 0x00, + 0x00, 0xF8, 0x3E, 0x00, 0x00, 0x3E, 0x1E, 0x00, 0x00, 0x0F, 0x1F, 0x00, + 0x00, 0x07, 0xCF, 0x00, 0x00, 0x01, 0xE7, 0x80, 0x00, 0x00, 0xF7, 0xC0, + 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x0F, 0xF0, + 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x01, 0xFE, + 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x00, 0x3F, + 0xC0, 0x00, 0x00, 0x3E, 0xF0, 0x00, 0x00, 0x1E, 0x78, 0x00, 0x00, 0x0F, + 0x3E, 0x00, 0x00, 0x0F, 0x8F, 0x00, 0x00, 0x07, 0x87, 0xC0, 0x00, 0x07, + 0xC1, 0xF0, 0x00, 0x07, 0xC0, 0xFC, 0x00, 0x07, 0xE0, 0x3F, 0x00, 0x07, + 0xE0, 0x0F, 0xF0, 0x1F, 0xE0, 0x03, 0xFF, 0xFF, 0xE0, 0x00, 0xFF, 0xFF, + 0xE0, 0x00, 0x1F, 0xFF, 0xC0, 0x00, 0x01, 0xFF, 0x00, 0x00, 0xFF, 0xFF, + 0x80, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFC, 0xF0, 0x00, + 0xFE, 0xF0, 0x00, 0x3E, 0xF0, 0x00, 0x1F, 0xF0, 0x00, 0x0F, 0xF0, 0x00, + 0x0F, 0xF0, 0x00, 0x0F, 0xF0, 0x00, 0x0F, 0xF0, 0x00, 0x0F, 0xF0, 0x00, + 0x0F, 0xF0, 0x00, 0x1F, 0xF0, 0x00, 0x3E, 0xF0, 0x00, 0xFE, 0xFF, 0xFF, + 0xFC, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xC0, 0xF0, 0x00, + 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, + 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, + 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, + 0x00, 0xF0, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x3F, 0xFF, 0x80, + 0x00, 0x7F, 0xFF, 0xE0, 0x00, 0x7F, 0xFF, 0xFC, 0x00, 0x7F, 0x80, 0xFF, + 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x7E, 0x00, 0x03, 0xF0, 0x3E, 0x00, 0x00, + 0xF8, 0x3E, 0x00, 0x00, 0x3E, 0x1E, 0x00, 0x00, 0x0F, 0x1F, 0x00, 0x00, + 0x07, 0xCF, 0x00, 0x00, 0x01, 0xE7, 0x80, 0x00, 0x00, 0xF7, 0xC0, 0x00, + 0x00, 0x7F, 0xC0, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x0F, 0xF0, 0x00, + 0x00, 0x07, 0xF8, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x01, 0xFE, 0x00, + 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x00, 0x3F, 0xC0, + 0x00, 0x00, 0x3E, 0xF0, 0x00, 0x00, 0x1E, 0x78, 0x00, 0x00, 0x0F, 0x3E, + 0x00, 0x00, 0x0F, 0x8F, 0x00, 0x03, 0x87, 0x87, 0xC0, 0x03, 0xE7, 0xC1, + 0xF0, 0x00, 0xFF, 0xC0, 0xFC, 0x00, 0x3F, 0xE0, 0x3F, 0x00, 0x0F, 0xE0, + 0x0F, 0xF0, 0x1F, 0xF0, 0x03, 0xFF, 0xFF, 0xFC, 0x00, 0xFF, 0xFF, 0xFF, + 0x00, 0x1F, 0xFF, 0xC7, 0xC0, 0x01, 0xFF, 0x01, 0xE0, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0xE0, 0x3F, 0xFF, 0xFE, 0x0F, + 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xF8, 0xF0, 0x00, 0x3F, 0x3C, 0x00, 0x07, + 0xCF, 0x00, 0x00, 0xFB, 0xC0, 0x00, 0x1E, 0xF0, 0x00, 0x07, 0xBC, 0x00, + 0x01, 0xEF, 0x00, 0x00, 0x7B, 0xC0, 0x00, 0x1E, 0xF0, 0x00, 0x07, 0xBC, + 0x00, 0x03, 0xCF, 0x00, 0x01, 0xF3, 0xC0, 0x00, 0xF8, 0xFF, 0xFF, 0xFC, + 0x3F, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xF8, 0xF0, 0x00, + 0x3F, 0x3C, 0x00, 0x03, 0xCF, 0x00, 0x00, 0xFB, 0xC0, 0x00, 0x1E, 0xF0, + 0x00, 0x07, 0xBC, 0x00, 0x01, 0xEF, 0x00, 0x00, 0x7B, 0xC0, 0x00, 0x1E, + 0xF0, 0x00, 0x07, 0xBC, 0x00, 0x01, 0xEF, 0x00, 0x00, 0x7B, 0xC0, 0x00, + 0x1E, 0xF0, 0x00, 0x07, 0xFC, 0x00, 0x01, 0xF0, 0x00, 0x7F, 0xC0, 0x00, + 0x7F, 0xFF, 0x00, 0x1F, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0x81, 0xF8, 0x07, + 0xF0, 0x7C, 0x00, 0x1F, 0x0F, 0x00, 0x01, 0xE3, 0xE0, 0x00, 0x3E, 0x78, + 0x00, 0x03, 0xCF, 0x00, 0x00, 0x79, 0xE0, 0x00, 0x00, 0x3C, 0x00, 0x00, + 0x07, 0xC0, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0xFF, + 0xE0, 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0x7F, 0xFF, 0x00, 0x01, 0xFF, 0xF8, + 0x00, 0x03, 0xFF, 0x80, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x3F, 0x80, 0x00, + 0x01, 0xF0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x3F, + 0xC0, 0x00, 0x07, 0xF8, 0x00, 0x00, 0xF7, 0x80, 0x00, 0x3E, 0xF8, 0x00, + 0x07, 0x9F, 0x80, 0x01, 0xF1, 0xFE, 0x01, 0xFC, 0x1F, 0xFF, 0xFF, 0x01, + 0xFF, 0xFF, 0xC0, 0x0F, 0xFF, 0xE0, 0x00, 0x3F, 0xE0, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, + 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x78, 0x00, + 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x78, + 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xE0, 0x00, + 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xE0, + 0x00, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, + 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, + 0x01, 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, + 0x00, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x3F, 0xC0, + 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x3F, + 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, + 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, + 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, + 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, + 0xFF, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, + 0x00, 0xFF, 0x00, 0x00, 0x7D, 0xE0, 0x00, 0x1E, 0x7C, 0x00, 0x0F, 0x9F, + 0x80, 0x07, 0xE3, 0xF8, 0x07, 0xF0, 0x7F, 0xFF, 0xF8, 0x0F, 0xFF, 0xFC, + 0x00, 0xFF, 0xFC, 0x00, 0x0F, 0xF8, 0x00, 0xF8, 0x00, 0x00, 0xF7, 0xC0, + 0x00, 0x0F, 0x9E, 0x00, 0x00, 0x7C, 0xF8, 0x00, 0x03, 0xC7, 0xC0, 0x00, + 0x3E, 0x1E, 0x00, 0x01, 0xF0, 0xF8, 0x00, 0x0F, 0x07, 0xC0, 0x00, 0xF8, + 0x1E, 0x00, 0x07, 0xC0, 0xF8, 0x00, 0x3C, 0x07, 0xC0, 0x03, 0xE0, 0x1E, + 0x00, 0x1F, 0x00, 0xF8, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x80, 0x1E, 0x00, + 0x7C, 0x00, 0xF8, 0x03, 0xC0, 0x03, 0xC0, 0x1E, 0x00, 0x1F, 0x01, 0xF0, + 0x00, 0xF8, 0x0F, 0x00, 0x03, 0xC0, 0x78, 0x00, 0x1F, 0x07, 0x80, 0x00, + 0xF8, 0x3C, 0x00, 0x03, 0xC1, 0xE0, 0x00, 0x1F, 0x1E, 0x00, 0x00, 0x78, + 0xF0, 0x00, 0x03, 0xC7, 0x80, 0x00, 0x1F, 0x78, 0x00, 0x00, 0x7B, 0xC0, + 0x00, 0x03, 0xDE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x7F, 0x00, 0x00, + 0x03, 0xF8, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, + 0x00, 0x3F, 0x00, 0x07, 0xFE, 0x00, 0x0F, 0xC0, 0x01, 0xFF, 0x80, 0x03, + 0xF0, 0x00, 0x7D, 0xE0, 0x00, 0xFC, 0x00, 0x1E, 0x7C, 0x00, 0x7F, 0x80, + 0x0F, 0x9F, 0x00, 0x1F, 0xE0, 0x03, 0xE7, 0xC0, 0x07, 0xF8, 0x00, 0xF8, + 0xF0, 0x01, 0xFF, 0x00, 0x3C, 0x3E, 0x00, 0xF3, 0xC0, 0x1F, 0x0F, 0x80, + 0x3C, 0xF0, 0x07, 0xC3, 0xE0, 0x0F, 0x3C, 0x01, 0xF0, 0x78, 0x07, 0xC7, + 0x80, 0x78, 0x1F, 0x01, 0xE1, 0xE0, 0x1E, 0x07, 0xC0, 0x78, 0x78, 0x0F, + 0x80, 0xF0, 0x1E, 0x1E, 0x03, 0xE0, 0x3C, 0x0F, 0x83, 0xC0, 0xF0, 0x0F, + 0x83, 0xC0, 0xF0, 0x3C, 0x03, 0xE0, 0xF0, 0x3C, 0x1F, 0x00, 0x78, 0x3C, + 0x0F, 0x87, 0xC0, 0x1E, 0x1E, 0x01, 0xE1, 0xE0, 0x07, 0x87, 0x80, 0x78, + 0x78, 0x01, 0xF1, 0xE0, 0x1E, 0x1E, 0x00, 0x3C, 0xF8, 0x03, 0xCF, 0x80, + 0x0F, 0x3C, 0x00, 0xF3, 0xC0, 0x03, 0xCF, 0x00, 0x3C, 0xF0, 0x00, 0xFB, + 0xC0, 0x0F, 0xBC, 0x00, 0x1F, 0xF0, 0x01, 0xFF, 0x00, 0x07, 0xF8, 0x00, + 0x7F, 0x80, 0x01, 0xFE, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x80, 0x03, 0xF8, + 0x00, 0x0F, 0xC0, 0x00, 0xFE, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x00, + 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x01, 0xF0, 0x00, 0x7C, 0x00, + 0x01, 0xF3, 0xF0, 0x00, 0x1F, 0x8F, 0x80, 0x00, 0xF8, 0x3E, 0x00, 0x0F, + 0x80, 0xF8, 0x00, 0xF8, 0x07, 0xC0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x00, + 0x7C, 0x07, 0xC0, 0x03, 0xE0, 0x3E, 0x00, 0x0F, 0x83, 0xE0, 0x00, 0x3E, + 0x3E, 0x00, 0x01, 0xF1, 0xF0, 0x00, 0x07, 0xDF, 0x00, 0x00, 0x1F, 0xF0, + 0x00, 0x00, 0xFF, 0x80, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x0F, 0x80, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x07, + 0xDF, 0x00, 0x00, 0x7C, 0x78, 0x00, 0x03, 0xE3, 0xE0, 0x00, 0x3E, 0x0F, + 0x80, 0x03, 0xE0, 0x3E, 0x00, 0x1F, 0x01, 0xF0, 0x01, 0xF0, 0x07, 0xC0, + 0x1F, 0x00, 0x3F, 0x00, 0xF8, 0x00, 0xF8, 0x0F, 0x80, 0x03, 0xE0, 0xF8, + 0x00, 0x1F, 0x8F, 0xC0, 0x00, 0x7C, 0x7C, 0x00, 0x01, 0xF7, 0xC0, 0x00, + 0x0F, 0xC0, 0xFC, 0x00, 0x00, 0xFD, 0xF0, 0x00, 0x03, 0xE7, 0xE0, 0x00, + 0x1F, 0x0F, 0x80, 0x00, 0x7C, 0x1F, 0x00, 0x03, 0xE0, 0x7C, 0x00, 0x1F, + 0x00, 0xF8, 0x00, 0x7C, 0x01, 0xF0, 0x03, 0xE0, 0x07, 0xC0, 0x0F, 0x80, + 0x0F, 0x80, 0x7C, 0x00, 0x1E, 0x01, 0xE0, 0x00, 0x7C, 0x0F, 0x80, 0x00, + 0xF8, 0x7C, 0x00, 0x03, 0xE1, 0xE0, 0x00, 0x07, 0xCF, 0x80, 0x00, 0x0F, + 0x3C, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x00, 0xFC, + 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x1E, 0x00, + 0x00, 0x00, 0x78, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x07, 0x80, 0x00, + 0x00, 0x1E, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, + 0x07, 0x80, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x01, + 0xE0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x3F, 0xFF, + 0xFF, 0xC7, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0xE0, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x01, + 0xF8, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, 0xE0, 0x00, + 0x00, 0xFC, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x01, 0xF0, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x07, 0xE0, 0x00, 0x01, + 0xF8, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, 0xF0, 0x00, + 0x00, 0xFC, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, + 0x00, 0x00, 0x7E, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, + 0xF8, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xFF, 0xFF, 0xFF, + 0xFF, 0xE0, 0x07, 0x00, 0x18, 0x00, 0xE0, 0x07, 0x00, 0x18, 0x00, 0xE0, + 0x07, 0x00, 0x18, 0x00, 0xC0, 0x07, 0x00, 0x38, 0x00, 0xC0, 0x07, 0x00, + 0x38, 0x00, 0xC0, 0x06, 0x00, 0x38, 0x00, 0xC0, 0x06, 0x00, 0x38, 0x01, + 0xC0, 0x06, 0x00, 0x38, 0x01, 0xC0, 0x06, 0x00, 0x30, 0x01, 0xC0, 0x0E, + 0x00, 0x30, 0x01, 0xC0, 0x0E, 0x00, 0x30, 0x01, 0xC0, 0x0E, 0xFF, 0xFF, + 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x0F, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x3F, + 0x00, 0x0F, 0xC0, 0x07, 0xF8, 0x01, 0xCE, 0x00, 0x73, 0x80, 0x3C, 0x70, + 0x0E, 0x1C, 0x07, 0x87, 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x38, 0x07, 0x0E, + 0x01, 0xC7, 0x80, 0x79, 0xC0, 0x0E, 0x70, 0x03, 0xB8, 0x00, 0x70, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x0F, 0x01, 0xE0, 0x3C, 0x07, + 0x00, 0xE0, 0x1C, 0x01, 0xFF, 0x00, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0xE0, + 0x3F, 0xFF, 0xF0, 0x7E, 0x03, 0xF8, 0x7C, 0x00, 0xF8, 0x78, 0x00, 0x78, + 0x00, 0x00, 0x78, 0x00, 0x00, 0x78, 0x00, 0x00, 0x78, 0x00, 0x00, 0xF8, + 0x00, 0x03, 0xF8, 0x00, 0xFF, 0xF8, 0x0F, 0xFF, 0xF8, 0x3F, 0xFE, 0x78, + 0x7F, 0x80, 0x78, 0xFC, 0x00, 0x78, 0xF8, 0x00, 0x78, 0xF0, 0x00, 0x78, + 0xF0, 0x00, 0xF8, 0xF0, 0x00, 0xF8, 0xF8, 0x03, 0xF8, 0x7E, 0x0F, 0xF8, + 0x7F, 0xFF, 0x7F, 0x3F, 0xFE, 0x3F, 0x1F, 0xFC, 0x3F, 0x07, 0xE0, 0x1F, + 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xF0, + 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xF0, 0x7E, + 0x03, 0xC7, 0xFE, 0x0F, 0x7F, 0xFC, 0x3D, 0xFF, 0xF8, 0xFF, 0x07, 0xF3, + 0xF8, 0x07, 0xCF, 0xC0, 0x0F, 0xBE, 0x00, 0x1E, 0xF8, 0x00, 0x7B, 0xE0, + 0x01, 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, + 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x01, 0xFF, + 0x80, 0x07, 0xBE, 0x00, 0x1E, 0xFC, 0x00, 0xFB, 0xF8, 0x07, 0xCF, 0xF0, + 0x7F, 0x3B, 0xFF, 0xF8, 0xE7, 0xFF, 0xC3, 0x8F, 0xFE, 0x00, 0x0F, 0xE0, + 0x00, 0x00, 0xFE, 0x00, 0x3F, 0xFC, 0x03, 0xFF, 0xF0, 0x3F, 0xFF, 0xC3, + 0xF0, 0x3F, 0x1F, 0x00, 0xF9, 0xF0, 0x03, 0xCF, 0x00, 0x0F, 0x78, 0x00, + 0x07, 0xC0, 0x00, 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, + 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, + 0x1E, 0x00, 0x1E, 0xF0, 0x00, 0xF7, 0xC0, 0x0F, 0x9F, 0x00, 0xF8, 0xFC, + 0x0F, 0xC3, 0xFF, 0xFC, 0x0F, 0xFF, 0xC0, 0x3F, 0xFC, 0x00, 0x7F, 0x00, + 0x00, 0x00, 0x1E, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x78, 0x00, 0x00, 0xF0, + 0x00, 0x01, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x0F, 0x01, + 0xFC, 0x1E, 0x0F, 0xFE, 0x3C, 0x3F, 0xFF, 0x78, 0xFF, 0xFF, 0xF3, 0xF8, + 0x3F, 0xE7, 0xC0, 0x1F, 0xDF, 0x00, 0x1F, 0xBE, 0x00, 0x1F, 0x78, 0x00, + 0x3F, 0xF0, 0x00, 0x7F, 0xC0, 0x00, 0x7F, 0x80, 0x00, 0xFF, 0x00, 0x01, + 0xFE, 0x00, 0x03, 0xFC, 0x00, 0x07, 0xF8, 0x00, 0x0F, 0xF0, 0x00, 0x1F, + 0xF0, 0x00, 0x7D, 0xE0, 0x00, 0xFB, 0xC0, 0x01, 0xF7, 0xC0, 0x07, 0xE7, + 0xC0, 0x1F, 0xCF, 0xE0, 0xFF, 0x8F, 0xFF, 0xF7, 0x0F, 0xFF, 0xCE, 0x0F, + 0xFF, 0x1C, 0x07, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x0F, 0xFE, 0x00, 0xFF, + 0xFC, 0x07, 0xFF, 0xF8, 0x1F, 0x83, 0xF0, 0xF8, 0x07, 0xC7, 0xC0, 0x0F, + 0x9E, 0x00, 0x1E, 0x78, 0x00, 0x7B, 0xC0, 0x00, 0xFF, 0x00, 0x03, 0xFC, + 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, + 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x1E, + 0x7C, 0x00, 0x78, 0xF8, 0x03, 0xE3, 0xF0, 0x3F, 0x07, 0xFF, 0xF8, 0x0F, + 0xFF, 0xE0, 0x1F, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0x03, 0xC3, 0xF0, 0xFC, + 0x7F, 0x1F, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x3F, 0xFF, 0xFF, 0xFF, 0x1E, + 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, + 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, + 0x1E, 0x07, 0x80, 0x00, 0xFC, 0x00, 0x1F, 0xF8, 0xF0, 0xFF, 0xFB, 0xC7, + 0xFF, 0xFF, 0x3F, 0x83, 0xFC, 0xF8, 0x07, 0xF7, 0xC0, 0x0F, 0xDE, 0x00, + 0x1F, 0x78, 0x00, 0x7F, 0xE0, 0x00, 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x0F, + 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xF0, + 0x00, 0x3F, 0xC0, 0x00, 0xF7, 0x80, 0x07, 0xDE, 0x00, 0x1F, 0x7C, 0x00, + 0xFC, 0xF8, 0x07, 0xF3, 0xF8, 0x3F, 0xC7, 0xFF, 0xEF, 0x0F, 0xFF, 0x3C, + 0x1F, 0xF8, 0xF0, 0x1F, 0x83, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x79, 0xE0, + 0x01, 0xE7, 0xC0, 0x0F, 0x8F, 0x80, 0xFC, 0x3F, 0xFF, 0xF0, 0x7F, 0xFF, + 0x80, 0xFF, 0xFC, 0x00, 0x7F, 0x80, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0xC0, + 0x00, 0x78, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x07, 0x80, + 0x00, 0xF0, 0xFE, 0x1E, 0x3F, 0xE3, 0xCF, 0xFF, 0x7B, 0xFF, 0xEF, 0xF0, + 0xFF, 0xF8, 0x07, 0xFF, 0x00, 0x7F, 0xC0, 0x0F, 0xF8, 0x01, 0xFE, 0x00, + 0x3F, 0xC0, 0x07, 0xF8, 0x00, 0xFF, 0x00, 0x1F, 0xE0, 0x03, 0xFC, 0x00, + 0x7F, 0x80, 0x0F, 0xF0, 0x01, 0xFE, 0x00, 0x3F, 0xC0, 0x07, 0xF8, 0x00, + 0xFF, 0x00, 0x1F, 0xE0, 0x03, 0xFC, 0x00, 0x7F, 0x80, 0x0F, 0xF0, 0x01, + 0xFE, 0x00, 0x3C, 0xFF, 0xFF, 0xF0, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x0F, + 0x0F, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x1F, + 0xFF, 0xFE, 0xFE, 0xF8, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x3C, 0x00, 0x01, + 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, + 0x00, 0xF0, 0x00, 0x07, 0x80, 0x1F, 0x3C, 0x01, 0xF1, 0xE0, 0x1F, 0x0F, + 0x01, 0xF0, 0x78, 0x1F, 0x03, 0xC1, 0xF0, 0x1E, 0x1F, 0x00, 0xF1, 0xF0, + 0x07, 0x9F, 0x00, 0x3D, 0xF8, 0x01, 0xFF, 0xE0, 0x0F, 0xFF, 0x80, 0x7F, + 0x7C, 0x03, 0xF1, 0xF0, 0x1F, 0x07, 0xC0, 0xF0, 0x3E, 0x07, 0x80, 0xF8, + 0x3C, 0x03, 0xC1, 0xE0, 0x1F, 0x0F, 0x00, 0x7C, 0x78, 0x03, 0xE3, 0xC0, + 0x0F, 0x9E, 0x00, 0x3C, 0xF0, 0x01, 0xF7, 0x80, 0x07, 0xC0, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0x00, 0xFC, 0x03, 0xF0, 0xE3, 0xFE, 0x0F, 0xFC, 0xE7, + 0xFF, 0x1F, 0xFE, 0xEF, 0xFF, 0xBF, 0xFE, 0xFE, 0x0F, 0xF8, 0x3F, 0xFC, + 0x07, 0xF0, 0x1F, 0xF8, 0x03, 0xE0, 0x0F, 0xF8, 0x03, 0xE0, 0x0F, 0xF0, + 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, + 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, + 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, + 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, + 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, + 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0x00, + 0x7E, 0x0E, 0x1F, 0xF8, 0xE7, 0xFF, 0xCE, 0xFF, 0xFE, 0xEF, 0x07, 0xFF, + 0xE0, 0x1F, 0xFC, 0x01, 0xFF, 0x80, 0x0F, 0xF8, 0x00, 0xFF, 0x00, 0x0F, + 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, + 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, + 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, + 0x00, 0xFF, 0x00, 0x0F, 0x00, 0xFE, 0x00, 0x07, 0xFF, 0x00, 0x3F, 0xFF, + 0x80, 0xFF, 0xFF, 0x83, 0xF8, 0x3F, 0x87, 0xC0, 0x1F, 0x1F, 0x00, 0x1F, + 0x3C, 0x00, 0x1E, 0x78, 0x00, 0x3D, 0xF0, 0x00, 0x7F, 0xC0, 0x00, 0x7F, + 0x80, 0x00, 0xFF, 0x00, 0x01, 0xFE, 0x00, 0x03, 0xFC, 0x00, 0x07, 0xF8, + 0x00, 0x0F, 0xF0, 0x00, 0x1F, 0xF0, 0x00, 0x7D, 0xE0, 0x00, 0xF3, 0xC0, + 0x01, 0xE7, 0xC0, 0x07, 0xC7, 0xC0, 0x1F, 0x0F, 0xE0, 0xFE, 0x0F, 0xFF, + 0xF8, 0x0F, 0xFF, 0xE0, 0x0F, 0xFF, 0x80, 0x03, 0xF8, 0x00, 0x00, 0xFE, + 0x03, 0x8F, 0xFE, 0x0E, 0x7F, 0xFC, 0x3B, 0xFF, 0xF8, 0xFF, 0x87, 0xF3, + 0xF8, 0x07, 0xCF, 0xC0, 0x0F, 0xBE, 0x00, 0x1E, 0xF8, 0x00, 0x7B, 0xE0, + 0x01, 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, + 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x01, 0xFF, + 0x80, 0x07, 0xBE, 0x00, 0x1E, 0xFC, 0x00, 0xFB, 0xF8, 0x07, 0xCF, 0xF0, + 0x7F, 0x3F, 0xFF, 0xF8, 0xF7, 0xFF, 0xC3, 0xC7, 0xFE, 0x0F, 0x07, 0xE0, + 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, + 0xFE, 0x00, 0x07, 0xFF, 0x1C, 0x3F, 0xFF, 0x38, 0xFF, 0xFF, 0x73, 0xF8, + 0x3F, 0xE7, 0xC0, 0x1F, 0xDF, 0x00, 0x1F, 0xBE, 0x00, 0x1F, 0x78, 0x00, + 0x3F, 0xF0, 0x00, 0x7F, 0xC0, 0x00, 0x7F, 0x80, 0x00, 0xFF, 0x00, 0x01, + 0xFE, 0x00, 0x03, 0xFC, 0x00, 0x07, 0xF8, 0x00, 0x0F, 0xF0, 0x00, 0x1F, + 0xF0, 0x00, 0x7D, 0xE0, 0x00, 0xFB, 0xC0, 0x01, 0xF7, 0xC0, 0x07, 0xE7, + 0xC0, 0x1F, 0xCF, 0xE0, 0xFF, 0x8F, 0xFF, 0xEF, 0x0F, 0xFF, 0xDE, 0x0F, + 0xFE, 0x3C, 0x07, 0xF0, 0x78, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, + 0x03, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, 0x00, + 0x3C, 0x00, 0x00, 0x78, 0x00, 0xFE, 0x1F, 0xE7, 0xFE, 0xFF, 0xFF, 0x8F, + 0xC0, 0xF8, 0x0F, 0x80, 0xF8, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, + 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, + 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0x01, 0xFC, 0x00, 0xFF, 0xF0, + 0x1F, 0xFF, 0x83, 0xFF, 0xFC, 0x3E, 0x07, 0xE7, 0xC0, 0x3E, 0x78, 0x01, + 0xE7, 0x80, 0x00, 0x78, 0x00, 0x07, 0xC0, 0x00, 0x7E, 0x00, 0x03, 0xFC, + 0x00, 0x1F, 0xFC, 0x00, 0xFF, 0xF8, 0x03, 0xFF, 0xC0, 0x03, 0xFE, 0x00, + 0x03, 0xF0, 0x00, 0x1F, 0x00, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, + 0x80, 0x1F, 0x7E, 0x07, 0xE7, 0xFF, 0xFE, 0x3F, 0xFF, 0xC1, 0xFF, 0xF0, + 0x03, 0xFC, 0x00, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x8F, 0xFF, + 0xFF, 0xFF, 0xC7, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, + 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, + 0xE0, 0x78, 0x1F, 0xC7, 0xF0, 0xFC, 0x1F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, + 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, + 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, + 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, + 0x00, 0xFF, 0x00, 0x1F, 0xF0, 0x01, 0xFF, 0x00, 0x3F, 0xF8, 0x07, 0xFF, + 0xE0, 0xFF, 0x7F, 0xFF, 0x77, 0xFF, 0xE7, 0x1F, 0xFC, 0x70, 0x7E, 0x00, + 0x78, 0x00, 0x3E, 0xF0, 0x00, 0x79, 0xF0, 0x00, 0xF1, 0xE0, 0x03, 0xE3, + 0xC0, 0x07, 0x87, 0xC0, 0x0F, 0x07, 0x80, 0x3C, 0x0F, 0x00, 0x78, 0x1F, + 0x01, 0xF0, 0x1E, 0x03, 0xC0, 0x3C, 0x07, 0x80, 0x7C, 0x1F, 0x00, 0x78, + 0x3C, 0x00, 0xF0, 0x78, 0x01, 0xF1, 0xE0, 0x01, 0xE3, 0xC0, 0x03, 0xC7, + 0x80, 0x03, 0xDE, 0x00, 0x07, 0xBC, 0x00, 0x0F, 0x70, 0x00, 0x0F, 0xE0, + 0x00, 0x1F, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x7C, 0x00, + 0xF8, 0x03, 0xE0, 0x07, 0x9E, 0x00, 0xFC, 0x01, 0xE7, 0x80, 0x3F, 0x00, + 0x79, 0xF0, 0x0F, 0xC0, 0x3E, 0x3C, 0x07, 0xF0, 0x0F, 0x0F, 0x01, 0xFE, + 0x03, 0xC3, 0xC0, 0x7F, 0x80, 0xF0, 0x78, 0x1D, 0xE0, 0x78, 0x1E, 0x0F, + 0x38, 0x1E, 0x07, 0x83, 0xCF, 0x07, 0x81, 0xE0, 0xF3, 0xC1, 0xE0, 0x3C, + 0x38, 0xF0, 0xF0, 0x0F, 0x1E, 0x1C, 0x3C, 0x03, 0xC7, 0x87, 0x8F, 0x00, + 0x71, 0xE1, 0xE3, 0x80, 0x1E, 0x70, 0x79, 0xE0, 0x07, 0xBC, 0x0E, 0x78, + 0x01, 0xEF, 0x03, 0xDE, 0x00, 0x3B, 0xC0, 0xF7, 0x00, 0x0F, 0xE0, 0x3F, + 0xC0, 0x03, 0xF8, 0x07, 0xF0, 0x00, 0x7E, 0x01, 0xF8, 0x00, 0x1F, 0x80, + 0x7E, 0x00, 0x07, 0xC0, 0x1F, 0x80, 0x01, 0xF0, 0x03, 0xC0, 0x00, 0x7C, + 0x00, 0x78, 0xF0, 0x03, 0xE1, 0xE0, 0x0F, 0x07, 0xC0, 0x78, 0x0F, 0x03, + 0xE0, 0x1E, 0x0F, 0x00, 0x7C, 0x78, 0x00, 0xF3, 0xE0, 0x01, 0xEF, 0x00, + 0x07, 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0x1F, 0x00, 0x00, 0x7C, 0x00, 0x03, + 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x7F, 0xC0, 0x03, 0xCF, 0x00, 0x0F, 0x1E, + 0x00, 0x78, 0x7C, 0x03, 0xE0, 0xF0, 0x0F, 0x03, 0xE0, 0x78, 0x07, 0xC3, + 0xE0, 0x0F, 0x1F, 0x00, 0x3E, 0x78, 0x00, 0x7C, 0x78, 0x00, 0x3D, 0xE0, + 0x01, 0xF7, 0x80, 0x07, 0x8F, 0x00, 0x1E, 0x3C, 0x00, 0xF0, 0xF0, 0x03, + 0xC1, 0xE0, 0x0F, 0x07, 0x80, 0x78, 0x1E, 0x01, 0xE0, 0x3C, 0x07, 0x80, + 0xF0, 0x3C, 0x03, 0xC0, 0xF0, 0x07, 0x87, 0xC0, 0x1E, 0x1E, 0x00, 0x78, + 0x78, 0x00, 0xF3, 0xC0, 0x03, 0xCF, 0x00, 0x0F, 0x3C, 0x00, 0x1F, 0xE0, + 0x00, 0x7F, 0x80, 0x01, 0xFE, 0x00, 0x03, 0xF0, 0x00, 0x0F, 0xC0, 0x00, + 0x3E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x3C, + 0x00, 0x01, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x3E, 0x00, 0x0F, 0xF0, 0x00, + 0x3F, 0xC0, 0x00, 0xFE, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x7F, 0xFF, 0xF7, + 0xFF, 0xFF, 0x7F, 0xFF, 0xF7, 0xFF, 0xFF, 0x00, 0x01, 0xE0, 0x00, 0x3E, + 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x7C, + 0x00, 0x07, 0x80, 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x7C, + 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x03, 0xC0, 0x00, 0x7C, + 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x01, 0xE0, 0xFC, 0x1F, 0x87, 0x80, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0E, + 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, + 0xC0, 0x78, 0x1E, 0x0F, 0x81, 0xE0, 0x3C, 0x07, 0xC0, 0x3C, 0x03, 0x80, + 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x38, + 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0F, 0x00, 0xFC, 0x1F, 0x80, + 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0x1F, 0x83, 0xF0, 0x0F, 0x00, + 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, + 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x1C, 0x03, 0xC0, 0x3E, 0x03, + 0xC0, 0x78, 0x1F, 0x07, 0x80, 0xE0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, + 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, + 0x70, 0x1E, 0x1F, 0x83, 0xF0, 0x78, 0x00, 0x3E, 0x00, 0x0F, 0xF0, 0x0D, + 0xFF, 0x01, 0xF0, 0xF8, 0x7C, 0x0F, 0xFD, 0x80, 0x7F, 0x80, 0x03, 0xE0}; + +const GFXglyph FreeSans24pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 12, 0, 1}, // 0x20 ' ' + {0, 4, 34, 16, 6, -33}, // 0x21 '!' + {17, 11, 12, 16, 2, -32}, // 0x22 '"' + {34, 24, 33, 26, 1, -31}, // 0x23 '#' + {133, 23, 41, 26, 1, -34}, // 0x24 '$' + {251, 39, 34, 42, 1, -32}, // 0x25 '%' + {417, 28, 34, 31, 2, -32}, // 0x26 '&' + {536, 4, 12, 9, 2, -32}, // 0x27 ''' + {542, 10, 44, 16, 3, -33}, // 0x28 '(' + {597, 10, 44, 16, 2, -33}, // 0x29 ')' + {652, 14, 14, 18, 2, -33}, // 0x2A '*' + {677, 23, 22, 27, 2, -21}, // 0x2B '+' + {741, 4, 12, 13, 4, -4}, // 0x2C ',' + {747, 11, 4, 16, 2, -14}, // 0x2D '-' + {753, 4, 5, 12, 4, -4}, // 0x2E '.' + {756, 13, 35, 13, 0, -33}, // 0x2F '/' + {813, 22, 34, 26, 2, -32}, // 0x30 '0' + {907, 11, 33, 26, 5, -32}, // 0x31 '1' + {953, 22, 33, 26, 2, -32}, // 0x32 '2' + {1044, 23, 34, 26, 1, -32}, // 0x33 '3' + {1142, 23, 33, 26, 1, -32}, // 0x34 '4' + {1237, 22, 34, 26, 2, -32}, // 0x35 '5' + {1331, 22, 34, 26, 2, -32}, // 0x36 '6' + {1425, 21, 33, 26, 2, -32}, // 0x37 '7' + {1512, 22, 34, 26, 2, -32}, // 0x38 '8' + {1606, 21, 34, 26, 2, -32}, // 0x39 '9' + {1696, 4, 25, 12, 4, -24}, // 0x3A ':' + {1709, 4, 32, 12, 4, -24}, // 0x3B ';' + {1725, 23, 23, 27, 2, -22}, // 0x3C '<' + {1792, 23, 12, 27, 2, -16}, // 0x3D '=' + {1827, 23, 23, 27, 2, -22}, // 0x3E '>' + {1894, 20, 35, 26, 4, -34}, // 0x3F '?' + {1982, 43, 42, 48, 2, -34}, // 0x40 '@' + {2208, 30, 34, 31, 1, -33}, // 0x41 'A' + {2336, 25, 34, 31, 4, -33}, // 0x42 'B' + {2443, 29, 36, 33, 2, -34}, // 0x43 'C' + {2574, 27, 34, 33, 4, -33}, // 0x44 'D' + {2689, 24, 34, 30, 4, -33}, // 0x45 'E' + {2791, 22, 34, 28, 4, -33}, // 0x46 'F' + {2885, 31, 36, 36, 2, -34}, // 0x47 'G' + {3025, 26, 34, 34, 4, -33}, // 0x48 'H' + {3136, 4, 34, 13, 5, -33}, // 0x49 'I' + {3153, 19, 35, 25, 2, -33}, // 0x4A 'J' + {3237, 27, 34, 32, 4, -33}, // 0x4B 'K' + {3352, 21, 34, 26, 4, -33}, // 0x4C 'L' + {3442, 32, 34, 40, 4, -33}, // 0x4D 'M' + {3578, 26, 34, 34, 4, -33}, // 0x4E 'N' + {3689, 33, 36, 37, 2, -34}, // 0x4F 'O' + {3838, 24, 34, 31, 4, -33}, // 0x50 'P' + {3940, 33, 38, 37, 2, -34}, // 0x51 'Q' + {4097, 26, 34, 33, 4, -33}, // 0x52 'R' + {4208, 27, 36, 31, 2, -34}, // 0x53 'S' + {4330, 26, 34, 30, 2, -33}, // 0x54 'T' + {4441, 26, 35, 34, 4, -33}, // 0x55 'U' + {4555, 29, 34, 30, 1, -33}, // 0x56 'V' + {4679, 42, 34, 44, 1, -33}, // 0x57 'W' + {4858, 29, 34, 31, 1, -33}, // 0x58 'X' + {4982, 30, 34, 32, 1, -33}, // 0x59 'Y' + {5110, 27, 34, 29, 1, -33}, // 0x5A 'Z' + {5225, 8, 44, 13, 3, -33}, // 0x5B '[' + {5269, 13, 35, 13, 0, -33}, // 0x5C '\' + {5326, 8, 44, 13, 1, -33}, // 0x5D ']' + {5370, 18, 18, 22, 2, -32}, // 0x5E '^' + {5411, 28, 2, 26, -1, 7}, // 0x5F '_' + {5418, 10, 7, 12, 1, -34}, // 0x60 '`' + {5427, 24, 27, 26, 1, -25}, // 0x61 'a' + {5508, 22, 35, 26, 3, -33}, // 0x62 'b' + {5605, 21, 27, 24, 1, -25}, // 0x63 'c' + {5676, 23, 35, 26, 1, -33}, // 0x64 'd' + {5777, 22, 27, 25, 1, -25}, // 0x65 'e' + {5852, 10, 34, 13, 1, -33}, // 0x66 'f' + {5895, 22, 36, 26, 1, -25}, // 0x67 'g' + {5994, 19, 34, 25, 3, -33}, // 0x68 'h' + {6075, 4, 34, 10, 3, -33}, // 0x69 'i' + {6092, 8, 44, 11, 0, -33}, // 0x6A 'j' + {6136, 21, 34, 24, 3, -33}, // 0x6B 'k' + {6226, 4, 34, 10, 3, -33}, // 0x6C 'l' + {6243, 32, 26, 38, 3, -25}, // 0x6D 'm' + {6347, 20, 26, 25, 3, -25}, // 0x6E 'n' + {6412, 23, 27, 25, 1, -25}, // 0x6F 'o' + {6490, 22, 35, 26, 3, -25}, // 0x70 'p' + {6587, 23, 35, 26, 1, -25}, // 0x71 'q' + {6688, 12, 26, 16, 3, -25}, // 0x72 'r' + {6727, 20, 27, 23, 1, -25}, // 0x73 's' + {6795, 10, 32, 13, 1, -30}, // 0x74 't' + {6835, 20, 26, 25, 3, -24}, // 0x75 'u' + {6900, 23, 25, 23, 0, -24}, // 0x76 'v' + {6972, 34, 25, 34, 0, -24}, // 0x77 'w' + {7079, 22, 25, 22, 0, -24}, // 0x78 'x' + {7148, 22, 35, 22, 0, -24}, // 0x79 'y' + {7245, 20, 25, 23, 1, -24}, // 0x7A 'z' + {7308, 11, 44, 16, 2, -33}, // 0x7B '{' + {7369, 3, 44, 12, 4, -33}, // 0x7C '|' + {7386, 11, 44, 16, 2, -33}, // 0x7D '}' + {7447, 19, 7, 24, 2, -19}}; // 0x7E '~' + +const GFXfont FreeSans24pt7b PROGMEM = {(uint8_t *)FreeSans24pt7bBitmaps, + (GFXglyph *)FreeSans24pt7bGlyphs, 0x20, + 0x7E, 56}; + +// Approx. 8136 bytes diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSans9pt7b.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSans9pt7b.h new file mode 100644 index 0000000..91c33b0 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSans9pt7b.h @@ -0,0 +1,203 @@ +#pragma once +#include + +const uint8_t FreeSans9pt7bBitmaps[] PROGMEM = { + 0xFF, 0xFF, 0xF8, 0xC0, 0xDE, 0xF7, 0x20, 0x09, 0x86, 0x41, 0x91, 0xFF, + 0x13, 0x04, 0xC3, 0x20, 0xC8, 0xFF, 0x89, 0x82, 0x61, 0x90, 0x10, 0x1F, + 0x14, 0xDA, 0x3D, 0x1E, 0x83, 0x40, 0x78, 0x17, 0x08, 0xF4, 0x7A, 0x35, + 0x33, 0xF0, 0x40, 0x20, 0x38, 0x10, 0xEC, 0x20, 0xC6, 0x20, 0xC6, 0x40, + 0xC6, 0x40, 0x6C, 0x80, 0x39, 0x00, 0x01, 0x3C, 0x02, 0x77, 0x02, 0x63, + 0x04, 0x63, 0x04, 0x77, 0x08, 0x3C, 0x0E, 0x06, 0x60, 0xCC, 0x19, 0x81, + 0xE0, 0x18, 0x0F, 0x03, 0x36, 0xC2, 0xD8, 0x73, 0x06, 0x31, 0xE3, 0xC4, + 0xFE, 0x13, 0x26, 0x6C, 0xCC, 0xCC, 0xC4, 0x66, 0x23, 0x10, 0x8C, 0x46, + 0x63, 0x33, 0x33, 0x32, 0x66, 0x4C, 0x80, 0x25, 0x7E, 0xA5, 0x00, 0x30, + 0xC3, 0x3F, 0x30, 0xC3, 0x0C, 0xD6, 0xF0, 0xC0, 0x08, 0x44, 0x21, 0x10, + 0x84, 0x42, 0x11, 0x08, 0x00, 0x3C, 0x66, 0x42, 0xC3, 0xC3, 0xC3, 0xC3, + 0xC3, 0xC3, 0xC3, 0x42, 0x66, 0x3C, 0x11, 0x3F, 0x33, 0x33, 0x33, 0x33, + 0x30, 0x3E, 0x31, 0xB0, 0x78, 0x30, 0x18, 0x1C, 0x1C, 0x1C, 0x18, 0x18, + 0x10, 0x08, 0x07, 0xF8, 0x3C, 0x66, 0xC3, 0xC3, 0x03, 0x06, 0x1C, 0x07, + 0x03, 0xC3, 0xC3, 0x66, 0x3C, 0x0C, 0x18, 0x71, 0x62, 0xC9, 0xA3, 0x46, + 0xFE, 0x18, 0x30, 0x60, 0xC0, 0x7F, 0x20, 0x10, 0x08, 0x08, 0x07, 0xF3, + 0x8C, 0x03, 0x01, 0x80, 0xF0, 0x6C, 0x63, 0xE0, 0x1E, 0x31, 0x98, 0x78, + 0x0C, 0x06, 0xF3, 0x8D, 0x83, 0xC1, 0xE0, 0xD0, 0x6C, 0x63, 0xE0, 0xFF, + 0x03, 0x02, 0x06, 0x04, 0x0C, 0x08, 0x18, 0x18, 0x18, 0x10, 0x30, 0x30, + 0x3E, 0x31, 0xB0, 0x78, 0x3C, 0x1B, 0x18, 0xF8, 0xC6, 0xC1, 0xE0, 0xF0, + 0x6C, 0x63, 0xE0, 0x3C, 0x66, 0xC2, 0xC3, 0xC3, 0xC3, 0x67, 0x3B, 0x03, + 0x03, 0xC2, 0x66, 0x3C, 0xC0, 0x00, 0x30, 0xC0, 0x00, 0x00, 0x64, 0xA0, + 0x00, 0x81, 0xC7, 0x8E, 0x0C, 0x07, 0x80, 0x70, 0x0E, 0x01, 0x80, 0xFF, + 0x80, 0x00, 0x1F, 0xF0, 0x00, 0x70, 0x0E, 0x01, 0xC0, 0x18, 0x38, 0x71, + 0xC0, 0x80, 0x00, 0x3E, 0x31, 0xB0, 0x78, 0x30, 0x18, 0x18, 0x38, 0x18, + 0x18, 0x0C, 0x00, 0x00, 0x01, 0x80, 0x03, 0xF0, 0x06, 0x0E, 0x06, 0x01, + 0x86, 0x00, 0x66, 0x1D, 0xBB, 0x31, 0xCF, 0x18, 0xC7, 0x98, 0x63, 0xCC, + 0x31, 0xE6, 0x11, 0xB3, 0x99, 0xCC, 0xF7, 0x86, 0x00, 0x01, 0x80, 0x00, + 0x70, 0x40, 0x0F, 0xE0, 0x06, 0x00, 0xF0, 0x0F, 0x00, 0x90, 0x19, 0x81, + 0x98, 0x10, 0x83, 0x0C, 0x3F, 0xC2, 0x04, 0x60, 0x66, 0x06, 0xC0, 0x30, + 0xFF, 0x18, 0x33, 0x03, 0x60, 0x6C, 0x0D, 0x83, 0x3F, 0xC6, 0x06, 0xC0, + 0x78, 0x0F, 0x01, 0xE0, 0x6F, 0xF8, 0x1F, 0x86, 0x19, 0x81, 0xA0, 0x3C, + 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x68, 0x0D, 0x83, 0x18, 0x61, 0xF0, + 0xFF, 0x18, 0x33, 0x03, 0x60, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, + 0x78, 0x0F, 0x03, 0x60, 0xCF, 0xF0, 0xFF, 0xE0, 0x30, 0x18, 0x0C, 0x06, + 0x03, 0xFD, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0F, 0xF8, 0xFF, 0xC0, 0xC0, + 0xC0, 0xC0, 0xC0, 0xFE, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x0F, 0x83, + 0x0E, 0x60, 0x66, 0x03, 0xC0, 0x0C, 0x00, 0xC1, 0xFC, 0x03, 0xC0, 0x36, + 0x03, 0x60, 0x73, 0x0F, 0x0F, 0x10, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, + 0x07, 0x80, 0xFF, 0xFE, 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x06, + 0xFF, 0xFF, 0xFF, 0xC0, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x07, + 0x8F, 0x1E, 0x27, 0x80, 0xC0, 0xD8, 0x33, 0x0C, 0x63, 0x0C, 0xC1, 0xB8, + 0x3F, 0x07, 0x30, 0xC3, 0x18, 0x63, 0x06, 0x60, 0x6C, 0x0C, 0xC0, 0xC0, + 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xE0, + 0x3F, 0x01, 0xFC, 0x1F, 0xE0, 0xFD, 0x05, 0xEC, 0x6F, 0x63, 0x79, 0x13, + 0xCD, 0x9E, 0x6C, 0xF1, 0x47, 0x8E, 0x3C, 0x71, 0x80, 0xE0, 0x7C, 0x0F, + 0xC1, 0xE8, 0x3D, 0x87, 0x98, 0xF1, 0x1E, 0x33, 0xC3, 0x78, 0x6F, 0x07, + 0xE0, 0x7C, 0x0E, 0x0F, 0x81, 0x83, 0x18, 0x0C, 0xC0, 0x6C, 0x01, 0xE0, + 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1B, 0x01, 0x98, 0x0C, 0x60, 0xC0, 0xF8, + 0x00, 0xFF, 0x30, 0x6C, 0x0F, 0x03, 0xC0, 0xF0, 0x6F, 0xF3, 0x00, 0xC0, + 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x00, 0x0F, 0x81, 0x83, 0x18, 0x0C, 0xC0, + 0x6C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1B, 0x01, 0x98, 0x6C, + 0x60, 0xC0, 0xFB, 0x00, 0x08, 0xFF, 0x8C, 0x0E, 0xC0, 0x6C, 0x06, 0xC0, + 0x6C, 0x0C, 0xFF, 0x8C, 0x0E, 0xC0, 0x6C, 0x06, 0xC0, 0x6C, 0x06, 0xC0, + 0x70, 0x3F, 0x18, 0x6C, 0x0F, 0x03, 0xC0, 0x1E, 0x01, 0xF0, 0x0E, 0x00, + 0xF0, 0x3C, 0x0D, 0x86, 0x3F, 0x00, 0xFF, 0x86, 0x03, 0x01, 0x80, 0xC0, + 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x80, 0xC0, 0xC0, 0x78, 0x0F, + 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x01, + 0xB0, 0x61, 0xF0, 0xC0, 0x6C, 0x0D, 0x81, 0x10, 0x63, 0x0C, 0x61, 0x04, + 0x60, 0xCC, 0x19, 0x01, 0x60, 0x3C, 0x07, 0x00, 0x60, 0xC1, 0x81, 0x30, + 0xE1, 0x98, 0x70, 0xCC, 0x28, 0x66, 0x26, 0x21, 0x13, 0x30, 0xC8, 0x98, + 0x6C, 0x4C, 0x14, 0x34, 0x0A, 0x1A, 0x07, 0x07, 0x03, 0x03, 0x80, 0x81, + 0x80, 0x60, 0x63, 0x0C, 0x30, 0xC1, 0x98, 0x0F, 0x00, 0xE0, 0x06, 0x00, + 0xF0, 0x19, 0x01, 0x98, 0x30, 0xC6, 0x0E, 0x60, 0x60, 0xC0, 0x36, 0x06, + 0x30, 0xC3, 0x0C, 0x19, 0x81, 0xD8, 0x0F, 0x00, 0x60, 0x06, 0x00, 0x60, + 0x06, 0x00, 0x60, 0x06, 0x00, 0xFF, 0xC0, 0x60, 0x30, 0x0C, 0x06, 0x03, + 0x01, 0xC0, 0x60, 0x30, 0x18, 0x06, 0x03, 0x00, 0xFF, 0xC0, 0xFB, 0x6D, + 0xB6, 0xDB, 0x6D, 0xB6, 0xE0, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84, + 0x10, 0x80, 0xED, 0xB6, 0xDB, 0x6D, 0xB6, 0xDB, 0xE0, 0x30, 0x60, 0xA2, + 0x44, 0xD8, 0xA1, 0x80, 0xFF, 0xC0, 0xC6, 0x30, 0x7E, 0x71, 0xB0, 0xC0, + 0x60, 0xF3, 0xDB, 0x0D, 0x86, 0xC7, 0x3D, 0xC0, 0xC0, 0x60, 0x30, 0x1B, + 0xCE, 0x36, 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x7C, 0x6D, 0xE0, 0x3C, + 0x66, 0xC3, 0xC0, 0xC0, 0xC0, 0xC0, 0xC3, 0x66, 0x3C, 0x03, 0x03, 0x03, + 0x3B, 0x67, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x67, 0x3B, 0x3C, 0x66, + 0xC3, 0xC3, 0xFF, 0xC0, 0xC0, 0xC3, 0x66, 0x3C, 0x36, 0x6F, 0x66, 0x66, + 0x66, 0x66, 0x60, 0x3B, 0x67, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x67, + 0x3B, 0x03, 0x03, 0xC6, 0x7C, 0xC0, 0xC0, 0xC0, 0xDE, 0xE3, 0xC3, 0xC3, + 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xFF, 0xFF, 0xC0, 0x30, 0x03, + 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0xE0, 0xC0, 0x60, 0x30, 0x18, 0x4C, + 0x46, 0x63, 0x61, 0xF0, 0xEC, 0x62, 0x31, 0x98, 0x6C, 0x30, 0xFF, 0xFF, + 0xFF, 0xC0, 0xDE, 0xF7, 0x1C, 0xF0, 0xC7, 0x86, 0x3C, 0x31, 0xE1, 0x8F, + 0x0C, 0x78, 0x63, 0xC3, 0x1E, 0x18, 0xC0, 0xDE, 0xE3, 0xC3, 0xC3, 0xC3, + 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x3C, 0x66, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, + 0xC3, 0x66, 0x3C, 0xDE, 0x71, 0xB0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, + 0xE3, 0x6F, 0x30, 0x18, 0x0C, 0x00, 0x3B, 0x67, 0xC3, 0xC3, 0xC3, 0xC3, + 0xC3, 0xC3, 0x67, 0x3B, 0x03, 0x03, 0x03, 0xDF, 0x31, 0x8C, 0x63, 0x18, + 0xC6, 0x00, 0x3E, 0xE3, 0xC0, 0xC0, 0xE0, 0x3C, 0x07, 0xC3, 0xE3, 0x7E, + 0x66, 0xF6, 0x66, 0x66, 0x66, 0x67, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, + 0xC3, 0xC3, 0xC7, 0x7B, 0xC1, 0xA0, 0x98, 0xCC, 0x42, 0x21, 0xB0, 0xD0, + 0x28, 0x1C, 0x0C, 0x00, 0xC6, 0x1E, 0x38, 0x91, 0xC4, 0xCA, 0x66, 0xD3, + 0x16, 0xD0, 0xA6, 0x87, 0x1C, 0x38, 0xC0, 0xC6, 0x00, 0x43, 0x62, 0x36, + 0x1C, 0x18, 0x1C, 0x3C, 0x26, 0x62, 0x43, 0xC1, 0x21, 0x98, 0xCC, 0x42, + 0x61, 0xB0, 0xD0, 0x38, 0x1C, 0x0C, 0x06, 0x03, 0x01, 0x03, 0x00, 0xFE, + 0x0C, 0x30, 0xC1, 0x86, 0x18, 0x20, 0xC1, 0xFC, 0x36, 0x66, 0x66, 0x6E, + 0xCE, 0x66, 0x66, 0x66, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xC6, 0x66, + 0x66, 0x67, 0x37, 0x66, 0x66, 0x66, 0xC0, 0x61, 0x24, 0x38}; + +const GFXglyph FreeSans9pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 5, 0, 1}, // 0x20 ' ' + {0, 2, 13, 6, 2, -12}, // 0x21 '!' + {4, 5, 4, 6, 1, -12}, // 0x22 '"' + {7, 10, 12, 10, 0, -11}, // 0x23 '#' + {22, 9, 16, 10, 1, -13}, // 0x24 '$' + {40, 16, 13, 16, 1, -12}, // 0x25 '%' + {66, 11, 13, 12, 1, -12}, // 0x26 '&' + {84, 2, 4, 4, 1, -12}, // 0x27 ''' + {85, 4, 17, 6, 1, -12}, // 0x28 '(' + {94, 4, 17, 6, 1, -12}, // 0x29 ')' + {103, 5, 5, 7, 1, -12}, // 0x2A '*' + {107, 6, 8, 11, 3, -7}, // 0x2B '+' + {113, 2, 4, 5, 2, 0}, // 0x2C ',' + {114, 4, 1, 6, 1, -4}, // 0x2D '-' + {115, 2, 1, 5, 1, 0}, // 0x2E '.' + {116, 5, 13, 5, 0, -12}, // 0x2F '/' + {125, 8, 13, 10, 1, -12}, // 0x30 '0' + {138, 4, 13, 10, 3, -12}, // 0x31 '1' + {145, 9, 13, 10, 1, -12}, // 0x32 '2' + {160, 8, 13, 10, 1, -12}, // 0x33 '3' + {173, 7, 13, 10, 2, -12}, // 0x34 '4' + {185, 9, 13, 10, 1, -12}, // 0x35 '5' + {200, 9, 13, 10, 1, -12}, // 0x36 '6' + {215, 8, 13, 10, 0, -12}, // 0x37 '7' + {228, 9, 13, 10, 1, -12}, // 0x38 '8' + {243, 8, 13, 10, 1, -12}, // 0x39 '9' + {256, 2, 10, 5, 1, -9}, // 0x3A ':' + {259, 3, 12, 5, 1, -8}, // 0x3B ';' + {264, 9, 9, 11, 1, -8}, // 0x3C '<' + {275, 9, 4, 11, 1, -5}, // 0x3D '=' + {280, 9, 9, 11, 1, -8}, // 0x3E '>' + {291, 9, 13, 10, 1, -12}, // 0x3F '?' + {306, 17, 16, 18, 1, -12}, // 0x40 '@' + {340, 12, 13, 12, 0, -12}, // 0x41 'A' + {360, 11, 13, 12, 1, -12}, // 0x42 'B' + {378, 11, 13, 13, 1, -12}, // 0x43 'C' + {396, 11, 13, 13, 1, -12}, // 0x44 'D' + {414, 9, 13, 11, 1, -12}, // 0x45 'E' + {429, 8, 13, 11, 1, -12}, // 0x46 'F' + {442, 12, 13, 14, 1, -12}, // 0x47 'G' + {462, 11, 13, 13, 1, -12}, // 0x48 'H' + {480, 2, 13, 5, 2, -12}, // 0x49 'I' + {484, 7, 13, 10, 1, -12}, // 0x4A 'J' + {496, 11, 13, 12, 1, -12}, // 0x4B 'K' + {514, 8, 13, 10, 1, -12}, // 0x4C 'L' + {527, 13, 13, 15, 1, -12}, // 0x4D 'M' + {549, 11, 13, 13, 1, -12}, // 0x4E 'N' + {567, 13, 13, 14, 1, -12}, // 0x4F 'O' + {589, 10, 13, 12, 1, -12}, // 0x50 'P' + {606, 13, 14, 14, 1, -12}, // 0x51 'Q' + {629, 12, 13, 13, 1, -12}, // 0x52 'R' + {649, 10, 13, 12, 1, -12}, // 0x53 'S' + {666, 9, 13, 11, 1, -12}, // 0x54 'T' + {681, 11, 13, 13, 1, -12}, // 0x55 'U' + {699, 11, 13, 12, 0, -12}, // 0x56 'V' + {717, 17, 13, 17, 0, -12}, // 0x57 'W' + {745, 12, 13, 12, 0, -12}, // 0x58 'X' + {765, 12, 13, 12, 0, -12}, // 0x59 'Y' + {785, 10, 13, 11, 1, -12}, // 0x5A 'Z' + {802, 3, 17, 5, 1, -12}, // 0x5B '[' + {809, 5, 13, 5, 0, -12}, // 0x5C '\' + {818, 3, 17, 5, 0, -12}, // 0x5D ']' + {825, 7, 7, 8, 1, -12}, // 0x5E '^' + {832, 10, 1, 10, 0, 3}, // 0x5F '_' + {834, 4, 3, 5, 0, -12}, // 0x60 '`' + {836, 9, 10, 10, 1, -9}, // 0x61 'a' + {848, 9, 13, 10, 1, -12}, // 0x62 'b' + {863, 8, 10, 9, 1, -9}, // 0x63 'c' + {873, 8, 13, 10, 1, -12}, // 0x64 'd' + {886, 8, 10, 10, 1, -9}, // 0x65 'e' + {896, 4, 13, 5, 1, -12}, // 0x66 'f' + {903, 8, 14, 10, 1, -9}, // 0x67 'g' + {917, 8, 13, 10, 1, -12}, // 0x68 'h' + {930, 2, 13, 4, 1, -12}, // 0x69 'i' + {934, 4, 17, 4, 0, -12}, // 0x6A 'j' + {943, 9, 13, 9, 1, -12}, // 0x6B 'k' + {958, 2, 13, 4, 1, -12}, // 0x6C 'l' + {962, 13, 10, 15, 1, -9}, // 0x6D 'm' + {979, 8, 10, 10, 1, -9}, // 0x6E 'n' + {989, 8, 10, 10, 1, -9}, // 0x6F 'o' + {999, 9, 13, 10, 1, -9}, // 0x70 'p' + {1014, 8, 13, 10, 1, -9}, // 0x71 'q' + {1027, 5, 10, 6, 1, -9}, // 0x72 'r' + {1034, 8, 10, 9, 1, -9}, // 0x73 's' + {1044, 4, 12, 5, 1, -11}, // 0x74 't' + {1050, 8, 10, 10, 1, -9}, // 0x75 'u' + {1060, 9, 10, 9, 0, -9}, // 0x76 'v' + {1072, 13, 10, 13, 0, -9}, // 0x77 'w' + {1089, 8, 10, 9, 0, -9}, // 0x78 'x' + {1099, 9, 14, 9, 0, -9}, // 0x79 'y' + {1115, 7, 10, 9, 1, -9}, // 0x7A 'z' + {1124, 4, 17, 6, 1, -12}, // 0x7B '{' + {1133, 2, 17, 4, 2, -12}, // 0x7C '|' + {1138, 4, 17, 6, 1, -12}, // 0x7D '}' + {1147, 7, 3, 9, 1, -7}}; // 0x7E '~' + +const GFXfont FreeSans9pt7b PROGMEM = {(uint8_t *)FreeSans9pt7bBitmaps, + (GFXglyph *)FreeSans9pt7bGlyphs, 0x20, + 0x7E, 22}; + +// Approx. 1822 bytes diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBold12pt7b.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBold12pt7b.h new file mode 100644 index 0000000..c1d6ef4 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBold12pt7b.h @@ -0,0 +1,290 @@ +#pragma once +#include + +const uint8_t FreeSansBold12pt7bBitmaps[] PROGMEM = { + 0xFF, 0xFF, 0xFF, 0xFF, 0x76, 0x66, 0x60, 0xFF, 0xF0, 0xF3, 0xFC, 0xFF, + 0x3F, 0xCF, 0x61, 0x98, 0x60, 0x0E, 0x70, 0x73, 0x83, 0x18, 0xFF, 0xF7, + 0xFF, 0xBF, 0xFC, 0x73, 0x83, 0x18, 0x18, 0xC7, 0xFF, 0xBF, 0xFD, 0xFF, + 0xE3, 0x18, 0x39, 0xC1, 0xCE, 0x0E, 0x70, 0x02, 0x00, 0x7E, 0x0F, 0xF8, + 0x7F, 0xE7, 0xAF, 0xB9, 0x3D, 0xC8, 0x0F, 0x40, 0x3F, 0x00, 0xFF, 0x00, + 0xFC, 0x05, 0xFF, 0x27, 0xF9, 0x3F, 0xEB, 0xEF, 0xFE, 0x3F, 0xE0, 0x7C, + 0x00, 0x80, 0x04, 0x00, 0x3C, 0x06, 0x0F, 0xC1, 0x81, 0xFC, 0x30, 0x73, + 0x8C, 0x0C, 0x31, 0x81, 0xCE, 0x60, 0x1F, 0xCC, 0x03, 0xF3, 0x00, 0x3C, + 0x67, 0x80, 0x19, 0xF8, 0x02, 0x7F, 0x80, 0xCE, 0x70, 0x11, 0x86, 0x06, + 0x39, 0xC1, 0x87, 0xF8, 0x30, 0x7E, 0x0C, 0x07, 0x80, 0x07, 0x80, 0x1F, + 0xC0, 0x3F, 0xE0, 0x3C, 0xE0, 0x3C, 0xE0, 0x3E, 0xE0, 0x0F, 0xC0, 0x07, + 0x00, 0x3F, 0x8C, 0x7F, 0xCC, 0xF1, 0xFC, 0xF0, 0xF8, 0xF0, 0x78, 0xF8, + 0xF8, 0x7F, 0xFC, 0x3F, 0xDE, 0x1F, 0x8E, 0xFF, 0xFF, 0x66, 0x0C, 0x73, + 0x8E, 0x71, 0xC7, 0x38, 0xE3, 0x8E, 0x38, 0xE3, 0x8E, 0x1C, 0x71, 0xC3, + 0x8E, 0x18, 0x70, 0xC3, 0x87, 0x1C, 0x38, 0xE3, 0x87, 0x1C, 0x71, 0xC7, + 0x1C, 0x71, 0xCE, 0x38, 0xE7, 0x1C, 0x63, 0x80, 0x10, 0x23, 0x5F, 0xF3, + 0x87, 0x1B, 0x14, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x0F, 0xFF, 0xFF, 0xFF, + 0xF8, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x00, 0xFF, 0xF3, 0x36, 0xC0, 0xFF, + 0xFF, 0xC0, 0xFF, 0xF0, 0x0C, 0x30, 0x86, 0x18, 0x61, 0x0C, 0x30, 0xC2, + 0x18, 0x61, 0x84, 0x30, 0xC0, 0x1F, 0x83, 0xFC, 0x7F, 0xE7, 0x9E, 0xF0, + 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, + 0xF7, 0x9E, 0x7F, 0xE3, 0xFC, 0x0F, 0x00, 0x06, 0x1C, 0x7F, 0xFF, 0xE3, + 0xC7, 0x8F, 0x1E, 0x3C, 0x78, 0xF1, 0xE3, 0xC7, 0x8F, 0x1E, 0x1F, 0x83, + 0xFC, 0x7F, 0xEF, 0x9F, 0xF0, 0xFF, 0x0F, 0x00, 0xF0, 0x0F, 0x01, 0xE0, + 0x3C, 0x0F, 0x81, 0xE0, 0x3C, 0x03, 0x80, 0x7F, 0xF7, 0xFF, 0x7F, 0xF0, + 0x1F, 0x07, 0xFC, 0xFF, 0xEF, 0x1E, 0xF1, 0xE0, 0x1E, 0x03, 0xC0, 0x78, + 0x07, 0xC0, 0x1E, 0x00, 0xF0, 0x0F, 0xF0, 0xFF, 0x1F, 0x7F, 0xE7, 0xFC, + 0x1F, 0x80, 0x03, 0xC0, 0xF8, 0x1F, 0x07, 0xE1, 0xBC, 0x27, 0x8C, 0xF3, + 0x1E, 0x63, 0xD8, 0x7B, 0xFF, 0xFF, 0xFF, 0xFE, 0x07, 0x80, 0xF0, 0x1E, + 0x03, 0xC0, 0x3F, 0xE7, 0xFE, 0x7F, 0xE7, 0x00, 0x60, 0x06, 0xF8, 0x7F, + 0xCF, 0xFE, 0xF1, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xFE, 0x1E, 0xFF, + 0xE7, 0xFC, 0x3F, 0x00, 0x0F, 0x83, 0xFC, 0x7F, 0xE7, 0x9F, 0xF0, 0x0F, + 0x78, 0xFF, 0xCF, 0xFE, 0xF9, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xF7, + 0x9F, 0x7F, 0xE3, 0xFC, 0x0F, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0xE0, + 0x1C, 0x07, 0x01, 0xE0, 0x38, 0x0F, 0x01, 0xC0, 0x78, 0x0F, 0x01, 0xE0, + 0x38, 0x0F, 0x01, 0xE0, 0x3C, 0x00, 0x0F, 0x03, 0xFC, 0x7F, 0xC7, 0x9E, + 0x70, 0xE7, 0x0E, 0x39, 0xC1, 0xF8, 0x3F, 0xC7, 0x9E, 0xF0, 0xFF, 0x0F, + 0xF0, 0xFF, 0x9F, 0x7F, 0xE3, 0xFC, 0x1F, 0x80, 0x1F, 0x03, 0xFC, 0x7F, + 0xEF, 0x9E, 0xF0, 0xEF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF9, 0xF7, 0xFF, 0x3F, + 0xF1, 0xEF, 0x00, 0xEF, 0x1E, 0x7F, 0xE7, 0xFC, 0x1F, 0x00, 0xFF, 0xF0, + 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x0F, 0xFF, 0x11, 0x6C, + 0x00, 0x10, 0x07, 0x03, 0xF1, 0xFC, 0x7E, 0x0F, 0x80, 0xE0, 0x0F, 0xC0, + 0x3F, 0x80, 0x7F, 0x00, 0xF0, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, + 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x0E, 0x00, 0xFC, + 0x07, 0xF0, 0x0F, 0xE0, 0x1F, 0x00, 0xF0, 0x7F, 0x1F, 0x8F, 0xE0, 0xF0, + 0x08, 0x00, 0x1F, 0x07, 0xFC, 0x7F, 0xEF, 0x9F, 0xF0, 0xFF, 0x0F, 0x00, + 0xF0, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x0E, 0x00, 0xE0, 0x00, + 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x00, 0xFE, 0x00, 0x1F, 0xFC, 0x03, 0xC0, + 0xF0, 0x38, 0x01, 0xC3, 0x80, 0x07, 0x18, 0x3D, 0x99, 0x87, 0xEC, 0x6C, + 0x71, 0xC3, 0xC3, 0x06, 0x1E, 0x18, 0x30, 0xF1, 0x81, 0x87, 0x8C, 0x18, + 0x7C, 0x60, 0xC3, 0x63, 0x8E, 0x3B, 0x8F, 0xDF, 0x8C, 0x3C, 0xF0, 0x70, + 0x00, 0x01, 0xC0, 0x00, 0x07, 0x80, 0x80, 0x1F, 0xFE, 0x00, 0x1F, 0xC0, + 0x00, 0x03, 0xE0, 0x03, 0xE0, 0x03, 0xE0, 0x07, 0xF0, 0x07, 0xF0, 0x07, + 0x70, 0x0F, 0x78, 0x0E, 0x78, 0x0E, 0x38, 0x1E, 0x3C, 0x1C, 0x3C, 0x3F, + 0xFC, 0x3F, 0xFE, 0x3F, 0xFE, 0x78, 0x0E, 0x78, 0x0F, 0x70, 0x0F, 0xF0, + 0x07, 0xFF, 0xC3, 0xFF, 0xCF, 0xFF, 0x3C, 0x3E, 0xF0, 0x7B, 0xC1, 0xEF, + 0x0F, 0xBF, 0xFC, 0xFF, 0xE3, 0xFF, 0xCF, 0x07, 0xBC, 0x0F, 0xF0, 0x3F, + 0xC0, 0xFF, 0x07, 0xFF, 0xFE, 0xFF, 0xFB, 0xFF, 0x80, 0x07, 0xE0, 0x1F, + 0xF8, 0x3F, 0xFC, 0x7C, 0x3E, 0x78, 0x1F, 0xF8, 0x0F, 0xF0, 0x00, 0xF0, + 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF8, 0x0F, 0x78, + 0x1F, 0x7C, 0x3E, 0x3F, 0xFE, 0x1F, 0xFC, 0x07, 0xF0, 0xFF, 0xE1, 0xFF, + 0xE3, 0xFF, 0xE7, 0x83, 0xEF, 0x03, 0xDE, 0x07, 0xFC, 0x07, 0xF8, 0x0F, + 0xF0, 0x1F, 0xE0, 0x3F, 0xC0, 0x7F, 0x80, 0xFF, 0x03, 0xFE, 0x07, 0xBC, + 0x1F, 0x7F, 0xFC, 0xFF, 0xF1, 0xFF, 0x80, 0xFF, 0xF7, 0xFF, 0xBF, 0xFD, + 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1F, 0xFC, 0xFF, 0xE7, 0xFF, 0x3C, + 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, + 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, + 0xFE, 0xFF, 0xEF, 0xFE, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, + 0x00, 0xF0, 0x0F, 0x00, 0x03, 0xF0, 0x0F, 0xFC, 0x3F, 0xFE, 0x3E, 0x1F, + 0x78, 0x07, 0x78, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF0, 0x7F, 0xF0, 0x7F, + 0xF0, 0x7F, 0xF0, 0x07, 0x78, 0x07, 0x7C, 0x0F, 0x3E, 0x1F, 0x3F, 0xFB, + 0x0F, 0xFB, 0x03, 0xE3, 0xF0, 0x3F, 0xC0, 0xFF, 0x03, 0xFC, 0x0F, 0xF0, + 0x3F, 0xC0, 0xFF, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xFC, + 0x0F, 0xF0, 0x3F, 0xC0, 0xFF, 0x03, 0xFC, 0x0F, 0xF0, 0x3F, 0xC0, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xE0, 0x3C, + 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, + 0xF8, 0xFF, 0x1F, 0xE3, 0xFC, 0x7B, 0xFE, 0x7F, 0xC3, 0xE0, 0xF0, 0x3E, + 0xF0, 0x3C, 0xF0, 0x78, 0xF0, 0xF0, 0xF1, 0xE0, 0xF3, 0xC0, 0xF7, 0x80, + 0xFF, 0x00, 0xFF, 0x80, 0xFF, 0x80, 0xFB, 0xC0, 0xF1, 0xE0, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0x78, 0xF0, 0x3C, 0xF0, 0x3E, 0xF0, 0x1E, 0xF0, 0x1E, + 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, + 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0xFF, 0xFF, 0xFF, 0xFC, 0xF8, + 0x1F, 0xFE, 0x0F, 0xFF, 0x0F, 0xFF, 0x87, 0xFF, 0xC3, 0xFF, 0xE1, 0xFF, + 0xF9, 0xFF, 0xFC, 0xEF, 0xFE, 0x77, 0xFB, 0x3B, 0xFD, 0xDD, 0xFE, 0xFC, + 0xFF, 0x7E, 0x7F, 0x9F, 0x3F, 0xCF, 0x9F, 0xE7, 0x8F, 0xF3, 0xC7, 0xF8, + 0xE3, 0xC0, 0xF0, 0x1F, 0xF0, 0x3F, 0xF0, 0x7F, 0xE0, 0xFF, 0xE1, 0xFF, + 0xC3, 0xFD, 0xC7, 0xFB, 0x8F, 0xF3, 0x9F, 0xE7, 0x3F, 0xC7, 0x7F, 0x8F, + 0xFF, 0x0F, 0xFE, 0x1F, 0xFC, 0x1F, 0xF8, 0x1F, 0xF0, 0x3F, 0xE0, 0x3C, + 0x03, 0xE0, 0x0F, 0xFC, 0x0F, 0xFF, 0x87, 0xC7, 0xC7, 0x80, 0xF3, 0xC0, + 0x7B, 0xC0, 0x1F, 0xE0, 0x0F, 0xF0, 0x07, 0xF8, 0x03, 0xFC, 0x01, 0xFE, + 0x00, 0xF7, 0x80, 0xF3, 0xC0, 0x78, 0xF0, 0xF8, 0x7F, 0xFC, 0x1F, 0xFC, + 0x03, 0xF8, 0x00, 0xFF, 0xE3, 0xFF, 0xEF, 0xFF, 0xBC, 0x1F, 0xF0, 0x3F, + 0xC0, 0xFF, 0x03, 0xFC, 0x1F, 0xFF, 0xFB, 0xFF, 0xCF, 0xFE, 0x3C, 0x00, + 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x00, 0x03, + 0xE0, 0x0F, 0xFC, 0x0F, 0xFF, 0x87, 0xC7, 0xC7, 0x80, 0xF3, 0xC0, 0x7B, + 0xC0, 0x1F, 0xE0, 0x0F, 0xF0, 0x07, 0xF8, 0x03, 0xFC, 0x01, 0xFE, 0x04, + 0xF7, 0x87, 0xF3, 0xC3, 0xF8, 0xF0, 0xF8, 0x7F, 0xFC, 0x1F, 0xFF, 0x83, + 0xF1, 0x80, 0x00, 0x00, 0xFF, 0xF8, 0xFF, 0xFC, 0xFF, 0xFC, 0xF0, 0x3E, + 0xF0, 0x1E, 0xF0, 0x1E, 0xF0, 0x1E, 0xF0, 0x3C, 0xFF, 0xF8, 0xFF, 0xF0, + 0xFF, 0xF8, 0xF0, 0x3C, 0xF0, 0x3C, 0xF0, 0x3C, 0xF0, 0x3C, 0xF0, 0x3C, + 0xF0, 0x3C, 0xF0, 0x1F, 0x0F, 0xC0, 0x7F, 0xE1, 0xFF, 0xE7, 0xC3, 0xEF, + 0x03, 0xDE, 0x00, 0x3C, 0x00, 0x7F, 0x00, 0x7F, 0xF0, 0x3F, 0xF8, 0x0F, + 0xF8, 0x01, 0xF0, 0x01, 0xFE, 0x03, 0xDE, 0x0F, 0xBF, 0xFE, 0x3F, 0xF8, + 0x1F, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, + 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, + 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0xF0, 0x3F, 0xC0, 0xFF, 0x03, 0xFC, 0x0F, + 0xF0, 0x3F, 0xC0, 0xFF, 0x03, 0xFC, 0x0F, 0xF0, 0x3F, 0xC0, 0xFF, 0x03, + 0xFC, 0x0F, 0xF0, 0x3F, 0xC0, 0xF7, 0x87, 0x9F, 0xFE, 0x3F, 0xF0, 0x3F, + 0x00, 0x70, 0x0E, 0xF0, 0x3D, 0xE0, 0x79, 0xC0, 0xE3, 0x81, 0xC7, 0x87, + 0x87, 0x0E, 0x0E, 0x1C, 0x1E, 0x78, 0x1C, 0xE0, 0x39, 0xC0, 0x73, 0x80, + 0x7E, 0x00, 0xFC, 0x01, 0xF8, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x70, + 0x38, 0x1C, 0xE0, 0xF0, 0x79, 0xE1, 0xF0, 0xF3, 0xC3, 0xE1, 0xE3, 0x87, + 0xC3, 0x87, 0x0F, 0x87, 0x0E, 0x3B, 0x9E, 0x1E, 0x77, 0x38, 0x1C, 0xEE, + 0x70, 0x39, 0xCC, 0xE0, 0x73, 0x99, 0xC0, 0x6E, 0x3F, 0x00, 0xFC, 0x7E, + 0x01, 0xF8, 0xFC, 0x03, 0xF0, 0xF8, 0x03, 0xE1, 0xE0, 0x07, 0x83, 0xC0, + 0x0F, 0x07, 0x80, 0xF0, 0x3C, 0xF0, 0xF9, 0xE1, 0xE1, 0xE7, 0x83, 0xCF, + 0x03, 0xFC, 0x03, 0xF0, 0x07, 0xE0, 0x07, 0x80, 0x0F, 0x00, 0x3F, 0x00, + 0xFF, 0x01, 0xFE, 0x07, 0x9E, 0x0F, 0x1E, 0x3C, 0x3C, 0xF8, 0x3D, 0xE0, + 0x78, 0xF0, 0x1E, 0x78, 0x1E, 0x78, 0x3C, 0x3C, 0x3C, 0x3C, 0x78, 0x1E, + 0x78, 0x0E, 0x70, 0x0F, 0xF0, 0x07, 0xE0, 0x07, 0xE0, 0x03, 0xC0, 0x03, + 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, + 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x01, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, + 0x00, 0xF8, 0x07, 0x80, 0x78, 0x07, 0x80, 0x7C, 0x03, 0xC0, 0x3C, 0x03, + 0xC0, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFC, 0xF3, 0xCF, + 0x3C, 0xF3, 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, 0xFF, 0xFF, + 0xC0, 0xC1, 0x81, 0x03, 0x06, 0x04, 0x0C, 0x18, 0x10, 0x30, 0x60, 0x40, + 0xC1, 0x81, 0x03, 0x06, 0xFF, 0xFF, 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, 0xF3, + 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, 0xF3, 0xCF, 0xFF, 0xFF, 0xC0, 0x0F, 0x00, + 0xF0, 0x0F, 0x01, 0xF8, 0x1B, 0x83, 0x9C, 0x39, 0xC3, 0x0C, 0x70, 0xE7, + 0x0E, 0xE0, 0x70, 0xFF, 0xFF, 0xFF, 0xFC, 0xE6, 0x30, 0x1F, 0x83, 0xFF, + 0x1F, 0xFD, 0xE1, 0xE0, 0x0F, 0x03, 0xF9, 0xFF, 0xDF, 0x1E, 0xF0, 0xF7, + 0x8F, 0xBF, 0xFC, 0xFF, 0xE3, 0xCF, 0x80, 0xF0, 0x07, 0x80, 0x3C, 0x01, + 0xE0, 0x0F, 0x00, 0x7B, 0xC3, 0xFF, 0x9F, 0xFE, 0xF8, 0xF7, 0x83, 0xFC, + 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3F, 0xE3, 0xDF, 0xFE, 0xFF, 0xE7, 0xBE, + 0x00, 0x0F, 0x83, 0xFE, 0x7F, 0xF7, 0x8F, 0xF0, 0x7F, 0x00, 0xF0, 0x0F, + 0x00, 0xF0, 0x77, 0x8F, 0x7F, 0xF3, 0xFE, 0x0F, 0x80, 0x00, 0x78, 0x03, + 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x8F, 0xBC, 0xFF, 0xEF, 0xFF, 0x78, 0xFF, + 0x83, 0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3D, 0xE3, 0xEF, 0xFF, 0x3F, + 0xF8, 0xFB, 0xC0, 0x1F, 0x81, 0xFE, 0x1F, 0xF9, 0xF1, 0xCF, 0x07, 0x7F, + 0xFB, 0xFF, 0xDE, 0x00, 0xF0, 0x03, 0xC3, 0x9F, 0xFC, 0x7F, 0xC0, 0xF8, + 0x00, 0x3E, 0xFD, 0xFB, 0xC7, 0x9F, 0xBF, 0x3C, 0x78, 0xF1, 0xE3, 0xC7, + 0x8F, 0x1E, 0x3C, 0x78, 0xF0, 0x1E, 0x79, 0xFB, 0xDF, 0xFE, 0xF1, 0xFF, + 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7F, 0xC7, 0xDF, 0xFE, 0x7F, + 0xF1, 0xF7, 0x80, 0x3C, 0x01, 0xFF, 0x1E, 0x7F, 0xF0, 0xFE, 0x00, 0xF0, + 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x7C, 0xFF, 0xEF, 0xFF, 0xF9, + 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, + 0xFF, 0x0F, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3C, + 0xF3, 0xC0, 0x00, 0xF3, 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, + 0xF3, 0xCF, 0xFF, 0xFF, 0x80, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, + 0x0F, 0x0F, 0xF1, 0xEF, 0x3C, 0xF7, 0x8F, 0xF0, 0xFF, 0x0F, 0xF8, 0xFF, + 0x8F, 0x3C, 0xF1, 0xCF, 0x1E, 0xF0, 0xEF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0x8F, 0x9F, 0xFB, 0xFB, 0xFF, 0xFF, + 0xFC, 0xF8, 0xFF, 0x1E, 0x1F, 0xE3, 0xC3, 0xFC, 0x78, 0x7F, 0x8F, 0x0F, + 0xF1, 0xE1, 0xFE, 0x3C, 0x3F, 0xC7, 0x87, 0xF8, 0xF0, 0xFF, 0x1E, 0x1E, + 0xF7, 0xCF, 0xFE, 0xFF, 0xFF, 0x9F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, + 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xF0, 0x0F, 0x81, 0xFF, 0x1F, + 0xFC, 0xF1, 0xEF, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7B, 0xC7, + 0x9F, 0xFC, 0x7F, 0xC0, 0xF8, 0x00, 0xF7, 0xC7, 0xFF, 0x3F, 0xFD, 0xF1, + 0xEF, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7F, 0xC7, 0xBF, 0xFD, + 0xFF, 0xCF, 0x78, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x00, + 0x0F, 0x79, 0xFF, 0xDF, 0xFE, 0xF1, 0xFF, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, + 0x0F, 0xF0, 0x7B, 0xC7, 0xDF, 0xFE, 0x7F, 0xF1, 0xF7, 0x80, 0x3C, 0x01, + 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0xF3, 0xF7, 0xFF, 0xF8, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x1F, 0x87, 0xFC, 0xFF, 0xEF, + 0x0F, 0xF8, 0x0F, 0xF0, 0x7F, 0xE0, 0xFF, 0x01, 0xFF, 0x0F, 0xFF, 0xE7, + 0xFE, 0x1F, 0x80, 0x79, 0xE7, 0xBF, 0xFD, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, + 0x7D, 0xF3, 0xC0, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, + 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x1F, 0xFF, 0xF7, 0xFF, 0x3E, 0xF0, 0xF0, + 0x7B, 0x83, 0x9E, 0x1C, 0xF1, 0xE3, 0x8E, 0x1C, 0x70, 0x77, 0x83, 0xB8, + 0x1D, 0xC0, 0x7E, 0x03, 0xE0, 0x1F, 0x00, 0x70, 0x00, 0xF0, 0xE1, 0xDC, + 0x78, 0x77, 0x1F, 0x3D, 0xE7, 0xCF, 0x79, 0xB3, 0x8E, 0x6C, 0xE3, 0xBB, + 0x38, 0xEE, 0xFC, 0x1F, 0x3F, 0x07, 0xC7, 0xC1, 0xF1, 0xF0, 0x7C, 0x78, + 0x0E, 0x1E, 0x00, 0x78, 0xF3, 0xC7, 0x8F, 0x78, 0x3B, 0x81, 0xFC, 0x07, + 0xC0, 0x1E, 0x01, 0xF0, 0x1F, 0xC0, 0xEF, 0x0F, 0x78, 0xF1, 0xE7, 0x87, + 0x00, 0xF0, 0x7B, 0x83, 0x9E, 0x1C, 0x71, 0xE3, 0x8E, 0x1E, 0x70, 0x73, + 0x83, 0xB8, 0x1F, 0xC0, 0x7E, 0x03, 0xE0, 0x0F, 0x00, 0x70, 0x03, 0x80, + 0x3C, 0x07, 0xC0, 0x3E, 0x01, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, 0xFC, 0x0F, + 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x0F, 0xFF, 0xFF, 0xFF, 0xC0, + 0x1C, 0xF3, 0xCE, 0x38, 0xE3, 0x8E, 0x38, 0xE3, 0xBC, 0xF0, 0xE3, 0x8E, + 0x38, 0xE3, 0x8E, 0x3C, 0xF1, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xE3, 0x8F, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x0F, 0x3D, 0xC7, 0x1C, + 0x71, 0xC7, 0x1C, 0xF3, 0xCE, 0x00, 0x78, 0x0F, 0xE0, 0xCF, 0x30, 0x7F, + 0x01, 0xE0}; + +const GFXglyph FreeSansBold12pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 7, 0, 1}, // 0x20 ' ' + {0, 4, 17, 8, 3, -16}, // 0x21 '!' + {9, 10, 6, 11, 1, -17}, // 0x22 '"' + {17, 13, 16, 13, 0, -15}, // 0x23 '#' + {43, 13, 20, 13, 0, -17}, // 0x24 '$' + {76, 19, 17, 21, 1, -16}, // 0x25 '%' + {117, 16, 17, 17, 1, -16}, // 0x26 '&' + {151, 4, 6, 6, 1, -17}, // 0x27 ''' + {154, 6, 22, 8, 1, -17}, // 0x28 '(' + {171, 6, 22, 8, 1, -17}, // 0x29 ')' + {188, 7, 8, 9, 1, -17}, // 0x2A '*' + {195, 11, 11, 14, 2, -10}, // 0x2B '+' + {211, 4, 7, 6, 1, -2}, // 0x2C ',' + {215, 6, 3, 8, 1, -7}, // 0x2D '-' + {218, 4, 3, 6, 1, -2}, // 0x2E '.' + {220, 6, 17, 7, 0, -16}, // 0x2F '/' + {233, 12, 17, 13, 1, -16}, // 0x30 '0' + {259, 7, 17, 14, 3, -16}, // 0x31 '1' + {274, 12, 17, 13, 1, -16}, // 0x32 '2' + {300, 12, 17, 13, 1, -16}, // 0x33 '3' + {326, 11, 17, 13, 1, -16}, // 0x34 '4' + {350, 12, 17, 13, 1, -16}, // 0x35 '5' + {376, 12, 17, 13, 1, -16}, // 0x36 '6' + {402, 11, 17, 13, 1, -16}, // 0x37 '7' + {426, 12, 17, 13, 1, -16}, // 0x38 '8' + {452, 12, 17, 13, 1, -16}, // 0x39 '9' + {478, 4, 12, 6, 1, -11}, // 0x3A ':' + {484, 4, 16, 6, 1, -11}, // 0x3B ';' + {492, 12, 12, 14, 1, -11}, // 0x3C '<' + {510, 12, 9, 14, 1, -9}, // 0x3D '=' + {524, 12, 12, 14, 1, -11}, // 0x3E '>' + {542, 12, 18, 15, 2, -17}, // 0x3F '?' + {569, 21, 21, 23, 1, -17}, // 0x40 '@' + {625, 16, 18, 17, 0, -17}, // 0x41 'A' + {661, 14, 18, 17, 2, -17}, // 0x42 'B' + {693, 16, 18, 17, 1, -17}, // 0x43 'C' + {729, 15, 18, 17, 2, -17}, // 0x44 'D' + {763, 13, 18, 16, 2, -17}, // 0x45 'E' + {793, 12, 18, 15, 2, -17}, // 0x46 'F' + {820, 16, 18, 18, 1, -17}, // 0x47 'G' + {856, 14, 18, 18, 2, -17}, // 0x48 'H' + {888, 4, 18, 7, 2, -17}, // 0x49 'I' + {897, 11, 18, 14, 1, -17}, // 0x4A 'J' + {922, 16, 18, 17, 2, -17}, // 0x4B 'K' + {958, 11, 18, 15, 2, -17}, // 0x4C 'L' + {983, 17, 18, 21, 2, -17}, // 0x4D 'M' + {1022, 15, 18, 18, 2, -17}, // 0x4E 'N' + {1056, 17, 18, 19, 1, -17}, // 0x4F 'O' + {1095, 14, 18, 16, 2, -17}, // 0x50 'P' + {1127, 17, 19, 19, 1, -17}, // 0x51 'Q' + {1168, 16, 18, 17, 2, -17}, // 0x52 'R' + {1204, 15, 18, 16, 1, -17}, // 0x53 'S' + {1238, 12, 18, 15, 2, -17}, // 0x54 'T' + {1265, 14, 18, 18, 2, -17}, // 0x55 'U' + {1297, 15, 18, 16, 0, -17}, // 0x56 'V' + {1331, 23, 18, 23, 0, -17}, // 0x57 'W' + {1383, 15, 18, 16, 1, -17}, // 0x58 'X' + {1417, 16, 18, 15, 0, -17}, // 0x59 'Y' + {1453, 13, 18, 15, 1, -17}, // 0x5A 'Z' + {1483, 6, 23, 8, 2, -17}, // 0x5B '[' + {1501, 7, 17, 7, 0, -16}, // 0x5C '\' + {1516, 6, 23, 8, 0, -17}, // 0x5D ']' + {1534, 12, 11, 14, 1, -16}, // 0x5E '^' + {1551, 15, 2, 13, -1, 4}, // 0x5F '_' + {1555, 4, 3, 6, 0, -17}, // 0x60 '`' + {1557, 13, 13, 14, 1, -12}, // 0x61 'a' + {1579, 13, 18, 15, 2, -17}, // 0x62 'b' + {1609, 12, 13, 13, 1, -12}, // 0x63 'c' + {1629, 13, 18, 15, 1, -17}, // 0x64 'd' + {1659, 13, 13, 14, 1, -12}, // 0x65 'e' + {1681, 7, 18, 8, 1, -17}, // 0x66 'f' + {1697, 13, 18, 15, 1, -12}, // 0x67 'g' + {1727, 12, 18, 14, 2, -17}, // 0x68 'h' + {1754, 4, 18, 7, 2, -17}, // 0x69 'i' + {1763, 6, 23, 7, 0, -17}, // 0x6A 'j' + {1781, 12, 18, 14, 2, -17}, // 0x6B 'k' + {1808, 4, 18, 6, 2, -17}, // 0x6C 'l' + {1817, 19, 13, 21, 2, -12}, // 0x6D 'm' + {1848, 12, 13, 15, 2, -12}, // 0x6E 'n' + {1868, 13, 13, 15, 1, -12}, // 0x6F 'o' + {1890, 13, 18, 15, 2, -12}, // 0x70 'p' + {1920, 13, 18, 15, 1, -12}, // 0x71 'q' + {1950, 8, 13, 9, 2, -12}, // 0x72 'r' + {1963, 12, 13, 13, 1, -12}, // 0x73 's' + {1983, 6, 15, 8, 1, -14}, // 0x74 't' + {1995, 12, 13, 15, 2, -12}, // 0x75 'u' + {2015, 13, 13, 13, 0, -12}, // 0x76 'v' + {2037, 18, 13, 19, 0, -12}, // 0x77 'w' + {2067, 13, 13, 13, 0, -12}, // 0x78 'x' + {2089, 13, 18, 13, 0, -12}, // 0x79 'y' + {2119, 10, 13, 12, 1, -12}, // 0x7A 'z' + {2136, 6, 23, 9, 1, -17}, // 0x7B '{' + {2154, 2, 22, 7, 2, -17}, // 0x7C '|' + {2160, 6, 23, 9, 3, -17}, // 0x7D '}' + {2178, 12, 5, 12, 0, -7}}; // 0x7E '~' + +const GFXfont FreeSansBold12pt7b PROGMEM = { + (uint8_t *)FreeSansBold12pt7bBitmaps, (GFXglyph *)FreeSansBold12pt7bGlyphs, + 0x20, 0x7E, 29}; + +// Approx. 2858 bytes diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBold18pt7b.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBold18pt7b.h new file mode 100644 index 0000000..f0e2807 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBold18pt7b.h @@ -0,0 +1,483 @@ +#pragma once +#include + +const uint8_t FreeSansBold18pt7bBitmaps[] PROGMEM = { + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xE7, 0x39, 0xCE, 0x73, 0x80, + 0x0F, 0xFF, 0xFF, 0xF8, 0xF8, 0xFF, 0xC7, 0xFE, 0x3F, 0xF1, 0xFF, 0x8F, + 0xFC, 0x7D, 0xC1, 0xCE, 0x0E, 0x70, 0x70, 0x03, 0xC3, 0x80, 0x3C, 0x78, + 0x03, 0xC7, 0x80, 0x38, 0x78, 0x07, 0x87, 0x07, 0xFF, 0xFF, 0x7F, 0xFF, + 0xF7, 0xFF, 0xFF, 0x7F, 0xFF, 0xF0, 0xF0, 0xE0, 0x0F, 0x0E, 0x00, 0xF1, + 0xE0, 0x0F, 0x1E, 0x00, 0xE1, 0xE0, 0xFF, 0xFF, 0xCF, 0xFF, 0xFC, 0xFF, + 0xFF, 0xCF, 0xFF, 0xFC, 0x1C, 0x3C, 0x03, 0xC3, 0x80, 0x3C, 0x78, 0x03, + 0xC7, 0x80, 0x38, 0x78, 0x03, 0x87, 0x80, 0x00, 0x60, 0x00, 0x7F, 0x80, + 0x3F, 0xFC, 0x0F, 0xFF, 0xC3, 0xFF, 0xFC, 0xFC, 0xDF, 0x9F, 0x19, 0xFB, + 0xC3, 0x1F, 0x78, 0x63, 0xEF, 0x8C, 0x01, 0xFD, 0x80, 0x1F, 0xF0, 0x01, + 0xFF, 0xC0, 0x1F, 0xFE, 0x00, 0x7F, 0xE0, 0x03, 0xFE, 0x00, 0x67, 0xE0, + 0x0C, 0x7F, 0xE1, 0x8F, 0xFC, 0x31, 0xFF, 0xC6, 0x3E, 0xFC, 0xDF, 0x9F, + 0xFF, 0xF1, 0xFF, 0xFC, 0x0F, 0xFF, 0x00, 0x7F, 0x80, 0x01, 0x80, 0x00, + 0x30, 0x00, 0x06, 0x00, 0x0F, 0x00, 0x1C, 0x01, 0xFE, 0x00, 0xE0, 0x1F, + 0xF8, 0x0E, 0x00, 0xFF, 0xC0, 0x70, 0x0F, 0x0F, 0x07, 0x00, 0x70, 0x38, + 0x38, 0x03, 0x81, 0xC3, 0x80, 0x1C, 0x0E, 0x3C, 0x00, 0xF0, 0xF1, 0xC0, + 0x03, 0xFF, 0x1C, 0x00, 0x1F, 0xF8, 0xE0, 0x00, 0x7F, 0x8E, 0x00, 0x00, + 0xF0, 0x70, 0xF8, 0x00, 0x07, 0x1F, 0xF0, 0x00, 0x39, 0xFF, 0xC0, 0x03, + 0x8F, 0xFE, 0x00, 0x1C, 0xF0, 0x78, 0x01, 0xC7, 0x01, 0xC0, 0x0C, 0x38, + 0x0E, 0x00, 0xE1, 0xC0, 0x70, 0x06, 0x0F, 0x07, 0x80, 0x70, 0x3F, 0xF8, + 0x07, 0x01, 0xFF, 0xC0, 0x38, 0x07, 0xFC, 0x03, 0x80, 0x0F, 0x80, 0x01, + 0xF0, 0x00, 0x1F, 0xE0, 0x00, 0xFF, 0xC0, 0x03, 0xFF, 0x80, 0x1F, 0x1E, + 0x00, 0x7C, 0x78, 0x01, 0xF1, 0xE0, 0x07, 0xE7, 0x80, 0x0F, 0xBC, 0x00, + 0x1F, 0xE0, 0x00, 0x3F, 0x00, 0x01, 0xF8, 0x00, 0x1F, 0xF0, 0xF0, 0xFF, + 0xE3, 0xC7, 0xE7, 0xCF, 0x3F, 0x0F, 0xF8, 0xF8, 0x3F, 0xE3, 0xE0, 0x7F, + 0x8F, 0x80, 0xFC, 0x3F, 0x03, 0xF0, 0x7E, 0x3F, 0xE1, 0xFF, 0xFF, 0x83, + 0xFF, 0xFF, 0x07, 0xFE, 0x7E, 0x07, 0xF0, 0xFC, 0xFF, 0xFF, 0xFF, 0xFD, + 0xCE, 0x70, 0x07, 0x87, 0x83, 0xC3, 0xC1, 0xE1, 0xE0, 0xF0, 0x78, 0x78, + 0x3C, 0x1E, 0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, + 0x0F, 0x03, 0x81, 0xE0, 0xF0, 0x78, 0x1E, 0x0F, 0x03, 0x81, 0xE0, 0x70, + 0x3C, 0x0E, 0x07, 0x80, 0xF0, 0x38, 0x1E, 0x07, 0x83, 0xC0, 0xF0, 0x78, + 0x3C, 0x0F, 0x07, 0x83, 0xC0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, + 0xC1, 0xE0, 0xF0, 0x78, 0x78, 0x3C, 0x1E, 0x0F, 0x0F, 0x07, 0x87, 0x83, + 0xC1, 0xC1, 0xE0, 0xE0, 0xF0, 0x00, 0x06, 0x00, 0x60, 0x06, 0x07, 0x6E, + 0x7F, 0xE3, 0xFC, 0x0F, 0x01, 0xF8, 0x1F, 0x83, 0x9C, 0x10, 0x80, 0x03, + 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xC0, 0x03, 0xC0, 0x03, + 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0xFF, 0xFF, 0xFF, 0x8C, 0x63, + 0x37, 0xB0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0x80, 0x01, + 0x81, 0xC0, 0xC0, 0x60, 0x70, 0x38, 0x18, 0x0C, 0x0E, 0x06, 0x03, 0x01, + 0x81, 0xC0, 0xC0, 0x60, 0x30, 0x38, 0x18, 0x0C, 0x0E, 0x07, 0x03, 0x01, + 0x81, 0xC0, 0xC0, 0x00, 0x07, 0xF0, 0x0F, 0xFE, 0x0F, 0xFF, 0x87, 0xFF, + 0xC7, 0xE3, 0xF3, 0xE0, 0xF9, 0xF0, 0x7D, 0xF0, 0x1F, 0xF8, 0x0F, 0xFC, + 0x07, 0xFE, 0x03, 0xFF, 0x01, 0xFF, 0x80, 0xFF, 0xC0, 0x7F, 0xE0, 0x3F, + 0xF0, 0x1F, 0xF8, 0x0F, 0xFC, 0x07, 0xDF, 0x07, 0xCF, 0x83, 0xE7, 0xE3, + 0xF1, 0xFF, 0xF0, 0xFF, 0xF8, 0x3F, 0xF8, 0x07, 0xF0, 0x00, 0x01, 0xC0, + 0xF0, 0x3C, 0x1F, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xC1, 0xF0, 0x7C, + 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, + 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC0, 0x07, 0xF0, 0x0F, 0xFE, 0x0F, 0xFF, + 0x8F, 0xFF, 0xE7, 0xE3, 0xF7, 0xE0, 0xFF, 0xE0, 0x3F, 0xF0, 0x1F, 0xF8, + 0x0F, 0x80, 0x07, 0xC0, 0x07, 0xE0, 0x03, 0xE0, 0x03, 0xF0, 0x03, 0xF0, + 0x07, 0xF0, 0x07, 0xF0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xC0, 0x07, 0xC0, + 0x03, 0xE0, 0x03, 0xFF, 0xFD, 0xFF, 0xFE, 0xFF, 0xFF, 0x7F, 0xFF, 0x80, + 0x07, 0xE0, 0x0F, 0xFC, 0x0F, 0xFF, 0x0F, 0xFF, 0xCF, 0xC3, 0xF7, 0xC0, + 0xFB, 0xE0, 0x7D, 0xF0, 0x3E, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x0F, 0x80, + 0x3F, 0x80, 0x1F, 0xC0, 0x0F, 0xF0, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x0F, + 0xFC, 0x07, 0xFE, 0x03, 0xFF, 0x83, 0xF7, 0xC3, 0xF3, 0xFF, 0xF8, 0xFF, + 0xF8, 0x3F, 0xF8, 0x07, 0xF0, 0x00, 0x00, 0xFC, 0x00, 0xFC, 0x01, 0xFC, + 0x01, 0xFC, 0x03, 0xFC, 0x07, 0x7C, 0x07, 0x7C, 0x0E, 0x7C, 0x0E, 0x7C, + 0x1C, 0x7C, 0x18, 0x7C, 0x38, 0x7C, 0x70, 0x7C, 0x60, 0x7C, 0xE0, 0x7C, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x7C, 0x00, 0x7C, + 0x00, 0x7C, 0x00, 0x7C, 0x00, 0x7C, 0x00, 0x7C, 0x1F, 0xFF, 0x0F, 0xFF, + 0x8F, 0xFF, 0xC7, 0xFF, 0xE3, 0xC0, 0x01, 0xE0, 0x00, 0xE0, 0x00, 0x70, + 0x00, 0x79, 0xF0, 0x3F, 0xFE, 0x1F, 0xFF, 0x8F, 0xFF, 0xE7, 0xC3, 0xF0, + 0x00, 0xFC, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xFE, 0x03, + 0xFF, 0x03, 0xFF, 0xC3, 0xF3, 0xFF, 0xF1, 0xFF, 0xF8, 0x3F, 0xF0, 0x07, + 0xE0, 0x00, 0x03, 0xF8, 0x03, 0xFF, 0x81, 0xFF, 0xF0, 0xFF, 0xFE, 0x3E, + 0x1F, 0x9F, 0x03, 0xE7, 0xC0, 0x03, 0xE0, 0x00, 0xF8, 0xF8, 0x3E, 0xFF, + 0x8F, 0xFF, 0xF3, 0xFF, 0xFE, 0xFE, 0x1F, 0xBF, 0x03, 0xFF, 0x80, 0x7F, + 0xE0, 0x1F, 0xF8, 0x07, 0xFE, 0x01, 0xF7, 0x80, 0x7D, 0xF0, 0x3E, 0x7E, + 0x1F, 0x8F, 0xFF, 0xC1, 0xFF, 0xF0, 0x3F, 0xF0, 0x03, 0xF0, 0x00, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0xF0, 0x00, 0xF8, + 0x00, 0xF8, 0x00, 0x78, 0x00, 0x7C, 0x00, 0x3C, 0x00, 0x3E, 0x00, 0x1E, + 0x00, 0x1F, 0x00, 0x0F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xC0, 0x03, + 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x78, 0x00, 0x7C, 0x00, 0x3E, 0x00, + 0x1F, 0x00, 0x0F, 0x80, 0x00, 0x07, 0xE0, 0x07, 0xFC, 0x0F, 0xFF, 0x07, + 0xFF, 0xC7, 0xC3, 0xF3, 0xC0, 0xF9, 0xE0, 0x3C, 0xF0, 0x1E, 0x78, 0x1F, + 0x1E, 0x1F, 0x07, 0xFF, 0x01, 0xFF, 0x03, 0xFF, 0xE3, 0xF1, 0xF9, 0xF0, + 0x7D, 0xF0, 0x1F, 0xF8, 0x0F, 0xFC, 0x07, 0xFE, 0x03, 0xFF, 0x83, 0xF7, + 0xC3, 0xF3, 0xFF, 0xF8, 0xFF, 0xF8, 0x3F, 0xF8, 0x07, 0xF0, 0x00, 0x07, + 0xE0, 0x0F, 0xFC, 0x0F, 0xFF, 0x0F, 0xFF, 0xC7, 0xE3, 0xF7, 0xE0, 0xFB, + 0xE0, 0x3D, 0xF0, 0x1F, 0xF8, 0x0F, 0xFC, 0x07, 0xFE, 0x03, 0xFF, 0x83, + 0xF7, 0xE3, 0xFB, 0xFF, 0xFC, 0xFF, 0xFE, 0x3F, 0xDF, 0x07, 0xCF, 0x80, + 0x07, 0x80, 0x03, 0xDF, 0x03, 0xE7, 0xC3, 0xE3, 0xFF, 0xF0, 0xFF, 0xF0, + 0x3F, 0xF0, 0x07, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x7F, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x7F, 0xFF, 0xFF, 0xC6, 0x33, 0x9B, 0xD8, 0x00, 0x00, 0xC0, 0x00, + 0xF0, 0x01, 0xFC, 0x03, 0xFF, 0x03, 0xFF, 0x07, 0xFE, 0x0F, 0xFC, 0x03, + 0xF8, 0x00, 0xF0, 0x00, 0x3F, 0x80, 0x0F, 0xFC, 0x00, 0x7F, 0xE0, 0x07, + 0xFF, 0x00, 0x3F, 0xF0, 0x01, 0xFC, 0x00, 0x1F, 0x00, 0x00, 0xC0, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF0, 0xC0, 0x00, 0x3C, 0x00, 0x0F, 0xE0, 0x03, 0xFF, 0x00, 0x3F, 0xF0, + 0x01, 0xFF, 0x80, 0x0F, 0xFC, 0x00, 0x7F, 0x00, 0x03, 0xC0, 0x07, 0xF0, + 0x0F, 0xFC, 0x1F, 0xF8, 0x3F, 0xF8, 0x3F, 0xF0, 0x0F, 0xE0, 0x03, 0xC0, + 0x00, 0xC0, 0x00, 0x00, 0x07, 0xF0, 0x07, 0xFF, 0x03, 0xFF, 0xF1, 0xFF, + 0xFC, 0x7E, 0x3F, 0xBF, 0x03, 0xFF, 0x80, 0x7F, 0xE0, 0x1F, 0xF8, 0x07, + 0xC0, 0x03, 0xF0, 0x01, 0xFC, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x3F, 0x80, + 0x1F, 0xC0, 0x07, 0xC0, 0x03, 0xE0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xE0, + 0x00, 0xF8, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, + 0xFF, 0xFF, 0xC0, 0x01, 0xF8, 0x07, 0xF0, 0x03, 0xE0, 0x01, 0xF8, 0x07, + 0x80, 0x00, 0x7C, 0x0F, 0x00, 0x00, 0x3C, 0x1E, 0x03, 0xE3, 0x9E, 0x3C, + 0x0F, 0xF7, 0x8E, 0x38, 0x1F, 0xFF, 0x0E, 0x78, 0x3E, 0x1F, 0x07, 0x70, + 0x38, 0x0F, 0x07, 0x70, 0x78, 0x0F, 0x07, 0xE0, 0x70, 0x0E, 0x07, 0xE0, + 0x70, 0x0E, 0x07, 0xE0, 0xE0, 0x0E, 0x07, 0xE0, 0xE0, 0x1E, 0x0F, 0xE0, + 0xE0, 0x1C, 0x0E, 0xE0, 0xE0, 0x3C, 0x1E, 0xE0, 0xF0, 0x3C, 0x3C, 0xF0, + 0xF0, 0xFC, 0x7C, 0x70, 0x7F, 0xFF, 0xF8, 0x78, 0x3F, 0xCF, 0xF0, 0x3C, + 0x1F, 0x07, 0xC0, 0x3E, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x0F, + 0xC0, 0x01, 0x00, 0x07, 0xF0, 0x0F, 0x00, 0x03, 0xFF, 0xFF, 0x00, 0x00, + 0xFF, 0xFF, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7F, + 0x00, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x80, 0x01, 0xFF, + 0x80, 0x01, 0xFF, 0x80, 0x01, 0xF7, 0xC0, 0x03, 0xE7, 0xC0, 0x03, 0xE7, + 0xC0, 0x03, 0xE3, 0xE0, 0x07, 0xC3, 0xE0, 0x07, 0xC3, 0xE0, 0x07, 0xC1, + 0xF0, 0x0F, 0x81, 0xF0, 0x0F, 0x81, 0xF0, 0x0F, 0xFF, 0xF8, 0x1F, 0xFF, + 0xF8, 0x1F, 0xFF, 0xFC, 0x1F, 0xFF, 0xFC, 0x3E, 0x00, 0x7C, 0x3E, 0x00, + 0x7E, 0x3E, 0x00, 0x3E, 0x7C, 0x00, 0x3E, 0x7C, 0x00, 0x3F, 0x7C, 0x00, + 0x1F, 0xFF, 0xFC, 0x0F, 0xFF, 0xF0, 0xFF, 0xFF, 0x8F, 0xFF, 0xFC, 0xF8, + 0x07, 0xEF, 0x80, 0x3E, 0xF8, 0x03, 0xEF, 0x80, 0x3E, 0xF8, 0x03, 0xEF, + 0x80, 0x3E, 0xF8, 0x07, 0xCF, 0xFF, 0xF8, 0xFF, 0xFF, 0x0F, 0xFF, 0xF8, + 0xFF, 0xFF, 0xCF, 0x80, 0x7E, 0xF8, 0x01, 0xEF, 0x80, 0x1F, 0xF8, 0x01, + 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x3E, 0xFF, 0xFF, 0xEF, 0xFF, + 0xFC, 0xFF, 0xFF, 0x8F, 0xFF, 0xE0, 0x00, 0xFF, 0x00, 0x07, 0xFF, 0x80, + 0x3F, 0xFF, 0xC0, 0xFF, 0xFF, 0xC3, 0xF8, 0x1F, 0x87, 0xE0, 0x1F, 0x9F, + 0x80, 0x1F, 0x3E, 0x00, 0x1F, 0x7C, 0x00, 0x3F, 0xF0, 0x00, 0x03, 0xE0, + 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3E, 0x00, + 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x7D, 0xF0, 0x00, + 0xFB, 0xF0, 0x03, 0xF3, 0xF0, 0x0F, 0xC7, 0xF0, 0x3F, 0x87, 0xFF, 0xFE, + 0x07, 0xFF, 0xF8, 0x03, 0xFF, 0xC0, 0x01, 0xFE, 0x00, 0xFF, 0xFC, 0x07, + 0xFF, 0xF8, 0x3F, 0xFF, 0xE1, 0xFF, 0xFF, 0x8F, 0x80, 0xFE, 0x7C, 0x01, + 0xF3, 0xE0, 0x07, 0xDF, 0x00, 0x3E, 0xF8, 0x01, 0xF7, 0xC0, 0x07, 0xFE, + 0x00, 0x3F, 0xF0, 0x01, 0xFF, 0x80, 0x0F, 0xFC, 0x00, 0x7F, 0xE0, 0x03, + 0xFF, 0x00, 0x1F, 0xF8, 0x00, 0xFF, 0xC0, 0x0F, 0xFE, 0x00, 0x7D, 0xF0, + 0x03, 0xEF, 0x80, 0x3E, 0x7C, 0x07, 0xF3, 0xFF, 0xFF, 0x1F, 0xFF, 0xF0, + 0xFF, 0xFF, 0x07, 0xFF, 0xE0, 0x00, 0xFF, 0xFF, 0xDF, 0xFF, 0xFB, 0xFF, + 0xFF, 0x7F, 0xFF, 0xEF, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, + 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x7F, 0xFF, 0xCF, 0xFF, + 0xF9, 0xFF, 0xFF, 0x3F, 0xFF, 0xE7, 0xC0, 0x00, 0xF8, 0x00, 0x1F, 0x00, + 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3F, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, + 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0xFF, 0xEF, 0xFF, 0xF7, + 0xFF, 0xFB, 0xFF, 0xFD, 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, + 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, + 0x00, 0x7C, 0x00, 0x00, 0x00, 0x7F, 0x80, 0x03, 0xFF, 0xE0, 0x07, 0xFF, + 0xF8, 0x0F, 0xFF, 0xFC, 0x1F, 0xC0, 0xFE, 0x3F, 0x00, 0x7E, 0x7E, 0x00, + 0x3F, 0x7C, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x03, 0xFF, 0xF8, 0x03, 0xFF, 0xF8, 0x03, + 0xFF, 0xF8, 0x03, 0xFF, 0xFC, 0x00, 0x0F, 0x7C, 0x00, 0x1F, 0x7C, 0x00, + 0x1F, 0x7E, 0x00, 0x3F, 0x3F, 0x00, 0x7F, 0x1F, 0xC1, 0xFF, 0x0F, 0xFF, + 0xFF, 0x07, 0xFF, 0xE7, 0x03, 0xFF, 0xC7, 0x00, 0xFF, 0x07, 0xF8, 0x01, + 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, + 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x01, 0xFF, + 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, + 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, + 0xFF, 0x80, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x1F, 0x00, 0x1F, + 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, + 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, + 0x00, 0x1F, 0x00, 0x1F, 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, 0x1F, + 0xF8, 0x1F, 0xFC, 0x3F, 0x7F, 0xFE, 0x3F, 0xFC, 0x1F, 0xF8, 0x07, 0xE0, + 0xF8, 0x01, 0xFB, 0xE0, 0x0F, 0xCF, 0x80, 0x7E, 0x3E, 0x03, 0xF0, 0xF8, + 0x1F, 0x83, 0xE0, 0xFC, 0x0F, 0x87, 0xE0, 0x3E, 0x3F, 0x00, 0xF8, 0xF8, + 0x03, 0xE7, 0xE0, 0x0F, 0xBF, 0x00, 0x3F, 0xF8, 0x00, 0xFF, 0xF0, 0x03, + 0xFF, 0xE0, 0x0F, 0xFF, 0x80, 0x3F, 0xBF, 0x00, 0xFC, 0x7E, 0x03, 0xE0, + 0xFC, 0x0F, 0x81, 0xF8, 0x3E, 0x07, 0xE0, 0xF8, 0x0F, 0xC3, 0xE0, 0x1F, + 0x8F, 0x80, 0x7F, 0x3E, 0x00, 0xFC, 0xF8, 0x01, 0xFB, 0xE0, 0x03, 0xF0, + 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, + 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, + 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, + 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xFF, 0x00, 0xFF, 0xFF, + 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, + 0x81, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, 0x81, 0xFF, 0xFB, 0xC3, 0xDF, 0xFB, + 0xC3, 0xDF, 0xFB, 0xC3, 0xDF, 0xFB, 0xC3, 0xDF, 0xF9, 0xC7, 0xDF, 0xF9, + 0xE7, 0x9F, 0xF9, 0xE7, 0x9F, 0xF9, 0xE7, 0x9F, 0xF9, 0xE7, 0x9F, 0xF8, + 0xFF, 0x1F, 0xF8, 0xFF, 0x1F, 0xF8, 0xFF, 0x1F, 0xF8, 0xFF, 0x1F, 0xF8, + 0x7F, 0x1F, 0xF8, 0x7E, 0x1F, 0xF8, 0x7E, 0x1F, 0xF8, 0x7E, 0x1F, 0xF8, + 0x3E, 0x1F, 0xF8, 0x01, 0xFF, 0xC0, 0x1F, 0xFE, 0x01, 0xFF, 0xE0, 0x1F, + 0xFF, 0x01, 0xFF, 0xF0, 0x1F, 0xFF, 0x81, 0xFF, 0xF8, 0x1F, 0xFF, 0xC1, + 0xFF, 0xBC, 0x1F, 0xFB, 0xE1, 0xFF, 0x9F, 0x1F, 0xF9, 0xF1, 0xFF, 0x8F, + 0x9F, 0xF8, 0x79, 0xFF, 0x87, 0xDF, 0xF8, 0x3D, 0xFF, 0x83, 0xFF, 0xF8, + 0x1F, 0xFF, 0x81, 0xFF, 0xF8, 0x0F, 0xFF, 0x80, 0xFF, 0xF8, 0x07, 0xFF, + 0x80, 0x3F, 0xF8, 0x03, 0xFF, 0x80, 0x1F, 0x00, 0x7F, 0x00, 0x01, 0xFF, + 0xF0, 0x01, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0x01, 0xFC, 0x1F, 0xC1, 0xF8, + 0x03, 0xF1, 0xF8, 0x00, 0xFC, 0xF8, 0x00, 0x3E, 0x7C, 0x00, 0x1F, 0x7C, + 0x00, 0x07, 0xFE, 0x00, 0x03, 0xFF, 0x00, 0x01, 0xFF, 0x80, 0x00, 0xFF, + 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x3F, 0xF0, 0x00, 0x1F, 0xF8, 0x00, 0x0F, + 0xBE, 0x00, 0x0F, 0x9F, 0x00, 0x07, 0xCF, 0xC0, 0x07, 0xE3, 0xF0, 0x07, + 0xE0, 0xFE, 0x0F, 0xE0, 0x7F, 0xFF, 0xE0, 0x0F, 0xFF, 0xE0, 0x03, 0xFF, + 0xE0, 0x00, 0x3F, 0x80, 0x00, 0xFF, 0xFC, 0x1F, 0xFF, 0xE3, 0xFF, 0xFE, + 0x7F, 0xFF, 0xEF, 0x80, 0xFF, 0xF0, 0x0F, 0xFE, 0x00, 0xFF, 0xC0, 0x1F, + 0xF8, 0x03, 0xFF, 0x00, 0x7F, 0xE0, 0x1F, 0xFC, 0x07, 0xEF, 0xFF, 0xFD, + 0xFF, 0xFF, 0x3F, 0xFF, 0xC7, 0xFF, 0xE0, 0xF8, 0x00, 0x1F, 0x00, 0x03, + 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, + 0xC0, 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x01, 0xFF, + 0xF0, 0x01, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0x01, 0xFC, 0x1F, 0xC1, 0xF8, + 0x03, 0xF1, 0xF8, 0x00, 0xFC, 0xF8, 0x00, 0x3E, 0x7C, 0x00, 0x1F, 0x7C, + 0x00, 0x07, 0xFE, 0x00, 0x03, 0xFF, 0x00, 0x01, 0xFF, 0x80, 0x00, 0xFF, + 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x3F, 0xF0, 0x00, 0x1F, 0xF8, 0x01, 0x0F, + 0xBE, 0x01, 0xCF, 0x9F, 0x01, 0xFF, 0xCF, 0xC0, 0x7F, 0xE3, 0xF0, 0x1F, + 0xE0, 0xFE, 0x0F, 0xF0, 0x7F, 0xFF, 0xF8, 0x0F, 0xFF, 0xFE, 0x03, 0xFF, + 0xEF, 0x80, 0x3F, 0xC3, 0x80, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x07, 0xFF, + 0xFE, 0x3F, 0xFF, 0xF9, 0xFF, 0xFF, 0xCF, 0x80, 0x3F, 0x7C, 0x00, 0xFB, + 0xE0, 0x07, 0xDF, 0x00, 0x3E, 0xF8, 0x01, 0xF7, 0xC0, 0x0F, 0x3E, 0x00, + 0xF9, 0xFF, 0xFF, 0x8F, 0xFF, 0xF8, 0x7F, 0xFF, 0xC3, 0xFF, 0xFF, 0x1F, + 0x00, 0xFC, 0xF8, 0x03, 0xE7, 0xC0, 0x1F, 0x3E, 0x00, 0xF9, 0xF0, 0x07, + 0xCF, 0x80, 0x3E, 0x7C, 0x01, 0xF3, 0xE0, 0x0F, 0x9F, 0x00, 0x7C, 0xF8, + 0x03, 0xF7, 0xC0, 0x0F, 0xC0, 0x07, 0xF8, 0x01, 0xFF, 0xF0, 0x3F, 0xFF, + 0x87, 0xFF, 0xFC, 0x7E, 0x0F, 0xCF, 0xC0, 0x7E, 0xF8, 0x03, 0xEF, 0x80, + 0x3E, 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0xFF, 0x00, 0x07, 0xFF, 0xC0, 0x3F, + 0xFF, 0x81, 0xFF, 0xFC, 0x03, 0xFF, 0xE0, 0x01, 0xFF, 0x00, 0x03, 0xF0, + 0x00, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xFC, 0x03, 0xFF, 0xE0, 0x7E, + 0x7F, 0xFF, 0xE3, 0xFF, 0xFC, 0x1F, 0xFF, 0x00, 0x3F, 0xC0, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x1F, 0x00, 0x03, 0xE0, + 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, + 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, + 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x1F, 0x00, + 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, + 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, + 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, + 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, + 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, + 0x80, 0x1F, 0x7C, 0x03, 0xE7, 0xE0, 0x7E, 0x3F, 0xFF, 0xC3, 0xFF, 0xFC, + 0x0F, 0xFF, 0x00, 0x3F, 0xC0, 0xF8, 0x00, 0xFB, 0xE0, 0x03, 0xE7, 0xC0, + 0x1F, 0x9F, 0x00, 0x7C, 0x7C, 0x01, 0xF0, 0xF8, 0x07, 0xC3, 0xE0, 0x3E, + 0x0F, 0x80, 0xF8, 0x1E, 0x03, 0xE0, 0x7C, 0x1F, 0x01, 0xF0, 0x7C, 0x03, + 0xC1, 0xF0, 0x0F, 0x87, 0x80, 0x3E, 0x3E, 0x00, 0xF8, 0xF8, 0x01, 0xE3, + 0xC0, 0x07, 0xCF, 0x00, 0x1F, 0x7C, 0x00, 0x3D, 0xE0, 0x00, 0xFF, 0x80, + 0x03, 0xFE, 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xC0, 0x00, 0x7F, 0x00, 0x00, + 0xF8, 0x00, 0x03, 0xE0, 0x00, 0xF8, 0x07, 0xC0, 0x3F, 0xF8, 0x07, 0xE0, + 0x3E, 0xFC, 0x07, 0xE0, 0x3E, 0x7C, 0x0F, 0xE0, 0x3E, 0x7C, 0x0F, 0xE0, + 0x7E, 0x7C, 0x0F, 0xE0, 0x7C, 0x7C, 0x0F, 0xF0, 0x7C, 0x3E, 0x0F, 0xF0, + 0x7C, 0x3E, 0x1E, 0xF0, 0x78, 0x3E, 0x1E, 0x70, 0xF8, 0x1E, 0x1E, 0x70, + 0xF8, 0x1E, 0x1E, 0x78, 0xF8, 0x1F, 0x1E, 0x78, 0xF0, 0x1F, 0x3C, 0x78, + 0xF0, 0x0F, 0x3C, 0x39, 0xF0, 0x0F, 0x3C, 0x3D, 0xF0, 0x0F, 0x3C, 0x3D, + 0xE0, 0x0F, 0xBC, 0x3D, 0xE0, 0x07, 0xF8, 0x3D, 0xE0, 0x07, 0xF8, 0x1F, + 0xE0, 0x07, 0xF8, 0x1F, 0xC0, 0x03, 0xF8, 0x1F, 0xC0, 0x03, 0xF8, 0x1F, + 0xC0, 0x03, 0xF0, 0x0F, 0x80, 0x03, 0xF0, 0x0F, 0x80, 0x01, 0xF0, 0x0F, + 0x80, 0xFE, 0x01, 0xF9, 0xF8, 0x07, 0xE3, 0xF0, 0x3F, 0x0F, 0xC0, 0xF8, + 0x1F, 0x87, 0xE0, 0x7E, 0x3F, 0x00, 0xFC, 0xFC, 0x01, 0xF7, 0xE0, 0x07, + 0xFF, 0x00, 0x0F, 0xFC, 0x00, 0x3F, 0xE0, 0x00, 0x7F, 0x00, 0x00, 0xFC, + 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xE0, 0x00, 0xFF, 0x80, 0x03, 0xFF, 0x00, + 0x1F, 0x7E, 0x00, 0xFC, 0xF8, 0x03, 0xE3, 0xF0, 0x1F, 0x87, 0xC0, 0x7C, + 0x1F, 0x83, 0xF0, 0x3F, 0x1F, 0x80, 0xFC, 0x7E, 0x01, 0xFB, 0xF0, 0x07, + 0xF0, 0xFC, 0x01, 0xFF, 0xE0, 0x0F, 0x9F, 0x00, 0xFC, 0xFC, 0x07, 0xC3, + 0xE0, 0x7E, 0x1F, 0x83, 0xE0, 0x7C, 0x1F, 0x03, 0xF1, 0xF0, 0x0F, 0x8F, + 0x80, 0x7E, 0xF8, 0x01, 0xF7, 0xC0, 0x0F, 0xFC, 0x00, 0x3F, 0xE0, 0x00, + 0xFE, 0x00, 0x07, 0xF0, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, + 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x03, + 0xE0, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x7E, 0x00, 0x1F, + 0x80, 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x0F, 0xC0, 0x03, 0xF8, + 0x00, 0x7E, 0x00, 0x1F, 0x80, 0x07, 0xE0, 0x01, 0xFC, 0x00, 0x3F, 0x00, + 0x0F, 0xC0, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x1F, 0x80, 0x07, 0xE0, 0x01, + 0xFC, 0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, + 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, + 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, + 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x38, 0x06, + 0x01, 0x80, 0x70, 0x0C, 0x03, 0x00, 0xE0, 0x18, 0x06, 0x01, 0xC0, 0x30, + 0x0C, 0x03, 0x00, 0xE0, 0x18, 0x06, 0x01, 0xC0, 0x30, 0x0C, 0x03, 0x80, + 0x60, 0x18, 0x07, 0x01, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x1F, 0x1F, + 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, + 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0xFF, 0xFF, + 0xFF, 0xFF, 0x03, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x0F, 0xF0, 0x0F, 0xF0, + 0x0F, 0x78, 0x1E, 0x78, 0x1E, 0x78, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x1E, + 0x78, 0x1E, 0x78, 0x1E, 0x70, 0x0F, 0xF0, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFE, 0xF8, 0xF0, 0xF0, 0xE0, 0xE0, 0x07, 0xF8, 0x07, + 0xFF, 0x83, 0xFF, 0xF1, 0xFF, 0xFE, 0x7C, 0x1F, 0xBE, 0x03, 0xE0, 0x00, + 0xF8, 0x01, 0xFE, 0x0F, 0xFF, 0x8F, 0xFF, 0xE7, 0xF8, 0xFB, 0xF0, 0x3E, + 0xF8, 0x0F, 0xBE, 0x07, 0xEF, 0xC3, 0xFB, 0xFF, 0xFE, 0x7F, 0xFF, 0x8F, + 0xFB, 0xF1, 0xF8, 0xFC, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xE0, + 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xE7, 0xE0, 0xFB, 0xFC, + 0x3F, 0xFF, 0xCF, 0xFF, 0xF3, 0xF8, 0x7E, 0xFC, 0x0F, 0xBF, 0x03, 0xFF, + 0x80, 0x7F, 0xE0, 0x1F, 0xF8, 0x07, 0xFE, 0x01, 0xFF, 0x80, 0x7F, 0xF0, + 0x3F, 0xFC, 0x0F, 0xBF, 0x87, 0xEF, 0xFF, 0xF3, 0xFF, 0xFC, 0xFB, 0xFC, + 0x3E, 0x7E, 0x00, 0x03, 0xF0, 0x07, 0xFE, 0x0F, 0xFF, 0x87, 0xFF, 0xE7, + 0xE1, 0xFB, 0xE0, 0x7F, 0xE0, 0x3F, 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, + 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0xFB, 0xE0, 0x7D, 0xF8, 0x7E, 0x7F, + 0xFE, 0x3F, 0xFE, 0x0F, 0xFE, 0x00, 0xFC, 0x00, 0x00, 0x03, 0xE0, 0x00, + 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, + 0xF8, 0x1F, 0x1F, 0x0F, 0xFB, 0xE3, 0xFF, 0xFC, 0xFF, 0xFF, 0xBF, 0x8F, + 0xF7, 0xC0, 0x7F, 0xF8, 0x0F, 0xFE, 0x00, 0xFF, 0xC0, 0x1F, 0xF8, 0x03, + 0xFF, 0x00, 0x7F, 0xE0, 0x0F, 0xFE, 0x03, 0xF7, 0xC0, 0x7E, 0xFC, 0x3F, + 0xCF, 0xFF, 0xF8, 0xFF, 0xFF, 0x0F, 0xFB, 0xE0, 0xFC, 0x7C, 0x07, 0xE0, + 0x07, 0xFE, 0x03, 0xFF, 0xE0, 0xFF, 0xF8, 0x7E, 0x1F, 0x1F, 0x03, 0xCF, + 0x80, 0xFB, 0xE0, 0x1E, 0xFF, 0xFF, 0xBF, 0xFF, 0xEF, 0xFF, 0xFB, 0xE0, + 0x00, 0xF8, 0x00, 0x3F, 0x03, 0xE7, 0xE1, 0xF9, 0xFF, 0xFC, 0x3F, 0xFE, + 0x07, 0xFF, 0x00, 0x7F, 0x00, 0x0F, 0xC7, 0xF3, 0xFC, 0xFF, 0x3E, 0x0F, + 0x83, 0xE3, 0xFE, 0xFF, 0xBF, 0xE3, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, + 0xF8, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, + 0x0F, 0x80, 0x07, 0xC7, 0xC3, 0xFD, 0xF3, 0xFF, 0xFC, 0xFF, 0xFF, 0x7E, + 0x1F, 0xDF, 0x03, 0xFF, 0xC0, 0xFF, 0xE0, 0x1F, 0xF8, 0x07, 0xFE, 0x01, + 0xFF, 0x80, 0x7F, 0xE0, 0x1F, 0xFC, 0x0F, 0xDF, 0x03, 0xF7, 0xE1, 0xFD, + 0xFF, 0xFF, 0x3F, 0xFF, 0xC7, 0xFD, 0xF0, 0x7C, 0x7C, 0x00, 0x1F, 0x00, + 0x07, 0xFF, 0x03, 0xF7, 0xE1, 0xF9, 0xFF, 0xFC, 0x3F, 0xFE, 0x01, 0xFE, + 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, + 0xC0, 0x03, 0xE0, 0x01, 0xF1, 0xF0, 0xFB, 0xFE, 0x7F, 0xFF, 0xBF, 0xFF, + 0xDF, 0xC3, 0xFF, 0xC0, 0xFF, 0xC0, 0x7F, 0xE0, 0x3F, 0xF0, 0x1F, 0xF8, + 0x0F, 0xFC, 0x07, 0xFE, 0x03, 0xFF, 0x01, 0xFF, 0x80, 0xFF, 0xC0, 0x7F, + 0xE0, 0x3F, 0xF0, 0x1F, 0xF8, 0x0F, 0xFC, 0x07, 0xC0, 0xFF, 0xFF, 0xF0, + 0x00, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xC0, 0x3E, 0x7C, 0xF9, 0xF0, 0x00, 0x00, 0x1F, 0x3E, 0x7C, 0xF9, + 0xF3, 0xE7, 0xCF, 0x9F, 0x3E, 0x7C, 0xF9, 0xF3, 0xE7, 0xCF, 0x9F, 0x3E, + 0x7C, 0xF9, 0xF3, 0xFF, 0xFF, 0xFE, 0xF8, 0xF8, 0x00, 0x7C, 0x00, 0x3E, + 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x3E, + 0xF8, 0x3E, 0x7C, 0x3F, 0x3E, 0x3F, 0x1F, 0x3F, 0x0F, 0x9F, 0x07, 0xDF, + 0x03, 0xFF, 0x81, 0xFF, 0xC0, 0xFF, 0xF0, 0x7F, 0xF8, 0x3F, 0x7E, 0x1F, + 0x1F, 0x0F, 0x87, 0xC7, 0xC3, 0xF3, 0xE0, 0xF9, 0xF0, 0x7E, 0xF8, 0x1F, + 0x7C, 0x0F, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xF8, 0xF8, 0x3F, 0x1F, + 0x7F, 0x9F, 0xF3, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xC3, 0xF8, + 0x7F, 0xF8, 0x3F, 0x07, 0xFE, 0x07, 0xC0, 0xFF, 0xC0, 0xF8, 0x1F, 0xF8, + 0x1F, 0x03, 0xFF, 0x03, 0xE0, 0x7F, 0xE0, 0x7C, 0x0F, 0xFC, 0x0F, 0x81, + 0xFF, 0x81, 0xF0, 0x3F, 0xF0, 0x3E, 0x07, 0xFE, 0x07, 0xC0, 0xFF, 0xC0, + 0xF8, 0x1F, 0xF8, 0x1F, 0x03, 0xFF, 0x03, 0xE0, 0x7F, 0xE0, 0x7C, 0x0F, + 0x80, 0xF8, 0xF8, 0x7D, 0xFF, 0x3F, 0xFF, 0xDF, 0xFF, 0xEF, 0xE1, 0xFF, + 0xE0, 0x7F, 0xE0, 0x3F, 0xF0, 0x1F, 0xF8, 0x0F, 0xFC, 0x07, 0xFE, 0x03, + 0xFF, 0x01, 0xFF, 0x80, 0xFF, 0xC0, 0x7F, 0xE0, 0x3F, 0xF0, 0x1F, 0xF8, + 0x0F, 0xFC, 0x07, 0xFE, 0x03, 0xE0, 0x03, 0xF8, 0x01, 0xFF, 0xC0, 0x7F, + 0xFC, 0x1F, 0xFF, 0xC7, 0xF0, 0xFC, 0xF8, 0x0F, 0xBF, 0x01, 0xFF, 0xC0, + 0x1F, 0xF8, 0x03, 0xFF, 0x00, 0x7F, 0xE0, 0x0F, 0xFC, 0x01, 0xFF, 0xC0, + 0x7E, 0xF8, 0x0F, 0x9F, 0x87, 0xF1, 0xFF, 0xFC, 0x1F, 0xFF, 0x01, 0xFF, + 0xC0, 0x0F, 0xE0, 0x00, 0xF8, 0xF8, 0x3E, 0xFF, 0x8F, 0xFF, 0xF3, 0xFF, + 0xFC, 0xFE, 0x1F, 0xBF, 0x03, 0xEF, 0xC0, 0xFF, 0xE0, 0x1F, 0xF8, 0x07, + 0xFE, 0x01, 0xFF, 0x80, 0x7F, 0xE0, 0x1F, 0xFC, 0x0F, 0xFF, 0x03, 0xEF, + 0xE1, 0xFB, 0xFF, 0xFC, 0xFF, 0xFF, 0x3E, 0xFF, 0x0F, 0x8F, 0x83, 0xE0, + 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF8, 0x00, + 0x3E, 0x00, 0x00, 0x07, 0xE3, 0xE1, 0xFF, 0x7C, 0x7F, 0xFF, 0x9F, 0xFF, + 0xF7, 0xF1, 0xFE, 0xF8, 0x0F, 0xFF, 0x01, 0xFF, 0xC0, 0x1F, 0xF8, 0x03, + 0xFF, 0x00, 0x7F, 0xE0, 0x0F, 0xFC, 0x01, 0xFF, 0xC0, 0x7E, 0xF8, 0x0F, + 0xDF, 0x83, 0xF9, 0xFF, 0xFF, 0x3F, 0xFF, 0xE1, 0xFF, 0x7C, 0x1F, 0x8F, + 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x1F, + 0x00, 0x03, 0xE0, 0x00, 0x7C, 0xF8, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xE1, + 0xF8, 0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, + 0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x00, 0x07, 0xF0, 0x0F, 0xFE, + 0x0F, 0xFF, 0x87, 0xFF, 0xE7, 0xE1, 0xF3, 0xE0, 0x79, 0xF8, 0x00, 0xFF, + 0x80, 0x3F, 0xFC, 0x1F, 0xFF, 0x83, 0xFF, 0xC0, 0x3F, 0xF0, 0x01, 0xFF, + 0xC0, 0x7D, 0xF0, 0x7E, 0xFF, 0xFE, 0x3F, 0xFF, 0x0F, 0xFF, 0x01, 0xFE, + 0x00, 0x3E, 0x1F, 0x0F, 0x87, 0xC3, 0xE7, 0xFF, 0xFF, 0xFF, 0x3E, 0x1F, + 0x0F, 0x87, 0xC3, 0xE1, 0xF0, 0xF8, 0x7C, 0x3E, 0x1F, 0x0F, 0x87, 0xF3, + 0xF8, 0xFC, 0x3E, 0xF8, 0x0F, 0xFC, 0x07, 0xFE, 0x03, 0xFF, 0x01, 0xFF, + 0x80, 0xFF, 0xC0, 0x7F, 0xE0, 0x3F, 0xF0, 0x1F, 0xF8, 0x0F, 0xFC, 0x07, + 0xFE, 0x03, 0xFF, 0x01, 0xFF, 0x80, 0xFF, 0xC0, 0xFF, 0xF0, 0xFF, 0xFF, + 0xFF, 0x7F, 0xFF, 0x9F, 0xF7, 0xC7, 0xE3, 0xE0, 0x7C, 0x07, 0xCF, 0x80, + 0xF9, 0xF0, 0x1F, 0x1F, 0x07, 0xC3, 0xE0, 0xF8, 0x7C, 0x1F, 0x07, 0x83, + 0xC0, 0xF8, 0xF8, 0x1F, 0x1F, 0x01, 0xE3, 0xC0, 0x3E, 0x78, 0x07, 0xDF, + 0x00, 0x7B, 0xC0, 0x0F, 0xF8, 0x01, 0xFF, 0x00, 0x1F, 0xC0, 0x03, 0xF8, + 0x00, 0x7F, 0x00, 0x07, 0xC0, 0x00, 0xFC, 0x1F, 0x03, 0xEF, 0x83, 0xE0, + 0x7D, 0xF0, 0x7E, 0x1F, 0x3E, 0x0F, 0xC3, 0xE3, 0xC3, 0xF8, 0x7C, 0x7C, + 0x7F, 0x0F, 0x0F, 0x8F, 0xF3, 0xE1, 0xF1, 0xDE, 0x7C, 0x1E, 0x7B, 0xCF, + 0x83, 0xEF, 0x39, 0xE0, 0x7D, 0xE7, 0x3C, 0x07, 0xB8, 0xFF, 0x80, 0xF7, + 0x1F, 0xE0, 0x1F, 0xE3, 0xFC, 0x03, 0xFC, 0x3F, 0x80, 0x3F, 0x07, 0xF0, + 0x07, 0xE0, 0xFC, 0x00, 0xFC, 0x1F, 0x80, 0x0F, 0x83, 0xF0, 0x00, 0xFC, + 0x1F, 0x9F, 0x07, 0xE7, 0xE3, 0xF0, 0xF8, 0xF8, 0x1F, 0x7E, 0x07, 0xDF, + 0x00, 0xFF, 0x80, 0x1F, 0xE0, 0x07, 0xF0, 0x00, 0xF8, 0x00, 0x7F, 0x00, + 0x3F, 0xE0, 0x0F, 0xF8, 0x07, 0xDF, 0x03, 0xF7, 0xE0, 0xF8, 0xF8, 0x7E, + 0x3F, 0x1F, 0x07, 0xEF, 0xC0, 0xF8, 0x7C, 0x03, 0xEF, 0x80, 0xF9, 0xF8, + 0x1F, 0x1F, 0x03, 0xE3, 0xE0, 0xF8, 0x7C, 0x1F, 0x07, 0xC3, 0xE0, 0xF8, + 0x78, 0x0F, 0x1F, 0x01, 0xF3, 0xC0, 0x3E, 0x78, 0x03, 0xDF, 0x00, 0x7F, + 0xC0, 0x0F, 0xF8, 0x00, 0xFF, 0x00, 0x1F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, + 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x1E, 0x00, 0x07, 0xC0, 0x07, 0xF8, + 0x00, 0xFE, 0x00, 0x1F, 0x80, 0x03, 0xE0, 0x00, 0x7F, 0xFE, 0x7F, 0xFE, + 0x7F, 0xFE, 0x7F, 0xFE, 0x00, 0x7E, 0x00, 0xFC, 0x01, 0xF8, 0x03, 0xF0, + 0x03, 0xF0, 0x07, 0xE0, 0x0F, 0xC0, 0x1F, 0x80, 0x3F, 0x00, 0x7E, 0x00, + 0xFE, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x87, + 0xC7, 0xE3, 0xF1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, 0xC1, + 0xE0, 0xF0, 0xF9, 0xF8, 0xF0, 0x7E, 0x0F, 0x83, 0xC1, 0xE0, 0xF0, 0x78, + 0x3C, 0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xFC, 0x7E, 0x1F, 0x07, 0x80, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xE0, 0xF0, 0x7C, 0x3E, 0x1F, 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, + 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x7C, 0x1F, 0x83, 0xC7, 0xE7, 0xC3, + 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, 0xC7, 0xE3, 0xE1, + 0xF0, 0xF0, 0x00, 0x3C, 0x00, 0xFE, 0x0F, 0xFE, 0x1E, 0x1F, 0xFC, 0x0F, + 0xC0, 0x0F, 0x00}; + +const GFXglyph FreeSansBold18pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 10, 0, 1}, // 0x20 ' ' + {0, 5, 25, 12, 4, -24}, // 0x21 '!' + {16, 13, 9, 17, 2, -25}, // 0x22 '"' + {31, 20, 24, 19, 0, -23}, // 0x23 '#' + {91, 19, 29, 19, 0, -25}, // 0x24 '$' + {160, 29, 25, 31, 1, -24}, // 0x25 '%' + {251, 22, 25, 25, 2, -24}, // 0x26 '&' + {320, 5, 9, 9, 2, -25}, // 0x27 ''' + {326, 9, 33, 12, 1, -25}, // 0x28 '(' + {364, 9, 33, 12, 1, -25}, // 0x29 ')' + {402, 12, 11, 14, 0, -25}, // 0x2A '*' + {419, 16, 16, 20, 2, -15}, // 0x2B '+' + {451, 5, 11, 9, 2, -4}, // 0x2C ',' + {458, 9, 4, 12, 1, -10}, // 0x2D '-' + {463, 5, 5, 9, 2, -4}, // 0x2E '.' + {467, 9, 25, 10, 0, -24}, // 0x2F '/' + {496, 17, 25, 19, 1, -24}, // 0x30 '0' + {550, 10, 25, 19, 3, -24}, // 0x31 '1' + {582, 17, 25, 19, 1, -24}, // 0x32 '2' + {636, 17, 25, 19, 1, -24}, // 0x33 '3' + {690, 16, 25, 19, 2, -24}, // 0x34 '4' + {740, 17, 25, 19, 1, -24}, // 0x35 '5' + {794, 18, 25, 19, 1, -24}, // 0x36 '6' + {851, 17, 25, 19, 1, -24}, // 0x37 '7' + {905, 17, 25, 19, 1, -24}, // 0x38 '8' + {959, 17, 25, 19, 1, -24}, // 0x39 '9' + {1013, 5, 18, 9, 2, -17}, // 0x3A ':' + {1025, 5, 24, 9, 2, -17}, // 0x3B ';' + {1040, 18, 17, 20, 1, -16}, // 0x3C '<' + {1079, 17, 12, 20, 2, -13}, // 0x3D '=' + {1105, 18, 17, 20, 1, -16}, // 0x3E '>' + {1144, 18, 26, 21, 2, -25}, // 0x3F '?' + {1203, 32, 31, 34, 1, -25}, // 0x40 '@' + {1327, 24, 26, 24, 0, -25}, // 0x41 'A' + {1405, 20, 26, 25, 3, -25}, // 0x42 'B' + {1470, 23, 26, 25, 1, -25}, // 0x43 'C' + {1545, 21, 26, 25, 3, -25}, // 0x44 'D' + {1614, 19, 26, 23, 3, -25}, // 0x45 'E' + {1676, 17, 26, 22, 3, -25}, // 0x46 'F' + {1732, 24, 26, 27, 1, -25}, // 0x47 'G' + {1810, 20, 26, 26, 3, -25}, // 0x48 'H' + {1875, 5, 26, 11, 3, -25}, // 0x49 'I' + {1892, 16, 26, 20, 1, -25}, // 0x4A 'J' + {1944, 22, 26, 25, 3, -25}, // 0x4B 'K' + {2016, 17, 26, 22, 3, -25}, // 0x4C 'L' + {2072, 24, 26, 30, 3, -25}, // 0x4D 'M' + {2150, 20, 26, 26, 3, -25}, // 0x4E 'N' + {2215, 25, 26, 27, 1, -25}, // 0x4F 'O' + {2297, 19, 26, 24, 3, -25}, // 0x50 'P' + {2359, 25, 27, 27, 1, -25}, // 0x51 'Q' + {2444, 21, 26, 25, 3, -25}, // 0x52 'R' + {2513, 20, 26, 24, 2, -25}, // 0x53 'S' + {2578, 19, 26, 23, 2, -25}, // 0x54 'T' + {2640, 20, 26, 26, 3, -25}, // 0x55 'U' + {2705, 22, 26, 23, 1, -25}, // 0x56 'V' + {2777, 32, 26, 34, 1, -25}, // 0x57 'W' + {2881, 22, 26, 24, 1, -25}, // 0x58 'X' + {2953, 21, 26, 22, 1, -25}, // 0x59 'Y' + {3022, 19, 26, 21, 1, -25}, // 0x5A 'Z' + {3084, 8, 33, 12, 2, -25}, // 0x5B '[' + {3117, 10, 25, 10, 0, -24}, // 0x5C '\' + {3149, 8, 33, 12, 1, -25}, // 0x5D ']' + {3182, 16, 15, 20, 2, -23}, // 0x5E '^' + {3212, 21, 3, 19, -1, 5}, // 0x5F '_' + {3220, 7, 5, 9, 1, -25}, // 0x60 '`' + {3225, 18, 19, 20, 1, -18}, // 0x61 'a' + {3268, 18, 26, 22, 2, -25}, // 0x62 'b' + {3327, 17, 19, 20, 1, -18}, // 0x63 'c' + {3368, 19, 26, 22, 1, -25}, // 0x64 'd' + {3430, 18, 19, 20, 1, -18}, // 0x65 'e' + {3473, 10, 26, 12, 1, -25}, // 0x66 'f' + {3506, 18, 26, 21, 1, -18}, // 0x67 'g' + {3565, 17, 26, 21, 2, -25}, // 0x68 'h' + {3621, 5, 26, 10, 2, -25}, // 0x69 'i' + {3638, 7, 33, 10, 0, -25}, // 0x6A 'j' + {3667, 17, 26, 20, 2, -25}, // 0x6B 'k' + {3723, 5, 26, 9, 2, -25}, // 0x6C 'l' + {3740, 27, 19, 31, 2, -18}, // 0x6D 'm' + {3805, 17, 19, 21, 2, -18}, // 0x6E 'n' + {3846, 19, 19, 21, 1, -18}, // 0x6F 'o' + {3892, 18, 26, 22, 2, -18}, // 0x70 'p' + {3951, 19, 26, 22, 1, -18}, // 0x71 'q' + {4013, 11, 19, 14, 2, -18}, // 0x72 'r' + {4040, 17, 19, 19, 1, -18}, // 0x73 's' + {4081, 9, 23, 12, 1, -22}, // 0x74 't' + {4107, 17, 19, 21, 2, -18}, // 0x75 'u' + {4148, 19, 19, 19, 0, -18}, // 0x76 'v' + {4194, 27, 19, 27, 0, -18}, // 0x77 'w' + {4259, 18, 19, 19, 1, -18}, // 0x78 'x' + {4302, 19, 26, 19, 0, -18}, // 0x79 'y' + {4364, 16, 19, 18, 1, -18}, // 0x7A 'z' + {4402, 9, 33, 14, 1, -25}, // 0x7B '{' + {4440, 3, 33, 10, 4, -25}, // 0x7C '|' + {4453, 9, 33, 14, 3, -25}, // 0x7D '}' + {4491, 15, 6, 18, 1, -10}}; // 0x7E '~' + +const GFXfont FreeSansBold18pt7b PROGMEM = { + (uint8_t *)FreeSansBold18pt7bBitmaps, (GFXglyph *)FreeSansBold18pt7bGlyphs, + 0x20, 0x7E, 42}; + +// Approx. 5175 bytes diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBold24pt7b.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBold24pt7b.h new file mode 100644 index 0000000..5dd7a54 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBold24pt7b.h @@ -0,0 +1,786 @@ +#pragma once +#include + +const uint8_t FreeSansBold24pt7bBitmaps[] PROGMEM = { + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xDF, 0x3E, 0x7C, 0xF9, 0xF3, 0xE7, 0xC7, 0x0E, 0x1C, 0x00, 0x00, 0x07, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFE, 0x1F, 0xFF, 0x87, 0xFF, 0xE1, + 0xFF, 0xF8, 0x7F, 0xFE, 0x1F, 0xFF, 0x87, 0xFF, 0xE1, 0xFD, 0xF0, 0x3E, + 0x7C, 0x0F, 0x9F, 0x03, 0xE3, 0x80, 0x70, 0xE0, 0x1C, 0x00, 0xF8, 0x3E, + 0x00, 0x3E, 0x0F, 0x80, 0x0F, 0x83, 0xE0, 0x03, 0xE0, 0xF8, 0x00, 0xF8, + 0x7C, 0x00, 0x7C, 0x1F, 0x00, 0x1F, 0x07, 0xC1, 0xFF, 0xFF, 0xFF, 0x7F, + 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, + 0x03, 0xE0, 0xF8, 0x00, 0xF8, 0x3E, 0x00, 0x3E, 0x1F, 0x00, 0x1F, 0x07, + 0xC0, 0x07, 0xC1, 0xF0, 0x01, 0xF0, 0x7C, 0x00, 0x7C, 0x1F, 0x03, 0xFF, + 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xF3, + 0xFF, 0xFF, 0xFC, 0x0F, 0x87, 0xC0, 0x07, 0xC1, 0xF0, 0x01, 0xF0, 0x7C, + 0x00, 0x7C, 0x1F, 0x00, 0x1F, 0x07, 0xC0, 0x07, 0xC3, 0xE0, 0x03, 0xE0, + 0xF8, 0x00, 0xF8, 0x3E, 0x00, 0x3E, 0x0F, 0x80, 0x00, 0x00, 0x38, 0x00, + 0x00, 0x1C, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0xFF, 0xFC, 0x00, 0xFF, 0xFF, + 0x80, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xF8, 0x7F, 0x73, 0xFE, 0x7F, 0x38, + 0xFF, 0x3F, 0x1C, 0x3F, 0xDF, 0x8E, 0x0F, 0xEF, 0xC7, 0x07, 0xF7, 0xE3, + 0x80, 0x03, 0xF9, 0xC0, 0x01, 0xFE, 0xE0, 0x00, 0x7F, 0xF0, 0x00, 0x3F, + 0xFC, 0x00, 0x0F, 0xFF, 0xC0, 0x03, 0xFF, 0xFC, 0x00, 0x7F, 0xFF, 0x80, + 0x0F, 0xFF, 0xE0, 0x01, 0xFF, 0xF8, 0x00, 0xE7, 0xFC, 0x00, 0x71, 0xFF, + 0x00, 0x38, 0x7F, 0xFF, 0x1C, 0x1F, 0xFF, 0x8E, 0x0F, 0xFF, 0xC7, 0x07, + 0xFF, 0xE3, 0x87, 0xFB, 0xF9, 0xC3, 0xF9, 0xFE, 0xE7, 0xFC, 0x7F, 0xFF, + 0xFC, 0x3F, 0xFF, 0xFC, 0x0F, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, 0x00, 0x3F, + 0xE0, 0x00, 0x03, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x00, 0xE0, 0x00, 0x00, + 0x70, 0x00, 0x03, 0xE0, 0x00, 0x3C, 0x00, 0x1F, 0xF0, 0x00, 0x78, 0x00, + 0x7F, 0xF8, 0x01, 0xE0, 0x01, 0xFF, 0xF0, 0x03, 0xC0, 0x07, 0xFF, 0xF0, + 0x0F, 0x00, 0x0F, 0x83, 0xE0, 0x1E, 0x00, 0x3E, 0x03, 0xE0, 0x78, 0x00, + 0x78, 0x03, 0xC0, 0xF0, 0x00, 0xF0, 0x07, 0x83, 0xC0, 0x01, 0xE0, 0x0F, + 0x07, 0x80, 0x03, 0xE0, 0x3E, 0x1E, 0x00, 0x03, 0xE0, 0xF8, 0x3C, 0x00, + 0x07, 0xFF, 0xF0, 0xF0, 0x00, 0x07, 0xFF, 0xC1, 0xE0, 0x00, 0x07, 0xFF, + 0x07, 0x80, 0x00, 0x07, 0xFC, 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x3C, 0x00, + 0x00, 0x00, 0x00, 0xF0, 0x1F, 0x00, 0x00, 0x01, 0xE0, 0xFF, 0x80, 0x00, + 0x07, 0x87, 0xFF, 0xC0, 0x00, 0x0F, 0x0F, 0xFF, 0x80, 0x00, 0x3C, 0x3F, + 0xFF, 0x80, 0x00, 0x78, 0xFC, 0x1F, 0x00, 0x01, 0xE1, 0xF0, 0x1F, 0x00, + 0x03, 0xC3, 0xC0, 0x1E, 0x00, 0x0F, 0x07, 0x80, 0x3C, 0x00, 0x1E, 0x0F, + 0x00, 0x78, 0x00, 0x78, 0x1F, 0x01, 0xF0, 0x00, 0xF0, 0x1F, 0x07, 0xC0, + 0x03, 0xC0, 0x3F, 0xFF, 0x80, 0x07, 0x80, 0x3F, 0xFE, 0x00, 0x1E, 0x00, + 0x7F, 0xF8, 0x00, 0x7C, 0x00, 0x3F, 0xE0, 0x00, 0xF0, 0x00, 0x1F, 0x00, + 0x00, 0x3F, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, + 0xFF, 0xF8, 0x00, 0x07, 0xFF, 0xF0, 0x00, 0x3F, 0xCF, 0xC0, 0x00, 0xFE, + 0x1F, 0x00, 0x03, 0xF8, 0x7C, 0x00, 0x0F, 0xE1, 0xF0, 0x00, 0x3F, 0xC7, + 0xC0, 0x00, 0x7F, 0x3E, 0x00, 0x01, 0xFF, 0xF8, 0x00, 0x03, 0xFF, 0xC0, + 0x00, 0x07, 0xFE, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x7F, 0x80, 0x00, + 0x07, 0xFF, 0x03, 0xE0, 0x3F, 0xFE, 0x0F, 0x83, 0xFF, 0xF8, 0x3E, 0x1F, + 0xF3, 0xF1, 0xF8, 0x7F, 0x07, 0xE7, 0xE3, 0xFC, 0x1F, 0xFF, 0x0F, 0xE0, + 0x3F, 0xFC, 0x3F, 0x80, 0x7F, 0xF0, 0xFE, 0x01, 0xFF, 0x83, 0xF8, 0x03, + 0xFE, 0x0F, 0xF0, 0x0F, 0xF0, 0x3F, 0xE0, 0x7F, 0xE0, 0x7F, 0xC3, 0xFF, + 0xC1, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xFE, 0x07, 0xFF, 0xFB, 0xFC, + 0x0F, 0xFF, 0xC7, 0xF8, 0x1F, 0xFE, 0x0F, 0xE0, 0x0F, 0xE0, 0x00, 0x00, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBE, 0x7C, 0xF8, 0xE1, 0xC0, 0x00, + 0xF0, 0x0F, 0x80, 0xF8, 0x07, 0xC0, 0x7C, 0x07, 0xE0, 0x3E, 0x03, 0xF0, + 0x1F, 0x80, 0xF8, 0x0F, 0xC0, 0x7E, 0x07, 0xE0, 0x3F, 0x01, 0xF8, 0x0F, + 0xC0, 0xFC, 0x07, 0xE0, 0x3F, 0x01, 0xF8, 0x0F, 0xC0, 0x7E, 0x03, 0xF0, + 0x1F, 0x80, 0xFC, 0x07, 0xE0, 0x3F, 0x00, 0xF8, 0x07, 0xE0, 0x3F, 0x01, + 0xF8, 0x07, 0xC0, 0x3F, 0x01, 0xF8, 0x07, 0xC0, 0x3F, 0x00, 0xF8, 0x07, + 0xE0, 0x1F, 0x00, 0xF8, 0x03, 0xE0, 0x1F, 0x00, 0x7C, 0x01, 0xE0, 0x78, + 0x03, 0xE0, 0x0F, 0x80, 0x7C, 0x01, 0xF0, 0x0F, 0x80, 0x3E, 0x01, 0xF0, + 0x0F, 0xC0, 0x3E, 0x01, 0xF8, 0x0F, 0xC0, 0x3F, 0x01, 0xF8, 0x0F, 0xC0, + 0x7E, 0x01, 0xF8, 0x0F, 0xC0, 0x7E, 0x03, 0xF0, 0x1F, 0x80, 0xFC, 0x07, + 0xE0, 0x3F, 0x01, 0xF8, 0x0F, 0xC0, 0x7E, 0x03, 0xE0, 0x3F, 0x01, 0xF8, + 0x0F, 0xC0, 0x7C, 0x07, 0xE0, 0x3F, 0x01, 0xF0, 0x1F, 0x80, 0xF8, 0x0F, + 0xC0, 0x7C, 0x07, 0xE0, 0x3E, 0x03, 0xF0, 0x1F, 0x01, 0xF0, 0x00, 0x03, + 0x80, 0x07, 0x00, 0x0E, 0x00, 0x1C, 0x06, 0x38, 0xDF, 0xFF, 0xFF, 0xFF, + 0x9F, 0xFE, 0x07, 0xC0, 0x1F, 0xC0, 0x3F, 0x80, 0xF7, 0x83, 0xC7, 0x87, + 0x8F, 0x02, 0x08, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, + 0x00, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x00, + 0x00, 0x3E, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x1F, 0x00, 0x00, + 0x3E, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x03, + 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x87, 0x0E, 0x1C, 0x78, 0xEF, 0xDF, 0x38, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x80, 0x00, 0x38, 0x03, 0xC0, 0x1C, 0x00, 0xE0, 0x07, 0x00, + 0x70, 0x03, 0x80, 0x1C, 0x01, 0xE0, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x38, + 0x01, 0xC0, 0x0E, 0x00, 0xF0, 0x07, 0x00, 0x38, 0x03, 0xC0, 0x1C, 0x00, + 0xE0, 0x07, 0x00, 0x70, 0x03, 0x80, 0x1C, 0x01, 0xE0, 0x0E, 0x00, 0x70, + 0x03, 0x80, 0x38, 0x01, 0xC0, 0x0E, 0x00, 0xF0, 0x07, 0x00, 0x00, 0x00, + 0xFF, 0x00, 0x03, 0xFF, 0xC0, 0x0F, 0xFF, 0xF0, 0x1F, 0xFF, 0xF8, 0x1F, + 0xFF, 0xF8, 0x3F, 0xFF, 0xFC, 0x3F, 0xC3, 0xFC, 0x7F, 0x81, 0xFE, 0x7F, + 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0xFE, 0x00, 0x7F, 0xFE, + 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, + 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, + 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0x7F, + 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0x7F, 0x81, 0xFE, 0x3F, + 0xC3, 0xFC, 0x3F, 0xFF, 0xFC, 0x1F, 0xFF, 0xF8, 0x1F, 0xFF, 0xF8, 0x0F, + 0xFF, 0xF0, 0x03, 0xFF, 0xC0, 0x00, 0xFF, 0x00, 0x00, 0x3C, 0x01, 0xF0, + 0x07, 0xC0, 0x3F, 0x01, 0xFC, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, + 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, + 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, + 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x01, 0xFE, 0x00, 0x0F, 0xFF, 0x80, + 0x3F, 0xFF, 0x80, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0x8F, 0xFF, 0xFF, 0x9F, + 0xE0, 0xFF, 0x7F, 0x80, 0xFF, 0xFE, 0x01, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, + 0x03, 0xFF, 0xF0, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, + 0x7F, 0x80, 0x00, 0xFE, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x7F, + 0xC0, 0x01, 0xFF, 0x00, 0x07, 0xF8, 0x00, 0x3F, 0xE0, 0x00, 0xFF, 0x00, + 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0x7F, 0x00, 0x01, + 0xFC, 0x00, 0x03, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xBF, + 0xFF, 0xFF, 0x7F, 0xFF, 0xFE, 0xFF, 0xFF, 0xFC, 0x01, 0xFE, 0x00, 0x0F, + 0xFF, 0x80, 0x7F, 0xFF, 0x81, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0x8F, 0xFF, + 0xFF, 0x1F, 0xE1, 0xFF, 0x7F, 0x81, 0xFE, 0xFE, 0x01, 0xFD, 0xFC, 0x03, + 0xFB, 0xF8, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0x7F, + 0x00, 0x01, 0xFC, 0x00, 0x1F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0x7F, 0xC0, + 0x00, 0xFF, 0xE0, 0x00, 0x3F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0x3F, 0xC0, + 0x00, 0x3F, 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, + 0x07, 0xFF, 0xF8, 0x0F, 0xF7, 0xF8, 0x3F, 0xCF, 0xFF, 0xFF, 0x9F, 0xFF, + 0xFE, 0x1F, 0xFF, 0xF8, 0x1F, 0xFF, 0xE0, 0x0F, 0xFF, 0x80, 0x07, 0xF8, + 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x80, 0x03, 0xFE, 0x00, 0x0F, 0xF8, + 0x00, 0x7F, 0xE0, 0x03, 0xFF, 0x80, 0x0F, 0xFE, 0x00, 0x7B, 0xF8, 0x01, + 0xEF, 0xE0, 0x0F, 0x3F, 0x80, 0x78, 0xFE, 0x01, 0xE3, 0xF8, 0x0F, 0x0F, + 0xE0, 0x38, 0x3F, 0x81, 0xE0, 0xFE, 0x07, 0x03, 0xF8, 0x3C, 0x0F, 0xE1, + 0xE0, 0x3F, 0x87, 0x00, 0xFE, 0x3C, 0x03, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF0, 0x00, 0xFE, 0x00, 0x03, 0xF8, 0x00, 0x0F, 0xE0, 0x00, 0x3F, 0x80, + 0x00, 0xFE, 0x00, 0x03, 0xF8, 0x00, 0x0F, 0xE0, 0x1F, 0xFF, 0xFC, 0x3F, + 0xFF, 0xF8, 0x7F, 0xFF, 0xF0, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0xC7, 0xFF, + 0xFF, 0x8F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x78, 0x00, + 0x01, 0xF1, 0xF8, 0x03, 0xEF, 0xFE, 0x07, 0xFF, 0xFE, 0x0F, 0xFF, 0xFE, + 0x1F, 0xFF, 0xFE, 0x7F, 0xFF, 0xFC, 0xFE, 0x07, 0xFC, 0x00, 0x07, 0xF8, + 0x00, 0x07, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, + 0x00, 0x3F, 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0xF8, 0x03, 0xFF, 0xF8, + 0x0F, 0xF7, 0xF8, 0x3F, 0xEF, 0xFF, 0xFF, 0x8F, 0xFF, 0xFF, 0x0F, 0xFF, + 0xFC, 0x0F, 0xFF, 0xE0, 0x0F, 0xFF, 0x80, 0x03, 0xF8, 0x00, 0x00, 0xFF, + 0x00, 0x07, 0xFF, 0x80, 0x1F, 0xFF, 0xC0, 0x7F, 0xFF, 0x81, 0xFF, 0xFF, + 0x87, 0xFF, 0xFF, 0x8F, 0xF0, 0xFF, 0x3F, 0xC0, 0xFE, 0x7F, 0x00, 0x00, + 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE3, 0xF0, 0x1F, + 0xDF, 0xF8, 0x3F, 0xFF, 0xFC, 0x7F, 0xFF, 0xFC, 0xFF, 0xFF, 0xF9, 0xFF, + 0x87, 0xFB, 0xFC, 0x07, 0xF7, 0xF8, 0x0F, 0xFF, 0xE0, 0x0F, 0xFF, 0xC0, + 0x1F, 0xFF, 0x80, 0x3F, 0xFF, 0x00, 0x7F, 0x7E, 0x00, 0xFE, 0xFC, 0x01, + 0xFD, 0xFC, 0x07, 0xFB, 0xF8, 0x0F, 0xE3, 0xFC, 0x7F, 0xC7, 0xFF, 0xFF, + 0x07, 0xFF, 0xFE, 0x0F, 0xFF, 0xF8, 0x0F, 0xFF, 0xE0, 0x07, 0xFF, 0x80, + 0x03, 0xF8, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x3F, 0x00, + 0x00, 0xFC, 0x00, 0x03, 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x1F, 0x80, 0x00, + 0x7F, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x1F, + 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xF8, 0x00, 0x07, 0xF0, + 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFC, 0x00, + 0x01, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, + 0x3F, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x03, 0xF8, 0x00, 0x07, + 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x03, 0xFF, 0xC0, 0x0F, 0xFF, 0xE0, 0x1F, + 0xFF, 0xF0, 0x3F, 0xFF, 0xF8, 0x3F, 0xFF, 0xF8, 0x7F, 0x83, 0xFC, 0x7F, + 0x00, 0xFC, 0x7E, 0x00, 0xFC, 0x7E, 0x00, 0x7C, 0x7E, 0x00, 0x7C, 0x7E, + 0x00, 0xFC, 0x3F, 0x00, 0xF8, 0x3F, 0x83, 0xF8, 0x0F, 0xFF, 0xF0, 0x07, + 0xFF, 0xC0, 0x0F, 0xFF, 0xF0, 0x1F, 0xFF, 0xF8, 0x3F, 0xC3, 0xFC, 0x7F, + 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, + 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFF, 0x00, 0xFF, 0xFF, + 0x00, 0xFE, 0x7F, 0x83, 0xFE, 0x7F, 0xFF, 0xFE, 0x3F, 0xFF, 0xFC, 0x1F, + 0xFF, 0xF8, 0x0F, 0xFF, 0xF0, 0x07, 0xFF, 0xC0, 0x00, 0xFF, 0x00, 0x00, + 0xFF, 0x00, 0x03, 0xFF, 0xC0, 0x0F, 0xFF, 0xE0, 0x1F, 0xFF, 0xF0, 0x3F, + 0xFF, 0xF8, 0x3F, 0xFF, 0xFC, 0x7F, 0xC3, 0xFC, 0x7F, 0x01, 0xFE, 0xFF, + 0x00, 0xFE, 0xFE, 0x00, 0x7E, 0xFE, 0x00, 0x7E, 0xFE, 0x00, 0x7F, 0xFE, + 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFF, 0x00, 0xFF, 0x7F, + 0x01, 0xFF, 0x7F, 0xC3, 0xFF, 0x7F, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0x1F, + 0xFF, 0xFF, 0x0F, 0xFF, 0x7F, 0x07, 0xFE, 0x7F, 0x01, 0xFC, 0x7E, 0x00, + 0x00, 0x7E, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x7F, 0x01, 0xFC, 0x7F, + 0x83, 0xFC, 0x7F, 0xFF, 0xF8, 0x3F, 0xFF, 0xF8, 0x3F, 0xFF, 0xF0, 0x1F, + 0xFF, 0xE0, 0x07, 0xFF, 0x80, 0x01, 0xFE, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFE, 0x1C, 0x38, 0x71, 0xE7, 0xBF, 0x7C, 0xE0, 0x00, + 0x00, 0x02, 0x00, 0x00, 0x3C, 0x00, 0x01, 0xF8, 0x00, 0x1F, 0xF0, 0x01, + 0xFF, 0xE0, 0x0F, 0xFF, 0xC0, 0xFF, 0xFC, 0x0F, 0xFF, 0xC0, 0x7F, 0xFC, + 0x01, 0xFF, 0xC0, 0x03, 0xFC, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0xE0, 0x00, + 0x1F, 0xF8, 0x00, 0x3F, 0xFE, 0x00, 0x0F, 0xFF, 0x80, 0x07, 0xFF, 0xE0, + 0x01, 0xFF, 0xF8, 0x00, 0x7F, 0xF8, 0x00, 0x3F, 0xF0, 0x00, 0x0F, 0xE0, + 0x00, 0x03, 0xC0, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x80, 0x00, + 0x01, 0xC0, 0x00, 0x03, 0xF0, 0x00, 0x07, 0xFC, 0x00, 0x0F, 0xFE, 0x00, + 0x1F, 0xFF, 0x80, 0x07, 0xFF, 0xE0, 0x01, 0xFF, 0xF0, 0x00, 0x7F, 0xFC, + 0x00, 0x1F, 0xFC, 0x00, 0x07, 0xF8, 0x00, 0x03, 0xF0, 0x00, 0x1F, 0xE0, + 0x01, 0xFF, 0xC0, 0x0F, 0xFF, 0x80, 0xFF, 0xF8, 0x0F, 0xFF, 0x80, 0xFF, + 0xFC, 0x03, 0xFF, 0xC0, 0x07, 0xFC, 0x00, 0x0F, 0xE0, 0x00, 0x1E, 0x00, + 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x07, 0xFF, 0xC0, 0x1F, + 0xFF, 0xF0, 0x3F, 0xFF, 0xF8, 0x3F, 0xFF, 0xFC, 0x7F, 0xFF, 0xFC, 0x7F, + 0x83, 0xFE, 0x7F, 0x01, 0xFE, 0xFF, 0x00, 0xFF, 0xFE, 0x00, 0x7F, 0xFE, + 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0x00, + 0x01, 0xFE, 0x00, 0x03, 0xFE, 0x00, 0x07, 0xFC, 0x00, 0x0F, 0xF8, 0x00, + 0x3F, 0xF0, 0x00, 0x3F, 0xE0, 0x00, 0x7F, 0x80, 0x00, 0x7F, 0x00, 0x00, + 0xFE, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, + 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, + 0xFE, 0x00, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0xE0, + 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xF8, 0x00, + 0x03, 0xFE, 0x01, 0xFF, 0x80, 0x01, 0xFE, 0x00, 0x07, 0xF8, 0x00, 0x7F, + 0x80, 0x00, 0x3F, 0x80, 0x1F, 0xC0, 0x00, 0x03, 0xF8, 0x07, 0xF0, 0x00, + 0x00, 0x1F, 0x00, 0xFC, 0x00, 0x00, 0x01, 0xF0, 0x3F, 0x00, 0x00, 0x00, + 0x3E, 0x0F, 0xC0, 0x07, 0xE3, 0xC3, 0xE1, 0xF0, 0x03, 0xFE, 0xF8, 0x3C, + 0x7E, 0x01, 0xFF, 0xFF, 0x07, 0x8F, 0x80, 0x7E, 0x1F, 0xC0, 0x7B, 0xF0, + 0x1F, 0x81, 0xF8, 0x0F, 0x7C, 0x03, 0xE0, 0x1F, 0x01, 0xEF, 0x80, 0xF8, + 0x03, 0xC0, 0x3F, 0xF0, 0x1E, 0x00, 0x78, 0x07, 0xFC, 0x07, 0xC0, 0x0F, + 0x00, 0xFF, 0x80, 0xF0, 0x01, 0xE0, 0x1F, 0xF0, 0x1E, 0x00, 0x38, 0x07, + 0xFE, 0x07, 0xC0, 0x0F, 0x00, 0xFF, 0xC0, 0xF8, 0x01, 0xE0, 0x1E, 0xF8, + 0x1F, 0x00, 0x38, 0x07, 0xDF, 0x03, 0xE0, 0x0F, 0x00, 0xF3, 0xF0, 0x7C, + 0x03, 0xE0, 0x3E, 0x3E, 0x0F, 0xC0, 0xFC, 0x0F, 0x87, 0xC0, 0xFC, 0x3F, + 0xC7, 0xF0, 0xFC, 0x1F, 0xFF, 0xFF, 0xFC, 0x0F, 0xC1, 0xFF, 0xEF, 0xFF, + 0x01, 0xFC, 0x1F, 0xF8, 0xFF, 0x80, 0x1F, 0xC0, 0xFC, 0x07, 0xC0, 0x01, + 0xFC, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x00, 0x01, 0xFE, + 0x00, 0x00, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x60, 0x00, 0x01, 0xFF, 0xFF, + 0xFE, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x7F, 0xFF, 0xF0, + 0x00, 0x00, 0x00, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, + 0x0F, 0xF8, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, + 0x1F, 0xFC, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, + 0x3F, 0xFE, 0x00, 0x00, 0x3F, 0x7E, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x00, + 0x7F, 0x7F, 0x00, 0x00, 0x7E, 0x3F, 0x00, 0x00, 0xFE, 0x3F, 0x80, 0x00, + 0xFE, 0x3F, 0x80, 0x01, 0xFC, 0x1F, 0x80, 0x01, 0xFC, 0x1F, 0xC0, 0x01, + 0xF8, 0x1F, 0xC0, 0x03, 0xF8, 0x0F, 0xE0, 0x03, 0xF8, 0x0F, 0xE0, 0x03, + 0xF0, 0x0F, 0xE0, 0x07, 0xF0, 0x07, 0xF0, 0x07, 0xFF, 0xFF, 0xF0, 0x07, + 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, 0xF8, 0x1F, + 0xFF, 0xFF, 0xF8, 0x1F, 0xFF, 0xFF, 0xFC, 0x1F, 0xC0, 0x01, 0xFC, 0x3F, + 0x80, 0x01, 0xFC, 0x3F, 0x80, 0x00, 0xFE, 0x3F, 0x80, 0x00, 0xFE, 0x7F, + 0x00, 0x00, 0xFE, 0x7F, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x00, 0x7F, 0xFF, + 0xFF, 0xE0, 0x1F, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0xF8, 0x7F, 0xFF, 0xFF, + 0x8F, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xFF, 0x3F, 0x80, 0x1F, 0xF7, 0xF0, + 0x01, 0xFE, 0xFE, 0x00, 0x1F, 0xDF, 0xC0, 0x03, 0xFB, 0xF8, 0x00, 0x7F, + 0x7F, 0x00, 0x1F, 0xCF, 0xE0, 0x07, 0xF9, 0xFF, 0xFF, 0xFE, 0x3F, 0xFF, + 0xFF, 0x87, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFE, 0x1F, 0xFF, 0xFF, 0xE3, + 0xFF, 0xFF, 0xFE, 0x7F, 0x00, 0x1F, 0xEF, 0xE0, 0x01, 0xFD, 0xFC, 0x00, + 0x1F, 0xFF, 0x80, 0x03, 0xFF, 0xF0, 0x00, 0x7F, 0xFE, 0x00, 0x0F, 0xFF, + 0xC0, 0x01, 0xFF, 0xF8, 0x00, 0x7F, 0xFF, 0x00, 0x1F, 0xEF, 0xFF, 0xFF, + 0xFD, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xF8, 0xFF, + 0xFF, 0xFC, 0x1F, 0xFF, 0xFC, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x03, 0xFF, + 0xF8, 0x00, 0x1F, 0xFF, 0xF8, 0x01, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, + 0xE0, 0x3F, 0xFF, 0xFF, 0xC1, 0xFF, 0x81, 0xFF, 0x0F, 0xF8, 0x01, 0xFE, + 0x3F, 0xC0, 0x07, 0xF9, 0xFE, 0x00, 0x0F, 0xE7, 0xF8, 0x00, 0x1F, 0xDF, + 0xC0, 0x00, 0x7F, 0x7F, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x0F, 0xE0, + 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x03, 0xF8, 0x00, + 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x00, + 0x03, 0xF8, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, + 0x7F, 0x00, 0x01, 0xFD, 0xFC, 0x00, 0x07, 0xF7, 0xF8, 0x00, 0x3F, 0xCF, + 0xF0, 0x00, 0xFE, 0x3F, 0xE0, 0x07, 0xF8, 0x7F, 0xE0, 0x7F, 0xC0, 0xFF, + 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xF8, 0x07, 0xFF, 0xFF, 0xC0, 0x07, 0xFF, + 0xFE, 0x00, 0x0F, 0xFF, 0xE0, 0x00, 0x07, 0xFC, 0x00, 0xFF, 0xFF, 0xC0, + 0x0F, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFC, 0x0F, 0xFF, 0xFF, 0xE0, 0xFF, + 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xF8, 0xFE, 0x00, 0xFF, 0xCF, 0xE0, 0x03, + 0xFC, 0xFE, 0x00, 0x1F, 0xEF, 0xE0, 0x01, 0xFE, 0xFE, 0x00, 0x0F, 0xEF, + 0xE0, 0x00, 0xFE, 0xFE, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0x7F, 0xFE, 0x00, + 0x07, 0xFF, 0xE0, 0x00, 0x7F, 0xFE, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0x7F, + 0xFE, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0x7F, 0xFE, 0x00, 0x07, 0xFF, 0xE0, + 0x00, 0x7F, 0xFE, 0x00, 0x0F, 0xEF, 0xE0, 0x00, 0xFE, 0xFE, 0x00, 0x1F, + 0xEF, 0xE0, 0x01, 0xFE, 0xFE, 0x00, 0x3F, 0xCF, 0xE0, 0x0F, 0xFC, 0xFF, + 0xFF, 0xFF, 0x8F, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, + 0xC0, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFC, 0x00, 0xFF, 0xFF, 0xFF, 0x7F, + 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xF7, + 0xFF, 0xFF, 0xFB, 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xFE, 0x00, 0x00, + 0x7F, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x0F, 0xE0, 0x00, + 0x07, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, + 0xFE, 0x7F, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0x9F, 0xC0, 0x00, 0x0F, 0xE0, + 0x00, 0x07, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xFE, + 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x0F, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFF, 0xFF, + 0xFC, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, + 0xFC, 0xFF, 0xFF, 0xFC, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, + 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0x07, 0xFF, 0xFF, + 0x00, 0x1F, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0xFF, + 0x07, 0xFE, 0x03, 0xFF, 0x0F, 0xF0, 0x01, 0xFE, 0x3F, 0xC0, 0x01, 0xFC, + 0x7F, 0x00, 0x01, 0xFD, 0xFE, 0x00, 0x03, 0xFB, 0xF8, 0x00, 0x00, 0x07, + 0xF0, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x7F, + 0x00, 0x00, 0x00, 0xFE, 0x00, 0x3F, 0xFF, 0xFC, 0x00, 0x7F, 0xFF, 0xF8, + 0x00, 0xFF, 0xFF, 0xF0, 0x01, 0xFF, 0xFF, 0xE0, 0x03, 0xFF, 0xFF, 0xC0, + 0x07, 0xFF, 0xFF, 0xC0, 0x00, 0x1F, 0xBF, 0x80, 0x00, 0x3F, 0x7F, 0x00, + 0x00, 0x7E, 0xFF, 0x00, 0x01, 0xFC, 0xFF, 0x00, 0x03, 0xF9, 0xFF, 0x00, + 0x0F, 0xF1, 0xFF, 0x00, 0x3F, 0xE3, 0xFF, 0x83, 0xFF, 0xC3, 0xFF, 0xFF, + 0xFF, 0x83, 0xFF, 0xFF, 0xDF, 0x03, 0xFF, 0xFF, 0x9E, 0x03, 0xFF, 0xFE, + 0x3C, 0x01, 0xFF, 0xF0, 0x78, 0x00, 0x7F, 0x80, 0x00, 0xFE, 0x00, 0x0F, + 0xFF, 0xC0, 0x01, 0xFF, 0xF8, 0x00, 0x3F, 0xFF, 0x00, 0x07, 0xFF, 0xE0, + 0x00, 0xFF, 0xFC, 0x00, 0x1F, 0xFF, 0x80, 0x03, 0xFF, 0xF0, 0x00, 0x7F, + 0xFE, 0x00, 0x0F, 0xFF, 0xC0, 0x01, 0xFF, 0xF8, 0x00, 0x3F, 0xFF, 0x00, + 0x07, 0xFF, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0xFF, 0xFC, 0x00, 0x1F, 0xFF, + 0x80, 0x03, 0xFF, 0xF0, 0x00, 0x7F, 0xFE, 0x00, 0x0F, 0xFF, 0xC0, 0x01, + 0xFF, 0xF8, 0x00, 0x3F, 0xFF, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0xFF, 0xFC, + 0x00, 0x1F, 0xFF, 0x80, 0x03, 0xFF, 0xF0, 0x00, 0x7F, 0xFE, 0x00, 0x0F, + 0xFF, 0xC0, 0x01, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x01, + 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xC0, 0x00, 0x7F, 0x00, 0x01, 0xFC, + 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xC0, 0x00, 0x7F, 0x00, 0x01, 0xFC, 0x00, + 0x07, 0xF0, 0x00, 0x1F, 0xC0, 0x00, 0x7F, 0x00, 0x01, 0xFC, 0x00, 0x07, + 0xF0, 0x00, 0x1F, 0xC0, 0x00, 0x7F, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xF0, + 0x00, 0x1F, 0xC0, 0x00, 0x7F, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0xE0, + 0x1F, 0xFF, 0x80, 0x7F, 0xFE, 0x01, 0xFF, 0xF8, 0x07, 0xFF, 0xE0, 0x1F, + 0xFF, 0xC0, 0xFF, 0xFF, 0x87, 0xFD, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0x8F, + 0xFF, 0xFC, 0x1F, 0xFF, 0xE0, 0x3F, 0xFF, 0x00, 0x1F, 0xE0, 0x00, 0xFE, + 0x00, 0x0F, 0xF3, 0xF8, 0x00, 0x7F, 0x8F, 0xE0, 0x03, 0xFC, 0x3F, 0x80, + 0x1F, 0xE0, 0xFE, 0x00, 0xFF, 0x83, 0xF8, 0x07, 0xFC, 0x0F, 0xE0, 0x1F, + 0xE0, 0x3F, 0x80, 0xFF, 0x00, 0xFE, 0x07, 0xF8, 0x03, 0xF8, 0x3F, 0xC0, + 0x0F, 0xE1, 0xFE, 0x00, 0x3F, 0x8F, 0xF0, 0x00, 0xFE, 0x7F, 0x80, 0x03, + 0xFB, 0xFC, 0x00, 0x0F, 0xFF, 0xE0, 0x00, 0x3F, 0xFF, 0xC0, 0x00, 0xFF, + 0xFF, 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x0F, 0xFF, 0xFC, 0x00, 0x3F, 0xF7, + 0xF8, 0x00, 0xFF, 0x8F, 0xF0, 0x03, 0xFC, 0x3F, 0xC0, 0x0F, 0xE0, 0x7F, + 0x80, 0x3F, 0x80, 0xFF, 0x00, 0xFE, 0x01, 0xFE, 0x03, 0xF8, 0x07, 0xFC, + 0x0F, 0xE0, 0x0F, 0xF0, 0x3F, 0x80, 0x1F, 0xE0, 0xFE, 0x00, 0x3F, 0xC3, + 0xF8, 0x00, 0xFF, 0x8F, 0xE0, 0x01, 0xFE, 0x3F, 0x80, 0x03, 0xFC, 0xFE, + 0x00, 0x07, 0xFB, 0xF8, 0x00, 0x1F, 0xF0, 0xFE, 0x00, 0x01, 0xFC, 0x00, + 0x03, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, + 0x3F, 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x03, + 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0x3F, + 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x03, 0xF8, + 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0x3F, 0x80, + 0x00, 0x7F, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x03, 0xF8, 0x00, + 0x07, 0xF0, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFF, 0xE0, 0x03, + 0xFF, 0xFF, 0xF0, 0x01, 0xFF, 0xFF, 0xF8, 0x00, 0xFF, 0xFF, 0xFC, 0x00, + 0x7F, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xFF, 0xC0, + 0x1F, 0xFF, 0xFF, 0xE0, 0x0F, 0xFF, 0xFF, 0xF0, 0x07, 0xFF, 0xFF, 0xFC, + 0x07, 0xFF, 0xFF, 0xBE, 0x03, 0xEF, 0xFF, 0xDF, 0x01, 0xF7, 0xFF, 0xEF, + 0x80, 0xFB, 0xFF, 0xF7, 0xC0, 0xFD, 0xFF, 0xFB, 0xF0, 0x7C, 0xFF, 0xFC, + 0xF8, 0x3E, 0x7F, 0xFE, 0x7C, 0x1F, 0x3F, 0xFF, 0x3E, 0x0F, 0x9F, 0xFF, + 0x9F, 0x8F, 0x8F, 0xFF, 0xC7, 0xC7, 0xC7, 0xFF, 0xE3, 0xE3, 0xE3, 0xFF, + 0xF1, 0xF1, 0xF1, 0xFF, 0xF8, 0xFC, 0xF8, 0xFF, 0xFC, 0x3E, 0xF8, 0x7F, + 0xFE, 0x1F, 0x7C, 0x3F, 0xFF, 0x0F, 0xBE, 0x1F, 0xFF, 0x87, 0xDF, 0x0F, + 0xFF, 0xC3, 0xFF, 0x07, 0xFF, 0xE0, 0xFF, 0x83, 0xFF, 0xF0, 0x7F, 0xC1, + 0xFF, 0xF8, 0x3F, 0xE0, 0xFF, 0xFC, 0x1F, 0xF0, 0x7F, 0xFE, 0x07, 0xF0, + 0x3F, 0xFF, 0x03, 0xF8, 0x1F, 0xC0, 0xFE, 0x00, 0x07, 0xFF, 0xF0, 0x00, + 0x7F, 0xFF, 0x80, 0x07, 0xFF, 0xF8, 0x00, 0x7F, 0xFF, 0xC0, 0x07, 0xFF, + 0xFC, 0x00, 0x7F, 0xFF, 0xE0, 0x07, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0xF0, + 0x07, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0xF8, 0x07, 0xFF, 0xEF, 0xC0, 0x7F, + 0xFE, 0xFE, 0x07, 0xFF, 0xE7, 0xE0, 0x7F, 0xFE, 0x7F, 0x07, 0xFF, 0xE3, + 0xF0, 0x7F, 0xFE, 0x1F, 0x87, 0xFF, 0xE1, 0xFC, 0x7F, 0xFE, 0x0F, 0xC7, + 0xFF, 0xE0, 0xFE, 0x7F, 0xFE, 0x07, 0xE7, 0xFF, 0xE0, 0x3F, 0x7F, 0xFE, + 0x03, 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xFE, 0x01, 0xFF, 0xFF, 0xE0, 0x0F, + 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xE0, 0x07, 0xFF, 0xFE, 0x00, 0x3F, 0xFF, + 0xE0, 0x03, 0xFF, 0xFE, 0x00, 0x1F, 0xFF, 0xE0, 0x00, 0xFF, 0xFE, 0x00, + 0x0F, 0xFF, 0xE0, 0x00, 0x7F, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x3F, 0xFF, + 0x80, 0x00, 0x7F, 0xFF, 0xE0, 0x00, 0x7F, 0xFF, 0xFC, 0x00, 0x7F, 0xFF, + 0xFF, 0x00, 0x7F, 0xFF, 0xFF, 0xC0, 0x7F, 0xE0, 0x3F, 0xF0, 0x3F, 0xC0, + 0x0F, 0xF8, 0x3F, 0xC0, 0x01, 0xFE, 0x1F, 0xC0, 0x00, 0x7F, 0x1F, 0xE0, + 0x00, 0x3F, 0xCF, 0xE0, 0x00, 0x0F, 0xE7, 0xF0, 0x00, 0x07, 0xF7, 0xF8, + 0x00, 0x03, 0xFF, 0xF8, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x7F, 0xFE, + 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x00, 0x0F, 0xFF, + 0xC0, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0x03, 0xFF, 0xF0, 0x00, 0x01, 0xFF, + 0xFC, 0x00, 0x01, 0xFE, 0xFE, 0x00, 0x00, 0xFE, 0x7F, 0x00, 0x00, 0x7F, + 0x3F, 0xC0, 0x00, 0x7F, 0x8F, 0xE0, 0x00, 0x3F, 0x87, 0xF8, 0x00, 0x3F, + 0xC1, 0xFE, 0x00, 0x3F, 0xC0, 0xFF, 0xC0, 0x7F, 0xE0, 0x3F, 0xFF, 0xFF, + 0xE0, 0x0F, 0xFF, 0xFF, 0xE0, 0x03, 0xFF, 0xFF, 0xE0, 0x00, 0xFF, 0xFF, + 0xE0, 0x00, 0x1F, 0xFF, 0xC0, 0x00, 0x01, 0xFF, 0x00, 0x00, 0xFF, 0xFF, + 0xE0, 0x3F, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0xFC, 0xFF, + 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xEF, 0xE0, 0x0F, 0xFB, 0xF8, 0x00, 0xFF, + 0xFE, 0x00, 0x1F, 0xFF, 0x80, 0x07, 0xFF, 0xE0, 0x01, 0xFF, 0xF8, 0x00, + 0x7F, 0xFE, 0x00, 0x1F, 0xFF, 0x80, 0x07, 0xFF, 0xE0, 0x03, 0xFF, 0xF8, + 0x03, 0xFE, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xF3, + 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xF8, 0x3F, 0xFF, 0xF8, 0x0F, 0xE0, 0x00, + 0x03, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x0F, 0xE0, + 0x00, 0x03, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x0F, + 0xE0, 0x00, 0x03, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x3F, 0x80, 0x00, + 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x7F, 0xFF, + 0xE0, 0x00, 0x7F, 0xFF, 0xFC, 0x00, 0x7F, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, + 0xFF, 0xC0, 0x7F, 0xE0, 0x3F, 0xF0, 0x3F, 0xC0, 0x07, 0xF8, 0x3F, 0xC0, + 0x01, 0xFE, 0x1F, 0xC0, 0x00, 0x7F, 0x1F, 0xE0, 0x00, 0x3F, 0xCF, 0xE0, + 0x00, 0x0F, 0xE7, 0xF0, 0x00, 0x07, 0xF7, 0xF8, 0x00, 0x03, 0xFF, 0xF8, + 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x7F, 0xFE, 0x00, 0x00, 0x3F, 0xFF, + 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0x07, 0xFF, + 0xE0, 0x00, 0x03, 0xFF, 0xF0, 0x00, 0x01, 0xFF, 0xFC, 0x00, 0x21, 0xFE, + 0xFE, 0x00, 0x38, 0xFE, 0x7F, 0x00, 0x3E, 0x7F, 0x3F, 0xC0, 0x3F, 0xFF, + 0x8F, 0xE0, 0x0F, 0xFF, 0x87, 0xF8, 0x03, 0xFF, 0xC1, 0xFE, 0x00, 0xFF, + 0xC0, 0xFF, 0xC0, 0x7F, 0xE0, 0x3F, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, + 0xFC, 0x03, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xC0, 0x1F, 0xFF, + 0xCF, 0xC0, 0x01, 0xFF, 0x03, 0xC0, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, + 0xF8, 0x0F, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0x8F, 0xFF, 0xFF, 0xF8, + 0xFF, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xFC, 0xFE, 0x00, 0x3F, 0xEF, 0xE0, + 0x01, 0xFE, 0xFE, 0x00, 0x0F, 0xEF, 0xE0, 0x00, 0xFE, 0xFE, 0x00, 0x0F, + 0xEF, 0xE0, 0x00, 0xFE, 0xFE, 0x00, 0x0F, 0xEF, 0xE0, 0x01, 0xFC, 0xFE, + 0x00, 0x3F, 0xCF, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, + 0xC0, 0xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0x8F, + 0xE0, 0x07, 0xF8, 0xFE, 0x00, 0x1F, 0xCF, 0xE0, 0x01, 0xFC, 0xFE, 0x00, + 0x1F, 0xCF, 0xE0, 0x01, 0xFC, 0xFE, 0x00, 0x1F, 0xCF, 0xE0, 0x01, 0xFC, + 0xFE, 0x00, 0x1F, 0xCF, 0xE0, 0x01, 0xFC, 0xFE, 0x00, 0x1F, 0xCF, 0xE0, + 0x01, 0xFC, 0xFE, 0x00, 0x1F, 0xEF, 0xE0, 0x00, 0xFF, 0x00, 0xFF, 0xC0, + 0x00, 0x3F, 0xFF, 0x80, 0x0F, 0xFF, 0xFE, 0x01, 0xFF, 0xFF, 0xF0, 0x3F, + 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0xFC, 0x7F, 0xC0, 0xFF, 0xCF, 0xF0, 0x03, + 0xFE, 0xFE, 0x00, 0x1F, 0xEF, 0xE0, 0x00, 0xFE, 0xFE, 0x00, 0x0F, 0xEF, + 0xE0, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x7F, 0xFC, + 0x00, 0x07, 0xFF, 0xFE, 0x00, 0x3F, 0xFF, 0xFC, 0x01, 0xFF, 0xFF, 0xF0, + 0x07, 0xFF, 0xFF, 0xC0, 0x0F, 0xFF, 0xFE, 0x00, 0x07, 0xFF, 0xE0, 0x00, + 0x03, 0xFF, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x07, + 0xFF, 0xE0, 0x00, 0x7F, 0xFE, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0xFF, 0xFF, + 0x00, 0x0F, 0xE7, 0xFC, 0x03, 0xFE, 0x7F, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, + 0xFC, 0x1F, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xF0, 0x03, 0xFF, 0xFC, 0x00, + 0x07, 0xFE, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, + 0x0F, 0xE0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, + 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xF8, 0x00, 0x00, + 0x7F, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x80, + 0x00, 0x07, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, + 0xF8, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x01, 0xFC, 0x00, + 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, + 0xC0, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x0F, 0xE0, 0x00, + 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0xFE, 0x00, + 0x0F, 0xFF, 0xC0, 0x01, 0xFF, 0xF8, 0x00, 0x3F, 0xFF, 0x00, 0x07, 0xFF, + 0xE0, 0x00, 0xFF, 0xFC, 0x00, 0x1F, 0xFF, 0x80, 0x03, 0xFF, 0xF0, 0x00, + 0x7F, 0xFE, 0x00, 0x0F, 0xFF, 0xC0, 0x01, 0xFF, 0xF8, 0x00, 0x3F, 0xFF, + 0x00, 0x07, 0xFF, 0xE0, 0x00, 0xFF, 0xFC, 0x00, 0x1F, 0xFF, 0x80, 0x03, + 0xFF, 0xF0, 0x00, 0x7F, 0xFE, 0x00, 0x0F, 0xFF, 0xC0, 0x01, 0xFF, 0xF8, + 0x00, 0x3F, 0xFF, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0xFF, 0xFC, 0x00, 0x1F, + 0xFF, 0x80, 0x03, 0xFF, 0xF0, 0x00, 0x7F, 0xFE, 0x00, 0x0F, 0xFF, 0xC0, + 0x01, 0xFF, 0xFC, 0x00, 0x7F, 0xBF, 0xC0, 0x1F, 0xE7, 0xFC, 0x07, 0xFC, + 0x7F, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, + 0xFE, 0x00, 0x7F, 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x00, 0xFE, 0x00, 0x03, + 0xFF, 0xF0, 0x00, 0x1F, 0xDF, 0xC0, 0x01, 0xFC, 0xFE, 0x00, 0x0F, 0xE7, + 0xF0, 0x00, 0x7F, 0x1F, 0xC0, 0x03, 0xF0, 0xFE, 0x00, 0x3F, 0x87, 0xF0, + 0x01, 0xFC, 0x1F, 0xC0, 0x0F, 0xC0, 0xFE, 0x00, 0xFE, 0x03, 0xF0, 0x07, + 0xF0, 0x1F, 0x80, 0x3F, 0x00, 0xFE, 0x03, 0xF8, 0x03, 0xF0, 0x1F, 0xC0, + 0x1F, 0x80, 0xFC, 0x00, 0xFE, 0x07, 0xE0, 0x03, 0xF0, 0x7F, 0x00, 0x1F, + 0x83, 0xF0, 0x00, 0xFE, 0x1F, 0x80, 0x03, 0xF1, 0xF8, 0x00, 0x1F, 0x8F, + 0xC0, 0x00, 0xFC, 0x7E, 0x00, 0x03, 0xF3, 0xE0, 0x00, 0x1F, 0xBF, 0x00, + 0x00, 0xFD, 0xF8, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, + 0xFF, 0xE0, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0xFF, + 0x80, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0xFE, 0x00, + 0x00, 0xFF, 0x00, 0x3F, 0x80, 0x1F, 0xFF, 0xE0, 0x07, 0xF0, 0x03, 0xFD, + 0xFC, 0x01, 0xFE, 0x00, 0x7F, 0x3F, 0x80, 0x3F, 0xE0, 0x0F, 0xE7, 0xF0, + 0x07, 0xFC, 0x01, 0xFC, 0x7F, 0x00, 0xFF, 0x80, 0x7F, 0x8F, 0xE0, 0x1F, + 0xF0, 0x0F, 0xE1, 0xFC, 0x07, 0xFF, 0x01, 0xFC, 0x3F, 0x80, 0xFB, 0xE0, + 0x3F, 0x83, 0xF0, 0x1F, 0x7C, 0x07, 0xE0, 0x7F, 0x03, 0xEF, 0x81, 0xFC, + 0x0F, 0xE0, 0x7D, 0xF0, 0x3F, 0x80, 0xFC, 0x1F, 0x9F, 0x07, 0xF0, 0x1F, + 0x83, 0xE3, 0xE0, 0xFC, 0x03, 0xF0, 0x7C, 0x7C, 0x1F, 0x80, 0x7F, 0x0F, + 0x8F, 0x87, 0xF0, 0x07, 0xE1, 0xF0, 0xF8, 0xFC, 0x00, 0xFC, 0x7E, 0x1F, + 0x1F, 0x80, 0x1F, 0x8F, 0x83, 0xE3, 0xF0, 0x01, 0xF9, 0xF0, 0x7C, 0x7E, + 0x00, 0x3F, 0x3E, 0x0F, 0x9F, 0x80, 0x07, 0xE7, 0xC0, 0xFB, 0xF0, 0x00, + 0xFD, 0xF0, 0x1F, 0x7E, 0x00, 0x0F, 0xBE, 0x03, 0xEF, 0xC0, 0x01, 0xFF, + 0xC0, 0x7D, 0xF0, 0x00, 0x3F, 0xF8, 0x0F, 0xFE, 0x00, 0x03, 0xFF, 0x00, + 0xFF, 0xC0, 0x00, 0x7F, 0xC0, 0x1F, 0xF0, 0x00, 0x0F, 0xF8, 0x03, 0xFE, + 0x00, 0x01, 0xFF, 0x00, 0x7F, 0xC0, 0x00, 0x1F, 0xE0, 0x07, 0xF8, 0x00, + 0x03, 0xFC, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x1F, 0xC0, 0x00, 0x07, + 0xE0, 0x03, 0xF8, 0x00, 0x7F, 0x80, 0x07, 0xF9, 0xFF, 0x00, 0x3F, 0xC3, + 0xFC, 0x00, 0xFF, 0x07, 0xF8, 0x07, 0xF8, 0x1F, 0xE0, 0x1F, 0xC0, 0x3F, + 0xC0, 0xFF, 0x00, 0xFF, 0x07, 0xF8, 0x01, 0xFE, 0x1F, 0xE0, 0x03, 0xF8, + 0xFF, 0x00, 0x0F, 0xF3, 0xF8, 0x00, 0x1F, 0xDF, 0xE0, 0x00, 0x3F, 0xFF, + 0x00, 0x00, 0xFF, 0xF8, 0x00, 0x01, 0xFF, 0xE0, 0x00, 0x07, 0xFF, 0x00, + 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0xFF, 0x80, 0x00, + 0x03, 0xFF, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x7F, 0xF8, 0x00, 0x03, + 0xFF, 0xF0, 0x00, 0x1F, 0xFF, 0xC0, 0x00, 0x7F, 0x7F, 0x80, 0x03, 0xF8, + 0xFF, 0x00, 0x1F, 0xE1, 0xFC, 0x00, 0x7F, 0x07, 0xF8, 0x03, 0xFC, 0x0F, + 0xF0, 0x1F, 0xE0, 0x3F, 0xC0, 0x7F, 0x80, 0x7F, 0x83, 0xFC, 0x01, 0xFE, + 0x0F, 0xF0, 0x03, 0xFC, 0x7F, 0x80, 0x0F, 0xFB, 0xFE, 0x00, 0x1F, 0xE0, + 0xFF, 0x00, 0x07, 0xFF, 0xF8, 0x00, 0x7F, 0x9F, 0xE0, 0x03, 0xFC, 0xFF, + 0x00, 0x3F, 0xC3, 0xFC, 0x01, 0xFE, 0x0F, 0xE0, 0x0F, 0xE0, 0x7F, 0x00, + 0xFF, 0x01, 0xFC, 0x07, 0xF0, 0x0F, 0xE0, 0x7F, 0x80, 0x3F, 0x83, 0xF8, + 0x01, 0xFC, 0x3F, 0xC0, 0x07, 0xF1, 0xFC, 0x00, 0x3F, 0x8F, 0xE0, 0x00, + 0xFE, 0xFE, 0x00, 0x07, 0xF7, 0xF0, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0xFF, + 0xF8, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x7F, 0xC0, + 0x00, 0x01, 0xFC, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x7F, 0x00, 0x00, + 0x03, 0xF8, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x07, + 0xF0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x0F, 0xE0, + 0x00, 0x00, 0x7F, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x1F, 0xC0, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x00, 0x03, 0xFC, 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x7F, + 0x80, 0x00, 0x3F, 0xE0, 0x00, 0x0F, 0xF0, 0x00, 0x07, 0xF8, 0x00, 0x03, + 0xFC, 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x3F, 0xC0, 0x00, + 0x1F, 0xE0, 0x00, 0x0F, 0xF0, 0x00, 0x07, 0xF8, 0x00, 0x03, 0xFE, 0x00, + 0x00, 0xFF, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x3F, 0xC0, 0x00, 0x1F, 0xE0, + 0x00, 0x0F, 0xF8, 0x00, 0x03, 0xFC, 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFC, 0x3F, 0x87, 0xF0, 0xFE, 0x1F, 0xC3, 0xF8, 0x7F, 0x0F, + 0xE1, 0xFC, 0x3F, 0x87, 0xF0, 0xFE, 0x1F, 0xC3, 0xF8, 0x7F, 0x0F, 0xE1, + 0xFC, 0x3F, 0x87, 0xF0, 0xFE, 0x1F, 0xC3, 0xF8, 0x7F, 0x0F, 0xE1, 0xFC, + 0x3F, 0x87, 0xF0, 0xFE, 0x1F, 0xC3, 0xF8, 0x7F, 0x0F, 0xE1, 0xFC, 0x3F, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0xE0, 0x03, 0xC0, 0x07, 0x00, + 0x1C, 0x00, 0x78, 0x00, 0xE0, 0x03, 0x80, 0x0F, 0x00, 0x1C, 0x00, 0x70, + 0x01, 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x38, 0x00, 0x70, 0x01, 0xC0, 0x07, + 0x00, 0x0E, 0x00, 0x38, 0x00, 0xE0, 0x01, 0xC0, 0x07, 0x00, 0x1C, 0x00, + 0x78, 0x00, 0xE0, 0x03, 0x80, 0x0F, 0x00, 0x1C, 0x00, 0x70, 0x01, 0xE0, + 0x03, 0x80, 0x0E, 0x00, 0x3C, 0x00, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0x1F, 0xC3, 0xF8, 0x7F, 0x0F, 0xE1, 0xFC, 0x3F, 0x87, 0xF0, + 0xFE, 0x1F, 0xC3, 0xF8, 0x7F, 0x0F, 0xE1, 0xFC, 0x3F, 0x87, 0xF0, 0xFE, + 0x1F, 0xC3, 0xF8, 0x7F, 0x0F, 0xE1, 0xFC, 0x3F, 0x87, 0xF0, 0xFE, 0x1F, + 0xC3, 0xF8, 0x7F, 0x0F, 0xE1, 0xFC, 0x3F, 0x87, 0xF0, 0xFE, 0x1F, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xF0, + 0x00, 0x1F, 0xC0, 0x00, 0xFF, 0x80, 0x03, 0xFE, 0x00, 0x0F, 0xFC, 0x00, + 0x7D, 0xF0, 0x01, 0xF7, 0xC0, 0x0F, 0xDF, 0x80, 0x3E, 0x3E, 0x00, 0xF8, + 0xFC, 0x07, 0xE1, 0xF0, 0x1F, 0x07, 0xC0, 0xFC, 0x1F, 0x83, 0xE0, 0x3E, + 0x0F, 0x80, 0xFC, 0x7E, 0x01, 0xF1, 0xF0, 0x07, 0xC7, 0xC0, 0x1F, 0xBE, + 0x00, 0x3E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x3E, 0x0F, 0x83, 0xC0, 0xF0, 0x38, 0x1E, + 0x01, 0xFF, 0x00, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0xF0, 0x3F, 0xFF, 0xF8, + 0x7F, 0xFF, 0xF8, 0x7F, 0xFF, 0xFC, 0x7F, 0x03, 0xFC, 0x7E, 0x01, 0xFC, + 0x00, 0x01, 0xFC, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xFC, 0x03, 0xFF, 0xFC, + 0x1F, 0xFF, 0xFC, 0x3F, 0xFF, 0xFC, 0x7F, 0xC1, 0xFC, 0xFF, 0x01, 0xFC, + 0xFE, 0x01, 0xFC, 0xFE, 0x03, 0xFC, 0xFE, 0x03, 0xFC, 0xFF, 0x07, 0xFC, + 0xFF, 0xFF, 0xFC, 0x7F, 0xFF, 0xFC, 0x7F, 0xFF, 0xFC, 0x3F, 0xFD, 0xFE, + 0x1F, 0xF0, 0xFF, 0x07, 0xE0, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, + 0x3F, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x0F, 0xE0, 0x00, 0x07, 0xF0, 0x00, + 0x03, 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x0F, + 0xC0, 0x3F, 0x9F, 0xF8, 0x1F, 0xDF, 0xFF, 0x0F, 0xFF, 0xFF, 0xC7, 0xFF, + 0xFF, 0xE3, 0xFF, 0xFF, 0xF9, 0xFF, 0x83, 0xFE, 0xFF, 0x80, 0xFF, 0x7F, + 0x80, 0x3F, 0xBF, 0xC0, 0x1F, 0xFF, 0xC0, 0x07, 0xFF, 0xE0, 0x03, 0xFF, + 0xF0, 0x01, 0xFF, 0xF8, 0x00, 0xFF, 0xFC, 0x00, 0x7F, 0xFE, 0x00, 0x3F, + 0xFF, 0x80, 0x3F, 0xFF, 0xC0, 0x1F, 0xDF, 0xF0, 0x1F, 0xEF, 0xFC, 0x1F, + 0xF7, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xF1, 0xFF, 0xFF, 0xF8, 0xFE, 0xFF, + 0xF8, 0x7F, 0x3F, 0xF0, 0x00, 0x07, 0xE0, 0x00, 0x00, 0xFF, 0x00, 0x07, + 0xFF, 0xC0, 0x3F, 0xFF, 0xC0, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xC7, 0xFF, + 0xFF, 0x9F, 0xF0, 0x7F, 0xBF, 0xC0, 0x7F, 0x7F, 0x00, 0x7F, 0xFC, 0x00, + 0x03, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, + 0x3F, 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0xFD, + 0xFE, 0x03, 0xFB, 0xFE, 0x0F, 0xF3, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0x87, + 0xFF, 0xFE, 0x07, 0xFF, 0xF8, 0x03, 0xFF, 0xE0, 0x01, 0xFE, 0x00, 0x00, + 0x00, 0x3F, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x0F, 0xE0, 0x00, 0x07, 0xF0, + 0x00, 0x03, 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, + 0x00, 0x00, 0x3F, 0x80, 0x7E, 0x1F, 0xC0, 0xFF, 0xCF, 0xE1, 0xFF, 0xF7, + 0xF1, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFE, 0xFF, 0x83, + 0xFF, 0x7F, 0x80, 0xFF, 0xBF, 0x80, 0x3F, 0xFF, 0xC0, 0x1F, 0xFF, 0xC0, + 0x07, 0xFF, 0xE0, 0x03, 0xFF, 0xF0, 0x01, 0xFF, 0xF8, 0x00, 0xFF, 0xFC, + 0x00, 0x7F, 0xFE, 0x00, 0x3F, 0xFF, 0x80, 0x3F, 0xDF, 0xC0, 0x1F, 0xEF, + 0xF0, 0x1F, 0xF7, 0xFC, 0x1F, 0xF9, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFE, + 0x3F, 0xFF, 0xFF, 0x0F, 0xFF, 0xBF, 0x81, 0xFF, 0x9F, 0xC0, 0x3F, 0x00, + 0x00, 0x00, 0xFE, 0x00, 0x03, 0xFF, 0x80, 0x0F, 0xFF, 0xE0, 0x1F, 0xFF, + 0xF0, 0x3F, 0xFF, 0xF8, 0x3F, 0xC3, 0xF8, 0x7F, 0x80, 0xFC, 0x7F, 0x00, + 0xFC, 0x7F, 0x00, 0x7C, 0xFE, 0x00, 0x7E, 0xFE, 0x00, 0x7E, 0xFF, 0xFF, + 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFE, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x7F, 0x7F, 0x00, + 0xFE, 0x3F, 0xC1, 0xFE, 0x3F, 0xFF, 0xFC, 0x1F, 0xFF, 0xF8, 0x0F, 0xFF, + 0xF0, 0x03, 0xFF, 0xC0, 0x00, 0xFF, 0x00, 0x01, 0xFC, 0x1F, 0xF0, 0xFF, + 0xC3, 0xFF, 0x1F, 0xFC, 0x7F, 0x81, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, + 0x0F, 0xFF, 0xBF, 0xFE, 0xFF, 0xFB, 0xFF, 0xE1, 0xFC, 0x07, 0xF0, 0x1F, + 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, + 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, + 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x00, 0x00, 0xF8, 0x7F, 0x07, 0xFE, + 0x7F, 0x0F, 0xFF, 0x7F, 0x1F, 0xFF, 0x7F, 0x3F, 0xFF, 0xFF, 0x3F, 0xFF, + 0xFF, 0x7F, 0xC3, 0xFF, 0x7F, 0x81, 0xFF, 0x7F, 0x00, 0xFF, 0xFF, 0x00, + 0xFF, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, + 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0xFF, 0xFF, 0x00, + 0xFF, 0x7F, 0x81, 0xFF, 0x7F, 0xC3, 0xFF, 0x3F, 0xFF, 0xFF, 0x3F, 0xFF, + 0xFF, 0x1F, 0xFF, 0xFF, 0x0F, 0xFF, 0x7F, 0x07, 0xFE, 0x7F, 0x01, 0xF8, + 0x7F, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x7F, 0x00, + 0xFF, 0x7F, 0x01, 0xFE, 0x7F, 0xC3, 0xFE, 0x3F, 0xFF, 0xFC, 0x1F, 0xFF, + 0xF8, 0x0F, 0xFF, 0xE0, 0x01, 0xFF, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x00, + 0x03, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, + 0x3F, 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x3F, 0x83, + 0xF8, 0xFF, 0xC7, 0xF7, 0xFF, 0xCF, 0xEF, 0xFF, 0xDF, 0xFF, 0xFF, 0xBF, + 0xFF, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0x01, 0xFF, 0xFE, 0x01, 0xFF, 0xF8, + 0x03, 0xFF, 0xF0, 0x07, 0xFF, 0xE0, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0x80, + 0x3F, 0xFF, 0x00, 0x7F, 0xFE, 0x00, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, 0x03, + 0xFF, 0xF0, 0x07, 0xFF, 0xE0, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0x80, 0x3F, + 0xFF, 0x00, 0x7F, 0xFE, 0x00, 0xFF, 0xFC, 0x01, 0xFC, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xC0, 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFC, 0x1F, 0xC7, 0xF1, 0xFC, 0x7F, 0x1F, 0xC7, 0xF0, 0x00, + 0x00, 0x00, 0x07, 0xF1, 0xFC, 0x7F, 0x1F, 0xC7, 0xF1, 0xFC, 0x7F, 0x1F, + 0xC7, 0xF1, 0xFC, 0x7F, 0x1F, 0xC7, 0xF1, 0xFC, 0x7F, 0x1F, 0xC7, 0xF1, + 0xFC, 0x7F, 0x1F, 0xC7, 0xF1, 0xFC, 0x7F, 0x1F, 0xC7, 0xF1, 0xFC, 0x7F, + 0x1F, 0xC7, 0xF1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFE, 0xFE, 0x00, + 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x03, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F, + 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0x3F, 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFE, + 0x00, 0x01, 0xFC, 0x03, 0xFB, 0xF8, 0x0F, 0xE7, 0xF0, 0x3F, 0xCF, 0xE0, + 0xFF, 0x1F, 0xC3, 0xFC, 0x3F, 0x87, 0xF0, 0x7F, 0x1F, 0xC0, 0xFE, 0x7F, + 0x01, 0xFD, 0xFC, 0x03, 0xFF, 0xF0, 0x07, 0xFF, 0xF0, 0x0F, 0xFF, 0xE0, + 0x1F, 0xFF, 0xE0, 0x3F, 0xFF, 0xE0, 0x7F, 0xDF, 0xC0, 0xFF, 0x3F, 0xC1, + 0xFC, 0x3F, 0x83, 0xF8, 0x3F, 0x87, 0xF0, 0x7F, 0x8F, 0xE0, 0x7F, 0x1F, + 0xC0, 0xFF, 0x3F, 0x80, 0xFE, 0x7F, 0x01, 0xFE, 0xFE, 0x01, 0xFD, 0xFC, + 0x03, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFE, 0x1F, 0x80, 0x7E, + 0x0F, 0xE7, 0xFE, 0x1F, 0xF8, 0xFE, 0xFF, 0xF3, 0xFF, 0xCF, 0xFF, 0xFF, + 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x83, 0xFF, 0x0F, 0xFF, 0xF0, 0x1F, 0xE0, 0x7F, 0xFE, 0x01, 0xFC, 0x07, + 0xFF, 0xE0, 0x1F, 0xC0, 0x7F, 0xFE, 0x01, 0xFC, 0x07, 0xFF, 0xE0, 0x1F, + 0xC0, 0x7F, 0xFE, 0x01, 0xFC, 0x07, 0xFF, 0xE0, 0x1F, 0xC0, 0x7F, 0xFE, + 0x01, 0xFC, 0x07, 0xFF, 0xE0, 0x1F, 0xC0, 0x7F, 0xFE, 0x01, 0xFC, 0x07, + 0xFF, 0xE0, 0x1F, 0xC0, 0x7F, 0xFE, 0x01, 0xFC, 0x07, 0xFF, 0xE0, 0x1F, + 0xC0, 0x7F, 0xFE, 0x01, 0xFC, 0x07, 0xFF, 0xE0, 0x1F, 0xC0, 0x7F, 0xFE, + 0x01, 0xFC, 0x07, 0xFF, 0xE0, 0x1F, 0xC0, 0x7F, 0xFE, 0x01, 0xFC, 0x07, + 0xF0, 0xFE, 0x1F, 0xC1, 0xFC, 0xFF, 0xE3, 0xFB, 0xFF, 0xE7, 0xFF, 0xFF, + 0xEF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0x80, 0xFF, + 0xFE, 0x00, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, 0x03, 0xFF, 0xF0, 0x07, 0xFF, + 0xE0, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0x80, 0x3F, 0xFF, 0x00, 0x7F, 0xFE, + 0x00, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, 0x03, 0xFF, 0xF0, 0x07, 0xFF, 0xE0, + 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0x80, 0x3F, 0xFF, 0x00, 0x7F, 0xFE, 0x00, + 0xFE, 0x00, 0x7F, 0x80, 0x01, 0xFF, 0xF0, 0x01, 0xFF, 0xFE, 0x01, 0xFF, + 0xFF, 0x81, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0xF1, 0xFF, 0x07, 0xFC, 0xFF, + 0x01, 0xFE, 0x7F, 0x00, 0x7F, 0x7F, 0x80, 0x3F, 0xFF, 0x80, 0x0F, 0xFF, + 0xC0, 0x07, 0xFF, 0xE0, 0x03, 0xFF, 0xF0, 0x01, 0xFF, 0xF8, 0x00, 0xFF, + 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0x7F, 0xBF, 0x80, 0x3F, 0x9F, 0xE0, 0x3F, + 0xCF, 0xF8, 0x3F, 0xE3, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xF0, 0x3F, 0xFF, + 0xF0, 0x0F, 0xFF, 0xF0, 0x03, 0xFF, 0xE0, 0x00, 0x3F, 0xC0, 0x00, 0xFE, + 0x1F, 0x80, 0x7F, 0x3F, 0xF0, 0x3F, 0xBF, 0xFE, 0x1F, 0xDF, 0xFF, 0x8F, + 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0xF3, 0xFF, 0x07, 0xFD, 0xFF, 0x01, 0xFE, + 0xFF, 0x00, 0x7F, 0x7F, 0x80, 0x3F, 0xFF, 0x80, 0x0F, 0xFF, 0xC0, 0x07, + 0xFF, 0xE0, 0x03, 0xFF, 0xF0, 0x01, 0xFF, 0xF8, 0x00, 0xFF, 0xFC, 0x00, + 0x7F, 0xFF, 0x00, 0x7F, 0xFF, 0x80, 0x3F, 0xBF, 0xE0, 0x3F, 0xDF, 0xF8, + 0x3F, 0xCF, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xE3, 0xFB, 0xFF, 0xE1, 0xFD, + 0xFF, 0xF0, 0xFE, 0x7F, 0xE0, 0x7F, 0x0F, 0xC0, 0x3F, 0x80, 0x00, 0x1F, + 0xC0, 0x00, 0x0F, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0x01, + 0xFC, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0x80, 0x00, + 0x1F, 0xC0, 0x00, 0x00, 0x00, 0xFC, 0x3F, 0x81, 0xFF, 0x9F, 0xC3, 0xFF, + 0xEF, 0xE1, 0xFF, 0xF7, 0xF1, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xFD, 0xFF, + 0x07, 0xFE, 0xFF, 0x01, 0xFF, 0x7F, 0x00, 0x7F, 0xFF, 0x80, 0x3F, 0xFF, + 0x80, 0x0F, 0xFF, 0xC0, 0x07, 0xFF, 0xE0, 0x03, 0xFF, 0xF0, 0x01, 0xFF, + 0xF8, 0x00, 0xFF, 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0x7F, 0xBF, 0x80, 0x3F, + 0xDF, 0xE0, 0x3F, 0xEF, 0xF8, 0x3F, 0xF3, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, + 0xFC, 0x7F, 0xFE, 0xFE, 0x1F, 0xFF, 0x7F, 0x03, 0xFF, 0x3F, 0x80, 0x7E, + 0x1F, 0xC0, 0x00, 0x0F, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xF8, 0x00, + 0x01, 0xFC, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0x80, + 0x00, 0x1F, 0xC0, 0x00, 0x0F, 0xE0, 0x00, 0x07, 0xF0, 0xFE, 0x1F, 0xFC, + 0x7F, 0xFB, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x7F, 0x80, + 0xFF, 0x01, 0xFC, 0x03, 0xF8, 0x07, 0xF0, 0x0F, 0xE0, 0x1F, 0xC0, 0x3F, + 0x80, 0x7F, 0x00, 0xFE, 0x01, 0xFC, 0x03, 0xF8, 0x07, 0xF0, 0x0F, 0xE0, + 0x1F, 0xC0, 0x3F, 0x80, 0x7F, 0x00, 0xFE, 0x00, 0x00, 0xFF, 0x00, 0x07, + 0xFF, 0xE0, 0x0F, 0xFF, 0xF8, 0x1F, 0xFF, 0xFC, 0x3F, 0xFF, 0xFC, 0x7F, + 0x81, 0xFE, 0x7F, 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0x7F, 0xC0, 0x00, 0x7F, + 0xFC, 0x00, 0x7F, 0xFF, 0x80, 0x3F, 0xFF, 0xF0, 0x1F, 0xFF, 0xFC, 0x07, + 0xFF, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x0F, 0xFF, 0x00, 0x01, 0xFF, 0x00, + 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0x7F, 0x00, 0x7F, 0x7F, 0x81, 0xFE, 0x7F, + 0xFF, 0xFE, 0x3F, 0xFF, 0xFC, 0x1F, 0xFF, 0xF8, 0x0F, 0xFF, 0xF0, 0x01, + 0xFF, 0x80, 0x3F, 0x83, 0xF8, 0x3F, 0x83, 0xF8, 0x3F, 0x83, 0xF8, 0x3F, + 0x8F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0xF8, 0x3F, 0x83, 0xF8, 0x3F, + 0x83, 0xF8, 0x3F, 0x83, 0xF8, 0x3F, 0x83, 0xF8, 0x3F, 0x83, 0xF8, 0x3F, + 0x83, 0xF8, 0x3F, 0x83, 0xF8, 0x3F, 0x83, 0xFF, 0x3F, 0xF1, 0xFF, 0x0F, + 0xF0, 0x7F, 0xFE, 0x00, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, 0x03, 0xFF, 0xF0, + 0x07, 0xFF, 0xE0, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0x80, 0x3F, 0xFF, 0x00, + 0x7F, 0xFE, 0x00, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, 0x03, 0xFF, 0xF0, 0x07, + 0xFF, 0xE0, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0x80, 0x3F, 0xFF, 0x00, 0x7F, + 0xFE, 0x00, 0xFF, 0xFC, 0x03, 0xFF, 0xFC, 0x07, 0xFF, 0xFC, 0x3F, 0xFF, + 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xDF, 0xFF, 0xBF, 0x9F, 0xFF, 0x7F, 0x1F, + 0xFC, 0xFE, 0x0F, 0xE0, 0x00, 0x7F, 0x00, 0x3F, 0xBF, 0x80, 0x1F, 0x9F, + 0xC0, 0x1F, 0xC7, 0xE0, 0x0F, 0xE3, 0xF8, 0x07, 0xE1, 0xFC, 0x07, 0xF0, + 0x7E, 0x03, 0xF8, 0x3F, 0x81, 0xF8, 0x1F, 0xC0, 0xFC, 0x07, 0xE0, 0xFE, + 0x03, 0xF8, 0x7E, 0x00, 0xFC, 0x3F, 0x00, 0x7E, 0x1F, 0x80, 0x3F, 0x1F, + 0x80, 0x0F, 0xCF, 0xC0, 0x07, 0xE7, 0xE0, 0x03, 0xF7, 0xE0, 0x00, 0xFF, + 0xF0, 0x00, 0x7F, 0xF8, 0x00, 0x3F, 0xF8, 0x00, 0x0F, 0xFC, 0x00, 0x07, + 0xFE, 0x00, 0x03, 0xFE, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x7F, 0x00, 0x00, + 0xFC, 0x03, 0xF8, 0x0F, 0xFF, 0xC0, 0x7F, 0x01, 0xFF, 0xF8, 0x0F, 0xE0, + 0x3F, 0x3F, 0x03, 0xFE, 0x07, 0xE7, 0xE0, 0x7F, 0xC1, 0xFC, 0xFE, 0x0F, + 0xF8, 0x3F, 0x9F, 0xC1, 0xFF, 0x07, 0xE1, 0xF8, 0x3D, 0xE0, 0xFC, 0x3F, + 0x0F, 0xBE, 0x3F, 0x87, 0xF1, 0xF7, 0xC7, 0xE0, 0x7E, 0x3E, 0xF8, 0xFC, + 0x0F, 0xC7, 0xDF, 0x1F, 0x81, 0xF9, 0xF1, 0xE3, 0xF0, 0x3F, 0x3E, 0x3E, + 0xFC, 0x03, 0xF7, 0xC7, 0xDF, 0x80, 0x7E, 0xF8, 0xFB, 0xF0, 0x0F, 0xDE, + 0x1F, 0x7C, 0x00, 0xFF, 0xC1, 0xFF, 0x80, 0x1F, 0xF8, 0x3F, 0xF0, 0x03, + 0xFF, 0x07, 0xFE, 0x00, 0x7F, 0xC0, 0xFF, 0x80, 0x07, 0xF8, 0x1F, 0xF0, + 0x00, 0xFF, 0x01, 0xFE, 0x00, 0x1F, 0xE0, 0x3F, 0x80, 0x01, 0xFC, 0x07, + 0xF0, 0x00, 0xFF, 0x00, 0xFF, 0x7F, 0x81, 0xFE, 0x3F, 0x81, 0xFC, 0x3F, + 0xC3, 0xFC, 0x1F, 0xC3, 0xF8, 0x0F, 0xE7, 0xF0, 0x0F, 0xEF, 0xF0, 0x07, + 0xFF, 0xE0, 0x03, 0xFF, 0xC0, 0x03, 0xFF, 0xC0, 0x01, 0xFF, 0x80, 0x00, + 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x01, 0xFF, 0x80, 0x03, + 0xFF, 0xC0, 0x07, 0xFF, 0xC0, 0x07, 0xFF, 0xE0, 0x0F, 0xE7, 0xF0, 0x1F, + 0xE7, 0xF0, 0x1F, 0xC3, 0xF8, 0x3F, 0xC3, 0xFC, 0x7F, 0x81, 0xFC, 0x7F, + 0x01, 0xFE, 0xFF, 0x00, 0xFF, 0x7F, 0x00, 0x3F, 0xBF, 0x80, 0x1F, 0xDF, + 0xC0, 0x0F, 0xC7, 0xF0, 0x07, 0xE3, 0xF8, 0x07, 0xF1, 0xFC, 0x03, 0xF0, + 0x7F, 0x01, 0xF8, 0x3F, 0x81, 0xFC, 0x0F, 0xC0, 0xFC, 0x07, 0xF0, 0x7E, + 0x03, 0xF8, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0x7E, 0x1F, 0x80, 0x3F, 0x8F, + 0xC0, 0x0F, 0xCF, 0xC0, 0x07, 0xE7, 0xE0, 0x03, 0xFB, 0xF0, 0x00, 0xFD, + 0xF0, 0x00, 0x7F, 0xF8, 0x00, 0x3F, 0xFC, 0x00, 0x0F, 0xFC, 0x00, 0x07, + 0xFE, 0x00, 0x03, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x7F, 0x80, 0x00, + 0x1F, 0xC0, 0x00, 0x0F, 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x03, 0xF0, 0x00, + 0x03, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0x1F, 0xF8, 0x00, 0x0F, 0xFC, 0x00, + 0x07, 0xFC, 0x00, 0x03, 0xFC, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x7F, 0xFF, + 0xFB, 0xFF, 0xFF, 0xDF, 0xFF, 0xFE, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xBF, + 0xFF, 0xFC, 0x00, 0x3F, 0xE0, 0x03, 0xFE, 0x00, 0x1F, 0xE0, 0x01, 0xFE, + 0x00, 0x1F, 0xE0, 0x01, 0xFE, 0x00, 0x1F, 0xE0, 0x01, 0xFE, 0x00, 0x1F, + 0xE0, 0x01, 0xFE, 0x00, 0x1F, 0xE0, 0x01, 0xFE, 0x00, 0x1F, 0xE0, 0x01, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xF8, 0x01, 0xF8, 0x1F, 0xC1, 0xFE, 0x0F, 0xF0, 0xFF, + 0x87, 0xE0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x1F, 0x00, + 0xF8, 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x3F, + 0x0F, 0xF0, 0x7F, 0x03, 0xF8, 0x1F, 0xE0, 0x1F, 0x80, 0x7C, 0x03, 0xE0, + 0x1F, 0x00, 0xF8, 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, + 0xE0, 0x1F, 0x00, 0xF8, 0x07, 0xE0, 0x3F, 0xE0, 0xFF, 0x07, 0xF8, 0x1F, + 0xC0, 0x7E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFC, 0x07, 0xF0, 0x3F, 0xC1, 0xFE, 0x0F, 0xF8, 0x0F, 0xC0, 0x3E, 0x01, + 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x07, 0xC0, 0x3E, + 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x1F, 0x80, 0x7F, 0x81, 0xFC, + 0x0F, 0xE0, 0xFF, 0x0F, 0xC0, 0x7C, 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x07, + 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x1F, 0x00, 0xF8, + 0x0F, 0xC3, 0xFE, 0x1F, 0xE0, 0xFF, 0x07, 0xF0, 0x3F, 0x00, 0x1F, 0x00, + 0x03, 0xFE, 0x00, 0x1F, 0xF8, 0x0F, 0xFF, 0xF0, 0xFF, 0x0F, 0xFF, 0xF0, + 0x1F, 0xF8, 0x00, 0x7F, 0x80, 0x00, 0xF8}; + +const GFXglyph FreeSansBold24pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 13, 0, 1}, // 0x20 ' ' + {0, 7, 34, 16, 5, -33}, // 0x21 '!' + {30, 18, 12, 22, 2, -33}, // 0x22 '"' + {57, 26, 33, 26, 0, -31}, // 0x23 '#' + {165, 25, 40, 26, 1, -34}, // 0x24 '$' + {290, 39, 34, 42, 1, -32}, // 0x25 '%' + {456, 30, 35, 34, 3, -33}, // 0x26 '&' + {588, 7, 12, 12, 3, -33}, // 0x27 ''' + {599, 13, 44, 16, 2, -33}, // 0x28 '(' + {671, 13, 44, 16, 1, -33}, // 0x29 ')' + {743, 15, 15, 18, 1, -33}, // 0x2A '*' + {772, 23, 22, 27, 2, -21}, // 0x2B '+' + {836, 7, 15, 12, 2, -6}, // 0x2C ',' + {850, 13, 6, 16, 1, -15}, // 0x2D '-' + {860, 7, 7, 12, 2, -6}, // 0x2E '.' + {867, 13, 34, 13, 0, -32}, // 0x2F '/' + {923, 24, 35, 26, 1, -33}, // 0x30 '0' + {1028, 14, 33, 26, 4, -32}, // 0x31 '1' + {1086, 23, 34, 26, 2, -33}, // 0x32 '2' + {1184, 23, 35, 26, 2, -33}, // 0x33 '3' + {1285, 22, 33, 26, 2, -32}, // 0x34 '4' + {1376, 23, 34, 26, 2, -32}, // 0x35 '5' + {1474, 23, 35, 26, 2, -33}, // 0x36 '6' + {1575, 23, 33, 26, 1, -32}, // 0x37 '7' + {1670, 24, 35, 26, 1, -33}, // 0x38 '8' + {1775, 24, 35, 26, 1, -33}, // 0x39 '9' + {1880, 7, 25, 12, 2, -24}, // 0x3A ':' + {1902, 7, 33, 12, 2, -24}, // 0x3B ';' + {1931, 23, 23, 27, 2, -22}, // 0x3C '<' + {1998, 23, 18, 27, 2, -19}, // 0x3D '=' + {2050, 23, 23, 27, 2, -22}, // 0x3E '>' + {2117, 24, 35, 29, 3, -34}, // 0x3F '?' + {2222, 43, 41, 46, 1, -34}, // 0x40 '@' + {2443, 32, 34, 33, 0, -33}, // 0x41 'A' + {2579, 27, 34, 33, 4, -33}, // 0x42 'B' + {2694, 30, 36, 34, 2, -34}, // 0x43 'C' + {2829, 28, 34, 34, 4, -33}, // 0x44 'D' + {2948, 25, 34, 31, 4, -33}, // 0x45 'E' + {3055, 24, 34, 30, 4, -33}, // 0x46 'F' + {3157, 31, 36, 36, 2, -34}, // 0x47 'G' + {3297, 27, 34, 35, 4, -33}, // 0x48 'H' + {3412, 7, 34, 15, 4, -33}, // 0x49 'I' + {3442, 22, 35, 27, 1, -33}, // 0x4A 'J' + {3539, 30, 34, 34, 4, -33}, // 0x4B 'K' + {3667, 23, 34, 29, 4, -33}, // 0x4C 'L' + {3765, 33, 34, 41, 4, -33}, // 0x4D 'M' + {3906, 28, 34, 35, 4, -33}, // 0x4E 'N' + {4025, 33, 36, 37, 2, -34}, // 0x4F 'O' + {4174, 26, 34, 32, 4, -33}, // 0x50 'P' + {4285, 33, 37, 37, 2, -34}, // 0x51 'Q' + {4438, 28, 34, 34, 4, -33}, // 0x52 'R' + {4557, 28, 36, 32, 2, -34}, // 0x53 'S' + {4683, 27, 34, 30, 2, -33}, // 0x54 'T' + {4798, 27, 35, 35, 4, -33}, // 0x55 'U' + {4917, 29, 34, 31, 1, -33}, // 0x56 'V' + {5041, 43, 34, 45, 1, -33}, // 0x57 'W' + {5224, 30, 34, 32, 1, -33}, // 0x58 'X' + {5352, 29, 34, 30, 1, -33}, // 0x59 'Y' + {5476, 26, 34, 29, 1, -33}, // 0x5A 'Z' + {5587, 11, 43, 16, 3, -33}, // 0x5B '[' + {5647, 14, 34, 13, -1, -32}, // 0x5C '\' + {5707, 11, 43, 16, 1, -33}, // 0x5D ']' + {5767, 22, 20, 27, 3, -32}, // 0x5E '^' + {5822, 28, 4, 26, -1, 6}, // 0x5F '_' + {5836, 9, 7, 12, 1, -35}, // 0x60 '`' + {5844, 24, 26, 27, 2, -24}, // 0x61 'a' + {5922, 25, 35, 29, 3, -33}, // 0x62 'b' + {6032, 23, 26, 26, 2, -24}, // 0x63 'c' + {6107, 25, 35, 29, 2, -33}, // 0x64 'd' + {6217, 24, 26, 27, 2, -24}, // 0x65 'e' + {6295, 14, 34, 16, 1, -33}, // 0x66 'f' + {6355, 24, 36, 29, 2, -24}, // 0x67 'g' + {6463, 23, 34, 28, 3, -33}, // 0x68 'h' + {6561, 7, 34, 13, 3, -33}, // 0x69 'i' + {6591, 10, 45, 13, 0, -33}, // 0x6A 'j' + {6648, 23, 34, 27, 3, -33}, // 0x6B 'k' + {6746, 7, 34, 13, 3, -33}, // 0x6C 'l' + {6776, 36, 25, 42, 3, -24}, // 0x6D 'm' + {6889, 23, 25, 29, 3, -24}, // 0x6E 'n' + {6961, 25, 26, 29, 2, -24}, // 0x6F 'o' + {7043, 25, 36, 29, 3, -24}, // 0x70 'p' + {7156, 25, 36, 29, 2, -24}, // 0x71 'q' + {7269, 15, 25, 18, 3, -24}, // 0x72 'r' + {7316, 24, 26, 26, 1, -24}, // 0x73 's' + {7394, 12, 32, 16, 2, -30}, // 0x74 't' + {7442, 23, 26, 29, 3, -24}, // 0x75 'u' + {7517, 25, 25, 25, 0, -24}, // 0x76 'v' + {7596, 35, 25, 37, 1, -24}, // 0x77 'w' + {7706, 24, 25, 26, 1, -24}, // 0x78 'x' + {7781, 25, 36, 26, 0, -24}, // 0x79 'y' + {7894, 21, 25, 24, 1, -24}, // 0x7A 'z' + {7960, 13, 43, 18, 2, -33}, // 0x7B '{' + {8030, 4, 44, 13, 5, -33}, // 0x7C '|' + {8052, 13, 43, 18, 3, -33}, // 0x7D '}' + {8122, 21, 8, 23, 1, -14}}; // 0x7E '~' + +const GFXfont FreeSansBold24pt7b PROGMEM = { + (uint8_t *)FreeSansBold24pt7bBitmaps, (GFXglyph *)FreeSansBold24pt7bGlyphs, + 0x20, 0x7E, 56}; + +// Approx. 8815 bytes diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBold9pt7b.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBold9pt7b.h new file mode 100644 index 0000000..cffb178 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBold9pt7b.h @@ -0,0 +1,210 @@ +#pragma once +#include + +const uint8_t FreeSansBold9pt7bBitmaps[] PROGMEM = { + 0xFF, 0xFF, 0xFE, 0x48, 0x7E, 0xEF, 0xDF, 0xBF, 0x74, 0x40, 0x19, 0x86, + 0x67, 0xFD, 0xFF, 0x33, 0x0C, 0xC3, 0x33, 0xFE, 0xFF, 0x99, 0x86, 0x61, + 0x90, 0x10, 0x1F, 0x1F, 0xDE, 0xFF, 0x3F, 0x83, 0xC0, 0xFC, 0x1F, 0x09, + 0xFC, 0xFE, 0xF7, 0xF1, 0xE0, 0x40, 0x38, 0x10, 0x7C, 0x30, 0xC6, 0x20, + 0xC6, 0x40, 0xC6, 0x40, 0x7C, 0x80, 0x39, 0x9C, 0x01, 0x3E, 0x03, 0x63, + 0x02, 0x63, 0x04, 0x63, 0x0C, 0x3E, 0x08, 0x1C, 0x0E, 0x01, 0xF8, 0x3B, + 0x83, 0xB8, 0x3F, 0x01, 0xE0, 0x3E, 0x67, 0x76, 0xE3, 0xEE, 0x1C, 0xF3, + 0xC7, 0xFE, 0x3F, 0x70, 0xFF, 0xF4, 0x18, 0x63, 0x1C, 0x73, 0x8E, 0x38, + 0xE3, 0x8E, 0x18, 0x70, 0xC3, 0x06, 0x08, 0x61, 0x83, 0x0E, 0x38, 0x71, + 0xC7, 0x1C, 0x71, 0xC6, 0x38, 0xE3, 0x18, 0x40, 0x21, 0x3E, 0x45, 0x28, + 0x38, 0x70, 0xE7, 0xFF, 0xE7, 0x0E, 0x1C, 0xFC, 0x9C, 0xFF, 0xC0, 0xFC, + 0x08, 0xC4, 0x23, 0x10, 0x84, 0x62, 0x11, 0x88, 0x00, 0x3E, 0x3F, 0x9D, + 0xDC, 0x7E, 0x3F, 0x1F, 0x8F, 0xC7, 0xE3, 0xF1, 0xDD, 0xCF, 0xE3, 0xE0, + 0x08, 0xFF, 0xF3, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x80, 0x3E, 0x3F, 0xB8, + 0xFC, 0x70, 0x38, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x0F, 0xF7, 0xF8, + 0x3C, 0x7F, 0xE7, 0xE7, 0x07, 0x0C, 0x0E, 0x07, 0x07, 0xE7, 0xE7, 0x7E, + 0x3C, 0x0E, 0x1E, 0x1E, 0x2E, 0x2E, 0x4E, 0x4E, 0x8E, 0xFF, 0xFF, 0x0E, + 0x0E, 0x0E, 0x7F, 0x3F, 0x90, 0x18, 0x0D, 0xE7, 0xFB, 0x9E, 0x07, 0x03, + 0x81, 0xF1, 0xFF, 0xE7, 0xC0, 0x3E, 0x3F, 0x9C, 0xFC, 0x0E, 0xE7, 0xFB, + 0xDF, 0xC7, 0xE3, 0xF1, 0xDD, 0xEF, 0xE3, 0xE0, 0xFF, 0xFF, 0xC0, 0xE0, + 0xE0, 0x60, 0x70, 0x30, 0x38, 0x1C, 0x0C, 0x0E, 0x07, 0x03, 0x80, 0x3F, + 0x1F, 0xEE, 0x3F, 0x87, 0xE3, 0xCF, 0xC7, 0xFB, 0xCF, 0xE1, 0xF8, 0x7F, + 0x3D, 0xFE, 0x3F, 0x00, 0x3E, 0x3F, 0xBD, 0xDC, 0x7E, 0x3F, 0x1F, 0xDE, + 0xFF, 0x3B, 0x81, 0xF9, 0xCF, 0xE3, 0xC0, 0xFC, 0x00, 0x07, 0xE0, 0xFC, + 0x00, 0x07, 0xE5, 0xE0, 0x00, 0x83, 0xC7, 0xDF, 0x0C, 0x07, 0x80, 0xF8, + 0x1F, 0x01, 0x80, 0xFF, 0xFF, 0xC0, 0x00, 0x0F, 0xFF, 0xFC, 0x00, 0x70, + 0x3F, 0x03, 0xE0, 0x38, 0x7D, 0xF1, 0xE0, 0x80, 0x00, 0x3E, 0x3F, 0xB8, + 0xFC, 0x70, 0x38, 0x1C, 0x1C, 0x1C, 0x1C, 0x0E, 0x00, 0x03, 0x81, 0xC0, + 0x03, 0xF0, 0x0F, 0xFC, 0x1E, 0x0E, 0x38, 0x02, 0x70, 0xE9, 0x63, 0x19, + 0xC2, 0x19, 0xC6, 0x11, 0xC6, 0x33, 0xC6, 0x32, 0x63, 0xFE, 0x73, 0xDC, + 0x3C, 0x00, 0x1F, 0xF8, 0x07, 0xF0, 0x07, 0x00, 0xF0, 0x0F, 0x80, 0xF8, + 0x1D, 0x81, 0x9C, 0x19, 0xC3, 0x8C, 0x3F, 0xE7, 0xFE, 0x70, 0x66, 0x07, + 0xE0, 0x70, 0xFF, 0x9F, 0xFB, 0x83, 0xF0, 0x7E, 0x0F, 0xFF, 0x3F, 0xF7, + 0x06, 0xE0, 0xFC, 0x1F, 0x83, 0xFF, 0xEF, 0xF8, 0x1F, 0x83, 0xFE, 0x78, + 0xE7, 0x07, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x07, 0x07, 0x78, + 0xF3, 0xFE, 0x1F, 0x80, 0xFF, 0x8F, 0xFC, 0xE0, 0xEE, 0x0E, 0xE0, 0x7E, + 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x0E, 0xE0, 0xEF, 0xFC, 0xFF, 0x80, + 0xFF, 0xFF, 0xF8, 0x1C, 0x0E, 0x07, 0xFB, 0xFD, 0xC0, 0xE0, 0x70, 0x38, + 0x1F, 0xFF, 0xF8, 0xFF, 0xFF, 0xF8, 0x1C, 0x0E, 0x07, 0xFB, 0xFD, 0xC0, + 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x00, 0x0F, 0x87, 0xF9, 0xE3, 0xB8, 0x3E, + 0x01, 0xC0, 0x38, 0xFF, 0x1F, 0xE0, 0x6E, 0x0D, 0xE3, 0x9F, 0xD0, 0xF2, + 0xE0, 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xFF, 0xFF, 0xFF, 0x07, 0xE0, + 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x07, + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0xE7, 0xE7, 0xE7, 0x7E, 0x3C, + 0xE0, 0xEE, 0x1C, 0xE3, 0x8E, 0x70, 0xEE, 0x0F, 0xC0, 0xFE, 0x0F, 0x70, + 0xE7, 0x0E, 0x38, 0xE1, 0xCE, 0x0E, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, + 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xFF, 0xFF, 0xF8, 0x7F, 0xE1, + 0xFF, 0x87, 0xFE, 0x1F, 0xEC, 0x7F, 0xB3, 0x7E, 0xCD, 0xFB, 0x37, 0xEC, + 0xDF, 0x9E, 0x7E, 0x79, 0xF9, 0xE7, 0xE7, 0x9C, 0xE0, 0xFE, 0x1F, 0xC3, + 0xFC, 0x7F, 0xCF, 0xD9, 0xFB, 0xBF, 0x37, 0xE7, 0xFC, 0x7F, 0x87, 0xF0, + 0xFE, 0x0E, 0x0F, 0x81, 0xFF, 0x1E, 0x3C, 0xE0, 0xEE, 0x03, 0xF0, 0x1F, + 0x80, 0xFC, 0x07, 0xE0, 0x3B, 0x83, 0x9E, 0x3C, 0x7F, 0xC0, 0xF8, 0x00, + 0xFF, 0x9F, 0xFB, 0x87, 0xF0, 0x7E, 0x0F, 0xC3, 0xFF, 0xF7, 0xFC, 0xE0, + 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x00, 0x0F, 0x81, 0xFF, 0x1E, 0x3C, 0xE0, + 0xEE, 0x03, 0xF0, 0x1F, 0x80, 0xFC, 0x07, 0xE1, 0xBB, 0x8F, 0x9E, 0x3C, + 0x7F, 0xE0, 0xFB, 0x80, 0x08, 0xFF, 0x8F, 0xFC, 0xE0, 0xEE, 0x0E, 0xE0, + 0xEE, 0x0E, 0xFF, 0xCF, 0xFC, 0xE0, 0xEE, 0x0E, 0xE0, 0xEE, 0x0E, 0xE0, + 0xF0, 0x3F, 0x0F, 0xFB, 0xC7, 0xF0, 0x7E, 0x01, 0xFC, 0x1F, 0xF0, 0x3F, + 0x00, 0xFC, 0x1D, 0xC7, 0xBF, 0xE1, 0xF8, 0xFF, 0xFF, 0xC7, 0x03, 0x81, + 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0xFC, + 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x07, 0xE0, 0xFC, 0x1F, + 0xC7, 0xBF, 0xE1, 0xF0, 0x60, 0x67, 0x0E, 0x70, 0xE3, 0x0C, 0x30, 0xC3, + 0x9C, 0x19, 0x81, 0x98, 0x1F, 0x80, 0xF0, 0x0F, 0x00, 0xF0, 0x06, 0x00, + 0x61, 0xC3, 0xB8, 0xE1, 0x9C, 0x70, 0xCE, 0x3C, 0xE3, 0x36, 0x71, 0x9B, + 0x30, 0xED, 0x98, 0x36, 0x7C, 0x1B, 0x3C, 0x0F, 0x1E, 0x07, 0x8F, 0x01, + 0xC3, 0x80, 0xE1, 0x80, 0x70, 0xE7, 0x8E, 0x39, 0xC1, 0xF8, 0x1F, 0x80, + 0xF0, 0x07, 0x00, 0xF0, 0x1F, 0x81, 0x9C, 0x39, 0xC7, 0x0E, 0x70, 0xE0, + 0xE0, 0xFC, 0x39, 0xC7, 0x18, 0xC3, 0xB8, 0x36, 0x07, 0xC0, 0x70, 0x0E, + 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0xFF, 0xFF, 0xC0, 0xE0, 0xE0, 0xF0, + 0x70, 0x70, 0x70, 0x78, 0x38, 0x38, 0x1F, 0xFF, 0xF8, 0xFF, 0xEE, 0xEE, + 0xEE, 0xEE, 0xEE, 0xEE, 0xEF, 0xF0, 0x86, 0x10, 0x86, 0x10, 0x84, 0x30, + 0x84, 0x30, 0x80, 0xFF, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x7F, 0xF0, + 0x18, 0x1C, 0x3C, 0x3E, 0x36, 0x66, 0x63, 0xC3, 0xFF, 0xC0, 0xCC, 0x3F, + 0x1F, 0xEE, 0x38, 0x0E, 0x3F, 0x9E, 0xEE, 0x3B, 0x9E, 0xFF, 0x9E, 0xE0, + 0xE0, 0x38, 0x0E, 0x03, 0xBC, 0xFF, 0xBC, 0xEE, 0x1F, 0x87, 0xE1, 0xF8, + 0x7F, 0x3B, 0xFE, 0xEF, 0x00, 0x1F, 0x3F, 0xDC, 0x7C, 0x0E, 0x07, 0x03, + 0x80, 0xE3, 0x7F, 0x8F, 0x00, 0x03, 0x81, 0xC0, 0xE7, 0x77, 0xFB, 0xBF, + 0x8F, 0xC7, 0xE3, 0xF1, 0xFD, 0xEF, 0xF3, 0xB8, 0x3E, 0x3F, 0x9C, 0xDC, + 0x3F, 0xFF, 0xFF, 0x81, 0xC3, 0x7F, 0x8F, 0x00, 0x3B, 0xDD, 0xFF, 0xB9, + 0xCE, 0x73, 0x9C, 0xE7, 0x00, 0x3B, 0xBF, 0xDD, 0xFC, 0x7E, 0x3F, 0x1F, + 0x8F, 0xEF, 0x7F, 0x9D, 0xC0, 0xFC, 0x77, 0xF1, 0xF0, 0xE0, 0x70, 0x38, + 0x1D, 0xEF, 0xFF, 0x9F, 0x8F, 0xC7, 0xE3, 0xF1, 0xF8, 0xFC, 0x7E, 0x38, + 0xFC, 0x7F, 0xFF, 0xFF, 0xFE, 0x77, 0x07, 0x77, 0x77, 0x77, 0x77, 0x77, + 0x7F, 0xE0, 0xE0, 0x70, 0x38, 0x1C, 0x7E, 0x77, 0x73, 0xF1, 0xF8, 0xFE, + 0x77, 0x39, 0xDC, 0x6E, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xEF, 0x7B, + 0xFF, 0xFE, 0x39, 0xF8, 0xE7, 0xE3, 0x9F, 0x8E, 0x7E, 0x39, 0xF8, 0xE7, + 0xE3, 0x9F, 0x8E, 0x70, 0xEF, 0x7F, 0xF8, 0xFC, 0x7E, 0x3F, 0x1F, 0x8F, + 0xC7, 0xE3, 0xF1, 0xC0, 0x1E, 0x1F, 0xE7, 0x3B, 0x87, 0xE1, 0xF8, 0x7E, + 0x1D, 0xCE, 0x7F, 0x87, 0x80, 0xEF, 0x3F, 0xEF, 0x3B, 0x87, 0xE1, 0xF8, + 0x7E, 0x1F, 0xCE, 0xFF, 0xBB, 0xCE, 0x03, 0x80, 0xE0, 0x38, 0x00, 0x3B, + 0xBF, 0xFD, 0xFC, 0x7E, 0x3F, 0x1F, 0x8F, 0xEF, 0x7F, 0x9D, 0xC0, 0xE0, + 0x70, 0x38, 0x1C, 0xEF, 0xFF, 0x38, 0xE3, 0x8E, 0x38, 0xE3, 0x80, 0x3E, + 0x3F, 0xB8, 0xFC, 0x0F, 0xC3, 0xFC, 0x3F, 0xC7, 0xFF, 0x1F, 0x00, 0x73, + 0xBF, 0xF7, 0x39, 0xCE, 0x73, 0x9E, 0x70, 0xE3, 0xF1, 0xF8, 0xFC, 0x7E, + 0x3F, 0x1F, 0x8F, 0xC7, 0xFF, 0xBD, 0xC0, 0xE1, 0x98, 0x67, 0x39, 0xCC, + 0x33, 0x0D, 0xC3, 0xE0, 0x78, 0x1E, 0x07, 0x00, 0xE3, 0x1D, 0x9E, 0x66, + 0x79, 0x99, 0xE6, 0x77, 0xB8, 0xD2, 0xC3, 0xCF, 0x0F, 0x3C, 0x3C, 0xF0, + 0x73, 0x80, 0x73, 0x9C, 0xE3, 0xF0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0xFC, + 0x73, 0x9C, 0xE0, 0xE1, 0xD8, 0x67, 0x39, 0xCE, 0x33, 0x0E, 0xC3, 0xE0, + 0x78, 0x1E, 0x03, 0x00, 0xC0, 0x70, 0x38, 0x0E, 0x00, 0xFE, 0xFE, 0x0E, + 0x1C, 0x38, 0x38, 0x70, 0xE0, 0xFF, 0xFF, 0x37, 0x66, 0x66, 0x6E, 0xE6, + 0x66, 0x66, 0x67, 0x30, 0xFF, 0xFF, 0x80, 0xCE, 0x66, 0x66, 0x67, 0x76, + 0x66, 0x66, 0x6E, 0xC0, 0x71, 0x8E}; + +const GFXglyph FreeSansBold9pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 5, 0, 1}, // 0x20 ' ' + {0, 3, 13, 6, 2, -12}, // 0x21 '!' + {5, 7, 5, 9, 1, -12}, // 0x22 '"' + {10, 10, 12, 10, 0, -11}, // 0x23 '#' + {25, 9, 15, 10, 1, -13}, // 0x24 '$' + {42, 16, 13, 16, 0, -12}, // 0x25 '%' + {68, 12, 13, 13, 1, -12}, // 0x26 '&' + {88, 3, 5, 5, 1, -12}, // 0x27 ''' + {90, 6, 17, 6, 1, -12}, // 0x28 '(' + {103, 6, 17, 6, 0, -12}, // 0x29 ')' + {116, 5, 6, 7, 1, -12}, // 0x2A '*' + {120, 7, 8, 11, 2, -7}, // 0x2B '+' + {127, 3, 5, 4, 1, -1}, // 0x2C ',' + {129, 5, 2, 6, 0, -5}, // 0x2D '-' + {131, 3, 2, 4, 1, -1}, // 0x2E '.' + {132, 5, 13, 5, 0, -12}, // 0x2F '/' + {141, 9, 13, 10, 1, -12}, // 0x30 '0' + {156, 5, 13, 10, 2, -12}, // 0x31 '1' + {165, 9, 13, 10, 1, -12}, // 0x32 '2' + {180, 8, 13, 10, 1, -12}, // 0x33 '3' + {193, 8, 13, 10, 2, -12}, // 0x34 '4' + {206, 9, 13, 10, 1, -12}, // 0x35 '5' + {221, 9, 13, 10, 1, -12}, // 0x36 '6' + {236, 9, 13, 10, 0, -12}, // 0x37 '7' + {251, 10, 13, 10, 0, -12}, // 0x38 '8' + {268, 9, 13, 10, 1, -12}, // 0x39 '9' + {283, 3, 9, 4, 1, -8}, // 0x3A ':' + {287, 3, 12, 4, 1, -8}, // 0x3B ';' + {292, 9, 9, 11, 1, -8}, // 0x3C '<' + {303, 9, 6, 11, 1, -6}, // 0x3D '=' + {310, 9, 9, 11, 1, -8}, // 0x3E '>' + {321, 9, 13, 11, 1, -12}, // 0x3F '?' + {336, 16, 15, 18, 0, -12}, // 0x40 '@' + {366, 12, 13, 13, 0, -12}, // 0x41 'A' + {386, 11, 13, 13, 1, -12}, // 0x42 'B' + {404, 12, 13, 13, 1, -12}, // 0x43 'C' + {424, 12, 13, 13, 1, -12}, // 0x44 'D' + {444, 9, 13, 12, 1, -12}, // 0x45 'E' + {459, 9, 13, 11, 1, -12}, // 0x46 'F' + {474, 11, 13, 14, 1, -12}, // 0x47 'G' + {492, 11, 13, 13, 1, -12}, // 0x48 'H' + {510, 3, 13, 6, 1, -12}, // 0x49 'I' + {515, 8, 13, 10, 1, -12}, // 0x4A 'J' + {528, 12, 13, 13, 1, -12}, // 0x4B 'K' + {548, 8, 13, 11, 1, -12}, // 0x4C 'L' + {561, 14, 13, 16, 1, -12}, // 0x4D 'M' + {584, 11, 13, 14, 1, -12}, // 0x4E 'N' + {602, 13, 13, 14, 1, -12}, // 0x4F 'O' + {624, 11, 13, 12, 1, -12}, // 0x50 'P' + {642, 13, 14, 14, 1, -12}, // 0x51 'Q' + {665, 12, 13, 13, 1, -12}, // 0x52 'R' + {685, 11, 13, 12, 1, -12}, // 0x53 'S' + {703, 9, 13, 12, 2, -12}, // 0x54 'T' + {718, 11, 13, 13, 1, -12}, // 0x55 'U' + {736, 12, 13, 12, 0, -12}, // 0x56 'V' + {756, 17, 13, 17, 0, -12}, // 0x57 'W' + {784, 12, 13, 12, 0, -12}, // 0x58 'X' + {804, 11, 13, 12, 1, -12}, // 0x59 'Y' + {822, 9, 13, 11, 1, -12}, // 0x5A 'Z' + {837, 4, 17, 6, 1, -12}, // 0x5B '[' + {846, 5, 13, 5, 0, -12}, // 0x5C '\' + {855, 4, 17, 6, 0, -12}, // 0x5D ']' + {864, 8, 8, 11, 1, -12}, // 0x5E '^' + {872, 10, 1, 10, 0, 4}, // 0x5F '_' + {874, 3, 2, 5, 0, -12}, // 0x60 '`' + {875, 10, 10, 10, 1, -9}, // 0x61 'a' + {888, 10, 13, 11, 1, -12}, // 0x62 'b' + {905, 9, 10, 10, 1, -9}, // 0x63 'c' + {917, 9, 13, 11, 1, -12}, // 0x64 'd' + {932, 9, 10, 10, 1, -9}, // 0x65 'e' + {944, 5, 13, 6, 1, -12}, // 0x66 'f' + {953, 9, 14, 11, 1, -9}, // 0x67 'g' + {969, 9, 13, 11, 1, -12}, // 0x68 'h' + {984, 3, 13, 5, 1, -12}, // 0x69 'i' + {989, 4, 17, 5, 0, -12}, // 0x6A 'j' + {998, 9, 13, 10, 1, -12}, // 0x6B 'k' + {1013, 3, 13, 5, 1, -12}, // 0x6C 'l' + {1018, 14, 10, 16, 1, -9}, // 0x6D 'm' + {1036, 9, 10, 11, 1, -9}, // 0x6E 'n' + {1048, 10, 10, 11, 1, -9}, // 0x6F 'o' + {1061, 10, 14, 11, 1, -9}, // 0x70 'p' + {1079, 9, 14, 11, 1, -9}, // 0x71 'q' + {1095, 6, 10, 7, 1, -9}, // 0x72 'r' + {1103, 9, 10, 10, 1, -9}, // 0x73 's' + {1115, 5, 12, 6, 1, -11}, // 0x74 't' + {1123, 9, 10, 11, 1, -9}, // 0x75 'u' + {1135, 10, 10, 10, 0, -9}, // 0x76 'v' + {1148, 14, 10, 14, 0, -9}, // 0x77 'w' + {1166, 10, 10, 10, 0, -9}, // 0x78 'x' + {1179, 10, 14, 10, 0, -9}, // 0x79 'y' + {1197, 8, 10, 9, 1, -9}, // 0x7A 'z' + {1207, 4, 17, 7, 1, -12}, // 0x7B '{' + {1216, 1, 17, 5, 2, -12}, // 0x7C '|' + {1219, 4, 17, 7, 2, -12}, // 0x7D '}' + {1228, 8, 2, 9, 0, -4}}; // 0x7E '~' + +const GFXfont FreeSansBold9pt7b PROGMEM = {(uint8_t *)FreeSansBold9pt7bBitmaps, + (GFXglyph *)FreeSansBold9pt7bGlyphs, + 0x20, 0x7E, 22}; + +// Approx. 1902 bytes diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBoldOblique12pt7b.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBoldOblique12pt7b.h new file mode 100644 index 0000000..ff76ce3 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBoldOblique12pt7b.h @@ -0,0 +1,319 @@ +#pragma once +#include + +const uint8_t FreeSansBoldOblique12pt7bBitmaps[] PROGMEM = { + 0x1C, 0x3C, 0x78, 0xE1, 0xC3, 0x8F, 0x1C, 0x38, 0x70, 0xC1, 0x83, 0x00, + 0x1C, 0x78, 0xF0, 0x71, 0xFC, 0xFE, 0x3B, 0x8E, 0xC3, 0x30, 0xC0, 0x01, + 0x8C, 0x07, 0x38, 0x0C, 0x61, 0xFF, 0xF3, 0xFF, 0xE7, 0xFF, 0x83, 0x9C, + 0x0E, 0x70, 0x1C, 0xE1, 0xFF, 0xF3, 0xFF, 0xC7, 0xFF, 0x83, 0x18, 0x0E, + 0x70, 0x18, 0xC0, 0x73, 0x80, 0x00, 0x40, 0x07, 0xF0, 0x3F, 0xF0, 0xFF, + 0xF3, 0xC9, 0xE7, 0xB3, 0xCF, 0x60, 0x1F, 0xC0, 0x3F, 0xC0, 0x3F, 0xE0, + 0x1F, 0xE0, 0x1B, 0xE0, 0x33, 0xDE, 0x47, 0xBC, 0x8F, 0x7F, 0x7C, 0x7F, + 0xF0, 0x7F, 0x80, 0x18, 0x00, 0x20, 0x00, 0xC0, 0x00, 0x00, 0x01, 0x87, + 0x80, 0xC3, 0xF0, 0x61, 0xFE, 0x10, 0xE1, 0x8C, 0x30, 0x66, 0x0C, 0x3B, + 0x03, 0xFC, 0x80, 0x7E, 0x60, 0x0F, 0x30, 0x00, 0x18, 0x70, 0x0C, 0x7E, + 0x03, 0x1F, 0xC1, 0x8E, 0x30, 0xC3, 0x1C, 0x60, 0xFE, 0x18, 0x1F, 0x8C, + 0x07, 0x80, 0x01, 0xE0, 0x07, 0xF0, 0x1F, 0xE0, 0x79, 0xC0, 0xF3, 0x81, + 0xEE, 0x01, 0xF8, 0x01, 0xE0, 0x1F, 0xC6, 0x7B, 0xDD, 0xE3, 0xF7, 0x87, + 0xEF, 0x07, 0x9F, 0x1F, 0x3F, 0xFF, 0x3F, 0xDE, 0x3F, 0x1C, 0x7F, 0xEE, + 0xCC, 0x03, 0x83, 0x81, 0x81, 0xC1, 0xC0, 0xE0, 0xE0, 0x70, 0x70, 0x38, + 0x3C, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x18, 0x0E, 0x07, + 0x01, 0x80, 0x06, 0x03, 0x81, 0xC0, 0x60, 0x38, 0x1C, 0x0E, 0x07, 0x03, + 0x81, 0xC0, 0xE0, 0xE0, 0x70, 0x38, 0x38, 0x1C, 0x1C, 0x0E, 0x0E, 0x06, + 0x07, 0x07, 0x00, 0x0C, 0x0C, 0x4F, 0xFF, 0x1C, 0x3C, 0x6C, 0x44, 0x03, + 0x80, 0x38, 0x07, 0x00, 0x70, 0x7F, 0xFF, 0xFF, 0xFF, 0xF0, 0xE0, 0x0E, + 0x00, 0xE0, 0x0C, 0x00, 0x7B, 0xDC, 0x23, 0x33, 0x00, 0x7F, 0xFF, 0xF0, + 0x7F, 0xE0, 0x00, 0xC0, 0x30, 0x18, 0x04, 0x03, 0x00, 0x80, 0x60, 0x10, + 0x0C, 0x02, 0x01, 0x80, 0x40, 0x30, 0x08, 0x06, 0x01, 0x00, 0xC0, 0x00, + 0x03, 0xC0, 0x7F, 0x87, 0xFC, 0x78, 0xF3, 0xC7, 0xBC, 0x3D, 0xE1, 0xEF, + 0x0F, 0xF0, 0x7F, 0x87, 0xBC, 0x3D, 0xE1, 0xEF, 0x1E, 0x78, 0xF3, 0xFF, + 0x0F, 0xF0, 0x3E, 0x00, 0x03, 0x83, 0x83, 0xCF, 0xEF, 0xF0, 0x78, 0x38, + 0x1C, 0x0E, 0x0F, 0x07, 0x03, 0x81, 0xC1, 0xE0, 0xF0, 0x70, 0x38, 0x00, + 0x03, 0xF0, 0x0F, 0xF8, 0x7F, 0xF8, 0xF1, 0xF3, 0xC1, 0xE7, 0x83, 0xC0, + 0x07, 0x80, 0x1E, 0x00, 0x78, 0x03, 0xE0, 0x0F, 0x00, 0x7C, 0x01, 0xE0, + 0x07, 0x00, 0x1F, 0xFC, 0x3F, 0xF8, 0xFF, 0xF0, 0x07, 0xE0, 0xFF, 0x8F, + 0xFE, 0xF8, 0xF7, 0x87, 0x80, 0x78, 0x0F, 0x80, 0xFC, 0x07, 0xE0, 0x0F, + 0x80, 0x3C, 0x01, 0xEF, 0x0F, 0x78, 0xF3, 0xFF, 0x8F, 0xF8, 0x3F, 0x00, + 0x00, 0x78, 0x07, 0xC0, 0x7E, 0x03, 0xF0, 0x37, 0x03, 0x38, 0x31, 0xC3, + 0x9E, 0x38, 0xF1, 0x87, 0x1F, 0xFE, 0xFF, 0xF7, 0xFF, 0x80, 0xF0, 0x07, + 0x00, 0x38, 0x03, 0xC0, 0x07, 0xFC, 0x1F, 0xF0, 0xFF, 0xC3, 0x00, 0x1C, + 0x00, 0x7F, 0x81, 0xFF, 0x0F, 0xFE, 0x38, 0xF8, 0x01, 0xE0, 0x07, 0x80, + 0x1E, 0xF0, 0xF3, 0xC7, 0xCF, 0xFE, 0x1F, 0xF0, 0x3F, 0x00, 0x03, 0xE0, + 0x7F, 0x87, 0xFE, 0x78, 0xF3, 0xC0, 0x3D, 0xE1, 0xFF, 0x8F, 0xFE, 0xF8, + 0xF7, 0xC7, 0xBC, 0x3D, 0xE1, 0xEF, 0x1E, 0x7C, 0xF3, 0xFF, 0x0F, 0xF0, + 0x1F, 0x00, 0x7F, 0xFB, 0xFF, 0xDF, 0xFE, 0x00, 0xE0, 0x0E, 0x00, 0xE0, + 0x0E, 0x00, 0xE0, 0x0F, 0x00, 0x70, 0x07, 0x00, 0x78, 0x03, 0x80, 0x3C, + 0x01, 0xC0, 0x0E, 0x00, 0xF0, 0x00, 0x03, 0xF0, 0x1F, 0xE0, 0xFF, 0xC7, + 0x8F, 0x1C, 0x3C, 0x71, 0xE0, 0xFF, 0x03, 0xF8, 0x3F, 0xF1, 0xF1, 0xE7, + 0x87, 0xBC, 0x1E, 0xF0, 0x7B, 0xE3, 0xCF, 0xFF, 0x1F, 0xF8, 0x1F, 0x80, + 0x03, 0xE0, 0x3F, 0xE1, 0xFF, 0x8F, 0x9F, 0x3C, 0x3D, 0xE0, 0xF7, 0x83, + 0xDE, 0x1F, 0x78, 0xFD, 0xFF, 0xE3, 0xFF, 0x87, 0xDE, 0x00, 0xF3, 0xC7, + 0x8F, 0xFE, 0x1F, 0xF0, 0x3F, 0x00, 0x1C, 0xF3, 0x80, 0x00, 0x00, 0x00, + 0x01, 0xCF, 0x38, 0x0E, 0x3C, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF1, + 0xE3, 0x81, 0x06, 0x18, 0x60, 0x00, 0x00, 0x01, 0xC0, 0x7E, 0x1F, 0xE7, + 0xF8, 0x7E, 0x03, 0xE0, 0x1F, 0xE0, 0x3F, 0xC0, 0x7F, 0x00, 0x78, 0x00, + 0xC0, 0x3F, 0xFC, 0xFF, 0xF3, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x07, + 0xFF, 0x9F, 0xFC, 0x7F, 0xF0, 0x30, 0x01, 0xE0, 0x0F, 0xE0, 0x3F, 0xC0, + 0x7F, 0x80, 0x7C, 0x07, 0xE1, 0xFE, 0x7F, 0x87, 0xE0, 0x38, 0x00, 0x00, + 0x00, 0x0F, 0xC1, 0xFF, 0x8F, 0xFC, 0xF1, 0xFF, 0x07, 0xF0, 0x3C, 0x01, + 0xE0, 0x1E, 0x01, 0xE0, 0x3E, 0x03, 0xE0, 0x1C, 0x01, 0xC0, 0x0E, 0x00, + 0x00, 0x07, 0x80, 0x3C, 0x01, 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x03, 0xFF, + 0x80, 0x3C, 0x0F, 0x01, 0xC0, 0x0E, 0x0E, 0x00, 0x1C, 0x70, 0xF7, 0x73, + 0x87, 0xF8, 0xCC, 0x31, 0xE3, 0x61, 0x87, 0x0D, 0x8C, 0x1C, 0x3C, 0x30, + 0x61, 0xB1, 0x81, 0x86, 0xC6, 0x0C, 0x3B, 0x18, 0x71, 0xCC, 0x63, 0xCE, + 0x31, 0xFB, 0xF0, 0xE3, 0xCF, 0x01, 0xC0, 0x00, 0x03, 0xC0, 0xC0, 0x07, + 0xFF, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x3E, 0x00, 0x3F, 0x00, 0x1F, 0x80, + 0x1F, 0xC0, 0x0F, 0xE0, 0x0F, 0xF0, 0x07, 0x7C, 0x07, 0x1E, 0x03, 0x8F, + 0x03, 0x87, 0x83, 0xC3, 0xC1, 0xFF, 0xE1, 0xFF, 0xF0, 0xFF, 0xFC, 0xF0, + 0x1E, 0x70, 0x0F, 0x78, 0x07, 0xB8, 0x03, 0xC0, 0x0F, 0xFE, 0x0F, 0xFF, + 0x87, 0xFF, 0xE3, 0xC0, 0xF1, 0xC0, 0x78, 0xE0, 0x3C, 0xF0, 0x3C, 0x7F, + 0xFC, 0x3F, 0xFC, 0x1F, 0xFF, 0x0E, 0x07, 0xCF, 0x01, 0xE7, 0x80, 0xF3, + 0x80, 0x79, 0xC0, 0x79, 0xFF, 0xF8, 0xFF, 0xFC, 0x7F, 0xF8, 0x00, 0x01, + 0xF8, 0x03, 0xFF, 0x03, 0xFF, 0xC3, 0xE1, 0xF3, 0xC0, 0x79, 0xE0, 0x3D, + 0xE0, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1E, 0x00, + 0x0F, 0x00, 0xE7, 0x80, 0xF3, 0xE0, 0xF0, 0xFF, 0xF8, 0x3F, 0xF0, 0x07, + 0xE0, 0x00, 0x1F, 0xFC, 0x0F, 0xFF, 0x87, 0xFF, 0xC3, 0x81, 0xF1, 0xC0, + 0x79, 0xE0, 0x3C, 0xF0, 0x1E, 0x78, 0x0F, 0x38, 0x07, 0x9C, 0x03, 0xDE, + 0x03, 0xCF, 0x01, 0xE7, 0x81, 0xF3, 0x80, 0xF1, 0xC1, 0xF1, 0xFF, 0xF0, + 0xFF, 0xF0, 0x7F, 0xE0, 0x00, 0x0F, 0xFF, 0x1F, 0xFF, 0x1F, 0xFF, 0x1C, + 0x00, 0x1C, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, + 0xFC, 0x78, 0x00, 0x78, 0x00, 0x78, 0x00, 0x70, 0x00, 0x70, 0x00, 0xFF, + 0xF8, 0xFF, 0xF8, 0xFF, 0xF8, 0x1F, 0xFF, 0x1F, 0xFE, 0x1F, 0xFE, 0x1C, + 0x00, 0x1C, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x3F, 0xF8, 0x3F, 0xF8, 0x3F, + 0xF8, 0x78, 0x00, 0x78, 0x00, 0x78, 0x00, 0x70, 0x00, 0xF0, 0x00, 0xF0, + 0x00, 0xF0, 0x00, 0xE0, 0x00, 0x01, 0xFC, 0x03, 0xFF, 0x03, 0xFF, 0xC3, + 0xE0, 0xF3, 0xC0, 0x39, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, 0xF0, 0x7F, + 0x78, 0x3F, 0xBC, 0x1F, 0xDE, 0x01, 0xCF, 0x00, 0xE7, 0xC0, 0xF1, 0xF0, + 0xF8, 0xFF, 0xFC, 0x3F, 0xEC, 0x07, 0xE6, 0x00, 0x1E, 0x03, 0x8F, 0x01, + 0xC7, 0x01, 0xE3, 0x80, 0xF3, 0xC0, 0x79, 0xE0, 0x38, 0xF0, 0x1C, 0x7F, + 0xFE, 0x3F, 0xFF, 0x3F, 0xFF, 0x9E, 0x03, 0x8F, 0x01, 0xC7, 0x01, 0xE3, + 0x80, 0xF3, 0xC0, 0x71, 0xE0, 0x38, 0xF0, 0x3C, 0x70, 0x1E, 0x00, 0x1E, + 0x3C, 0x78, 0xE1, 0xC7, 0x8F, 0x1E, 0x38, 0x71, 0xE3, 0xC7, 0x8E, 0x1C, + 0x78, 0xF1, 0xE0, 0x00, 0x1C, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x38, + 0x00, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x01, 0xC0, 0x07, 0x3C, 0x3C, + 0xF0, 0xF3, 0xC3, 0x8F, 0x1E, 0x3F, 0xF8, 0x7F, 0xC0, 0xFC, 0x00, 0x1E, + 0x07, 0xC7, 0x83, 0xE1, 0xE1, 0xE0, 0x70, 0xF0, 0x1C, 0x78, 0x0F, 0x3C, + 0x03, 0xDE, 0x00, 0xFF, 0x00, 0x3F, 0xC0, 0x0F, 0xF0, 0x07, 0xDE, 0x01, + 0xE7, 0xC0, 0x78, 0xF0, 0x1C, 0x3E, 0x0F, 0x07, 0x83, 0xC0, 0xF0, 0xF0, + 0x3C, 0x38, 0x07, 0x80, 0x0E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xC0, + 0x0E, 0x00, 0xF0, 0x07, 0x80, 0x38, 0x01, 0xC0, 0x1E, 0x00, 0xF0, 0x07, + 0x80, 0x38, 0x01, 0xC0, 0x1F, 0xFE, 0xFF, 0xF7, 0xFF, 0x80, 0x1F, 0x03, + 0xF1, 0xF0, 0x3F, 0x1F, 0x07, 0xF1, 0xF0, 0x7F, 0x3F, 0x0F, 0xE3, 0xF0, + 0xEE, 0x3B, 0x1E, 0xE3, 0xB1, 0xDE, 0x3B, 0x1D, 0xE7, 0xB3, 0x9C, 0x7B, + 0x39, 0xC7, 0x37, 0x9C, 0x73, 0x73, 0xCF, 0x3F, 0x3C, 0xF3, 0xE3, 0x8F, + 0x3E, 0x38, 0xE3, 0xC3, 0x8E, 0x3C, 0x78, 0x1E, 0x03, 0x87, 0xC0, 0xE1, + 0xF0, 0x38, 0x7C, 0x1E, 0x1F, 0x87, 0x8F, 0xE1, 0xC3, 0xB8, 0x70, 0xEF, + 0x1C, 0x39, 0xCF, 0x1E, 0x73, 0xC7, 0x8E, 0xE1, 0xC3, 0xB8, 0x70, 0xEE, + 0x1C, 0x1F, 0x8F, 0x07, 0xE3, 0xC1, 0xF0, 0xE0, 0x3C, 0x38, 0x0F, 0x00, + 0x01, 0xF8, 0x03, 0xFF, 0x03, 0xFF, 0xC3, 0xE3, 0xE3, 0xC0, 0xF9, 0xE0, + 0x3D, 0xE0, 0x1E, 0xF0, 0x0F, 0xF0, 0x07, 0xF8, 0x03, 0xFC, 0x03, 0xDE, + 0x01, 0xEF, 0x00, 0xF7, 0xC0, 0xF1, 0xF0, 0xF0, 0xFF, 0xF0, 0x3F, 0xF0, + 0x07, 0xE0, 0x00, 0x1F, 0xFC, 0x1F, 0xFE, 0x1F, 0xFF, 0x1C, 0x1F, 0x1C, + 0x0F, 0x3C, 0x0F, 0x3C, 0x0F, 0x3C, 0x1E, 0x3F, 0xFC, 0x3F, 0xFC, 0x7F, + 0xF0, 0x78, 0x00, 0x78, 0x00, 0x70, 0x00, 0x70, 0x00, 0xF0, 0x00, 0xF0, + 0x00, 0xF0, 0x00, 0x01, 0xF8, 0x03, 0xFF, 0x03, 0xFF, 0xC3, 0xE3, 0xE3, + 0xC0, 0xF9, 0xC0, 0x3D, 0xE0, 0x1E, 0xF0, 0x0F, 0xF0, 0x07, 0xF8, 0x03, + 0xFC, 0x03, 0xDE, 0x09, 0xEF, 0x0E, 0xE7, 0xC7, 0xF1, 0xF1, 0xF0, 0xFF, + 0xF8, 0x3F, 0xFE, 0x07, 0xE6, 0x00, 0x02, 0x00, 0x0F, 0xFE, 0x0F, 0xFF, + 0x87, 0xFF, 0xE3, 0x81, 0xF1, 0xC0, 0x78, 0xE0, 0x3C, 0xF0, 0x1C, 0x78, + 0x1E, 0x3F, 0xFC, 0x1F, 0xFC, 0x1F, 0xFF, 0x8F, 0x03, 0xC7, 0x81, 0xE3, + 0x80, 0xF1, 0xC0, 0xF1, 0xE0, 0x78, 0xF0, 0x3C, 0x78, 0x1F, 0x00, 0x03, + 0xF8, 0x0F, 0xFE, 0x1F, 0xFF, 0x1E, 0x1F, 0x3C, 0x0F, 0x3C, 0x0F, 0x3C, + 0x00, 0x3F, 0x00, 0x1F, 0xF0, 0x0F, 0xFC, 0x01, 0xFE, 0x00, 0x3E, 0xF0, + 0x1E, 0xF0, 0x1E, 0xF8, 0x3C, 0x7F, 0xF8, 0x7F, 0xF0, 0x1F, 0xC0, 0x7F, + 0xFE, 0xFF, 0xFD, 0xFF, 0xF8, 0x1C, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, + 0x03, 0x80, 0x07, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xE0, 0x01, + 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x38, 0x00, 0x1E, 0x07, 0x1C, + 0x0F, 0x3C, 0x0F, 0x3C, 0x0F, 0x3C, 0x0E, 0x38, 0x0E, 0x78, 0x1E, 0x78, + 0x1E, 0x78, 0x1E, 0x78, 0x1C, 0x70, 0x1C, 0xF0, 0x3C, 0xF0, 0x3C, 0xF0, + 0x38, 0xF8, 0x78, 0xFF, 0xF0, 0x7F, 0xE0, 0x1F, 0x80, 0xF0, 0x1F, 0xE0, + 0x39, 0xC0, 0xF3, 0x81, 0xC7, 0x07, 0x8E, 0x0E, 0x1C, 0x3C, 0x3C, 0x70, + 0x79, 0xE0, 0xF3, 0x80, 0xEF, 0x01, 0xDC, 0x03, 0xB8, 0x07, 0xE0, 0x0F, + 0x80, 0x1F, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x70, 0x7F, 0x87, 0x83, + 0xFC, 0x3C, 0x3D, 0xE1, 0xE1, 0xEF, 0x1F, 0x0E, 0x78, 0xD8, 0xF3, 0xC6, + 0xC7, 0x0E, 0x76, 0x78, 0x73, 0x33, 0x83, 0xB9, 0x9C, 0x1D, 0xCD, 0xC0, + 0xEC, 0x6E, 0x07, 0xE3, 0xE0, 0x3E, 0x1F, 0x01, 0xF0, 0xF0, 0x0F, 0x87, + 0x80, 0x78, 0x38, 0x03, 0xC1, 0xC0, 0x00, 0x0F, 0x03, 0xC3, 0xC1, 0xE0, + 0xF8, 0xF0, 0x1E, 0x78, 0x07, 0x9E, 0x00, 0xFF, 0x00, 0x3F, 0x80, 0x0F, + 0xC0, 0x01, 0xE0, 0x00, 0xF8, 0x00, 0x3F, 0x00, 0x1F, 0xC0, 0x0F, 0xF0, + 0x07, 0x9E, 0x03, 0xC7, 0x80, 0xF0, 0xF0, 0x78, 0x3C, 0x3C, 0x0F, 0x80, + 0x78, 0x1E, 0xF0, 0x79, 0xE0, 0xF3, 0xC3, 0xC3, 0xCF, 0x07, 0x9E, 0x0F, + 0x78, 0x0F, 0xE0, 0x1F, 0x80, 0x3F, 0x00, 0x3C, 0x00, 0x70, 0x00, 0xE0, + 0x03, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x1F, 0xFF, + 0x0F, 0xFF, 0x87, 0xFF, 0xC0, 0x03, 0xC0, 0x03, 0xE0, 0x03, 0xE0, 0x03, + 0xE0, 0x03, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x01, + 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xFF, 0xF0, 0xFF, 0xF8, 0x7F, 0xFC, + 0x00, 0x0F, 0xC3, 0xF0, 0xFC, 0x38, 0x1E, 0x07, 0x01, 0xC0, 0x70, 0x1C, + 0x0F, 0x03, 0x80, 0xE0, 0x38, 0x0E, 0x07, 0x01, 0xC0, 0x70, 0x1C, 0x0F, + 0x03, 0x80, 0xFC, 0x3F, 0x0F, 0xC0, 0x08, 0x88, 0xC4, 0x44, 0x66, 0x66, + 0x66, 0x62, 0x22, 0x33, 0x33, 0x30, 0x0F, 0xC3, 0xF0, 0xFC, 0x07, 0x03, + 0xC0, 0xE0, 0x38, 0x0E, 0x03, 0x81, 0xC0, 0x70, 0x1C, 0x07, 0x03, 0xC0, + 0xE0, 0x38, 0x0E, 0x03, 0x81, 0xE0, 0x70, 0xFC, 0x3F, 0x0F, 0xC0, 0x03, + 0x80, 0xF0, 0x1E, 0x07, 0xE1, 0xDC, 0x3B, 0x8E, 0x71, 0x86, 0x70, 0xFC, + 0x1F, 0x83, 0x80, 0x7F, 0xFE, 0xFF, 0xFC, 0xE6, 0x30, 0x07, 0xE0, 0xFF, + 0x8F, 0xFE, 0x70, 0xE0, 0x07, 0x03, 0xF8, 0xFF, 0xCF, 0x9E, 0xF0, 0xF7, + 0x8F, 0x3F, 0xF8, 0xFF, 0xC3, 0xDF, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, + 0x00, 0xF0, 0x01, 0xE0, 0x03, 0x9F, 0x07, 0xFF, 0x0F, 0xFF, 0x3E, 0x3E, + 0x78, 0x3C, 0xF0, 0x79, 0xC0, 0xF3, 0x81, 0xEF, 0x07, 0x9F, 0x1F, 0x3F, + 0xFC, 0x7F, 0xF0, 0xEF, 0x80, 0x07, 0xC0, 0xFF, 0x8F, 0xFE, 0xF8, 0xF7, + 0x87, 0xB8, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0xF7, 0x8F, 0x1F, 0xF8, 0xFF, + 0x81, 0xF0, 0x00, 0x00, 0x1E, 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x03, + 0xC0, 0xF7, 0x87, 0xFE, 0x1F, 0xFC, 0x7C, 0x78, 0xF0, 0x73, 0xC0, 0xE7, + 0x81, 0x8F, 0x07, 0x1E, 0x0E, 0x3E, 0x3C, 0x7F, 0xF8, 0x7F, 0xE0, 0x7D, + 0xC0, 0x07, 0xC0, 0xFF, 0x8F, 0xFE, 0xF0, 0xF7, 0x87, 0xFF, 0xFF, 0xFF, + 0xFE, 0x00, 0xF0, 0x07, 0xC7, 0x9F, 0xF8, 0xFF, 0x81, 0xF0, 0x00, 0x07, + 0x87, 0xC7, 0xE3, 0xC1, 0xC3, 0xF9, 0xFC, 0x78, 0x3C, 0x1C, 0x0E, 0x07, + 0x07, 0x83, 0x81, 0xC0, 0xE0, 0xF0, 0x78, 0x00, 0x03, 0xDE, 0x1F, 0xF8, + 0x7F, 0xF1, 0xF1, 0xE3, 0xC1, 0xCF, 0x03, 0x9E, 0x06, 0x3C, 0x0C, 0x78, + 0x38, 0xF8, 0xF1, 0xFF, 0xC1, 0xFF, 0x81, 0xF7, 0x00, 0x0E, 0x3C, 0x3C, + 0x78, 0xF0, 0x7F, 0xC0, 0x7E, 0x00, 0x1E, 0x00, 0x70, 0x01, 0xC0, 0x07, + 0x00, 0x3C, 0x00, 0xF7, 0xC3, 0xBF, 0x8F, 0xFF, 0x3C, 0x3D, 0xE0, 0xE7, + 0x83, 0x9C, 0x0E, 0x70, 0x79, 0xC1, 0xEF, 0x07, 0x3C, 0x1C, 0xE0, 0x73, + 0x83, 0xC0, 0x0E, 0x3C, 0x70, 0x00, 0x03, 0x8F, 0x1E, 0x38, 0x71, 0xE3, + 0xC7, 0x0E, 0x1C, 0x78, 0xF1, 0xC0, 0x03, 0xC0, 0xE0, 0x38, 0x00, 0x00, + 0x01, 0xE0, 0x70, 0x1C, 0x07, 0x03, 0xC0, 0xF0, 0x38, 0x0E, 0x03, 0x81, + 0xE0, 0x70, 0x1C, 0x07, 0x03, 0xC0, 0xF0, 0xF8, 0x3E, 0x0F, 0x00, 0x0E, + 0x00, 0x1C, 0x00, 0x38, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0x87, 0x87, 0x1E, + 0x0E, 0x78, 0x3D, 0xE0, 0x7F, 0x80, 0xFE, 0x01, 0xFE, 0x03, 0xFC, 0x0F, + 0x38, 0x1E, 0x78, 0x38, 0xF0, 0x70, 0xF0, 0xE1, 0xE0, 0x0E, 0x3C, 0x78, + 0xE1, 0xC3, 0x8F, 0x1E, 0x38, 0x71, 0xE3, 0xC7, 0x0E, 0x1C, 0x78, 0xF1, + 0xC0, 0x1C, 0xF1, 0xE0, 0xEF, 0xDF, 0x87, 0xFF, 0xFE, 0x7C, 0x78, 0xF3, + 0xC3, 0x87, 0x9C, 0x1C, 0x38, 0xE1, 0xE1, 0xC7, 0x0E, 0x0E, 0x78, 0x70, + 0xF3, 0xC3, 0x87, 0x9C, 0x3C, 0x38, 0xE1, 0xE1, 0xC7, 0x0E, 0x0E, 0x00, + 0x3D, 0xF0, 0xEF, 0xE3, 0xFF, 0xCF, 0x0F, 0x78, 0x39, 0xC0, 0xE7, 0x03, + 0x9C, 0x1E, 0xF0, 0x7B, 0xC1, 0xCE, 0x07, 0x38, 0x1C, 0xE0, 0xF0, 0x07, + 0xE0, 0x7F, 0xE3, 0xFF, 0x9F, 0x1F, 0x78, 0x3F, 0xC0, 0xFF, 0x03, 0xFC, + 0x1F, 0xF0, 0x7B, 0xE3, 0xE7, 0xFF, 0x1F, 0xF8, 0x1F, 0x80, 0x0E, 0x7C, + 0x0F, 0xFE, 0x0F, 0xFF, 0x1F, 0x1F, 0x1E, 0x0F, 0x1E, 0x0F, 0x1C, 0x0F, + 0x1C, 0x0F, 0x3C, 0x1E, 0x3E, 0x3E, 0x3F, 0xFC, 0x3F, 0xF8, 0x7B, 0xE0, + 0x78, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0xF0, 0x00, 0x07, 0xBC, + 0x7F, 0xF3, 0xFF, 0x9F, 0x1E, 0x78, 0x3B, 0xC0, 0xEF, 0x03, 0x3C, 0x0C, + 0xF0, 0x73, 0xE3, 0xCF, 0xFF, 0x1F, 0xF8, 0x3C, 0xE0, 0x03, 0x80, 0x1E, + 0x00, 0x78, 0x01, 0xC0, 0x07, 0x00, 0x3D, 0xCE, 0xE3, 0xF8, 0xF0, 0x78, + 0x1E, 0x07, 0x01, 0xC0, 0xF0, 0x3C, 0x0E, 0x03, 0x80, 0xE0, 0x00, 0x1F, + 0xC3, 0xFE, 0x7F, 0xFF, 0x0F, 0xF0, 0x0F, 0xE0, 0x7F, 0xC1, 0xFE, 0x03, + 0xEE, 0x1E, 0xFF, 0xC7, 0xFC, 0x3F, 0x00, 0x1E, 0x1E, 0x1C, 0x7F, 0xFF, + 0x3C, 0x38, 0x38, 0x38, 0x78, 0x78, 0x70, 0x7C, 0xF8, 0x78, 0x38, 0x3C, + 0xE0, 0xE3, 0x83, 0x9E, 0x0E, 0x70, 0x79, 0xC1, 0xE7, 0x07, 0x3C, 0x1C, + 0xF0, 0xF3, 0xE7, 0xCF, 0xFF, 0x1F, 0xF8, 0x3C, 0xE0, 0xF0, 0x77, 0x87, + 0xBC, 0x38, 0xE3, 0xC7, 0x1C, 0x39, 0xE1, 0xCE, 0x0E, 0xE0, 0x77, 0x03, + 0xF0, 0x0F, 0x80, 0x78, 0x03, 0xC0, 0x00, 0xF1, 0xC3, 0xF8, 0xE3, 0xFC, + 0xF1, 0xDE, 0x79, 0xEF, 0x3C, 0xE7, 0xB6, 0x73, 0xDB, 0x70, 0xED, 0xB8, + 0x7C, 0xF8, 0x3E, 0x7C, 0x1F, 0x3C, 0x0F, 0x1E, 0x07, 0x8E, 0x00, 0x0F, + 0x1E, 0x0F, 0x3C, 0x0F, 0x38, 0x07, 0x70, 0x07, 0xF0, 0x03, 0xE0, 0x03, + 0xC0, 0x07, 0xC0, 0x0F, 0xE0, 0x1E, 0xE0, 0x3C, 0xF0, 0x3C, 0xF0, 0x78, + 0x78, 0x3C, 0x1C, 0x78, 0x78, 0xF0, 0xE1, 0xE3, 0xC1, 0xC7, 0x03, 0x9E, + 0x07, 0x38, 0x0E, 0xE0, 0x1D, 0xC0, 0x3F, 0x00, 0x7E, 0x00, 0x78, 0x00, + 0xF0, 0x01, 0xC0, 0x07, 0x00, 0x7E, 0x00, 0xF8, 0x01, 0xE0, 0x00, 0x1F, + 0xF9, 0xFF, 0xCF, 0xFC, 0x01, 0xE0, 0x3E, 0x03, 0xC0, 0x3C, 0x03, 0xC0, + 0x3C, 0x03, 0xC0, 0x3F, 0xF9, 0xFF, 0xCF, 0xFC, 0x00, 0x07, 0x87, 0xC3, + 0xE3, 0xC1, 0xC0, 0xE0, 0x70, 0x38, 0x3C, 0x1C, 0x0E, 0x1E, 0x0F, 0x03, + 0x81, 0xC0, 0xE0, 0x70, 0x78, 0x38, 0x1C, 0x0F, 0x87, 0xC1, 0xC0, 0x0C, + 0x30, 0x86, 0x18, 0x61, 0x8C, 0x30, 0xC3, 0x0C, 0x61, 0x86, 0x18, 0x63, + 0x0C, 0x30, 0xC2, 0x00, 0x00, 0x07, 0x07, 0xC3, 0xE0, 0x70, 0x38, 0x3C, + 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xE0, 0xF0, 0xE0, 0x70, 0x78, 0x38, 0x1C, + 0x0E, 0x07, 0x07, 0x8F, 0x87, 0xC3, 0xC0, 0x3C, 0x07, 0xE0, 0xC7, 0x30, + 0x7E, 0x01, 0xC0}; + +const GFXglyph FreeSansBoldOblique12pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 7, 0, 1}, // 0x20 ' ' + {0, 7, 17, 8, 3, -16}, // 0x21 '!' + {15, 10, 6, 11, 4, -17}, // 0x22 '"' + {23, 15, 16, 13, 1, -15}, // 0x23 '#' + {53, 15, 21, 13, 1, -17}, // 0x24 '$' + {93, 18, 18, 21, 3, -17}, // 0x25 '%' + {134, 15, 17, 17, 2, -16}, // 0x26 '&' + {166, 4, 6, 6, 4, -17}, // 0x27 ''' + {169, 9, 22, 8, 2, -17}, // 0x28 '(' + {194, 9, 22, 8, -1, -16}, // 0x29 ')' + {219, 8, 8, 9, 3, -17}, // 0x2A '*' + {227, 12, 11, 14, 2, -10}, // 0x2B '+' + {244, 5, 7, 7, 1, -2}, // 0x2C ',' + {249, 7, 3, 8, 2, -7}, // 0x2D '-' + {252, 4, 3, 7, 2, -2}, // 0x2E '.' + {254, 10, 17, 7, 0, -16}, // 0x2F '/' + {276, 13, 17, 13, 2, -16}, // 0x30 '0' + {304, 9, 17, 13, 4, -16}, // 0x31 '1' + {324, 15, 17, 13, 1, -16}, // 0x32 '2' + {356, 13, 17, 13, 2, -16}, // 0x33 '3' + {384, 13, 17, 13, 1, -16}, // 0x34 '4' + {412, 14, 17, 13, 1, -16}, // 0x35 '5' + {442, 13, 17, 13, 2, -16}, // 0x36 '6' + {470, 13, 17, 13, 3, -16}, // 0x37 '7' + {498, 14, 17, 13, 1, -16}, // 0x38 '8' + {528, 14, 17, 13, 2, -16}, // 0x39 '9' + {558, 6, 12, 8, 3, -11}, // 0x3A ':' + {567, 7, 16, 8, 2, -11}, // 0x3B ';' + {581, 13, 12, 14, 2, -11}, // 0x3C '<' + {601, 14, 9, 14, 1, -9}, // 0x3D '=' + {617, 13, 12, 14, 1, -10}, // 0x3E '>' + {637, 13, 18, 15, 4, -17}, // 0x3F '?' + {667, 22, 21, 23, 2, -17}, // 0x40 '@' + {725, 17, 18, 17, 0, -17}, // 0x41 'A' + {764, 17, 18, 17, 2, -17}, // 0x42 'B' + {803, 17, 18, 17, 3, -17}, // 0x43 'C' + {842, 17, 18, 17, 2, -17}, // 0x44 'D' + {881, 16, 18, 16, 2, -17}, // 0x45 'E' + {917, 16, 18, 15, 2, -17}, // 0x46 'F' + {953, 17, 18, 19, 3, -17}, // 0x47 'G' + {992, 17, 18, 17, 2, -17}, // 0x48 'H' + {1031, 7, 18, 7, 2, -17}, // 0x49 'I' + {1047, 14, 18, 13, 1, -17}, // 0x4A 'J' + {1079, 18, 18, 17, 2, -17}, // 0x4B 'K' + {1120, 13, 18, 15, 2, -17}, // 0x4C 'L' + {1150, 20, 18, 20, 2, -17}, // 0x4D 'M' + {1195, 18, 18, 17, 2, -17}, // 0x4E 'N' + {1236, 17, 18, 19, 3, -17}, // 0x4F 'O' + {1275, 16, 18, 16, 2, -17}, // 0x50 'P' + {1311, 17, 19, 19, 3, -17}, // 0x51 'Q' + {1352, 17, 18, 17, 2, -17}, // 0x52 'R' + {1391, 16, 18, 16, 2, -17}, // 0x53 'S' + {1427, 15, 18, 15, 3, -17}, // 0x54 'T' + {1461, 16, 18, 17, 3, -17}, // 0x55 'U' + {1497, 15, 18, 16, 4, -17}, // 0x56 'V' + {1531, 21, 18, 23, 4, -17}, // 0x57 'W' + {1579, 18, 18, 16, 1, -17}, // 0x58 'X' + {1620, 15, 18, 16, 4, -17}, // 0x59 'Y' + {1654, 17, 18, 15, 1, -17}, // 0x5A 'Z' + {1693, 10, 23, 8, 1, -17}, // 0x5B '[' + {1722, 4, 23, 7, 3, -22}, // 0x5C '\' + {1734, 10, 23, 8, 0, -17}, // 0x5D ']' + {1763, 11, 11, 14, 3, -16}, // 0x5E '^' + {1779, 15, 2, 13, -2, 4}, // 0x5F '_' + {1783, 4, 3, 8, 4, -17}, // 0x60 '`' + {1785, 13, 13, 13, 1, -12}, // 0x61 'a' + {1807, 15, 18, 15, 1, -17}, // 0x62 'b' + {1841, 13, 13, 13, 2, -12}, // 0x63 'c' + {1863, 15, 18, 15, 2, -17}, // 0x64 'd' + {1897, 13, 13, 13, 2, -12}, // 0x65 'e' + {1919, 9, 18, 8, 2, -17}, // 0x66 'f' + {1940, 15, 18, 15, 1, -12}, // 0x67 'g' + {1974, 14, 18, 15, 2, -17}, // 0x68 'h' + {2006, 7, 18, 7, 2, -17}, // 0x69 'i' + {2022, 10, 23, 7, -1, -17}, // 0x6A 'j' + {2051, 15, 18, 13, 1, -17}, // 0x6B 'k' + {2085, 7, 18, 7, 2, -17}, // 0x6C 'l' + {2101, 21, 13, 21, 1, -12}, // 0x6D 'm' + {2136, 14, 13, 15, 2, -12}, // 0x6E 'n' + {2159, 14, 13, 15, 2, -12}, // 0x6F 'o' + {2182, 16, 18, 15, 0, -12}, // 0x70 'p' + {2218, 14, 18, 15, 2, -12}, // 0x71 'q' + {2250, 10, 13, 9, 2, -12}, // 0x72 'r' + {2267, 12, 13, 13, 3, -12}, // 0x73 's' + {2287, 8, 15, 8, 2, -14}, // 0x74 't' + {2302, 14, 13, 15, 2, -12}, // 0x75 'u' + {2325, 13, 13, 13, 3, -12}, // 0x76 'v' + {2347, 17, 13, 19, 3, -12}, // 0x77 'w' + {2375, 16, 13, 13, 0, -12}, // 0x78 'x' + {2401, 15, 18, 13, 1, -12}, // 0x79 'y' + {2435, 13, 13, 12, 1, -12}, // 0x7A 'z' + {2457, 9, 23, 9, 3, -17}, // 0x7B '{' + {2483, 6, 23, 7, 1, -17}, // 0x7C '|' + {2501, 9, 23, 9, 0, -17}, // 0x7D '}' + {2527, 12, 5, 14, 2, -7}}; // 0x7E '~' + +const GFXfont FreeSansBoldOblique12pt7b PROGMEM = { + (uint8_t *)FreeSansBoldOblique12pt7bBitmaps, + (GFXglyph *)FreeSansBoldOblique12pt7bGlyphs, 0x20, 0x7E, 29}; + +// Approx. 3207 bytes diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBoldOblique18pt7b.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBoldOblique18pt7b.h new file mode 100644 index 0000000..441c6b5 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBoldOblique18pt7b.h @@ -0,0 +1,547 @@ +#pragma once +#include + +const uint8_t FreeSansBoldOblique18pt7bBitmaps[] PROGMEM = { + 0x06, 0x01, 0xC0, 0x7C, 0x1F, 0x0F, 0xC3, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, + 0xC0, 0xF0, 0x7C, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1C, 0x07, 0x01, 0xC0, + 0x60, 0x7C, 0x1F, 0x07, 0xC3, 0xF0, 0xF8, 0x00, 0x78, 0x7B, 0xC3, 0xFE, + 0x3F, 0xE1, 0xEF, 0x0F, 0x78, 0x7B, 0x83, 0x9C, 0x1C, 0xC0, 0xC0, 0x00, + 0x3C, 0x38, 0x00, 0xF1, 0xE0, 0x07, 0x87, 0x00, 0x1E, 0x3C, 0x00, 0xF0, + 0xE0, 0x3F, 0xFF, 0xF0, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0x1F, 0xFF, 0xF8, + 0x0F, 0x0E, 0x00, 0x3C, 0x78, 0x00, 0xE1, 0xE0, 0x07, 0x8F, 0x00, 0x1C, + 0x3C, 0x07, 0xFF, 0xFE, 0x1F, 0xFF, 0xF8, 0x7F, 0xFF, 0xE3, 0xFF, 0xFF, + 0x01, 0xE3, 0xC0, 0x0F, 0x0E, 0x00, 0x3C, 0x78, 0x01, 0xE1, 0xC0, 0x07, + 0x8F, 0x00, 0x3C, 0x38, 0x00, 0x00, 0x0C, 0x00, 0x01, 0x80, 0x00, 0xFC, + 0x00, 0xFF, 0xC0, 0x3F, 0xFC, 0x0F, 0xFF, 0xC3, 0xE6, 0x78, 0x78, 0xCF, + 0x1E, 0x39, 0xE3, 0xC7, 0x3C, 0x78, 0xC0, 0x0F, 0x98, 0x01, 0xFF, 0x00, + 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x00, 0x7F, 0x80, 0x0F, 0xF0, + 0x03, 0xBE, 0x00, 0x67, 0xCF, 0x8C, 0xF9, 0xF1, 0x9F, 0x3E, 0x77, 0xC7, + 0xEF, 0xF8, 0x7F, 0xFE, 0x0F, 0xFF, 0x80, 0xFF, 0xE0, 0x03, 0xE0, 0x00, + 0x38, 0x00, 0x06, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x07, 0x01, 0xE0, + 0x03, 0x81, 0xFE, 0x00, 0xC0, 0xFF, 0x80, 0x70, 0x7F, 0xF0, 0x38, 0x1E, + 0x3C, 0x1C, 0x0F, 0x07, 0x06, 0x03, 0x81, 0xC3, 0x80, 0xE0, 0xF1, 0xC0, + 0x3C, 0x78, 0xE0, 0x0F, 0xFE, 0x30, 0x01, 0xFF, 0x1C, 0x00, 0x7F, 0x8E, + 0x00, 0x07, 0x83, 0x00, 0x00, 0x01, 0x83, 0xE0, 0x00, 0xE3, 0xFE, 0x00, + 0x71, 0xFF, 0x80, 0x18, 0xFF, 0xF0, 0x0C, 0x3C, 0x3C, 0x07, 0x1C, 0x07, + 0x03, 0x87, 0x01, 0xC0, 0xC1, 0xE1, 0xE0, 0x60, 0x7F, 0xF8, 0x38, 0x0F, + 0xFC, 0x1C, 0x03, 0xFE, 0x06, 0x00, 0x3E, 0x00, 0x00, 0x1F, 0x00, 0x03, + 0xFC, 0x00, 0x3F, 0xF0, 0x03, 0xFF, 0x80, 0x3F, 0x3C, 0x01, 0xF1, 0xE0, + 0x0F, 0x8F, 0x00, 0x7C, 0xF0, 0x03, 0xFF, 0x80, 0x0F, 0xF8, 0x00, 0x3F, + 0x00, 0x03, 0xF0, 0x00, 0x7F, 0xC7, 0x8F, 0xFE, 0x3C, 0xFC, 0xFB, 0xCF, + 0x83, 0xFE, 0xF8, 0x1F, 0xE7, 0xC0, 0x7E, 0x3E, 0x03, 0xE1, 0xF0, 0x1F, + 0x0F, 0xE3, 0xFC, 0x7F, 0xFF, 0xE1, 0xFF, 0xFF, 0x87, 0xFE, 0x7C, 0x0F, + 0xE1, 0xF0, 0x7B, 0xFF, 0xEF, 0x7B, 0x9C, 0xC0, 0x00, 0x78, 0x07, 0x80, + 0x78, 0x03, 0x80, 0x3C, 0x03, 0xC0, 0x1E, 0x01, 0xE0, 0x1E, 0x00, 0xF0, + 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0xF0, 0x07, + 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, + 0x07, 0x80, 0x1C, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x00, 0xE0, 0x07, 0x80, + 0x1C, 0x00, 0x01, 0xC0, 0x0F, 0x00, 0x38, 0x01, 0xE0, 0x0F, 0x00, 0x78, + 0x01, 0xC0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, + 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0xF8, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x1E, + 0x00, 0xF0, 0x07, 0x80, 0x78, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x1E, 0x01, + 0xE0, 0x1E, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x00, 0x03, 0x00, 0x70, 0x07, + 0x04, 0x63, 0xFF, 0xF7, 0xFF, 0x1F, 0x83, 0xF0, 0x3B, 0x87, 0x38, 0x21, + 0x00, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, + 0x00, 0x7C, 0x07, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xE0, + 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x7C, 0x00, 0x1E, + 0x00, 0x3E, 0x7C, 0xF3, 0xE7, 0xC1, 0x87, 0x0C, 0x39, 0xE3, 0x00, 0x7F, + 0xDF, 0xFF, 0xFB, 0xFE, 0x7D, 0xF7, 0xBE, 0xF8, 0x00, 0x0E, 0x00, 0x18, + 0x00, 0x70, 0x00, 0xC0, 0x03, 0x80, 0x06, 0x00, 0x1C, 0x00, 0x30, 0x00, + 0xE0, 0x01, 0x80, 0x07, 0x00, 0x0C, 0x00, 0x38, 0x00, 0x60, 0x01, 0xC0, + 0x03, 0x00, 0x0E, 0x00, 0x18, 0x00, 0x70, 0x00, 0xC0, 0x03, 0x80, 0x06, + 0x00, 0x1C, 0x00, 0x30, 0x00, 0xE0, 0x00, 0x00, 0xFC, 0x00, 0x7F, 0xC0, + 0x7F, 0xF8, 0x3F, 0xFE, 0x0F, 0x8F, 0xC7, 0xC1, 0xF1, 0xE0, 0x7C, 0xF8, + 0x1F, 0x3E, 0x07, 0xDF, 0x01, 0xF7, 0xC0, 0x7D, 0xF0, 0x3F, 0x7C, 0x0F, + 0xBF, 0x03, 0xEF, 0x80, 0xFB, 0xE0, 0x3E, 0xF8, 0x1F, 0x3E, 0x07, 0xCF, + 0x81, 0xE3, 0xE0, 0xF8, 0xFC, 0x7C, 0x1F, 0xFF, 0x07, 0xFF, 0x80, 0xFF, + 0xC0, 0x0F, 0x80, 0x00, 0x00, 0x70, 0x03, 0x80, 0x3C, 0x03, 0xE0, 0xFF, + 0x3F, 0xF3, 0xFF, 0x9F, 0xFC, 0x03, 0xE0, 0x1F, 0x01, 0xF0, 0x0F, 0x80, + 0x7C, 0x03, 0xE0, 0x1E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x3E, + 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x3E, 0x00, 0x00, 0x1F, 0x80, + 0x07, 0xFF, 0x00, 0x7F, 0xFC, 0x07, 0xFF, 0xE0, 0x7E, 0x1F, 0x83, 0xE0, + 0x7C, 0x1F, 0x03, 0xE1, 0xF0, 0x1F, 0x0F, 0x80, 0xF8, 0x00, 0x0F, 0x80, + 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xE0, 0x00, 0xFC, + 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x80, 0x03, 0xF8, 0x00, 0x3F, + 0x00, 0x03, 0xF0, 0x00, 0x1F, 0xFF, 0xE1, 0xFF, 0xFF, 0x0F, 0xFF, 0xF0, + 0x7F, 0xFF, 0x80, 0x00, 0x7F, 0x00, 0x1F, 0xFC, 0x03, 0xFF, 0xE0, 0x7F, + 0xFF, 0x0F, 0x83, 0xF0, 0xF0, 0x1F, 0x1F, 0x01, 0xF1, 0xE0, 0x1F, 0x00, + 0x03, 0xE0, 0x00, 0xFC, 0x00, 0xFF, 0x80, 0x0F, 0xF0, 0x00, 0xFF, 0x80, + 0x0F, 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xCF, 0x80, 0x7C, + 0xF8, 0x07, 0xCF, 0x80, 0xF8, 0xFC, 0x3F, 0x8F, 0xFF, 0xF0, 0x7F, 0xFE, + 0x03, 0xFF, 0xC0, 0x0F, 0xE0, 0x00, 0x00, 0x07, 0xE0, 0x01, 0xFC, 0x00, + 0x7F, 0x00, 0x1F, 0xE0, 0x03, 0xFC, 0x00, 0xEF, 0x80, 0x3D, 0xF0, 0x0F, + 0x7C, 0x03, 0xCF, 0x80, 0xF1, 0xF0, 0x1C, 0x3E, 0x07, 0x07, 0xC1, 0xE1, + 0xF0, 0x78, 0x3E, 0x1E, 0x07, 0xC3, 0xFF, 0xFE, 0x7F, 0xFF, 0xDF, 0xFF, + 0xFB, 0xFF, 0xFF, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x78, 0x00, 0x1F, + 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x01, 0xFF, 0xF0, 0x3F, 0xFF, 0x03, + 0xFF, 0xF0, 0x3F, 0xFF, 0x07, 0x80, 0x00, 0x78, 0x00, 0x0F, 0x00, 0x00, + 0xF7, 0xE0, 0x0F, 0xFF, 0x01, 0xFF, 0xF8, 0x1F, 0xFF, 0x83, 0xF0, 0xFC, + 0x3E, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, + 0x8F, 0x80, 0xF8, 0xF8, 0x1F, 0x8F, 0xC3, 0xF0, 0xFF, 0xFE, 0x07, 0xFF, + 0xC0, 0x3F, 0xF8, 0x00, 0xFE, 0x00, 0x00, 0x7E, 0x00, 0x3F, 0xF0, 0x0F, + 0xFF, 0x03, 0xFF, 0xE0, 0xF8, 0x7E, 0x3E, 0x07, 0xC7, 0x80, 0x01, 0xF0, + 0x00, 0x3C, 0xFC, 0x07, 0xFF, 0xC1, 0xFF, 0xFC, 0x3F, 0xFF, 0xC7, 0xE1, + 0xF8, 0xF8, 0x1F, 0x3E, 0x03, 0xE7, 0x80, 0x7C, 0xF0, 0x0F, 0x9E, 0x01, + 0xE3, 0xC0, 0x7C, 0x78, 0x1F, 0x0F, 0x87, 0xE0, 0xFF, 0xF8, 0x1F, 0xFE, + 0x01, 0xFF, 0x80, 0x0F, 0xC0, 0x00, 0x7F, 0xFF, 0xEF, 0xFF, 0xF9, 0xFF, + 0xFF, 0x7F, 0xFF, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, + 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x07, 0x80, 0x01, 0xF0, 0x00, 0x7C, + 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x07, 0xC0, + 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x3E, 0x00, + 0x07, 0xC0, 0x00, 0x00, 0x7F, 0x00, 0x1F, 0xFC, 0x07, 0xFF, 0xE0, 0xFF, + 0xFF, 0x0F, 0x81, 0xF1, 0xF0, 0x0F, 0x1E, 0x00, 0xF1, 0xE0, 0x1E, 0x1F, + 0x07, 0xE0, 0xFF, 0xFC, 0x07, 0xFF, 0x00, 0xFF, 0xF8, 0x1F, 0xFF, 0x83, + 0xF0, 0xFC, 0x7C, 0x07, 0xC7, 0xC0, 0x7C, 0xF8, 0x07, 0xCF, 0x80, 0x7C, + 0xF8, 0x0F, 0x8F, 0x80, 0xF8, 0xFC, 0x3F, 0x0F, 0xFF, 0xF0, 0x7F, 0xFE, + 0x03, 0xFF, 0x80, 0x0F, 0xE0, 0x00, 0x00, 0x7E, 0x00, 0x3F, 0xF0, 0x0F, + 0xFF, 0x03, 0xFF, 0xE0, 0xFC, 0x3E, 0x3F, 0x03, 0xC7, 0xC0, 0x79, 0xF0, + 0x0F, 0x3E, 0x01, 0xE7, 0xC0, 0x3C, 0xF8, 0x0F, 0x9F, 0x03, 0xE3, 0xF0, + 0xFC, 0x7F, 0xFF, 0x87, 0xFF, 0xF0, 0x7F, 0xFE, 0x07, 0xE7, 0x80, 0x01, + 0xF0, 0x00, 0x3C, 0x7C, 0x0F, 0x8F, 0xC3, 0xE1, 0xFF, 0xF8, 0x1F, 0xFE, + 0x01, 0xFF, 0x80, 0x0F, 0xC0, 0x00, 0x0F, 0x87, 0xC3, 0xC3, 0xE1, 0xF0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE1, 0xF0, 0xF0, + 0xF8, 0x7C, 0x00, 0x07, 0xC1, 0xF0, 0x78, 0x3E, 0x0F, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x83, 0xE0, 0xF0, 0x7C, + 0x1F, 0x00, 0xC0, 0x70, 0x18, 0x0E, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x20, + 0x00, 0x3C, 0x00, 0x3F, 0x80, 0x3F, 0xE0, 0x3F, 0xFC, 0x3F, 0xFC, 0x1F, + 0xFC, 0x07, 0xFC, 0x00, 0xFC, 0x00, 0x1F, 0xF0, 0x03, 0xFF, 0x80, 0x1F, + 0xFE, 0x00, 0xFF, 0xF0, 0x03, 0xFE, 0x00, 0x1F, 0xC0, 0x00, 0x78, 0x00, + 0x03, 0x00, 0x1F, 0xFF, 0xF3, 0xFF, 0xFE, 0x3F, 0xFF, 0xE3, 0xFF, 0xFE, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, + 0xC7, 0xFF, 0xFC, 0xFF, 0xFF, 0x8F, 0xFF, 0xF8, 0x18, 0x00, 0x03, 0xC0, + 0x00, 0x7F, 0x00, 0x0F, 0xF8, 0x01, 0xFF, 0xE0, 0x0F, 0xFF, 0x00, 0x3F, + 0xF8, 0x01, 0xFF, 0x00, 0x07, 0xE0, 0x07, 0xFC, 0x07, 0xFF, 0x07, 0xFF, + 0x87, 0xFF, 0x80, 0xFF, 0x80, 0x3F, 0x80, 0x07, 0x80, 0x00, 0x80, 0x00, + 0x00, 0x03, 0xF8, 0x03, 0xFF, 0xC1, 0xFF, 0xF8, 0xFF, 0xFE, 0x7E, 0x1F, + 0xDF, 0x03, 0xFF, 0x80, 0x7F, 0xE0, 0x1F, 0xF8, 0x07, 0xC0, 0x03, 0xE0, + 0x01, 0xF8, 0x00, 0xFC, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x3F, 0x80, 0x1F, + 0x80, 0x07, 0x80, 0x03, 0xE0, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x07, 0xC0, 0x01, 0xF0, 0x00, 0xFC, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x00, + 0x00, 0x00, 0x7F, 0x80, 0x00, 0x01, 0xFF, 0xF8, 0x00, 0x03, 0xFF, 0xFE, + 0x00, 0x07, 0xF0, 0x1F, 0xC0, 0x0F, 0xC0, 0x03, 0xE0, 0x0F, 0x80, 0x00, + 0xF8, 0x0F, 0x00, 0x00, 0x3C, 0x0F, 0x01, 0xF1, 0xCF, 0x0F, 0x03, 0xFD, + 0xC7, 0x8F, 0x03, 0xFF, 0xE1, 0xC7, 0x03, 0xE3, 0xE0, 0xE7, 0x03, 0xC0, + 0xF0, 0x73, 0x83, 0xC0, 0x78, 0x3B, 0x81, 0xE0, 0x38, 0x1D, 0xC1, 0xE0, + 0x1C, 0x1C, 0xC0, 0xF0, 0x1C, 0x0E, 0xE0, 0x70, 0x0E, 0x0F, 0x70, 0x78, + 0x0E, 0x07, 0x38, 0x3C, 0x0F, 0x07, 0x1C, 0x1E, 0x0F, 0x87, 0x8E, 0x0F, + 0x8F, 0xCF, 0x87, 0x07, 0xFF, 0xFF, 0x83, 0xC1, 0xFE, 0x7F, 0x00, 0xE0, + 0x3C, 0x1F, 0x00, 0x78, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x0F, + 0xC0, 0x01, 0x00, 0x03, 0xF8, 0x07, 0x80, 0x00, 0xFF, 0xFF, 0xC0, 0x00, + 0x1F, 0xFF, 0xE0, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, + 0x0F, 0xE0, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0xC0, 0x00, 0xFF, 0x80, 0x03, + 0xFF, 0x00, 0x07, 0xFE, 0x00, 0x1F, 0x7C, 0x00, 0x7E, 0xF8, 0x00, 0xF9, + 0xF0, 0x03, 0xF3, 0xE0, 0x07, 0xC3, 0xE0, 0x1F, 0x87, 0xC0, 0x3E, 0x0F, + 0x80, 0xF8, 0x1F, 0x01, 0xF0, 0x3E, 0x07, 0xFF, 0xFC, 0x1F, 0xFF, 0xF8, + 0x3F, 0xFF, 0xF0, 0xFF, 0xFF, 0xF1, 0xF0, 0x03, 0xE7, 0xC0, 0x07, 0xCF, + 0x80, 0x0F, 0xBE, 0x00, 0x1F, 0x7C, 0x00, 0x3F, 0xF0, 0x00, 0x7C, 0x07, + 0xFF, 0xF0, 0x07, 0xFF, 0xFC, 0x07, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0x0F, + 0xC0, 0x3F, 0x0F, 0x80, 0x1F, 0x0F, 0x80, 0x1F, 0x0F, 0x80, 0x1F, 0x1F, + 0x80, 0x1E, 0x1F, 0x80, 0x3E, 0x1F, 0x00, 0x7C, 0x1F, 0xFF, 0xF8, 0x1F, + 0xFF, 0xF0, 0x3F, 0xFF, 0xF8, 0x3F, 0xFF, 0xF8, 0x3E, 0x00, 0xFC, 0x3E, + 0x00, 0x7C, 0x3E, 0x00, 0x7C, 0x7E, 0x00, 0x7C, 0x7C, 0x00, 0x7C, 0x7C, + 0x00, 0xF8, 0x7C, 0x01, 0xF8, 0x7F, 0xFF, 0xF0, 0xFF, 0xFF, 0xE0, 0xFF, + 0xFF, 0xC0, 0xFF, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0xF8, 0x01, + 0xFF, 0xFC, 0x03, 0xFF, 0xFE, 0x07, 0xE0, 0x7F, 0x0F, 0xC0, 0x3F, 0x1F, + 0x80, 0x1F, 0x3F, 0x00, 0x1F, 0x3E, 0x00, 0x1F, 0x7E, 0x00, 0x00, 0x7C, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, + 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x7C, 0xF8, + 0x00, 0x7C, 0xFC, 0x00, 0xF8, 0xFC, 0x01, 0xF8, 0x7F, 0x07, 0xF0, 0x7F, + 0xFF, 0xE0, 0x3F, 0xFF, 0xC0, 0x0F, 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x07, + 0xFF, 0xE0, 0x07, 0xFF, 0xF8, 0x07, 0xFF, 0xFC, 0x0F, 0xFF, 0xFE, 0x0F, + 0x80, 0x7E, 0x0F, 0x80, 0x3F, 0x0F, 0x80, 0x1F, 0x1F, 0x80, 0x1F, 0x1F, + 0x80, 0x1F, 0x1F, 0x00, 0x1F, 0x1F, 0x00, 0x1F, 0x1F, 0x00, 0x1F, 0x3F, + 0x00, 0x1F, 0x3E, 0x00, 0x3E, 0x3E, 0x00, 0x3E, 0x3E, 0x00, 0x3E, 0x3E, + 0x00, 0x3E, 0x7E, 0x00, 0x7C, 0x7C, 0x00, 0x7C, 0x7C, 0x00, 0xF8, 0x7C, + 0x01, 0xF8, 0x7C, 0x07, 0xF0, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xC0, 0xFF, + 0xFF, 0x00, 0xFF, 0xF8, 0x00, 0x07, 0xFF, 0xFF, 0x07, 0xFF, 0xFE, 0x07, + 0xFF, 0xFE, 0x0F, 0xFF, 0xFE, 0x0F, 0x80, 0x00, 0x0F, 0x80, 0x00, 0x0F, + 0x80, 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x1F, 0xFF, 0xF0, 0x1F, 0xFF, 0xF0, 0x3F, 0xFF, 0xF0, 0x3F, + 0xFF, 0xF0, 0x3E, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x7E, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xFF, + 0xFF, 0xF0, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xE0, 0x07, + 0xFF, 0xFE, 0x0F, 0xFF, 0xFC, 0x3F, 0xFF, 0xF0, 0x7F, 0xFF, 0xE0, 0xF8, + 0x00, 0x01, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0x1F, 0x00, + 0x00, 0x3E, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0xFF, 0xFE, + 0x07, 0xFF, 0xFC, 0x0F, 0xFF, 0xF0, 0x1F, 0x00, 0x00, 0x3E, 0x00, 0x00, + 0xFC, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, + 0x80, 0x00, 0x3F, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, + 0x00, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0xF8, 0x01, 0xFF, 0xFC, 0x03, + 0xFF, 0xFE, 0x07, 0xE0, 0x7E, 0x0F, 0x80, 0x3F, 0x1F, 0x00, 0x1F, 0x3E, + 0x00, 0x1F, 0x3E, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7C, + 0x00, 0x00, 0xF8, 0x03, 0xFF, 0xF8, 0x07, 0xFF, 0xF8, 0x07, 0xFE, 0xF8, + 0x07, 0xFE, 0xF8, 0x00, 0x3E, 0xF8, 0x00, 0x3E, 0xFC, 0x00, 0x7E, 0xFC, + 0x00, 0x7C, 0x7E, 0x00, 0xFC, 0x7F, 0x83, 0xFC, 0x3F, 0xFF, 0xFC, 0x1F, + 0xFF, 0xBC, 0x0F, 0xFF, 0x38, 0x03, 0xFC, 0x38, 0x03, 0xE0, 0x07, 0xC0, + 0xF8, 0x01, 0xF0, 0x7E, 0x00, 0x7C, 0x1F, 0x00, 0x3F, 0x07, 0xC0, 0x0F, + 0x81, 0xF0, 0x03, 0xE0, 0xFC, 0x00, 0xF8, 0x3E, 0x00, 0x3E, 0x0F, 0x80, + 0x1F, 0x83, 0xE0, 0x07, 0xC0, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xFC, 0x1F, + 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xC1, 0xF0, 0x03, 0xE0, 0x7C, 0x00, 0xF8, + 0x3F, 0x00, 0x3E, 0x0F, 0x80, 0x0F, 0x83, 0xE0, 0x07, 0xE0, 0xF8, 0x01, + 0xF0, 0x3E, 0x00, 0x7C, 0x1F, 0x80, 0x1F, 0x07, 0xC0, 0x0F, 0xC1, 0xF0, + 0x03, 0xF0, 0x7C, 0x00, 0xF8, 0x3F, 0x00, 0x3E, 0x00, 0x07, 0xC3, 0xF0, + 0xFC, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x7E, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, + 0x3F, 0x0F, 0xC3, 0xE0, 0xF8, 0x3E, 0x0F, 0x87, 0xE1, 0xF0, 0x7C, 0x1F, + 0x07, 0xC3, 0xF0, 0xFC, 0x3E, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, + 0x01, 0xF0, 0x00, 0x3F, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xE0, + 0x00, 0x3E, 0x00, 0x07, 0xE0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, + 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x7C, 0x0F, + 0x8F, 0x81, 0xF8, 0xF8, 0x1F, 0x0F, 0x81, 0xF0, 0xF8, 0x1F, 0x0F, 0xC3, + 0xF0, 0xFF, 0xFE, 0x07, 0xFF, 0xC0, 0x3F, 0xF8, 0x01, 0xFC, 0x00, 0x07, + 0xC0, 0x0F, 0xC1, 0xF0, 0x07, 0xE0, 0x7C, 0x03, 0xF0, 0x3F, 0x03, 0xF8, + 0x0F, 0x81, 0xF8, 0x03, 0xE0, 0xFC, 0x00, 0xF8, 0x7E, 0x00, 0x7E, 0x3F, + 0x00, 0x1F, 0x1F, 0x80, 0x07, 0xCF, 0xC0, 0x01, 0xF7, 0xE0, 0x00, 0x7F, + 0xF0, 0x00, 0x3F, 0xFC, 0x00, 0x0F, 0xFF, 0x80, 0x03, 0xFF, 0xF0, 0x00, + 0xFE, 0xFC, 0x00, 0x3F, 0x1F, 0x80, 0x1F, 0x87, 0xE0, 0x07, 0xC0, 0xFC, + 0x01, 0xF0, 0x3F, 0x00, 0x7C, 0x07, 0xE0, 0x1F, 0x01, 0xFC, 0x0F, 0xC0, + 0x3F, 0x03, 0xE0, 0x0F, 0xE0, 0xF8, 0x01, 0xF8, 0x3E, 0x00, 0x3F, 0x00, + 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x0F, 0xC0, 0x03, + 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x1F, 0x80, 0x07, 0xC0, 0x01, 0xF0, + 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x0F, 0xC0, 0x03, 0xE0, 0x00, 0xF8, 0x00, + 0x3E, 0x00, 0x0F, 0x80, 0x07, 0xE0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x1F, + 0x00, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xE0, 0x03, + 0xF8, 0x01, 0xFC, 0x07, 0xF0, 0x07, 0xF8, 0x1F, 0xE0, 0x0F, 0xF0, 0x3F, + 0xC0, 0x3F, 0xE0, 0x7F, 0x80, 0x7F, 0xC0, 0xFF, 0x01, 0xFF, 0x01, 0xFE, + 0x03, 0xFE, 0x07, 0xDC, 0x07, 0x7C, 0x0F, 0xB8, 0x1E, 0xF8, 0x1F, 0x70, + 0x3D, 0xF0, 0x3E, 0xF0, 0xF7, 0xC0, 0xF9, 0xE1, 0xEF, 0x81, 0xF3, 0xC7, + 0x9F, 0x03, 0xE7, 0x8F, 0x3E, 0x07, 0xCF, 0x3C, 0x7C, 0x0F, 0x9E, 0x79, + 0xF0, 0x3E, 0x3C, 0xE3, 0xE0, 0x7C, 0x7B, 0xC7, 0xC0, 0xF8, 0xF7, 0x8F, + 0x81, 0xF1, 0xFE, 0x1E, 0x07, 0xE3, 0xFC, 0x7C, 0x0F, 0x87, 0xF0, 0xF8, + 0x1F, 0x0F, 0xE1, 0xF0, 0x3E, 0x1F, 0x83, 0xE0, 0x7C, 0x3F, 0x0F, 0x81, + 0xF0, 0x7E, 0x1F, 0x00, 0x03, 0xE0, 0x07, 0xC0, 0x7E, 0x00, 0xF8, 0x1F, + 0xC0, 0x1F, 0x03, 0xF8, 0x03, 0xE0, 0x7F, 0x80, 0x7C, 0x0F, 0xF0, 0x1F, + 0x01, 0xFF, 0x03, 0xE0, 0x7F, 0xE0, 0x7C, 0x0F, 0xBC, 0x0F, 0x81, 0xF7, + 0xC1, 0xF0, 0x3E, 0xF8, 0x7C, 0x0F, 0x8F, 0x0F, 0x81, 0xF1, 0xF1, 0xF0, + 0x3E, 0x3E, 0x3E, 0x07, 0xC3, 0xC7, 0xC0, 0xF8, 0x7D, 0xF0, 0x3E, 0x0F, + 0xBE, 0x07, 0xC0, 0xF7, 0xC0, 0xF8, 0x1F, 0xF8, 0x1F, 0x01, 0xFE, 0x03, + 0xC0, 0x3F, 0xC0, 0xF8, 0x07, 0xF8, 0x1F, 0x00, 0x7F, 0x03, 0xE0, 0x0F, + 0xE0, 0x7C, 0x01, 0xF8, 0x1F, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0xE0, 0x00, + 0x3F, 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0x7F, 0xFF, 0xC0, 0x7E, 0x07, 0xF0, + 0x7E, 0x01, 0xF8, 0x7C, 0x00, 0x7E, 0x3E, 0x00, 0x1F, 0x3E, 0x00, 0x0F, + 0x9E, 0x00, 0x07, 0xDF, 0x00, 0x03, 0xEF, 0x80, 0x01, 0xFF, 0x80, 0x00, + 0xFF, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x7D, 0xF0, 0x00, 0x3E, 0xF8, 0x00, + 0x1F, 0x7C, 0x00, 0x1F, 0x3E, 0x00, 0x1F, 0x9F, 0x80, 0x0F, 0x87, 0xE0, + 0x0F, 0x83, 0xF8, 0x1F, 0x80, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0x80, 0x0F, + 0xFF, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x07, 0xFF, 0xE0, 0x0F, 0xFF, 0xF0, + 0x3F, 0xFF, 0xF0, 0x7F, 0xFF, 0xF0, 0xF8, 0x07, 0xE1, 0xF0, 0x07, 0xC3, + 0xE0, 0x0F, 0x8F, 0xC0, 0x1F, 0x1F, 0x00, 0x3E, 0x3E, 0x00, 0xF8, 0x7C, + 0x01, 0xF0, 0xF8, 0x07, 0xC3, 0xFF, 0xFF, 0x87, 0xFF, 0xFE, 0x0F, 0xFF, + 0xF8, 0x1F, 0xFF, 0x80, 0x3E, 0x00, 0x00, 0xFC, 0x00, 0x01, 0xF0, 0x00, + 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x3F, 0x00, 0x00, + 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, 0x1F, 0xC0, + 0x00, 0x3F, 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0x7F, 0xFF, 0xC0, 0x7F, 0x07, + 0xF0, 0x7E, 0x01, 0xF8, 0x7E, 0x00, 0x7E, 0x3E, 0x00, 0x1F, 0x3E, 0x00, + 0x0F, 0x9E, 0x00, 0x07, 0xDF, 0x00, 0x03, 0xEF, 0x80, 0x01, 0xF7, 0x80, + 0x00, 0xFF, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x7D, 0xF0, 0x00, 0x3E, 0xF8, + 0x02, 0x1F, 0x7C, 0x03, 0x9F, 0x3E, 0x03, 0xFF, 0x9F, 0x81, 0xFF, 0x87, + 0xE0, 0x7F, 0x83, 0xF8, 0x3F, 0xC0, 0xFF, 0xFF, 0xE0, 0x3F, 0xFF, 0xF0, + 0x0F, 0xFF, 0xFC, 0x01, 0xFE, 0x1C, 0x00, 0x00, 0x0C, 0x00, 0x07, 0xFF, + 0xF8, 0x07, 0xFF, 0xFE, 0x07, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0x0F, 0x80, + 0x3F, 0x0F, 0x80, 0x1F, 0x0F, 0x80, 0x1F, 0x0F, 0x80, 0x1F, 0x1F, 0x80, + 0x1E, 0x1F, 0x00, 0x3E, 0x1F, 0x00, 0x7C, 0x1F, 0xFF, 0xF8, 0x1F, 0xFF, + 0xE0, 0x3F, 0xFF, 0xF0, 0x3F, 0xFF, 0xF8, 0x3E, 0x01, 0xF8, 0x3E, 0x00, + 0xF8, 0x3E, 0x00, 0xF8, 0x7E, 0x00, 0xF8, 0x7C, 0x00, 0xF8, 0x7C, 0x01, + 0xF0, 0x7C, 0x01, 0xF0, 0x7C, 0x01, 0xF0, 0xFC, 0x01, 0xF0, 0xF8, 0x01, + 0xF0, 0xF8, 0x01, 0xF0, 0x00, 0x3F, 0xC0, 0x07, 0xFF, 0xC0, 0x3F, 0xFF, + 0x81, 0xFF, 0xFF, 0x0F, 0xC0, 0xFC, 0x3E, 0x01, 0xF1, 0xF0, 0x07, 0xC7, + 0xC0, 0x1F, 0x1F, 0x00, 0x00, 0x7E, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, + 0x80, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0xC0, 0x1F, 0xFF, 0x80, 0x03, 0xFE, + 0x00, 0x01, 0xF8, 0x00, 0x03, 0xEF, 0x80, 0x0F, 0xBE, 0x00, 0x3C, 0xFC, + 0x01, 0xF3, 0xF8, 0x1F, 0x87, 0xFF, 0xFE, 0x0F, 0xFF, 0xF0, 0x1F, 0xFF, + 0x00, 0x1F, 0xF0, 0x00, 0x7F, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xF0, 0x0F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xC0, 0x00, 0x3E, + 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xC0, 0x00, + 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xC0, + 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xFC, 0x00, 0x07, + 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xFC, 0x00, + 0x00, 0x0F, 0x80, 0x1F, 0x1F, 0x80, 0x1F, 0x1F, 0x00, 0x1F, 0x1F, 0x00, + 0x3F, 0x1F, 0x00, 0x3E, 0x1F, 0x00, 0x3E, 0x3E, 0x00, 0x3E, 0x3E, 0x00, + 0x7E, 0x3E, 0x00, 0x7C, 0x3E, 0x00, 0x7C, 0x3E, 0x00, 0x7C, 0x7C, 0x00, + 0x7C, 0x7C, 0x00, 0xFC, 0x7C, 0x00, 0xF8, 0x7C, 0x00, 0xF8, 0x7C, 0x00, + 0xF8, 0xF8, 0x00, 0xF8, 0xF8, 0x01, 0xF8, 0xF8, 0x01, 0xF0, 0xF8, 0x01, + 0xF0, 0xF8, 0x03, 0xE0, 0xFE, 0x0F, 0xE0, 0x7F, 0xFF, 0xC0, 0x7F, 0xFF, + 0x80, 0x1F, 0xFE, 0x00, 0x07, 0xF8, 0x00, 0xFC, 0x00, 0x7F, 0xF0, 0x03, + 0xE7, 0xC0, 0x0F, 0x9F, 0x00, 0x7C, 0x7C, 0x01, 0xF1, 0xF0, 0x0F, 0x87, + 0xC0, 0x3E, 0x1F, 0x01, 0xF0, 0x7C, 0x07, 0x81, 0xF0, 0x3E, 0x03, 0xC0, + 0xF0, 0x0F, 0x07, 0xC0, 0x3E, 0x1E, 0x00, 0xF8, 0xF8, 0x03, 0xE3, 0xC0, + 0x0F, 0x9F, 0x00, 0x3E, 0x78, 0x00, 0xFB, 0xE0, 0x01, 0xEF, 0x00, 0x07, + 0xFC, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xE0, + 0x00, 0x1F, 0x80, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x07, 0xE0, 0x1F, 0xF8, + 0x07, 0xE0, 0x3F, 0xF8, 0x0F, 0xE0, 0x3E, 0xF8, 0x0F, 0xE0, 0x7E, 0xF8, + 0x1F, 0xE0, 0x7C, 0xF8, 0x1F, 0xE0, 0x7C, 0xF8, 0x3F, 0xE0, 0xF8, 0xF8, + 0x3D, 0xE0, 0xF8, 0x78, 0x3D, 0xE1, 0xF0, 0x78, 0x79, 0xE1, 0xF0, 0x78, + 0x79, 0xE1, 0xE0, 0x78, 0xF9, 0xE3, 0xE0, 0x78, 0xF1, 0xE3, 0xC0, 0x79, + 0xF1, 0xE7, 0xC0, 0x79, 0xE1, 0xE7, 0x80, 0x79, 0xE1, 0xE7, 0x80, 0x7B, + 0xC1, 0xEF, 0x80, 0x7B, 0xC1, 0xEF, 0x00, 0x7F, 0x81, 0xFF, 0x00, 0x7F, + 0x81, 0xFE, 0x00, 0x7F, 0x01, 0xFE, 0x00, 0x7F, 0x01, 0xFC, 0x00, 0x7F, + 0x01, 0xFC, 0x00, 0x7E, 0x01, 0xF8, 0x00, 0x3E, 0x01, 0xF8, 0x00, 0x3C, + 0x01, 0xF0, 0x00, 0x03, 0xF0, 0x07, 0xE0, 0x7E, 0x01, 0xF8, 0x07, 0xE0, + 0x7E, 0x00, 0xFC, 0x1F, 0x80, 0x1F, 0x83, 0xE0, 0x01, 0xF8, 0xF8, 0x00, + 0x3F, 0x3F, 0x00, 0x03, 0xEF, 0xC0, 0x00, 0x7F, 0xF0, 0x00, 0x0F, 0xFC, + 0x00, 0x00, 0xFF, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x03, 0xF8, 0x00, 0x00, + 0x7F, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x07, 0xFE, 0x00, 0x00, 0xFF, 0xC0, + 0x00, 0x3E, 0xF8, 0x00, 0x0F, 0xDF, 0x80, 0x03, 0xF3, 0xF0, 0x00, 0xFC, + 0x3F, 0x00, 0x3F, 0x07, 0xE0, 0x07, 0xE0, 0xFC, 0x01, 0xF8, 0x0F, 0xC0, + 0x7E, 0x01, 0xF8, 0x1F, 0x80, 0x3F, 0x80, 0x7C, 0x00, 0xFD, 0xF8, 0x07, + 0xE7, 0xE0, 0x1F, 0x1F, 0x80, 0xFC, 0x3E, 0x07, 0xE0, 0xFC, 0x1F, 0x03, + 0xF0, 0xFC, 0x07, 0xC7, 0xE0, 0x1F, 0x1F, 0x00, 0x7E, 0xFC, 0x00, 0xFB, + 0xE0, 0x03, 0xFF, 0x00, 0x0F, 0xF8, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x00, + 0x01, 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x1F, 0x00, 0x00, 0x7C, 0x00, 0x01, + 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xE0, + 0x00, 0x0F, 0x80, 0x00, 0x3E, 0x00, 0x00, 0x07, 0xFF, 0xFF, 0x83, 0xFF, + 0xFF, 0x81, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xE0, 0x00, 0x07, 0xE0, 0x00, + 0x07, 0xE0, 0x00, 0x07, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF0, 0x00, + 0x07, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, + 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, + 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF8, 0x00, + 0x03, 0xF8, 0x00, 0x01, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, + 0xF0, 0x7F, 0xFF, 0xF0, 0x00, 0x01, 0xFE, 0x03, 0xFC, 0x07, 0xF8, 0x1F, + 0xF0, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x07, 0x80, 0x0F, 0x00, + 0x1E, 0x00, 0x3C, 0x00, 0xF8, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, + 0x00, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x07, 0x80, 0x0F, 0x00, + 0x1E, 0x00, 0x3C, 0x00, 0xF8, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, + 0xF0, 0x3F, 0xC0, 0x7F, 0x80, 0xFF, 0x00, 0xE7, 0x39, 0xCE, 0x31, 0x8C, + 0x63, 0x1C, 0xE7, 0x39, 0xCE, 0x31, 0x8C, 0x63, 0x9C, 0xE7, 0x38, 0x01, + 0xFE, 0x03, 0xFC, 0x07, 0xF8, 0x1F, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, + 0x00, 0x3E, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x0F, 0x00, + 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, + 0x00, 0x3E, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x0F, 0x00, + 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x1F, 0xF0, 0x3F, 0xC0, 0x7F, 0x80, 0xFF, + 0x00, 0x00, 0x7C, 0x00, 0xFC, 0x01, 0xFC, 0x01, 0xFC, 0x03, 0xFC, 0x03, + 0x9E, 0x07, 0x9E, 0x0F, 0x1E, 0x0F, 0x1E, 0x1E, 0x1E, 0x1C, 0x0F, 0x3C, + 0x0F, 0x78, 0x0F, 0x78, 0x0F, 0xF0, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFE, 0xF3, 0x8C, 0x71, 0x80, 0x01, 0xFE, 0x01, 0xFF, 0xE0, + 0xFF, 0xF8, 0x7F, 0xFF, 0x1F, 0x0F, 0xC7, 0x81, 0xF0, 0x00, 0x7C, 0x00, + 0xFE, 0x07, 0xFF, 0x87, 0xFF, 0xE3, 0xFE, 0xF9, 0xF0, 0x7C, 0xF8, 0x1F, + 0x3E, 0x0F, 0xCF, 0x87, 0xF3, 0xFF, 0xF8, 0xFF, 0xFE, 0x1F, 0xEF, 0x81, + 0xE3, 0xF0, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, + 0x07, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF9, 0xF8, 0x0F, 0xFF, + 0xC1, 0xFF, 0xFE, 0x1F, 0xFF, 0xE1, 0xFC, 0x3F, 0x1F, 0x83, 0xF1, 0xF0, + 0x1F, 0x3E, 0x01, 0xF3, 0xE0, 0x1F, 0x3C, 0x01, 0xF3, 0xC0, 0x1F, 0x3C, + 0x03, 0xE7, 0xC0, 0x3E, 0x7E, 0x07, 0xC7, 0xF1, 0xFC, 0x7F, 0xFF, 0x87, + 0xFF, 0xF0, 0xFB, 0xFE, 0x0F, 0x9F, 0x80, 0x00, 0xFC, 0x01, 0xFF, 0xC0, + 0xFF, 0xF8, 0x7F, 0xFF, 0x3F, 0x0F, 0xCF, 0x81, 0xF7, 0xC0, 0x7D, 0xF0, + 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF8, 0x0F, + 0xBE, 0x07, 0xCF, 0xC3, 0xF1, 0xFF, 0xF8, 0x7F, 0xFC, 0x0F, 0xFE, 0x00, + 0xFE, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0x80, 0x00, + 0x3E, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x1F, 0x00, 0x7E, 0x7C, + 0x07, 0xFD, 0xF0, 0x3F, 0xFF, 0xC1, 0xFF, 0xFE, 0x0F, 0xE3, 0xF8, 0x3E, + 0x07, 0xE1, 0xF0, 0x1F, 0x87, 0xC0, 0x3C, 0x3E, 0x00, 0xF0, 0xF8, 0x07, + 0xC3, 0xE0, 0x1F, 0x0F, 0x80, 0x7C, 0x3E, 0x03, 0xE0, 0xF8, 0x1F, 0x83, + 0xF0, 0xFE, 0x07, 0xFF, 0xF8, 0x1F, 0xFF, 0xE0, 0x3F, 0xFF, 0x00, 0x7E, + 0x7C, 0x00, 0x00, 0xFE, 0x00, 0x7F, 0xE0, 0x3F, 0xFE, 0x0F, 0xFF, 0xE3, + 0xF0, 0x7E, 0x7C, 0x07, 0xDF, 0x00, 0xFB, 0xE0, 0x1F, 0x7F, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x1F, 0x3F, + 0x07, 0xE3, 0xFF, 0xF8, 0x7F, 0xFE, 0x03, 0xFF, 0x00, 0x3F, 0x80, 0x00, + 0x00, 0xF8, 0x1F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7C, 0x07, 0xC0, 0x3E, 0x0F, + 0xFE, 0x7F, 0xF3, 0xFF, 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, + 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x78, 0x07, 0xC0, 0x3E, 0x01, + 0xF0, 0x0F, 0x80, 0xF8, 0x07, 0xC0, 0x00, 0x00, 0x7C, 0x7C, 0x07, 0xFD, + 0xF0, 0x3F, 0xF7, 0x81, 0xFF, 0xFE, 0x0F, 0xE3, 0xF8, 0x3E, 0x07, 0xE1, + 0xF8, 0x0F, 0x87, 0xC0, 0x3C, 0x1E, 0x00, 0xF0, 0xF8, 0x03, 0xC3, 0xE0, + 0x1F, 0x0F, 0x80, 0x78, 0x3E, 0x03, 0xE0, 0xF8, 0x1F, 0x83, 0xF0, 0xFE, + 0x07, 0xFF, 0xF8, 0x1F, 0xFF, 0xC0, 0x3F, 0xEF, 0x00, 0x3E, 0x7C, 0x00, + 0x01, 0xF0, 0x00, 0x07, 0xC3, 0xE0, 0x3E, 0x0F, 0x80, 0xF8, 0x3F, 0x0F, + 0xC0, 0x7F, 0xFE, 0x00, 0xFF, 0xF0, 0x00, 0xFE, 0x00, 0x00, 0x03, 0xE0, + 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, + 0x00, 0x0F, 0x80, 0x00, 0xF8, 0xF8, 0x0F, 0xBF, 0xE0, 0xFF, 0xFF, 0x0F, + 0xFF, 0xF1, 0xFC, 0x3F, 0x1F, 0x81, 0xF1, 0xF0, 0x1F, 0x1F, 0x01, 0xF1, + 0xE0, 0x1F, 0x3E, 0x03, 0xE3, 0xE0, 0x3E, 0x3E, 0x03, 0xE3, 0xE0, 0x3E, + 0x7C, 0x03, 0xE7, 0xC0, 0x7C, 0x7C, 0x07, 0xC7, 0xC0, 0x7C, 0x7C, 0x07, + 0xCF, 0x80, 0x78, 0x07, 0xC1, 0xF0, 0x7C, 0x3E, 0x00, 0x00, 0x00, 0x00, + 0x3E, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, + 0x0F, 0x87, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC3, 0xE0, 0xF8, 0x3E, 0x00, + 0x00, 0x3E, 0x00, 0x78, 0x01, 0xF0, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7C, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xE0, 0x0F, 0x80, 0x1F, + 0x00, 0x3E, 0x00, 0x7C, 0x00, 0xF8, 0x03, 0xE0, 0x07, 0xC0, 0x0F, 0x80, + 0x1F, 0x00, 0x3C, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xE0, 0x07, 0xC0, 0x1F, + 0x00, 0x3E, 0x00, 0x7C, 0x00, 0xF8, 0x03, 0xF0, 0x1F, 0xC0, 0x3F, 0x80, + 0x7E, 0x01, 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, + 0x0F, 0x80, 0x00, 0x78, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, + 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x07, 0xC7, 0xE0, 0x3E, 0x7E, 0x01, + 0xF7, 0xE0, 0x0F, 0xFE, 0x00, 0xFF, 0xE0, 0x07, 0xFF, 0x00, 0x3F, 0xFC, + 0x01, 0xFF, 0xE0, 0x0F, 0xDF, 0x00, 0xFC, 0xFC, 0x07, 0xC3, 0xE0, 0x3E, + 0x1F, 0x01, 0xF0, 0xFC, 0x0F, 0x83, 0xE0, 0xF8, 0x1F, 0x87, 0xC0, 0xFC, + 0x00, 0x07, 0xC1, 0xF0, 0x7C, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x1F, + 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x87, + 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC3, 0xE0, 0xF8, 0x3E, 0x00, 0x0F, 0x8F, + 0x83, 0xF0, 0x3E, 0xFF, 0x3F, 0xE0, 0xF7, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, + 0xFF, 0x1F, 0xC7, 0xF8, 0x7C, 0x7C, 0x0F, 0x81, 0xF1, 0xF0, 0x3E, 0x07, + 0xCF, 0x81, 0xF0, 0x3E, 0x3E, 0x07, 0xC0, 0xF8, 0xF8, 0x1F, 0x03, 0xE3, + 0xE0, 0x7C, 0x0F, 0x8F, 0x81, 0xF0, 0x3E, 0x7C, 0x0F, 0x81, 0xF1, 0xF0, + 0x3E, 0x07, 0xC7, 0xC0, 0xF8, 0x1F, 0x1F, 0x03, 0xE0, 0x7C, 0x7C, 0x0F, + 0x81, 0xE3, 0xE0, 0x7C, 0x0F, 0x8F, 0x81, 0xF0, 0x3E, 0x00, 0x0F, 0x8F, + 0x80, 0xFB, 0xFE, 0x0F, 0xFF, 0xF1, 0xFF, 0xFF, 0x1F, 0xC3, 0xF1, 0xF8, + 0x1F, 0x1F, 0x01, 0xF1, 0xF0, 0x1F, 0x3E, 0x01, 0xF3, 0xE0, 0x3E, 0x3E, + 0x03, 0xE3, 0xE0, 0x3E, 0x3C, 0x03, 0xE7, 0xC0, 0x3E, 0x7C, 0x07, 0xC7, + 0xC0, 0x7C, 0x7C, 0x07, 0xC7, 0x80, 0x7C, 0xF8, 0x07, 0x80, 0x00, 0xFE, + 0x00, 0x7F, 0xF0, 0x3F, 0xFF, 0x0F, 0xFF, 0xE3, 0xF8, 0xFE, 0x7C, 0x0F, + 0xDF, 0x00, 0xFB, 0xE0, 0x1F, 0xF8, 0x03, 0xFF, 0x00, 0x7F, 0xE0, 0x1F, + 0xFC, 0x03, 0xEF, 0x80, 0x7D, 0xF8, 0x1F, 0x3F, 0x07, 0xE3, 0xFF, 0xF8, + 0x7F, 0xFE, 0x07, 0xFF, 0x00, 0x3F, 0x80, 0x00, 0x03, 0xE7, 0xE0, 0x0F, + 0xBF, 0xC0, 0x7D, 0xFF, 0x81, 0xFF, 0xFE, 0x07, 0xF0, 0xFC, 0x1F, 0x81, + 0xF0, 0x7C, 0x07, 0xC3, 0xE0, 0x1F, 0x0F, 0x80, 0x7C, 0x3E, 0x01, 0xF0, + 0xF0, 0x07, 0xC3, 0xC0, 0x3E, 0x1F, 0x00, 0xF8, 0x7E, 0x07, 0xC1, 0xFC, + 0x7F, 0x07, 0xFF, 0xF8, 0x1F, 0xFF, 0xC0, 0xFB, 0xFE, 0x03, 0xE7, 0xE0, + 0x0F, 0x80, 0x00, 0x3E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x1F, + 0x00, 0x00, 0x7C, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x01, + 0xF1, 0xF0, 0x7F, 0xDF, 0x0F, 0xFD, 0xF1, 0xFF, 0xFE, 0x3F, 0x8F, 0xE3, + 0xE0, 0x7E, 0x7C, 0x03, 0xE7, 0xC0, 0x3E, 0xF8, 0x03, 0xCF, 0x80, 0x3C, + 0xF8, 0x07, 0xCF, 0x80, 0x7C, 0xF8, 0x0F, 0x8F, 0x81, 0xF8, 0xFC, 0x3F, + 0x87, 0xFF, 0xF8, 0x7F, 0xFF, 0x83, 0xFF, 0xF0, 0x1F, 0x9F, 0x00, 0x01, + 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, + 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x0F, 0x8E, 0x1F, 0x7C, 0x3F, + 0xF0, 0xFF, 0xE1, 0xFC, 0x03, 0xF0, 0x07, 0xC0, 0x0F, 0x80, 0x3E, 0x00, + 0x7C, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xE0, 0x0F, 0x80, 0x1F, 0x00, 0x3E, + 0x00, 0x7C, 0x00, 0xF0, 0x03, 0xE0, 0x00, 0x01, 0xFC, 0x01, 0xFF, 0xC0, + 0xFF, 0xF8, 0x7F, 0xFF, 0x3F, 0x0F, 0xCF, 0x81, 0xF3, 0xF0, 0x00, 0xFF, + 0x80, 0x3F, 0xFC, 0x07, 0xFF, 0xC0, 0x7F, 0xF8, 0x03, 0xFE, 0x00, 0x1F, + 0xBE, 0x03, 0xEF, 0xC1, 0xFB, 0xFF, 0xFC, 0x7F, 0xFE, 0x0F, 0xFF, 0x00, + 0xFE, 0x00, 0x0F, 0x81, 0xF0, 0x7C, 0x0F, 0x81, 0xF0, 0xFF, 0xBF, 0xF7, + 0xFE, 0x3E, 0x07, 0xC0, 0xF8, 0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, + 0xF8, 0x1F, 0x03, 0xE0, 0x7F, 0x0F, 0xE1, 0xFC, 0x1F, 0x80, 0x1F, 0x01, + 0xF1, 0xF0, 0x1F, 0x3E, 0x03, 0xE3, 0xE0, 0x3E, 0x3E, 0x03, 0xE3, 0xE0, + 0x3E, 0x3E, 0x03, 0xE7, 0xC0, 0x7C, 0x7C, 0x07, 0xC7, 0xC0, 0x7C, 0x7C, + 0x07, 0xC7, 0xC0, 0x7C, 0xF8, 0x0F, 0x8F, 0x81, 0xF8, 0xF8, 0x3F, 0x8F, + 0xFF, 0xF8, 0xFF, 0xFF, 0x07, 0xFD, 0xF0, 0x3F, 0x1F, 0x00, 0xF8, 0x0F, + 0xFE, 0x03, 0xEF, 0x81, 0xF3, 0xE0, 0x7C, 0xF8, 0x3E, 0x3E, 0x0F, 0x8F, + 0x87, 0xC1, 0xE1, 0xF0, 0x78, 0xF8, 0x1E, 0x3E, 0x07, 0x9F, 0x01, 0xF7, + 0x80, 0x7F, 0xE0, 0x1F, 0xF0, 0x03, 0xFC, 0x00, 0xFE, 0x00, 0x3F, 0x80, + 0x0F, 0xC0, 0x03, 0xF0, 0x00, 0xF8, 0x1F, 0x07, 0xFF, 0x03, 0xE0, 0xFB, + 0xE0, 0xFC, 0x1F, 0x7C, 0x1F, 0x87, 0xCF, 0x87, 0xF0, 0xF9, 0xF0, 0xFE, + 0x3E, 0x3E, 0x3D, 0xC7, 0xC3, 0xC7, 0xB9, 0xF0, 0x79, 0xE7, 0x3E, 0x0F, + 0x3C, 0xE7, 0x81, 0xEF, 0x1D, 0xF0, 0x3D, 0xE3, 0xBC, 0x07, 0xBC, 0x7F, + 0x80, 0xFF, 0x0F, 0xE0, 0x1F, 0xE1, 0xFC, 0x03, 0xF8, 0x3F, 0x00, 0x7F, + 0x07, 0xE0, 0x0F, 0xC0, 0xF8, 0x01, 0xF8, 0x1F, 0x00, 0x00, 0x0F, 0xC1, + 0xF8, 0x3F, 0x07, 0xC0, 0x7C, 0x3E, 0x01, 0xF9, 0xF8, 0x03, 0xEF, 0xC0, + 0x0F, 0xBE, 0x00, 0x1F, 0xF0, 0x00, 0x7F, 0x80, 0x01, 0xFC, 0x00, 0x03, + 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0xFF, 0x00, 0x07, 0xFE, 0x00, 0x3E, 0xF8, + 0x01, 0xFB, 0xF0, 0x07, 0xC7, 0xC0, 0x3E, 0x1F, 0x81, 0xF8, 0x7E, 0x0F, + 0xC0, 0xF8, 0x00, 0x1F, 0x80, 0x7C, 0x3E, 0x03, 0xE0, 0xF8, 0x0F, 0x03, + 0xE0, 0x7C, 0x0F, 0x81, 0xE0, 0x3E, 0x0F, 0x80, 0xF8, 0x3C, 0x03, 0xE1, + 0xF0, 0x07, 0x87, 0x80, 0x1F, 0x3E, 0x00, 0x7C, 0xF0, 0x01, 0xF7, 0xC0, + 0x07, 0xDE, 0x00, 0x1F, 0xF0, 0x00, 0x7F, 0xC0, 0x01, 0xFE, 0x00, 0x03, + 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xE0, + 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x00, 0x01, + 0xF8, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x0F, 0xFF, 0xE1, 0xFF, 0xFC, 0x3F, + 0xFF, 0x87, 0xFF, 0xE0, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x0F, 0xC0, 0x03, + 0xF0, 0x01, 0xFC, 0x00, 0x7E, 0x00, 0x1F, 0x80, 0x07, 0xE0, 0x01, 0xF8, + 0x00, 0x7E, 0x00, 0x1F, 0x80, 0x07, 0xFF, 0xF8, 0xFF, 0xFF, 0x1F, 0xFF, + 0xE3, 0xFF, 0xFC, 0x00, 0x00, 0x7C, 0x03, 0xF0, 0x1F, 0xC0, 0xFE, 0x03, + 0xE0, 0x0F, 0x00, 0x3C, 0x00, 0xF0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x01, + 0xE0, 0x0F, 0x80, 0x3C, 0x01, 0xF0, 0x1F, 0x80, 0x70, 0x01, 0xF8, 0x01, + 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x03, 0xC0, 0x0F, 0x00, 0x3C, 0x00, + 0xF0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x01, 0xFC, 0x07, 0xE0, 0x0F, 0x80, + 0x1E, 0x00, 0x03, 0x81, 0xC0, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0C, 0x0E, + 0x07, 0x03, 0x81, 0xC0, 0xC0, 0xE0, 0x70, 0x38, 0x18, 0x1C, 0x0E, 0x07, + 0x03, 0x81, 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x18, 0x1C, 0x0E, 0x07, 0x01, + 0x80, 0x80, 0x00, 0x00, 0x01, 0xE0, 0x07, 0xC0, 0x1F, 0x80, 0xFE, 0x00, + 0x78, 0x01, 0xE0, 0x07, 0x80, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, + 0x78, 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x7E, 0x00, 0x38, 0x07, 0xE0, + 0x3E, 0x00, 0xF0, 0x07, 0xC0, 0x1E, 0x00, 0x78, 0x01, 0xE0, 0x07, 0x80, + 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x1F, 0x01, 0xF8, 0x0F, 0xE0, 0x3F, 0x00, + 0xF8, 0x00, 0x0F, 0x00, 0x1F, 0xC1, 0xDF, 0xF0, 0xEE, 0x3F, 0xE6, 0x07, + 0xF0, 0x01, 0xE0}; + +const GFXglyph FreeSansBoldOblique18pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 10, 0, 1}, // 0x20 ' ' + {0, 10, 25, 12, 4, -24}, // 0x21 '!' + {32, 13, 9, 17, 6, -25}, // 0x22 '"' + {47, 22, 24, 19, 1, -23}, // 0x23 '#' + {113, 19, 31, 19, 2, -26}, // 0x24 '$' + {187, 26, 26, 31, 5, -25}, // 0x25 '%' + {272, 21, 25, 25, 3, -24}, // 0x26 '&' + {338, 5, 9, 8, 6, -25}, // 0x27 ''' + {344, 13, 33, 12, 3, -25}, // 0x28 '(' + {398, 13, 33, 12, -1, -25}, // 0x29 ')' + {452, 12, 11, 14, 5, -25}, // 0x2A '*' + {469, 18, 16, 20, 3, -15}, // 0x2B '+' + {505, 7, 11, 10, 1, -4}, // 0x2C ',' + {515, 10, 4, 12, 2, -10}, // 0x2D '-' + {520, 6, 5, 10, 2, -4}, // 0x2E '.' + {524, 15, 25, 10, 0, -24}, // 0x2F '/' + {571, 18, 25, 19, 3, -24}, // 0x30 '0' + {628, 13, 25, 19, 6, -24}, // 0x31 '1' + {669, 21, 25, 19, 1, -24}, // 0x32 '2' + {735, 20, 25, 19, 2, -24}, // 0x33 '3' + {798, 19, 25, 19, 2, -24}, // 0x34 '4' + {858, 20, 24, 19, 2, -23}, // 0x35 '5' + {918, 19, 25, 19, 3, -24}, // 0x36 '6' + {978, 19, 24, 19, 5, -23}, // 0x37 '7' + {1035, 20, 25, 19, 2, -24}, // 0x38 '8' + {1098, 19, 25, 19, 2, -24}, // 0x39 '9' + {1158, 9, 18, 12, 4, -17}, // 0x3A ':' + {1179, 10, 24, 12, 3, -17}, // 0x3B ';' + {1209, 19, 17, 20, 3, -16}, // 0x3C '<' + {1250, 20, 12, 20, 2, -13}, // 0x3D '=' + {1280, 19, 17, 20, 1, -15}, // 0x3E '>' + {1321, 18, 26, 21, 6, -25}, // 0x3F '?' + {1380, 33, 31, 34, 3, -25}, // 0x40 '@' + {1508, 23, 26, 25, 1, -25}, // 0x41 'A' + {1583, 24, 26, 25, 3, -25}, // 0x42 'B' + {1661, 24, 26, 25, 4, -25}, // 0x43 'C' + {1739, 24, 26, 25, 3, -25}, // 0x44 'D' + {1817, 24, 26, 23, 3, -25}, // 0x45 'E' + {1895, 23, 26, 21, 3, -25}, // 0x46 'F' + {1970, 24, 26, 27, 4, -25}, // 0x47 'G' + {2048, 26, 26, 25, 2, -25}, // 0x48 'H' + {2133, 10, 26, 10, 2, -25}, // 0x49 'I' + {2166, 20, 26, 19, 2, -25}, // 0x4A 'J' + {2231, 26, 26, 25, 3, -25}, // 0x4B 'K' + {2316, 18, 26, 21, 3, -25}, // 0x4C 'L' + {2375, 31, 26, 29, 2, -25}, // 0x4D 'M' + {2476, 27, 26, 25, 2, -25}, // 0x4E 'N' + {2564, 25, 26, 27, 4, -25}, // 0x4F 'O' + {2646, 23, 26, 23, 3, -25}, // 0x50 'P' + {2721, 25, 27, 27, 4, -25}, // 0x51 'Q' + {2806, 24, 26, 25, 3, -25}, // 0x52 'R' + {2884, 22, 26, 23, 3, -25}, // 0x53 'S' + {2956, 21, 26, 21, 5, -25}, // 0x54 'T' + {3025, 24, 26, 25, 4, -25}, // 0x55 'U' + {3103, 22, 26, 23, 6, -25}, // 0x56 'V' + {3175, 32, 26, 33, 6, -25}, // 0x57 'W' + {3279, 27, 26, 23, 1, -25}, // 0x58 'X' + {3367, 22, 26, 23, 6, -25}, // 0x59 'Y' + {3439, 25, 26, 21, 1, -25}, // 0x5A 'Z' + {3521, 15, 33, 12, 1, -25}, // 0x5B '[' + {3583, 5, 25, 10, 5, -24}, // 0x5C '\' + {3599, 15, 33, 12, -1, -25}, // 0x5D ']' + {3661, 16, 15, 20, 4, -23}, // 0x5E '^' + {3691, 21, 3, 19, -2, 5}, // 0x5F '_' + {3699, 5, 5, 12, 6, -25}, // 0x60 '`' + {3703, 18, 19, 19, 2, -18}, // 0x61 'a' + {3746, 20, 26, 21, 2, -25}, // 0x62 'b' + {3811, 18, 19, 19, 3, -18}, // 0x63 'c' + {3854, 22, 26, 21, 3, -25}, // 0x64 'd' + {3926, 19, 19, 19, 2, -18}, // 0x65 'e' + {3972, 13, 26, 12, 3, -25}, // 0x66 'f' + {4015, 22, 27, 21, 1, -18}, // 0x67 'g' + {4090, 20, 26, 21, 2, -25}, // 0x68 'h' + {4155, 10, 26, 10, 2, -25}, // 0x69 'i' + {4188, 15, 34, 10, -2, -25}, // 0x6A 'j' + {4252, 21, 26, 19, 2, -25}, // 0x6B 'k' + {4321, 10, 26, 10, 2, -25}, // 0x6C 'l' + {4354, 30, 19, 31, 2, -18}, // 0x6D 'm' + {4426, 20, 19, 21, 2, -18}, // 0x6E 'n' + {4474, 19, 19, 21, 3, -18}, // 0x6F 'o' + {4520, 22, 27, 21, 0, -18}, // 0x70 'p' + {4595, 20, 27, 21, 3, -18}, // 0x71 'q' + {4663, 15, 19, 14, 2, -18}, // 0x72 'r' + {4699, 18, 19, 19, 2, -18}, // 0x73 's' + {4742, 11, 23, 12, 4, -22}, // 0x74 't' + {4774, 20, 19, 21, 3, -18}, // 0x75 'u' + {4822, 18, 19, 19, 5, -18}, // 0x76 'v' + {4865, 27, 19, 27, 4, -18}, // 0x77 'w' + {4930, 22, 19, 19, 1, -18}, // 0x78 'x' + {4983, 22, 27, 19, 1, -18}, // 0x79 'y' + {5058, 19, 19, 17, 1, -18}, // 0x7A 'z' + {5104, 14, 33, 14, 2, -25}, // 0x7B '{' + {5162, 9, 33, 10, 2, -25}, // 0x7C '|' + {5200, 14, 33, 14, 2, -25}, // 0x7D '}' + {5258, 17, 6, 20, 3, -10}}; // 0x7E '~' + +const GFXfont FreeSansBoldOblique18pt7b PROGMEM = { + (uint8_t *)FreeSansBoldOblique18pt7bBitmaps, + (GFXglyph *)FreeSansBoldOblique18pt7bGlyphs, 0x20, 0x7E, 42}; + +// Approx. 5943 bytes diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBoldOblique24pt7b.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBoldOblique24pt7b.h new file mode 100644 index 0000000..a20229d --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBoldOblique24pt7b.h @@ -0,0 +1,895 @@ +#pragma once +#include + +const uint8_t FreeSansBoldOblique24pt7bBitmaps[] PROGMEM = { + 0x01, 0xE0, 0x07, 0xF0, 0x1F, 0xC0, 0xFF, 0x03, 0xF8, 0x0F, 0xE0, 0x3F, + 0x80, 0xFE, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xE0, 0x1F, + 0x80, 0x7E, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0xF8, 0x03, 0xE0, 0x0F, + 0x80, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x1F, + 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0xFE, 0x03, 0xF8, 0x00, + 0x7E, 0x0F, 0xDF, 0x83, 0xF7, 0xE0, 0xFF, 0xF0, 0x7E, 0xFC, 0x1F, 0xBF, + 0x07, 0xEF, 0xC1, 0xFB, 0xE0, 0x7C, 0xF8, 0x1F, 0x3C, 0x07, 0x8F, 0x01, + 0xE3, 0x80, 0x70, 0x00, 0x07, 0xC1, 0xF0, 0x00, 0x3E, 0x0F, 0x80, 0x03, + 0xE0, 0xF8, 0x00, 0x1F, 0x07, 0xC0, 0x01, 0xF0, 0x7C, 0x00, 0x0F, 0x83, + 0xE0, 0x00, 0xF8, 0x3E, 0x00, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xF8, + 0x7F, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xFC, 0x1F, 0xFF, 0xFF, 0xE0, 0x0F, + 0x83, 0xE0, 0x00, 0x7C, 0x3E, 0x00, 0x07, 0xC1, 0xF0, 0x00, 0x3E, 0x0F, + 0x80, 0x03, 0xE0, 0xF8, 0x00, 0x1F, 0x07, 0xC0, 0x00, 0xF8, 0x7C, 0x00, + 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xF8, 0x7F, 0xFF, 0xFF, 0x83, 0xFF, + 0xFF, 0xFC, 0x1F, 0xFF, 0xFF, 0xE0, 0x1F, 0x07, 0xC0, 0x00, 0xF8, 0x3E, + 0x00, 0x0F, 0x83, 0xE0, 0x00, 0x7C, 0x1F, 0x00, 0x07, 0xC1, 0xF0, 0x00, + 0x3E, 0x0F, 0x80, 0x01, 0xF0, 0xF8, 0x00, 0x1F, 0x07, 0xC0, 0x00, 0xF8, + 0x3C, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0E, + 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x7F, 0xFF, 0x00, 0x3F, 0xFF, 0xE0, 0x1F, + 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, 0x07, 0xF3, 0x9F, 0xC1, 0xF8, 0xE3, 0xF0, + 0x7C, 0x38, 0xFC, 0x3F, 0x0E, 0x3F, 0x0F, 0xC7, 0x8F, 0xC3, 0xF1, 0xC0, + 0x00, 0xFE, 0x70, 0x00, 0x3F, 0xDC, 0x00, 0x0F, 0xFF, 0x00, 0x01, 0xFF, + 0xE0, 0x00, 0x3F, 0xFE, 0x00, 0x0F, 0xFF, 0xE0, 0x00, 0xFF, 0xFC, 0x00, + 0x0F, 0xFF, 0x00, 0x01, 0xFF, 0xE0, 0x00, 0x77, 0xF8, 0x00, 0x1C, 0xFE, + 0x00, 0x07, 0x3F, 0x8F, 0xE3, 0xCF, 0xE3, 0xF8, 0xE3, 0xF8, 0xFE, 0x38, + 0xFC, 0x3F, 0x8E, 0x7F, 0x0F, 0xF3, 0x9F, 0xC3, 0xFD, 0xFF, 0xE0, 0x7F, + 0xFF, 0xF0, 0x1F, 0xFF, 0xFC, 0x03, 0xFF, 0xFC, 0x00, 0x7F, 0xFE, 0x00, + 0x03, 0xFC, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x03, 0x80, + 0x00, 0x01, 0xE0, 0x00, 0x00, 0x70, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x07, + 0x80, 0x7F, 0xE0, 0x00, 0xF0, 0x0F, 0xFF, 0x00, 0x1E, 0x01, 0xFF, 0xF0, + 0x01, 0xC0, 0x3F, 0xFF, 0x80, 0x3C, 0x07, 0xE1, 0xF8, 0x07, 0x80, 0x78, + 0x07, 0x80, 0xF0, 0x0F, 0x80, 0x78, 0x0E, 0x00, 0xF0, 0x07, 0x81, 0xC0, + 0x0F, 0x00, 0xF8, 0x3C, 0x00, 0xF0, 0x0F, 0x07, 0x80, 0x0F, 0xC3, 0xF0, + 0xF0, 0x00, 0xFF, 0xFE, 0x0E, 0x00, 0x07, 0xFF, 0xC1, 0xE0, 0x00, 0x7F, + 0xF8, 0x3C, 0x00, 0x03, 0xFF, 0x07, 0x80, 0x00, 0x0F, 0xC0, 0x70, 0x00, + 0x00, 0x00, 0x0E, 0x03, 0xF0, 0x00, 0x01, 0xE0, 0xFF, 0xC0, 0x00, 0x3C, + 0x1F, 0xFE, 0x00, 0x03, 0x83, 0xFF, 0xE0, 0x00, 0x70, 0x7F, 0xFF, 0x00, + 0x0F, 0x0F, 0xC3, 0xF0, 0x01, 0xE0, 0xF0, 0x0F, 0x00, 0x3C, 0x1F, 0x00, + 0xF0, 0x03, 0x81, 0xE0, 0x0F, 0x00, 0x78, 0x1E, 0x01, 0xF0, 0x0F, 0x01, + 0xE0, 0x1E, 0x01, 0xE0, 0x1F, 0x87, 0xE0, 0x1C, 0x01, 0xFF, 0xFC, 0x03, + 0x80, 0x0F, 0xFF, 0x80, 0x78, 0x00, 0xFF, 0xF0, 0x0F, 0x00, 0x07, 0xFE, + 0x01, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x3F, 0xF0, + 0x00, 0x07, 0xFF, 0xC0, 0x00, 0x7F, 0xFF, 0x00, 0x03, 0xFF, 0xF8, 0x00, + 0x3F, 0x9F, 0xC0, 0x03, 0xF8, 0x7E, 0x00, 0x1F, 0xC3, 0xF0, 0x00, 0xFE, + 0x1F, 0x00, 0x07, 0xF1, 0xF8, 0x00, 0x3F, 0xCF, 0xC0, 0x01, 0xFE, 0xFC, + 0x00, 0x07, 0xFF, 0xC0, 0x00, 0x3F, 0xFC, 0x00, 0x00, 0xFF, 0xC0, 0x00, + 0x07, 0xF8, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x1F, 0xFF, 0x07, 0xC1, 0xFF, + 0xF8, 0x3E, 0x3F, 0xFF, 0xE3, 0xE3, 0xFE, 0x3F, 0x1F, 0x1F, 0xC1, 0xFD, + 0xF1, 0xFC, 0x07, 0xFF, 0x8F, 0xC0, 0x3F, 0xF8, 0xFE, 0x00, 0xFF, 0xC7, + 0xF0, 0x07, 0xFC, 0x3F, 0x80, 0x1F, 0xC1, 0xFC, 0x00, 0xFE, 0x0F, 0xF0, + 0x1F, 0xF8, 0x7F, 0xC1, 0xFF, 0xC1, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, + 0xFC, 0x3F, 0xFF, 0xCF, 0xE0, 0x7F, 0xF8, 0x7F, 0x80, 0xFF, 0x00, 0x00, + 0x7E, 0xFD, 0xFF, 0xEF, 0xDF, 0xBF, 0x7C, 0xF9, 0xE3, 0xC7, 0x00, 0x00, + 0x0F, 0x80, 0x0F, 0x80, 0x0F, 0x80, 0x0F, 0xC0, 0x07, 0xC0, 0x07, 0xC0, + 0x07, 0xE0, 0x03, 0xE0, 0x03, 0xE0, 0x03, 0xF0, 0x01, 0xF0, 0x01, 0xF8, + 0x00, 0xF8, 0x00, 0xFC, 0x00, 0x7C, 0x00, 0x7E, 0x00, 0x3E, 0x00, 0x1F, + 0x00, 0x1F, 0x80, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x03, 0xF0, 0x01, + 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, + 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x1E, + 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0x7C, 0x00, + 0x3E, 0x00, 0x1F, 0x00, 0x07, 0x80, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, + 0x1E, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x00, 0xF0, 0x00, 0x7C, + 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x07, 0x80, 0x03, 0xE0, 0x01, 0xF0, 0x00, + 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, + 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, + 0x00, 0x1F, 0x00, 0x1F, 0x80, 0x0F, 0x80, 0x07, 0xC0, 0x07, 0xE0, 0x03, + 0xE0, 0x03, 0xF0, 0x01, 0xF0, 0x01, 0xF8, 0x00, 0xF8, 0x00, 0xFC, 0x00, + 0x7C, 0x00, 0x7C, 0x00, 0x7E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3F, 0x00, + 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x00, 0x01, 0xE0, 0x03, 0x80, 0x07, + 0x00, 0x0E, 0x07, 0x3C, 0x6F, 0xFF, 0xFF, 0xFF, 0xBF, 0xFE, 0x0F, 0xE0, + 0x1F, 0xC0, 0x7F, 0x81, 0xEF, 0x87, 0x8F, 0x0E, 0x1E, 0x08, 0x10, 0x00, + 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x00, + 0x00, 0x1F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, + 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFE, + 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0x00, 0xFC, 0x00, 0x00, 0xFC, 0x00, + 0x00, 0xFC, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF8, 0x00, + 0x01, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x1F, 0xC7, 0xF1, 0xF8, 0xFE, 0x3F, + 0x8F, 0xE0, 0x38, 0x1C, 0x07, 0x03, 0xC0, 0xE0, 0xF0, 0xFC, 0x3C, 0x0C, + 0x00, 0x7F, 0xFD, 0xFF, 0xF7, 0xFF, 0x9F, 0xFE, 0xFF, 0xFB, 0xFF, 0xE0, + 0x7F, 0x7F, 0x7F, 0x7E, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x70, 0x00, 0x0E, + 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x03, + 0x80, 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 0x01, + 0xC0, 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x07, 0x00, 0x00, + 0x70, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, + 0x38, 0x00, 0x03, 0x80, 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, + 0x0E, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, + 0x07, 0x00, 0x00, 0x70, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0F, 0xE0, 0x00, + 0x1F, 0xFC, 0x00, 0x3F, 0xFF, 0x80, 0x3F, 0xFF, 0xC0, 0x3F, 0xFF, 0xF0, + 0x1F, 0xC7, 0xF8, 0x1F, 0xC1, 0xFE, 0x1F, 0xC0, 0x7F, 0x0F, 0xC0, 0x3F, + 0x8F, 0xE0, 0x1F, 0xC7, 0xF0, 0x0F, 0xE3, 0xF0, 0x07, 0xF3, 0xF8, 0x03, + 0xF9, 0xFC, 0x01, 0xFC, 0xFC, 0x01, 0xFE, 0xFE, 0x00, 0xFE, 0x7F, 0x00, + 0x7F, 0x3F, 0x80, 0x3F, 0x9F, 0xC0, 0x1F, 0xCF, 0xE0, 0x1F, 0xEF, 0xE0, + 0x0F, 0xE7, 0xF0, 0x07, 0xF3, 0xF8, 0x03, 0xF9, 0xFC, 0x03, 0xF8, 0xFE, + 0x01, 0xFC, 0x7F, 0x00, 0xFE, 0x3F, 0x80, 0xFE, 0x1F, 0xE0, 0x7F, 0x0F, + 0xF8, 0xFF, 0x03, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0x80, + 0x1F, 0xFF, 0x00, 0x07, 0xFF, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x0F, + 0x80, 0x0F, 0x80, 0x07, 0xC0, 0x07, 0xE0, 0x0F, 0xF0, 0x3F, 0xF9, 0xFF, + 0xF8, 0xFF, 0xFC, 0xFF, 0xFE, 0x7F, 0xFF, 0x00, 0x3F, 0x80, 0x1F, 0x80, + 0x0F, 0xC0, 0x0F, 0xE0, 0x07, 0xF0, 0x03, 0xF8, 0x01, 0xF8, 0x01, 0xFC, + 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x3F, 0x00, 0x1F, 0x80, 0x1F, 0xC0, 0x0F, + 0xE0, 0x07, 0xF0, 0x03, 0xF0, 0x01, 0xF8, 0x01, 0xFC, 0x00, 0xFE, 0x00, + 0x7F, 0x00, 0x3F, 0x00, 0x3F, 0x80, 0x1F, 0xC0, 0x00, 0x00, 0x01, 0xFE, + 0x00, 0x00, 0x7F, 0xFC, 0x00, 0x0F, 0xFF, 0xF8, 0x00, 0xFF, 0xFF, 0xE0, + 0x0F, 0xFF, 0xFF, 0x00, 0xFF, 0x07, 0xFC, 0x07, 0xF0, 0x1F, 0xE0, 0x7F, + 0x00, 0x7F, 0x03, 0xF0, 0x03, 0xF8, 0x1F, 0x80, 0x1F, 0xC1, 0xF8, 0x00, + 0xFE, 0x0F, 0xC0, 0x0F, 0xE0, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x07, 0xF0, + 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x7F, 0x80, 0x00, + 0x07, 0xF8, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x1F, 0xF8, 0x00, 0x01, 0xFF, + 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x7F, 0xC0, 0x00, + 0x07, 0xFC, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x7F, + 0x80, 0x00, 0x03, 0xFF, 0xFF, 0xF0, 0x3F, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, + 0xFC, 0x1F, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xF0, + 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x0F, 0xFF, 0x80, 0x0F, 0xFF, 0xF0, 0x07, + 0xFF, 0xFE, 0x03, 0xFF, 0xFF, 0xC0, 0xFE, 0x1F, 0xF0, 0x7F, 0x01, 0xFC, + 0x1F, 0x80, 0x7F, 0x07, 0xE0, 0x1F, 0xC3, 0xF0, 0x07, 0xF0, 0xFC, 0x01, + 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x80, 0x01, + 0xFF, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x07, 0xFF, 0x80, + 0x01, 0xFF, 0xE0, 0x00, 0x07, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x1F, + 0xC0, 0x00, 0x07, 0xF0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x7F, 0x3F, 0x80, + 0x3F, 0xCF, 0xE0, 0x0F, 0xE3, 0xF8, 0x07, 0xF8, 0xFF, 0x83, 0xFC, 0x3F, + 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, 0xE0, + 0x03, 0xFF, 0xE0, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0x00, 0x7F, 0x80, 0x00, + 0x7F, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x7F, 0xE0, 0x00, 0x3F, 0xF0, 0x00, + 0x3F, 0xF8, 0x00, 0x3D, 0xFC, 0x00, 0x3C, 0xFE, 0x00, 0x3E, 0x7E, 0x00, + 0x3E, 0x7F, 0x00, 0x1E, 0x3F, 0x80, 0x1E, 0x1F, 0xC0, 0x1E, 0x0F, 0xC0, + 0x1F, 0x07, 0xE0, 0x1F, 0x07, 0xF0, 0x1F, 0x03, 0xF8, 0x1F, 0x01, 0xFC, + 0x0F, 0x80, 0xFC, 0x0F, 0x80, 0xFE, 0x0F, 0x80, 0x7F, 0x07, 0xFF, 0xFF, + 0xF7, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, + 0xFE, 0x00, 0x03, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x00, + 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x1F, 0x80, 0x00, + 0x7F, 0xFF, 0xE0, 0x0F, 0xFF, 0xFC, 0x01, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, + 0xF0, 0x0F, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0x80, 0x7C, 0x00, 0x00, 0x0F, + 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x0F, 0x80, 0x00, + 0x03, 0xE3, 0xF0, 0x00, 0x7F, 0xFF, 0x80, 0x1F, 0xFF, 0xF8, 0x03, 0xFF, + 0xFF, 0x80, 0x7F, 0xFF, 0xF0, 0x1F, 0xE1, 0xFF, 0x03, 0xF0, 0x1F, 0xE0, + 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, + 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x07, 0xF0, 0xFE, 0x00, 0xFE, 0x1F, + 0xC0, 0x3F, 0x83, 0xF8, 0x07, 0xF0, 0x7F, 0x83, 0xFC, 0x0F, 0xFF, 0xFF, + 0x80, 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xF8, 0x01, 0xFF, 0xFE, 0x00, 0x0F, + 0xFF, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xFE, + 0x00, 0x1F, 0xFF, 0x80, 0x1F, 0xFF, 0xE0, 0x1F, 0xFF, 0xF8, 0x1F, 0xC3, + 0xFC, 0x1F, 0x80, 0xFE, 0x0F, 0xC0, 0x3F, 0x0F, 0xC0, 0x00, 0x07, 0xE0, + 0x00, 0x07, 0xE0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF8, 0xFC, 0x01, 0xF9, + 0xFF, 0x80, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xF8, 0x7F, 0xFF, 0xFC, 0x3F, + 0xE1, 0xFF, 0x1F, 0xE0, 0x7F, 0x8F, 0xE0, 0x1F, 0xCF, 0xE0, 0x0F, 0xE7, + 0xF0, 0x07, 0xF3, 0xF0, 0x03, 0xF9, 0xF8, 0x01, 0xF8, 0xFC, 0x01, 0xFC, + 0x7E, 0x00, 0xFE, 0x3F, 0x00, 0xFE, 0x1F, 0xC0, 0xFF, 0x0F, 0xF0, 0xFF, + 0x03, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x1F, 0xFF, + 0x80, 0x07, 0xFF, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xCF, + 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, + 0x9F, 0xFF, 0xFF, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0x01, + 0xFC, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0x80, 0x00, + 0x1F, 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x03, 0xF0, 0x00, 0x01, 0xF8, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x0F, 0xE0, + 0x00, 0x03, 0xF0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3F, + 0x80, 0x00, 0x0F, 0xC0, 0x00, 0x07, 0xF0, 0x00, 0x01, 0xF8, 0x00, 0x00, + 0xFE, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x07, 0xF0, 0x00, + 0x01, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, + 0x0F, 0xFF, 0x80, 0x07, 0xFF, 0xF0, 0x03, 0xFF, 0xFE, 0x01, 0xFF, 0xFF, + 0xC0, 0xFE, 0x0F, 0xF0, 0x3E, 0x01, 0xFC, 0x1F, 0x80, 0x3F, 0x07, 0xC0, + 0x0F, 0xC1, 0xF0, 0x03, 0xF0, 0x7C, 0x01, 0xF8, 0x1F, 0x00, 0xFC, 0x03, + 0xF0, 0x7F, 0x00, 0xFF, 0xFF, 0x00, 0x1F, 0xFF, 0x80, 0x07, 0xFF, 0xE0, + 0x07, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0x81, 0xFE, 0x1F, 0xE0, 0xFE, 0x03, + 0xFC, 0x3F, 0x00, 0x7F, 0x1F, 0xC0, 0x1F, 0xC7, 0xE0, 0x07, 0xF3, 0xF8, + 0x01, 0xFC, 0xFE, 0x00, 0x7F, 0x3F, 0x80, 0x3F, 0x8F, 0xE0, 0x0F, 0xE3, + 0xFC, 0x07, 0xF0, 0xFF, 0x87, 0xFC, 0x3F, 0xFF, 0xFE, 0x07, 0xFF, 0xFF, + 0x00, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, 0xC0, 0x03, 0xFF, 0xE0, 0x00, 0x3F, + 0xC0, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x3F, 0xFF, 0x00, + 0x3F, 0xFF, 0xC0, 0x3F, 0xFF, 0xF0, 0x3F, 0xC3, 0xF8, 0x3F, 0xC0, 0xFE, + 0x1F, 0xC0, 0x3F, 0x1F, 0xC0, 0x1F, 0x8F, 0xE0, 0x0F, 0xC7, 0xE0, 0x07, + 0xE7, 0xF0, 0x03, 0xF3, 0xF8, 0x01, 0xF9, 0xFC, 0x01, 0xFC, 0xFE, 0x00, + 0xFE, 0x7F, 0x00, 0xFE, 0x3F, 0xC0, 0xFF, 0x1F, 0xF0, 0xFF, 0x87, 0xFF, + 0xFF, 0xC3, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xE0, 0x3F, 0xF3, 0xF0, 0x07, + 0xE3, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xFC, 0x00, + 0x00, 0x7E, 0x1F, 0xC0, 0x7E, 0x0F, 0xF0, 0xFF, 0x07, 0xFF, 0xFF, 0x01, + 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x3F, 0xFF, 0x00, 0x0F, 0xFF, 0x00, + 0x01, 0xFC, 0x00, 0x00, 0x07, 0xF0, 0x7F, 0x07, 0xF0, 0x7E, 0x0F, 0xE0, + 0xFE, 0x0F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x07, 0xF0, 0x7F, 0x07, + 0xE0, 0xFE, 0x0F, 0xE0, 0xFE, 0x00, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, + 0x7E, 0x03, 0xF8, 0x0F, 0xE0, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0x80, 0xFE, 0x03, 0xF8, 0x0F, 0xE0, + 0x03, 0x80, 0x1C, 0x00, 0x70, 0x03, 0xC0, 0x0E, 0x00, 0xF0, 0x0F, 0xC0, + 0x3C, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0xE0, 0x00, + 0x01, 0xF8, 0x00, 0x03, 0xFE, 0x00, 0x07, 0xFF, 0x80, 0x0F, 0xFF, 0xE0, + 0x1F, 0xFF, 0xF0, 0x1F, 0xFF, 0xE0, 0x3F, 0xFF, 0xC0, 0x1F, 0xFF, 0x80, + 0x0F, 0xFF, 0x00, 0x03, 0xFE, 0x00, 0x00, 0xFF, 0xE0, 0x00, 0x3F, 0xFE, + 0x00, 0x0F, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0x80, 0x07, 0xFF, 0xF8, 0x00, + 0x7F, 0xFF, 0x00, 0x03, 0xFF, 0xC0, 0x00, 0x3F, 0xF0, 0x00, 0x01, 0xF8, + 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x80, 0x1F, 0xFF, 0xFF, 0xC7, 0xFF, + 0xFF, 0xF1, 0xFF, 0xFF, 0xFC, 0x7F, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0x8F, + 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, + 0xFF, 0x1F, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0xF8, 0xFF, + 0xFF, 0xFE, 0x3F, 0xFF, 0xFF, 0x80, 0x04, 0x00, 0x00, 0x01, 0xE0, 0x00, + 0x00, 0x7E, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x0F, 0xFF, 0x00, 0x03, 0xFF, + 0xF8, 0x00, 0x7F, 0xFF, 0x80, 0x07, 0xFF, 0xFC, 0x00, 0x3F, 0xFF, 0xC0, + 0x01, 0xFF, 0xF0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0xFF, 0x00, 0x03, 0xFF, + 0xC0, 0x07, 0xFF, 0xE0, 0x0F, 0xFF, 0xF0, 0x1F, 0xFF, 0xE0, 0x3F, 0xFF, + 0xE0, 0x1F, 0xFF, 0xC0, 0x07, 0xFF, 0x80, 0x01, 0xFF, 0x00, 0x00, 0x7E, + 0x00, 0x00, 0x1C, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, + 0x01, 0xFF, 0xF0, 0x07, 0xFF, 0xF8, 0x0F, 0xFF, 0xFC, 0x1F, 0xFF, 0xFE, + 0x1F, 0xFF, 0xFE, 0x3F, 0xC1, 0xFF, 0x3F, 0x80, 0xFF, 0x7F, 0x00, 0x7F, + 0x7E, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0x00, 0x00, 0xFE, + 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFC, 0x00, 0x0F, 0xF8, + 0x00, 0x1F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0x7F, 0x80, 0x00, 0xFE, 0x00, + 0x01, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xE0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xE0, 0x00, + 0x0F, 0xE0, 0x00, 0x0F, 0xE0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, + 0x1F, 0xC0, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xC0, 0x00, + 0x00, 0x00, 0x7F, 0xFF, 0xC0, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0x80, 0x00, + 0x01, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x3F, 0xE0, 0x1F, 0xF8, 0x00, 0x07, + 0xF8, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0x80, 0x07, 0xE0, + 0x00, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0x00, 0x03, 0xF0, 0x0F, 0xC0, 0x00, + 0x00, 0x0F, 0x80, 0xFC, 0x00, 0x00, 0x00, 0x3E, 0x07, 0xC0, 0x03, 0xF1, + 0xF1, 0xF0, 0x7C, 0x00, 0xFF, 0xCF, 0x07, 0x87, 0xE0, 0x1F, 0xFF, 0xF8, + 0x3C, 0x7E, 0x01, 0xF8, 0x7F, 0x81, 0xE3, 0xE0, 0x1F, 0x01, 0xF8, 0x0F, + 0x3E, 0x01, 0xF0, 0x0F, 0xC0, 0x79, 0xF0, 0x1F, 0x00, 0x7C, 0x03, 0xDF, + 0x00, 0xF0, 0x03, 0xE0, 0x1C, 0xF8, 0x0F, 0x80, 0x1E, 0x01, 0xE7, 0xC0, + 0x78, 0x00, 0xF0, 0x0F, 0x3C, 0x07, 0xC0, 0x0F, 0x00, 0xF3, 0xE0, 0x3C, + 0x00, 0x78, 0x07, 0x9F, 0x03, 0xE0, 0x07, 0x80, 0x78, 0xF8, 0x1F, 0x00, + 0x7C, 0x07, 0xC7, 0xC0, 0xF8, 0x07, 0xC0, 0x7C, 0x3E, 0x07, 0xC0, 0x7E, + 0x07, 0xC1, 0xF0, 0x3F, 0x07, 0xF8, 0xFC, 0x0F, 0x81, 0xFF, 0xFF, 0xFF, + 0xC0, 0x7E, 0x07, 0xFF, 0xBF, 0xFC, 0x01, 0xF0, 0x1F, 0xF8, 0xFF, 0x80, + 0x0F, 0xC0, 0x7E, 0x03, 0xF0, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x01, + 0xFC, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, + 0xE0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xE0, 0x03, 0x80, 0x00, 0x01, 0xFF, + 0xFF, 0xFE, 0x00, 0x00, 0x07, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x0F, 0xFF, + 0xFE, 0x00, 0x00, 0x00, 0x07, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, + 0xF0, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x7F, + 0xF0, 0x00, 0x00, 0x7F, 0xF0, 0x00, 0x00, 0xFF, 0xF0, 0x00, 0x00, 0xFF, + 0xF0, 0x00, 0x01, 0xFF, 0xF0, 0x00, 0x03, 0xFF, 0xF8, 0x00, 0x03, 0xFB, + 0xF8, 0x00, 0x07, 0xF3, 0xF8, 0x00, 0x07, 0xE3, 0xF8, 0x00, 0x0F, 0xE3, + 0xF8, 0x00, 0x0F, 0xC3, 0xF8, 0x00, 0x1F, 0xC3, 0xF8, 0x00, 0x1F, 0x83, + 0xF8, 0x00, 0x3F, 0x81, 0xFC, 0x00, 0x7F, 0x01, 0xFC, 0x00, 0x7F, 0x01, + 0xFC, 0x00, 0xFE, 0x01, 0xFC, 0x00, 0xFC, 0x01, 0xFC, 0x01, 0xFF, 0xFF, + 0xFC, 0x01, 0xFF, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0xFE, 0x07, 0xFF, 0xFF, + 0xFE, 0x07, 0xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0xFE, 0x0F, 0xE0, 0x00, + 0xFE, 0x1F, 0xC0, 0x00, 0xFE, 0x1F, 0xC0, 0x00, 0xFE, 0x3F, 0x80, 0x00, + 0xFE, 0x3F, 0x80, 0x00, 0x7F, 0x7F, 0x00, 0x00, 0x7F, 0xFF, 0x00, 0x00, + 0x7F, 0x01, 0xFF, 0xFF, 0xC0, 0x01, 0xFF, 0xFF, 0xF8, 0x01, 0xFF, 0xFF, + 0xFC, 0x03, 0xFF, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, + 0xFF, 0x03, 0xF8, 0x00, 0xFF, 0x03, 0xF8, 0x00, 0x7F, 0x07, 0xF0, 0x00, + 0x7F, 0x07, 0xF0, 0x00, 0x7F, 0x07, 0xF0, 0x00, 0x7E, 0x07, 0xF0, 0x00, + 0xFE, 0x0F, 0xF0, 0x03, 0xFC, 0x0F, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, + 0xF0, 0x0F, 0xFF, 0xFF, 0xE0, 0x0F, 0xFF, 0xFF, 0xF0, 0x1F, 0xFF, 0xFF, + 0xF8, 0x1F, 0xFF, 0xFF, 0xF8, 0x1F, 0xC0, 0x07, 0xFC, 0x1F, 0xC0, 0x01, + 0xFC, 0x1F, 0xC0, 0x01, 0xFC, 0x3F, 0x80, 0x01, 0xFC, 0x3F, 0x80, 0x01, + 0xFC, 0x3F, 0x80, 0x01, 0xFC, 0x3F, 0x80, 0x03, 0xF8, 0x7F, 0x00, 0x07, + 0xF8, 0x7F, 0x00, 0x0F, 0xF0, 0x7F, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xFF, + 0xE0, 0x7F, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFE, + 0x00, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x07, 0xFF, + 0xE0, 0x00, 0x1F, 0xFF, 0xF0, 0x00, 0x7F, 0xFF, 0xF8, 0x00, 0xFF, 0xFF, + 0xFC, 0x01, 0xFF, 0xFF, 0xFE, 0x03, 0xFF, 0x03, 0xFE, 0x07, 0xFC, 0x01, + 0xFF, 0x0F, 0xF0, 0x00, 0xFF, 0x0F, 0xE0, 0x00, 0x7F, 0x1F, 0xE0, 0x00, + 0x7F, 0x1F, 0xC0, 0x00, 0x7F, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, + 0x00, 0x7F, 0x80, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, + 0x00, 0x7F, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xF8, 0xFE, 0x00, 0x03, + 0xF8, 0xFF, 0x00, 0x07, 0xF8, 0xFF, 0x00, 0x07, 0xF0, 0x7F, 0x80, 0x1F, + 0xF0, 0x7F, 0xE0, 0x7F, 0xE0, 0x3F, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, 0xFF, + 0x80, 0x1F, 0xFF, 0xFF, 0x00, 0x0F, 0xFF, 0xFE, 0x00, 0x03, 0xFF, 0xF8, + 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x01, 0xFF, 0xFF, + 0xE0, 0x03, 0xFF, 0xFF, 0xF8, 0x03, 0xFF, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, + 0xFC, 0x03, 0xFF, 0xFF, 0xFE, 0x03, 0xF8, 0x03, 0xFE, 0x07, 0xF0, 0x01, + 0xFF, 0x07, 0xF0, 0x00, 0xFF, 0x07, 0xF0, 0x00, 0x7F, 0x07, 0xF0, 0x00, + 0x7F, 0x0F, 0xF0, 0x00, 0x7F, 0x0F, 0xE0, 0x00, 0x7F, 0x0F, 0xE0, 0x00, + 0x7F, 0x0F, 0xE0, 0x00, 0x7F, 0x0F, 0xE0, 0x00, 0x7F, 0x1F, 0xC0, 0x00, + 0x7F, 0x1F, 0xC0, 0x00, 0xFE, 0x1F, 0xC0, 0x00, 0xFE, 0x1F, 0xC0, 0x00, + 0xFE, 0x1F, 0xC0, 0x01, 0xFE, 0x3F, 0x80, 0x01, 0xFC, 0x3F, 0x80, 0x01, + 0xFC, 0x3F, 0x80, 0x03, 0xF8, 0x3F, 0x80, 0x07, 0xF8, 0x7F, 0x00, 0x0F, + 0xF0, 0x7F, 0x00, 0x1F, 0xF0, 0x7F, 0x00, 0x7F, 0xE0, 0x7F, 0xFF, 0xFF, + 0xC0, 0x7F, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFE, + 0x00, 0xFF, 0xFF, 0xF8, 0x00, 0xFF, 0xFF, 0x80, 0x00, 0x01, 0xFF, 0xFF, + 0xFF, 0x01, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, + 0xFE, 0x03, 0xFF, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, 0xFE, 0x03, 0xF8, 0x00, + 0x00, 0x07, 0xF0, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x07, 0xF0, 0x00, + 0x00, 0x07, 0xF0, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x0F, 0xE0, 0x00, + 0x00, 0x0F, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xE0, 0x0F, 0xFF, 0xFF, + 0xE0, 0x1F, 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xFF, + 0xE0, 0x1F, 0xC0, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, + 0x00, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, + 0x00, 0x3F, 0x80, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, + 0x00, 0x7F, 0xFF, 0xFF, 0xC0, 0x7F, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, + 0xC0, 0xFF, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, + 0x80, 0x00, 0xFF, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, + 0xFE, 0x01, 0xFF, 0xFF, 0xFE, 0x01, 0xFF, 0xFF, 0xFE, 0x01, 0xFF, 0xFF, + 0xFE, 0x03, 0xF8, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x03, 0xF8, 0x00, + 0x00, 0x03, 0xF8, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x07, 0xF0, 0x00, + 0x00, 0x07, 0xF0, 0x00, 0x00, 0x07, 0xFF, 0xFF, 0xE0, 0x07, 0xFF, 0xFF, + 0xE0, 0x0F, 0xFF, 0xFF, 0xE0, 0x0F, 0xFF, 0xFF, 0xC0, 0x0F, 0xFF, 0xFF, + 0xC0, 0x0F, 0xFF, 0xFF, 0xC0, 0x0F, 0xE0, 0x00, 0x00, 0x1F, 0xC0, 0x00, + 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x1F, 0xC0, 0x00, + 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, + 0x00, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x7F, 0x00, 0x00, + 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, + 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x03, 0xFF, + 0xF8, 0x00, 0x07, 0xFF, 0xFE, 0x00, 0x0F, 0xFF, 0xFF, 0x80, 0x0F, 0xFF, + 0xFF, 0xE0, 0x0F, 0xFF, 0xFF, 0xF8, 0x0F, 0xFC, 0x07, 0xFC, 0x0F, 0xF8, + 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0x3F, 0x87, 0xF0, 0x00, 0x1F, 0xC7, 0xF0, + 0x00, 0x0F, 0xE3, 0xF8, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x01, 0xFC, + 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x7F, + 0x00, 0x3F, 0xFF, 0x3F, 0x00, 0x1F, 0xFF, 0xBF, 0x80, 0x0F, 0xFF, 0x9F, + 0xC0, 0x07, 0xFF, 0xCF, 0xE0, 0x03, 0xFF, 0xE7, 0xF0, 0x03, 0xFF, 0xF3, + 0xF8, 0x00, 0x01, 0xF9, 0xFC, 0x00, 0x01, 0xF8, 0xFF, 0x00, 0x00, 0xFC, + 0x7F, 0x80, 0x00, 0xFE, 0x3F, 0xC0, 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0xFF, + 0x87, 0xFC, 0x00, 0xFF, 0x81, 0xFF, 0x81, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, + 0xE0, 0x3F, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFE, 0xF8, 0x03, 0xFF, 0xFC, + 0x78, 0x00, 0x7F, 0xFC, 0x3C, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x01, 0xFC, + 0x00, 0x0F, 0xE0, 0x3F, 0x80, 0x01, 0xFC, 0x07, 0xF0, 0x00, 0x3F, 0x80, + 0xFE, 0x00, 0x0F, 0xE0, 0x1F, 0xC0, 0x01, 0xFC, 0x07, 0xF0, 0x00, 0x3F, + 0x80, 0xFE, 0x00, 0x07, 0xF0, 0x1F, 0xC0, 0x00, 0xFE, 0x03, 0xF8, 0x00, + 0x3F, 0x80, 0xFF, 0x00, 0x07, 0xF0, 0x1F, 0xC0, 0x00, 0xFE, 0x03, 0xF8, + 0x00, 0x1F, 0xC0, 0x7F, 0x00, 0x07, 0xF0, 0x0F, 0xFF, 0xFF, 0xFE, 0x03, + 0xFF, 0xFF, 0xFF, 0xC0, 0x7F, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, 0xFF, + 0x01, 0xFF, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, 0xFF, 0xF8, 0x0F, 0xE0, 0x00, + 0x7F, 0x01, 0xFC, 0x00, 0x0F, 0xE0, 0x3F, 0x80, 0x01, 0xFC, 0x07, 0xF0, + 0x00, 0x7F, 0x01, 0xFC, 0x00, 0x0F, 0xE0, 0x3F, 0x80, 0x01, 0xFC, 0x07, + 0xF0, 0x00, 0x3F, 0x80, 0xFE, 0x00, 0x0F, 0xE0, 0x1F, 0xC0, 0x01, 0xFC, + 0x07, 0xF0, 0x00, 0x3F, 0x80, 0xFE, 0x00, 0x07, 0xF0, 0x1F, 0xC0, 0x00, + 0xFE, 0x03, 0xF8, 0x00, 0x3F, 0x80, 0x7F, 0x00, 0x07, 0xF0, 0x1F, 0xC0, + 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x07, 0xF0, 0x3F, 0x80, 0xFE, 0x03, 0xF8, + 0x0F, 0xE0, 0x3F, 0x81, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, + 0x0F, 0xE0, 0x3F, 0x80, 0xFE, 0x03, 0xF8, 0x0F, 0xE0, 0x7F, 0x01, 0xFC, + 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x03, 0xF8, 0x0F, 0xE0, 0x3F, 0x80, 0xFE, + 0x03, 0xF8, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0xFE, + 0x03, 0xF8, 0x00, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x01, 0xFC, 0x00, 0x00, + 0x3F, 0x80, 0x00, 0x0F, 0xE0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x80, + 0x00, 0x07, 0xF0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, + 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x07, 0xF0, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x7F, + 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x7F, 0x00, 0x00, + 0x0F, 0xE0, 0xFE, 0x03, 0xFC, 0x1F, 0xC0, 0x7F, 0x03, 0xF8, 0x0F, 0xE0, + 0xFE, 0x01, 0xFC, 0x1F, 0xC0, 0x3F, 0x83, 0xF8, 0x0F, 0xE0, 0x7F, 0x01, + 0xFC, 0x0F, 0xF0, 0xFF, 0x81, 0xFF, 0xFF, 0xE0, 0x3F, 0xFF, 0xF8, 0x03, + 0xFF, 0xFF, 0x00, 0x3F, 0xFF, 0x80, 0x03, 0xFF, 0xE0, 0x00, 0x1F, 0xE0, + 0x00, 0x00, 0x00, 0xFE, 0x00, 0x0F, 0xF0, 0x0F, 0xF0, 0x00, 0xFF, 0x00, + 0x7F, 0x00, 0x1F, 0xF0, 0x03, 0xF8, 0x01, 0xFF, 0x00, 0x1F, 0xC0, 0x1F, + 0xE0, 0x00, 0xFE, 0x01, 0xFE, 0x00, 0x0F, 0xE0, 0x1F, 0xE0, 0x00, 0x7F, + 0x01, 0xFE, 0x00, 0x03, 0xF8, 0x1F, 0xE0, 0x00, 0x1F, 0xC1, 0xFE, 0x00, + 0x00, 0xFE, 0x1F, 0xE0, 0x00, 0x0F, 0xE3, 0xFE, 0x00, 0x00, 0x7F, 0x3F, + 0xC0, 0x00, 0x03, 0xFB, 0xFC, 0x00, 0x00, 0x1F, 0xFF, 0xC0, 0x00, 0x01, + 0xFF, 0xFE, 0x00, 0x00, 0x0F, 0xFF, 0xF8, 0x00, 0x00, 0x7F, 0xFF, 0xC0, + 0x00, 0x03, 0xFF, 0xFF, 0x00, 0x00, 0x1F, 0xFF, 0xF8, 0x00, 0x01, 0xFF, + 0x9F, 0xE0, 0x00, 0x0F, 0xF8, 0xFF, 0x00, 0x00, 0x7F, 0x83, 0xFC, 0x00, + 0x03, 0xF8, 0x1F, 0xF0, 0x00, 0x1F, 0xC0, 0x7F, 0x80, 0x01, 0xFC, 0x01, + 0xFE, 0x00, 0x0F, 0xE0, 0x0F, 0xF0, 0x00, 0x7F, 0x00, 0x3F, 0xC0, 0x03, + 0xF8, 0x01, 0xFF, 0x00, 0x3F, 0x80, 0x07, 0xF8, 0x01, 0xFC, 0x00, 0x3F, + 0xE0, 0x0F, 0xE0, 0x00, 0xFF, 0x00, 0x7F, 0x00, 0x07, 0xFC, 0x03, 0xF8, + 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFC, 0x00, 0x01, 0xFC, 0x00, 0x01, 0xFC, + 0x00, 0x03, 0xF8, 0x00, 0x03, 0xF8, 0x00, 0x03, 0xF8, 0x00, 0x03, 0xF8, + 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF0, + 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x0F, 0xE0, 0x00, 0x0F, 0xE0, + 0x00, 0x0F, 0xE0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0x1F, 0xC0, + 0x00, 0x1F, 0xC0, 0x00, 0x1F, 0xC0, 0x00, 0x3F, 0x80, 0x00, 0x3F, 0x80, + 0x00, 0x3F, 0x80, 0x00, 0x3F, 0x80, 0x00, 0x3F, 0x80, 0x00, 0x7F, 0x00, + 0x00, 0x7F, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x01, 0xFF, + 0x80, 0x03, 0xFF, 0x80, 0xFF, 0xC0, 0x01, 0xFF, 0x80, 0x7F, 0xE0, 0x01, + 0xFF, 0xC0, 0x3F, 0xF0, 0x00, 0xFF, 0xE0, 0x3F, 0xF8, 0x00, 0xFF, 0xF0, + 0x1F, 0xFC, 0x00, 0x7F, 0xF8, 0x0F, 0xFE, 0x00, 0x7D, 0xF8, 0x07, 0xEF, + 0x00, 0x3E, 0xFC, 0x03, 0xF7, 0x80, 0x3F, 0xFE, 0x03, 0xFB, 0xC0, 0x1F, + 0x7F, 0x01, 0xFD, 0xE0, 0x1F, 0xBF, 0x00, 0xFE, 0xF0, 0x0F, 0x9F, 0x80, + 0x7E, 0x78, 0x0F, 0xDF, 0xC0, 0x7F, 0x3E, 0x07, 0xCF, 0xE0, 0x3F, 0x9F, + 0x07, 0xE7, 0xF0, 0x1F, 0xCF, 0x83, 0xE3, 0xF0, 0x0F, 0xE7, 0xC3, 0xF1, + 0xF8, 0x07, 0xE3, 0xE1, 0xF9, 0xFC, 0x07, 0xF1, 0xF0, 0xF8, 0xFE, 0x03, + 0xF8, 0xF8, 0xFC, 0x7F, 0x01, 0xFC, 0x7C, 0x7C, 0x3F, 0x00, 0xFC, 0x3E, + 0x7E, 0x1F, 0x80, 0x7E, 0x1F, 0x3E, 0x1F, 0xC0, 0x7F, 0x0F, 0xBF, 0x0F, + 0xE0, 0x3F, 0x87, 0xDF, 0x07, 0xE0, 0x1F, 0xC3, 0xFF, 0x83, 0xF0, 0x0F, + 0xC1, 0xFF, 0xC3, 0xF8, 0x0F, 0xE0, 0xFF, 0xC1, 0xFC, 0x07, 0xF0, 0x7F, + 0xE0, 0xFE, 0x03, 0xF8, 0x3F, 0xE0, 0x7E, 0x01, 0xFC, 0x1F, 0xF0, 0x3F, + 0x00, 0xFC, 0x0F, 0xF0, 0x3F, 0x80, 0xFE, 0x07, 0xF8, 0x1F, 0xC0, 0x7F, + 0x03, 0xF8, 0x0F, 0xC0, 0x00, 0x01, 0xFE, 0x00, 0x07, 0xE0, 0x3F, 0xC0, + 0x01, 0xFC, 0x07, 0xFC, 0x00, 0x3F, 0x80, 0xFF, 0x80, 0x07, 0xF0, 0x1F, + 0xF0, 0x00, 0xFC, 0x07, 0xFF, 0x00, 0x3F, 0x80, 0xFF, 0xE0, 0x07, 0xF0, + 0x1F, 0xFC, 0x00, 0xFE, 0x03, 0xFF, 0xC0, 0x1F, 0x80, 0xFF, 0xF8, 0x03, + 0xF0, 0x1F, 0xFF, 0x80, 0xFE, 0x03, 0xFB, 0xF0, 0x1F, 0xC0, 0x7E, 0x7E, + 0x03, 0xF8, 0x0F, 0xC7, 0xE0, 0x7E, 0x03, 0xF8, 0xFC, 0x0F, 0xC0, 0x7F, + 0x1F, 0x83, 0xF8, 0x0F, 0xE1, 0xF8, 0x7F, 0x01, 0xF8, 0x3F, 0x0F, 0xE0, + 0x3F, 0x07, 0xF1, 0xF8, 0x0F, 0xE0, 0x7E, 0x3F, 0x01, 0xFC, 0x0F, 0xCF, + 0xE0, 0x3F, 0x00, 0xFD, 0xFC, 0x07, 0xE0, 0x1F, 0xBF, 0x81, 0xFC, 0x03, + 0xF7, 0xE0, 0x3F, 0x80, 0x3F, 0xFC, 0x07, 0xF0, 0x07, 0xFF, 0x80, 0xFC, + 0x00, 0xFF, 0xF0, 0x1F, 0x80, 0x0F, 0xFC, 0x07, 0xF0, 0x01, 0xFF, 0x80, + 0xFE, 0x00, 0x3F, 0xF0, 0x1F, 0xC0, 0x03, 0xFE, 0x03, 0xF0, 0x00, 0x7F, + 0xC0, 0x7E, 0x00, 0x07, 0xF0, 0x1F, 0xC0, 0x00, 0xFE, 0x00, 0x00, 0x00, + 0xFF, 0x80, 0x00, 0x01, 0xFF, 0xF8, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x01, + 0xFF, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xFF, 0xC0, + 0x3F, 0xF0, 0x3F, 0xF8, 0x1F, 0xF0, 0x03, 0xFE, 0x07, 0xF0, 0x00, 0x7F, + 0x83, 0xF8, 0x00, 0x0F, 0xF1, 0xFE, 0x00, 0x03, 0xFC, 0x7F, 0x00, 0x00, + 0x7F, 0x3F, 0x80, 0x00, 0x1F, 0xCF, 0xE0, 0x00, 0x07, 0xF7, 0xF0, 0x00, + 0x01, 0xFD, 0xFC, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x00, 0x1F, 0xDF, 0xC0, + 0x00, 0x07, 0xFF, 0xE0, 0x00, 0x03, 0xFB, 0xF8, 0x00, 0x00, 0xFE, 0xFE, + 0x00, 0x00, 0x3F, 0xBF, 0x80, 0x00, 0x0F, 0xEF, 0xE0, 0x00, 0x07, 0xF3, + 0xF8, 0x00, 0x01, 0xFC, 0xFE, 0x00, 0x00, 0xFE, 0x3F, 0xC0, 0x00, 0x7F, + 0x8F, 0xF0, 0x00, 0x1F, 0xC1, 0xFE, 0x00, 0x0F, 0xE0, 0x7F, 0xC0, 0x0F, + 0xF8, 0x1F, 0xFC, 0x0F, 0xFC, 0x03, 0xFF, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, + 0xFF, 0x00, 0x0F, 0xFF, 0xFF, 0x80, 0x01, 0xFF, 0xFF, 0x80, 0x00, 0x1F, + 0xFF, 0x80, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x03, + 0xFF, 0xFF, 0xE0, 0x0F, 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xFF, 0xE0, 0x3F, + 0xFF, 0xFF, 0xC0, 0x7F, 0xFF, 0xFF, 0xC1, 0xFE, 0x00, 0xFF, 0x83, 0xF8, + 0x00, 0xFF, 0x07, 0xF0, 0x00, 0xFE, 0x0F, 0xE0, 0x01, 0xFC, 0x1F, 0xC0, + 0x03, 0xF8, 0x7F, 0x00, 0x07, 0xF0, 0xFE, 0x00, 0x1F, 0xC1, 0xFC, 0x00, + 0x3F, 0x83, 0xF8, 0x00, 0xFE, 0x07, 0xF0, 0x07, 0xFC, 0x1F, 0xFF, 0xFF, + 0xF0, 0x3F, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFE, + 0x03, 0xFF, 0xFF, 0xF0, 0x07, 0xFF, 0xFF, 0x80, 0x0F, 0xE0, 0x00, 0x00, + 0x1F, 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x01, + 0xFC, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x0F, + 0xE0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0xFE, + 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, + 0x01, 0xFF, 0xF8, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x01, 0xFF, 0xFF, 0xF0, + 0x00, 0xFF, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xFF, 0xC0, 0x3F, 0xF0, 0x3F, + 0xF0, 0x1F, 0xF0, 0x03, 0xFE, 0x07, 0xF8, 0x00, 0x7F, 0x83, 0xFC, 0x00, + 0x0F, 0xF1, 0xFE, 0x00, 0x03, 0xFC, 0x7F, 0x00, 0x00, 0x7F, 0x3F, 0x80, + 0x00, 0x1F, 0xCF, 0xE0, 0x00, 0x07, 0xF3, 0xF0, 0x00, 0x01, 0xFD, 0xFC, + 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x00, 0x1F, 0xDF, 0x80, 0x00, 0x07, 0xFF, + 0xE0, 0x00, 0x03, 0xFB, 0xF8, 0x00, 0x00, 0xFE, 0xFE, 0x00, 0x00, 0x3F, + 0xBF, 0x80, 0x00, 0x0F, 0xEF, 0xE0, 0x01, 0x87, 0xF3, 0xF8, 0x00, 0xF1, + 0xFC, 0xFE, 0x00, 0x7C, 0xFE, 0x3F, 0xC0, 0x3F, 0xFF, 0x8F, 0xF0, 0x07, + 0xFF, 0xC1, 0xFE, 0x01, 0xFF, 0xE0, 0x7F, 0xC0, 0x3F, 0xF8, 0x1F, 0xFC, + 0x0F, 0xFC, 0x03, 0xFF, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0xFF, 0xC0, 0x0F, + 0xFF, 0xFF, 0xF8, 0x01, 0xFF, 0xFF, 0xFF, 0x00, 0x1F, 0xFF, 0x9F, 0x80, + 0x01, 0xFF, 0x03, 0xC0, 0x00, 0x00, 0x00, 0x60, 0x00, 0x01, 0xFF, 0xFF, + 0xF0, 0x00, 0xFF, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, + 0xFF, 0xE0, 0x3F, 0xFF, 0xFF, 0xF0, 0x1F, 0xFF, 0xFF, 0xFC, 0x0F, 0xE0, + 0x03, 0xFE, 0x0F, 0xF0, 0x00, 0xFF, 0x07, 0xF0, 0x00, 0x3F, 0x83, 0xF8, + 0x00, 0x1F, 0xC1, 0xFC, 0x00, 0x0F, 0xC0, 0xFE, 0x00, 0x07, 0xE0, 0xFE, + 0x00, 0x07, 0xF0, 0x7F, 0x00, 0x07, 0xF0, 0x3F, 0x80, 0x0F, 0xF0, 0x1F, + 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xE0, 0x07, + 0xFF, 0xFF, 0xF0, 0x03, 0xFF, 0xFF, 0xFC, 0x01, 0xFF, 0xFF, 0xFF, 0x01, + 0xFC, 0x00, 0x7F, 0x80, 0xFE, 0x00, 0x1F, 0xC0, 0x7F, 0x00, 0x0F, 0xE0, + 0x3F, 0x80, 0x07, 0xF0, 0x1F, 0xC0, 0x03, 0xF8, 0x1F, 0xC0, 0x01, 0xFC, + 0x0F, 0xE0, 0x01, 0xFC, 0x07, 0xF0, 0x00, 0xFE, 0x03, 0xF8, 0x00, 0x7F, + 0x01, 0xFC, 0x00, 0x3F, 0x81, 0xFC, 0x00, 0x1F, 0xC0, 0xFE, 0x00, 0x0F, + 0xE0, 0x7F, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x7F, + 0xFF, 0x00, 0x07, 0xFF, 0xFE, 0x00, 0x3F, 0xFF, 0xFC, 0x01, 0xFF, 0xFF, + 0xF8, 0x0F, 0xFF, 0xFF, 0xF0, 0x3F, 0xC0, 0x7F, 0xC1, 0xFE, 0x00, 0xFF, + 0x07, 0xF0, 0x01, 0xFC, 0x3F, 0x80, 0x07, 0xF0, 0xFE, 0x00, 0x1F, 0xC3, + 0xF8, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0xFF, + 0xE0, 0x00, 0x03, 0xFF, 0xFC, 0x00, 0x07, 0xFF, 0xFF, 0x00, 0x0F, 0xFF, + 0xFE, 0x00, 0x1F, 0xFF, 0xFE, 0x00, 0x0F, 0xFF, 0xF8, 0x00, 0x03, 0xFF, + 0xF0, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x01, 0xFC, + 0x00, 0x00, 0x07, 0xF3, 0xF8, 0x00, 0x1F, 0xCF, 0xE0, 0x00, 0x7E, 0x3F, + 0x80, 0x03, 0xF8, 0xFF, 0x00, 0x1F, 0xE3, 0xFF, 0x01, 0xFF, 0x07, 0xFF, + 0xFF, 0xF8, 0x1F, 0xFF, 0xFF, 0xE0, 0x3F, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, + 0xF0, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x3F, 0xF0, 0x00, 0x7F, 0xFF, 0xFF, + 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFE, 0x00, 0x3F, 0x80, 0x00, 0x03, 0xF8, + 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x7F, 0x00, 0x00, + 0x07, 0xF0, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0xFE, + 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x0F, 0xE0, 0x00, + 0x01, 0xFC, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x1F, + 0xC0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0xF8, 0x00, + 0x00, 0x3F, 0x80, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x07, + 0xF0, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x7F, 0x00, + 0x00, 0x0F, 0xE0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x7F, + 0x07, 0xF0, 0x00, 0x7F, 0x07, 0xF0, 0x00, 0xFE, 0x0F, 0xE0, 0x00, 0xFE, + 0x0F, 0xE0, 0x00, 0xFE, 0x0F, 0xE0, 0x00, 0xFE, 0x0F, 0xE0, 0x00, 0xFE, + 0x0F, 0xE0, 0x01, 0xFC, 0x1F, 0xC0, 0x01, 0xFC, 0x1F, 0xC0, 0x01, 0xFC, + 0x1F, 0xC0, 0x01, 0xFC, 0x1F, 0xC0, 0x01, 0xFC, 0x3F, 0x80, 0x03, 0xF8, + 0x3F, 0x80, 0x03, 0xF8, 0x3F, 0x80, 0x03, 0xF8, 0x3F, 0x80, 0x03, 0xF8, + 0x3F, 0x80, 0x07, 0xF0, 0x7F, 0x00, 0x07, 0xF0, 0x7F, 0x00, 0x07, 0xF0, + 0x7F, 0x00, 0x07, 0xF0, 0x7F, 0x00, 0x07, 0xF0, 0x7F, 0x00, 0x0F, 0xE0, + 0xFE, 0x00, 0x0F, 0xE0, 0xFE, 0x00, 0x0F, 0xE0, 0xFE, 0x00, 0x0F, 0xE0, + 0xFE, 0x00, 0x1F, 0xC0, 0xFE, 0x00, 0x1F, 0xC0, 0xFF, 0x00, 0x3F, 0x80, + 0xFF, 0xC0, 0xFF, 0x80, 0x7F, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0xFE, 0x00, + 0x3F, 0xFF, 0xFC, 0x00, 0x1F, 0xFF, 0xF8, 0x00, 0x0F, 0xFF, 0xE0, 0x00, + 0x01, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x03, 0xF9, 0xFC, 0x00, 0x0F, 0xE7, + 0xF0, 0x00, 0x7F, 0x1F, 0xC0, 0x01, 0xFC, 0x7F, 0x00, 0x0F, 0xE1, 0xFC, + 0x00, 0x3F, 0x87, 0xF0, 0x01, 0xFC, 0x1F, 0xC0, 0x07, 0xF0, 0x3F, 0x00, + 0x3F, 0x80, 0xFC, 0x00, 0xFC, 0x03, 0xF0, 0x07, 0xF0, 0x0F, 0xC0, 0x1F, + 0x80, 0x3F, 0x80, 0xFE, 0x00, 0xFE, 0x03, 0xF0, 0x03, 0xF8, 0x1F, 0xC0, + 0x0F, 0xE0, 0x7E, 0x00, 0x1F, 0x83, 0xF8, 0x00, 0x7E, 0x0F, 0xC0, 0x01, + 0xF8, 0x7E, 0x00, 0x07, 0xE1, 0xF8, 0x00, 0x1F, 0x8F, 0xC0, 0x00, 0x7E, + 0x3F, 0x00, 0x01, 0xF9, 0xF8, 0x00, 0x07, 0xE7, 0xE0, 0x00, 0x0F, 0xFF, + 0x00, 0x00, 0x3F, 0xFC, 0x00, 0x00, 0xFF, 0xE0, 0x00, 0x03, 0xFF, 0x00, + 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x00, 0xFF, 0x80, 0x00, + 0x01, 0xFC, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x00, + 0xFE, 0x00, 0x7F, 0x80, 0x1F, 0xFF, 0xC0, 0x0F, 0xF0, 0x03, 0xFB, 0xF8, + 0x01, 0xFE, 0x00, 0x7F, 0x7F, 0x00, 0x7F, 0xC0, 0x1F, 0xCF, 0xE0, 0x0F, + 0xF8, 0x03, 0xF9, 0xFC, 0x03, 0xFF, 0x00, 0xFE, 0x3F, 0x80, 0x7F, 0xE0, + 0x1F, 0xC7, 0xF0, 0x1F, 0xFC, 0x07, 0xF0, 0x7E, 0x03, 0xFF, 0x80, 0xFE, + 0x0F, 0xC0, 0x7D, 0xF0, 0x1F, 0x81, 0xF8, 0x1F, 0xBE, 0x07, 0xF0, 0x3F, + 0x03, 0xE7, 0xC0, 0xFC, 0x07, 0xE0, 0xFC, 0xF8, 0x3F, 0x80, 0xFC, 0x1F, + 0x1F, 0x07, 0xE0, 0x1F, 0x83, 0xE3, 0xE0, 0xFC, 0x03, 0xF0, 0xFC, 0x7C, + 0x3F, 0x00, 0x7E, 0x1F, 0x0F, 0x87, 0xE0, 0x0F, 0xC7, 0xE1, 0xF1, 0xF8, + 0x01, 0xF8, 0xF8, 0x3E, 0x3F, 0x00, 0x3F, 0x3F, 0x07, 0xCF, 0xC0, 0x07, + 0xE7, 0xC0, 0xF9, 0xF8, 0x00, 0xFC, 0xF8, 0x1F, 0x3E, 0x00, 0x1F, 0xBE, + 0x03, 0xEF, 0xC0, 0x01, 0xF7, 0xC0, 0x7D, 0xF0, 0x00, 0x3F, 0xF8, 0x0F, + 0xFE, 0x00, 0x07, 0xFE, 0x01, 0xFF, 0x80, 0x00, 0xFF, 0xC0, 0x3F, 0xF0, + 0x00, 0x1F, 0xF0, 0x07, 0xFC, 0x00, 0x03, 0xFE, 0x00, 0xFF, 0x80, 0x00, + 0x7F, 0x80, 0x1F, 0xE0, 0x00, 0x0F, 0xF0, 0x03, 0xFC, 0x00, 0x01, 0xFC, + 0x00, 0x7F, 0x80, 0x00, 0x3F, 0x80, 0x0F, 0xE0, 0x00, 0x07, 0xF0, 0x01, + 0xFC, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x07, 0xFC, 0x00, 0xFF, + 0x00, 0x1F, 0xE0, 0x07, 0xF8, 0x00, 0xFF, 0x00, 0x7F, 0x80, 0x03, 0xFC, + 0x07, 0xF8, 0x00, 0x1F, 0xE0, 0x7F, 0x80, 0x00, 0xFF, 0x07, 0xF8, 0x00, + 0x03, 0xFC, 0x3F, 0x80, 0x00, 0x1F, 0xE3, 0xF8, 0x00, 0x00, 0x7F, 0x3F, + 0xC0, 0x00, 0x03, 0xFF, 0xFC, 0x00, 0x00, 0x1F, 0xFF, 0xC0, 0x00, 0x00, + 0x7F, 0xFC, 0x00, 0x00, 0x03, 0xFF, 0xC0, 0x00, 0x00, 0x0F, 0xFC, 0x00, + 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x1F, + 0xF0, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, + 0x00, 0xFF, 0xF0, 0x00, 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0x00, 0xFF, 0xFE, + 0x00, 0x00, 0x0F, 0xE7, 0xF0, 0x00, 0x00, 0xFF, 0x3F, 0xC0, 0x00, 0x0F, + 0xF1, 0xFE, 0x00, 0x00, 0xFF, 0x07, 0xF8, 0x00, 0x07, 0xF0, 0x3F, 0xC0, + 0x00, 0x7F, 0x01, 0xFE, 0x00, 0x07, 0xF8, 0x07, 0xF8, 0x00, 0x7F, 0x80, + 0x3F, 0xC0, 0x07, 0xF8, 0x01, 0xFF, 0x00, 0x7F, 0x80, 0x07, 0xF8, 0x07, + 0xFC, 0x00, 0x3F, 0xE0, 0x00, 0xFF, 0x00, 0x07, 0xF7, 0xF8, 0x00, 0x7F, + 0xBF, 0xC0, 0x07, 0xF8, 0xFE, 0x00, 0x3F, 0x87, 0xF8, 0x03, 0xFC, 0x3F, + 0xC0, 0x3F, 0xC0, 0xFE, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x3F, 0xC1, + 0xFE, 0x00, 0xFE, 0x0F, 0xE0, 0x07, 0xF0, 0xFE, 0x00, 0x3F, 0x8F, 0xE0, + 0x00, 0xFE, 0x7F, 0x00, 0x07, 0xF7, 0xF0, 0x00, 0x3F, 0xFF, 0x00, 0x01, + 0xFF, 0xF8, 0x00, 0x07, 0xFF, 0x80, 0x00, 0x3F, 0xF8, 0x00, 0x01, 0xFF, + 0x80, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x01, 0xFC, 0x00, + 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, + 0x3F, 0x80, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x7F, + 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x01, 0xFC, 0x00, + 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0x80, 0xFF, 0xFF, 0xFF, 0xC0, 0x7F, 0xFF, 0xFF, 0xE0, 0x3F, 0xFF, + 0xFF, 0xF0, 0x1F, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, 0xF8, 0x00, 0x00, + 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, + 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, + 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, + 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, + 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, + 0x07, 0xFC, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, + 0x07, 0xF8, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, + 0x07, 0xF8, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, 0xFF, + 0x01, 0xFF, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFF, 0xC0, 0x7F, 0xFF, 0xFF, + 0xC0, 0x3F, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x7F, 0xF8, 0x03, 0xFF, 0x80, + 0x1F, 0xFC, 0x00, 0xFF, 0xE0, 0x0F, 0xFF, 0x00, 0x7E, 0x00, 0x03, 0xF0, + 0x00, 0x1F, 0x80, 0x01, 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0x7E, 0x00, 0x03, + 0xF0, 0x00, 0x1F, 0x80, 0x01, 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0x7E, 0x00, + 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x01, 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0x7E, + 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x80, 0x01, 0xF8, 0x00, 0x0F, 0xC0, 0x00, + 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x80, 0x01, 0xF8, 0x00, 0x0F, 0xC0, + 0x00, 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x01, 0xF8, 0x00, 0x0F, + 0xC0, 0x00, 0x7E, 0x00, 0x07, 0xF0, 0x00, 0x3F, 0x00, 0x01, 0xFF, 0xC0, + 0x0F, 0xFE, 0x00, 0x7F, 0xF0, 0x07, 0xFF, 0x80, 0x3F, 0xFC, 0x00, 0x81, + 0xC3, 0xC7, 0x8F, 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xC3, 0xC7, 0x8F, 0x1E, + 0x1C, 0x38, 0x70, 0xE1, 0xC3, 0x87, 0x8F, 0x1E, 0x3C, 0x38, 0x70, 0xE1, + 0xC3, 0x87, 0x0F, 0x1E, 0x3C, 0x78, 0xF0, 0x00, 0x7F, 0xF8, 0x03, 0xFF, + 0xC0, 0x1F, 0xFC, 0x00, 0xFF, 0xE0, 0x07, 0xFF, 0x00, 0x01, 0xF8, 0x00, + 0x1F, 0xC0, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x3F, 0x00, 0x01, 0xF8, + 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x3F, 0x00, 0x03, + 0xF8, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x3F, 0x00, + 0x03, 0xF8, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x7F, + 0x00, 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, + 0x7F, 0x00, 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, + 0x00, 0x7F, 0x00, 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x01, 0xFF, + 0xE0, 0x0F, 0xFE, 0x00, 0x7F, 0xF0, 0x03, 0xFF, 0x80, 0x3F, 0xFC, 0x00, + 0x00, 0x1F, 0x80, 0x00, 0xFE, 0x00, 0x0F, 0xF0, 0x00, 0x7F, 0x80, 0x07, + 0xFC, 0x00, 0x7F, 0xE0, 0x03, 0xFF, 0x80, 0x3E, 0xFC, 0x01, 0xF3, 0xE0, + 0x1F, 0x1F, 0x01, 0xF8, 0xF8, 0x0F, 0x87, 0xE0, 0xFC, 0x3F, 0x07, 0xC0, + 0xF8, 0x7C, 0x07, 0xC7, 0xE0, 0x3E, 0x3E, 0x01, 0xFB, 0xF0, 0x0F, 0xDF, + 0x00, 0x3F, 0xF0, 0x01, 0xF0, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xE0, 0xF8, 0xF0, 0xF1, 0xE1, + 0xC3, 0xC3, 0x80, 0x00, 0x1F, 0xF0, 0x00, 0x7F, 0xFF, 0x00, 0xFF, 0xFF, + 0xC0, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xF8, 0x7F, 0x03, 0xFC, 0x3F, 0x00, + 0xFE, 0x1F, 0x80, 0x7E, 0x00, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0x80, 0x1F, + 0xFF, 0xC0, 0x7F, 0xFF, 0xC0, 0xFF, 0xFF, 0xE0, 0xFF, 0xF7, 0xF0, 0xFF, + 0x83, 0xF8, 0xFF, 0x01, 0xF8, 0x7F, 0x00, 0xFC, 0x7F, 0x00, 0xFE, 0x3F, + 0x80, 0x7F, 0x1F, 0xC0, 0x7F, 0x8F, 0xF0, 0xFF, 0x87, 0xFF, 0xFF, 0xC3, + 0xFF, 0xFF, 0xE0, 0xFF, 0xF7, 0xF8, 0x3F, 0xF3, 0xFC, 0x07, 0xE0, 0x00, + 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x01, + 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xE0, 0x00, 0x00, 0xFC, 0x00, + 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, 0xFE, 0x3F, 0x80, 0x1F, + 0x9F, 0xFC, 0x03, 0xF7, 0xFF, 0xC0, 0xFF, 0xFF, 0xF8, 0x1F, 0xFF, 0xFF, + 0x83, 0xFF, 0x0F, 0xF0, 0x7F, 0x80, 0xFF, 0x0F, 0xE0, 0x1F, 0xE3, 0xF8, + 0x01, 0xFC, 0x7F, 0x00, 0x3F, 0x8F, 0xC0, 0x07, 0xF1, 0xF8, 0x00, 0xFE, + 0x7F, 0x00, 0x1F, 0xCF, 0xC0, 0x03, 0xF9, 0xF8, 0x00, 0xFE, 0x3F, 0x00, + 0x1F, 0xC7, 0xE0, 0x03, 0xF9, 0xFC, 0x00, 0xFE, 0x3F, 0xC0, 0x3F, 0xC7, + 0xF8, 0x0F, 0xF0, 0xFF, 0x83, 0xFC, 0x1F, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, + 0xC0, 0xFF, 0xFF, 0xF0, 0x1F, 0x9F, 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x00, + 0x00, 0x1F, 0xE0, 0x00, 0x3F, 0xFC, 0x00, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, + 0xE0, 0x7F, 0xFF, 0xF0, 0x7F, 0x83, 0xFC, 0x7F, 0x00, 0xFE, 0x3F, 0x00, + 0x7F, 0x3F, 0x80, 0x3F, 0x9F, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x0F, 0xE0, + 0x00, 0x07, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0x01, 0xFC, + 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x7F, 0x3F, 0x80, 0x3F, 0x9F, + 0xE0, 0x3F, 0x87, 0xF8, 0x3F, 0x83, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, + 0x3F, 0xFF, 0xC0, 0x0F, 0xFF, 0x80, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, + 0x03, 0xF8, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x07, + 0xE0, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x1F, 0xC0, + 0x00, 0x00, 0xFC, 0x00, 0x00, 0x0F, 0xE0, 0x01, 0xFC, 0x7F, 0x00, 0x3F, + 0xF3, 0xF8, 0x03, 0xFF, 0xDF, 0x80, 0x7F, 0xFF, 0xFC, 0x07, 0xFF, 0xFF, + 0xE0, 0x3F, 0xC3, 0xFF, 0x03, 0xFC, 0x0F, 0xF8, 0x3F, 0xC0, 0x3F, 0x81, + 0xFC, 0x01, 0xFC, 0x1F, 0xC0, 0x07, 0xE0, 0xFE, 0x00, 0x3F, 0x07, 0xF0, + 0x03, 0xF8, 0x7F, 0x00, 0x1F, 0x83, 0xF8, 0x00, 0xFC, 0x1F, 0xC0, 0x07, + 0xE0, 0xFE, 0x00, 0x3F, 0x07, 0xF0, 0x03, 0xF0, 0x3F, 0x80, 0x3F, 0x81, + 0xFC, 0x01, 0xFC, 0x0F, 0xF0, 0x1F, 0xE0, 0x3F, 0xC3, 0xFF, 0x01, 0xFF, + 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xFC, 0x00, 0xFF, 0xCF, + 0xE0, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x7F, 0xFC, 0x00, + 0x7F, 0xFF, 0x00, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xF0, 0x7F, 0x87, 0xF8, + 0x7F, 0x01, 0xFE, 0x7F, 0x00, 0x7F, 0x3F, 0x80, 0x3F, 0xBF, 0x80, 0x1F, + 0xDF, 0xC0, 0x0F, 0xEF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFD, 0xFC, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, + 0x00, 0x3F, 0x80, 0x3F, 0x9F, 0xE0, 0x3F, 0x87, 0xF8, 0x3F, 0xC3, 0xFF, + 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, 0x80, 0x0F, 0xFF, 0x80, 0x00, + 0xFE, 0x00, 0x00, 0x00, 0x1F, 0xC0, 0x1F, 0xF0, 0x0F, 0xF8, 0x07, 0xFE, + 0x01, 0xFF, 0x80, 0xFE, 0x00, 0x3F, 0x80, 0x0F, 0xC0, 0x03, 0xF0, 0x01, + 0xFC, 0x03, 0xFF, 0xF1, 0xFF, 0xF8, 0x7F, 0xFE, 0x1F, 0xFF, 0x80, 0xFE, + 0x00, 0x3F, 0x80, 0x0F, 0xE0, 0x03, 0xF0, 0x00, 0xFC, 0x00, 0x7F, 0x00, + 0x1F, 0xC0, 0x07, 0xE0, 0x01, 0xF8, 0x00, 0xFE, 0x00, 0x3F, 0x80, 0x0F, + 0xE0, 0x03, 0xF0, 0x00, 0xFC, 0x00, 0x7F, 0x00, 0x1F, 0xC0, 0x07, 0xF0, + 0x01, 0xF8, 0x00, 0x7E, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x07, 0xC3, 0xF8, + 0x01, 0xFF, 0x9F, 0x80, 0x1F, 0xFE, 0xFC, 0x01, 0xFF, 0xFF, 0xE0, 0x1F, + 0xFF, 0xFF, 0x01, 0xFE, 0x1F, 0xF8, 0x1F, 0xE0, 0x3F, 0x80, 0xFE, 0x01, + 0xFC, 0x0F, 0xE0, 0x0F, 0xE0, 0x7F, 0x00, 0x3F, 0x07, 0xF0, 0x01, 0xF8, + 0x3F, 0x80, 0x0F, 0x81, 0xF8, 0x00, 0x7C, 0x1F, 0xC0, 0x07, 0xE0, 0xFE, + 0x00, 0x3F, 0x07, 0xF0, 0x01, 0xF0, 0x3F, 0x80, 0x1F, 0x81, 0xFC, 0x00, + 0xFC, 0x0F, 0xE0, 0x0F, 0xE0, 0x7F, 0x80, 0xFF, 0x03, 0xFE, 0x1F, 0xF0, + 0x0F, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0xFC, 0x01, 0xFF, 0xF7, 0xE0, 0x07, + 0xFE, 0x7F, 0x00, 0x0F, 0xC3, 0xF0, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x01, + 0xFC, 0x0F, 0xE0, 0x0F, 0xC0, 0x7F, 0x00, 0xFE, 0x03, 0xFC, 0x1F, 0xE0, + 0x1F, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xE0, 0x01, 0xFF, 0xFC, 0x00, 0x01, + 0xFF, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xE0, + 0x00, 0x00, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, + 0xFE, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xFE, 0x0F, + 0xC0, 0x1F, 0xCF, 0xFE, 0x03, 0xFB, 0xFF, 0xE0, 0x7F, 0xFF, 0xFE, 0x0F, + 0xFF, 0xFF, 0xC3, 0xFF, 0x07, 0xF8, 0x7F, 0x80, 0x7F, 0x0F, 0xE0, 0x0F, + 0xE1, 0xFC, 0x01, 0xFC, 0x7F, 0x00, 0x3F, 0x0F, 0xE0, 0x07, 0xE1, 0xFC, + 0x01, 0xFC, 0x3F, 0x00, 0x3F, 0x87, 0xE0, 0x07, 0xF1, 0xFC, 0x00, 0xFC, + 0x3F, 0x80, 0x1F, 0x87, 0xF0, 0x07, 0xF0, 0xFC, 0x00, 0xFE, 0x1F, 0x80, + 0x1F, 0xC7, 0xF0, 0x03, 0xF0, 0xFE, 0x00, 0x7E, 0x1F, 0xC0, 0x1F, 0xC3, + 0xF0, 0x03, 0xF8, 0xFE, 0x00, 0x7F, 0x1F, 0xC0, 0x0F, 0xC0, 0x01, 0xFC, + 0x07, 0xF0, 0x1F, 0x80, 0x7E, 0x03, 0xF8, 0x0F, 0xE0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xE0, 0x3F, 0x80, 0xFE, + 0x03, 0xF8, 0x0F, 0xC0, 0x3F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7E, + 0x03, 0xF8, 0x0F, 0xE0, 0x3F, 0x80, 0xFC, 0x03, 0xF0, 0x1F, 0xC0, 0x7F, + 0x01, 0xFC, 0x07, 0xE0, 0x1F, 0x80, 0xFE, 0x03, 0xF8, 0x00, 0x00, 0x0F, + 0xE0, 0x01, 0xFC, 0x00, 0x3F, 0x80, 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x3F, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0xFE, + 0x00, 0x1F, 0xC0, 0x03, 0xF8, 0x00, 0x7E, 0x00, 0x1F, 0xC0, 0x03, 0xF8, + 0x00, 0x7F, 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x7F, 0x00, 0x0F, 0xE0, + 0x01, 0xFC, 0x00, 0x3F, 0x00, 0x07, 0xE0, 0x01, 0xFC, 0x00, 0x3F, 0x80, + 0x07, 0xF0, 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x07, 0xF0, 0x00, 0xFE, 0x00, + 0x1F, 0x80, 0x03, 0xF0, 0x00, 0xFE, 0x00, 0x1F, 0xC0, 0x03, 0xF8, 0x00, + 0x7E, 0x00, 0x0F, 0xC0, 0x03, 0xF8, 0x03, 0xFF, 0x00, 0x7F, 0xC0, 0x0F, + 0xF8, 0x03, 0xFE, 0x00, 0x7E, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x1F, + 0x80, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0xF8, 0x00, + 0x00, 0x3F, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x07, + 0xF0, 0x00, 0x00, 0x7F, 0x00, 0xFE, 0x07, 0xE0, 0x3F, 0xC0, 0x7E, 0x07, + 0xF8, 0x0F, 0xE0, 0xFF, 0x00, 0xFE, 0x1F, 0xC0, 0x0F, 0xE3, 0xF8, 0x00, + 0xFC, 0x7F, 0x00, 0x0F, 0xCF, 0xE0, 0x01, 0xFD, 0xFC, 0x00, 0x1F, 0xFF, + 0x80, 0x01, 0xFF, 0xF8, 0x00, 0x1F, 0xFF, 0x80, 0x03, 0xFF, 0xFC, 0x00, + 0x3F, 0xFF, 0xC0, 0x03, 0xFE, 0xFE, 0x00, 0x3F, 0xCF, 0xE0, 0x03, 0xF0, + 0xFE, 0x00, 0x7F, 0x07, 0xF0, 0x07, 0xF0, 0x7F, 0x00, 0x7F, 0x07, 0xF8, + 0x07, 0xE0, 0x3F, 0x80, 0x7E, 0x03, 0xF8, 0x0F, 0xE0, 0x3F, 0xC0, 0xFE, + 0x01, 0xFC, 0x0F, 0xC0, 0x1F, 0xE0, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0x80, + 0x7E, 0x03, 0xF8, 0x0F, 0xE0, 0x3F, 0x80, 0xFC, 0x03, 0xF0, 0x1F, 0xC0, + 0x7F, 0x01, 0xFC, 0x07, 0xE0, 0x3F, 0x80, 0xFE, 0x03, 0xF8, 0x0F, 0xC0, + 0x3F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7E, 0x03, 0xF8, 0x0F, 0xE0, + 0x3F, 0x80, 0xFC, 0x03, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xE0, + 0x1F, 0x80, 0xFE, 0x03, 0xF8, 0x00, 0x07, 0xF0, 0xFC, 0x03, 0xF0, 0x07, + 0xE3, 0xFF, 0x0F, 0xFC, 0x07, 0xEF, 0xFF, 0x3F, 0xFE, 0x0F, 0xFF, 0xFF, + 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xF8, 0x7F, 0xF0, 0xFF, + 0x0F, 0xE0, 0x3F, 0xC0, 0x7F, 0x0F, 0xE0, 0x3F, 0x80, 0x7F, 0x1F, 0xC0, + 0x3F, 0x80, 0x7E, 0x1F, 0xC0, 0x3F, 0x00, 0x7E, 0x1F, 0xC0, 0x3F, 0x00, + 0xFE, 0x1F, 0x80, 0x7F, 0x00, 0xFE, 0x3F, 0x80, 0x7F, 0x00, 0xFC, 0x3F, + 0x80, 0x7F, 0x00, 0xFC, 0x3F, 0x80, 0x7E, 0x01, 0xFC, 0x3F, 0x00, 0x7E, + 0x01, 0xFC, 0x3F, 0x00, 0xFE, 0x01, 0xFC, 0x7F, 0x00, 0xFE, 0x01, 0xF8, + 0x7F, 0x00, 0xFE, 0x01, 0xF8, 0x7F, 0x00, 0xFC, 0x03, 0xF8, 0x7E, 0x01, + 0xFC, 0x03, 0xF8, 0x7E, 0x01, 0xFC, 0x03, 0xF8, 0xFE, 0x01, 0xFC, 0x03, + 0xF0, 0xFE, 0x01, 0xF8, 0x03, 0xF0, 0xFE, 0x01, 0xF8, 0x07, 0xF0, 0x07, + 0xF0, 0xFE, 0x00, 0xFE, 0x7F, 0xF0, 0x1F, 0x9F, 0xFF, 0x03, 0xFF, 0xFF, + 0xF0, 0xFF, 0xFF, 0xFE, 0x1F, 0xF8, 0x3F, 0xC3, 0xFC, 0x03, 0xF8, 0x7F, + 0x00, 0x7F, 0x0F, 0xE0, 0x0F, 0xE3, 0xF8, 0x01, 0xF8, 0x7F, 0x00, 0x3F, + 0x0F, 0xC0, 0x0F, 0xE1, 0xF8, 0x01, 0xFC, 0x7F, 0x00, 0x3F, 0x8F, 0xE0, + 0x07, 0xE1, 0xFC, 0x00, 0xFC, 0x3F, 0x00, 0x3F, 0x87, 0xE0, 0x07, 0xF1, + 0xFC, 0x00, 0xFE, 0x3F, 0x80, 0x1F, 0x87, 0xF0, 0x03, 0xF0, 0xFC, 0x00, + 0xFE, 0x3F, 0x80, 0x1F, 0xC7, 0xF0, 0x03, 0xF8, 0xFE, 0x00, 0x7E, 0x00, + 0x00, 0x1F, 0xE0, 0x00, 0x1F, 0xFF, 0x00, 0x1F, 0xFF, 0xE0, 0x0F, 0xFF, + 0xFC, 0x07, 0xFF, 0xFF, 0x83, 0xFC, 0x1F, 0xE1, 0xFE, 0x03, 0xFC, 0xFF, + 0x00, 0xFF, 0x3F, 0x80, 0x1F, 0xDF, 0xC0, 0x07, 0xF7, 0xF0, 0x01, 0xFD, + 0xFC, 0x00, 0x7F, 0xFE, 0x00, 0x1F, 0xFF, 0x80, 0x07, 0xFF, 0xE0, 0x03, + 0xFB, 0xF8, 0x00, 0xFE, 0xFE, 0x00, 0x3F, 0xBF, 0x80, 0x1F, 0xCF, 0xF0, + 0x0F, 0xF3, 0xFC, 0x07, 0xF8, 0x7F, 0x83, 0xFC, 0x1F, 0xFF, 0xFE, 0x03, + 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0x80, 0x0F, 0xFF, 0x80, 0x00, 0x7F, 0x00, + 0x00, 0x01, 0xFC, 0x3F, 0x00, 0x0F, 0xCF, 0xFE, 0x00, 0x7E, 0xFF, 0xF8, + 0x07, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, 0xFF, 0x01, 0xFF, 0x87, 0xF8, 0x0F, + 0xF0, 0x1F, 0xE0, 0xFF, 0x00, 0xFF, 0x07, 0xF0, 0x03, 0xF8, 0x3F, 0x80, + 0x1F, 0xC1, 0xF8, 0x00, 0xFE, 0x0F, 0xC0, 0x07, 0xF0, 0xFE, 0x00, 0x3F, + 0x87, 0xF0, 0x01, 0xFC, 0x3F, 0x00, 0x1F, 0xC1, 0xF8, 0x00, 0xFE, 0x1F, + 0xC0, 0x07, 0xF0, 0xFE, 0x00, 0x7F, 0x07, 0xF8, 0x07, 0xF8, 0x3F, 0xC0, + 0x7F, 0x81, 0xFF, 0x87, 0xF8, 0x1F, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFC, + 0x07, 0xF7, 0xFF, 0xC0, 0x3F, 0x1F, 0xF8, 0x01, 0xF8, 0x7F, 0x00, 0x1F, + 0xC0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x3F, 0x00, + 0x00, 0x03, 0xF8, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0xFE, 0x00, 0x00, + 0x07, 0xE0, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x87, 0xF0, + 0x0F, 0xFE, 0x7F, 0x01, 0xFF, 0xF7, 0xE0, 0x3F, 0xFF, 0x7E, 0x07, 0xFF, + 0xFF, 0xE0, 0xFF, 0x07, 0xFE, 0x1F, 0xE0, 0x3F, 0xE3, 0xFC, 0x03, 0xFC, + 0x3F, 0x80, 0x1F, 0xC7, 0xF0, 0x01, 0xFC, 0x7F, 0x00, 0x1F, 0xC7, 0xF0, + 0x01, 0xF8, 0xFE, 0x00, 0x1F, 0x8F, 0xE0, 0x03, 0xF8, 0xFE, 0x00, 0x3F, + 0x8F, 0xE0, 0x03, 0xF8, 0xFE, 0x00, 0x7F, 0x0F, 0xE0, 0x07, 0xF0, 0xFE, + 0x00, 0xFF, 0x0F, 0xF0, 0x1F, 0xF0, 0x7F, 0x87, 0xFF, 0x07, 0xFF, 0xFF, + 0xE0, 0x3F, 0xFF, 0x7E, 0x03, 0xFF, 0xEF, 0xE0, 0x1F, 0xFC, 0xFE, 0x00, + 0x7F, 0x0F, 0xC0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x01, + 0xFC, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x1F, 0x80, + 0x00, 0x03, 0xF8, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0xF8, 0x00, 0x07, + 0xF0, 0xF0, 0x7F, 0x3F, 0x07, 0xE7, 0xE0, 0x7E, 0xFE, 0x0F, 0xFF, 0xE0, + 0xFF, 0xFE, 0x0F, 0xFC, 0x00, 0xFF, 0x00, 0x0F, 0xE0, 0x01, 0xFC, 0x00, + 0x1F, 0xC0, 0x01, 0xF8, 0x00, 0x1F, 0x80, 0x03, 0xF8, 0x00, 0x3F, 0x80, + 0x03, 0xF8, 0x00, 0x3F, 0x00, 0x03, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xF0, + 0x00, 0x7F, 0x00, 0x07, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, + 0x00, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0xFF, 0xF8, 0x03, 0xFF, 0xFC, 0x07, + 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0x0F, 0xE0, 0xFF, 0x1F, 0xC0, 0x7F, 0x1F, + 0xC0, 0x7F, 0x1F, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x1F, 0xFF, 0xC0, 0x0F, + 0xFF, 0xF0, 0x07, 0xFF, 0xF8, 0x03, 0xFF, 0xFC, 0x00, 0x7F, 0xFE, 0x00, + 0x0F, 0xFE, 0x00, 0x03, 0xFE, 0x00, 0x00, 0xFE, 0xFC, 0x00, 0xFE, 0xFE, + 0x00, 0xFE, 0xFF, 0x03, 0xFC, 0x7F, 0xFF, 0xF8, 0x7F, 0xFF, 0xF8, 0x3F, + 0xFF, 0xE0, 0x1F, 0xFF, 0xC0, 0x03, 0xFE, 0x00, 0x03, 0xF0, 0x1F, 0xC0, + 0x7F, 0x01, 0xFC, 0x07, 0xE0, 0x3F, 0x80, 0xFE, 0x1F, 0xFF, 0x7F, 0xFD, + 0xFF, 0xFF, 0xFF, 0xC7, 0xF0, 0x1F, 0xC0, 0x7E, 0x01, 0xF8, 0x0F, 0xE0, + 0x3F, 0x80, 0xFE, 0x03, 0xF0, 0x0F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xE0, + 0x1F, 0x80, 0xFE, 0x03, 0xF8, 0x0F, 0xE0, 0x3F, 0xF0, 0xFF, 0xC3, 0xFF, + 0x07, 0xFC, 0x0F, 0xE0, 0x0F, 0xC0, 0x0F, 0xE1, 0xF8, 0x01, 0xFC, 0x7F, + 0x00, 0x3F, 0x0F, 0xE0, 0x0F, 0xE1, 0xFC, 0x01, 0xFC, 0x3F, 0x00, 0x3F, + 0x87, 0xE0, 0x07, 0xE1, 0xFC, 0x00, 0xFC, 0x3F, 0x80, 0x3F, 0x87, 0xF0, + 0x07, 0xF0, 0xFC, 0x00, 0xFE, 0x1F, 0x80, 0x1F, 0x87, 0xF0, 0x03, 0xF0, + 0xFE, 0x00, 0xFE, 0x1F, 0x80, 0x1F, 0xC3, 0xF0, 0x03, 0xF0, 0xFE, 0x00, + 0x7E, 0x1F, 0xC0, 0x1F, 0xC3, 0xF8, 0x07, 0xF8, 0x7F, 0x01, 0xFF, 0x0F, + 0xF0, 0x7F, 0xC1, 0xFF, 0xFF, 0xF8, 0x3F, 0xFF, 0xFF, 0x03, 0xFF, 0xEF, + 0xE0, 0x3F, 0xF9, 0xFC, 0x01, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x7F, 0x7F, + 0x00, 0x3F, 0xBF, 0x80, 0x3F, 0x8F, 0xC0, 0x1F, 0xC7, 0xE0, 0x1F, 0xC3, + 0xF0, 0x0F, 0xC1, 0xFC, 0x0F, 0xE0, 0xFE, 0x07, 0xE0, 0x7F, 0x07, 0xF0, + 0x3F, 0x83, 0xF0, 0x0F, 0xC3, 0xF8, 0x07, 0xE1, 0xF8, 0x03, 0xF1, 0xFC, + 0x01, 0xF8, 0xFC, 0x00, 0xFC, 0xFC, 0x00, 0x7E, 0x7E, 0x00, 0x3F, 0x7E, + 0x00, 0x0F, 0xBF, 0x00, 0x07, 0xFF, 0x00, 0x03, 0xFF, 0x80, 0x01, 0xFF, + 0x80, 0x00, 0xFF, 0x80, 0x00, 0x7F, 0xC0, 0x00, 0x3F, 0xC0, 0x00, 0x1F, + 0xE0, 0x00, 0x00, 0xFE, 0x03, 0xF8, 0x0F, 0xFF, 0xC0, 0x7F, 0x01, 0xFF, + 0xF8, 0x1F, 0xE0, 0x3F, 0x7F, 0x03, 0xFC, 0x0F, 0xEF, 0xE0, 0xFF, 0x81, + 0xF9, 0xFC, 0x1F, 0xF0, 0x7F, 0x3F, 0x83, 0xFE, 0x0F, 0xC3, 0xF0, 0xFF, + 0xC3, 0xF8, 0x7E, 0x1E, 0xF8, 0x7E, 0x0F, 0xC7, 0xDF, 0x1F, 0xC1, 0xF8, + 0xFB, 0xE3, 0xF0, 0x3F, 0x1E, 0x7C, 0x7E, 0x07, 0xE7, 0xCF, 0x9F, 0x80, + 0xFC, 0xF1, 0xF3, 0xF0, 0x1F, 0xBE, 0x3E, 0xFC, 0x03, 0xF7, 0x87, 0xDF, + 0x80, 0x7E, 0xF0, 0xFF, 0xE0, 0x0F, 0xFE, 0x1F, 0xFC, 0x01, 0xFF, 0x83, + 0xFF, 0x00, 0x3F, 0xF0, 0x7F, 0xE0, 0x07, 0xFC, 0x0F, 0xF8, 0x00, 0x7F, + 0x81, 0xFF, 0x00, 0x0F, 0xF0, 0x3F, 0xC0, 0x01, 0xFC, 0x07, 0xF8, 0x00, + 0x3F, 0x80, 0xFE, 0x00, 0x00, 0x03, 0xFC, 0x07, 0xF8, 0x1F, 0xE0, 0x7F, + 0x80, 0x7F, 0x03, 0xF8, 0x03, 0xF8, 0x3F, 0x80, 0x1F, 0xE3, 0xF8, 0x00, + 0x7F, 0x3F, 0x80, 0x03, 0xF9, 0xFC, 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0x7F, + 0xFC, 0x00, 0x01, 0xFF, 0xC0, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x7F, 0xC0, + 0x00, 0x01, 0xFC, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x01, 0xFF, 0x80, 0x00, + 0x1F, 0xFE, 0x00, 0x01, 0xFF, 0xF0, 0x00, 0x1F, 0xDF, 0xC0, 0x01, 0xFC, + 0xFE, 0x00, 0x1F, 0xE7, 0xF8, 0x00, 0xFE, 0x1F, 0xC0, 0x0F, 0xE0, 0xFE, + 0x00, 0xFF, 0x07, 0xF8, 0x0F, 0xF0, 0x1F, 0xC0, 0xFF, 0x00, 0xFF, 0x00, + 0x0F, 0xE0, 0x03, 0xF0, 0x7F, 0x00, 0x3F, 0x83, 0xF8, 0x01, 0xF8, 0x1F, + 0xC0, 0x1F, 0xC0, 0xFE, 0x00, 0xFC, 0x03, 0xF8, 0x0F, 0xE0, 0x1F, 0xC0, + 0x7E, 0x00, 0xFE, 0x07, 0xE0, 0x07, 0xF0, 0x3F, 0x00, 0x3F, 0x83, 0xF0, + 0x01, 0xFC, 0x1F, 0x80, 0x0F, 0xE1, 0xF8, 0x00, 0x3F, 0x0F, 0xC0, 0x01, + 0xF8, 0xFC, 0x00, 0x0F, 0xC7, 0xC0, 0x00, 0x7F, 0x7E, 0x00, 0x03, 0xFB, + 0xE0, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0xFF, 0xF0, 0x00, 0x03, 0xFF, 0x80, + 0x00, 0x1F, 0xF8, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x07, 0xFC, 0x00, 0x00, + 0x3F, 0xC0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x7F, + 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x03, 0xF8, 0x00, + 0x01, 0xFF, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x07, + 0xF8, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xC0, 0xFF, + 0xFF, 0xF0, 0x3F, 0xFF, 0xF8, 0x1F, 0xFF, 0xFE, 0x07, 0xFF, 0xFF, 0x80, + 0x00, 0x3F, 0xC0, 0x00, 0x1F, 0xE0, 0x00, 0x0F, 0xF0, 0x00, 0x07, 0xF8, + 0x00, 0x03, 0xFC, 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x7F, + 0x80, 0x00, 0x3F, 0xC0, 0x00, 0x1F, 0xE0, 0x00, 0x0F, 0xF0, 0x00, 0x07, + 0xF8, 0x00, 0x03, 0xFC, 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, 0x00, 0x00, + 0x7F, 0xFF, 0xFC, 0x1F, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, + 0xE0, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0x0F, 0xC0, 0x0F, 0xF0, 0x07, 0xFC, + 0x01, 0xFE, 0x00, 0xFF, 0x80, 0x3E, 0x00, 0x0F, 0x80, 0x07, 0xE0, 0x01, + 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x03, 0xE0, 0x00, 0xF8, + 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x07, 0xE0, 0x01, 0xF0, 0x00, 0x7C, 0x00, + 0x3F, 0x00, 0x7F, 0x80, 0x1F, 0x80, 0x07, 0xE0, 0x03, 0xFC, 0x00, 0x3F, + 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x07, 0xC0, + 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x01, + 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x07, 0xF8, 0x01, 0xFE, 0x00, 0x7F, + 0x80, 0x0F, 0xE0, 0x01, 0xF8, 0x00, 0x00, 0x78, 0x03, 0xC0, 0x1C, 0x01, + 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1C, 0x01, 0xE0, 0x0F, 0x00, 0x78, + 0x03, 0xC0, 0x1C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x3C, 0x01, + 0xE0, 0x0F, 0x00, 0x78, 0x03, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, + 0x03, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0x80, 0x3C, 0x01, + 0xE0, 0x0F, 0x00, 0x70, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x70, + 0x07, 0x80, 0x3C, 0x00, 0x00, 0x7E, 0x00, 0x1F, 0xC0, 0x07, 0xF0, 0x01, + 0xFE, 0x00, 0x7F, 0x80, 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x1F, + 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x0F, 0x80, + 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xF0, 0x00, + 0xFF, 0x00, 0x1F, 0x80, 0x07, 0xE0, 0x07, 0xF8, 0x03, 0xF0, 0x00, 0xF8, + 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, + 0x1F, 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x1F, + 0x80, 0x07, 0xC0, 0x01, 0xF0, 0x07, 0xFC, 0x01, 0xFE, 0x00, 0xFF, 0x80, + 0x3F, 0xC0, 0x0F, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0xFF, 0x80, 0x07, 0xFF, + 0x03, 0xDF, 0xFE, 0x0F, 0xF0, 0x7F, 0xFB, 0x80, 0xFF, 0xE0, 0x01, 0xFF, + 0x00, 0x03, 0xF0}; + +const GFXglyph FreeSansBoldOblique24pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 13, 0, 1}, // 0x20 ' ' + {0, 14, 34, 16, 5, -33}, // 0x21 '!' + {60, 18, 12, 22, 8, -33}, // 0x22 '"' + {87, 29, 33, 26, 2, -31}, // 0x23 '#' + {207, 26, 42, 26, 3, -35}, // 0x24 '$' + {344, 36, 34, 42, 6, -32}, // 0x25 '%' + {497, 29, 35, 34, 4, -33}, // 0x26 '&' + {624, 7, 12, 11, 8, -33}, // 0x27 ''' + {635, 17, 44, 16, 4, -33}, // 0x28 '(' + {729, 17, 44, 16, 0, -34}, // 0x29 ')' + {823, 15, 15, 18, 7, -33}, // 0x2A '*' + {852, 24, 22, 27, 4, -21}, // 0x2B '+' + {918, 10, 15, 13, 1, -6}, // 0x2C ',' + {937, 14, 6, 16, 3, -15}, // 0x2D '-' + {948, 8, 7, 13, 3, -6}, // 0x2E '.' + {955, 20, 34, 13, 0, -32}, // 0x2F '/' + {1040, 25, 35, 26, 4, -33}, // 0x30 '0' + {1150, 17, 33, 26, 8, -32}, // 0x31 '1' + {1221, 29, 34, 26, 1, -33}, // 0x32 '2' + {1345, 26, 35, 26, 3, -33}, // 0x33 '3' + {1459, 25, 32, 26, 3, -31}, // 0x34 '4' + {1559, 27, 34, 26, 3, -32}, // 0x35 '5' + {1674, 25, 35, 26, 4, -33}, // 0x36 '6' + {1784, 26, 33, 26, 6, -32}, // 0x37 '7' + {1892, 26, 35, 26, 3, -33}, // 0x38 '8' + {2006, 25, 35, 26, 4, -33}, // 0x39 '9' + {2116, 12, 25, 16, 5, -24}, // 0x3A ':' + {2154, 14, 33, 16, 3, -24}, // 0x3B ';' + {2212, 26, 23, 27, 4, -22}, // 0x3C '<' + {2287, 26, 18, 27, 3, -19}, // 0x3D '=' + {2346, 26, 23, 27, 1, -21}, // 0x3E '>' + {2421, 24, 35, 29, 8, -34}, // 0x3F '?' + {2526, 45, 41, 46, 3, -34}, // 0x40 '@' + {2757, 32, 34, 34, 1, -33}, // 0x41 'A' + {2893, 32, 34, 34, 4, -33}, // 0x42 'B' + {3029, 32, 36, 34, 5, -34}, // 0x43 'C' + {3173, 32, 34, 34, 4, -33}, // 0x44 'D' + {3309, 32, 34, 31, 4, -33}, // 0x45 'E' + {3445, 32, 34, 29, 3, -33}, // 0x46 'F' + {3581, 33, 36, 37, 5, -34}, // 0x47 'G' + {3730, 35, 34, 34, 3, -33}, // 0x48 'H' + {3879, 14, 34, 13, 3, -33}, // 0x49 'I' + {3939, 27, 35, 26, 3, -33}, // 0x4A 'J' + {4058, 37, 34, 34, 3, -33}, // 0x4B 'K' + {4216, 24, 34, 29, 4, -33}, // 0x4C 'L' + {4318, 41, 34, 39, 3, -33}, // 0x4D 'M' + {4493, 35, 34, 34, 3, -33}, // 0x4E 'N' + {4642, 34, 36, 37, 5, -34}, // 0x4F 'O' + {4795, 31, 34, 31, 4, -33}, // 0x50 'P' + {4927, 34, 37, 37, 5, -34}, // 0x51 'Q' + {5085, 33, 34, 34, 4, -33}, // 0x52 'R' + {5226, 30, 36, 31, 4, -34}, // 0x53 'S' + {5361, 28, 34, 29, 7, -33}, // 0x54 'T' + {5480, 32, 35, 34, 6, -33}, // 0x55 'U' + {5620, 30, 34, 31, 8, -33}, // 0x56 'V' + {5748, 43, 34, 44, 8, -33}, // 0x57 'W' + {5931, 37, 34, 31, 1, -33}, // 0x58 'X' + {6089, 29, 34, 31, 9, -33}, // 0x59 'Y' + {6213, 33, 34, 29, 1, -33}, // 0x5A 'Z' + {6354, 21, 43, 16, 1, -33}, // 0x5B '[' + {6467, 7, 36, 13, 6, -34}, // 0x5C '\' + {6499, 21, 43, 16, -1, -33}, // 0x5D ']' + {6612, 21, 20, 27, 6, -32}, // 0x5E '^' + {6665, 29, 4, 26, -3, 6}, // 0x5F '_' + {6680, 7, 7, 16, 8, -35}, // 0x60 '`' + {6687, 25, 26, 26, 2, -24}, // 0x61 'a' + {6769, 27, 35, 29, 3, -33}, // 0x62 'b' + {6888, 25, 26, 26, 4, -24}, // 0x63 'c' + {6970, 29, 35, 29, 4, -33}, // 0x64 'd' + {7097, 25, 26, 26, 3, -24}, // 0x65 'e' + {7179, 18, 34, 16, 4, -33}, // 0x66 'f' + {7256, 29, 35, 29, 2, -24}, // 0x67 'g' + {7383, 27, 34, 29, 3, -33}, // 0x68 'h' + {7498, 14, 34, 13, 3, -33}, // 0x69 'i' + {7558, 19, 44, 13, -2, -33}, // 0x6A 'j' + {7663, 28, 34, 26, 3, -33}, // 0x6B 'k' + {7782, 14, 34, 13, 3, -33}, // 0x6C 'l' + {7842, 40, 25, 42, 3, -24}, // 0x6D 'm' + {7967, 27, 25, 29, 3, -24}, // 0x6E 'n' + {8052, 26, 26, 29, 4, -24}, // 0x6F 'o' + {8137, 29, 35, 29, 1, -24}, // 0x70 'p' + {8264, 28, 35, 29, 3, -24}, // 0x71 'q' + {8387, 20, 25, 18, 3, -24}, // 0x72 'r' + {8450, 24, 26, 26, 3, -24}, // 0x73 's' + {8528, 14, 32, 16, 5, -30}, // 0x74 't' + {8584, 27, 26, 29, 4, -24}, // 0x75 'u' + {8672, 25, 25, 26, 6, -24}, // 0x76 'v' + {8751, 35, 25, 37, 6, -24}, // 0x77 'w' + {8861, 29, 25, 26, 1, -24}, // 0x78 'x' + {8952, 29, 35, 26, 2, -24}, // 0x79 'y' + {9079, 26, 25, 23, 1, -24}, // 0x7A 'z' + {9161, 18, 43, 18, 4, -33}, // 0x7B '{' + {9258, 13, 43, 13, 3, -33}, // 0x7C '|' + {9328, 18, 43, 18, 2, -33}, // 0x7D '}' + {9425, 22, 8, 27, 5, -14}}; // 0x7E '~' + +const GFXfont FreeSansBoldOblique24pt7b PROGMEM = { + (uint8_t *)FreeSansBoldOblique24pt7bBitmaps, + (GFXglyph *)FreeSansBoldOblique24pt7bGlyphs, 0x20, 0x7E, 56}; + +// Approx. 10119 bytes diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBoldOblique9pt7b.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBoldOblique9pt7b.h new file mode 100644 index 0000000..ff72f73 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansBoldOblique9pt7b.h @@ -0,0 +1,229 @@ +#pragma once +#include + +const uint8_t FreeSansBoldOblique9pt7bBitmaps[] PROGMEM = { + 0x21, 0x8E, 0x73, 0x18, 0xC6, 0x21, 0x19, 0xCE, 0x00, 0xEF, 0xDF, 0xBE, + 0x68, 0x80, 0x06, 0xC1, 0x99, 0xFF, 0xBF, 0xF1, 0xB0, 0x66, 0x0C, 0xC7, + 0xFC, 0xFF, 0x8C, 0x83, 0x30, 0x64, 0x00, 0x02, 0x00, 0xF0, 0x7F, 0x1D, + 0x73, 0xEE, 0x78, 0x0F, 0x00, 0xF8, 0x0F, 0xC1, 0xBB, 0xA7, 0x74, 0xEF, + 0xF8, 0xFE, 0x04, 0x00, 0x80, 0x3C, 0x11, 0xF8, 0x8E, 0x66, 0x31, 0x90, + 0xCE, 0x83, 0xF4, 0x07, 0xB0, 0x00, 0x9E, 0x04, 0xFC, 0x26, 0x31, 0x98, + 0xC4, 0x7E, 0x20, 0xF0, 0x07, 0x80, 0xFC, 0x1D, 0xC1, 0xDC, 0x1F, 0x80, + 0xE0, 0x3E, 0x37, 0x77, 0xE3, 0xEE, 0x3C, 0xE3, 0xCF, 0xFE, 0x3C, 0xE0, + 0xFF, 0xE8, 0x06, 0x06, 0x0C, 0x18, 0x38, 0x30, 0x70, 0x60, 0xE0, 0xE0, + 0xE0, 0xE0, 0xE0, 0xE0, 0x60, 0x70, 0x30, 0x0C, 0x0E, 0x06, 0x07, 0x07, + 0x07, 0x07, 0x07, 0x07, 0x06, 0x0E, 0x0C, 0x1C, 0x18, 0x30, 0x60, 0x60, + 0x32, 0xBF, 0x9C, 0xD2, 0x40, 0x0C, 0x06, 0x07, 0x1F, 0xFF, 0xF0, 0xC0, + 0xE0, 0x60, 0x77, 0x72, 0x6C, 0xFF, 0xC0, 0xFC, 0x02, 0x02, 0x04, 0x04, + 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x0F, 0x07, 0xE3, + 0x9D, 0xC7, 0x71, 0xDC, 0x7E, 0x1F, 0x8E, 0xE3, 0xB8, 0xEE, 0x73, 0xF8, + 0x3C, 0x00, 0x04, 0x3B, 0xF7, 0xE1, 0xC3, 0x06, 0x1C, 0x38, 0x70, 0xC1, + 0x87, 0x00, 0x0F, 0x87, 0xFC, 0xE3, 0xB8, 0x70, 0x0E, 0x03, 0x80, 0xF0, + 0x38, 0x1E, 0x07, 0x01, 0xC0, 0x7F, 0xCF, 0xF8, 0x0F, 0xC7, 0xFC, 0xE3, + 0xB8, 0x70, 0x1C, 0x0F, 0x03, 0xF0, 0x0E, 0x01, 0xDC, 0x3B, 0x8E, 0x7F, + 0x83, 0xE0, 0x03, 0xC0, 0xE0, 0x58, 0x2E, 0x13, 0x8C, 0xE6, 0x33, 0xFE, + 0xFF, 0x81, 0xC0, 0x60, 0x18, 0x0F, 0xE3, 0xFC, 0x60, 0x0C, 0x03, 0x78, + 0x7F, 0x9C, 0x70, 0x0E, 0x01, 0xDC, 0x33, 0x8E, 0x7F, 0x83, 0xE0, 0x0F, + 0x07, 0xE3, 0x9D, 0xC0, 0x7F, 0x1F, 0xEF, 0x3B, 0x8E, 0xE3, 0xB8, 0xCE, + 0x71, 0xF8, 0x3C, 0x00, 0x7F, 0xDF, 0xF0, 0x18, 0x0C, 0x06, 0x03, 0x81, + 0xC0, 0x60, 0x38, 0x0C, 0x07, 0x01, 0x80, 0x60, 0x00, 0x0F, 0x83, 0xFC, + 0xE3, 0x9C, 0x73, 0x9C, 0x3F, 0x0F, 0xE3, 0x8E, 0xE1, 0xDC, 0x3B, 0x8E, + 0x7F, 0xC3, 0xE0, 0x0F, 0x83, 0xF8, 0xE3, 0xB8, 0x77, 0x0E, 0xE1, 0xDC, + 0x7B, 0xFE, 0x3D, 0xC0, 0x33, 0x8E, 0x7F, 0x87, 0xC0, 0x77, 0x00, 0x00, + 0x0E, 0xE0, 0x39, 0xC0, 0x00, 0x01, 0xCE, 0x71, 0x19, 0x80, 0x00, 0x00, + 0x70, 0xFD, 0xF8, 0x70, 0x3F, 0x03, 0xF8, 0x1E, 0x01, 0x80, 0x7F, 0xDF, + 0xF0, 0x00, 0x00, 0xFF, 0xBF, 0xE0, 0x60, 0x1E, 0x07, 0xF0, 0x3F, 0x03, + 0x87, 0xEF, 0xC3, 0x80, 0x00, 0x00, 0x1F, 0x1F, 0xFE, 0x1F, 0x87, 0x01, + 0xC0, 0xE0, 0x70, 0x78, 0x3C, 0x0E, 0x00, 0x00, 0xE0, 0x38, 0x00, 0x00, + 0xFC, 0x00, 0xFF, 0xC0, 0xF0, 0x78, 0x70, 0x07, 0x38, 0x01, 0xCC, 0x3F, + 0x36, 0x31, 0x8D, 0x98, 0x63, 0xC4, 0x11, 0xF3, 0x0C, 0x6C, 0xC6, 0x73, + 0x3E, 0xF8, 0xE7, 0x3C, 0x1E, 0x00, 0x03, 0xFE, 0x00, 0x3F, 0x00, 0x01, + 0xE0, 0x0F, 0x00, 0xF8, 0x07, 0xC0, 0x6F, 0x03, 0x38, 0x31, 0xC3, 0x8E, + 0x1F, 0xF1, 0xFF, 0x8C, 0x1E, 0xE0, 0x76, 0x03, 0x80, 0x1F, 0xF0, 0xFF, + 0xC6, 0x0E, 0x70, 0x73, 0x87, 0x1F, 0xF0, 0xFF, 0x86, 0x0E, 0x70, 0x73, + 0x83, 0x9C, 0x38, 0xFF, 0xC7, 0xF8, 0x00, 0x07, 0xE0, 0xFF, 0x8F, 0x1E, + 0x70, 0x77, 0x00, 0x30, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x07, 0x03, 0xBC, + 0x38, 0xFF, 0x83, 0xF0, 0x00, 0x1F, 0xE0, 0xFF, 0x86, 0x1E, 0x70, 0x73, + 0x83, 0x9C, 0x1C, 0xC0, 0xE6, 0x07, 0x70, 0x73, 0x83, 0x9C, 0x38, 0xFF, + 0x8F, 0xF0, 0x00, 0x1F, 0xF8, 0xFF, 0x86, 0x00, 0x70, 0x03, 0x80, 0x1F, + 0xF0, 0xFF, 0x86, 0x00, 0x70, 0x03, 0x80, 0x1C, 0x00, 0xFF, 0xC7, 0xFC, + 0x00, 0x1F, 0xF1, 0xFF, 0x18, 0x03, 0x80, 0x38, 0x03, 0xFC, 0x3F, 0xC7, + 0x00, 0x70, 0x07, 0x00, 0x70, 0x06, 0x00, 0xE0, 0x00, 0x07, 0xC1, 0xFE, + 0x38, 0x77, 0x03, 0x70, 0x0E, 0x00, 0xE1, 0xEE, 0x1E, 0xE0, 0x6E, 0x0E, + 0x70, 0xE7, 0xFC, 0x1F, 0x40, 0x1C, 0x1C, 0x60, 0x63, 0x83, 0x8E, 0x0E, + 0x38, 0x38, 0xFF, 0xC3, 0xFF, 0x1C, 0x1C, 0x70, 0x71, 0xC1, 0xC6, 0x06, + 0x18, 0x38, 0xE0, 0xE0, 0x39, 0xCE, 0x63, 0x39, 0xCE, 0x63, 0x39, 0xCE, + 0x00, 0x00, 0xC0, 0x18, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x00, 0xE0, 0x1C, + 0xE3, 0x9C, 0x73, 0x9C, 0x7F, 0x87, 0xC0, 0x1C, 0x3C, 0x71, 0xC1, 0x8E, + 0x0E, 0x70, 0x3B, 0x80, 0xFC, 0x03, 0xF0, 0x0E, 0xE0, 0x73, 0x81, 0xC7, + 0x07, 0x1C, 0x18, 0x38, 0xE0, 0xF0, 0x1C, 0x07, 0x01, 0x80, 0xE0, 0x38, + 0x0E, 0x03, 0x80, 0xC0, 0x70, 0x1C, 0x07, 0x01, 0xFF, 0x7F, 0x80, 0x1E, + 0x1F, 0x1E, 0x1E, 0x3E, 0x1E, 0x3E, 0x3E, 0x36, 0x3E, 0x36, 0x6E, 0x36, + 0x6C, 0x76, 0xCC, 0x76, 0xDC, 0x67, 0x9C, 0x67, 0x98, 0xE7, 0x18, 0xE7, + 0x18, 0x1C, 0x1C, 0x70, 0x63, 0xE1, 0x8F, 0x8E, 0x3E, 0x38, 0xDC, 0xC3, + 0x33, 0x1C, 0xEC, 0x71, 0xF1, 0xC7, 0xC6, 0x1E, 0x18, 0x38, 0xE0, 0xE0, + 0x07, 0xC0, 0xFF, 0x8E, 0x1E, 0xE0, 0x77, 0x03, 0xF0, 0x1F, 0x80, 0xFC, + 0x07, 0xE0, 0x77, 0x03, 0xBC, 0x38, 0xFF, 0x81, 0xF0, 0x00, 0x1F, 0xF0, + 0xFF, 0xC6, 0x0E, 0x70, 0x73, 0x83, 0x9C, 0x38, 0xFF, 0x87, 0xF8, 0x70, + 0x03, 0x80, 0x1C, 0x00, 0xC0, 0x0E, 0x00, 0x00, 0x07, 0xC0, 0xFF, 0x8F, + 0x1C, 0xE0, 0x77, 0x03, 0xB0, 0x1F, 0x80, 0xFC, 0x06, 0xE1, 0x77, 0x1F, + 0x3C, 0x78, 0xFF, 0xC1, 0xF6, 0x00, 0x20, 0x1F, 0xF0, 0xFF, 0xC6, 0x0E, + 0x70, 0x73, 0x83, 0x9C, 0x38, 0xFF, 0x87, 0xFC, 0x70, 0x73, 0x83, 0x9C, + 0x38, 0xC1, 0xC6, 0x0F, 0x00, 0x07, 0xE0, 0xFF, 0xC7, 0x0E, 0x70, 0x73, + 0x80, 0x1F, 0x80, 0x7F, 0x80, 0x7E, 0x00, 0x77, 0x03, 0xBC, 0x38, 0xFF, + 0xC3, 0xF8, 0x00, 0xFF, 0xDF, 0xF8, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x06, + 0x01, 0xC0, 0x38, 0x07, 0x00, 0xC0, 0x18, 0x07, 0x00, 0x38, 0x31, 0xC1, + 0x8C, 0x1C, 0xE0, 0xE7, 0x07, 0x38, 0x31, 0xC3, 0x9C, 0x1C, 0xE0, 0xE7, + 0x06, 0x38, 0x70, 0xFF, 0x03, 0xE0, 0x00, 0xE0, 0xFC, 0x1D, 0x87, 0x30, + 0xC6, 0x38, 0xC6, 0x19, 0xC3, 0xB0, 0x7E, 0x0F, 0x80, 0xF0, 0x1C, 0x03, + 0x00, 0xE1, 0xC3, 0xF1, 0xE3, 0xB8, 0xF1, 0xDC, 0x78, 0xCE, 0x6C, 0xE7, + 0x36, 0x63, 0xB3, 0x70, 0xD9, 0xB0, 0x7C, 0xD8, 0x3C, 0x78, 0x1E, 0x3C, + 0x0E, 0x1C, 0x07, 0x0E, 0x00, 0x0E, 0x1C, 0x38, 0xE0, 0xE7, 0x01, 0xD8, + 0x07, 0xE0, 0x0F, 0x00, 0x38, 0x01, 0xE0, 0x0F, 0xC0, 0x77, 0x01, 0x8E, + 0x0E, 0x38, 0x70, 0xF0, 0xE0, 0xEE, 0x39, 0xC7, 0x39, 0xC3, 0x70, 0x7C, + 0x0F, 0x80, 0xE0, 0x1C, 0x03, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x3F, 0xF3, + 0xFF, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x3C, 0x07, + 0x80, 0x70, 0x0F, 0xFC, 0xFF, 0xC0, 0x0F, 0x0F, 0x0C, 0x1C, 0x18, 0x18, + 0x18, 0x18, 0x30, 0x30, 0x30, 0x30, 0x60, 0x60, 0x60, 0x78, 0x78, 0x12, + 0x4C, 0x92, 0x49, 0x26, 0xD9, 0x20, 0x1E, 0x1E, 0x06, 0x06, 0x06, 0x0C, + 0x0C, 0x0C, 0x0C, 0x18, 0x18, 0x18, 0x18, 0x38, 0x30, 0xF0, 0xF0, 0x06, + 0x0E, 0x0E, 0x1B, 0x33, 0x33, 0x63, 0x63, 0xFF, 0xE0, 0xCC, 0x1F, 0x8F, + 0xF3, 0x1C, 0x06, 0x1F, 0x9F, 0xEE, 0x3B, 0x9C, 0xFF, 0x1D, 0xC0, 0x18, + 0x03, 0x00, 0xE0, 0x1D, 0xC3, 0xFC, 0x71, 0xDC, 0x3B, 0x87, 0x70, 0xEE, + 0x39, 0xCF, 0x7F, 0xCF, 0xE0, 0x0F, 0x0F, 0xF7, 0x1D, 0xC0, 0xE0, 0x38, + 0x0E, 0x03, 0x8E, 0x7F, 0x0F, 0x80, 0x00, 0x60, 0x06, 0x00, 0x61, 0xEE, + 0x3F, 0xE7, 0x9C, 0x71, 0xCE, 0x1C, 0xE1, 0xCE, 0x1C, 0xE3, 0x87, 0xF8, + 0x7F, 0x80, 0x1F, 0x0F, 0xE7, 0x1D, 0xC7, 0xFF, 0xFF, 0xFE, 0x03, 0x8E, + 0x7F, 0x0F, 0x80, 0x1C, 0xF3, 0x3F, 0xFD, 0xC7, 0x18, 0x63, 0x8E, 0x30, + 0xC0, 0x0F, 0x71, 0xFE, 0x3C, 0xE3, 0x8E, 0x70, 0xE7, 0x0E, 0x70, 0xC7, + 0x1C, 0x3F, 0xC3, 0xFC, 0x01, 0xCE, 0x38, 0x7F, 0x03, 0xE0, 0x18, 0x03, + 0x00, 0xE0, 0x1D, 0xE3, 0xFE, 0x71, 0xCC, 0x3B, 0x86, 0x70, 0xCC, 0x39, + 0x87, 0x30, 0xEE, 0x18, 0x39, 0xC0, 0x63, 0x39, 0xCE, 0x63, 0x39, 0xCE, + 0x00, 0x06, 0x06, 0x00, 0x0E, 0x0E, 0x0C, 0x0C, 0x1C, 0x1C, 0x1C, 0x18, + 0x18, 0x38, 0x38, 0x30, 0x70, 0xE0, 0x18, 0x03, 0x00, 0xE0, 0x1C, 0xE3, + 0x38, 0x6E, 0x1F, 0x83, 0xF0, 0x7E, 0x0E, 0xE1, 0x9C, 0x73, 0x8E, 0x38, + 0x39, 0xCE, 0x63, 0x39, 0xCE, 0x63, 0x39, 0xCE, 0x00, 0x3B, 0x9E, 0x3F, + 0xFF, 0x39, 0xC7, 0x71, 0xC6, 0x71, 0x86, 0x71, 0x8E, 0x63, 0x8E, 0x63, + 0x8C, 0xE3, 0x8C, 0xE3, 0x1C, 0x3B, 0xC7, 0xFC, 0xE3, 0xB8, 0x77, 0x0C, + 0xE1, 0x98, 0x73, 0x0E, 0xE1, 0xDC, 0x30, 0x0F, 0x87, 0xF9, 0xE7, 0xB8, + 0x7E, 0x0F, 0xC1, 0xF8, 0x77, 0x9E, 0x7F, 0x87, 0xC0, 0x1D, 0xE1, 0xFE, + 0x1C, 0x73, 0x87, 0x38, 0x73, 0x87, 0x38, 0xE3, 0x8E, 0x7F, 0xC7, 0xF8, + 0x60, 0x06, 0x00, 0x60, 0x0E, 0x00, 0x1E, 0xE7, 0xFD, 0xE7, 0x38, 0xEE, + 0x1D, 0xC3, 0xB8, 0x77, 0x1C, 0x7F, 0x8F, 0xF0, 0x0E, 0x01, 0x80, 0x30, + 0x06, 0x00, 0x3B, 0x36, 0x38, 0x70, 0x70, 0x70, 0x60, 0x60, 0xE0, 0xE0, + 0x3E, 0x3F, 0xF8, 0xFC, 0x0F, 0xC3, 0xF8, 0x3D, 0x8E, 0xFE, 0x3E, 0x00, + 0x38, 0xCF, 0xFE, 0x71, 0x86, 0x38, 0xE3, 0x8F, 0x3C, 0x31, 0xDC, 0x77, + 0x19, 0x86, 0x63, 0xB8, 0xEE, 0x33, 0x9C, 0xFF, 0x1F, 0xC0, 0xE1, 0x98, + 0xE6, 0x31, 0x9C, 0x66, 0x1B, 0x86, 0xC1, 0xF0, 0x78, 0x0E, 0x00, 0xE7, + 0x1B, 0x9C, 0xEE, 0x73, 0x3B, 0xDC, 0xEB, 0x63, 0xAD, 0x8F, 0xBC, 0x1C, + 0xF0, 0x73, 0xC1, 0xCE, 0x00, 0x1C, 0xE1, 0xCC, 0x0D, 0x80, 0xF8, 0x0F, + 0x00, 0xF0, 0x1F, 0x03, 0xB8, 0x33, 0x87, 0x38, 0x70, 0xCE, 0x38, 0xC6, + 0x19, 0xC3, 0x30, 0x66, 0x0F, 0x81, 0xF0, 0x3C, 0x03, 0x80, 0x60, 0x18, + 0x0F, 0x01, 0xC0, 0x00, 0x1F, 0xCF, 0xF0, 0x38, 0x1C, 0x0E, 0x07, 0x03, + 0x81, 0xC0, 0x7F, 0xBF, 0xE0, 0x0E, 0x38, 0x61, 0x83, 0x06, 0x0C, 0x78, + 0xF0, 0xC1, 0x83, 0x0E, 0x1C, 0x38, 0x78, 0x70, 0x18, 0xC4, 0x21, 0x18, + 0xC4, 0x21, 0x18, 0xC4, 0x23, 0x18, 0x80, 0x1C, 0x3C, 0x38, 0x70, 0xE1, + 0x83, 0x06, 0x1E, 0x5C, 0x60, 0xC1, 0x83, 0x0C, 0x38, 0xE0, 0x71, 0x8E}; + +const GFXglyph FreeSansBoldOblique9pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 5, 0, 1}, // 0x20 ' ' + {0, 5, 13, 6, 2, -12}, // 0x21 '!' + {9, 7, 5, 9, 3, -12}, // 0x22 '"' + {14, 11, 12, 10, 1, -11}, // 0x23 '#' + {31, 11, 16, 10, 1, -13}, // 0x24 '$' + {53, 14, 13, 16, 2, -12}, // 0x25 '%' + {76, 12, 13, 13, 2, -12}, // 0x26 '&' + {96, 3, 5, 4, 3, -12}, // 0x27 ''' + {98, 8, 17, 6, 2, -12}, // 0x28 '(' + {115, 8, 17, 6, -2, -13}, // 0x29 ')' + {132, 6, 6, 7, 3, -12}, // 0x2A '*' + {137, 9, 8, 11, 2, -7}, // 0x2B '+' + {146, 4, 6, 5, 0, -2}, // 0x2C ',' + {149, 5, 2, 6, 1, -5}, // 0x2D '-' + {151, 3, 2, 5, 1, -1}, // 0x2E '.' + {152, 8, 13, 5, 0, -12}, // 0x2F '/' + {165, 10, 13, 10, 1, -12}, // 0x30 '0' + {182, 7, 13, 10, 3, -12}, // 0x31 '1' + {194, 11, 13, 10, 1, -12}, // 0x32 '2' + {212, 11, 13, 10, 1, -12}, // 0x33 '3' + {230, 10, 12, 10, 1, -11}, // 0x34 '4' + {245, 11, 13, 10, 1, -12}, // 0x35 '5' + {263, 10, 13, 10, 2, -12}, // 0x36 '6' + {280, 10, 13, 10, 2, -12}, // 0x37 '7' + {297, 11, 13, 10, 1, -12}, // 0x38 '8' + {315, 11, 13, 10, 1, -12}, // 0x39 '9' + {333, 4, 9, 6, 2, -8}, // 0x3A ':' + {338, 5, 12, 6, 1, -8}, // 0x3B ';' + {346, 10, 9, 11, 1, -8}, // 0x3C '<' + {358, 10, 6, 11, 1, -6}, // 0x3D '=' + {366, 10, 9, 11, 1, -7}, // 0x3E '>' + {378, 10, 13, 11, 3, -12}, // 0x3F '?' + {395, 18, 16, 18, 1, -13}, // 0x40 '@' + {431, 13, 13, 13, 0, -12}, // 0x41 'A' + {453, 13, 13, 13, 1, -12}, // 0x42 'B' + {475, 13, 13, 13, 2, -12}, // 0x43 'C' + {497, 13, 13, 13, 1, -12}, // 0x44 'D' + {519, 13, 13, 12, 1, -12}, // 0x45 'E' + {541, 12, 13, 11, 1, -12}, // 0x46 'F' + {561, 12, 13, 14, 2, -12}, // 0x47 'G' + {581, 14, 13, 13, 1, -12}, // 0x48 'H' + {604, 5, 13, 5, 1, -12}, // 0x49 'I' + {613, 11, 13, 10, 1, -12}, // 0x4A 'J' + {631, 14, 13, 13, 1, -12}, // 0x4B 'K' + {654, 10, 13, 11, 1, -12}, // 0x4C 'L' + {671, 16, 13, 15, 1, -12}, // 0x4D 'M' + {697, 14, 13, 13, 1, -12}, // 0x4E 'N' + {720, 13, 13, 14, 2, -12}, // 0x4F 'O' + {742, 13, 13, 12, 1, -12}, // 0x50 'P' + {764, 13, 14, 14, 2, -12}, // 0x51 'Q' + {787, 13, 13, 13, 1, -12}, // 0x52 'R' + {809, 13, 13, 12, 1, -12}, // 0x53 'S' + {831, 11, 13, 11, 3, -12}, // 0x54 'T' + {849, 13, 13, 13, 2, -12}, // 0x55 'U' + {871, 11, 13, 12, 3, -12}, // 0x56 'V' + {889, 17, 13, 17, 3, -12}, // 0x57 'W' + {917, 14, 13, 12, 0, -12}, // 0x58 'X' + {940, 11, 13, 12, 3, -12}, // 0x59 'Y' + {958, 12, 13, 11, 1, -12}, // 0x5A 'Z' + {978, 8, 17, 6, 0, -12}, // 0x5B '[' + {995, 3, 17, 5, 2, -16}, // 0x5C '\' + {1002, 8, 17, 6, 0, -13}, // 0x5D ']' + {1019, 8, 8, 11, 2, -12}, // 0x5E '^' + {1027, 11, 1, 10, -1, 4}, // 0x5F '_' + {1029, 3, 2, 6, 3, -12}, // 0x60 '`' + {1030, 10, 10, 10, 1, -9}, // 0x61 'a' + {1043, 11, 13, 11, 1, -12}, // 0x62 'b' + {1061, 10, 10, 10, 1, -9}, // 0x63 'c' + {1074, 12, 13, 11, 1, -12}, // 0x64 'd' + {1094, 10, 10, 10, 1, -9}, // 0x65 'e' + {1107, 6, 13, 6, 2, -12}, // 0x66 'f' + {1117, 12, 14, 11, 0, -9}, // 0x67 'g' + {1138, 11, 13, 11, 1, -12}, // 0x68 'h' + {1156, 5, 13, 5, 1, -12}, // 0x69 'i' + {1165, 8, 17, 5, -1, -12}, // 0x6A 'j' + {1182, 11, 13, 10, 1, -12}, // 0x6B 'k' + {1200, 5, 13, 5, 1, -12}, // 0x6C 'l' + {1209, 16, 10, 16, 1, -9}, // 0x6D 'm' + {1229, 11, 10, 11, 1, -9}, // 0x6E 'n' + {1243, 11, 10, 11, 1, -9}, // 0x6F 'o' + {1257, 12, 14, 11, 0, -9}, // 0x70 'p' + {1278, 11, 14, 11, 1, -9}, // 0x71 'q' + {1298, 8, 10, 7, 1, -9}, // 0x72 'r' + {1308, 9, 10, 10, 2, -9}, // 0x73 's' + {1320, 6, 12, 6, 2, -11}, // 0x74 't' + {1329, 10, 10, 11, 2, -9}, // 0x75 'u' + {1342, 10, 10, 10, 2, -9}, // 0x76 'v' + {1355, 14, 10, 14, 2, -9}, // 0x77 'w' + {1373, 12, 10, 10, 0, -9}, // 0x78 'x' + {1388, 11, 14, 10, 1, -9}, // 0x79 'y' + {1408, 10, 10, 9, 0, -9}, // 0x7A 'z' + {1421, 7, 17, 7, 2, -12}, // 0x7B '{' + {1436, 5, 17, 5, 1, -12}, // 0x7C '|' + {1447, 7, 17, 7, 0, -13}, // 0x7D '}' + {1462, 8, 2, 11, 2, -4}}; // 0x7E '~' + +const GFXfont FreeSansBoldOblique9pt7b PROGMEM = { + (uint8_t *)FreeSansBoldOblique9pt7bBitmaps, + (GFXglyph *)FreeSansBoldOblique9pt7bGlyphs, 0x20, 0x7E, 22}; + +// Approx. 2136 bytes diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansOblique12pt7b.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansOblique12pt7b.h new file mode 100644 index 0000000..ce55f4d --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansOblique12pt7b.h @@ -0,0 +1,304 @@ +#pragma once +#include + +const uint8_t FreeSansOblique12pt7bBitmaps[] PROGMEM = { + 0x0C, 0x61, 0x86, 0x18, 0x63, 0x0C, 0x30, 0xC2, 0x18, 0x61, 0x00, 0x00, + 0xC3, 0x00, 0xCF, 0x3C, 0xE2, 0x8A, 0x20, 0x01, 0x8C, 0x03, 0x18, 0x06, + 0x60, 0x18, 0xC0, 0x31, 0x83, 0xFF, 0x87, 0xFF, 0x03, 0x18, 0x0C, 0x60, + 0x18, 0xC0, 0x23, 0x03, 0xFF, 0x8F, 0xFF, 0x02, 0x30, 0x0C, 0x60, 0x18, + 0x80, 0x63, 0x00, 0xC6, 0x00, 0x00, 0x80, 0x3F, 0x03, 0xFC, 0x32, 0x73, + 0x91, 0x99, 0x8C, 0xCC, 0x06, 0x60, 0x3E, 0x00, 0x7E, 0x01, 0xFC, 0x0C, + 0xEC, 0x43, 0x62, 0x1B, 0x11, 0x9D, 0x9C, 0x7F, 0xC1, 0xF8, 0x02, 0x00, + 0x10, 0x01, 0x80, 0x00, 0x00, 0x01, 0x83, 0xC0, 0x60, 0xFC, 0x18, 0x30, + 0xC2, 0x0C, 0x18, 0xC1, 0x83, 0x30, 0x38, 0xCC, 0x03, 0xF1, 0x00, 0x3C, + 0x40, 0x00, 0x18, 0xF0, 0x06, 0x3F, 0x01, 0x8C, 0x30, 0x23, 0x06, 0x0C, + 0x60, 0xC3, 0x0E, 0x30, 0xC0, 0xFC, 0x10, 0x0F, 0x00, 0x01, 0xE0, 0x3F, + 0x81, 0x8C, 0x18, 0x60, 0xC3, 0x06, 0x30, 0x1F, 0x00, 0xE0, 0x1F, 0x01, + 0xDC, 0xD8, 0x6D, 0x81, 0xEC, 0x0E, 0x60, 0x73, 0x87, 0xCF, 0xE6, 0x3E, + 0x38, 0xFE, 0xA0, 0x03, 0x06, 0x04, 0x0C, 0x18, 0x18, 0x30, 0x30, 0x60, + 0x60, 0x60, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x40, 0x60, + 0x60, 0x20, 0x04, 0x06, 0x06, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x06, 0x06, 0x06, 0x0C, 0x0C, 0x18, 0x18, 0x30, 0x20, 0x60, + 0xC0, 0x0C, 0x0C, 0x49, 0x7F, 0x3C, 0x3C, 0x6C, 0x00, 0x03, 0x00, 0x30, + 0x03, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x06, 0x00, 0x60, 0x06, 0x00, 0xC0, + 0x0C, 0x00, 0x77, 0x22, 0x6C, 0xFF, 0xF0, 0xFC, 0x00, 0x40, 0x30, 0x08, + 0x06, 0x01, 0x00, 0xC0, 0x20, 0x18, 0x04, 0x02, 0x00, 0x80, 0x40, 0x10, + 0x08, 0x02, 0x01, 0x00, 0xC0, 0x20, 0x00, 0x07, 0xC0, 0xFE, 0x1C, 0x73, + 0x83, 0x30, 0x36, 0x03, 0x60, 0x36, 0x03, 0xC0, 0x7C, 0x07, 0xC0, 0x6C, + 0x06, 0xC0, 0xEC, 0x0C, 0xE3, 0x87, 0xF0, 0x3E, 0x00, 0x02, 0x0C, 0x77, + 0xEF, 0xC1, 0x83, 0x0C, 0x18, 0x30, 0x61, 0xC3, 0x06, 0x0C, 0x18, 0x60, + 0x03, 0xF0, 0x1F, 0xE0, 0xE1, 0xC7, 0x03, 0x18, 0x0C, 0x00, 0x30, 0x01, + 0x80, 0x0E, 0x00, 0x70, 0x07, 0x80, 0x78, 0x07, 0x80, 0x38, 0x01, 0xC0, + 0x06, 0x00, 0x1F, 0xFC, 0xFF, 0xE0, 0x07, 0xC0, 0xFE, 0x1C, 0x73, 0x03, + 0x30, 0x30, 0x03, 0x00, 0xE0, 0x7C, 0x07, 0xC0, 0x0E, 0x00, 0x60, 0x06, + 0xC0, 0x6C, 0x0C, 0xE1, 0xC7, 0xF8, 0x3E, 0x00, 0x00, 0x60, 0x06, 0x00, + 0xE0, 0x1E, 0x03, 0xE0, 0x6C, 0x0C, 0xC1, 0x8C, 0x30, 0xC6, 0x1C, 0xC1, + 0x8F, 0xFF, 0xFF, 0xE0, 0x18, 0x03, 0x00, 0x30, 0x03, 0x00, 0x0F, 0xF8, + 0x7F, 0xC6, 0x00, 0x30, 0x01, 0x00, 0x1B, 0xC0, 0xFF, 0x06, 0x1C, 0x60, + 0x60, 0x03, 0x00, 0x18, 0x00, 0xC0, 0x0C, 0x60, 0x63, 0x86, 0x0F, 0xE0, + 0x3E, 0x00, 0x03, 0xC0, 0xFE, 0x1C, 0x73, 0x83, 0x30, 0x06, 0x00, 0x67, + 0x87, 0xFC, 0xF0, 0xEE, 0x06, 0xC0, 0x6C, 0x06, 0xC0, 0x4C, 0x0C, 0xE1, + 0x87, 0xF8, 0x3E, 0x00, 0x3F, 0xFB, 0xFF, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, + 0x00, 0xC0, 0x06, 0x00, 0x60, 0x06, 0x00, 0x70, 0x03, 0x00, 0x30, 0x03, + 0x80, 0x18, 0x01, 0xC0, 0x0C, 0x00, 0xE0, 0x00, 0x07, 0xC0, 0xFE, 0x1C, + 0x73, 0x03, 0x30, 0x33, 0x03, 0x38, 0x61, 0xFC, 0x3F, 0xC7, 0x0E, 0x60, + 0x6C, 0x06, 0xC0, 0x6C, 0x0C, 0xE1, 0xC7, 0xF8, 0x3E, 0x00, 0x07, 0xC1, + 0xFE, 0x38, 0x73, 0x03, 0x60, 0x36, 0x03, 0x60, 0x36, 0x07, 0x70, 0xF3, + 0xFE, 0x1E, 0x60, 0x0E, 0x00, 0xCC, 0x1C, 0xE3, 0x87, 0xF0, 0x3C, 0x00, + 0x39, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x39, 0xC0, 0x1C, 0x70, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x1C, 0x20, 0x86, 0x30, 0x00, 0x00, 0x01, 0xC0, + 0x3C, 0x0F, 0x81, 0xE0, 0x7C, 0x03, 0x80, 0x0F, 0x00, 0x1F, 0x00, 0x3E, + 0x00, 0x38, 0x00, 0x40, 0x7F, 0xFB, 0xFF, 0x80, 0x00, 0x00, 0x0F, 0xFF, + 0x7F, 0xF0, 0x20, 0x01, 0xC0, 0x07, 0xC0, 0x0F, 0x80, 0x0F, 0x00, 0x1C, + 0x03, 0xE0, 0x78, 0x1F, 0x03, 0xC0, 0x38, 0x00, 0x00, 0x00, 0x0F, 0x87, + 0xF9, 0xC3, 0xB0, 0x3C, 0x06, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x01, 0xC0, + 0x30, 0x0C, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, + 0x3F, 0x80, 0x01, 0xFF, 0xE0, 0x0F, 0x01, 0xE0, 0x38, 0x00, 0xE0, 0xE0, + 0x00, 0xC3, 0x87, 0x81, 0xCE, 0x1F, 0xB1, 0x98, 0x71, 0xC3, 0x61, 0x83, + 0x86, 0xC6, 0x06, 0x0F, 0x0C, 0x0C, 0x3E, 0x30, 0x30, 0x6C, 0x60, 0x61, + 0xD8, 0xC1, 0x87, 0x31, 0xC7, 0x1C, 0x61, 0xF7, 0xF0, 0x63, 0xCF, 0x80, + 0xE0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xFF, 0xE0, 0x00, 0x7F, 0x00, 0x00, + 0x00, 0x38, 0x00, 0x78, 0x00, 0x7C, 0x00, 0xFC, 0x00, 0xDC, 0x01, 0xCC, + 0x01, 0x8C, 0x03, 0x8C, 0x03, 0x0C, 0x06, 0x0C, 0x0E, 0x0E, 0x0F, 0xFE, + 0x1F, 0xFE, 0x18, 0x06, 0x38, 0x06, 0x30, 0x06, 0x70, 0x06, 0x60, 0x07, + 0x0F, 0xF8, 0x1F, 0xF8, 0x60, 0x38, 0xC0, 0x31, 0x80, 0x63, 0x00, 0xCE, + 0x03, 0x18, 0x0C, 0x3F, 0xF0, 0x7F, 0xF0, 0xC0, 0x73, 0x00, 0x66, 0x00, + 0xCC, 0x01, 0x98, 0x06, 0x70, 0x1C, 0xFF, 0xF1, 0xFF, 0x80, 0x01, 0xF8, + 0x07, 0xFE, 0x0E, 0x0E, 0x1C, 0x03, 0x38, 0x03, 0x30, 0x00, 0x60, 0x00, + 0x60, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x06, + 0xC0, 0x0C, 0xE0, 0x1C, 0x70, 0x78, 0x3F, 0xF0, 0x1F, 0x80, 0x0F, 0xF8, + 0x1F, 0xFC, 0x18, 0x0E, 0x18, 0x07, 0x18, 0x03, 0x18, 0x03, 0x38, 0x03, + 0x30, 0x03, 0x30, 0x03, 0x30, 0x03, 0x70, 0x06, 0x70, 0x06, 0x60, 0x0C, + 0x60, 0x0C, 0x60, 0x18, 0xE0, 0x78, 0xFF, 0xE0, 0xFF, 0x80, 0x0F, 0xFF, + 0x1F, 0xFE, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x38, 0x00, + 0x30, 0x00, 0x3F, 0xFC, 0x3F, 0xF8, 0x70, 0x00, 0x70, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x60, 0x00, 0xE0, 0x00, 0xFF, 0xF8, 0xFF, 0xF8, 0x0F, 0xFE, + 0x3F, 0xFC, 0x60, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, 0x0E, 0x00, 0x18, + 0x00, 0x3F, 0xF0, 0x7F, 0xE1, 0xC0, 0x03, 0x80, 0x06, 0x00, 0x0C, 0x00, + 0x18, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x80, 0x00, 0x01, 0xF8, 0x07, 0xFE, + 0x0E, 0x0F, 0x18, 0x03, 0x30, 0x03, 0x70, 0x00, 0x60, 0x00, 0x60, 0x00, + 0xC0, 0x7F, 0xC0, 0x7E, 0xC0, 0x02, 0xC0, 0x06, 0xC0, 0x06, 0xE0, 0x0E, + 0x60, 0x1E, 0x78, 0x3C, 0x3F, 0xE4, 0x0F, 0x84, 0x0C, 0x01, 0x8E, 0x00, + 0xC6, 0x00, 0xE3, 0x00, 0x61, 0x80, 0x30, 0xC0, 0x18, 0xE0, 0x0C, 0x60, + 0x0E, 0x3F, 0xFE, 0x1F, 0xFF, 0x1C, 0x01, 0x8E, 0x01, 0xC6, 0x00, 0xE3, + 0x00, 0x61, 0x80, 0x31, 0xC0, 0x18, 0xC0, 0x1C, 0x60, 0x0C, 0x00, 0x0C, + 0x71, 0x86, 0x18, 0x63, 0x8C, 0x30, 0xC3, 0x1C, 0x61, 0x86, 0x18, 0xE3, + 0x00, 0x00, 0x18, 0x01, 0x80, 0x0C, 0x00, 0x60, 0x03, 0x00, 0x38, 0x01, + 0x80, 0x0C, 0x00, 0x60, 0x03, 0x00, 0x38, 0x01, 0x8C, 0x0C, 0x60, 0x63, + 0x07, 0x1C, 0x70, 0x7F, 0x01, 0xF0, 0x00, 0x0C, 0x03, 0x87, 0x01, 0xC1, + 0x80, 0xE0, 0x60, 0x60, 0x18, 0x70, 0x06, 0x38, 0x03, 0x9C, 0x00, 0xCE, + 0x00, 0x37, 0x80, 0x0F, 0x70, 0x07, 0x8C, 0x01, 0xC3, 0x80, 0x60, 0x60, + 0x18, 0x1C, 0x06, 0x03, 0x03, 0x80, 0xE0, 0xC0, 0x18, 0x30, 0x07, 0x00, + 0x0C, 0x03, 0x80, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x0E, 0x01, 0x80, 0x30, + 0x06, 0x01, 0xC0, 0x38, 0x06, 0x00, 0xC0, 0x18, 0x07, 0x00, 0xFF, 0xFF, + 0xFC, 0x0E, 0x00, 0x71, 0xE0, 0x0F, 0x1E, 0x00, 0xF1, 0xE0, 0x1E, 0x1E, + 0x01, 0xE1, 0xE0, 0x36, 0x3B, 0x03, 0x63, 0x30, 0x6E, 0x33, 0x0E, 0xC3, + 0x30, 0xCC, 0x33, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x31, 0xC6, 0x33, 0x18, + 0x61, 0xE1, 0x8E, 0x1E, 0x18, 0xC1, 0xC1, 0x8C, 0x1C, 0x38, 0x0C, 0x01, + 0x8F, 0x00, 0xC7, 0x80, 0x63, 0xE0, 0x71, 0xF0, 0x30, 0xD8, 0x18, 0xEE, + 0x0C, 0x63, 0x06, 0x31, 0xC7, 0x18, 0xE3, 0x0C, 0x31, 0x8C, 0x1C, 0xC6, + 0x06, 0x63, 0x03, 0xF1, 0x80, 0xF1, 0xC0, 0x78, 0xC0, 0x3C, 0x60, 0x0E, + 0x00, 0x01, 0xF8, 0x03, 0xFF, 0x03, 0x83, 0xC3, 0x80, 0x63, 0x00, 0x3B, + 0x80, 0x0D, 0x80, 0x06, 0xC0, 0x03, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, + 0xF8, 0x00, 0x6C, 0x00, 0x36, 0x00, 0x31, 0x80, 0x30, 0xF0, 0x78, 0x3F, + 0xF0, 0x07, 0xE0, 0x00, 0x0F, 0xF8, 0x3F, 0xF8, 0x60, 0x38, 0xC0, 0x31, + 0x80, 0x63, 0x00, 0xCE, 0x03, 0x18, 0x0E, 0x3F, 0xF8, 0x7F, 0xE1, 0xC0, + 0x03, 0x80, 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x70, 0x00, 0xC0, 0x01, + 0x80, 0x00, 0x00, 0xFC, 0x01, 0xFF, 0xC0, 0xF0, 0x78, 0x70, 0x06, 0x38, + 0x01, 0xCC, 0x00, 0x36, 0x00, 0x0D, 0x80, 0x03, 0xC0, 0x00, 0xF0, 0x00, + 0x3C, 0x00, 0x1B, 0x00, 0x06, 0xC0, 0x03, 0x38, 0x1D, 0xC6, 0x03, 0xE1, + 0xE0, 0xF0, 0x3F, 0xFE, 0x03, 0xF1, 0xC0, 0x00, 0x20, 0x0F, 0xFC, 0x1F, + 0xFE, 0x18, 0x07, 0x18, 0x03, 0x18, 0x03, 0x18, 0x03, 0x38, 0x06, 0x30, + 0x0C, 0x3F, 0xF8, 0x3F, 0xF8, 0x70, 0x1C, 0x70, 0x0C, 0x60, 0x0C, 0x60, + 0x0C, 0x60, 0x18, 0xE0, 0x18, 0xC0, 0x18, 0xC0, 0x1C, 0x03, 0xF8, 0x1F, + 0xF8, 0x70, 0x38, 0xC0, 0x33, 0x00, 0x66, 0x00, 0x0C, 0x00, 0x1E, 0x00, + 0x1F, 0xC0, 0x0F, 0xF0, 0x01, 0xF0, 0x00, 0xEC, 0x00, 0xD8, 0x01, 0xB0, + 0x06, 0x70, 0x38, 0x7F, 0xE0, 0x3F, 0x00, 0xFF, 0xFF, 0xFF, 0xF0, 0x70, + 0x01, 0xC0, 0x06, 0x00, 0x18, 0x00, 0x60, 0x03, 0x80, 0x0C, 0x00, 0x30, + 0x00, 0xC0, 0x03, 0x00, 0x1C, 0x00, 0x60, 0x01, 0x80, 0x06, 0x00, 0x18, + 0x00, 0xE0, 0x00, 0x18, 0x03, 0x38, 0x03, 0x30, 0x07, 0x30, 0x06, 0x30, + 0x06, 0x70, 0x06, 0x70, 0x0E, 0x60, 0x0C, 0x60, 0x0C, 0x60, 0x0C, 0xE0, + 0x0C, 0xC0, 0x1C, 0xC0, 0x18, 0xC0, 0x18, 0xC0, 0x38, 0xE0, 0x70, 0x7F, + 0xE0, 0x1F, 0x80, 0xC0, 0x0F, 0xC0, 0x1B, 0x80, 0x73, 0x00, 0xC6, 0x03, + 0x0C, 0x06, 0x18, 0x18, 0x30, 0x70, 0x60, 0xC0, 0xE3, 0x81, 0xC6, 0x01, + 0x9C, 0x03, 0x30, 0x06, 0xE0, 0x0D, 0x80, 0x1E, 0x00, 0x3C, 0x00, 0x70, + 0x00, 0xC0, 0x70, 0x1F, 0x01, 0xC0, 0x6C, 0x0F, 0x03, 0xB0, 0x3C, 0x0C, + 0xC1, 0xF0, 0x73, 0x06, 0xC1, 0x8C, 0x3B, 0x06, 0x30, 0xC6, 0x30, 0xC7, + 0x18, 0xC3, 0x18, 0x67, 0x0C, 0xE1, 0x98, 0x33, 0x06, 0xE0, 0xDC, 0x1B, + 0x03, 0x60, 0x6C, 0x07, 0x81, 0xE0, 0x1C, 0x07, 0x80, 0x70, 0x1C, 0x01, + 0x80, 0x70, 0x00, 0x07, 0x00, 0xE0, 0xE0, 0x38, 0x0C, 0x0E, 0x01, 0xC3, + 0x80, 0x18, 0xE0, 0x03, 0x98, 0x00, 0x36, 0x00, 0x07, 0x80, 0x00, 0xF0, + 0x00, 0x1E, 0x00, 0x07, 0xC0, 0x01, 0xDC, 0x00, 0x73, 0x80, 0x1C, 0x30, + 0x03, 0x07, 0x00, 0xC0, 0x60, 0x38, 0x0E, 0x0E, 0x00, 0xC0, 0xE0, 0x06, + 0x60, 0x0C, 0x70, 0x1C, 0x70, 0x38, 0x30, 0x70, 0x38, 0x60, 0x18, 0xC0, + 0x1D, 0xC0, 0x1F, 0x80, 0x0F, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, + 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x1C, 0x00, 0x18, 0x00, 0x0F, 0xFF, + 0x87, 0xFF, 0x80, 0x01, 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x01, + 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x01, + 0xC0, 0x01, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xFF, 0xF8, 0x7F, 0xFC, + 0x00, 0x07, 0xC1, 0xE0, 0x60, 0x18, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x1C, + 0x06, 0x01, 0x80, 0x60, 0x18, 0x0E, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x06, + 0x01, 0x80, 0x60, 0x1E, 0x07, 0x80, 0x93, 0x6C, 0x92, 0x49, 0x24, 0xDB, + 0x24, 0x07, 0x81, 0xE0, 0x18, 0x06, 0x01, 0x80, 0xC0, 0x30, 0x0C, 0x03, + 0x01, 0xC0, 0x60, 0x18, 0x06, 0x01, 0x80, 0xE0, 0x30, 0x0C, 0x03, 0x00, + 0xC0, 0x60, 0x18, 0x1E, 0x0F, 0x80, 0x03, 0x01, 0xC0, 0xD8, 0x36, 0x19, + 0x84, 0x63, 0x19, 0x83, 0x60, 0xC0, 0xFF, 0xFC, 0xE6, 0x23, 0x07, 0xC3, + 0xFC, 0xE3, 0x98, 0x30, 0x06, 0x01, 0x87, 0xF3, 0xC6, 0xC0, 0xD8, 0x3B, + 0x0E, 0x7F, 0x77, 0xCC, 0x0C, 0x00, 0x60, 0x03, 0x00, 0x30, 0x01, 0x80, + 0x0C, 0xF0, 0x7F, 0xC3, 0x87, 0x38, 0x19, 0x80, 0xCC, 0x06, 0x60, 0x32, + 0x03, 0xB0, 0x19, 0xC1, 0xCE, 0x1C, 0x7F, 0xC3, 0x7C, 0x00, 0x0F, 0x83, + 0xF8, 0xE3, 0xB8, 0x36, 0x07, 0xC0, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x1B, + 0x86, 0x3F, 0xC3, 0xE0, 0x00, 0x0C, 0x00, 0x60, 0x01, 0x80, 0x06, 0x00, + 0x18, 0x3E, 0x61, 0xFF, 0x0E, 0x3C, 0x70, 0x71, 0x80, 0xCE, 0x07, 0x30, + 0x18, 0xC0, 0x63, 0x01, 0x8C, 0x0E, 0x38, 0x78, 0x7F, 0xC0, 0xFB, 0x00, + 0x07, 0xC1, 0xFE, 0x38, 0x77, 0x03, 0x60, 0x37, 0xFF, 0xFF, 0xFC, 0x00, + 0xC0, 0x0C, 0x06, 0xE1, 0xC7, 0xF8, 0x3E, 0x00, 0x07, 0x0F, 0x1C, 0x18, + 0x18, 0x7E, 0x7E, 0x30, 0x30, 0x30, 0x30, 0x60, 0x60, 0x60, 0x60, 0x60, + 0xC0, 0xC0, 0x03, 0xCC, 0x3F, 0xA1, 0xC7, 0x8E, 0x0E, 0x30, 0x38, 0xC0, + 0xC6, 0x03, 0x18, 0x0C, 0x60, 0x71, 0x81, 0xC7, 0x0E, 0x0F, 0xF8, 0x1E, + 0x60, 0x03, 0x80, 0x0C, 0x30, 0x70, 0x7F, 0x80, 0xF8, 0x00, 0x0C, 0x00, + 0xC0, 0x0C, 0x01, 0x80, 0x18, 0x01, 0x9E, 0x1F, 0xF1, 0xC7, 0x38, 0x33, + 0x03, 0x30, 0x33, 0x07, 0x30, 0x66, 0x06, 0x60, 0x66, 0x06, 0x60, 0xC6, + 0x0C, 0x18, 0xC0, 0x00, 0x18, 0xC6, 0x33, 0x18, 0xC6, 0x31, 0x98, 0xC6, + 0x00, 0x01, 0x80, 0xC0, 0x00, 0x00, 0x00, 0x18, 0x1C, 0x0C, 0x06, 0x03, + 0x01, 0x81, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x18, 0x0C, 0x06, 0x03, 0x03, + 0x87, 0x83, 0x80, 0x0C, 0x00, 0x60, 0x03, 0x00, 0x30, 0x01, 0x80, 0x0C, + 0x18, 0x61, 0x83, 0x38, 0x33, 0x81, 0xB8, 0x0F, 0xC0, 0x77, 0x03, 0x18, + 0x30, 0xC1, 0x87, 0x0C, 0x18, 0x60, 0xE3, 0x03, 0x00, 0x18, 0xC6, 0x63, + 0x18, 0xC6, 0x33, 0x18, 0xC6, 0x31, 0x98, 0xC6, 0x00, 0x1B, 0xE3, 0xC3, + 0xFD, 0xFC, 0xF1, 0xE1, 0x9C, 0x18, 0x33, 0x03, 0x06, 0x60, 0xC0, 0xCC, + 0x18, 0x3B, 0x83, 0x06, 0x60, 0x60, 0xCC, 0x0C, 0x19, 0x83, 0x03, 0x30, + 0x60, 0xE6, 0x0C, 0x18, 0x1B, 0xE1, 0xFF, 0x3C, 0x73, 0x83, 0x30, 0x33, + 0x03, 0x30, 0x77, 0x06, 0x60, 0x66, 0x06, 0x60, 0x66, 0x0C, 0x60, 0xC0, + 0x07, 0xC1, 0xFE, 0x38, 0x77, 0x03, 0x60, 0x3E, 0x03, 0xC0, 0x3C, 0x06, + 0xC0, 0x6C, 0x0E, 0xE1, 0xC7, 0xF8, 0x3E, 0x00, 0x0C, 0xF0, 0x3F, 0xE0, + 0xE1, 0xC7, 0x03, 0x1C, 0x0C, 0x60, 0x31, 0x80, 0xCE, 0x07, 0x38, 0x18, + 0xE0, 0xE3, 0xC7, 0x0F, 0xF8, 0x77, 0xC1, 0x80, 0x06, 0x00, 0x18, 0x00, + 0x60, 0x03, 0x80, 0x00, 0x0F, 0x98, 0xFF, 0xCE, 0x3C, 0xE0, 0xE6, 0x03, + 0x70, 0x1B, 0x01, 0x98, 0x0C, 0xC0, 0x66, 0x07, 0x38, 0x78, 0xFF, 0x83, + 0xCC, 0x00, 0x60, 0x07, 0x00, 0x38, 0x01, 0x80, 0x0C, 0x00, 0x1B, 0x8F, + 0xCF, 0x07, 0x03, 0x01, 0x80, 0xC0, 0xE0, 0x60, 0x30, 0x18, 0x0C, 0x06, + 0x00, 0x0F, 0xC1, 0xFF, 0x30, 0x76, 0x03, 0x60, 0x07, 0x80, 0x3F, 0x80, + 0x7E, 0x00, 0x6C, 0x06, 0xE0, 0xCF, 0xF8, 0x3E, 0x00, 0x18, 0x30, 0x67, + 0xEF, 0xC6, 0x0C, 0x30, 0x60, 0xC1, 0x83, 0x0C, 0x18, 0x3C, 0x38, 0x30, + 0x33, 0x03, 0x30, 0x37, 0x06, 0x60, 0x66, 0x06, 0x60, 0x66, 0x06, 0xC0, + 0xEC, 0x0C, 0xC3, 0xCF, 0xFC, 0x7C, 0xC0, 0xC0, 0x78, 0x1B, 0x03, 0x60, + 0xC6, 0x18, 0xC6, 0x19, 0xC3, 0x30, 0x6C, 0x0D, 0x81, 0xE0, 0x3C, 0x03, + 0x00, 0xC1, 0xC3, 0xE1, 0xE1, 0xB0, 0xF0, 0xD8, 0x78, 0xCC, 0x6C, 0x66, + 0x36, 0x63, 0x33, 0x30, 0x99, 0xB0, 0x58, 0xD8, 0x2C, 0x78, 0x1C, 0x3C, + 0x0E, 0x1C, 0x06, 0x0E, 0x00, 0x0C, 0x1C, 0x30, 0xE0, 0xE3, 0x01, 0x98, + 0x07, 0xC0, 0x0E, 0x00, 0x30, 0x01, 0xE0, 0x0F, 0x80, 0x73, 0x01, 0x8C, + 0x0C, 0x38, 0x60, 0x60, 0x18, 0x0C, 0x60, 0x61, 0x83, 0x86, 0x0C, 0x1C, + 0x60, 0x31, 0x80, 0xCC, 0x03, 0x30, 0x0D, 0x80, 0x36, 0x00, 0xF0, 0x03, + 0x80, 0x06, 0x00, 0x30, 0x00, 0xC0, 0x06, 0x00, 0xF0, 0x03, 0x80, 0x00, + 0x1F, 0xF1, 0xFF, 0x00, 0x70, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, + 0x18, 0x03, 0x00, 0x60, 0x0F, 0xFC, 0xFF, 0xC0, 0x07, 0x0E, 0x18, 0x18, + 0x18, 0x18, 0x30, 0x30, 0x30, 0x30, 0x60, 0xE0, 0xE0, 0x60, 0x60, 0x60, + 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xF0, 0x60, 0x0C, 0x30, 0x82, 0x08, 0x61, + 0x84, 0x10, 0x43, 0x0C, 0x20, 0x86, 0x18, 0x41, 0x04, 0x30, 0xC2, 0x00, + 0x00, 0x06, 0x07, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x0C, 0x06, 0x03, + 0x01, 0xC0, 0xE0, 0x60, 0x60, 0x30, 0x18, 0x0C, 0x0C, 0x06, 0x03, 0x01, + 0x83, 0x83, 0x80, 0x38, 0x0F, 0x82, 0x38, 0x83, 0xE0, 0x38}; + +const GFXglyph FreeSansOblique12pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 7, 0, 1}, // 0x20 ' ' + {0, 6, 18, 7, 3, -17}, // 0x21 '!' + {14, 6, 6, 9, 4, -16}, // 0x22 '"' + {19, 15, 18, 13, 1, -17}, // 0x23 '#' + {53, 13, 21, 13, 2, -17}, // 0x24 '$' + {88, 19, 17, 21, 3, -16}, // 0x25 '%' + {129, 13, 17, 16, 2, -16}, // 0x26 '&' + {157, 2, 6, 5, 4, -16}, // 0x27 ''' + {159, 8, 23, 8, 3, -17}, // 0x28 '(' + {182, 8, 23, 8, 0, -16}, // 0x29 ')' + {205, 8, 8, 9, 4, -17}, // 0x2A '*' + {213, 12, 11, 14, 2, -10}, // 0x2B '+' + {230, 4, 6, 7, 1, -1}, // 0x2C ',' + {233, 6, 2, 8, 2, -7}, // 0x2D '-' + {235, 3, 2, 7, 2, -1}, // 0x2E '.' + {236, 10, 18, 7, 0, -17}, // 0x2F '/' + {259, 12, 17, 13, 2, -16}, // 0x30 '0' + {285, 7, 17, 13, 5, -16}, // 0x31 '1' + {300, 14, 17, 13, 1, -16}, // 0x32 '2' + {330, 12, 17, 13, 2, -16}, // 0x33 '3' + {356, 12, 17, 13, 2, -16}, // 0x34 '4' + {382, 13, 17, 13, 2, -16}, // 0x35 '5' + {410, 12, 17, 13, 2, -16}, // 0x36 '6' + {436, 13, 17, 13, 3, -16}, // 0x37 '7' + {464, 12, 17, 13, 2, -16}, // 0x38 '8' + {490, 12, 17, 13, 2, -16}, // 0x39 '9' + {516, 5, 12, 7, 3, -11}, // 0x3A ':' + {524, 6, 16, 7, 2, -11}, // 0x3B ';' + {536, 13, 12, 14, 2, -11}, // 0x3C '<' + {556, 13, 6, 14, 2, -8}, // 0x3D '=' + {566, 13, 12, 14, 1, -10}, // 0x3E '>' + {586, 11, 18, 13, 4, -17}, // 0x3F '?' + {611, 23, 21, 24, 2, -17}, // 0x40 '@' + {672, 16, 18, 16, 0, -17}, // 0x41 'A' + {708, 15, 18, 16, 2, -17}, // 0x42 'B' + {742, 16, 18, 17, 2, -17}, // 0x43 'C' + {778, 16, 18, 17, 2, -17}, // 0x44 'D' + {814, 16, 18, 16, 2, -17}, // 0x45 'E' + {850, 15, 18, 14, 2, -17}, // 0x46 'F' + {884, 16, 18, 19, 3, -17}, // 0x47 'G' + {920, 17, 18, 17, 2, -17}, // 0x48 'H' + {959, 6, 18, 7, 2, -17}, // 0x49 'I' + {973, 13, 18, 12, 1, -17}, // 0x4A 'J' + {1003, 18, 18, 16, 2, -17}, // 0x4B 'K' + {1044, 11, 18, 13, 2, -17}, // 0x4C 'L' + {1069, 20, 18, 20, 2, -17}, // 0x4D 'M' + {1114, 17, 18, 18, 2, -17}, // 0x4E 'N' + {1153, 17, 18, 18, 2, -17}, // 0x4F 'O' + {1192, 15, 18, 15, 2, -17}, // 0x50 'P' + {1226, 18, 19, 19, 2, -17}, // 0x51 'Q' + {1269, 16, 18, 17, 2, -17}, // 0x52 'R' + {1305, 15, 18, 16, 2, -17}, // 0x53 'S' + {1339, 14, 18, 15, 4, -17}, // 0x54 'T' + {1371, 16, 18, 17, 3, -17}, // 0x55 'U' + {1407, 15, 18, 15, 4, -17}, // 0x56 'V' + {1441, 22, 18, 22, 4, -17}, // 0x57 'W' + {1491, 19, 18, 16, 0, -17}, // 0x58 'X' + {1534, 16, 18, 16, 4, -17}, // 0x59 'Y' + {1570, 17, 18, 15, 1, -17}, // 0x5A 'Z' + {1609, 10, 23, 7, 0, -17}, // 0x5B '[' + {1638, 3, 18, 7, 4, -17}, // 0x5C '\' + {1645, 10, 23, 7, -1, -16}, // 0x5D ']' + {1674, 10, 9, 11, 2, -16}, // 0x5E '^' + {1686, 14, 1, 13, -1, 4}, // 0x5F '_' + {1688, 4, 4, 8, 4, -17}, // 0x60 '`' + {1690, 11, 13, 13, 2, -12}, // 0x61 'a' + {1708, 13, 18, 13, 1, -17}, // 0x62 'b' + {1738, 11, 13, 12, 2, -12}, // 0x63 'c' + {1756, 14, 18, 13, 2, -17}, // 0x64 'd' + {1788, 12, 13, 13, 2, -12}, // 0x65 'e' + {1808, 8, 18, 6, 2, -17}, // 0x66 'f' + {1826, 14, 18, 13, 1, -12}, // 0x67 'g' + {1858, 12, 18, 13, 1, -17}, // 0x68 'h' + {1885, 5, 18, 5, 2, -17}, // 0x69 'i' + {1897, 9, 23, 6, -1, -17}, // 0x6A 'j' + {1923, 13, 18, 12, 1, -17}, // 0x6B 'k' + {1953, 5, 18, 5, 2, -17}, // 0x6C 'l' + {1965, 19, 13, 20, 1, -12}, // 0x6D 'm' + {1996, 12, 13, 13, 1, -12}, // 0x6E 'n' + {2016, 12, 13, 13, 2, -12}, // 0x6F 'o' + {2036, 14, 18, 14, 0, -12}, // 0x70 'p' + {2068, 13, 18, 13, 2, -12}, // 0x71 'q' + {2098, 9, 13, 8, 1, -12}, // 0x72 'r' + {2113, 12, 13, 12, 1, -12}, // 0x73 's' + {2133, 7, 16, 6, 2, -15}, // 0x74 't' + {2147, 12, 13, 13, 2, -12}, // 0x75 'u' + {2167, 11, 13, 12, 3, -12}, // 0x76 'v' + {2185, 17, 13, 17, 3, -12}, // 0x77 'w' + {2213, 14, 13, 12, 0, -12}, // 0x78 'x' + {2236, 14, 18, 11, 0, -12}, // 0x79 'y' + {2268, 12, 13, 12, 1, -12}, // 0x7A 'z' + {2288, 8, 23, 8, 3, -17}, // 0x7B '{' + {2311, 6, 23, 6, 1, -17}, // 0x7C '|' + {2329, 9, 23, 8, -1, -16}, // 0x7D '}' + {2355, 11, 5, 14, 3, -10}}; // 0x7E '~' + +const GFXfont FreeSansOblique12pt7b PROGMEM = { + (uint8_t *)FreeSansOblique12pt7bBitmaps, + (GFXglyph *)FreeSansOblique12pt7bGlyphs, 0x20, 0x7E, 29}; + +// Approx. 3034 bytes diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansOblique18pt7b.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansOblique18pt7b.h new file mode 100644 index 0000000..f85b07f --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansOblique18pt7b.h @@ -0,0 +1,520 @@ +#pragma once +#include + +const uint8_t FreeSansOblique18pt7bBitmaps[] PROGMEM = { + 0x03, 0x83, 0x81, 0xC0, 0xE0, 0x70, 0x78, 0x38, 0x1C, 0x0E, 0x07, 0x07, + 0x83, 0x81, 0xC0, 0xE0, 0x60, 0x30, 0x30, 0x18, 0x0C, 0x04, 0x00, 0x00, + 0x01, 0xC0, 0xE0, 0x70, 0x78, 0x00, 0x71, 0xDC, 0x7F, 0x3F, 0x8E, 0xE3, + 0xB8, 0xEC, 0x33, 0x0C, 0xC3, 0x00, 0x00, 0x38, 0x70, 0x01, 0xC3, 0x80, + 0x0C, 0x18, 0x00, 0xE1, 0xC0, 0x06, 0x0C, 0x00, 0x70, 0xE0, 0x03, 0x87, + 0x03, 0xFF, 0xFF, 0x1F, 0xFF, 0xF0, 0xFF, 0xFF, 0x80, 0x60, 0xC0, 0x07, + 0x0E, 0x00, 0x30, 0x60, 0x03, 0x87, 0x00, 0x18, 0x30, 0x1F, 0xFF, 0xF8, + 0xFF, 0xFF, 0xC7, 0xFF, 0xFC, 0x07, 0x0E, 0x00, 0x30, 0x70, 0x03, 0x87, + 0x00, 0x1C, 0x38, 0x00, 0xC1, 0x80, 0x0E, 0x1C, 0x00, 0x60, 0xC0, 0x00, + 0x00, 0x0C, 0x00, 0x07, 0xF8, 0x01, 0xFF, 0xC0, 0x3F, 0xFE, 0x07, 0x99, + 0xF0, 0xF1, 0x87, 0x0E, 0x18, 0x71, 0xC1, 0x87, 0x1C, 0x38, 0x01, 0xC3, + 0x00, 0x1C, 0x30, 0x01, 0xE3, 0x00, 0x0F, 0xB0, 0x00, 0xFF, 0x80, 0x03, + 0xFF, 0x00, 0x0F, 0xF8, 0x00, 0x6F, 0xC0, 0x06, 0x3C, 0x00, 0xC1, 0xCE, + 0x0C, 0x1C, 0xE0, 0xC1, 0xCE, 0x0C, 0x38, 0xF1, 0xC3, 0x8F, 0x98, 0xF0, + 0x7F, 0xFE, 0x03, 0xFF, 0xC0, 0x0F, 0xF0, 0x00, 0x30, 0x00, 0x03, 0x00, + 0x00, 0x30, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x07, 0x03, 0xE0, 0x03, + 0x81, 0xFC, 0x00, 0xC0, 0xFF, 0x00, 0x60, 0x70, 0xE0, 0x38, 0x38, 0x18, + 0x1C, 0x0C, 0x06, 0x0E, 0x03, 0x01, 0x83, 0x00, 0xC0, 0xE1, 0x80, 0x38, + 0x70, 0xE0, 0x0F, 0xF8, 0x70, 0x01, 0xFC, 0x18, 0x00, 0x3E, 0x0C, 0x00, + 0x00, 0x06, 0x07, 0x80, 0x03, 0x87, 0xF8, 0x00, 0xC3, 0xFE, 0x00, 0x61, + 0xE1, 0xC0, 0x30, 0x60, 0x30, 0x1C, 0x30, 0x0C, 0x0E, 0x0C, 0x03, 0x03, + 0x03, 0x01, 0x81, 0x80, 0xE1, 0xE0, 0xC0, 0x1F, 0xF0, 0x70, 0x07, 0xF8, + 0x18, 0x00, 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x07, 0xF8, 0x00, 0xFF, 0xC0, + 0x1E, 0x3C, 0x03, 0xC1, 0xC0, 0x38, 0x1C, 0x03, 0x81, 0xC0, 0x38, 0x38, + 0x03, 0xC7, 0x00, 0x1D, 0xE0, 0x01, 0xFC, 0x00, 0x1F, 0x00, 0x07, 0xF0, + 0x01, 0xF7, 0x87, 0x3C, 0x3C, 0xE7, 0x81, 0xCE, 0x70, 0x1F, 0xCE, 0x00, + 0xFC, 0xE0, 0x07, 0x8E, 0x00, 0x78, 0xF0, 0x1F, 0x8F, 0x87, 0xFC, 0x7F, + 0xF9, 0xC3, 0xFE, 0x1E, 0x1F, 0x80, 0xE0, 0x77, 0xFE, 0xEE, 0xCC, 0xC0, + 0x00, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x80, 0x30, 0x06, 0x00, 0xE0, + 0x0C, 0x01, 0xC0, 0x18, 0x03, 0x80, 0x38, 0x07, 0x00, 0x70, 0x07, 0x00, + 0x70, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, + 0xE0, 0x0E, 0x00, 0xE0, 0x06, 0x00, 0x70, 0x07, 0x00, 0x30, 0x03, 0x00, + 0x18, 0x00, 0x01, 0x80, 0x0C, 0x00, 0xC0, 0x0E, 0x00, 0xE0, 0x06, 0x00, + 0x70, 0x07, 0x00, 0x70, 0x07, 0x00, 0x70, 0x07, 0x00, 0x70, 0x07, 0x00, + 0x70, 0x07, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x01, 0xC0, 0x1C, 0x03, + 0x80, 0x38, 0x03, 0x00, 0x70, 0x06, 0x00, 0xC0, 0x1C, 0x01, 0x80, 0x30, + 0x06, 0x00, 0xC0, 0x00, 0x06, 0x01, 0x84, 0x47, 0xF7, 0xFF, 0xCF, 0xC1, + 0xE0, 0xD8, 0x67, 0x18, 0xC0, 0x00, 0x70, 0x00, 0x1C, 0x00, 0x0F, 0x00, + 0x03, 0x80, 0x00, 0xE0, 0x00, 0x38, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xC0, 0x70, 0x00, 0x1C, 0x00, 0x07, 0x00, 0x01, 0xC0, 0x00, 0xE0, + 0x00, 0x38, 0x00, 0x0E, 0x00, 0x3B, 0xDC, 0x21, 0x18, 0x98, 0xFF, 0xFF, + 0xFF, 0xE0, 0x7F, 0xFE, 0x00, 0x06, 0x00, 0x18, 0x00, 0x30, 0x00, 0xC0, + 0x01, 0x80, 0x06, 0x00, 0x0C, 0x00, 0x30, 0x00, 0x60, 0x01, 0x80, 0x03, + 0x00, 0x0C, 0x00, 0x18, 0x00, 0x60, 0x00, 0xC0, 0x03, 0x00, 0x06, 0x00, + 0x18, 0x00, 0x20, 0x00, 0xC0, 0x03, 0x00, 0x06, 0x00, 0x18, 0x00, 0x30, + 0x00, 0xC0, 0x01, 0x80, 0x00, 0x00, 0x7C, 0x00, 0x7F, 0xC0, 0x7F, 0xF8, + 0x3E, 0x1E, 0x0F, 0x03, 0xC7, 0x80, 0x71, 0xC0, 0x1C, 0xE0, 0x07, 0x38, + 0x01, 0xDE, 0x00, 0x77, 0x00, 0x1D, 0xC0, 0x0F, 0x70, 0x03, 0xFC, 0x00, + 0xEE, 0x00, 0x3B, 0x80, 0x0E, 0xE0, 0x07, 0xB8, 0x01, 0xCE, 0x00, 0xF3, + 0x80, 0x38, 0xF0, 0x1E, 0x1E, 0x1F, 0x07, 0xFF, 0x80, 0xFF, 0xC0, 0x0F, + 0x80, 0x00, 0x00, 0xC0, 0x70, 0x3C, 0x3E, 0xFF, 0xBF, 0xEF, 0xF8, 0x1E, + 0x07, 0x01, 0xC0, 0x70, 0x1C, 0x0F, 0x03, 0x80, 0xE0, 0x38, 0x0E, 0x07, + 0x81, 0xC0, 0x70, 0x1C, 0x07, 0x01, 0xC0, 0xE0, 0x38, 0x00, 0x00, 0x3F, + 0x00, 0x0F, 0xFC, 0x03, 0xFF, 0xE0, 0x7C, 0x1E, 0x07, 0x80, 0xF0, 0xF0, + 0x07, 0x0E, 0x00, 0x70, 0xE0, 0x07, 0x00, 0x00, 0x70, 0x00, 0x0E, 0x00, + 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x0F, 0x80, 0x03, 0xF0, 0x00, 0xFC, 0x00, + 0x1F, 0x00, 0x07, 0xC0, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0x80, 0x00, + 0x70, 0x00, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0x8F, 0xFF, 0xF0, 0xFF, 0xFF, + 0x00, 0x00, 0x7E, 0x00, 0x3F, 0xF0, 0x0F, 0xFF, 0x03, 0xC1, 0xF0, 0x70, + 0x0E, 0x1C, 0x01, 0xC3, 0x80, 0x38, 0xE0, 0x07, 0x00, 0x01, 0xC0, 0x00, + 0xF0, 0x03, 0xFC, 0x00, 0x7F, 0x00, 0x0F, 0xF0, 0x00, 0x1F, 0x00, 0x00, + 0xE0, 0x00, 0x1C, 0x00, 0x03, 0x9C, 0x00, 0x73, 0x80, 0x1E, 0x70, 0x03, + 0x8F, 0x00, 0xF1, 0xF0, 0x7C, 0x1F, 0xFF, 0x01, 0xFF, 0xC0, 0x0F, 0xC0, + 0x00, 0x00, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x78, 0x00, 0x3E, 0x00, 0x1F, + 0x80, 0x0F, 0xE0, 0x07, 0xF0, 0x03, 0xDC, 0x01, 0xE7, 0x00, 0x71, 0xC0, + 0x38, 0xF0, 0x1C, 0x38, 0x0E, 0x0E, 0x07, 0x03, 0x83, 0x80, 0xE1, 0xC0, + 0x70, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x70, 0x00, 0x38, + 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x01, 0xFF, + 0xF0, 0x3F, 0xFF, 0x03, 0xFF, 0xE0, 0x78, 0x00, 0x07, 0x00, 0x00, 0x70, + 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x0E, 0xFC, 0x01, 0xFF, 0xF0, 0x1F, + 0xFF, 0x83, 0xE0, 0x78, 0x3C, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xC0, + 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x18, 0x00, 0x03, 0x8E, 0x00, 0x78, + 0xE0, 0x0F, 0x0F, 0x81, 0xE0, 0x7F, 0xFC, 0x03, 0xFF, 0x80, 0x0F, 0xE0, + 0x00, 0x00, 0x7E, 0x00, 0x3F, 0xF0, 0x0F, 0xFF, 0x03, 0xE1, 0xF0, 0xF0, + 0x0E, 0x1C, 0x01, 0xC7, 0x00, 0x01, 0xE0, 0x00, 0x38, 0x00, 0x07, 0x1F, + 0x01, 0xCF, 0xF8, 0x3B, 0xFF, 0x87, 0xE0, 0xF8, 0xF0, 0x0F, 0x3C, 0x00, + 0xE7, 0x80, 0x1C, 0xE0, 0x03, 0x9C, 0x00, 0x73, 0x80, 0x1C, 0x70, 0x03, + 0x8F, 0x00, 0xE0, 0xF0, 0x78, 0x1F, 0xFF, 0x01, 0xFF, 0x80, 0x0F, 0xC0, + 0x00, 0x3F, 0xFF, 0xCF, 0xFF, 0xF7, 0xFF, 0xFC, 0x00, 0x0E, 0x00, 0x07, + 0x00, 0x03, 0x80, 0x00, 0xC0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, + 0x0E, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x78, 0x00, 0x1C, + 0x00, 0x0E, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xF0, 0x00, 0x38, 0x00, + 0x1E, 0x00, 0x07, 0x00, 0x03, 0xC0, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x7E, + 0x00, 0x3F, 0xF0, 0x1F, 0xFF, 0x07, 0xC1, 0xF0, 0xE0, 0x0E, 0x38, 0x01, + 0xC7, 0x00, 0x38, 0xE0, 0x0E, 0x1C, 0x01, 0xC3, 0xC0, 0xF0, 0x3F, 0xFC, + 0x03, 0xFE, 0x01, 0xFF, 0xF0, 0x7C, 0x1E, 0x1E, 0x01, 0xE3, 0x80, 0x1C, + 0xE0, 0x03, 0x9C, 0x00, 0x73, 0x80, 0x0E, 0x70, 0x03, 0x8F, 0x00, 0xF1, + 0xF0, 0x7C, 0x1F, 0xFF, 0x01, 0xFF, 0xC0, 0x0F, 0xC0, 0x00, 0x00, 0x7E, + 0x00, 0x3F, 0xF0, 0x1F, 0xFF, 0x07, 0xC1, 0xE0, 0xE0, 0x1E, 0x38, 0x01, + 0xC7, 0x00, 0x39, 0xC0, 0x07, 0x38, 0x00, 0xE7, 0x00, 0x3C, 0xE0, 0x07, + 0x9E, 0x01, 0xE3, 0xE0, 0xFC, 0x3F, 0xFB, 0x83, 0xFE, 0xF0, 0x3F, 0x1C, + 0x00, 0x03, 0x80, 0x00, 0xF0, 0x00, 0x1C, 0x70, 0x07, 0x8E, 0x01, 0xE1, + 0xE0, 0xF8, 0x1F, 0xFE, 0x01, 0xFF, 0x80, 0x0F, 0xC0, 0x00, 0x0E, 0x3C, + 0x78, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, + 0xF1, 0xE3, 0x80, 0x07, 0x0F, 0x0F, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x78, 0x70, 0x10, 0x10, + 0x30, 0x20, 0xC0, 0x00, 0x00, 0x20, 0x00, 0x1C, 0x00, 0x1F, 0x80, 0x1F, + 0xC0, 0x0F, 0xC0, 0x0F, 0xE0, 0x07, 0xE0, 0x03, 0xF0, 0x00, 0xF0, 0x00, + 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x3F, 0x00, 0x01, 0xF8, + 0x00, 0x0F, 0xC0, 0x00, 0x78, 0x00, 0x01, 0x00, 0x7F, 0xFF, 0xDF, 0xFF, + 0xF7, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFB, + 0xFF, 0xFE, 0xFF, 0xFF, 0x80, 0x10, 0x00, 0x03, 0xC0, 0x00, 0x7E, 0x00, + 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x3F, + 0x00, 0x01, 0xE0, 0x01, 0xF8, 0x00, 0xFC, 0x00, 0xFE, 0x00, 0x7E, 0x00, + 0x7F, 0x00, 0x3F, 0x00, 0x07, 0x00, 0x00, 0x80, 0x00, 0x00, 0x03, 0xF8, + 0x0F, 0xFC, 0x1F, 0xFE, 0x3C, 0x1F, 0x78, 0x07, 0x70, 0x07, 0xE0, 0x07, + 0xE0, 0x07, 0x00, 0x0E, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xF0, + 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0F, 0x00, 0x0E, 0x00, 0x0E, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, + 0x3C, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x03, 0xFF, 0xF0, 0x00, 0x07, + 0xFF, 0xFE, 0x00, 0x0F, 0xE0, 0x3F, 0x80, 0x0F, 0x80, 0x03, 0xE0, 0x0F, + 0x00, 0x00, 0xF8, 0x0F, 0x00, 0x00, 0x3C, 0x0F, 0x01, 0xF0, 0x0F, 0x0F, + 0x03, 0xFD, 0xC7, 0x8F, 0x03, 0xFE, 0xE1, 0xC7, 0x03, 0xC3, 0x60, 0xE7, + 0x03, 0xC0, 0xF0, 0x77, 0x83, 0xC0, 0x70, 0x3B, 0x83, 0xC0, 0x78, 0x1D, + 0xC1, 0xC0, 0x38, 0x1F, 0xC1, 0xE0, 0x1C, 0x0E, 0xE0, 0xE0, 0x1C, 0x0F, + 0x70, 0x70, 0x0E, 0x07, 0x38, 0x38, 0x0E, 0x07, 0x9C, 0x1C, 0x0F, 0x07, + 0x8E, 0x0F, 0x0F, 0x8F, 0x87, 0x03, 0xFD, 0xFF, 0x83, 0xC1, 0xFC, 0xFF, + 0x80, 0xE0, 0x7C, 0x3F, 0x00, 0x78, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, + 0x00, 0x07, 0x80, 0x00, 0x00, 0x01, 0xF8, 0x07, 0x00, 0x00, 0x7F, 0xFF, + 0x80, 0x00, 0x1F, 0xFF, 0xC0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x01, + 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x80, 0x00, 0xFF, + 0x00, 0x01, 0xDE, 0x00, 0x07, 0x9C, 0x00, 0x0E, 0x38, 0x00, 0x3C, 0x70, + 0x00, 0x70, 0xF0, 0x01, 0xC1, 0xE0, 0x07, 0x83, 0xC0, 0x0E, 0x07, 0x80, + 0x38, 0x07, 0x00, 0x70, 0x0E, 0x01, 0xFF, 0xFC, 0x03, 0xFF, 0xFC, 0x0F, + 0xFF, 0xF8, 0x1C, 0x00, 0xF0, 0x70, 0x01, 0xE1, 0xE0, 0x01, 0xC3, 0x80, + 0x03, 0x8F, 0x00, 0x07, 0x1C, 0x00, 0x0E, 0x78, 0x00, 0x1E, 0xE0, 0x00, + 0x3C, 0x07, 0xFF, 0xC0, 0x3F, 0xFF, 0x81, 0xFF, 0xFC, 0x0E, 0x00, 0xF0, + 0xF0, 0x03, 0x87, 0x00, 0x1C, 0x38, 0x00, 0xE1, 0xC0, 0x07, 0x0E, 0x00, + 0x70, 0xF0, 0x03, 0x87, 0x00, 0x78, 0x3F, 0xFF, 0x81, 0xFF, 0xF8, 0x0F, + 0xFF, 0xF0, 0xE0, 0x03, 0xC7, 0x00, 0x0E, 0x38, 0x00, 0x71, 0xC0, 0x03, + 0x9E, 0x00, 0x1C, 0xE0, 0x00, 0xE7, 0x00, 0x0E, 0x38, 0x00, 0xF1, 0xC0, + 0x0F, 0x1F, 0xFF, 0xF0, 0xFF, 0xFF, 0x07, 0xFF, 0xE0, 0x00, 0x00, 0x1F, + 0x80, 0x03, 0xFF, 0x80, 0x1F, 0xFF, 0x01, 0xF8, 0x3E, 0x07, 0x80, 0x38, + 0x38, 0x00, 0xF1, 0xC0, 0x01, 0xCF, 0x00, 0x07, 0x38, 0x00, 0x01, 0xE0, + 0x00, 0x07, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x70, 0x00, 0x03, 0x80, 0x00, + 0x0E, 0x00, 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x7B, 0x80, 0x01, 0xCE, + 0x00, 0x0F, 0x3C, 0x00, 0x38, 0x70, 0x01, 0xE1, 0xE0, 0x0F, 0x07, 0xC0, + 0xF8, 0x0F, 0xFF, 0xC0, 0x1F, 0xFC, 0x00, 0x1F, 0xC0, 0x00, 0x07, 0xFF, + 0xC0, 0x0F, 0xFF, 0xE0, 0x1F, 0xFF, 0xE0, 0x38, 0x03, 0xE0, 0xF0, 0x03, + 0xC1, 0xC0, 0x03, 0x83, 0x80, 0x03, 0x87, 0x00, 0x07, 0x1E, 0x00, 0x0E, + 0x3C, 0x00, 0x1C, 0x70, 0x00, 0x38, 0xE0, 0x00, 0x71, 0xC0, 0x00, 0xE7, + 0x80, 0x03, 0x8F, 0x00, 0x07, 0x1C, 0x00, 0x0E, 0x38, 0x00, 0x3C, 0x70, + 0x00, 0x71, 0xE0, 0x01, 0xE3, 0x80, 0x03, 0x87, 0x00, 0x0E, 0x0E, 0x00, + 0x3C, 0x1C, 0x01, 0xF0, 0x7F, 0xFF, 0xC0, 0xFF, 0xFE, 0x01, 0xFF, 0xF0, + 0x00, 0x07, 0xFF, 0xFE, 0x0F, 0xFF, 0xFC, 0x1F, 0xFF, 0xF0, 0x38, 0x00, + 0x00, 0xF0, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, 0x00, 0x07, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x70, 0x00, 0x00, 0xFF, 0xFF, 0x81, + 0xFF, 0xFF, 0x07, 0xFF, 0xFE, 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x70, 0x00, 0x01, 0xE0, 0x00, 0x03, 0x80, 0x00, 0x07, 0x00, + 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x7F, 0xFF, 0xF0, 0xFF, 0xFF, + 0xC1, 0xFF, 0xFF, 0x80, 0x07, 0xFF, 0xFC, 0x1F, 0xFF, 0xF0, 0x7F, 0xFF, + 0xC1, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x03, + 0x80, 0x00, 0x1E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xC0, 0x00, 0x07, 0xFF, + 0xF0, 0x1F, 0xFF, 0xC0, 0xFF, 0xFF, 0x03, 0x80, 0x00, 0x0E, 0x00, 0x00, + 0x38, 0x00, 0x00, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1C, 0x00, 0x00, 0x70, + 0x00, 0x01, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xE0, 0x00, + 0x03, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x7F, 0xF8, 0x01, 0xFF, + 0xFC, 0x03, 0xE0, 0x3E, 0x07, 0x80, 0x0E, 0x0F, 0x00, 0x0F, 0x1E, 0x00, + 0x07, 0x1C, 0x00, 0x07, 0x38, 0x00, 0x00, 0x38, 0x00, 0x00, 0x70, 0x00, + 0x00, 0x70, 0x00, 0x00, 0xF0, 0x07, 0xFE, 0xE0, 0x07, 0xFE, 0xE0, 0x07, + 0xFE, 0xE0, 0x00, 0x0E, 0xE0, 0x00, 0x0E, 0xE0, 0x00, 0x0E, 0xE0, 0x00, + 0x1C, 0xF0, 0x00, 0x3C, 0x70, 0x00, 0x7C, 0x78, 0x00, 0xFC, 0x3E, 0x03, + 0xDC, 0x1F, 0xFF, 0x98, 0x0F, 0xFE, 0x18, 0x03, 0xF8, 0x18, 0x07, 0x00, + 0x07, 0x83, 0x80, 0x03, 0xC1, 0xC0, 0x01, 0xC0, 0xE0, 0x00, 0xE0, 0xF0, + 0x00, 0x70, 0x70, 0x00, 0x78, 0x38, 0x00, 0x3C, 0x1C, 0x00, 0x1C, 0x1E, + 0x00, 0x0E, 0x0F, 0x00, 0x07, 0x07, 0x00, 0x07, 0x83, 0xFF, 0xFF, 0x81, + 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0xE0, 0xE0, 0x00, 0x70, 0x70, 0x00, 0x78, + 0x38, 0x00, 0x38, 0x1C, 0x00, 0x1C, 0x1E, 0x00, 0x0E, 0x0E, 0x00, 0x0F, + 0x07, 0x00, 0x07, 0x83, 0x80, 0x03, 0x81, 0xC0, 0x01, 0xC1, 0xE0, 0x00, + 0xE0, 0xE0, 0x00, 0xF0, 0x70, 0x00, 0x78, 0x00, 0x07, 0x0F, 0x0F, 0x0E, + 0x0E, 0x0E, 0x0E, 0x1E, 0x1C, 0x1C, 0x1C, 0x1C, 0x3C, 0x3C, 0x38, 0x38, + 0x38, 0x38, 0x78, 0x70, 0x70, 0x70, 0x70, 0xF0, 0xF0, 0xE0, 0x00, 0x01, + 0xC0, 0x00, 0x70, 0x00, 0x3C, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, + 0x00, 0x38, 0x00, 0x1E, 0x00, 0x07, 0x00, 0x01, 0xC0, 0x00, 0x70, 0x00, + 0x1C, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x1E, + 0x1C, 0x07, 0x0E, 0x01, 0xC3, 0x80, 0x70, 0xE0, 0x3C, 0x38, 0x0E, 0x0F, + 0x0F, 0x81, 0xFF, 0xC0, 0x7F, 0xE0, 0x07, 0xE0, 0x00, 0x07, 0x00, 0x07, + 0x83, 0x80, 0x07, 0x81, 0xC0, 0x0F, 0x00, 0xE0, 0x0F, 0x00, 0xF0, 0x0F, + 0x00, 0x70, 0x0F, 0x00, 0x38, 0x0F, 0x00, 0x1C, 0x1F, 0x00, 0x1E, 0x1E, + 0x00, 0x0F, 0x1E, 0x00, 0x07, 0x1E, 0x00, 0x03, 0x9F, 0x00, 0x01, 0xDF, + 0xC0, 0x01, 0xFC, 0xE0, 0x00, 0xFC, 0x78, 0x00, 0x7C, 0x1C, 0x00, 0x3C, + 0x0F, 0x00, 0x1C, 0x07, 0x80, 0x1E, 0x01, 0xE0, 0x0E, 0x00, 0xF0, 0x07, + 0x00, 0x38, 0x03, 0x80, 0x1E, 0x01, 0xC0, 0x07, 0x01, 0xE0, 0x03, 0xC0, + 0xE0, 0x00, 0xE0, 0x70, 0x00, 0x78, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, + 0x00, 0x07, 0x00, 0x0F, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x1E, + 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x3C, 0x00, 0x38, + 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x78, 0x00, 0x70, 0x00, 0x70, + 0x00, 0x70, 0x00, 0x70, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, + 0xC0, 0x00, 0xF8, 0x3E, 0x00, 0x07, 0xC1, 0xF0, 0x00, 0x7E, 0x0F, 0x80, + 0x03, 0xF0, 0xFC, 0x00, 0x3F, 0x07, 0x70, 0x01, 0xF8, 0x3B, 0x80, 0x1D, + 0xC1, 0xDC, 0x00, 0xEE, 0x0E, 0xE0, 0x0E, 0xE0, 0xE7, 0x00, 0x77, 0x07, + 0x38, 0x07, 0x38, 0x39, 0xC0, 0x31, 0xC1, 0xCE, 0x03, 0x9E, 0x1E, 0x38, + 0x38, 0xE0, 0xE1, 0xC1, 0xC7, 0x07, 0x0E, 0x1C, 0x38, 0x38, 0x70, 0xE1, + 0xC1, 0xC3, 0x8E, 0x1E, 0x1E, 0x1C, 0x70, 0xE0, 0xE0, 0xE7, 0x07, 0x07, + 0x07, 0x38, 0x38, 0x38, 0x1F, 0x81, 0xC1, 0xC0, 0xF8, 0x1E, 0x1C, 0x07, + 0xC0, 0xE0, 0xE0, 0x3C, 0x07, 0x07, 0x01, 0xE0, 0x38, 0x00, 0x07, 0x80, + 0x03, 0x83, 0xE0, 0x01, 0xC1, 0xF0, 0x00, 0xE0, 0xF8, 0x00, 0xE0, 0xFE, + 0x00, 0x70, 0x7F, 0x00, 0x38, 0x3B, 0xC0, 0x1C, 0x1D, 0xE0, 0x1E, 0x0E, + 0x70, 0x0E, 0x0E, 0x3C, 0x07, 0x07, 0x0E, 0x03, 0x83, 0x87, 0x81, 0xC1, + 0xC3, 0xC1, 0xE1, 0xE0, 0xE0, 0xE0, 0xE0, 0x78, 0x70, 0x70, 0x1C, 0x38, + 0x38, 0x0F, 0x1C, 0x1C, 0x07, 0x9E, 0x1E, 0x01, 0xCE, 0x0E, 0x00, 0xF7, + 0x07, 0x00, 0x3B, 0x83, 0x80, 0x1F, 0xC1, 0xC0, 0x07, 0xC1, 0xC0, 0x03, + 0xE0, 0xE0, 0x01, 0xF0, 0x70, 0x00, 0x78, 0x00, 0x00, 0x1F, 0xC0, 0x00, + 0xFF, 0xF0, 0x01, 0xFF, 0xF8, 0x03, 0xE0, 0x7C, 0x07, 0x80, 0x1E, 0x0F, + 0x00, 0x0E, 0x1C, 0x00, 0x0F, 0x3C, 0x00, 0x07, 0x38, 0x00, 0x07, 0x70, + 0x00, 0x07, 0x70, 0x00, 0x07, 0x70, 0x00, 0x07, 0xE0, 0x00, 0x07, 0xE0, + 0x00, 0x0F, 0xE0, 0x00, 0x0E, 0xE0, 0x00, 0x0E, 0xE0, 0x00, 0x0E, 0xE0, + 0x00, 0x1C, 0xE0, 0x00, 0x1C, 0xF0, 0x00, 0x38, 0x70, 0x00, 0x78, 0x78, + 0x00, 0xF0, 0x3E, 0x07, 0xE0, 0x1F, 0xFF, 0xC0, 0x0F, 0xFF, 0x00, 0x03, + 0xF8, 0x00, 0x07, 0xFF, 0xE0, 0x1F, 0xFF, 0xC0, 0x7F, 0xFF, 0x81, 0xC0, + 0x1F, 0x0F, 0x00, 0x3C, 0x38, 0x00, 0x70, 0xE0, 0x01, 0xC3, 0x80, 0x07, + 0x1E, 0x00, 0x1C, 0x78, 0x00, 0xE1, 0xC0, 0x07, 0x87, 0x00, 0x3C, 0x1F, + 0xFF, 0xE0, 0xFF, 0xFF, 0x03, 0xFF, 0xF0, 0x0E, 0x00, 0x00, 0x38, 0x00, + 0x00, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1C, 0x00, 0x00, 0x70, 0x00, 0x01, + 0xC0, 0x00, 0x07, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xE0, 0x00, 0x03, 0x80, + 0x00, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x3F, 0xFC, 0x00, 0x7F, 0xFF, 0x00, + 0x7C, 0x07, 0xC0, 0x78, 0x00, 0xF0, 0x78, 0x00, 0x38, 0x78, 0x00, 0x1E, + 0x78, 0x00, 0x07, 0x38, 0x00, 0x03, 0xBC, 0x00, 0x01, 0xDC, 0x00, 0x00, + 0xEE, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x1F, 0x80, 0x00, + 0x1D, 0xC0, 0x00, 0x0E, 0xE0, 0x00, 0x0F, 0x70, 0x00, 0x07, 0x38, 0x00, + 0x87, 0x9E, 0x00, 0xE7, 0x87, 0x00, 0x7F, 0x83, 0xC0, 0x1F, 0x80, 0xF8, + 0x1F, 0x80, 0x3F, 0xFF, 0xE0, 0x0F, 0xFF, 0x78, 0x01, 0xFE, 0x1E, 0x00, + 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFF, 0xF0, 0x0F, 0xFF, 0xF8, + 0x1F, 0xFF, 0xF0, 0x38, 0x00, 0xF0, 0xF0, 0x00, 0xE1, 0xC0, 0x01, 0xC3, + 0x80, 0x03, 0x87, 0x00, 0x07, 0x1E, 0x00, 0x0E, 0x3C, 0x00, 0x38, 0x70, + 0x00, 0xF0, 0xE0, 0x03, 0xC1, 0xFF, 0xFE, 0x07, 0xFF, 0xF8, 0x0F, 0xFF, + 0xF8, 0x1C, 0x00, 0x78, 0x38, 0x00, 0x70, 0x70, 0x00, 0xE1, 0xE0, 0x01, + 0xC3, 0x80, 0x03, 0x87, 0x00, 0x06, 0x0E, 0x00, 0x1C, 0x1C, 0x00, 0x38, + 0x78, 0x00, 0x70, 0xE0, 0x00, 0xE1, 0xC0, 0x01, 0xE0, 0x00, 0x3F, 0xC0, + 0x07, 0xFF, 0xC0, 0x3F, 0xFF, 0x81, 0xF0, 0x1E, 0x0F, 0x00, 0x3C, 0x38, + 0x00, 0x71, 0xC0, 0x01, 0xC7, 0x00, 0x07, 0x1C, 0x00, 0x00, 0x78, 0x00, + 0x01, 0xF8, 0x00, 0x03, 0xFC, 0x00, 0x07, 0xFE, 0x00, 0x07, 0xFF, 0x00, + 0x03, 0xFE, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xF3, 0x80, 0x01, 0xCE, 0x00, + 0x07, 0x38, 0x00, 0x18, 0xE0, 0x00, 0xE3, 0xC0, 0x07, 0x07, 0x80, 0x7C, + 0x1F, 0xFF, 0xE0, 0x3F, 0xFE, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x1E, 0x00, + 0x01, 0xE0, 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x03, 0xC0, + 0x00, 0x38, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x03, 0x80, 0x00, 0x78, + 0x00, 0x07, 0x00, 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0xF0, 0x00, 0x0F, + 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x1E, 0x00, 0x01, + 0xE0, 0x00, 0x0E, 0x00, 0x0F, 0x0E, 0x00, 0x0F, 0x0E, 0x00, 0x0E, 0x0E, + 0x00, 0x0E, 0x1E, 0x00, 0x0E, 0x1C, 0x00, 0x1E, 0x1C, 0x00, 0x1C, 0x1C, + 0x00, 0x1C, 0x3C, 0x00, 0x1C, 0x3C, 0x00, 0x1C, 0x38, 0x00, 0x3C, 0x38, + 0x00, 0x38, 0x38, 0x00, 0x38, 0x78, 0x00, 0x38, 0x70, 0x00, 0x78, 0x70, + 0x00, 0x78, 0x70, 0x00, 0x70, 0xF0, 0x00, 0x70, 0xF0, 0x00, 0x70, 0xE0, + 0x00, 0xF0, 0xE0, 0x00, 0xE0, 0xF0, 0x03, 0xE0, 0x78, 0x0F, 0xC0, 0x7F, + 0xFF, 0x80, 0x1F, 0xFE, 0x00, 0x07, 0xF0, 0x00, 0xE0, 0x00, 0x3F, 0x80, + 0x03, 0xFC, 0x00, 0x1D, 0xE0, 0x01, 0xE7, 0x00, 0x0E, 0x38, 0x00, 0xE1, + 0xC0, 0x07, 0x0E, 0x00, 0x70, 0x70, 0x07, 0x83, 0xC0, 0x38, 0x1E, 0x03, + 0xC0, 0xF0, 0x1C, 0x03, 0x81, 0xE0, 0x1C, 0x0E, 0x00, 0xE0, 0xF0, 0x07, + 0x07, 0x00, 0x3C, 0x70, 0x01, 0xE3, 0x80, 0x0F, 0x38, 0x00, 0x39, 0xC0, + 0x01, 0xDC, 0x00, 0x0E, 0xE0, 0x00, 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x1F, + 0x00, 0x00, 0xF0, 0x00, 0x00, 0xE0, 0x03, 0x80, 0x0E, 0xE0, 0x07, 0x80, + 0x1E, 0xE0, 0x07, 0xC0, 0x1E, 0xE0, 0x0F, 0xC0, 0x1C, 0xE0, 0x0F, 0xC0, + 0x3C, 0xE0, 0x1F, 0xC0, 0x38, 0xE0, 0x1D, 0xC0, 0x78, 0xE0, 0x3D, 0xC0, + 0x70, 0xE0, 0x39, 0xC0, 0xF0, 0xE0, 0x79, 0xC0, 0xE0, 0xE0, 0x71, 0xC0, + 0xE0, 0xE0, 0xF1, 0xC1, 0xC0, 0xE0, 0xE1, 0xC1, 0xC0, 0xE1, 0xE1, 0xC3, + 0xC0, 0x61, 0xC1, 0xC3, 0x80, 0x63, 0xC1, 0xC7, 0x80, 0x63, 0x80, 0xE7, + 0x00, 0x67, 0x80, 0xEF, 0x00, 0x67, 0x00, 0xEE, 0x00, 0x7F, 0x00, 0xEE, + 0x00, 0x7E, 0x00, 0xFC, 0x00, 0x7E, 0x00, 0xFC, 0x00, 0x7C, 0x00, 0xF8, + 0x00, 0x7C, 0x00, 0xF8, 0x00, 0x78, 0x00, 0xF8, 0x00, 0x78, 0x00, 0xF0, + 0x00, 0x03, 0xC0, 0x03, 0xC0, 0x78, 0x00, 0xF0, 0x07, 0x80, 0x1C, 0x00, + 0xF0, 0x07, 0x80, 0x0F, 0x01, 0xE0, 0x01, 0xE0, 0x78, 0x00, 0x1C, 0x1E, + 0x00, 0x03, 0xC7, 0x80, 0x00, 0x39, 0xE0, 0x00, 0x07, 0xB8, 0x00, 0x00, + 0x7E, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x3E, 0x00, + 0x00, 0x0F, 0xC0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xF3, 0x80, 0x00, 0x3C, + 0x78, 0x00, 0x0F, 0x0F, 0x00, 0x03, 0xC0, 0xF0, 0x00, 0x70, 0x1E, 0x00, + 0x1E, 0x01, 0xE0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x03, 0xC0, 0x78, 0x00, + 0x78, 0x1E, 0x00, 0x0F, 0x00, 0xF0, 0x00, 0x3C, 0xE0, 0x00, 0x71, 0xE0, + 0x01, 0xE3, 0xC0, 0x07, 0x83, 0xC0, 0x1E, 0x07, 0x80, 0x78, 0x07, 0x00, + 0xE0, 0x0F, 0x03, 0xC0, 0x1E, 0x0F, 0x00, 0x1C, 0x3C, 0x00, 0x3C, 0xF0, + 0x00, 0x39, 0xC0, 0x00, 0x7F, 0x80, 0x00, 0xFE, 0x00, 0x00, 0xF8, 0x00, + 0x01, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x0E, 0x00, 0x00, + 0x1C, 0x00, 0x00, 0x78, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xC0, 0x00, 0x03, + 0x80, 0x00, 0x07, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0x81, + 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, + 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, + 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, + 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, + 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, + 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0xFF, 0xFF, 0xE0, 0xFF, + 0xFF, 0xF0, 0x7F, 0xFF, 0xF8, 0x00, 0x01, 0xF8, 0x1F, 0xC0, 0xFE, 0x07, + 0x00, 0x38, 0x03, 0xC0, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x03, 0xC0, + 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x07, + 0x00, 0x38, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x78, 0x03, 0x80, + 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x70, 0x03, 0xF8, 0x1F, 0xC0, 0xFE, 0x00, + 0xCC, 0xCC, 0xCC, 0x46, 0x66, 0x66, 0x66, 0x66, 0x66, 0x62, 0x33, 0x33, + 0x33, 0x03, 0xF8, 0x1F, 0xC0, 0xFE, 0x00, 0x70, 0x07, 0x00, 0x38, 0x01, + 0xC0, 0x0E, 0x00, 0xF0, 0x07, 0x00, 0x38, 0x01, 0xC0, 0x0E, 0x00, 0xE0, + 0x07, 0x00, 0x38, 0x01, 0xC0, 0x0E, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x01, + 0xC0, 0x1E, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x01, 0xC0, 0x1E, 0x00, 0xE0, + 0x07, 0x03, 0xF8, 0x1F, 0xC0, 0xFC, 0x00, 0x00, 0xF0, 0x03, 0xC0, 0x1F, + 0x00, 0x7C, 0x03, 0xB8, 0x1C, 0xE0, 0x63, 0x83, 0x8E, 0x1C, 0x38, 0x60, + 0x73, 0x81, 0xCC, 0x07, 0x70, 0x1F, 0x80, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xC0, 0xF1, 0xC3, 0x86, 0x0C, 0x00, 0xFE, 0x01, 0xFF, 0xE0, 0xFF, + 0xFC, 0x3C, 0x0F, 0x1C, 0x01, 0xC0, 0x00, 0x70, 0x00, 0x1C, 0x00, 0x0E, + 0x00, 0x1F, 0x83, 0xFF, 0xE3, 0xFE, 0x39, 0xF0, 0x1E, 0xF0, 0x07, 0x38, + 0x01, 0xCE, 0x00, 0xF3, 0xC0, 0xFC, 0xFF, 0xF7, 0x9F, 0xF1, 0xE1, 0xF0, + 0x38, 0x07, 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0xF0, + 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0x71, 0xF0, 0x0E, 0xFF, 0x83, 0xFF, + 0xF8, 0x7F, 0x0F, 0x0F, 0x80, 0xF1, 0xE0, 0x0E, 0x38, 0x01, 0xCF, 0x00, + 0x39, 0xE0, 0x07, 0x38, 0x00, 0xE7, 0x00, 0x38, 0xE0, 0x07, 0x3C, 0x00, + 0xE7, 0x80, 0x38, 0xF8, 0x0F, 0x1F, 0x87, 0xC3, 0xFF, 0xF0, 0xE7, 0xFC, + 0x1C, 0x7E, 0x00, 0x01, 0xF8, 0x07, 0xFC, 0x0F, 0xFE, 0x1E, 0x0F, 0x3C, + 0x07, 0x78, 0x07, 0x70, 0x07, 0x70, 0x00, 0xF0, 0x00, 0xE0, 0x00, 0xE0, + 0x00, 0xE0, 0x00, 0xE0, 0x0E, 0xE0, 0x1C, 0xF0, 0x3C, 0x78, 0x78, 0x7F, + 0xF0, 0x3F, 0xE0, 0x0F, 0x80, 0x00, 0x00, 0x70, 0x00, 0x0F, 0x00, 0x00, + 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 0x01, 0xE0, 0x1F, + 0x1C, 0x07, 0xFD, 0xC0, 0xFF, 0xDC, 0x1E, 0x0F, 0xC3, 0xC0, 0x7C, 0x38, + 0x07, 0x87, 0x00, 0x38, 0x70, 0x03, 0x8F, 0x00, 0x38, 0xE0, 0x07, 0x8E, + 0x00, 0x70, 0xE0, 0x07, 0x0E, 0x00, 0xF0, 0xE0, 0x0F, 0x0F, 0x01, 0xF0, + 0x78, 0x7E, 0x07, 0xFF, 0xE0, 0x3F, 0xEE, 0x01, 0xF8, 0xE0, 0x01, 0xF8, + 0x03, 0xFF, 0x03, 0xFF, 0xC3, 0xC1, 0xF3, 0xC0, 0x79, 0xC0, 0x1D, 0xC0, + 0x0E, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xF8, 0x00, 0x1C, 0x00, 0x0E, + 0x00, 0x07, 0x00, 0x73, 0xC0, 0x78, 0xF0, 0x78, 0x7F, 0xF8, 0x1F, 0xF8, + 0x03, 0xF0, 0x00, 0x01, 0xE0, 0x7C, 0x1F, 0x83, 0x80, 0x70, 0x1C, 0x03, + 0x83, 0xFC, 0x7F, 0x8F, 0xF0, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x0F, 0x01, + 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, + 0xE0, 0x1C, 0x00, 0x00, 0xFC, 0x60, 0x7F, 0xCC, 0x1F, 0xFF, 0x87, 0xC3, + 0xF1, 0xE0, 0x3E, 0x38, 0x03, 0x8E, 0x00, 0x71, 0xC0, 0x0E, 0x38, 0x01, + 0xCE, 0x00, 0x79, 0xC0, 0x0E, 0x38, 0x01, 0xC7, 0x00, 0x78, 0xE0, 0x0F, + 0x1E, 0x03, 0xC1, 0xE1, 0xF8, 0x3F, 0xFF, 0x03, 0xFE, 0xE0, 0x1F, 0x1C, + 0x00, 0x03, 0x00, 0x00, 0xE0, 0x00, 0x18, 0x38, 0x07, 0x07, 0x83, 0xC0, + 0x7F, 0xF8, 0x0F, 0xFC, 0x00, 0x7E, 0x00, 0x00, 0x07, 0x00, 0x01, 0xC0, + 0x00, 0x70, 0x00, 0x1C, 0x00, 0x0F, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, + 0x38, 0xFC, 0x0E, 0xFF, 0x87, 0xFF, 0xF1, 0xF8, 0x3C, 0x7C, 0x07, 0x1E, + 0x01, 0xC7, 0x00, 0x73, 0xC0, 0x1C, 0xE0, 0x0F, 0x38, 0x03, 0x8E, 0x00, + 0xE3, 0x80, 0x39, 0xE0, 0x0E, 0x70, 0x07, 0x9C, 0x01, 0xC7, 0x00, 0x71, + 0xC0, 0x1C, 0xE0, 0x07, 0x38, 0x03, 0x80, 0x07, 0x07, 0x0F, 0x0E, 0x00, + 0x00, 0x00, 0x1E, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x78, 0x70, 0x70, 0x70, 0x70, 0xF0, 0xE0, 0xE0, 0x00, 0x3C, 0x00, + 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, + 0x70, 0x01, 0xC0, 0x0E, 0x00, 0x38, 0x00, 0xE0, 0x03, 0x80, 0x1E, 0x00, + 0x70, 0x01, 0xC0, 0x07, 0x00, 0x1C, 0x00, 0xE0, 0x03, 0x80, 0x0E, 0x00, + 0x38, 0x00, 0xE0, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x01, 0xC0, 0x0F, 0x00, + 0x38, 0x00, 0xE0, 0x1F, 0x80, 0x7C, 0x03, 0xE0, 0x00, 0x07, 0x00, 0x00, + 0xE0, 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0xF0, 0x00, 0x1C, 0x00, 0x03, + 0x80, 0x00, 0x70, 0x1E, 0x0E, 0x07, 0x83, 0xC1, 0xE0, 0x70, 0x70, 0x0E, + 0x1C, 0x01, 0xCF, 0x00, 0x3B, 0xC0, 0x0F, 0xF8, 0x01, 0xFF, 0x80, 0x3E, + 0x70, 0x07, 0x8E, 0x00, 0xE0, 0xE0, 0x38, 0x1C, 0x07, 0x03, 0xC0, 0xE0, + 0x38, 0x1C, 0x07, 0x03, 0x80, 0xF0, 0xE0, 0x0E, 0x1C, 0x01, 0xE0, 0x07, + 0x07, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x1E, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x78, 0x70, 0x70, 0x70, 0x70, 0xF0, 0xE0, + 0xE0, 0x1E, 0x7C, 0x0F, 0x83, 0xBF, 0xE7, 0xF8, 0x7F, 0xFD, 0xFF, 0x8F, + 0xC3, 0xF0, 0xF1, 0xE0, 0x3C, 0x0E, 0x38, 0x07, 0x01, 0xCF, 0x01, 0xE0, + 0x39, 0xC0, 0x38, 0x07, 0x38, 0x07, 0x00, 0xE7, 0x00, 0xE0, 0x1C, 0xE0, + 0x1C, 0x07, 0x3C, 0x07, 0x00, 0xE7, 0x00, 0xE0, 0x1C, 0xE0, 0x1C, 0x03, + 0x9C, 0x03, 0x80, 0xF3, 0x80, 0x70, 0x1C, 0x70, 0x1C, 0x03, 0x9C, 0x03, + 0x80, 0x73, 0x80, 0x70, 0x0E, 0x00, 0x1E, 0x3E, 0x07, 0x7F, 0xE1, 0xFF, + 0xF8, 0x7E, 0x0F, 0x1F, 0x01, 0xC7, 0x80, 0x73, 0xC0, 0x1C, 0xE0, 0x07, + 0x38, 0x03, 0xCE, 0x00, 0xE3, 0x80, 0x39, 0xE0, 0x0E, 0x70, 0x03, 0x9C, + 0x01, 0xC7, 0x00, 0x71, 0xC0, 0x1C, 0x70, 0x07, 0x38, 0x01, 0xCE, 0x00, + 0xE0, 0x01, 0xF8, 0x03, 0xFF, 0x03, 0xFF, 0xC3, 0xE1, 0xE3, 0xC0, 0x79, + 0xC0, 0x1D, 0xC0, 0x0E, 0xE0, 0x07, 0x70, 0x03, 0xF0, 0x01, 0xF8, 0x01, + 0xDC, 0x00, 0xEE, 0x00, 0x77, 0x00, 0x73, 0xC0, 0x78, 0xF0, 0xF8, 0x7F, + 0xF8, 0x1F, 0xF8, 0x03, 0xF0, 0x00, 0x03, 0x8F, 0x80, 0x1D, 0xFF, 0x01, + 0xFF, 0xFC, 0x0F, 0xC1, 0xE0, 0x7C, 0x07, 0x83, 0xC0, 0x1C, 0x1C, 0x00, + 0xE1, 0xE0, 0x07, 0x0E, 0x00, 0x38, 0x70, 0x01, 0xC3, 0x80, 0x1E, 0x1C, + 0x00, 0xE1, 0xE0, 0x07, 0x0F, 0x00, 0x70, 0x78, 0x07, 0x83, 0xF0, 0xF8, + 0x3F, 0xFF, 0x81, 0xDF, 0xF8, 0x0E, 0x3F, 0x00, 0x70, 0x00, 0x03, 0x80, + 0x00, 0x3C, 0x00, 0x01, 0xC0, 0x00, 0x0E, 0x00, 0x00, 0x70, 0x00, 0x03, + 0x80, 0x00, 0x00, 0x00, 0xF8, 0xF0, 0x7F, 0xEE, 0x0F, 0xFF, 0xE1, 0xF0, + 0xFE, 0x3C, 0x07, 0xE3, 0x80, 0x3E, 0x70, 0x03, 0xC7, 0x00, 0x3C, 0x70, + 0x03, 0xCE, 0x00, 0x3C, 0xE0, 0x07, 0x8E, 0x00, 0x78, 0xE0, 0x07, 0x8E, + 0x00, 0xF8, 0xF0, 0x1F, 0x87, 0x87, 0xF0, 0x7F, 0xF7, 0x03, 0xFE, 0x70, + 0x0F, 0x8F, 0x00, 0x00, 0xF0, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x0E, + 0x00, 0x01, 0xE0, 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x04, 0x00, 0x1E, + 0x78, 0xE7, 0xC7, 0x7C, 0x3F, 0x01, 0xF0, 0x0F, 0x00, 0xF0, 0x07, 0x00, + 0x38, 0x01, 0xC0, 0x0E, 0x00, 0xF0, 0x07, 0x00, 0x38, 0x01, 0xC0, 0x0E, + 0x00, 0x70, 0x07, 0x00, 0x38, 0x00, 0x01, 0xF8, 0x07, 0xFE, 0x0F, 0xFF, + 0x1E, 0x0F, 0x3C, 0x07, 0x38, 0x07, 0x38, 0x00, 0x3C, 0x00, 0x3F, 0x80, + 0x1F, 0xF8, 0x07, 0xFC, 0x00, 0x7E, 0x00, 0x0E, 0xE0, 0x0E, 0xE0, 0x1E, + 0xF0, 0x3C, 0x7F, 0xF8, 0x7F, 0xF0, 0x1F, 0xC0, 0x0E, 0x03, 0x80, 0xE0, + 0x38, 0x7F, 0xDF, 0xEF, 0xF8, 0x70, 0x1C, 0x0E, 0x03, 0x80, 0xE0, 0x38, + 0x1E, 0x07, 0x01, 0xC0, 0x70, 0x1C, 0x0F, 0x03, 0x80, 0xFC, 0x3F, 0x07, + 0x80, 0x1C, 0x03, 0xC7, 0x00, 0xE1, 0xC0, 0x38, 0xF0, 0x0E, 0x38, 0x03, + 0x8E, 0x00, 0xE3, 0x80, 0x70, 0xE0, 0x1C, 0x78, 0x07, 0x1C, 0x01, 0xC7, + 0x00, 0x71, 0xC0, 0x3C, 0x70, 0x0E, 0x38, 0x07, 0x8E, 0x03, 0xE3, 0x81, + 0xF8, 0xFF, 0xFE, 0x1F, 0xFF, 0x03, 0xF1, 0xC0, 0xE0, 0x07, 0xE0, 0x0F, + 0xE0, 0x0E, 0xE0, 0x1C, 0x70, 0x1C, 0x70, 0x38, 0x70, 0x38, 0x70, 0x70, + 0x70, 0xF0, 0x70, 0xE0, 0x71, 0xC0, 0x71, 0xC0, 0x33, 0x80, 0x3B, 0x80, + 0x3F, 0x00, 0x3F, 0x00, 0x3E, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0xE0, 0x1C, + 0x07, 0xE0, 0x3C, 0x0E, 0xE0, 0x3C, 0x0E, 0xE0, 0x7C, 0x1C, 0xE0, 0x7C, + 0x1C, 0xE0, 0xEC, 0x38, 0xE0, 0xEC, 0x38, 0x61, 0xCC, 0x70, 0x61, 0xCC, + 0x70, 0x63, 0x8C, 0xE0, 0x73, 0x8C, 0xE0, 0x77, 0x0C, 0xC0, 0x77, 0x0D, + 0xC0, 0x7E, 0x0D, 0x80, 0x7E, 0x0F, 0x80, 0x7C, 0x0F, 0x80, 0x7C, 0x0F, + 0x00, 0x78, 0x0F, 0x00, 0x78, 0x0E, 0x00, 0x0E, 0x00, 0xE1, 0xE0, 0x38, + 0x1C, 0x0E, 0x03, 0xC3, 0x80, 0x38, 0xE0, 0x07, 0xBC, 0x00, 0x77, 0x00, + 0x0F, 0xC0, 0x00, 0xF0, 0x00, 0x1C, 0x00, 0x07, 0xC0, 0x01, 0xF8, 0x00, + 0x77, 0x80, 0x1E, 0x70, 0x07, 0x8F, 0x00, 0xE0, 0xE0, 0x38, 0x1C, 0x0E, + 0x01, 0xC3, 0x80, 0x38, 0x00, 0x0E, 0x00, 0x70, 0xF0, 0x0F, 0x07, 0x00, + 0xE0, 0x70, 0x1C, 0x07, 0x01, 0xC0, 0x70, 0x38, 0x07, 0x03, 0x80, 0x70, + 0x70, 0x07, 0x07, 0x00, 0x70, 0xE0, 0x03, 0x9E, 0x00, 0x39, 0xC0, 0x03, + 0xB8, 0x00, 0x3B, 0x80, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x03, 0xE0, 0x00, + 0x1E, 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x03, 0x80, 0x00, 0x70, 0x00, + 0x07, 0x00, 0x00, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xC0, 0x00, 0xF0, 0x00, + 0x00, 0x07, 0xFF, 0xC0, 0xFF, 0xF8, 0x3F, 0xFF, 0x00, 0x01, 0xC0, 0x00, + 0x70, 0x00, 0x1C, 0x00, 0x07, 0x00, 0x01, 0xC0, 0x00, 0x70, 0x00, 0x1C, + 0x00, 0x07, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, + 0x03, 0xC0, 0x00, 0x7F, 0xFE, 0x1F, 0xFF, 0xC3, 0xFF, 0xF8, 0x00, 0x00, + 0x70, 0x1F, 0x01, 0xF0, 0x3C, 0x03, 0x80, 0x38, 0x07, 0x00, 0x70, 0x07, + 0x00, 0x70, 0x07, 0x00, 0xE0, 0x0E, 0x01, 0xE0, 0x3C, 0x0F, 0x80, 0xE0, + 0x0F, 0x00, 0x78, 0x03, 0x80, 0x38, 0x03, 0x80, 0x38, 0x03, 0x80, 0x38, + 0x07, 0x00, 0x70, 0x07, 0x00, 0x70, 0x0E, 0x00, 0xF8, 0x0F, 0x80, 0x78, + 0x00, 0x01, 0x80, 0xC0, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x0C, 0x06, 0x03, + 0x01, 0x81, 0xC0, 0xC0, 0x60, 0x30, 0x18, 0x18, 0x0C, 0x06, 0x03, 0x01, + 0x81, 0x80, 0xC0, 0x60, 0x30, 0x38, 0x18, 0x0C, 0x06, 0x03, 0x03, 0x01, + 0x80, 0xC0, 0x00, 0x01, 0xE0, 0x1F, 0x01, 0xF0, 0x07, 0x00, 0xE0, 0x0E, + 0x00, 0xE0, 0x0E, 0x01, 0xC0, 0x1C, 0x01, 0xC0, 0x1C, 0x01, 0xC0, 0x1C, + 0x01, 0xE0, 0x0F, 0x00, 0x70, 0x1F, 0x03, 0xC0, 0x78, 0x07, 0x00, 0x70, + 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x01, 0xC0, 0x1C, 0x03, 0xC0, + 0xF8, 0x0F, 0x80, 0xE0, 0x00, 0x1C, 0x00, 0x3F, 0x00, 0x7F, 0x83, 0x63, + 0xC7, 0xC1, 0xFE, 0x00, 0xFC, 0x00, 0x78}; + +const GFXglyph FreeSansOblique18pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 10, 0, 1}, // 0x20 ' ' + {0, 9, 26, 10, 4, -25}, // 0x21 '!' + {30, 10, 9, 12, 6, -24}, // 0x22 '"' + {42, 21, 25, 19, 2, -24}, // 0x23 '#' + {108, 20, 31, 19, 2, -26}, // 0x24 '$' + {186, 26, 25, 31, 5, -24}, // 0x25 '%' + {268, 20, 25, 23, 3, -24}, // 0x26 '&' + {331, 4, 9, 7, 6, -24}, // 0x27 ''' + {336, 12, 33, 12, 4, -25}, // 0x28 '(' + {386, 12, 33, 12, -1, -24}, // 0x29 ')' + {436, 10, 10, 14, 6, -25}, // 0x2A '*' + {449, 18, 16, 20, 3, -15}, // 0x2B '+' + {485, 5, 8, 10, 2, -2}, // 0x2C ',' + {490, 9, 3, 12, 3, -10}, // 0x2D '-' + {494, 4, 4, 10, 3, -3}, // 0x2E '.' + {496, 15, 26, 10, 0, -25}, // 0x2F '/' + {545, 18, 25, 19, 3, -24}, // 0x30 '0' + {602, 10, 25, 19, 7, -24}, // 0x31 '1' + {634, 20, 25, 19, 2, -24}, // 0x32 '2' + {697, 19, 25, 19, 2, -24}, // 0x33 '3' + {757, 18, 25, 19, 2, -24}, // 0x34 '4' + {814, 20, 25, 19, 2, -24}, // 0x35 '5' + {877, 19, 25, 19, 3, -24}, // 0x36 '6' + {937, 18, 25, 19, 5, -24}, // 0x37 '7' + {994, 19, 25, 19, 3, -24}, // 0x38 '8' + {1054, 19, 25, 19, 2, -24}, // 0x39 '9' + {1114, 7, 19, 10, 4, -18}, // 0x3A ':' + {1131, 8, 24, 10, 3, -18}, // 0x3B ';' + {1155, 19, 17, 20, 3, -16}, // 0x3C '<' + {1196, 18, 9, 20, 3, -12}, // 0x3D '=' + {1217, 19, 17, 20, 2, -15}, // 0x3E '>' + {1258, 16, 26, 19, 6, -25}, // 0x3F '?' + {1310, 33, 31, 36, 3, -25}, // 0x40 '@' + {1438, 23, 26, 23, 0, -25}, // 0x41 'A' + {1513, 21, 26, 23, 3, -25}, // 0x42 'B' + {1582, 22, 26, 25, 4, -25}, // 0x43 'C' + {1654, 23, 26, 25, 3, -25}, // 0x44 'D' + {1729, 23, 26, 23, 3, -25}, // 0x45 'E' + {1804, 22, 26, 21, 3, -25}, // 0x46 'F' + {1876, 24, 26, 27, 4, -25}, // 0x47 'G' + {1954, 25, 26, 25, 3, -25}, // 0x48 'H' + {2036, 8, 26, 10, 4, -25}, // 0x49 'I' + {2062, 18, 26, 18, 2, -25}, // 0x4A 'J' + {2121, 25, 26, 23, 3, -25}, // 0x4B 'K' + {2203, 16, 26, 19, 3, -25}, // 0x4C 'L' + {2255, 29, 26, 30, 3, -25}, // 0x4D 'M' + {2350, 25, 26, 26, 3, -25}, // 0x4E 'N' + {2432, 24, 26, 27, 4, -25}, // 0x4F 'O' + {2510, 22, 26, 23, 3, -25}, // 0x50 'P' + {2582, 25, 28, 27, 4, -25}, // 0x51 'Q' + {2670, 23, 26, 25, 3, -25}, // 0x52 'R' + {2745, 22, 26, 23, 3, -25}, // 0x53 'S' + {2817, 20, 26, 21, 6, -25}, // 0x54 'T' + {2882, 24, 26, 25, 4, -25}, // 0x55 'U' + {2960, 21, 26, 23, 6, -25}, // 0x56 'V' + {3029, 32, 26, 33, 6, -25}, // 0x57 'W' + {3133, 27, 26, 23, 1, -25}, // 0x58 'X' + {3221, 23, 26, 24, 6, -25}, // 0x59 'Y' + {3296, 25, 26, 21, 1, -25}, // 0x5A 'Z' + {3378, 13, 33, 10, 1, -25}, // 0x5B '[' + {3432, 4, 26, 10, 5, -25}, // 0x5C '\' + {3445, 13, 33, 10, -1, -24}, // 0x5D ']' + {3499, 14, 14, 16, 3, -24}, // 0x5E '^' + {3524, 21, 2, 19, -2, 5}, // 0x5F '_' + {3530, 6, 5, 12, 6, -25}, // 0x60 '`' + {3534, 18, 19, 19, 2, -18}, // 0x61 'a' + {3577, 19, 26, 20, 2, -25}, // 0x62 'b' + {3639, 16, 19, 18, 3, -18}, // 0x63 'c' + {3677, 20, 26, 20, 3, -25}, // 0x64 'd' + {3742, 17, 19, 19, 3, -18}, // 0x65 'e' + {3783, 11, 26, 9, 2, -25}, // 0x66 'f' + {3819, 19, 27, 19, 2, -18}, // 0x67 'g' + {3884, 18, 26, 19, 2, -25}, // 0x68 'h' + {3943, 8, 26, 8, 2, -25}, // 0x69 'i' + {3969, 14, 34, 8, -2, -25}, // 0x6A 'j' + {4029, 19, 26, 18, 2, -25}, // 0x6B 'k' + {4091, 8, 26, 8, 2, -25}, // 0x6C 'l' + {4117, 27, 19, 29, 2, -18}, // 0x6D 'm' + {4182, 18, 19, 19, 2, -18}, // 0x6E 'n' + {4225, 17, 19, 19, 3, -18}, // 0x6F 'o' + {4266, 21, 26, 20, 0, -18}, // 0x70 'p' + {4335, 20, 27, 19, 2, -18}, // 0x71 'q' + {4403, 13, 19, 11, 2, -18}, // 0x72 'r' + {4434, 16, 19, 18, 2, -18}, // 0x73 's' + {4472, 10, 23, 9, 3, -22}, // 0x74 't' + {4501, 18, 19, 19, 3, -18}, // 0x75 'u' + {4544, 16, 19, 17, 4, -18}, // 0x76 'v' + {4582, 24, 19, 25, 4, -18}, // 0x77 'w' + {4639, 19, 19, 17, 1, -18}, // 0x78 'x' + {4685, 20, 27, 17, 0, -18}, // 0x79 'y' + {4753, 19, 19, 17, 1, -18}, // 0x7A 'z' + {4799, 12, 33, 12, 3, -25}, // 0x7B '{' + {4849, 9, 33, 9, 2, -25}, // 0x7C '|' + {4887, 12, 33, 12, 0, -24}, // 0x7D '}' + {4937, 16, 7, 20, 5, -15}}; // 0x7E '~' + +const GFXfont FreeSansOblique18pt7b PROGMEM = { + (uint8_t *)FreeSansOblique18pt7bBitmaps, + (GFXglyph *)FreeSansOblique18pt7bGlyphs, 0x20, 0x7E, 42}; + +// Approx. 5623 bytes diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansOblique24pt7b.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansOblique24pt7b.h new file mode 100644 index 0000000..805aefa --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansOblique24pt7b.h @@ -0,0 +1,842 @@ +#pragma once +#include + +const uint8_t FreeSansOblique24pt7bBitmaps[] PROGMEM = { + 0x01, 0xE0, 0x3C, 0x0F, 0x81, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x3C, 0x07, + 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x03, + 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x38, 0x07, 0x00, 0xE0, 0x18, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xF0, 0x1E, 0x07, 0x80, 0xF0, 0x1E, 0x00, 0x78, + 0x7B, 0xC3, 0xDE, 0x1F, 0xE1, 0xEF, 0x0F, 0x78, 0x7B, 0xC3, 0xDC, 0x1C, + 0xE0, 0xE7, 0x07, 0x30, 0x31, 0x81, 0x80, 0x00, 0x07, 0x81, 0xC0, 0x00, + 0x78, 0x3C, 0x00, 0x07, 0x03, 0xC0, 0x00, 0xF0, 0x38, 0x00, 0x0E, 0x07, + 0x80, 0x01, 0xE0, 0x70, 0x00, 0x1E, 0x0F, 0x00, 0x01, 0xC0, 0xF0, 0x00, + 0x3C, 0x0E, 0x00, 0xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, + 0xFE, 0x00, 0x70, 0x3C, 0x00, 0x0F, 0x03, 0x80, 0x00, 0xF0, 0x78, 0x00, + 0x0E, 0x07, 0x80, 0x01, 0xE0, 0x70, 0x00, 0x1C, 0x0F, 0x00, 0x03, 0xC0, + 0xE0, 0x00, 0x3C, 0x1E, 0x00, 0x03, 0x81, 0xE0, 0x0F, 0xFF, 0xFF, 0xE0, + 0xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0xE0, 0x0F, 0x03, 0x80, 0x00, 0xE0, + 0x78, 0x00, 0x1E, 0x07, 0x00, 0x01, 0xC0, 0xF0, 0x00, 0x1C, 0x0F, 0x00, + 0x03, 0xC0, 0xE0, 0x00, 0x38, 0x1E, 0x00, 0x07, 0x81, 0xC0, 0x00, 0x78, + 0x3C, 0x00, 0x07, 0x03, 0xC0, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x30, + 0x00, 0x00, 0x7F, 0x80, 0x00, 0xFF, 0xF8, 0x00, 0x7F, 0xFF, 0x00, 0x7F, + 0xFF, 0xE0, 0x1F, 0x18, 0xF8, 0x0F, 0x8E, 0x1F, 0x07, 0xC3, 0x83, 0xC1, + 0xE0, 0xE0, 0xF0, 0x70, 0x38, 0x3C, 0x3C, 0x0C, 0x0F, 0x0F, 0x07, 0x00, + 0x03, 0xC1, 0xC0, 0x00, 0xF0, 0x70, 0x00, 0x3E, 0x1C, 0x00, 0x0F, 0xE6, + 0x00, 0x01, 0xFF, 0xC0, 0x00, 0x3F, 0xFE, 0x00, 0x03, 0xFF, 0xE0, 0x00, + 0x3F, 0xFC, 0x00, 0x03, 0xFF, 0x80, 0x01, 0xC7, 0xF0, 0x00, 0x70, 0x7C, + 0x00, 0x1C, 0x0F, 0x00, 0x06, 0x03, 0xCF, 0x03, 0x80, 0xF3, 0xC0, 0xE0, + 0x3C, 0xF0, 0x38, 0x0E, 0x3C, 0x0E, 0x07, 0x8F, 0x03, 0x01, 0xE3, 0xE1, + 0xC0, 0xF0, 0xF8, 0x70, 0x78, 0x1F, 0x9C, 0xFC, 0x03, 0xFF, 0xFE, 0x00, + 0x7F, 0xFF, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0E, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x80, 0x1F, 0x00, 0x00, 0x70, 0x07, 0xFC, 0x00, 0x0E, + 0x00, 0xFF, 0xE0, 0x01, 0xC0, 0x1E, 0x1E, 0x00, 0x3C, 0x03, 0x80, 0xF0, + 0x03, 0x80, 0x70, 0x07, 0x00, 0x70, 0x07, 0x00, 0x70, 0x0E, 0x00, 0xE0, + 0x07, 0x01, 0xC0, 0x0E, 0x00, 0x70, 0x3C, 0x00, 0xE0, 0x0E, 0x03, 0x80, + 0x0E, 0x00, 0xE0, 0x70, 0x00, 0xF0, 0x1C, 0x0E, 0x00, 0x07, 0x87, 0xC1, + 0xE0, 0x00, 0x7F, 0xF8, 0x1C, 0x00, 0x03, 0xFE, 0x03, 0x80, 0x00, 0x0F, + 0x80, 0x70, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x1F, + 0x00, 0x00, 0x1C, 0x07, 0xFC, 0x00, 0x03, 0x80, 0xFF, 0xE0, 0x00, 0x70, + 0x1E, 0x1E, 0x00, 0x0F, 0x03, 0x80, 0xF0, 0x00, 0xE0, 0x70, 0x07, 0x00, + 0x1C, 0x07, 0x00, 0x70, 0x03, 0x80, 0xE0, 0x07, 0x00, 0x70, 0x0E, 0x00, + 0x70, 0x0F, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x1C, 0x00, + 0xF0, 0x1C, 0x03, 0x80, 0x07, 0x87, 0xC0, 0x70, 0x00, 0x7F, 0xF8, 0x07, + 0x00, 0x03, 0xFE, 0x00, 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x01, 0xF8, 0x00, + 0x03, 0xFF, 0x00, 0x01, 0xFF, 0xE0, 0x00, 0xF8, 0x7C, 0x00, 0x78, 0x0F, + 0x00, 0x1E, 0x03, 0xC0, 0x0F, 0x00, 0xF0, 0x03, 0xC0, 0x3C, 0x00, 0xF0, + 0x1E, 0x00, 0x3C, 0x07, 0x80, 0x0F, 0x87, 0xC0, 0x01, 0xE3, 0xE0, 0x00, + 0x7F, 0xF0, 0x00, 0x0F, 0xF8, 0x00, 0x03, 0xF8, 0x00, 0x03, 0xFC, 0x00, + 0x03, 0xFF, 0x00, 0x01, 0xFB, 0xE0, 0x70, 0xF8, 0x7C, 0x1C, 0x7C, 0x1F, + 0x0E, 0x3C, 0x03, 0xE3, 0x9E, 0x00, 0x79, 0xE7, 0x80, 0x1F, 0xF3, 0xC0, + 0x03, 0xF8, 0xF0, 0x00, 0xFE, 0x3C, 0x00, 0x1F, 0x0F, 0x00, 0x07, 0xC3, + 0xE0, 0x03, 0xF8, 0xF8, 0x03, 0xFE, 0x3F, 0x83, 0xF7, 0xC7, 0xFF, 0xF8, + 0xF0, 0xFF, 0xFC, 0x3E, 0x1F, 0xFC, 0x07, 0x81, 0xFC, 0x00, 0x00, 0x7B, + 0xDF, 0xEF, 0x7B, 0xDC, 0xE7, 0x31, 0x80, 0x00, 0x0E, 0x00, 0x38, 0x00, + 0xE0, 0x03, 0x80, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x01, 0xE0, 0x03, 0x80, + 0x0F, 0x00, 0x1C, 0x00, 0x78, 0x00, 0xE0, 0x03, 0xC0, 0x07, 0x00, 0x0E, + 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, + 0x1C, 0x00, 0x78, 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0E, + 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x80, + 0x07, 0x00, 0x06, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x30, 0x00, + 0x70, 0x00, 0xE0, 0x00, 0xC0, 0x00, 0x00, 0x30, 0x00, 0x70, 0x00, 0xE0, + 0x00, 0xC0, 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, 0x0E, 0x00, + 0x1C, 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x80, 0x07, + 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, 0x01, 0xE0, 0x03, 0x80, + 0x07, 0x00, 0x0E, 0x00, 0x3C, 0x00, 0x70, 0x00, 0xE0, 0x01, 0xC0, 0x07, + 0x00, 0x0E, 0x00, 0x3C, 0x00, 0x70, 0x01, 0xE0, 0x03, 0x80, 0x0F, 0x00, + 0x1C, 0x00, 0x78, 0x00, 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x1C, 0x00, 0x70, + 0x01, 0xC0, 0x07, 0x00, 0x00, 0x01, 0xC0, 0x07, 0x00, 0x38, 0x18, 0xE3, + 0x7B, 0xBF, 0xFF, 0xF3, 0xFF, 0x01, 0xE0, 0x1F, 0xC0, 0xF7, 0x07, 0x9E, + 0x1C, 0x38, 0x20, 0xC0, 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x78, + 0x00, 0x00, 0xE0, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, 0x00, 0x07, 0x00, + 0x00, 0x1C, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xE0, 0x07, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, + 0x78, 0x00, 0x00, 0xE0, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, 0x00, 0x07, + 0x00, 0x00, 0x1C, 0x00, 0x00, 0x38, 0x00, 0x00, 0x3E, 0x7C, 0xF9, 0xE7, + 0xC1, 0x83, 0x0C, 0x18, 0x63, 0xC6, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFE, 0x7D, 0xF7, 0xBE, 0xF8, 0x00, 0x00, 0x18, 0x00, 0x01, 0xC0, 0x00, + 0x1C, 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 0x00, 0x70, 0x00, 0x07, 0x00, + 0x00, 0x30, 0x00, 0x03, 0x80, 0x00, 0x18, 0x00, 0x01, 0xC0, 0x00, 0x0C, + 0x00, 0x00, 0xE0, 0x00, 0x06, 0x00, 0x00, 0x70, 0x00, 0x03, 0x00, 0x00, + 0x38, 0x00, 0x01, 0x80, 0x00, 0x1C, 0x00, 0x00, 0xC0, 0x00, 0x0E, 0x00, + 0x00, 0x60, 0x00, 0x07, 0x00, 0x00, 0x70, 0x00, 0x03, 0x80, 0x00, 0x38, + 0x00, 0x01, 0x80, 0x00, 0x1C, 0x00, 0x00, 0xC0, 0x00, 0x0E, 0x00, 0x00, + 0x60, 0x00, 0x07, 0x00, 0x00, 0x30, 0x00, 0x03, 0x80, 0x00, 0x18, 0x00, + 0x00, 0x00, 0x0F, 0xC0, 0x00, 0xFF, 0xE0, 0x03, 0xFF, 0xE0, 0x0F, 0xFF, + 0xE0, 0x3F, 0x0F, 0xC0, 0xF8, 0x07, 0x81, 0xE0, 0x0F, 0x87, 0x80, 0x0F, + 0x1F, 0x00, 0x1E, 0x3C, 0x00, 0x3C, 0x78, 0x00, 0x79, 0xE0, 0x00, 0xF3, + 0xC0, 0x01, 0xE7, 0x80, 0x07, 0xDE, 0x00, 0x0F, 0xBC, 0x00, 0x1E, 0x78, + 0x00, 0x3C, 0xF0, 0x00, 0x79, 0xE0, 0x00, 0xF7, 0x80, 0x03, 0xEF, 0x00, + 0x07, 0xDE, 0x00, 0x0F, 0x3C, 0x00, 0x1E, 0x78, 0x00, 0x7C, 0xF0, 0x00, + 0xF1, 0xE0, 0x03, 0xE3, 0xC0, 0x07, 0x87, 0xC0, 0x1F, 0x0F, 0x80, 0x7C, + 0x0F, 0xC3, 0xF0, 0x1F, 0xFF, 0xC0, 0x1F, 0xFF, 0x00, 0x1F, 0xFC, 0x00, + 0x0F, 0xC0, 0x00, 0x00, 0x18, 0x01, 0xC0, 0x1C, 0x01, 0xE0, 0x1F, 0x0F, + 0xFB, 0xFF, 0xDF, 0xFC, 0xFF, 0xE0, 0x0F, 0x00, 0x78, 0x07, 0xC0, 0x3C, + 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x07, 0xC0, 0x3C, 0x01, 0xE0, 0x0F, 0x00, + 0x78, 0x07, 0xC0, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x07, 0xC0, 0x3C, + 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x07, 0xC0, 0x3C, 0x00, 0x00, 0x03, 0xFC, + 0x00, 0x03, 0xFF, 0xE0, 0x00, 0xFF, 0xFE, 0x00, 0x3F, 0xFF, 0xE0, 0x0F, + 0xC0, 0xFC, 0x03, 0xE0, 0x07, 0xC0, 0xF8, 0x00, 0xF8, 0x1F, 0x00, 0x0F, + 0x03, 0xC0, 0x01, 0xE0, 0xF8, 0x00, 0x3C, 0x1E, 0x00, 0x07, 0x80, 0x00, + 0x01, 0xE0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, 0xE0, + 0x00, 0x00, 0xF8, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x1F, + 0xC0, 0x00, 0x0F, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0x00, + 0xFC, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, 0xE0, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0xFF, + 0xFF, 0xFC, 0x3F, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFC, + 0x00, 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xFE, 0x00, 0x3F, 0xFF, 0x80, 0x3F, + 0xFF, 0xE0, 0x1F, 0x81, 0xF8, 0x1F, 0x00, 0x7C, 0x1F, 0x00, 0x1E, 0x0F, + 0x00, 0x0F, 0x0F, 0x80, 0x07, 0x87, 0x80, 0x03, 0xC0, 0x00, 0x03, 0xC0, + 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x7F, 0xE0, + 0x00, 0x3F, 0xE0, 0x00, 0x1F, 0xF8, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x3F, + 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0xF0, 0x00, 0x00, + 0x79, 0xE0, 0x00, 0x3C, 0xF0, 0x00, 0x1E, 0x78, 0x00, 0x1E, 0x3C, 0x00, + 0x0F, 0x1E, 0x00, 0x0F, 0x0F, 0x80, 0x1F, 0x83, 0xF0, 0x3F, 0x81, 0xFF, + 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x1F, 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x00, + 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x7E, + 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x03, 0xFC, 0x00, 0x07, 0xBC, + 0x00, 0x0F, 0xBC, 0x00, 0x1F, 0x7C, 0x00, 0x3E, 0x78, 0x00, 0x7C, 0x78, + 0x00, 0xF8, 0x78, 0x00, 0xF0, 0x78, 0x01, 0xE0, 0xF0, 0x03, 0xC0, 0xF0, + 0x07, 0x80, 0xF0, 0x0F, 0x00, 0xF0, 0x1E, 0x01, 0xF0, 0x3C, 0x01, 0xE0, + 0x78, 0x01, 0xE0, 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, + 0xFF, 0xFF, 0xFE, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, + 0x00, 0x07, 0x80, 0x00, 0x07, 0x80, 0x00, 0x07, 0x80, 0x00, 0x07, 0x80, + 0x00, 0x0F, 0x80, 0x00, 0x7F, 0xFF, 0xC0, 0x1F, 0xFF, 0xF8, 0x03, 0xFF, + 0xFF, 0x00, 0x7F, 0xFF, 0xE0, 0x1E, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x78, 0x00, + 0x00, 0x1E, 0x00, 0x00, 0x03, 0xC7, 0xE0, 0x00, 0xF7, 0xFF, 0x80, 0x1F, + 0xFF, 0xF8, 0x03, 0xFF, 0xFF, 0x80, 0xFE, 0x03, 0xF0, 0x1F, 0x00, 0x3F, + 0x03, 0xC0, 0x03, 0xE0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x07, 0x80, 0x00, + 0x00, 0xF0, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x70, + 0x00, 0x00, 0x1E, 0x1E, 0x00, 0x03, 0xC3, 0xC0, 0x00, 0xF0, 0x7C, 0x00, + 0x3C, 0x0F, 0x80, 0x0F, 0x80, 0xFC, 0x07, 0xE0, 0x1F, 0xFF, 0xF8, 0x01, + 0xFF, 0xFE, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x07, + 0xE0, 0x00, 0x3F, 0xF8, 0x00, 0x7F, 0xFC, 0x00, 0xFF, 0xFE, 0x01, 0xF8, + 0x3E, 0x03, 0xE0, 0x1F, 0x07, 0xC0, 0x1F, 0x0F, 0x80, 0x0F, 0x0F, 0x00, + 0x0F, 0x1F, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x3C, 0x1F, + 0x80, 0x3C, 0x7F, 0xE0, 0x3D, 0xFF, 0xF0, 0x7B, 0xFF, 0xF8, 0x7F, 0xC1, + 0xF8, 0x7F, 0x00, 0x7C, 0x7E, 0x00, 0x7C, 0xFC, 0x00, 0x3C, 0xF8, 0x00, + 0x3C, 0xF8, 0x00, 0x3C, 0xF0, 0x00, 0x3C, 0xF0, 0x00, 0x38, 0xF0, 0x00, + 0x78, 0xF0, 0x00, 0x78, 0xF0, 0x00, 0xF0, 0xF8, 0x01, 0xF0, 0x7C, 0x03, + 0xE0, 0x7E, 0x0F, 0xC0, 0x3F, 0xFF, 0xC0, 0x3F, 0xFF, 0x80, 0x0F, 0xFE, + 0x00, 0x03, 0xF8, 0x00, 0x1F, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0xE1, 0xFF, + 0xFF, 0xF8, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x07, 0x80, + 0x00, 0x03, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x78, + 0x00, 0x00, 0x1E, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x07, 0x80, 0x00, 0x03, + 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x3C, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, 0xC0, 0x00, 0x01, 0xE0, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0x80, + 0x00, 0x03, 0xC0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1E, + 0x00, 0x00, 0x0F, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x01, 0xF0, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xFE, 0x00, 0x1F, + 0xFF, 0x80, 0x1F, 0xFF, 0xE0, 0x1F, 0x81, 0xF8, 0x1F, 0x00, 0x7C, 0x0F, + 0x00, 0x1E, 0x0F, 0x00, 0x0F, 0x07, 0x80, 0x07, 0x83, 0xC0, 0x03, 0xC1, + 0xE0, 0x03, 0xC0, 0xF8, 0x03, 0xC0, 0x7E, 0x07, 0xC0, 0x1F, 0xFF, 0xC0, + 0x07, 0xFF, 0xC0, 0x03, 0xFF, 0xE0, 0x07, 0xFF, 0xF8, 0x07, 0xE0, 0x7E, + 0x07, 0xC0, 0x0F, 0x07, 0x80, 0x07, 0xC7, 0xC0, 0x01, 0xE3, 0xC0, 0x00, + 0xF3, 0xC0, 0x00, 0x79, 0xE0, 0x00, 0x3C, 0xF0, 0x00, 0x1C, 0x78, 0x00, + 0x1E, 0x3C, 0x00, 0x0F, 0x1F, 0x00, 0x0F, 0x0F, 0xC0, 0x0F, 0x83, 0xF0, + 0x3F, 0x81, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x0F, 0xFF, 0x00, 0x01, + 0xFE, 0x00, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x7F, 0xF0, 0x01, 0xFF, 0xFC, + 0x03, 0xFF, 0xFC, 0x07, 0xF0, 0x7E, 0x07, 0xC0, 0x3E, 0x0F, 0x80, 0x1F, + 0x0F, 0x00, 0x0F, 0x1E, 0x00, 0x0F, 0x1E, 0x00, 0x0F, 0x3C, 0x00, 0x0F, + 0x3C, 0x00, 0x0F, 0x3C, 0x00, 0x1F, 0x3C, 0x00, 0x1F, 0x3C, 0x00, 0x3F, + 0x3E, 0x00, 0x7E, 0x3E, 0x00, 0xFE, 0x1F, 0x83, 0xFE, 0x1F, 0xFF, 0xFE, + 0x0F, 0xFF, 0xBC, 0x07, 0xFE, 0x3C, 0x01, 0xF8, 0x7C, 0x00, 0x00, 0x7C, + 0x00, 0x00, 0x78, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF0, 0xF0, 0x01, 0xF0, + 0xF0, 0x03, 0xE0, 0xF8, 0x07, 0xC0, 0xFC, 0x1F, 0xC0, 0x7F, 0xFF, 0x80, + 0x3F, 0xFE, 0x00, 0x1F, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xC1, 0xF0, + 0x78, 0x3E, 0x0F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x1F, + 0x07, 0x83, 0xE0, 0xF8, 0x00, 0x03, 0xE0, 0x7C, 0x0F, 0x03, 0xE0, 0x7C, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x7C, 0x0F, + 0x81, 0xE0, 0x7C, 0x01, 0x80, 0x30, 0x0C, 0x01, 0x80, 0x60, 0x3C, 0x06, + 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x70, 0x00, 0x00, 0xF8, 0x00, + 0x00, 0xFE, 0x00, 0x01, 0xFF, 0x00, 0x03, 0xFE, 0x00, 0x03, 0xFE, 0x00, + 0x07, 0xFC, 0x00, 0x07, 0xFC, 0x00, 0x0F, 0xF8, 0x00, 0x07, 0xF0, 0x00, + 0x03, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFE, + 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x1F, 0xF0, 0x00, + 0x01, 0xFF, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x0E, + 0x00, 0x00, 0x00, 0x80, 0x1F, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0xE3, 0xFF, + 0xFF, 0xF8, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, + 0xC7, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0xF8, 0x04, 0x00, 0x00, 0x01, 0xC0, + 0x00, 0x00, 0xFC, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x03, 0xFE, 0x00, 0x00, + 0x3F, 0xE0, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFE, + 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x00, 0x00, + 0x3F, 0x80, 0x00, 0x7F, 0xC0, 0x00, 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x01, + 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x03, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x00, + 0x7C, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0xFE, + 0x00, 0x3F, 0xF8, 0x0F, 0xFF, 0xC1, 0xFF, 0xFE, 0x1F, 0x03, 0xE3, 0xE0, + 0x1F, 0x7C, 0x00, 0xF7, 0x80, 0x0F, 0x78, 0x00, 0xFF, 0x00, 0x0F, 0xF0, + 0x01, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, + 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x1F, 0x00, + 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x07, 0x80, 0x00, 0x78, 0x00, 0x0F, 0x80, + 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1E, 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, 0xE0, 0x00, 0x3E, + 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0x80, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFE, + 0x00, 0x00, 0x7F, 0xE0, 0x0F, 0xF8, 0x00, 0x0F, 0xF0, 0x00, 0x1F, 0xE0, + 0x00, 0xFE, 0x00, 0x00, 0x3F, 0x80, 0x0F, 0xC0, 0x00, 0x00, 0xFC, 0x00, + 0xFC, 0x00, 0x00, 0x01, 0xF0, 0x0F, 0xC0, 0x00, 0x00, 0x0F, 0x80, 0xF8, + 0x00, 0xFC, 0x00, 0x3E, 0x0F, 0x80, 0x1F, 0xF9, 0xE1, 0xF0, 0x78, 0x03, + 0xFF, 0xCF, 0x07, 0x87, 0xC0, 0x3F, 0x0F, 0xF0, 0x3C, 0x7C, 0x03, 0xE0, + 0x3F, 0x01, 0xE3, 0xC0, 0x3E, 0x01, 0xF8, 0x0F, 0x3E, 0x03, 0xE0, 0x0F, + 0x80, 0x79, 0xE0, 0x1E, 0x00, 0x7C, 0x03, 0xDF, 0x01, 0xE0, 0x03, 0xC0, + 0x3E, 0xF0, 0x1F, 0x00, 0x3E, 0x01, 0xE7, 0x80, 0xF0, 0x01, 0xE0, 0x0F, + 0x38, 0x07, 0x80, 0x0F, 0x00, 0xFB, 0xC0, 0x78, 0x00, 0xF0, 0x07, 0x9E, + 0x03, 0xC0, 0x07, 0x80, 0x7C, 0xF0, 0x1E, 0x00, 0x78, 0x07, 0xC7, 0x80, + 0xF0, 0x07, 0xC0, 0x7E, 0x3C, 0x07, 0x80, 0x7C, 0x07, 0xE1, 0xE0, 0x3E, + 0x07, 0xE0, 0x7E, 0x0F, 0x00, 0xF8, 0x7F, 0x8F, 0xC0, 0x7C, 0x07, 0xFF, + 0x7F, 0xFC, 0x01, 0xE0, 0x1F, 0xF1, 0xFF, 0x80, 0x0F, 0x00, 0x7E, 0x0F, + 0xF0, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, + 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0xF8, 0x00, 0x00, + 0x0F, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0x00, 0x00, 0x00, + 0x3F, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1F, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, + 0x1F, 0xE0, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x03, 0xDF, 0x00, 0x00, 0x1E, + 0x7C, 0x00, 0x00, 0x79, 0xF0, 0x00, 0x03, 0xC7, 0xC0, 0x00, 0x0F, 0x1F, + 0x00, 0x00, 0x78, 0x3C, 0x00, 0x03, 0xE0, 0xF0, 0x00, 0x0F, 0x03, 0xE0, + 0x00, 0x78, 0x0F, 0x80, 0x01, 0xE0, 0x3E, 0x00, 0x0F, 0x00, 0xF8, 0x00, + 0x3C, 0x03, 0xE0, 0x01, 0xE0, 0x0F, 0x80, 0x0F, 0x80, 0x1E, 0x00, 0x3C, + 0x00, 0x7C, 0x01, 0xFF, 0xFF, 0xF0, 0x07, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, + 0xFF, 0x00, 0xFF, 0xFF, 0xFC, 0x07, 0xC0, 0x01, 0xF0, 0x3E, 0x00, 0x03, + 0xC0, 0xF8, 0x00, 0x0F, 0x87, 0xC0, 0x00, 0x3E, 0x1E, 0x00, 0x00, 0xF8, + 0xF8, 0x00, 0x03, 0xE3, 0xC0, 0x00, 0x0F, 0x9F, 0x00, 0x00, 0x3E, 0xF8, + 0x00, 0x00, 0x7B, 0xE0, 0x00, 0x01, 0xF0, 0x01, 0xFF, 0xFF, 0x00, 0x0F, + 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0xE0, 0x3E, 0x00, + 0x1F, 0x81, 0xE0, 0x00, 0x7C, 0x0F, 0x00, 0x01, 0xE0, 0x78, 0x00, 0x0F, + 0x03, 0xC0, 0x00, 0x78, 0x3C, 0x00, 0x03, 0xC1, 0xE0, 0x00, 0x3C, 0x0F, + 0x00, 0x01, 0xE0, 0x78, 0x00, 0x1E, 0x07, 0xC0, 0x03, 0xE0, 0x3F, 0xFF, + 0xFC, 0x01, 0xFF, 0xFF, 0xC0, 0x0F, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFE, + 0x07, 0x80, 0x01, 0xF0, 0x3C, 0x00, 0x07, 0xC1, 0xE0, 0x00, 0x1E, 0x0F, + 0x00, 0x00, 0xF0, 0xF0, 0x00, 0x07, 0x87, 0x80, 0x00, 0x3C, 0x3C, 0x00, + 0x01, 0xE1, 0xE0, 0x00, 0x1E, 0x1F, 0x00, 0x00, 0xF0, 0xF0, 0x00, 0x0F, + 0x87, 0x80, 0x00, 0xF8, 0x3C, 0x00, 0x1F, 0x81, 0xFF, 0xFF, 0xF8, 0x1F, + 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xF8, 0x07, 0xFF, 0xFF, 0x00, 0x00, 0x00, + 0x01, 0xFE, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x1F, + 0xFF, 0xFC, 0x00, 0xFE, 0x03, 0xF0, 0x07, 0xE0, 0x03, 0xE0, 0x3E, 0x00, + 0x07, 0x81, 0xF0, 0x00, 0x1E, 0x07, 0x80, 0x00, 0x3C, 0x3C, 0x00, 0x00, + 0xF1, 0xF0, 0x00, 0x03, 0xC7, 0x80, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, + 0xF0, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x78, + 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x3C, 0x00, + 0x00, 0x00, 0xF0, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x0F, 0x00, 0x00, + 0x00, 0x3C, 0x00, 0x00, 0x3C, 0xF0, 0x00, 0x01, 0xF3, 0xC0, 0x00, 0x07, + 0x8F, 0x80, 0x00, 0x3E, 0x3E, 0x00, 0x00, 0xF0, 0x7C, 0x00, 0x07, 0xC1, + 0xF0, 0x00, 0x3E, 0x03, 0xE0, 0x03, 0xF0, 0x0F, 0xE0, 0x3F, 0x80, 0x1F, + 0xFF, 0xFC, 0x00, 0x3F, 0xFF, 0xE0, 0x00, 0x7F, 0xFE, 0x00, 0x00, 0x3F, + 0xC0, 0x00, 0x01, 0xFF, 0xFF, 0x00, 0x03, 0xFF, 0xFF, 0x80, 0x07, 0xFF, + 0xFF, 0x80, 0x1F, 0xFF, 0xFF, 0x80, 0x3E, 0x00, 0x3F, 0x80, 0x78, 0x00, + 0x1F, 0x80, 0xF0, 0x00, 0x1F, 0x03, 0xE0, 0x00, 0x1E, 0x07, 0xC0, 0x00, + 0x3E, 0x0F, 0x00, 0x00, 0x3C, 0x1E, 0x00, 0x00, 0x78, 0x3C, 0x00, 0x00, + 0xF0, 0xF8, 0x00, 0x01, 0xE1, 0xF0, 0x00, 0x03, 0xC3, 0xC0, 0x00, 0x07, + 0x87, 0x80, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x3C, 0x3E, 0x00, 0x00, 0x78, + 0x7C, 0x00, 0x00, 0xF0, 0xF0, 0x00, 0x01, 0xE1, 0xE0, 0x00, 0x07, 0x87, + 0xC0, 0x00, 0x0F, 0x0F, 0x80, 0x00, 0x3E, 0x1E, 0x00, 0x00, 0x78, 0x3C, + 0x00, 0x01, 0xF0, 0x78, 0x00, 0x03, 0xC1, 0xF0, 0x00, 0x0F, 0x03, 0xE0, + 0x00, 0x3E, 0x07, 0x80, 0x01, 0xF8, 0x0F, 0x00, 0x0F, 0xE0, 0x1F, 0xFF, + 0xFF, 0x80, 0x7F, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0xF0, 0x01, 0xFF, 0xFF, + 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, 0xFC, 0x07, 0xFF, + 0xFF, 0xF0, 0x1F, 0xFF, 0xFF, 0xE0, 0x3E, 0x00, 0x00, 0x00, 0x78, 0x00, + 0x00, 0x00, 0xF0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x07, 0xC0, 0x00, + 0x00, 0x0F, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, + 0x07, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xE0, 0x3F, 0xFF, 0xFF, 0x80, + 0x7F, 0xFF, 0xFF, 0x00, 0xF0, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x07, + 0xC0, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x03, 0xE0, + 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x1F, 0xFF, + 0xFF, 0xE0, 0x7F, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, + 0xFE, 0x00, 0x01, 0xFF, 0xFF, 0xFC, 0x07, 0xFF, 0xFF, 0xF0, 0x1F, 0xFF, + 0xFF, 0xC0, 0xFF, 0xFF, 0xFE, 0x03, 0xE0, 0x00, 0x00, 0x0F, 0x00, 0x00, + 0x00, 0x3C, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x0F, + 0x80, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x03, 0xFF, + 0xFF, 0xC0, 0x0F, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0xFC, 0x01, 0xFF, 0xFF, + 0xF0, 0x07, 0x80, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, + 0x03, 0xE0, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, + 0xF0, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x78, + 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x3E, 0x00, + 0x00, 0x00, 0xF0, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x7F, 0xC0, 0x00, 0x01, 0xFF, 0xF8, 0x00, 0x07, 0xFF, 0xFF, 0x00, 0x07, + 0xFF, 0xFF, 0xC0, 0x07, 0xF0, 0x0F, 0xF0, 0x0F, 0xC0, 0x00, 0xF8, 0x0F, + 0xC0, 0x00, 0x3E, 0x07, 0x80, 0x00, 0x1F, 0x07, 0x80, 0x00, 0x07, 0x87, + 0xC0, 0x00, 0x03, 0xC3, 0xC0, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x03, + 0xE0, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, + 0xF0, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x1F, 0xFF, + 0xBC, 0x00, 0x0F, 0xFF, 0xDE, 0x00, 0x0F, 0xFF, 0xEF, 0x00, 0x07, 0xFF, + 0xF7, 0x80, 0x00, 0x00, 0x73, 0xC0, 0x00, 0x00, 0x39, 0xE0, 0x00, 0x00, + 0x3C, 0xF0, 0x00, 0x00, 0x1E, 0x78, 0x00, 0x00, 0x1F, 0x3E, 0x00, 0x00, + 0x0F, 0x8F, 0x00, 0x00, 0x0F, 0x87, 0xC0, 0x00, 0x0F, 0xC3, 0xF0, 0x00, + 0x0F, 0xE0, 0xFC, 0x00, 0x1F, 0xF0, 0x7F, 0x80, 0x7F, 0x78, 0x1F, 0xFF, + 0xFE, 0x38, 0x03, 0xFF, 0xFE, 0x1C, 0x00, 0xFF, 0xFC, 0x0E, 0x00, 0x0F, + 0xF0, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x80, 0xF0, 0x00, 0x03, 0xC0, + 0x78, 0x00, 0x03, 0xE0, 0x7C, 0x00, 0x01, 0xF0, 0x3E, 0x00, 0x00, 0xF0, + 0x1E, 0x00, 0x00, 0x78, 0x0F, 0x00, 0x00, 0x3C, 0x0F, 0x80, 0x00, 0x3E, + 0x07, 0xC0, 0x00, 0x1F, 0x03, 0xC0, 0x00, 0x0F, 0x01, 0xE0, 0x00, 0x07, + 0x80, 0xF0, 0x00, 0x03, 0xC0, 0xF8, 0x00, 0x03, 0xE0, 0x7C, 0x00, 0x01, + 0xF0, 0x3C, 0x00, 0x00, 0xF0, 0x1F, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, + 0xFC, 0x0F, 0xFF, 0xFF, 0xFE, 0x07, 0xFF, 0xFF, 0xFE, 0x03, 0xC0, 0x00, + 0x0F, 0x01, 0xE0, 0x00, 0x07, 0x81, 0xF0, 0x00, 0x07, 0xC0, 0xF8, 0x00, + 0x03, 0xE0, 0x78, 0x00, 0x01, 0xE0, 0x3C, 0x00, 0x00, 0xF0, 0x1E, 0x00, + 0x00, 0x78, 0x1F, 0x00, 0x00, 0x7C, 0x0F, 0x80, 0x00, 0x3C, 0x07, 0x80, + 0x00, 0x1E, 0x03, 0xC0, 0x00, 0x0F, 0x01, 0xE0, 0x00, 0x0F, 0x81, 0xF0, + 0x00, 0x07, 0xC0, 0xF0, 0x00, 0x03, 0xC0, 0x78, 0x00, 0x01, 0xE0, 0x00, + 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xE0, 0x3C, 0x07, 0x81, 0xF0, 0x3E, 0x07, + 0x80, 0xF0, 0x1E, 0x07, 0xC0, 0xF8, 0x1E, 0x03, 0xC0, 0x78, 0x1F, 0x03, + 0xE0, 0x78, 0x0F, 0x01, 0xE0, 0x7C, 0x0F, 0x81, 0xE0, 0x3C, 0x07, 0x81, + 0xF0, 0x3E, 0x07, 0x80, 0xF0, 0x1E, 0x07, 0xC0, 0xF8, 0x1E, 0x00, 0x00, + 0x00, 0x07, 0x80, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x01, 0xE0, + 0x00, 0x00, 0xF0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0x1E, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x07, 0x80, 0x00, 0x07, + 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0xF0, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x78, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x1E, 0x00, 0x00, + 0x0F, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x07, 0x80, 0x00, 0x03, 0xC0, 0xF0, + 0x01, 0xE0, 0x78, 0x00, 0xF0, 0x78, 0x00, 0xF8, 0x3C, 0x00, 0x78, 0x1E, + 0x00, 0x3C, 0x0F, 0x00, 0x3E, 0x07, 0xC0, 0x3E, 0x03, 0xF0, 0x7E, 0x00, + 0xFF, 0xFF, 0x00, 0x3F, 0xFF, 0x00, 0x0F, 0xFE, 0x00, 0x01, 0xFC, 0x00, + 0x00, 0x01, 0xE0, 0x00, 0x0F, 0xC0, 0x78, 0x00, 0x07, 0xC0, 0x1E, 0x00, + 0x03, 0xE0, 0x0F, 0x80, 0x03, 0xF0, 0x03, 0xE0, 0x01, 0xF8, 0x00, 0xF0, + 0x00, 0xFC, 0x00, 0x3C, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x3E, 0x00, 0x07, + 0xC0, 0x3F, 0x00, 0x01, 0xE0, 0x1F, 0x80, 0x00, 0x78, 0x0F, 0x80, 0x00, + 0x1E, 0x07, 0xC0, 0x00, 0x0F, 0x83, 0xE0, 0x00, 0x03, 0xE3, 0xF0, 0x00, + 0x00, 0xF1, 0xFC, 0x00, 0x00, 0x3C, 0xFF, 0x00, 0x00, 0x0F, 0x7F, 0xE0, + 0x00, 0x07, 0xFE, 0xF8, 0x00, 0x01, 0xFE, 0x1E, 0x00, 0x00, 0x7F, 0x07, + 0xC0, 0x00, 0x1F, 0x80, 0xF0, 0x00, 0x0F, 0xC0, 0x3E, 0x00, 0x03, 0xE0, + 0x07, 0x80, 0x00, 0xF0, 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x7C, 0x00, 0x0F, + 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0x7C, 0x00, + 0x78, 0x00, 0x1F, 0x00, 0x1E, 0x00, 0x03, 0xE0, 0x07, 0x80, 0x00, 0xF8, + 0x03, 0xE0, 0x00, 0x1F, 0x00, 0xF0, 0x00, 0x07, 0xC0, 0x3C, 0x00, 0x00, + 0xF8, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x00, 0xF8, + 0x00, 0x03, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, 0x01, 0xF0, 0x00, + 0x07, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, 0x0F, + 0x80, 0x00, 0x3E, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, + 0x00, 0x7C, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x00, + 0xF8, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xF0, + 0x00, 0x07, 0xC0, 0x00, 0x1F, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, + 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xE0, + 0x01, 0xF8, 0x00, 0x00, 0x7E, 0x03, 0xF8, 0x00, 0x01, 0xFC, 0x0F, 0xF0, + 0x00, 0x03, 0xF8, 0x1F, 0xE0, 0x00, 0x0F, 0xF0, 0x3F, 0xC0, 0x00, 0x1F, + 0xC0, 0x7F, 0x80, 0x00, 0x7F, 0x80, 0xFF, 0x00, 0x00, 0xEF, 0x03, 0xFE, + 0x00, 0x03, 0xFE, 0x07, 0xBC, 0x00, 0x0F, 0x78, 0x0F, 0x3C, 0x00, 0x1E, + 0xF0, 0x1E, 0x78, 0x00, 0x79, 0xE0, 0x3C, 0xF0, 0x00, 0xF3, 0xC0, 0xF9, + 0xE0, 0x03, 0xCF, 0x81, 0xE3, 0xC0, 0x07, 0x9E, 0x03, 0xC7, 0x80, 0x1E, + 0x3C, 0x07, 0x8F, 0x00, 0x38, 0x78, 0x1F, 0x1E, 0x00, 0xF0, 0xF0, 0x3C, + 0x1E, 0x03, 0xC3, 0xE0, 0x78, 0x3C, 0x07, 0x87, 0x80, 0xF0, 0x78, 0x1E, + 0x0F, 0x01, 0xE0, 0xF0, 0x3C, 0x1E, 0x07, 0xC1, 0xE0, 0xF0, 0x7C, 0x0F, + 0x03, 0xC1, 0xE0, 0xF0, 0x1E, 0x07, 0x87, 0x81, 0xE0, 0x3C, 0x0F, 0x0E, + 0x03, 0xC0, 0x78, 0x0F, 0x3C, 0x07, 0x81, 0xF0, 0x1E, 0x70, 0x1F, 0x03, + 0xC0, 0x3D, 0xE0, 0x3C, 0x07, 0x80, 0x7F, 0x80, 0x78, 0x0F, 0x00, 0xFF, + 0x00, 0xF0, 0x3E, 0x01, 0xFC, 0x01, 0xE0, 0x78, 0x03, 0xF8, 0x07, 0xC0, + 0xF0, 0x07, 0xE0, 0x0F, 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x01, 0xF0, + 0x00, 0x03, 0xC0, 0x7E, 0x00, 0x01, 0xF0, 0x3F, 0x80, 0x00, 0x78, 0x0F, + 0xE0, 0x00, 0x1E, 0x03, 0xFC, 0x00, 0x07, 0x80, 0xFF, 0x00, 0x03, 0xE0, + 0x3F, 0xE0, 0x00, 0xF0, 0x1F, 0xF8, 0x00, 0x3C, 0x07, 0x9E, 0x00, 0x0F, + 0x01, 0xE7, 0xC0, 0x03, 0xC0, 0x78, 0xF0, 0x01, 0xF0, 0x1E, 0x3E, 0x00, + 0x78, 0x0F, 0x87, 0x80, 0x1E, 0x03, 0xC1, 0xF0, 0x07, 0x80, 0xF0, 0x7C, + 0x01, 0xE0, 0x3C, 0x0F, 0x00, 0xF8, 0x1F, 0x03, 0xE0, 0x3C, 0x07, 0x80, + 0x78, 0x0F, 0x01, 0xE0, 0x1F, 0x03, 0xC0, 0x78, 0x07, 0xC1, 0xF0, 0x1E, + 0x00, 0xF8, 0x78, 0x0F, 0x80, 0x3E, 0x1E, 0x03, 0xC0, 0x07, 0x87, 0x80, + 0xF0, 0x01, 0xF1, 0xE0, 0x3C, 0x00, 0x3C, 0xF8, 0x0F, 0x00, 0x0F, 0xBC, + 0x07, 0xC0, 0x03, 0xEF, 0x01, 0xE0, 0x00, 0x7F, 0xC0, 0x78, 0x00, 0x1F, + 0xF0, 0x1E, 0x00, 0x03, 0xFC, 0x0F, 0x80, 0x00, 0xFE, 0x03, 0xC0, 0x00, + 0x1F, 0x80, 0xF0, 0x00, 0x07, 0xE0, 0x3C, 0x00, 0x01, 0xF8, 0x00, 0x00, + 0x00, 0xFF, 0x00, 0x00, 0x03, 0xFF, 0xF0, 0x00, 0x07, 0xFF, 0xFC, 0x00, + 0x0F, 0xFF, 0xFF, 0x80, 0x0F, 0xF0, 0x1F, 0xC0, 0x0F, 0xC0, 0x03, 0xF0, + 0x0F, 0x80, 0x00, 0xFC, 0x0F, 0x80, 0x00, 0x3E, 0x0F, 0x80, 0x00, 0x0F, + 0x07, 0x80, 0x00, 0x07, 0xC7, 0xC0, 0x00, 0x01, 0xE3, 0xC0, 0x00, 0x00, + 0xF3, 0xC0, 0x00, 0x00, 0x79, 0xE0, 0x00, 0x00, 0x3D, 0xE0, 0x00, 0x00, + 0x1E, 0xF0, 0x00, 0x00, 0x0F, 0x78, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, + 0x07, 0xFC, 0x00, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x01, 0xEF, 0x00, 0x00, + 0x00, 0xF7, 0x80, 0x00, 0x00, 0xFB, 0xC0, 0x00, 0x00, 0x79, 0xE0, 0x00, + 0x00, 0x3C, 0xF0, 0x00, 0x00, 0x3E, 0x78, 0x00, 0x00, 0x1E, 0x3E, 0x00, + 0x00, 0x1F, 0x0F, 0x00, 0x00, 0x1F, 0x07, 0xC0, 0x00, 0x1F, 0x03, 0xF0, + 0x00, 0x1F, 0x00, 0xFC, 0x00, 0x3F, 0x80, 0x3F, 0x80, 0x7F, 0x80, 0x1F, + 0xFF, 0xFF, 0x00, 0x03, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0x00, + 0x0F, 0xF8, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x00, 0x0F, 0xFF, 0xFE, 0x00, + 0x7F, 0xFF, 0xF8, 0x07, 0xFF, 0xFF, 0xE0, 0x3E, 0x00, 0x3F, 0x81, 0xE0, + 0x00, 0x7C, 0x0F, 0x00, 0x01, 0xE0, 0xF8, 0x00, 0x0F, 0x07, 0xC0, 0x00, + 0x78, 0x3C, 0x00, 0x03, 0xC1, 0xE0, 0x00, 0x1E, 0x0F, 0x00, 0x01, 0xE0, + 0xF8, 0x00, 0x0F, 0x07, 0xC0, 0x00, 0xF8, 0x3C, 0x00, 0x0F, 0x81, 0xE0, + 0x01, 0xF8, 0x0F, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFC, 0x07, 0xFF, 0xFF, + 0x80, 0x3F, 0xFF, 0xF0, 0x01, 0xE0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, + 0xF8, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x01, 0xE0, + 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x07, 0x80, 0x00, + 0x00, 0x3C, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, + 0xF0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, + 0x00, 0x03, 0xFF, 0xF0, 0x00, 0x07, 0xFF, 0xFC, 0x00, 0x0F, 0xFF, 0xFF, + 0x80, 0x0F, 0xF0, 0x1F, 0xC0, 0x0F, 0xC0, 0x03, 0xF0, 0x0F, 0xC0, 0x00, + 0xFC, 0x0F, 0x80, 0x00, 0x3E, 0x0F, 0x80, 0x00, 0x0F, 0x07, 0x80, 0x00, + 0x07, 0xC7, 0xC0, 0x00, 0x01, 0xE3, 0xC0, 0x00, 0x00, 0xF3, 0xC0, 0x00, + 0x00, 0x79, 0xE0, 0x00, 0x00, 0x3D, 0xE0, 0x00, 0x00, 0x1E, 0xF0, 0x00, + 0x00, 0x0F, 0x78, 0x00, 0x00, 0x07, 0xB8, 0x00, 0x00, 0x03, 0xFC, 0x00, + 0x00, 0x03, 0xDE, 0x00, 0x00, 0x01, 0xEF, 0x00, 0x00, 0x00, 0xF7, 0x80, + 0x00, 0x00, 0x7B, 0xC0, 0x00, 0x00, 0x79, 0xE0, 0x00, 0x00, 0x3C, 0xF0, + 0x00, 0x00, 0x3C, 0x78, 0x00, 0x08, 0x3E, 0x3E, 0x00, 0x0E, 0x1E, 0x0F, + 0x00, 0x0F, 0x9F, 0x07, 0xC0, 0x07, 0xFF, 0x03, 0xF0, 0x01, 0xFF, 0x00, + 0xFC, 0x00, 0x7F, 0x00, 0x3F, 0x80, 0xFF, 0x80, 0x1F, 0xFF, 0xFF, 0xE0, + 0x03, 0xFF, 0xFF, 0xF8, 0x00, 0xFF, 0xFC, 0x7E, 0x00, 0x0F, 0xF0, 0x1F, + 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, + 0xC0, 0x07, 0xFF, 0xFF, 0xC0, 0x1F, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFE, + 0x03, 0xE0, 0x00, 0xFC, 0x0F, 0x00, 0x01, 0xF0, 0x3C, 0x00, 0x03, 0xC1, + 0xF0, 0x00, 0x0F, 0x07, 0xC0, 0x00, 0x3C, 0x1E, 0x00, 0x00, 0xF0, 0x78, + 0x00, 0x03, 0xC1, 0xE0, 0x00, 0x1E, 0x0F, 0x80, 0x00, 0x78, 0x3E, 0x00, + 0x03, 0xE0, 0xF0, 0x00, 0x1F, 0x03, 0xC0, 0x01, 0xF8, 0x0F, 0xFF, 0xFF, + 0xC0, 0x7F, 0xFF, 0xFE, 0x01, 0xFF, 0xFF, 0xF8, 0x07, 0xFF, 0xFF, 0xF0, + 0x1E, 0x00, 0x07, 0xE0, 0xF8, 0x00, 0x0F, 0x83, 0xE0, 0x00, 0x1E, 0x0F, + 0x00, 0x00, 0x78, 0x3C, 0x00, 0x01, 0xE0, 0xF0, 0x00, 0x07, 0x87, 0xC0, + 0x00, 0x1E, 0x1F, 0x00, 0x00, 0xF0, 0x78, 0x00, 0x03, 0xC1, 0xE0, 0x00, + 0x0F, 0x07, 0x80, 0x00, 0x3C, 0x3E, 0x00, 0x00, 0xF0, 0xF0, 0x00, 0x03, + 0xC3, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0xFF, 0xFC, + 0x00, 0x1F, 0xFF, 0xF8, 0x01, 0xFF, 0xFF, 0xC0, 0x1F, 0xC0, 0x7F, 0x01, + 0xF0, 0x00, 0xFC, 0x0F, 0x00, 0x03, 0xE0, 0xF0, 0x00, 0x0F, 0x07, 0x00, + 0x00, 0x78, 0x78, 0x00, 0x03, 0xC3, 0xC0, 0x00, 0x1E, 0x1E, 0x00, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, + 0xFF, 0xE0, 0x00, 0x03, 0xFF, 0xF0, 0x00, 0x0F, 0xFF, 0xF0, 0x00, 0x0F, + 0xFF, 0xC0, 0x00, 0x07, 0xFF, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x07, + 0xF0, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x3C, 0xF0, 0x00, 0x01, 0xE7, + 0x80, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x71, 0xE0, 0x00, 0x07, 0x8F, 0x00, + 0x00, 0x3C, 0x7C, 0x00, 0x03, 0xC1, 0xF0, 0x00, 0x7C, 0x0F, 0xE0, 0x1F, + 0xC0, 0x3F, 0xFF, 0xFC, 0x00, 0xFF, 0xFF, 0xC0, 0x03, 0xFF, 0xF8, 0x00, + 0x03, 0xFE, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0x7F, + 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFE, 0x00, 0x0F, 0x00, 0x00, 0x01, 0xF0, + 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x1E, 0x00, 0x00, + 0x01, 0xE0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x07, 0xC0, 0x00, + 0x00, 0x78, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x78, 0x00, 0x00, 0x0F, + 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0xF0, 0x00, + 0x00, 0x0F, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, + 0xE0, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x3E, 0x00, + 0x00, 0x03, 0xC0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, + 0x7C, 0x00, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x0F, 0x00, 0x00, 0x3C, 0x1E, + 0x00, 0x00, 0xF8, 0x7C, 0x00, 0x01, 0xF0, 0xF8, 0x00, 0x03, 0xC1, 0xE0, + 0x00, 0x07, 0x83, 0xC0, 0x00, 0x0F, 0x0F, 0x80, 0x00, 0x3E, 0x1F, 0x00, + 0x00, 0x7C, 0x3C, 0x00, 0x00, 0xF0, 0x78, 0x00, 0x01, 0xE0, 0xF0, 0x00, + 0x03, 0xC3, 0xE0, 0x00, 0x0F, 0x87, 0xC0, 0x00, 0x1F, 0x0F, 0x00, 0x00, + 0x3C, 0x1E, 0x00, 0x00, 0x78, 0x3C, 0x00, 0x01, 0xF0, 0xF8, 0x00, 0x03, + 0xE1, 0xF0, 0x00, 0x07, 0x83, 0xC0, 0x00, 0x0F, 0x07, 0x80, 0x00, 0x1E, + 0x1F, 0x00, 0x00, 0x7C, 0x3E, 0x00, 0x00, 0xF8, 0x78, 0x00, 0x01, 0xE0, + 0xF0, 0x00, 0x03, 0xC1, 0xE0, 0x00, 0x0F, 0x83, 0xC0, 0x00, 0x1E, 0x07, + 0x80, 0x00, 0x7C, 0x0F, 0x80, 0x01, 0xF0, 0x0F, 0x80, 0x07, 0xE0, 0x1F, + 0xC0, 0x7F, 0x80, 0x1F, 0xFF, 0xFE, 0x00, 0x1F, 0xFF, 0xF0, 0x00, 0x1F, + 0xFF, 0xC0, 0x00, 0x07, 0xFC, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xFF, 0xC0, + 0x00, 0x0F, 0xBE, 0x00, 0x00, 0x79, 0xF0, 0x00, 0x07, 0xC7, 0x80, 0x00, + 0x3C, 0x3C, 0x00, 0x03, 0xE1, 0xE0, 0x00, 0x1E, 0x0F, 0x80, 0x01, 0xF0, + 0x7C, 0x00, 0x0F, 0x03, 0xE0, 0x00, 0xF8, 0x1F, 0x00, 0x0F, 0x80, 0x78, + 0x00, 0x78, 0x03, 0xC0, 0x07, 0xC0, 0x1E, 0x00, 0x3C, 0x00, 0xF0, 0x03, + 0xE0, 0x07, 0xC0, 0x1E, 0x00, 0x3E, 0x01, 0xF0, 0x01, 0xF0, 0x0F, 0x00, + 0x07, 0x80, 0xF0, 0x00, 0x3C, 0x07, 0x80, 0x01, 0xE0, 0x78, 0x00, 0x0F, + 0x07, 0xC0, 0x00, 0x7C, 0x3C, 0x00, 0x03, 0xE3, 0xE0, 0x00, 0x1F, 0x1E, + 0x00, 0x00, 0xF9, 0xF0, 0x00, 0x03, 0xCF, 0x00, 0x00, 0x1E, 0xF0, 0x00, + 0x00, 0xF7, 0x80, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x01, + 0xFC, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0xF0, + 0x00, 0x1F, 0x00, 0x03, 0xDE, 0x00, 0x07, 0xE0, 0x00, 0xFB, 0xC0, 0x00, + 0xFC, 0x00, 0x1E, 0x78, 0x00, 0x3F, 0x80, 0x07, 0xCF, 0x00, 0x07, 0xF0, + 0x00, 0xF9, 0xE0, 0x01, 0xFE, 0x00, 0x3E, 0x3C, 0x00, 0x7F, 0xC0, 0x07, + 0xC7, 0x80, 0x0F, 0x78, 0x01, 0xF0, 0xF0, 0x03, 0xEF, 0x00, 0x3E, 0x1E, + 0x00, 0x79, 0xE0, 0x0F, 0x83, 0xC0, 0x1F, 0x3C, 0x01, 0xF0, 0x78, 0x03, + 0xC7, 0x80, 0x3C, 0x0F, 0x00, 0xF8, 0xF0, 0x0F, 0x80, 0xE0, 0x1E, 0x1E, + 0x01, 0xE0, 0x1C, 0x07, 0xC1, 0xC0, 0x7C, 0x03, 0x80, 0xF0, 0x3C, 0x0F, + 0x00, 0x70, 0x3E, 0x07, 0x83, 0xE0, 0x0E, 0x07, 0x80, 0xF0, 0x78, 0x01, + 0xC1, 0xF0, 0x1E, 0x1F, 0x00, 0x3C, 0x3C, 0x03, 0xC3, 0xE0, 0x07, 0x8F, + 0x80, 0x78, 0x78, 0x00, 0xF1, 0xE0, 0x0F, 0x1F, 0x00, 0x1E, 0x7C, 0x01, + 0xE3, 0xC0, 0x03, 0xCF, 0x00, 0x3C, 0xF8, 0x00, 0x7B, 0xE0, 0x07, 0x9E, + 0x00, 0x0F, 0x78, 0x00, 0xF7, 0xC0, 0x01, 0xFF, 0x00, 0x1E, 0xF0, 0x00, + 0x3F, 0xC0, 0x03, 0xFE, 0x00, 0x07, 0xF8, 0x00, 0x7F, 0x80, 0x00, 0xFE, + 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xC0, 0x00, 0xFC, 0x00, 0x03, 0xF0, 0x00, + 0x1F, 0x80, 0x00, 0x7E, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x7C, + 0x00, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xF0, 0x07, 0xC0, 0x00, 0x3E, 0x00, + 0x7C, 0x00, 0x07, 0xC0, 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x1F, + 0x00, 0x01, 0xF0, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x7C, 0x00, 0x00, 0xF8, + 0x0F, 0x80, 0x00, 0x0F, 0x81, 0xF0, 0x00, 0x00, 0x7C, 0x1F, 0x00, 0x00, + 0x07, 0xC3, 0xE0, 0x00, 0x00, 0x7C, 0x7C, 0x00, 0x00, 0x03, 0xEF, 0x80, + 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x1F, + 0xC0, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, + 0x03, 0xFC, 0x00, 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x00, 0x0F, 0xBE, 0x00, + 0x00, 0x01, 0xF3, 0xE0, 0x00, 0x00, 0x3E, 0x1F, 0x00, 0x00, 0x03, 0xE1, + 0xF0, 0x00, 0x00, 0x7C, 0x0F, 0x80, 0x00, 0x0F, 0x80, 0xF8, 0x00, 0x01, + 0xF0, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x03, 0xE0, + 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x03, 0xF0, 0x03, 0xF0, 0x00, + 0x1F, 0x00, 0x7E, 0x00, 0x01, 0xF8, 0x0F, 0xC0, 0x00, 0x0F, 0x80, 0xF8, + 0x00, 0x00, 0x7D, 0xF0, 0x00, 0x03, 0xE7, 0xC0, 0x00, 0x1F, 0x1F, 0x80, + 0x00, 0xF8, 0x3E, 0x00, 0x03, 0xE0, 0xF8, 0x00, 0x1F, 0x01, 0xF0, 0x00, + 0xF8, 0x07, 0xC0, 0x07, 0xC0, 0x0F, 0x00, 0x3E, 0x00, 0x3E, 0x01, 0xF0, + 0x00, 0xF8, 0x07, 0xC0, 0x01, 0xF0, 0x3E, 0x00, 0x07, 0xC1, 0xF0, 0x00, + 0x0F, 0x0F, 0x80, 0x00, 0x3E, 0x7C, 0x00, 0x00, 0x79, 0xE0, 0x00, 0x01, + 0xFF, 0x80, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x3F, + 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x0F, 0x80, + 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x03, 0xC0, 0x00, + 0x00, 0x1F, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, + 0x07, 0x80, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x03, + 0xE0, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xC0, + 0x1F, 0xFF, 0xFF, 0xE0, 0x07, 0xFF, 0xFF, 0xF8, 0x03, 0xFF, 0xFF, 0xFE, + 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x07, + 0xC0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, + 0xF8, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, + 0x1F, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, + 0x03, 0xE0, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, + 0x00, 0x7C, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, + 0x00, 0x0F, 0x80, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x03, 0xE0, 0x00, + 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x7C, 0x00, + 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x0F, 0x80, + 0x00, 0x00, 0x07, 0xFF, 0xFF, 0xFE, 0x01, 0xFF, 0xFF, 0xFF, 0x80, 0x7F, + 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0x7F, 0xC0, 0x1F, + 0xF0, 0x07, 0xFC, 0x01, 0xFE, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, + 0x03, 0xC0, 0x01, 0xF0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, + 0xE0, 0x00, 0xF8, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, + 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0xF8, 0x00, + 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x7C, 0x00, 0x1E, + 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x0F, 0x00, + 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x7C, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, + 0xE0, 0x00, 0x7F, 0xC0, 0x3F, 0xE0, 0x0F, 0xF8, 0x03, 0xFE, 0x00, 0xE3, + 0x8E, 0x38, 0xE1, 0x86, 0x18, 0x61, 0x87, 0x1C, 0x71, 0xC7, 0x0C, 0x30, + 0xC3, 0x0C, 0x38, 0xE3, 0x8E, 0x38, 0x61, 0x86, 0x18, 0x61, 0xC7, 0x1C, + 0x71, 0xC0, 0x00, 0x7F, 0xC0, 0x1F, 0xF0, 0x07, 0xFC, 0x03, 0xFE, 0x00, + 0x07, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x03, + 0xC0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, 0xE0, + 0x00, 0x78, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, + 0x3C, 0x00, 0x1F, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, + 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x1F, 0x00, + 0x07, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x0F, 0x80, 0x03, + 0xC0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x7F, 0x80, 0x3F, 0xE0, + 0x0F, 0xF8, 0x03, 0xFE, 0x00, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x1F, 0x00, + 0x1F, 0xC0, 0x0E, 0xE0, 0x0E, 0x70, 0x0F, 0x38, 0x07, 0x1C, 0x07, 0x0E, + 0x03, 0x83, 0x83, 0x81, 0xC3, 0xC0, 0xE1, 0xC0, 0x71, 0xC0, 0x39, 0xE0, + 0x0E, 0xE0, 0x07, 0xF0, 0x03, 0xF0, 0x01, 0xC0, 0x7F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xC0, 0xF8, 0x78, 0x3C, 0x1C, 0x0E, 0x0E, 0x07, 0x00, + 0x1F, 0xE0, 0x01, 0xFF, 0xF0, 0x07, 0xFF, 0xF0, 0x1F, 0xFF, 0xF0, 0x7E, + 0x07, 0xE1, 0xF0, 0x07, 0xC3, 0xC0, 0x07, 0x80, 0x00, 0x0F, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x38, 0x00, 0x00, 0xF0, 0x00, 0x07, 0xE0, 0x0F, 0xFF, + 0xC0, 0xFF, 0xFF, 0x07, 0xFF, 0x9E, 0x1F, 0xC0, 0x3C, 0x7C, 0x00, 0x78, + 0xF0, 0x00, 0xF3, 0xC0, 0x03, 0xC7, 0x80, 0x07, 0x8F, 0x00, 0x1F, 0x1E, + 0x00, 0x7E, 0x3F, 0x07, 0xFC, 0x3F, 0xFF, 0x7E, 0x7F, 0xFC, 0xFC, 0x7F, + 0xF0, 0xF8, 0x3F, 0x00, 0xF0, 0x01, 0xE0, 0x00, 0x00, 0xF0, 0x00, 0x00, + 0xF8, 0x00, 0x00, 0x78, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x1E, 0x00, 0x00, + 0x0F, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x07, 0x83, 0xE0, 0x03, 0xC7, 0xFC, + 0x01, 0xEF, 0xFF, 0x00, 0xFF, 0xFF, 0xC0, 0xF7, 0x83, 0xF0, 0x7F, 0x00, + 0xF8, 0x3F, 0x00, 0x3E, 0x1F, 0x00, 0x0F, 0x1F, 0x80, 0x07, 0x8F, 0x80, + 0x03, 0xC7, 0x80, 0x01, 0xE3, 0xC0, 0x00, 0xF1, 0xE0, 0x00, 0x79, 0xF0, + 0x00, 0x3C, 0xF0, 0x00, 0x3C, 0x78, 0x00, 0x1E, 0x3C, 0x00, 0x0F, 0x1E, + 0x00, 0x0F, 0x9F, 0x00, 0x07, 0x8F, 0xC0, 0x07, 0xC7, 0xE0, 0x07, 0xC3, + 0xF8, 0x07, 0xC1, 0xFE, 0x0F, 0xC1, 0xEF, 0xFF, 0xE0, 0xF3, 0xFF, 0xC0, + 0x78, 0xFF, 0xC0, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x03, 0xFF, + 0x80, 0x3F, 0xFF, 0x01, 0xFF, 0xFE, 0x0F, 0xE0, 0xF8, 0x7E, 0x01, 0xF1, + 0xF0, 0x03, 0xCF, 0x80, 0x0F, 0x3C, 0x00, 0x3D, 0xF0, 0x00, 0x07, 0x80, + 0x00, 0x1E, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, + 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x0F, 0x3C, + 0x00, 0x3C, 0xF8, 0x01, 0xE1, 0xF0, 0x0F, 0x87, 0xE0, 0xFC, 0x0F, 0xFF, + 0xE0, 0x3F, 0xFF, 0x00, 0x7F, 0xF8, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, + 0x03, 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x01, 0xE0, + 0x00, 0x00, 0x3C, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x00, + 0x3C, 0x00, 0x3F, 0x07, 0x80, 0x1F, 0xF8, 0xF0, 0x0F, 0xFF, 0x3E, 0x03, + 0xFF, 0xF7, 0x80, 0xFC, 0x1F, 0xF0, 0x3F, 0x00, 0xFE, 0x07, 0xC0, 0x0F, + 0xC1, 0xF0, 0x01, 0xF0, 0x3C, 0x00, 0x3E, 0x0F, 0x80, 0x07, 0xC1, 0xE0, + 0x00, 0x78, 0x3C, 0x00, 0x1F, 0x0F, 0x80, 0x03, 0xC1, 0xE0, 0x00, 0x78, + 0x3C, 0x00, 0x0F, 0x07, 0x80, 0x01, 0xE0, 0xF0, 0x00, 0x7C, 0x1E, 0x00, + 0x0F, 0x03, 0xC0, 0x03, 0xE0, 0x78, 0x00, 0x7C, 0x0F, 0x80, 0x1F, 0x80, + 0xF8, 0x07, 0xF0, 0x1F, 0x83, 0xFC, 0x03, 0xFF, 0xFF, 0x80, 0x3F, 0xFE, + 0xF0, 0x03, 0xFF, 0x1E, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x1F, 0x80, + 0x01, 0xFF, 0xC0, 0x07, 0xFF, 0xE0, 0x3F, 0xFF, 0xC0, 0xFE, 0x0F, 0xC1, + 0xF0, 0x07, 0xC7, 0xC0, 0x0F, 0x8F, 0x00, 0x0F, 0x3C, 0x00, 0x1E, 0x78, + 0x00, 0x3D, 0xE0, 0x00, 0x7B, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xBF, 0xFF, 0xFF, 0x78, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, + 0x03, 0xC0, 0x00, 0x07, 0x80, 0x03, 0xCF, 0x80, 0x0F, 0x0F, 0x80, 0x3E, + 0x1F, 0x81, 0xF8, 0x1F, 0xFF, 0xE0, 0x1F, 0xFF, 0x80, 0x1F, 0xFC, 0x00, + 0x0F, 0xE0, 0x00, 0x00, 0x3E, 0x01, 0xFC, 0x07, 0xF8, 0x0F, 0xE0, 0x3E, + 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x07, 0xC0, 0x7F, 0xF0, 0xFF, 0xE3, + 0xFF, 0xC0, 0x78, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x3E, + 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x0F, 0x80, 0x1E, 0x00, + 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x03, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1E, + 0x00, 0x3C, 0x00, 0xF0, 0x01, 0xE0, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x07, + 0xFE, 0x3C, 0x01, 0xFF, 0xE7, 0x00, 0xFF, 0xFE, 0xE0, 0x1F, 0x83, 0xFC, + 0x07, 0xC0, 0x3F, 0x81, 0xF0, 0x03, 0xF0, 0x3C, 0x00, 0x7C, 0x0F, 0x00, + 0x0F, 0x81, 0xE0, 0x01, 0xF0, 0x78, 0x00, 0x3E, 0x0F, 0x00, 0x07, 0xC1, + 0xE0, 0x00, 0xF0, 0x38, 0x00, 0x1E, 0x0F, 0x00, 0x03, 0xC1, 0xE0, 0x00, + 0xF8, 0x3C, 0x00, 0x1F, 0x07, 0x80, 0x03, 0xC0, 0xF0, 0x00, 0xF8, 0x1E, + 0x00, 0x3F, 0x03, 0xE0, 0x07, 0xE0, 0x3E, 0x01, 0xF8, 0x07, 0xE0, 0xFF, + 0x00, 0x7F, 0xFD, 0xE0, 0x0F, 0xFF, 0x3C, 0x00, 0xFF, 0xCF, 0x00, 0x07, + 0xE1, 0xE0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x0F, 0x01, 0xE0, 0x03, 0xE0, + 0x3C, 0x00, 0xF8, 0x07, 0xE0, 0x7F, 0x00, 0x7F, 0xFF, 0xC0, 0x0F, 0xFF, + 0xF0, 0x00, 0x7F, 0xF8, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x01, 0xE0, 0x00, + 0x03, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x3C, 0x00, 0x00, + 0x78, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x83, 0xF0, 0x0F, + 0x1F, 0xF0, 0x1E, 0xFF, 0xF0, 0x3F, 0xFF, 0xE0, 0xFF, 0x87, 0xE1, 0xFC, + 0x07, 0xC3, 0xF0, 0x07, 0x87, 0xC0, 0x0F, 0x1F, 0x00, 0x1E, 0x3E, 0x00, + 0x3C, 0x78, 0x00, 0x78, 0xF0, 0x01, 0xE1, 0xE0, 0x03, 0xC7, 0xC0, 0x07, + 0x8F, 0x00, 0x0F, 0x1E, 0x00, 0x1E, 0x3C, 0x00, 0x78, 0x78, 0x00, 0xF1, + 0xE0, 0x01, 0xE3, 0xC0, 0x03, 0xC7, 0x80, 0x0F, 0x8F, 0x00, 0x1E, 0x1E, + 0x00, 0x3C, 0x78, 0x00, 0x78, 0xF0, 0x00, 0xF1, 0xE0, 0x03, 0xC0, 0x01, + 0xE0, 0x3C, 0x0F, 0x01, 0xE0, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xF0, 0x1E, 0x03, 0xC0, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x03, 0xC0, + 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, + 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0xF0, 0x1E, 0x00, 0x00, 0x07, + 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x01, 0xE0, 0x00, + 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x3C, + 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, + 0x07, 0x80, 0x03, 0xE0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, + 0xC0, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, 0xE0, + 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x01, 0xF0, 0x00, + 0x78, 0x00, 0x3E, 0x00, 0x7F, 0x80, 0x3F, 0xC0, 0x0F, 0xE0, 0x03, 0xE0, + 0x00, 0x01, 0xE0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x78, + 0x00, 0x00, 0x3C, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x0F, + 0x00, 0x00, 0x07, 0x80, 0x00, 0x03, 0xC0, 0x0F, 0x81, 0xE0, 0x0F, 0x80, + 0xF0, 0x0F, 0x80, 0xF0, 0x1F, 0x00, 0x78, 0x1F, 0x00, 0x3C, 0x1F, 0x00, + 0x1E, 0x1F, 0x00, 0x1F, 0x1F, 0x00, 0x0F, 0x1E, 0x00, 0x07, 0xBF, 0x80, + 0x03, 0xFF, 0xC0, 0x01, 0xFD, 0xE0, 0x01, 0xFC, 0xF8, 0x00, 0xFC, 0x3C, + 0x00, 0x7C, 0x1F, 0x00, 0x3C, 0x07, 0x80, 0x1E, 0x03, 0xC0, 0x1F, 0x01, + 0xF0, 0x0F, 0x00, 0x78, 0x07, 0x80, 0x3E, 0x03, 0xC0, 0x0F, 0x01, 0xE0, + 0x07, 0x81, 0xE0, 0x03, 0xE0, 0xF0, 0x00, 0xF0, 0x78, 0x00, 0x7C, 0x00, + 0x01, 0xE0, 0x3C, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x3C, 0x07, + 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x03, + 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, + 0xF0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0xF0, 0x1E, 0x00, 0x00, + 0x07, 0xE0, 0x1F, 0x80, 0xF9, 0xFF, 0x07, 0xFC, 0x0F, 0x3F, 0xF8, 0xFF, + 0xE0, 0xF7, 0xFF, 0x9F, 0xFF, 0x0F, 0xF0, 0xFF, 0xC3, 0xF0, 0xFC, 0x07, + 0xF8, 0x1F, 0x1F, 0x80, 0x3F, 0x00, 0xF1, 0xF0, 0x03, 0xE0, 0x0F, 0x1E, + 0x00, 0x3C, 0x00, 0xF1, 0xE0, 0x03, 0xC0, 0x0F, 0x1E, 0x00, 0x3C, 0x00, + 0xF1, 0xE0, 0x07, 0x80, 0x0F, 0x3C, 0x00, 0x78, 0x01, 0xF3, 0xC0, 0x07, + 0x80, 0x1E, 0x3C, 0x00, 0x78, 0x01, 0xE3, 0xC0, 0x0F, 0x80, 0x1E, 0x3C, + 0x00, 0xF0, 0x01, 0xE7, 0xC0, 0x0F, 0x00, 0x3C, 0x78, 0x00, 0xF0, 0x03, + 0xC7, 0x80, 0x0F, 0x00, 0x3C, 0x78, 0x01, 0xE0, 0x03, 0xC7, 0x80, 0x1E, + 0x00, 0x3C, 0xF8, 0x01, 0xE0, 0x07, 0x8F, 0x00, 0x1E, 0x00, 0x78, 0xF0, + 0x01, 0xE0, 0x07, 0x8F, 0x00, 0x3C, 0x00, 0x78, 0x00, 0x07, 0xE0, 0x1F, + 0x3F, 0xF0, 0x3C, 0xFF, 0xF0, 0x7B, 0xFF, 0xE0, 0xFF, 0x07, 0xE1, 0xF8, + 0x07, 0xC7, 0xE0, 0x07, 0x8F, 0x80, 0x0F, 0x1F, 0x00, 0x1E, 0x3C, 0x00, + 0x3C, 0x78, 0x00, 0x78, 0xF0, 0x01, 0xE3, 0xC0, 0x03, 0xC7, 0x80, 0x07, + 0x8F, 0x00, 0x0F, 0x1E, 0x00, 0x3E, 0x3C, 0x00, 0x78, 0xF0, 0x00, 0xF1, + 0xE0, 0x01, 0xE3, 0xC0, 0x03, 0xC7, 0x80, 0x0F, 0x8F, 0x00, 0x1E, 0x3E, + 0x00, 0x3C, 0x78, 0x00, 0x78, 0xF0, 0x00, 0xF1, 0xE0, 0x03, 0xC0, 0x00, + 0x1F, 0x80, 0x01, 0xFF, 0xC0, 0x0F, 0xFF, 0xE0, 0x3F, 0xFF, 0xC0, 0xFE, + 0x0F, 0xC1, 0xF0, 0x0F, 0x87, 0xC0, 0x0F, 0x8F, 0x00, 0x0F, 0x3C, 0x00, + 0x1E, 0x78, 0x00, 0x3D, 0xE0, 0x00, 0x7B, 0xC0, 0x00, 0xF7, 0x80, 0x01, + 0xFE, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0x78, 0x00, 0x1E, 0xF0, 0x00, 0x3D, + 0xE0, 0x00, 0xF3, 0xC0, 0x01, 0xE7, 0x80, 0x07, 0x8F, 0x80, 0x1F, 0x0F, + 0x80, 0x7C, 0x1F, 0x83, 0xF8, 0x1F, 0xFF, 0xE0, 0x3F, 0xFF, 0x00, 0x1F, + 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x3C, 0x7F, 0xE0, + 0x07, 0xBF, 0xFE, 0x01, 0xFF, 0xFF, 0xC0, 0x3D, 0xE0, 0xFC, 0x07, 0xF0, + 0x0F, 0x80, 0xFC, 0x00, 0xF8, 0x1F, 0x00, 0x0F, 0x07, 0xC0, 0x01, 0xE0, + 0xF8, 0x00, 0x3C, 0x1F, 0x00, 0x07, 0x83, 0xC0, 0x00, 0xF0, 0x78, 0x00, + 0x1E, 0x1F, 0x00, 0x03, 0xC3, 0xC0, 0x00, 0xF0, 0x78, 0x00, 0x1E, 0x0F, + 0x00, 0x03, 0xC3, 0xE0, 0x00, 0xF8, 0x7C, 0x00, 0x1E, 0x0F, 0x80, 0x07, + 0xC1, 0xF8, 0x01, 0xF0, 0x3F, 0x80, 0x7C, 0x0F, 0xF8, 0x3F, 0x81, 0xEF, + 0xFF, 0xE0, 0x3C, 0xFF, 0xF8, 0x07, 0x8F, 0xFC, 0x00, 0xF0, 0xFE, 0x00, + 0x3E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x1E, 0x00, + 0x00, 0x03, 0xC0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x03, + 0xC0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x3F, + 0xF8, 0xF0, 0x1F, 0xFF, 0x3C, 0x0F, 0xFF, 0xDF, 0x07, 0xE0, 0xFF, 0x83, + 0xE0, 0x1F, 0xE1, 0xF0, 0x03, 0xF8, 0x78, 0x00, 0xFE, 0x3C, 0x00, 0x1F, + 0x8F, 0x00, 0x07, 0xC7, 0x80, 0x01, 0xF1, 0xE0, 0x00, 0x7C, 0x78, 0x00, + 0x1F, 0x3C, 0x00, 0x0F, 0x8F, 0x00, 0x03, 0xE3, 0xC0, 0x00, 0xF8, 0xF0, + 0x00, 0x3E, 0x3C, 0x00, 0x1F, 0x8F, 0x00, 0x0F, 0xC3, 0xC0, 0x03, 0xF0, + 0xF8, 0x01, 0xFC, 0x1F, 0x00, 0xFF, 0x07, 0xE0, 0xFF, 0xC0, 0xFF, 0xFD, + 0xE0, 0x1F, 0xFE, 0x78, 0x03, 0xFF, 0x3E, 0x00, 0x3F, 0x0F, 0x80, 0x00, + 0x03, 0xC0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x1F, 0x00, + 0x00, 0x07, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x3E, + 0x00, 0x00, 0x0F, 0x80, 0x00, 0x07, 0x87, 0xCF, 0xC3, 0xCF, 0xE1, 0xEF, + 0xE0, 0xFF, 0x80, 0x7F, 0x00, 0x7E, 0x00, 0x3F, 0x00, 0x1F, 0x00, 0x0F, + 0x00, 0x07, 0x80, 0x03, 0xC0, 0x03, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, + 0x78, 0x00, 0x3C, 0x00, 0x3E, 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x07, 0x80, + 0x03, 0xC0, 0x03, 0xE0, 0x01, 0xE0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x00, + 0x00, 0x3F, 0x80, 0x07, 0xFF, 0x00, 0xFF, 0xFC, 0x0F, 0xFF, 0xE0, 0xFC, + 0x1F, 0x87, 0x80, 0x3C, 0x7C, 0x01, 0xE3, 0xC0, 0x0F, 0x1E, 0x00, 0x00, + 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0xE0, 0x03, 0xFF, + 0xC0, 0x07, 0xFF, 0x80, 0x07, 0xFE, 0x00, 0x03, 0xF0, 0x00, 0x07, 0xBC, + 0x00, 0x3D, 0xE0, 0x01, 0xEF, 0x00, 0x1F, 0x7C, 0x01, 0xF3, 0xF0, 0x1F, + 0x8F, 0xFF, 0xF8, 0x7F, 0xFF, 0x80, 0xFF, 0xF0, 0x01, 0xFE, 0x00, 0x03, + 0xC0, 0x1E, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC1, 0xFF, 0xEF, 0xFF, + 0x7F, 0xF0, 0x78, 0x03, 0xC0, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, + 0xC0, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x3C, 0x01, 0xE0, + 0x0F, 0x00, 0x78, 0x07, 0xC0, 0x3C, 0x01, 0xE0, 0x0F, 0xF0, 0x7F, 0x81, + 0xF8, 0x07, 0xC0, 0x0F, 0x00, 0x0F, 0x0F, 0x00, 0x1E, 0x0F, 0x00, 0x1E, + 0x1F, 0x00, 0x1E, 0x1E, 0x00, 0x1E, 0x1E, 0x00, 0x1E, 0x1E, 0x00, 0x3C, + 0x1E, 0x00, 0x3C, 0x3E, 0x00, 0x3C, 0x3C, 0x00, 0x3C, 0x3C, 0x00, 0x3C, + 0x3C, 0x00, 0x7C, 0x3C, 0x00, 0x78, 0x78, 0x00, 0x78, 0x78, 0x00, 0x78, + 0x78, 0x00, 0x78, 0x78, 0x00, 0xF8, 0x78, 0x00, 0xF0, 0xF0, 0x01, 0xF0, + 0xF0, 0x03, 0xF0, 0xF0, 0x07, 0xF0, 0xF8, 0x1F, 0xF0, 0xFF, 0xFF, 0xE0, + 0x7F, 0xFD, 0xE0, 0x3F, 0xF1, 0xE0, 0x1F, 0xC0, 0x00, 0xF0, 0x00, 0x7F, + 0xC0, 0x01, 0xEF, 0x00, 0x0F, 0xBC, 0x00, 0x3C, 0x78, 0x01, 0xE1, 0xE0, + 0x07, 0x87, 0x80, 0x3C, 0x1E, 0x01, 0xF0, 0x78, 0x07, 0x81, 0xE0, 0x3E, + 0x07, 0x80, 0xF0, 0x1E, 0x07, 0x80, 0x38, 0x1E, 0x00, 0xF0, 0xF0, 0x03, + 0xC7, 0xC0, 0x0F, 0x1E, 0x00, 0x3C, 0xF0, 0x00, 0xF3, 0xC0, 0x03, 0xDE, + 0x00, 0x07, 0x78, 0x00, 0x1F, 0xC0, 0x00, 0x7E, 0x00, 0x01, 0xF8, 0x00, + 0x07, 0xC0, 0x00, 0x1F, 0x00, 0x00, 0xF0, 0x07, 0xC0, 0x0F, 0x78, 0x03, + 0xE0, 0x0F, 0xBC, 0x03, 0xF0, 0x07, 0x9E, 0x01, 0xF8, 0x03, 0xCF, 0x00, + 0xFC, 0x03, 0xC7, 0x80, 0xFE, 0x01, 0xE3, 0xC0, 0x77, 0x01, 0xE0, 0xE0, + 0x7B, 0x80, 0xF0, 0x70, 0x39, 0xC0, 0xF0, 0x38, 0x3C, 0xE0, 0x78, 0x1C, + 0x1E, 0x78, 0x78, 0x0F, 0x1E, 0x3C, 0x3C, 0x07, 0x8F, 0x1E, 0x3C, 0x03, + 0xC7, 0x0F, 0x1E, 0x01, 0xE7, 0x87, 0x9E, 0x00, 0xF3, 0x81, 0xCF, 0x00, + 0x7B, 0xC0, 0xEF, 0x00, 0x3D, 0xC0, 0x77, 0x80, 0x1F, 0xE0, 0x3F, 0x80, + 0x0F, 0xF0, 0x1F, 0xC0, 0x07, 0xF0, 0x0F, 0xC0, 0x01, 0xF8, 0x07, 0xE0, + 0x00, 0xF8, 0x03, 0xE0, 0x00, 0x7C, 0x01, 0xF0, 0x00, 0x3C, 0x00, 0xF0, + 0x00, 0x00, 0x03, 0xC0, 0x07, 0xC0, 0xF8, 0x01, 0xE0, 0x1E, 0x00, 0xF0, + 0x07, 0x80, 0x78, 0x00, 0xF0, 0x3C, 0x00, 0x3C, 0x1F, 0x00, 0x0F, 0x8F, + 0x80, 0x01, 0xE7, 0xC0, 0x00, 0x7D, 0xE0, 0x00, 0x0F, 0xF0, 0x00, 0x03, + 0xF8, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x0F, 0xC0, 0x00, + 0x07, 0xF0, 0x00, 0x03, 0xFE, 0x00, 0x01, 0xF7, 0x80, 0x00, 0xF9, 0xF0, + 0x00, 0x3C, 0x3C, 0x00, 0x1E, 0x0F, 0x80, 0x0F, 0x01, 0xE0, 0x07, 0x80, + 0x7C, 0x03, 0xE0, 0x0F, 0x01, 0xF0, 0x03, 0xE0, 0xF8, 0x00, 0x78, 0x00, + 0x03, 0xC0, 0x01, 0xE0, 0x78, 0x00, 0x78, 0x0F, 0x00, 0x0F, 0x01, 0xE0, + 0x03, 0xC0, 0x3C, 0x00, 0x78, 0x07, 0xC0, 0x1E, 0x00, 0x78, 0x07, 0xC0, + 0x0F, 0x00, 0xF0, 0x01, 0xE0, 0x3C, 0x00, 0x3C, 0x07, 0x80, 0x07, 0x81, + 0xE0, 0x00, 0xF0, 0x3C, 0x00, 0x1E, 0x0F, 0x00, 0x03, 0xC1, 0xC0, 0x00, + 0x3C, 0x78, 0x00, 0x07, 0x9E, 0x00, 0x00, 0xF3, 0xC0, 0x00, 0x1E, 0xF0, + 0x00, 0x03, 0xDE, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x0F, 0xE0, 0x00, 0x01, + 0xFC, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x78, 0x00, + 0x00, 0x0F, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x1E, + 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, + 0xFF, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x01, + 0xFF, 0xFF, 0x81, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, 0xE0, + 0x00, 0x01, 0xF0, 0x00, 0x01, 0xF0, 0x00, 0x01, 0xF0, 0x00, 0x01, 0xF0, + 0x00, 0x01, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, + 0x00, 0x01, 0xE0, 0x00, 0x03, 0xE0, 0x00, 0x03, 0xE0, 0x00, 0x03, 0xE0, + 0x00, 0x03, 0xE0, 0x00, 0x03, 0xE0, 0x00, 0x03, 0xE0, 0x00, 0x03, 0xE0, + 0x00, 0x03, 0xC0, 0x00, 0x03, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0xE0, 0xFF, + 0xFF, 0xF0, 0x7F, 0xFF, 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x7E, 0x00, 0xFE, + 0x00, 0xF0, 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x03, 0xC0, 0x03, 0xC0, + 0x03, 0xC0, 0x03, 0xC0, 0x07, 0xC0, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, + 0x07, 0x80, 0x0F, 0x00, 0x0F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0xF8, 0x00, + 0xE0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, + 0x38, 0x00, 0x38, 0x00, 0x3C, 0x00, 0x7C, 0x00, 0x78, 0x00, 0x78, 0x00, + 0x78, 0x00, 0x78, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xE0, 0x00, + 0xE0, 0x00, 0xF0, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0x7C, 0x00, 0x00, 0x70, + 0x07, 0x00, 0x60, 0x06, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0C, 0x01, 0xC0, + 0x1C, 0x01, 0xC0, 0x1C, 0x01, 0x80, 0x38, 0x03, 0x80, 0x38, 0x03, 0x00, + 0x30, 0x07, 0x00, 0x70, 0x07, 0x00, 0x60, 0x0E, 0x00, 0xE0, 0x0E, 0x00, + 0xE0, 0x0C, 0x01, 0xC0, 0x1C, 0x01, 0xC0, 0x1C, 0x01, 0x80, 0x38, 0x03, + 0x80, 0x38, 0x03, 0x00, 0x70, 0x07, 0x00, 0x70, 0x07, 0x00, 0x60, 0x0E, + 0x00, 0xE0, 0x06, 0x00, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3F, 0x00, 0x0F, + 0x00, 0x07, 0x00, 0x07, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x1E, + 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x3E, 0x00, 0x3C, 0x00, 0x1C, + 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1E, 0x00, 0x0F, + 0x00, 0x07, 0x00, 0x1F, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x00, 0xF0, + 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x03, 0xE0, 0x03, 0xC0, + 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, + 0x0F, 0x00, 0x7F, 0x00, 0x7E, 0x00, 0xF8, 0x00, 0x0F, 0x00, 0x01, 0xFE, + 0x00, 0xCF, 0xFC, 0x0E, 0xE3, 0xF0, 0xE6, 0x07, 0xFF, 0x60, 0x0F, 0xF0, + 0x00, 0x1E, 0x00}; + +const GFXglyph FreeSansOblique24pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 13, 0, 1}, // 0x20 ' ' + {0, 11, 34, 13, 6, -33}, // 0x21 '!' + {47, 13, 12, 17, 8, -32}, // 0x22 '"' + {67, 28, 34, 26, 3, -32}, // 0x23 '#' + {186, 26, 42, 26, 3, -35}, // 0x24 '$' + {323, 36, 34, 42, 6, -32}, // 0x25 '%' + {476, 26, 34, 31, 4, -32}, // 0x26 '&' + {587, 5, 12, 9, 8, -32}, // 0x27 ''' + {595, 15, 44, 16, 5, -33}, // 0x28 '(' + {678, 15, 44, 16, 1, -33}, // 0x29 ')' + {761, 14, 13, 18, 8, -33}, // 0x2A '*' + {784, 23, 22, 27, 5, -20}, // 0x2B '+' + {848, 7, 12, 13, 3, -4}, // 0x2C ',' + {859, 12, 4, 16, 5, -14}, // 0x2D '-' + {865, 6, 5, 13, 4, -4}, // 0x2E '.' + {869, 21, 35, 13, -1, -33}, // 0x2F '/' + {961, 23, 34, 26, 5, -32}, // 0x30 '0' + {1059, 13, 33, 26, 10, -32}, // 0x31 '1' + {1113, 27, 33, 26, 2, -32}, // 0x32 '2' + {1225, 25, 34, 26, 3, -32}, // 0x33 '3' + {1332, 24, 33, 26, 3, -32}, // 0x34 '4' + {1431, 27, 34, 26, 3, -32}, // 0x35 '5' + {1546, 24, 34, 26, 4, -32}, // 0x36 '6' + {1648, 26, 33, 26, 6, -32}, // 0x37 '7' + {1756, 25, 34, 26, 3, -32}, // 0x38 '8' + {1863, 24, 34, 26, 4, -32}, // 0x39 '9' + {1965, 10, 25, 13, 5, -24}, // 0x3A ':' + {1997, 11, 32, 13, 4, -24}, // 0x3B ';' + {2041, 26, 23, 27, 4, -22}, // 0x3C '<' + {2116, 26, 12, 27, 3, -16}, // 0x3D '=' + {2155, 26, 23, 27, 2, -21}, // 0x3E '>' + {2230, 20, 35, 26, 9, -34}, // 0x3F '?' + {2318, 45, 42, 48, 4, -34}, // 0x40 '@' + {2555, 30, 34, 31, 1, -33}, // 0x41 'A' + {2683, 29, 34, 31, 4, -33}, // 0x42 'B' + {2807, 30, 36, 33, 5, -34}, // 0x43 'C' + {2942, 31, 34, 33, 4, -33}, // 0x44 'D' + {3074, 31, 34, 31, 4, -33}, // 0x45 'E' + {3206, 30, 34, 28, 4, -33}, // 0x46 'F' + {3334, 33, 36, 37, 5, -34}, // 0x47 'G' + {3483, 33, 34, 34, 4, -33}, // 0x48 'H' + {3624, 11, 34, 13, 5, -33}, // 0x49 'I' + {3671, 25, 35, 24, 2, -33}, // 0x4A 'J' + {3781, 34, 34, 31, 4, -33}, // 0x4B 'K' + {3926, 22, 34, 26, 4, -33}, // 0x4C 'L' + {4020, 39, 34, 40, 4, -33}, // 0x4D 'M' + {4186, 34, 34, 34, 4, -33}, // 0x4E 'N' + {4331, 33, 36, 36, 5, -34}, // 0x4F 'O' + {4480, 29, 34, 30, 4, -33}, // 0x50 'P' + {4604, 33, 38, 36, 5, -34}, // 0x51 'Q' + {4761, 30, 34, 33, 4, -33}, // 0x52 'R' + {4889, 29, 36, 31, 4, -34}, // 0x53 'S' + {5020, 28, 34, 29, 7, -33}, // 0x54 'T' + {5139, 31, 35, 34, 6, -33}, // 0x55 'U' + {5275, 29, 34, 30, 8, -33}, // 0x56 'V' + {5399, 43, 34, 44, 8, -33}, // 0x57 'W' + {5582, 36, 34, 31, 1, -33}, // 0x58 'X' + {5735, 30, 34, 32, 8, -33}, // 0x59 'Y' + {5863, 34, 34, 29, 1, -33}, // 0x5A 'Z' + {6008, 18, 44, 13, 1, -33}, // 0x5B '[' + {6107, 6, 35, 13, 7, -33}, // 0x5C '\' + {6134, 18, 44, 13, -1, -33}, // 0x5D ']' + {6233, 17, 18, 22, 6, -32}, // 0x5E '^' + {6272, 29, 2, 26, -3, 7}, // 0x5F '_' + {6280, 8, 7, 16, 8, -34}, // 0x60 '`' + {6287, 23, 27, 26, 3, -25}, // 0x61 'a' + {6365, 25, 35, 26, 3, -33}, // 0x62 'b' + {6475, 22, 27, 24, 4, -25}, // 0x63 'c' + {6550, 27, 35, 26, 4, -33}, // 0x64 'd' + {6669, 23, 27, 26, 4, -25}, // 0x65 'e' + {6747, 15, 34, 12, 3, -33}, // 0x66 'f' + {6811, 27, 36, 26, 2, -25}, // 0x67 'g' + {6933, 23, 34, 25, 3, -33}, // 0x68 'h' + {7031, 11, 34, 10, 3, -33}, // 0x69 'i' + {7078, 18, 44, 11, -2, -33}, // 0x6A 'j' + {7177, 25, 34, 24, 3, -33}, // 0x6B 'k' + {7284, 11, 34, 10, 3, -33}, // 0x6C 'l' + {7331, 36, 26, 38, 3, -25}, // 0x6D 'm' + {7448, 23, 26, 25, 3, -25}, // 0x6E 'n' + {7523, 23, 27, 26, 4, -25}, // 0x6F 'o' + {7601, 27, 36, 26, 1, -25}, // 0x70 'p' + {7723, 26, 36, 26, 3, -25}, // 0x71 'q' + {7840, 17, 26, 15, 3, -25}, // 0x72 'r' + {7896, 21, 27, 24, 3, -25}, // 0x73 's' + {7967, 13, 32, 12, 4, -30}, // 0x74 't' + {8019, 24, 26, 25, 4, -24}, // 0x75 'u' + {8097, 22, 25, 23, 6, -24}, // 0x76 'v' + {8166, 33, 25, 34, 6, -24}, // 0x77 'w' + {8270, 26, 25, 23, 1, -24}, // 0x78 'x' + {8352, 27, 35, 23, 0, -24}, // 0x79 'y' + {8471, 25, 25, 23, 1, -24}, // 0x7A 'z' + {8550, 16, 44, 16, 5, -33}, // 0x7B '{' + {8638, 12, 44, 12, 3, -33}, // 0x7C '|' + {8704, 16, 44, 16, -1, -33}, // 0x7D '}' + {8792, 21, 7, 27, 6, -19}}; // 0x7E '~' + +const GFXfont FreeSansOblique24pt7b PROGMEM = { + (uint8_t *)FreeSansOblique24pt7bBitmaps, + (GFXglyph *)FreeSansOblique24pt7bGlyphs, 0x20, 0x7E, 56}; + +// Approx. 9483 bytes diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansOblique9pt7b.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansOblique9pt7b.h new file mode 100644 index 0000000..0b5db81 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSansOblique9pt7b.h @@ -0,0 +1,222 @@ +#pragma once +#include + +const uint8_t FreeSansOblique9pt7bBitmaps[] PROGMEM = { + 0x10, 0x84, 0x22, 0x10, 0x84, 0x42, 0x10, 0x08, 0x00, 0xDE, 0xE5, 0x20, + 0x06, 0x40, 0x88, 0x13, 0x06, 0x43, 0xFE, 0x32, 0x04, 0x40, 0x98, 0x32, + 0x1F, 0xF0, 0x98, 0x22, 0x04, 0xC0, 0x02, 0x01, 0xF8, 0x6B, 0x99, 0x33, + 0x40, 0x68, 0x0F, 0x00, 0xF8, 0x07, 0xC1, 0x1B, 0x23, 0x64, 0x4E, 0x98, + 0xFC, 0x04, 0x00, 0x80, 0x3C, 0x08, 0xCC, 0x23, 0x18, 0x86, 0x32, 0x0C, + 0x64, 0x19, 0x90, 0x1E, 0x40, 0x01, 0x1E, 0x02, 0x66, 0x09, 0x8C, 0x23, + 0x18, 0x86, 0x62, 0x07, 0x80, 0x0F, 0x06, 0x63, 0x18, 0xC6, 0x3F, 0x07, + 0x03, 0xC1, 0xB3, 0xC7, 0xB0, 0xCC, 0x33, 0x3E, 0x79, 0x80, 0xFA, 0x04, + 0x10, 0x60, 0x83, 0x04, 0x18, 0x30, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x10, + 0x30, 0x20, 0x08, 0x18, 0x10, 0x30, 0x60, 0xC1, 0x83, 0x06, 0x18, 0x30, + 0x41, 0x82, 0x0C, 0x10, 0x40, 0x19, 0x73, 0x16, 0x48, 0x04, 0x04, 0x02, + 0x1F, 0xF0, 0x80, 0x80, 0x40, 0x20, 0x6D, 0x28, 0xF0, 0xC0, 0x01, 0x02, + 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x0F, + 0x19, 0xC8, 0x6C, 0x36, 0x1A, 0x0F, 0x05, 0x86, 0xC3, 0x61, 0xB1, 0x9C, + 0x87, 0x80, 0x08, 0xCD, 0xE3, 0x18, 0xC4, 0x23, 0x18, 0xC4, 0x00, 0x07, + 0x83, 0x1C, 0x41, 0x98, 0x30, 0x06, 0x01, 0x80, 0x60, 0x38, 0x1C, 0x06, + 0x01, 0x80, 0x20, 0x0F, 0xF8, 0x0F, 0x86, 0x73, 0x0C, 0x83, 0x00, 0xC0, + 0x60, 0xE0, 0x06, 0x01, 0xB0, 0x6C, 0x13, 0x8C, 0x7C, 0x00, 0x00, 0x80, + 0xC0, 0xE0, 0xA0, 0x90, 0x98, 0x8C, 0x86, 0xFF, 0x81, 0x01, 0x80, 0xC0, + 0x60, 0x0F, 0xC3, 0x00, 0x40, 0x08, 0x03, 0x00, 0x7F, 0x1C, 0x70, 0x06, + 0x00, 0xC0, 0x1B, 0x06, 0x71, 0x87, 0xE0, 0x0F, 0x86, 0x73, 0x0D, 0x80, + 0x60, 0x1F, 0xCF, 0x3B, 0x86, 0xC1, 0xB0, 0x6C, 0x33, 0x98, 0x3C, 0x00, + 0x7F, 0xC0, 0x20, 0x10, 0x0C, 0x06, 0x01, 0x00, 0x80, 0x60, 0x10, 0x0C, + 0x02, 0x01, 0x80, 0x40, 0x00, 0x0F, 0x86, 0x73, 0x0C, 0xC3, 0x30, 0xCC, + 0x61, 0xE1, 0x86, 0x41, 0xB0, 0x6C, 0x13, 0x8C, 0x3E, 0x00, 0x0F, 0x06, + 0x73, 0x0D, 0x83, 0x60, 0xD8, 0x77, 0x3C, 0xFE, 0x01, 0x80, 0x6C, 0x33, + 0x98, 0x7C, 0x00, 0x30, 0x00, 0x00, 0x00, 0xC0, 0x18, 0x00, 0x00, 0x00, + 0x0C, 0x62, 0x11, 0x00, 0x00, 0x01, 0xC3, 0x8F, 0x0C, 0x07, 0x00, 0xE0, + 0x1E, 0x01, 0x00, 0x7F, 0xC0, 0x00, 0x03, 0xFE, 0x40, 0x3C, 0x03, 0x80, + 0x70, 0x18, 0x78, 0xE1, 0xC0, 0x00, 0x00, 0x1F, 0x30, 0xD0, 0x78, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0xFE, + 0x00, 0xC0, 0xE0, 0xC0, 0x18, 0x61, 0xD3, 0x31, 0x9C, 0xD8, 0xC2, 0x36, + 0x31, 0x8F, 0x18, 0x67, 0xC6, 0x11, 0xB1, 0x8C, 0xCC, 0x67, 0x63, 0x0E, + 0xF0, 0x60, 0x00, 0x1C, 0x00, 0x01, 0x81, 0x00, 0x1F, 0xC0, 0x01, 0xC0, + 0x1C, 0x03, 0xC0, 0x24, 0x06, 0x60, 0x46, 0x0C, 0x61, 0x86, 0x1F, 0xE3, + 0x06, 0x20, 0x26, 0x03, 0x40, 0x30, 0x1F, 0xE1, 0x87, 0x30, 0x33, 0x03, + 0x30, 0x23, 0x06, 0x3F, 0xC6, 0x06, 0x60, 0x66, 0x06, 0x60, 0x66, 0x0C, + 0x7F, 0x80, 0x07, 0xC1, 0x86, 0x30, 0x32, 0x03, 0x60, 0x04, 0x00, 0xC0, + 0x0C, 0x00, 0xC0, 0x6C, 0x06, 0xC0, 0xC6, 0x18, 0x3E, 0x00, 0x1F, 0xE0, + 0xC1, 0x84, 0x06, 0x60, 0x33, 0x01, 0x98, 0x0C, 0x80, 0x64, 0x02, 0x60, + 0x33, 0x01, 0x98, 0x18, 0x81, 0x87, 0xF0, 0x00, 0x1F, 0xF1, 0x80, 0x10, + 0x03, 0x00, 0x30, 0x03, 0x00, 0x3F, 0xE2, 0x00, 0x60, 0x06, 0x00, 0x60, + 0x04, 0x00, 0x7F, 0xC0, 0x1F, 0xF1, 0x80, 0x10, 0x03, 0x00, 0x30, 0x03, + 0x00, 0x3F, 0xC2, 0x00, 0x60, 0x06, 0x00, 0x60, 0x04, 0x00, 0x40, 0x00, + 0x07, 0xE0, 0xE1, 0x8C, 0x06, 0xC0, 0x36, 0x00, 0x60, 0x03, 0x07, 0xF8, + 0x02, 0xC0, 0x36, 0x01, 0x98, 0x1C, 0xE1, 0xC1, 0xF2, 0x00, 0x18, 0x08, + 0xC0, 0xC4, 0x06, 0x60, 0x33, 0x01, 0x18, 0x18, 0xFF, 0xC4, 0x06, 0x60, + 0x23, 0x01, 0x18, 0x18, 0x80, 0xC4, 0x06, 0x00, 0x33, 0x32, 0x26, 0x66, + 0x44, 0xCC, 0xC0, 0x00, 0xC0, 0x60, 0x18, 0x06, 0x01, 0x80, 0x60, 0x30, + 0x0C, 0x03, 0x30, 0xCC, 0x63, 0x18, 0x7C, 0x00, 0x18, 0x18, 0x60, 0xC1, + 0x0E, 0x0C, 0x60, 0x33, 0x00, 0xD8, 0x03, 0xF0, 0x0C, 0xC0, 0x61, 0x81, + 0x86, 0x06, 0x0C, 0x10, 0x30, 0x40, 0x60, 0x18, 0x0C, 0x04, 0x06, 0x03, + 0x01, 0x80, 0xC0, 0x40, 0x60, 0x30, 0x18, 0x08, 0x07, 0xF8, 0x18, 0x06, + 0x18, 0x0E, 0x18, 0x0E, 0x34, 0x1E, 0x34, 0x36, 0x34, 0x34, 0x24, 0x64, + 0x24, 0x6C, 0x64, 0xCC, 0x64, 0x8C, 0x65, 0x88, 0x43, 0x08, 0x43, 0x18, + 0x18, 0x08, 0xE0, 0x47, 0x06, 0x6C, 0x33, 0x61, 0x99, 0x08, 0x8C, 0xC4, + 0x66, 0x61, 0xB3, 0x0D, 0x18, 0x38, 0x81, 0xC4, 0x06, 0x00, 0x07, 0xC0, + 0xC3, 0x8C, 0x0E, 0xC0, 0x36, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, + 0x36, 0x01, 0xB8, 0x18, 0xE1, 0x81, 0xF0, 0x00, 0x1F, 0xE1, 0x83, 0x10, + 0x33, 0x03, 0x30, 0x33, 0x06, 0x3F, 0xC2, 0x00, 0x60, 0x06, 0x00, 0x60, + 0x04, 0x00, 0x40, 0x00, 0x07, 0xC0, 0xC3, 0x8C, 0x0E, 0xC0, 0x36, 0x01, + 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x36, 0x09, 0xB8, 0x78, 0xE3, 0x81, + 0xF6, 0x00, 0x10, 0x1F, 0xF0, 0xC0, 0xC4, 0x06, 0x60, 0x33, 0x01, 0x18, + 0x18, 0xFF, 0x04, 0x0C, 0x60, 0x63, 0x03, 0x18, 0x18, 0x80, 0xC4, 0x06, + 0x00, 0x07, 0xC1, 0x87, 0x30, 0x33, 0x03, 0x30, 0x03, 0xC0, 0x0F, 0xC0, + 0x1E, 0x00, 0x6C, 0x06, 0xC0, 0x46, 0x0C, 0x3F, 0x00, 0xFF, 0xC3, 0x00, + 0xC0, 0x20, 0x18, 0x06, 0x01, 0x80, 0x60, 0x10, 0x0C, 0x03, 0x00, 0xC0, + 0x20, 0x00, 0x30, 0x13, 0x03, 0x20, 0x36, 0x03, 0x60, 0x26, 0x06, 0x60, + 0x64, 0x06, 0xC0, 0x6C, 0x04, 0xC0, 0xCE, 0x18, 0x3E, 0x00, 0xC0, 0x78, + 0x0B, 0x03, 0x20, 0xC4, 0x18, 0xC6, 0x18, 0x83, 0x30, 0x64, 0x0D, 0x80, + 0xA0, 0x1C, 0x03, 0x00, 0xC1, 0x83, 0xC1, 0x83, 0xC3, 0x86, 0xC2, 0x86, + 0xC6, 0x84, 0xC4, 0x8C, 0xCC, 0xC8, 0xC8, 0xD8, 0xD8, 0xD0, 0xD0, 0xF0, + 0x70, 0xE0, 0x60, 0xE0, 0x60, 0xE0, 0x0C, 0x0C, 0x30, 0x60, 0x63, 0x01, + 0x98, 0x02, 0xC0, 0x0E, 0x00, 0x38, 0x01, 0xE0, 0x0C, 0x80, 0x33, 0x01, + 0x8C, 0x0C, 0x18, 0x60, 0x60, 0xC0, 0x66, 0x0C, 0x60, 0xC2, 0x18, 0x33, + 0x03, 0x60, 0x1C, 0x01, 0x80, 0x18, 0x01, 0x80, 0x18, 0x01, 0x00, 0x30, + 0x00, 0x1F, 0xF0, 0x07, 0x00, 0xE0, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, + 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x00, 0xFF, 0xC0, 0x0E, 0x10, 0x20, + 0x41, 0x02, 0x04, 0x08, 0x20, 0x40, 0x81, 0x04, 0x08, 0x10, 0x20, 0xE0, + 0xAA, 0xA9, 0x55, 0x40, 0x0E, 0x08, 0x10, 0x20, 0x41, 0x02, 0x04, 0x08, + 0x20, 0x40, 0x81, 0x04, 0x08, 0x10, 0xE0, 0x0C, 0x18, 0x51, 0xA2, 0x4C, + 0x50, 0x80, 0xFF, 0xE0, 0xC8, 0x80, 0x0F, 0x86, 0x33, 0x0C, 0x03, 0x03, + 0xDF, 0xEE, 0x0B, 0x02, 0xC1, 0x9F, 0xE0, 0x10, 0x04, 0x01, 0x00, 0xDC, + 0x39, 0x88, 0x32, 0x0D, 0x83, 0x40, 0xD0, 0x64, 0x1B, 0x8C, 0xBC, 0x00, + 0x1F, 0x18, 0xD8, 0x6C, 0x0C, 0x06, 0x03, 0x01, 0x86, 0x66, 0x3E, 0x00, + 0x00, 0x20, 0x08, 0x01, 0x0F, 0x23, 0x14, 0xC1, 0x18, 0x26, 0x04, 0xC0, + 0x98, 0x23, 0x04, 0x71, 0x87, 0xD0, 0x0F, 0x0C, 0x76, 0x0D, 0x83, 0xFF, + 0xF0, 0x0C, 0x03, 0x06, 0x63, 0x0F, 0x80, 0x1C, 0xC2, 0x1E, 0x20, 0x84, + 0x10, 0x41, 0x04, 0x20, 0x80, 0x0F, 0x46, 0x33, 0x0C, 0xC1, 0x60, 0xD8, + 0x26, 0x09, 0x86, 0x71, 0x8F, 0xE0, 0x10, 0x04, 0xC2, 0x1F, 0x00, 0x10, + 0x04, 0x01, 0x00, 0x9F, 0x39, 0x88, 0x22, 0x09, 0x02, 0x40, 0x90, 0x44, + 0x12, 0x04, 0x81, 0x00, 0x10, 0x02, 0x22, 0x64, 0x44, 0x48, 0x80, 0x04, + 0x00, 0x01, 0x08, 0x20, 0x82, 0x08, 0x41, 0x04, 0x10, 0x42, 0x08, 0xE0, + 0x10, 0x08, 0x04, 0x04, 0x32, 0x31, 0x20, 0xA0, 0xB8, 0x6C, 0x22, 0x11, + 0x90, 0xC8, 0x30, 0x11, 0x22, 0x22, 0x64, 0x44, 0x48, 0x80, 0x2F, 0x3C, + 0x63, 0x8C, 0x86, 0x19, 0x08, 0x44, 0x10, 0x88, 0x21, 0x10, 0x82, 0x21, + 0x04, 0x82, 0x11, 0x04, 0x20, 0x00, 0x0B, 0xF3, 0x18, 0x82, 0x20, 0x90, + 0x24, 0x09, 0x04, 0x41, 0x20, 0x48, 0x10, 0x0F, 0x0C, 0x76, 0x0D, 0x83, + 0xC0, 0xF0, 0x3C, 0x1B, 0x06, 0xE3, 0x0F, 0x00, 0x17, 0xC3, 0x1C, 0x41, + 0x98, 0x32, 0x06, 0x40, 0xC8, 0x33, 0x06, 0x71, 0x8B, 0xC1, 0x00, 0x20, + 0x08, 0x01, 0x00, 0x00, 0x1E, 0xCC, 0x66, 0x09, 0x82, 0xC0, 0xB0, 0x4C, + 0x13, 0x04, 0x63, 0x0F, 0xC0, 0x20, 0x08, 0x02, 0x00, 0x80, 0x2C, 0x60, + 0x81, 0x04, 0x08, 0x10, 0x20, 0x81, 0x00, 0x1E, 0x33, 0x63, 0x60, 0x70, + 0x1E, 0x03, 0xC3, 0xC6, 0x7C, 0x22, 0xF2, 0x44, 0x44, 0xCC, 0xCE, 0x21, + 0x20, 0x90, 0x48, 0x24, 0x12, 0x13, 0x09, 0x84, 0xE6, 0x3E, 0x00, 0xC1, + 0xE1, 0xB0, 0xC8, 0xC4, 0x43, 0x61, 0xA0, 0xF0, 0x70, 0x18, 0x00, 0xC7, + 0x1E, 0x38, 0xB3, 0xCD, 0x96, 0x4C, 0xB6, 0x6D, 0xB1, 0x4D, 0x0E, 0x78, + 0x63, 0x83, 0x1C, 0x00, 0x10, 0xC3, 0x10, 0x24, 0x07, 0x80, 0xE0, 0x1C, + 0x07, 0x81, 0x90, 0x23, 0x08, 0x20, 0x30, 0x46, 0x18, 0x42, 0x08, 0xC1, + 0x10, 0x24, 0x07, 0x80, 0xE0, 0x1C, 0x03, 0x00, 0x60, 0x08, 0x03, 0x01, + 0xC0, 0x00, 0x3F, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, + 0x7F, 0x00, 0x18, 0x88, 0x42, 0x10, 0x88, 0xC3, 0x18, 0x88, 0x42, 0x18, + 0xE0, 0x11, 0x22, 0x22, 0x24, 0x44, 0x4C, 0x88, 0x88, 0x00, 0x38, 0xC2, + 0x10, 0x88, 0xC6, 0x18, 0x88, 0x42, 0x10, 0x88, 0xC0, 0x70, 0x4E, 0x41, + 0xC0}; + +const GFXglyph FreeSansOblique9pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 5, 0, 1}, // 0x20 ' ' + {0, 5, 13, 5, 2, -12}, // 0x21 '!' + {9, 5, 4, 6, 3, -12}, // 0x22 '"' + {12, 11, 13, 10, 1, -12}, // 0x23 '#' + {30, 11, 16, 10, 1, -13}, // 0x24 '$' + {52, 15, 13, 16, 2, -12}, // 0x25 '%' + {77, 10, 13, 12, 2, -12}, // 0x26 '&' + {94, 2, 4, 3, 3, -12}, // 0x27 ''' + {95, 7, 17, 6, 2, -12}, // 0x28 '(' + {110, 7, 17, 6, -1, -12}, // 0x29 ')' + {125, 6, 5, 7, 3, -12}, // 0x2A '*' + {129, 9, 8, 11, 2, -7}, // 0x2B '+' + {138, 3, 5, 5, 1, -1}, // 0x2C ',' + {140, 4, 1, 6, 2, -4}, // 0x2D '-' + {141, 2, 1, 5, 2, 0}, // 0x2E '.' + {142, 8, 13, 5, 0, -12}, // 0x2F '/' + {155, 9, 13, 10, 2, -12}, // 0x30 '0' + {170, 5, 13, 10, 4, -12}, // 0x31 '1' + {179, 11, 13, 10, 1, -12}, // 0x32 '2' + {197, 10, 13, 10, 1, -12}, // 0x33 '3' + {214, 9, 13, 10, 1, -12}, // 0x34 '4' + {229, 11, 13, 10, 1, -12}, // 0x35 '5' + {247, 10, 13, 10, 2, -12}, // 0x36 '6' + {264, 10, 13, 10, 2, -12}, // 0x37 '7' + {281, 10, 13, 10, 1, -12}, // 0x38 '8' + {298, 10, 13, 10, 1, -12}, // 0x39 '9' + {315, 4, 9, 5, 2, -8}, // 0x3A ':' + {320, 5, 12, 5, 1, -8}, // 0x3B ';' + {328, 9, 9, 11, 2, -8}, // 0x3C '<' + {339, 10, 4, 11, 1, -5}, // 0x3D '=' + {344, 9, 9, 11, 1, -7}, // 0x3E '>' + {355, 9, 13, 10, 3, -12}, // 0x3F '?' + {370, 18, 16, 18, 1, -12}, // 0x40 '@' + {406, 12, 13, 12, 0, -12}, // 0x41 'A' + {426, 12, 13, 12, 1, -12}, // 0x42 'B' + {446, 12, 13, 13, 2, -12}, // 0x43 'C' + {466, 13, 13, 13, 1, -12}, // 0x44 'D' + {488, 12, 13, 12, 1, -12}, // 0x45 'E' + {508, 12, 13, 11, 1, -12}, // 0x46 'F' + {528, 13, 13, 14, 2, -12}, // 0x47 'G' + {550, 13, 13, 13, 1, -12}, // 0x48 'H' + {572, 4, 13, 5, 2, -12}, // 0x49 'I' + {579, 10, 13, 9, 1, -12}, // 0x4A 'J' + {596, 14, 13, 12, 1, -12}, // 0x4B 'K' + {619, 9, 13, 10, 1, -12}, // 0x4C 'L' + {634, 16, 13, 15, 1, -12}, // 0x4D 'M' + {660, 13, 13, 13, 1, -12}, // 0x4E 'N' + {682, 13, 13, 14, 2, -12}, // 0x4F 'O' + {704, 12, 13, 12, 1, -12}, // 0x50 'P' + {724, 13, 14, 14, 2, -12}, // 0x51 'Q' + {747, 13, 13, 13, 1, -12}, // 0x52 'R' + {769, 12, 13, 12, 1, -12}, // 0x53 'S' + {789, 10, 13, 11, 3, -12}, // 0x54 'T' + {806, 12, 13, 13, 2, -12}, // 0x55 'U' + {826, 11, 13, 12, 3, -12}, // 0x56 'V' + {844, 16, 13, 17, 3, -12}, // 0x57 'W' + {870, 14, 13, 12, 0, -12}, // 0x58 'X' + {893, 12, 13, 12, 3, -12}, // 0x59 'Y' + {913, 12, 13, 11, 1, -12}, // 0x5A 'Z' + {933, 7, 17, 5, 0, -12}, // 0x5B '[' + {948, 2, 13, 5, 3, -12}, // 0x5C '\' + {952, 7, 17, 5, 0, -12}, // 0x5D ']' + {967, 7, 7, 8, 2, -12}, // 0x5E '^' + {974, 11, 1, 10, -1, 3}, // 0x5F '_' + {976, 3, 3, 6, 3, -12}, // 0x60 '`' + {978, 10, 10, 10, 1, -9}, // 0x61 'a' + {991, 10, 13, 10, 1, -12}, // 0x62 'b' + {1008, 9, 10, 9, 1, -9}, // 0x63 'c' + {1020, 11, 13, 10, 1, -12}, // 0x64 'd' + {1038, 10, 10, 10, 1, -9}, // 0x65 'e' + {1051, 6, 13, 5, 1, -12}, // 0x66 'f' + {1061, 10, 14, 10, 0, -9}, // 0x67 'g' + {1079, 10, 13, 10, 1, -12}, // 0x68 'h' + {1096, 4, 13, 4, 1, -12}, // 0x69 'i' + {1103, 6, 17, 4, -1, -12}, // 0x6A 'j' + {1116, 9, 13, 9, 1, -12}, // 0x6B 'k' + {1131, 4, 13, 4, 1, -12}, // 0x6C 'l' + {1138, 15, 10, 15, 1, -9}, // 0x6D 'm' + {1157, 10, 11, 10, 1, -10}, // 0x6E 'n' + {1171, 10, 10, 10, 1, -9}, // 0x6F 'o' + {1184, 11, 14, 10, 0, -9}, // 0x70 'p' + {1204, 10, 14, 10, 1, -9}, // 0x71 'q' + {1222, 7, 10, 6, 1, -9}, // 0x72 'r' + {1231, 8, 10, 9, 1, -9}, // 0x73 's' + {1241, 4, 12, 5, 2, -11}, // 0x74 't' + {1247, 9, 10, 10, 2, -9}, // 0x75 'u' + {1259, 9, 10, 9, 2, -9}, // 0x76 'v' + {1271, 13, 10, 13, 2, -9}, // 0x77 'w' + {1288, 11, 10, 9, 0, -9}, // 0x78 'x' + {1302, 11, 14, 9, 0, -9}, // 0x79 'y' + {1322, 9, 10, 9, 1, -9}, // 0x7A 'z' + {1334, 5, 17, 6, 2, -12}, // 0x7B '{' + {1345, 4, 17, 5, 1, -12}, // 0x7C '|' + {1354, 5, 17, 6, 0, -12}, // 0x7D '}' + {1365, 9, 3, 11, 2, -7}}; // 0x7E '~' + +const GFXfont FreeSansOblique9pt7b PROGMEM = { + (uint8_t *)FreeSansOblique9pt7bBitmaps, + (GFXglyph *)FreeSansOblique9pt7bGlyphs, 0x20, 0x7E, 22}; + +// Approx. 2041 bytes diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerif12pt7b.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerif12pt7b.h new file mode 100644 index 0000000..22cb53d --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerif12pt7b.h @@ -0,0 +1,261 @@ +#pragma once +#include + +const uint8_t FreeSerif12pt7bBitmaps[] PROGMEM = { + 0xFF, 0xFE, 0xA8, 0x3F, 0xCF, 0x3C, 0xF3, 0x8A, 0x20, 0x0C, 0x40, 0xC4, + 0x08, 0x40, 0x8C, 0x08, 0xC7, 0xFF, 0x18, 0x81, 0x88, 0x10, 0x81, 0x08, + 0xFF, 0xE1, 0x18, 0x31, 0x03, 0x10, 0x31, 0x02, 0x10, 0x04, 0x07, 0xC6, + 0x5B, 0x12, 0xC4, 0xB1, 0x0F, 0x41, 0xF0, 0x1E, 0x01, 0xE0, 0x58, 0x13, + 0x84, 0xE1, 0x3C, 0x4F, 0x96, 0x3F, 0x01, 0x00, 0x00, 0x04, 0x03, 0x83, + 0x03, 0x9F, 0x81, 0xC2, 0x20, 0x60, 0x90, 0x38, 0x24, 0x0C, 0x12, 0x03, + 0x0D, 0x00, 0xC6, 0x47, 0x9E, 0x23, 0x10, 0x09, 0x84, 0x04, 0xE1, 0x03, + 0x30, 0x40, 0x8C, 0x20, 0x43, 0x08, 0x10, 0xC4, 0x08, 0x1E, 0x00, 0x03, + 0xC0, 0x02, 0x30, 0x03, 0x08, 0x01, 0x84, 0x00, 0xC4, 0x00, 0x7C, 0xF8, + 0x1C, 0x38, 0x1E, 0x08, 0x33, 0x0C, 0x31, 0xC4, 0x10, 0x74, 0x18, 0x3A, + 0x0C, 0x0E, 0x07, 0x03, 0x83, 0xC3, 0xE2, 0x7E, 0x3E, 0xFF, 0xA0, 0x04, + 0x21, 0x08, 0x61, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC1, 0x04, 0x18, 0x20, + 0x40, 0x81, 0x81, 0x02, 0x04, 0x18, 0x20, 0x83, 0x0C, 0x30, 0xC3, 0x0C, + 0x30, 0x86, 0x10, 0x84, 0x20, 0x30, 0xB3, 0xD7, 0x54, 0x38, 0x7C, 0xD3, + 0x30, 0x30, 0x10, 0x04, 0x00, 0x80, 0x10, 0x02, 0x00, 0x41, 0xFF, 0xC1, + 0x00, 0x20, 0x04, 0x00, 0x80, 0x10, 0x00, 0xDF, 0x95, 0x00, 0xFC, 0xFC, + 0x06, 0x0C, 0x10, 0x60, 0xC1, 0x06, 0x0C, 0x10, 0x60, 0xC1, 0x06, 0x0C, + 0x10, 0x60, 0xC0, 0x1E, 0x0C, 0xC6, 0x19, 0x86, 0xC0, 0xB0, 0x3C, 0x0F, + 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xD8, 0x66, 0x18, 0xCC, 0x1E, + 0x00, 0x11, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, + 0x0C, 0xFC, 0x1E, 0x18, 0xC4, 0x1A, 0x06, 0x01, 0x80, 0x60, 0x10, 0x0C, + 0x02, 0x01, 0x00, 0xC0, 0x60, 0x30, 0x18, 0x1F, 0xF8, 0x1E, 0x18, 0xE8, + 0x18, 0x06, 0x01, 0x00, 0x80, 0xF0, 0x7E, 0x03, 0xC0, 0x70, 0x0C, 0x03, + 0x00, 0xC0, 0x6E, 0x11, 0xF8, 0x01, 0x00, 0xC0, 0x70, 0x2C, 0x0B, 0x04, + 0xC2, 0x30, 0x8C, 0x43, 0x20, 0xC8, 0x33, 0xFF, 0x03, 0x00, 0xC0, 0x30, + 0x0C, 0x00, 0x03, 0xF1, 0x00, 0x40, 0x18, 0x0F, 0x80, 0xF8, 0x0E, 0x01, + 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x20, 0x1B, 0x8C, 0x7C, 0x00, 0x01, + 0xC3, 0xC1, 0xC0, 0xC0, 0x70, 0x18, 0x0E, 0xF3, 0xCE, 0xC1, 0xF0, 0x3C, + 0x0F, 0x03, 0xC0, 0xD8, 0x36, 0x08, 0xC6, 0x1E, 0x00, 0x3F, 0xD0, 0x38, + 0x08, 0x06, 0x01, 0x80, 0x40, 0x10, 0x0C, 0x02, 0x00, 0x80, 0x20, 0x10, + 0x04, 0x01, 0x00, 0x80, 0x20, 0x1F, 0x18, 0x6C, 0x0F, 0x03, 0xC0, 0xF8, + 0x67, 0x30, 0xF0, 0x1E, 0x09, 0xE6, 0x3B, 0x07, 0xC0, 0xF0, 0x3C, 0x0D, + 0x86, 0x1F, 0x00, 0x1E, 0x08, 0xC6, 0x1B, 0x02, 0xC0, 0xF0, 0x3C, 0x0F, + 0x03, 0xE0, 0xDC, 0x73, 0xEC, 0x06, 0x01, 0x80, 0xC0, 0x70, 0x38, 0x38, + 0x18, 0x00, 0xFC, 0x00, 0x3F, 0xCC, 0xC0, 0x00, 0x00, 0x06, 0x77, 0x12, + 0x40, 0x00, 0x00, 0x07, 0x01, 0xE0, 0x78, 0x1E, 0x07, 0x00, 0xC0, 0x0F, + 0x00, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x07, 0x00, 0x10, 0xFF, 0xF0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x0E, 0x00, 0x3C, 0x00, 0xF0, + 0x03, 0xC0, 0x0F, 0x00, 0x30, 0x0E, 0x07, 0x81, 0xE0, 0x78, 0x0E, 0x00, + 0x00, 0x00, 0x7C, 0x86, 0x83, 0xC3, 0x03, 0x03, 0x06, 0x0C, 0x08, 0x08, + 0x10, 0x10, 0x00, 0x00, 0x30, 0x30, 0x30, 0x03, 0xF0, 0x06, 0x06, 0x06, + 0x00, 0x86, 0x00, 0x26, 0x0E, 0xD3, 0x0C, 0xC7, 0x0C, 0x63, 0x84, 0x31, + 0xC6, 0x18, 0xE3, 0x08, 0x71, 0x8C, 0x4C, 0xC6, 0x46, 0x3D, 0xC1, 0x80, + 0x00, 0x30, 0x10, 0x07, 0xF0, 0x00, 0x80, 0x00, 0x60, 0x00, 0x70, 0x00, + 0x38, 0x00, 0x2E, 0x00, 0x13, 0x00, 0x19, 0xC0, 0x08, 0x60, 0x04, 0x38, + 0x04, 0x0C, 0x03, 0xFF, 0x03, 0x03, 0x81, 0x00, 0xE1, 0x80, 0x70, 0xC0, + 0x3D, 0xF0, 0x3F, 0xFF, 0x83, 0x0C, 0x30, 0x63, 0x06, 0x30, 0x63, 0x06, + 0x30, 0xC3, 0xF0, 0x30, 0xE3, 0x06, 0x30, 0x33, 0x03, 0x30, 0x33, 0x07, + 0x30, 0xEF, 0xFC, 0x07, 0xE2, 0x38, 0x3C, 0xC0, 0x3B, 0x00, 0x36, 0x00, + 0x38, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, 0x03, + 0x00, 0x06, 0x00, 0x06, 0x00, 0x47, 0x03, 0x03, 0xF8, 0xFF, 0xC0, 0x30, + 0x78, 0x30, 0x1C, 0x30, 0x0E, 0x30, 0x06, 0x30, 0x03, 0x30, 0x03, 0x30, + 0x03, 0x30, 0x03, 0x30, 0x03, 0x30, 0x03, 0x30, 0x06, 0x30, 0x06, 0x30, + 0x0C, 0x30, 0x78, 0xFF, 0xC0, 0xFF, 0xFC, 0xC0, 0x33, 0x00, 0x4C, 0x00, + 0x30, 0x00, 0xC0, 0x43, 0x03, 0x0F, 0xFC, 0x30, 0x30, 0xC0, 0x43, 0x00, + 0x0C, 0x00, 0x30, 0x08, 0xC0, 0x23, 0x03, 0xBF, 0xFE, 0xFF, 0xFC, 0xC0, + 0x33, 0x00, 0x4C, 0x00, 0x30, 0x00, 0xC0, 0x43, 0x03, 0x0F, 0xFC, 0x30, + 0x30, 0xC0, 0x43, 0x00, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x03, 0x00, 0x3F, + 0x00, 0x07, 0xE4, 0x1C, 0x3C, 0x30, 0x0C, 0x60, 0x0C, 0x60, 0x04, 0xC0, + 0x00, 0xC0, 0x00, 0xC0, 0x3F, 0xC0, 0x0C, 0xC0, 0x0C, 0xC0, 0x0C, 0x60, + 0x0C, 0x60, 0x0C, 0x30, 0x0C, 0x1C, 0x1C, 0x07, 0xE0, 0xFC, 0x3F, 0x30, + 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x3F, + 0xFC, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30, + 0x0C, 0x30, 0x0C, 0xFC, 0x3F, 0xFC, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, + 0xC3, 0x0C, 0x30, 0xC3, 0x3F, 0x3F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, + 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0xC8, 0xF0, 0xFC, 0xFE, 0x30, + 0x38, 0x30, 0x20, 0x30, 0x40, 0x30, 0x80, 0x33, 0x00, 0x36, 0x00, 0x3E, + 0x00, 0x37, 0x00, 0x33, 0x80, 0x31, 0xC0, 0x30, 0xE0, 0x30, 0x70, 0x30, + 0x38, 0x30, 0x3C, 0xFC, 0x7F, 0xFC, 0x00, 0x60, 0x00, 0xC0, 0x01, 0x80, + 0x03, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, + 0xC0, 0x01, 0x80, 0x03, 0x00, 0x26, 0x00, 0x8C, 0x07, 0x7F, 0xFE, 0xF8, + 0x01, 0xE7, 0x00, 0x70, 0xE0, 0x0E, 0x1E, 0x03, 0xC2, 0xC0, 0x58, 0x5C, + 0x1B, 0x09, 0x82, 0x61, 0x38, 0x4C, 0x27, 0x11, 0x84, 0x72, 0x30, 0x8E, + 0xC6, 0x10, 0xD0, 0xC2, 0x1E, 0x18, 0x41, 0x83, 0x1C, 0x30, 0x67, 0xC4, + 0x3F, 0xF0, 0x1F, 0x78, 0x0E, 0x3C, 0x04, 0x3E, 0x04, 0x2E, 0x04, 0x27, + 0x04, 0x23, 0x84, 0x23, 0xC4, 0x21, 0xE4, 0x20, 0xE4, 0x20, 0x74, 0x20, + 0x3C, 0x20, 0x1C, 0x20, 0x0C, 0x70, 0x0C, 0xF8, 0x04, 0x07, 0xC0, 0x30, + 0x60, 0xC0, 0x63, 0x00, 0x66, 0x00, 0xD8, 0x00, 0xF0, 0x01, 0xE0, 0x03, + 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1B, 0x00, 0x66, 0x00, 0xC6, 0x03, 0x06, + 0x0C, 0x03, 0xE0, 0xFF, 0x83, 0x0E, 0x30, 0x73, 0x03, 0x30, 0x33, 0x03, + 0x30, 0x63, 0x0E, 0x3F, 0x83, 0x00, 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, + 0x30, 0x0F, 0xC0, 0x0F, 0xE0, 0x18, 0x30, 0x30, 0x18, 0x60, 0x0C, 0x60, + 0x0C, 0xC0, 0x06, 0xC0, 0x06, 0xC0, 0x06, 0xC0, 0x06, 0xC0, 0x06, 0xC0, + 0x06, 0x60, 0x0C, 0x60, 0x0C, 0x30, 0x18, 0x18, 0x30, 0x07, 0xC0, 0x03, + 0xC0, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1F, 0xFF, 0x80, 0x61, 0xC0, 0xC1, + 0xC1, 0x81, 0x83, 0x03, 0x06, 0x06, 0x0C, 0x1C, 0x18, 0x70, 0x3F, 0x80, + 0x67, 0x00, 0xC7, 0x01, 0x8F, 0x03, 0x0F, 0x06, 0x0E, 0x0C, 0x0E, 0x7E, + 0x0F, 0x1F, 0x46, 0x19, 0x81, 0x30, 0x27, 0x02, 0xF0, 0x0F, 0x00, 0xF8, + 0x07, 0xC0, 0x38, 0x03, 0xC0, 0x34, 0x06, 0x80, 0xDC, 0x32, 0x7C, 0xFF, + 0xFF, 0x86, 0x0E, 0x0C, 0x1C, 0x18, 0x10, 0x30, 0x00, 0x60, 0x00, 0xC0, + 0x01, 0x80, 0x03, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, + 0x60, 0x00, 0xC0, 0x07, 0xE0, 0xFC, 0x1F, 0x30, 0x0E, 0x30, 0x04, 0x30, + 0x04, 0x30, 0x04, 0x30, 0x04, 0x30, 0x04, 0x30, 0x04, 0x30, 0x04, 0x30, + 0x04, 0x30, 0x04, 0x30, 0x04, 0x30, 0x04, 0x18, 0x08, 0x1C, 0x18, 0x07, + 0xE0, 0xFE, 0x0F, 0x9C, 0x03, 0x0E, 0x01, 0x83, 0x00, 0x81, 0xC0, 0x40, + 0x60, 0x40, 0x38, 0x20, 0x0C, 0x30, 0x07, 0x10, 0x01, 0x98, 0x00, 0xE8, + 0x00, 0x34, 0x00, 0x1E, 0x00, 0x06, 0x00, 0x03, 0x00, 0x01, 0x00, 0xFC, + 0xFC, 0x3D, 0xE1, 0xC0, 0x63, 0x83, 0x01, 0x86, 0x0E, 0x04, 0x1C, 0x18, + 0x10, 0x70, 0x70, 0x80, 0xC3, 0xC2, 0x03, 0x8B, 0x08, 0x06, 0x6E, 0x40, + 0x1D, 0x19, 0x00, 0x74, 0x78, 0x00, 0xE1, 0xE0, 0x03, 0x83, 0x80, 0x0E, + 0x0C, 0x00, 0x10, 0x10, 0x00, 0x40, 0x40, 0x7F, 0x1F, 0x9E, 0x03, 0x07, + 0x03, 0x01, 0xC3, 0x00, 0x71, 0x00, 0x19, 0x00, 0x0F, 0x00, 0x03, 0x80, + 0x01, 0xE0, 0x01, 0xB0, 0x01, 0x9C, 0x00, 0x87, 0x00, 0x81, 0xC0, 0x80, + 0xE0, 0xC0, 0x79, 0xF8, 0x7F, 0xFE, 0x1F, 0x78, 0x0C, 0x38, 0x08, 0x1C, + 0x18, 0x0E, 0x10, 0x06, 0x20, 0x07, 0x60, 0x03, 0xC0, 0x01, 0x80, 0x01, + 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x07, + 0xE0, 0x7F, 0xFB, 0x00, 0xC8, 0x07, 0x20, 0x38, 0x01, 0xC0, 0x07, 0x00, + 0x38, 0x01, 0xC0, 0x07, 0x00, 0x38, 0x01, 0xC0, 0x0E, 0x00, 0x38, 0x05, + 0xC0, 0x3E, 0x01, 0xBF, 0xFE, 0xFE, 0x31, 0x8C, 0x63, 0x18, 0xC6, 0x31, + 0x8C, 0x63, 0x18, 0xC6, 0x31, 0xF0, 0xC1, 0x81, 0x03, 0x06, 0x04, 0x0C, + 0x18, 0x10, 0x30, 0x60, 0x40, 0xC1, 0x81, 0x03, 0x06, 0xF8, 0xC6, 0x31, + 0x8C, 0x63, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0xC7, 0xF0, 0x0C, 0x07, + 0x01, 0x60, 0xD8, 0x23, 0x18, 0xC4, 0x1B, 0x06, 0x80, 0xC0, 0xFF, 0xF0, + 0xC7, 0x0C, 0x30, 0x3E, 0x31, 0x8C, 0x30, 0x0C, 0x03, 0x07, 0xC6, 0x33, + 0x0C, 0xC3, 0x31, 0xC7, 0xB8, 0x20, 0x38, 0x06, 0x01, 0x80, 0x60, 0x18, + 0x06, 0xF1, 0xC6, 0x61, 0xD8, 0x36, 0x0D, 0x83, 0x60, 0xD8, 0x26, 0x19, + 0x84, 0x3E, 0x00, 0x1E, 0x23, 0x63, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE1, + 0x72, 0x3C, 0x00, 0x80, 0xE0, 0x18, 0x06, 0x01, 0x80, 0x61, 0xD8, 0x8E, + 0x61, 0xB0, 0x6C, 0x1B, 0x06, 0xC1, 0xB0, 0x6E, 0x19, 0xCE, 0x3D, 0xC0, + 0x1E, 0x08, 0xE4, 0x1B, 0xFE, 0xC0, 0x30, 0x0C, 0x03, 0x81, 0x60, 0x9C, + 0x41, 0xE0, 0x0F, 0x08, 0xC4, 0x06, 0x03, 0x01, 0x81, 0xF0, 0x60, 0x30, + 0x18, 0x0C, 0x06, 0x03, 0x01, 0x80, 0xC0, 0x60, 0xFC, 0x00, 0x1F, 0x03, + 0x1F, 0x60, 0xC6, 0x0C, 0x60, 0xC3, 0x18, 0x1F, 0x02, 0x00, 0x40, 0x07, + 0xFC, 0x40, 0x24, 0x02, 0xC0, 0x2C, 0x04, 0xE0, 0x83, 0xF0, 0x30, 0x1E, + 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0D, 0xE1, 0xCE, 0x30, 0xC6, 0x18, + 0xC3, 0x18, 0x63, 0x0C, 0x61, 0x8C, 0x31, 0x86, 0x79, 0xE0, 0x31, 0x80, + 0x00, 0x09, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0xDF, 0x0C, 0x30, 0x00, 0x00, + 0x31, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xF2, 0xF0, + 0x20, 0x1C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0xFB, 0x08, 0x62, + 0x0C, 0x81, 0xE0, 0x3E, 0x06, 0xE0, 0xCE, 0x18, 0xC3, 0x0E, 0xF3, 0xE0, + 0x13, 0x8C, 0x63, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0xC6, 0xF8, 0xF7, + 0x8F, 0x0E, 0x3C, 0xE3, 0x0C, 0x18, 0xC3, 0x06, 0x30, 0xC1, 0x8C, 0x30, + 0x63, 0x0C, 0x18, 0xC3, 0x06, 0x30, 0xC1, 0x8C, 0x30, 0x67, 0x9E, 0x3C, + 0xF7, 0x87, 0x18, 0xC3, 0x18, 0x63, 0x0C, 0x61, 0x8C, 0x31, 0x86, 0x30, + 0xC6, 0x19, 0xE7, 0x80, 0x1E, 0x18, 0xE4, 0x1B, 0x03, 0xC0, 0xF0, 0x3C, + 0x0F, 0x03, 0x60, 0x9C, 0x41, 0xE0, 0x77, 0x87, 0x18, 0xC3, 0x98, 0x33, + 0x06, 0x60, 0xCC, 0x19, 0x83, 0x30, 0xC7, 0x10, 0xDC, 0x18, 0x03, 0x00, + 0x60, 0x0C, 0x07, 0xE0, 0x1E, 0x8C, 0xE6, 0x1B, 0x06, 0xC1, 0xB0, 0x6C, + 0x1B, 0x06, 0xE1, 0x98, 0xE3, 0xD8, 0x06, 0x01, 0x80, 0x60, 0x18, 0x1F, + 0x37, 0x7B, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x7C, 0x7B, + 0x0E, 0x1C, 0x1E, 0x0F, 0x07, 0xC3, 0x87, 0x8A, 0xE0, 0x21, 0x8F, 0x98, + 0x61, 0x86, 0x18, 0x61, 0x86, 0x19, 0x38, 0xE3, 0x98, 0x66, 0x19, 0x86, + 0x61, 0x98, 0x66, 0x19, 0x86, 0x61, 0x9C, 0xE3, 0xDC, 0xF8, 0xEE, 0x08, + 0xC1, 0x18, 0x41, 0x88, 0x32, 0x03, 0x40, 0x68, 0x06, 0x00, 0xC0, 0x10, + 0x00, 0xF3, 0xE7, 0x61, 0x83, 0x70, 0xC2, 0x30, 0xC2, 0x30, 0xC4, 0x19, + 0x64, 0x19, 0x68, 0x0E, 0x38, 0x0E, 0x38, 0x0C, 0x30, 0x04, 0x10, 0xFB, + 0xC6, 0x30, 0x64, 0x0F, 0x00, 0xC0, 0x0C, 0x03, 0xC0, 0x98, 0x21, 0x8C, + 0x3B, 0xCF, 0x80, 0xF8, 0xEE, 0x08, 0xC1, 0x18, 0x41, 0x88, 0x31, 0x03, + 0x40, 0x68, 0x06, 0x00, 0xC0, 0x08, 0x02, 0x00, 0x40, 0x10, 0x1E, 0x03, + 0x80, 0x7F, 0x90, 0xE0, 0x30, 0x18, 0x0E, 0x03, 0x01, 0xC0, 0xE0, 0x30, + 0x5C, 0x3F, 0xF8, 0x19, 0x8C, 0x63, 0x18, 0xC6, 0x31, 0xB0, 0x63, 0x18, + 0xC6, 0x31, 0x8C, 0x61, 0x80, 0xFF, 0xFF, 0x80, 0xC3, 0x18, 0xC6, 0x31, + 0x8C, 0x63, 0x06, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0xCC, 0x00, 0x38, 0x06, + 0x62, 0x41, 0xC0}; + +const GFXglyph FreeSerif12pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 6, 0, 1}, // 0x20 ' ' + {0, 2, 16, 8, 3, -15}, // 0x21 '!' + {4, 6, 6, 10, 1, -15}, // 0x22 '"' + {9, 12, 16, 12, 0, -15}, // 0x23 '#' + {33, 10, 18, 12, 1, -16}, // 0x24 '$' + {56, 18, 17, 20, 1, -16}, // 0x25 '%' + {95, 17, 16, 19, 1, -15}, // 0x26 '&' + {129, 2, 6, 5, 1, -15}, // 0x27 ''' + {131, 6, 20, 8, 1, -15}, // 0x28 '(' + {146, 6, 20, 8, 1, -15}, // 0x29 ')' + {161, 8, 10, 12, 3, -14}, // 0x2A '*' + {171, 11, 11, 14, 1, -10}, // 0x2B '+' + {187, 3, 6, 6, 2, -2}, // 0x2C ',' + {190, 6, 1, 8, 1, -5}, // 0x2D '-' + {191, 2, 3, 6, 2, -2}, // 0x2E '.' + {192, 7, 17, 7, 0, -16}, // 0x2F '/' + {207, 10, 17, 12, 1, -16}, // 0x30 '0' + {229, 6, 17, 12, 3, -16}, // 0x31 '1' + {242, 10, 15, 12, 1, -14}, // 0x32 '2' + {261, 10, 16, 12, 1, -15}, // 0x33 '3' + {281, 10, 16, 12, 1, -15}, // 0x34 '4' + {301, 10, 17, 12, 1, -16}, // 0x35 '5' + {323, 10, 17, 12, 1, -16}, // 0x36 '6' + {345, 10, 16, 12, 0, -15}, // 0x37 '7' + {365, 10, 17, 12, 1, -16}, // 0x38 '8' + {387, 10, 18, 12, 1, -16}, // 0x39 '9' + {410, 2, 12, 6, 2, -11}, // 0x3A ':' + {413, 4, 15, 6, 2, -11}, // 0x3B ';' + {421, 12, 13, 14, 1, -12}, // 0x3C '<' + {441, 12, 6, 14, 1, -8}, // 0x3D '=' + {450, 12, 13, 14, 1, -11}, // 0x3E '>' + {470, 8, 17, 11, 2, -16}, // 0x3F '?' + {487, 17, 16, 21, 2, -15}, // 0x40 '@' + {521, 17, 16, 17, 0, -15}, // 0x41 'A' + {555, 12, 16, 15, 1, -15}, // 0x42 'B' + {579, 15, 16, 16, 1, -15}, // 0x43 'C' + {609, 16, 16, 17, 0, -15}, // 0x44 'D' + {641, 14, 16, 15, 0, -15}, // 0x45 'E' + {669, 14, 16, 14, 0, -15}, // 0x46 'F' + {697, 16, 16, 17, 1, -15}, // 0x47 'G' + {729, 16, 16, 17, 0, -15}, // 0x48 'H' + {761, 6, 16, 8, 1, -15}, // 0x49 'I' + {773, 8, 16, 9, 0, -15}, // 0x4A 'J' + {789, 16, 16, 17, 1, -15}, // 0x4B 'K' + {821, 15, 16, 15, 0, -15}, // 0x4C 'L' + {851, 19, 16, 21, 1, -15}, // 0x4D 'M' + {889, 16, 16, 17, 1, -15}, // 0x4E 'N' + {921, 15, 16, 17, 1, -15}, // 0x4F 'O' + {951, 12, 16, 14, 0, -15}, // 0x50 'P' + {975, 16, 20, 17, 1, -15}, // 0x51 'Q' + {1015, 15, 16, 16, 0, -15}, // 0x52 'R' + {1045, 11, 16, 13, 0, -15}, // 0x53 'S' + {1067, 15, 16, 15, 0, -15}, // 0x54 'T' + {1097, 16, 16, 17, 1, -15}, // 0x55 'U' + {1129, 17, 16, 17, 0, -15}, // 0x56 'V' + {1163, 22, 16, 23, 0, -15}, // 0x57 'W' + {1207, 17, 16, 17, 0, -15}, // 0x58 'X' + {1241, 16, 16, 17, 0, -15}, // 0x59 'Y' + {1273, 14, 16, 15, 1, -15}, // 0x5A 'Z' + {1301, 5, 20, 8, 2, -15}, // 0x5B '[' + {1314, 7, 17, 7, 0, -16}, // 0x5C '\' + {1329, 5, 20, 8, 1, -15}, // 0x5D ']' + {1342, 10, 9, 11, 1, -15}, // 0x5E '^' + {1354, 12, 1, 12, 0, 3}, // 0x5F '_' + {1356, 5, 4, 6, 0, -15}, // 0x60 '`' + {1359, 10, 11, 10, 1, -10}, // 0x61 'a' + {1373, 10, 17, 12, 1, -16}, // 0x62 'b' + {1395, 8, 11, 11, 1, -10}, // 0x63 'c' + {1406, 10, 17, 12, 1, -16}, // 0x64 'd' + {1428, 10, 11, 11, 1, -10}, // 0x65 'e' + {1442, 9, 17, 9, 0, -16}, // 0x66 'f' + {1462, 12, 16, 11, 0, -10}, // 0x67 'g' + {1486, 11, 17, 12, 0, -16}, // 0x68 'h' + {1510, 5, 16, 7, 0, -15}, // 0x69 'i' + {1520, 6, 21, 8, 0, -15}, // 0x6A 'j' + {1536, 11, 17, 12, 1, -16}, // 0x6B 'k' + {1560, 5, 17, 6, 0, -16}, // 0x6C 'l' + {1571, 18, 11, 19, 0, -10}, // 0x6D 'm' + {1596, 11, 11, 12, 0, -10}, // 0x6E 'n' + {1612, 10, 11, 12, 1, -10}, // 0x6F 'o' + {1626, 11, 16, 12, 0, -10}, // 0x70 'p' + {1648, 10, 16, 12, 1, -10}, // 0x71 'q' + {1668, 8, 11, 8, 0, -10}, // 0x72 'r' + {1679, 7, 11, 9, 1, -10}, // 0x73 's' + {1689, 6, 13, 7, 1, -12}, // 0x74 't' + {1699, 10, 11, 12, 1, -10}, // 0x75 'u' + {1713, 11, 11, 11, 0, -10}, // 0x76 'v' + {1729, 16, 11, 16, 0, -10}, // 0x77 'w' + {1751, 11, 11, 12, 0, -10}, // 0x78 'x' + {1767, 11, 16, 11, 0, -10}, // 0x79 'y' + {1789, 10, 11, 10, 0, -10}, // 0x7A 'z' + {1803, 5, 21, 12, 2, -16}, // 0x7B '{' + {1817, 1, 17, 5, 2, -16}, // 0x7C '|' + {1820, 5, 21, 12, 5, -15}, // 0x7D '}' + {1834, 12, 3, 12, 0, -6}}; // 0x7E '~' + +const GFXfont FreeSerif12pt7b PROGMEM = {(uint8_t *)FreeSerif12pt7bBitmaps, + (GFXglyph *)FreeSerif12pt7bGlyphs, + 0x20, 0x7E, 29}; + +// Approx. 2511 bytes diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerif18pt7b.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerif18pt7b.h new file mode 100644 index 0000000..3fd1ba5 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerif18pt7b.h @@ -0,0 +1,431 @@ +#pragma once +#include + +const uint8_t FreeSerif18pt7bBitmaps[] PROGMEM = { + 0x6F, 0xFF, 0xFF, 0xFE, 0x66, 0x66, 0x66, 0x64, 0x40, 0x00, 0x6F, 0xF6, + 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0x46, 0x42, 0x42, 0x42, 0x03, 0x06, 0x01, + 0x83, 0x00, 0xC1, 0x80, 0x61, 0xC0, 0x30, 0xC0, 0x38, 0x60, 0x18, 0x30, + 0xFF, 0xFF, 0x7F, 0xFF, 0x83, 0x06, 0x01, 0x86, 0x00, 0xC3, 0x00, 0xC1, + 0x87, 0xFF, 0xFF, 0xFF, 0xFE, 0x18, 0x30, 0x0C, 0x18, 0x06, 0x18, 0x06, + 0x0C, 0x03, 0x06, 0x01, 0x83, 0x00, 0xC1, 0x80, 0x60, 0xC0, 0x02, 0x00, + 0x10, 0x03, 0xE0, 0x64, 0xE6, 0x23, 0x61, 0x1B, 0x08, 0x58, 0x42, 0xE2, + 0x03, 0x90, 0x1F, 0x80, 0x7E, 0x00, 0xFC, 0x01, 0xF0, 0x0F, 0xC0, 0x4E, + 0x02, 0x38, 0x10, 0xE0, 0x87, 0x04, 0x3C, 0x21, 0xE1, 0x1B, 0xC9, 0xCF, + 0xFC, 0x1F, 0x80, 0x10, 0x00, 0x80, 0x07, 0x80, 0x20, 0x0F, 0xF0, 0x70, + 0x0F, 0x07, 0xD0, 0x0F, 0x02, 0x18, 0x07, 0x01, 0x18, 0x07, 0x00, 0x8C, + 0x03, 0x80, 0x4C, 0x01, 0x80, 0x44, 0x00, 0xC0, 0x26, 0x00, 0x60, 0x22, + 0x0F, 0x30, 0x33, 0x1F, 0xCC, 0x73, 0x1E, 0x37, 0xF1, 0x8E, 0x19, 0xE1, + 0x8E, 0x04, 0x00, 0x86, 0x02, 0x00, 0xC7, 0x01, 0x00, 0xC3, 0x80, 0x80, + 0x61, 0x80, 0x80, 0x60, 0xC0, 0x40, 0x30, 0x60, 0x40, 0x30, 0x38, 0xE0, + 0x30, 0x0F, 0xE0, 0x18, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x00, 0x7E, 0x00, + 0x00, 0x61, 0x80, 0x00, 0x60, 0x60, 0x00, 0x30, 0x30, 0x00, 0x18, 0x18, + 0x00, 0x0C, 0x0C, 0x00, 0x06, 0x0C, 0x00, 0x03, 0x8E, 0x00, 0x01, 0xCE, + 0x00, 0x00, 0x7C, 0x3F, 0xC0, 0x38, 0x07, 0x80, 0x3E, 0x03, 0x80, 0x77, + 0x01, 0x80, 0x73, 0xC0, 0x80, 0xF0, 0xF0, 0xC0, 0x70, 0x7C, 0xC0, 0x78, + 0x1E, 0x40, 0x3C, 0x07, 0xC0, 0x1E, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x0F, + 0xC0, 0xFF, 0x0D, 0xF0, 0xC7, 0xFC, 0x7F, 0xC1, 0xFC, 0x1F, 0x80, 0x3C, + 0x00, 0xFF, 0xFE, 0x92, 0x40, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0xC0, + 0xC0, 0x60, 0x70, 0x30, 0x18, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, + 0x70, 0x38, 0x0C, 0x06, 0x03, 0x80, 0xC0, 0x60, 0x18, 0x0C, 0x03, 0x00, + 0xC0, 0x30, 0x0C, 0x80, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x60, 0x18, 0x0C, + 0x07, 0x01, 0x80, 0xC0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, + 0xE0, 0x60, 0x30, 0x38, 0x18, 0x0C, 0x0C, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x00, 0x0C, 0x00, 0xC0, 0x0C, 0x0C, 0x46, 0xE4, 0xF7, 0x5E, 0x1F, 0x00, + 0xC0, 0x17, 0x8E, 0x4E, 0xE4, 0xFC, 0xC6, 0x0C, 0x00, 0xC0, 0x01, 0x80, + 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, + 0x01, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, + 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x6F, 0xFF, + 0x11, 0x24, 0x80, 0xFF, 0xFF, 0x6F, 0xF6, 0x00, 0xC0, 0x60, 0x18, 0x06, + 0x03, 0x80, 0xC0, 0x30, 0x1C, 0x06, 0x01, 0x80, 0xE0, 0x30, 0x0C, 0x07, + 0x01, 0x80, 0x60, 0x38, 0x0C, 0x03, 0x01, 0xC0, 0x60, 0x18, 0x0E, 0x03, + 0x00, 0x03, 0xE0, 0x0E, 0x70, 0x1C, 0x38, 0x38, 0x1C, 0x38, 0x1C, 0x78, + 0x1E, 0x70, 0x0E, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, + 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0x70, 0x0E, 0x70, + 0x0E, 0x78, 0x1E, 0x38, 0x1C, 0x38, 0x1C, 0x1C, 0x38, 0x0C, 0x30, 0x03, + 0xC0, 0x06, 0x03, 0x83, 0xE3, 0x38, 0x0E, 0x03, 0x80, 0xE0, 0x38, 0x0E, + 0x03, 0x80, 0xE0, 0x38, 0x0E, 0x03, 0x80, 0xE0, 0x38, 0x0E, 0x03, 0x80, + 0xE0, 0x38, 0x0E, 0x03, 0x81, 0xE1, 0xFF, 0x07, 0xC0, 0x1F, 0xF0, 0x3F, + 0xF8, 0x70, 0xF8, 0x60, 0x3C, 0xC0, 0x3C, 0x80, 0x1C, 0x00, 0x1C, 0x00, + 0x1C, 0x00, 0x18, 0x00, 0x18, 0x00, 0x30, 0x00, 0x30, 0x00, 0x60, 0x00, + 0xC0, 0x00, 0x80, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x01, 0x10, + 0x02, 0x3F, 0xFE, 0x7F, 0xFC, 0xFF, 0xFC, 0x0F, 0xC0, 0xFF, 0x0C, 0x3C, + 0x80, 0xE4, 0x03, 0x00, 0x18, 0x00, 0xC0, 0x04, 0x00, 0x40, 0x04, 0x00, + 0xF8, 0x1F, 0xE0, 0x0F, 0x00, 0x1C, 0x00, 0xE0, 0x03, 0x00, 0x18, 0x00, + 0xC0, 0x06, 0x00, 0x60, 0x03, 0x78, 0x73, 0xFF, 0x0F, 0xC0, 0x00, 0x30, + 0x00, 0x30, 0x00, 0x70, 0x00, 0xF0, 0x00, 0xB0, 0x01, 0x30, 0x03, 0x30, + 0x06, 0x30, 0x04, 0x30, 0x08, 0x30, 0x18, 0x30, 0x10, 0x30, 0x20, 0x30, + 0x60, 0x30, 0xC0, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x30, 0x00, 0x30, + 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x7F, 0xC3, + 0xFE, 0x1F, 0xE1, 0x80, 0x08, 0x00, 0xC0, 0x07, 0xC0, 0x7F, 0x81, 0xFF, + 0x00, 0xFC, 0x01, 0xE0, 0x07, 0x80, 0x1C, 0x00, 0x60, 0x03, 0x00, 0x18, + 0x00, 0xC0, 0x06, 0x00, 0x60, 0x07, 0x78, 0x73, 0xFF, 0x0F, 0xC0, 0x00, + 0x0E, 0x00, 0xF8, 0x03, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x3C, + 0x00, 0x7C, 0x00, 0x79, 0xF0, 0x7F, 0xFC, 0xF8, 0x3C, 0xF0, 0x1E, 0xF0, + 0x1F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0x70, 0x0F, 0x78, + 0x0F, 0x78, 0x0E, 0x3C, 0x1E, 0x1E, 0x3C, 0x0F, 0xF8, 0x07, 0xE0, 0x3F, + 0xFD, 0xFF, 0xF7, 0xFF, 0xF0, 0x06, 0x80, 0x18, 0x00, 0x60, 0x03, 0x00, + 0x0C, 0x00, 0x30, 0x01, 0x80, 0x06, 0x00, 0x18, 0x00, 0xE0, 0x03, 0x00, + 0x0C, 0x00, 0x70, 0x01, 0x80, 0x06, 0x00, 0x38, 0x00, 0xC0, 0x03, 0x00, + 0x1C, 0x00, 0x60, 0x00, 0x0F, 0x83, 0xFC, 0x70, 0xE6, 0x07, 0xC0, 0x3C, + 0x03, 0xC0, 0x3E, 0x03, 0x70, 0x67, 0x8C, 0x3D, 0x81, 0xF0, 0x0F, 0x81, + 0x7C, 0x21, 0xE6, 0x0E, 0xC0, 0x7C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x36, + 0x06, 0x70, 0xE3, 0xFC, 0x0F, 0x80, 0x07, 0xC0, 0x1F, 0xF0, 0x3C, 0x78, + 0x38, 0x3C, 0x78, 0x1E, 0x70, 0x1E, 0xF0, 0x0E, 0xF0, 0x0F, 0xF0, 0x0F, + 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF8, 0x0F, 0x78, 0x0F, 0x3C, 0x3F, + 0x1F, 0xEE, 0x0F, 0x9E, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x38, 0x00, 0x78, + 0x00, 0xF0, 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x70, 0x00, 0x6F, 0xF6, + 0x00, 0x00, 0x00, 0x00, 0x06, 0xFF, 0x60, 0x67, 0xBC, 0xC0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x19, 0xEF, 0x78, 0x42, 0x22, 0x20, 0x00, 0x00, 0xC0, + 0x00, 0xF0, 0x01, 0xF8, 0x01, 0xF8, 0x01, 0xF8, 0x01, 0xF0, 0x03, 0xF0, + 0x03, 0xF0, 0x00, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, + 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x03, 0xC0, + 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x80, + 0x00, 0x3C, 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x07, 0xC0, 0x00, 0x7C, + 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0x07, 0xC0, 0x00, 0xF0, 0x00, 0xFC, + 0x00, 0xFC, 0x00, 0xF8, 0x01, 0xF8, 0x01, 0xF8, 0x01, 0xF8, 0x00, 0xF0, + 0x00, 0x30, 0x00, 0x00, 0x1F, 0x81, 0xFF, 0x18, 0x7D, 0x81, 0xEC, 0x07, + 0xF0, 0x3F, 0x81, 0xE0, 0x0F, 0x00, 0x70, 0x03, 0x80, 0x38, 0x01, 0x80, + 0x08, 0x00, 0xC0, 0x04, 0x00, 0x20, 0x02, 0x00, 0x10, 0x00, 0x80, 0x00, + 0x00, 0x00, 0x03, 0x00, 0x3C, 0x01, 0xE0, 0x07, 0x00, 0x00, 0x7F, 0x00, + 0x01, 0xFF, 0xC0, 0x07, 0x80, 0xF0, 0x0F, 0x00, 0x38, 0x1C, 0x00, 0x1C, + 0x38, 0x00, 0x0C, 0x38, 0x00, 0x06, 0x70, 0x1E, 0x02, 0x70, 0x3F, 0xE3, + 0xF0, 0x71, 0xE1, 0xE0, 0xE0, 0xC1, 0xE0, 0xC0, 0xC1, 0xE0, 0xC1, 0xC1, + 0xE1, 0x81, 0xC1, 0xE1, 0x81, 0x83, 0xE1, 0x83, 0x82, 0xE1, 0x83, 0x86, + 0x71, 0xC7, 0x8C, 0x70, 0xF9, 0xF8, 0x38, 0xF0, 0xF0, 0x3C, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x07, 0x80, 0x70, 0x03, 0xFF, 0xE0, 0x00, 0x7F, 0x00, + 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x38, 0x00, 0x00, 0x38, 0x00, + 0x00, 0x7C, 0x00, 0x00, 0x5C, 0x00, 0x00, 0xDE, 0x00, 0x00, 0x8E, 0x00, + 0x01, 0x8F, 0x00, 0x01, 0x87, 0x00, 0x03, 0x07, 0x80, 0x03, 0x03, 0x80, + 0x02, 0x03, 0xC0, 0x06, 0x03, 0xC0, 0x07, 0xFF, 0xC0, 0x0F, 0xFF, 0xE0, + 0x0C, 0x01, 0xE0, 0x18, 0x00, 0xF0, 0x18, 0x00, 0xF0, 0x30, 0x00, 0x78, + 0x30, 0x00, 0x78, 0x70, 0x00, 0x7C, 0xFC, 0x01, 0xFF, 0xFF, 0xFC, 0x03, + 0xFF, 0xF8, 0x1E, 0x0F, 0xC1, 0xE0, 0x3C, 0x1E, 0x01, 0xE1, 0xE0, 0x1E, + 0x1E, 0x01, 0xE1, 0xE0, 0x1E, 0x1E, 0x03, 0xC1, 0xE0, 0x78, 0x1F, 0xFE, + 0x01, 0xFF, 0xF0, 0x1E, 0x07, 0xC1, 0xE0, 0x1E, 0x1E, 0x00, 0xF1, 0xE0, + 0x0F, 0x1E, 0x00, 0xF1, 0xE0, 0x0F, 0x1E, 0x00, 0xF1, 0xE0, 0x1E, 0x1E, + 0x07, 0xE3, 0xFF, 0xF8, 0xFF, 0xFE, 0x00, 0x00, 0xFE, 0x08, 0x0F, 0xFF, + 0x60, 0xFC, 0x1F, 0x87, 0xC0, 0x1E, 0x3C, 0x00, 0x38, 0xF0, 0x00, 0x67, + 0x80, 0x01, 0x9E, 0x00, 0x02, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, + 0x00, 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, + 0x3C, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x0F, + 0x00, 0x02, 0x1F, 0x00, 0x38, 0x3F, 0x03, 0x80, 0x7F, 0xFC, 0x00, 0x3F, + 0x80, 0xFF, 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0x78, 0x3F, 0x80, 0xF0, 0x0F, + 0x81, 0xE0, 0x0F, 0x83, 0xC0, 0x0F, 0x07, 0x80, 0x0F, 0x0F, 0x00, 0x1E, + 0x1E, 0x00, 0x1E, 0x3C, 0x00, 0x3C, 0x78, 0x00, 0x78, 0xF0, 0x00, 0xF1, + 0xE0, 0x01, 0xE3, 0xC0, 0x03, 0xC7, 0x80, 0x07, 0x8F, 0x00, 0x1E, 0x1E, + 0x00, 0x3C, 0x3C, 0x00, 0xF0, 0x78, 0x01, 0xE0, 0xF0, 0x0F, 0x81, 0xE0, + 0x7E, 0x07, 0xFF, 0xF0, 0x3F, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x87, 0xFF, + 0xF8, 0x3C, 0x01, 0x83, 0xC0, 0x08, 0x3C, 0x00, 0x83, 0xC0, 0x00, 0x3C, + 0x00, 0x03, 0xC0, 0x00, 0x3C, 0x02, 0x03, 0xC0, 0x60, 0x3F, 0xFE, 0x03, + 0xFF, 0xE0, 0x3C, 0x06, 0x03, 0xC0, 0x20, 0x3C, 0x00, 0x03, 0xC0, 0x00, + 0x3C, 0x00, 0x03, 0xC0, 0x01, 0x3C, 0x00, 0x23, 0xC0, 0x06, 0x3C, 0x01, + 0xE7, 0xFF, 0xFE, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xBF, 0xFF, 0xCF, 0x00, + 0x67, 0x80, 0x13, 0xC0, 0x09, 0xE0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3C, + 0x02, 0x1E, 0x03, 0x0F, 0xFF, 0x87, 0xFF, 0xC3, 0xC0, 0x61, 0xE0, 0x10, + 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x07, 0x80, + 0x03, 0xC0, 0x03, 0xF0, 0x03, 0xFC, 0x00, 0x00, 0xFE, 0x04, 0x07, 0xFF, + 0xB8, 0x1F, 0x03, 0xF0, 0xF8, 0x01, 0xE3, 0xE0, 0x01, 0xC7, 0x80, 0x01, + 0x9E, 0x00, 0x01, 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x03, + 0xC0, 0x00, 0x07, 0x80, 0x07, 0xFF, 0x00, 0x07, 0xDE, 0x00, 0x07, 0xBC, + 0x00, 0x0F, 0x78, 0x00, 0x1E, 0x78, 0x00, 0x3C, 0xF0, 0x00, 0x78, 0xF0, + 0x00, 0xF1, 0xF0, 0x01, 0xE1, 0xF0, 0x03, 0xC1, 0xF8, 0x1F, 0x00, 0xFF, + 0xFC, 0x00, 0x3F, 0x80, 0xFF, 0x03, 0xFD, 0xF8, 0x07, 0xE3, 0xC0, 0x0F, + 0x0F, 0x00, 0x3C, 0x3C, 0x00, 0xF0, 0xF0, 0x03, 0xC3, 0xC0, 0x0F, 0x0F, + 0x00, 0x3C, 0x3C, 0x00, 0xF0, 0xF0, 0x03, 0xC3, 0xFF, 0xFF, 0x0F, 0xFF, + 0xFC, 0x3C, 0x00, 0xF0, 0xF0, 0x03, 0xC3, 0xC0, 0x0F, 0x0F, 0x00, 0x3C, + 0x3C, 0x00, 0xF0, 0xF0, 0x03, 0xC3, 0xC0, 0x0F, 0x0F, 0x00, 0x3C, 0x3C, + 0x00, 0xF1, 0xF8, 0x07, 0xEF, 0xF0, 0x3F, 0xC0, 0xFF, 0xBF, 0x0F, 0x07, + 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xE0, + 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, 0xC3, 0xF3, 0xFE, 0x0F, 0xF0, + 0x7E, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, + 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, + 0x3C, 0x03, 0xC6, 0x38, 0xF3, 0x8F, 0xF0, 0x7C, 0x00, 0xFF, 0x07, 0xFC, + 0xFC, 0x03, 0xC0, 0xF0, 0x07, 0x01, 0xE0, 0x1C, 0x03, 0xC0, 0x60, 0x07, + 0x81, 0x80, 0x0F, 0x06, 0x00, 0x1E, 0x18, 0x00, 0x3C, 0x60, 0x00, 0x79, + 0x80, 0x00, 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x03, 0xDF, 0x00, 0x07, 0x8F, + 0x00, 0x0F, 0x0F, 0x00, 0x1E, 0x0F, 0x00, 0x3C, 0x0F, 0x00, 0x78, 0x0F, + 0x00, 0xF0, 0x1F, 0x01, 0xE0, 0x1F, 0x03, 0xC0, 0x1F, 0x0F, 0xC0, 0x3F, + 0x3F, 0xC1, 0xFF, 0x80, 0xFF, 0x00, 0x0F, 0xC0, 0x00, 0xF0, 0x00, 0x1E, + 0x00, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x3C, + 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0xC0, 0x00, 0x78, + 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x07, 0x80, 0x04, 0xF0, + 0x01, 0x1E, 0x00, 0x63, 0xC0, 0x3C, 0xFF, 0xFF, 0xBF, 0xFF, 0xE0, 0xFC, + 0x00, 0x03, 0xF9, 0xF0, 0x00, 0x1F, 0x87, 0x80, 0x01, 0xF8, 0x3E, 0x00, + 0x0F, 0xC1, 0xF0, 0x00, 0x5E, 0x0B, 0xC0, 0x06, 0xF0, 0x5E, 0x00, 0x37, + 0x82, 0x78, 0x03, 0x3C, 0x13, 0xC0, 0x19, 0xE0, 0x8F, 0x01, 0x8F, 0x04, + 0x78, 0x0C, 0x78, 0x21, 0xE0, 0xC3, 0xC1, 0x0F, 0x06, 0x1E, 0x08, 0x3C, + 0x60, 0xF0, 0x41, 0xE3, 0x07, 0x82, 0x07, 0xB0, 0x3C, 0x10, 0x3D, 0x81, + 0xE0, 0x81, 0xF8, 0x0F, 0x04, 0x07, 0xC0, 0x78, 0x20, 0x3C, 0x03, 0xC1, + 0x00, 0xE0, 0x1E, 0x1C, 0x06, 0x01, 0xFB, 0xF8, 0x10, 0x1F, 0xE0, 0xFC, + 0x00, 0xFE, 0x78, 0x00, 0x70, 0x78, 0x00, 0x40, 0xF8, 0x00, 0x81, 0xF8, + 0x01, 0x02, 0xF8, 0x02, 0x04, 0xF8, 0x04, 0x08, 0xF0, 0x08, 0x11, 0xF0, + 0x10, 0x21, 0xF0, 0x20, 0x41, 0xF0, 0x40, 0x81, 0xF0, 0x81, 0x01, 0xF1, + 0x02, 0x01, 0xE2, 0x04, 0x03, 0xE4, 0x08, 0x03, 0xE8, 0x10, 0x03, 0xF0, + 0x20, 0x03, 0xE0, 0x40, 0x03, 0xC0, 0x80, 0x03, 0x81, 0x00, 0x07, 0x07, + 0x00, 0x06, 0x3F, 0x80, 0x04, 0x00, 0x00, 0xFE, 0x00, 0x07, 0xFF, 0x00, + 0x3E, 0x0F, 0x80, 0xF0, 0x07, 0x83, 0xC0, 0x07, 0x87, 0x80, 0x07, 0x1E, + 0x00, 0x0F, 0x3C, 0x00, 0x1E, 0xF0, 0x00, 0x1F, 0xE0, 0x00, 0x3F, 0xC0, + 0x00, 0x7F, 0x80, 0x00, 0xFF, 0x00, 0x01, 0xFE, 0x00, 0x03, 0xFC, 0x00, + 0x07, 0xF8, 0x00, 0x0F, 0x78, 0x00, 0x3C, 0xF0, 0x00, 0x78, 0xE0, 0x01, + 0xE1, 0xE0, 0x03, 0xC1, 0xE0, 0x0F, 0x01, 0xF0, 0x7C, 0x00, 0xFF, 0xE0, + 0x00, 0x7F, 0x00, 0xFF, 0xF8, 0x1F, 0xFF, 0x83, 0xC1, 0xF0, 0xF0, 0x1E, + 0x3C, 0x07, 0xCF, 0x00, 0xF3, 0xC0, 0x3C, 0xF0, 0x0F, 0x3C, 0x03, 0xCF, + 0x01, 0xF3, 0xC0, 0x78, 0xF0, 0x7C, 0x3F, 0xFE, 0x0F, 0xFE, 0x03, 0xC0, + 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, + 0x3C, 0x00, 0x1F, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x07, 0xFF, + 0x00, 0x3E, 0x0F, 0x80, 0xF0, 0x07, 0x83, 0xC0, 0x07, 0x87, 0x80, 0x0F, + 0x1E, 0x00, 0x0F, 0x3C, 0x00, 0x1E, 0xF0, 0x00, 0x1D, 0xE0, 0x00, 0x3F, + 0xC0, 0x00, 0x7F, 0x80, 0x00, 0xFF, 0x00, 0x01, 0xFE, 0x00, 0x03, 0xFC, + 0x00, 0x07, 0xF8, 0x00, 0x0F, 0x70, 0x00, 0x1C, 0xF0, 0x00, 0x79, 0xE0, + 0x00, 0xF1, 0xE0, 0x03, 0xC1, 0xC0, 0x07, 0x01, 0xC0, 0x1C, 0x01, 0xE0, + 0xF0, 0x00, 0x7F, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7C, + 0x00, 0x00, 0x7E, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x0F, 0xC0, 0xFF, 0xF0, + 0x03, 0xFF, 0xF0, 0x0F, 0x07, 0xC0, 0x78, 0x1E, 0x03, 0xC0, 0x78, 0x1E, + 0x03, 0xC0, 0xF0, 0x1E, 0x07, 0x80, 0xF0, 0x3C, 0x07, 0x81, 0xE0, 0x78, + 0x0F, 0x0F, 0x80, 0x7F, 0xF8, 0x03, 0xFE, 0x00, 0x1E, 0x78, 0x00, 0xF1, + 0xE0, 0x07, 0x87, 0x80, 0x3C, 0x3C, 0x01, 0xE0, 0xF0, 0x0F, 0x03, 0xC0, + 0x78, 0x0F, 0x03, 0xC0, 0x7C, 0x3F, 0x01, 0xF3, 0xFC, 0x07, 0xE0, 0x07, + 0x84, 0x1F, 0xFC, 0x3C, 0x3E, 0x30, 0x0E, 0x70, 0x06, 0x70, 0x06, 0x70, + 0x02, 0x78, 0x00, 0x7C, 0x00, 0x3F, 0x00, 0x1F, 0xC0, 0x0F, 0xE0, 0x03, + 0xF8, 0x00, 0xFC, 0x00, 0x3E, 0x00, 0x1F, 0x80, 0x0F, 0x80, 0x0F, 0xC0, + 0x0F, 0xE0, 0x0F, 0x70, 0x1E, 0x78, 0x3C, 0x4F, 0xF8, 0x43, 0xF0, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xF0, 0x7C, 0x0F, 0x03, 0x80, 0xF0, 0x10, + 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, + 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, + 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, + 0x00, 0x00, 0xF0, 0x00, 0x1F, 0x80, 0x03, 0xFC, 0x00, 0xFF, 0x01, 0xFD, + 0xF8, 0x01, 0xC3, 0xC0, 0x02, 0x0F, 0x00, 0x08, 0x3C, 0x00, 0x20, 0xF0, + 0x00, 0x83, 0xC0, 0x02, 0x0F, 0x00, 0x08, 0x3C, 0x00, 0x20, 0xF0, 0x00, + 0x83, 0xC0, 0x02, 0x0F, 0x00, 0x08, 0x3C, 0x00, 0x20, 0xF0, 0x00, 0x83, + 0xC0, 0x02, 0x0F, 0x00, 0x08, 0x3C, 0x00, 0x20, 0xF0, 0x00, 0x81, 0xE0, + 0x04, 0x07, 0x80, 0x30, 0x0F, 0x81, 0x80, 0x1F, 0xFC, 0x00, 0x1F, 0xC0, + 0x00, 0xFF, 0xC0, 0x7F, 0x3E, 0x00, 0x1E, 0x1E, 0x00, 0x0C, 0x0E, 0x00, + 0x18, 0x0F, 0x00, 0x18, 0x07, 0x00, 0x10, 0x07, 0x80, 0x30, 0x07, 0x80, + 0x30, 0x03, 0xC0, 0x60, 0x03, 0xC0, 0x60, 0x01, 0xE0, 0x40, 0x01, 0xE0, + 0xC0, 0x00, 0xF0, 0xC0, 0x00, 0xF1, 0x80, 0x00, 0x71, 0x80, 0x00, 0x7B, + 0x00, 0x00, 0x3B, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x1E, + 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x08, 0x00, 0xFF, 0x9F, + 0xF0, 0x3F, 0x9F, 0x03, 0xE0, 0x07, 0x07, 0x80, 0xF0, 0x03, 0x03, 0xC0, + 0x78, 0x01, 0x80, 0xE0, 0x1E, 0x00, 0x80, 0x78, 0x0F, 0x00, 0xC0, 0x1C, + 0x03, 0x80, 0x60, 0x0F, 0x01, 0xE0, 0x20, 0x07, 0x81, 0xF0, 0x30, 0x01, + 0xC0, 0xBC, 0x18, 0x00, 0xF0, 0xDE, 0x08, 0x00, 0x78, 0x67, 0x0C, 0x00, + 0x1E, 0x23, 0xC4, 0x00, 0x0F, 0x31, 0xE6, 0x00, 0x03, 0x90, 0x7B, 0x00, + 0x01, 0xF8, 0x3D, 0x00, 0x00, 0xFC, 0x0F, 0x80, 0x00, 0x3C, 0x07, 0xC0, + 0x00, 0x1E, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0xE0, 0x00, 0x03, 0x00, 0x70, + 0x00, 0x01, 0x80, 0x10, 0x00, 0x00, 0x80, 0x08, 0x00, 0x7F, 0xE0, 0xFF, + 0x0F, 0xC0, 0x1E, 0x03, 0xE0, 0x0E, 0x00, 0xF0, 0x06, 0x00, 0x3C, 0x06, + 0x00, 0x0F, 0x06, 0x00, 0x07, 0x86, 0x00, 0x01, 0xE6, 0x00, 0x00, 0x7B, + 0x00, 0x00, 0x3F, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x03, + 0xF0, 0x00, 0x03, 0x78, 0x00, 0x01, 0x9E, 0x00, 0x01, 0x87, 0x80, 0x01, + 0x83, 0xE0, 0x01, 0x80, 0xF0, 0x01, 0x80, 0x3C, 0x01, 0x80, 0x1F, 0x01, + 0xC0, 0x07, 0xC1, 0xE0, 0x03, 0xF3, 0xFE, 0x0F, 0xFE, 0xFF, 0xC0, 0xFF, + 0x7E, 0x00, 0x1C, 0x1E, 0x00, 0x18, 0x1F, 0x00, 0x30, 0x0F, 0x00, 0x60, + 0x07, 0x80, 0x60, 0x03, 0xC0, 0xC0, 0x03, 0xE1, 0x80, 0x01, 0xE1, 0x80, + 0x00, 0xF3, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3C, 0x00, + 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, + 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, + 0x00, 0x7E, 0x00, 0x01, 0xFF, 0x80, 0x3F, 0xFF, 0xF1, 0xFF, 0xFF, 0x9C, + 0x00, 0x78, 0xC0, 0x07, 0x84, 0x00, 0x38, 0x00, 0x03, 0xC0, 0x00, 0x3C, + 0x00, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, + 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, + 0x07, 0x00, 0x00, 0x78, 0x00, 0x47, 0x80, 0x06, 0x78, 0x00, 0x33, 0x80, + 0x07, 0x3F, 0xFF, 0xFB, 0xFF, 0xFF, 0xC0, 0xFF, 0x83, 0x06, 0x0C, 0x18, + 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, + 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x07, 0xF0, 0xC0, 0x18, 0x06, 0x01, + 0x80, 0x70, 0x0C, 0x03, 0x00, 0xE0, 0x18, 0x06, 0x01, 0xC0, 0x30, 0x0C, + 0x03, 0x80, 0x60, 0x18, 0x07, 0x00, 0xC0, 0x30, 0x0E, 0x01, 0x80, 0x60, + 0x1C, 0x03, 0xFE, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, + 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, + 0x0C, 0x1F, 0xF0, 0x03, 0x80, 0x0F, 0x00, 0x1F, 0x00, 0x76, 0x00, 0xCE, + 0x03, 0x8C, 0x06, 0x1C, 0x1C, 0x18, 0x30, 0x30, 0xE0, 0x31, 0x80, 0x67, + 0x00, 0x6C, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xC0, 0xE0, 0x70, + 0x18, 0x0C, 0x03, 0x1F, 0x03, 0x8C, 0x38, 0x31, 0xC1, 0x8E, 0x0C, 0x00, + 0x60, 0x0F, 0x01, 0x98, 0x30, 0xC3, 0x86, 0x38, 0x31, 0xC1, 0x8E, 0x0C, + 0x78, 0xE5, 0xFB, 0xCF, 0x0C, 0x00, 0x00, 0x38, 0x00, 0xF8, 0x00, 0x38, + 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x39, + 0xF0, 0x3B, 0xFC, 0x3C, 0x3E, 0x38, 0x0E, 0x38, 0x0F, 0x38, 0x07, 0x38, + 0x07, 0x38, 0x07, 0x38, 0x07, 0x38, 0x07, 0x38, 0x06, 0x38, 0x0E, 0x38, + 0x0C, 0x3C, 0x1C, 0x1F, 0xF0, 0x07, 0xE0, 0x07, 0xE0, 0x7F, 0xE3, 0x87, + 0xD8, 0x0F, 0x60, 0x1B, 0x00, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x03, 0x00, + 0x0E, 0x00, 0x3C, 0x01, 0x78, 0x19, 0xFF, 0xC3, 0xFE, 0x03, 0xE0, 0x00, + 0x00, 0x00, 0x1C, 0x00, 0x7C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, + 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x07, 0x9C, 0x1F, 0xDC, 0x38, 0x7C, 0x70, + 0x3C, 0x70, 0x1C, 0x60, 0x1C, 0xE0, 0x1C, 0xE0, 0x1C, 0xE0, 0x1C, 0xE0, + 0x1C, 0xE0, 0x1C, 0xF0, 0x1C, 0x70, 0x1C, 0x7C, 0x3E, 0x3F, 0xDF, 0x0F, + 0x90, 0x0F, 0x81, 0xFF, 0x08, 0x3C, 0x80, 0xE7, 0xFF, 0x7F, 0xFF, 0x00, + 0x18, 0x00, 0xC0, 0x07, 0x00, 0x38, 0x03, 0xE0, 0x37, 0x83, 0x3F, 0xF0, + 0xFF, 0x03, 0xF0, 0x01, 0xF0, 0x3F, 0xC3, 0x8E, 0x18, 0x00, 0xC0, 0x0E, + 0x00, 0x70, 0x03, 0x80, 0x1C, 0x03, 0xFE, 0x1F, 0xF0, 0x38, 0x01, 0xC0, + 0x0E, 0x00, 0x70, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x01, + 0xC0, 0x0E, 0x00, 0x70, 0x07, 0xC0, 0xFF, 0x80, 0x0F, 0xC0, 0x1F, 0xFF, + 0x38, 0xFF, 0x70, 0x70, 0x70, 0x70, 0x70, 0x30, 0x70, 0x30, 0x70, 0x30, + 0x38, 0x20, 0x1C, 0x60, 0x0F, 0x80, 0x10, 0x00, 0x20, 0x00, 0x60, 0x00, + 0x7F, 0xE0, 0x3F, 0xFC, 0x1F, 0xFE, 0x20, 0x06, 0x40, 0x02, 0xC0, 0x02, + 0xC0, 0x04, 0xF0, 0x18, 0x7F, 0xF0, 0x1F, 0x80, 0x00, 0x00, 0x38, 0x00, + 0xF8, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, + 0x38, 0x00, 0x38, 0xF0, 0x3B, 0xF8, 0x3E, 0x3C, 0x3C, 0x1C, 0x38, 0x1C, + 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, + 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x7C, 0x3E, 0xFE, 0x7F, 0x18, 0x3C, + 0x3C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x04, 0x3C, 0x7C, 0x1C, 0x1C, 0x1C, + 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x3C, 0xFF, 0x03, 0x03, + 0xC1, 0xE0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0xC3, 0xE0, 0x70, + 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, + 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x37, 0x3B, 0xF8, 0xF8, 0x00, 0x00, + 0x1C, 0x00, 0x3E, 0x00, 0x07, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, + 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x3F, 0x8E, 0x0F, 0x07, 0x06, 0x03, + 0x86, 0x01, 0xC4, 0x00, 0xE4, 0x00, 0x7E, 0x00, 0x3F, 0x80, 0x1D, 0xC0, + 0x0E, 0x70, 0x07, 0x1C, 0x03, 0x8F, 0x01, 0xC3, 0xC0, 0xE0, 0xF0, 0xF8, + 0x3C, 0xFE, 0x7F, 0x80, 0x00, 0x1C, 0x7C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, + 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, + 0x1C, 0x1C, 0x1C, 0x3C, 0xFF, 0x38, 0xF0, 0x7C, 0x3E, 0xFE, 0x7F, 0x83, + 0xE3, 0xF0, 0xE0, 0xE0, 0x70, 0x1C, 0x38, 0x1C, 0x07, 0x0E, 0x07, 0x01, + 0xC3, 0x81, 0xC0, 0x70, 0xE0, 0x70, 0x1C, 0x38, 0x1C, 0x07, 0x0E, 0x07, + 0x01, 0xC3, 0x81, 0xC0, 0x70, 0xE0, 0x70, 0x1C, 0x38, 0x1C, 0x07, 0x0E, + 0x07, 0x01, 0xC3, 0x81, 0xE0, 0x73, 0xF9, 0xFC, 0x7F, 0x38, 0xF0, 0xFB, + 0xF8, 0x3E, 0x3C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, + 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, + 0x1C, 0x78, 0x3C, 0xFE, 0x7F, 0x07, 0xE0, 0x1F, 0xF8, 0x3C, 0x7C, 0x78, + 0x3E, 0x70, 0x1E, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, + 0x0F, 0xF8, 0x0F, 0x78, 0x0E, 0x7C, 0x1C, 0x3E, 0x3C, 0x0F, 0xF0, 0x07, + 0xC0, 0x18, 0xF0, 0xFB, 0xFC, 0x3E, 0x1E, 0x38, 0x0E, 0x38, 0x0F, 0x38, + 0x07, 0x38, 0x07, 0x38, 0x07, 0x38, 0x07, 0x38, 0x07, 0x38, 0x06, 0x38, + 0x0E, 0x38, 0x0C, 0x3E, 0x1C, 0x3B, 0xF8, 0x39, 0xE0, 0x38, 0x00, 0x38, + 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x7C, 0x00, 0xFF, + 0x00, 0x07, 0xC4, 0x1F, 0xEC, 0x3C, 0x3C, 0x70, 0x1C, 0x70, 0x1C, 0x60, + 0x1C, 0xE0, 0x1C, 0xE0, 0x1C, 0xE0, 0x1C, 0xE0, 0x1C, 0xE0, 0x1C, 0xF0, + 0x1C, 0x70, 0x1C, 0x78, 0x3C, 0x3F, 0xDC, 0x1F, 0x1C, 0x00, 0x1C, 0x00, + 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x3E, 0x00, + 0xFF, 0x19, 0xFF, 0x7C, 0xF3, 0x9C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC0, + 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x1F, 0x07, 0xF0, 0x3E, + 0x58, 0x7C, 0x0F, 0x03, 0xC0, 0x7C, 0x07, 0x80, 0xF8, 0x1F, 0x81, 0xF8, + 0x1E, 0x03, 0xC0, 0xF0, 0x3E, 0x1A, 0x7C, 0x10, 0x30, 0x70, 0xFE, 0xFE, + 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x79, + 0x7E, 0x3C, 0xF8, 0x7C, 0x38, 0x3C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, + 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, + 0x38, 0x1C, 0x38, 0x1C, 0x3C, 0x7C, 0x1F, 0xDF, 0x0F, 0x18, 0xFE, 0x1F, + 0x7C, 0x06, 0x38, 0x04, 0x1C, 0x04, 0x1C, 0x0C, 0x0E, 0x08, 0x0E, 0x18, + 0x07, 0x10, 0x07, 0x10, 0x07, 0x20, 0x03, 0xA0, 0x03, 0xE0, 0x01, 0xC0, + 0x01, 0xC0, 0x00, 0x80, 0x00, 0x80, 0xFC, 0x7F, 0x1F, 0x78, 0x3C, 0x06, + 0x38, 0x1C, 0x04, 0x38, 0x1C, 0x04, 0x1C, 0x1C, 0x0C, 0x1C, 0x0E, 0x08, + 0x1C, 0x1E, 0x18, 0x0E, 0x17, 0x10, 0x0E, 0x37, 0x10, 0x07, 0x23, 0x30, + 0x07, 0x63, 0xA0, 0x07, 0x43, 0xE0, 0x03, 0xC1, 0xC0, 0x03, 0x81, 0xC0, + 0x01, 0x80, 0x80, 0x01, 0x00, 0x80, 0x7F, 0x7E, 0x1E, 0x0C, 0x07, 0x8C, + 0x01, 0xC4, 0x00, 0x76, 0x00, 0x3E, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x03, + 0xE0, 0x01, 0x70, 0x01, 0x1C, 0x01, 0x8F, 0x01, 0x83, 0x80, 0x80, 0xE0, + 0xC0, 0x79, 0xF0, 0xFF, 0xFE, 0x0F, 0x7C, 0x06, 0x38, 0x06, 0x1C, 0x04, + 0x1C, 0x0C, 0x0E, 0x0C, 0x0E, 0x08, 0x0F, 0x18, 0x07, 0x10, 0x07, 0x90, + 0x03, 0xB0, 0x03, 0xA0, 0x01, 0xE0, 0x01, 0xE0, 0x00, 0xC0, 0x00, 0xC0, + 0x00, 0x80, 0x00, 0x80, 0x01, 0x80, 0x01, 0x00, 0x03, 0x00, 0x7E, 0x00, + 0x7C, 0x00, 0x78, 0x00, 0x7F, 0xF9, 0xFF, 0xE6, 0x07, 0x10, 0x38, 0x00, + 0xE0, 0x07, 0x00, 0x38, 0x01, 0xE0, 0x07, 0x00, 0x38, 0x01, 0xE0, 0x07, + 0x01, 0x38, 0x0D, 0xC0, 0x3F, 0xFF, 0xBF, 0xFE, 0x07, 0x0E, 0x1C, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x30, 0x60, 0x60, + 0x10, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1C, + 0x0E, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x70, 0x38, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x08, 0x06, 0x06, + 0x08, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x38, + 0x70, 0xE0, 0x3E, 0x00, 0x7F, 0x87, 0xE3, 0xFE, 0x00, 0x7C}; + +const GFXglyph FreeSerif18pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 9, 0, 1}, // 0x20 ' ' + {0, 4, 24, 12, 5, -23}, // 0x21 '!' + {12, 8, 9, 14, 3, -23}, // 0x22 '"' + {21, 17, 23, 17, 0, -22}, // 0x23 '#' + {70, 13, 27, 17, 2, -24}, // 0x24 '$' + {114, 25, 23, 29, 2, -22}, // 0x25 '%' + {186, 25, 25, 27, 1, -24}, // 0x26 '&' + {265, 3, 9, 7, 2, -23}, // 0x27 ''' + {269, 9, 30, 12, 2, -23}, // 0x28 '(' + {303, 9, 30, 12, 1, -22}, // 0x29 ')' + {337, 12, 14, 18, 3, -23}, // 0x2A '*' + {358, 16, 18, 20, 2, -17}, // 0x2B '+' + {394, 4, 9, 9, 2, -3}, // 0x2C ',' + {399, 8, 2, 12, 1, -8}, // 0x2D '-' + {401, 4, 4, 9, 2, -3}, // 0x2E '.' + {403, 10, 24, 10, 0, -23}, // 0x2F '/' + {433, 16, 24, 18, 1, -23}, // 0x30 '0' + {481, 10, 24, 18, 3, -23}, // 0x31 '1' + {511, 16, 24, 17, 1, -23}, // 0x32 '2' + {559, 13, 24, 17, 2, -23}, // 0x33 '3' + {598, 16, 23, 18, 0, -22}, // 0x34 '4' + {644, 13, 24, 17, 2, -23}, // 0x35 '5' + {683, 16, 24, 18, 1, -23}, // 0x36 '6' + {731, 14, 23, 18, 1, -22}, // 0x37 '7' + {772, 12, 25, 18, 2, -24}, // 0x38 '8' + {810, 16, 26, 17, 1, -24}, // 0x39 '9' + {862, 4, 17, 9, 2, -16}, // 0x3A ':' + {871, 5, 22, 9, 2, -16}, // 0x3B ';' + {885, 18, 18, 20, 1, -17}, // 0x3C '<' + {926, 18, 9, 20, 1, -12}, // 0x3D '=' + {947, 18, 18, 20, 1, -17}, // 0x3E '>' + {988, 13, 25, 16, 2, -24}, // 0x3F '?' + {1029, 24, 25, 30, 3, -24}, // 0x40 '@' + {1104, 24, 23, 25, 1, -22}, // 0x41 'A' + {1173, 20, 23, 22, 1, -22}, // 0x42 'B' + {1231, 22, 24, 23, 1, -23}, // 0x43 'C' + {1297, 23, 23, 25, 1, -22}, // 0x44 'D' + {1364, 20, 23, 21, 2, -22}, // 0x45 'E' + {1422, 17, 23, 20, 2, -22}, // 0x46 'F' + {1471, 23, 24, 25, 1, -23}, // 0x47 'G' + {1540, 22, 23, 25, 2, -22}, // 0x48 'H' + {1604, 9, 23, 11, 2, -22}, // 0x49 'I' + {1630, 12, 23, 13, 0, -22}, // 0x4A 'J' + {1665, 23, 23, 25, 2, -22}, // 0x4B 'K' + {1732, 19, 23, 21, 2, -22}, // 0x4C 'L' + {1787, 29, 23, 31, 1, -22}, // 0x4D 'M' + {1871, 23, 23, 25, 1, -22}, // 0x4E 'N' + {1938, 23, 24, 25, 1, -23}, // 0x4F 'O' + {2007, 18, 23, 20, 1, -22}, // 0x50 'P' + {2059, 23, 30, 25, 1, -23}, // 0x51 'Q' + {2146, 21, 23, 23, 2, -22}, // 0x52 'R' + {2207, 16, 24, 19, 1, -23}, // 0x53 'S' + {2255, 20, 23, 21, 1, -22}, // 0x54 'T' + {2313, 22, 23, 25, 2, -22}, // 0x55 'U' + {2377, 24, 23, 25, 0, -22}, // 0x56 'V' + {2446, 33, 23, 33, 0, -22}, // 0x57 'W' + {2541, 25, 23, 25, 0, -22}, // 0x58 'X' + {2613, 24, 23, 25, 1, -22}, // 0x59 'Y' + {2682, 21, 23, 21, 0, -22}, // 0x5A 'Z' + {2743, 7, 28, 12, 3, -22}, // 0x5B '[' + {2768, 10, 24, 10, 0, -23}, // 0x5C '\' + {2798, 7, 28, 12, 2, -22}, // 0x5D ']' + {2823, 15, 13, 16, 1, -22}, // 0x5E '^' + {2848, 18, 2, 17, 0, 3}, // 0x5F '_' + {2853, 8, 6, 9, 1, -23}, // 0x60 '`' + {2859, 13, 16, 15, 2, -15}, // 0x61 'a' + {2885, 16, 25, 17, 1, -24}, // 0x62 'b' + {2935, 14, 16, 16, 1, -15}, // 0x63 'c' + {2963, 16, 25, 17, 1, -24}, // 0x64 'd' + {3013, 13, 16, 16, 1, -15}, // 0x65 'e' + {3039, 13, 25, 13, 0, -24}, // 0x66 'f' + {3080, 16, 24, 16, 1, -15}, // 0x67 'g' + {3128, 16, 25, 17, 1, -24}, // 0x68 'h' + {3178, 8, 24, 10, 0, -23}, // 0x69 'i' + {3202, 9, 32, 12, 0, -23}, // 0x6A 'j' + {3238, 17, 25, 18, 1, -24}, // 0x6B 'k' + {3292, 8, 25, 9, 0, -24}, // 0x6C 'l' + {3317, 26, 16, 27, 1, -15}, // 0x6D 'm' + {3369, 16, 16, 17, 1, -15}, // 0x6E 'n' + {3401, 16, 16, 17, 1, -15}, // 0x6F 'o' + {3433, 16, 24, 17, 1, -15}, // 0x70 'p' + {3481, 16, 24, 17, 1, -15}, // 0x71 'q' + {3529, 11, 16, 12, 1, -15}, // 0x72 'r' + {3551, 10, 16, 13, 1, -15}, // 0x73 's' + {3571, 8, 19, 10, 2, -18}, // 0x74 't' + {3590, 16, 16, 17, 1, -15}, // 0x75 'u' + {3622, 16, 16, 16, 0, -15}, // 0x76 'v' + {3654, 24, 16, 24, 0, -15}, // 0x77 'w' + {3702, 17, 16, 17, 0, -15}, // 0x78 'x' + {3736, 16, 24, 16, 0, -15}, // 0x79 'y' + {3784, 14, 16, 15, 0, -15}, // 0x7A 'z' + {3812, 8, 30, 17, 3, -23}, // 0x7B '{' + {3842, 2, 24, 7, 2, -23}, // 0x7C '|' + {3848, 8, 30, 17, 6, -22}, // 0x7D '}' + {3878, 16, 4, 17, 1, -10}}; // 0x7E '~' + +const GFXfont FreeSerif18pt7b PROGMEM = {(uint8_t *)FreeSerif18pt7bBitmaps, + (GFXglyph *)FreeSerif18pt7bGlyphs, + 0x20, 0x7E, 42}; + +// Approx. 4558 bytes diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerif24pt7b.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerif24pt7b.h new file mode 100644 index 0000000..cac1999 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerif24pt7b.h @@ -0,0 +1,692 @@ +#pragma once +#include + +const uint8_t FreeSerif24pt7bBitmaps[] PROGMEM = { + 0x77, 0xBF, 0xFF, 0xFF, 0xFF, 0xFB, 0x9C, 0xE7, 0x39, 0xCE, 0x61, 0x08, + 0x42, 0x10, 0x84, 0x00, 0x00, 0xEF, 0xFF, 0xEE, 0x60, 0x6F, 0x0F, 0xF0, + 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0x60, 0x66, 0x06, 0x60, 0x66, 0x06, 0x60, + 0x66, 0x06, 0x00, 0xE0, 0x70, 0x01, 0xC0, 0xE0, 0x03, 0x81, 0xC0, 0x07, + 0x03, 0x80, 0x0E, 0x06, 0x00, 0x18, 0x0C, 0x00, 0x30, 0x38, 0x00, 0xE0, + 0x70, 0x01, 0xC0, 0xE0, 0x03, 0x81, 0xC1, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, + 0xF0, 0x18, 0x0C, 0x00, 0x70, 0x38, 0x00, 0xE0, 0x70, 0x01, 0xC0, 0xE0, + 0x03, 0x81, 0xC0, 0x07, 0x03, 0x80, 0x0C, 0x06, 0x07, 0xFF, 0xFF, 0xEF, + 0xFF, 0xFF, 0xC0, 0xE0, 0x70, 0x01, 0xC0, 0xE0, 0x03, 0x81, 0xC0, 0x06, + 0x03, 0x80, 0x0C, 0x06, 0x00, 0x38, 0x1C, 0x00, 0x70, 0x38, 0x00, 0xE0, + 0x70, 0x01, 0xC0, 0xE0, 0x03, 0x81, 0xC0, 0x00, 0x00, 0x40, 0x00, 0x08, + 0x00, 0x01, 0x00, 0x01, 0xFC, 0x01, 0xE4, 0xF8, 0x70, 0x87, 0x9C, 0x10, + 0x77, 0x02, 0x06, 0xE0, 0x40, 0xDC, 0x08, 0x0B, 0x81, 0x00, 0x78, 0x20, + 0x07, 0x84, 0x00, 0xFC, 0x80, 0x0F, 0xF0, 0x00, 0xFE, 0x00, 0x07, 0xF0, + 0x00, 0x7F, 0x80, 0x03, 0xFC, 0x00, 0x3F, 0xC0, 0x05, 0xFC, 0x00, 0x8F, + 0x80, 0x10, 0xF8, 0x02, 0x0F, 0x00, 0x40, 0xF0, 0x08, 0x1E, 0x01, 0x03, + 0xE0, 0x20, 0x7C, 0x04, 0x0F, 0xC0, 0x83, 0xBC, 0x10, 0xE3, 0xE2, 0x78, + 0x3F, 0xFE, 0x00, 0xFE, 0x00, 0x01, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x01, 0xF0, 0x00, 0xC0, 0x03, 0xFC, 0x01, 0xE0, 0x03, 0xC7, 0x81, 0xE0, + 0x03, 0xC0, 0x7F, 0x60, 0x03, 0xC0, 0x20, 0x70, 0x01, 0xE0, 0x10, 0x30, + 0x01, 0xE0, 0x08, 0x38, 0x00, 0xE0, 0x04, 0x18, 0x00, 0xF0, 0x02, 0x1C, + 0x00, 0x78, 0x02, 0x0C, 0x00, 0x38, 0x01, 0x0E, 0x00, 0x1C, 0x01, 0x86, + 0x00, 0x0E, 0x00, 0x86, 0x00, 0x07, 0x00, 0x87, 0x03, 0xE1, 0x80, 0xC3, + 0x07, 0xFC, 0xE1, 0xC3, 0x87, 0xC6, 0x3F, 0xC1, 0x87, 0x81, 0x8F, 0x81, + 0xC7, 0x80, 0x40, 0x00, 0xC3, 0xC0, 0x20, 0x00, 0xE3, 0xC0, 0x10, 0x00, + 0x61, 0xC0, 0x08, 0x00, 0x61, 0xE0, 0x04, 0x00, 0x70, 0xF0, 0x06, 0x00, + 0x30, 0x70, 0x02, 0x00, 0x38, 0x38, 0x03, 0x00, 0x18, 0x1C, 0x01, 0x00, + 0x1C, 0x0E, 0x01, 0x80, 0x0C, 0x07, 0x01, 0x80, 0x0E, 0x01, 0xC3, 0x80, + 0x06, 0x00, 0x7F, 0x80, 0x06, 0x00, 0x1F, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x00, 0x1F, 0x00, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0x70, 0xE0, 0x00, + 0x00, 0xE0, 0x60, 0x00, 0x00, 0xC0, 0x30, 0x00, 0x01, 0xC0, 0x30, 0x00, + 0x01, 0xC0, 0x30, 0x00, 0x01, 0xC0, 0x30, 0x00, 0x01, 0xC0, 0x70, 0x00, + 0x01, 0xE0, 0xE0, 0x00, 0x01, 0xE1, 0xC0, 0x00, 0x00, 0xF3, 0x80, 0x00, + 0x00, 0xFF, 0x0F, 0xFC, 0x00, 0xFC, 0x03, 0xF0, 0x00, 0xF8, 0x01, 0xE0, + 0x01, 0xFC, 0x01, 0xC0, 0x07, 0x7C, 0x01, 0xC0, 0x0F, 0x3E, 0x01, 0x80, + 0x1E, 0x3E, 0x03, 0x00, 0x3C, 0x1F, 0x03, 0x00, 0x7C, 0x1F, 0x06, 0x00, + 0x78, 0x0F, 0x86, 0x00, 0x78, 0x07, 0xCC, 0x00, 0xF8, 0x07, 0xE8, 0x00, + 0xF8, 0x03, 0xF8, 0x00, 0xF8, 0x01, 0xF0, 0x00, 0xF8, 0x01, 0xF8, 0x00, + 0xFC, 0x00, 0xFC, 0x01, 0xFC, 0x01, 0xFE, 0x01, 0x7E, 0x03, 0xBF, 0x86, + 0x7F, 0x0F, 0x1F, 0xFE, 0x3F, 0xFC, 0x0F, 0xF8, 0x0F, 0xE0, 0x03, 0xF0, + 0x6F, 0xFF, 0xFF, 0x66, 0x66, 0x66, 0x00, 0x10, 0x02, 0x00, 0xC0, 0x18, + 0x03, 0x00, 0x60, 0x0E, 0x00, 0xC0, 0x1C, 0x03, 0x80, 0x38, 0x03, 0x80, + 0x78, 0x07, 0x00, 0x70, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, + 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x07, 0x00, 0x70, 0x07, 0x80, + 0x38, 0x03, 0x80, 0x38, 0x01, 0xC0, 0x0C, 0x00, 0xC0, 0x06, 0x00, 0x30, + 0x01, 0x80, 0x0C, 0x00, 0x60, 0x03, 0xC0, 0x06, 0x00, 0x30, 0x01, 0x80, + 0x0C, 0x00, 0x60, 0x07, 0x00, 0x30, 0x03, 0x80, 0x1C, 0x01, 0xC0, 0x1C, + 0x01, 0xE0, 0x0E, 0x00, 0xE0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, + 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0E, 0x00, 0xE0, 0x1E, + 0x01, 0xC0, 0x1C, 0x01, 0xC0, 0x38, 0x03, 0x00, 0x70, 0x0E, 0x00, 0xC0, + 0x18, 0x03, 0x00, 0x40, 0x08, 0x00, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, + 0x43, 0x86, 0xE1, 0x0F, 0xF1, 0x1F, 0xF9, 0x3E, 0x3D, 0x78, 0x07, 0xC0, + 0x01, 0x00, 0x07, 0xC0, 0x19, 0x30, 0xF9, 0x1E, 0xF1, 0x0F, 0xE1, 0x07, + 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x00, 0x38, 0x00, 0x00, + 0x70, 0x00, 0x00, 0xE0, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, 0x00, 0x07, + 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x38, 0x00, 0x00, 0x70, + 0x00, 0x00, 0xE0, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x07, 0x00, + 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x38, 0x00, 0x00, 0x70, 0x00, + 0x00, 0xE0, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, 0x00, 0x07, 0x00, 0x00, + 0x0E, 0x00, 0x00, 0x73, 0xEF, 0xFF, 0x7C, 0x10, 0x42, 0x08, 0xC6, 0x00, + 0xFF, 0xFF, 0xFC, 0x77, 0xFF, 0xF7, 0x00, 0x00, 0x1C, 0x00, 0xE0, 0x03, + 0x80, 0x0E, 0x00, 0x70, 0x01, 0xC0, 0x07, 0x00, 0x38, 0x00, 0xE0, 0x03, + 0x80, 0x1C, 0x00, 0x70, 0x01, 0xC0, 0x0E, 0x00, 0x38, 0x01, 0xE0, 0x07, + 0x00, 0x1C, 0x00, 0xF0, 0x03, 0x80, 0x0E, 0x00, 0x78, 0x01, 0xC0, 0x07, + 0x00, 0x3C, 0x00, 0xE0, 0x03, 0x80, 0x1E, 0x00, 0x70, 0x01, 0xC0, 0x0F, + 0x00, 0x38, 0x00, 0x00, 0xFC, 0x00, 0x0E, 0x1C, 0x00, 0x70, 0x38, 0x03, + 0x80, 0x70, 0x1E, 0x01, 0xE0, 0xF0, 0x03, 0x83, 0xC0, 0x0F, 0x0F, 0x00, + 0x3C, 0x7C, 0x00, 0xF9, 0xE0, 0x01, 0xE7, 0x80, 0x07, 0xBE, 0x00, 0x1F, + 0xF8, 0x00, 0x7F, 0xE0, 0x01, 0xFF, 0x80, 0x07, 0xFE, 0x00, 0x1F, 0xF8, + 0x00, 0x7F, 0xE0, 0x01, 0xFF, 0x80, 0x07, 0xFE, 0x00, 0x1F, 0xF8, 0x00, + 0x7F, 0xE0, 0x01, 0xF7, 0x80, 0x07, 0x9E, 0x00, 0x1E, 0x7C, 0x00, 0xF8, + 0xF0, 0x03, 0xC3, 0xC0, 0x0F, 0x07, 0x00, 0x38, 0x1E, 0x01, 0xE0, 0x38, + 0x07, 0x00, 0x70, 0x38, 0x00, 0xE1, 0xC0, 0x00, 0xFC, 0x00, 0x00, 0x80, + 0x1C, 0x03, 0xE0, 0x7F, 0x0C, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x07, + 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, + 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, + 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x3F, + 0x0F, 0xFF, 0x01, 0xF8, 0x00, 0x3F, 0xF0, 0x07, 0xFF, 0xE0, 0x70, 0x3F, + 0x83, 0x00, 0x7C, 0x30, 0x01, 0xF1, 0x00, 0x0F, 0x98, 0x00, 0x3C, 0x80, + 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0x80, 0x00, 0x1C, + 0x00, 0x01, 0xC0, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x07, 0x00, 0x00, + 0x70, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, + 0x03, 0x00, 0x00, 0x30, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, 0x43, 0x00, + 0x02, 0x30, 0x00, 0x23, 0xFF, 0xFF, 0x3F, 0xFF, 0xF3, 0xFF, 0xFF, 0x80, + 0x03, 0xF8, 0x03, 0xFF, 0x01, 0x83, 0xE0, 0x80, 0x3C, 0x40, 0x0F, 0x10, + 0x01, 0xC8, 0x00, 0x70, 0x00, 0x1C, 0x00, 0x06, 0x00, 0x03, 0x00, 0x00, + 0x80, 0x00, 0xC0, 0x00, 0x78, 0x00, 0x7F, 0x80, 0x7F, 0xF0, 0x01, 0xFE, + 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x01, 0xC0, + 0x00, 0x70, 0x00, 0x1C, 0x00, 0x07, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, + 0x30, 0x00, 0x0C, 0x70, 0x06, 0x3F, 0x07, 0x0F, 0xFF, 0x00, 0xFF, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x38, 0x00, 0x01, 0xC0, 0x00, 0x1E, 0x00, 0x01, + 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xDC, 0x00, 0x0C, 0xE0, 0x00, 0x47, 0x00, + 0x06, 0x38, 0x00, 0x61, 0xC0, 0x06, 0x0E, 0x00, 0x30, 0x70, 0x03, 0x03, + 0x80, 0x30, 0x1C, 0x01, 0x80, 0xE0, 0x18, 0x07, 0x01, 0x80, 0x38, 0x08, + 0x01, 0xC0, 0xC0, 0x0E, 0x0C, 0x00, 0x70, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, + 0xE0, 0x00, 0xE0, 0x00, 0x07, 0x00, 0x00, 0x38, 0x00, 0x01, 0xC0, 0x00, + 0x0E, 0x00, 0x00, 0x70, 0x00, 0x03, 0x80, 0x00, 0x1C, 0x00, 0x00, 0x00, + 0x40, 0x7F, 0xF8, 0x1F, 0xFE, 0x03, 0xFF, 0xC0, 0xC0, 0x00, 0x18, 0x00, + 0x06, 0x00, 0x00, 0xC0, 0x00, 0x1C, 0x00, 0x07, 0xF8, 0x00, 0xFF, 0xC0, + 0x3F, 0xFE, 0x00, 0xFF, 0xE0, 0x01, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0x7C, + 0x00, 0x07, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x1C, + 0x00, 0x03, 0x80, 0x00, 0x70, 0x00, 0x0E, 0x00, 0x01, 0xC0, 0x00, 0x30, + 0x00, 0x0E, 0x00, 0x01, 0x80, 0x00, 0x71, 0xE0, 0x1C, 0x3F, 0x07, 0x07, + 0xFF, 0x80, 0x3F, 0x80, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x3E, 0x00, 0x0F, + 0x80, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x01, + 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xFC, 0x00, + 0x07, 0xC7, 0xE0, 0x3E, 0xFF, 0xC3, 0xF8, 0x3F, 0x1F, 0x80, 0x7C, 0xF8, + 0x03, 0xF7, 0xC0, 0x0F, 0xBE, 0x00, 0x7F, 0xF0, 0x01, 0xFF, 0x80, 0x0F, + 0xFC, 0x00, 0x7F, 0xE0, 0x03, 0xFF, 0x00, 0x1F, 0x78, 0x00, 0xFB, 0xE0, + 0x07, 0x9F, 0x00, 0x3C, 0x78, 0x03, 0xE3, 0xE0, 0x1E, 0x0F, 0x81, 0xE0, + 0x3E, 0x1E, 0x00, 0xFF, 0xE0, 0x00, 0xFC, 0x00, 0x3F, 0xFF, 0xF3, 0xFF, + 0xFF, 0x3F, 0xFF, 0xE7, 0x00, 0x0E, 0x40, 0x00, 0xEC, 0x00, 0x1C, 0x80, + 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x03, 0x80, + 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0x70, 0x00, 0x0E, 0x00, 0x00, 0xE0, + 0x00, 0x0E, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x38, + 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x07, 0x00, 0x00, 0x70, 0x00, 0x07, + 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x1E, 0x00, 0x01, + 0xC0, 0x00, 0x03, 0xF0, 0x03, 0xFF, 0x03, 0xC1, 0xE0, 0xC0, 0x1C, 0x70, + 0x07, 0x18, 0x00, 0xEE, 0x00, 0x3B, 0x80, 0x0E, 0xF0, 0x03, 0xBC, 0x00, + 0xE7, 0x80, 0x71, 0xF0, 0x38, 0x3E, 0x1C, 0x07, 0xEE, 0x00, 0xFE, 0x00, + 0x1F, 0xC0, 0x03, 0xF8, 0x03, 0xFF, 0x01, 0xC7, 0xE0, 0xE0, 0xFC, 0x70, + 0x0F, 0x98, 0x01, 0xEE, 0x00, 0x3F, 0x80, 0x0F, 0xE0, 0x01, 0xF8, 0x00, + 0x7E, 0x00, 0x1F, 0xC0, 0x07, 0x70, 0x03, 0x9E, 0x00, 0xE3, 0xE0, 0xF0, + 0x7F, 0xF0, 0x07, 0xF0, 0x00, 0x01, 0xF8, 0x00, 0x3F, 0xF0, 0x03, 0xC3, + 0xE0, 0x3C, 0x0F, 0x83, 0xC0, 0x3C, 0x3E, 0x00, 0xF1, 0xE0, 0x07, 0xCF, + 0x00, 0x3E, 0xF8, 0x00, 0xF7, 0xC0, 0x07, 0xFE, 0x00, 0x3F, 0xF0, 0x01, + 0xFF, 0x80, 0x0F, 0xFC, 0x00, 0x7F, 0xF0, 0x03, 0xEF, 0x80, 0x1F, 0x7C, + 0x00, 0xF9, 0xF0, 0x0F, 0xC7, 0xE1, 0xFC, 0x1F, 0xF9, 0xE0, 0x3F, 0x1F, + 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x78, 0x00, 0x07, 0xC0, 0x00, + 0x7C, 0x00, 0x03, 0xC0, 0x00, 0x3C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, + 0x0F, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x00, 0x77, 0xFF, 0xF7, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xBF, 0xFF, 0xB8, 0x39, 0xF7, + 0xDF, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0xEF, + 0xFF, 0x7C, 0x10, 0x42, 0x08, 0xC6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x7F, 0x00, 0x01, 0xFC, 0x00, 0x07, + 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xE0, + 0x00, 0x3F, 0x80, 0x00, 0xFE, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xFC, 0x00, + 0x00, 0x7F, 0x80, 0x00, 0x1F, 0xE0, 0x00, 0x07, 0xF8, 0x00, 0x00, 0xFE, + 0x00, 0x00, 0x3F, 0x80, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, + 0xFF, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0x00, 0x00, 0x01, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0xE0, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, + 0x00, 0x01, 0xFC, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x07, + 0xF8, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x1F, 0x00, 0x00, + 0x7F, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, + 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xE0, 0x00, 0x3F, 0x80, 0x00, 0xFE, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xE0, + 0x0F, 0xFE, 0x0C, 0x1F, 0x88, 0x03, 0xEC, 0x01, 0xF7, 0x00, 0x7F, 0xC0, + 0x3F, 0xE0, 0x1F, 0x70, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xC0, 0x01, 0xE0, + 0x01, 0xE0, 0x00, 0xF0, 0x00, 0x70, 0x00, 0x70, 0x00, 0x30, 0x00, 0x10, + 0x00, 0x18, 0x00, 0x08, 0x00, 0x04, 0x00, 0x06, 0x00, 0x02, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x3E, 0x00, + 0x1F, 0x00, 0x0F, 0x80, 0x03, 0x80, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x3F, + 0xFF, 0x00, 0x00, 0xFC, 0x07, 0xC0, 0x01, 0xE0, 0x00, 0xE0, 0x07, 0xC0, + 0x00, 0x30, 0x0F, 0x00, 0x00, 0x18, 0x1E, 0x00, 0x00, 0x0C, 0x1E, 0x00, + 0x00, 0x04, 0x3C, 0x00, 0xF8, 0x06, 0x3C, 0x01, 0xFD, 0xC2, 0x78, 0x03, + 0xC7, 0xC3, 0x78, 0x07, 0x07, 0x81, 0xF0, 0x0E, 0x03, 0x81, 0xF0, 0x0E, + 0x03, 0x81, 0xF0, 0x1C, 0x07, 0x81, 0xF0, 0x1C, 0x07, 0x01, 0xF0, 0x38, + 0x07, 0x01, 0xF0, 0x38, 0x07, 0x03, 0xF0, 0x38, 0x0F, 0x02, 0xF0, 0x38, + 0x0E, 0x02, 0xF0, 0x38, 0x1E, 0x04, 0x78, 0x38, 0x1E, 0x0C, 0x78, 0x1C, + 0x6E, 0x18, 0x38, 0x1F, 0xC7, 0xF0, 0x3C, 0x0F, 0x03, 0xE0, 0x1E, 0x00, + 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x07, 0xC0, + 0x00, 0x00, 0x03, 0xE0, 0x00, 0x60, 0x00, 0xFC, 0x03, 0xE0, 0x00, 0x3F, + 0xFF, 0x80, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, + 0x80, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x07, + 0xC0, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x0D, + 0xF0, 0x00, 0x00, 0x0D, 0xF0, 0x00, 0x00, 0x18, 0xF0, 0x00, 0x00, 0x18, + 0xF8, 0x00, 0x00, 0x38, 0x78, 0x00, 0x00, 0x30, 0x7C, 0x00, 0x00, 0x30, + 0x7C, 0x00, 0x00, 0x60, 0x3E, 0x00, 0x00, 0x60, 0x3E, 0x00, 0x00, 0xE0, + 0x1E, 0x00, 0x00, 0xC0, 0x1F, 0x00, 0x00, 0xC0, 0x1F, 0x00, 0x01, 0x80, + 0x0F, 0x80, 0x01, 0xFF, 0xFF, 0x80, 0x03, 0xFF, 0xFF, 0xC0, 0x03, 0x00, + 0x07, 0xC0, 0x07, 0x00, 0x07, 0xC0, 0x06, 0x00, 0x03, 0xE0, 0x06, 0x00, + 0x03, 0xE0, 0x0E, 0x00, 0x01, 0xF0, 0x0C, 0x00, 0x01, 0xF0, 0x1C, 0x00, + 0x01, 0xF8, 0x3C, 0x00, 0x01, 0xF8, 0x7E, 0x00, 0x01, 0xFC, 0xFF, 0x80, + 0x0F, 0xFF, 0xFF, 0xFF, 0xE0, 0x03, 0xFF, 0xFF, 0x80, 0x1F, 0x01, 0xF8, + 0x03, 0xE0, 0x0F, 0x80, 0x7C, 0x00, 0xF8, 0x0F, 0x80, 0x1F, 0x81, 0xF0, + 0x01, 0xF0, 0x3E, 0x00, 0x3E, 0x07, 0xC0, 0x07, 0xC0, 0xF8, 0x00, 0xF8, + 0x1F, 0x00, 0x1F, 0x03, 0xE0, 0x07, 0xC0, 0x7C, 0x01, 0xF0, 0x0F, 0x80, + 0xFC, 0x01, 0xFF, 0xFE, 0x00, 0x3F, 0xFF, 0xC0, 0x07, 0xC0, 0x7F, 0x00, + 0xF8, 0x01, 0xF0, 0x1F, 0x00, 0x1F, 0x03, 0xE0, 0x03, 0xE0, 0x7C, 0x00, + 0x3E, 0x0F, 0x80, 0x07, 0xC1, 0xF0, 0x00, 0xF8, 0x3E, 0x00, 0x1F, 0x07, + 0xC0, 0x03, 0xE0, 0xF8, 0x00, 0xF8, 0x1F, 0x00, 0x1F, 0x03, 0xE0, 0x07, + 0xC0, 0x7C, 0x07, 0xF0, 0x1F, 0xFF, 0xFC, 0x3F, 0xFF, 0xFC, 0x00, 0x00, + 0x1F, 0xF0, 0x20, 0x07, 0xFF, 0xEE, 0x01, 0xF8, 0x1F, 0xE0, 0x3E, 0x00, + 0x7E, 0x07, 0x80, 0x01, 0xE0, 0xF0, 0x00, 0x1E, 0x1F, 0x00, 0x00, 0xE3, + 0xE0, 0x00, 0x06, 0x3C, 0x00, 0x00, 0x67, 0xC0, 0x00, 0x02, 0x7C, 0x00, + 0x00, 0x27, 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, + 0xF8, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x0F, 0x80, + 0x00, 0x00, 0xF8, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, + 0x0F, 0x80, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x7C, + 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x01, 0xF0, 0x00, + 0x02, 0x0F, 0x80, 0x00, 0xE0, 0x7E, 0x00, 0x1C, 0x03, 0xF8, 0x0F, 0x00, + 0x0F, 0xFF, 0xC0, 0x00, 0x1F, 0xE0, 0x00, 0xFF, 0xFF, 0xC0, 0x00, 0x7F, + 0xFF, 0xF8, 0x00, 0x3E, 0x03, 0xFC, 0x00, 0x7C, 0x00, 0xFC, 0x00, 0xF8, + 0x00, 0x7E, 0x01, 0xF0, 0x00, 0x7E, 0x03, 0xE0, 0x00, 0x7C, 0x07, 0xC0, + 0x00, 0x7C, 0x0F, 0x80, 0x00, 0xF8, 0x1F, 0x00, 0x00, 0xF8, 0x3E, 0x00, + 0x01, 0xF0, 0x7C, 0x00, 0x03, 0xF0, 0xF8, 0x00, 0x03, 0xE1, 0xF0, 0x00, + 0x07, 0xC3, 0xE0, 0x00, 0x0F, 0x87, 0xC0, 0x00, 0x1F, 0x0F, 0x80, 0x00, + 0x3E, 0x1F, 0x00, 0x00, 0x7C, 0x3E, 0x00, 0x00, 0xF8, 0x7C, 0x00, 0x01, + 0xF0, 0xF8, 0x00, 0x07, 0xC1, 0xF0, 0x00, 0x0F, 0x83, 0xE0, 0x00, 0x1E, + 0x07, 0xC0, 0x00, 0x7C, 0x0F, 0x80, 0x01, 0xF0, 0x1F, 0x00, 0x03, 0xE0, + 0x3E, 0x00, 0x1F, 0x80, 0x7C, 0x00, 0x7C, 0x00, 0xF8, 0x0F, 0xF0, 0x07, + 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xF0, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x07, + 0xFF, 0xFF, 0xE0, 0x7C, 0x00, 0x1C, 0x0F, 0x80, 0x01, 0x81, 0xF0, 0x00, + 0x30, 0x3E, 0x00, 0x02, 0x07, 0xC0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x20, 0x0F, 0x80, 0x04, + 0x01, 0xF0, 0x01, 0x80, 0x3E, 0x00, 0x70, 0x07, 0xFF, 0xFE, 0x00, 0xFF, + 0xFF, 0xC0, 0x1F, 0x00, 0x38, 0x03, 0xE0, 0x03, 0x00, 0x7C, 0x00, 0x20, + 0x0F, 0x80, 0x04, 0x01, 0xF0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x07, 0xC0, + 0x00, 0x00, 0xF8, 0x00, 0x03, 0x1F, 0x00, 0x00, 0x43, 0xE0, 0x00, 0x18, + 0x7C, 0x00, 0x07, 0x0F, 0x80, 0x01, 0xC1, 0xF0, 0x00, 0xF8, 0x7F, 0xFF, + 0xFF, 0x3F, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0x1F, + 0x00, 0x07, 0x1F, 0x00, 0x03, 0x1F, 0x00, 0x03, 0x1F, 0x00, 0x01, 0x1F, + 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, + 0x00, 0x08, 0x1F, 0x00, 0x08, 0x1F, 0x00, 0x18, 0x1F, 0x00, 0x38, 0x1F, + 0xFF, 0xF8, 0x1F, 0xFF, 0xF8, 0x1F, 0x00, 0x38, 0x1F, 0x00, 0x18, 0x1F, + 0x00, 0x08, 0x1F, 0x00, 0x08, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x3F, 0x80, 0x00, 0xFF, + 0xF0, 0x00, 0x00, 0x0F, 0xF0, 0x08, 0x00, 0xFF, 0xFE, 0x70, 0x07, 0xE0, + 0x1F, 0xE0, 0x1F, 0x00, 0x0F, 0xC0, 0x78, 0x00, 0x07, 0x81, 0xE0, 0x00, + 0x07, 0x07, 0xC0, 0x00, 0x0E, 0x1F, 0x00, 0x00, 0x0C, 0x3E, 0x00, 0x00, + 0x08, 0xF8, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, + 0x0F, 0x80, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, + 0x7C, 0x00, 0x03, 0xFF, 0xF8, 0x00, 0x01, 0xFD, 0xF0, 0x00, 0x01, 0xF3, + 0xE0, 0x00, 0x03, 0xE7, 0xC0, 0x00, 0x07, 0xCF, 0x80, 0x00, 0x0F, 0x8F, + 0x80, 0x00, 0x1F, 0x1F, 0x00, 0x00, 0x3E, 0x3E, 0x00, 0x00, 0x7C, 0x3E, + 0x00, 0x00, 0xF8, 0x7C, 0x00, 0x01, 0xF0, 0x7C, 0x00, 0x03, 0xE0, 0xFC, + 0x00, 0x07, 0xC0, 0xFC, 0x00, 0x0F, 0x80, 0x7C, 0x00, 0x3F, 0x00, 0x7F, + 0x01, 0xFC, 0x00, 0x3F, 0xFF, 0xC0, 0x00, 0x0F, 0xF8, 0x00, 0xFF, 0xE0, + 0x1F, 0xFC, 0xFE, 0x00, 0x1F, 0xC1, 0xF0, 0x00, 0x3E, 0x07, 0xC0, 0x00, + 0xF8, 0x1F, 0x00, 0x03, 0xE0, 0x7C, 0x00, 0x0F, 0x81, 0xF0, 0x00, 0x3E, + 0x07, 0xC0, 0x00, 0xF8, 0x1F, 0x00, 0x03, 0xE0, 0x7C, 0x00, 0x0F, 0x81, + 0xF0, 0x00, 0x3E, 0x07, 0xC0, 0x00, 0xF8, 0x1F, 0x00, 0x03, 0xE0, 0x7C, + 0x00, 0x0F, 0x81, 0xFF, 0xFF, 0xFE, 0x07, 0xFF, 0xFF, 0xF8, 0x1F, 0x00, + 0x03, 0xE0, 0x7C, 0x00, 0x0F, 0x81, 0xF0, 0x00, 0x3E, 0x07, 0xC0, 0x00, + 0xF8, 0x1F, 0x00, 0x03, 0xE0, 0x7C, 0x00, 0x0F, 0x81, 0xF0, 0x00, 0x3E, + 0x07, 0xC0, 0x00, 0xF8, 0x1F, 0x00, 0x03, 0xE0, 0x7C, 0x00, 0x0F, 0x81, + 0xF0, 0x00, 0x3E, 0x07, 0xC0, 0x00, 0xF8, 0x1F, 0x00, 0x03, 0xE0, 0xFE, + 0x00, 0x1F, 0xCF, 0xFE, 0x01, 0xFF, 0xC0, 0xFF, 0xF8, 0xFE, 0x03, 0xE0, + 0x1F, 0x00, 0xF8, 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, + 0xE0, 0x1F, 0x00, 0xF8, 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, + 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, + 0x7C, 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x0F, 0xE3, 0xFF, 0xE0, 0x0F, 0xFF, + 0x80, 0xFE, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, + 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0x00, + 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x7C, + 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, + 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3C, 0x0E, 0x1E, 0x0F, 0x8F, 0x07, + 0xCF, 0x01, 0xFF, 0x00, 0x7E, 0x00, 0xFF, 0xF8, 0x3F, 0xFC, 0x3F, 0xC0, + 0x07, 0xE0, 0x0F, 0x80, 0x07, 0x80, 0x0F, 0x80, 0x07, 0x00, 0x0F, 0x80, + 0x0E, 0x00, 0x0F, 0x80, 0x1C, 0x00, 0x0F, 0x80, 0x38, 0x00, 0x0F, 0x80, + 0x70, 0x00, 0x0F, 0x80, 0xE0, 0x00, 0x0F, 0x81, 0xC0, 0x00, 0x0F, 0x83, + 0x80, 0x00, 0x0F, 0x87, 0x00, 0x00, 0x0F, 0x9E, 0x00, 0x00, 0x0F, 0xBC, + 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x0F, 0xDF, + 0x80, 0x00, 0x0F, 0x8F, 0xC0, 0x00, 0x0F, 0x87, 0xE0, 0x00, 0x0F, 0x83, + 0xF0, 0x00, 0x0F, 0x81, 0xF8, 0x00, 0x0F, 0x80, 0xFC, 0x00, 0x0F, 0x80, + 0x7E, 0x00, 0x0F, 0x80, 0x3F, 0x00, 0x0F, 0x80, 0x3F, 0x80, 0x0F, 0x80, + 0x1F, 0x80, 0x0F, 0x80, 0x0F, 0xC0, 0x0F, 0x80, 0x07, 0xE0, 0x0F, 0x80, + 0x07, 0xF0, 0x1F, 0xC0, 0x07, 0xFC, 0xFF, 0xF8, 0x3F, 0xFF, 0xFF, 0xF0, + 0x00, 0x0F, 0xF0, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x7C, 0x00, 0x00, + 0x1F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x7C, 0x00, + 0x00, 0x1F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x7C, + 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, 0x00, 0x00, + 0x7C, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, 0x00, + 0x00, 0x7C, 0x00, 0x01, 0x1F, 0x00, 0x00, 0xC7, 0xC0, 0x00, 0x21, 0xF0, + 0x00, 0x18, 0x7C, 0x00, 0x0E, 0x1F, 0x00, 0x1F, 0x8F, 0xFF, 0xFF, 0xCF, + 0xFF, 0xFF, 0xF0, 0xFF, 0x80, 0x00, 0x03, 0xFE, 0x7F, 0x80, 0x00, 0x07, + 0xF0, 0x3F, 0x00, 0x00, 0x1F, 0xC0, 0x7E, 0x00, 0x00, 0x3F, 0x80, 0xFE, + 0x00, 0x00, 0xFF, 0x01, 0xFC, 0x00, 0x01, 0xBE, 0x03, 0x7C, 0x00, 0x03, + 0x7C, 0x06, 0xF8, 0x00, 0x0E, 0xF8, 0x0D, 0xF8, 0x00, 0x19, 0xF0, 0x19, + 0xF0, 0x00, 0x73, 0xE0, 0x33, 0xF0, 0x00, 0xC7, 0xC0, 0x63, 0xE0, 0x03, + 0x8F, 0x80, 0xC7, 0xE0, 0x06, 0x1F, 0x01, 0x87, 0xC0, 0x1C, 0x3E, 0x03, + 0x0F, 0xC0, 0x30, 0x7C, 0x06, 0x0F, 0x80, 0x60, 0xF8, 0x0C, 0x1F, 0x81, + 0x81, 0xF0, 0x18, 0x1F, 0x03, 0x03, 0xE0, 0x30, 0x3F, 0x0C, 0x07, 0xC0, + 0x60, 0x3E, 0x18, 0x0F, 0x80, 0xC0, 0x7C, 0x70, 0x1F, 0x01, 0x80, 0x7C, + 0xC0, 0x3E, 0x03, 0x00, 0xFB, 0x80, 0x7C, 0x06, 0x00, 0xFE, 0x00, 0xF8, + 0x0C, 0x01, 0xFC, 0x01, 0xF0, 0x18, 0x03, 0xF0, 0x03, 0xE0, 0x30, 0x03, + 0xE0, 0x07, 0xC0, 0x60, 0x07, 0x80, 0x0F, 0x81, 0xE0, 0x07, 0x00, 0x1F, + 0x07, 0xE0, 0x0C, 0x00, 0xFF, 0x3F, 0xF0, 0x08, 0x07, 0xFF, 0x80, 0xFF, + 0x00, 0x03, 0xFF, 0x3F, 0x80, 0x00, 0xFC, 0x1F, 0xC0, 0x00, 0x78, 0x0F, + 0xC0, 0x00, 0x30, 0x0F, 0xE0, 0x00, 0x30, 0x0F, 0xF0, 0x00, 0x30, 0x0D, + 0xF8, 0x00, 0x30, 0x0D, 0xFC, 0x00, 0x30, 0x0C, 0xFC, 0x00, 0x30, 0x0C, + 0x7E, 0x00, 0x30, 0x0C, 0x3F, 0x00, 0x30, 0x0C, 0x1F, 0x80, 0x30, 0x0C, + 0x1F, 0xC0, 0x30, 0x0C, 0x0F, 0xE0, 0x30, 0x0C, 0x07, 0xE0, 0x30, 0x0C, + 0x03, 0xF0, 0x30, 0x0C, 0x01, 0xF8, 0x30, 0x0C, 0x01, 0xFC, 0x30, 0x0C, + 0x00, 0xFE, 0x30, 0x0C, 0x00, 0x7E, 0x30, 0x0C, 0x00, 0x3F, 0x30, 0x0C, + 0x00, 0x1F, 0xB0, 0x0C, 0x00, 0x0F, 0xF0, 0x0C, 0x00, 0x0F, 0xF0, 0x0C, + 0x00, 0x07, 0xF0, 0x0C, 0x00, 0x03, 0xF0, 0x0C, 0x00, 0x01, 0xF0, 0x0C, + 0x00, 0x00, 0xF0, 0x1E, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x70, 0xFF, + 0xC0, 0x00, 0x30, 0x00, 0x00, 0x00, 0x10, 0x00, 0x1F, 0xE0, 0x00, 0x03, + 0xFF, 0xF0, 0x00, 0x1F, 0x03, 0xE0, 0x01, 0xF0, 0x03, 0xE0, 0x0F, 0x80, + 0x07, 0xC0, 0x7C, 0x00, 0x0F, 0x01, 0xE0, 0x00, 0x1E, 0x0F, 0x80, 0x00, + 0x7C, 0x3C, 0x00, 0x00, 0xF1, 0xF0, 0x00, 0x03, 0xE7, 0xC0, 0x00, 0x0F, + 0x9E, 0x00, 0x00, 0x1E, 0xF8, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0x01, 0xFF, + 0x80, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x7F, 0xE0, + 0x00, 0x01, 0xFF, 0x80, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x1F, 0xF8, 0x00, + 0x00, 0x7D, 0xF0, 0x00, 0x03, 0xE7, 0xC0, 0x00, 0x0F, 0x9F, 0x00, 0x00, + 0x3E, 0x3C, 0x00, 0x00, 0xF0, 0xF8, 0x00, 0x07, 0xC1, 0xE0, 0x00, 0x1E, + 0x07, 0xC0, 0x00, 0xF8, 0x0F, 0x80, 0x07, 0xC0, 0x1F, 0x00, 0x3E, 0x00, + 0x1F, 0x03, 0xE0, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0xFF, + 0xFF, 0x00, 0x7F, 0xFF, 0x80, 0x7C, 0x1F, 0xC0, 0xF8, 0x07, 0xC1, 0xF0, + 0x07, 0xC3, 0xE0, 0x0F, 0x87, 0xC0, 0x0F, 0x8F, 0x80, 0x1F, 0x1F, 0x00, + 0x3E, 0x3E, 0x00, 0x7C, 0x7C, 0x00, 0xF8, 0xF8, 0x01, 0xF1, 0xF0, 0x07, + 0xC3, 0xE0, 0x0F, 0x87, 0xC0, 0x3E, 0x0F, 0x81, 0xF8, 0x1F, 0xFF, 0xC0, + 0x3F, 0xFE, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x03, + 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3E, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x07, 0xF0, + 0x00, 0x3F, 0xFC, 0x00, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFF, 0xF8, + 0x00, 0x07, 0xC0, 0xF8, 0x00, 0x3E, 0x00, 0x7C, 0x00, 0xF8, 0x00, 0x7C, + 0x03, 0xE0, 0x00, 0x7C, 0x07, 0x80, 0x00, 0x78, 0x1F, 0x00, 0x00, 0xF8, + 0x3C, 0x00, 0x00, 0xF0, 0xF8, 0x00, 0x01, 0xF1, 0xF0, 0x00, 0x03, 0xE3, + 0xC0, 0x00, 0x03, 0xCF, 0x80, 0x00, 0x07, 0xDF, 0x00, 0x00, 0x0F, 0xBE, + 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x3E, 0xF8, 0x00, 0x00, 0x7D, 0xF0, + 0x00, 0x00, 0xFB, 0xE0, 0x00, 0x01, 0xF7, 0xC0, 0x00, 0x03, 0xEF, 0x80, + 0x00, 0x07, 0xCF, 0x00, 0x00, 0x1F, 0x1F, 0x00, 0x00, 0x3E, 0x3E, 0x00, + 0x00, 0x7C, 0x3C, 0x00, 0x01, 0xF0, 0x7C, 0x00, 0x03, 0xE0, 0x78, 0x00, + 0x0F, 0x80, 0x78, 0x00, 0x1E, 0x00, 0x78, 0x00, 0x78, 0x00, 0x7C, 0x03, + 0xE0, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x1F, 0xC0, + 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x1F, 0xC0, + 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x03, 0xF8, + 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x1F, + 0x03, 0xF8, 0x01, 0xF0, 0x0F, 0x80, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x03, + 0xE0, 0x1F, 0x00, 0x3E, 0x01, 0xF0, 0x03, 0xE0, 0x1F, 0x00, 0x3E, 0x01, + 0xF0, 0x03, 0xE0, 0x1F, 0x00, 0x3E, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, + 0x7C, 0x01, 0xF0, 0x0F, 0x80, 0x1F, 0x07, 0xF0, 0x01, 0xFF, 0xFC, 0x00, + 0x1F, 0xFE, 0x00, 0x01, 0xF1, 0xF0, 0x00, 0x1F, 0x1F, 0x80, 0x01, 0xF0, + 0xF8, 0x00, 0x1F, 0x07, 0xC0, 0x01, 0xF0, 0x3E, 0x00, 0x1F, 0x03, 0xF0, + 0x01, 0xF0, 0x1F, 0x80, 0x1F, 0x00, 0xFC, 0x01, 0xF0, 0x07, 0xC0, 0x1F, + 0x00, 0x7E, 0x01, 0xF0, 0x03, 0xF0, 0x1F, 0x00, 0x1F, 0x83, 0xF8, 0x00, + 0xFC, 0xFF, 0xF0, 0x0F, 0xF0, 0x03, 0xF0, 0x20, 0x7F, 0xF3, 0x07, 0xC1, + 0xF8, 0x78, 0x03, 0xC3, 0x80, 0x0E, 0x3C, 0x00, 0x31, 0xE0, 0x01, 0xCF, + 0x00, 0x06, 0x7C, 0x00, 0x33, 0xE0, 0x01, 0x9F, 0x80, 0x00, 0x7E, 0x00, + 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xE0, 0x00, 0xFF, 0xC0, 0x01, + 0xFF, 0x00, 0x07, 0xFE, 0x00, 0x0F, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0x7F, + 0x00, 0x01, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xC0, 0x00, 0xFE, 0x00, + 0x07, 0xF8, 0x00, 0x3F, 0xC0, 0x01, 0xEF, 0x00, 0x1F, 0x3C, 0x01, 0xF1, + 0xF8, 0x1F, 0x0C, 0xFF, 0xF0, 0x40, 0xFE, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xC0, 0x7C, 0x07, 0xF0, 0x0F, 0x80, 0x3C, 0x01, 0xF0, + 0x07, 0x00, 0x3E, 0x00, 0x60, 0x07, 0xC0, 0x08, 0x00, 0xF8, 0x00, 0x00, + 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x0F, 0x80, + 0x00, 0x01, 0xF0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, + 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, + 0x00, 0x0F, 0x80, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x07, + 0xC0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x00, + 0x00, 0x7C, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x7F, + 0x00, 0x00, 0x7F, 0xFC, 0x00, 0xFF, 0xF8, 0x03, 0xFF, 0x3F, 0xE0, 0x00, + 0xFC, 0x0F, 0x80, 0x00, 0x78, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, + 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, + 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, + 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, + 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, + 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, + 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, + 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, 0x20, 0x07, 0xC0, 0x00, + 0x60, 0x07, 0xC0, 0x00, 0x60, 0x03, 0xE0, 0x00, 0xC0, 0x03, 0xF0, 0x01, + 0xC0, 0x01, 0xFC, 0x07, 0x80, 0x00, 0x7F, 0xFE, 0x00, 0x00, 0x0F, 0xF8, + 0x00, 0xFF, 0xF8, 0x01, 0xFF, 0x3F, 0xC0, 0x00, 0x7E, 0x0F, 0x80, 0x00, + 0x3C, 0x0F, 0xC0, 0x00, 0x38, 0x07, 0xC0, 0x00, 0x38, 0x07, 0xC0, 0x00, + 0x30, 0x03, 0xE0, 0x00, 0x70, 0x03, 0xE0, 0x00, 0x60, 0x01, 0xF0, 0x00, + 0x60, 0x01, 0xF0, 0x00, 0xE0, 0x01, 0xF8, 0x00, 0xC0, 0x00, 0xF8, 0x01, + 0xC0, 0x00, 0xF8, 0x01, 0x80, 0x00, 0x7C, 0x01, 0x80, 0x00, 0x7C, 0x03, + 0x80, 0x00, 0x3E, 0x03, 0x00, 0x00, 0x3E, 0x07, 0x00, 0x00, 0x1F, 0x06, + 0x00, 0x00, 0x1F, 0x06, 0x00, 0x00, 0x1F, 0x8E, 0x00, 0x00, 0x0F, 0x8C, + 0x00, 0x00, 0x0F, 0x9C, 0x00, 0x00, 0x07, 0xD8, 0x00, 0x00, 0x07, 0xD8, + 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x01, 0xF0, + 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0xE0, + 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x40, 0x00, 0xFF, 0xF1, 0xFF, + 0xF0, 0x1F, 0xF3, 0xF8, 0x07, 0xF8, 0x00, 0x7C, 0x1F, 0x80, 0x3F, 0x00, + 0x03, 0x80, 0xF8, 0x01, 0xF0, 0x00, 0x30, 0x0F, 0x80, 0x1F, 0x00, 0x03, + 0x00, 0x7C, 0x00, 0xF8, 0x00, 0x30, 0x07, 0xC0, 0x0F, 0x80, 0x06, 0x00, + 0x3E, 0x00, 0x7C, 0x00, 0x60, 0x03, 0xE0, 0x07, 0xC0, 0x06, 0x00, 0x3E, + 0x00, 0x7C, 0x00, 0xC0, 0x01, 0xF0, 0x07, 0xE0, 0x0C, 0x00, 0x1F, 0x00, + 0xFE, 0x01, 0xC0, 0x01, 0xF0, 0x0D, 0xE0, 0x18, 0x00, 0x0F, 0x80, 0xDF, + 0x01, 0x80, 0x00, 0xF8, 0x19, 0xF0, 0x30, 0x00, 0x07, 0xC1, 0x8F, 0x83, + 0x00, 0x00, 0x7C, 0x38, 0xF8, 0x30, 0x00, 0x07, 0xC3, 0x0F, 0x86, 0x00, + 0x00, 0x3E, 0x30, 0x7C, 0x60, 0x00, 0x03, 0xE7, 0x07, 0xCE, 0x00, 0x00, + 0x3E, 0x60, 0x3E, 0xC0, 0x00, 0x01, 0xF6, 0x03, 0xEC, 0x00, 0x00, 0x1F, + 0xE0, 0x3F, 0xC0, 0x00, 0x01, 0xFC, 0x01, 0xF8, 0x00, 0x00, 0x0F, 0xC0, + 0x1F, 0x80, 0x00, 0x00, 0xF8, 0x01, 0xF8, 0x00, 0x00, 0x0F, 0x80, 0x0F, + 0x00, 0x00, 0x00, 0x78, 0x00, 0xF0, 0x00, 0x00, 0x07, 0x00, 0x07, 0x00, + 0x00, 0x00, 0x70, 0x00, 0x60, 0x00, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x7F, 0xFE, 0x03, 0xFF, 0x8F, 0xF8, 0x00, + 0x7E, 0x01, 0xFC, 0x00, 0x1C, 0x00, 0x7E, 0x00, 0x1C, 0x00, 0x1F, 0x00, + 0x0C, 0x00, 0x07, 0xC0, 0x0E, 0x00, 0x03, 0xF0, 0x0E, 0x00, 0x00, 0xF8, + 0x0E, 0x00, 0x00, 0x3E, 0x06, 0x00, 0x00, 0x1F, 0x86, 0x00, 0x00, 0x07, + 0xC7, 0x00, 0x00, 0x01, 0xF7, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, + 0x3F, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, + 0x03, 0xF8, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x03, 0x9F, 0x00, 0x00, + 0x01, 0x8F, 0xC0, 0x00, 0x01, 0x83, 0xF0, 0x00, 0x01, 0xC0, 0xF8, 0x00, + 0x01, 0xC0, 0x7E, 0x00, 0x01, 0xC0, 0x1F, 0x80, 0x01, 0xC0, 0x07, 0xC0, + 0x00, 0xC0, 0x03, 0xF0, 0x00, 0xE0, 0x00, 0xFC, 0x00, 0xE0, 0x00, 0x7F, + 0x00, 0xF0, 0x00, 0x1F, 0x80, 0xFC, 0x00, 0x1F, 0xF3, 0xFF, 0x80, 0x7F, + 0xFE, 0xFF, 0xF8, 0x03, 0xFF, 0x3F, 0xE0, 0x00, 0x7C, 0x1F, 0xC0, 0x00, + 0x78, 0x0F, 0xC0, 0x00, 0x70, 0x07, 0xE0, 0x00, 0x60, 0x03, 0xF0, 0x00, + 0xE0, 0x01, 0xF0, 0x01, 0xC0, 0x01, 0xF8, 0x01, 0x80, 0x00, 0xFC, 0x03, + 0x80, 0x00, 0x7C, 0x07, 0x00, 0x00, 0x7E, 0x06, 0x00, 0x00, 0x3F, 0x0E, + 0x00, 0x00, 0x1F, 0x1C, 0x00, 0x00, 0x1F, 0x98, 0x00, 0x00, 0x0F, 0xF8, + 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x03, 0xE0, + 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x03, 0xE0, + 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x03, 0xE0, + 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x03, 0xE0, + 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x07, 0xF0, + 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x3F, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0xF8, + 0xF0, 0x00, 0x3E, 0x38, 0x00, 0x0F, 0x86, 0x00, 0x03, 0xF0, 0xC0, 0x00, + 0x7C, 0x10, 0x00, 0x1F, 0x02, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF8, 0x00, + 0x00, 0x3E, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xFC, + 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF8, 0x00, 0x00, + 0x7E, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xFC, 0x00, + 0x00, 0x1F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x7E, + 0x00, 0x01, 0x0F, 0x80, 0x00, 0x63, 0xF0, 0x00, 0x0C, 0xFC, 0x00, 0x03, + 0xBF, 0x00, 0x00, 0xE7, 0xC0, 0x00, 0x7D, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, + 0xFF, 0xF0, 0xFF, 0xF0, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, + 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x1C, + 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, + 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0F, 0x07, 0xFC, 0xE0, 0x01, 0xC0, + 0x07, 0x00, 0x1C, 0x00, 0x38, 0x00, 0xE0, 0x03, 0x80, 0x07, 0x00, 0x1C, + 0x00, 0x70, 0x00, 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x1C, 0x00, 0x70, 0x01, + 0xC0, 0x03, 0x80, 0x0E, 0x00, 0x38, 0x00, 0x70, 0x01, 0xC0, 0x07, 0x00, + 0x0E, 0x00, 0x38, 0x00, 0xE0, 0x01, 0xC0, 0x07, 0x00, 0x1E, 0x00, 0x38, + 0x00, 0xE0, 0x03, 0xC0, 0x07, 0xFF, 0x83, 0xC0, 0xE0, 0x70, 0x38, 0x1C, + 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, + 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, + 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x3F, 0xFC, + 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x01, 0xF8, 0x00, 0x1F, 0x80, 0x03, 0xDC, + 0x00, 0x39, 0xC0, 0x07, 0x9E, 0x00, 0x70, 0xE0, 0x0F, 0x0F, 0x00, 0xE0, + 0x70, 0x1E, 0x07, 0x81, 0xC0, 0x38, 0x3C, 0x03, 0xC3, 0x80, 0x1C, 0x78, + 0x01, 0xE7, 0x00, 0x0E, 0xF0, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xE0, 0x3C, 0x0F, 0x81, 0xF0, 0x1E, 0x03, 0xC0, 0x38, 0x07, 0x03, + 0xF0, 0x07, 0x0E, 0x03, 0x81, 0xC1, 0xE0, 0x30, 0x78, 0x0E, 0x1E, 0x03, + 0x83, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x3E, 0x00, 0x73, 0x80, 0x70, 0xE0, + 0x70, 0x38, 0x38, 0x0E, 0x1C, 0x03, 0x8F, 0x00, 0xE3, 0xC0, 0x38, 0xF0, + 0x0E, 0x3E, 0x07, 0x8F, 0xC3, 0xE1, 0xFF, 0x3F, 0x1F, 0x07, 0x80, 0x06, + 0x00, 0x01, 0xF0, 0x00, 0x3F, 0x80, 0x00, 0x3C, 0x00, 0x01, 0xE0, 0x00, + 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xF0, + 0x00, 0x07, 0x80, 0x00, 0x3C, 0x7E, 0x01, 0xEF, 0xFC, 0x0F, 0xC3, 0xF0, + 0x7C, 0x07, 0x83, 0xC0, 0x3E, 0x1E, 0x00, 0xF0, 0xF0, 0x07, 0xC7, 0x80, + 0x1E, 0x3C, 0x00, 0xF1, 0xE0, 0x07, 0x8F, 0x00, 0x3C, 0x78, 0x01, 0xE3, + 0xC0, 0x0F, 0x1E, 0x00, 0x70, 0xF0, 0x03, 0x87, 0x80, 0x38, 0x3C, 0x01, + 0xC1, 0xE0, 0x1C, 0x0F, 0xC1, 0xC0, 0x1F, 0xFC, 0x00, 0x3F, 0x80, 0x01, + 0xFC, 0x00, 0xFF, 0xE0, 0x38, 0x3E, 0x0E, 0x03, 0xE3, 0x80, 0x7C, 0xE0, + 0x07, 0x18, 0x00, 0x03, 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, 0x03, 0x80, + 0x00, 0x70, 0x00, 0x0E, 0x00, 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x1B, 0xC0, + 0x02, 0x7C, 0x01, 0x87, 0xE0, 0x60, 0x7F, 0xF8, 0x07, 0xFE, 0x00, 0x3F, + 0x00, 0x00, 0x00, 0x60, 0x00, 0x0F, 0x80, 0x00, 0xFE, 0x00, 0x00, 0x78, + 0x00, 0x01, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x78, 0x00, + 0x01, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x7C, 0x78, 0x07, 0xFD, + 0xE0, 0x3C, 0x3F, 0x81, 0xC0, 0x3E, 0x0E, 0x00, 0xF8, 0x38, 0x01, 0xE1, + 0xE0, 0x07, 0x87, 0x00, 0x1E, 0x3C, 0x00, 0x78, 0xF0, 0x01, 0xE3, 0xC0, + 0x07, 0x8F, 0x00, 0x1E, 0x3C, 0x00, 0x78, 0xF0, 0x01, 0xE3, 0xE0, 0x07, + 0x87, 0x80, 0x1E, 0x1F, 0x00, 0x78, 0x3E, 0x03, 0xE0, 0xFC, 0x1F, 0xF0, + 0xFF, 0xDF, 0x00, 0xFC, 0x60, 0x03, 0xF8, 0x03, 0xFF, 0x01, 0xC1, 0xE0, + 0xC0, 0x3C, 0x70, 0x0F, 0x98, 0x01, 0xE7, 0xFF, 0xFB, 0xFF, 0xFE, 0xE0, + 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xF0, 0x00, 0x3C, 0x00, + 0x1F, 0x00, 0x05, 0xE0, 0x02, 0x7C, 0x01, 0x8F, 0xC1, 0xC3, 0xFF, 0xE0, + 0x7F, 0xF0, 0x07, 0xF0, 0x00, 0x00, 0x7E, 0x00, 0xFF, 0xC0, 0xE3, 0xE0, + 0x60, 0x70, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x1E, 0x00, 0x0F, 0x00, + 0x07, 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x07, 0xFF, 0x83, 0xFF, 0xC0, 0x3C, + 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x07, 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x00, + 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x07, 0x80, + 0x03, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x3F, + 0x00, 0xFF, 0xF0, 0x00, 0x01, 0xF8, 0x00, 0x3F, 0xF0, 0x03, 0xC7, 0xFE, + 0x3C, 0x1F, 0xF1, 0xC0, 0x70, 0x1E, 0x03, 0xC0, 0xF0, 0x0E, 0x07, 0x80, + 0x70, 0x3C, 0x03, 0x81, 0xE0, 0x1C, 0x07, 0x80, 0xC0, 0x3E, 0x0E, 0x00, + 0x78, 0xE0, 0x01, 0xFC, 0x00, 0x18, 0x00, 0x01, 0x80, 0x00, 0x18, 0x00, + 0x01, 0xE0, 0x00, 0x0F, 0xFF, 0xC0, 0x3F, 0xFF, 0x80, 0xFF, 0xFE, 0x0C, + 0x00, 0x38, 0xC0, 0x00, 0x4C, 0x00, 0x02, 0x60, 0x00, 0x17, 0x00, 0x01, + 0x38, 0x00, 0x09, 0xE0, 0x00, 0x87, 0xC0, 0x38, 0x1F, 0xFF, 0x00, 0x3F, + 0xC0, 0x00, 0x06, 0x00, 0x00, 0xF8, 0x00, 0x0F, 0xE0, 0x00, 0x07, 0x80, + 0x00, 0x1E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x80, 0x00, + 0x1E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x87, 0xE0, 0x1E, + 0x7F, 0xC0, 0x7B, 0x0F, 0x81, 0xF8, 0x1E, 0x07, 0x80, 0x3C, 0x1E, 0x00, + 0xF0, 0x78, 0x03, 0xC1, 0xE0, 0x0F, 0x07, 0x80, 0x3C, 0x1E, 0x00, 0xF0, + 0x78, 0x03, 0xC1, 0xE0, 0x0F, 0x07, 0x80, 0x3C, 0x1E, 0x00, 0xF0, 0x78, + 0x03, 0xC1, 0xE0, 0x0F, 0x07, 0x80, 0x3C, 0x1E, 0x00, 0xF0, 0x78, 0x03, + 0xC3, 0xF0, 0x1F, 0x9F, 0xF1, 0xFF, 0x0E, 0x03, 0xE0, 0x7C, 0x0F, 0x80, + 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x70, + 0x7E, 0x1F, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, + 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x07, + 0xE7, 0xFF, 0x00, 0xE0, 0x1F, 0x01, 0xF0, 0x1F, 0x00, 0xE0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x70, 0x3F, 0x07, + 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, + 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, + 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xE0, 0x0E, 0xE0, + 0xEF, 0x1C, 0xFF, 0x87, 0xE0, 0x06, 0x00, 0x00, 0x7C, 0x00, 0x03, 0xF8, + 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x80, + 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x78, 0x00, + 0x00, 0xF0, 0x7F, 0xE1, 0xE0, 0x3E, 0x03, 0xC0, 0x70, 0x07, 0x81, 0x80, + 0x0F, 0x06, 0x00, 0x1E, 0x18, 0x00, 0x3C, 0x60, 0x00, 0x79, 0x80, 0x00, + 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x03, 0xDE, 0x00, 0x07, 0x9E, 0x00, 0x0F, + 0x3E, 0x00, 0x1E, 0x3E, 0x00, 0x3C, 0x3E, 0x00, 0x78, 0x3C, 0x00, 0xF0, + 0x3C, 0x01, 0xE0, 0x7C, 0x03, 0xC0, 0x7C, 0x0F, 0xC0, 0xFE, 0x7F, 0xE3, + 0xFF, 0x03, 0x03, 0xE1, 0xFC, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, + 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, + 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x01, + 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x07, 0xE7, 0xFF, 0x1E, 0x1F, 0x01, + 0xF8, 0x1F, 0xCF, 0xF0, 0xFF, 0x80, 0xFF, 0x0F, 0x70, 0xF8, 0x0F, 0x81, + 0xF8, 0x0F, 0x01, 0xE0, 0x1E, 0x00, 0xF0, 0x3C, 0x03, 0xC0, 0x1E, 0x07, + 0x80, 0x78, 0x03, 0xC0, 0xF0, 0x0F, 0x00, 0x78, 0x1E, 0x01, 0xE0, 0x0F, + 0x03, 0xC0, 0x3C, 0x01, 0xE0, 0x78, 0x07, 0x80, 0x3C, 0x0F, 0x00, 0xF0, + 0x07, 0x81, 0xE0, 0x1E, 0x00, 0xF0, 0x3C, 0x03, 0xC0, 0x1E, 0x07, 0x80, + 0x78, 0x03, 0xC0, 0xF0, 0x0F, 0x00, 0x78, 0x1E, 0x01, 0xE0, 0x0F, 0x03, + 0xC0, 0x3C, 0x01, 0xE0, 0x78, 0x07, 0x80, 0x3C, 0x1F, 0x81, 0xF8, 0x0F, + 0xCF, 0xFC, 0xFF, 0xC7, 0xFE, 0x1E, 0x1F, 0x83, 0xF9, 0xFF, 0x03, 0xFC, + 0x3E, 0x07, 0xC0, 0x7C, 0x1E, 0x00, 0xF0, 0x78, 0x03, 0xC1, 0xE0, 0x0F, + 0x07, 0x80, 0x3C, 0x1E, 0x00, 0xF0, 0x78, 0x03, 0xC1, 0xE0, 0x0F, 0x07, + 0x80, 0x3C, 0x1E, 0x00, 0xF0, 0x78, 0x03, 0xC1, 0xE0, 0x0F, 0x07, 0x80, + 0x3C, 0x1E, 0x00, 0xF0, 0x78, 0x03, 0xC1, 0xE0, 0x0F, 0x0F, 0xC0, 0x7E, + 0x7F, 0xC3, 0xFC, 0x01, 0xFE, 0x00, 0x1F, 0xFE, 0x00, 0xF0, 0x7C, 0x0F, + 0x80, 0xF8, 0x3C, 0x01, 0xF1, 0xE0, 0x03, 0xE7, 0x80, 0x0F, 0xBE, 0x00, + 0x3F, 0xF8, 0x00, 0x7F, 0xE0, 0x01, 0xFF, 0x80, 0x07, 0xFE, 0x00, 0x1F, + 0xF8, 0x00, 0x7F, 0xF0, 0x01, 0xE7, 0xC0, 0x07, 0x9F, 0x80, 0x3E, 0x3E, + 0x00, 0xF0, 0x7C, 0x07, 0x80, 0xF8, 0x3C, 0x01, 0xFF, 0xE0, 0x00, 0xFC, + 0x00, 0x0E, 0x3F, 0x07, 0xF7, 0xFE, 0x07, 0xE0, 0xF8, 0x3E, 0x03, 0xE1, + 0xE0, 0x0F, 0x0F, 0x00, 0x7C, 0x78, 0x03, 0xE3, 0xC0, 0x0F, 0x1E, 0x00, + 0x78, 0xF0, 0x03, 0xC7, 0x80, 0x1E, 0x3C, 0x00, 0xF1, 0xE0, 0x07, 0x8F, + 0x00, 0x38, 0x78, 0x03, 0xC3, 0xC0, 0x1E, 0x1E, 0x00, 0xE0, 0xF8, 0x0E, + 0x07, 0xE0, 0xE0, 0x3D, 0xFE, 0x01, 0xE7, 0xC0, 0x0F, 0x00, 0x00, 0x78, + 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, + 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x1F, 0x80, 0x03, 0xFF, 0x80, 0x00, 0x01, + 0xF8, 0x20, 0x3F, 0xF3, 0x03, 0xC1, 0xF8, 0x3C, 0x07, 0xC3, 0xC0, 0x1E, + 0x1C, 0x00, 0xF1, 0xE0, 0x07, 0x8E, 0x00, 0x3C, 0xF0, 0x01, 0xE7, 0x80, + 0x0F, 0x3C, 0x00, 0x79, 0xE0, 0x03, 0xCF, 0x00, 0x1E, 0x78, 0x00, 0xF3, + 0xE0, 0x07, 0x9F, 0x00, 0x3C, 0x7C, 0x01, 0xE3, 0xE0, 0x1F, 0x0F, 0xC1, + 0xF8, 0x3F, 0xF3, 0xC0, 0x7E, 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x80, + 0x00, 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, + 0xC0, 0x00, 0x1E, 0x00, 0x03, 0xF8, 0x00, 0x7F, 0xE0, 0x06, 0x3C, 0xFC, + 0xFE, 0xFA, 0x78, 0xF8, 0x71, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, 0x00, + 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, + 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x01, 0xF8, 0x0F, 0xFC, + 0x00, 0x1F, 0x91, 0x87, 0x98, 0x1D, 0xC0, 0x6E, 0x03, 0x70, 0x0B, 0xC0, + 0x5F, 0x80, 0x7E, 0x01, 0xFC, 0x07, 0xF0, 0x0F, 0xE0, 0x3F, 0x00, 0x7E, + 0x01, 0xF0, 0x07, 0xC0, 0x3E, 0x01, 0xF8, 0x0D, 0xE0, 0xC8, 0xF8, 0x00, + 0x04, 0x00, 0xC0, 0x0C, 0x01, 0xC0, 0x3C, 0x07, 0xFC, 0xFF, 0xC3, 0xC0, + 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, + 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xE2, + 0x1F, 0xC0, 0xF8, 0xFC, 0x0F, 0xE1, 0xF0, 0x0F, 0x83, 0xC0, 0x1E, 0x0F, + 0x00, 0x78, 0x3C, 0x01, 0xE0, 0xF0, 0x07, 0x83, 0xC0, 0x1E, 0x0F, 0x00, + 0x78, 0x3C, 0x01, 0xE0, 0xF0, 0x07, 0x83, 0xC0, 0x1E, 0x0F, 0x00, 0x78, + 0x3C, 0x01, 0xE0, 0xF0, 0x07, 0x83, 0xC0, 0x1E, 0x0F, 0x00, 0x78, 0x3C, + 0x01, 0xE0, 0xF8, 0x0F, 0x81, 0xF0, 0xFF, 0x03, 0xFE, 0x7F, 0x07, 0xE1, + 0xC0, 0xFF, 0x81, 0xFC, 0xFC, 0x01, 0xC1, 0xE0, 0x07, 0x07, 0x80, 0x18, + 0x0F, 0x00, 0x60, 0x3C, 0x01, 0x00, 0x78, 0x0C, 0x01, 0xE0, 0x30, 0x07, + 0x81, 0x80, 0x0F, 0x06, 0x00, 0x3C, 0x10, 0x00, 0x78, 0xC0, 0x01, 0xE3, + 0x00, 0x03, 0x98, 0x00, 0x0F, 0x60, 0x00, 0x3D, 0x00, 0x00, 0x7C, 0x00, + 0x01, 0xF0, 0x00, 0x03, 0x80, 0x00, 0x0E, 0x00, 0x00, 0x30, 0x00, 0x00, + 0x40, 0x00, 0xFF, 0x8F, 0xF8, 0x3F, 0x7E, 0x07, 0xE0, 0x0E, 0x3E, 0x03, + 0xC0, 0x0C, 0x1E, 0x03, 0xE0, 0x0C, 0x1E, 0x01, 0xE0, 0x0C, 0x1E, 0x01, + 0xE0, 0x18, 0x0F, 0x00, 0xF0, 0x18, 0x0F, 0x01, 0xF0, 0x10, 0x07, 0x81, + 0xF0, 0x30, 0x07, 0x81, 0x78, 0x30, 0x07, 0x83, 0x78, 0x60, 0x03, 0xC3, + 0x38, 0x60, 0x03, 0xC6, 0x3C, 0x40, 0x01, 0xC6, 0x3C, 0xC0, 0x01, 0xEC, + 0x1E, 0xC0, 0x01, 0xEC, 0x1F, 0x80, 0x00, 0xF8, 0x0F, 0x80, 0x00, 0xF8, + 0x0F, 0x00, 0x00, 0x70, 0x0F, 0x00, 0x00, 0x70, 0x07, 0x00, 0x00, 0x60, + 0x06, 0x00, 0x00, 0x20, 0x02, 0x00, 0x7F, 0xE7, 0xF0, 0x7E, 0x0F, 0x00, + 0xF8, 0x38, 0x01, 0xE0, 0xC0, 0x07, 0xC6, 0x00, 0x0F, 0x30, 0x00, 0x1E, + 0xC0, 0x00, 0x7E, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x07, 0xC0, + 0x00, 0x3F, 0x00, 0x00, 0xDE, 0x00, 0x06, 0x7C, 0x00, 0x30, 0xF0, 0x01, + 0xC1, 0xE0, 0x06, 0x07, 0xC0, 0x30, 0x0F, 0x01, 0xC0, 0x1E, 0x0F, 0x00, + 0xFC, 0xFE, 0x07, 0xFC, 0xFF, 0xC0, 0xFC, 0xFC, 0x01, 0xE1, 0xE0, 0x03, + 0x07, 0x80, 0x18, 0x0F, 0x00, 0x60, 0x3C, 0x01, 0x80, 0x78, 0x0C, 0x01, + 0xE0, 0x30, 0x03, 0xC0, 0xC0, 0x0F, 0x06, 0x00, 0x3E, 0x18, 0x00, 0x78, + 0x40, 0x01, 0xF3, 0x00, 0x03, 0xCC, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0x80, + 0x00, 0x7C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x06, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x40, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x60, + 0x00, 0x01, 0x80, 0x00, 0x0C, 0x00, 0x0F, 0xF0, 0x00, 0x7F, 0x80, 0x01, + 0xFC, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7F, 0xFF, 0x9F, 0xFF, 0xE6, 0x00, + 0xF1, 0x00, 0x78, 0x40, 0x3E, 0x00, 0x0F, 0x00, 0x07, 0x80, 0x03, 0xE0, + 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x07, 0x80, 0x03, + 0xE0, 0x01, 0xF0, 0x04, 0x78, 0x01, 0x3E, 0x00, 0xDF, 0x00, 0x37, 0x80, + 0x1F, 0xFF, 0xFE, 0xFF, 0xFF, 0x80, 0x01, 0xE0, 0x78, 0x1C, 0x07, 0x80, + 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, + 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x70, 0x1C, 0x0E, 0x00, 0x70, + 0x07, 0x00, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, + 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x01, 0xC0, + 0x1E, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xE0, 0x0F, 0x00, 0x70, 0x0F, 0x00, 0xE0, 0x1C, 0x03, + 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, + 0x70, 0x0E, 0x01, 0xC0, 0x1C, 0x01, 0xC0, 0x0E, 0x07, 0x01, 0xC0, 0x70, + 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0E, + 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x3C, 0x07, 0x03, 0xC0, 0xF0, 0x00, + 0x1F, 0x80, 0x00, 0xFF, 0x80, 0xC7, 0x0F, 0x87, 0xB8, 0x0F, 0xFC, 0x00, + 0x07, 0xC0}; + +const GFXglyph FreeSerif24pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 12, 0, 1}, // 0x20 ' ' + {0, 5, 32, 16, 6, -31}, // 0x21 '!' + {20, 12, 12, 19, 4, -31}, // 0x22 '"' + {38, 23, 31, 23, 0, -30}, // 0x23 '#' + {128, 19, 37, 24, 2, -33}, // 0x24 '$' + {216, 33, 32, 39, 3, -30}, // 0x25 '%' + {348, 32, 33, 37, 2, -31}, // 0x26 '&' + {480, 4, 12, 9, 3, -31}, // 0x27 ''' + {486, 12, 40, 16, 2, -31}, // 0x28 '(' + {546, 12, 40, 16, 2, -30}, // 0x29 ')' + {606, 16, 19, 24, 4, -30}, // 0x2A '*' + {644, 23, 23, 27, 2, -22}, // 0x2B '+' + {711, 6, 11, 12, 2, -4}, // 0x2C ',' + {720, 11, 2, 16, 2, -10}, // 0x2D '-' + {723, 5, 5, 12, 3, -3}, // 0x2E '.' + {727, 14, 32, 14, 0, -30}, // 0x2F '/' + {783, 22, 33, 23, 1, -31}, // 0x30 '0' + {874, 13, 32, 24, 5, -31}, // 0x31 '1' + {926, 21, 31, 23, 1, -30}, // 0x32 '2' + {1008, 18, 32, 23, 2, -30}, // 0x33 '3' + {1080, 21, 31, 24, 1, -30}, // 0x34 '4' + {1162, 19, 33, 24, 2, -31}, // 0x35 '5' + {1241, 21, 33, 23, 2, -31}, // 0x36 '6' + {1328, 20, 31, 24, 1, -30}, // 0x37 '7' + {1406, 18, 33, 23, 3, -31}, // 0x38 '8' + {1481, 21, 33, 24, 1, -31}, // 0x39 '9' + {1568, 5, 22, 12, 4, -20}, // 0x3A ':' + {1582, 6, 27, 12, 3, -20}, // 0x3B ';' + {1603, 24, 25, 27, 1, -24}, // 0x3C '<' + {1678, 24, 11, 27, 1, -16}, // 0x3D '=' + {1711, 24, 25, 27, 2, -23}, // 0x3E '>' + {1786, 17, 32, 21, 3, -31}, // 0x3F '?' + {1854, 32, 33, 41, 4, -31}, // 0x40 '@' + {1986, 32, 32, 34, 1, -31}, // 0x41 'A' + {2114, 27, 31, 30, 0, -30}, // 0x42 'B' + {2219, 28, 33, 31, 2, -31}, // 0x43 'C' + {2335, 31, 31, 34, 1, -30}, // 0x44 'D' + {2456, 27, 31, 29, 2, -30}, // 0x45 'E' + {2561, 24, 31, 27, 2, -30}, // 0x46 'F' + {2654, 31, 33, 35, 2, -31}, // 0x47 'G' + {2782, 30, 31, 34, 2, -30}, // 0x48 'H' + {2899, 13, 31, 15, 1, -30}, // 0x49 'I' + {2950, 17, 32, 18, 0, -30}, // 0x4A 'J' + {3018, 32, 31, 33, 1, -30}, // 0x4B 'K' + {3142, 26, 31, 29, 2, -30}, // 0x4C 'L' + {3243, 39, 31, 41, 1, -30}, // 0x4D 'M' + {3395, 32, 32, 34, 1, -30}, // 0x4E 'N' + {3523, 30, 33, 34, 2, -31}, // 0x4F 'O' + {3647, 23, 31, 27, 2, -30}, // 0x50 'P' + {3737, 31, 40, 34, 2, -31}, // 0x51 'Q' + {3892, 28, 31, 31, 2, -30}, // 0x52 'R' + {4001, 21, 33, 25, 2, -31}, // 0x53 'S' + {4088, 27, 31, 28, 1, -30}, // 0x54 'T' + {4193, 32, 32, 34, 1, -30}, // 0x55 'U' + {4321, 32, 32, 33, 0, -30}, // 0x56 'V' + {4449, 44, 32, 45, 0, -30}, // 0x57 'W' + {4625, 33, 31, 34, 0, -30}, // 0x58 'X' + {4753, 32, 31, 33, 0, -30}, // 0x59 'Y' + {4877, 27, 31, 29, 1, -30}, // 0x5A 'Z' + {4982, 9, 38, 16, 4, -30}, // 0x5B '[' + {5025, 14, 32, 14, 0, -30}, // 0x5C '\' + {5081, 9, 38, 16, 3, -30}, // 0x5D ']' + {5124, 20, 17, 22, 1, -30}, // 0x5E '^' + {5167, 24, 2, 23, 0, 5}, // 0x5F '_' + {5173, 10, 8, 12, 1, -31}, // 0x60 '`' + {5183, 18, 21, 20, 1, -20}, // 0x61 'a' + {5231, 21, 32, 24, 1, -31}, // 0x62 'b' + {5315, 19, 21, 21, 1, -20}, // 0x63 'c' + {5365, 22, 32, 23, 1, -31}, // 0x64 'd' + {5453, 18, 21, 21, 1, -20}, // 0x65 'e' + {5501, 17, 33, 18, 0, -32}, // 0x66 'f' + {5572, 21, 31, 22, 1, -20}, // 0x67 'g' + {5654, 22, 32, 23, 0, -31}, // 0x68 'h' + {5742, 11, 32, 13, 0, -31}, // 0x69 'i' + {5786, 12, 42, 16, 0, -31}, // 0x6A 'j' + {5849, 23, 32, 24, 1, -31}, // 0x6B 'k' + {5941, 11, 32, 12, 0, -31}, // 0x6C 'l' + {5985, 35, 21, 37, 1, -20}, // 0x6D 'm' + {6077, 22, 21, 23, 0, -20}, // 0x6E 'n' + {6135, 22, 21, 23, 1, -20}, // 0x6F 'o' + {6193, 21, 31, 24, 1, -20}, // 0x70 'p' + {6275, 21, 31, 23, 1, -20}, // 0x71 'q' + {6357, 15, 21, 16, 1, -20}, // 0x72 'r' + {6397, 13, 21, 17, 2, -20}, // 0x73 's' + {6432, 12, 26, 13, 1, -25}, // 0x74 't' + {6471, 22, 21, 23, 1, -20}, // 0x75 'u' + {6529, 22, 22, 22, 0, -20}, // 0x76 'v' + {6590, 32, 22, 32, 0, -20}, // 0x77 'w' + {6678, 22, 21, 23, 0, -20}, // 0x78 'x' + {6736, 22, 31, 22, 0, -20}, // 0x79 'y' + {6822, 18, 21, 20, 1, -20}, // 0x7A 'z' + {6870, 11, 41, 23, 5, -31}, // 0x7B '{' + {6927, 3, 32, 9, 3, -30}, // 0x7C '|' + {6939, 11, 41, 23, 7, -31}, // 0x7D '}' + {6996, 22, 5, 23, 1, -13}}; // 0x7E '~' + +const GFXfont FreeSerif24pt7b PROGMEM = {(uint8_t *)FreeSerif24pt7bBitmaps, + (GFXglyph *)FreeSerif24pt7bGlyphs, + 0x20, 0x7E, 56}; + +// Approx. 7682 bytes diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerif9pt7b.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerif9pt7b.h new file mode 100644 index 0000000..22f82e4 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerif9pt7b.h @@ -0,0 +1,197 @@ +#pragma once +#include + +const uint8_t FreeSerif9pt7bBitmaps[] PROGMEM = { + 0xFF, 0xEA, 0x03, 0xDE, 0xF7, 0x20, 0x11, 0x09, 0x04, 0x82, 0x4F, 0xF9, + 0x10, 0x89, 0xFF, 0x24, 0x12, 0x09, 0x0C, 0x80, 0x10, 0x7C, 0xD6, 0xD2, + 0xD0, 0xF0, 0x38, 0x1E, 0x17, 0x93, 0x93, 0xD6, 0x7C, 0x10, 0x38, 0x43, + 0x3C, 0x39, 0x21, 0x8A, 0x0C, 0x50, 0x65, 0x39, 0xCB, 0x20, 0xB9, 0x05, + 0x88, 0x4C, 0x44, 0x64, 0x21, 0xC0, 0x0E, 0x00, 0xC8, 0x06, 0x40, 0x32, + 0x01, 0xA0, 0x07, 0x78, 0x31, 0x87, 0x88, 0x46, 0x86, 0x34, 0x30, 0xC1, + 0xC7, 0x17, 0xCF, 0x00, 0xFE, 0x08, 0x88, 0x84, 0x63, 0x18, 0xC6, 0x10, + 0x82, 0x08, 0x20, 0x82, 0x08, 0x21, 0x0C, 0x63, 0x18, 0xC4, 0x22, 0x22, + 0x00, 0x63, 0x9A, 0xDC, 0x72, 0xB6, 0x08, 0x08, 0x04, 0x02, 0x01, 0x0F, + 0xF8, 0x40, 0x20, 0x10, 0x08, 0x00, 0xD8, 0xF0, 0xF0, 0x08, 0x84, 0x22, + 0x10, 0x8C, 0x42, 0x31, 0x00, 0x1C, 0x31, 0x98, 0xD8, 0x3C, 0x1E, 0x0F, + 0x07, 0x83, 0xC1, 0xE0, 0xD8, 0xC4, 0x61, 0xC0, 0x13, 0x8C, 0x63, 0x18, + 0xC6, 0x31, 0x8C, 0x67, 0x80, 0x3C, 0x4E, 0x86, 0x06, 0x06, 0x04, 0x0C, + 0x08, 0x10, 0x20, 0x41, 0xFE, 0x3C, 0xC6, 0x06, 0x04, 0x1C, 0x3E, 0x07, + 0x03, 0x03, 0x03, 0x06, 0xF8, 0x04, 0x18, 0x71, 0x64, 0xC9, 0xA3, 0x46, + 0xFE, 0x18, 0x30, 0x60, 0x0F, 0x10, 0x20, 0x3C, 0x0E, 0x07, 0x03, 0x03, + 0x03, 0x02, 0x04, 0xF8, 0x07, 0x1C, 0x30, 0x60, 0x60, 0xDC, 0xE6, 0xC3, + 0xC3, 0xC3, 0x43, 0x66, 0x3C, 0x7F, 0x82, 0x02, 0x02, 0x04, 0x04, 0x04, + 0x08, 0x08, 0x08, 0x10, 0x10, 0x3C, 0x8F, 0x1E, 0x3E, 0x4F, 0x06, 0x36, + 0xC7, 0x8F, 0x1B, 0x33, 0xC0, 0x3C, 0x66, 0xC2, 0xC3, 0xC3, 0xC3, 0xC3, + 0x63, 0x3F, 0x06, 0x06, 0x0C, 0x38, 0x60, 0xF0, 0x0F, 0xD8, 0x00, 0x03, + 0x28, 0x01, 0x87, 0x0E, 0x1C, 0x0C, 0x03, 0x80, 0x70, 0x0E, 0x00, 0x80, + 0xFF, 0x80, 0x00, 0x00, 0x0F, 0xF8, 0x80, 0x1C, 0x01, 0xC0, 0x1C, 0x01, + 0xC0, 0xE0, 0xE0, 0xE0, 0xC0, 0x00, 0x79, 0x1A, 0x18, 0x30, 0x60, 0x83, + 0x04, 0x10, 0x20, 0x40, 0x03, 0x00, 0x0F, 0x83, 0x8C, 0x60, 0x26, 0x02, + 0xC7, 0x9C, 0xC9, 0xD8, 0x9D, 0x99, 0xD9, 0x26, 0xEC, 0x60, 0x03, 0x04, + 0x0F, 0x80, 0x02, 0x00, 0x10, 0x01, 0xC0, 0x16, 0x00, 0x98, 0x04, 0xC0, + 0x43, 0x03, 0xF8, 0x20, 0x61, 0x03, 0x18, 0x1D, 0xE1, 0xF0, 0xFF, 0x86, + 0x1C, 0xC1, 0x98, 0x33, 0x0C, 0x7E, 0x0C, 0x31, 0x83, 0x30, 0x66, 0x0C, + 0xC3, 0x7F, 0xC0, 0x1F, 0x26, 0x1D, 0x81, 0xE0, 0x1C, 0x01, 0x80, 0x30, + 0x06, 0x00, 0xC0, 0x0C, 0x00, 0xC1, 0x8F, 0xC0, 0xFF, 0x03, 0x1C, 0x30, + 0x63, 0x07, 0x30, 0x33, 0x03, 0x30, 0x33, 0x03, 0x30, 0x33, 0x06, 0x30, + 0xCF, 0xF0, 0xFF, 0x98, 0x26, 0x01, 0x80, 0x61, 0x1F, 0xC6, 0x11, 0x80, + 0x60, 0x18, 0x16, 0x0F, 0xFE, 0xFF, 0xB0, 0x58, 0x0C, 0x06, 0x13, 0xF9, + 0x84, 0xC0, 0x60, 0x30, 0x18, 0x1E, 0x00, 0x1F, 0x23, 0x0E, 0x60, 0x26, + 0x00, 0xC0, 0x0C, 0x0F, 0xC0, 0x6C, 0x06, 0xC0, 0x66, 0x06, 0x30, 0x60, + 0xF8, 0xF1, 0xEC, 0x19, 0x83, 0x30, 0x66, 0x0C, 0xFF, 0x98, 0x33, 0x06, + 0x60, 0xCC, 0x19, 0x83, 0x78, 0xF0, 0xF6, 0x66, 0x66, 0x66, 0x66, 0x6F, + 0x3C, 0x61, 0x86, 0x18, 0x61, 0x86, 0x18, 0x6D, 0xBC, 0xF3, 0xE6, 0x08, + 0x61, 0x06, 0x20, 0x64, 0x07, 0x80, 0x6C, 0x06, 0x60, 0x63, 0x06, 0x18, + 0x60, 0xCF, 0x3F, 0xF0, 0x18, 0x06, 0x01, 0x80, 0x60, 0x18, 0x06, 0x01, + 0x80, 0x60, 0x18, 0x16, 0x0B, 0xFE, 0xF0, 0x0E, 0x70, 0x38, 0xE0, 0x71, + 0xE1, 0x62, 0xC2, 0xC5, 0xC9, 0x89, 0x93, 0x13, 0x26, 0x23, 0x8C, 0x47, + 0x18, 0x84, 0x33, 0x88, 0xF0, 0xE0, 0xEE, 0x09, 0xC1, 0x2C, 0x25, 0xC4, + 0x9C, 0x91, 0x92, 0x1A, 0x41, 0xC8, 0x19, 0x03, 0x70, 0x20, 0x1F, 0x06, + 0x31, 0x83, 0x20, 0x2C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x68, 0x09, + 0x83, 0x18, 0xC1, 0xF0, 0xFE, 0x31, 0x98, 0x6C, 0x36, 0x1B, 0x19, 0xF8, + 0xC0, 0x60, 0x30, 0x18, 0x1E, 0x00, 0x1F, 0x06, 0x31, 0x83, 0x20, 0x2C, + 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x68, 0x19, 0x83, 0x18, 0xC0, 0xE0, + 0x0E, 0x00, 0xE0, 0x07, 0xFE, 0x0C, 0x61, 0x86, 0x30, 0xC6, 0x18, 0xC6, + 0x1F, 0x83, 0x70, 0x67, 0x0C, 0x71, 0x87, 0x78, 0x70, 0x1D, 0x31, 0x98, + 0x4C, 0x07, 0x80, 0xE0, 0x1C, 0x07, 0x01, 0xA0, 0xD8, 0xCB, 0xC0, 0xFF, + 0xF8, 0xCE, 0x18, 0x83, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, + 0xC0, 0x18, 0x07, 0x80, 0xF0, 0xEC, 0x09, 0x81, 0x30, 0x26, 0x04, 0xC0, + 0x98, 0x13, 0x02, 0x60, 0x4C, 0x08, 0xC2, 0x0F, 0x80, 0xF8, 0x77, 0x02, + 0x30, 0x23, 0x04, 0x18, 0x41, 0x84, 0x0C, 0x80, 0xC8, 0x07, 0x00, 0x70, + 0x02, 0x00, 0x20, 0xFB, 0xE7, 0xB0, 0xC0, 0x8C, 0x20, 0x86, 0x18, 0x41, + 0x8C, 0x40, 0xCB, 0x20, 0x65, 0x90, 0x1A, 0x70, 0x0E, 0x38, 0x03, 0x1C, + 0x01, 0x04, 0x00, 0x82, 0x00, 0xFC, 0xF9, 0x83, 0x06, 0x10, 0x19, 0x00, + 0xD0, 0x03, 0x00, 0x1C, 0x01, 0x30, 0x11, 0xC1, 0x86, 0x08, 0x19, 0xE3, + 0xF0, 0xF8, 0xF6, 0x06, 0x30, 0x41, 0x88, 0x1D, 0x00, 0xD0, 0x06, 0x00, + 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0xF0, 0x3F, 0xCC, 0x11, 0x06, 0x01, + 0x80, 0x70, 0x0C, 0x03, 0x00, 0xE0, 0x38, 0x06, 0x05, 0xC1, 0x7F, 0xE0, + 0xFB, 0x6D, 0xB6, 0xDB, 0x6D, 0xB8, 0x82, 0x10, 0x82, 0x10, 0x86, 0x10, + 0x86, 0x10, 0xED, 0xB6, 0xDB, 0x6D, 0xB6, 0xF8, 0x18, 0x1C, 0x34, 0x26, + 0x62, 0x42, 0xC1, 0xFF, 0x80, 0x84, 0x20, 0x79, 0x98, 0x30, 0xE6, 0xD9, + 0xB3, 0x3F, 0x20, 0x70, 0x18, 0x0C, 0x06, 0x03, 0x71, 0xCC, 0xC3, 0x61, + 0xB0, 0xD8, 0x6C, 0x63, 0xE0, 0x3C, 0xCF, 0x06, 0x0C, 0x18, 0x18, 0x9E, + 0x01, 0x03, 0x80, 0xC0, 0x60, 0x31, 0xD9, 0x9D, 0x86, 0xC3, 0x61, 0xB0, + 0xCC, 0x63, 0xF0, 0x3C, 0x46, 0xFE, 0xC0, 0xC0, 0xE1, 0x62, 0x3C, 0x1E, + 0x41, 0x83, 0x06, 0x1E, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x0F, 0x00, 0x3C, + 0x19, 0xF6, 0x31, 0x8C, 0x1E, 0x08, 0x04, 0x01, 0xFC, 0x40, 0xB0, 0x2E, + 0x11, 0xF8, 0x20, 0x70, 0x18, 0x0C, 0x06, 0x03, 0x71, 0xCC, 0xC6, 0x63, + 0x31, 0x98, 0xCC, 0x6F, 0x78, 0x60, 0x02, 0xE6, 0x66, 0x66, 0xF0, 0x18, + 0x00, 0x33, 0x8C, 0x63, 0x18, 0xC6, 0x31, 0x8B, 0x80, 0x20, 0x70, 0x18, + 0x0C, 0x06, 0x03, 0x3D, 0x88, 0xD8, 0x78, 0x36, 0x19, 0x8C, 0x6F, 0x78, + 0x2E, 0x66, 0x66, 0x66, 0x66, 0x66, 0xF0, 0xEE, 0x71, 0xCE, 0x66, 0x31, + 0x98, 0xC6, 0x63, 0x19, 0x8C, 0x66, 0x31, 0xBD, 0xEF, 0xEE, 0x39, 0x98, + 0xCC, 0x66, 0x33, 0x19, 0x8D, 0xEF, 0x3E, 0x31, 0xB0, 0x78, 0x3C, 0x1E, + 0x0D, 0x8C, 0x7C, 0xEE, 0x39, 0x98, 0x6C, 0x36, 0x1B, 0x0D, 0x8C, 0xFC, + 0x60, 0x30, 0x18, 0x1E, 0x00, 0x3D, 0x31, 0xB0, 0xD8, 0x6C, 0x36, 0x1B, + 0x8C, 0xFE, 0x03, 0x01, 0x80, 0xC0, 0xF0, 0x6D, 0xC6, 0x18, 0x61, 0x86, + 0x3C, 0x76, 0x38, 0x58, 0x3E, 0x38, 0xFE, 0x27, 0x98, 0xC6, 0x31, 0x8C, + 0x38, 0xE7, 0x31, 0x98, 0xCC, 0x66, 0x33, 0x19, 0x8C, 0x7F, 0xF3, 0x61, + 0x22, 0x32, 0x14, 0x1C, 0x08, 0x08, 0xEF, 0x36, 0x61, 0x62, 0x22, 0x32, + 0x35, 0x41, 0x9C, 0x18, 0x81, 0x08, 0xF7, 0x12, 0x0E, 0x03, 0x01, 0xC1, + 0x21, 0x09, 0xCF, 0xF3, 0x61, 0x62, 0x32, 0x34, 0x14, 0x1C, 0x08, 0x08, + 0x08, 0x10, 0xE0, 0xFD, 0x18, 0x60, 0x83, 0x0C, 0x70, 0xFE, 0x19, 0x8C, + 0x63, 0x18, 0xC4, 0x61, 0x8C, 0x63, 0x18, 0xC3, 0xFF, 0xF0, 0xC3, 0x18, + 0xC6, 0x31, 0x84, 0x33, 0x18, 0xC6, 0x31, 0x98, 0x70, 0x24, 0xC1, 0xC0}; + +const GFXglyph FreeSerif9pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 5, 0, 1}, // 0x20 ' ' + {0, 2, 12, 6, 2, -11}, // 0x21 '!' + {3, 5, 4, 7, 1, -11}, // 0x22 '"' + {6, 9, 12, 9, 0, -11}, // 0x23 '#' + {20, 8, 14, 9, 1, -12}, // 0x24 '$' + {34, 13, 12, 15, 1, -11}, // 0x25 '%' + {54, 13, 13, 14, 1, -12}, // 0x26 '&' + {76, 2, 4, 4, 1, -11}, // 0x27 ''' + {77, 5, 15, 6, 1, -11}, // 0x28 '(' + {87, 5, 15, 6, 0, -11}, // 0x29 ')' + {97, 6, 8, 9, 3, -11}, // 0x2A '*' + {103, 9, 9, 10, 0, -8}, // 0x2B '+' + {114, 2, 3, 4, 2, 0}, // 0x2C ',' + {115, 4, 1, 6, 1, -3}, // 0x2D '-' + {116, 2, 2, 5, 1, -1}, // 0x2E '.' + {117, 5, 12, 5, 0, -11}, // 0x2F '/' + {125, 9, 13, 9, 0, -12}, // 0x30 '0' + {140, 5, 13, 9, 2, -12}, // 0x31 '1' + {149, 8, 12, 9, 1, -11}, // 0x32 '2' + {161, 8, 12, 9, 0, -11}, // 0x33 '3' + {173, 7, 12, 9, 1, -11}, // 0x34 '4' + {184, 8, 12, 9, 0, -11}, // 0x35 '5' + {196, 8, 13, 9, 1, -12}, // 0x36 '6' + {209, 8, 12, 9, 0, -11}, // 0x37 '7' + {221, 7, 13, 9, 1, -12}, // 0x38 '8' + {233, 8, 14, 9, 1, -12}, // 0x39 '9' + {247, 2, 8, 5, 1, -7}, // 0x3A ':' + {249, 3, 10, 5, 1, -7}, // 0x3B ';' + {253, 9, 9, 10, 1, -8}, // 0x3C '<' + {264, 9, 5, 10, 1, -6}, // 0x3D '=' + {270, 10, 9, 10, 0, -8}, // 0x3E '>' + {282, 7, 13, 8, 1, -12}, // 0x3F '?' + {294, 12, 13, 16, 2, -12}, // 0x40 '@' + {314, 13, 12, 13, 0, -11}, // 0x41 'A' + {334, 11, 12, 11, 0, -11}, // 0x42 'B' + {351, 11, 12, 12, 1, -11}, // 0x43 'C' + {368, 12, 12, 13, 0, -11}, // 0x44 'D' + {386, 10, 12, 11, 1, -11}, // 0x45 'E' + {401, 9, 12, 10, 1, -11}, // 0x46 'F' + {415, 12, 12, 13, 1, -11}, // 0x47 'G' + {433, 11, 12, 13, 1, -11}, // 0x48 'H' + {450, 4, 12, 6, 1, -11}, // 0x49 'I' + {456, 6, 12, 7, 0, -11}, // 0x4A 'J' + {465, 12, 12, 13, 1, -11}, // 0x4B 'K' + {483, 10, 12, 11, 1, -11}, // 0x4C 'L' + {498, 15, 12, 16, 0, -11}, // 0x4D 'M' + {521, 11, 12, 13, 1, -11}, // 0x4E 'N' + {538, 11, 13, 13, 1, -12}, // 0x4F 'O' + {556, 9, 12, 10, 1, -11}, // 0x50 'P' + {570, 11, 16, 13, 1, -12}, // 0x51 'Q' + {592, 11, 12, 12, 1, -11}, // 0x52 'R' + {609, 9, 12, 10, 0, -11}, // 0x53 'S' + {623, 11, 12, 11, 0, -11}, // 0x54 'T' + {640, 11, 12, 13, 1, -11}, // 0x55 'U' + {657, 12, 12, 13, 0, -11}, // 0x56 'V' + {675, 17, 12, 17, 0, -11}, // 0x57 'W' + {701, 13, 12, 13, 0, -11}, // 0x58 'X' + {721, 12, 12, 13, 0, -11}, // 0x59 'Y' + {739, 11, 12, 11, 0, -11}, // 0x5A 'Z' + {756, 3, 15, 6, 2, -11}, // 0x5B '[' + {762, 5, 12, 5, 0, -11}, // 0x5C '\' + {770, 3, 15, 6, 1, -11}, // 0x5D ']' + {776, 8, 7, 8, 0, -11}, // 0x5E '^' + {783, 9, 1, 9, 0, 2}, // 0x5F '_' + {785, 4, 3, 5, 0, -11}, // 0x60 '`' + {787, 7, 8, 8, 1, -7}, // 0x61 'a' + {794, 9, 13, 9, 0, -12}, // 0x62 'b' + {809, 7, 8, 8, 0, -7}, // 0x63 'c' + {816, 9, 13, 9, 0, -12}, // 0x64 'd' + {831, 8, 8, 8, 0, -7}, // 0x65 'e' + {839, 7, 13, 7, 1, -12}, // 0x66 'f' + {851, 10, 12, 8, 0, -7}, // 0x67 'g' + {866, 9, 13, 9, 0, -12}, // 0x68 'h' + {881, 4, 11, 5, 1, -10}, // 0x69 'i' + {887, 5, 15, 6, 0, -10}, // 0x6A 'j' + {897, 9, 13, 9, 1, -12}, // 0x6B 'k' + {912, 4, 13, 5, 1, -12}, // 0x6C 'l' + {919, 14, 8, 14, 0, -7}, // 0x6D 'm' + {933, 9, 8, 9, 0, -7}, // 0x6E 'n' + {942, 9, 8, 9, 0, -7}, // 0x6F 'o' + {951, 9, 12, 9, 0, -7}, // 0x70 'p' + {965, 9, 12, 9, 0, -7}, // 0x71 'q' + {979, 6, 8, 6, 0, -7}, // 0x72 'r' + {985, 6, 8, 7, 1, -7}, // 0x73 's' + {991, 5, 9, 5, 0, -8}, // 0x74 't' + {997, 9, 8, 9, 0, -7}, // 0x75 'u' + {1006, 8, 8, 8, 0, -7}, // 0x76 'v' + {1014, 12, 8, 12, 0, -7}, // 0x77 'w' + {1026, 9, 8, 9, 0, -7}, // 0x78 'x' + {1035, 8, 12, 8, 0, -7}, // 0x79 'y' + {1047, 7, 8, 7, 1, -7}, // 0x7A 'z' + {1054, 5, 16, 9, 1, -12}, // 0x7B '{' + {1064, 1, 12, 4, 1, -11}, // 0x7C '|' + {1066, 5, 16, 9, 3, -11}, // 0x7D '}' + {1076, 9, 3, 9, 0, -5}}; // 0x7E '~' + +const GFXfont FreeSerif9pt7b PROGMEM = {(uint8_t *)FreeSerif9pt7bBitmaps, + (GFXglyph *)FreeSerif9pt7bGlyphs, 0x20, + 0x7E, 22}; + +// Approx. 1752 bytes diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBold12pt7b.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBold12pt7b.h new file mode 100644 index 0000000..9dedae0 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBold12pt7b.h @@ -0,0 +1,273 @@ +#pragma once +#include + +const uint8_t FreeSerifBold12pt7bBitmaps[] PROGMEM = { + 0x7F, 0xFF, 0x77, 0x66, 0x22, 0x00, 0x6F, 0xF7, 0xE3, 0xF1, 0xF8, 0xFC, + 0x7E, 0x3A, 0x09, 0x04, 0x0C, 0x40, 0xCC, 0x0C, 0xC0, 0x8C, 0x18, 0xC7, + 0xFF, 0x18, 0xC1, 0x88, 0x19, 0x81, 0x98, 0xFF, 0xE3, 0x18, 0x31, 0x83, + 0x18, 0x33, 0x03, 0x30, 0x08, 0x01, 0x00, 0xFC, 0x24, 0xEC, 0x8D, 0x90, + 0xBA, 0x07, 0xC0, 0x7E, 0x07, 0xF0, 0x7F, 0x07, 0xF0, 0x9F, 0x11, 0xE2, + 0x3E, 0x46, 0xE9, 0xC7, 0xC0, 0x20, 0x04, 0x00, 0x1E, 0x0C, 0x0E, 0x7F, + 0x07, 0x10, 0x83, 0xC4, 0x40, 0xE1, 0x30, 0x38, 0x88, 0x0E, 0x26, 0x03, + 0x91, 0x1E, 0x78, 0x8E, 0x40, 0x27, 0x10, 0x11, 0xC4, 0x0C, 0xE1, 0x02, + 0x38, 0x81, 0x0E, 0x20, 0x43, 0x90, 0x20, 0x78, 0x03, 0xE0, 0x01, 0x9E, + 0x00, 0xE3, 0x80, 0x38, 0xE0, 0x0F, 0x30, 0x03, 0xF0, 0x00, 0x78, 0x7C, + 0x1F, 0x06, 0x1B, 0xE1, 0x1C, 0x7C, 0x8F, 0x1F, 0x23, 0xC3, 0xF0, 0xF8, + 0x7C, 0x3E, 0x0F, 0x97, 0xC7, 0xFC, 0xFE, 0x3E, 0xFF, 0xFE, 0x90, 0x00, + 0x31, 0x0C, 0x31, 0x86, 0x38, 0xE3, 0x8E, 0x38, 0xE3, 0x86, 0x18, 0x60, + 0xC1, 0x02, 0x04, 0x03, 0x06, 0x0C, 0x30, 0x61, 0x87, 0x1C, 0x71, 0xC7, + 0x1C, 0x71, 0x86, 0x38, 0xC2, 0x10, 0x80, 0x1C, 0x6E, 0xFA, 0xEF, 0xF1, + 0xC7, 0xFF, 0xAF, 0xBB, 0x1C, 0x04, 0x00, 0x06, 0x00, 0x60, 0x06, 0x00, + 0x60, 0x06, 0x0F, 0xFF, 0xFF, 0xF0, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, + 0x60, 0x6F, 0xF7, 0x11, 0x24, 0xFF, 0xFF, 0xC0, 0x6F, 0xF6, 0x03, 0x07, + 0x06, 0x06, 0x0C, 0x0C, 0x0C, 0x18, 0x18, 0x18, 0x30, 0x30, 0x30, 0x60, + 0x60, 0x60, 0xC0, 0x0E, 0x07, 0x71, 0xC7, 0x38, 0xEF, 0x1D, 0xE3, 0xFC, + 0x7F, 0x8F, 0xF1, 0xFE, 0x3F, 0xC7, 0xF8, 0xF7, 0x1C, 0xE3, 0x8E, 0xE0, + 0xF8, 0x06, 0x0F, 0x1F, 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, + 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0xF9, 0xFF, 0x0F, 0x03, 0xFC, 0x7F, 0xC4, + 0x3E, 0x01, 0xE0, 0x1E, 0x01, 0xE0, 0x1C, 0x03, 0x80, 0x30, 0x06, 0x00, + 0xC1, 0x18, 0x13, 0xFE, 0x7F, 0xEF, 0xFE, 0x1F, 0x0C, 0xFA, 0x0F, 0x01, + 0xE0, 0x38, 0x0E, 0x03, 0xE0, 0x3E, 0x03, 0xE0, 0x3C, 0x03, 0x80, 0x70, + 0x0D, 0xC1, 0xBC, 0x43, 0xF0, 0x03, 0x80, 0xE0, 0x78, 0x3E, 0x17, 0x89, + 0xE2, 0x79, 0x1E, 0x87, 0xA1, 0xEF, 0xFF, 0xFF, 0xFF, 0xC1, 0xE0, 0x78, + 0x1E, 0x3F, 0xE7, 0xF8, 0xFF, 0x10, 0x04, 0x00, 0xF8, 0x1F, 0xC7, 0xFC, + 0x1F, 0xC0, 0x78, 0x07, 0x00, 0x60, 0x0D, 0xC1, 0x3C, 0x43, 0xF0, 0x00, + 0xE0, 0xF0, 0x38, 0x1E, 0x07, 0x80, 0xF0, 0x3F, 0xE7, 0x9E, 0xF1, 0xFE, + 0x3F, 0xC7, 0xF8, 0xF7, 0x1E, 0xE3, 0x8E, 0x60, 0xF8, 0x7F, 0xEF, 0xFD, + 0xFF, 0xA0, 0x68, 0x0C, 0x03, 0x80, 0x60, 0x0C, 0x03, 0x00, 0x60, 0x0C, + 0x03, 0x00, 0x60, 0x1C, 0x03, 0x00, 0x60, 0x1F, 0x0E, 0x73, 0x87, 0x70, + 0xEF, 0x1D, 0xF3, 0x1F, 0x81, 0xF8, 0x1F, 0xCC, 0xFB, 0x8F, 0xF0, 0xFE, + 0x1F, 0xC3, 0x9C, 0xF1, 0xF8, 0x1F, 0x06, 0x71, 0xC7, 0x78, 0xEF, 0x1F, + 0xE3, 0xFC, 0x7F, 0x8F, 0x79, 0xE7, 0xFC, 0x0F, 0x01, 0xC0, 0x78, 0x1C, + 0x0F, 0x07, 0x00, 0x6F, 0xF6, 0x00, 0x06, 0xFF, 0x60, 0x6F, 0xF6, 0x00, + 0x06, 0xFF, 0x71, 0x22, 0xC0, 0x00, 0x04, 0x00, 0x70, 0x07, 0xC0, 0xFC, + 0x0F, 0x80, 0xF8, 0x0F, 0x80, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, + 0x00, 0x1F, 0x00, 0x1C, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0x00, 0x03, 0x80, 0x0F, + 0x80, 0x0F, 0x80, 0x0F, 0x80, 0x0F, 0x80, 0x0F, 0x80, 0x1F, 0x01, 0xF0, + 0x1F, 0x03, 0xF0, 0x3E, 0x00, 0xE0, 0x02, 0x00, 0x00, 0x3E, 0x11, 0xEC, + 0x3F, 0x8F, 0xE3, 0xC0, 0xF0, 0x78, 0x18, 0x08, 0x02, 0x00, 0x00, 0x00, + 0x1C, 0x07, 0x81, 0xE0, 0x30, 0x03, 0xF0, 0x0E, 0x18, 0x18, 0x04, 0x30, + 0x66, 0x70, 0xDB, 0x61, 0x99, 0xE3, 0x19, 0xE3, 0x31, 0xE6, 0x31, 0xE6, + 0x31, 0xE6, 0xF2, 0x66, 0xB2, 0x73, 0x3C, 0x38, 0x00, 0x1E, 0x04, 0x03, + 0xF8, 0x00, 0x80, 0x00, 0xC0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x3E, 0x00, + 0x1F, 0x00, 0x1B, 0xC0, 0x09, 0xE0, 0x0C, 0xF8, 0x04, 0x3C, 0x02, 0x1F, + 0x03, 0xFF, 0x81, 0x03, 0xC1, 0x80, 0xF0, 0x80, 0x7D, 0xF0, 0xFF, 0xFF, + 0xC0, 0xF3, 0xC3, 0xC7, 0x8F, 0x1E, 0x3C, 0x78, 0xF1, 0xE3, 0xCE, 0x0F, + 0xF0, 0x3C, 0x70, 0xF0, 0xE3, 0xC3, 0xCF, 0x0F, 0x3C, 0x3C, 0xF0, 0xE3, + 0xC7, 0xBF, 0xF8, 0x07, 0xE2, 0x38, 0x7C, 0xE0, 0x3B, 0xC0, 0x37, 0x00, + 0x7E, 0x00, 0x7C, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x03, + 0x80, 0x07, 0x80, 0x27, 0x00, 0xC7, 0x86, 0x03, 0xF0, 0xFF, 0xE0, 0x1E, + 0x1E, 0x0F, 0x07, 0x87, 0x81, 0xE3, 0xC0, 0xF1, 0xE0, 0x3C, 0xF0, 0x1E, + 0x78, 0x0F, 0x3C, 0x07, 0x9E, 0x03, 0xCF, 0x01, 0xE7, 0x80, 0xE3, 0xC0, + 0xF1, 0xE0, 0xF0, 0xF0, 0xE1, 0xFF, 0xC0, 0xFF, 0xFC, 0x78, 0x38, 0xF0, + 0x31, 0xE0, 0x23, 0xC4, 0x07, 0x88, 0x0F, 0x30, 0x1F, 0xE0, 0x3C, 0xC0, + 0x78, 0x80, 0xF1, 0x01, 0xE0, 0x23, 0xC0, 0x47, 0x81, 0x8F, 0x07, 0x7F, + 0xFE, 0xFF, 0xFC, 0xF0, 0x73, 0xC0, 0xCF, 0x01, 0x3C, 0x40, 0xF1, 0x03, + 0xCC, 0x0F, 0xF0, 0x3C, 0xC0, 0xF1, 0x03, 0xC4, 0x0F, 0x00, 0x3C, 0x00, + 0xF0, 0x03, 0xC0, 0x3F, 0xC0, 0x07, 0xE2, 0x1C, 0x3E, 0x38, 0x0E, 0x78, + 0x06, 0x70, 0x06, 0xF0, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF0, + 0x7F, 0xF0, 0x1E, 0x70, 0x1E, 0x78, 0x1E, 0x38, 0x1E, 0x1E, 0x1E, 0x07, + 0xF0, 0xFE, 0xFF, 0x78, 0x3C, 0x78, 0x3C, 0x78, 0x3C, 0x78, 0x3C, 0x78, + 0x3C, 0x78, 0x3C, 0x7F, 0xFC, 0x78, 0x3C, 0x78, 0x3C, 0x78, 0x3C, 0x78, + 0x3C, 0x78, 0x3C, 0x78, 0x3C, 0x78, 0x3C, 0xFE, 0xFF, 0xFF, 0x3C, 0x3C, + 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, + 0xFF, 0x0F, 0xF0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, + 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0xE3, 0xCE, + 0x38, 0xE3, 0x83, 0xE0, 0xFE, 0x7F, 0x3C, 0x0E, 0x1E, 0x04, 0x0F, 0x04, + 0x07, 0x84, 0x03, 0xCC, 0x01, 0xEE, 0x00, 0xFF, 0x00, 0x7F, 0xC0, 0x3C, + 0xF0, 0x1E, 0x7C, 0x0F, 0x1F, 0x07, 0x87, 0xC3, 0xC1, 0xF1, 0xE0, 0x7D, + 0xFC, 0xFF, 0xFE, 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x01, 0xE0, + 0x07, 0x80, 0x1E, 0x00, 0x78, 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x01, 0x78, + 0x0D, 0xE0, 0x67, 0x83, 0xBF, 0xFE, 0xFC, 0x01, 0xF3, 0xC0, 0x3E, 0x3E, + 0x03, 0xE2, 0xE0, 0x5E, 0x2F, 0x05, 0xE2, 0xF0, 0x5E, 0x27, 0x09, 0xE2, + 0x78, 0x9E, 0x23, 0x91, 0xE2, 0x3D, 0x1E, 0x23, 0xF1, 0xE2, 0x1E, 0x1E, + 0x21, 0xE1, 0xE2, 0x0C, 0x1E, 0x20, 0xC1, 0xEF, 0x88, 0x3F, 0xF8, 0x1E, + 0xF8, 0x18, 0xF8, 0x11, 0xF8, 0x22, 0xF8, 0x45, 0xF0, 0x89, 0xF1, 0x11, + 0xF2, 0x21, 0xF4, 0x41, 0xF8, 0x81, 0xF1, 0x01, 0xE2, 0x03, 0xC4, 0x03, + 0x8C, 0x03, 0x7C, 0x02, 0x07, 0xF0, 0x0F, 0x1E, 0x0E, 0x03, 0x8F, 0x01, + 0xE7, 0x00, 0x77, 0x80, 0x3F, 0xC0, 0x1F, 0xE0, 0x0F, 0xF0, 0x07, 0xF8, + 0x03, 0xFC, 0x01, 0xEE, 0x00, 0xE7, 0x80, 0xF1, 0xC0, 0x70, 0x70, 0x70, + 0x0F, 0xE0, 0xFF, 0x87, 0x9E, 0x78, 0xF7, 0x8F, 0x78, 0xF7, 0x8F, 0x78, + 0xF7, 0x9E, 0x7F, 0x87, 0x80, 0x78, 0x07, 0x80, 0x78, 0x07, 0x80, 0x78, + 0x0F, 0xE0, 0x07, 0xF0, 0x0F, 0x1E, 0x0E, 0x07, 0x8F, 0x01, 0xE7, 0x00, + 0xF7, 0x80, 0x3F, 0xC0, 0x1F, 0xE0, 0x0F, 0xF0, 0x07, 0xF8, 0x03, 0xFC, + 0x01, 0xEE, 0x00, 0xE7, 0x00, 0xF1, 0xC0, 0x70, 0x70, 0x70, 0x1C, 0xF0, + 0x03, 0xE0, 0x01, 0xF8, 0x00, 0x3E, 0x00, 0x07, 0xE0, 0xFF, 0xE0, 0x3C, + 0x78, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x38, 0x3C, + 0x70, 0x3F, 0xC0, 0x3D, 0xE0, 0x3C, 0xF0, 0x3C, 0xF8, 0x3C, 0x78, 0x3C, + 0x3C, 0x3C, 0x3E, 0xFF, 0x1F, 0x1F, 0x27, 0x0E, 0x60, 0x6E, 0x06, 0xF0, + 0x2F, 0x80, 0x7F, 0x07, 0xFC, 0x1F, 0xE0, 0x7E, 0x01, 0xF8, 0x07, 0xC0, + 0x7C, 0x06, 0xF0, 0xC9, 0xF8, 0xFF, 0xFF, 0xC7, 0x9F, 0x0F, 0x1C, 0x1E, + 0x10, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, + 0x0F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x07, 0xF8, 0xFE, + 0x1E, 0xF0, 0x09, 0xE0, 0x13, 0xC0, 0x27, 0x80, 0x4F, 0x00, 0x9E, 0x01, + 0x3C, 0x02, 0x78, 0x04, 0xF0, 0x09, 0xE0, 0x13, 0xC0, 0x27, 0x80, 0x47, + 0x81, 0x07, 0x84, 0x07, 0xF0, 0xFF, 0x0F, 0x9E, 0x03, 0x0F, 0x00, 0x83, + 0xC0, 0x81, 0xE0, 0x40, 0xF8, 0x60, 0x3C, 0x20, 0x1E, 0x10, 0x07, 0x90, + 0x03, 0xC8, 0x00, 0xF4, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x0E, 0x00, 0x07, + 0x00, 0x01, 0x80, 0x00, 0x80, 0x00, 0xFE, 0x7F, 0x9E, 0xF8, 0x3C, 0x08, + 0xF0, 0x78, 0x31, 0xE0, 0xF0, 0x41, 0xE0, 0xF0, 0x83, 0xC3, 0xE3, 0x07, + 0x85, 0xC4, 0x07, 0x93, 0xC8, 0x0F, 0x27, 0xB0, 0x0E, 0x47, 0x40, 0x1F, + 0x0F, 0x80, 0x3E, 0x1F, 0x00, 0x38, 0x1C, 0x00, 0x70, 0x38, 0x00, 0xE0, + 0x30, 0x00, 0x80, 0x40, 0xFF, 0x9F, 0x9F, 0x07, 0x07, 0x83, 0x03, 0xE3, + 0x00, 0xF9, 0x00, 0x3D, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xE0, 0x00, + 0xF8, 0x00, 0xBE, 0x00, 0x8F, 0x00, 0x83, 0xC0, 0xC1, 0xF0, 0xE0, 0xFD, + 0xF8, 0xFF, 0xFF, 0x1F, 0x7C, 0x06, 0x3C, 0x04, 0x3E, 0x0C, 0x1E, 0x08, + 0x0F, 0x10, 0x0F, 0x30, 0x07, 0xA0, 0x07, 0xC0, 0x03, 0xC0, 0x03, 0xC0, + 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x0F, 0xF0, 0x7F, 0xFC, + 0xE0, 0xF1, 0x83, 0xE2, 0x07, 0x84, 0x1E, 0x00, 0x7C, 0x00, 0xF0, 0x03, + 0xC0, 0x0F, 0x80, 0x1E, 0x00, 0x7C, 0x08, 0xF0, 0x13, 0xC0, 0x6F, 0x81, + 0x9E, 0x07, 0x7F, 0xFE, 0xFF, 0x39, 0xCE, 0x73, 0x9C, 0xE7, 0x39, 0xCE, + 0x73, 0x9C, 0xE7, 0x39, 0xF0, 0xC0, 0x60, 0x60, 0x60, 0x30, 0x30, 0x30, + 0x18, 0x18, 0x18, 0x0C, 0x0C, 0x0C, 0x06, 0x06, 0x06, 0x03, 0xF9, 0xCE, + 0x73, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x9C, 0xE7, 0x39, 0xCF, 0xF0, 0x0C, + 0x07, 0x81, 0xE0, 0xCC, 0x33, 0x18, 0x66, 0x1B, 0x87, 0xC0, 0xC0, 0xFF, + 0xF0, 0xC7, 0x1C, 0x30, 0x1F, 0x0E, 0x71, 0xCF, 0x39, 0xE0, 0x3C, 0x1F, + 0x8E, 0xF3, 0x9E, 0xF3, 0xDE, 0x79, 0xFF, 0x80, 0xF8, 0x07, 0x80, 0x78, + 0x07, 0x80, 0x78, 0x07, 0xB8, 0x7D, 0xE7, 0x8E, 0x78, 0xF7, 0x8F, 0x78, + 0xF7, 0x8F, 0x78, 0xF7, 0x8E, 0x79, 0xC4, 0x78, 0x1F, 0x1D, 0xDC, 0xFE, + 0x7F, 0x07, 0x83, 0xC1, 0xE0, 0x78, 0x3C, 0x47, 0xC0, 0x03, 0xE0, 0x1E, + 0x01, 0xE0, 0x1E, 0x01, 0xE1, 0xDE, 0x7B, 0xE7, 0x1E, 0xF1, 0xEF, 0x1E, + 0xF1, 0xEF, 0x1E, 0xF1, 0xE7, 0x1E, 0x7B, 0xE1, 0xDF, 0x1F, 0x0C, 0x67, + 0x1B, 0xC7, 0xFF, 0xFC, 0x0F, 0x03, 0xC0, 0x78, 0x4E, 0x21, 0xF0, 0x1E, + 0x3B, 0x7B, 0x78, 0x78, 0xFC, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0x78, 0x78, 0xFC, 0x3E, 0x0E, 0x7F, 0xCE, 0x79, 0xEF, 0x3C, 0xE7, 0x0F, + 0xC1, 0x00, 0x60, 0x1C, 0x03, 0xFE, 0x7F, 0xE3, 0xFF, 0x80, 0xF0, 0x33, + 0xFC, 0xF8, 0x07, 0x80, 0x78, 0x07, 0x80, 0x78, 0x07, 0xB8, 0x7D, 0xE7, + 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xEF, + 0xFF, 0x31, 0xE7, 0x8C, 0x03, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, + 0xBF, 0x06, 0x0F, 0x0F, 0x06, 0x00, 0x1F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0xCF, 0xCE, 0x7C, 0xF8, 0x03, + 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0xF9, 0xE1, 0x8F, 0x10, 0x79, + 0x03, 0xD8, 0x1F, 0xE0, 0xF7, 0x87, 0x9E, 0x3C, 0x71, 0xE3, 0xDF, 0xBF, + 0xF9, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0xBF, + 0xFB, 0xCF, 0x0F, 0xBE, 0x79, 0xE7, 0x8F, 0x3C, 0xF1, 0xE7, 0x9E, 0x3C, + 0xF3, 0xC7, 0x9E, 0x78, 0xF3, 0xCF, 0x1E, 0x79, 0xE3, 0xCF, 0x3C, 0x7B, + 0xFF, 0xDF, 0x80, 0xFB, 0x87, 0xDE, 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, + 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0xFF, 0xF0, 0x1F, 0x07, 0x71, 0xC7, + 0x78, 0xFF, 0x1F, 0xE3, 0xFC, 0x7F, 0x8F, 0x71, 0xC7, 0x70, 0x7C, 0x00, + 0xFB, 0x87, 0xDE, 0x78, 0xE7, 0x8F, 0x78, 0xF7, 0x8F, 0x78, 0xF7, 0x8F, + 0x78, 0xE7, 0x9E, 0x7F, 0x87, 0x80, 0x78, 0x07, 0x80, 0x78, 0x0F, 0xC0, + 0x1E, 0x23, 0x9E, 0x71, 0xEF, 0x1E, 0xF1, 0xEF, 0x1E, 0xF1, 0xEF, 0x1E, + 0x71, 0xE7, 0x9E, 0x1F, 0xE0, 0x1E, 0x01, 0xE0, 0x1E, 0x01, 0xE0, 0x3F, + 0xF9, 0xDF, 0xF7, 0xDD, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, + 0x0F, 0xC0, 0x3D, 0x43, 0xC3, 0xE0, 0xFC, 0x7E, 0x1F, 0x87, 0x83, 0xC2, + 0xBC, 0x08, 0x18, 0x38, 0x78, 0xFC, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0x78, 0x78, 0x79, 0x3E, 0xFB, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, + 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x3F, 0xF0, 0xFC, 0xEF, 0x08, + 0xE1, 0x1E, 0x41, 0xC8, 0x3D, 0x03, 0xC0, 0x78, 0x0E, 0x00, 0xC0, 0x10, + 0x00, 0xFD, 0xF7, 0xBC, 0x71, 0x9E, 0x38, 0x87, 0x1E, 0x43, 0xCF, 0x40, + 0xEB, 0xA0, 0x7C, 0xF0, 0x1C, 0x70, 0x0E, 0x38, 0x06, 0x08, 0x01, 0x04, + 0x00, 0xFC, 0xF7, 0x84, 0x3C, 0x81, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x80, + 0xBC, 0x13, 0xC2, 0x1E, 0xFB, 0xF0, 0xFC, 0xEF, 0x08, 0xE1, 0x1E, 0x43, + 0xC8, 0x3A, 0x07, 0xC0, 0x78, 0x0E, 0x01, 0xC0, 0x18, 0x02, 0x00, 0x41, + 0xC8, 0x3A, 0x03, 0x80, 0xFF, 0xB1, 0xE8, 0x70, 0x3C, 0x1E, 0x07, 0x83, + 0xC1, 0xE0, 0x78, 0xBC, 0x2F, 0xF8, 0x07, 0x0E, 0x1C, 0x1C, 0x1C, 0x1C, + 0x1C, 0x1C, 0x1C, 0x1C, 0xE0, 0x18, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, + 0x1C, 0x1E, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xE0, 0x70, 0x38, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x18, 0x07, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x38, 0x38, 0x70, 0xE0, 0x70, 0x1F, 0x8B, 0x3F, 0x01, 0xC0}; + +const GFXglyph FreeSerifBold12pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 6, 0, 1}, // 0x20 ' ' + {0, 4, 16, 8, 2, -15}, // 0x21 '!' + {8, 9, 7, 13, 2, -15}, // 0x22 '"' + {16, 12, 16, 12, 0, -15}, // 0x23 '#' + {40, 11, 20, 12, 1, -17}, // 0x24 '$' + {68, 18, 16, 24, 3, -15}, // 0x25 '%' + {104, 18, 16, 20, 1, -15}, // 0x26 '&' + {140, 3, 7, 7, 2, -15}, // 0x27 ''' + {143, 6, 21, 8, 1, -16}, // 0x28 '(' + {159, 6, 21, 8, 1, -16}, // 0x29 ')' + {175, 9, 10, 12, 2, -15}, // 0x2A '*' + {187, 12, 12, 16, 2, -11}, // 0x2B '+' + {205, 4, 8, 6, 1, -3}, // 0x2C ',' + {209, 6, 3, 8, 1, -6}, // 0x2D '-' + {212, 4, 4, 6, 1, -3}, // 0x2E '.' + {214, 8, 17, 7, -1, -15}, // 0x2F '/' + {231, 11, 16, 12, 1, -15}, // 0x30 '0' + {253, 9, 16, 12, 1, -15}, // 0x31 '1' + {271, 12, 16, 12, 0, -15}, // 0x32 '2' + {295, 11, 16, 12, 1, -15}, // 0x33 '3' + {317, 10, 16, 12, 1, -15}, // 0x34 '4' + {337, 11, 16, 12, 1, -15}, // 0x35 '5' + {359, 11, 16, 12, 1, -15}, // 0x36 '6' + {381, 11, 16, 12, 0, -15}, // 0x37 '7' + {403, 11, 16, 12, 1, -15}, // 0x38 '8' + {425, 11, 16, 12, 1, -15}, // 0x39 '9' + {447, 4, 11, 8, 2, -10}, // 0x3A ':' + {453, 4, 15, 8, 2, -10}, // 0x3B ';' + {461, 14, 14, 16, 1, -12}, // 0x3C '<' + {486, 14, 8, 16, 1, -9}, // 0x3D '=' + {500, 14, 14, 16, 1, -12}, // 0x3E '>' + {525, 10, 16, 12, 1, -15}, // 0x3F '?' + {545, 16, 16, 22, 3, -15}, // 0x40 '@' + {577, 17, 16, 17, 0, -15}, // 0x41 'A' + {611, 14, 16, 16, 1, -15}, // 0x42 'B' + {639, 15, 16, 17, 1, -15}, // 0x43 'C' + {669, 17, 16, 18, 0, -15}, // 0x44 'D' + {703, 15, 16, 16, 1, -15}, // 0x45 'E' + {733, 14, 16, 15, 1, -15}, // 0x46 'F' + {761, 16, 16, 19, 1, -15}, // 0x47 'G' + {793, 16, 16, 19, 2, -15}, // 0x48 'H' + {825, 8, 16, 9, 1, -15}, // 0x49 'I' + {841, 12, 18, 12, 0, -15}, // 0x4A 'J' + {868, 17, 16, 19, 2, -15}, // 0x4B 'K' + {902, 14, 16, 16, 2, -15}, // 0x4C 'L' + {930, 20, 16, 23, 1, -15}, // 0x4D 'M' + {970, 15, 16, 17, 1, -15}, // 0x4E 'N' + {1000, 17, 16, 19, 1, -15}, // 0x4F 'O' + {1034, 12, 16, 15, 2, -15}, // 0x50 'P' + {1058, 17, 20, 19, 1, -15}, // 0x51 'Q' + {1101, 16, 16, 17, 1, -15}, // 0x52 'R' + {1133, 12, 16, 14, 1, -15}, // 0x53 'S' + {1157, 15, 16, 15, 0, -15}, // 0x54 'T' + {1187, 15, 16, 17, 1, -15}, // 0x55 'U' + {1217, 17, 17, 17, 0, -15}, // 0x56 'V' + {1254, 23, 16, 24, 0, -15}, // 0x57 'W' + {1300, 17, 16, 17, 0, -15}, // 0x58 'X' + {1334, 16, 16, 17, 1, -15}, // 0x59 'Y' + {1366, 15, 16, 16, 0, -15}, // 0x5A 'Z' + {1396, 5, 20, 8, 2, -15}, // 0x5B '[' + {1409, 8, 17, 7, -1, -15}, // 0x5C '\' + {1426, 5, 20, 8, 2, -15}, // 0x5D ']' + {1439, 10, 9, 14, 2, -15}, // 0x5E '^' + {1451, 12, 1, 12, 0, 4}, // 0x5F '_' + {1453, 5, 4, 8, 0, -16}, // 0x60 '`' + {1456, 11, 11, 12, 1, -10}, // 0x61 'a' + {1472, 12, 16, 13, 1, -15}, // 0x62 'b' + {1496, 9, 11, 10, 1, -10}, // 0x63 'c' + {1509, 12, 16, 13, 1, -15}, // 0x64 'd' + {1533, 10, 11, 11, 1, -10}, // 0x65 'e' + {1547, 8, 16, 9, 1, -15}, // 0x66 'f' + {1563, 11, 16, 12, 1, -10}, // 0x67 'g' + {1585, 12, 16, 13, 1, -15}, // 0x68 'h' + {1609, 6, 16, 7, 1, -15}, // 0x69 'i' + {1621, 8, 21, 10, 0, -15}, // 0x6A 'j' + {1642, 13, 16, 13, 1, -15}, // 0x6B 'k' + {1668, 6, 16, 7, 1, -15}, // 0x6C 'l' + {1680, 19, 11, 20, 1, -10}, // 0x6D 'm' + {1707, 12, 11, 13, 1, -10}, // 0x6E 'n' + {1724, 11, 11, 12, 1, -10}, // 0x6F 'o' + {1740, 12, 16, 13, 1, -10}, // 0x70 'p' + {1764, 12, 16, 13, 1, -10}, // 0x71 'q' + {1788, 10, 11, 10, 1, -10}, // 0x72 'r' + {1802, 8, 11, 10, 1, -10}, // 0x73 's' + {1813, 8, 15, 8, 1, -14}, // 0x74 't' + {1828, 12, 11, 14, 1, -10}, // 0x75 'u' + {1845, 11, 11, 12, 0, -10}, // 0x76 'v' + {1861, 17, 11, 17, 0, -10}, // 0x77 'w' + {1885, 12, 11, 12, 0, -10}, // 0x78 'x' + {1902, 11, 16, 12, 0, -10}, // 0x79 'y' + {1924, 10, 11, 11, 1, -10}, // 0x7A 'z' + {1938, 8, 21, 9, 0, -16}, // 0x7B '{' + {1959, 2, 17, 5, 2, -15}, // 0x7C '|' + {1964, 8, 21, 9, 2, -16}, // 0x7D '}' + {1985, 11, 4, 12, 1, -7}}; // 0x7E '~' + +const GFXfont FreeSerifBold12pt7b PROGMEM = { + (uint8_t *)FreeSerifBold12pt7bBitmaps, + (GFXglyph *)FreeSerifBold12pt7bGlyphs, 0x20, 0x7E, 29}; + +// Approx. 2663 bytes diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBold18pt7b.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBold18pt7b.h new file mode 100644 index 0000000..faecf4f --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBold18pt7b.h @@ -0,0 +1,464 @@ +#pragma once +#include + +const uint8_t FreeSerifBold18pt7bBitmaps[] PROGMEM = { + 0x7B, 0xEF, 0xFF, 0xFF, 0xF7, 0x9E, 0x71, 0xC7, 0x0C, 0x20, 0x82, 0x00, + 0x00, 0x07, 0x3E, 0xFF, 0xFF, 0xDC, 0x60, 0x37, 0x83, 0xFC, 0x1F, 0xE0, + 0xFF, 0x07, 0xB8, 0x3D, 0xC0, 0xCC, 0x06, 0x20, 0x31, 0x01, 0x80, 0x03, + 0x8E, 0x00, 0xC3, 0x80, 0x30, 0xE0, 0x1C, 0x38, 0x07, 0x0E, 0x01, 0xC3, + 0x87, 0xFF, 0xFD, 0xFF, 0xFF, 0x7F, 0xFF, 0xC1, 0x87, 0x00, 0xE1, 0xC0, + 0x38, 0x70, 0x0E, 0x1C, 0x03, 0x86, 0x0F, 0xFF, 0xF3, 0xFF, 0xFC, 0xFF, + 0xFF, 0x07, 0x0E, 0x01, 0xC3, 0x80, 0x70, 0xE0, 0x1C, 0x30, 0x07, 0x0C, + 0x01, 0x87, 0x00, 0x61, 0xC0, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0xFF, + 0x03, 0x27, 0x8C, 0x47, 0x38, 0x86, 0x71, 0x0C, 0xF2, 0x09, 0xF4, 0x03, + 0xF8, 0x03, 0xF8, 0x07, 0xFC, 0x03, 0xFC, 0x03, 0xFE, 0x01, 0xFE, 0x03, + 0xFC, 0x04, 0xFC, 0x08, 0xFA, 0x10, 0xF4, 0x21, 0xEC, 0x43, 0xD8, 0x8F, + 0x3D, 0x3C, 0x3F, 0xF0, 0x1F, 0x00, 0x08, 0x00, 0x10, 0x00, 0x03, 0xC0, + 0x18, 0x01, 0xFE, 0x0F, 0x00, 0x7C, 0xFF, 0xC0, 0x1F, 0x0F, 0x90, 0x07, + 0xC1, 0x06, 0x00, 0xF0, 0x21, 0x80, 0x3E, 0x04, 0x30, 0x07, 0x81, 0x8C, + 0x00, 0xF0, 0x21, 0x80, 0x1E, 0x0C, 0x60, 0x03, 0xC1, 0x18, 0x1E, 0x3C, + 0xE3, 0x0F, 0xE7, 0xF8, 0xC3, 0xE6, 0x3C, 0x18, 0xF8, 0x40, 0x06, 0x3E, + 0x08, 0x01, 0x87, 0x81, 0x00, 0x31, 0xF0, 0x20, 0x0C, 0x3E, 0x04, 0x01, + 0x87, 0x81, 0x00, 0x60, 0xF0, 0x60, 0x18, 0x1E, 0x08, 0x03, 0x03, 0xC7, + 0x00, 0xC0, 0x3F, 0xC0, 0x18, 0x03, 0xE0, 0x00, 0x7E, 0x00, 0x00, 0x7F, + 0xE0, 0x00, 0x38, 0xF8, 0x00, 0x1E, 0x1F, 0x00, 0x07, 0x83, 0xC0, 0x01, + 0xF0, 0xF0, 0x00, 0x7C, 0x38, 0x00, 0x1F, 0x9C, 0x00, 0x03, 0xFC, 0x00, + 0x00, 0xFE, 0x0F, 0xF0, 0x3F, 0x80, 0xF0, 0x1F, 0xF0, 0x18, 0x1C, 0xFE, + 0x0C, 0x0E, 0x1F, 0xC3, 0x07, 0x87, 0xF1, 0x81, 0xE0, 0xFE, 0x40, 0xF8, + 0x1F, 0xF0, 0x3F, 0x07, 0xF8, 0x0F, 0xC0, 0xFE, 0x03, 0xF8, 0x1F, 0xC0, + 0xFE, 0x07, 0xF8, 0x9F, 0xE3, 0xFF, 0xE7, 0xFF, 0x9F, 0xF0, 0xFF, 0xC3, + 0xF8, 0x0F, 0x80, 0x3C, 0x00, 0x6F, 0xFF, 0xFF, 0x66, 0x66, 0x00, 0x81, + 0x81, 0x81, 0x81, 0x80, 0xC0, 0xE0, 0x70, 0x70, 0x38, 0x3C, 0x1E, 0x0F, + 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x0E, 0x07, 0x03, 0x80, 0xE0, + 0x70, 0x18, 0x06, 0x01, 0x00, 0x40, 0x10, 0x04, 0x80, 0x30, 0x0C, 0x03, + 0x00, 0xC0, 0x60, 0x38, 0x1C, 0x07, 0x03, 0x81, 0xC0, 0xF0, 0x78, 0x3C, + 0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xE0, 0x70, 0x38, 0x38, 0x1C, 0x0C, + 0x0C, 0x06, 0x04, 0x04, 0x04, 0x00, 0x03, 0x00, 0x1E, 0x00, 0x78, 0x1D, + 0xE6, 0xFB, 0x3D, 0xED, 0xF3, 0xFF, 0x01, 0xC0, 0x7F, 0xF3, 0xED, 0xFF, + 0x33, 0xD9, 0xE6, 0x07, 0x80, 0x1E, 0x00, 0x30, 0x00, 0x00, 0xE0, 0x00, + 0x1C, 0x00, 0x03, 0x80, 0x00, 0x70, 0x00, 0x0E, 0x00, 0x01, 0xC0, 0x00, + 0x38, 0x00, 0x07, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, + 0x70, 0x00, 0x0E, 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x07, 0x00, 0x00, + 0xE0, 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0x73, 0xEF, 0xFF, 0xFD, 0xF0, + 0xC2, 0x18, 0xC6, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0x7B, 0xFF, 0xFF, 0xFD, + 0xE0, 0x00, 0xE0, 0x3C, 0x07, 0x00, 0xE0, 0x1C, 0x07, 0x00, 0xE0, 0x1C, + 0x07, 0x00, 0xE0, 0x1C, 0x07, 0x00, 0xE0, 0x1C, 0x07, 0x00, 0xE0, 0x1C, + 0x07, 0x00, 0xE0, 0x1C, 0x07, 0x00, 0xE0, 0x1C, 0x07, 0x00, 0xE0, 0x00, + 0x03, 0xC0, 0x0E, 0x70, 0x1E, 0x78, 0x3C, 0x3C, 0x3C, 0x3C, 0x7C, 0x3E, + 0x7C, 0x3E, 0x7C, 0x3E, 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, + 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3E, 0x7C, 0x3E, + 0x7C, 0x3E, 0x3C, 0x3C, 0x3C, 0x3C, 0x1E, 0x78, 0x0E, 0x70, 0x03, 0xC0, + 0x00, 0xC0, 0x3C, 0x0F, 0xC3, 0xFC, 0x4F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC, + 0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC, + 0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC, 0x1F, 0xEF, 0xFF, + 0x03, 0xE0, 0x0F, 0xF8, 0x1F, 0xFC, 0x3F, 0xFC, 0x30, 0xFE, 0x60, 0x7E, + 0x40, 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x78, + 0x00, 0x70, 0x00, 0xE0, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, 0x06, 0x01, + 0x0C, 0x03, 0x1F, 0xFF, 0x1F, 0xFF, 0x3F, 0xFE, 0x7F, 0xFE, 0xFF, 0xFE, + 0x03, 0xF0, 0x0F, 0xF8, 0x3F, 0xFC, 0x21, 0xFE, 0x40, 0xFE, 0x00, 0x7E, + 0x00, 0x7E, 0x00, 0x7C, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xFC, 0x03, 0xFE, + 0x00, 0x7E, 0x00, 0x3F, 0x00, 0x1F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, + 0x00, 0x0E, 0x70, 0x0E, 0xFC, 0x1C, 0xFE, 0x38, 0x7F, 0xE0, 0x3F, 0x80, + 0x00, 0x38, 0x00, 0xF0, 0x03, 0xE0, 0x07, 0xC0, 0x1F, 0x80, 0x5F, 0x00, + 0xBE, 0x02, 0x7C, 0x08, 0xF8, 0x31, 0xF0, 0x43, 0xE1, 0x07, 0xC4, 0x0F, + 0x88, 0x1F, 0x20, 0x3E, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, + 0x07, 0xC0, 0x0F, 0x80, 0x1F, 0x00, 0x3E, 0x00, 0x7C, 0x0F, 0xFE, 0x1F, + 0xF8, 0x7F, 0xF0, 0xFF, 0xE1, 0x80, 0x03, 0x00, 0x0C, 0x00, 0x18, 0x00, + 0x3F, 0x80, 0xFF, 0xC1, 0xFF, 0xC3, 0xFF, 0xC3, 0xFF, 0x80, 0x3F, 0x80, + 0x0F, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x18, 0x00, 0x37, 0x80, 0x4F, 0x81, + 0x9F, 0xC6, 0x3F, 0xF8, 0x1F, 0x80, 0x00, 0x07, 0x00, 0x7C, 0x01, 0xF0, + 0x03, 0xC0, 0x0F, 0x80, 0x1F, 0x00, 0x1F, 0x00, 0x3E, 0x00, 0x7E, 0x00, + 0x7F, 0xF0, 0x7F, 0xFC, 0xFC, 0x7E, 0xFC, 0x7E, 0xFC, 0x3F, 0xFC, 0x3F, + 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, 0x7C, 0x3F, 0x7C, 0x3E, 0x3C, 0x3E, + 0x3E, 0x3C, 0x1E, 0x78, 0x07, 0xE0, 0x7F, 0xFF, 0x7F, 0xFE, 0x7F, 0xFE, + 0xFF, 0xFE, 0xFF, 0xFC, 0xC0, 0x1C, 0x80, 0x18, 0x80, 0x38, 0x00, 0x38, + 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, + 0x01, 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x03, 0x80, 0x03, 0x80, 0x07, 0x80, + 0x07, 0x00, 0x07, 0x00, 0x0F, 0x00, 0x0F, 0xE0, 0x38, 0x78, 0x70, 0x3C, + 0xF0, 0x1E, 0xF0, 0x1E, 0xF8, 0x1E, 0xF8, 0x1E, 0xFE, 0x3C, 0x7F, 0xB0, + 0x7F, 0xE0, 0x3F, 0xF0, 0x0F, 0xF8, 0x1F, 0xFC, 0x39, 0xFE, 0x70, 0xFF, + 0xF0, 0x3F, 0xF0, 0x3F, 0xF0, 0x1F, 0xF0, 0x1F, 0xF0, 0x1E, 0x78, 0x3E, + 0x7C, 0x7C, 0x3F, 0xF8, 0x0F, 0xE0, 0x07, 0xE0, 0x1E, 0x78, 0x3C, 0x7C, + 0x7C, 0x3C, 0x7C, 0x3E, 0xFC, 0x3E, 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, + 0xFC, 0x3F, 0xFC, 0x3F, 0x7E, 0x3F, 0x7E, 0x3F, 0x3F, 0xFE, 0x0F, 0xFE, + 0x00, 0x7E, 0x00, 0x7C, 0x00, 0xF8, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xC0, + 0x0F, 0x80, 0x3E, 0x00, 0xE0, 0x00, 0x7B, 0xFF, 0xFF, 0xFD, 0xE0, 0x00, + 0x00, 0x07, 0xBF, 0xFF, 0xFF, 0xDE, 0x39, 0xFB, 0xF7, 0xEF, 0xC7, 0x00, + 0x00, 0x00, 0x01, 0xE7, 0xEF, 0xFF, 0xFF, 0xBF, 0x06, 0x08, 0x30, 0xC2, + 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x0F, 0x80, 0x07, 0xF0, + 0x03, 0xFC, 0x01, 0xFE, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x3F, 0x80, 0x1F, + 0xC0, 0x03, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0xFE, 0x00, 0x07, 0xF0, 0x00, + 0x3F, 0x80, 0x01, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0x7C, 0x00, 0x01, 0x80, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x18, 0x00, 0x03, + 0xE0, 0x00, 0x7F, 0x00, 0x07, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0xFE, 0x00, + 0x07, 0xF0, 0x00, 0x3F, 0x80, 0x01, 0xFC, 0x00, 0x3F, 0x80, 0x1F, 0xC0, + 0x0F, 0xE0, 0x07, 0xF0, 0x07, 0xF8, 0x03, 0xFC, 0x00, 0xFE, 0x00, 0x1F, + 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xC0, 0xFF, 0xC7, 0x1F, + 0xB8, 0x3E, 0xF0, 0xFF, 0xC3, 0xFF, 0x0F, 0xD8, 0x3F, 0x00, 0xF8, 0x07, + 0xC0, 0x1E, 0x00, 0x60, 0x03, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x70, 0x03, 0xE0, 0x1F, 0x80, 0x7E, 0x01, 0xF8, 0x01, + 0xC0, 0x00, 0x7F, 0x00, 0x01, 0xFF, 0xE0, 0x07, 0xC0, 0xF0, 0x0F, 0x00, + 0x38, 0x1E, 0x00, 0x0C, 0x3C, 0x07, 0x06, 0x38, 0x1F, 0x72, 0x78, 0x3C, + 0xF3, 0x78, 0x78, 0xE1, 0xF0, 0x70, 0xE1, 0xF0, 0xF0, 0xE1, 0xF0, 0xE0, + 0xC1, 0xF1, 0xE1, 0xC1, 0xF1, 0xC1, 0xC1, 0xF1, 0xC3, 0x82, 0xF1, 0xC3, + 0x86, 0x71, 0xC7, 0x8C, 0x79, 0xFB, 0xF8, 0x78, 0xF1, 0xF0, 0x3C, 0x00, + 0x00, 0x1E, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x07, 0xC0, 0x78, 0x03, 0xFF, + 0xE0, 0x00, 0x7F, 0x80, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x78, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xFE, + 0x00, 0x00, 0xFE, 0x00, 0x01, 0xBF, 0x00, 0x01, 0xBF, 0x00, 0x01, 0x1F, + 0x00, 0x03, 0x1F, 0x80, 0x02, 0x1F, 0x80, 0x06, 0x0F, 0xC0, 0x06, 0x0F, + 0xC0, 0x04, 0x07, 0xE0, 0x0F, 0xFF, 0xE0, 0x0F, 0xFF, 0xE0, 0x18, 0x03, + 0xF0, 0x18, 0x03, 0xF0, 0x30, 0x01, 0xF8, 0x30, 0x01, 0xF8, 0x70, 0x01, + 0xFC, 0xFE, 0x0F, 0xFF, 0xFF, 0xFE, 0x07, 0xFF, 0xFE, 0x0F, 0xE1, 0xF8, + 0x3F, 0x07, 0xC1, 0xF8, 0x3F, 0x0F, 0xC1, 0xF8, 0x7E, 0x0F, 0xC3, 0xF0, + 0x7E, 0x1F, 0x87, 0xE0, 0xFC, 0x7C, 0x07, 0xFF, 0x00, 0x3F, 0xFF, 0x01, + 0xF8, 0xFE, 0x0F, 0xC1, 0xF8, 0x7E, 0x0F, 0xC3, 0xF0, 0x3F, 0x1F, 0x81, + 0xF8, 0xFC, 0x0F, 0xC7, 0xE0, 0x7E, 0x3F, 0x03, 0xF1, 0xF8, 0x3F, 0x0F, + 0xC3, 0xF0, 0xFF, 0xFF, 0x1F, 0xFF, 0xC0, 0x00, 0x7E, 0x04, 0x07, 0xFF, + 0x18, 0x1F, 0x07, 0xF0, 0x7C, 0x03, 0xE1, 0xF0, 0x03, 0xC7, 0xC0, 0x03, + 0x9F, 0x80, 0x03, 0x3F, 0x00, 0x06, 0x7C, 0x00, 0x05, 0xF8, 0x00, 0x03, + 0xF0, 0x00, 0x07, 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0x1F, 0x80, 0x00, 0x3F, + 0x00, 0x00, 0x7E, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x01, 0xF8, + 0x00, 0x01, 0xF0, 0x00, 0x23, 0xF0, 0x00, 0xC3, 0xF0, 0x07, 0x03, 0xF0, + 0x3C, 0x01, 0xFF, 0xE0, 0x00, 0xFF, 0x00, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, + 0x00, 0x7E, 0x1F, 0x80, 0xFC, 0x1F, 0x81, 0xF8, 0x1F, 0x83, 0xF0, 0x1F, + 0x07, 0xE0, 0x3F, 0x0F, 0xC0, 0x7E, 0x1F, 0x80, 0x7E, 0x3F, 0x00, 0xFC, + 0x7E, 0x01, 0xF8, 0xFC, 0x03, 0xF1, 0xF8, 0x07, 0xE3, 0xF0, 0x0F, 0xC7, + 0xE0, 0x1F, 0x8F, 0xC0, 0x3F, 0x1F, 0x80, 0x7C, 0x3F, 0x01, 0xF8, 0x7E, + 0x03, 0xE0, 0xFC, 0x0F, 0x81, 0xF8, 0x1F, 0x03, 0xF0, 0xFC, 0x0F, 0xFF, + 0xE0, 0x7F, 0xFF, 0x00, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0x0F, 0xC0, 0x78, + 0x7E, 0x01, 0xC3, 0xF0, 0x06, 0x1F, 0x80, 0x10, 0xFC, 0x10, 0x87, 0xE0, + 0x80, 0x3F, 0x0C, 0x01, 0xF8, 0xE0, 0x0F, 0xFF, 0x00, 0x7F, 0xF8, 0x03, + 0xF1, 0xC0, 0x1F, 0x86, 0x00, 0xFC, 0x10, 0x07, 0xE0, 0x80, 0x3F, 0x00, + 0x09, 0xF8, 0x00, 0xCF, 0xC0, 0x0C, 0x7E, 0x00, 0x63, 0xF0, 0x0F, 0x1F, + 0x81, 0xFB, 0xFF, 0xFF, 0xDF, 0xFF, 0xFC, 0xFF, 0xFF, 0xEF, 0xFF, 0xFC, + 0xFC, 0x0F, 0x9F, 0x80, 0x73, 0xF0, 0x06, 0x7E, 0x00, 0x4F, 0xC1, 0x09, + 0xF8, 0x20, 0x3F, 0x0C, 0x07, 0xE3, 0x80, 0xFF, 0xF0, 0x1F, 0xFE, 0x03, + 0xF1, 0xC0, 0x7E, 0x18, 0x0F, 0xC1, 0x01, 0xF8, 0x20, 0x3F, 0x00, 0x07, + 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x1F, + 0xE0, 0x07, 0xFF, 0x00, 0x00, 0x7E, 0x02, 0x01, 0xFF, 0xE3, 0x01, 0xF0, + 0x3F, 0x81, 0xF0, 0x07, 0xC1, 0xF0, 0x01, 0xE1, 0xF0, 0x00, 0x71, 0xF8, + 0x00, 0x18, 0xFC, 0x00, 0x0C, 0x7C, 0x00, 0x02, 0x7E, 0x00, 0x00, 0x3F, + 0x00, 0x00, 0x1F, 0x80, 0x00, 0x0F, 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x03, + 0xF0, 0x0F, 0xFF, 0xF8, 0x01, 0xFE, 0x7C, 0x00, 0x7E, 0x3F, 0x00, 0x3F, + 0x1F, 0x80, 0x1F, 0x87, 0xC0, 0x0F, 0xC1, 0xF0, 0x07, 0xE0, 0xFC, 0x03, + 0xF0, 0x1F, 0x83, 0xF0, 0x07, 0xFF, 0xE0, 0x00, 0x7F, 0x80, 0x00, 0xFF, + 0xC3, 0xFF, 0x7F, 0x81, 0xFE, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, + 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, + 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, 0xFF, 0xFC, 0x3F, 0xFF, 0xFC, 0x3F, + 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, + 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, + 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x7F, 0x81, 0xFE, 0xFF, 0xC3, 0xFF, 0xFF, + 0xEF, 0xF0, 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x07, + 0xE0, 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x07, 0xE0, + 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x1F, 0xE7, 0xFF, 0x07, 0xFF, 0x01, 0xFE, + 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, + 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, + 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, + 0x70, 0xFC, 0xF8, 0xFC, 0xF8, 0xF8, 0xF0, 0xF8, 0x71, 0xF0, 0x7F, 0xE0, + 0x1F, 0x80, 0xFF, 0xC3, 0xFF, 0x3F, 0xC0, 0x3E, 0x0F, 0xC0, 0x1C, 0x07, + 0xE0, 0x18, 0x03, 0xF0, 0x18, 0x01, 0xF8, 0x18, 0x00, 0xFC, 0x18, 0x00, + 0x7E, 0x18, 0x00, 0x3F, 0x18, 0x00, 0x1F, 0x9C, 0x00, 0x0F, 0xDF, 0x00, + 0x07, 0xFF, 0xC0, 0x03, 0xFF, 0xF0, 0x01, 0xF9, 0xF8, 0x00, 0xFC, 0xFE, + 0x00, 0x7E, 0x3F, 0x80, 0x3F, 0x0F, 0xE0, 0x1F, 0x83, 0xF8, 0x0F, 0xC0, + 0xFC, 0x07, 0xE0, 0x7F, 0x03, 0xF0, 0x1F, 0xC1, 0xF8, 0x07, 0xF1, 0xFE, + 0x03, 0xFD, 0xFF, 0x8F, 0xFF, 0xFF, 0xE0, 0x03, 0xFC, 0x00, 0x0F, 0xC0, + 0x00, 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, + 0xE0, 0x00, 0x3F, 0x00, 0x01, 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0x7E, 0x00, + 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x01, 0x3F, + 0x00, 0x19, 0xF8, 0x00, 0xCF, 0xC0, 0x0C, 0x7E, 0x00, 0x63, 0xF0, 0x0F, + 0x1F, 0x81, 0xFB, 0xFF, 0xFF, 0xDF, 0xFF, 0xFE, 0xFF, 0x80, 0x03, 0xFE, + 0x7F, 0x00, 0x07, 0xF8, 0x7E, 0x00, 0x0F, 0xE0, 0xFE, 0x00, 0x3F, 0xC1, + 0x7C, 0x00, 0x5F, 0x82, 0xFC, 0x01, 0xBF, 0x05, 0xF8, 0x02, 0x7E, 0x09, + 0xF8, 0x0C, 0xFC, 0x13, 0xF0, 0x11, 0xF8, 0x23, 0xE0, 0x23, 0xF0, 0x47, + 0xE0, 0xC7, 0xE0, 0x87, 0xC1, 0x0F, 0xC1, 0x0F, 0xC6, 0x1F, 0x82, 0x0F, + 0x88, 0x3F, 0x04, 0x1F, 0xB0, 0x7E, 0x08, 0x3F, 0x60, 0xFC, 0x10, 0x3E, + 0x81, 0xF8, 0x20, 0x7F, 0x03, 0xF0, 0x40, 0x7C, 0x07, 0xE0, 0x80, 0xF8, + 0x0F, 0xC1, 0x00, 0xE0, 0x1F, 0x82, 0x01, 0xC0, 0x3F, 0x0E, 0x03, 0x80, + 0xFF, 0x7F, 0x82, 0x03, 0xFF, 0xFE, 0x00, 0xFE, 0xFE, 0x00, 0x70, 0xFE, + 0x00, 0x40, 0xFE, 0x00, 0x81, 0xFC, 0x01, 0x03, 0xFC, 0x02, 0x05, 0xFC, + 0x04, 0x09, 0xFC, 0x08, 0x11, 0xFC, 0x10, 0x23, 0xF8, 0x20, 0x43, 0xF8, + 0x40, 0x83, 0xF8, 0x81, 0x03, 0xF9, 0x02, 0x03, 0xFA, 0x04, 0x03, 0xF4, + 0x08, 0x07, 0xF8, 0x10, 0x07, 0xF0, 0x20, 0x07, 0xE0, 0x40, 0x07, 0xC0, + 0x80, 0x07, 0x81, 0x00, 0x0F, 0x02, 0x00, 0x0E, 0x0E, 0x00, 0x0C, 0x7F, + 0x00, 0x08, 0x00, 0x7F, 0x00, 0x01, 0xFF, 0xF0, 0x01, 0xF0, 0x7C, 0x01, + 0xF0, 0x1F, 0x01, 0xF0, 0x07, 0xC1, 0xF0, 0x01, 0xF1, 0xF8, 0x00, 0xFC, + 0xFC, 0x00, 0x7E, 0x7C, 0x00, 0x1F, 0x7E, 0x00, 0x0F, 0xFF, 0x00, 0x07, + 0xFF, 0x80, 0x03, 0xFF, 0xC0, 0x01, 0xFF, 0xE0, 0x00, 0xFF, 0xF0, 0x00, + 0x7F, 0xF8, 0x00, 0x3F, 0x7C, 0x00, 0x1F, 0x3E, 0x00, 0x1F, 0x9F, 0x80, + 0x0F, 0xC7, 0xC0, 0x07, 0xC1, 0xF0, 0x07, 0xC0, 0xFC, 0x07, 0xE0, 0x3F, + 0x07, 0xC0, 0x07, 0xFF, 0xC0, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0xFC, 0x0F, + 0xFF, 0xE0, 0xFC, 0x7E, 0x1F, 0x87, 0xE3, 0xF0, 0x7E, 0x7E, 0x0F, 0xCF, + 0xC1, 0xF9, 0xF8, 0x3F, 0x3F, 0x07, 0xE7, 0xE0, 0xFC, 0xFC, 0x3F, 0x1F, + 0x8F, 0xC3, 0xFF, 0xF0, 0x7F, 0xF8, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, + 0x00, 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7E, + 0x00, 0x1F, 0xE0, 0x07, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x01, 0xFF, 0xF0, + 0x01, 0xF0, 0x7C, 0x01, 0xF0, 0x1F, 0x01, 0xF0, 0x07, 0xC1, 0xF0, 0x01, + 0xF1, 0xF8, 0x00, 0xFC, 0xFC, 0x00, 0x7E, 0x7C, 0x00, 0x1F, 0x7E, 0x00, + 0x0F, 0xFF, 0x00, 0x07, 0xFF, 0x80, 0x03, 0xFF, 0xC0, 0x01, 0xFF, 0xE0, + 0x00, 0xFF, 0xF0, 0x00, 0x7F, 0xF8, 0x00, 0x3F, 0x7C, 0x00, 0x1F, 0x3E, + 0x00, 0x0F, 0x9F, 0x80, 0x0F, 0xC7, 0xC0, 0x07, 0xC1, 0xF0, 0x07, 0xC0, + 0x78, 0x03, 0xC0, 0x1E, 0x07, 0xC0, 0x03, 0xFF, 0x80, 0x00, 0x7F, 0x00, + 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFE, 0x00, 0x00, 0xFF, + 0xF8, 0x00, 0x0F, 0xE0, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0x00, 0xFC, 0x3F, + 0x01, 0xF8, 0x3F, 0x03, 0xF0, 0x3F, 0x07, 0xE0, 0x7E, 0x0F, 0xC0, 0xFC, + 0x1F, 0x81, 0xF8, 0x3F, 0x03, 0xF0, 0x7E, 0x07, 0xC0, 0xFC, 0x1F, 0x81, + 0xF8, 0x7E, 0x03, 0xFF, 0xF0, 0x07, 0xFF, 0xC0, 0x0F, 0xDF, 0xC0, 0x1F, + 0x9F, 0x80, 0x3F, 0x1F, 0x80, 0x7E, 0x3F, 0x80, 0xFC, 0x3F, 0x81, 0xF8, + 0x3F, 0x03, 0xF0, 0x7F, 0x07, 0xE0, 0x7F, 0x1F, 0xE0, 0x7F, 0x7F, 0xE0, + 0xFF, 0x07, 0xC2, 0x1F, 0xF2, 0x3C, 0x3E, 0x70, 0x0E, 0xF0, 0x06, 0xF0, + 0x06, 0xF0, 0x02, 0xF8, 0x00, 0xFE, 0x00, 0xFF, 0x80, 0x7F, 0xE0, 0x3F, + 0xF8, 0x1F, 0xFC, 0x0F, 0xFE, 0x03, 0xFE, 0x00, 0xFF, 0x00, 0x3F, 0x80, + 0x1F, 0xC0, 0x0F, 0xC0, 0x0F, 0xE0, 0x0E, 0xF0, 0x1E, 0xF8, 0x3C, 0x9F, + 0xF8, 0x87, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x7E, 0x3F, 0x83, + 0xF0, 0x7C, 0x1F, 0x81, 0xC0, 0xFC, 0x06, 0x07, 0xE0, 0x20, 0x3F, 0x00, + 0x01, 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x1F, + 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x3F, 0x00, 0x01, 0xF8, 0x00, + 0x0F, 0xC0, 0x00, 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, + 0x00, 0x0F, 0xF0, 0x01, 0xFF, 0xE0, 0xFF, 0xC1, 0xFD, 0xFE, 0x01, 0xC3, + 0xF0, 0x02, 0x0F, 0xC0, 0x08, 0x3F, 0x00, 0x20, 0xFC, 0x00, 0x83, 0xF0, + 0x02, 0x0F, 0xC0, 0x08, 0x3F, 0x00, 0x20, 0xFC, 0x00, 0x83, 0xF0, 0x02, + 0x0F, 0xC0, 0x08, 0x3F, 0x00, 0x20, 0xFC, 0x00, 0x83, 0xF0, 0x02, 0x0F, + 0xC0, 0x08, 0x3F, 0x00, 0x20, 0xFC, 0x00, 0x83, 0xF0, 0x02, 0x0F, 0xC0, + 0x18, 0x1F, 0x80, 0x40, 0x7E, 0x03, 0x00, 0xFC, 0x18, 0x01, 0xFF, 0xC0, + 0x00, 0xFC, 0x00, 0xFF, 0xF0, 0x7F, 0x3F, 0xC0, 0x1E, 0x1F, 0x80, 0x0C, + 0x1F, 0x80, 0x08, 0x0F, 0xC0, 0x18, 0x0F, 0xC0, 0x18, 0x07, 0xE0, 0x10, + 0x07, 0xE0, 0x30, 0x07, 0xE0, 0x20, 0x03, 0xF0, 0x60, 0x03, 0xF0, 0x60, + 0x01, 0xF8, 0x40, 0x01, 0xF8, 0xC0, 0x00, 0xF8, 0x80, 0x00, 0xFC, 0x80, + 0x00, 0xFD, 0x80, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3E, 0x00, + 0x00, 0x3E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x1C, 0x00, + 0x00, 0x0C, 0x00, 0xFF, 0xE7, 0xFF, 0x0F, 0xCF, 0xE0, 0x7F, 0x00, 0xE1, + 0xF8, 0x0F, 0xC0, 0x30, 0x7E, 0x03, 0xF0, 0x0C, 0x1F, 0x80, 0x7C, 0x02, + 0x03, 0xE0, 0x1F, 0x81, 0x80, 0xFC, 0x07, 0xE0, 0x60, 0x3F, 0x03, 0xF8, + 0x10, 0x07, 0xC0, 0xBF, 0x0C, 0x01, 0xF8, 0x2F, 0xC3, 0x00, 0x7E, 0x19, + 0xF0, 0x80, 0x0F, 0x84, 0x7C, 0x60, 0x03, 0xF3, 0x0F, 0x98, 0x00, 0xFC, + 0xC3, 0xE4, 0x00, 0x1F, 0x20, 0xFB, 0x00, 0x07, 0xF8, 0x1F, 0xC0, 0x00, + 0xFC, 0x07, 0xE0, 0x00, 0x3F, 0x01, 0xF8, 0x00, 0x0F, 0xC0, 0x3E, 0x00, + 0x01, 0xE0, 0x0F, 0x00, 0x00, 0x78, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x70, + 0x00, 0x03, 0x00, 0x18, 0x00, 0x00, 0xC0, 0x06, 0x00, 0x00, 0x20, 0x00, + 0x80, 0x00, 0xFF, 0xF3, 0xFE, 0x7F, 0x80, 0x78, 0x3F, 0x80, 0x70, 0x1F, + 0xC0, 0x60, 0x0F, 0xC0, 0xC0, 0x0F, 0xE1, 0x80, 0x07, 0xF1, 0x00, 0x03, + 0xF3, 0x00, 0x03, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x00, + 0xFE, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0x80, 0x00, + 0x9F, 0x80, 0x01, 0x8F, 0xC0, 0x03, 0x0F, 0xE0, 0x06, 0x07, 0xE0, 0x06, + 0x07, 0xF0, 0x0C, 0x03, 0xF8, 0x1C, 0x03, 0xF8, 0x3C, 0x03, 0xFC, 0xFF, + 0x0F, 0xFF, 0xFF, 0xF0, 0xFF, 0x7F, 0x80, 0x1E, 0x3F, 0x80, 0x1C, 0x1F, + 0x80, 0x18, 0x1F, 0xC0, 0x10, 0x0F, 0xC0, 0x30, 0x07, 0xE0, 0x20, 0x07, + 0xE0, 0x60, 0x03, 0xF0, 0xC0, 0x03, 0xF0, 0x80, 0x01, 0xF9, 0x80, 0x01, + 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7E, 0x00, 0x00, + 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, + 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0xFF, 0x00, 0x01, + 0xFF, 0x80, 0x7F, 0xFF, 0xF3, 0xFF, 0xFF, 0x9F, 0x01, 0xF8, 0xE0, 0x1F, + 0x86, 0x01, 0xFC, 0x20, 0x0F, 0xC1, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, + 0x7E, 0x00, 0x07, 0xE0, 0x00, 0x3F, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x80, + 0x01, 0xF8, 0x00, 0x1F, 0x80, 0x01, 0xFC, 0x01, 0x0F, 0xC0, 0x18, 0xFC, + 0x00, 0xC7, 0xE0, 0x06, 0x7E, 0x00, 0x77, 0xF0, 0x07, 0x3F, 0x00, 0xFB, + 0xFF, 0xFF, 0xDF, 0xFF, 0xFE, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xFF, 0xFF, 0xE0, 0x1E, + 0x01, 0xC0, 0x38, 0x07, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x1C, 0x03, 0x80, + 0x70, 0x07, 0x00, 0xE0, 0x1C, 0x01, 0xC0, 0x38, 0x07, 0x00, 0x70, 0x0E, + 0x01, 0xC0, 0x1C, 0x03, 0x80, 0x70, 0x0F, 0x00, 0xE0, 0xFF, 0xFF, 0x0F, + 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0xFF, 0xFF, 0x03, 0x80, 0x0F, 0x00, 0x1F, 0x00, 0x7E, 0x00, 0xEE, 0x03, + 0x9C, 0x07, 0x1C, 0x1C, 0x38, 0x38, 0x38, 0xE0, 0x71, 0xC0, 0x77, 0x00, + 0xEE, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xE0, 0xF0, + 0x78, 0x3C, 0x0E, 0x07, 0x0F, 0xE0, 0x3F, 0xF0, 0x78, 0xF8, 0x78, 0x7C, + 0x78, 0x7C, 0x38, 0x7C, 0x00, 0x7C, 0x03, 0xFC, 0x1E, 0x7C, 0x7C, 0x7C, + 0xFC, 0x7C, 0xFC, 0x7C, 0xFC, 0xFC, 0xFF, 0xFD, 0x7F, 0x7F, 0x3C, 0x3C, + 0xFC, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x1F, + 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0xF8, 0x1F, 0x7F, 0x87, 0xE3, + 0xF1, 0xF0, 0x7E, 0x7C, 0x0F, 0x9F, 0x03, 0xF7, 0xC0, 0xFD, 0xF0, 0x3F, + 0x7C, 0x0F, 0xDF, 0x03, 0xF7, 0xC0, 0xFD, 0xF0, 0x3E, 0x7C, 0x1F, 0x1F, + 0x8F, 0xC6, 0x7F, 0xC1, 0x07, 0xC0, 0x07, 0xC0, 0x7F, 0xC3, 0xC7, 0x9F, + 0x1E, 0x78, 0x7B, 0xE1, 0xCF, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, + 0x80, 0x3F, 0x00, 0x7C, 0x00, 0xFC, 0x61, 0xFF, 0x03, 0xF0, 0x00, 0x7F, + 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x07, 0xC0, + 0x01, 0xF0, 0x00, 0x7C, 0x07, 0x9F, 0x07, 0xF7, 0xC3, 0xE3, 0xF1, 0xF8, + 0x7C, 0x7C, 0x1F, 0x3F, 0x07, 0xCF, 0xC1, 0xF3, 0xF0, 0x7C, 0xFC, 0x1F, + 0x3F, 0x07, 0xCF, 0xC1, 0xF1, 0xF0, 0x7C, 0x7E, 0x1F, 0x0F, 0x8F, 0xC1, + 0xFD, 0xFC, 0x3E, 0x70, 0x0F, 0xC0, 0x7F, 0xC3, 0xC7, 0x1E, 0x1E, 0xF8, + 0x7B, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0xC0, 0x1F, + 0x03, 0x7E, 0x18, 0xFF, 0xC1, 0xFE, 0x03, 0xF0, 0x0F, 0x83, 0xF8, 0xF3, + 0xBE, 0xF7, 0xDC, 0xF8, 0x1F, 0x03, 0xE0, 0xFF, 0x1F, 0xE1, 0xF0, 0x3E, + 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, + 0xC0, 0xF8, 0x1F, 0x07, 0xF8, 0x0F, 0xC0, 0x1F, 0xFF, 0xDF, 0x1F, 0xFF, + 0x07, 0x8F, 0x83, 0xE7, 0xC1, 0xF3, 0xE0, 0xF9, 0xF0, 0x7C, 0x78, 0x3C, + 0x1E, 0x3E, 0x03, 0xFC, 0x03, 0x00, 0x07, 0x00, 0x07, 0x80, 0x03, 0xFF, + 0xF1, 0xFF, 0xFE, 0x7F, 0xFF, 0x8F, 0xFF, 0xF8, 0x01, 0xFC, 0x00, 0x7F, + 0x00, 0x73, 0xFF, 0xF0, 0x7F, 0xC0, 0xFC, 0x00, 0x3E, 0x00, 0x1F, 0x00, + 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x7C, + 0x7C, 0x3E, 0xFF, 0x1F, 0xCF, 0xCF, 0x83, 0xE7, 0xC1, 0xF3, 0xE0, 0xF9, + 0xF0, 0x7C, 0xF8, 0x3E, 0x7C, 0x1F, 0x3E, 0x0F, 0x9F, 0x07, 0xCF, 0x83, + 0xE7, 0xC1, 0xF3, 0xE0, 0xF9, 0xF0, 0x7D, 0xFC, 0x7F, 0x39, 0xFB, 0xF7, + 0xE7, 0x80, 0x00, 0x00, 0xFC, 0xF9, 0xF3, 0xE7, 0xCF, 0x9F, 0x3E, 0x7C, + 0xF9, 0xF3, 0xE7, 0xCF, 0x9F, 0x7F, 0x03, 0xC0, 0xFC, 0x1F, 0x83, 0xF0, + 0x3C, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, + 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, + 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7D, 0xCF, 0xF9, 0xEE, 0x7C, 0xFF, 0x0F, + 0x80, 0xFC, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, + 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x7F, 0x9F, 0x07, 0x87, + 0xC1, 0x81, 0xF0, 0xC0, 0x7C, 0x60, 0x1F, 0x30, 0x07, 0xDE, 0x01, 0xFF, + 0xC0, 0x7F, 0xF0, 0x1F, 0x3E, 0x07, 0xCF, 0xC1, 0xF1, 0xF8, 0x7C, 0x3E, + 0x1F, 0x07, 0xC7, 0xC1, 0xFB, 0xF9, 0xFF, 0xFC, 0xF9, 0xF3, 0xE7, 0xCF, + 0x9F, 0x3E, 0x7C, 0xF9, 0xF3, 0xE7, 0xCF, 0x9F, 0x3E, 0x7C, 0xF9, 0xF3, + 0xE7, 0xCF, 0x9F, 0x7F, 0xFC, 0x7C, 0x1F, 0x0F, 0xBF, 0xCF, 0xF1, 0xF8, + 0xFF, 0x3F, 0x3E, 0x0F, 0x83, 0xE7, 0xC1, 0xF0, 0x7C, 0xF8, 0x3E, 0x0F, + 0x9F, 0x07, 0xC1, 0xF3, 0xE0, 0xF8, 0x3E, 0x7C, 0x1F, 0x07, 0xCF, 0x83, + 0xE0, 0xF9, 0xF0, 0x7C, 0x1F, 0x3E, 0x0F, 0x83, 0xE7, 0xC1, 0xF0, 0x7C, + 0xF8, 0x3E, 0x0F, 0x9F, 0x07, 0xC1, 0xF7, 0xF1, 0xFC, 0x7F, 0xFC, 0x7C, + 0x3E, 0xFF, 0x1F, 0xCF, 0xCF, 0x83, 0xE7, 0xC1, 0xF3, 0xE0, 0xF9, 0xF0, + 0x7C, 0xF8, 0x3E, 0x7C, 0x1F, 0x3E, 0x0F, 0x9F, 0x07, 0xCF, 0x83, 0xE7, + 0xC1, 0xF3, 0xE0, 0xF9, 0xF0, 0x7D, 0xFC, 0x7F, 0x07, 0xF0, 0x0F, 0xFE, + 0x0F, 0x8F, 0x8F, 0x87, 0xE7, 0xC1, 0xF7, 0xE0, 0xFF, 0xF0, 0x7F, 0xF8, + 0x3F, 0xFC, 0x1F, 0xFE, 0x0F, 0xFF, 0x07, 0xEF, 0x83, 0xE7, 0xC1, 0xF1, + 0xF1, 0xF0, 0x7F, 0xF0, 0x0F, 0xE0, 0xFE, 0x7C, 0x07, 0xDF, 0xE0, 0xFE, + 0x3E, 0x1F, 0x07, 0xE3, 0xE0, 0x7C, 0x7C, 0x0F, 0xCF, 0x81, 0xF9, 0xF0, + 0x3F, 0x3E, 0x07, 0xE7, 0xC0, 0xFC, 0xF8, 0x1F, 0x9F, 0x03, 0xE3, 0xE0, + 0xFC, 0x7E, 0x3F, 0x0F, 0xBF, 0xC1, 0xF3, 0xE0, 0x3E, 0x00, 0x07, 0xC0, + 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x7E, 0x00, 0x1F, 0xE0, + 0x00, 0x07, 0xC1, 0x0F, 0xF9, 0x8F, 0xCD, 0xCF, 0xC3, 0xE7, 0xC1, 0xF7, + 0xE0, 0xFB, 0xF0, 0x7D, 0xF8, 0x3E, 0xFC, 0x1F, 0x7E, 0x0F, 0xBF, 0x07, + 0xDF, 0x83, 0xE7, 0xE1, 0xF1, 0xF1, 0xF8, 0x7F, 0x7C, 0x1F, 0x3E, 0x00, + 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x01, 0xF8, + 0x01, 0xFE, 0xFC, 0x73, 0xEF, 0xDF, 0xFE, 0xFC, 0xF7, 0xC3, 0xBE, 0x01, + 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x07, 0xC0, 0x3E, + 0x01, 0xF0, 0x1F, 0xE0, 0x1E, 0x23, 0xFE, 0x70, 0xEE, 0x06, 0xE0, 0x2F, + 0x80, 0xFF, 0x07, 0xFC, 0x3F, 0xE0, 0xFF, 0x81, 0xF8, 0x07, 0xC0, 0x7E, + 0x0E, 0xBF, 0xC8, 0xF8, 0x04, 0x03, 0x01, 0xC0, 0xF0, 0x7C, 0x3F, 0xEF, + 0xF9, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, + 0x7C, 0x5F, 0x37, 0xF8, 0xFE, 0x1E, 0x00, 0xFC, 0x7F, 0x1F, 0x07, 0xC7, + 0xC1, 0xF1, 0xF0, 0x7C, 0x7C, 0x1F, 0x1F, 0x07, 0xC7, 0xC1, 0xF1, 0xF0, + 0x7C, 0x7C, 0x1F, 0x1F, 0x07, 0xC7, 0xC1, 0xF1, 0xF0, 0x7C, 0x7C, 0x1F, + 0x1F, 0x8F, 0xC3, 0xFD, 0xFC, 0x7C, 0x60, 0xFF, 0x9F, 0xBF, 0x83, 0x0F, + 0x81, 0x87, 0xE0, 0x81, 0xF0, 0x40, 0xF8, 0x40, 0x3E, 0x20, 0x1F, 0x30, + 0x07, 0xD0, 0x03, 0xF8, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3C, 0x00, 0x0E, + 0x00, 0x07, 0x00, 0x01, 0x00, 0xFF, 0x3F, 0xCF, 0x7E, 0x1F, 0x06, 0x3E, + 0x0F, 0x06, 0x3E, 0x0F, 0x84, 0x1F, 0x0F, 0x8C, 0x1F, 0x1F, 0x88, 0x0F, + 0x17, 0xC8, 0x0F, 0x97, 0xD8, 0x0F, 0xB3, 0xD0, 0x07, 0xE3, 0xF0, 0x07, + 0xE3, 0xE0, 0x03, 0xC1, 0xE0, 0x03, 0xC1, 0xE0, 0x03, 0x81, 0xC0, 0x01, + 0x80, 0xC0, 0x01, 0x80, 0x80, 0xFF, 0x3F, 0x7E, 0x0C, 0x3E, 0x08, 0x3F, + 0x18, 0x1F, 0x30, 0x0F, 0xE0, 0x0F, 0xC0, 0x07, 0xE0, 0x03, 0xE0, 0x03, + 0xF0, 0x05, 0xF8, 0x0C, 0xF8, 0x18, 0xFC, 0x30, 0x7E, 0x70, 0x7E, 0xFC, + 0xFF, 0xFF, 0x3F, 0x7E, 0x0C, 0x7C, 0x0C, 0x3E, 0x08, 0x3E, 0x08, 0x1E, + 0x18, 0x1F, 0x10, 0x0F, 0x30, 0x0F, 0xA0, 0x0F, 0xA0, 0x07, 0xE0, 0x07, + 0xC0, 0x03, 0xC0, 0x03, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x00, 0x01, + 0x00, 0x61, 0x00, 0xF2, 0x00, 0xF6, 0x00, 0xFC, 0x00, 0x78, 0x00, 0x7F, + 0xFD, 0xFF, 0xF7, 0x0F, 0xD0, 0x3E, 0x01, 0xF0, 0x0F, 0xC0, 0x3E, 0x01, + 0xF0, 0x0F, 0xC0, 0x3E, 0x01, 0xF8, 0x0F, 0xC1, 0x3E, 0x05, 0xF8, 0x7F, + 0xFF, 0xFF, 0xFF, 0x01, 0xE0, 0xF8, 0x3E, 0x07, 0x80, 0xF0, 0x1E, 0x03, + 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x07, 0x87, + 0x80, 0x1E, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, + 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF8, 0x0F, 0x80, 0x78, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xF0, 0x0F, 0x80, 0xF0, + 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, + 0x01, 0xE0, 0x3C, 0x03, 0xC0, 0x0F, 0x0F, 0x03, 0xC0, 0x78, 0x0F, 0x01, + 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x03, 0xE0, + 0xF8, 0x3C, 0x00, 0x3E, 0x00, 0x7F, 0xC6, 0xFF, 0xFF, 0x61, 0xFE, 0x00, + 0x7C}; + +const GFXglyph FreeSerifBold18pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 9, 0, 1}, // 0x20 ' ' + {0, 6, 24, 12, 3, -23}, // 0x21 '!' + {18, 13, 10, 19, 3, -23}, // 0x22 '"' + {35, 18, 24, 17, 0, -23}, // 0x23 '#' + {89, 15, 28, 17, 1, -25}, // 0x24 '$' + {142, 27, 24, 35, 4, -23}, // 0x25 '%' + {223, 26, 25, 29, 2, -23}, // 0x26 '&' + {305, 4, 10, 10, 3, -23}, // 0x27 ''' + {310, 9, 30, 12, 2, -23}, // 0x28 '(' + {344, 9, 30, 12, 1, -23}, // 0x29 ')' + {378, 14, 15, 18, 2, -23}, // 0x2A '*' + {405, 19, 19, 24, 2, -17}, // 0x2B '+' + {451, 6, 12, 9, 1, -5}, // 0x2C ',' + {460, 8, 4, 12, 2, -9}, // 0x2D '-' + {464, 6, 6, 9, 1, -5}, // 0x2E '.' + {469, 11, 25, 10, -1, -23}, // 0x2F '/' + {504, 16, 24, 18, 1, -23}, // 0x30 '0' + {552, 12, 24, 18, 3, -23}, // 0x31 '1' + {588, 16, 24, 17, 1, -23}, // 0x32 '2' + {636, 16, 24, 18, 0, -23}, // 0x33 '3' + {684, 15, 24, 18, 1, -23}, // 0x34 '4' + {729, 15, 24, 18, 1, -23}, // 0x35 '5' + {774, 16, 24, 18, 1, -23}, // 0x36 '6' + {822, 16, 24, 17, 1, -23}, // 0x37 '7' + {870, 16, 24, 17, 1, -23}, // 0x38 '8' + {918, 16, 24, 18, 1, -23}, // 0x39 '9' + {966, 6, 16, 12, 3, -15}, // 0x3A ':' + {978, 7, 22, 12, 2, -15}, // 0x3B ';' + {998, 19, 20, 24, 2, -18}, // 0x3C '<' + {1046, 19, 12, 24, 2, -14}, // 0x3D '=' + {1075, 19, 20, 24, 3, -18}, // 0x3E '>' + {1123, 14, 24, 18, 2, -23}, // 0x3F '?' + {1165, 24, 25, 33, 4, -23}, // 0x40 '@' + {1240, 24, 24, 25, 1, -23}, // 0x41 'A' + {1312, 21, 24, 23, 1, -23}, // 0x42 'B' + {1375, 23, 25, 25, 1, -23}, // 0x43 'C' + {1447, 23, 24, 26, 1, -23}, // 0x44 'D' + {1516, 21, 24, 23, 2, -23}, // 0x45 'E' + {1579, 19, 24, 22, 2, -23}, // 0x46 'F' + {1636, 25, 25, 27, 1, -23}, // 0x47 'G' + {1715, 24, 24, 27, 2, -23}, // 0x48 'H' + {1787, 11, 24, 14, 2, -23}, // 0x49 'I' + {1820, 16, 27, 18, 0, -23}, // 0x4A 'J' + {1874, 25, 24, 27, 2, -23}, // 0x4B 'K' + {1949, 21, 24, 23, 2, -23}, // 0x4C 'L' + {2012, 31, 24, 33, 1, -23}, // 0x4D 'M' + {2105, 23, 24, 25, 1, -23}, // 0x4E 'N' + {2174, 25, 25, 27, 1, -23}, // 0x4F 'O' + {2253, 19, 24, 22, 2, -23}, // 0x50 'P' + {2310, 25, 30, 27, 1, -23}, // 0x51 'Q' + {2404, 23, 24, 25, 2, -23}, // 0x52 'R' + {2473, 16, 25, 20, 2, -23}, // 0x53 'S' + {2523, 21, 24, 23, 1, -23}, // 0x54 'T' + {2586, 22, 25, 25, 2, -23}, // 0x55 'U' + {2655, 24, 24, 25, 0, -23}, // 0x56 'V' + {2727, 34, 25, 34, 0, -23}, // 0x57 'W' + {2834, 24, 24, 25, 1, -23}, // 0x58 'X' + {2906, 24, 24, 25, 1, -23}, // 0x59 'Y' + {2978, 21, 24, 23, 1, -23}, // 0x5A 'Z' + {3041, 8, 29, 12, 2, -23}, // 0x5B '[' + {3070, 11, 25, 10, -1, -23}, // 0x5C '\' + {3105, 8, 29, 12, 2, -23}, // 0x5D ']' + {3134, 15, 13, 20, 3, -23}, // 0x5E '^' + {3159, 18, 3, 17, 0, 3}, // 0x5F '_' + {3166, 8, 6, 12, 0, -23}, // 0x60 '`' + {3172, 16, 16, 18, 1, -15}, // 0x61 'a' + {3204, 18, 24, 19, 1, -23}, // 0x62 'b' + {3258, 14, 16, 15, 1, -15}, // 0x63 'c' + {3286, 18, 24, 19, 1, -23}, // 0x64 'd' + {3340, 14, 16, 16, 1, -15}, // 0x65 'e' + {3368, 11, 24, 14, 2, -23}, // 0x66 'f' + {3401, 17, 23, 17, 1, -15}, // 0x67 'g' + {3450, 17, 24, 19, 1, -23}, // 0x68 'h' + {3501, 7, 24, 10, 2, -23}, // 0x69 'i' + {3522, 11, 31, 14, 0, -23}, // 0x6A 'j' + {3565, 18, 24, 19, 1, -23}, // 0x6B 'k' + {3619, 7, 24, 10, 1, -23}, // 0x6C 'l' + {3640, 27, 16, 29, 1, -15}, // 0x6D 'm' + {3694, 17, 16, 19, 1, -15}, // 0x6E 'n' + {3728, 17, 16, 18, 1, -15}, // 0x6F 'o' + {3762, 19, 23, 19, 0, -15}, // 0x70 'p' + {3817, 17, 23, 19, 1, -15}, // 0x71 'q' + {3866, 13, 16, 15, 1, -15}, // 0x72 'r' + {3892, 12, 16, 14, 1, -15}, // 0x73 's' + {3916, 10, 21, 12, 1, -20}, // 0x74 't' + {3943, 18, 16, 20, 1, -15}, // 0x75 'u' + {3979, 17, 16, 17, 0, -15}, // 0x76 'v' + {4013, 24, 16, 25, 0, -15}, // 0x77 'w' + {4061, 16, 16, 18, 1, -15}, // 0x78 'x' + {4093, 16, 23, 17, 0, -15}, // 0x79 'y' + {4139, 14, 16, 16, 0, -15}, // 0x7A 'z' + {4167, 11, 31, 14, 1, -24}, // 0x7B '{' + {4210, 3, 25, 8, 2, -23}, // 0x7C '|' + {4220, 11, 31, 14, 3, -24}, // 0x7D '}' + {4263, 16, 5, 18, 1, -11}}; // 0x7E '~' + +const GFXfont FreeSerifBold18pt7b PROGMEM = { + (uint8_t *)FreeSerifBold18pt7bBitmaps, + (GFXglyph *)FreeSerifBold18pt7bGlyphs, 0x20, 0x7E, 42}; + +// Approx. 4945 bytes diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBold24pt7b.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBold24pt7b.h new file mode 100644 index 0000000..e6681f5 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBold24pt7b.h @@ -0,0 +1,761 @@ +#pragma once +#include + +const uint8_t FreeSerifBold24pt7bBitmaps[] PROGMEM = { + 0x3C, 0x7E, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x7E, 0x7C, 0x7C, + 0x3C, 0x3C, 0x38, 0x38, 0x38, 0x38, 0x18, 0x10, 0x10, 0x10, 0x00, 0x00, + 0x00, 0x00, 0x3C, 0x7E, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x3C, 0x70, 0x07, + 0x7C, 0x07, 0xFE, 0x03, 0xFF, 0x01, 0xFF, 0x80, 0xFF, 0xC0, 0x7F, 0xC0, + 0x3E, 0xE0, 0x0E, 0x70, 0x07, 0x38, 0x03, 0x9C, 0x01, 0xC4, 0x00, 0xE2, + 0x00, 0x20, 0x00, 0xF0, 0x70, 0x01, 0xC0, 0xE0, 0x03, 0x81, 0xC0, 0x0F, + 0x07, 0x80, 0x1E, 0x0F, 0x00, 0x3C, 0x1E, 0x00, 0x78, 0x3C, 0x00, 0xF0, + 0x78, 0x01, 0xC0, 0xE0, 0x03, 0x81, 0xC0, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, + 0xF3, 0xFF, 0xFF, 0xE0, 0x78, 0x3C, 0x00, 0xF0, 0x78, 0x01, 0xC0, 0xE0, + 0x03, 0x81, 0xC0, 0x0F, 0x07, 0x80, 0x1E, 0x0F, 0x00, 0x3C, 0x1E, 0x0F, + 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0x03, 0x81, 0xC0, 0x0F, + 0x07, 0x80, 0x1E, 0x0F, 0x00, 0x3C, 0x1E, 0x00, 0x78, 0x3C, 0x00, 0xF0, + 0x78, 0x01, 0xE0, 0xE0, 0x03, 0x81, 0xC0, 0x07, 0x07, 0x80, 0x1E, 0x0F, + 0x00, 0x00, 0x60, 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, 0x00, 0xC0, 0x00, + 0x7F, 0xF0, 0x0F, 0x37, 0xE0, 0xE1, 0x8F, 0x8E, 0x0C, 0x3C, 0x70, 0x60, + 0xE7, 0x83, 0x03, 0x3C, 0x18, 0x19, 0xF0, 0xC0, 0x4F, 0xC6, 0x02, 0x7F, + 0xF0, 0x03, 0xFF, 0x80, 0x0F, 0xFE, 0x00, 0x3F, 0xFC, 0x00, 0xFF, 0xF0, + 0x03, 0xFF, 0xE0, 0x0F, 0xFF, 0x80, 0x1F, 0xFE, 0x00, 0x3F, 0xF8, 0x01, + 0xFF, 0xC0, 0x0C, 0xFF, 0x00, 0x63, 0xFA, 0x03, 0x0F, 0xD0, 0x18, 0x3E, + 0x80, 0xC1, 0xF6, 0x06, 0x0F, 0xB8, 0x30, 0x79, 0xC1, 0x87, 0xCF, 0x0C, + 0x3C, 0x7E, 0x67, 0xC0, 0xFF, 0xF8, 0x00, 0xFE, 0x00, 0x00, 0xC0, 0x00, + 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x30, + 0x00, 0x3E, 0x00, 0x0C, 0x00, 0x0F, 0xF0, 0x03, 0x80, 0x07, 0xE7, 0x03, + 0xE0, 0x01, 0xF8, 0x7F, 0xFC, 0x00, 0x3E, 0x07, 0xF7, 0x00, 0x0F, 0xC0, + 0x80, 0xE0, 0x03, 0xF0, 0x10, 0x38, 0x00, 0x7E, 0x02, 0x07, 0x00, 0x0F, + 0x80, 0x41, 0xC0, 0x03, 0xF0, 0x10, 0x30, 0x00, 0x7E, 0x02, 0x0E, 0x00, + 0x0F, 0x80, 0xC1, 0x80, 0x01, 0xF0, 0x10, 0x70, 0x00, 0x3E, 0x06, 0x1C, + 0x00, 0x07, 0xC1, 0x83, 0x80, 0x00, 0x7C, 0x60, 0xE0, 0x1F, 0x07, 0xF8, + 0x18, 0x0F, 0xF8, 0x7C, 0x07, 0x07, 0xF1, 0x00, 0x00, 0xC1, 0xF8, 0x10, + 0x00, 0x38, 0x3F, 0x02, 0x00, 0x06, 0x0F, 0xC0, 0x40, 0x01, 0xC3, 0xF0, + 0x08, 0x00, 0x30, 0x7E, 0x01, 0x00, 0x0E, 0x1F, 0x80, 0x40, 0x03, 0x83, + 0xF0, 0x08, 0x00, 0x60, 0x7E, 0x01, 0x00, 0x1C, 0x0F, 0x80, 0x40, 0x03, + 0x01, 0xF0, 0x18, 0x00, 0xE0, 0x3E, 0x02, 0x00, 0x18, 0x03, 0xC0, 0xC0, + 0x07, 0x00, 0x7C, 0x70, 0x00, 0xC0, 0x07, 0xFC, 0x00, 0x38, 0x00, 0x7E, + 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x07, 0x8F, + 0xE0, 0x00, 0x03, 0xC1, 0xF8, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x7C, + 0x07, 0xC0, 0x00, 0x1F, 0x01, 0xF0, 0x00, 0x07, 0xE0, 0x7C, 0x00, 0x01, + 0xF8, 0x1E, 0x00, 0x00, 0x7F, 0x07, 0x80, 0x00, 0x1F, 0xE3, 0x80, 0x00, + 0x03, 0xFF, 0xC0, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x1F, 0xE0, 0x3F, + 0xF0, 0x07, 0xFC, 0x01, 0xF0, 0x07, 0xFF, 0x00, 0x78, 0x07, 0xBF, 0xE0, + 0x1C, 0x03, 0x87, 0xFC, 0x07, 0x01, 0xE0, 0xFF, 0x81, 0x80, 0xF0, 0x3F, + 0xE0, 0xC0, 0x7C, 0x07, 0xFC, 0x30, 0x1F, 0x00, 0xFF, 0x98, 0x0F, 0xC0, + 0x3F, 0xFC, 0x03, 0xF0, 0x07, 0xFF, 0x00, 0xFE, 0x00, 0xFF, 0x80, 0x3F, + 0x80, 0x3F, 0xF0, 0x0F, 0xF0, 0x07, 0xFE, 0x03, 0xFC, 0x00, 0xFF, 0x81, + 0x7F, 0x80, 0x3F, 0xF8, 0xDF, 0xF0, 0x1F, 0xFF, 0xE3, 0xFF, 0x0E, 0xFF, + 0xF8, 0xFF, 0xFE, 0x1F, 0xFC, 0x0F, 0xFE, 0x03, 0xFE, 0x00, 0xFE, 0x00, + 0x3E, 0x00, 0x77, 0xFF, 0xFF, 0xFF, 0xEE, 0x73, 0x9C, 0xE2, 0x00, 0x00, + 0x00, 0x03, 0x00, 0x60, 0x1C, 0x03, 0x80, 0x70, 0x06, 0x00, 0xE0, 0x1C, + 0x01, 0xC0, 0x3C, 0x03, 0xC0, 0x78, 0x07, 0x80, 0x78, 0x07, 0x80, 0xF8, + 0x0F, 0x80, 0xF8, 0x0F, 0x80, 0xF8, 0x0F, 0x80, 0xF8, 0x0F, 0x80, 0xF8, + 0x0F, 0x80, 0x78, 0x07, 0x80, 0x78, 0x03, 0xC0, 0x3C, 0x01, 0xC0, 0x1C, + 0x00, 0xE0, 0x0E, 0x00, 0x70, 0x03, 0x00, 0x18, 0x00, 0xC0, 0x03, 0x00, + 0x10, 0x00, 0x0C, 0x00, 0x60, 0x03, 0x00, 0x18, 0x00, 0xC0, 0x06, 0x00, + 0x70, 0x03, 0x80, 0x38, 0x03, 0xC0, 0x3C, 0x03, 0xE0, 0x1E, 0x01, 0xE0, + 0x1E, 0x01, 0xF0, 0x1F, 0x01, 0xF0, 0x1F, 0x01, 0xF0, 0x1F, 0x01, 0xF0, + 0x1F, 0x01, 0xF0, 0x1F, 0x01, 0xE0, 0x1E, 0x01, 0xE0, 0x3C, 0x03, 0xC0, + 0x38, 0x03, 0x80, 0x70, 0x07, 0x00, 0xE0, 0x0C, 0x01, 0x80, 0x30, 0x0C, + 0x00, 0x80, 0x00, 0x01, 0xC0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, + 0x03, 0xE0, 0x3C, 0x78, 0xEF, 0x9C, 0x7B, 0xF7, 0x3F, 0xFE, 0xDF, 0x8F, + 0xFF, 0xC0, 0x7F, 0x00, 0x3F, 0xC0, 0x7E, 0xBF, 0x3F, 0x77, 0xEF, 0x9C, + 0xFF, 0xC7, 0x1E, 0x63, 0xE3, 0x80, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, + 0x01, 0xC0, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xE0, + 0x00, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, + 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x0F, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, + 0x80, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, + 0x07, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, + 0x00, 0x3C, 0x7E, 0xFE, 0xFF, 0xFF, 0xFF, 0x7F, 0x07, 0x06, 0x06, 0x0C, + 0x18, 0x30, 0x60, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x3C, + 0x7E, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x3C, 0x00, 0x1E, 0x00, 0x7C, 0x00, + 0xF0, 0x01, 0xE0, 0x07, 0xC0, 0x0F, 0x00, 0x1E, 0x00, 0x7C, 0x00, 0xF0, + 0x01, 0xE0, 0x07, 0xC0, 0x0F, 0x00, 0x1E, 0x00, 0x7C, 0x00, 0xF0, 0x01, + 0xE0, 0x07, 0xC0, 0x0F, 0x00, 0x1E, 0x00, 0x7C, 0x00, 0xF0, 0x01, 0xE0, + 0x03, 0xC0, 0x0F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0xF0, 0x01, 0xE0, 0x03, + 0xC0, 0x0F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0xF0, 0x00, 0x00, 0xFC, 0x00, + 0x0F, 0x3C, 0x00, 0x78, 0x78, 0x03, 0xE1, 0xF0, 0x1F, 0x03, 0xE0, 0x7C, + 0x0F, 0x83, 0xF0, 0x3F, 0x0F, 0xC0, 0xFC, 0x7F, 0x03, 0xF9, 0xFC, 0x0F, + 0xE7, 0xF0, 0x3F, 0xBF, 0xC0, 0xFE, 0xFF, 0x03, 0xFF, 0xFC, 0x0F, 0xFF, + 0xF0, 0x3F, 0xFF, 0xC0, 0xFF, 0xFF, 0x03, 0xFF, 0xFC, 0x0F, 0xFF, 0xF0, + 0x3F, 0xFF, 0xC0, 0xFF, 0xFF, 0x03, 0xFF, 0xFC, 0x0F, 0xFF, 0xF0, 0x3F, + 0x9F, 0xC0, 0xFE, 0x7F, 0x03, 0xF9, 0xFC, 0x0F, 0xE3, 0xF0, 0x3F, 0x0F, + 0xC0, 0xFC, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x80, 0xF8, 0x7C, 0x01, 0xE1, + 0xE0, 0x03, 0xCF, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x18, 0x00, 0x1E, 0x00, + 0x1F, 0x80, 0x1F, 0xE0, 0x1F, 0xF8, 0x1D, 0xFE, 0x00, 0x3F, 0x80, 0x0F, + 0xE0, 0x03, 0xF8, 0x00, 0xFE, 0x00, 0x3F, 0x80, 0x0F, 0xE0, 0x03, 0xF8, + 0x00, 0xFE, 0x00, 0x3F, 0x80, 0x0F, 0xE0, 0x03, 0xF8, 0x00, 0xFE, 0x00, + 0x3F, 0x80, 0x0F, 0xE0, 0x03, 0xF8, 0x00, 0xFE, 0x00, 0x3F, 0x80, 0x0F, + 0xE0, 0x03, 0xF8, 0x00, 0xFE, 0x00, 0x3F, 0x80, 0x0F, 0xE0, 0x03, 0xF8, + 0x00, 0xFE, 0x00, 0x7F, 0x80, 0x3F, 0xF8, 0xFF, 0xFF, 0xC0, 0x00, 0xFC, + 0x00, 0x1F, 0xF8, 0x03, 0xFF, 0xE0, 0x3F, 0xFF, 0x81, 0xFF, 0xFC, 0x1C, + 0x1F, 0xF1, 0xC0, 0x7F, 0x8C, 0x01, 0xFC, 0x40, 0x0F, 0xE0, 0x00, 0x3F, + 0x00, 0x01, 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, + 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x00, + 0x00, 0x70, 0x00, 0x07, 0x80, 0x00, 0x38, 0x00, 0x03, 0x80, 0x00, 0x38, + 0x01, 0x03, 0x80, 0x18, 0x38, 0x00, 0x81, 0x80, 0x1C, 0x1F, 0xFF, 0xE1, + 0xFF, 0xFF, 0x1F, 0xFF, 0xF9, 0xFF, 0xFF, 0x9F, 0xFF, 0xFC, 0xFF, 0xFF, + 0xE0, 0x00, 0xFE, 0x00, 0x3F, 0xFC, 0x03, 0xFF, 0xF0, 0x30, 0xFF, 0xC2, + 0x01, 0xFE, 0x30, 0x0F, 0xF1, 0x00, 0x3F, 0x80, 0x01, 0xFC, 0x00, 0x0F, + 0xE0, 0x00, 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x01, 0xF0, 0x00, + 0x1F, 0xC0, 0x03, 0xFF, 0x00, 0x3F, 0xFC, 0x00, 0x7F, 0xF0, 0x00, 0xFF, + 0x80, 0x03, 0xFE, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0x80, 0x00, 0xFC, 0x00, + 0x07, 0xE0, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0x80, 0x00, 0x3C, + 0x00, 0x01, 0xC7, 0x80, 0x0E, 0x7F, 0x00, 0xE3, 0xFC, 0x06, 0x1F, 0xF8, + 0xE0, 0x7F, 0xFC, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x1E, + 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x80, 0x01, 0xFC, 0x00, 0x0F, 0xE0, 0x00, + 0xFF, 0x00, 0x0D, 0xF8, 0x00, 0xEF, 0xC0, 0x06, 0x7E, 0x00, 0x63, 0xF0, + 0x07, 0x1F, 0x80, 0x30, 0xFC, 0x03, 0x07, 0xE0, 0x38, 0x3F, 0x03, 0x81, + 0xF8, 0x18, 0x0F, 0xC1, 0xC0, 0x7E, 0x1C, 0x03, 0xF0, 0xC0, 0x1F, 0x8E, + 0x00, 0xFC, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xC0, 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, + 0x07, 0xE0, 0x00, 0x3F, 0x00, 0x01, 0xF8, 0x00, 0x0F, 0xC0, 0x07, 0xFF, + 0xF0, 0x7F, 0xFF, 0x0F, 0xFF, 0xE0, 0xFF, 0xFE, 0x0F, 0xFF, 0xE1, 0xFF, + 0xFC, 0x18, 0x00, 0x01, 0x80, 0x00, 0x18, 0x00, 0x03, 0x00, 0x00, 0x3F, + 0x80, 0x03, 0xFF, 0x80, 0x7F, 0xFE, 0x07, 0xFF, 0xF0, 0x7F, 0xFF, 0x87, + 0xFF, 0xFC, 0x7F, 0xFF, 0xC0, 0x07, 0xFC, 0x00, 0x1F, 0xE0, 0x00, 0x7E, + 0x00, 0x03, 0xE0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 0x00, + 0xC0, 0x00, 0x0C, 0x78, 0x00, 0x8F, 0xE0, 0x18, 0xFF, 0x87, 0x0F, 0xFF, + 0xE0, 0x7F, 0xF8, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x38, 0x00, 0x1F, 0x00, + 0x07, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x0F, 0xC0, + 0x00, 0xFC, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xF0, 0x00, 0x7F, + 0x00, 0x07, 0xF8, 0x00, 0x3F, 0xFF, 0x01, 0xFF, 0xFE, 0x1F, 0xF1, 0xFC, + 0xFF, 0x07, 0xE7, 0xF8, 0x3F, 0xBF, 0xC1, 0xFD, 0xFE, 0x07, 0xFF, 0xF0, + 0x3F, 0xFF, 0x81, 0xFF, 0xFC, 0x0F, 0xFF, 0xE0, 0x7F, 0xFF, 0x03, 0xFB, + 0xF8, 0x1F, 0xDF, 0xC0, 0xFE, 0xFE, 0x07, 0xE3, 0xF0, 0x3F, 0x1F, 0xC1, + 0xF0, 0x7E, 0x0F, 0x01, 0xF0, 0xF8, 0x03, 0xC7, 0x00, 0x07, 0xE0, 0x00, + 0x3F, 0xFF, 0xF9, 0xFF, 0xFF, 0xDF, 0xFF, 0xFE, 0xFF, 0xFF, 0xE7, 0xFF, + 0xFF, 0x3F, 0xFF, 0xF9, 0x80, 0x07, 0x98, 0x00, 0x3C, 0xC0, 0x03, 0xE4, + 0x00, 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, + 0xC0, 0x00, 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, + 0x07, 0x80, 0x00, 0x7C, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x01, 0xF0, + 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x07, 0xC0, 0x00, 0x3C, 0x00, 0x01, + 0xE0, 0x00, 0x1F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, + 0x01, 0xFE, 0x00, 0x38, 0x7C, 0x07, 0x80, 0xF0, 0x78, 0x07, 0xC3, 0xC0, + 0x1F, 0x3E, 0x00, 0xF9, 0xF0, 0x07, 0xCF, 0xC0, 0x3E, 0x7E, 0x01, 0xF3, + 0xF8, 0x0F, 0x1F, 0xE0, 0xF8, 0x7F, 0xC7, 0x83, 0xFF, 0xF0, 0x0F, 0xFE, + 0x00, 0x7F, 0xFC, 0x01, 0xFF, 0xF0, 0x03, 0xFF, 0xC0, 0x1F, 0xFF, 0x03, + 0xBF, 0xFC, 0x7C, 0x7F, 0xE7, 0xC1, 0xFF, 0x3E, 0x07, 0xFF, 0xE0, 0x1F, + 0xFF, 0x00, 0x7F, 0xF8, 0x03, 0xFF, 0xC0, 0x0F, 0xFE, 0x00, 0x7F, 0xF0, + 0x03, 0xE7, 0x80, 0x1F, 0x3E, 0x01, 0xF0, 0xF8, 0x0F, 0x83, 0xE1, 0xF8, + 0x0F, 0xFF, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFC, 0x00, 0x1C, 0x3C, 0x00, + 0xF0, 0x78, 0x07, 0x81, 0xF8, 0x3E, 0x07, 0xE1, 0xF8, 0x0F, 0xC7, 0xE0, + 0x3F, 0x3F, 0x80, 0xFE, 0xFE, 0x03, 0xFB, 0xF8, 0x0F, 0xFF, 0xE0, 0x3F, + 0xFF, 0x80, 0xFF, 0xFE, 0x03, 0xFF, 0xF8, 0x0F, 0xFF, 0xE0, 0x3F, 0xDF, + 0xC0, 0xFF, 0x7F, 0x03, 0xFC, 0xFC, 0x0F, 0xF3, 0xFC, 0x7F, 0x83, 0xFF, + 0xFE, 0x07, 0xF7, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0xFF, 0x00, 0x03, 0xF8, + 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x00, 0x03, 0xF8, 0x00, 0x0F, 0xC0, 0x00, + 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x01, 0xF0, 0x00, 0x3F, 0x00, + 0x03, 0x80, 0x00, 0x00, 0x3C, 0x7E, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x3C, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x7E, 0xFF, 0xFF, + 0xFF, 0xFF, 0x7E, 0x3C, 0x3C, 0x3F, 0x3F, 0xDF, 0xEF, 0xF7, 0xF9, 0xF8, + 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x7F, 0x7F, + 0xBF, 0xFF, 0xFF, 0xFB, 0xFC, 0xFE, 0x07, 0x03, 0x01, 0x81, 0x81, 0x81, + 0x83, 0x81, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xF0, 0x00, 0x00, + 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xC0, 0x01, 0xFF, 0x80, 0x01, + 0xFF, 0x80, 0x01, 0xFF, 0x80, 0x01, 0xFF, 0x80, 0x01, 0xFF, 0x80, 0x01, + 0xFF, 0x80, 0x01, 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x00, 0x3F, 0xE0, 0x00, + 0x07, 0xFE, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x7F, + 0xE0, 0x00, 0x07, 0xFF, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x03, 0xFF, 0x00, + 0x00, 0x3F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x03, + 0xC0, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, + 0xC0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x03, 0xFC, 0x00, + 0x00, 0xFF, 0xC0, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x0F, + 0xFE, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x7F, 0xE0, + 0x00, 0x07, 0xFE, 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x1F, 0xF0, 0x00, 0x1F, + 0xF8, 0x00, 0x1F, 0xF8, 0x00, 0x1F, 0xF8, 0x00, 0x1F, 0xF8, 0x00, 0x1F, + 0xF8, 0x00, 0x1F, 0xF8, 0x00, 0x1F, 0xF8, 0x00, 0x3F, 0xF0, 0x00, 0x0F, + 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x30, 0x00, 0x00, + 0x00, 0x07, 0xF0, 0x07, 0xFF, 0x03, 0x87, 0xE1, 0xC0, 0xFC, 0xF0, 0x3F, + 0xBE, 0x07, 0xEF, 0xC1, 0xFF, 0xF0, 0x7F, 0xFC, 0x1F, 0xDF, 0x07, 0xF7, + 0x81, 0xFC, 0x00, 0xFE, 0x00, 0x3F, 0x80, 0x1F, 0xC0, 0x07, 0xE0, 0x03, + 0xE0, 0x00, 0xF0, 0x00, 0x70, 0x00, 0x18, 0x00, 0x04, 0x00, 0x01, 0x00, + 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3C, 0x00, 0x1F, 0x80, 0x0F, 0xF0, 0x03, 0xFC, 0x00, 0xFF, 0x00, 0x3F, + 0xC0, 0x07, 0xE0, 0x00, 0xF0, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x1F, + 0xFF, 0xC0, 0x00, 0x1F, 0x00, 0xF0, 0x00, 0x3E, 0x00, 0x1E, 0x00, 0x3C, + 0x00, 0x03, 0x80, 0x3C, 0x00, 0x00, 0xE0, 0x3C, 0x00, 0x00, 0x30, 0x3E, + 0x00, 0x00, 0x0C, 0x3E, 0x00, 0x3C, 0x37, 0x1F, 0x00, 0x7E, 0xF1, 0x9F, + 0x00, 0x7C, 0xF8, 0xCF, 0x80, 0x78, 0x7C, 0x37, 0xC0, 0x7C, 0x3C, 0x1F, + 0xC0, 0x3C, 0x1E, 0x0F, 0xE0, 0x3C, 0x0F, 0x07, 0xF0, 0x3E, 0x0F, 0x03, + 0xF8, 0x1E, 0x07, 0x81, 0xFC, 0x0F, 0x03, 0xC0, 0xFE, 0x0F, 0x03, 0xE0, + 0x7F, 0x07, 0x81, 0xE0, 0x6F, 0x83, 0xC1, 0xF0, 0x37, 0xC1, 0xE1, 0x78, + 0x31, 0xF0, 0xF9, 0xBC, 0x18, 0xF8, 0x3F, 0x9E, 0x38, 0x3C, 0x0F, 0x0F, + 0xF8, 0x1F, 0x00, 0x01, 0xF0, 0x07, 0x80, 0x00, 0x00, 0x03, 0xE0, 0x00, + 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x07, 0xC0, + 0x00, 0xC0, 0x01, 0xF8, 0x03, 0xE0, 0x00, 0x3F, 0xFF, 0xC0, 0x00, 0x03, + 0xFF, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, + 0x03, 0x80, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, + 0x07, 0xE0, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, + 0x0F, 0xF0, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, + 0x37, 0xF8, 0x00, 0x00, 0x33, 0xF8, 0x00, 0x00, 0x33, 0xFC, 0x00, 0x00, + 0x61, 0xFC, 0x00, 0x00, 0x61, 0xFE, 0x00, 0x00, 0xC1, 0xFE, 0x00, 0x00, + 0xC0, 0xFF, 0x00, 0x00, 0xC0, 0xFF, 0x00, 0x01, 0x80, 0x7F, 0x00, 0x01, + 0x80, 0x7F, 0x80, 0x03, 0x80, 0x7F, 0x80, 0x03, 0xFF, 0xFF, 0xC0, 0x03, + 0xFF, 0xFF, 0xC0, 0x07, 0x00, 0x3F, 0xC0, 0x06, 0x00, 0x1F, 0xE0, 0x0E, + 0x00, 0x1F, 0xE0, 0x0C, 0x00, 0x0F, 0xF0, 0x0C, 0x00, 0x0F, 0xF0, 0x1C, + 0x00, 0x0F, 0xF8, 0x1C, 0x00, 0x0F, 0xF8, 0x7E, 0x00, 0x0F, 0xFC, 0xFF, + 0x80, 0x7F, 0xFF, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xE0, 0x1F, 0xF8, + 0x7F, 0x00, 0xFF, 0x03, 0xFC, 0x0F, 0xF0, 0x3F, 0xC0, 0xFF, 0x01, 0xFE, + 0x0F, 0xF0, 0x1F, 0xE0, 0xFF, 0x01, 0xFE, 0x0F, 0xF0, 0x1F, 0xE0, 0xFF, + 0x01, 0xFE, 0x0F, 0xF0, 0x1F, 0xC0, 0xFF, 0x03, 0xFC, 0x0F, 0xF0, 0x3F, + 0x00, 0xFF, 0x0F, 0xC0, 0x0F, 0xFF, 0xE0, 0x00, 0xFF, 0xFF, 0xC0, 0x0F, + 0xF0, 0xFF, 0x00, 0xFF, 0x03, 0xFC, 0x0F, 0xF0, 0x1F, 0xE0, 0xFF, 0x01, + 0xFE, 0x0F, 0xF0, 0x0F, 0xF0, 0xFF, 0x00, 0xFF, 0x0F, 0xF0, 0x0F, 0xF0, + 0xFF, 0x00, 0xFF, 0x0F, 0xF0, 0x0F, 0xF0, 0xFF, 0x00, 0xFF, 0x0F, 0xF0, + 0x0F, 0xE0, 0xFF, 0x01, 0xFE, 0x0F, 0xF0, 0x1F, 0xC0, 0xFF, 0x87, 0xF0, + 0x3F, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0x00, 0x00, 0x0F, 0xF0, 0x08, 0x01, + 0xFF, 0xF0, 0x60, 0x0F, 0xC1, 0xF9, 0x80, 0xFC, 0x01, 0xFE, 0x07, 0xE0, + 0x01, 0xF8, 0x3F, 0x00, 0x03, 0xE1, 0xFC, 0x00, 0x07, 0x87, 0xE0, 0x00, + 0x1E, 0x3F, 0x80, 0x00, 0x38, 0xFE, 0x00, 0x00, 0x67, 0xF8, 0x00, 0x01, + 0x9F, 0xC0, 0x00, 0x02, 0x7F, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x0F, + 0xF0, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x03, 0xFC, + 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0xFF, 0x00, + 0x00, 0x03, 0xFC, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x1F, 0xE0, 0x00, + 0x00, 0x7F, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, + 0x87, 0xF0, 0x00, 0x07, 0x0F, 0xE0, 0x00, 0x38, 0x1F, 0x80, 0x01, 0xC0, + 0x3F, 0x00, 0x1E, 0x00, 0x7F, 0x01, 0xE0, 0x00, 0x7F, 0xFF, 0x00, 0x00, + 0x3F, 0xE0, 0x00, 0xFF, 0xFF, 0xE0, 0x00, 0x3F, 0xFF, 0xFE, 0x00, 0x0F, + 0xF8, 0x7F, 0x80, 0x0F, 0xF0, 0x1F, 0xC0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, + 0xF0, 0x07, 0xF0, 0x0F, 0xF0, 0x03, 0xF8, 0x0F, 0xF0, 0x03, 0xFC, 0x0F, + 0xF0, 0x01, 0xFC, 0x0F, 0xF0, 0x01, 0xFE, 0x0F, 0xF0, 0x01, 0xFE, 0x0F, + 0xF0, 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0xFF, 0x0F, + 0xF0, 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0xFF, 0x0F, + 0xF0, 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0xFF, 0x0F, + 0xF0, 0x00, 0xFE, 0x0F, 0xF0, 0x00, 0xFE, 0x0F, 0xF0, 0x01, 0xFE, 0x0F, + 0xF0, 0x01, 0xFC, 0x0F, 0xF0, 0x01, 0xFC, 0x0F, 0xF0, 0x03, 0xF8, 0x0F, + 0xF0, 0x03, 0xF0, 0x0F, 0xF0, 0x07, 0xE0, 0x0F, 0xF0, 0x0F, 0xC0, 0x0F, + 0xF8, 0x3F, 0x80, 0x1F, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0xF0, 0x00, 0xFF, + 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xFC, 0x1F, 0xE0, 0x1F, 0xC1, 0xFE, 0x00, + 0x3C, 0x1F, 0xE0, 0x01, 0xC1, 0xFE, 0x00, 0x0C, 0x1F, 0xE0, 0x00, 0xC1, + 0xFE, 0x00, 0x04, 0x1F, 0xE0, 0x20, 0x41, 0xFE, 0x02, 0x00, 0x1F, 0xE0, + 0x60, 0x01, 0xFE, 0x06, 0x00, 0x1F, 0xE0, 0xE0, 0x01, 0xFE, 0x1E, 0x00, + 0x1F, 0xFF, 0xE0, 0x01, 0xFF, 0xFE, 0x00, 0x1F, 0xE3, 0xE0, 0x01, 0xFE, + 0x0E, 0x00, 0x1F, 0xE0, 0x60, 0x01, 0xFE, 0x06, 0x00, 0x1F, 0xE0, 0x20, + 0x01, 0xFE, 0x02, 0x00, 0x1F, 0xE0, 0x00, 0x11, 0xFE, 0x00, 0x03, 0x1F, + 0xE0, 0x00, 0x71, 0xFE, 0x00, 0x07, 0x1F, 0xE0, 0x00, 0xE1, 0xFE, 0x00, + 0x1E, 0x1F, 0xE0, 0x03, 0xE3, 0xFF, 0x01, 0xFE, 0xFF, 0xFF, 0xFF, 0xEF, + 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF, 0xC7, 0xFC, 0x07, + 0xE3, 0xFC, 0x00, 0xF1, 0xFE, 0x00, 0x38, 0xFF, 0x00, 0x0C, 0x7F, 0x80, + 0x06, 0x3F, 0xC0, 0x01, 0x1F, 0xE0, 0x20, 0x8F, 0xF0, 0x10, 0x07, 0xF8, + 0x18, 0x03, 0xFC, 0x0C, 0x01, 0xFE, 0x0E, 0x00, 0xFF, 0x1F, 0x00, 0x7F, + 0xFF, 0x80, 0x3F, 0xFF, 0xC0, 0x1F, 0xE3, 0xE0, 0x0F, 0xF0, 0x70, 0x07, + 0xF8, 0x18, 0x03, 0xFC, 0x0C, 0x01, 0xFE, 0x02, 0x00, 0xFF, 0x01, 0x00, + 0x7F, 0x80, 0x00, 0x3F, 0xC0, 0x00, 0x1F, 0xE0, 0x00, 0x0F, 0xF0, 0x00, + 0x07, 0xF8, 0x00, 0x03, 0xFC, 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, 0x00, + 0x00, 0xFF, 0xC0, 0x01, 0xFF, 0xFC, 0x00, 0x00, 0x0F, 0xF0, 0x08, 0x00, + 0x3F, 0xFE, 0x0C, 0x00, 0x3F, 0x07, 0xC6, 0x00, 0x7E, 0x00, 0xFF, 0x00, + 0x7E, 0x00, 0x1F, 0x80, 0x7E, 0x00, 0x07, 0xC0, 0x7F, 0x00, 0x01, 0xE0, + 0x3F, 0x00, 0x00, 0x70, 0x3F, 0x80, 0x00, 0x38, 0x1F, 0xC0, 0x00, 0x0C, + 0x1F, 0xE0, 0x00, 0x06, 0x0F, 0xE0, 0x00, 0x01, 0x07, 0xF0, 0x00, 0x00, + 0x07, 0xF8, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, + 0x00, 0xFF, 0x00, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x00, 0x3F, 0xC0, 0x00, + 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x0F, 0xF0, 0x03, 0xFF, 0xFF, 0xF8, 0x00, + 0x3F, 0xF1, 0xFC, 0x00, 0x0F, 0xF0, 0xFF, 0x00, 0x07, 0xF8, 0x7F, 0x80, + 0x03, 0xFC, 0x1F, 0xC0, 0x01, 0xFE, 0x0F, 0xE0, 0x00, 0xFF, 0x03, 0xF8, + 0x00, 0x7F, 0x80, 0xFC, 0x00, 0x3F, 0xC0, 0x3F, 0x00, 0x1F, 0xE0, 0x0F, + 0xC0, 0x0F, 0xF0, 0x03, 0xF8, 0x1F, 0xF0, 0x00, 0x7F, 0xFF, 0xC0, 0x00, + 0x07, 0xFE, 0x00, 0x00, 0xFF, 0xFC, 0x1F, 0xFF, 0x9F, 0xF8, 0x03, 0xFF, + 0x07, 0xF8, 0x00, 0xFF, 0x03, 0xFC, 0x00, 0x7F, 0x81, 0xFE, 0x00, 0x3F, + 0xC0, 0xFF, 0x00, 0x1F, 0xE0, 0x7F, 0x80, 0x0F, 0xF0, 0x3F, 0xC0, 0x07, + 0xF8, 0x1F, 0xE0, 0x03, 0xFC, 0x0F, 0xF0, 0x01, 0xFE, 0x07, 0xF8, 0x00, + 0xFF, 0x03, 0xFC, 0x00, 0x7F, 0x81, 0xFE, 0x00, 0x3F, 0xC0, 0xFF, 0x00, + 0x1F, 0xE0, 0x7F, 0x80, 0x0F, 0xF0, 0x3F, 0xFF, 0xFF, 0xF8, 0x1F, 0xFF, + 0xFF, 0xFC, 0x0F, 0xF0, 0x01, 0xFE, 0x07, 0xF8, 0x00, 0xFF, 0x03, 0xFC, + 0x00, 0x7F, 0x81, 0xFE, 0x00, 0x3F, 0xC0, 0xFF, 0x00, 0x1F, 0xE0, 0x7F, + 0x80, 0x0F, 0xF0, 0x3F, 0xC0, 0x07, 0xF8, 0x1F, 0xE0, 0x03, 0xFC, 0x0F, + 0xF0, 0x01, 0xFE, 0x07, 0xF8, 0x00, 0xFF, 0x03, 0xFC, 0x00, 0x7F, 0x81, + 0xFE, 0x00, 0x3F, 0xC0, 0xFF, 0x00, 0x1F, 0xE0, 0xFF, 0xC0, 0x1F, 0xF9, + 0xFF, 0xF8, 0x3F, 0xFF, 0xFF, 0xFE, 0x7F, 0xE0, 0x7F, 0x80, 0xFF, 0x01, + 0xFE, 0x03, 0xFC, 0x07, 0xF8, 0x0F, 0xF0, 0x1F, 0xE0, 0x3F, 0xC0, 0x7F, + 0x80, 0xFF, 0x01, 0xFE, 0x03, 0xFC, 0x07, 0xF8, 0x0F, 0xF0, 0x1F, 0xE0, + 0x3F, 0xC0, 0x7F, 0x80, 0xFF, 0x01, 0xFE, 0x03, 0xFC, 0x07, 0xF8, 0x0F, + 0xF0, 0x1F, 0xE0, 0x3F, 0xC0, 0x7F, 0x80, 0xFF, 0x01, 0xFE, 0x03, 0xFC, + 0x0F, 0xFC, 0x7F, 0xFF, 0x01, 0xFF, 0xFC, 0x00, 0xFF, 0xC0, 0x01, 0xFE, + 0x00, 0x07, 0xF8, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x80, 0x01, 0xFE, 0x00, + 0x07, 0xF8, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x80, 0x01, 0xFE, 0x00, 0x07, + 0xF8, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x80, 0x01, 0xFE, 0x00, 0x07, 0xF8, + 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x80, 0x01, 0xFE, 0x00, 0x07, 0xF8, 0x00, + 0x1F, 0xE0, 0x00, 0x7F, 0x80, 0x01, 0xFE, 0x00, 0x07, 0xF8, 0x00, 0x1F, + 0xE0, 0x00, 0x7F, 0x80, 0x01, 0xFE, 0x00, 0x07, 0xF8, 0x78, 0x1F, 0xE3, + 0xF0, 0x7F, 0x8F, 0xC1, 0xFC, 0x3F, 0x07, 0xF0, 0xFC, 0x1F, 0xC1, 0xE0, + 0xFE, 0x07, 0xC3, 0xF0, 0x0F, 0xFF, 0x80, 0x07, 0xF0, 0x00, 0xFF, 0xFC, + 0x1F, 0xFF, 0x0F, 0xFC, 0x00, 0xFF, 0x01, 0xFE, 0x00, 0x1E, 0x00, 0x7F, + 0x80, 0x07, 0x00, 0x1F, 0xE0, 0x03, 0x80, 0x07, 0xF8, 0x01, 0xC0, 0x01, + 0xFE, 0x00, 0xE0, 0x00, 0x7F, 0x80, 0x70, 0x00, 0x1F, 0xE0, 0x38, 0x00, + 0x07, 0xF8, 0x1C, 0x00, 0x01, 0xFE, 0x0E, 0x00, 0x00, 0x7F, 0x87, 0x00, + 0x00, 0x1F, 0xE3, 0xC0, 0x00, 0x07, 0xF9, 0xF8, 0x00, 0x01, 0xFE, 0xFE, + 0x00, 0x00, 0x7F, 0xFF, 0xC0, 0x00, 0x1F, 0xFF, 0xF8, 0x00, 0x07, 0xFD, + 0xFF, 0x00, 0x01, 0xFE, 0x7F, 0xE0, 0x00, 0x7F, 0x8F, 0xF8, 0x00, 0x1F, + 0xE1, 0xFF, 0x00, 0x07, 0xF8, 0x3F, 0xE0, 0x01, 0xFE, 0x07, 0xFC, 0x00, + 0x7F, 0x81, 0xFF, 0x80, 0x1F, 0xE0, 0x3F, 0xE0, 0x07, 0xF8, 0x07, 0xFC, + 0x01, 0xFE, 0x00, 0xFF, 0x80, 0x7F, 0x80, 0x1F, 0xF0, 0x1F, 0xE0, 0x07, + 0xFE, 0x07, 0xF8, 0x00, 0xFF, 0x83, 0xFF, 0x00, 0x3F, 0xF3, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x03, 0xFF, 0x00, 0x00, 0x1F, 0xE0, 0x00, + 0x01, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x1F, + 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFE, 0x00, + 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, + 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x1F, 0xE0, + 0x00, 0x01, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, + 0x1F, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x01, 0x1F, 0xE0, 0x00, 0x31, 0xFE, + 0x00, 0x03, 0x1F, 0xE0, 0x00, 0x71, 0xFE, 0x00, 0x07, 0x1F, 0xE0, 0x00, + 0xE1, 0xFE, 0x00, 0x1E, 0x1F, 0xE0, 0x07, 0xE3, 0xFF, 0x01, 0xFE, 0xFF, + 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFE, 0x7F, 0xF0, 0x00, 0x01, 0xFF, 0xE1, + 0xFF, 0x00, 0x00, 0x3F, 0xF0, 0x1F, 0xE0, 0x00, 0x0F, 0xFC, 0x03, 0xFC, + 0x00, 0x01, 0xFF, 0x80, 0x7F, 0xC0, 0x00, 0x2F, 0xF0, 0x0B, 0xF8, 0x00, + 0x0D, 0xFE, 0x01, 0x7F, 0x80, 0x01, 0xBF, 0xC0, 0x27, 0xF0, 0x00, 0x67, + 0xF8, 0x04, 0xFF, 0x00, 0x0C, 0xFF, 0x00, 0x8F, 0xE0, 0x03, 0x1F, 0xE0, + 0x11, 0xFE, 0x00, 0x63, 0xFC, 0x02, 0x3F, 0xC0, 0x08, 0x7F, 0x80, 0x43, + 0xF8, 0x03, 0x0F, 0xF0, 0x08, 0x7F, 0x80, 0x61, 0xFE, 0x01, 0x07, 0xF0, + 0x18, 0x3F, 0xC0, 0x20, 0xFF, 0x03, 0x07, 0xF8, 0x04, 0x0F, 0xE0, 0xC0, + 0xFF, 0x00, 0x81, 0xFE, 0x18, 0x1F, 0xE0, 0x10, 0x3F, 0xC6, 0x03, 0xFC, + 0x02, 0x03, 0xF8, 0xC0, 0x7F, 0x80, 0x40, 0x7F, 0x98, 0x0F, 0xF0, 0x08, + 0x07, 0xF6, 0x01, 0xFE, 0x01, 0x00, 0xFF, 0xC0, 0x3F, 0xC0, 0x20, 0x0F, + 0xF0, 0x07, 0xF8, 0x04, 0x01, 0xFE, 0x00, 0xFF, 0x00, 0x80, 0x1F, 0x80, + 0x1F, 0xE0, 0x10, 0x03, 0xF0, 0x03, 0xFC, 0x02, 0x00, 0x7E, 0x00, 0x7F, + 0x80, 0x40, 0x07, 0x80, 0x0F, 0xF0, 0x0C, 0x00, 0xF0, 0x01, 0xFE, 0x07, + 0xC0, 0x0C, 0x00, 0x7F, 0xE7, 0xFF, 0x01, 0x80, 0x3F, 0xFF, 0xFF, 0xC0, + 0x03, 0xFE, 0xFF, 0xC0, 0x01, 0xF0, 0xFF, 0xC0, 0x01, 0xC0, 0xFF, 0xC0, + 0x01, 0x80, 0xFF, 0x80, 0x03, 0x01, 0xFF, 0x80, 0x06, 0x03, 0xFF, 0x80, + 0x0C, 0x07, 0xFF, 0x80, 0x18, 0x0D, 0xFF, 0x80, 0x30, 0x19, 0xFF, 0x00, + 0x60, 0x31, 0xFF, 0x00, 0xC0, 0x61, 0xFF, 0x01, 0x80, 0xC1, 0xFF, 0x03, + 0x01, 0x83, 0xFF, 0x06, 0x03, 0x03, 0xFE, 0x0C, 0x06, 0x03, 0xFE, 0x18, + 0x0C, 0x03, 0xFE, 0x30, 0x18, 0x03, 0xFE, 0x60, 0x30, 0x03, 0xFE, 0xC0, + 0x60, 0x07, 0xFD, 0x80, 0xC0, 0x07, 0xFF, 0x01, 0x80, 0x07, 0xFE, 0x03, + 0x00, 0x07, 0xFC, 0x06, 0x00, 0x07, 0xF8, 0x0C, 0x00, 0x07, 0xF0, 0x18, + 0x00, 0x0F, 0xE0, 0x30, 0x00, 0x0F, 0xC0, 0x60, 0x00, 0x0F, 0x80, 0xC0, + 0x00, 0x0F, 0x01, 0xC0, 0x00, 0x0E, 0x0F, 0xC0, 0x00, 0x1C, 0x7F, 0xE0, + 0x00, 0x18, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x3F, + 0x07, 0xF0, 0x00, 0x7E, 0x00, 0xFC, 0x00, 0x7E, 0x00, 0x3F, 0x00, 0x7E, + 0x00, 0x1F, 0xC0, 0x7F, 0x00, 0x07, 0xF0, 0x3F, 0x00, 0x03, 0xF8, 0x3F, + 0x80, 0x00, 0xFE, 0x3F, 0xC0, 0x00, 0x7F, 0x1F, 0xE0, 0x00, 0x3F, 0xCF, + 0xE0, 0x00, 0x0F, 0xEF, 0xF0, 0x00, 0x07, 0xF7, 0xF8, 0x00, 0x03, 0xFF, + 0xFC, 0x00, 0x01, 0xFF, 0xFE, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x7F, + 0xFF, 0x80, 0x00, 0x3F, 0xFF, 0xC0, 0x00, 0x1F, 0xFF, 0xE0, 0x00, 0x0F, + 0xFF, 0xF0, 0x00, 0x07, 0xFF, 0xF8, 0x00, 0x03, 0xFD, 0xFC, 0x00, 0x01, + 0xFC, 0xFE, 0x00, 0x01, 0xFE, 0x7F, 0x80, 0x00, 0xFF, 0x1F, 0xC0, 0x00, + 0x7F, 0x0F, 0xE0, 0x00, 0x3F, 0x83, 0xF8, 0x00, 0x3F, 0x80, 0xFC, 0x00, + 0x1F, 0x80, 0x3F, 0x00, 0x1F, 0x80, 0x0F, 0xC0, 0x1F, 0x80, 0x03, 0xF8, + 0x3F, 0x80, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0xFF, + 0xFF, 0xE0, 0x1F, 0xFF, 0xFF, 0x01, 0xFE, 0x1F, 0xE0, 0x7F, 0x81, 0xFC, + 0x1F, 0xE0, 0x7F, 0x87, 0xF8, 0x0F, 0xE1, 0xFE, 0x03, 0xFC, 0x7F, 0x80, + 0xFF, 0x1F, 0xE0, 0x3F, 0xC7, 0xF8, 0x0F, 0xF1, 0xFE, 0x03, 0xFC, 0x7F, + 0x80, 0xFF, 0x1F, 0xE0, 0x3F, 0x87, 0xF8, 0x1F, 0xE1, 0xFE, 0x07, 0xF0, + 0x7F, 0x87, 0xF8, 0x1F, 0xFF, 0xF8, 0x07, 0xFF, 0xF8, 0x01, 0xFE, 0x00, + 0x00, 0x7F, 0x80, 0x00, 0x1F, 0xE0, 0x00, 0x07, 0xF8, 0x00, 0x01, 0xFE, + 0x00, 0x00, 0x7F, 0x80, 0x00, 0x1F, 0xE0, 0x00, 0x07, 0xF8, 0x00, 0x01, + 0xFE, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x1F, 0xE0, 0x00, 0x07, 0xF8, 0x00, + 0x03, 0xFF, 0x00, 0x03, 0xFF, 0xF0, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, + 0x3F, 0xFF, 0x80, 0x00, 0x3F, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0xFC, 0x00, + 0x7E, 0x00, 0x3F, 0x00, 0x7E, 0x00, 0x1F, 0xC0, 0x7F, 0x00, 0x07, 0xF0, + 0x3F, 0x00, 0x03, 0xF8, 0x3F, 0x80, 0x00, 0xFE, 0x1F, 0xC0, 0x00, 0x7F, + 0x1F, 0xE0, 0x00, 0x3F, 0xCF, 0xE0, 0x00, 0x0F, 0xE7, 0xF0, 0x00, 0x07, + 0xF7, 0xF8, 0x00, 0x03, 0xFF, 0xFC, 0x00, 0x01, 0xFF, 0xFE, 0x00, 0x00, + 0xFF, 0xFF, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x3F, 0xFF, 0xC0, 0x00, + 0x1F, 0xFF, 0xE0, 0x00, 0x0F, 0xFF, 0xF0, 0x00, 0x07, 0xFF, 0xF8, 0x00, + 0x03, 0xFD, 0xFC, 0x00, 0x01, 0xFC, 0xFE, 0x00, 0x01, 0xFE, 0x7F, 0x80, + 0x00, 0xFF, 0x1F, 0xC0, 0x00, 0x7F, 0x0F, 0xE0, 0x00, 0x3F, 0x83, 0xF8, + 0x00, 0x3F, 0x80, 0xFC, 0x00, 0x1F, 0x80, 0x3F, 0x00, 0x1F, 0x80, 0x0F, + 0xC0, 0x1F, 0x80, 0x03, 0xF0, 0x1F, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, + 0x0F, 0xFC, 0x00, 0x00, 0x03, 0xFF, 0x00, 0x00, 0x01, 0xFF, 0xC0, 0x00, + 0x00, 0x7F, 0xF0, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x07, 0xFF, 0x80, + 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0xFF, 0xFF, 0xE0, + 0x00, 0xFF, 0xFF, 0xF8, 0x00, 0x7F, 0xC3, 0xFC, 0x00, 0xFF, 0x01, 0xFC, + 0x01, 0xFE, 0x03, 0xFC, 0x03, 0xFC, 0x03, 0xF8, 0x07, 0xF8, 0x07, 0xF8, + 0x0F, 0xF0, 0x0F, 0xF0, 0x1F, 0xE0, 0x1F, 0xE0, 0x3F, 0xC0, 0x3F, 0xC0, + 0x7F, 0x80, 0x7F, 0x80, 0xFF, 0x00, 0xFF, 0x01, 0xFE, 0x01, 0xFC, 0x03, + 0xFC, 0x07, 0xF8, 0x07, 0xF8, 0x1F, 0xE0, 0x0F, 0xF0, 0xFF, 0x00, 0x1F, + 0xFF, 0xF8, 0x00, 0x3F, 0xFF, 0xE0, 0x00, 0x7F, 0x9F, 0xE0, 0x00, 0xFF, + 0x3F, 0xC0, 0x01, 0xFE, 0x3F, 0xC0, 0x03, 0xFC, 0x7F, 0xC0, 0x07, 0xF8, + 0x7F, 0xC0, 0x0F, 0xF0, 0x7F, 0x80, 0x1F, 0xE0, 0xFF, 0x80, 0x3F, 0xC0, + 0xFF, 0x80, 0x7F, 0x80, 0xFF, 0x00, 0xFF, 0x01, 0xFF, 0x01, 0xFE, 0x01, + 0xFF, 0x03, 0xFC, 0x01, 0xFF, 0x0F, 0xFC, 0x03, 0xFE, 0x7F, 0xFE, 0x03, + 0xFF, 0x03, 0xF8, 0x10, 0x7F, 0xF9, 0x87, 0xC1, 0xFC, 0x78, 0x03, 0xE7, + 0x80, 0x0F, 0x3C, 0x00, 0x3B, 0xE0, 0x01, 0xDF, 0x00, 0x06, 0xF8, 0x00, + 0x37, 0xE0, 0x00, 0xBF, 0x80, 0x01, 0xFF, 0x00, 0x0F, 0xFE, 0x00, 0x3F, + 0xFC, 0x01, 0xFF, 0xF8, 0x07, 0xFF, 0xF0, 0x1F, 0xFF, 0xC0, 0x7F, 0xFF, + 0x00, 0xFF, 0xFC, 0x01, 0xFF, 0xE0, 0x03, 0xFF, 0x80, 0x07, 0xFC, 0x00, + 0x1F, 0xF0, 0x00, 0x3F, 0x80, 0x01, 0xFE, 0x00, 0x07, 0xF0, 0x00, 0x3F, + 0xC0, 0x01, 0xEE, 0x00, 0x0F, 0x78, 0x00, 0xF3, 0xE0, 0x0F, 0x9F, 0xC0, + 0xF8, 0x8F, 0xFF, 0x04, 0x0F, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFC, 0x3F, 0xC3, 0xFF, 0x03, 0xFC, 0x0F, 0xE0, 0x3F, 0xC0, + 0x7C, 0x03, 0xFC, 0x03, 0xC0, 0x3F, 0xC0, 0x38, 0x03, 0xFC, 0x01, 0x80, + 0x3F, 0xC0, 0x10, 0x03, 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x03, 0xFC, + 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, + 0x03, 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x3F, + 0xC0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x03, 0xFC, 0x00, + 0x00, 0x3F, 0xC0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x03, + 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x3F, 0xC0, + 0x00, 0x03, 0xFC, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0x3F, 0xFF, 0xC0, 0xFF, + 0xFE, 0x07, 0xFC, 0xFF, 0xC0, 0x07, 0xC1, 0xFE, 0x00, 0x0E, 0x07, 0xF8, + 0x00, 0x18, 0x1F, 0xE0, 0x00, 0x60, 0x7F, 0x80, 0x01, 0x81, 0xFE, 0x00, + 0x06, 0x07, 0xF8, 0x00, 0x18, 0x1F, 0xE0, 0x00, 0x60, 0x7F, 0x80, 0x01, + 0x81, 0xFE, 0x00, 0x06, 0x07, 0xF8, 0x00, 0x18, 0x1F, 0xE0, 0x00, 0x60, + 0x7F, 0x80, 0x01, 0x81, 0xFE, 0x00, 0x06, 0x07, 0xF8, 0x00, 0x18, 0x1F, + 0xE0, 0x00, 0x60, 0x7F, 0x80, 0x01, 0x81, 0xFE, 0x00, 0x06, 0x07, 0xF8, + 0x00, 0x18, 0x1F, 0xE0, 0x00, 0x60, 0x7F, 0x80, 0x01, 0x81, 0xFE, 0x00, + 0x06, 0x07, 0xF8, 0x00, 0x18, 0x1F, 0xE0, 0x00, 0x60, 0x7F, 0x80, 0x03, + 0x00, 0xFF, 0x00, 0x0C, 0x03, 0xFC, 0x00, 0x30, 0x07, 0xF0, 0x01, 0x80, + 0x0F, 0xE0, 0x0E, 0x00, 0x1F, 0xE0, 0xF0, 0x00, 0x1F, 0xFF, 0x00, 0x00, + 0x1F, 0xF0, 0x00, 0xFF, 0xFF, 0x01, 0xFF, 0x9F, 0xFC, 0x00, 0x1F, 0x07, + 0xFC, 0x00, 0x07, 0x01, 0xFE, 0x00, 0x03, 0x00, 0x7F, 0x80, 0x03, 0x80, + 0x3F, 0xC0, 0x01, 0x80, 0x1F, 0xE0, 0x00, 0xC0, 0x07, 0xF8, 0x00, 0xC0, + 0x03, 0xFC, 0x00, 0x60, 0x00, 0xFF, 0x00, 0x30, 0x00, 0x7F, 0x80, 0x30, + 0x00, 0x1F, 0xE0, 0x18, 0x00, 0x0F, 0xF0, 0x18, 0x00, 0x07, 0xF8, 0x0C, + 0x00, 0x01, 0xFE, 0x06, 0x00, 0x00, 0xFF, 0x06, 0x00, 0x00, 0x3F, 0xC3, + 0x00, 0x00, 0x1F, 0xE3, 0x80, 0x00, 0x0F, 0xF1, 0x80, 0x00, 0x03, 0xFC, + 0xC0, 0x00, 0x01, 0xFE, 0xC0, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0x00, 0x3F, + 0xF0, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x03, + 0xF8, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x01, 0x80, 0x00, 0xFF, 0xF8, 0x7F, 0xFF, 0x0F, 0xFB, 0xFF, 0x00, 0xFF, + 0xC0, 0x1F, 0x0F, 0xF0, 0x03, 0xFC, 0x00, 0x70, 0x3F, 0x80, 0x0F, 0xE0, + 0x03, 0x81, 0xFE, 0x00, 0x7F, 0x80, 0x1C, 0x0F, 0xF0, 0x03, 0xFC, 0x00, + 0xC0, 0x3F, 0x80, 0x0F, 0xE0, 0x06, 0x01, 0xFE, 0x00, 0x7F, 0x00, 0x70, + 0x0F, 0xF0, 0x07, 0xFC, 0x03, 0x00, 0x3F, 0x80, 0x3F, 0xE0, 0x18, 0x01, + 0xFE, 0x01, 0xFF, 0x01, 0xC0, 0x0F, 0xF0, 0x1B, 0xFC, 0x0C, 0x00, 0x3F, + 0x80, 0xCF, 0xE0, 0x60, 0x01, 0xFE, 0x06, 0x7F, 0x07, 0x00, 0x0F, 0xF0, + 0x63, 0xFC, 0x30, 0x00, 0x3F, 0x83, 0x0F, 0xE1, 0x80, 0x01, 0xFE, 0x30, + 0x7F, 0x1C, 0x00, 0x07, 0xF1, 0x81, 0xFC, 0xC0, 0x00, 0x3F, 0x8C, 0x0F, + 0xE6, 0x00, 0x01, 0xFE, 0xC0, 0x7F, 0x70, 0x00, 0x07, 0xF6, 0x01, 0xFB, + 0x00, 0x00, 0x3F, 0xE0, 0x0F, 0xF8, 0x00, 0x01, 0xFF, 0x00, 0x7F, 0xC0, + 0x00, 0x07, 0xF8, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x0F, 0xE0, 0x00, + 0x01, 0xFC, 0x00, 0x7F, 0x00, 0x00, 0x07, 0xE0, 0x01, 0xF0, 0x00, 0x00, + 0x3E, 0x00, 0x0F, 0x80, 0x00, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x00, 0x07, + 0x00, 0x01, 0xC0, 0x00, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x00, 0x01, 0xC0, + 0x00, 0x70, 0x00, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0xFF, 0xFF, 0x0F, + 0xFF, 0x3F, 0xF8, 0x01, 0xF8, 0x1F, 0xF8, 0x01, 0xE0, 0x0F, 0xF8, 0x01, + 0xC0, 0x0F, 0xF8, 0x01, 0x80, 0x07, 0xFC, 0x03, 0x80, 0x03, 0xFE, 0x07, + 0x00, 0x03, 0xFE, 0x06, 0x00, 0x01, 0xFF, 0x0C, 0x00, 0x00, 0xFF, 0x9C, + 0x00, 0x00, 0xFF, 0x98, 0x00, 0x00, 0x7F, 0xF0, 0x00, 0x00, 0x3F, 0xF0, + 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0x0F, 0xF0, + 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x0F, 0xFC, + 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x19, 0xFE, 0x00, 0x00, 0x31, 0xFF, + 0x00, 0x00, 0x70, 0xFF, 0x80, 0x00, 0x60, 0x7F, 0x80, 0x00, 0xC0, 0x7F, + 0xC0, 0x01, 0xC0, 0x3F, 0xE0, 0x03, 0x80, 0x1F, 0xE0, 0x07, 0x00, 0x1F, + 0xF0, 0x07, 0x00, 0x0F, 0xF8, 0x0F, 0x00, 0x0F, 0xF8, 0x3F, 0x80, 0x1F, + 0xFC, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0x7F, 0xF0, 0x00, + 0x7E, 0x1F, 0xF0, 0x00, 0x38, 0x1F, 0xF0, 0x00, 0x38, 0x0F, 0xF0, 0x00, + 0x70, 0x0F, 0xF8, 0x00, 0x60, 0x07, 0xF8, 0x00, 0x60, 0x07, 0xFC, 0x00, + 0xC0, 0x03, 0xFC, 0x01, 0xC0, 0x01, 0xFE, 0x01, 0x80, 0x01, 0xFE, 0x03, + 0x00, 0x00, 0xFF, 0x03, 0x00, 0x00, 0xFF, 0x86, 0x00, 0x00, 0x7F, 0x8E, + 0x00, 0x00, 0x7F, 0xCC, 0x00, 0x00, 0x3F, 0xD8, 0x00, 0x00, 0x3F, 0xF8, + 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0x0F, 0xF0, + 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x0F, 0xF0, + 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x0F, 0xF0, + 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x0F, 0xF0, + 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x7F, 0xFE, + 0x00, 0x3F, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0xFC, 0x3F, 0x80, 0x7F, 0xC3, + 0xE0, 0x07, 0xF8, 0x38, 0x00, 0xFF, 0x83, 0x80, 0x0F, 0xF0, 0x30, 0x01, + 0xFE, 0x07, 0x00, 0x3F, 0xE0, 0x60, 0x03, 0xFC, 0x06, 0x00, 0x7F, 0xC0, + 0x00, 0x0F, 0xF8, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x01, + 0xFE, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x7F, 0x80, + 0x00, 0x0F, 0xF8, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x03, + 0xFE, 0x00, 0x00, 0x3F, 0xC0, 0x01, 0x07, 0xFC, 0x00, 0x30, 0xFF, 0x80, + 0x03, 0x0F, 0xF0, 0x00, 0x31, 0xFF, 0x00, 0x07, 0x1F, 0xE0, 0x00, 0xF3, + 0xFE, 0x00, 0x1E, 0x7F, 0xC0, 0x03, 0xE7, 0xF8, 0x01, 0xFE, 0xFF, 0xFF, + 0xFF, 0xEF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xF0, 0x7C, 0x0F, 0x81, + 0xF0, 0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, + 0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, + 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, + 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xFF, 0xFF, 0xF8, 0xF0, + 0x01, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0xC0, 0x07, 0x80, 0x0F, 0x00, + 0x1F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x7C, 0x00, 0x78, 0x00, 0xF0, 0x01, + 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1F, + 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, + 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, + 0x1E, 0xFF, 0xFF, 0xFC, 0x1F, 0x81, 0xF0, 0x3E, 0x07, 0xC0, 0xF8, 0x1F, + 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, + 0xE0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, + 0x7C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, + 0x0F, 0x81, 0xF0, 0x3F, 0xFF, 0xFF, 0xF8, 0x00, 0x78, 0x00, 0x07, 0xC0, + 0x00, 0x3F, 0x00, 0x03, 0xF8, 0x00, 0x1F, 0xE0, 0x01, 0xEF, 0x00, 0x0F, + 0x3C, 0x00, 0xF1, 0xE0, 0x07, 0x87, 0x80, 0x78, 0x3C, 0x03, 0xC0, 0xF0, + 0x3C, 0x07, 0x81, 0xE0, 0x1E, 0x1E, 0x00, 0xF0, 0xF0, 0x07, 0xCF, 0x00, + 0x1E, 0x78, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x70, 0x1F, 0x03, 0xF0, 0x7E, 0x03, 0xE0, 0x3E, 0x01, 0xE0, 0x1E, + 0x00, 0xE0, 0x03, 0xFC, 0x00, 0x3F, 0xFC, 0x03, 0xE1, 0xF8, 0x0F, 0x03, + 0xF0, 0x7C, 0x07, 0xC1, 0xF8, 0x1F, 0x87, 0xE0, 0x7E, 0x1F, 0x81, 0xF8, + 0x3C, 0x07, 0xE0, 0x00, 0x1F, 0x80, 0x01, 0xFE, 0x00, 0x3F, 0xF8, 0x03, + 0xE7, 0xE0, 0x3E, 0x1F, 0x83, 0xF0, 0x7E, 0x1F, 0x81, 0xF8, 0x7E, 0x07, + 0xE3, 0xF8, 0x1F, 0x8F, 0xE0, 0x7E, 0x3F, 0x83, 0xF8, 0xFF, 0x1F, 0xE1, + 0xFF, 0xDF, 0xF7, 0xFE, 0x3F, 0x07, 0xE0, 0xF8, 0xFF, 0x80, 0x00, 0x1F, + 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x03, 0xF0, 0x00, 0x01, 0xF8, 0x00, 0x00, + 0xFC, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x1F, 0x80, 0x00, + 0x0F, 0xC7, 0xF0, 0x07, 0xEF, 0xFE, 0x03, 0xFC, 0x3F, 0x81, 0xFC, 0x0F, + 0xE0, 0xFC, 0x03, 0xF0, 0x7E, 0x01, 0xFC, 0x3F, 0x00, 0xFE, 0x1F, 0x80, + 0x3F, 0x8F, 0xC0, 0x1F, 0xC7, 0xE0, 0x0F, 0xE3, 0xF0, 0x07, 0xF1, 0xF8, + 0x03, 0xF8, 0xFC, 0x01, 0xFC, 0x7E, 0x00, 0xFE, 0x3F, 0x00, 0x7F, 0x1F, + 0x80, 0x3F, 0x0F, 0xC0, 0x1F, 0x87, 0xE0, 0x1F, 0xC3, 0xF0, 0x0F, 0xC1, + 0xF8, 0x07, 0xE0, 0xFE, 0x07, 0xE0, 0x73, 0x87, 0xE0, 0x30, 0xFF, 0xC0, + 0x10, 0x1F, 0x80, 0x00, 0x00, 0xFC, 0x00, 0x7F, 0xE0, 0x3E, 0x3E, 0x0F, + 0x83, 0xE3, 0xE0, 0x7C, 0x7C, 0x0F, 0x9F, 0x01, 0xF3, 0xE0, 0x1C, 0x7C, + 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x01, 0xF8, + 0x00, 0x3F, 0x00, 0x07, 0xF0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x01, 0xFC, + 0x00, 0x1F, 0xC0, 0x21, 0xFE, 0x0C, 0x3F, 0xFF, 0x01, 0xFF, 0x80, 0x0F, + 0xC0, 0x00, 0x1F, 0xF8, 0x00, 0x03, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x01, + 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x01, + 0xF8, 0x00, 0x01, 0xF8, 0x03, 0xF1, 0xF8, 0x07, 0xFD, 0xF8, 0x1F, 0xC7, + 0xF8, 0x1F, 0x83, 0xF8, 0x3F, 0x01, 0xF8, 0x7F, 0x01, 0xF8, 0x7E, 0x01, + 0xF8, 0x7E, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, + 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, + 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0x7E, 0x01, 0xF8, 0x7F, 0x01, + 0xF8, 0x3F, 0x03, 0xF8, 0x3F, 0x03, 0xF8, 0x1F, 0x87, 0xFC, 0x0F, 0xFD, + 0xFF, 0x03, 0xF1, 0xC0, 0x03, 0xF0, 0x03, 0xFF, 0x01, 0xE1, 0xE0, 0xF8, + 0x7C, 0x3C, 0x0F, 0x1F, 0x03, 0xE7, 0xC0, 0xFB, 0xF0, 0x3E, 0xFC, 0x0F, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x0F, + 0xC0, 0x03, 0xF8, 0x00, 0xFE, 0x00, 0x1F, 0x80, 0x07, 0xF0, 0x0C, 0xFC, + 0x06, 0x3F, 0xC3, 0x07, 0xFF, 0x80, 0xFF, 0xC0, 0x0F, 0xC0, 0x00, 0xFC, + 0x01, 0xFF, 0x81, 0xF1, 0xC1, 0xF0, 0xF0, 0xF8, 0xF8, 0xFC, 0x7C, 0x7E, + 0x1C, 0x3F, 0x00, 0x1F, 0x80, 0x0F, 0xC0, 0x07, 0xE0, 0x1F, 0xFF, 0x0F, + 0xFF, 0x80, 0xFC, 0x00, 0x7E, 0x00, 0x3F, 0x00, 0x1F, 0x80, 0x0F, 0xC0, + 0x07, 0xE0, 0x03, 0xF0, 0x01, 0xF8, 0x00, 0xFC, 0x00, 0x7E, 0x00, 0x3F, + 0x00, 0x1F, 0x80, 0x0F, 0xC0, 0x07, 0xE0, 0x03, 0xF0, 0x01, 0xF8, 0x00, + 0xFC, 0x00, 0x7E, 0x00, 0x7F, 0x80, 0xFF, 0xF8, 0x00, 0x07, 0xF0, 0x03, + 0xFF, 0xFC, 0xF8, 0x7F, 0xBE, 0x07, 0x87, 0xC0, 0xF9, 0xF8, 0x1F, 0xBF, + 0x03, 0xF7, 0xE0, 0x7E, 0xFC, 0x0F, 0xDF, 0x81, 0xF9, 0xF0, 0x3F, 0x3E, + 0x07, 0xC3, 0xE1, 0xF8, 0x3C, 0x7E, 0x01, 0xFF, 0x00, 0x60, 0x00, 0x38, + 0x00, 0x0F, 0x00, 0x01, 0xF0, 0x00, 0x7F, 0xFF, 0x0F, 0xFF, 0xF9, 0xFF, + 0xFF, 0x9F, 0xFF, 0xF9, 0xFF, 0xFF, 0x0F, 0xFF, 0xEF, 0x00, 0x3F, 0xC0, + 0x03, 0xF8, 0x00, 0x7F, 0x00, 0x1C, 0xF8, 0x07, 0x0F, 0xFF, 0xC0, 0x7F, + 0xC0, 0xFF, 0x80, 0x00, 0x3F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x80, + 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x80, + 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x87, 0xE0, 0x1F, 0x9F, 0xF0, 0x1F, 0xBF, + 0xF8, 0x1F, 0xF1, 0xF8, 0x1F, 0xC0, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, + 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, + 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, + 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, + 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x3F, 0xC1, 0xFE, 0xFF, 0xE3, + 0xFF, 0x0F, 0x07, 0xE1, 0xFE, 0x3F, 0xC7, 0xF8, 0x7F, 0x03, 0xC0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x7F, 0xC3, 0xF8, 0x3F, 0x07, 0xE0, 0xFC, 0x1F, + 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x07, 0xE0, 0xFC, 0x1F, 0x83, + 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x07, 0xE1, 0xFE, 0xFF, 0xE0, 0x00, + 0x70, 0x07, 0xF0, 0x3F, 0xC0, 0xFF, 0x03, 0xFC, 0x07, 0xF0, 0x0F, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x01, 0xFC, 0x03, 0xF0, + 0x0F, 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFC, + 0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F, + 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F, + 0xDC, 0x3F, 0xF8, 0xFB, 0xE3, 0xEF, 0x0F, 0xBC, 0x7C, 0x7F, 0xE0, 0x7E, + 0x00, 0xFF, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x03, 0xF0, + 0x00, 0x01, 0xF8, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3F, + 0x00, 0x00, 0x1F, 0x80, 0x00, 0x0F, 0xC0, 0x00, 0x07, 0xE1, 0xFF, 0x83, + 0xF0, 0x3F, 0x01, 0xF8, 0x0E, 0x00, 0xFC, 0x06, 0x00, 0x7E, 0x06, 0x00, + 0x3F, 0x06, 0x00, 0x1F, 0x86, 0x00, 0x0F, 0xC7, 0x00, 0x07, 0xE7, 0x80, + 0x03, 0xF7, 0xE0, 0x01, 0xFF, 0xF8, 0x00, 0xFF, 0xFC, 0x00, 0x7E, 0x7F, + 0x00, 0x3F, 0x1F, 0xC0, 0x1F, 0x8F, 0xE0, 0x0F, 0xC3, 0xF8, 0x07, 0xE0, + 0xFE, 0x03, 0xF0, 0x7F, 0x81, 0xF8, 0x1F, 0xC0, 0xFC, 0x0F, 0xF0, 0xFF, + 0x07, 0xFD, 0xFF, 0xC7, 0xFF, 0xFF, 0x87, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, + 0x3F, 0x07, 0xE0, 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, + 0x07, 0xE0, 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x07, + 0xE0, 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x0F, 0xF7, + 0xFF, 0x00, 0x07, 0xE0, 0x3F, 0x07, 0xFC, 0xFF, 0x87, 0xFC, 0x0F, 0xEF, + 0xFE, 0x7F, 0xF0, 0x3F, 0xC3, 0xFF, 0x1F, 0x81, 0xFC, 0x0F, 0xE0, 0x7E, + 0x0F, 0xC0, 0x7E, 0x03, 0xF0, 0x7E, 0x03, 0xF0, 0x1F, 0x83, 0xF0, 0x1F, + 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x07, 0xE0, 0xFC, 0x07, 0xE0, 0x3F, 0x07, + 0xE0, 0x3F, 0x01, 0xF8, 0x3F, 0x01, 0xF8, 0x0F, 0xC1, 0xF8, 0x0F, 0xC0, + 0x7E, 0x0F, 0xC0, 0x7E, 0x03, 0xF0, 0x7E, 0x03, 0xF0, 0x1F, 0x83, 0xF0, + 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x07, 0xE0, 0xFC, 0x07, 0xE0, 0x3F, + 0x07, 0xE0, 0x3F, 0x01, 0xF8, 0x3F, 0x01, 0xF8, 0x0F, 0xC1, 0xF8, 0x0F, + 0xC0, 0x7E, 0x1F, 0xE0, 0xFF, 0x07, 0xFB, 0xFF, 0x8F, 0xFC, 0x7F, 0xE0, + 0x00, 0x07, 0xE0, 0xFF, 0x9F, 0xF0, 0x3F, 0xBF, 0xF8, 0x1F, 0xF1, 0xF8, + 0x1F, 0xC0, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, + 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, + 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, + 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, + 0x1F, 0x80, 0xFC, 0x3F, 0xC1, 0xFE, 0xFF, 0xE3, 0xFF, 0x01, 0xFC, 0x00, + 0x3F, 0xF8, 0x03, 0xE3, 0xE0, 0x3E, 0x0F, 0x83, 0xF0, 0x7E, 0x1F, 0x01, + 0xF1, 0xF8, 0x0F, 0xCF, 0xC0, 0x7E, 0xFE, 0x03, 0xFF, 0xF0, 0x1F, 0xFF, + 0x80, 0xFF, 0xFC, 0x07, 0xFF, 0xE0, 0x3F, 0xFF, 0x01, 0xFF, 0xF8, 0x0F, + 0xFF, 0xC0, 0x7F, 0x7E, 0x03, 0xF3, 0xF0, 0x1F, 0x8F, 0x80, 0xF8, 0x7E, + 0x0F, 0xC1, 0xF0, 0x7C, 0x07, 0xC7, 0xC0, 0x1F, 0xFC, 0x00, 0x3F, 0x80, + 0x00, 0x0F, 0xC0, 0xFF, 0xBF, 0xF0, 0x3F, 0xF1, 0xF8, 0x1F, 0xC0, 0xFC, + 0x1F, 0xC0, 0xFC, 0x1F, 0x80, 0xFE, 0x1F, 0x80, 0x7E, 0x1F, 0x80, 0x7F, + 0x1F, 0x80, 0x7F, 0x1F, 0x80, 0x7F, 0x1F, 0x80, 0x7F, 0x1F, 0x80, 0x7F, + 0x1F, 0x80, 0x7F, 0x1F, 0x80, 0x7F, 0x1F, 0x80, 0x7F, 0x1F, 0x80, 0x7F, + 0x1F, 0x80, 0x7E, 0x1F, 0x80, 0x7E, 0x1F, 0x80, 0xFE, 0x1F, 0x80, 0xFC, + 0x1F, 0xC1, 0xF8, 0x1F, 0xE3, 0xF8, 0x1F, 0xBF, 0xE0, 0x1F, 0x8F, 0xC0, + 0x1F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x80, 0x00, + 0x1F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0xF8, 0x00, + 0x00, 0xF8, 0x08, 0x07, 0xFE, 0x18, 0x0F, 0xC7, 0x38, 0x1F, 0x83, 0xF8, + 0x3F, 0x01, 0xF8, 0x3F, 0x01, 0xF8, 0x7F, 0x01, 0xF8, 0x7E, 0x01, 0xF8, + 0x7E, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, + 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, + 0xFE, 0x01, 0xF8, 0x7E, 0x01, 0xF8, 0x7F, 0x01, 0xF8, 0x7F, 0x01, 0xF8, + 0x3F, 0x83, 0xF8, 0x1F, 0xC7, 0xF8, 0x0F, 0xFD, 0xF8, 0x03, 0xF1, 0xF8, + 0x00, 0x01, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x01, 0xF8, + 0x00, 0x01, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xFF, + 0x00, 0x07, 0x9F, 0xF3, 0xF8, 0xFE, 0xFF, 0x8F, 0xFF, 0xF1, 0xFE, 0x7E, + 0x3F, 0x87, 0x87, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, + 0x7E, 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x00, 0x07, 0xE0, 0x00, + 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x01, + 0xF8, 0x00, 0x7F, 0x80, 0x3F, 0xFC, 0x00, 0x0F, 0x84, 0x3F, 0xF8, 0xE1, + 0xF3, 0x80, 0xEF, 0x00, 0xDE, 0x01, 0xBE, 0x01, 0x7E, 0x00, 0xFF, 0x01, + 0xFF, 0x81, 0xFF, 0xC3, 0xFF, 0xC3, 0xFF, 0xC1, 0xFF, 0x80, 0xFF, 0x80, + 0x7F, 0x80, 0x7F, 0x80, 0x7F, 0x00, 0x7E, 0x00, 0xFE, 0x01, 0xDF, 0x0F, + 0x37, 0xFC, 0x43, 0xF0, 0x01, 0x00, 0x0C, 0x00, 0x70, 0x01, 0xC0, 0x0F, + 0x00, 0x7C, 0x03, 0xF0, 0x1F, 0xC0, 0xFF, 0xF3, 0xFF, 0xC3, 0xF0, 0x0F, + 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFC, 0x03, + 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, + 0xFC, 0x23, 0xF0, 0x8F, 0xE6, 0x1F, 0xF0, 0x7F, 0x80, 0xF8, 0x00, 0xFF, + 0x87, 0xFC, 0x1F, 0xC0, 0xFE, 0x07, 0xE0, 0x3F, 0x03, 0xF0, 0x1F, 0x81, + 0xF8, 0x0F, 0xC0, 0xFC, 0x07, 0xE0, 0x7E, 0x03, 0xF0, 0x3F, 0x01, 0xF8, + 0x1F, 0x80, 0xFC, 0x0F, 0xC0, 0x7E, 0x07, 0xE0, 0x3F, 0x03, 0xF0, 0x1F, + 0x81, 0xF8, 0x0F, 0xC0, 0xFC, 0x07, 0xE0, 0x7E, 0x03, 0xF0, 0x3F, 0x01, + 0xF8, 0x1F, 0x80, 0xFC, 0x0F, 0xC0, 0x7E, 0x07, 0xE0, 0x7F, 0x03, 0xF8, + 0x7F, 0xC0, 0xFF, 0xEF, 0xF8, 0x3F, 0xE7, 0xC0, 0x0F, 0xC2, 0x00, 0xFF, + 0xF1, 0xFC, 0xFF, 0x01, 0xE3, 0xFC, 0x03, 0x07, 0xF0, 0x0C, 0x1F, 0xC0, + 0x60, 0x3F, 0x81, 0x80, 0xFE, 0x04, 0x01, 0xF8, 0x30, 0x07, 0xF0, 0xC0, + 0x1F, 0xC6, 0x00, 0x3F, 0x98, 0x00, 0xFE, 0x40, 0x01, 0xFB, 0x00, 0x07, + 0xFC, 0x00, 0x1F, 0xE0, 0x00, 0x3F, 0x80, 0x00, 0xFE, 0x00, 0x01, 0xF0, + 0x00, 0x07, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, + 0x01, 0x00, 0x00, 0xFF, 0xE7, 0xFF, 0x3F, 0xBF, 0xE0, 0xFE, 0x07, 0x0F, + 0xE0, 0x7F, 0x03, 0x83, 0xF0, 0x1F, 0x81, 0x81, 0xFC, 0x0F, 0xC0, 0xC0, + 0xFE, 0x07, 0xF0, 0x40, 0x3F, 0x03, 0xF8, 0x60, 0x1F, 0xC3, 0xFC, 0x30, + 0x07, 0xE1, 0xFE, 0x10, 0x03, 0xF0, 0x9F, 0x98, 0x01, 0xFC, 0xCF, 0xCC, + 0x00, 0x7E, 0x67, 0xEC, 0x00, 0x3F, 0xE1, 0xFE, 0x00, 0x1F, 0xF0, 0xFE, + 0x00, 0x07, 0xF0, 0x7F, 0x00, 0x03, 0xF8, 0x3F, 0x80, 0x00, 0xFC, 0x0F, + 0x80, 0x00, 0x7C, 0x07, 0xC0, 0x00, 0x3E, 0x03, 0xE0, 0x00, 0x0F, 0x00, + 0xE0, 0x00, 0x07, 0x00, 0x70, 0x00, 0x03, 0x80, 0x38, 0x00, 0x00, 0x80, + 0x08, 0x00, 0xFF, 0xF3, 0xFD, 0xFF, 0x03, 0xC3, 0xFC, 0x0E, 0x07, 0xF0, + 0x30, 0x1F, 0xE1, 0x80, 0x3F, 0x8C, 0x00, 0x7F, 0x70, 0x01, 0xFF, 0x80, + 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x1F, 0xE0, 0x00, 0x3F, 0x80, 0x00, + 0xFF, 0x00, 0x07, 0xFE, 0x00, 0x1B, 0xF8, 0x00, 0xCF, 0xF0, 0x06, 0x1F, + 0xC0, 0x38, 0x3F, 0x80, 0xC0, 0xFF, 0x07, 0x01, 0xFC, 0x3C, 0x07, 0xFB, + 0xFC, 0x7F, 0xF0, 0xFF, 0xE3, 0xFB, 0xFC, 0x07, 0x8F, 0xE0, 0x18, 0x7F, + 0x01, 0x81, 0xF8, 0x0C, 0x0F, 0xE0, 0x60, 0x7F, 0x06, 0x01, 0xF8, 0x30, + 0x0F, 0xE1, 0x80, 0x7F, 0x18, 0x01, 0xF8, 0xC0, 0x0F, 0xE6, 0x00, 0x3F, + 0x60, 0x01, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0x80, 0x01, 0xFC, 0x00, + 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x07, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x60, 0x03, 0x82, 0x00, 0x3E, + 0x30, 0x01, 0xF1, 0x00, 0x0F, 0x98, 0x00, 0x3F, 0x80, 0x00, 0xF0, 0x00, + 0x00, 0x7F, 0xFF, 0xEF, 0xFF, 0xFD, 0xE0, 0x7F, 0x30, 0x1F, 0xC6, 0x07, + 0xF8, 0x80, 0xFE, 0x00, 0x3F, 0xC0, 0x07, 0xF0, 0x01, 0xFC, 0x00, 0x3F, + 0x80, 0x0F, 0xE0, 0x03, 0xFC, 0x00, 0x7F, 0x00, 0x1F, 0xE0, 0x03, 0xF8, + 0x00, 0xFE, 0x03, 0x3F, 0xC0, 0x67, 0xF0, 0x19, 0xFE, 0x07, 0x3F, 0x83, + 0xEF, 0xFF, 0xFD, 0xFF, 0xFF, 0x80, 0x00, 0x7C, 0x07, 0xE0, 0x3E, 0x00, + 0xF8, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, + 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, + 0x1F, 0x00, 0xF8, 0x03, 0xC0, 0x3C, 0x01, 0xF0, 0x00, 0xF0, 0x03, 0xE0, + 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, + 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, + 0x00, 0x3E, 0x00, 0xF8, 0x01, 0xF8, 0x01, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF0, 0xF8, 0x01, 0xF8, 0x01, 0xF0, 0x07, 0xC0, 0x0F, 0x80, 0x3E, 0x00, + 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, + 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0x7C, 0x00, 0xF0, + 0x00, 0xF0, 0x03, 0xE0, 0x3C, 0x01, 0xF0, 0x0F, 0x80, 0x3E, 0x00, 0xF8, + 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, + 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x01, 0xF0, 0x07, 0xC0, 0x7E, + 0x03, 0xE0, 0x00, 0x0F, 0x80, 0x00, 0xFF, 0xC0, 0x47, 0xFF, 0xC3, 0x9F, + 0xFF, 0xFF, 0x70, 0x7F, 0xF8, 0x80, 0x7F, 0xC0, 0x00, 0x3E, 0x00}; + +const GFXglyph FreeSerifBold24pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 12, 0, 1}, // 0x20 ' ' + {0, 8, 34, 16, 4, -32}, // 0x21 '!' + {34, 17, 13, 26, 4, -32}, // 0x22 '"' + {62, 23, 33, 23, 0, -32}, // 0x23 '#' + {157, 21, 39, 24, 1, -34}, // 0x24 '$' + {260, 35, 34, 47, 6, -32}, // 0x25 '%' + {409, 34, 34, 39, 3, -32}, // 0x26 '&' + {554, 5, 13, 13, 4, -32}, // 0x27 ''' + {563, 12, 41, 16, 2, -32}, // 0x28 '(' + {625, 12, 41, 16, 1, -32}, // 0x29 ')' + {687, 18, 21, 24, 3, -32}, // 0x2A '*' + {735, 26, 25, 32, 3, -24}, // 0x2B '+' + {817, 8, 15, 12, 2, -6}, // 0x2C ',' + {832, 11, 5, 16, 2, -12}, // 0x2D '-' + {839, 8, 8, 12, 2, -6}, // 0x2E '.' + {847, 15, 33, 13, -1, -32}, // 0x2F '/' + {909, 22, 34, 23, 1, -32}, // 0x30 '0' + {1003, 18, 33, 23, 3, -32}, // 0x31 '1' + {1078, 21, 33, 24, 1, -32}, // 0x32 '2' + {1165, 21, 34, 24, 1, -32}, // 0x33 '3' + {1255, 21, 33, 24, 1, -32}, // 0x34 '4' + {1342, 20, 32, 23, 2, -31}, // 0x35 '5' + {1422, 21, 34, 24, 1, -32}, // 0x36 '6' + {1512, 21, 32, 23, 1, -31}, // 0x37 '7' + {1596, 21, 34, 23, 1, -32}, // 0x38 '8' + {1686, 22, 34, 23, 1, -32}, // 0x39 '9' + {1780, 8, 24, 16, 4, -22}, // 0x3A ':' + {1804, 9, 31, 16, 3, -22}, // 0x3B ';' + {1839, 26, 26, 32, 3, -24}, // 0x3C '<' + {1924, 26, 17, 32, 3, -20}, // 0x3D '=' + {1980, 26, 26, 32, 3, -24}, // 0x3E '>' + {2065, 18, 34, 24, 3, -32}, // 0x3F '?' + {2142, 33, 34, 44, 5, -32}, // 0x40 '@' + {2283, 32, 33, 34, 1, -32}, // 0x41 'A' + {2415, 28, 32, 31, 1, -31}, // 0x42 'B' + {2527, 30, 34, 33, 2, -32}, // 0x43 'C' + {2655, 32, 32, 34, 1, -31}, // 0x44 'D' + {2783, 28, 32, 32, 2, -31}, // 0x45 'E' + {2895, 25, 32, 29, 2, -31}, // 0x46 'F' + {2995, 33, 34, 36, 2, -32}, // 0x47 'G' + {3136, 33, 32, 37, 2, -31}, // 0x48 'H' + {3268, 15, 32, 18, 2, -31}, // 0x49 'I' + {3328, 22, 37, 24, 0, -31}, // 0x4A 'J' + {3430, 34, 32, 36, 2, -31}, // 0x4B 'K' + {3566, 28, 32, 31, 2, -31}, // 0x4C 'L' + {3678, 43, 32, 45, 0, -31}, // 0x4D 'M' + {3850, 31, 32, 34, 1, -31}, // 0x4E 'N' + {3974, 33, 34, 37, 2, -32}, // 0x4F 'O' + {4115, 26, 32, 30, 2, -31}, // 0x50 'P' + {4219, 33, 41, 37, 2, -32}, // 0x51 'Q' + {4389, 31, 32, 34, 2, -31}, // 0x52 'R' + {4513, 21, 34, 27, 3, -32}, // 0x53 'S' + {4603, 28, 32, 30, 1, -31}, // 0x54 'T' + {4715, 30, 33, 34, 2, -31}, // 0x55 'U' + {4839, 33, 32, 33, 0, -31}, // 0x56 'V' + {4971, 45, 33, 46, 1, -31}, // 0x57 'W' + {5157, 32, 32, 34, 1, -31}, // 0x58 'X' + {5285, 32, 32, 33, 1, -31}, // 0x59 'Y' + {5413, 28, 32, 30, 1, -31}, // 0x5A 'Z' + {5525, 11, 39, 16, 3, -31}, // 0x5B '[' + {5579, 15, 33, 13, -1, -32}, // 0x5C '\' + {5641, 11, 39, 16, 2, -31}, // 0x5D ']' + {5695, 21, 17, 27, 3, -31}, // 0x5E '^' + {5740, 24, 3, 23, 0, 5}, // 0x5F '_' + {5749, 11, 9, 16, 0, -33}, // 0x60 '`' + {5762, 22, 24, 23, 1, -22}, // 0x61 'a' + {5828, 25, 33, 26, 0, -31}, // 0x62 'b' + {5932, 19, 24, 20, 1, -22}, // 0x63 'c' + {5989, 24, 33, 26, 1, -31}, // 0x64 'd' + {6088, 18, 24, 21, 1, -22}, // 0x65 'e' + {6142, 17, 33, 18, 1, -32}, // 0x66 'f' + {6213, 19, 32, 24, 2, -22}, // 0x67 'g' + {6289, 24, 32, 26, 0, -31}, // 0x68 'h' + {6385, 11, 33, 14, 1, -32}, // 0x69 'i' + {6431, 14, 42, 18, 0, -32}, // 0x6A 'j' + {6505, 25, 32, 26, 0, -31}, // 0x6B 'k' + {6605, 11, 32, 13, 0, -31}, // 0x6C 'l' + {6649, 37, 23, 39, 0, -22}, // 0x6D 'm' + {6756, 24, 23, 26, 0, -22}, // 0x6E 'n' + {6825, 21, 24, 24, 1, -22}, // 0x6F 'o' + {6888, 24, 32, 26, 0, -22}, // 0x70 'p' + {6984, 24, 32, 26, 1, -22}, // 0x71 'q' + {7080, 19, 23, 20, 0, -22}, // 0x72 'r' + {7135, 15, 24, 19, 2, -22}, // 0x73 's' + {7180, 14, 31, 16, 1, -29}, // 0x74 't' + {7235, 25, 23, 27, 0, -21}, // 0x75 'u' + {7307, 22, 23, 23, 0, -21}, // 0x76 'v' + {7371, 33, 23, 33, 0, -21}, // 0x77 'w' + {7466, 22, 22, 24, 1, -21}, // 0x78 'x' + {7527, 21, 31, 23, 0, -21}, // 0x79 'y' + {7609, 19, 22, 21, 1, -21}, // 0x7A 'z' + {7662, 14, 42, 19, 1, -33}, // 0x7B '{' + {7736, 4, 33, 10, 3, -32}, // 0x7C '|' + {7753, 14, 42, 19, 4, -33}, // 0x7D '}' + {7827, 22, 7, 24, 1, -14}}; // 0x7E '~' + +const GFXfont FreeSerifBold24pt7b PROGMEM = { + (uint8_t *)FreeSerifBold24pt7bBitmaps, + (GFXglyph *)FreeSerifBold24pt7bGlyphs, 0x20, 0x7E, 56}; + +// Approx. 8519 bytes diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBold9pt7b.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBold9pt7b.h new file mode 100644 index 0000000..2f1cf8f --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBold9pt7b.h @@ -0,0 +1,204 @@ +#pragma once +#include + +const uint8_t FreeSerifBold9pt7bBitmaps[] PROGMEM = { + 0xFF, 0xF4, 0x92, 0x1F, 0xF0, 0xCF, 0x3C, 0xE3, 0x88, 0x13, 0x09, 0x84, + 0xC2, 0x47, 0xF9, 0x90, 0xC8, 0x4C, 0xFF, 0x13, 0x09, 0x0C, 0x86, 0x40, + 0x10, 0x38, 0xD6, 0x92, 0xD2, 0xF0, 0x7C, 0x3E, 0x17, 0x93, 0x93, 0xD6, + 0x7C, 0x10, 0x3C, 0x21, 0xCF, 0x0E, 0x24, 0x30, 0xA0, 0xC5, 0x03, 0x34, + 0xE7, 0x26, 0x40, 0xB9, 0x04, 0xC4, 0x23, 0x30, 0x8C, 0x84, 0x1C, 0x0F, + 0x00, 0xCC, 0x06, 0x60, 0x3E, 0x00, 0xE7, 0x8F, 0x18, 0x9C, 0x8C, 0xE4, + 0xE3, 0xC7, 0x9E, 0x3C, 0x72, 0xFD, 0xE0, 0xFF, 0x80, 0x32, 0x44, 0xCC, + 0xCC, 0xCC, 0xC4, 0x62, 0x10, 0x84, 0x22, 0x33, 0x33, 0x33, 0x32, 0x64, + 0x80, 0x31, 0x6B, 0xB1, 0x8E, 0xD6, 0x8C, 0x00, 0x08, 0x04, 0x02, 0x01, + 0x0F, 0xF8, 0x40, 0x20, 0x10, 0x08, 0x00, 0xDF, 0x95, 0x00, 0xFF, 0xFF, + 0x80, 0x0C, 0x21, 0x86, 0x10, 0xC3, 0x08, 0x61, 0x84, 0x30, 0xC0, 0x1C, + 0x33, 0x98, 0xDC, 0x7E, 0x3F, 0x1F, 0x8F, 0xC7, 0xE3, 0xB1, 0x98, 0xC3, + 0x80, 0x08, 0xE3, 0x8E, 0x38, 0xE3, 0x8E, 0x38, 0xE3, 0xBF, 0x3C, 0x3F, + 0x23, 0xC0, 0xE0, 0x70, 0x30, 0x38, 0x18, 0x18, 0x18, 0x5F, 0xDF, 0xE0, + 0x7C, 0x8E, 0x0E, 0x0E, 0x0C, 0x1E, 0x07, 0x03, 0x03, 0x02, 0xE6, 0xF8, + 0x06, 0x0E, 0x0E, 0x3E, 0x2E, 0x4E, 0x8E, 0x8E, 0xFF, 0xFF, 0x0E, 0x0E, + 0x3F, 0x7E, 0x40, 0x40, 0xF8, 0xFC, 0x1E, 0x06, 0x02, 0x02, 0xE4, 0xF8, + 0x07, 0x1C, 0x30, 0x70, 0xFC, 0xE6, 0xE7, 0xE7, 0xE7, 0x67, 0x66, 0x3C, + 0x7F, 0x3F, 0xA0, 0xD0, 0x40, 0x60, 0x30, 0x10, 0x18, 0x0C, 0x04, 0x06, + 0x03, 0x00, 0x3C, 0xC6, 0xC6, 0xC6, 0xFC, 0x7C, 0x3E, 0xCF, 0xC7, 0xC7, + 0xC6, 0x7C, 0x3E, 0x33, 0xB8, 0xDC, 0x7E, 0x3F, 0x1D, 0xCE, 0x7F, 0x07, + 0x07, 0x0F, 0x1C, 0x00, 0xFF, 0x80, 0x3F, 0xE0, 0xFF, 0x80, 0x37, 0xE5, + 0x40, 0x00, 0x00, 0x70, 0x78, 0x78, 0x78, 0x38, 0x03, 0x80, 0x3C, 0x03, + 0xC0, 0x30, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0xFF, 0xC0, 0xC0, 0x3C, 0x03, + 0xC0, 0x1C, 0x01, 0xC1, 0xE1, 0xE1, 0xE0, 0xE0, 0x00, 0x00, 0x3D, 0x9F, + 0x3E, 0x70, 0xE1, 0x04, 0x08, 0x00, 0x70, 0xE1, 0xC0, 0x0F, 0x81, 0x83, + 0x18, 0xC4, 0x89, 0x9C, 0x4C, 0xE4, 0x67, 0x22, 0x39, 0x22, 0x4F, 0xE3, + 0x00, 0x0C, 0x10, 0x1F, 0x00, 0x02, 0x00, 0x30, 0x01, 0xC0, 0x0E, 0x00, + 0xB8, 0x05, 0xC0, 0x4F, 0x02, 0x38, 0x3F, 0xE1, 0x07, 0x18, 0x3D, 0xE3, + 0xF0, 0xFF, 0x87, 0x1C, 0xE3, 0x9C, 0x73, 0x9C, 0x7F, 0x0E, 0x71, 0xC7, + 0x38, 0xE7, 0x1C, 0xE7, 0x7F, 0xC0, 0x1F, 0x26, 0x1D, 0xC1, 0xB0, 0x1E, + 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x0E, 0x04, 0xE1, 0x0F, 0xC0, 0xFF, + 0x0E, 0x71, 0xC7, 0x38, 0x77, 0x0E, 0xE1, 0xDC, 0x3B, 0x87, 0x70, 0xCE, + 0x39, 0xC6, 0x7F, 0x80, 0xFF, 0xCE, 0x19, 0xC1, 0x38, 0x87, 0x30, 0xFE, + 0x1C, 0xC3, 0x88, 0x70, 0x2E, 0x0D, 0xC3, 0x7F, 0xE0, 0xFF, 0xDC, 0x37, + 0x05, 0xC4, 0x73, 0x1F, 0xC7, 0x31, 0xC4, 0x70, 0x1C, 0x07, 0x03, 0xE0, + 0x1F, 0x23, 0x0E, 0x70, 0x6E, 0x02, 0xE0, 0x0E, 0x00, 0xE1, 0xFE, 0x0E, + 0x60, 0xE7, 0x0E, 0x38, 0xE0, 0xF8, 0xF9, 0xF7, 0x0E, 0x70, 0xE7, 0x0E, + 0x70, 0xE7, 0xFE, 0x70, 0xE7, 0x0E, 0x70, 0xE7, 0x0E, 0x70, 0xEF, 0x9F, + 0xFB, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x9D, 0xF0, 0x1F, 0x0E, 0x0E, 0x0E, + 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0xCE, 0xCC, 0x78, 0xF9, 0xF3, + 0x82, 0x1C, 0x20, 0xE2, 0x07, 0x20, 0x3F, 0x01, 0xDC, 0x0E, 0x70, 0x73, + 0xC3, 0x8F, 0x1C, 0x3D, 0xF3, 0xF0, 0xF8, 0x0E, 0x01, 0xC0, 0x38, 0x07, + 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x2E, 0x09, 0xC3, 0x7F, 0xE0, 0xF8, + 0x0F, 0x3C, 0x1E, 0x3C, 0x1E, 0x2E, 0x2E, 0x2E, 0x2E, 0x26, 0x4E, 0x27, + 0x4E, 0x27, 0x4E, 0x23, 0x8E, 0x23, 0x8E, 0x21, 0x0E, 0x71, 0x1F, 0xF0, + 0xEE, 0x09, 0xE1, 0x3E, 0x25, 0xE4, 0x9E, 0x91, 0xD2, 0x1E, 0x43, 0xC8, + 0x39, 0x03, 0x70, 0x20, 0x1F, 0x83, 0x0C, 0x70, 0xEE, 0x07, 0xE0, 0x7E, + 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x77, 0x0E, 0x30, 0xC1, 0xF8, 0xFF, 0x1C, + 0xE7, 0x1D, 0xC7, 0x71, 0xDC, 0xE7, 0xF1, 0xC0, 0x70, 0x1C, 0x07, 0x03, + 0xE0, 0x0F, 0x83, 0x9C, 0x70, 0xE6, 0x06, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, + 0x07, 0xE0, 0x76, 0x06, 0x30, 0xC1, 0x98, 0x0F, 0x00, 0x78, 0x03, 0xE0, + 0xFF, 0x07, 0x38, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x38, 0x7E, 0x07, 0x70, + 0x77, 0x87, 0x3C, 0x71, 0xEF, 0x8F, 0x39, 0x47, 0xC1, 0xC0, 0xF0, 0x7C, + 0x3E, 0x0F, 0x83, 0xC3, 0xC6, 0xBC, 0xFF, 0xFC, 0xE3, 0x8E, 0x10, 0xE0, + 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x01, 0xF0, + 0xF8, 0xEE, 0x09, 0xC1, 0x38, 0x27, 0x04, 0xE0, 0x9C, 0x13, 0x82, 0x70, + 0x4E, 0x08, 0xE2, 0x0F, 0x80, 0xFC, 0x7B, 0xC1, 0x0E, 0x08, 0x70, 0x81, + 0xC4, 0x0E, 0x20, 0x7A, 0x01, 0xD0, 0x0E, 0x80, 0x38, 0x01, 0xC0, 0x04, + 0x00, 0x20, 0x00, 0xFD, 0xFB, 0xDC, 0x38, 0x43, 0x87, 0x10, 0xE1, 0xC4, + 0x38, 0xF2, 0x07, 0x2E, 0x81, 0xD3, 0xA0, 0x34, 0x70, 0x0E, 0x1C, 0x03, + 0x87, 0x00, 0x60, 0x80, 0x10, 0x20, 0xFE, 0xF3, 0xC3, 0x0F, 0x10, 0x39, + 0x00, 0xF0, 0x03, 0x80, 0x1E, 0x01, 0x70, 0x09, 0xC0, 0x8F, 0x08, 0x3D, + 0xF3, 0xF0, 0xFC, 0x7B, 0xC1, 0x8E, 0x08, 0x38, 0x81, 0xE8, 0x07, 0x40, + 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x01, 0xC0, 0x1F, 0x00, 0xFF, 0xD8, + 0x72, 0x1E, 0x43, 0x80, 0xE0, 0x1C, 0x07, 0x01, 0xC0, 0x38, 0x2E, 0x0F, + 0x83, 0x7F, 0xE0, 0xFC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xF0, 0xC1, + 0x06, 0x18, 0x20, 0xC3, 0x04, 0x18, 0x60, 0x83, 0x0C, 0xF3, 0x33, 0x33, + 0x33, 0x33, 0x33, 0x33, 0xF0, 0x18, 0x1C, 0x34, 0x26, 0x62, 0x43, 0xC1, + 0xFF, 0x80, 0xC6, 0x30, 0x7C, 0x63, 0xB1, 0xC0, 0xE1, 0xF3, 0x3B, 0x9D, + 0xCE, 0xFF, 0x80, 0xF0, 0x1C, 0x07, 0x01, 0xDC, 0x7B, 0x9C, 0x77, 0x1D, + 0xC7, 0x71, 0xDC, 0x77, 0x39, 0x3C, 0x3C, 0xED, 0x9F, 0x0E, 0x1C, 0x38, + 0x39, 0x3C, 0x07, 0x80, 0xE0, 0x38, 0xEE, 0x77, 0xB8, 0xEE, 0x3B, 0x8E, + 0xE3, 0xB8, 0xE7, 0x78, 0xEF, 0x3C, 0x66, 0xE6, 0xFE, 0xE0, 0xE0, 0xE0, + 0x72, 0x3C, 0x3E, 0xED, 0xC7, 0xC7, 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xC7, + 0xC0, 0x31, 0xDF, 0xBF, 0x7E, 0xE7, 0x90, 0x60, 0xFC, 0xFE, 0x0C, 0x17, + 0xC0, 0xF0, 0x1C, 0x07, 0x01, 0xDC, 0x7B, 0x9C, 0xE7, 0x39, 0xCE, 0x73, + 0x9C, 0xE7, 0x3B, 0xFF, 0x73, 0x9D, 0xE7, 0x39, 0xCE, 0x73, 0x9D, 0xF0, + 0x1C, 0x71, 0xCF, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x7D, 0xBE, + 0xF0, 0x1C, 0x07, 0x01, 0xCE, 0x71, 0x1C, 0x87, 0x41, 0xF8, 0x77, 0x1C, + 0xE7, 0x1B, 0xEF, 0xF3, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x9D, 0xF0, 0xF7, + 0x38, 0xF7, 0xB9, 0xCE, 0x73, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x9C, 0xE7, + 0x39, 0xCE, 0xFF, 0xFE, 0xF7, 0x1E, 0xE7, 0x39, 0xCE, 0x73, 0x9C, 0xE7, + 0x39, 0xCE, 0xFF, 0xC0, 0x3E, 0x31, 0xB8, 0xFC, 0x7E, 0x3F, 0x1F, 0x8E, + 0xC6, 0x3E, 0x00, 0xF7, 0x1E, 0xE7, 0x1D, 0xC7, 0x71, 0xDC, 0x77, 0x1D, + 0xCE, 0x7F, 0x1C, 0x07, 0x01, 0xC0, 0xF8, 0x00, 0x3C, 0x9C, 0xEE, 0x3B, + 0x8E, 0xE3, 0xB8, 0xEE, 0x39, 0xCE, 0x3F, 0x80, 0xE0, 0x38, 0x0E, 0x07, + 0xC0, 0xF7, 0x7B, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0xF8, 0x7E, 0x73, + 0xC7, 0x8E, 0x39, 0xB0, 0x10, 0xCF, 0x9C, 0x71, 0xC7, 0x1C, 0x71, 0xD3, + 0x80, 0xF7, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x9C, 0xE7, 0x39, 0xCE, 0x3F, + 0xC0, 0xFB, 0xB8, 0x8C, 0x87, 0x43, 0xC0, 0xE0, 0x70, 0x10, 0x08, 0x00, + 0xF7, 0xB6, 0x31, 0x73, 0xA3, 0x3A, 0x3D, 0xA3, 0xDC, 0x18, 0xC1, 0x88, + 0x10, 0x80, 0xFB, 0xB8, 0x8E, 0x83, 0x81, 0xC0, 0xF0, 0x98, 0xCE, 0xEF, + 0x80, 0xF7, 0x62, 0x72, 0x34, 0x34, 0x3C, 0x18, 0x18, 0x10, 0x10, 0x10, + 0xE0, 0xE0, 0xFF, 0x1C, 0x70, 0xE3, 0x87, 0x1C, 0x71, 0xFE, 0x19, 0x8C, + 0x63, 0x18, 0xCC, 0x61, 0x8C, 0x63, 0x18, 0xC3, 0xFF, 0xF8, 0xC3, 0x18, + 0xC6, 0x31, 0x86, 0x33, 0x18, 0xC6, 0x31, 0x98, 0xF0, 0x8E}; + +const GFXglyph FreeSerifBold9pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 5, 0, 1}, // 0x20 ' ' + {0, 3, 12, 6, 1, -11}, // 0x21 '!' + {5, 6, 5, 10, 2, -11}, // 0x22 '"' + {9, 9, 13, 9, 0, -12}, // 0x23 '#' + {24, 8, 14, 9, 1, -12}, // 0x24 '$' + {38, 14, 12, 18, 2, -11}, // 0x25 '%' + {59, 13, 12, 15, 1, -11}, // 0x26 '&' + {79, 2, 5, 5, 1, -11}, // 0x27 ''' + {81, 4, 15, 6, 1, -11}, // 0x28 '(' + {89, 4, 15, 6, 1, -11}, // 0x29 ')' + {97, 7, 7, 9, 2, -11}, // 0x2A '*' + {104, 9, 9, 12, 1, -8}, // 0x2B '+' + {115, 3, 6, 4, 1, -2}, // 0x2C ',' + {118, 4, 2, 6, 1, -4}, // 0x2D '-' + {119, 3, 3, 4, 1, -2}, // 0x2E '.' + {121, 6, 13, 5, 0, -11}, // 0x2F '/' + {131, 9, 12, 9, 0, -11}, // 0x30 '0' + {145, 6, 12, 9, 1, -11}, // 0x31 '1' + {154, 9, 12, 9, 0, -11}, // 0x32 '2' + {168, 8, 12, 9, 0, -11}, // 0x33 '3' + {180, 8, 12, 9, 1, -11}, // 0x34 '4' + {192, 8, 12, 9, 1, -11}, // 0x35 '5' + {204, 8, 12, 9, 1, -11}, // 0x36 '6' + {216, 9, 12, 9, 0, -11}, // 0x37 '7' + {230, 8, 12, 9, 1, -11}, // 0x38 '8' + {242, 9, 12, 9, 0, -11}, // 0x39 '9' + {256, 3, 9, 6, 1, -8}, // 0x3A ':' + {260, 3, 12, 6, 2, -8}, // 0x3B ';' + {265, 10, 10, 12, 1, -9}, // 0x3C '<' + {278, 10, 5, 12, 1, -6}, // 0x3D '=' + {285, 10, 10, 12, 1, -8}, // 0x3E '>' + {298, 7, 12, 9, 1, -11}, // 0x3F '?' + {309, 13, 12, 17, 2, -11}, // 0x40 '@' + {329, 13, 12, 13, 0, -11}, // 0x41 'A' + {349, 11, 12, 12, 0, -11}, // 0x42 'B' + {366, 11, 12, 13, 1, -11}, // 0x43 'C' + {383, 11, 12, 13, 1, -11}, // 0x44 'D' + {400, 11, 12, 12, 1, -11}, // 0x45 'E' + {417, 10, 12, 11, 1, -11}, // 0x46 'F' + {432, 12, 12, 14, 1, -11}, // 0x47 'G' + {450, 12, 12, 14, 1, -11}, // 0x48 'H' + {468, 5, 12, 7, 1, -11}, // 0x49 'I' + {476, 8, 14, 9, 0, -11}, // 0x4A 'J' + {490, 13, 12, 14, 1, -11}, // 0x4B 'K' + {510, 11, 12, 12, 1, -11}, // 0x4C 'L' + {527, 16, 12, 17, 0, -11}, // 0x4D 'M' + {551, 11, 12, 13, 1, -11}, // 0x4E 'N' + {568, 12, 12, 14, 1, -11}, // 0x4F 'O' + {586, 10, 12, 11, 1, -11}, // 0x50 'P' + {601, 12, 15, 14, 1, -11}, // 0x51 'Q' + {624, 12, 12, 13, 1, -11}, // 0x52 'R' + {642, 8, 12, 10, 1, -11}, // 0x53 'S' + {654, 12, 12, 12, 0, -11}, // 0x54 'T' + {672, 11, 12, 13, 1, -11}, // 0x55 'U' + {689, 13, 13, 13, 0, -11}, // 0x56 'V' + {711, 18, 12, 18, 0, -11}, // 0x57 'W' + {738, 13, 12, 13, 0, -11}, // 0x58 'X' + {758, 13, 12, 13, 0, -11}, // 0x59 'Y' + {778, 11, 12, 12, 1, -11}, // 0x5A 'Z' + {795, 4, 15, 6, 1, -11}, // 0x5B '[' + {803, 6, 13, 5, 0, -11}, // 0x5C '\' + {813, 4, 15, 6, 1, -11}, // 0x5D ']' + {821, 8, 7, 10, 1, -11}, // 0x5E '^' + {828, 9, 1, 9, 0, 3}, // 0x5F '_' + {830, 4, 3, 6, 0, -12}, // 0x60 '`' + {832, 9, 9, 9, 0, -8}, // 0x61 'a' + {843, 10, 12, 10, 0, -11}, // 0x62 'b' + {858, 7, 9, 8, 0, -8}, // 0x63 'c' + {866, 10, 12, 10, 0, -11}, // 0x64 'd' + {881, 8, 9, 8, 0, -8}, // 0x65 'e' + {890, 7, 12, 7, 0, -11}, // 0x66 'f' + {901, 7, 13, 9, 1, -8}, // 0x67 'g' + {913, 10, 12, 10, 0, -11}, // 0x68 'h' + {928, 5, 12, 5, 0, -11}, // 0x69 'i' + {936, 6, 16, 7, 0, -11}, // 0x6A 'j' + {948, 10, 12, 10, 0, -11}, // 0x6B 'k' + {963, 5, 12, 5, 0, -11}, // 0x6C 'l' + {971, 15, 9, 15, 0, -8}, // 0x6D 'm' + {988, 10, 9, 10, 0, -8}, // 0x6E 'n' + {1000, 9, 9, 9, 0, -8}, // 0x6F 'o' + {1011, 10, 13, 10, 0, -8}, // 0x70 'p' + {1028, 10, 13, 10, 0, -8}, // 0x71 'q' + {1045, 8, 9, 8, 0, -8}, // 0x72 'r' + {1054, 5, 9, 7, 1, -8}, // 0x73 's' + {1060, 6, 11, 6, 0, -10}, // 0x74 't' + {1069, 10, 9, 10, 0, -8}, // 0x75 'u' + {1081, 9, 9, 9, 0, -8}, // 0x76 'v' + {1092, 12, 9, 13, 0, -8}, // 0x77 'w' + {1106, 9, 9, 9, 0, -8}, // 0x78 'x' + {1117, 8, 13, 9, 0, -8}, // 0x79 'y' + {1130, 7, 9, 8, 1, -8}, // 0x7A 'z' + {1138, 5, 16, 7, 0, -12}, // 0x7B '{' + {1148, 1, 13, 4, 1, -11}, // 0x7C '|' + {1150, 5, 16, 7, 2, -12}, // 0x7D '}' + {1160, 8, 2, 9, 1, -4}}; // 0x7E '~' + +const GFXfont FreeSerifBold9pt7b PROGMEM = { + (uint8_t *)FreeSerifBold9pt7bBitmaps, (GFXglyph *)FreeSerifBold9pt7bGlyphs, + 0x20, 0x7E, 22}; + +// Approx. 1834 bytes diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBoldItalic12pt7b.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBoldItalic12pt7b.h new file mode 100644 index 0000000..d6674ce --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBoldItalic12pt7b.h @@ -0,0 +1,294 @@ +#pragma once +#include + +const uint8_t FreeSerifBoldItalic12pt7bBitmaps[] PROGMEM = { + 0x07, 0x07, 0x07, 0x0F, 0x0E, 0x0E, 0x0C, 0x0C, 0x08, 0x18, 0x10, 0x00, + 0x00, 0x60, 0xF0, 0xF0, 0x60, 0x61, 0xF1, 0xF8, 0xF8, 0x6C, 0x34, 0x12, + 0x08, 0x01, 0x8C, 0x06, 0x60, 0x31, 0x80, 0xCC, 0x06, 0x30, 0xFF, 0xF0, + 0xC6, 0x03, 0x18, 0x0C, 0xC0, 0x63, 0x0F, 0xFF, 0x0C, 0x60, 0x33, 0x01, + 0x8C, 0x06, 0x30, 0x19, 0x80, 0x00, 0x80, 0x08, 0x07, 0xC1, 0x96, 0x31, + 0x33, 0x13, 0x3A, 0x23, 0xE0, 0x1E, 0x01, 0xF0, 0x07, 0x80, 0x7C, 0x05, + 0xC4, 0xCC, 0x48, 0xCC, 0x8C, 0xF8, 0x83, 0x30, 0x1E, 0x01, 0x00, 0x00, + 0x02, 0x07, 0x83, 0x03, 0x9F, 0x81, 0xC4, 0x20, 0x71, 0x10, 0x3C, 0x44, + 0x0E, 0x22, 0x03, 0x88, 0x80, 0xE4, 0x40, 0x1E, 0x31, 0xE0, 0x08, 0xE4, + 0x06, 0x71, 0x01, 0x3C, 0x40, 0x8E, 0x10, 0x23, 0x88, 0x10, 0xE2, 0x04, + 0x39, 0x02, 0x07, 0x80, 0x00, 0xF0, 0x01, 0x98, 0x03, 0x98, 0x03, 0x98, + 0x03, 0xB0, 0x03, 0xE0, 0x03, 0x80, 0x0F, 0x9F, 0x19, 0xCE, 0x31, 0xCC, + 0x61, 0xC8, 0xE1, 0xC8, 0xE0, 0xF0, 0xE0, 0xE0, 0xF0, 0x70, 0x78, 0x79, + 0x3F, 0xBE, 0x7F, 0xED, 0x20, 0x02, 0x08, 0x20, 0xC3, 0x0E, 0x18, 0x30, + 0xE1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x20, 0x40, 0x80, 0x81, 0x01, 0x00, + 0x10, 0x10, 0x20, 0x20, 0x40, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x70, 0xE1, + 0x83, 0x0C, 0x18, 0x61, 0x86, 0x00, 0x00, 0x0C, 0x33, 0x6C, 0x9B, 0xAE, + 0x1C, 0x3F, 0xEC, 0x9B, 0x36, 0x0C, 0x02, 0x00, 0x06, 0x00, 0x60, 0x06, + 0x00, 0x60, 0x06, 0x0F, 0xFF, 0xFF, 0xF0, 0x60, 0x06, 0x00, 0x60, 0x06, + 0x00, 0x60, 0x31, 0xCE, 0x31, 0x08, 0x98, 0xFF, 0xFF, 0xC0, 0x6F, 0xF6, + 0x01, 0x80, 0x60, 0x30, 0x0C, 0x07, 0x01, 0x80, 0xE0, 0x30, 0x1C, 0x06, + 0x01, 0x80, 0xC0, 0x30, 0x18, 0x06, 0x03, 0x00, 0x03, 0x81, 0xC8, 0x71, + 0x1C, 0x33, 0x86, 0xE1, 0xDC, 0x3B, 0x87, 0xE0, 0xFC, 0x3B, 0x87, 0x70, + 0xEC, 0x39, 0x87, 0x31, 0xC2, 0x30, 0x3C, 0x00, 0x01, 0xC3, 0xF0, 0x38, + 0x0E, 0x03, 0x81, 0xE0, 0x70, 0x1C, 0x0F, 0x03, 0x80, 0xE0, 0x38, 0x1E, + 0x07, 0x01, 0xC0, 0xF0, 0xFF, 0x80, 0x07, 0x81, 0xF8, 0x47, 0x90, 0x70, + 0x0E, 0x01, 0xC0, 0x30, 0x0E, 0x01, 0x80, 0x60, 0x18, 0x06, 0x01, 0x80, + 0x40, 0x8F, 0xF3, 0xFC, 0xFF, 0x80, 0x07, 0xC3, 0x3C, 0x03, 0x80, 0x70, + 0x0C, 0x03, 0x81, 0xC0, 0xFC, 0x07, 0xC0, 0x78, 0x07, 0x00, 0xE0, 0x1C, + 0x03, 0x30, 0xE7, 0x10, 0x7C, 0x00, 0x00, 0x10, 0x01, 0x80, 0x3C, 0x03, + 0xE0, 0x2E, 0x02, 0x70, 0x23, 0x82, 0x38, 0x21, 0xC2, 0x0E, 0x1F, 0xF9, + 0xFF, 0xC0, 0x38, 0x01, 0xC0, 0x1C, 0x00, 0xE0, 0x07, 0xF0, 0x7E, 0x0F, + 0xE0, 0x80, 0x08, 0x01, 0xE0, 0x1F, 0x83, 0xF8, 0x03, 0xC0, 0x1C, 0x00, + 0xC0, 0x0C, 0x00, 0xC0, 0x08, 0x61, 0x8F, 0x30, 0x7C, 0x00, 0x00, 0x60, + 0x78, 0x1C, 0x0F, 0x01, 0xC0, 0x70, 0x1F, 0xC3, 0x8C, 0xE1, 0xDC, 0x3B, + 0x87, 0x61, 0xEC, 0x3D, 0x87, 0x31, 0xE2, 0x38, 0x3C, 0x00, 0x3F, 0xEF, + 0xF9, 0xFF, 0x60, 0xC8, 0x18, 0x06, 0x00, 0x80, 0x30, 0x0C, 0x01, 0x80, + 0x60, 0x1C, 0x03, 0x00, 0xC0, 0x18, 0x06, 0x00, 0x03, 0x81, 0x88, 0x61, + 0x8C, 0x31, 0x86, 0x38, 0xC7, 0xB0, 0x78, 0x0F, 0x86, 0x71, 0x87, 0x60, + 0x6C, 0x0D, 0x81, 0xB0, 0x63, 0x18, 0x3E, 0x00, 0x07, 0x81, 0xC8, 0x71, + 0x8E, 0x33, 0xC6, 0x70, 0xCE, 0x39, 0xC7, 0x38, 0xE3, 0x38, 0x3F, 0x01, + 0xC0, 0x38, 0x0E, 0x03, 0x81, 0xC0, 0xE0, 0x00, 0x0C, 0x3C, 0x78, 0x60, + 0x00, 0x00, 0x00, 0x61, 0xE3, 0xC3, 0x00, 0x0E, 0x0F, 0x0F, 0x0E, 0x00, + 0x00, 0x00, 0x00, 0x38, 0x38, 0x38, 0x18, 0x10, 0x20, 0x40, 0x00, 0x10, + 0x07, 0x01, 0xF0, 0x7C, 0x3F, 0x0F, 0x80, 0xE0, 0x0F, 0x80, 0x3E, 0x00, + 0xF8, 0x03, 0xE0, 0x07, 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0xFF, 0x80, 0x07, 0x00, 0x3F, 0x00, 0x3E, 0x00, 0x7C, 0x00, + 0xF8, 0x01, 0xE0, 0x1F, 0x07, 0xE0, 0xF8, 0x1F, 0x01, 0xE0, 0x0C, 0x00, + 0x00, 0x1E, 0x19, 0x8C, 0xE6, 0x70, 0x38, 0x38, 0x1C, 0x18, 0x18, 0x08, + 0x08, 0x00, 0x00, 0x03, 0x03, 0xC1, 0xE0, 0x60, 0x00, 0x03, 0xF0, 0x07, + 0x06, 0x06, 0x00, 0x86, 0x0E, 0x66, 0x0D, 0xDB, 0x0C, 0xE7, 0x06, 0x33, + 0x83, 0x31, 0xC3, 0x18, 0xE1, 0x8C, 0x70, 0xCC, 0x4C, 0x66, 0x46, 0x1F, + 0xC1, 0x80, 0x00, 0x30, 0x10, 0x07, 0xF0, 0x00, 0x10, 0x00, 0x30, 0x00, + 0x70, 0x00, 0x70, 0x00, 0xF0, 0x01, 0xF0, 0x01, 0x78, 0x03, 0x78, 0x02, + 0x38, 0x04, 0x38, 0x0C, 0x38, 0x0F, 0xF8, 0x18, 0x3C, 0x30, 0x3C, 0x20, + 0x3C, 0x60, 0x3C, 0xF8, 0x7F, 0x1F, 0xFC, 0x07, 0x9E, 0x07, 0x0F, 0x07, + 0x0F, 0x0F, 0x0F, 0x0F, 0x1E, 0x0E, 0x3C, 0x0F, 0xE0, 0x1E, 0x3C, 0x1E, + 0x1E, 0x1C, 0x1E, 0x3C, 0x1E, 0x3C, 0x1E, 0x3C, 0x3E, 0x38, 0x3C, 0x7C, + 0x78, 0xFF, 0xE0, 0x01, 0xF2, 0x0E, 0x1C, 0x38, 0x18, 0xE0, 0x33, 0xC0, + 0x4F, 0x00, 0x9E, 0x00, 0x7C, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, + 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x1E, 0x04, 0x1E, 0x30, 0x0F, 0x80, 0x1F, + 0xFC, 0x01, 0xE3, 0xC0, 0x70, 0x78, 0x1C, 0x0E, 0x0F, 0x03, 0xC3, 0xC0, + 0xF0, 0xE0, 0x3C, 0x38, 0x0F, 0x1E, 0x03, 0xC7, 0x81, 0xF1, 0xC0, 0x78, + 0xF0, 0x1E, 0x3C, 0x0F, 0x0F, 0x03, 0xC3, 0x81, 0xC1, 0xE1, 0xE0, 0xFF, + 0xE0, 0x00, 0x1F, 0xFF, 0x83, 0xC1, 0xC1, 0xC0, 0x40, 0xE0, 0x20, 0xF0, + 0x00, 0x78, 0xC0, 0x38, 0x40, 0x1F, 0xE0, 0x1E, 0x70, 0x0F, 0x18, 0x07, + 0x08, 0x03, 0x84, 0x03, 0xC0, 0x61, 0xE0, 0x20, 0xE0, 0x30, 0xF8, 0x78, + 0xFF, 0xFC, 0x00, 0x1F, 0xFF, 0x07, 0x87, 0x07, 0x02, 0x07, 0x02, 0x0F, + 0x00, 0x0F, 0x18, 0x0E, 0x10, 0x0F, 0xF0, 0x1E, 0x70, 0x1E, 0x30, 0x1C, + 0x20, 0x1C, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x38, 0x00, 0x7C, 0x00, 0xFE, + 0x00, 0x01, 0xF9, 0x03, 0xC3, 0x83, 0x81, 0xC3, 0x80, 0x43, 0xC0, 0x23, + 0xC0, 0x01, 0xE0, 0x01, 0xF0, 0x00, 0xF0, 0x3F, 0xF8, 0x0F, 0x3C, 0x07, + 0x9E, 0x03, 0xCF, 0x01, 0xC3, 0x80, 0xE1, 0xE0, 0xF0, 0x78, 0x70, 0x0F, + 0xE0, 0x00, 0x1F, 0xE7, 0xF0, 0x78, 0x3C, 0x07, 0x83, 0xC0, 0x70, 0x3C, + 0x0F, 0x03, 0x80, 0xF0, 0x78, 0x0E, 0x07, 0x80, 0xE0, 0x70, 0x1F, 0xFF, + 0x01, 0xE0, 0xF0, 0x1C, 0x0F, 0x03, 0xC0, 0xE0, 0x3C, 0x1E, 0x03, 0xC1, + 0xE0, 0x38, 0x1E, 0x07, 0xC3, 0xE0, 0xFE, 0x7F, 0x00, 0x1F, 0xC1, 0xE0, + 0x70, 0x1C, 0x0F, 0x03, 0xC0, 0xE0, 0x38, 0x1E, 0x07, 0x81, 0xC0, 0x70, + 0x3C, 0x0F, 0x03, 0x81, 0xF0, 0xFE, 0x00, 0x01, 0xFC, 0x03, 0xC0, 0x0F, + 0x00, 0x38, 0x00, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x70, 0x01, 0xC0, 0x0F, + 0x00, 0x3C, 0x00, 0xE0, 0x07, 0x80, 0x1E, 0x0E, 0x70, 0x3B, 0xC0, 0xCE, + 0x01, 0xF0, 0x00, 0x1F, 0xEF, 0x83, 0xC1, 0x81, 0xC1, 0x80, 0xE1, 0x80, + 0xF1, 0x80, 0x79, 0x00, 0x39, 0x00, 0x1F, 0x80, 0x1F, 0xE0, 0x0F, 0x70, + 0x07, 0x3C, 0x07, 0x8E, 0x03, 0xC7, 0x01, 0xE3, 0xC0, 0xE0, 0xE0, 0xF8, + 0x78, 0xFE, 0xFE, 0x00, 0x1F, 0xE0, 0x0F, 0x00, 0x1C, 0x00, 0x38, 0x00, + 0xF0, 0x01, 0xE0, 0x03, 0x80, 0x07, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x70, + 0x00, 0xE0, 0x03, 0xC0, 0x27, 0x00, 0xCE, 0x03, 0x3C, 0x1E, 0xFF, 0xFC, + 0x0F, 0x80, 0x7E, 0x0F, 0x00, 0xF0, 0x1E, 0x03, 0xE0, 0x3C, 0x0F, 0x80, + 0xB8, 0x17, 0x01, 0x70, 0x5E, 0x02, 0xF1, 0xBC, 0x05, 0xE2, 0x70, 0x11, + 0xC8, 0xE0, 0x23, 0xB3, 0xC0, 0x47, 0x47, 0x81, 0x0F, 0x8E, 0x02, 0x1E, + 0x1C, 0x04, 0x38, 0x78, 0x08, 0x70, 0xF0, 0x30, 0xC3, 0xE0, 0xF9, 0x8F, + 0xE0, 0x1F, 0x03, 0xE0, 0xF0, 0x38, 0x1E, 0x02, 0x03, 0xE0, 0xC0, 0xBC, + 0x10, 0x13, 0xC2, 0x02, 0x78, 0x40, 0x47, 0x90, 0x10, 0xF2, 0x02, 0x0F, + 0x40, 0x41, 0xE8, 0x18, 0x1E, 0x02, 0x03, 0xC0, 0x40, 0x38, 0x08, 0x06, + 0x03, 0x00, 0x40, 0x10, 0x08, 0x00, 0x01, 0xF8, 0x07, 0x1C, 0x0E, 0x0E, + 0x1E, 0x0F, 0x3C, 0x0F, 0x3C, 0x0F, 0x78, 0x0F, 0x78, 0x0F, 0xF8, 0x1F, + 0xF0, 0x1E, 0xF0, 0x1E, 0xF0, 0x3C, 0xF0, 0x3C, 0xF0, 0x78, 0x70, 0x70, + 0x38, 0xE0, 0x1F, 0x80, 0x1F, 0xFC, 0x07, 0x9E, 0x07, 0x0F, 0x07, 0x0F, + 0x0F, 0x0F, 0x0F, 0x0F, 0x0E, 0x1E, 0x0E, 0x3C, 0x1F, 0xF0, 0x1E, 0x00, + 0x1C, 0x00, 0x1C, 0x00, 0x3C, 0x00, 0x38, 0x00, 0x38, 0x00, 0x7C, 0x00, + 0xFE, 0x00, 0x01, 0xF8, 0x07, 0x1C, 0x0E, 0x0E, 0x1E, 0x0F, 0x3C, 0x0F, + 0x3C, 0x0F, 0x78, 0x0F, 0x78, 0x1F, 0xF8, 0x1F, 0xF0, 0x1E, 0xF0, 0x1E, + 0xF0, 0x3C, 0xF0, 0x3C, 0xF0, 0x78, 0x70, 0x70, 0x39, 0xC0, 0x0E, 0x00, + 0x08, 0x02, 0x3F, 0x04, 0x7F, 0xF8, 0x83, 0xF0, 0x1F, 0xF8, 0x07, 0x9E, + 0x07, 0x8F, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x1E, 0x0E, 0x3C, + 0x1F, 0xF0, 0x1E, 0xF0, 0x1C, 0xF0, 0x3C, 0xF0, 0x3C, 0x78, 0x3C, 0x78, + 0x3C, 0x78, 0x7C, 0x3C, 0xFE, 0x3E, 0x07, 0x91, 0xC7, 0x18, 0x73, 0x82, + 0x38, 0x23, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x01, 0xE0, 0x1E, + 0x40, 0xE4, 0x0E, 0x60, 0xCE, 0x1C, 0x9F, 0x00, 0x7F, 0xFE, 0xE7, 0x9D, + 0x0E, 0x16, 0x3C, 0x20, 0x78, 0x40, 0xE0, 0x01, 0xC0, 0x07, 0x80, 0x0F, + 0x00, 0x1C, 0x00, 0x38, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0x80, 0x0F, 0x00, + 0x1E, 0x00, 0xFF, 0x00, 0x7F, 0x1F, 0x3C, 0x0E, 0x38, 0x04, 0x38, 0x0C, + 0x78, 0x08, 0x78, 0x08, 0x70, 0x08, 0x70, 0x10, 0xF0, 0x10, 0xF0, 0x10, + 0xF0, 0x10, 0xF0, 0x20, 0xF0, 0x20, 0xF0, 0x20, 0xF0, 0x40, 0x78, 0xC0, + 0x3F, 0x00, 0xFF, 0x1F, 0x3C, 0x06, 0x3C, 0x04, 0x3C, 0x08, 0x3C, 0x08, + 0x3C, 0x10, 0x1C, 0x20, 0x1C, 0x20, 0x1E, 0x40, 0x1E, 0x80, 0x1E, 0x80, + 0x1F, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0C, 0x00, 0x08, 0x00, 0xFE, 0x7C, + 0x79, 0xE1, 0xC1, 0x8F, 0x0E, 0x08, 0x78, 0x70, 0x43, 0xC7, 0x84, 0x1E, + 0x3E, 0x20, 0x72, 0xF2, 0x03, 0x97, 0x90, 0x1D, 0x1D, 0x00, 0xE8, 0xE8, + 0x07, 0x87, 0x80, 0x3C, 0x3C, 0x01, 0xC1, 0xC0, 0x0E, 0x0E, 0x00, 0x20, + 0x60, 0x01, 0x02, 0x00, 0x1F, 0xCF, 0x83, 0xC1, 0x81, 0xE1, 0x80, 0x71, + 0x80, 0x39, 0x80, 0x1F, 0x80, 0x07, 0x80, 0x03, 0x80, 0x01, 0xE0, 0x01, + 0xF0, 0x00, 0xB8, 0x00, 0x9C, 0x00, 0x8F, 0x00, 0x83, 0x80, 0xC1, 0xC0, + 0xE0, 0xF0, 0xF9, 0xFE, 0x00, 0xFE, 0x7C, 0xE0, 0x63, 0x81, 0x0F, 0x08, + 0x1C, 0x40, 0x71, 0x01, 0xE8, 0x03, 0xC0, 0x0E, 0x00, 0x38, 0x01, 0xE0, + 0x07, 0x80, 0x1C, 0x00, 0x70, 0x03, 0xC0, 0x0F, 0x00, 0xFF, 0x00, 0x1F, + 0xFE, 0x38, 0x78, 0x60, 0xF1, 0x83, 0xC2, 0x0F, 0x00, 0x1E, 0x00, 0x78, + 0x01, 0xE0, 0x07, 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xF8, 0x01, 0xE0, 0x47, + 0x81, 0x1F, 0x06, 0x3C, 0x3C, 0xFF, 0xF0, 0x07, 0xC1, 0x80, 0xE0, 0x30, + 0x0C, 0x03, 0x01, 0xC0, 0x60, 0x18, 0x06, 0x03, 0x80, 0xC0, 0x30, 0x0C, + 0x07, 0x01, 0xC0, 0x60, 0x18, 0x0E, 0x03, 0xE0, 0xC3, 0x06, 0x18, 0x61, + 0x83, 0x0C, 0x30, 0xC1, 0x86, 0x18, 0x60, 0xC3, 0x0F, 0x81, 0xC0, 0xE0, + 0x60, 0x30, 0x18, 0x1C, 0x0C, 0x06, 0x03, 0x03, 0x81, 0x80, 0xC0, 0x60, + 0x70, 0x38, 0x18, 0x0C, 0x0E, 0x1F, 0x00, 0x0C, 0x07, 0x81, 0xE0, 0xDC, + 0x33, 0x18, 0xC6, 0x1B, 0x06, 0xC0, 0xC0, 0xFF, 0xF0, 0xC7, 0x0C, 0x30, + 0x07, 0x70, 0xCE, 0x1C, 0xE3, 0x8E, 0x70, 0xC7, 0x0C, 0x71, 0xCE, 0x1C, + 0xE1, 0x8E, 0x79, 0xE9, 0xA7, 0x1C, 0x02, 0x07, 0xC0, 0x38, 0x06, 0x01, + 0xC0, 0x38, 0x06, 0x71, 0xF7, 0x38, 0xE7, 0x1C, 0xC3, 0xB8, 0x77, 0x1C, + 0xE3, 0xB8, 0xE7, 0x18, 0xE6, 0x0F, 0x80, 0x07, 0x0C, 0xCE, 0x66, 0x07, + 0x03, 0x83, 0x81, 0xC0, 0xE0, 0x70, 0xBC, 0x87, 0x80, 0x00, 0x08, 0x03, + 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x70, 0x01, 0xC0, 0x77, 0x03, 0x3C, 0x18, + 0xE0, 0xE3, 0x87, 0x0E, 0x1C, 0x70, 0x71, 0xC3, 0x87, 0x0E, 0x3C, 0x38, + 0xE8, 0xE5, 0xA1, 0xE7, 0x00, 0x07, 0x0C, 0xCE, 0x66, 0x37, 0x33, 0xBB, + 0xB1, 0xE0, 0xE0, 0x70, 0xB8, 0x87, 0x80, 0x00, 0x38, 0x01, 0xB0, 0x0C, + 0xC0, 0x30, 0x01, 0xC0, 0x07, 0x00, 0x7E, 0x00, 0xE0, 0x03, 0x80, 0x0E, + 0x00, 0x30, 0x01, 0xC0, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x03, 0x80, 0x0E, + 0x00, 0x38, 0x00, 0xC0, 0x33, 0x00, 0xD8, 0x01, 0xC0, 0x00, 0x03, 0x80, + 0x73, 0xC7, 0x1C, 0x38, 0xE1, 0xCF, 0x06, 0x70, 0x1E, 0x01, 0x00, 0x1C, + 0x00, 0xF8, 0x07, 0xF0, 0xC7, 0x8C, 0x0C, 0x60, 0x63, 0x86, 0x07, 0xE0, + 0x01, 0x00, 0xF8, 0x01, 0x80, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x31, 0xC3, + 0xBE, 0x1E, 0x70, 0xE3, 0x8F, 0x38, 0x71, 0xC3, 0x8E, 0x1C, 0xE1, 0xC7, + 0x0E, 0x3A, 0x71, 0xD3, 0x0F, 0x00, 0x1C, 0x71, 0xC0, 0x00, 0x6F, 0x8E, + 0x31, 0xC7, 0x18, 0x63, 0x8E, 0xBC, 0xE0, 0x00, 0xE0, 0x1C, 0x03, 0x80, + 0x00, 0x00, 0x0F, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x70, 0x0E, 0x01, 0xC0, + 0x38, 0x0E, 0x01, 0xC0, 0x38, 0x06, 0x01, 0xC3, 0x38, 0x6E, 0x07, 0x80, + 0x01, 0x00, 0xF8, 0x01, 0xC0, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x33, 0xE3, + 0x8C, 0x1C, 0xC0, 0xE4, 0x06, 0x40, 0x7E, 0x03, 0xF0, 0x1D, 0x81, 0xCE, + 0x0E, 0x72, 0x71, 0xA3, 0x8E, 0x00, 0x06, 0x7C, 0x70, 0xE1, 0xC3, 0x0E, + 0x1C, 0x38, 0x61, 0xC3, 0x87, 0x0C, 0x38, 0x72, 0xE9, 0xE0, 0x3C, 0x73, + 0xC7, 0x7D, 0x71, 0xE7, 0x9C, 0xF1, 0xCE, 0x3C, 0xF3, 0x8E, 0x39, 0xC3, + 0x8E, 0x71, 0xC3, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xD7, 0x1C, 0x7B, 0x8E, + 0x1C, 0x3C, 0xF1, 0xD7, 0x1E, 0x73, 0xCE, 0x3C, 0xE3, 0x8E, 0x39, 0xC7, + 0x9C, 0x71, 0xC7, 0x1D, 0x71, 0xEE, 0x1C, 0x0F, 0x06, 0x63, 0x9D, 0xC7, + 0x71, 0xF8, 0x7E, 0x3F, 0x8E, 0xE3, 0xB9, 0xC6, 0x60, 0xF0, 0x0F, 0x38, + 0x1F, 0x70, 0x71, 0xC1, 0xC7, 0x0E, 0x1C, 0x38, 0xF0, 0xE3, 0x83, 0x8E, + 0x1C, 0x70, 0x71, 0xC1, 0xCE, 0x07, 0xE0, 0x38, 0x00, 0xE0, 0x03, 0x80, + 0x3F, 0x00, 0x07, 0x70, 0xCE, 0x18, 0xE3, 0x8E, 0x70, 0xE7, 0x1C, 0xF1, + 0xCE, 0x1C, 0xE3, 0x8E, 0x38, 0xE7, 0x87, 0xB0, 0x07, 0x00, 0x70, 0x0F, + 0x03, 0xF8, 0x0D, 0xDF, 0x71, 0xAC, 0xF0, 0x38, 0x0E, 0x03, 0x81, 0xC0, + 0x70, 0x1C, 0x0E, 0x00, 0x1D, 0x99, 0x8C, 0x46, 0x23, 0x80, 0xE0, 0x70, + 0x1C, 0x06, 0x23, 0x19, 0x17, 0x00, 0x0C, 0x10, 0xE3, 0xF3, 0x86, 0x1C, + 0x38, 0x71, 0xC3, 0x87, 0x0E, 0x9E, 0x38, 0x00, 0xF8, 0xE3, 0x8E, 0x38, + 0xC3, 0x9C, 0x71, 0xC7, 0x18, 0x71, 0x87, 0x38, 0xE3, 0x8E, 0xFA, 0xF3, + 0xAE, 0x3C, 0xF0, 0xDC, 0x33, 0x0C, 0xC2, 0x31, 0x8C, 0xC3, 0x60, 0xF0, + 0x38, 0x0C, 0x02, 0x00, 0xE0, 0x86, 0xE3, 0x0C, 0xC6, 0x19, 0x9C, 0x23, + 0x78, 0xC7, 0xF9, 0x0E, 0x74, 0x1C, 0xF0, 0x31, 0xC0, 0x43, 0x00, 0x84, + 0x00, 0x0E, 0x31, 0xF3, 0x83, 0xA0, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x1C, + 0x00, 0xE0, 0x0B, 0x02, 0x5D, 0x3C, 0xF1, 0xC3, 0x00, 0x04, 0x67, 0x8C, + 0x79, 0x87, 0x10, 0xE2, 0x1C, 0x81, 0x90, 0x3A, 0x07, 0x80, 0xF0, 0x1C, + 0x03, 0x00, 0x40, 0x08, 0x32, 0x07, 0x80, 0x3F, 0xCF, 0xE6, 0x30, 0x08, + 0x04, 0x02, 0x01, 0x00, 0xC0, 0x30, 0x1E, 0x0F, 0x98, 0x76, 0x07, 0x00, + 0x01, 0xE0, 0x70, 0x1C, 0x03, 0x80, 0x60, 0x1C, 0x03, 0x80, 0x60, 0x0C, + 0x03, 0x80, 0xF0, 0x3C, 0x07, 0x00, 0x40, 0x0C, 0x01, 0x80, 0x70, 0x0E, + 0x01, 0xC0, 0x30, 0x03, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0xE0, + 0x18, 0x06, 0x01, 0x80, 0xE0, 0x38, 0x0C, 0x03, 0x00, 0xC0, 0x10, 0x1F, + 0x07, 0x03, 0x80, 0xE0, 0x30, 0x0C, 0x07, 0x01, 0x80, 0xE0, 0xE0, 0x00, + 0x38, 0x0F, 0xCD, 0x1F, 0x80, 0xE0}; + +const GFXglyph FreeSerifBoldItalic12pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 6, 0, 1}, // 0x20 ' ' + {0, 8, 17, 9, 2, -15}, // 0x21 '!' + {17, 9, 7, 13, 4, -15}, // 0x22 '"' + {25, 14, 16, 12, -1, -15}, // 0x23 '#' + {53, 12, 20, 12, 0, -17}, // 0x24 '$' + {83, 18, 18, 20, 1, -16}, // 0x25 '%' + {124, 16, 17, 19, 0, -15}, // 0x26 '&' + {158, 3, 7, 7, 3, -15}, // 0x27 ''' + {161, 7, 21, 8, 1, -15}, // 0x28 '(' + {180, 7, 21, 8, -1, -15}, // 0x29 ')' + {199, 10, 10, 12, 1, -15}, // 0x2A '*' + {212, 12, 12, 14, 1, -11}, // 0x2B '+' + {230, 5, 8, 6, -2, -3}, // 0x2C ',' + {235, 6, 3, 8, 0, -6}, // 0x2D '-' + {238, 4, 4, 6, 0, -2}, // 0x2E '.' + {240, 10, 16, 8, 0, -15}, // 0x2F '/' + {260, 11, 17, 12, 0, -15}, // 0x30 '0' + {284, 10, 17, 12, 0, -15}, // 0x31 '1' + {306, 11, 17, 12, 0, -15}, // 0x32 '2' + {330, 11, 17, 12, 0, -15}, // 0x33 '3' + {354, 13, 16, 12, 0, -15}, // 0x34 '4' + {380, 12, 17, 12, 0, -15}, // 0x35 '5' + {406, 11, 17, 12, 1, -15}, // 0x36 '6' + {430, 11, 16, 12, 2, -15}, // 0x37 '7' + {452, 11, 17, 12, 0, -15}, // 0x38 '8' + {476, 11, 17, 12, 0, -15}, // 0x39 '9' + {500, 7, 12, 6, 0, -10}, // 0x3A ':' + {511, 8, 15, 6, -1, -10}, // 0x3B ';' + {526, 12, 13, 14, 1, -12}, // 0x3C '<' + {546, 12, 6, 14, 2, -8}, // 0x3D '=' + {555, 13, 13, 14, 1, -12}, // 0x3E '>' + {577, 9, 17, 12, 2, -15}, // 0x3F '?' + {597, 17, 16, 20, 1, -15}, // 0x40 '@' + {631, 16, 17, 17, 0, -15}, // 0x41 'A' + {665, 16, 17, 15, 0, -15}, // 0x42 'B' + {699, 15, 17, 15, 1, -15}, // 0x43 'C' + {731, 18, 17, 17, 0, -15}, // 0x44 'D' + {770, 17, 17, 15, 0, -15}, // 0x45 'E' + {807, 16, 17, 15, 0, -15}, // 0x46 'F' + {841, 17, 17, 17, 1, -15}, // 0x47 'G' + {878, 20, 17, 18, 0, -15}, // 0x48 'H' + {921, 10, 17, 9, 0, -15}, // 0x49 'I' + {943, 14, 18, 12, 0, -15}, // 0x4A 'J' + {975, 17, 17, 16, 0, -15}, // 0x4B 'K' + {1012, 15, 17, 15, 0, -15}, // 0x4C 'L' + {1044, 23, 17, 21, 0, -15}, // 0x4D 'M' + {1093, 19, 17, 17, 0, -15}, // 0x4E 'N' + {1134, 16, 17, 16, 1, -15}, // 0x4F 'O' + {1168, 16, 17, 14, 0, -15}, // 0x50 'P' + {1202, 16, 21, 16, 1, -15}, // 0x51 'Q' + {1244, 16, 17, 16, 0, -15}, // 0x52 'R' + {1278, 12, 17, 12, 0, -15}, // 0x53 'S' + {1304, 15, 17, 14, 2, -15}, // 0x54 'T' + {1336, 16, 17, 17, 3, -15}, // 0x55 'U' + {1370, 16, 16, 17, 3, -15}, // 0x56 'V' + {1402, 21, 16, 22, 3, -15}, // 0x57 'W' + {1444, 17, 17, 17, 0, -15}, // 0x58 'X' + {1481, 14, 17, 15, 3, -15}, // 0x59 'Y' + {1511, 15, 17, 13, 0, -15}, // 0x5A 'Z' + {1543, 10, 20, 8, -1, -15}, // 0x5B '[' + {1568, 6, 16, 10, 3, -15}, // 0x5C '\' + {1580, 9, 20, 8, -1, -15}, // 0x5D ']' + {1603, 10, 9, 14, 2, -15}, // 0x5E '^' + {1615, 12, 1, 12, 0, 4}, // 0x5F '_' + {1617, 5, 4, 8, 2, -15}, // 0x60 '`' + {1620, 12, 12, 12, 0, -10}, // 0x61 'a' + {1638, 11, 18, 12, 1, -16}, // 0x62 'b' + {1663, 9, 12, 10, 1, -10}, // 0x63 'c' + {1677, 14, 18, 12, 0, -16}, // 0x64 'd' + {1709, 9, 12, 10, 1, -10}, // 0x65 'e' + {1723, 14, 22, 12, -2, -16}, // 0x66 'f' + {1762, 13, 16, 12, -1, -10}, // 0x67 'g' + {1788, 13, 18, 13, 0, -16}, // 0x68 'h' + {1818, 6, 17, 7, 1, -15}, // 0x69 'i' + {1831, 11, 21, 8, -2, -15}, // 0x6A 'j' + {1860, 13, 18, 12, 0, -16}, // 0x6B 'k' + {1890, 7, 18, 7, 1, -16}, // 0x6C 'l' + {1906, 18, 12, 18, 0, -10}, // 0x6D 'm' + {1933, 12, 12, 13, 0, -10}, // 0x6E 'n' + {1951, 10, 12, 11, 1, -10}, // 0x6F 'o' + {1966, 14, 16, 12, -2, -10}, // 0x70 'p' + {1994, 12, 16, 12, 0, -10}, // 0x71 'q' + {2018, 10, 11, 10, 0, -10}, // 0x72 'r' + {2032, 9, 12, 9, 0, -10}, // 0x73 's' + {2046, 7, 15, 7, 1, -13}, // 0x74 't' + {2060, 12, 12, 13, 1, -10}, // 0x75 'u' + {2078, 10, 11, 11, 1, -10}, // 0x76 'v' + {2092, 15, 11, 16, 1, -10}, // 0x77 'w' + {2113, 13, 12, 11, -1, -10}, // 0x78 'x' + {2133, 11, 16, 10, -1, -10}, // 0x79 'y' + {2155, 10, 13, 10, 0, -10}, // 0x7A 'z' + {2172, 11, 21, 8, 0, -16}, // 0x7B '{' + {2201, 2, 16, 6, 3, -15}, // 0x7C '|' + {2205, 10, 21, 8, -3, -16}, // 0x7D '}' + {2232, 11, 4, 14, 1, -7}}; // 0x7E '~' + +const GFXfont FreeSerifBoldItalic12pt7b PROGMEM = { + (uint8_t *)FreeSerifBoldItalic12pt7bBitmaps, + (GFXglyph *)FreeSerifBoldItalic12pt7bGlyphs, 0x20, 0x7E, 29}; + +// Approx. 2910 bytes diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBoldItalic18pt7b.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBoldItalic18pt7b.h new file mode 100644 index 0000000..8e75b24 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBoldItalic18pt7b.h @@ -0,0 +1,502 @@ +#pragma once +#include + +const uint8_t FreeSerifBoldItalic18pt7bBitmaps[] PROGMEM = { + 0x01, 0xC0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, 0x80, 0xF0, 0x3C, 0x07, + 0x80, 0xE0, 0x1C, 0x03, 0x00, 0x60, 0x0C, 0x03, 0x00, 0x60, 0x08, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x81, 0xF8, 0x3F, 0x07, 0xE0, 0x78, 0x00, 0x38, + 0x1D, 0xE0, 0xF7, 0x83, 0xDC, 0x0E, 0x70, 0x39, 0xC0, 0xE6, 0x03, 0x18, + 0x0C, 0x40, 0x23, 0x01, 0x80, 0x00, 0x38, 0x60, 0x07, 0x0E, 0x00, 0x70, + 0xC0, 0x06, 0x1C, 0x00, 0xE1, 0xC0, 0x0E, 0x38, 0x01, 0xC3, 0x81, 0xFF, + 0xFF, 0x1F, 0xFF, 0xE1, 0xFF, 0xFE, 0x03, 0x86, 0x00, 0x30, 0xE0, 0x07, + 0x0E, 0x00, 0x71, 0xC0, 0x0E, 0x1C, 0x0F, 0xFF, 0xF8, 0xFF, 0xFF, 0x0F, + 0xFF, 0xF0, 0x1C, 0x30, 0x01, 0x87, 0x00, 0x38, 0x70, 0x03, 0x0E, 0x00, + 0x70, 0xE0, 0x07, 0x0C, 0x00, 0xE1, 0xC0, 0x00, 0x00, 0x08, 0x00, 0x0C, + 0x00, 0x7E, 0x00, 0xFF, 0xC0, 0xF3, 0x70, 0x71, 0x9C, 0x70, 0xC6, 0x38, + 0x43, 0x1C, 0x61, 0x0F, 0x30, 0x87, 0xD8, 0x03, 0xF8, 0x00, 0xFE, 0x00, + 0x3F, 0x80, 0x0F, 0xE0, 0x03, 0xF8, 0x01, 0xFC, 0x00, 0xDF, 0x10, 0x47, + 0x88, 0x63, 0xCC, 0x31, 0xE6, 0x10, 0xF3, 0x98, 0x71, 0xCC, 0x78, 0x7E, + 0x78, 0x07, 0xF8, 0x03, 0xF0, 0x01, 0x80, 0x00, 0xC0, 0x00, 0x03, 0xC0, + 0x18, 0x01, 0xFE, 0x0F, 0x00, 0x7C, 0xFF, 0xC0, 0x1F, 0x0F, 0x98, 0x07, + 0xC1, 0x06, 0x00, 0xF8, 0x21, 0x80, 0x3E, 0x04, 0x30, 0x07, 0xC1, 0x8C, + 0x00, 0xF0, 0x21, 0x80, 0x1E, 0x0C, 0x60, 0x03, 0xC1, 0x0C, 0x00, 0x78, + 0xC3, 0x03, 0xC7, 0xF8, 0x61, 0xFC, 0x7C, 0x18, 0x7C, 0xC0, 0x06, 0x1F, + 0x08, 0x00, 0xC7, 0xC1, 0x00, 0x30, 0xF0, 0x20, 0x06, 0x3E, 0x04, 0x01, + 0x87, 0xC1, 0x00, 0x30, 0xF0, 0x20, 0x0C, 0x1E, 0x0C, 0x03, 0x03, 0xC1, + 0x00, 0x60, 0x3C, 0xC0, 0x18, 0x07, 0xF8, 0x03, 0x00, 0x7C, 0x00, 0x00, + 0x0F, 0x80, 0x00, 0x1F, 0xF0, 0x00, 0x1E, 0x38, 0x00, 0x0E, 0x0E, 0x00, + 0x0F, 0x07, 0x00, 0x07, 0x83, 0x80, 0x03, 0xC3, 0x80, 0x01, 0xE3, 0x80, + 0x00, 0xF7, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x7F, 0x0F, + 0xF0, 0xE7, 0x81, 0xE0, 0xE3, 0xE0, 0xE0, 0xE1, 0xF0, 0x60, 0xE0, 0x7C, + 0x60, 0xF0, 0x3E, 0x20, 0x78, 0x1F, 0xB0, 0x3C, 0x07, 0xF0, 0x1F, 0x03, + 0xF0, 0x0F, 0x80, 0xFC, 0x03, 0xF0, 0x7F, 0x8D, 0xFF, 0xEF, 0xFC, 0x7F, + 0xE3, 0xFC, 0x0F, 0xC0, 0x78, 0x00, 0x3B, 0xDE, 0xE7, 0x39, 0x8C, 0x46, + 0x00, 0x00, 0x60, 0x18, 0x06, 0x01, 0x80, 0x60, 0x1C, 0x07, 0x01, 0xE0, + 0x38, 0x0F, 0x01, 0xC0, 0x38, 0x0F, 0x01, 0xE0, 0x38, 0x07, 0x00, 0xE0, + 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x06, + 0x00, 0xC0, 0x08, 0x00, 0x80, 0x10, 0x00, 0x06, 0x00, 0x40, 0x04, 0x00, + 0x80, 0x18, 0x01, 0x00, 0x30, 0x06, 0x00, 0xC0, 0x1C, 0x03, 0x80, 0x70, + 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x01, 0xE0, 0x3C, 0x07, 0x00, 0xE0, 0x3C, + 0x07, 0x00, 0xE0, 0x38, 0x06, 0x01, 0xC0, 0x70, 0x18, 0x06, 0x01, 0x80, + 0x00, 0x07, 0x00, 0x38, 0x01, 0xC1, 0x8E, 0x3E, 0x23, 0xF9, 0x3F, 0xEB, + 0xE0, 0xE0, 0xFF, 0xF7, 0x93, 0xF8, 0x9F, 0x8E, 0x60, 0x70, 0x03, 0x80, + 0x08, 0x00, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, + 0x00, 0x0E, 0x00, 0x07, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, + 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x03, 0x80, + 0x01, 0xC0, 0x00, 0x1C, 0x7C, 0xF9, 0xF1, 0xE1, 0xC3, 0x0C, 0x30, 0xC2, + 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xE0, 0x7B, 0xFF, 0xFF, 0x78, 0x00, 0x1C, + 0x00, 0xE0, 0x03, 0x80, 0x1E, 0x00, 0x70, 0x01, 0xC0, 0x0E, 0x00, 0x38, + 0x01, 0xC0, 0x07, 0x00, 0x38, 0x00, 0xE0, 0x07, 0x80, 0x1C, 0x00, 0x70, + 0x03, 0x80, 0x0E, 0x00, 0x70, 0x01, 0xC0, 0x0E, 0x00, 0x38, 0x01, 0xC0, + 0x07, 0x00, 0x1C, 0x00, 0xE0, 0x00, 0x00, 0xF0, 0x07, 0x30, 0x1C, 0x30, + 0x78, 0x60, 0xE0, 0xE3, 0xC1, 0xCF, 0x83, 0x9E, 0x0F, 0x3C, 0x1E, 0xF8, + 0x3D, 0xE0, 0x7B, 0xC1, 0xFF, 0x83, 0xFF, 0x07, 0xBC, 0x0F, 0x78, 0x3E, + 0xF0, 0x7D, 0xE0, 0xF3, 0x81, 0xE7, 0x07, 0x8E, 0x0F, 0x0C, 0x3C, 0x18, + 0x70, 0x19, 0xC0, 0x1E, 0x00, 0x00, 0x06, 0x01, 0xF8, 0x1F, 0xF0, 0x03, + 0xE0, 0x07, 0x80, 0x1F, 0x00, 0x3E, 0x00, 0x7C, 0x00, 0xF0, 0x03, 0xE0, + 0x07, 0xC0, 0x0F, 0x80, 0x1E, 0x00, 0x7C, 0x00, 0xF8, 0x01, 0xE0, 0x07, + 0xC0, 0x0F, 0x80, 0x1F, 0x00, 0x3C, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xE0, + 0x0F, 0xC0, 0xFF, 0xF0, 0x00, 0xF8, 0x01, 0xFC, 0x03, 0xFE, 0x06, 0x3F, + 0x08, 0x1F, 0x18, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0E, + 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x30, 0x00, 0x70, 0x00, 0xC0, + 0x01, 0x80, 0x03, 0x00, 0x06, 0x02, 0x0C, 0x06, 0x08, 0x0C, 0x1F, 0xFC, + 0x3F, 0xFC, 0x7F, 0xF8, 0xFF, 0xF8, 0x00, 0xF0, 0x07, 0xF8, 0x1F, 0xF0, + 0x61, 0xF0, 0x81, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0E, 0x00, 0x3C, 0x00, + 0xE0, 0x07, 0xC0, 0x3F, 0xC0, 0x1F, 0x80, 0x0F, 0x80, 0x1F, 0x00, 0x1E, + 0x00, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xC0, 0x07, 0x9C, 0x0E, 0x3C, + 0x38, 0x7F, 0xE0, 0x7E, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x70, 0x00, 0x3C, + 0x00, 0x1E, 0x00, 0x0F, 0x80, 0x07, 0xE0, 0x02, 0xF8, 0x01, 0x3C, 0x00, + 0x9F, 0x00, 0x47, 0xC0, 0x31, 0xE0, 0x18, 0x78, 0x0C, 0x3E, 0x06, 0x0F, + 0x83, 0x03, 0xC1, 0x80, 0xF0, 0x7F, 0xFF, 0x1F, 0xFF, 0xCF, 0xFF, 0xF0, + 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x07, 0xC0, 0x01, + 0xFF, 0x00, 0xFF, 0x80, 0xFF, 0xC0, 0x7F, 0xE0, 0x60, 0x00, 0x30, 0x00, + 0x10, 0x00, 0x1F, 0x00, 0x0F, 0xE0, 0x0F, 0xF8, 0x07, 0xFE, 0x00, 0x3F, + 0x00, 0x07, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, 0x38, 0x00, 0x1C, 0x00, + 0x0E, 0x00, 0x06, 0x00, 0x03, 0x00, 0x03, 0x87, 0x83, 0x83, 0xE3, 0x81, + 0xFF, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x03, 0x80, 0x0F, 0x80, 0x1F, 0x00, + 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x1F, 0x00, + 0x1F, 0xF0, 0x1F, 0xFE, 0x0F, 0xCF, 0x07, 0xC3, 0xC7, 0xE1, 0xE3, 0xE0, + 0xF1, 0xF0, 0x78, 0xF8, 0x3C, 0x78, 0x3E, 0x3C, 0x1F, 0x1E, 0x0F, 0x0F, + 0x0F, 0x83, 0x87, 0x81, 0xE7, 0x80, 0x7F, 0x80, 0x0F, 0x80, 0x00, 0x3F, + 0xFF, 0x3F, 0xFE, 0x3F, 0xFE, 0x7F, 0xFC, 0x60, 0x1C, 0x80, 0x38, 0x80, + 0x30, 0x00, 0x70, 0x00, 0x60, 0x00, 0xE0, 0x01, 0xC0, 0x01, 0xC0, 0x03, + 0x80, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x1C, + 0x00, 0x38, 0x00, 0x38, 0x00, 0x70, 0x00, 0xF0, 0x00, 0xE0, 0x00, 0x00, + 0xF8, 0x00, 0xFF, 0x00, 0xE1, 0xC0, 0xE0, 0xF0, 0xF0, 0x38, 0x78, 0x1C, + 0x3C, 0x0E, 0x1F, 0x07, 0x0F, 0x87, 0x07, 0xE7, 0x01, 0xFF, 0x00, 0x7E, + 0x00, 0x1F, 0x80, 0x3F, 0xE0, 0x73, 0xF0, 0x70, 0xFC, 0x70, 0x3E, 0x70, + 0x0F, 0x38, 0x07, 0x9C, 0x03, 0xCE, 0x01, 0xE7, 0x00, 0xE1, 0xC0, 0xE0, + 0x70, 0xE0, 0x0F, 0xC0, 0x00, 0x00, 0xF8, 0x01, 0xFF, 0x01, 0xF3, 0xC1, + 0xF0, 0xE1, 0xF0, 0x70, 0xF0, 0x3C, 0xF8, 0x1E, 0x7C, 0x0F, 0x3C, 0x0F, + 0x9E, 0x07, 0xCF, 0x03, 0xE7, 0x83, 0xF3, 0xC1, 0xF0, 0xF1, 0xF8, 0x3F, + 0xF8, 0x0F, 0xFC, 0x00, 0x7C, 0x00, 0x7C, 0x00, 0x7E, 0x00, 0x3E, 0x00, + 0x3C, 0x00, 0x7C, 0x00, 0x7C, 0x00, 0xF0, 0x00, 0xC0, 0x00, 0x00, 0x07, + 0x83, 0xF0, 0xFC, 0x3F, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x78, 0x3F, 0x0F, 0xC3, 0xF0, 0x78, 0x00, 0x03, 0xC0, 0xFC, + 0x1F, 0x83, 0xF0, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0C, 0x03, 0xC0, 0x7C, 0x0F, 0x80, 0xF0, 0x0E, 0x01, 0x80, 0x30, 0x0C, + 0x03, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x7C, 0x00, + 0x7F, 0x00, 0x7F, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFE, 0x00, 0xFE, 0x00, + 0x3E, 0x00, 0x0F, 0xC0, 0x01, 0xFC, 0x00, 0x1F, 0xE0, 0x01, 0xFE, 0x00, + 0x0F, 0xE0, 0x00, 0xFF, 0x00, 0x0F, 0xC0, 0x00, 0xF0, 0x00, 0x04, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, + 0x38, 0x00, 0x0F, 0x80, 0x03, 0xF8, 0x00, 0x3F, 0x80, 0x03, 0xFC, 0x00, + 0x3F, 0xC0, 0x01, 0xFC, 0x00, 0x1F, 0xC0, 0x01, 0xF0, 0x00, 0xFC, 0x00, + 0xFE, 0x01, 0xFE, 0x01, 0xFE, 0x01, 0xFC, 0x03, 0xFC, 0x00, 0xFC, 0x00, + 0x3C, 0x00, 0x08, 0x00, 0x00, 0x07, 0xC0, 0xFF, 0x0E, 0x3C, 0x70, 0xF3, + 0xC7, 0x8C, 0x3C, 0x01, 0xE0, 0x1F, 0x00, 0xF0, 0x07, 0x80, 0x78, 0x07, + 0x80, 0x30, 0x03, 0x00, 0x10, 0x01, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x80, 0x7E, 0x03, 0xF0, 0x1F, 0x80, 0x78, 0x00, 0x00, 0x3F, + 0x80, 0x00, 0xFF, 0xF8, 0x01, 0xF0, 0x1E, 0x01, 0xE0, 0x03, 0x81, 0xC0, + 0x00, 0xE1, 0xC0, 0x18, 0x38, 0xE0, 0x3F, 0xCC, 0xE0, 0x3C, 0xE7, 0x70, + 0x3C, 0x71, 0xF0, 0x1C, 0x30, 0xF8, 0x1E, 0x38, 0x7C, 0x0E, 0x1C, 0x3E, + 0x0F, 0x0E, 0x1F, 0x07, 0x0E, 0x0F, 0x83, 0x87, 0x0D, 0xC1, 0xC7, 0x86, + 0x70, 0xE5, 0xC6, 0x38, 0x7C, 0xFE, 0x1C, 0x1C, 0x3E, 0x07, 0x00, 0x00, + 0x01, 0xC0, 0x00, 0x00, 0x78, 0x00, 0x40, 0x1F, 0x00, 0xE0, 0x03, 0xFF, + 0xE0, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x03, 0x00, 0x00, + 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x03, + 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x17, 0xC0, 0x00, 0x67, 0x80, 0x00, 0x8F, + 0x00, 0x03, 0x1F, 0x00, 0x0C, 0x3E, 0x00, 0x10, 0x7C, 0x00, 0x60, 0xF8, + 0x00, 0x81, 0xF0, 0x03, 0xFF, 0xE0, 0x0F, 0xFF, 0xE0, 0x18, 0x07, 0xC0, + 0x60, 0x0F, 0x81, 0xC0, 0x1F, 0x03, 0x00, 0x3E, 0x0E, 0x00, 0x7C, 0x3C, + 0x00, 0xFC, 0xFE, 0x0F, 0xFE, 0x07, 0xFF, 0xE0, 0x01, 0xFF, 0xFC, 0x01, + 0xF8, 0x7E, 0x01, 0xF8, 0x3F, 0x01, 0xF0, 0x3F, 0x01, 0xF0, 0x3F, 0x01, + 0xF0, 0x3F, 0x03, 0xE0, 0x3F, 0x03, 0xE0, 0x7E, 0x03, 0xE0, 0xFC, 0x03, + 0xE3, 0xF0, 0x07, 0xFF, 0x80, 0x07, 0xC3, 0xE0, 0x07, 0xC1, 0xF8, 0x0F, + 0xC0, 0xF8, 0x0F, 0x80, 0xFC, 0x0F, 0x80, 0xFC, 0x0F, 0x80, 0xFC, 0x1F, + 0x80, 0xFC, 0x1F, 0x01, 0xFC, 0x1F, 0x01, 0xF8, 0x1F, 0x03, 0xF0, 0x3F, + 0x0F, 0xE0, 0x7F, 0xFF, 0xC0, 0xFF, 0xFE, 0x00, 0x00, 0x1F, 0x82, 0x01, + 0xFF, 0xE8, 0x07, 0xE0, 0xF0, 0x3F, 0x80, 0xE0, 0xFE, 0x00, 0xC1, 0xF8, + 0x01, 0x87, 0xE0, 0x02, 0x1F, 0x80, 0x04, 0x3F, 0x00, 0x00, 0xFC, 0x00, + 0x01, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0x80, 0x00, + 0x3F, 0x00, 0x00, 0x7E, 0x00, 0x00, 0xFC, 0x00, 0x01, 0xF8, 0x00, 0x03, + 0xF0, 0x00, 0x03, 0xE0, 0x01, 0x07, 0xE0, 0x06, 0x07, 0xE0, 0x18, 0x07, + 0xE0, 0xE0, 0x07, 0xFF, 0x00, 0x01, 0xF8, 0x00, 0x07, 0xFF, 0xE0, 0x01, + 0xFF, 0xFE, 0x00, 0x1F, 0x87, 0xE0, 0x07, 0xE0, 0x7C, 0x01, 0xF0, 0x1F, + 0x80, 0x7C, 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x0F, 0x80, 0x3F, 0x03, 0xE0, + 0x0F, 0xC0, 0xF8, 0x03, 0xF0, 0x3E, 0x00, 0xFC, 0x1F, 0x00, 0x3F, 0x07, + 0xC0, 0x0F, 0xC1, 0xF0, 0x07, 0xF0, 0xFC, 0x01, 0xF8, 0x3E, 0x00, 0x7E, + 0x0F, 0x80, 0x3F, 0x83, 0xE0, 0x0F, 0xC1, 0xF8, 0x07, 0xF0, 0x7C, 0x01, + 0xF8, 0x1F, 0x00, 0xFC, 0x07, 0xC0, 0x7E, 0x03, 0xF0, 0x7E, 0x01, 0xFF, + 0xFF, 0x00, 0xFF, 0xFE, 0x00, 0x00, 0x07, 0xFF, 0xFE, 0x03, 0xFF, 0xFC, + 0x07, 0xE0, 0x78, 0x0F, 0xC0, 0x60, 0x1F, 0x00, 0x40, 0x3E, 0x00, 0x80, + 0x7C, 0x01, 0x01, 0xF8, 0x10, 0x03, 0xE0, 0x60, 0x07, 0xC3, 0x80, 0x0F, + 0xFF, 0x00, 0x3F, 0xFE, 0x00, 0x7C, 0x38, 0x00, 0xF8, 0x30, 0x03, 0xF0, + 0x60, 0x07, 0xC0, 0x80, 0x0F, 0x81, 0x00, 0x1F, 0x00, 0x10, 0x7E, 0x00, + 0x60, 0xF8, 0x01, 0xC1, 0xF0, 0x07, 0x03, 0xE0, 0x1E, 0x0F, 0xC0, 0xFC, + 0x3F, 0xFF, 0xF8, 0xFF, 0xFF, 0xE0, 0x07, 0xFF, 0xFE, 0x03, 0xFF, 0xFC, + 0x07, 0xE0, 0x78, 0x0F, 0xC0, 0x60, 0x1F, 0x00, 0x40, 0x3E, 0x00, 0x80, + 0x7C, 0x01, 0x01, 0xF8, 0x20, 0x03, 0xE0, 0xC0, 0x07, 0xC3, 0x80, 0x0F, + 0xFE, 0x00, 0x3F, 0xFC, 0x00, 0x7C, 0x38, 0x00, 0xF8, 0x30, 0x03, 0xF0, + 0x60, 0x07, 0xC0, 0x80, 0x0F, 0x81, 0x00, 0x1F, 0x00, 0x00, 0x7E, 0x00, + 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0xC0, 0x00, + 0x3F, 0x80, 0x00, 0xFF, 0xC0, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0xFF, 0xF6, + 0x01, 0xF8, 0x3C, 0x03, 0xE0, 0x1C, 0x0F, 0xC0, 0x0C, 0x0F, 0xC0, 0x08, + 0x1F, 0x80, 0x08, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x7E, 0x00, 0x00, + 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFC, 0x03, 0xFF, + 0xFC, 0x00, 0xFC, 0xFC, 0x00, 0xF8, 0xFC, 0x00, 0xF8, 0xFC, 0x00, 0xF8, + 0xFC, 0x00, 0xF0, 0x7C, 0x01, 0xF0, 0x7E, 0x01, 0xF0, 0x3E, 0x01, 0xF0, + 0x1F, 0x83, 0xE0, 0x0F, 0xFF, 0x80, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x3F, + 0xF8, 0x0F, 0xE0, 0x7F, 0x00, 0x7E, 0x01, 0xF8, 0x03, 0xF0, 0x0F, 0x80, + 0x1F, 0x00, 0x7C, 0x00, 0xF8, 0x07, 0xE0, 0x07, 0xC0, 0x3E, 0x00, 0x7E, + 0x01, 0xF0, 0x03, 0xE0, 0x0F, 0x80, 0x1F, 0x00, 0xF8, 0x00, 0xF8, 0x07, + 0xC0, 0x0F, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xF0, 0x03, 0xE0, 0x1F, 0x00, + 0x3F, 0x00, 0xF8, 0x01, 0xF0, 0x07, 0xC0, 0x0F, 0x80, 0x7E, 0x00, 0x7C, + 0x03, 0xE0, 0x07, 0xE0, 0x1F, 0x00, 0x3E, 0x00, 0xF8, 0x01, 0xF0, 0x0F, + 0xC0, 0x0F, 0x80, 0x7C, 0x00, 0xFC, 0x03, 0xE0, 0x0F, 0xE0, 0x3F, 0x80, + 0xFF, 0xC7, 0xFF, 0x00, 0x07, 0xFE, 0x03, 0xF8, 0x07, 0xE0, 0x0F, 0xC0, + 0x1F, 0x00, 0x3E, 0x00, 0x7C, 0x01, 0xF0, 0x03, 0xE0, 0x07, 0xC0, 0x0F, + 0x80, 0x3E, 0x00, 0x7C, 0x00, 0xF8, 0x03, 0xF0, 0x07, 0xC0, 0x0F, 0x80, + 0x1F, 0x00, 0x7C, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xE0, 0x0F, 0xC0, 0x3F, + 0x80, 0xFF, 0xC0, 0x00, 0x3F, 0xF0, 0x01, 0xFE, 0x00, 0x0F, 0xC0, 0x00, + 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x1F, 0x80, 0x01, 0xF0, 0x00, + 0x1F, 0x00, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, + 0x07, 0xE0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x0F, 0xC0, + 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x61, 0xF0, + 0x0F, 0x3F, 0x00, 0xE7, 0xE0, 0x07, 0xFC, 0x00, 0x3F, 0x00, 0x00, 0x07, + 0xFF, 0x3F, 0x80, 0xFE, 0x07, 0x80, 0x7E, 0x03, 0x00, 0x3F, 0x03, 0x00, + 0x1F, 0x03, 0x00, 0x0F, 0x83, 0x00, 0x07, 0xC3, 0x00, 0x07, 0xE3, 0x00, + 0x03, 0xE3, 0x00, 0x01, 0xF3, 0x00, 0x00, 0xFB, 0x80, 0x00, 0xFB, 0xC0, + 0x00, 0x7F, 0xE0, 0x00, 0x3E, 0xF8, 0x00, 0x3F, 0x7C, 0x00, 0x1F, 0x1F, + 0x00, 0x0F, 0x8F, 0x80, 0x07, 0xC7, 0xE0, 0x07, 0xE1, 0xF0, 0x03, 0xE0, + 0xFC, 0x01, 0xF0, 0x3E, 0x00, 0xF8, 0x1F, 0x00, 0xFC, 0x07, 0xC0, 0xFE, + 0x07, 0xF0, 0xFF, 0xCF, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x07, 0xF0, 0x00, + 0x1F, 0x80, 0x00, 0x7E, 0x00, 0x01, 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x1F, + 0x00, 0x00, 0xF8, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x3E, 0x00, + 0x01, 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x1F, 0x00, 0x00, 0xFC, 0x00, 0x03, + 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x3E, 0x00, 0x11, 0xF0, 0x00, 0xC7, 0xC0, + 0x06, 0x1F, 0x00, 0x38, 0x7C, 0x01, 0xE3, 0xF0, 0x3F, 0x9F, 0xFF, 0xFC, + 0xFF, 0xFF, 0xF0, 0x07, 0xF8, 0x00, 0x7F, 0x80, 0xFC, 0x00, 0x3F, 0x80, + 0x3E, 0x00, 0x3F, 0x80, 0x1F, 0x00, 0x3F, 0x80, 0x1F, 0x80, 0x1F, 0xC0, + 0x0F, 0xE0, 0x1B, 0xE0, 0x07, 0xF0, 0x0D, 0xF0, 0x02, 0xF8, 0x0D, 0xF0, + 0x03, 0x7C, 0x0C, 0xF8, 0x01, 0xBE, 0x06, 0x7C, 0x00, 0xDF, 0x06, 0x7C, + 0x00, 0xCF, 0x83, 0x3E, 0x00, 0x67, 0xC3, 0x1F, 0x00, 0x31, 0xE3, 0x0F, + 0x80, 0x38, 0xF9, 0x8F, 0x80, 0x18, 0x7D, 0x87, 0xC0, 0x0C, 0x3F, 0x83, + 0xE0, 0x06, 0x1F, 0xC1, 0xF0, 0x06, 0x0F, 0xC1, 0xF0, 0x03, 0x07, 0xC0, + 0xF8, 0x01, 0x83, 0xE0, 0x7C, 0x01, 0xC0, 0xE0, 0x7E, 0x00, 0xE0, 0x70, + 0x3F, 0x00, 0xF8, 0x30, 0x3F, 0x80, 0xFF, 0x10, 0x7F, 0xF0, 0x00, 0x07, + 0xF0, 0x0F, 0xE0, 0x3E, 0x00, 0x78, 0x07, 0xE0, 0x06, 0x00, 0x7C, 0x00, + 0xC0, 0x1F, 0xC0, 0x10, 0x03, 0xF8, 0x06, 0x00, 0x6F, 0x80, 0xC0, 0x19, + 0xF0, 0x10, 0x03, 0x3F, 0x02, 0x00, 0x63, 0xE0, 0xC0, 0x0C, 0x7C, 0x18, + 0x03, 0x07, 0xC2, 0x00, 0x60, 0xF8, 0x40, 0x0C, 0x0F, 0x98, 0x03, 0x81, + 0xF3, 0x00, 0x60, 0x3F, 0x40, 0x0C, 0x03, 0xF8, 0x01, 0x80, 0x7F, 0x00, + 0x60, 0x07, 0xC0, 0x0C, 0x00, 0xF8, 0x01, 0x80, 0x0F, 0x00, 0x70, 0x01, + 0xE0, 0x0E, 0x00, 0x18, 0x03, 0xE0, 0x03, 0x00, 0x02, 0x00, 0x60, 0x00, + 0x00, 0x1F, 0xC0, 0x00, 0xFF, 0xC0, 0x07, 0xC3, 0xE0, 0x1F, 0x03, 0xC0, + 0x7C, 0x03, 0xC1, 0xF0, 0x07, 0x87, 0xE0, 0x0F, 0x8F, 0x80, 0x1F, 0x3F, + 0x00, 0x3E, 0x7C, 0x00, 0x7D, 0xF8, 0x01, 0xFB, 0xE0, 0x03, 0xF7, 0xC0, + 0x07, 0xDF, 0x80, 0x1F, 0xBF, 0x00, 0x3F, 0x7C, 0x00, 0x7C, 0xF8, 0x01, + 0xF9, 0xF0, 0x03, 0xE3, 0xE0, 0x0F, 0xC7, 0xC0, 0x1F, 0x07, 0x80, 0x7C, + 0x0F, 0x81, 0xF0, 0x0F, 0x87, 0xC0, 0x0F, 0xFE, 0x00, 0x07, 0xF0, 0x00, + 0x07, 0xFF, 0xE0, 0x03, 0xFF, 0xF0, 0x07, 0xE3, 0xF0, 0x0F, 0x83, 0xE0, + 0x1F, 0x07, 0xE0, 0x3E, 0x0F, 0xC0, 0x7C, 0x1F, 0x81, 0xF0, 0x3F, 0x03, + 0xE0, 0xFE, 0x07, 0xC1, 0xF8, 0x0F, 0x87, 0xF0, 0x3E, 0x1F, 0xC0, 0x7F, + 0xFE, 0x00, 0xFF, 0xF0, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, + 0x00, 0x1F, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, + 0x03, 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x80, 0x00, 0xFF, 0xC0, 0x00, + 0x00, 0x1F, 0xC0, 0x00, 0xFF, 0xC0, 0x07, 0xC3, 0xE0, 0x1F, 0x03, 0xC0, + 0x7C, 0x03, 0xC1, 0xF0, 0x07, 0x87, 0xE0, 0x0F, 0x8F, 0x80, 0x1F, 0x3F, + 0x00, 0x3E, 0x7C, 0x00, 0x7D, 0xF8, 0x01, 0xFB, 0xF0, 0x03, 0xF7, 0xC0, + 0x07, 0xDF, 0x80, 0x0F, 0xBF, 0x00, 0x3F, 0x7C, 0x00, 0x7C, 0xF8, 0x01, + 0xF9, 0xF0, 0x03, 0xE3, 0xE0, 0x07, 0xC7, 0xC0, 0x1F, 0x07, 0x80, 0x7C, + 0x0F, 0x01, 0xF0, 0x0F, 0x07, 0x80, 0x07, 0xFE, 0x00, 0x03, 0x80, 0x00, + 0x0C, 0x00, 0x00, 0x3C, 0x00, 0x20, 0xFF, 0xC1, 0x87, 0xFF, 0xFE, 0x1E, + 0xFF, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0x07, 0xFF, 0xE0, 0x01, 0xFF, 0xFC, + 0x01, 0xF8, 0x7E, 0x01, 0xF8, 0x3F, 0x01, 0xF8, 0x3F, 0x01, 0xF0, 0x3F, + 0x01, 0xF0, 0x3F, 0x03, 0xF0, 0x3F, 0x03, 0xE0, 0x7E, 0x03, 0xE0, 0xFE, + 0x03, 0xE1, 0xF8, 0x07, 0xFF, 0xF0, 0x07, 0xFF, 0x80, 0x07, 0xDF, 0xC0, + 0x0F, 0xCF, 0xC0, 0x0F, 0xCF, 0xC0, 0x0F, 0x8F, 0xE0, 0x0F, 0x87, 0xE0, + 0x1F, 0x87, 0xE0, 0x1F, 0x03, 0xF0, 0x1F, 0x03, 0xF0, 0x1F, 0x03, 0xF0, + 0x3F, 0x01, 0xF8, 0x7F, 0x01, 0xF8, 0xFF, 0xE1, 0xFE, 0x00, 0xF8, 0x40, + 0xFF, 0xB0, 0x38, 0x3C, 0x1C, 0x07, 0x0F, 0x01, 0xC3, 0xC0, 0x20, 0xF0, + 0x08, 0x3E, 0x02, 0x0F, 0xC0, 0x03, 0xF8, 0x00, 0x7F, 0x00, 0x0F, 0xE0, + 0x01, 0xFC, 0x00, 0x3F, 0x80, 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x00, + 0x03, 0xC4, 0x00, 0xF1, 0x00, 0x3C, 0x60, 0x0F, 0x38, 0x07, 0x8F, 0x83, + 0xC2, 0x3F, 0xE0, 0x83, 0xF0, 0x00, 0x3F, 0xFF, 0xF9, 0xFF, 0xFF, 0xCF, + 0x1F, 0x1E, 0x70, 0xF8, 0x77, 0x0F, 0x83, 0x30, 0x7C, 0x09, 0x03, 0xE0, + 0x40, 0x3F, 0x02, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x07, + 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, + 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x03, 0xF0, 0x00, 0x1F, 0x00, 0x00, 0xF8, + 0x00, 0x07, 0xC0, 0x00, 0x7E, 0x00, 0x07, 0xF0, 0x00, 0xFF, 0xF0, 0x00, + 0x7F, 0xF0, 0xFF, 0x1F, 0xC0, 0x3E, 0x1F, 0x80, 0x1C, 0x1F, 0x80, 0x18, + 0x1F, 0x00, 0x18, 0x1F, 0x00, 0x18, 0x1F, 0x00, 0x30, 0x3F, 0x00, 0x30, + 0x3E, 0x00, 0x30, 0x3E, 0x00, 0x30, 0x7E, 0x00, 0x60, 0x7C, 0x00, 0x60, + 0x7C, 0x00, 0x60, 0x7C, 0x00, 0xC0, 0x7C, 0x00, 0xC0, 0xF8, 0x00, 0xC0, + 0xF8, 0x00, 0xC0, 0xF8, 0x01, 0x80, 0xF8, 0x01, 0x80, 0xF8, 0x03, 0x80, + 0xF8, 0x03, 0x00, 0x7C, 0x06, 0x00, 0x7E, 0x1E, 0x00, 0x3F, 0xF8, 0x00, + 0x0F, 0xE0, 0x00, 0xFF, 0xE0, 0x7F, 0x3F, 0x80, 0x1C, 0x1F, 0x80, 0x18, + 0x1F, 0x80, 0x18, 0x1F, 0x80, 0x30, 0x1F, 0x80, 0x30, 0x0F, 0x80, 0x60, + 0x0F, 0x80, 0x40, 0x0F, 0x80, 0xC0, 0x0F, 0x81, 0x80, 0x0F, 0x81, 0x00, + 0x0F, 0xC3, 0x00, 0x0F, 0xC6, 0x00, 0x07, 0xC6, 0x00, 0x07, 0xCC, 0x00, + 0x07, 0xC8, 0x00, 0x07, 0xD8, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF0, 0x00, + 0x07, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0x80, 0x00, + 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0xFF, 0xCF, 0xF8, 0x7E, 0x7F, 0x07, + 0xE0, 0x38, 0x7C, 0x07, 0x80, 0x60, 0xF8, 0x0F, 0x00, 0x81, 0xF0, 0x1E, + 0x03, 0x03, 0xE0, 0x3E, 0x04, 0x07, 0xE0, 0xFC, 0x18, 0x07, 0xC1, 0xF8, + 0x20, 0x0F, 0x87, 0xF0, 0xC0, 0x1F, 0x0B, 0xE1, 0x00, 0x3E, 0x37, 0xC6, + 0x00, 0x7C, 0x47, 0x88, 0x00, 0xF9, 0x8F, 0x30, 0x01, 0xF2, 0x1F, 0x40, + 0x03, 0xEC, 0x3E, 0x80, 0x03, 0xF0, 0x7F, 0x00, 0x07, 0xE0, 0xFC, 0x00, + 0x0F, 0x81, 0xF8, 0x00, 0x1F, 0x03, 0xE0, 0x00, 0x3C, 0x07, 0xC0, 0x00, + 0x78, 0x07, 0x00, 0x00, 0xF0, 0x0E, 0x00, 0x00, 0xC0, 0x18, 0x00, 0x01, + 0x80, 0x30, 0x00, 0x02, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x3F, 0x81, 0xFC, + 0x07, 0x80, 0x7C, 0x03, 0x00, 0x3F, 0x03, 0x00, 0x0F, 0x83, 0x80, 0x07, + 0xC1, 0x80, 0x03, 0xE1, 0x80, 0x00, 0xF9, 0x80, 0x00, 0x7D, 0x80, 0x00, + 0x3F, 0x80, 0x00, 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, 0xE0, 0x00, + 0x01, 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xBE, 0x00, 0x00, 0xCF, 0x00, + 0x00, 0xC7, 0xC0, 0x00, 0xC3, 0xE0, 0x00, 0xC1, 0xF0, 0x00, 0xC0, 0x7C, + 0x00, 0xE0, 0x3E, 0x00, 0xE0, 0x1F, 0x00, 0xF8, 0x1F, 0xE0, 0xFF, 0x1F, + 0xF8, 0x00, 0xFF, 0xC3, 0xF9, 0xF8, 0x07, 0x87, 0xC0, 0x38, 0x3E, 0x01, + 0x81, 0xF0, 0x18, 0x07, 0xC0, 0x80, 0x3E, 0x0C, 0x01, 0xF0, 0xC0, 0x07, + 0xC4, 0x00, 0x3E, 0x60, 0x01, 0xF6, 0x00, 0x07, 0xA0, 0x00, 0x3F, 0x00, + 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xC0, 0x00, 0x3E, + 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x00, + 0x7E, 0x00, 0x07, 0xF0, 0x00, 0xFF, 0xF0, 0x00, 0x07, 0xFF, 0xF8, 0x3F, + 0xFF, 0xC3, 0xE0, 0x7E, 0x1C, 0x07, 0xE0, 0xC0, 0x3E, 0x0C, 0x03, 0xF0, + 0x40, 0x3F, 0x00, 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x01, 0xF8, 0x00, 0x1F, + 0x80, 0x00, 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x0F, 0xC0, 0x00, + 0x7E, 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0x83, 0xE0, 0x0C, 0x3F, 0x00, + 0xC3, 0xF0, 0x0E, 0x1F, 0x00, 0xF1, 0xF8, 0x1F, 0x9F, 0xFF, 0xF8, 0xFF, + 0xFF, 0xC0, 0x01, 0xFC, 0x0F, 0xE0, 0x3C, 0x00, 0xE0, 0x03, 0x80, 0x1E, + 0x00, 0x78, 0x01, 0xC0, 0x07, 0x00, 0x3C, 0x00, 0xF0, 0x03, 0x80, 0x0E, + 0x00, 0x38, 0x01, 0xE0, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x03, 0xC0, 0x0F, + 0x00, 0x38, 0x00, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x70, 0x01, 0xC0, 0x0F, + 0x00, 0x3C, 0x00, 0xFF, 0x03, 0xF8, 0x00, 0xE0, 0x38, 0x07, 0x01, 0xC0, + 0x70, 0x0C, 0x03, 0x80, 0xE0, 0x38, 0x07, 0x01, 0xC0, 0x70, 0x0C, 0x03, + 0x80, 0xE0, 0x38, 0x07, 0x01, 0xC0, 0x70, 0x0C, 0x03, 0x80, 0xE0, 0x38, + 0x07, 0x01, 0xC0, 0x03, 0xFC, 0x0F, 0xF0, 0x03, 0x80, 0x0E, 0x00, 0x38, + 0x01, 0xE0, 0x07, 0x80, 0x1C, 0x00, 0x70, 0x03, 0xC0, 0x0F, 0x00, 0x38, + 0x00, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x70, 0x01, 0xC0, 0x0F, 0x00, 0x3C, + 0x00, 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x78, 0x01, 0xE0, 0x07, 0x00, 0x1C, + 0x00, 0xF0, 0x03, 0xC0, 0xFE, 0x03, 0xF8, 0x00, 0x03, 0xC0, 0x03, 0xC0, + 0x07, 0xE0, 0x07, 0xE0, 0x0E, 0x70, 0x0E, 0x70, 0x1C, 0x78, 0x1C, 0x38, + 0x3C, 0x3C, 0x38, 0x1C, 0x78, 0x1E, 0x70, 0x0E, 0xF0, 0x0E, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xE1, 0xE3, 0xC1, 0xC1, 0xC0, 0xC0, 0x00, + 0xF7, 0x80, 0xFD, 0xE0, 0x7C, 0xF0, 0x3C, 0x3C, 0x1E, 0x0F, 0x0F, 0x83, + 0x83, 0xC1, 0xE1, 0xE0, 0x78, 0x78, 0x1C, 0x3E, 0x0F, 0x0F, 0x03, 0xC3, + 0xC1, 0xF0, 0xF0, 0xFC, 0xFE, 0x6F, 0x6F, 0xF3, 0xF1, 0xF8, 0xF8, 0x3C, + 0x1C, 0x00, 0x01, 0xE0, 0x1F, 0xC0, 0x07, 0xC0, 0x07, 0xC0, 0x07, 0x80, + 0x07, 0x80, 0x0F, 0x80, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x3C, 0x1E, 0xFE, + 0x1F, 0x9F, 0x1F, 0x0F, 0x1E, 0x0F, 0x3E, 0x0F, 0x3C, 0x0F, 0x3C, 0x1F, + 0x78, 0x1E, 0x78, 0x1E, 0x78, 0x3C, 0x78, 0x3C, 0xF0, 0x78, 0xF0, 0xF0, + 0xF1, 0xE0, 0x7F, 0xC0, 0x3F, 0x00, 0x01, 0xF0, 0x3F, 0xC3, 0xCE, 0x3C, + 0xF3, 0xC7, 0x1E, 0x01, 0xE0, 0x0F, 0x00, 0xF8, 0x07, 0x80, 0x3C, 0x01, + 0xE0, 0x0F, 0x03, 0x78, 0x31, 0xE3, 0x0F, 0xF0, 0x1E, 0x00, 0x00, 0x1F, + 0xC0, 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x78, 0x00, 0x0F, + 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x01, 0xEF, 0x00, 0x7F, 0xE0, 0x3E, 0x7C, + 0x07, 0x8F, 0x01, 0xE1, 0xE0, 0x78, 0x3C, 0x0F, 0x0F, 0x83, 0xC1, 0xE0, + 0x78, 0x3C, 0x1E, 0x0F, 0x83, 0xC1, 0xF0, 0x78, 0x7C, 0x0F, 0x0F, 0x91, + 0xE3, 0xF6, 0x3F, 0xDF, 0x83, 0xF3, 0xE0, 0x3C, 0x38, 0x00, 0x01, 0xE0, + 0x3F, 0x83, 0xCE, 0x3C, 0x73, 0xC3, 0x9E, 0x1D, 0xE1, 0xCF, 0x1C, 0xFB, + 0xC7, 0xF8, 0x3C, 0x01, 0xE0, 0x0F, 0x02, 0x78, 0x31, 0xE3, 0x0F, 0xF0, + 0x1E, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x1D, 0xC0, 0x01, 0xCE, 0x00, 0x1C, + 0x70, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x07, 0x80, 0x00, + 0x3C, 0x00, 0x0F, 0xFC, 0x00, 0x7F, 0xE0, 0x00, 0xF0, 0x00, 0x07, 0x80, + 0x00, 0x3C, 0x00, 0x03, 0xE0, 0x00, 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x07, + 0x80, 0x00, 0x7C, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xF0, 0x00, + 0x07, 0x80, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, + 0x00, 0x0F, 0x00, 0x0E, 0x70, 0x00, 0x77, 0x80, 0x03, 0xF8, 0x00, 0x0F, + 0x80, 0x00, 0x00, 0xFE, 0x00, 0x7F, 0xFC, 0x1F, 0x1F, 0x87, 0xC3, 0xC1, + 0xF0, 0x78, 0x3C, 0x1F, 0x07, 0x83, 0xE0, 0xF0, 0xF8, 0x0E, 0x3E, 0x01, + 0xFF, 0x80, 0x3F, 0xC0, 0x0C, 0x00, 0x03, 0xC0, 0x00, 0x7F, 0x80, 0x0F, + 0xFE, 0x00, 0x7F, 0xF0, 0x70, 0xFF, 0x1C, 0x03, 0xE3, 0x80, 0x3C, 0x70, + 0x07, 0x0F, 0x03, 0xE0, 0xFF, 0xF0, 0x07, 0xF0, 0x00, 0x1F, 0xC0, 0x03, + 0xE0, 0x00, 0xF0, 0x00, 0xF8, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1E, 0x00, + 0x1F, 0x00, 0x0F, 0x0E, 0x07, 0x9F, 0x83, 0xDF, 0xC3, 0xE9, 0xE1, 0xE8, + 0xF0, 0xF8, 0xF8, 0x7C, 0x78, 0x7C, 0x3C, 0x3E, 0x3E, 0x1E, 0x1E, 0x1F, + 0x0F, 0x0F, 0x0F, 0x87, 0x87, 0xCB, 0xC3, 0xCB, 0xE1, 0xE9, 0xE0, 0xFC, + 0xF0, 0x38, 0x00, 0x03, 0x03, 0xC1, 0xE0, 0xF0, 0x30, 0x00, 0x00, 0x00, + 0x07, 0x3F, 0x87, 0x83, 0xC1, 0xE0, 0xF0, 0xF0, 0x78, 0x3C, 0x1E, 0x1E, + 0x0F, 0x27, 0x17, 0x93, 0xF1, 0xF8, 0x70, 0x00, 0x00, 0x06, 0x00, 0x0F, + 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x00, 0xFE, 0x00, 0x3E, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x3C, + 0x00, 0x7C, 0x00, 0x78, 0x00, 0x78, 0x00, 0x78, 0x00, 0xF8, 0x00, 0xF0, + 0x00, 0xF0, 0x00, 0xF0, 0x01, 0xF0, 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xE0, + 0x03, 0xC0, 0xE3, 0xC0, 0xE7, 0x80, 0xFF, 0x00, 0x7C, 0x00, 0x1F, 0xC0, + 0x03, 0xE0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1E, + 0x00, 0x1F, 0x00, 0x0F, 0x3F, 0x87, 0x87, 0x83, 0xC3, 0x03, 0xE3, 0x01, + 0xE3, 0x00, 0xF3, 0x00, 0x7B, 0x80, 0x7B, 0xC0, 0x3F, 0xE0, 0x1E, 0xF0, + 0x1F, 0x78, 0x0F, 0x1E, 0x07, 0x8F, 0x13, 0xC7, 0x93, 0xE1, 0xF9, 0xE0, + 0xF8, 0xF0, 0x38, 0x00, 0x1F, 0xC0, 0xF8, 0x1F, 0x03, 0xC0, 0x78, 0x1F, + 0x03, 0xE0, 0x78, 0x0F, 0x01, 0xE0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x0F, + 0x01, 0xE0, 0x3C, 0x0F, 0x81, 0xE0, 0x3C, 0x8F, 0x31, 0xEC, 0x3F, 0x07, + 0xC0, 0x70, 0x00, 0x01, 0x87, 0x07, 0x0F, 0xE7, 0xE7, 0xE0, 0xF3, 0xF9, + 0xF8, 0x3D, 0x9E, 0x9E, 0x0F, 0x47, 0xC7, 0x83, 0xE1, 0xD1, 0xE1, 0xF8, + 0xF8, 0xF0, 0x7C, 0x3C, 0x3C, 0x1F, 0x0F, 0x1F, 0x0F, 0x87, 0xC7, 0x83, + 0xE1, 0xE1, 0xE0, 0xF0, 0x78, 0x78, 0x3C, 0x1E, 0x3C, 0x1F, 0x0F, 0x0F, + 0x27, 0x83, 0xC3, 0xD1, 0xE0, 0xF0, 0xFC, 0xF8, 0x78, 0x1C, 0x00, 0x01, + 0x8F, 0x0F, 0xE7, 0xE0, 0xF3, 0xF8, 0x3C, 0x9E, 0x0F, 0x47, 0x87, 0xA3, + 0xC1, 0xE8, 0xF0, 0x7C, 0x3C, 0x1E, 0x1E, 0x0F, 0x87, 0x83, 0xE1, 0xE0, + 0xF0, 0xF8, 0x3C, 0x3C, 0x1F, 0x0F, 0x27, 0x83, 0xD1, 0xE0, 0xFC, 0x78, + 0x1C, 0x00, 0x01, 0xF0, 0x0E, 0x30, 0x38, 0x70, 0xF0, 0xF3, 0xC1, 0xE7, + 0x83, 0xDE, 0x07, 0xBC, 0x1F, 0xF8, 0x3F, 0xE0, 0x7B, 0xC0, 0xF7, 0x83, + 0xCF, 0x07, 0x9E, 0x1E, 0x1C, 0x38, 0x1C, 0xE0, 0x1F, 0x00, 0x00, 0xE3, + 0x80, 0xFD, 0xF8, 0x0F, 0xFF, 0x81, 0xE8, 0xF0, 0x3E, 0x1E, 0x07, 0x83, + 0xC0, 0xF0, 0x78, 0x3E, 0x1F, 0x07, 0x83, 0xC0, 0xF0, 0x78, 0x1E, 0x1F, + 0x07, 0x83, 0xC0, 0xF0, 0xF8, 0x1E, 0x1E, 0x03, 0xC7, 0x80, 0xFF, 0xE0, + 0x1E, 0xF0, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0xC0, 0x00, + 0xF8, 0x00, 0x3F, 0xC0, 0x00, 0x01, 0xEF, 0x07, 0xFF, 0x0F, 0x1E, 0x1E, + 0x1E, 0x1E, 0x1E, 0x3C, 0x1E, 0x7C, 0x3C, 0x78, 0x3C, 0x78, 0x3C, 0xF0, + 0x7C, 0xF0, 0x78, 0xF0, 0xF8, 0xF0, 0xF8, 0xF1, 0xF0, 0xFE, 0xF0, 0x7E, + 0xF0, 0x39, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x03, 0xC0, 0x03, + 0xC0, 0x1F, 0xF8, 0x03, 0x9C, 0x7F, 0x7C, 0x3D, 0xF8, 0x7A, 0xE0, 0xF8, + 0x03, 0xE0, 0x07, 0xC0, 0x0F, 0x00, 0x3E, 0x00, 0x7C, 0x00, 0xF0, 0x01, + 0xE0, 0x07, 0xC0, 0x0F, 0x00, 0x1E, 0x00, 0x7C, 0x00, 0x07, 0x18, 0xFF, + 0xC7, 0x1C, 0x70, 0x63, 0x81, 0x1E, 0x08, 0xF8, 0x07, 0xE0, 0x1F, 0x00, + 0x7C, 0x01, 0xF0, 0x07, 0x84, 0x3C, 0x20, 0xE1, 0x87, 0x1C, 0x70, 0x9E, + 0x00, 0x00, 0x80, 0x60, 0x30, 0x1C, 0x1F, 0x1F, 0xF7, 0xFC, 0x78, 0x1E, + 0x07, 0x83, 0xC0, 0xF0, 0x3C, 0x1F, 0x07, 0x81, 0xE0, 0x79, 0x3C, 0x4F, + 0x23, 0xF0, 0xFC, 0x1C, 0x00, 0x0F, 0x0F, 0x3F, 0x87, 0x8F, 0x83, 0xC7, + 0xC1, 0xE3, 0xE1, 0xE1, 0xE0, 0xF0, 0xF0, 0x78, 0xF8, 0x78, 0x78, 0x3C, + 0x3C, 0x3E, 0x1E, 0x1F, 0x1E, 0x1F, 0x0F, 0x17, 0x97, 0x9B, 0xCB, 0xF9, + 0xF9, 0xF8, 0xF8, 0x78, 0x38, 0x00, 0x18, 0x37, 0xC3, 0xDE, 0x1E, 0x78, + 0x73, 0xC1, 0x9E, 0x08, 0xF0, 0xC7, 0x84, 0x3C, 0x41, 0xE4, 0x0F, 0x40, + 0x7C, 0x03, 0xC0, 0x1C, 0x00, 0xC0, 0x04, 0x00, 0x38, 0x10, 0xDF, 0x06, + 0x3D, 0xE0, 0xC7, 0xBC, 0x38, 0x73, 0xC7, 0x06, 0x79, 0xF0, 0x8F, 0x3E, + 0x11, 0xEB, 0xC4, 0x3F, 0x79, 0x07, 0xCF, 0x60, 0xF9, 0xE8, 0x1E, 0x3E, + 0x03, 0x87, 0x80, 0x70, 0xF0, 0x0C, 0x0C, 0x01, 0x01, 0x00, 0x03, 0x83, + 0x87, 0xF1, 0xF0, 0x3C, 0xF8, 0x0F, 0x60, 0x03, 0xD0, 0x00, 0xF8, 0x00, + 0x1E, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1F, 0x00, 0x0F, + 0xC0, 0x02, 0xF1, 0x39, 0x3C, 0xCF, 0xCF, 0xE3, 0xE1, 0xF0, 0x70, 0x38, + 0x00, 0x01, 0x83, 0x07, 0xE3, 0xC1, 0xF1, 0xE0, 0x78, 0xF0, 0x3E, 0x18, + 0x1F, 0x08, 0x07, 0x84, 0x03, 0xC6, 0x01, 0xE2, 0x00, 0xFB, 0x00, 0x3D, + 0x00, 0x1F, 0x80, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xC0, 0x01, 0xE0, 0x00, + 0xE0, 0x00, 0x60, 0x00, 0x60, 0x0E, 0x60, 0x0F, 0xE0, 0x07, 0xE0, 0x01, + 0xC0, 0x00, 0x1F, 0xFC, 0x3F, 0xF8, 0x7F, 0xE1, 0x81, 0x82, 0x06, 0x00, + 0x08, 0x00, 0x20, 0x00, 0xC0, 0x03, 0x00, 0x0C, 0x00, 0x10, 0x00, 0x40, + 0x01, 0x80, 0x07, 0xC0, 0x1F, 0x86, 0x3F, 0x8E, 0xCF, 0x9C, 0x07, 0x30, + 0x03, 0xC0, 0x00, 0x1E, 0x00, 0xF8, 0x03, 0xC0, 0x0F, 0x00, 0x1E, 0x00, + 0x38, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x00, 0x1E, 0x00, 0x3C, + 0x00, 0x78, 0x01, 0xE0, 0x03, 0xC0, 0x1F, 0x00, 0x7E, 0x00, 0x30, 0x00, + 0x60, 0x00, 0xE0, 0x01, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x38, + 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x00, 0x0E, 0x00, 0x0C, 0x00, + 0x0F, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, + 0x00, 0xF0, 0x00, 0x70, 0x00, 0x70, 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x80, + 0x07, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xE0, 0x03, 0xC0, 0x07, + 0x80, 0x0F, 0x00, 0x1C, 0x00, 0x18, 0x00, 0x10, 0x00, 0xF0, 0x03, 0xF0, + 0x0F, 0x00, 0x1E, 0x00, 0x38, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, + 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x70, 0x01, 0xE0, 0x0F, 0x80, 0x7C, 0x00, + 0x3E, 0x00, 0x7F, 0xC6, 0xFF, 0xFF, 0x61, 0xFE, 0x00, 0x7C}; + +const GFXglyph FreeSerifBoldItalic18pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 9, 0, 1}, // 0x20 ' ' + {0, 11, 25, 14, 2, -23}, // 0x21 '!' + {35, 14, 10, 19, 4, -23}, // 0x22 '"' + {53, 20, 25, 17, -1, -24}, // 0x23 '#' + {116, 17, 29, 18, 0, -25}, // 0x24 '$' + {178, 27, 25, 29, 1, -23}, // 0x25 '%' + {263, 25, 25, 27, 0, -23}, // 0x26 '&' + {342, 5, 10, 10, 4, -23}, // 0x27 ''' + {349, 11, 30, 12, 1, -23}, // 0x28 '(' + {391, 11, 30, 12, -2, -23}, // 0x29 ')' + {433, 13, 15, 18, 2, -23}, // 0x2A '*' + {458, 17, 17, 20, 1, -16}, // 0x2B '+' + {495, 7, 11, 9, -2, -4}, // 0x2C ',' + {505, 9, 4, 12, 0, -9}, // 0x2D '-' + {510, 6, 5, 9, 0, -3}, // 0x2E '.' + {514, 14, 25, 12, 0, -23}, // 0x2F '/' + {558, 15, 25, 18, 1, -23}, // 0x30 '0' + {605, 15, 25, 17, 0, -23}, // 0x31 '1' + {652, 16, 25, 18, 0, -23}, // 0x32 '2' + {702, 15, 25, 17, 1, -23}, // 0x33 '3' + {749, 18, 24, 17, 0, -23}, // 0x34 '4' + {803, 17, 25, 18, 0, -23}, // 0x35 '5' + {857, 17, 25, 18, 1, -23}, // 0x36 '6' + {911, 16, 24, 17, 3, -23}, // 0x37 '7' + {959, 17, 25, 18, 0, -23}, // 0x38 '8' + {1013, 17, 25, 18, 0, -23}, // 0x39 '9' + {1067, 10, 17, 9, 0, -15}, // 0x3A ':' + {1089, 11, 22, 9, -1, -15}, // 0x3B ';' + {1120, 18, 19, 20, 1, -18}, // 0x3C '<' + {1163, 18, 10, 20, 2, -13}, // 0x3D '=' + {1186, 18, 19, 20, 2, -18}, // 0x3E '>' + {1229, 13, 25, 17, 3, -23}, // 0x3F '?' + {1270, 25, 25, 29, 2, -23}, // 0x40 '@' + {1349, 23, 25, 24, 0, -23}, // 0x41 'A' + {1421, 24, 25, 22, 0, -23}, // 0x42 'B' + {1496, 23, 25, 22, 1, -23}, // 0x43 'C' + {1568, 26, 25, 25, 0, -23}, // 0x44 'D' + {1650, 23, 25, 22, 0, -23}, // 0x45 'E' + {1722, 23, 25, 21, 0, -23}, // 0x46 'F' + {1794, 24, 25, 25, 2, -23}, // 0x47 'G' + {1869, 29, 25, 26, 0, -23}, // 0x48 'H' + {1960, 15, 25, 13, 0, -23}, // 0x49 'I' + {2007, 20, 27, 17, 0, -23}, // 0x4A 'J' + {2075, 25, 25, 23, 0, -23}, // 0x4B 'K' + {2154, 22, 25, 21, 0, -23}, // 0x4C 'L' + {2223, 33, 25, 31, 0, -23}, // 0x4D 'M' + {2327, 27, 25, 25, 0, -23}, // 0x4E 'N' + {2412, 23, 25, 24, 1, -23}, // 0x4F 'O' + {2484, 23, 25, 21, 0, -23}, // 0x50 'P' + {2556, 23, 31, 24, 1, -23}, // 0x51 'Q' + {2646, 24, 25, 23, 0, -23}, // 0x52 'R' + {2721, 18, 25, 18, 0, -23}, // 0x53 'S' + {2778, 21, 25, 21, 3, -23}, // 0x54 'T' + {2844, 24, 25, 25, 4, -23}, // 0x55 'U' + {2919, 24, 25, 25, 4, -23}, // 0x56 'V' + {2994, 31, 25, 32, 4, -23}, // 0x57 'W' + {3091, 25, 25, 24, 0, -23}, // 0x58 'X' + {3170, 21, 25, 22, 4, -23}, // 0x59 'Y' + {3236, 21, 25, 20, 0, -23}, // 0x5A 'Z' + {3302, 14, 30, 12, -1, -23}, // 0x5B '[' + {3355, 10, 25, 14, 4, -23}, // 0x5C '\' + {3387, 14, 30, 12, -2, -23}, // 0x5D ']' + {3440, 16, 13, 20, 2, -23}, // 0x5E '^' + {3466, 18, 3, 17, 0, 3}, // 0x5F '_' + {3473, 7, 6, 12, 3, -23}, // 0x60 '`' + {3479, 18, 17, 18, 0, -15}, // 0x61 'a' + {3518, 16, 26, 17, 1, -24}, // 0x62 'b' + {3570, 13, 17, 15, 1, -15}, // 0x63 'c' + {3598, 19, 25, 18, 1, -23}, // 0x64 'd' + {3658, 13, 17, 15, 1, -15}, // 0x65 'e' + {3686, 21, 32, 17, -3, -24}, // 0x66 'f' + {3770, 19, 23, 17, -1, -15}, // 0x67 'g' + {3825, 17, 25, 19, 1, -23}, // 0x68 'h' + {3879, 9, 25, 10, 1, -23}, // 0x69 'i' + {3908, 16, 31, 12, -3, -23}, // 0x6A 'j' + {3970, 17, 25, 18, 1, -23}, // 0x6B 'k' + {4024, 11, 25, 10, 1, -23}, // 0x6C 'l' + {4059, 26, 17, 27, 0, -15}, // 0x6D 'm' + {4115, 18, 17, 18, 0, -15}, // 0x6E 'n' + {4154, 15, 17, 17, 1, -15}, // 0x6F 'o' + {4186, 19, 23, 17, -2, -15}, // 0x70 'p' + {4241, 16, 23, 17, 1, -15}, // 0x71 'q' + {4287, 15, 16, 14, 0, -15}, // 0x72 'r' + {4317, 13, 17, 12, 0, -15}, // 0x73 's' + {4345, 10, 22, 10, 1, -20}, // 0x74 't' + {4373, 17, 17, 19, 1, -15}, // 0x75 'u' + {4410, 13, 16, 15, 2, -15}, // 0x76 'v' + {4436, 19, 16, 23, 3, -15}, // 0x77 'w' + {4474, 18, 17, 17, -1, -15}, // 0x78 'x' + {4513, 17, 23, 15, -2, -15}, // 0x79 'y' + {4562, 15, 19, 14, 0, -15}, // 0x7A 'z' + {4598, 15, 32, 12, 0, -24}, // 0x7B '{' + {4658, 3, 25, 9, 4, -23}, // 0x7C '|' + {4668, 15, 32, 12, -5, -24}, // 0x7D '}' + {4728, 16, 5, 20, 2, -11}}; // 0x7E '~' + +const GFXfont FreeSerifBoldItalic18pt7b PROGMEM = { + (uint8_t *)FreeSerifBoldItalic18pt7bBitmaps, + (GFXglyph *)FreeSerifBoldItalic18pt7bGlyphs, 0x20, 0x7E, 42}; + +// Approx. 5410 bytes diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBoldItalic24pt7b.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBoldItalic24pt7b.h new file mode 100644 index 0000000..e2fa4cb --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBoldItalic24pt7b.h @@ -0,0 +1,795 @@ +#pragma once +#include + +const uint8_t FreeSerifBoldItalic24pt7bBitmaps[] PROGMEM = { + 0x00, 0x3C, 0x00, 0xFC, 0x01, 0xF8, 0x07, 0xF0, 0x0F, 0xE0, 0x1F, 0xC0, + 0x3F, 0x00, 0x7E, 0x00, 0xF8, 0x01, 0xF0, 0x07, 0xC0, 0x0F, 0x80, 0x1E, + 0x00, 0x3C, 0x00, 0x70, 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x00, 0x0E, 0x00, + 0x18, 0x00, 0x30, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xF0, 0x03, 0xF0, 0x0F, 0xF0, 0x1F, 0xE0, 0x3F, 0xC0, 0x3F, 0x00, + 0x3C, 0x00, 0x1C, 0x01, 0xC7, 0xC0, 0x7D, 0xF8, 0x1F, 0xBF, 0x03, 0xF7, + 0xC0, 0x7C, 0xF8, 0x0F, 0x9E, 0x01, 0xE3, 0xC0, 0x3C, 0x70, 0x07, 0x1E, + 0x00, 0xE3, 0x80, 0x38, 0x70, 0x07, 0x0C, 0x00, 0xC0, 0x00, 0x03, 0xC1, + 0xE0, 0x00, 0x70, 0x38, 0x00, 0x1E, 0x0F, 0x00, 0x03, 0xC1, 0xE0, 0x00, + 0x70, 0x38, 0x00, 0x1E, 0x0F, 0x00, 0x03, 0x81, 0xC0, 0x00, 0xF0, 0x78, + 0x00, 0x1E, 0x0F, 0x00, 0x07, 0x83, 0xC0, 0x1F, 0xFF, 0xFF, 0x83, 0xFF, + 0xFF, 0xF0, 0x7F, 0xFF, 0xFC, 0x00, 0xE0, 0x70, 0x00, 0x3C, 0x1E, 0x00, + 0x07, 0x83, 0xC0, 0x00, 0xE0, 0x70, 0x00, 0x3C, 0x1E, 0x00, 0x07, 0x83, + 0xC0, 0x00, 0xE0, 0x70, 0x07, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFC, 0x1F, + 0xFF, 0xFF, 0x00, 0x38, 0x1C, 0x00, 0x0F, 0x07, 0x80, 0x01, 0xE0, 0xF0, + 0x00, 0x38, 0x1C, 0x00, 0x0F, 0x07, 0x80, 0x01, 0xC0, 0xE0, 0x00, 0x78, + 0x3C, 0x00, 0x0F, 0x07, 0x80, 0x01, 0xC0, 0xE0, 0x00, 0x78, 0x3C, 0x00, + 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x1F, + 0xE0, 0x00, 0x7F, 0xF8, 0x01, 0xF1, 0x9E, 0x01, 0xC1, 0x8F, 0x03, 0x83, + 0x8F, 0x03, 0x83, 0x06, 0x07, 0x83, 0x06, 0x07, 0x87, 0x06, 0x07, 0xC7, + 0x04, 0x07, 0xE6, 0x04, 0x07, 0xFE, 0x00, 0x03, 0xFE, 0x00, 0x03, 0xFF, + 0x00, 0x01, 0xFF, 0x80, 0x00, 0xFF, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x1F, + 0xE0, 0x00, 0x1F, 0xF0, 0x00, 0x3F, 0xF0, 0x00, 0x3B, 0xF8, 0x20, 0x31, + 0xF8, 0x20, 0x30, 0xF8, 0x60, 0x70, 0xF8, 0x60, 0x60, 0xF8, 0x60, 0x60, + 0xF8, 0xF0, 0xE0, 0xF0, 0xF0, 0xE1, 0xE0, 0x78, 0xC3, 0xE0, 0x3C, 0xC7, + 0xC0, 0x0F, 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x01, 0x80, 0x00, 0x03, 0x80, + 0x00, 0x03, 0x80, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0xF0, + 0x00, 0x70, 0x00, 0xFF, 0x80, 0x1C, 0x00, 0x3F, 0x38, 0x1F, 0x00, 0x0F, + 0xC7, 0xFF, 0xE0, 0x03, 0xF0, 0x3F, 0xB8, 0x00, 0x7E, 0x04, 0x07, 0x00, + 0x1F, 0x80, 0x81, 0xC0, 0x03, 0xF0, 0x10, 0x38, 0x00, 0xFC, 0x02, 0x0E, + 0x00, 0x1F, 0x80, 0x81, 0x80, 0x03, 0xF0, 0x10, 0x70, 0x00, 0x7C, 0x06, + 0x1C, 0x00, 0x0F, 0x80, 0x83, 0x80, 0x01, 0xF0, 0x30, 0xE0, 0x00, 0x1E, + 0x0C, 0x1C, 0x07, 0xC3, 0xE3, 0x07, 0x03, 0xFC, 0x3F, 0xC0, 0xC0, 0xFC, + 0x43, 0xE0, 0x38, 0x3E, 0x0C, 0x00, 0x0E, 0x0F, 0xC0, 0x80, 0x01, 0xC3, + 0xF0, 0x10, 0x00, 0x70, 0xFC, 0x02, 0x00, 0x0C, 0x1F, 0x80, 0x40, 0x03, + 0x83, 0xE0, 0x08, 0x00, 0x60, 0xFC, 0x02, 0x00, 0x1C, 0x1F, 0x80, 0x40, + 0x07, 0x03, 0xE0, 0x10, 0x00, 0xE0, 0x7C, 0x02, 0x00, 0x38, 0x0F, 0x80, + 0xC0, 0x06, 0x01, 0xF0, 0x30, 0x01, 0xC0, 0x1F, 0x0C, 0x00, 0x30, 0x01, + 0xFF, 0x00, 0x0E, 0x00, 0x1F, 0x80, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, + 0xFF, 0x80, 0x00, 0x01, 0xF1, 0xE0, 0x00, 0x00, 0xF0, 0x78, 0x00, 0x00, + 0xF0, 0x3C, 0x00, 0x00, 0x78, 0x1E, 0x00, 0x00, 0x7C, 0x0F, 0x00, 0x00, + 0x3E, 0x0F, 0x80, 0x00, 0x1F, 0x07, 0x80, 0x00, 0x0F, 0x87, 0x80, 0x00, + 0x07, 0xC7, 0x80, 0x00, 0x03, 0xFF, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, + 0x00, 0xFC, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x01, 0xFF, 0x07, 0xFE, + 0x03, 0xCF, 0xC0, 0xFE, 0x03, 0xC7, 0xE0, 0x3C, 0x07, 0xC3, 0xF0, 0x1C, + 0x07, 0xC0, 0xFC, 0x0C, 0x03, 0xC0, 0x7E, 0x0E, 0x03, 0xE0, 0x3F, 0x0E, + 0x01, 0xF0, 0x1F, 0xC6, 0x01, 0xF8, 0x07, 0xF6, 0x00, 0xFC, 0x03, 0xFF, + 0x00, 0x7E, 0x00, 0xFF, 0x00, 0x3F, 0x80, 0x7F, 0x80, 0x1F, 0xC0, 0x1F, + 0xC0, 0x07, 0xF0, 0x0F, 0xF0, 0x13, 0xFE, 0x0F, 0xFE, 0x18, 0xFF, 0xFE, + 0xFF, 0xF8, 0x3F, 0xFE, 0x3F, 0xF8, 0x07, 0xF8, 0x03, 0xF0, 0x00, 0x1C, + 0x7D, 0xFB, 0xF7, 0xCF, 0x9E, 0x3C, 0x71, 0xE3, 0x87, 0x0C, 0x00, 0x00, + 0x04, 0x00, 0x70, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x3C, 0x01, + 0xE0, 0x0F, 0x00, 0x3C, 0x01, 0xE0, 0x0F, 0x80, 0x3C, 0x00, 0xF0, 0x07, + 0xC0, 0x1E, 0x00, 0x78, 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0xF0, 0x03, + 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x3C, 0x00, + 0x70, 0x01, 0xC0, 0x07, 0x00, 0x1C, 0x00, 0x30, 0x00, 0xE0, 0x01, 0x80, + 0x06, 0x00, 0x0C, 0x00, 0x30, 0x00, 0x60, 0x01, 0x80, 0x00, 0x00, 0x01, + 0x00, 0x06, 0x00, 0x08, 0x00, 0x30, 0x00, 0x40, 0x01, 0x80, 0x06, 0x00, + 0x1C, 0x00, 0x30, 0x00, 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x38, 0x00, 0xF0, + 0x03, 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x7C, + 0x01, 0xF0, 0x07, 0xC0, 0x1E, 0x00, 0x78, 0x03, 0xE0, 0x0F, 0x80, 0x3C, + 0x01, 0xF0, 0x07, 0x80, 0x1E, 0x00, 0xF0, 0x03, 0x80, 0x1E, 0x00, 0xF0, + 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x06, 0x00, 0x30, 0x00, 0x80, 0x00, 0x00, + 0xE0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x07, 0x0E, 0x1D, 0xF1, + 0xC7, 0xFF, 0x11, 0xFF, 0xE2, 0x3F, 0x7E, 0x4F, 0xC0, 0x3E, 0x00, 0x07, + 0xC0, 0x3F, 0x27, 0xEF, 0xC4, 0x7F, 0xF8, 0x8F, 0xFE, 0x38, 0xFB, 0x87, + 0x0E, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0x70, 0x00, 0x00, + 0x78, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x78, + 0x00, 0x01, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x78, 0x03, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x01, + 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, + 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, + 0x07, 0x80, 0x00, 0x0F, 0x07, 0xE1, 0xFC, 0x7F, 0x1F, 0xC3, 0xF0, 0x7C, + 0x0E, 0x03, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x1C, 0x04, 0x00, 0x7F, 0xF7, + 0xFF, 0x7F, 0xEF, 0xFE, 0xFF, 0xE0, 0x3C, 0x7E, 0xFF, 0xFF, 0xFF, 0x7E, + 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, + 0x78, 0x00, 0x1E, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x07, + 0xC0, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x3C, + 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x01, 0xE0, + 0x00, 0x7C, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x0F, 0x00, + 0x03, 0xC0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x03, 0xC0, 0x00, 0xF8, 0x00, + 0x1E, 0x00, 0x07, 0xC0, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x00, + 0xE3, 0x80, 0x0F, 0x07, 0x00, 0x7C, 0x1C, 0x03, 0xE0, 0x78, 0x0F, 0x81, + 0xE0, 0x7C, 0x07, 0x83, 0xF0, 0x1F, 0x0F, 0xC0, 0xFC, 0x7E, 0x03, 0xF1, + 0xF8, 0x0F, 0xCF, 0xE0, 0x3F, 0x3F, 0x00, 0xFD, 0xFC, 0x07, 0xF7, 0xF0, + 0x1F, 0xDF, 0xC0, 0x7F, 0x7E, 0x01, 0xFB, 0xF8, 0x0F, 0xEF, 0xE0, 0x3F, + 0xBF, 0x80, 0xFE, 0xFC, 0x03, 0xF3, 0xF0, 0x1F, 0xCF, 0xC0, 0x7F, 0x3F, + 0x01, 0xF8, 0xFC, 0x07, 0xE3, 0xE0, 0x3F, 0x0F, 0x80, 0xFC, 0x1E, 0x07, + 0xE0, 0x78, 0x1F, 0x00, 0xE0, 0x78, 0x03, 0x83, 0xC0, 0x07, 0x1E, 0x00, + 0x07, 0xE0, 0x00, 0x00, 0x00, 0x70, 0x01, 0xFE, 0x01, 0xFF, 0xE0, 0x00, + 0xFE, 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x0F, 0xC0, 0x01, 0xFC, 0x00, + 0x1F, 0x80, 0x01, 0xF8, 0x00, 0x3F, 0x80, 0x03, 0xF8, 0x00, 0x3F, 0x00, + 0x03, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0x07, 0xE0, + 0x00, 0xFE, 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x1F, 0xC0, 0x01, 0xFC, + 0x00, 0x1F, 0x80, 0x01, 0xF8, 0x00, 0x3F, 0x80, 0x03, 0xF0, 0x00, 0x3F, + 0x00, 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x1F, 0xF8, 0x0F, 0xFF, 0xF0, 0x00, + 0x0F, 0x80, 0x01, 0xFF, 0x80, 0x0F, 0xFF, 0x00, 0x7F, 0xFE, 0x03, 0x83, + 0xF8, 0x0C, 0x07, 0xF0, 0x60, 0x1F, 0xC3, 0x00, 0x3F, 0x00, 0x00, 0xFC, + 0x00, 0x03, 0xF0, 0x00, 0x0F, 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF8, 0x00, + 0x07, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x1E, + 0x00, 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x3C, 0x00, 0x01, 0xE0, 0x00, + 0x0E, 0x00, 0x00, 0x70, 0x06, 0x03, 0x80, 0x10, 0x1C, 0x00, 0xC0, 0xE0, + 0x06, 0x07, 0xFF, 0xF8, 0x3F, 0xFF, 0xE1, 0xFF, 0xFF, 0x0F, 0xFF, 0xFC, + 0x3F, 0xFF, 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0xFF, 0xC0, 0x0F, 0xFF, 0x80, + 0x60, 0xFE, 0x03, 0x01, 0xFC, 0x08, 0x03, 0xF0, 0x00, 0x0F, 0xC0, 0x00, + 0x3F, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0xFC, + 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x07, 0xF8, 0x00, 0x7F, 0xF0, 0x00, + 0x7F, 0xE0, 0x00, 0x3F, 0xC0, 0x00, 0x7F, 0x00, 0x01, 0xFC, 0x00, 0x03, + 0xF0, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xE0, + 0x00, 0x0F, 0x80, 0x00, 0x3C, 0x1C, 0x01, 0xF0, 0xF8, 0x07, 0x83, 0xF0, + 0x3C, 0x0F, 0xE1, 0xE0, 0x1F, 0xFE, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x07, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x07, 0xE0, 0x00, + 0x07, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF8, 0x00, 0x07, 0xFC, 0x00, + 0x06, 0xFC, 0x00, 0x06, 0x7E, 0x00, 0x06, 0x3F, 0x00, 0x06, 0x3F, 0x00, + 0x06, 0x1F, 0x80, 0x06, 0x0F, 0xC0, 0x06, 0x07, 0xE0, 0x03, 0x07, 0xE0, + 0x03, 0x03, 0xF0, 0x03, 0x01, 0xF8, 0x03, 0x01, 0xFC, 0x03, 0x00, 0xFC, + 0x03, 0x00, 0x7E, 0x03, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, + 0xF0, 0xFF, 0xFF, 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x07, 0xE0, 0x00, 0x03, + 0xF0, 0x00, 0x01, 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x00, + 0x7E, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, + 0x7F, 0xFC, 0x00, 0xFF, 0xFC, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x01, + 0x80, 0x00, 0x03, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x07, 0xFE, 0x00, 0x07, + 0xFF, 0x00, 0x07, 0xFF, 0x80, 0x0F, 0xFF, 0xC0, 0x00, 0xFF, 0xE0, 0x00, + 0x1F, 0xE0, 0x00, 0x0F, 0xF0, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xF0, 0x00, + 0x03, 0xF0, 0x00, 0x01, 0xF0, 0x00, 0x01, 0xF0, 0x00, 0x01, 0xF0, 0x00, + 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x03, 0xC0, 0x78, 0x03, 0xC0, 0xFC, + 0x07, 0x80, 0xFC, 0x0F, 0x00, 0xFE, 0x1E, 0x00, 0x7F, 0xF8, 0x00, 0x1F, + 0xC0, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x01, 0xF8, 0x00, 0x0F, 0x80, 0x00, + 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x01, 0xFC, + 0x00, 0x03, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x3F, 0x80, 0x00, 0xFE, 0x00, + 0x01, 0xFF, 0xF0, 0x07, 0xFF, 0xF0, 0x0F, 0xE1, 0xF0, 0x3F, 0x81, 0xF0, + 0x7F, 0x03, 0xF0, 0xFC, 0x07, 0xE3, 0xF8, 0x0F, 0xC7, 0xF0, 0x1F, 0x8F, + 0xC0, 0x7F, 0x1F, 0x80, 0xFE, 0x3F, 0x01, 0xFC, 0x7C, 0x03, 0xF0, 0xF8, + 0x0F, 0xE1, 0xF0, 0x1F, 0xC1, 0xE0, 0x3F, 0x03, 0xC0, 0xFC, 0x07, 0x81, + 0xF0, 0x07, 0x87, 0xC0, 0x07, 0xFF, 0x00, 0x03, 0xF8, 0x00, 0x0F, 0xFF, + 0xFC, 0x1F, 0xFF, 0xF8, 0x3F, 0xFF, 0xE0, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, + 0x07, 0x00, 0x1C, 0x08, 0x00, 0x78, 0x30, 0x01, 0xE0, 0x40, 0x03, 0xC0, + 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, + 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x78, 0x00, 0x01, + 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x78, + 0x00, 0x01, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, + 0x00, 0x78, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x80, 0x00, + 0x1E, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x03, 0xFE, 0x00, 0x3C, 0x78, + 0x03, 0xC1, 0xE0, 0x3C, 0x07, 0x81, 0xE0, 0x3C, 0x1F, 0x01, 0xE0, 0xF8, + 0x0F, 0x07, 0xC0, 0x78, 0x3F, 0x03, 0xC1, 0xF8, 0x3C, 0x0F, 0xE1, 0xE0, + 0x3F, 0x9E, 0x01, 0xFF, 0xC0, 0x07, 0xFC, 0x00, 0x3F, 0xC0, 0x00, 0xFF, + 0x00, 0x1F, 0xFC, 0x03, 0xCF, 0xF0, 0x3C, 0x3F, 0x83, 0xC0, 0xFC, 0x3C, + 0x03, 0xF1, 0xE0, 0x1F, 0x9E, 0x00, 0x7C, 0xF0, 0x03, 0xE7, 0x80, 0x1F, + 0x3C, 0x00, 0xF9, 0xE0, 0x07, 0x87, 0x00, 0x3C, 0x3C, 0x03, 0xC0, 0xF0, + 0x3C, 0x03, 0xC3, 0xC0, 0x07, 0xF0, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0xFF, + 0xE0, 0x03, 0xF1, 0xE0, 0x0F, 0xC1, 0xC0, 0x3F, 0x03, 0xC0, 0xFE, 0x07, + 0x81, 0xF8, 0x0F, 0x87, 0xF0, 0x1F, 0x0F, 0xC0, 0x3E, 0x3F, 0x80, 0xFC, + 0x7F, 0x01, 0xF8, 0xFC, 0x03, 0xF1, 0xF8, 0x07, 0xE3, 0xF0, 0x1F, 0xC7, + 0xE0, 0x3F, 0x8F, 0xC0, 0x7E, 0x0F, 0x81, 0xFC, 0x1F, 0x03, 0xF8, 0x1F, + 0x0F, 0xE0, 0x1F, 0xFF, 0xC0, 0x1F, 0xFF, 0x00, 0x00, 0xFE, 0x00, 0x03, + 0xF8, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0x7E, 0x00, 0x01, 0xF8, + 0x00, 0x07, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, + 0x1F, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x01, 0xE0, 0x1F, 0x81, 0xFE, 0x0F, + 0xF0, 0x7F, 0x81, 0xF8, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x7E, 0x07, 0xF8, 0x3F, + 0xC1, 0xFE, 0x07, 0xE0, 0x1E, 0x00, 0x00, 0x78, 0x01, 0xF8, 0x07, 0xF8, + 0x0F, 0xF0, 0x1F, 0xE0, 0x1F, 0x80, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, + 0x1F, 0x80, 0x3F, 0x80, 0x7F, 0x00, 0xFE, 0x00, 0xFC, 0x00, 0xF8, 0x00, + 0xE0, 0x01, 0xC0, 0x07, 0x00, 0x0C, 0x00, 0x30, 0x01, 0xC0, 0x0E, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x07, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x7F, 0x00, 0x03, 0xFF, 0x00, 0x0F, 0xFC, 0x00, 0x3F, 0xF0, + 0x01, 0xFF, 0xC0, 0x07, 0xFE, 0x00, 0x1F, 0xF8, 0x00, 0x7F, 0xE0, 0x00, + 0xFF, 0x80, 0x00, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xE0, 0x00, + 0x1F, 0xF8, 0x00, 0x07, 0xFE, 0x00, 0x01, 0xFF, 0xC0, 0x00, 0x3F, 0xF0, + 0x00, 0x0F, 0xFC, 0x00, 0x03, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x07, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x80, 0x00, 0x00, 0xE0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xFF, 0x00, 0x00, + 0xFF, 0xC0, 0x00, 0x3F, 0xF0, 0x00, 0x0F, 0xFC, 0x00, 0x03, 0xFF, 0x80, + 0x00, 0x7F, 0xE0, 0x00, 0x1F, 0xF8, 0x00, 0x07, 0xFF, 0x00, 0x00, 0xFF, + 0x00, 0x00, 0x3F, 0x00, 0x00, 0xFF, 0x00, 0x03, 0xFF, 0x00, 0x1F, 0xFC, + 0x00, 0x7F, 0xE0, 0x01, 0xFF, 0x80, 0x0F, 0xFE, 0x00, 0x3F, 0xF0, 0x00, + 0xFF, 0xC0, 0x00, 0xFF, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xE0, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x01, 0xF8, 0x01, 0xFF, 0x80, 0xF1, 0xF0, 0x38, 0x3E, + 0x1E, 0x0F, 0xC7, 0xC3, 0xF1, 0xF0, 0xFC, 0x7C, 0x3F, 0x0E, 0x0F, 0xC0, + 0x07, 0xF0, 0x01, 0xF8, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x1F, 0x00, 0x07, + 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x0C, 0x00, + 0x06, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0xC0, 0x01, 0xF8, 0x00, 0xFF, 0x00, 0x3F, 0xC0, 0x0F, 0xF0, + 0x01, 0xF8, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x1F, + 0xFF, 0xC0, 0x00, 0x3F, 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x7C, + 0x00, 0x03, 0x80, 0x7C, 0x00, 0x00, 0xE0, 0x7C, 0x00, 0x00, 0x38, 0x3C, + 0x00, 0xF0, 0x4C, 0x3E, 0x00, 0xFD, 0xE7, 0x1E, 0x00, 0xF3, 0xF1, 0x9F, + 0x00, 0xF1, 0xF0, 0xEF, 0x80, 0xF0, 0x78, 0x3F, 0x80, 0xF0, 0x3C, 0x1F, + 0xC0, 0x78, 0x1E, 0x0F, 0xE0, 0x78, 0x1E, 0x07, 0xF0, 0x3C, 0x0F, 0x03, + 0xF8, 0x3E, 0x07, 0x81, 0xFC, 0x1E, 0x07, 0x81, 0xFE, 0x0F, 0x03, 0xC0, + 0xDF, 0x07, 0x83, 0xC0, 0x6F, 0x83, 0xC3, 0xE0, 0x63, 0xE1, 0xF3, 0xF0, + 0x71, 0xF0, 0x7E, 0x78, 0x70, 0xF8, 0x1E, 0x3F, 0xF0, 0x3E, 0x00, 0x07, + 0xE0, 0x0F, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x01, 0xF0, 0x00, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x03, 0x80, 0x03, 0xF0, + 0x07, 0xC0, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x00, 0xF0, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, + 0x1F, 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x03, + 0x7E, 0x00, 0x00, 0x06, 0xFC, 0x00, 0x00, 0x19, 0xF8, 0x00, 0x00, 0x63, + 0xF8, 0x00, 0x00, 0xC7, 0xF0, 0x00, 0x03, 0x07, 0xE0, 0x00, 0x06, 0x0F, + 0xC0, 0x00, 0x18, 0x1F, 0x80, 0x00, 0x60, 0x3F, 0x00, 0x00, 0xC0, 0x7F, + 0x00, 0x03, 0x00, 0xFE, 0x00, 0x0F, 0xFF, 0xFC, 0x00, 0x1F, 0xFF, 0xF8, + 0x00, 0x60, 0x03, 0xF0, 0x00, 0xC0, 0x07, 0xE0, 0x03, 0x00, 0x0F, 0xE0, + 0x0E, 0x00, 0x1F, 0xC0, 0x18, 0x00, 0x3F, 0x80, 0x70, 0x00, 0x7F, 0x01, + 0xC0, 0x00, 0xFE, 0x03, 0x80, 0x01, 0xFE, 0x1F, 0x80, 0x07, 0xFE, 0x7F, + 0xC0, 0x3F, 0xFF, 0x01, 0xFF, 0xFF, 0x80, 0x00, 0xFF, 0xFF, 0xE0, 0x00, + 0xFE, 0x1F, 0xE0, 0x01, 0xFC, 0x1F, 0xE0, 0x03, 0xF8, 0x1F, 0xE0, 0x0F, + 0xE0, 0x3F, 0xC0, 0x1F, 0xC0, 0x7F, 0x80, 0x3F, 0x80, 0xFF, 0x00, 0x7F, + 0x01, 0xFE, 0x01, 0xFC, 0x03, 0xF8, 0x03, 0xF8, 0x0F, 0xF0, 0x07, 0xF0, + 0x1F, 0xC0, 0x0F, 0xC0, 0x7F, 0x00, 0x3F, 0x87, 0xF0, 0x00, 0x7F, 0xFF, + 0x00, 0x00, 0xFE, 0x1F, 0xC0, 0x03, 0xF8, 0x0F, 0xE0, 0x07, 0xF0, 0x0F, + 0xE0, 0x0F, 0xE0, 0x1F, 0xC0, 0x1F, 0xC0, 0x3F, 0xC0, 0x7F, 0x00, 0x7F, + 0x80, 0xFE, 0x00, 0xFF, 0x01, 0xFC, 0x01, 0xFE, 0x03, 0xF0, 0x07, 0xFC, + 0x0F, 0xE0, 0x0F, 0xF0, 0x1F, 0xC0, 0x3F, 0xE0, 0x3F, 0x80, 0x7F, 0x80, + 0xFE, 0x01, 0xFE, 0x01, 0xFE, 0x0F, 0xF8, 0x07, 0xFF, 0xFF, 0xC0, 0x3F, + 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x01, 0xFE, 0x08, 0x00, 0x7F, 0xFE, 0xC0, + 0x0F, 0xF0, 0x7E, 0x00, 0xFE, 0x01, 0xF0, 0x1F, 0xE0, 0x07, 0x01, 0xFE, + 0x00, 0x38, 0x1F, 0xE0, 0x00, 0xC0, 0xFE, 0x00, 0x06, 0x0F, 0xF0, 0x00, + 0x30, 0xFF, 0x00, 0x01, 0x07, 0xF8, 0x00, 0x08, 0x7F, 0x80, 0x00, 0x03, + 0xFC, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x0F, 0xF0, + 0x00, 0x00, 0xFF, 0x80, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, + 0x01, 0xFE, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x03, + 0xFC, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x03, 0xF8, + 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x60, 0x7F, 0x00, 0x06, 0x03, 0xFC, 0x00, + 0x70, 0x0F, 0xE0, 0x07, 0x00, 0x1F, 0xC0, 0xE0, 0x00, 0x7F, 0xFE, 0x00, + 0x00, 0x7F, 0x80, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x00, 0x3F, 0xFF, 0xFE, + 0x00, 0x00, 0xFE, 0x07, 0xF0, 0x00, 0x1F, 0xC0, 0x3F, 0x00, 0x03, 0xF8, + 0x07, 0xF0, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x1F, 0xC0, 0x07, 0xF0, 0x03, + 0xF8, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x1F, 0xC0, 0x1F, 0xC0, 0x03, 0xFC, + 0x03, 0xF8, 0x00, 0x7F, 0x80, 0x7F, 0x00, 0x0F, 0xF0, 0x0F, 0xC0, 0x01, + 0xFE, 0x03, 0xF8, 0x00, 0x3F, 0xC0, 0x7F, 0x00, 0x07, 0xF8, 0x0F, 0xE0, + 0x01, 0xFF, 0x03, 0xF8, 0x00, 0x3F, 0xE0, 0x7F, 0x00, 0x07, 0xF8, 0x0F, + 0xE0, 0x00, 0xFF, 0x01, 0xFC, 0x00, 0x3F, 0xE0, 0x7F, 0x00, 0x07, 0xF8, + 0x0F, 0xE0, 0x01, 0xFF, 0x01, 0xFC, 0x00, 0x3F, 0xC0, 0x3F, 0x00, 0x0F, + 0xF0, 0x0F, 0xE0, 0x01, 0xFC, 0x01, 0xFC, 0x00, 0x7F, 0x00, 0x3F, 0x80, + 0x1F, 0xC0, 0x0F, 0xE0, 0x0F, 0xF0, 0x01, 0xFE, 0x07, 0xF8, 0x00, 0x7F, + 0xFF, 0xFC, 0x00, 0x3F, 0xFF, 0xF8, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFF, + 0x00, 0x7F, 0xFF, 0xFF, 0x00, 0x3F, 0xC0, 0x7E, 0x00, 0x3F, 0x80, 0x1E, + 0x00, 0x3F, 0x80, 0x0E, 0x00, 0x7F, 0x00, 0x06, 0x00, 0x7F, 0x00, 0x04, + 0x00, 0x7F, 0x00, 0x04, 0x00, 0x7F, 0x00, 0x00, 0x00, 0xFE, 0x01, 0x80, + 0x00, 0xFE, 0x01, 0x00, 0x00, 0xFE, 0x03, 0x00, 0x00, 0xFC, 0x0F, 0x00, + 0x01, 0xFF, 0xFF, 0x00, 0x01, 0xFF, 0xFE, 0x00, 0x01, 0xFC, 0x3E, 0x00, + 0x03, 0xF8, 0x1E, 0x00, 0x03, 0xF8, 0x0C, 0x00, 0x03, 0xF8, 0x0C, 0x00, + 0x03, 0xF8, 0x0C, 0x00, 0x07, 0xF0, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x08, + 0x07, 0xF0, 0x00, 0x18, 0x07, 0xE0, 0x00, 0x30, 0x0F, 0xE0, 0x00, 0x30, + 0x0F, 0xE0, 0x00, 0x70, 0x0F, 0xE0, 0x01, 0xE0, 0x1F, 0xC0, 0x07, 0xE0, + 0x1F, 0xE0, 0x3F, 0xE0, 0x3F, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0xC0, + 0x01, 0xFF, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0xFC, 0x00, 0xFF, 0x03, 0xF0, + 0x01, 0xFC, 0x01, 0xE0, 0x03, 0xF8, 0x01, 0xC0, 0x0F, 0xE0, 0x01, 0x80, + 0x1F, 0xC0, 0x02, 0x00, 0x3F, 0x80, 0x04, 0x00, 0x7F, 0x00, 0x00, 0x01, + 0xFC, 0x03, 0x00, 0x03, 0xF8, 0x04, 0x00, 0x07, 0xF0, 0x18, 0x00, 0x0F, + 0xC0, 0xF0, 0x00, 0x3F, 0xFF, 0xE0, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0xFE, + 0x1F, 0x00, 0x03, 0xF8, 0x1E, 0x00, 0x07, 0xF0, 0x18, 0x00, 0x0F, 0xE0, + 0x30, 0x00, 0x1F, 0xC0, 0x60, 0x00, 0x7F, 0x00, 0x80, 0x00, 0xFE, 0x01, + 0x00, 0x01, 0xFC, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x0F, 0xE0, 0x00, + 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0xFF, 0x00, 0x00, + 0x01, 0xFE, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xFF, 0x02, 0x00, 0x0F, 0xFF, 0xEE, 0x00, 0x3F, 0xC0, + 0xFC, 0x00, 0x7F, 0x00, 0x7C, 0x01, 0xFE, 0x00, 0x3C, 0x03, 0xFC, 0x00, + 0x38, 0x07, 0xF8, 0x00, 0x18, 0x07, 0xF0, 0x00, 0x18, 0x0F, 0xF0, 0x00, + 0x10, 0x1F, 0xE0, 0x00, 0x10, 0x1F, 0xE0, 0x00, 0x00, 0x3F, 0xC0, 0x00, + 0x00, 0x3F, 0xC0, 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x00, 0x7F, 0x80, 0x00, + 0x00, 0x7F, 0x80, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0xFF, 0x80, 0x1F, + 0xFF, 0xFF, 0x00, 0x07, 0xFC, 0xFF, 0x00, 0x03, 0xF8, 0xFF, 0x00, 0x03, + 0xF8, 0xFF, 0x00, 0x03, 0xF0, 0xFF, 0x00, 0x03, 0xF0, 0xFF, 0x00, 0x07, + 0xF0, 0x7F, 0x00, 0x07, 0xF0, 0x7F, 0x00, 0x07, 0xE0, 0x7F, 0x80, 0x07, + 0xE0, 0x3F, 0x80, 0x0F, 0xE0, 0x1F, 0xC0, 0x0F, 0xC0, 0x0F, 0xE0, 0x0F, + 0xC0, 0x07, 0xF0, 0x3F, 0x80, 0x01, 0xFF, 0xFE, 0x00, 0x00, 0x3F, 0xE0, + 0x00, 0x01, 0xFF, 0xFC, 0x7F, 0xFE, 0x00, 0xFF, 0xC0, 0x3F, 0xF0, 0x00, + 0xFE, 0x00, 0x3F, 0xC0, 0x01, 0xFC, 0x00, 0x7F, 0x00, 0x03, 0xF8, 0x00, + 0xFE, 0x00, 0x0F, 0xE0, 0x01, 0xFC, 0x00, 0x1F, 0xC0, 0x07, 0xF0, 0x00, + 0x3F, 0x80, 0x0F, 0xE0, 0x00, 0x7F, 0x00, 0x1F, 0xC0, 0x01, 0xFC, 0x00, + 0x7F, 0x00, 0x03, 0xF8, 0x00, 0xFE, 0x00, 0x07, 0xF0, 0x01, 0xFC, 0x00, + 0x0F, 0xC0, 0x03, 0xF8, 0x00, 0x3F, 0x80, 0x0F, 0xE0, 0x00, 0x7F, 0xFF, + 0xFF, 0xC0, 0x00, 0xFF, 0xFF, 0xFF, 0x80, 0x03, 0xF8, 0x00, 0x7F, 0x00, + 0x07, 0xF0, 0x01, 0xFC, 0x00, 0x0F, 0xE0, 0x03, 0xF8, 0x00, 0x1F, 0xC0, + 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x1F, 0xC0, 0x00, 0xFE, 0x00, 0x3F, 0x80, + 0x01, 0xFC, 0x00, 0x7F, 0x00, 0x03, 0xF0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, + 0x03, 0xF8, 0x00, 0x1F, 0xC0, 0x07, 0xF0, 0x00, 0x3F, 0x80, 0x0F, 0xE0, + 0x00, 0xFF, 0x00, 0x3F, 0xC0, 0x01, 0xFE, 0x00, 0x7F, 0x80, 0x07, 0xFC, + 0x01, 0xFF, 0x00, 0x3F, 0xFF, 0x1F, 0xFF, 0xC0, 0x00, 0x01, 0xFF, 0xF8, + 0x03, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0x7F, 0x00, 0x03, 0xF8, 0x00, 0x3F, + 0x80, 0x01, 0xFC, 0x00, 0x0F, 0xE0, 0x00, 0x7E, 0x00, 0x07, 0xF0, 0x00, + 0x3F, 0x80, 0x01, 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0xFE, 0x00, 0x07, 0xF0, + 0x00, 0x3F, 0x80, 0x03, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0xFE, 0x00, 0x07, + 0xE0, 0x00, 0x7F, 0x00, 0x03, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0xFC, 0x00, + 0x0F, 0xE0, 0x00, 0x7F, 0x00, 0x03, 0xF8, 0x00, 0x3F, 0xC0, 0x01, 0xFC, + 0x00, 0x1F, 0xF0, 0x03, 0xFF, 0xF0, 0x00, 0x00, 0x07, 0xFF, 0xE0, 0x00, + 0x3F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x0F, 0xE0, + 0x00, 0x01, 0xFC, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x01, + 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x0F, 0xE0, 0x00, 0x01, 0xFC, 0x00, + 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, + 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, + 0x07, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, + 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x07, 0xF0, 0x00, 0x00, + 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x07, 0x03, 0xF0, 0x01, 0xF0, 0xFE, 0x00, + 0x3E, 0x1F, 0xC0, 0x07, 0xC3, 0xF0, 0x00, 0xF8, 0xFC, 0x00, 0x0F, 0x3F, + 0x80, 0x00, 0xFF, 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x01, 0xFF, 0xF8, + 0xFF, 0xC0, 0x1F, 0xF8, 0x0F, 0xC0, 0x03, 0xF8, 0x01, 0xC0, 0x00, 0xFE, + 0x00, 0xE0, 0x00, 0x3F, 0x80, 0x70, 0x00, 0x1F, 0xC0, 0x38, 0x00, 0x07, + 0xF0, 0x1C, 0x00, 0x01, 0xFC, 0x0E, 0x00, 0x00, 0x7F, 0x07, 0x00, 0x00, + 0x3F, 0x83, 0x80, 0x00, 0x0F, 0xE1, 0xC0, 0x00, 0x03, 0xF8, 0xE0, 0x00, + 0x00, 0xFC, 0x60, 0x00, 0x00, 0x7F, 0x7C, 0x00, 0x00, 0x1F, 0xFF, 0x00, + 0x00, 0x07, 0xFF, 0xE0, 0x00, 0x03, 0xFB, 0xF8, 0x00, 0x00, 0xFE, 0x7F, + 0x00, 0x00, 0x3F, 0x9F, 0xC0, 0x00, 0x0F, 0xE3, 0xF8, 0x00, 0x07, 0xF0, + 0xFE, 0x00, 0x01, 0xFC, 0x1F, 0xC0, 0x00, 0x7F, 0x07, 0xF0, 0x00, 0x1F, + 0x80, 0xFE, 0x00, 0x0F, 0xE0, 0x3F, 0x80, 0x03, 0xF8, 0x0F, 0xE0, 0x00, + 0xFE, 0x01, 0xFC, 0x00, 0x7F, 0x00, 0x7F, 0x00, 0x1F, 0xE0, 0x0F, 0xE0, + 0x0F, 0xF8, 0x07, 0xFC, 0x0F, 0xFF, 0xC7, 0xFF, 0xC0, 0x01, 0xFF, 0xF8, + 0x00, 0x03, 0xFF, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x7F, 0x00, 0x00, + 0x03, 0xF8, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x0F, + 0xE0, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x3F, 0x80, + 0x00, 0x01, 0xFC, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0xFE, 0x00, 0x00, + 0x07, 0xF0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x1F, + 0xC0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x7F, 0x00, + 0x00, 0x03, 0xF8, 0x00, 0x04, 0x1F, 0xC0, 0x00, 0x60, 0xFC, 0x00, 0x06, + 0x0F, 0xE0, 0x00, 0x30, 0x7F, 0x00, 0x03, 0x83, 0xF8, 0x00, 0x7C, 0x3F, + 0x80, 0x0F, 0xC1, 0xFE, 0x03, 0xFE, 0x1F, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, + 0xFF, 0x00, 0x01, 0xFF, 0xC0, 0x00, 0x3F, 0xF0, 0x03, 0xFC, 0x00, 0x03, + 0xFC, 0x00, 0x3F, 0xC0, 0x00, 0x7F, 0x80, 0x03, 0xFC, 0x00, 0x0F, 0xF8, + 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0x80, 0x03, 0xFC, 0x00, 0x1F, 0xF0, 0x00, + 0x6F, 0xC0, 0x03, 0xFF, 0x00, 0x06, 0xFC, 0x00, 0x37, 0xF0, 0x00, 0x6F, + 0xE0, 0x06, 0x7E, 0x00, 0x04, 0xFE, 0x00, 0xEF, 0xE0, 0x00, 0xCF, 0xE0, + 0x0C, 0xFE, 0x00, 0x0C, 0xFE, 0x01, 0x8F, 0xE0, 0x00, 0xCF, 0xE0, 0x38, + 0xFC, 0x00, 0x18, 0x7E, 0x03, 0x1F, 0xC0, 0x01, 0x87, 0xE0, 0x61, 0xFC, + 0x00, 0x18, 0x7E, 0x0E, 0x1F, 0xC0, 0x01, 0x87, 0xE0, 0xC3, 0xF8, 0x00, + 0x30, 0x7F, 0x18, 0x3F, 0x80, 0x03, 0x07, 0xF3, 0x83, 0xF8, 0x00, 0x30, + 0x7F, 0x30, 0x3F, 0x00, 0x06, 0x07, 0xF7, 0x07, 0xF0, 0x00, 0x60, 0x3F, + 0xE0, 0x7F, 0x00, 0x06, 0x03, 0xFC, 0x07, 0xF0, 0x00, 0xE0, 0x3F, 0xC0, + 0x7E, 0x00, 0x0C, 0x03, 0xF8, 0x0F, 0xE0, 0x00, 0xC0, 0x3F, 0x00, 0xFE, + 0x00, 0x0C, 0x03, 0xF0, 0x0F, 0xE0, 0x01, 0xC0, 0x3E, 0x01, 0xFC, 0x00, + 0x1C, 0x03, 0xC0, 0x1F, 0xC0, 0x07, 0xE0, 0x3C, 0x03, 0xFE, 0x00, 0xFF, + 0xC1, 0x81, 0xFF, 0xFC, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x03, 0xFF, + 0x00, 0x1F, 0xF8, 0x03, 0xF8, 0x00, 0x3F, 0x00, 0x0F, 0xE0, 0x00, 0xF0, + 0x00, 0x7F, 0x00, 0x07, 0x00, 0x03, 0xFC, 0x00, 0x38, 0x00, 0x1F, 0xE0, + 0x01, 0x80, 0x01, 0xBF, 0x80, 0x0C, 0x00, 0x0D, 0xFC, 0x00, 0x60, 0x00, + 0x67, 0xF0, 0x07, 0x00, 0x02, 0x3F, 0x80, 0x30, 0x00, 0x30, 0xFE, 0x01, + 0x80, 0x01, 0x87, 0xF0, 0x0C, 0x00, 0x0C, 0x1F, 0xC0, 0xC0, 0x00, 0xC0, + 0xFE, 0x06, 0x00, 0x06, 0x07, 0xF8, 0x30, 0x00, 0x30, 0x1F, 0xC1, 0x80, + 0x01, 0x80, 0xFF, 0x18, 0x00, 0x18, 0x03, 0xF8, 0xC0, 0x00, 0xC0, 0x1F, + 0xC6, 0x00, 0x06, 0x00, 0x7F, 0x60, 0x00, 0x60, 0x03, 0xFB, 0x00, 0x03, + 0x00, 0x0F, 0xF8, 0x00, 0x18, 0x00, 0x7F, 0xC0, 0x01, 0xC0, 0x01, 0xFC, + 0x00, 0x0C, 0x00, 0x0F, 0xE0, 0x00, 0x60, 0x00, 0x3F, 0x00, 0x03, 0x00, + 0x01, 0xF0, 0x00, 0x38, 0x00, 0x07, 0x80, 0x01, 0xC0, 0x00, 0x3C, 0x00, + 0x3F, 0x00, 0x01, 0xE0, 0x03, 0xFF, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0x7E, + 0x1F, 0x80, 0x01, 0xF0, 0x0F, 0x80, 0x0F, 0xC0, 0x1F, 0x80, 0x3F, 0x00, + 0x1F, 0x80, 0xFE, 0x00, 0x3F, 0x03, 0xF8, 0x00, 0x7E, 0x07, 0xF0, 0x00, + 0xFE, 0x1F, 0xC0, 0x01, 0xFC, 0x7F, 0x80, 0x03, 0xF8, 0xFE, 0x00, 0x07, + 0xF3, 0xFC, 0x00, 0x1F, 0xE7, 0xF0, 0x00, 0x3F, 0xDF, 0xE0, 0x00, 0x7F, + 0xBF, 0xC0, 0x00, 0xFE, 0x7F, 0x80, 0x03, 0xFC, 0xFE, 0x00, 0x07, 0xFB, + 0xFC, 0x00, 0x0F, 0xF7, 0xF8, 0x00, 0x3F, 0xCF, 0xF0, 0x00, 0x7F, 0x9F, + 0xC0, 0x00, 0xFE, 0x3F, 0x80, 0x03, 0xFC, 0x7F, 0x00, 0x07, 0xF0, 0xFE, + 0x00, 0x1F, 0xC0, 0xFC, 0x00, 0x3F, 0x81, 0xF8, 0x00, 0xFE, 0x03, 0xF0, + 0x03, 0xF8, 0x03, 0xF0, 0x07, 0xE0, 0x03, 0xE0, 0x1F, 0x00, 0x03, 0xE0, + 0xFC, 0x00, 0x03, 0xFF, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x01, 0xFF, + 0xFF, 0x80, 0x00, 0xFF, 0xFF, 0xE0, 0x00, 0xFE, 0x1F, 0xE0, 0x01, 0xFC, + 0x1F, 0xE0, 0x03, 0xF0, 0x1F, 0xC0, 0x0F, 0xE0, 0x3F, 0xC0, 0x1F, 0xC0, + 0x7F, 0x80, 0x3F, 0x80, 0xFF, 0x00, 0x7E, 0x01, 0xFE, 0x01, 0xFC, 0x03, + 0xFC, 0x03, 0xF8, 0x0F, 0xF8, 0x07, 0xF0, 0x1F, 0xE0, 0x0F, 0xC0, 0x7F, + 0x80, 0x3F, 0x81, 0xFE, 0x00, 0x7F, 0x07, 0xF8, 0x00, 0xFF, 0xFF, 0xC0, + 0x03, 0xFF, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, + 0x1F, 0x80, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x01, + 0xFC, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x1F, + 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x01, 0xFC, + 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x7E, 0x1F, 0x80, 0x01, + 0xF0, 0x0F, 0x80, 0x0F, 0xC0, 0x1F, 0x80, 0x3F, 0x80, 0x1F, 0x80, 0xFE, + 0x00, 0x3F, 0x03, 0xF8, 0x00, 0x7E, 0x07, 0xF0, 0x00, 0xFE, 0x1F, 0xC0, + 0x01, 0xFC, 0x7F, 0x80, 0x03, 0xF8, 0xFE, 0x00, 0x07, 0xF3, 0xFC, 0x00, + 0x1F, 0xE7, 0xF8, 0x00, 0x3F, 0xDF, 0xE0, 0x00, 0x7F, 0xBF, 0xC0, 0x00, + 0xFF, 0x7F, 0x80, 0x01, 0xFC, 0xFE, 0x00, 0x07, 0xFB, 0xFC, 0x00, 0x0F, + 0xF7, 0xF8, 0x00, 0x1F, 0xCF, 0xF0, 0x00, 0x7F, 0x9F, 0xC0, 0x00, 0xFE, + 0x3F, 0x80, 0x01, 0xFC, 0x7F, 0x00, 0x07, 0xF0, 0xFE, 0x00, 0x0F, 0xE1, + 0xFC, 0x00, 0x3F, 0x81, 0xF8, 0x00, 0x7E, 0x03, 0xF0, 0x01, 0xF8, 0x03, + 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x1F, 0x80, 0x03, 0xE0, 0x7E, 0x00, 0x03, + 0xF3, 0xF0, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x06, + 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0xC0, 0x7F, 0xE0, 0x03, 0x03, 0xFF, + 0xF8, 0x1C, 0x0F, 0xFF, 0xFF, 0xF0, 0x3F, 0xFF, 0xFF, 0xC0, 0xE0, 0x3F, + 0xFF, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x01, 0xFF, 0xFF, 0xC0, 0x00, 0x7F, + 0xFF, 0xF8, 0x00, 0x3F, 0xC3, 0xFC, 0x00, 0x3F, 0x81, 0xFE, 0x00, 0x3F, + 0x80, 0xFF, 0x00, 0x7F, 0x80, 0xFF, 0x00, 0x7F, 0x00, 0xFF, 0x00, 0x7F, + 0x00, 0xFF, 0x00, 0x7F, 0x00, 0xFF, 0x00, 0xFF, 0x01, 0xFE, 0x00, 0xFE, + 0x01, 0xFE, 0x00, 0xFE, 0x03, 0xFC, 0x00, 0xFE, 0x07, 0xF8, 0x01, 0xFC, + 0x1F, 0xF0, 0x01, 0xFF, 0xFF, 0xC0, 0x01, 0xFF, 0xFE, 0x00, 0x03, 0xFD, + 0xFE, 0x00, 0x03, 0xF8, 0xFF, 0x00, 0x03, 0xF8, 0xFF, 0x00, 0x03, 0xF8, + 0xFF, 0x00, 0x07, 0xF8, 0x7F, 0x80, 0x07, 0xF0, 0x7F, 0x80, 0x07, 0xF0, + 0x3F, 0x80, 0x07, 0xF0, 0x3F, 0xC0, 0x0F, 0xE0, 0x3F, 0xC0, 0x0F, 0xE0, + 0x1F, 0xC0, 0x0F, 0xE0, 0x1F, 0xE0, 0x1F, 0xE0, 0x1F, 0xE0, 0x1F, 0xE0, + 0x0F, 0xF0, 0x3F, 0xF0, 0x0F, 0xF8, 0xFF, 0xFC, 0x0F, 0xFE, 0x00, 0x1F, + 0x83, 0x00, 0x7F, 0xF7, 0x00, 0xF8, 0x7E, 0x01, 0xE0, 0x1E, 0x03, 0xC0, + 0x0E, 0x03, 0xC0, 0x0E, 0x07, 0xC0, 0x0E, 0x07, 0xC0, 0x04, 0x07, 0xC0, + 0x04, 0x07, 0xE0, 0x04, 0x07, 0xF0, 0x00, 0x07, 0xF8, 0x00, 0x03, 0xFC, + 0x00, 0x03, 0xFF, 0x00, 0x01, 0xFF, 0x80, 0x00, 0xFF, 0xC0, 0x00, 0x7F, + 0xE0, 0x00, 0x3F, 0xE0, 0x00, 0x1F, 0xF0, 0x00, 0x0F, 0xF0, 0x00, 0x07, + 0xF8, 0x00, 0x03, 0xF8, 0x00, 0x01, 0xF8, 0x20, 0x00, 0xF8, 0x20, 0x00, + 0xF8, 0x20, 0x00, 0xF8, 0x70, 0x00, 0xF8, 0x70, 0x00, 0xF0, 0x78, 0x01, + 0xF0, 0x78, 0x03, 0xE0, 0x7E, 0x07, 0xC0, 0x47, 0xFF, 0x80, 0xC0, 0xFC, + 0x00, 0x3F, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xFC, 0xFE, 0x3F, 0x8F, 0x9E, + 0x07, 0xF0, 0xF3, 0x81, 0xFC, 0x0E, 0x60, 0x3F, 0x81, 0x98, 0x07, 0xF0, + 0x13, 0x00, 0xFC, 0x02, 0x00, 0x3F, 0x80, 0x40, 0x07, 0xF0, 0x00, 0x00, + 0xFE, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, 0xFE, 0x00, + 0x00, 0x1F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, + 0xC0, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, + 0x03, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xF8, + 0x00, 0x00, 0x7E, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xF8, 0x00, 0x00, + 0xFF, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x3F, 0xFF, 0xC0, 0x00, 0x7F, 0xFF, + 0x03, 0xFF, 0x0F, 0xFC, 0x00, 0xFC, 0x07, 0xF0, 0x00, 0x38, 0x07, 0xF0, + 0x00, 0x38, 0x07, 0xF0, 0x00, 0x30, 0x0F, 0xE0, 0x00, 0x30, 0x0F, 0xE0, + 0x00, 0x70, 0x0F, 0xE0, 0x00, 0x60, 0x0F, 0xE0, 0x00, 0x60, 0x1F, 0xC0, + 0x00, 0xE0, 0x1F, 0xC0, 0x00, 0xC0, 0x1F, 0xC0, 0x00, 0xC0, 0x3F, 0x80, + 0x00, 0xC0, 0x3F, 0x80, 0x01, 0x80, 0x3F, 0x80, 0x01, 0x80, 0x3F, 0x80, + 0x01, 0x80, 0x7F, 0x00, 0x01, 0x80, 0x7F, 0x00, 0x03, 0x00, 0x7F, 0x00, + 0x03, 0x00, 0x7E, 0x00, 0x03, 0x00, 0xFE, 0x00, 0x06, 0x00, 0xFE, 0x00, + 0x06, 0x00, 0xFC, 0x00, 0x06, 0x00, 0xFC, 0x00, 0x0E, 0x00, 0xFC, 0x00, + 0x0C, 0x00, 0xFC, 0x00, 0x1C, 0x00, 0xFC, 0x00, 0x18, 0x00, 0x7E, 0x00, + 0x38, 0x00, 0x7E, 0x00, 0x70, 0x00, 0x3F, 0x81, 0xE0, 0x00, 0x0F, 0xFF, + 0x80, 0x00, 0x03, 0xFE, 0x00, 0x00, 0xFF, 0xFC, 0x03, 0xFE, 0x7F, 0xE0, + 0x01, 0xF8, 0x7F, 0x80, 0x01, 0xC0, 0xFF, 0x00, 0x03, 0x80, 0xFE, 0x00, + 0x0E, 0x01, 0xFC, 0x00, 0x18, 0x03, 0xF8, 0x00, 0x70, 0x07, 0xF0, 0x00, + 0xC0, 0x0F, 0xF0, 0x03, 0x80, 0x1F, 0xE0, 0x0E, 0x00, 0x1F, 0xC0, 0x18, + 0x00, 0x3F, 0x80, 0x70, 0x00, 0x7F, 0x00, 0xC0, 0x00, 0xFE, 0x03, 0x00, + 0x01, 0xFC, 0x0E, 0x00, 0x03, 0xF8, 0x18, 0x00, 0x07, 0xF8, 0x60, 0x00, + 0x07, 0xF1, 0xC0, 0x00, 0x0F, 0xE3, 0x00, 0x00, 0x1F, 0xCC, 0x00, 0x00, + 0x3F, 0xB8, 0x00, 0x00, 0x7F, 0x60, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x00, + 0xFF, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x07, + 0xE0, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0xFF, 0xF8, + 0xFF, 0xF0, 0xFF, 0x9F, 0xF8, 0x1F, 0xE0, 0x0F, 0x87, 0xF8, 0x07, 0xE0, + 0x07, 0x03, 0xF8, 0x03, 0xF0, 0x03, 0x80, 0xFE, 0x01, 0xF8, 0x01, 0x80, + 0x7F, 0x00, 0xFC, 0x00, 0xC0, 0x3F, 0x80, 0x7F, 0x00, 0xC0, 0x1F, 0xC0, + 0x7F, 0x80, 0x60, 0x0F, 0xE0, 0x3F, 0xC0, 0x60, 0x07, 0xF0, 0x37, 0xE0, + 0x30, 0x03, 0xF8, 0x1B, 0xF0, 0x30, 0x00, 0xFC, 0x19, 0xF8, 0x18, 0x00, + 0x7E, 0x0C, 0xFE, 0x18, 0x00, 0x3F, 0x84, 0x7F, 0x0C, 0x00, 0x1F, 0xC6, + 0x3F, 0x8C, 0x00, 0x0F, 0xE2, 0x1F, 0xC6, 0x00, 0x07, 0xF3, 0x07, 0xE6, + 0x00, 0x03, 0xF9, 0x83, 0xF3, 0x00, 0x01, 0xFD, 0x81, 0xFB, 0x00, 0x00, + 0x7E, 0xC0, 0xFD, 0x80, 0x00, 0x3F, 0xC0, 0x7F, 0x80, 0x00, 0x1F, 0xE0, + 0x3F, 0xC0, 0x00, 0x0F, 0xE0, 0x1F, 0xC0, 0x00, 0x07, 0xF0, 0x0F, 0xE0, + 0x00, 0x03, 0xF0, 0x07, 0xE0, 0x00, 0x01, 0xF8, 0x01, 0xF0, 0x00, 0x00, + 0x78, 0x00, 0xF0, 0x00, 0x00, 0x3C, 0x00, 0x78, 0x00, 0x00, 0x1C, 0x00, + 0x38, 0x00, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x00, 0x06, 0x00, 0x0C, 0x00, + 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x03, 0xFF, 0xF0, 0xFF, 0xC0, 0x3F, + 0xE0, 0x0F, 0xC0, 0x03, 0xF8, 0x01, 0xE0, 0x00, 0xFE, 0x00, 0xE0, 0x00, + 0x3F, 0x80, 0x70, 0x00, 0x07, 0xE0, 0x18, 0x00, 0x01, 0xFC, 0x0C, 0x00, + 0x00, 0x7F, 0x06, 0x00, 0x00, 0x0F, 0xC3, 0x00, 0x00, 0x03, 0xF9, 0x80, + 0x00, 0x00, 0xFE, 0xC0, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x07, 0xF8, + 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x0F, + 0xC0, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, + 0xFF, 0x80, 0x00, 0x00, 0x77, 0xF0, 0x00, 0x00, 0x39, 0xFC, 0x00, 0x00, + 0x1C, 0x3F, 0x00, 0x00, 0x06, 0x0F, 0xE0, 0x00, 0x03, 0x03, 0xF8, 0x00, + 0x01, 0x80, 0x7E, 0x00, 0x00, 0xE0, 0x1F, 0xC0, 0x00, 0x70, 0x07, 0xF0, + 0x00, 0x38, 0x01, 0xFC, 0x00, 0x1E, 0x00, 0x7F, 0x80, 0x1F, 0xC0, 0x1F, + 0xF0, 0x0F, 0xFC, 0x3F, 0xFF, 0x80, 0xFF, 0xF8, 0x3F, 0xF3, 0xFC, 0x00, + 0xFC, 0x1F, 0xC0, 0x07, 0x81, 0xFC, 0x00, 0x70, 0x0F, 0xC0, 0x0E, 0x00, + 0xFE, 0x00, 0xC0, 0x0F, 0xE0, 0x1C, 0x00, 0x7E, 0x03, 0x80, 0x07, 0xF0, + 0x30, 0x00, 0x7F, 0x06, 0x00, 0x03, 0xF0, 0xE0, 0x00, 0x3F, 0x8C, 0x00, + 0x03, 0xF9, 0x80, 0x00, 0x1F, 0xB0, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x1F, + 0xE0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x01, 0xFC, 0x00, + 0x00, 0x1F, 0x80, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, + 0xF8, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x7F, 0x00, + 0x00, 0x07, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x01, + 0xFF, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xF0, 0x3F, + 0xFF, 0xFF, 0x03, 0xF8, 0x0F, 0xF0, 0x7C, 0x01, 0xFE, 0x07, 0x80, 0x3F, + 0xC0, 0x70, 0x03, 0xF8, 0x06, 0x00, 0x7F, 0x80, 0xC0, 0x0F, 0xF0, 0x08, + 0x01, 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x7F, + 0x80, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, + 0x03, 0xFC, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x07, 0xF8, 0x00, 0x00, 0xFF, + 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, + 0x07, 0xF8, 0x00, 0xC0, 0xFF, 0x00, 0x0C, 0x1F, 0xE0, 0x01, 0x81, 0xFE, + 0x00, 0x38, 0x3F, 0xC0, 0x07, 0x87, 0xF8, 0x01, 0xF0, 0xFF, 0x00, 0xFF, + 0x0F, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x7F, 0xE0, 0x0F, + 0xFC, 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, + 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF0, + 0x00, 0x1E, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x1E, 0x00, 0x03, 0xC0, + 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x1F, 0x00, + 0x03, 0xE0, 0x00, 0x78, 0x00, 0x0F, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, + 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xE0, 0x00, + 0x3C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xFE, 0x01, + 0xFF, 0xC0, 0x00, 0xF0, 0x07, 0x80, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x1C, + 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, + 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x07, 0x00, 0x3C, 0x01, 0xE0, 0x0F, 0x00, + 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x01, + 0xC0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x0F, 0x00, 0x78, 0x00, 0x7F, 0xE0, + 0x0F, 0xFC, 0x00, 0x0F, 0x80, 0x01, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, + 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, + 0x07, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF0, 0x00, + 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x1E, 0x00, 0x07, 0xC0, 0x00, + 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xC0, 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, + 0xE0, 0x00, 0x78, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x0F, + 0x00, 0x01, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xE0, 0x07, 0xFC, + 0x01, 0xFF, 0x80, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x7F, 0x00, + 0x03, 0xF8, 0x00, 0x3F, 0xC0, 0x01, 0xEF, 0x00, 0x1E, 0x78, 0x00, 0xF1, + 0xE0, 0x0F, 0x0F, 0x00, 0x78, 0x3C, 0x07, 0xC1, 0xE0, 0x3C, 0x07, 0x83, + 0xE0, 0x3C, 0x1E, 0x00, 0xF1, 0xF0, 0x07, 0x8F, 0x00, 0x1E, 0xF8, 0x00, + 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x70, 0x3E, + 0x0F, 0x83, 0xF0, 0x3E, 0x07, 0x80, 0xF0, 0x0E, 0x01, 0xC0, 0x00, 0x3C, + 0x0C, 0x03, 0xF9, 0xF0, 0x1F, 0x3F, 0x80, 0xF8, 0x7E, 0x07, 0xC1, 0xF8, + 0x3F, 0x07, 0xC0, 0xF8, 0x1F, 0x07, 0xE0, 0x7C, 0x3F, 0x01, 0xF0, 0xFC, + 0x0F, 0x87, 0xE0, 0x3E, 0x1F, 0x80, 0xF8, 0x7E, 0x03, 0xC3, 0xF8, 0x1F, + 0x0F, 0xC0, 0x7C, 0x3F, 0x03, 0xF0, 0xFC, 0x0F, 0x83, 0xF0, 0x7E, 0x3F, + 0xC2, 0xF8, 0xBF, 0x9B, 0xE4, 0x7F, 0xCF, 0xE0, 0xFE, 0x3F, 0x01, 0xE0, + 0x78, 0x00, 0x00, 0x7C, 0x00, 0x3F, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0x7E, + 0x00, 0x01, 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x1F, 0x00, 0x00, 0x7C, 0x00, + 0x03, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x3E, 0x3E, 0x01, 0xF9, 0xFC, 0x07, + 0xEF, 0xF8, 0x1F, 0x47, 0xF0, 0x7E, 0x0F, 0xC3, 0xF8, 0x3F, 0x0F, 0xC0, + 0xFC, 0x3F, 0x03, 0xF1, 0xF8, 0x0F, 0xC7, 0xE0, 0x3F, 0x1F, 0x01, 0xF8, + 0x7C, 0x07, 0xE3, 0xF0, 0x1F, 0x8F, 0xC0, 0xFC, 0x3E, 0x03, 0xF1, 0xF8, + 0x0F, 0x87, 0xE0, 0x7C, 0x1F, 0x03, 0xE0, 0xFC, 0x0F, 0x03, 0xF0, 0x78, + 0x0F, 0xC7, 0xC0, 0x1F, 0xFE, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x3F, 0x00, + 0x3F, 0xE0, 0x1E, 0x3C, 0x0F, 0x0F, 0x07, 0x87, 0xC3, 0xE1, 0xF1, 0xF0, + 0x38, 0xFC, 0x00, 0x3E, 0x00, 0x1F, 0x80, 0x07, 0xE0, 0x01, 0xF8, 0x00, + 0xFC, 0x00, 0x3F, 0x00, 0x0F, 0xC0, 0x03, 0xF0, 0x00, 0xFC, 0x03, 0x3F, + 0x00, 0xCF, 0xE0, 0x61, 0xFC, 0x70, 0x3F, 0xF8, 0x07, 0xFC, 0x00, 0xFC, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xC0, 0x00, 0x7F, 0xE0, 0x00, + 0x07, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x01, 0xF8, 0x00, 0x00, 0xFC, 0x00, + 0x00, 0x7C, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x1F, 0x80, + 0x07, 0x9F, 0x80, 0x0F, 0xFF, 0xC0, 0x0F, 0x9F, 0xE0, 0x0F, 0x87, 0xF0, + 0x0F, 0x83, 0xF0, 0x0F, 0xC1, 0xF8, 0x07, 0xC0, 0xFC, 0x07, 0xE0, 0x7C, + 0x07, 0xE0, 0x7E, 0x03, 0xF0, 0x3F, 0x03, 0xF0, 0x1F, 0x81, 0xF8, 0x0F, + 0x80, 0xFC, 0x0F, 0xC0, 0xFE, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x3F, 0x03, + 0xF0, 0x1F, 0x83, 0xF8, 0x0F, 0xC1, 0xF8, 0xC7, 0xE1, 0xFC, 0xC3, 0xF9, + 0xBE, 0xC0, 0xFF, 0x9F, 0xC0, 0x7F, 0x8F, 0xC0, 0x0F, 0x83, 0xC0, 0x00, + 0x00, 0x3F, 0x00, 0x3F, 0xE0, 0x1E, 0x3C, 0x0F, 0x0F, 0x07, 0x83, 0xC3, + 0xE0, 0xF1, 0xF0, 0x3C, 0xFC, 0x1E, 0x3F, 0x0F, 0x9F, 0x83, 0xC7, 0xE3, + 0xE1, 0xFB, 0xE0, 0xFF, 0xE0, 0x3F, 0xC0, 0x0F, 0xC0, 0x03, 0xF0, 0x00, + 0xFC, 0x03, 0x3F, 0x01, 0x8F, 0xC0, 0xC1, 0xF8, 0x70, 0x7F, 0xF8, 0x07, + 0xFC, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x03, 0xCE, 0x00, + 0x00, 0x78, 0xF0, 0x00, 0x0F, 0x8F, 0x00, 0x00, 0xF0, 0xF0, 0x00, 0x1F, + 0x06, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x03, 0xE0, 0x00, + 0x00, 0x3E, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x03, 0xFF, 0xC0, 0x00, 0x3F, + 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0xF8, 0x00, + 0x00, 0x0F, 0x80, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x01, + 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x3F, 0x00, + 0x00, 0x03, 0xF0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, + 0x7E, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x07, 0xC0, + 0x00, 0x00, 0xFC, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, + 0x0F, 0x80, 0x00, 0x01, 0xF0, 0x00, 0x06, 0x1F, 0x00, 0x00, 0xF1, 0xE0, + 0x00, 0x0F, 0x3E, 0x00, 0x00, 0xF3, 0xC0, 0x00, 0x07, 0xF8, 0x00, 0x00, + 0x3E, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x7F, 0xF0, 0x00, 0x7E, + 0x3F, 0xE0, 0x7C, 0x0F, 0xF0, 0x7E, 0x07, 0xC0, 0x7E, 0x03, 0xE0, 0x3F, + 0x01, 0xF0, 0x1F, 0x01, 0xF8, 0x0F, 0x80, 0xFC, 0x07, 0xC0, 0xFC, 0x01, + 0xE0, 0xFC, 0x00, 0x78, 0xFC, 0x00, 0x1F, 0xFC, 0x00, 0x0F, 0xF0, 0x00, + 0x1C, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x0F, 0xF8, 0x00, + 0x07, 0xFF, 0x80, 0x01, 0xFF, 0xF8, 0x00, 0x7F, 0xFE, 0x00, 0x77, 0xFF, + 0x80, 0xF0, 0x7F, 0xC0, 0xF0, 0x07, 0xE0, 0xF0, 0x01, 0xF0, 0x78, 0x00, + 0xF8, 0x3C, 0x00, 0x78, 0x1F, 0x00, 0x7C, 0x07, 0xC0, 0x78, 0x01, 0xFF, + 0xF8, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x1F, + 0xF0, 0x00, 0x07, 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x7E, + 0x00, 0x00, 0xFC, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0xC0, + 0x00, 0x1F, 0x87, 0xC0, 0x3E, 0x1F, 0xC0, 0xFC, 0x7F, 0x81, 0xF9, 0x9F, + 0x03, 0xE6, 0x3E, 0x07, 0xD8, 0x7C, 0x1F, 0xA0, 0xF8, 0x3F, 0x83, 0xF0, + 0x7F, 0x07, 0xE0, 0xFC, 0x0F, 0xC3, 0xF8, 0x3F, 0x07, 0xE0, 0x7E, 0x0F, + 0xC0, 0xFC, 0x3F, 0x03, 0xF0, 0x7E, 0x07, 0xE0, 0xFC, 0x0F, 0xC1, 0xF0, + 0x3F, 0x17, 0xE0, 0x7E, 0x6F, 0xC0, 0xF9, 0x9F, 0x01, 0xF6, 0x3E, 0x03, + 0xF8, 0xFC, 0x07, 0xF1, 0xC0, 0x07, 0x80, 0x01, 0xE0, 0x3F, 0x03, 0xF0, + 0x3F, 0x03, 0xF0, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC7, + 0xFC, 0x1F, 0xC0, 0xF8, 0x0F, 0x81, 0xF8, 0x1F, 0x81, 0xF0, 0x1F, 0x03, + 0xF0, 0x3E, 0x03, 0xE0, 0x3E, 0x07, 0xE0, 0x7C, 0x07, 0xC0, 0xFC, 0x2F, + 0x84, 0xF8, 0xCF, 0x98, 0xFF, 0x0F, 0xE0, 0x78, 0x00, 0x00, 0x00, 0x78, + 0x00, 0x03, 0xF0, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0xFC, 0x00, + 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0xFC, 0x00, 0x1F, 0xF0, 0x00, 0x1F, 0xC0, + 0x00, 0x3E, 0x00, 0x01, 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x1F, 0x80, 0x00, + 0x7C, 0x00, 0x03, 0xF0, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0xF8, + 0x00, 0x07, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0x7E, 0x00, 0x01, 0xF0, 0x00, + 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xE0, 0x00, 0x1F, + 0x80, 0x00, 0x7E, 0x00, 0x01, 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x3F, 0x00, + 0x60, 0xF8, 0x03, 0xC3, 0xC0, 0x0F, 0x1F, 0x00, 0x3C, 0xF8, 0x00, 0x7F, + 0xC0, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0xFC, 0x00, 0x07, + 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x01, + 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x01, 0xF0, 0x00, 0x03, + 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xE3, 0xFF, 0x03, 0xE0, 0xFC, 0x07, + 0xE0, 0xF0, 0x07, 0xE0, 0xE0, 0x07, 0xC1, 0xC0, 0x0F, 0xC3, 0x80, 0x0F, + 0xC7, 0x00, 0x0F, 0x8E, 0x00, 0x0F, 0xBE, 0x00, 0x1F, 0xFE, 0x00, 0x1F, + 0xFE, 0x00, 0x1F, 0xFE, 0x00, 0x1F, 0x3E, 0x00, 0x3F, 0x3F, 0x00, 0x3F, + 0x1F, 0x00, 0x3E, 0x1F, 0x00, 0x7E, 0x1F, 0x04, 0x7E, 0x1F, 0x8C, 0x7E, + 0x0F, 0x98, 0x7C, 0x0F, 0xF0, 0xFC, 0x07, 0xE0, 0xE0, 0x03, 0xC0, 0x00, + 0x08, 0x0F, 0xC7, 0xFE, 0x07, 0xF0, 0x3F, 0x01, 0xF8, 0x0F, 0xC0, 0x7C, + 0x07, 0xE0, 0x3F, 0x01, 0xF8, 0x0F, 0x80, 0x7C, 0x07, 0xE0, 0x3E, 0x01, + 0xF0, 0x1F, 0x80, 0xFC, 0x07, 0xC0, 0x3E, 0x03, 0xF0, 0x1F, 0x80, 0xF8, + 0x0F, 0xC0, 0x7E, 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x8F, 0x8C, 0x7C, 0x43, + 0xE4, 0x1F, 0xE0, 0xFE, 0x03, 0xC0, 0x00, 0x00, 0x70, 0x78, 0x0F, 0x83, + 0xFE, 0x3F, 0x87, 0xF8, 0x1F, 0xCF, 0xF1, 0xFF, 0x03, 0xF1, 0x3E, 0x73, + 0xE0, 0x7E, 0x47, 0xD8, 0x7C, 0x0F, 0xD0, 0xFB, 0x1F, 0x81, 0xF4, 0x3E, + 0xC3, 0xF0, 0x3E, 0x87, 0xF0, 0x7C, 0x0F, 0xE0, 0xFE, 0x1F, 0x81, 0xF4, + 0x1F, 0x83, 0xF0, 0x3F, 0x07, 0xE0, 0x7C, 0x07, 0xE0, 0xFC, 0x1F, 0x81, + 0xF8, 0x1F, 0x83, 0xF0, 0x3F, 0x07, 0xE0, 0x7C, 0x07, 0xE0, 0xFC, 0x0F, + 0x80, 0xF8, 0x1F, 0x03, 0xF0, 0x3F, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0xFC, + 0x0F, 0x88, 0xF8, 0x1F, 0x81, 0xF3, 0x3F, 0x03, 0xE0, 0x3E, 0x47, 0xE0, + 0xFC, 0x07, 0xF0, 0xFC, 0x1F, 0x80, 0xFE, 0x18, 0x00, 0x00, 0x0F, 0x00, + 0x00, 0x70, 0xF8, 0x7F, 0xC3, 0xF8, 0x1F, 0x8F, 0xF0, 0x3F, 0x33, 0xE0, + 0x7C, 0x87, 0xC1, 0xF9, 0x0F, 0x83, 0xF4, 0x1F, 0x07, 0xD0, 0x3E, 0x0F, + 0xE0, 0xFC, 0x3F, 0x81, 0xF8, 0x7F, 0x03, 0xE0, 0xFC, 0x0F, 0xC1, 0xF8, + 0x1F, 0x87, 0xE0, 0x3E, 0x0F, 0xC0, 0xFC, 0x1F, 0x81, 0xF0, 0x3E, 0x03, + 0xE0, 0xFC, 0x0F, 0xC9, 0xF8, 0x1F, 0x33, 0xE0, 0x3E, 0x47, 0xC0, 0x7F, + 0x1F, 0x80, 0xFE, 0x38, 0x00, 0xF0, 0x00, 0x00, 0x3F, 0x00, 0x0E, 0x38, + 0x03, 0xC1, 0xC0, 0x78, 0x1E, 0x0F, 0x81, 0xF0, 0xF0, 0x1F, 0x1F, 0x01, + 0xF3, 0xE0, 0x1F, 0x3E, 0x03, 0xF7, 0xC0, 0x3F, 0x7C, 0x03, 0xF7, 0xC0, + 0x3E, 0xFC, 0x03, 0xEF, 0xC0, 0x7E, 0xF8, 0x07, 0xCF, 0x80, 0x7C, 0xF8, + 0x0F, 0x8F, 0x80, 0xF8, 0xF8, 0x1F, 0x07, 0x81, 0xE0, 0x78, 0x3C, 0x03, + 0xC7, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x0F, 0x1F, 0x00, 0x3F, 0xE7, 0xF8, + 0x01, 0xF9, 0xFF, 0x00, 0x1F, 0x47, 0xF0, 0x07, 0xF0, 0x7E, 0x00, 0xFE, + 0x0F, 0xC0, 0x1F, 0x81, 0xF8, 0x03, 0xF0, 0x3F, 0x00, 0xFC, 0x07, 0xE0, + 0x1F, 0x81, 0xFC, 0x03, 0xE0, 0x3F, 0x00, 0x7C, 0x07, 0xE0, 0x1F, 0x81, + 0xFC, 0x03, 0xF0, 0x3F, 0x00, 0x7C, 0x07, 0xE0, 0x0F, 0x81, 0xF8, 0x03, + 0xF0, 0x3E, 0x00, 0x7E, 0x0F, 0xC0, 0x0F, 0x81, 0xF0, 0x01, 0xF0, 0x7C, + 0x00, 0x7F, 0x1F, 0x00, 0x0F, 0xFF, 0xC0, 0x01, 0xF3, 0xE0, 0x00, 0x3E, + 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x3E, 0x00, 0x00, + 0x0F, 0xC0, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0xFC, + 0x00, 0x00, 0x00, 0x3E, 0x00, 0x03, 0xF9, 0xF0, 0x1F, 0x1F, 0xC0, 0xF8, + 0x7E, 0x07, 0xC1, 0xF8, 0x3F, 0x07, 0xE0, 0xF8, 0x1F, 0x87, 0xE0, 0x7C, + 0x3F, 0x01, 0xF0, 0xFC, 0x0F, 0xC7, 0xE0, 0x3E, 0x1F, 0x80, 0xF8, 0x7E, + 0x07, 0xE3, 0xF0, 0x1F, 0x8F, 0xC0, 0x7C, 0x3F, 0x03, 0xF0, 0xFC, 0x0F, + 0xC3, 0xF0, 0x7E, 0x0F, 0xC3, 0xF8, 0x3F, 0x9B, 0xE0, 0x7F, 0xDF, 0x01, + 0xFE, 0x7C, 0x01, 0xF1, 0xF0, 0x00, 0x0F, 0xC0, 0x00, 0x3E, 0x00, 0x00, + 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0x7C, 0x00, 0x03, 0xF8, + 0x00, 0x7F, 0xF8, 0x00, 0x00, 0x71, 0xE1, 0xFF, 0x3E, 0x07, 0xE7, 0xF0, + 0x7E, 0xFF, 0x07, 0xE9, 0xE0, 0x7D, 0x0E, 0x07, 0xD0, 0x00, 0xFE, 0x00, + 0x0F, 0xE0, 0x00, 0xFC, 0x00, 0x0F, 0xC0, 0x01, 0xFC, 0x00, 0x1F, 0x80, + 0x01, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x03, 0xF0, + 0x00, 0x7E, 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0x07, 0xC0, 0x00, 0x01, + 0xF1, 0x07, 0xFF, 0x0F, 0x0F, 0x0E, 0x07, 0x1E, 0x06, 0x1E, 0x06, 0x1F, + 0x02, 0x1F, 0x02, 0x1F, 0x80, 0x0F, 0xC0, 0x0F, 0xE0, 0x0F, 0xF0, 0x07, + 0xF8, 0x03, 0xF8, 0x01, 0xFC, 0x00, 0xFC, 0x40, 0x7C, 0x40, 0x7C, 0x60, + 0x3C, 0xE0, 0x38, 0xF0, 0x38, 0xF8, 0xF0, 0xDF, 0xC0, 0x00, 0x20, 0x03, + 0x00, 0x38, 0x03, 0x80, 0x3C, 0x03, 0xE0, 0x7F, 0x07, 0xFF, 0x3F, 0xF8, + 0x7C, 0x07, 0xE0, 0x3F, 0x01, 0xF0, 0x0F, 0x80, 0xFC, 0x07, 0xC0, 0x3E, + 0x03, 0xF0, 0x1F, 0x80, 0xF8, 0x07, 0xC0, 0x7E, 0x03, 0xF1, 0x1F, 0x08, + 0xF8, 0x87, 0xC8, 0x3F, 0xC1, 0xFC, 0x07, 0x80, 0x00, 0x00, 0x40, 0x00, + 0x1F, 0x03, 0xF7, 0xF8, 0x0F, 0x87, 0xE0, 0x3E, 0x1F, 0x81, 0xF8, 0x7E, + 0x07, 0xC1, 0xF0, 0x1F, 0x07, 0xC0, 0xFC, 0x3F, 0x03, 0xE0, 0xF8, 0x0F, + 0x83, 0xE0, 0x7E, 0x0F, 0x81, 0xF8, 0x7E, 0x0F, 0xC1, 0xF0, 0x3F, 0x07, + 0xC1, 0xFC, 0x1F, 0x07, 0xE0, 0xF8, 0x2F, 0x83, 0xE1, 0x3C, 0x6F, 0x8D, + 0xF1, 0x3E, 0x67, 0xC8, 0xFF, 0x1F, 0xE3, 0xF8, 0x7F, 0x07, 0xC0, 0xF0, + 0x00, 0x06, 0x07, 0x1F, 0x07, 0xBF, 0x83, 0xE7, 0xC1, 0xF3, 0xE0, 0xF9, + 0xF8, 0x3C, 0x7C, 0x0C, 0x3E, 0x06, 0x1F, 0x03, 0x0F, 0x83, 0x07, 0xC1, + 0x83, 0xE1, 0x81, 0xF1, 0x80, 0xF9, 0x80, 0x7C, 0xC0, 0x3E, 0xC0, 0x1F, + 0xC0, 0x0F, 0xC0, 0x07, 0xC0, 0x03, 0xC0, 0x01, 0xC0, 0x00, 0xC0, 0x00, + 0x40, 0x00, 0x06, 0x01, 0x81, 0xC7, 0xC0, 0x30, 0x7F, 0xF8, 0x0E, 0x0F, + 0x9F, 0x01, 0xC1, 0xF3, 0xE0, 0x78, 0x3E, 0x7C, 0x1F, 0x03, 0xCF, 0xC3, + 0xE0, 0x30, 0xF8, 0xFC, 0x06, 0x1F, 0x1F, 0xC0, 0x83, 0xE7, 0xF8, 0x30, + 0x7C, 0xFF, 0x04, 0x0F, 0xB7, 0xE1, 0x81, 0xF6, 0xFC, 0x60, 0x3F, 0x8F, + 0x98, 0x07, 0xE1, 0xF3, 0x00, 0xFC, 0x3E, 0xC0, 0x1F, 0x07, 0xF0, 0x03, + 0xE0, 0xFC, 0x00, 0x78, 0x1F, 0x80, 0x0F, 0x03, 0xE0, 0x01, 0xC0, 0x78, + 0x00, 0x30, 0x0E, 0x00, 0x06, 0x01, 0x80, 0x00, 0x00, 0xF0, 0x1E, 0x0F, + 0xF0, 0x3E, 0x01, 0xF8, 0x7F, 0x01, 0xF8, 0xFF, 0x00, 0xF9, 0x8E, 0x00, + 0xFB, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7C, 0x00, 0x00, + 0x7C, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, + 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xBF, 0x00, 0x01, + 0xBF, 0x08, 0x73, 0x1F, 0x18, 0xFF, 0x1F, 0x30, 0xFE, 0x1F, 0xE0, 0xFC, + 0x0F, 0xC0, 0x78, 0x07, 0x80, 0x00, 0x30, 0x1C, 0x0F, 0xF0, 0x7C, 0x07, + 0xE0, 0xF8, 0x0F, 0xC1, 0xF0, 0x0F, 0xC1, 0xE0, 0x1F, 0x81, 0xC0, 0x3F, + 0x03, 0x00, 0x3E, 0x06, 0x00, 0x7E, 0x08, 0x00, 0xFC, 0x30, 0x01, 0xF8, + 0x60, 0x01, 0xF1, 0x80, 0x03, 0xE3, 0x00, 0x07, 0xCC, 0x00, 0x0F, 0xD8, + 0x00, 0x1F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0x7E, 0x00, + 0x00, 0xF8, 0x00, 0x01, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x00, 0x00, + 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x60, 0x01, 0xC1, 0x80, 0x07, 0xE6, + 0x00, 0x0F, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x07, + 0xFF, 0xE1, 0xFF, 0xF8, 0x3F, 0xFF, 0x07, 0xFF, 0xC0, 0x80, 0x70, 0x30, + 0x1C, 0x04, 0x07, 0x00, 0x00, 0xC0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, + 0x80, 0x00, 0x60, 0x00, 0x18, 0x00, 0x06, 0x00, 0x01, 0xC0, 0x00, 0x30, + 0x00, 0x0C, 0x00, 0x03, 0xE0, 0x00, 0xFE, 0x00, 0x1F, 0xE0, 0xC7, 0xFC, + 0x3D, 0xCF, 0xC7, 0x90, 0xF8, 0xF0, 0x07, 0x9C, 0x00, 0x3E, 0x00, 0x00, + 0x01, 0xF0, 0x00, 0xFC, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, + 0x07, 0xC0, 0x00, 0x78, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x80, + 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x03, 0xE0, + 0x00, 0x3E, 0x00, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x0F, 0xC0, + 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, + 0x80, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x03, + 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, + 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7E, 0x00, + 0x03, 0xF0, 0x00, 0x07, 0xC0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, + 0x3E, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xE0, + 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, + 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, + 0x80, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x00, + 0xF8, 0x00, 0x03, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x03, 0xE0, 0x00, + 0x7C, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, + 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, + 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x0F, 0x80, + 0x03, 0xF0, 0x00, 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x03, 0xFF, 0x01, 0x3F, + 0xFE, 0x1D, 0xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0x00, 0x1F, 0xF0, 0x00, 0x1F, + 0x00}; + +const GFXglyph FreeSerifBoldItalic24pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 12, 0, 1}, // 0x20 ' ' + {0, 15, 33, 18, 3, -31}, // 0x21 '!' + {62, 19, 13, 26, 6, -31}, // 0x22 '"' + {93, 27, 33, 23, -2, -32}, // 0x23 '#' + {205, 24, 39, 24, -1, -33}, // 0x24 '$' + {322, 35, 32, 39, 2, -30}, // 0x25 '%' + {462, 33, 33, 37, 0, -31}, // 0x26 '&' + {599, 7, 13, 13, 6, -31}, // 0x27 ''' + {611, 14, 41, 16, 1, -31}, // 0x28 '(' + {683, 14, 41, 16, -2, -31}, // 0x29 ')' + {755, 19, 20, 23, 3, -31}, // 0x2A '*' + {803, 22, 23, 27, 2, -22}, // 0x2B '+' + {867, 10, 15, 12, -3, -5}, // 0x2C ',' + {886, 12, 5, 16, 0, -12}, // 0x2D '-' + {894, 8, 7, 12, 0, -5}, // 0x2E '.' + {901, 19, 33, 16, 0, -31}, // 0x2F '/' + {980, 22, 33, 23, 1, -31}, // 0x30 '0' + {1071, 20, 32, 23, 0, -31}, // 0x31 '1' + {1151, 22, 32, 23, 1, -31}, // 0x32 '2' + {1239, 22, 33, 24, 0, -31}, // 0x33 '3' + {1330, 25, 32, 23, 0, -31}, // 0x34 '4' + {1430, 24, 32, 24, 0, -30}, // 0x35 '5' + {1526, 23, 32, 24, 1, -30}, // 0x36 '6' + {1618, 23, 31, 23, 3, -30}, // 0x37 '7' + {1708, 21, 33, 23, 1, -31}, // 0x38 '8' + {1795, 23, 33, 23, 0, -31}, // 0x39 '9' + {1890, 13, 22, 12, 0, -20}, // 0x3A ':' + {1926, 15, 30, 12, -2, -20}, // 0x3B ';' + {1983, 24, 25, 27, 1, -23}, // 0x3C '<' + {2058, 24, 14, 27, 3, -18}, // 0x3D '=' + {2100, 24, 25, 27, 3, -23}, // 0x3E '>' + {2175, 18, 33, 24, 4, -31}, // 0x3F '?' + {2250, 33, 33, 39, 3, -31}, // 0x40 '@' + {2387, 31, 32, 33, 0, -31}, // 0x41 'A' + {2511, 31, 31, 30, 0, -30}, // 0x42 'B' + {2632, 29, 33, 29, 2, -31}, // 0x43 'C' + {2752, 35, 31, 34, 0, -30}, // 0x44 'D' + {2888, 32, 31, 30, 0, -30}, // 0x45 'E' + {3012, 31, 31, 29, 0, -30}, // 0x46 'F' + {3133, 32, 33, 33, 2, -31}, // 0x47 'G' + {3265, 39, 31, 35, 0, -30}, // 0x48 'H' + {3417, 21, 31, 18, 0, -30}, // 0x49 'I' + {3499, 27, 36, 23, 0, -30}, // 0x4A 'J' + {3621, 34, 31, 31, 0, -30}, // 0x4B 'K' + {3753, 29, 31, 29, 0, -30}, // 0x4C 'L' + {3866, 44, 32, 41, 0, -30}, // 0x4D 'M' + {4042, 37, 32, 33, 0, -30}, // 0x4E 'N' + {4190, 31, 33, 32, 2, -31}, // 0x4F 'O' + {4318, 31, 31, 28, 0, -30}, // 0x50 'P' + {4439, 31, 42, 32, 2, -31}, // 0x51 'Q' + {4602, 32, 31, 31, 0, -30}, // 0x52 'R' + {4726, 24, 33, 24, 0, -31}, // 0x53 'S' + {4825, 27, 31, 28, 4, -30}, // 0x54 'T' + {4930, 32, 32, 34, 5, -30}, // 0x55 'U' + {5058, 31, 32, 33, 6, -30}, // 0x56 'V' + {5182, 41, 32, 44, 6, -30}, // 0x57 'W' + {5346, 34, 31, 33, 0, -30}, // 0x58 'X' + {5478, 28, 31, 30, 6, -30}, // 0x59 'Y' + {5587, 28, 31, 26, 0, -30}, // 0x5A 'Z' + {5696, 19, 38, 16, -2, -30}, // 0x5B '[' + {5787, 13, 33, 19, 6, -31}, // 0x5C '\' + {5841, 19, 38, 16, -3, -30}, // 0x5D ']' + {5932, 21, 17, 27, 3, -30}, // 0x5E '^' + {5977, 24, 3, 23, 0, 5}, // 0x5F '_' + {5986, 10, 9, 16, 4, -32}, // 0x60 '`' + {5998, 22, 23, 24, 1, -21}, // 0x61 'a' + {6062, 22, 33, 23, 1, -31}, // 0x62 'b' + {6153, 18, 23, 20, 1, -21}, // 0x63 'c' + {6205, 25, 34, 24, 1, -32}, // 0x64 'd' + {6312, 18, 23, 20, 1, -21}, // 0x65 'e' + {6364, 28, 41, 23, -4, -31}, // 0x66 'f' + {6508, 25, 31, 23, -1, -21}, // 0x67 'g' + {6605, 23, 34, 26, 1, -32}, // 0x68 'h' + {6703, 12, 33, 14, 2, -31}, // 0x69 'i' + {6753, 22, 42, 16, -4, -31}, // 0x6A 'j' + {6869, 24, 34, 24, 1, -32}, // 0x6B 'k' + {6971, 13, 34, 14, 2, -32}, // 0x6C 'l' + {7027, 35, 23, 36, 0, -21}, // 0x6D 'm' + {7128, 23, 23, 25, 0, -21}, // 0x6E 'n' + {7195, 20, 23, 22, 1, -21}, // 0x6F 'o' + {7253, 27, 31, 23, -4, -21}, // 0x70 'p' + {7358, 22, 31, 23, 1, -21}, // 0x71 'q' + {7444, 20, 22, 19, 0, -21}, // 0x72 'r' + {7499, 16, 23, 17, 0, -21}, // 0x73 's' + {7545, 13, 29, 13, 2, -27}, // 0x74 't' + {7593, 22, 23, 25, 2, -21}, // 0x75 'u' + {7657, 17, 23, 21, 3, -21}, // 0x76 'v' + {7706, 27, 23, 31, 3, -21}, // 0x77 'w' + {7784, 24, 23, 22, -1, -21}, // 0x78 'x' + {7853, 23, 31, 20, -3, -21}, // 0x79 'y' + {7943, 19, 25, 19, 0, -20}, // 0x7A 'z' + {8003, 20, 41, 16, 0, -31}, // 0x7B '{' + {8106, 4, 33, 13, 5, -31}, // 0x7C '|' + {8123, 20, 41, 16, -6, -31}, // 0x7D '}' + {8226, 21, 7, 27, 3, -14}}; // 0x7E '~' + +const GFXfont FreeSerifBoldItalic24pt7b PROGMEM = { + (uint8_t *)FreeSerifBoldItalic24pt7bBitmaps, + (GFXglyph *)FreeSerifBoldItalic24pt7bGlyphs, 0x20, 0x7E, 56}; + +// Approx. 8917 bytes diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBoldItalic9pt7b.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBoldItalic9pt7b.h new file mode 100644 index 0000000..b5d9a55 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifBoldItalic9pt7b.h @@ -0,0 +1,217 @@ +#pragma once +#include + +const uint8_t FreeSerifBoldItalic9pt7bBitmaps[] PROGMEM = { + 0x0C, 0x31, 0xC6, 0x18, 0x41, 0x08, 0x20, 0x0E, 0x38, 0xE0, 0xCF, 0x38, + 0xA2, 0x88, 0x02, 0x40, 0xC8, 0x13, 0x06, 0x43, 0xFC, 0x32, 0x06, 0x40, + 0x98, 0x7F, 0x84, 0xC0, 0x90, 0x32, 0x04, 0xC0, 0x01, 0x01, 0xF0, 0x4B, + 0x99, 0x33, 0x24, 0x78, 0x07, 0x80, 0x38, 0x0B, 0x89, 0x31, 0x26, 0x64, + 0xC7, 0x30, 0x3C, 0x04, 0x00, 0x38, 0x41, 0x9F, 0x06, 0x48, 0x31, 0x60, + 0xCD, 0x03, 0x2C, 0x07, 0x27, 0x81, 0x39, 0x05, 0xC4, 0x26, 0x10, 0x98, + 0x84, 0x66, 0x10, 0xE0, 0x03, 0x80, 0x22, 0x03, 0x10, 0x19, 0x00, 0xF0, + 0x0F, 0x3C, 0xF8, 0xCC, 0xC4, 0xE7, 0x47, 0x3E, 0x38, 0xE1, 0xE7, 0x97, + 0xCF, 0x00, 0xFA, 0x80, 0x08, 0x88, 0x84, 0x62, 0x10, 0x84, 0x21, 0x08, + 0x41, 0x00, 0x20, 0x84, 0x10, 0x84, 0x21, 0x08, 0xC6, 0x23, 0x11, 0x00, + 0x18, 0x18, 0xD6, 0x38, 0x18, 0xF7, 0x18, 0x18, 0x08, 0x04, 0x02, 0x01, + 0x0F, 0xF8, 0x40, 0x20, 0x10, 0x08, 0x00, 0x6D, 0x95, 0x00, 0xFF, 0xC0, + 0xFF, 0x80, 0x06, 0x0C, 0x30, 0x60, 0x83, 0x04, 0x18, 0x20, 0xC1, 0x06, + 0x00, 0x0F, 0x0C, 0x8C, 0x6E, 0x37, 0x1B, 0x1F, 0x8F, 0xC7, 0xC7, 0x63, + 0xB1, 0x89, 0x83, 0x80, 0x06, 0x1E, 0x0E, 0x0E, 0x0C, 0x0C, 0x1C, 0x18, + 0x18, 0x18, 0x38, 0x38, 0xFC, 0x1F, 0x13, 0xD0, 0xE0, 0x70, 0x38, 0x38, + 0x18, 0x18, 0x18, 0x08, 0x08, 0x4F, 0xCF, 0xE0, 0x1F, 0x11, 0xC0, 0xE0, + 0x60, 0xC1, 0xF0, 0x38, 0x0C, 0x06, 0x03, 0x01, 0x19, 0x8F, 0x00, 0x00, + 0x80, 0xC0, 0xE1, 0xE0, 0xB0, 0x98, 0x9C, 0x8C, 0xFF, 0x07, 0x03, 0x01, + 0x80, 0x0F, 0x88, 0x08, 0x07, 0x83, 0xE0, 0x78, 0x1C, 0x06, 0x03, 0x01, + 0x80, 0x9C, 0x87, 0x80, 0x03, 0x87, 0x07, 0x07, 0x07, 0x03, 0xE3, 0x99, + 0xCC, 0xC6, 0x63, 0x33, 0x89, 0x87, 0x80, 0x3F, 0xBF, 0x90, 0x80, 0xC0, + 0x40, 0x60, 0x20, 0x30, 0x30, 0x10, 0x18, 0x08, 0x00, 0x1E, 0x13, 0x31, + 0x31, 0x3A, 0x1C, 0x1C, 0x6E, 0xC6, 0xC6, 0xC6, 0x44, 0x38, 0x0E, 0x1C, + 0x8C, 0x6C, 0x36, 0x3B, 0x1D, 0x8E, 0x7E, 0x0E, 0x07, 0x07, 0x0E, 0x0C, + 0x00, 0x39, 0xCE, 0x00, 0x03, 0x9C, 0xE0, 0x39, 0xCE, 0x00, 0x01, 0x8C, + 0x22, 0x20, 0x00, 0x01, 0xC3, 0xC7, 0x8E, 0x06, 0x01, 0xE0, 0x3C, 0x07, + 0x80, 0x40, 0xFF, 0x80, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x60, 0x1E, 0x03, + 0xC0, 0x78, 0x1C, 0x3C, 0x78, 0xF0, 0x40, 0x00, 0x1C, 0x27, 0x37, 0x07, + 0x0E, 0x1C, 0x30, 0x60, 0x40, 0x00, 0xE0, 0xE0, 0xE0, 0x0F, 0x80, 0xC3, + 0x08, 0x04, 0xC3, 0x3C, 0x24, 0xE2, 0x27, 0x33, 0x39, 0x11, 0xC9, 0x93, + 0x77, 0x18, 0x00, 0x70, 0x40, 0xFC, 0x00, 0x00, 0x80, 0x18, 0x01, 0x80, + 0x38, 0x05, 0x80, 0x5C, 0x09, 0xC1, 0x1C, 0x1F, 0xC2, 0x0C, 0x20, 0xC4, + 0x0E, 0xF3, 0xF0, 0x3F, 0xE0, 0xC7, 0x0C, 0x71, 0xC7, 0x1C, 0xE1, 0xF0, + 0x39, 0xC3, 0x8E, 0x38, 0xE3, 0x0E, 0x71, 0xE7, 0x1C, 0xFF, 0x00, 0x07, + 0xD1, 0xC7, 0x38, 0x27, 0x02, 0x70, 0x0F, 0x00, 0xE0, 0x0E, 0x00, 0xE0, + 0x0E, 0x00, 0x60, 0x87, 0x18, 0x1E, 0x00, 0x3F, 0xE0, 0x30, 0xE0, 0xC1, + 0x87, 0x07, 0x1C, 0x1C, 0x60, 0x73, 0x81, 0xCE, 0x07, 0x38, 0x38, 0xC0, + 0xE7, 0x07, 0x1C, 0x78, 0xFF, 0x80, 0x1F, 0xF8, 0x61, 0xC3, 0x04, 0x38, + 0x81, 0xCC, 0x0F, 0xE0, 0xE2, 0x07, 0x10, 0x38, 0x81, 0x81, 0x1C, 0x18, + 0xE3, 0x8F, 0xFC, 0x00, 0x3F, 0xF8, 0x61, 0xC3, 0x04, 0x38, 0x81, 0xCC, + 0x0F, 0xE0, 0xE2, 0x07, 0x10, 0x38, 0x81, 0x80, 0x1C, 0x00, 0xE0, 0x0F, + 0x80, 0x00, 0x07, 0x91, 0xC7, 0x38, 0x27, 0x00, 0x70, 0x0F, 0x00, 0xE1, + 0xFE, 0x0E, 0xE0, 0xCE, 0x0C, 0x60, 0xC7, 0x1C, 0x1F, 0x00, 0x1F, 0x7E, + 0x1C, 0x38, 0x30, 0x60, 0xE1, 0xC1, 0xC3, 0x83, 0x06, 0x0F, 0xFC, 0x1C, + 0x38, 0x38, 0x70, 0x60, 0xC1, 0xC3, 0x83, 0x87, 0x0F, 0x9F, 0x00, 0x3F, + 0x0C, 0x0C, 0x1C, 0x1C, 0x18, 0x38, 0x38, 0x38, 0x30, 0x70, 0x70, 0xF8, + 0x07, 0xC0, 0xE0, 0x38, 0x0C, 0x07, 0x01, 0xC0, 0x70, 0x18, 0x0E, 0x03, + 0x80, 0xC3, 0x30, 0xDC, 0x1E, 0x00, 0x1F, 0x78, 0x71, 0x83, 0x18, 0x39, + 0x81, 0xD0, 0x0D, 0x00, 0xFC, 0x07, 0x60, 0x3B, 0x81, 0x8C, 0x1C, 0x70, + 0xE1, 0x8F, 0xBE, 0x00, 0x1F, 0x00, 0xC0, 0x0C, 0x01, 0xC0, 0x1C, 0x01, + 0x80, 0x38, 0x03, 0x80, 0x38, 0x03, 0x01, 0x70, 0x37, 0x0E, 0xFF, 0xE0, + 0x1E, 0x07, 0x87, 0x07, 0x83, 0x83, 0x82, 0xC3, 0xC1, 0x62, 0xE0, 0xB1, + 0x70, 0x99, 0x30, 0x4D, 0xB8, 0x27, 0x9C, 0x13, 0x8C, 0x11, 0xC6, 0x0C, + 0xC7, 0x0F, 0x47, 0xC0, 0x3C, 0x3C, 0x38, 0x20, 0xE0, 0x85, 0xC4, 0x13, + 0x10, 0x4E, 0x42, 0x3A, 0x08, 0x78, 0x21, 0xE0, 0x83, 0x84, 0x0C, 0x18, + 0x10, 0x00, 0x40, 0x07, 0xC1, 0xCE, 0x38, 0x73, 0x87, 0x70, 0x77, 0x07, + 0xF0, 0xFE, 0x0E, 0xE0, 0xEE, 0x1C, 0xE1, 0xC6, 0x38, 0x3E, 0x00, 0x3F, + 0xC0, 0xC7, 0x0C, 0x71, 0xC7, 0x1C, 0x71, 0x8E, 0x3F, 0xC3, 0x80, 0x30, + 0x03, 0x00, 0x70, 0x07, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0xCE, 0x38, 0x73, + 0x87, 0x70, 0x77, 0x07, 0xF0, 0x7E, 0x0E, 0xE0, 0xEE, 0x0C, 0xE1, 0xC6, + 0x38, 0x36, 0x01, 0x80, 0x3C, 0x2D, 0xFC, 0x3F, 0xC0, 0xE7, 0x0C, 0x71, + 0xC7, 0x1C, 0x71, 0x8E, 0x3F, 0x83, 0xB8, 0x3B, 0x83, 0x3C, 0x71, 0xC7, + 0x1C, 0xF9, 0xF0, 0x0C, 0x89, 0x8C, 0x46, 0x23, 0x80, 0xE0, 0x78, 0x0E, + 0x03, 0x21, 0x90, 0xCC, 0xC9, 0xC0, 0x7F, 0xE9, 0xDF, 0x31, 0x4E, 0x21, + 0xC0, 0x38, 0x06, 0x01, 0xC0, 0x38, 0x06, 0x00, 0xC0, 0x38, 0x0F, 0xC0, + 0x7C, 0xF3, 0x82, 0x30, 0x27, 0x04, 0x70, 0x46, 0x04, 0xE0, 0x4E, 0x08, + 0xE0, 0x8E, 0x08, 0xE1, 0x0F, 0x30, 0x3C, 0x00, 0xFC, 0x73, 0x82, 0x38, + 0x23, 0x84, 0x38, 0x83, 0x90, 0x39, 0x01, 0xA0, 0x1C, 0x01, 0xC0, 0x18, + 0x01, 0x00, 0xF9, 0xF7, 0x30, 0xE2, 0x30, 0xC2, 0x38, 0xC4, 0x3B, 0xC4, + 0x3A, 0xE8, 0x3C, 0xE8, 0x3C, 0xF0, 0x18, 0xF0, 0x18, 0x60, 0x10, 0x60, + 0x10, 0x40, 0x3F, 0x78, 0x61, 0x83, 0x98, 0x1D, 0x00, 0x70, 0x03, 0x80, + 0x1C, 0x01, 0x60, 0x0B, 0x80, 0x9C, 0x08, 0x60, 0xC3, 0x8F, 0x7E, 0x00, + 0xF9, 0xE6, 0x18, 0xC2, 0x1C, 0x81, 0xA0, 0x34, 0x07, 0x00, 0xC0, 0x18, + 0x07, 0x00, 0xE0, 0x1C, 0x0F, 0xC0, 0x3F, 0xE6, 0x19, 0x87, 0x21, 0xC0, + 0x30, 0x0E, 0x03, 0x80, 0x60, 0x1C, 0x07, 0x05, 0xC1, 0x38, 0xEF, 0xFC, + 0x0E, 0x08, 0x18, 0x18, 0x18, 0x10, 0x30, 0x30, 0x30, 0x20, 0x60, 0x60, + 0x60, 0x40, 0xF0, 0xC6, 0x10, 0xC6, 0x10, 0x86, 0x30, 0x86, 0x30, 0x1E, + 0x0C, 0x18, 0x20, 0xC1, 0x83, 0x04, 0x18, 0x30, 0x60, 0x83, 0x06, 0x3C, + 0x00, 0x18, 0x1C, 0x34, 0x26, 0x66, 0x43, 0xC3, 0xFF, 0x80, 0xC6, 0x30, + 0x0D, 0x9D, 0x8C, 0xCC, 0x6E, 0x26, 0x33, 0x19, 0xBE, 0x66, 0x00, 0x00, + 0x78, 0x18, 0x30, 0x30, 0x3E, 0x73, 0x63, 0x63, 0x63, 0xC6, 0xC6, 0xCC, + 0x70, 0x0F, 0x3B, 0x70, 0x70, 0xE0, 0xE0, 0xE2, 0xE4, 0x78, 0x00, 0x00, + 0xF0, 0x1C, 0x06, 0x01, 0x83, 0xE3, 0x30, 0xCC, 0x63, 0x19, 0xCC, 0x63, + 0x38, 0xCF, 0x1D, 0x80, 0x0E, 0x75, 0xCB, 0xBE, 0xDE, 0x38, 0x72, 0x78, + 0x00, 0xE0, 0x34, 0x0C, 0x01, 0x80, 0x30, 0x1F, 0x01, 0x80, 0x30, 0x06, + 0x01, 0xC0, 0x30, 0x06, 0x00, 0xC0, 0x30, 0x06, 0x04, 0x80, 0xE0, 0x00, + 0x1C, 0x19, 0xD8, 0xCC, 0x66, 0x60, 0xE1, 0x80, 0xF0, 0x7E, 0x43, 0x21, + 0x8F, 0x00, 0x00, 0x1E, 0x07, 0x03, 0x01, 0x80, 0xD8, 0xFC, 0x76, 0x33, + 0x19, 0x99, 0xCC, 0xD6, 0x77, 0x30, 0x39, 0xC0, 0x0F, 0x31, 0x8C, 0xC6, + 0x31, 0xAE, 0x00, 0x03, 0x81, 0xC0, 0x00, 0x00, 0xE0, 0x30, 0x18, 0x18, + 0x0C, 0x06, 0x03, 0x03, 0x01, 0x80, 0xC2, 0xC1, 0xC0, 0x00, 0x0F, 0x00, + 0xC0, 0x60, 0x18, 0x06, 0xF3, 0x90, 0xC8, 0x34, 0x0F, 0x06, 0xC1, 0x98, + 0x66, 0xB9, 0xC0, 0x03, 0xCC, 0x63, 0x39, 0x8C, 0x66, 0x31, 0x8E, 0x70, + 0x7B, 0x99, 0xAF, 0xCE, 0x66, 0x63, 0x67, 0x33, 0x31, 0x99, 0x8C, 0xCC, + 0xE7, 0xC6, 0x30, 0x73, 0x7F, 0x73, 0x73, 0x63, 0x67, 0xE6, 0xC7, 0xC6, + 0x1E, 0x33, 0x63, 0x63, 0xC3, 0xC6, 0xC6, 0xCC, 0x78, 0x1D, 0xC3, 0xB1, + 0xCC, 0x63, 0x19, 0xCE, 0x63, 0x18, 0xCC, 0x3E, 0x1C, 0x06, 0x03, 0xE0, + 0x0D, 0x99, 0x8C, 0xCC, 0x6E, 0x76, 0x33, 0x19, 0x9C, 0x7C, 0x06, 0x07, + 0x07, 0xC0, 0x76, 0x3A, 0x30, 0x70, 0x60, 0x60, 0x60, 0xE0, 0x3D, 0x14, + 0x58, 0x38, 0x60, 0xA2, 0xF0, 0x08, 0xCC, 0xF6, 0x31, 0x98, 0xC6, 0x35, + 0xC0, 0xE3, 0x63, 0x66, 0x66, 0x66, 0xCC, 0xCC, 0xFE, 0xEC, 0xE6, 0xCD, + 0x8B, 0x26, 0x8E, 0x18, 0x20, 0xE4, 0xD9, 0x36, 0xE5, 0xDA, 0x77, 0x19, + 0xC6, 0x61, 0x10, 0x39, 0xC7, 0xB0, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xE1, + 0x5A, 0x67, 0x00, 0x39, 0x8C, 0xC3, 0x21, 0xA0, 0xD0, 0x68, 0x38, 0x0C, + 0x04, 0x04, 0x14, 0x0C, 0x00, 0x3E, 0x46, 0x0C, 0x08, 0x10, 0x20, 0x70, + 0x1A, 0x0E, 0x03, 0x0E, 0x0C, 0x0C, 0x08, 0x18, 0x18, 0x10, 0x60, 0x30, + 0x30, 0x30, 0x60, 0x60, 0x60, 0x30, 0xFF, 0xF0, 0x0C, 0x06, 0x06, 0x06, + 0x04, 0x0C, 0x0C, 0x0C, 0x06, 0x18, 0x18, 0x18, 0x30, 0x30, 0x30, 0xE0, + 0x71, 0x8F}; + +const GFXglyph FreeSerifBoldItalic9pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 5, 0, 1}, // 0x20 ' ' + {0, 6, 13, 7, 1, -11}, // 0x21 '!' + {10, 6, 5, 10, 3, -11}, // 0x22 '"' + {14, 11, 13, 9, -1, -12}, // 0x23 '#' + {32, 11, 15, 9, -1, -12}, // 0x24 '$' + {53, 14, 13, 15, 1, -11}, // 0x25 '%' + {76, 13, 13, 14, 0, -11}, // 0x26 '&' + {98, 2, 5, 5, 3, -11}, // 0x27 ''' + {100, 5, 16, 6, 1, -11}, // 0x28 '(' + {110, 5, 16, 6, -1, -11}, // 0x29 ')' + {120, 8, 8, 9, 1, -11}, // 0x2A '*' + {128, 9, 9, 10, 0, -8}, // 0x2B '+' + {139, 3, 6, 5, -1, -2}, // 0x2C ',' + {142, 5, 2, 6, 0, -4}, // 0x2D '-' + {144, 3, 3, 4, 0, -1}, // 0x2E '.' + {146, 7, 12, 6, 0, -11}, // 0x2F '/' + {157, 9, 13, 9, 0, -11}, // 0x30 '0' + {172, 8, 13, 9, 0, -11}, // 0x31 '1' + {185, 9, 13, 9, 0, -11}, // 0x32 '2' + {200, 9, 13, 9, 0, -11}, // 0x33 '3' + {215, 9, 12, 9, 0, -11}, // 0x34 '4' + {229, 9, 13, 9, 0, -11}, // 0x35 '5' + {244, 9, 13, 9, 1, -11}, // 0x36 '6' + {259, 9, 12, 9, 1, -11}, // 0x37 '7' + {273, 8, 13, 9, 0, -11}, // 0x38 '8' + {286, 9, 13, 9, 0, -11}, // 0x39 '9' + {301, 5, 9, 5, 0, -7}, // 0x3A ':' + {307, 5, 11, 5, 0, -7}, // 0x3B ';' + {314, 9, 10, 10, 1, -9}, // 0x3C '<' + {326, 9, 5, 10, 1, -6}, // 0x3D '=' + {332, 9, 10, 10, 1, -9}, // 0x3E '>' + {344, 8, 13, 9, 1, -11}, // 0x3F '?' + {357, 13, 13, 15, 1, -12}, // 0x40 '@' + {379, 12, 13, 13, 0, -11}, // 0x41 'A' + {399, 12, 13, 12, 0, -11}, // 0x42 'B' + {419, 12, 13, 11, 1, -11}, // 0x43 'C' + {439, 14, 13, 13, 0, -11}, // 0x44 'D' + {462, 13, 13, 11, 0, -11}, // 0x45 'E' + {484, 13, 13, 11, 0, -11}, // 0x46 'F' + {506, 12, 13, 13, 1, -11}, // 0x47 'G' + {526, 15, 13, 14, 0, -11}, // 0x48 'H' + {551, 8, 13, 7, 0, -11}, // 0x49 'I' + {564, 10, 14, 9, 0, -11}, // 0x4A 'J' + {582, 13, 13, 12, 0, -11}, // 0x4B 'K' + {604, 12, 13, 11, 0, -11}, // 0x4C 'L' + {624, 17, 13, 16, 0, -11}, // 0x4D 'M' + {652, 14, 13, 13, 0, -11}, // 0x4E 'N' + {675, 12, 13, 12, 1, -11}, // 0x4F 'O' + {695, 12, 13, 11, 0, -11}, // 0x50 'P' + {715, 12, 16, 12, 1, -11}, // 0x51 'Q' + {739, 12, 13, 12, 0, -11}, // 0x52 'R' + {759, 9, 13, 9, 0, -11}, // 0x53 'S' + {774, 11, 13, 11, 2, -11}, // 0x54 'T' + {792, 12, 13, 13, 2, -11}, // 0x55 'U' + {812, 12, 12, 13, 2, -11}, // 0x56 'V' + {830, 16, 12, 17, 2, -11}, // 0x57 'W' + {854, 13, 13, 13, 0, -11}, // 0x58 'X' + {876, 11, 13, 11, 2, -11}, // 0x59 'Y' + {894, 11, 13, 10, 0, -11}, // 0x5A 'Z' + {912, 8, 15, 6, -1, -11}, // 0x5B '[' + {927, 5, 12, 7, 2, -11}, // 0x5C '\' + {935, 7, 15, 6, -1, -11}, // 0x5D ']' + {949, 8, 7, 10, 1, -11}, // 0x5E '^' + {956, 9, 1, 9, 0, 3}, // 0x5F '_' + {958, 4, 3, 6, 2, -11}, // 0x60 '`' + {960, 9, 9, 9, 0, -7}, // 0x61 'a' + {971, 8, 14, 9, 0, -12}, // 0x62 'b' + {985, 8, 9, 8, 0, -7}, // 0x63 'c' + {994, 10, 14, 9, 0, -12}, // 0x64 'd' + {1012, 7, 9, 7, 0, -7}, // 0x65 'e' + {1020, 11, 17, 9, -2, -12}, // 0x66 'f' + {1044, 9, 12, 9, 0, -7}, // 0x67 'g' + {1058, 9, 14, 10, 0, -12}, // 0x68 'h' + {1074, 5, 13, 5, 1, -11}, // 0x69 'i' + {1083, 9, 16, 6, -1, -11}, // 0x6A 'j' + {1101, 10, 14, 9, 0, -12}, // 0x6B 'k' + {1119, 5, 14, 5, 1, -12}, // 0x6C 'l' + {1128, 13, 9, 14, 0, -7}, // 0x6D 'm' + {1143, 8, 9, 9, 0, -7}, // 0x6E 'n' + {1152, 8, 9, 9, 0, -7}, // 0x6F 'o' + {1161, 10, 12, 9, -2, -7}, // 0x70 'p' + {1176, 9, 12, 9, 0, -7}, // 0x71 'q' + {1190, 8, 8, 7, 0, -7}, // 0x72 'r' + {1198, 6, 9, 6, 0, -7}, // 0x73 's' + {1205, 5, 12, 5, 1, -10}, // 0x74 't' + {1213, 8, 9, 10, 1, -7}, // 0x75 'u' + {1222, 7, 8, 8, 1, -7}, // 0x76 'v' + {1229, 10, 8, 12, 1, -7}, // 0x77 'w' + {1239, 10, 9, 9, -1, -7}, // 0x78 'x' + {1251, 9, 12, 8, -1, -7}, // 0x79 'y' + {1265, 8, 9, 7, 0, -7}, // 0x7A 'z' + {1274, 8, 16, 6, 0, -12}, // 0x7B '{' + {1290, 1, 12, 5, 2, -11}, // 0x7C '|' + {1292, 8, 16, 6, -2, -12}, // 0x7D '}' + {1308, 8, 2, 10, 1, -4}}; // 0x7E '~' + +const GFXfont FreeSerifBoldItalic9pt7b PROGMEM = { + (uint8_t *)FreeSerifBoldItalic9pt7bBitmaps, + (GFXglyph *)FreeSerifBoldItalic9pt7bGlyphs, 0x20, 0x7E, 22}; + +// Approx. 1982 bytes diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifItalic12pt7b.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifItalic12pt7b.h new file mode 100644 index 0000000..85de005 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifItalic12pt7b.h @@ -0,0 +1,273 @@ +#pragma once +#include + +const uint8_t FreeSerifItalic12pt7bBitmaps[] PROGMEM = { + 0x0C, 0x31, 0xC6, 0x18, 0x43, 0x0C, 0x20, 0x84, 0x10, 0x03, 0x0C, 0x30, + 0x66, 0xCD, 0x12, 0x24, 0x51, 0x00, 0x03, 0x10, 0x11, 0x80, 0x8C, 0x0C, + 0x40, 0x46, 0x1F, 0xFC, 0x21, 0x01, 0x18, 0x18, 0x80, 0x84, 0x3F, 0xF8, + 0x62, 0x02, 0x30, 0x31, 0x01, 0x08, 0x08, 0xC0, 0x00, 0x40, 0x08, 0x07, + 0xC0, 0xCA, 0x18, 0xA1, 0x92, 0x19, 0x01, 0xD0, 0x0F, 0x00, 0x78, 0x03, + 0xC0, 0x2E, 0x02, 0x64, 0x46, 0x44, 0x64, 0x46, 0x64, 0xC1, 0xF0, 0x08, + 0x00, 0x80, 0x00, 0x08, 0x0F, 0x0C, 0x0C, 0x7C, 0x0C, 0x22, 0x06, 0x12, + 0x06, 0x09, 0x03, 0x09, 0x01, 0x84, 0x80, 0xC4, 0x8F, 0x3C, 0x4C, 0x40, + 0x4C, 0x20, 0x4E, 0x10, 0x26, 0x08, 0x23, 0x08, 0x11, 0x84, 0x10, 0xC4, + 0x08, 0x3C, 0x00, 0x00, 0xE0, 0x02, 0x60, 0x0C, 0xC0, 0x19, 0x80, 0x36, + 0x00, 0x70, 0x00, 0xC0, 0x07, 0x9F, 0x33, 0x08, 0xC3, 0x13, 0x06, 0x46, + 0x0D, 0x0C, 0x0C, 0x18, 0x1C, 0x1C, 0x5C, 0x9F, 0x1E, 0xFA, 0xA0, 0x02, + 0x08, 0x20, 0xC3, 0x06, 0x18, 0x30, 0xE1, 0x83, 0x06, 0x0C, 0x18, 0x30, + 0x60, 0x40, 0x80, 0x81, 0x00, 0x08, 0x10, 0x10, 0x20, 0x40, 0xC1, 0x83, + 0x06, 0x0C, 0x18, 0x70, 0xC1, 0x83, 0x0C, 0x10, 0x41, 0x04, 0x00, 0x18, + 0x18, 0x18, 0x93, 0x74, 0x38, 0xD7, 0x93, 0x18, 0x18, 0x04, 0x00, 0x80, + 0x10, 0x02, 0x00, 0x41, 0xFF, 0xC1, 0x00, 0x20, 0x04, 0x00, 0x80, 0x10, + 0x00, 0x6C, 0x95, 0x00, 0xF8, 0xFC, 0x00, 0x40, 0x18, 0x02, 0x00, 0xC0, + 0x30, 0x06, 0x01, 0x80, 0x20, 0x0C, 0x01, 0x00, 0x60, 0x18, 0x03, 0x00, + 0xC0, 0x10, 0x06, 0x00, 0x07, 0x81, 0x98, 0x61, 0x18, 0x33, 0x06, 0xC0, + 0xD8, 0x1B, 0x03, 0xE0, 0xF8, 0x1F, 0x03, 0x60, 0x6C, 0x19, 0x83, 0x10, + 0xC3, 0x30, 0x3C, 0x00, 0x01, 0x87, 0xC0, 0xC0, 0x60, 0x30, 0x18, 0x18, + 0x0C, 0x06, 0x07, 0x03, 0x01, 0x80, 0xC0, 0xC0, 0x60, 0x30, 0xFE, 0x00, + 0x0F, 0x0C, 0x64, 0x0C, 0x03, 0x00, 0xC0, 0x20, 0x18, 0x0C, 0x02, 0x01, + 0x00, 0x80, 0x40, 0x20, 0x10, 0x2F, 0xF0, 0x07, 0x86, 0x30, 0x0C, 0x03, + 0x01, 0x81, 0x81, 0xF0, 0x1E, 0x03, 0x80, 0x60, 0x18, 0x06, 0x01, 0x00, + 0xCC, 0x63, 0xE0, 0x00, 0x20, 0x0C, 0x03, 0x80, 0xA0, 0x2C, 0x09, 0x82, + 0x30, 0x84, 0x31, 0x8C, 0x33, 0x06, 0x7F, 0xE0, 0x30, 0x06, 0x00, 0x80, + 0x30, 0x03, 0xE1, 0x80, 0x20, 0x06, 0x00, 0xF0, 0x0F, 0x00, 0x60, 0x06, + 0x00, 0xC0, 0x18, 0x03, 0x00, 0x40, 0x18, 0x02, 0x30, 0x87, 0xE0, 0x00, + 0x70, 0x3C, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x7F, 0x07, 0x18, 0x60, + 0xCE, 0x0C, 0xC0, 0xCC, 0x0C, 0xC0, 0xCC, 0x18, 0x41, 0x86, 0x30, 0x3E, + 0x00, 0x7F, 0xF0, 0x18, 0x03, 0x00, 0xC0, 0x10, 0x06, 0x01, 0x80, 0x30, + 0x0C, 0x01, 0x00, 0x60, 0x08, 0x03, 0x00, 0xC0, 0x10, 0x06, 0x00, 0x0F, + 0x83, 0x18, 0xC1, 0x98, 0x33, 0x06, 0x71, 0x87, 0x60, 0x70, 0x17, 0x0C, + 0x71, 0x07, 0x60, 0x6C, 0x0D, 0x81, 0xB0, 0x63, 0x1C, 0x3E, 0x00, 0x07, + 0x83, 0x18, 0xC1, 0x18, 0x36, 0x06, 0xC0, 0xD8, 0x1B, 0x07, 0x60, 0xE6, + 0x38, 0x7F, 0x00, 0xC0, 0x30, 0x0C, 0x07, 0x03, 0xC0, 0xC0, 0x00, 0x33, + 0x30, 0x00, 0x00, 0xCC, 0xC0, 0x18, 0xC6, 0x00, 0x00, 0x00, 0x03, 0x18, + 0x44, 0x40, 0x00, 0x00, 0x03, 0x00, 0xF0, 0x38, 0x1E, 0x07, 0x80, 0xE0, + 0x0F, 0x00, 0x1C, 0x00, 0x78, 0x01, 0xE0, 0x07, 0x00, 0x10, 0xFF, 0xF0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x0C, 0x00, 0xF0, 0x01, + 0xC0, 0x07, 0x80, 0x1E, 0x00, 0x70, 0x0F, 0x03, 0xC1, 0xE0, 0x78, 0x0E, + 0x00, 0x80, 0x00, 0x3E, 0x21, 0x90, 0x60, 0x30, 0x38, 0x38, 0x30, 0x30, + 0x20, 0x20, 0x10, 0x00, 0x00, 0x06, 0x03, 0x01, 0x80, 0x07, 0xE0, 0x1C, + 0x18, 0x30, 0x04, 0x60, 0x02, 0x61, 0xDA, 0xC3, 0x31, 0xC6, 0x31, 0xC4, + 0x31, 0xCC, 0x31, 0xCC, 0x21, 0xCC, 0x62, 0x6C, 0xE4, 0x67, 0x38, 0x30, + 0x00, 0x1C, 0x08, 0x07, 0xF0, 0x00, 0x20, 0x00, 0xC0, 0x03, 0x80, 0x0B, + 0x00, 0x16, 0x00, 0x4E, 0x00, 0x9C, 0x02, 0x18, 0x08, 0x30, 0x1F, 0xE0, + 0x40, 0xC1, 0x81, 0xC2, 0x03, 0x8C, 0x07, 0x3C, 0x1F, 0x80, 0x1F, 0xF0, + 0x1C, 0x60, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x38, 0x60, 0xC3, 0x03, 0xF0, + 0x1C, 0x30, 0x60, 0x61, 0x81, 0x86, 0x06, 0x38, 0x18, 0xC0, 0xC3, 0x06, + 0x3F, 0xF0, 0x01, 0xF9, 0x06, 0x0F, 0x1C, 0x06, 0x38, 0x02, 0x30, 0x02, + 0x60, 0x00, 0x60, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, + 0xC0, 0x00, 0xC0, 0x08, 0x60, 0x10, 0x30, 0x60, 0x1F, 0x80, 0x1F, 0xF0, + 0x07, 0x0C, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x0E, 0x03, 0x0C, 0x03, + 0x0C, 0x03, 0x1C, 0x03, 0x1C, 0x07, 0x18, 0x06, 0x18, 0x06, 0x38, 0x0C, + 0x30, 0x18, 0x30, 0x70, 0xFF, 0x80, 0x1F, 0xFF, 0x07, 0x07, 0x06, 0x02, + 0x06, 0x02, 0x06, 0x00, 0x0E, 0x10, 0x0C, 0x30, 0x0F, 0xF0, 0x1C, 0x20, + 0x18, 0x20, 0x18, 0x00, 0x18, 0x00, 0x38, 0x04, 0x30, 0x08, 0x30, 0x38, + 0xFF, 0xF8, 0x1F, 0xFF, 0x07, 0x07, 0x07, 0x02, 0x06, 0x02, 0x06, 0x00, + 0x0E, 0x10, 0x0C, 0x30, 0x0F, 0xF0, 0x1C, 0x20, 0x1C, 0x20, 0x18, 0x00, + 0x18, 0x00, 0x38, 0x00, 0x30, 0x00, 0x30, 0x00, 0xFC, 0x00, 0x01, 0xF1, + 0x06, 0x0F, 0x18, 0x07, 0x38, 0x02, 0x30, 0x02, 0x60, 0x00, 0x60, 0x00, + 0xE0, 0x00, 0xC0, 0x7F, 0xC0, 0x1C, 0xC0, 0x1C, 0xC0, 0x18, 0xC0, 0x18, + 0x60, 0x18, 0x30, 0x38, 0x0F, 0xC0, 0x1F, 0xC7, 0xE0, 0xE0, 0x70, 0x18, + 0x0E, 0x03, 0x01, 0x80, 0x60, 0x30, 0x1C, 0x0E, 0x03, 0x01, 0x80, 0x7F, + 0xF0, 0x1C, 0x06, 0x03, 0x01, 0xC0, 0x60, 0x30, 0x0C, 0x06, 0x03, 0x81, + 0xC0, 0x60, 0x38, 0x0C, 0x06, 0x07, 0xE3, 0xF0, 0x1F, 0x83, 0x81, 0x80, + 0xC0, 0x60, 0x70, 0x30, 0x18, 0x1C, 0x0C, 0x06, 0x03, 0x03, 0x81, 0x80, + 0xC1, 0xF8, 0x03, 0xF0, 0x0C, 0x00, 0xC0, 0x1C, 0x01, 0x80, 0x18, 0x03, + 0x80, 0x30, 0x03, 0x00, 0x30, 0x07, 0x00, 0x60, 0x06, 0x0C, 0xE0, 0xCC, + 0x07, 0x80, 0x1F, 0xCF, 0x83, 0x83, 0x81, 0x81, 0x00, 0xC3, 0x00, 0x62, + 0x00, 0x72, 0x00, 0x36, 0x00, 0x1E, 0x00, 0x1D, 0x80, 0x0C, 0xE0, 0x06, + 0x30, 0x03, 0x1C, 0x03, 0x87, 0x01, 0x81, 0x80, 0xC0, 0xE1, 0xF9, 0xFC, + 0x1F, 0xC0, 0x1C, 0x00, 0x60, 0x01, 0x80, 0x06, 0x00, 0x38, 0x00, 0xC0, + 0x03, 0x00, 0x1C, 0x00, 0x60, 0x01, 0x80, 0x06, 0x00, 0x38, 0x0C, 0xC0, + 0x23, 0x03, 0xBF, 0xFE, 0x0F, 0x00, 0x78, 0x38, 0x07, 0x81, 0xC0, 0x38, + 0x0E, 0x02, 0xC0, 0x70, 0x3E, 0x05, 0xC1, 0x70, 0x2E, 0x13, 0x01, 0x31, + 0x98, 0x11, 0x89, 0xC0, 0x8C, 0x8C, 0x04, 0x6C, 0x60, 0x23, 0x43, 0x02, + 0x1C, 0x38, 0x10, 0xE1, 0x81, 0x86, 0x1C, 0x1F, 0x23, 0xF8, 0x1E, 0x07, + 0xC1, 0xC0, 0x60, 0x70, 0x10, 0x1C, 0x0C, 0x05, 0x82, 0x02, 0x60, 0x80, + 0x9C, 0x60, 0x23, 0x10, 0x10, 0xC4, 0x04, 0x19, 0x01, 0x06, 0xC0, 0x40, + 0xE0, 0x20, 0x38, 0x08, 0x0E, 0x06, 0x01, 0x03, 0xE0, 0x40, 0x01, 0xF0, + 0x0C, 0x10, 0x30, 0x10, 0xC0, 0x33, 0x00, 0x6E, 0x00, 0xD8, 0x01, 0xF0, + 0x03, 0xC0, 0x0D, 0x80, 0x1B, 0x00, 0x76, 0x00, 0xCC, 0x03, 0x08, 0x0C, + 0x18, 0x70, 0x0F, 0x80, 0x1F, 0xF0, 0x1C, 0x60, 0x60, 0xC1, 0x83, 0x06, + 0x0C, 0x38, 0x30, 0xC1, 0x83, 0x0E, 0x1F, 0xE0, 0x60, 0x01, 0x80, 0x06, + 0x00, 0x38, 0x00, 0xC0, 0x03, 0x00, 0x3F, 0x00, 0x01, 0xF0, 0x06, 0x10, + 0x30, 0x30, 0xC0, 0x33, 0x00, 0x66, 0x00, 0xD8, 0x01, 0xB0, 0x03, 0xE0, + 0x0F, 0x80, 0x1B, 0x00, 0x36, 0x00, 0xCC, 0x03, 0x98, 0x06, 0x18, 0x18, + 0x18, 0xC0, 0x0E, 0x00, 0x20, 0x01, 0xF8, 0x36, 0x7F, 0x80, 0x1F, 0xF0, + 0x1C, 0x60, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x38, 0x70, 0xC3, 0x83, 0xF8, + 0x1D, 0xC0, 0x63, 0x01, 0x8C, 0x06, 0x18, 0x38, 0x60, 0xC1, 0xC3, 0x03, + 0x3F, 0x0F, 0x07, 0x90, 0xC7, 0x18, 0x21, 0x82, 0x18, 0x01, 0xC0, 0x0E, + 0x00, 0x70, 0x03, 0x80, 0x1C, 0x00, 0xC4, 0x0C, 0x40, 0xC6, 0x08, 0xE1, + 0x89, 0xE0, 0x7F, 0xFE, 0xC7, 0x1D, 0x0C, 0x14, 0x18, 0x20, 0x70, 0x00, + 0xE0, 0x01, 0x80, 0x03, 0x00, 0x0E, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, + 0x01, 0xC0, 0x03, 0x00, 0x0E, 0x00, 0x7F, 0x80, 0x7E, 0x1F, 0x38, 0x0C, + 0x38, 0x0C, 0x30, 0x08, 0x30, 0x08, 0x70, 0x08, 0x70, 0x10, 0x60, 0x10, + 0x60, 0x10, 0xE0, 0x10, 0xC0, 0x20, 0xC0, 0x20, 0xC0, 0x60, 0xC0, 0x40, + 0x61, 0x80, 0x3F, 0x00, 0xFC, 0x3E, 0xE0, 0x18, 0xC0, 0x21, 0x80, 0xC3, + 0x81, 0x07, 0x04, 0x0E, 0x08, 0x0C, 0x20, 0x18, 0x80, 0x31, 0x00, 0x64, + 0x00, 0xF0, 0x01, 0xE0, 0x01, 0x80, 0x02, 0x00, 0x04, 0x00, 0xFD, 0xF8, + 0xF7, 0x07, 0x06, 0x30, 0x60, 0x63, 0x07, 0x04, 0x30, 0x70, 0x83, 0x8F, + 0x08, 0x38, 0xB1, 0x03, 0x93, 0x10, 0x19, 0x32, 0x01, 0xA3, 0x20, 0x1A, + 0x34, 0x01, 0xC3, 0x40, 0x1C, 0x38, 0x01, 0x83, 0x00, 0x18, 0x30, 0x01, + 0x02, 0x00, 0x1F, 0x9F, 0x0E, 0x06, 0x06, 0x04, 0x07, 0x08, 0x03, 0x10, + 0x03, 0x20, 0x03, 0xC0, 0x01, 0x80, 0x01, 0xC0, 0x03, 0xC0, 0x06, 0xE0, + 0x0C, 0x60, 0x18, 0x60, 0x30, 0x70, 0x70, 0x78, 0xF8, 0xFC, 0xFC, 0xFB, + 0x81, 0x8C, 0x08, 0x60, 0x83, 0x8C, 0x0C, 0xC0, 0x64, 0x03, 0xC0, 0x0C, + 0x00, 0xE0, 0x07, 0x00, 0x30, 0x01, 0x80, 0x1C, 0x00, 0xC0, 0x1F, 0xC0, + 0x1F, 0xFE, 0x30, 0x38, 0xC0, 0xF1, 0x01, 0xC0, 0x07, 0x00, 0x1C, 0x00, + 0x70, 0x01, 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x38, 0x00, 0xE0, 0x01, 0xC0, + 0x47, 0x01, 0x1C, 0x06, 0x7F, 0xF8, 0x07, 0x04, 0x08, 0x08, 0x08, 0x18, + 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x80, 0x80, + 0x80, 0xE0, 0xC0, 0xC0, 0x40, 0x60, 0x20, 0x30, 0x30, 0x18, 0x18, 0x08, + 0x0C, 0x04, 0x06, 0x06, 0x03, 0x03, 0x0E, 0x04, 0x08, 0x10, 0x60, 0x81, + 0x02, 0x04, 0x18, 0x20, 0x40, 0x81, 0x02, 0x08, 0x10, 0x20, 0x47, 0x80, + 0x0C, 0x03, 0x81, 0xE0, 0x4C, 0x33, 0x08, 0x66, 0x19, 0x03, 0xC0, 0xC0, + 0xFF, 0xF0, 0xCE, 0x63, 0x07, 0xA0, 0xCE, 0x18, 0x63, 0x04, 0x60, 0xC6, + 0x0C, 0xC0, 0xCC, 0x18, 0xC3, 0x8C, 0x5A, 0x79, 0xC0, 0x38, 0x06, 0x01, + 0x80, 0x40, 0x30, 0x0C, 0xE3, 0xCC, 0xC3, 0x70, 0xD8, 0x36, 0x19, 0x06, + 0xC3, 0x30, 0x8C, 0xC3, 0xE0, 0x0F, 0x0C, 0xCC, 0x6C, 0x06, 0x06, 0x03, + 0x01, 0x80, 0xC0, 0x73, 0x1E, 0x00, 0x00, 0x70, 0x01, 0x80, 0x0C, 0x00, + 0x60, 0x02, 0x03, 0xF0, 0x31, 0x83, 0x08, 0x30, 0xC3, 0x06, 0x18, 0x31, + 0x81, 0x8C, 0x18, 0x61, 0xCB, 0x16, 0x8F, 0x38, 0x07, 0x19, 0x31, 0x63, + 0x62, 0xEC, 0xD0, 0xC0, 0xC0, 0xE6, 0x78, 0x00, 0x38, 0x01, 0x30, 0x0C, + 0x00, 0x20, 0x01, 0x80, 0x06, 0x00, 0xFE, 0x00, 0x40, 0x03, 0x00, 0x0C, + 0x00, 0x30, 0x00, 0x80, 0x06, 0x00, 0x18, 0x00, 0x60, 0x01, 0x80, 0x04, + 0x00, 0x30, 0x00, 0xC0, 0x02, 0x00, 0x90, 0x03, 0x80, 0x00, 0x07, 0xC0, + 0xC7, 0x18, 0x61, 0x86, 0x18, 0xE1, 0x8C, 0x07, 0x80, 0x80, 0x1C, 0x00, + 0xF0, 0x33, 0x84, 0x18, 0x80, 0x88, 0x08, 0x61, 0x03, 0xE0, 0x1C, 0x00, + 0xC0, 0x0C, 0x00, 0xC0, 0x18, 0x01, 0x8E, 0x1B, 0x61, 0xC6, 0x38, 0x63, + 0x8C, 0x30, 0xC3, 0x0C, 0x60, 0xC6, 0x1A, 0x61, 0xA4, 0x1C, 0x18, 0xC6, + 0x00, 0x0B, 0xC6, 0x23, 0x18, 0x8C, 0x63, 0x5C, 0x01, 0x80, 0xC0, 0x60, + 0x00, 0x00, 0x0C, 0x1E, 0x02, 0x03, 0x01, 0x80, 0xC0, 0x40, 0x60, 0x30, + 0x18, 0x08, 0x0C, 0x06, 0x02, 0x1B, 0x0F, 0x00, 0x1C, 0x01, 0x80, 0x30, + 0x06, 0x01, 0x80, 0x33, 0xC6, 0x30, 0x88, 0x32, 0x06, 0x80, 0xF0, 0x1B, + 0x06, 0x60, 0xC4, 0x18, 0xD2, 0x0C, 0x3C, 0x61, 0x86, 0x18, 0xC3, 0x0C, + 0x21, 0x86, 0x18, 0x43, 0x2D, 0x38, 0x78, 0xE7, 0x0D, 0xB5, 0x8D, 0x1C, + 0xC7, 0x0C, 0x63, 0x8E, 0x31, 0x86, 0x30, 0xC3, 0x18, 0xC1, 0x0C, 0x61, + 0x84, 0xB0, 0xC6, 0xB0, 0x63, 0x80, 0x78, 0xE1, 0xB6, 0x14, 0x63, 0x84, + 0x38, 0xC3, 0x0C, 0x70, 0x86, 0x18, 0x61, 0x96, 0x1A, 0xC1, 0xC0, 0x0F, + 0x06, 0x63, 0x0D, 0x83, 0x60, 0xF0, 0x3C, 0x1B, 0x06, 0xC3, 0x39, 0x87, + 0x80, 0x1E, 0xF0, 0x39, 0xC1, 0x86, 0x0C, 0x30, 0xC1, 0x86, 0x0C, 0x30, + 0xC3, 0x06, 0x18, 0x60, 0xC6, 0x07, 0xC0, 0x60, 0x03, 0x00, 0x18, 0x00, + 0xC0, 0x1F, 0x00, 0x07, 0x81, 0x9C, 0x63, 0x98, 0x76, 0x0C, 0xC1, 0xB0, + 0x76, 0x0E, 0xC3, 0x98, 0xB1, 0xE6, 0x00, 0x80, 0x30, 0x06, 0x00, 0xC0, + 0xFC, 0x79, 0x8F, 0xC5, 0x07, 0x03, 0x01, 0x80, 0xC0, 0xC0, 0x60, 0x30, + 0x10, 0x00, 0x1E, 0x98, 0xCC, 0x27, 0x11, 0x80, 0xE0, 0x39, 0x0C, 0x86, + 0x62, 0x2E, 0x00, 0x08, 0x67, 0xCC, 0x30, 0xC6, 0x18, 0x61, 0x8C, 0x34, + 0xE0, 0xF0, 0xCC, 0x19, 0x83, 0x30, 0xC6, 0x18, 0x87, 0x31, 0x66, 0x3C, + 0xCB, 0x1A, 0x6B, 0x8E, 0x00, 0x70, 0xCC, 0x33, 0x04, 0xC2, 0x18, 0x86, + 0x41, 0x90, 0x68, 0x1C, 0x06, 0x01, 0x00, 0x61, 0x0F, 0x84, 0x36, 0x30, + 0xDC, 0xC1, 0x35, 0x08, 0xD4, 0x23, 0x91, 0x0E, 0x48, 0x30, 0xE0, 0xC3, + 0x02, 0x08, 0x00, 0x0C, 0x63, 0x4A, 0x07, 0x00, 0x70, 0x06, 0x00, 0x20, + 0x07, 0x00, 0xB0, 0x0B, 0x21, 0x14, 0xE1, 0x80, 0x38, 0x63, 0x0C, 0x30, + 0x86, 0x10, 0xC4, 0x0C, 0x81, 0xA0, 0x34, 0x07, 0x00, 0x60, 0x08, 0x02, + 0x00, 0x40, 0x10, 0x04, 0x07, 0x00, 0x1F, 0x90, 0x80, 0x80, 0xC0, 0xC0, + 0x40, 0x60, 0x60, 0x60, 0x38, 0x3E, 0x03, 0xA0, 0x60, 0x00, 0x83, 0x81, + 0x01, 0x80, 0xC0, 0x40, 0x60, 0x30, 0x10, 0x10, 0x1C, 0x06, 0x03, 0x03, + 0x01, 0x80, 0xC0, 0x40, 0x60, 0x30, 0x18, 0x07, 0x00, 0xFF, 0xFF, 0x07, + 0x00, 0xC0, 0x60, 0x30, 0x10, 0x18, 0x0C, 0x06, 0x06, 0x03, 0x01, 0x80, + 0x60, 0x40, 0x60, 0x30, 0x10, 0x18, 0x0C, 0x06, 0x06, 0x06, 0x00, 0x78, + 0x18, 0x8C, 0x0F, 0x00}; + +const GFXglyph FreeSerifItalic12pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 6, 0, 1}, // 0x20 ' ' + {0, 6, 16, 8, 1, -15}, // 0x21 '!' + {12, 7, 6, 8, 3, -15}, // 0x22 '"' + {18, 13, 16, 12, 0, -15}, // 0x23 '#' + {44, 12, 20, 12, 0, -17}, // 0x24 '$' + {74, 17, 17, 20, 2, -16}, // 0x25 '%' + {111, 15, 16, 19, 2, -15}, // 0x26 '&' + {141, 2, 6, 5, 4, -15}, // 0x27 ''' + {143, 7, 20, 8, 1, -15}, // 0x28 '(' + {161, 7, 20, 8, 0, -15}, // 0x29 ')' + {179, 8, 10, 12, 4, -15}, // 0x2A '*' + {189, 11, 11, 16, 2, -10}, // 0x2B '+' + {205, 3, 6, 6, 0, -2}, // 0x2C ',' + {208, 5, 1, 8, 1, -5}, // 0x2D '-' + {209, 2, 3, 6, 1, -2}, // 0x2E '.' + {210, 11, 16, 7, 0, -15}, // 0x2F '/' + {232, 11, 17, 12, 1, -16}, // 0x30 '0' + {256, 9, 17, 12, 1, -16}, // 0x31 '1' + {276, 10, 15, 12, 1, -14}, // 0x32 '2' + {295, 10, 16, 12, 1, -15}, // 0x33 '3' + {315, 11, 16, 12, 0, -15}, // 0x34 '4' + {337, 11, 16, 12, 0, -15}, // 0x35 '5' + {359, 12, 17, 12, 1, -16}, // 0x36 '6' + {385, 11, 16, 12, 2, -15}, // 0x37 '7' + {407, 11, 17, 12, 1, -16}, // 0x38 '8' + {431, 11, 17, 12, 1, -16}, // 0x39 '9' + {455, 4, 11, 6, 1, -10}, // 0x3A ':' + {461, 5, 14, 6, 0, -10}, // 0x3B ';' + {470, 12, 13, 14, 1, -12}, // 0x3C '<' + {490, 12, 6, 16, 2, -8}, // 0x3D '=' + {499, 12, 13, 14, 2, -12}, // 0x3E '>' + {519, 9, 16, 11, 3, -15}, // 0x3F '?' + {537, 16, 16, 19, 2, -15}, // 0x40 '@' + {569, 15, 15, 16, 0, -14}, // 0x41 'A' + {598, 14, 16, 14, 0, -15}, // 0x42 'B' + {626, 16, 16, 15, 1, -15}, // 0x43 'C' + {658, 16, 16, 17, 0, -15}, // 0x44 'D' + {690, 16, 16, 14, 0, -15}, // 0x45 'E' + {722, 16, 16, 14, 0, -15}, // 0x46 'F' + {754, 16, 16, 17, 1, -15}, // 0x47 'G' + {786, 19, 16, 17, 0, -15}, // 0x48 'H' + {824, 9, 16, 8, 0, -15}, // 0x49 'I' + {842, 12, 16, 10, 0, -15}, // 0x4A 'J' + {866, 17, 16, 15, 0, -15}, // 0x4B 'K' + {900, 14, 16, 14, 0, -15}, // 0x4C 'L' + {928, 21, 16, 20, 0, -15}, // 0x4D 'M' + {970, 18, 16, 16, 0, -15}, // 0x4E 'N' + {1006, 15, 16, 16, 1, -15}, // 0x4F 'O' + {1036, 14, 16, 14, 0, -15}, // 0x50 'P' + {1064, 15, 20, 16, 1, -15}, // 0x51 'Q' + {1102, 14, 16, 15, 0, -15}, // 0x52 'R' + {1130, 12, 16, 11, 0, -15}, // 0x53 'S' + {1154, 15, 16, 14, 2, -15}, // 0x54 'T' + {1184, 16, 16, 17, 3, -15}, // 0x55 'U' + {1216, 15, 16, 16, 3, -15}, // 0x56 'V' + {1246, 20, 16, 21, 3, -15}, // 0x57 'W' + {1286, 16, 16, 16, 0, -15}, // 0x58 'X' + {1318, 13, 16, 14, 3, -15}, // 0x59 'Y' + {1344, 15, 16, 14, 0, -15}, // 0x5A 'Z' + {1374, 8, 20, 9, 1, -15}, // 0x5B '[' + {1394, 8, 16, 12, 3, -15}, // 0x5C '\' + {1410, 7, 20, 9, 1, -15}, // 0x5D ']' + {1428, 10, 9, 10, 0, -15}, // 0x5E '^' + {1440, 12, 1, 12, 0, 3}, // 0x5F '_' + {1442, 4, 4, 6, 3, -15}, // 0x60 '`' + {1444, 12, 11, 12, 0, -10}, // 0x61 'a' + {1461, 10, 16, 11, 1, -15}, // 0x62 'b' + {1481, 9, 11, 10, 1, -10}, // 0x63 'c' + {1494, 13, 16, 12, 0, -15}, // 0x64 'd' + {1520, 8, 11, 10, 1, -10}, // 0x65 'e' + {1531, 14, 22, 10, -2, -16}, // 0x66 'f' + {1570, 12, 16, 11, -1, -10}, // 0x67 'g' + {1594, 12, 16, 12, 0, -15}, // 0x68 'h' + {1618, 5, 16, 6, 1, -15}, // 0x69 'i' + {1628, 9, 21, 7, -2, -15}, // 0x6A 'j' + {1652, 11, 16, 11, 0, -15}, // 0x6B 'k' + {1674, 6, 16, 6, 1, -15}, // 0x6C 'l' + {1686, 17, 11, 17, 0, -10}, // 0x6D 'm' + {1710, 12, 11, 12, 0, -10}, // 0x6E 'n' + {1727, 10, 11, 11, 1, -10}, // 0x6F 'o' + {1741, 13, 16, 11, -2, -10}, // 0x70 'p' + {1767, 11, 16, 12, 0, -10}, // 0x71 'q' + {1789, 9, 11, 9, 0, -10}, // 0x72 'r' + {1802, 9, 11, 8, 0, -10}, // 0x73 's' + {1815, 6, 13, 6, 1, -12}, // 0x74 't' + {1825, 11, 11, 12, 1, -10}, // 0x75 'u' + {1841, 10, 11, 11, 1, -10}, // 0x76 'v' + {1855, 14, 11, 16, 2, -10}, // 0x77 'w' + {1875, 12, 11, 10, -1, -10}, // 0x78 'x' + {1892, 11, 16, 11, 0, -10}, // 0x79 'y' + {1914, 9, 13, 9, 0, -10}, // 0x7A 'z' + {1929, 9, 21, 10, 1, -16}, // 0x7B '{' + {1953, 1, 16, 7, 3, -15}, // 0x7C '|' + {1955, 9, 21, 10, 0, -16}, // 0x7D '}' + {1979, 11, 3, 13, 1, -6}}; // 0x7E '~' + +const GFXfont FreeSerifItalic12pt7b PROGMEM = { + (uint8_t *)FreeSerifItalic12pt7bBitmaps, + (GFXglyph *)FreeSerifItalic12pt7bGlyphs, 0x20, 0x7E, 29}; + +// Approx. 2656 bytes diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifItalic18pt7b.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifItalic18pt7b.h new file mode 100644 index 0000000..c25db35 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifItalic18pt7b.h @@ -0,0 +1,452 @@ +#pragma once +#include + +const uint8_t FreeSerifItalic18pt7bBitmaps[] PROGMEM = { + 0x01, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0x81, 0xE0, 0x70, 0x1C, 0x06, 0x01, + 0x80, 0xC0, 0x30, 0x0C, 0x02, 0x01, 0x80, 0x40, 0x10, 0x00, 0x00, 0x01, + 0x80, 0xF0, 0x3C, 0x06, 0x00, 0x38, 0x77, 0x8F, 0x78, 0xF7, 0x0E, 0x60, + 0xE6, 0x0C, 0xC1, 0x8C, 0x18, 0x81, 0x00, 0x00, 0x60, 0xC0, 0x0C, 0x38, + 0x03, 0x86, 0x00, 0x60, 0xC0, 0x0C, 0x38, 0x03, 0x06, 0x00, 0x60, 0xC0, + 0xFF, 0xFF, 0x1F, 0xFF, 0xE0, 0x61, 0xC0, 0x1C, 0x30, 0x03, 0x06, 0x00, + 0x61, 0xC0, 0x18, 0x30, 0x3F, 0xFF, 0xC7, 0xFF, 0xF8, 0x18, 0x30, 0x03, + 0x0E, 0x00, 0xE1, 0x80, 0x18, 0x30, 0x03, 0x0C, 0x00, 0xC1, 0x80, 0x18, + 0x70, 0x00, 0x00, 0x08, 0x00, 0x30, 0x00, 0x40, 0x0F, 0xC0, 0x61, 0xE1, + 0x86, 0xC6, 0x0D, 0x8C, 0x1A, 0x18, 0x24, 0x38, 0xC0, 0x39, 0x80, 0x7F, + 0x00, 0x7E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x7C, 0x00, 0xDC, 0x03, 0x38, + 0x06, 0x32, 0x0C, 0x64, 0x18, 0xDC, 0x71, 0xB8, 0xC6, 0x39, 0x8C, 0x3F, + 0x30, 0x1F, 0x80, 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, 0x07, 0x80, 0x60, + 0x0F, 0xE0, 0xE0, 0x0F, 0x0F, 0xB0, 0x0E, 0x04, 0x30, 0x07, 0x02, 0x18, + 0x07, 0x01, 0x18, 0x03, 0x00, 0x8C, 0x01, 0x80, 0x8C, 0x00, 0xC0, 0x4C, + 0x00, 0x60, 0x66, 0x1F, 0x30, 0x66, 0x1F, 0xCC, 0x63, 0x1C, 0x67, 0xE3, + 0x1C, 0x19, 0xE1, 0x1C, 0x04, 0x01, 0x8C, 0x02, 0x00, 0x8E, 0x01, 0x00, + 0xC7, 0x00, 0x80, 0xC3, 0x00, 0x80, 0x61, 0x80, 0xC0, 0x60, 0xC0, 0xC0, + 0x20, 0x70, 0xE0, 0x30, 0x1F, 0xC0, 0x10, 0x07, 0xC0, 0x00, 0x1E, 0x00, + 0x00, 0xFC, 0x00, 0x07, 0x18, 0x00, 0x18, 0x60, 0x00, 0xE1, 0x80, 0x03, + 0x8C, 0x00, 0x0E, 0x60, 0x00, 0x3B, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x80, + 0x00, 0x7F, 0x1F, 0xC3, 0x3C, 0x1C, 0x38, 0x70, 0x61, 0xE1, 0xE3, 0x87, + 0x07, 0x8C, 0x3C, 0x0F, 0x60, 0xF0, 0x3D, 0x03, 0xC0, 0x78, 0x0F, 0x01, + 0xE0, 0x3E, 0x07, 0xC0, 0x7C, 0x77, 0x84, 0xFF, 0x8F, 0xE1, 0xF8, 0x0F, + 0x00, 0x3B, 0xDE, 0xE7, 0x33, 0x18, 0x80, 0x00, 0x80, 0x80, 0x80, 0x80, + 0xC0, 0xC0, 0xE0, 0x60, 0x70, 0x38, 0x18, 0x0C, 0x0E, 0x07, 0x03, 0x01, + 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x01, 0x00, 0x80, 0x40, 0x30, + 0x08, 0x04, 0x02, 0x00, 0x04, 0x01, 0x00, 0x80, 0x60, 0x10, 0x08, 0x04, + 0x03, 0x01, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x0E, 0x07, 0x03, 0x81, + 0x80, 0xC0, 0xE0, 0x60, 0x30, 0x30, 0x18, 0x18, 0x08, 0x08, 0x08, 0x08, + 0x00, 0x06, 0x00, 0x60, 0x06, 0x0C, 0x43, 0xE4, 0xF1, 0x58, 0x0E, 0x00, + 0xF0, 0x74, 0xEE, 0x47, 0xC4, 0x30, 0x60, 0x06, 0x00, 0x60, 0x01, 0x80, + 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, + 0x01, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, + 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x31, 0xCE, + 0x31, 0x08, 0x98, 0xFF, 0xFF, 0x6F, 0xF6, 0x00, 0x06, 0x00, 0x0E, 0x00, + 0x0C, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x30, 0x00, 0x70, 0x00, 0x60, 0x00, + 0xE0, 0x00, 0xC0, 0x01, 0xC0, 0x03, 0x80, 0x03, 0x00, 0x07, 0x00, 0x06, + 0x00, 0x0E, 0x00, 0x0C, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x30, 0x00, 0x70, + 0x00, 0x60, 0x00, 0xE0, 0x00, 0x00, 0x78, 0x00, 0xC3, 0x00, 0xC1, 0xC0, + 0xC0, 0x60, 0xE0, 0x30, 0xE0, 0x1C, 0x70, 0x0E, 0x70, 0x07, 0x38, 0x03, + 0xBC, 0x01, 0xDC, 0x01, 0xEE, 0x00, 0xFF, 0x00, 0x7F, 0x80, 0x3B, 0x80, + 0x1D, 0xC0, 0x1E, 0xE0, 0x0E, 0x70, 0x0F, 0x38, 0x07, 0x1C, 0x07, 0x06, + 0x03, 0x83, 0x83, 0x80, 0xC3, 0x00, 0x1F, 0x00, 0x00, 0xF0, 0x7F, 0x00, + 0x70, 0x07, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x01, 0xC0, 0x1C, 0x01, + 0xC0, 0x38, 0x03, 0x80, 0x38, 0x03, 0x80, 0x70, 0x07, 0x00, 0x70, 0x0E, + 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x1E, 0x0F, 0xF8, 0x01, 0xF0, 0x07, 0xFC, + 0x0C, 0x3E, 0x10, 0x1F, 0x20, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, + 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x30, 0x00, 0x70, 0x00, 0xE0, + 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x04, + 0x30, 0x0C, 0x7F, 0xF8, 0xFF, 0xF0, 0x00, 0x7C, 0x00, 0xFF, 0x00, 0xC3, + 0xC0, 0x80, 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1C, 0x00, 0x1C, 0x00, + 0x38, 0x00, 0xF0, 0x03, 0xFC, 0x00, 0x1F, 0x00, 0x03, 0xC0, 0x01, 0xE0, + 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x06, 0x00, 0x07, + 0x00, 0x03, 0x07, 0x87, 0x03, 0xFF, 0x00, 0xFC, 0x00, 0x00, 0x01, 0x80, + 0x01, 0x80, 0x01, 0xC0, 0x01, 0xE0, 0x01, 0xF0, 0x01, 0xB0, 0x01, 0xB8, + 0x01, 0x9C, 0x01, 0x8C, 0x00, 0x86, 0x00, 0x87, 0x00, 0x83, 0x80, 0x81, + 0x80, 0x81, 0xC0, 0xC0, 0xE0, 0xC0, 0x70, 0xFF, 0xFF, 0x7F, 0xFF, 0x00, + 0x1C, 0x00, 0x0C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x03, 0x80, 0x01, 0x80, + 0x01, 0xFF, 0x01, 0xFF, 0x02, 0x00, 0x02, 0x00, 0x06, 0x00, 0x07, 0x00, + 0x0F, 0xC0, 0x0F, 0xF0, 0x00, 0xF8, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x1C, + 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x18, + 0x00, 0x30, 0x00, 0x30, 0x70, 0xE0, 0xFF, 0x80, 0x7E, 0x00, 0x00, 0x03, + 0x80, 0x1F, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, + 0x00, 0x3C, 0x00, 0x3D, 0xF0, 0x1F, 0xFE, 0x1F, 0x0F, 0x8E, 0x03, 0xC7, + 0x00, 0xF7, 0x00, 0x7B, 0x80, 0x3D, 0x80, 0x1E, 0xC0, 0x0F, 0x60, 0x0F, + 0xB0, 0x07, 0x98, 0x03, 0xC4, 0x03, 0xC3, 0x03, 0xC0, 0xC3, 0x80, 0x1F, + 0x00, 0x3F, 0xFF, 0x7F, 0xFE, 0x40, 0x0E, 0x80, 0x0C, 0x00, 0x18, 0x00, + 0x18, 0x00, 0x30, 0x00, 0x70, 0x00, 0x60, 0x00, 0xC0, 0x01, 0xC0, 0x01, + 0x80, 0x03, 0x80, 0x03, 0x00, 0x06, 0x00, 0x0E, 0x00, 0x0C, 0x00, 0x1C, + 0x00, 0x18, 0x00, 0x30, 0x00, 0x70, 0x00, 0x60, 0x00, 0xE0, 0x00, 0x00, + 0xF8, 0x03, 0x0E, 0x06, 0x06, 0x0C, 0x03, 0x0C, 0x03, 0x0C, 0x03, 0x0C, + 0x03, 0x0E, 0x06, 0x07, 0x8E, 0x07, 0xD8, 0x03, 0xE0, 0x07, 0xF0, 0x1C, + 0xF8, 0x30, 0x3C, 0x60, 0x1C, 0x60, 0x0E, 0xC0, 0x06, 0xC0, 0x06, 0xC0, + 0x06, 0xC0, 0x06, 0xE0, 0x0C, 0x60, 0x18, 0x38, 0x30, 0x0F, 0xC0, 0x01, + 0xF8, 0x07, 0x8C, 0x0E, 0x06, 0x1E, 0x02, 0x3C, 0x03, 0x3C, 0x03, 0x78, + 0x03, 0x78, 0x03, 0x78, 0x03, 0x78, 0x07, 0x78, 0x07, 0x78, 0x07, 0x3C, + 0x0E, 0x3E, 0x1E, 0x1F, 0xEE, 0x07, 0x9C, 0x00, 0x38, 0x00, 0x78, 0x00, + 0x70, 0x01, 0xE0, 0x03, 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xE0, 0x00, 0x0C, + 0x3C, 0x78, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x1E, 0x18, + 0x00, 0x07, 0x03, 0xC1, 0xE0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x03, 0x81, 0xC0, 0xE0, 0x30, 0x10, 0x10, 0x10, 0x00, 0x00, + 0x00, 0x00, 0xC0, 0x01, 0xF0, 0x01, 0xF8, 0x01, 0xF8, 0x01, 0xF0, 0x01, + 0xF0, 0x03, 0xF0, 0x03, 0xF0, 0x00, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xE0, + 0x00, 0x7E, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xF0, 0x00, 0x3F, + 0x00, 0x03, 0xC0, 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFF, + 0xFF, 0xC0, 0xC0, 0x00, 0x3C, 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0x07, + 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x3F, 0x00, 0x03, 0xC0, 0x01, + 0xF0, 0x01, 0xF8, 0x01, 0xF8, 0x01, 0xF0, 0x01, 0xF0, 0x03, 0xF0, 0x03, + 0xF0, 0x00, 0xF0, 0x00, 0x20, 0x00, 0x00, 0x0F, 0x81, 0x86, 0x30, 0x33, + 0x03, 0x30, 0x30, 0x03, 0x00, 0x60, 0x0E, 0x01, 0xC0, 0x38, 0x06, 0x00, + 0xC0, 0x08, 0x01, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, + 0x00, 0xF0, 0x0F, 0x00, 0x60, 0x00, 0x00, 0x7F, 0x00, 0x03, 0xFF, 0xE0, + 0x07, 0x80, 0xF0, 0x0E, 0x00, 0x38, 0x1C, 0x00, 0x0C, 0x38, 0x0E, 0x06, + 0x70, 0x3F, 0xE2, 0x70, 0x71, 0xE3, 0xF0, 0x60, 0xE1, 0xE0, 0xC0, 0xC1, + 0xE0, 0xC0, 0xC1, 0xE1, 0x81, 0xC1, 0xE1, 0x81, 0xC1, 0xE1, 0x81, 0x82, + 0xE1, 0x83, 0x82, 0x71, 0x83, 0x86, 0x71, 0xC7, 0x8C, 0x38, 0xF9, 0xF8, + 0x3C, 0xF0, 0xF0, 0x1E, 0x00, 0x00, 0x0F, 0x80, 0x30, 0x03, 0xFF, 0xE0, + 0x00, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, 0x01, 0xC0, 0x00, + 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x5E, 0x00, 0x04, 0xF0, + 0x00, 0x63, 0x80, 0x02, 0x1C, 0x00, 0x20, 0xE0, 0x01, 0x07, 0x00, 0x10, + 0x3C, 0x01, 0xFF, 0xE0, 0x0F, 0xFF, 0x00, 0xC0, 0x38, 0x04, 0x01, 0xC0, + 0x60, 0x0E, 0x06, 0x00, 0x78, 0x30, 0x03, 0xC3, 0x00, 0x1E, 0x38, 0x00, + 0xFB, 0xF0, 0x1F, 0xE0, 0x07, 0xFF, 0x80, 0x0F, 0xFF, 0x00, 0x78, 0x3C, + 0x03, 0xC0, 0xF0, 0x1E, 0x07, 0x80, 0xE0, 0x3C, 0x07, 0x01, 0xE0, 0x78, + 0x1E, 0x03, 0x83, 0xE0, 0x1F, 0xF8, 0x01, 0xFF, 0xC0, 0x0F, 0x0F, 0x00, + 0x70, 0x3C, 0x03, 0x80, 0xF0, 0x3C, 0x07, 0x81, 0xC0, 0x3C, 0x0E, 0x01, + 0xE0, 0xF0, 0x0F, 0x07, 0x80, 0xF0, 0x38, 0x0F, 0x81, 0xC1, 0xF8, 0x1F, + 0xFF, 0x83, 0xFF, 0xE0, 0x00, 0x00, 0x3F, 0x08, 0x07, 0xFF, 0xC0, 0xF8, + 0x3E, 0x0F, 0x00, 0x70, 0xF0, 0x03, 0x8F, 0x00, 0x08, 0xF0, 0x00, 0x47, + 0x80, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x01, 0xE0, 0x00, + 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xF0, + 0x00, 0x03, 0x80, 0x02, 0x1E, 0x00, 0x20, 0x78, 0x02, 0x03, 0xE0, 0x60, + 0x07, 0xFE, 0x00, 0x0F, 0xC0, 0x00, 0x07, 0xFF, 0xC0, 0x00, 0xFF, 0xFC, + 0x00, 0x78, 0x1F, 0x00, 0x3C, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x0E, 0x00, + 0x78, 0x07, 0x00, 0x1E, 0x07, 0x80, 0x0F, 0x03, 0x80, 0x07, 0x81, 0xC0, + 0x03, 0xC1, 0xE0, 0x01, 0xE0, 0xF0, 0x00, 0xF0, 0x70, 0x00, 0x78, 0x38, + 0x00, 0x78, 0x3C, 0x00, 0x3C, 0x1E, 0x00, 0x3E, 0x0E, 0x00, 0x1E, 0x0F, + 0x00, 0x1E, 0x07, 0x80, 0x1E, 0x03, 0x80, 0x3E, 0x01, 0xC0, 0x7E, 0x01, + 0xFF, 0xFC, 0x03, 0xFF, 0xF0, 0x00, 0x07, 0xFF, 0xFC, 0x07, 0xFF, 0xF0, + 0x1E, 0x01, 0xC0, 0x78, 0x02, 0x01, 0xE0, 0x08, 0x07, 0x00, 0x00, 0x1C, + 0x08, 0x00, 0xF0, 0x60, 0x03, 0x83, 0x80, 0x0F, 0xFC, 0x00, 0x7F, 0xF0, + 0x01, 0xE0, 0xC0, 0x07, 0x03, 0x00, 0x1C, 0x08, 0x00, 0xF0, 0x20, 0x03, + 0x80, 0x00, 0x0E, 0x00, 0x00, 0x78, 0x00, 0x81, 0xE0, 0x06, 0x07, 0x00, + 0x38, 0x1C, 0x03, 0xC0, 0xFF, 0xFF, 0x0F, 0xFF, 0xFC, 0x00, 0x07, 0xFF, + 0xFC, 0x07, 0xFF, 0xF0, 0x1E, 0x01, 0xC0, 0x78, 0x02, 0x01, 0xE0, 0x08, + 0x07, 0x00, 0x20, 0x1C, 0x00, 0x00, 0xF0, 0x20, 0x03, 0x81, 0x80, 0x0E, + 0x0C, 0x00, 0x7F, 0xF0, 0x01, 0xFF, 0xC0, 0x07, 0x03, 0x00, 0x1C, 0x0C, + 0x00, 0xF0, 0x20, 0x03, 0xC0, 0x00, 0x0E, 0x00, 0x00, 0x78, 0x00, 0x01, + 0xE0, 0x00, 0x07, 0x00, 0x00, 0x1C, 0x00, 0x00, 0xF8, 0x00, 0x0F, 0xF8, + 0x00, 0x00, 0x00, 0x3F, 0x02, 0x01, 0xFF, 0x88, 0x0F, 0x81, 0xF0, 0x3C, + 0x01, 0xE0, 0xF0, 0x01, 0xC3, 0xC0, 0x01, 0x0F, 0x80, 0x02, 0x1E, 0x00, + 0x00, 0x7C, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x07, 0xC0, 0x00, + 0x0F, 0x00, 0x3F, 0xFE, 0x00, 0x1E, 0x3C, 0x00, 0x38, 0x78, 0x00, 0x70, + 0xF0, 0x00, 0xE0, 0xE0, 0x01, 0xC1, 0xE0, 0x07, 0x01, 0xE0, 0x0E, 0x01, + 0xF0, 0x3C, 0x01, 0xFF, 0xF0, 0x00, 0xFF, 0x00, 0x00, 0x07, 0xFC, 0x3F, + 0xE0, 0x3E, 0x00, 0xF0, 0x07, 0x80, 0x1C, 0x00, 0xF0, 0x03, 0x80, 0x1C, + 0x00, 0xF0, 0x03, 0x80, 0x1E, 0x00, 0x70, 0x03, 0x80, 0x1E, 0x00, 0x70, + 0x03, 0x80, 0x1E, 0x00, 0x70, 0x03, 0x80, 0x1F, 0xFF, 0xF0, 0x03, 0xFF, + 0xFE, 0x00, 0x70, 0x03, 0xC0, 0x0E, 0x00, 0x70, 0x03, 0xC0, 0x0E, 0x00, + 0x70, 0x03, 0xC0, 0x0E, 0x00, 0x78, 0x03, 0xC0, 0x0E, 0x00, 0x78, 0x01, + 0xC0, 0x0E, 0x00, 0x78, 0x01, 0xC0, 0x0E, 0x00, 0x78, 0x03, 0xE0, 0x3F, + 0xE1, 0xFF, 0x00, 0x07, 0xFC, 0x07, 0xC0, 0x1E, 0x00, 0x78, 0x01, 0xC0, + 0x07, 0x00, 0x1C, 0x00, 0xF0, 0x03, 0x80, 0x0E, 0x00, 0x78, 0x01, 0xE0, + 0x07, 0x00, 0x1C, 0x00, 0xF0, 0x03, 0x80, 0x0E, 0x00, 0x78, 0x01, 0xE0, + 0x07, 0x00, 0x1C, 0x00, 0xF0, 0x0F, 0xF8, 0x00, 0x00, 0xFF, 0x80, 0x0F, + 0x00, 0x07, 0x80, 0x03, 0x80, 0x01, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, + 0x70, 0x00, 0x38, 0x00, 0x3C, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x0F, 0x00, + 0x07, 0x80, 0x03, 0x80, 0x01, 0xC0, 0x01, 0xE0, 0x00, 0xE0, 0x00, 0x70, + 0x1E, 0x78, 0x0F, 0x38, 0x07, 0xF8, 0x01, 0xF0, 0x00, 0x07, 0xFC, 0x7F, + 0x80, 0xF8, 0x0F, 0x00, 0x38, 0x07, 0x00, 0x3C, 0x07, 0x00, 0x1C, 0x06, + 0x00, 0x0E, 0x06, 0x00, 0x07, 0x0C, 0x00, 0x07, 0x8C, 0x00, 0x03, 0x9C, + 0x00, 0x01, 0xD8, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x73, + 0x80, 0x00, 0x39, 0xE0, 0x00, 0x3C, 0x78, 0x00, 0x1C, 0x1C, 0x00, 0x0E, + 0x0F, 0x00, 0x07, 0x03, 0x80, 0x07, 0x81, 0xE0, 0x03, 0x80, 0x70, 0x01, + 0xC0, 0x3C, 0x01, 0xE0, 0x1F, 0x03, 0xFE, 0x3F, 0xE0, 0x07, 0xFC, 0x00, + 0x1F, 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, + 0x01, 0xC0, 0x00, 0x3C, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x07, 0x80, + 0x00, 0x78, 0x00, 0x07, 0x00, 0x00, 0x70, 0x00, 0x0F, 0x00, 0x00, 0xE0, + 0x00, 0x0E, 0x00, 0x11, 0xE0, 0x03, 0x1E, 0x00, 0x61, 0xC0, 0x06, 0x1C, + 0x01, 0xE3, 0xFF, 0xFC, 0xFF, 0xFF, 0xC0, 0x07, 0xF0, 0x00, 0x7E, 0x03, + 0xE0, 0x01, 0xF0, 0x03, 0xC0, 0x03, 0xE0, 0x07, 0x80, 0x0F, 0x80, 0x1F, + 0x00, 0x37, 0x00, 0x2E, 0x00, 0x5E, 0x00, 0x5C, 0x01, 0xB8, 0x01, 0xB8, + 0x06, 0x70, 0x02, 0x78, 0x09, 0xE0, 0x04, 0x70, 0x33, 0xC0, 0x08, 0xE0, + 0xC7, 0x00, 0x31, 0xC1, 0x0E, 0x00, 0x43, 0x86, 0x3C, 0x00, 0x87, 0x18, + 0x70, 0x03, 0x0E, 0x20, 0xE0, 0x06, 0x1C, 0xC3, 0xC0, 0x08, 0x3B, 0x07, + 0x80, 0x10, 0x7C, 0x0E, 0x00, 0x60, 0x78, 0x1C, 0x00, 0x80, 0xE0, 0x78, + 0x03, 0x01, 0x80, 0xF0, 0x07, 0x03, 0x03, 0xE0, 0x3F, 0x84, 0x1F, 0xF0, + 0x00, 0x07, 0xC0, 0x3F, 0xC0, 0x78, 0x03, 0xE0, 0x0E, 0x00, 0x70, 0x03, + 0xC0, 0x18, 0x01, 0xF0, 0x0E, 0x00, 0x6C, 0x03, 0x00, 0x1B, 0x80, 0xC0, + 0x0C, 0xE0, 0x30, 0x03, 0x18, 0x1C, 0x00, 0xC7, 0x06, 0x00, 0x30, 0xC1, + 0x80, 0x18, 0x38, 0xE0, 0x06, 0x06, 0x30, 0x01, 0x81, 0x8C, 0x00, 0xC0, + 0x73, 0x00, 0x30, 0x0D, 0xC0, 0x0C, 0x03, 0xE0, 0x03, 0x00, 0x78, 0x01, + 0x80, 0x1E, 0x00, 0x60, 0x07, 0x00, 0x38, 0x00, 0xC0, 0x0E, 0x00, 0x30, + 0x0F, 0xE0, 0x04, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0xFF, 0xE0, 0x07, 0xC1, + 0xE0, 0x1E, 0x01, 0xE0, 0x78, 0x01, 0xC1, 0xE0, 0x03, 0xC7, 0x80, 0x07, + 0x9F, 0x00, 0x0F, 0x3C, 0x00, 0x1E, 0xF8, 0x00, 0x3D, 0xE0, 0x00, 0xFF, + 0xC0, 0x01, 0xEF, 0x80, 0x03, 0xDE, 0x00, 0x0F, 0xBC, 0x00, 0x1E, 0x78, + 0x00, 0x7C, 0xF0, 0x00, 0xF1, 0xE0, 0x03, 0xC1, 0xC0, 0x0F, 0x03, 0xC0, + 0x3C, 0x03, 0xC1, 0xF0, 0x03, 0xFF, 0x80, 0x01, 0xFC, 0x00, 0x00, 0x07, + 0xFF, 0xC0, 0x07, 0xFF, 0xC0, 0x0E, 0x0F, 0x80, 0x78, 0x1F, 0x01, 0xC0, + 0x3C, 0x07, 0x00, 0xF0, 0x1C, 0x03, 0xC0, 0xF0, 0x0F, 0x03, 0x80, 0x78, + 0x0E, 0x01, 0xE0, 0x78, 0x1F, 0x01, 0xFF, 0xF8, 0x07, 0x7F, 0x00, 0x1C, + 0x00, 0x00, 0xF0, 0x00, 0x03, 0x80, 0x00, 0x0E, 0x00, 0x00, 0x78, 0x00, + 0x01, 0xE0, 0x00, 0x07, 0x00, 0x00, 0x1C, 0x00, 0x00, 0xF0, 0x00, 0x0F, + 0xF0, 0x00, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0xFF, 0xE0, 0x03, 0xC1, 0xE0, + 0x1E, 0x01, 0xC0, 0x78, 0x03, 0xC1, 0xE0, 0x03, 0x87, 0x80, 0x07, 0x8F, + 0x00, 0x0F, 0x3C, 0x00, 0x1E, 0x78, 0x00, 0x3D, 0xE0, 0x00, 0x7B, 0xC0, + 0x01, 0xFF, 0x80, 0x03, 0xDE, 0x00, 0x07, 0xBC, 0x00, 0x1F, 0x78, 0x00, + 0x3C, 0xF0, 0x00, 0xF1, 0xE0, 0x01, 0xE3, 0xC0, 0x07, 0x83, 0x80, 0x1E, + 0x07, 0x80, 0x78, 0x07, 0x01, 0xC0, 0x03, 0xDE, 0x00, 0x01, 0xC0, 0x00, + 0x06, 0x00, 0x00, 0x18, 0x00, 0x10, 0x7F, 0xC0, 0xC3, 0xFF, 0xFF, 0x08, + 0x07, 0xF0, 0x00, 0x07, 0xFF, 0x80, 0x0F, 0xFF, 0x00, 0x78, 0x3C, 0x03, + 0xC0, 0xF0, 0x1E, 0x07, 0x80, 0xE0, 0x3C, 0x07, 0x01, 0xE0, 0x78, 0x1E, + 0x03, 0x83, 0xF0, 0x1F, 0xFE, 0x01, 0xFF, 0xC0, 0x0F, 0x38, 0x00, 0x71, + 0xE0, 0x03, 0x87, 0x00, 0x3C, 0x38, 0x01, 0xC1, 0xE0, 0x0E, 0x07, 0x00, + 0xF0, 0x3C, 0x07, 0x81, 0xE0, 0x38, 0x07, 0x01, 0xC0, 0x3C, 0x1E, 0x00, + 0xF3, 0xFC, 0x07, 0xC0, 0x00, 0xF8, 0x81, 0xFF, 0xC1, 0xE1, 0xE1, 0xE0, + 0x70, 0xF0, 0x10, 0x78, 0x08, 0x3C, 0x00, 0x1F, 0x00, 0x07, 0x80, 0x01, + 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0xF8, + 0x80, 0x3C, 0x40, 0x1E, 0x20, 0x0F, 0x38, 0x07, 0x9E, 0x07, 0x8F, 0x87, + 0x84, 0x7F, 0xC2, 0x0F, 0x80, 0x3F, 0xFF, 0xF7, 0xFF, 0xFF, 0x70, 0x78, + 0x76, 0x07, 0x02, 0xC0, 0x70, 0x28, 0x0F, 0x02, 0x00, 0xF0, 0x00, 0x0E, + 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x03, + 0xC0, 0x00, 0x3C, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x07, 0x80, 0x00, + 0x70, 0x00, 0x07, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x01, 0xF0, 0x00, + 0xFF, 0xE0, 0x00, 0x7F, 0xE0, 0xFE, 0x3F, 0x00, 0x78, 0x3C, 0x00, 0x60, + 0xF0, 0x01, 0x81, 0xE0, 0x03, 0x03, 0xC0, 0x06, 0x07, 0x00, 0x08, 0x1E, + 0x00, 0x30, 0x3C, 0x00, 0x60, 0x70, 0x00, 0x81, 0xE0, 0x01, 0x03, 0xC0, + 0x06, 0x07, 0x80, 0x0C, 0x0E, 0x00, 0x10, 0x3C, 0x00, 0x60, 0x78, 0x00, + 0xC0, 0xF0, 0x01, 0x01, 0xE0, 0x06, 0x03, 0xC0, 0x08, 0x03, 0xC0, 0x30, + 0x07, 0xC1, 0xC0, 0x07, 0xFF, 0x00, 0x03, 0xF8, 0x00, 0x00, 0xFF, 0x01, + 0xFB, 0xE0, 0x07, 0x8E, 0x00, 0x18, 0x78, 0x01, 0x83, 0xC0, 0x0C, 0x1E, + 0x00, 0xC0, 0xF0, 0x06, 0x03, 0x80, 0x60, 0x1C, 0x02, 0x00, 0xE0, 0x30, + 0x07, 0x83, 0x00, 0x3C, 0x10, 0x01, 0xE1, 0x80, 0x07, 0x08, 0x00, 0x38, + 0x80, 0x01, 0xC4, 0x00, 0x0E, 0x40, 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, + 0x0E, 0x00, 0x00, 0x70, 0x00, 0x03, 0x00, 0x00, 0x10, 0x00, 0x00, 0xFF, + 0x3F, 0xC3, 0xFB, 0xE0, 0x78, 0x07, 0x8E, 0x03, 0xC0, 0x18, 0x78, 0x0E, + 0x01, 0x83, 0xC0, 0x70, 0x0C, 0x1E, 0x03, 0x80, 0x40, 0xF0, 0x3C, 0x06, + 0x03, 0x81, 0xE0, 0x60, 0x1C, 0x17, 0x83, 0x00, 0xE0, 0xBC, 0x30, 0x07, + 0x09, 0xE1, 0x00, 0x38, 0x47, 0x18, 0x01, 0xE4, 0x38, 0x80, 0x0F, 0x21, + 0xCC, 0x00, 0x7A, 0x0E, 0x40, 0x01, 0xD0, 0x76, 0x00, 0x0F, 0x03, 0xA0, + 0x00, 0x78, 0x1F, 0x00, 0x03, 0x80, 0xF0, 0x00, 0x1C, 0x07, 0x00, 0x00, + 0xC0, 0x38, 0x00, 0x06, 0x00, 0x80, 0x00, 0x20, 0x04, 0x00, 0x00, 0x0F, + 0xF8, 0x7F, 0x03, 0xE0, 0x3E, 0x01, 0xC0, 0x18, 0x01, 0xE0, 0x30, 0x01, + 0xE0, 0x60, 0x00, 0xE0, 0xC0, 0x00, 0xF1, 0xC0, 0x00, 0x71, 0x80, 0x00, + 0x7B, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00, + 0x3C, 0x00, 0x00, 0x7E, 0x00, 0x00, 0xCE, 0x00, 0x01, 0x8F, 0x00, 0x01, + 0x07, 0x00, 0x03, 0x07, 0x00, 0x06, 0x07, 0x80, 0x0C, 0x03, 0x80, 0x18, + 0x03, 0xC0, 0x78, 0x03, 0xE0, 0xFE, 0x1F, 0xF8, 0xFF, 0x87, 0xE7, 0xC0, + 0x38, 0x70, 0x06, 0x0E, 0x01, 0x81, 0xE0, 0x30, 0x1C, 0x0C, 0x03, 0x83, + 0x00, 0x78, 0xC0, 0x07, 0x30, 0x00, 0xE4, 0x00, 0x1D, 0x80, 0x03, 0xE0, + 0x00, 0x38, 0x00, 0x0F, 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x07, 0x00, + 0x01, 0xE0, 0x00, 0x38, 0x00, 0x07, 0x00, 0x01, 0xE0, 0x00, 0x7C, 0x00, + 0x3F, 0xF0, 0x00, 0x07, 0xFF, 0xFC, 0x3F, 0xFF, 0xE0, 0xE0, 0x0F, 0x82, + 0x00, 0x3C, 0x18, 0x01, 0xE0, 0x40, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, + 0xC0, 0x00, 0x0E, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, + 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x1C, 0x00, 0x00, 0xF0, 0x00, 0x07, + 0x80, 0x00, 0x3C, 0x00, 0xC1, 0xE0, 0x02, 0x0F, 0x00, 0x18, 0x38, 0x01, + 0xE1, 0xFF, 0xFF, 0x0F, 0xFF, 0xFC, 0x00, 0x01, 0xF8, 0x0C, 0x00, 0xC0, + 0x06, 0x00, 0x30, 0x01, 0x80, 0x18, 0x00, 0xC0, 0x06, 0x00, 0x30, 0x03, + 0x00, 0x18, 0x00, 0xC0, 0x06, 0x00, 0x60, 0x03, 0x00, 0x18, 0x01, 0xC0, + 0x0C, 0x00, 0x60, 0x03, 0x00, 0x30, 0x01, 0x80, 0x0C, 0x00, 0x60, 0x06, + 0x00, 0x30, 0x01, 0xF8, 0x00, 0xE0, 0x0E, 0x00, 0x60, 0x07, 0x00, 0x30, + 0x03, 0x80, 0x18, 0x01, 0xC0, 0x0C, 0x00, 0xC0, 0x0E, 0x00, 0x60, 0x07, + 0x00, 0x30, 0x03, 0x80, 0x18, 0x01, 0xC0, 0x0C, 0x00, 0xC0, 0x0E, 0x00, + 0x60, 0x07, 0x00, 0x30, 0x03, 0xF0, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, + 0x0E, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x01, 0x80, 0x18, 0x01, 0x80, + 0x18, 0x03, 0x00, 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, 0x60, 0x06, 0x00, + 0x60, 0x06, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x0F, 0xC0, 0x03, 0x80, + 0x07, 0x00, 0x1F, 0x00, 0x36, 0x00, 0xCE, 0x01, 0x8C, 0x06, 0x1C, 0x0C, + 0x18, 0x38, 0x38, 0x60, 0x31, 0xC0, 0x73, 0x00, 0x6E, 0x00, 0xE0, 0xFF, + 0xFF, 0xFF, 0xFF, 0xF0, 0xE3, 0x8F, 0x0E, 0x18, 0x30, 0x01, 0xEC, 0x0E, + 0x58, 0x30, 0x70, 0xE0, 0xC3, 0x81, 0x86, 0x07, 0x1C, 0x0C, 0x38, 0x18, + 0xE0, 0x71, 0xC0, 0xE3, 0x83, 0x87, 0x0B, 0x2F, 0x36, 0xCF, 0xCF, 0x1F, + 0x1C, 0x00, 0x03, 0x00, 0x1F, 0x00, 0x07, 0x00, 0x07, 0x00, 0x06, 0x00, + 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0C, 0x00, 0x1C, 0x7C, 0x1C, 0xFE, + 0x19, 0x8F, 0x1A, 0x07, 0x3C, 0x07, 0x38, 0x07, 0x38, 0x07, 0x70, 0x0E, + 0x70, 0x0E, 0x70, 0x1C, 0x60, 0x18, 0xE0, 0x30, 0xE0, 0x60, 0xE1, 0xC0, + 0x3F, 0x00, 0x01, 0xF0, 0x38, 0xC3, 0x8E, 0x78, 0x73, 0x80, 0x3C, 0x01, + 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x47, 0x84, 0x3F, + 0xC0, 0x7C, 0x00, 0x00, 0x01, 0x80, 0x07, 0xC0, 0x00, 0xE0, 0x00, 0x60, + 0x00, 0x30, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0C, 0x00, 0x06, 0x00, 0xF7, + 0x01, 0xC7, 0x81, 0xC3, 0x81, 0xC1, 0xC1, 0xE0, 0xE0, 0xE0, 0x60, 0xF0, + 0x30, 0x78, 0x38, 0x78, 0x18, 0x3C, 0x0C, 0x1E, 0x0C, 0x0F, 0x0E, 0x27, + 0xCB, 0x21, 0xF9, 0xE0, 0x78, 0xE0, 0x00, 0xF0, 0x1C, 0xC3, 0x86, 0x38, + 0x33, 0xC3, 0x1C, 0x31, 0xE3, 0x1F, 0xE0, 0xF0, 0x07, 0x80, 0x3C, 0x01, + 0xE0, 0x47, 0x84, 0x3F, 0xC0, 0x7C, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x33, + 0x00, 0x06, 0x30, 0x00, 0xC0, 0x00, 0x0C, 0x00, 0x01, 0xC0, 0x00, 0x18, + 0x00, 0x01, 0x80, 0x00, 0x38, 0x00, 0x3F, 0xF8, 0x03, 0xFF, 0x80, 0x03, + 0x00, 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0x70, 0x00, 0x06, 0x00, 0x00, + 0x60, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x0C, 0x00, 0x00, 0xC0, 0x00, + 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x18, 0x00, 0x01, 0x80, 0x00, 0x18, 0x00, + 0x03, 0x00, 0x00, 0x30, 0x00, 0xC6, 0x00, 0x0C, 0xC0, 0x00, 0x78, 0x00, + 0x00, 0x01, 0xF8, 0x07, 0x1F, 0x0E, 0x0F, 0x0C, 0x0E, 0x18, 0x0E, 0x18, + 0x0E, 0x18, 0x1E, 0x18, 0x3C, 0x0C, 0x78, 0x07, 0xE0, 0x08, 0x00, 0x18, + 0x00, 0x1E, 0x00, 0x0F, 0xE0, 0x13, 0xF0, 0x60, 0x78, 0xC0, 0x38, 0xC0, + 0x18, 0xC0, 0x18, 0xC0, 0x30, 0x60, 0x60, 0x3F, 0x80, 0x03, 0x00, 0x1F, + 0x00, 0x07, 0x00, 0x07, 0x00, 0x06, 0x00, 0x06, 0x00, 0x0E, 0x00, 0x0E, + 0x00, 0x0C, 0x00, 0x1C, 0x38, 0x1C, 0x7C, 0x1C, 0xCC, 0x19, 0x0C, 0x3A, + 0x0C, 0x3C, 0x1C, 0x3C, 0x18, 0x38, 0x18, 0x70, 0x38, 0x70, 0x38, 0x70, + 0x30, 0x60, 0x72, 0xE0, 0x76, 0xE0, 0x7C, 0xC0, 0x70, 0x03, 0x03, 0xC1, + 0xE0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x7E, 0x0F, 0x03, 0x81, 0x81, + 0xC0, 0xE0, 0x70, 0x30, 0x38, 0x1C, 0x1C, 0x4C, 0x47, 0xC3, 0xC0, 0x00, + 0x0C, 0x00, 0x3C, 0x00, 0x78, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x18, 0x03, 0xF0, 0x00, 0xE0, 0x01, 0x80, 0x03, 0x00, + 0x0E, 0x00, 0x1C, 0x00, 0x30, 0x00, 0x60, 0x01, 0xC0, 0x03, 0x80, 0x06, + 0x00, 0x0C, 0x00, 0x38, 0x00, 0x70, 0x00, 0xC0, 0x03, 0x80, 0x06, 0x00, + 0x0C, 0x06, 0x30, 0x0C, 0xC0, 0x0F, 0x00, 0x00, 0x03, 0x00, 0x3E, 0x00, + 0x1C, 0x00, 0x38, 0x00, 0x60, 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0C, + 0x00, 0x38, 0xFC, 0x70, 0x60, 0xE1, 0x81, 0x86, 0x07, 0x10, 0x0E, 0x40, + 0x1B, 0x80, 0x3F, 0x00, 0xE7, 0x01, 0xCE, 0x03, 0x0C, 0x06, 0x1C, 0x5C, + 0x1D, 0x38, 0x3E, 0x60, 0x38, 0x03, 0x1F, 0x07, 0x07, 0x06, 0x0E, 0x0E, + 0x0E, 0x0C, 0x1C, 0x1C, 0x18, 0x38, 0x38, 0x38, 0x30, 0x70, 0x70, 0x70, + 0x64, 0xE4, 0xE8, 0xF0, 0xE0, 0x00, 0x06, 0x18, 0x1E, 0x3E, 0x3C, 0x3F, + 0x0E, 0x4C, 0x47, 0x0C, 0x8C, 0x8E, 0x1D, 0x0D, 0x0E, 0x1E, 0x1A, 0x0E, + 0x1C, 0x1E, 0x0C, 0x3C, 0x1C, 0x1C, 0x38, 0x38, 0x1C, 0x38, 0x38, 0x1C, + 0x30, 0x38, 0x18, 0x70, 0x30, 0x39, 0x70, 0x70, 0x32, 0x60, 0x70, 0x3C, + 0x60, 0x60, 0x38, 0x06, 0x0E, 0x1F, 0x1F, 0x83, 0x99, 0xC1, 0x98, 0xC1, + 0xD8, 0xE0, 0xE8, 0x70, 0x78, 0x30, 0x38, 0x38, 0x3C, 0x1C, 0x1C, 0x0E, + 0x0E, 0x06, 0x0E, 0x03, 0x17, 0x01, 0xB3, 0x80, 0xF1, 0x80, 0x70, 0x01, + 0xF0, 0x0E, 0x38, 0x38, 0x30, 0xE0, 0x73, 0x80, 0xEE, 0x01, 0xDC, 0x03, + 0xF8, 0x0F, 0xE0, 0x1D, 0xC0, 0x3B, 0x80, 0xE7, 0x03, 0x8E, 0x06, 0x0E, + 0x38, 0x07, 0xC0, 0x00, 0x00, 0xE7, 0xC0, 0x7C, 0xFE, 0x01, 0xD1, 0xF0, + 0x1E, 0x0F, 0x01, 0xC0, 0xF0, 0x38, 0x0F, 0x03, 0x80, 0xF0, 0x38, 0x0E, + 0x03, 0x01, 0xE0, 0x70, 0x1C, 0x07, 0x03, 0xC0, 0x60, 0x78, 0x06, 0x0F, + 0x00, 0xE1, 0xC0, 0x0F, 0xF0, 0x00, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xC0, + 0x00, 0x1C, 0x00, 0x01, 0x80, 0x00, 0x38, 0x00, 0x0F, 0xF0, 0x00, 0x00, + 0xF7, 0x03, 0xCE, 0x0F, 0x06, 0x1E, 0x06, 0x1C, 0x04, 0x3C, 0x04, 0x78, + 0x04, 0x78, 0x0C, 0xF0, 0x08, 0xF0, 0x18, 0xF0, 0x38, 0xF0, 0xF0, 0xF9, + 0x70, 0x7E, 0x70, 0x3C, 0x70, 0x00, 0x60, 0x00, 0xE0, 0x00, 0xE0, 0x00, + 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x0F, 0xF0, 0x7C, 0x70, 0xE7, 0xC7, 0x4C, + 0x34, 0x01, 0xA0, 0x1E, 0x00, 0xF0, 0x07, 0x00, 0x78, 0x03, 0x80, 0x1C, + 0x00, 0xC0, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x00, 0x07, 0x88, 0x63, 0x86, + 0x0C, 0x30, 0x21, 0xC1, 0x0E, 0x00, 0x38, 0x00, 0xE0, 0x03, 0x80, 0x1C, + 0x10, 0x60, 0x83, 0x06, 0x18, 0x71, 0x82, 0x78, 0x00, 0x02, 0x03, 0x03, + 0x07, 0xF7, 0xF8, 0xE0, 0x60, 0x70, 0x38, 0x1C, 0x0C, 0x0E, 0x07, 0x03, + 0x01, 0x91, 0xC8, 0xF8, 0x78, 0x00, 0x1C, 0x0D, 0xF8, 0x38, 0x60, 0x70, + 0xC1, 0xC3, 0x83, 0x87, 0x07, 0x0C, 0x1E, 0x38, 0x78, 0x70, 0xB0, 0xE2, + 0x61, 0x8D, 0xC7, 0x33, 0x2C, 0xC6, 0x5F, 0x0F, 0x38, 0x1C, 0x00, 0x18, + 0x1B, 0xE0, 0x73, 0x81, 0xC6, 0x03, 0x18, 0x0C, 0x70, 0x21, 0xC1, 0x83, + 0x0C, 0x0C, 0x20, 0x31, 0x00, 0xC8, 0x03, 0x40, 0x0E, 0x00, 0x30, 0x00, + 0x80, 0x00, 0x18, 0x04, 0x1B, 0xE0, 0x30, 0x71, 0x80, 0xC1, 0xC6, 0x07, + 0x01, 0x1C, 0x2C, 0x08, 0x70, 0xB0, 0x20, 0xC4, 0xC1, 0x03, 0x21, 0x84, + 0x0D, 0x86, 0x20, 0x34, 0x19, 0x00, 0xE0, 0x68, 0x03, 0x81, 0xA0, 0x0C, + 0x07, 0x00, 0x30, 0x18, 0x00, 0x80, 0x40, 0x00, 0x03, 0x07, 0x0F, 0x8F, + 0x13, 0x93, 0x01, 0xB0, 0x01, 0xE0, 0x01, 0xC0, 0x00, 0xC0, 0x00, 0xC0, + 0x01, 0xC0, 0x03, 0xE0, 0x02, 0x60, 0x04, 0x62, 0x08, 0x64, 0xF0, 0x7C, + 0xE0, 0x30, 0x06, 0x06, 0x3F, 0x07, 0x07, 0x07, 0x07, 0x03, 0x03, 0x81, + 0x03, 0x82, 0x01, 0x82, 0x01, 0xC4, 0x01, 0xC4, 0x01, 0xC8, 0x00, 0xC8, + 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xE0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0x80, + 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x78, 0x00, 0x70, 0x00, 0x1F, 0xFC, + 0x7F, 0xE1, 0x01, 0x08, 0x08, 0x00, 0x40, 0x02, 0x00, 0x10, 0x00, 0x80, + 0x06, 0x00, 0x10, 0x00, 0x80, 0x04, 0x00, 0x38, 0x01, 0xF0, 0x0B, 0xE0, + 0x01, 0xC6, 0x03, 0x98, 0x03, 0x80, 0x00, 0x70, 0x0C, 0x01, 0x80, 0x38, + 0x03, 0x80, 0x30, 0x07, 0x00, 0x70, 0x07, 0x00, 0x60, 0x0E, 0x00, 0xE0, + 0x0C, 0x01, 0xC0, 0x1C, 0x07, 0x80, 0x30, 0x04, 0x00, 0x20, 0x03, 0x00, + 0x30, 0x07, 0x00, 0x70, 0x06, 0x00, 0x60, 0x0E, 0x00, 0xE0, 0x0C, 0x00, + 0xC0, 0x07, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0xC0, 0x06, + 0x00, 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, 0x70, 0x07, 0x00, 0x70, 0x06, + 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0C, 0x00, 0x40, 0x04, 0x00, 0xC0, 0x1E, + 0x03, 0x80, 0x38, 0x03, 0x00, 0x70, 0x07, 0x00, 0x70, 0x06, 0x00, 0xE0, + 0x0E, 0x00, 0xC0, 0x1C, 0x01, 0x80, 0x70, 0x00, 0x1E, 0x00, 0x3F, 0xE1, + 0xF8, 0x7F, 0xC0, 0x07, 0x80}; + +const GFXglyph FreeSerifItalic18pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 9, 0, 1}, // 0x20 ' ' + {0, 10, 23, 12, 1, -22}, // 0x21 '!' + {29, 12, 9, 12, 4, -22}, // 0x22 '"' + {43, 19, 23, 17, 0, -22}, // 0x23 '#' + {98, 15, 29, 17, 1, -25}, // 0x24 '$' + {153, 25, 23, 29, 3, -22}, // 0x25 '%' + {225, 22, 23, 27, 3, -22}, // 0x26 '&' + {289, 5, 9, 7, 4, -22}, // 0x27 ''' + {295, 9, 29, 12, 1, -22}, // 0x28 '(' + {328, 9, 29, 12, 1, -22}, // 0x29 ')' + {361, 12, 14, 18, 5, -22}, // 0x2A '*' + {382, 16, 18, 24, 4, -17}, // 0x2B '+' + {418, 5, 8, 9, -1, -2}, // 0x2C ',' + {423, 8, 2, 12, 2, -8}, // 0x2D '-' + {425, 4, 4, 9, 1, -3}, // 0x2E '.' + {427, 16, 23, 10, 0, -22}, // 0x2F '/' + {473, 17, 24, 17, 1, -23}, // 0x30 '0' + {524, 12, 24, 17, 2, -23}, // 0x31 '1' + {560, 16, 23, 17, 1, -22}, // 0x32 '2' + {606, 17, 24, 18, 0, -23}, // 0x33 '3' + {657, 17, 24, 17, 0, -23}, // 0x34 '4' + {708, 16, 23, 18, 0, -22}, // 0x35 '5' + {754, 17, 24, 18, 1, -23}, // 0x36 '6' + {805, 16, 23, 17, 3, -22}, // 0x37 '7' + {851, 16, 24, 18, 1, -23}, // 0x38 '8' + {899, 16, 24, 17, 1, -23}, // 0x39 '9' + {947, 7, 15, 9, 2, -14}, // 0x3A ':' + {961, 9, 20, 9, 1, -14}, // 0x3B ';' + {984, 18, 18, 20, 2, -17}, // 0x3C '<' + {1025, 18, 9, 23, 3, -12}, // 0x3D '=' + {1046, 18, 18, 20, 2, -17}, // 0x3E '>' + {1087, 12, 23, 16, 4, -22}, // 0x3F '?' + {1122, 24, 23, 27, 2, -22}, // 0x40 '@' + {1191, 21, 23, 23, 0, -22}, // 0x41 'A' + {1252, 21, 23, 21, 0, -22}, // 0x42 'B' + {1313, 21, 23, 21, 2, -22}, // 0x43 'C' + {1374, 25, 23, 25, 0, -22}, // 0x44 'D' + {1446, 22, 23, 20, 0, -22}, // 0x45 'E' + {1510, 22, 23, 20, 0, -22}, // 0x46 'F' + {1574, 23, 23, 24, 2, -22}, // 0x47 'G' + {1641, 27, 23, 25, 0, -22}, // 0x48 'H' + {1719, 14, 23, 11, 0, -22}, // 0x49 'I' + {1760, 17, 23, 15, 0, -22}, // 0x4A 'J' + {1809, 25, 23, 22, 0, -22}, // 0x4B 'K' + {1881, 20, 23, 20, 0, -22}, // 0x4C 'L' + {1939, 31, 23, 29, 0, -22}, // 0x4D 'M' + {2029, 26, 23, 24, 0, -22}, // 0x4E 'N' + {2104, 23, 23, 23, 1, -22}, // 0x4F 'O' + {2171, 22, 23, 20, 0, -22}, // 0x50 'P' + {2235, 23, 29, 23, 1, -22}, // 0x51 'Q' + {2319, 21, 23, 22, 0, -22}, // 0x52 'R' + {2380, 17, 23, 16, 0, -22}, // 0x53 'S' + {2429, 20, 23, 21, 3, -22}, // 0x54 'T' + {2487, 23, 23, 25, 4, -22}, // 0x55 'U' + {2554, 21, 23, 23, 5, -22}, // 0x56 'V' + {2615, 29, 23, 31, 5, -22}, // 0x57 'W' + {2699, 24, 23, 23, 0, -22}, // 0x58 'X' + {2768, 19, 23, 21, 4, -22}, // 0x59 'Y' + {2823, 22, 23, 20, 0, -22}, // 0x5A 'Z' + {2887, 13, 28, 14, 1, -22}, // 0x5B '[' + {2933, 12, 23, 17, 4, -22}, // 0x5C '\' + {2968, 12, 28, 14, 1, -22}, // 0x5D ']' + {3010, 15, 13, 15, 0, -22}, // 0x5E '^' + {3035, 18, 2, 17, 0, 3}, // 0x5F '_' + {3040, 6, 6, 9, 5, -22}, // 0x60 '`' + {3045, 15, 15, 17, 1, -14}, // 0x61 'a' + {3074, 16, 24, 17, 1, -23}, // 0x62 'b' + {3122, 13, 15, 14, 1, -14}, // 0x63 'c' + {3147, 17, 24, 18, 1, -23}, // 0x64 'd' + {3198, 13, 15, 14, 1, -14}, // 0x65 'e' + {3223, 20, 31, 15, -3, -23}, // 0x66 'f' + {3301, 16, 22, 15, -1, -14}, // 0x67 'g' + {3345, 16, 24, 17, 1, -23}, // 0x68 'h' + {3393, 9, 23, 9, 1, -22}, // 0x69 'i' + {3419, 15, 30, 10, -3, -22}, // 0x6A 'j' + {3476, 15, 24, 16, 1, -23}, // 0x6B 'k' + {3521, 8, 25, 9, 1, -23}, // 0x6C 'l' + {3546, 24, 15, 25, 0, -14}, // 0x6D 'm' + {3591, 17, 15, 17, 0, -14}, // 0x6E 'n' + {3623, 15, 15, 17, 1, -14}, // 0x6F 'o' + {3652, 20, 22, 16, -3, -14}, // 0x70 'p' + {3707, 16, 22, 17, 1, -14}, // 0x71 'q' + {3751, 13, 15, 13, 1, -14}, // 0x72 'r' + {3776, 13, 15, 12, 0, -14}, // 0x73 's' + {3801, 9, 18, 8, 1, -17}, // 0x74 't' + {3822, 15, 15, 17, 1, -14}, // 0x75 'u' + {3851, 14, 15, 16, 2, -14}, // 0x76 'v' + {3878, 22, 15, 24, 1, -14}, // 0x77 'w' + {3920, 16, 15, 15, -1, -14}, // 0x78 'x' + {3950, 16, 22, 16, 0, -14}, // 0x79 'y' + {3994, 14, 18, 14, 0, -14}, // 0x7A 'z' + {4026, 12, 30, 14, 2, -23}, // 0x7B '{' + {4071, 2, 23, 10, 4, -22}, // 0x7C '|' + {4077, 12, 31, 14, 0, -24}, // 0x7D '}' + {4124, 17, 4, 19, 1, -10}}; // 0x7E '~' + +const GFXfont FreeSerifItalic18pt7b PROGMEM = { + (uint8_t *)FreeSerifItalic18pt7bBitmaps, + (GFXglyph *)FreeSerifItalic18pt7bGlyphs, 0x20, 0x7E, 42}; + +// Approx. 4805 bytes diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifItalic24pt7b.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifItalic24pt7b.h new file mode 100644 index 0000000..98233a7 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifItalic24pt7b.h @@ -0,0 +1,739 @@ +#pragma once +#include + +const uint8_t FreeSerifItalic24pt7bBitmaps[] PROGMEM = { + 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x01, 0xF0, 0x1E, 0x01, 0xE0, 0x1C, + 0x01, 0xC0, 0x3C, 0x03, 0x80, 0x38, 0x03, 0x80, 0x30, 0x07, 0x00, 0x60, + 0x06, 0x00, 0x60, 0x04, 0x00, 0x40, 0x0C, 0x00, 0x80, 0x08, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0xF8, 0x0F, 0x80, 0xF8, 0x07, 0x00, + 0x38, 0x1D, 0xE0, 0x77, 0x83, 0xDC, 0x0E, 0x70, 0x39, 0xC1, 0xEE, 0x07, + 0x38, 0x1C, 0xC0, 0x63, 0x01, 0x8C, 0x06, 0x20, 0x10, 0x00, 0x06, 0x03, + 0x00, 0x07, 0x03, 0x80, 0x03, 0x81, 0xC0, 0x03, 0x81, 0xC0, 0x01, 0xC0, + 0xE0, 0x00, 0xE0, 0x70, 0x00, 0xE0, 0x70, 0x00, 0x70, 0x38, 0x00, 0x30, + 0x18, 0x00, 0x38, 0x1C, 0x03, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0xF0, 0x0E, + 0x07, 0x00, 0x06, 0x03, 0x00, 0x07, 0x03, 0x80, 0x03, 0x81, 0xC0, 0x03, + 0x81, 0xC0, 0x01, 0xC0, 0xE0, 0x00, 0xE0, 0x70, 0x1F, 0xFF, 0xFF, 0x8F, + 0xFF, 0xFF, 0x80, 0x70, 0x38, 0x00, 0x38, 0x1C, 0x00, 0x1C, 0x0C, 0x00, + 0x1C, 0x0E, 0x00, 0x0E, 0x07, 0x00, 0x0E, 0x07, 0x00, 0x07, 0x03, 0x80, + 0x03, 0x81, 0xC0, 0x03, 0x81, 0xC0, 0x01, 0xC0, 0xE0, 0x00, 0x00, 0x01, + 0x00, 0x00, 0x18, 0x00, 0x00, 0xC0, 0x00, 0xFF, 0x80, 0x1C, 0x2F, 0x01, + 0x83, 0x3C, 0x1C, 0x18, 0xE1, 0xC0, 0xC3, 0x0E, 0x06, 0x18, 0x70, 0x60, + 0x83, 0x83, 0x04, 0x1E, 0x18, 0x00, 0xF8, 0xC0, 0x03, 0xEC, 0x00, 0x0F, + 0xE0, 0x00, 0x3F, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xF0, 0x00, 0x0F, 0xC0, + 0x00, 0x7F, 0x00, 0x03, 0x7C, 0x00, 0x19, 0xE0, 0x01, 0x87, 0x80, 0x0C, + 0x3C, 0x00, 0x60, 0xE2, 0x03, 0x07, 0x10, 0x30, 0x39, 0x81, 0x81, 0xCE, + 0x0C, 0x0C, 0x70, 0x60, 0xE3, 0xC6, 0x06, 0x0F, 0x30, 0x60, 0x1F, 0x9E, + 0x00, 0x3F, 0x80, 0x00, 0xC0, 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, + 0x80, 0x00, 0x01, 0xF0, 0x00, 0xC0, 0x03, 0xFE, 0x01, 0xE0, 0x03, 0xC7, + 0x83, 0xE0, 0x03, 0xC0, 0x7F, 0x60, 0x03, 0xC0, 0x20, 0x70, 0x01, 0xC0, + 0x10, 0x30, 0x01, 0xE0, 0x08, 0x38, 0x00, 0xE0, 0x04, 0x18, 0x00, 0xF0, + 0x02, 0x1C, 0x00, 0x70, 0x02, 0x0C, 0x00, 0x38, 0x01, 0x0E, 0x00, 0x1C, + 0x01, 0x8E, 0x00, 0x0E, 0x00, 0x86, 0x00, 0x07, 0x00, 0x87, 0x03, 0xE1, + 0x80, 0xC3, 0x07, 0xFC, 0xE1, 0xC3, 0x87, 0xC6, 0x3F, 0x81, 0x87, 0x81, + 0x8F, 0x81, 0xC7, 0x80, 0x40, 0x00, 0xC3, 0xC0, 0x20, 0x00, 0xE3, 0xC0, + 0x10, 0x00, 0x61, 0xC0, 0x08, 0x00, 0x61, 0xE0, 0x04, 0x00, 0x70, 0xF0, + 0x06, 0x00, 0x30, 0x70, 0x02, 0x00, 0x38, 0x38, 0x03, 0x00, 0x18, 0x1C, + 0x01, 0x00, 0x1C, 0x0E, 0x01, 0x80, 0x0C, 0x07, 0x01, 0x80, 0x0E, 0x01, + 0xC3, 0x80, 0x06, 0x00, 0x7F, 0x80, 0x06, 0x00, 0x1F, 0x00, 0x07, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x71, + 0xC0, 0x00, 0x01, 0xC3, 0x80, 0x00, 0x0E, 0x0E, 0x00, 0x00, 0x38, 0x38, + 0x00, 0x01, 0xE0, 0xE0, 0x00, 0x07, 0x87, 0x00, 0x00, 0x1E, 0x18, 0x00, + 0x00, 0x78, 0xC0, 0x00, 0x01, 0xE6, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, + 0x1F, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x7F, + 0xC1, 0xFE, 0x03, 0x9F, 0x03, 0xE0, 0x3C, 0x3C, 0x07, 0x01, 0xE0, 0xF8, + 0x1C, 0x0F, 0x03, 0xE0, 0xE0, 0x7C, 0x07, 0x83, 0x01, 0xE0, 0x1F, 0x1C, + 0x07, 0x80, 0x7C, 0x60, 0x3E, 0x00, 0xFB, 0x00, 0xF8, 0x03, 0xFC, 0x03, + 0xE0, 0x07, 0xE0, 0x0F, 0x80, 0x1F, 0x00, 0x3F, 0x00, 0x3E, 0x00, 0x7C, + 0x00, 0xFC, 0x01, 0xF8, 0x0F, 0xF0, 0x03, 0xF0, 0xF3, 0xF0, 0x87, 0xFF, + 0x07, 0xFC, 0x07, 0xF0, 0x07, 0xC0, 0x39, 0xDE, 0xE7, 0x3B, 0x9C, 0xC6, + 0x31, 0x00, 0x00, 0x10, 0x01, 0x00, 0x18, 0x01, 0x80, 0x18, 0x01, 0x80, + 0x1C, 0x00, 0xC0, 0x0E, 0x00, 0xE0, 0x07, 0x00, 0x78, 0x03, 0x80, 0x3C, + 0x01, 0xE0, 0x0E, 0x00, 0x70, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0E, 0x00, + 0x70, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x01, 0xC0, 0x0E, + 0x00, 0x30, 0x01, 0x80, 0x0C, 0x00, 0x60, 0x01, 0x80, 0x0C, 0x00, 0x60, + 0x01, 0x00, 0x0C, 0x00, 0x20, 0x00, 0x00, 0x80, 0x06, 0x00, 0x10, 0x00, + 0x80, 0x06, 0x00, 0x30, 0x00, 0xC0, 0x06, 0x00, 0x30, 0x01, 0x80, 0x0C, + 0x00, 0x70, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x01, 0xC0, + 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xC0, 0x1E, 0x00, 0xF0, 0x07, + 0x80, 0x38, 0x03, 0xC0, 0x1C, 0x00, 0xE0, 0x0E, 0x00, 0x60, 0x07, 0x00, + 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, 0x10, 0x01, 0x00, 0x00, 0x01, 0x00, + 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0xE1, 0x07, 0xE1, 0x0F, + 0xF1, 0x1F, 0x19, 0x30, 0x07, 0xC0, 0x03, 0x80, 0x0D, 0x60, 0x79, 0x3C, + 0xF1, 0x1F, 0xE1, 0x0F, 0xE1, 0x07, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, + 0x03, 0x00, 0x00, 0x38, 0x00, 0x00, 0x70, 0x00, 0x00, 0xE0, 0x00, 0x01, + 0xC0, 0x00, 0x03, 0x80, 0x00, 0x07, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1C, + 0x00, 0x00, 0x38, 0x00, 0x00, 0x70, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xE0, 0x07, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x00, + 0x00, 0x38, 0x00, 0x00, 0x70, 0x00, 0x00, 0xE0, 0x00, 0x01, 0xC0, 0x00, + 0x03, 0x80, 0x00, 0x07, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x7C, 0xF9, + 0xF1, 0xE1, 0xC3, 0x0C, 0x10, 0xC1, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, + 0x77, 0xFF, 0xF7, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x80, 0x00, 0x3C, + 0x00, 0x01, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 0x00, + 0xF0, 0x00, 0x07, 0x00, 0x00, 0x78, 0x00, 0x03, 0x80, 0x00, 0x3C, 0x00, + 0x01, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x70, + 0x00, 0x07, 0x80, 0x00, 0x38, 0x00, 0x03, 0x80, 0x00, 0x3C, 0x00, 0x01, + 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x70, 0x00, + 0x07, 0x80, 0x00, 0x38, 0x00, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xE0, + 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x1F, 0x80, 0x03, 0x86, + 0x00, 0x30, 0x18, 0x03, 0x00, 0xC0, 0x38, 0x03, 0x03, 0x80, 0x18, 0x38, + 0x00, 0xC1, 0xC0, 0x07, 0x1C, 0x00, 0x38, 0xE0, 0x01, 0xCF, 0x00, 0x0E, + 0x70, 0x00, 0x77, 0x80, 0x07, 0xBC, 0x00, 0x3D, 0xE0, 0x01, 0xEE, 0x00, + 0x0F, 0xF0, 0x00, 0x77, 0x80, 0x07, 0xBC, 0x00, 0x3D, 0xC0, 0x01, 0xCE, + 0x00, 0x1E, 0x70, 0x00, 0xF3, 0x80, 0x07, 0x1C, 0x00, 0x78, 0xE0, 0x03, + 0x83, 0x00, 0x38, 0x18, 0x03, 0x80, 0xE0, 0x18, 0x03, 0x01, 0x80, 0x0C, + 0x38, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x80, 0x1F, 0xC0, 0x3F, 0xE0, + 0x01, 0xF0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1C, 0x00, 0x1E, + 0x00, 0x0F, 0x00, 0x07, 0x80, 0x07, 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x00, + 0xF0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x1E, 0x00, + 0x0F, 0x00, 0x07, 0x80, 0x07, 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x01, 0xE0, + 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x3F, 0x01, 0xFF, + 0xF0, 0x00, 0x3F, 0x00, 0x07, 0xFE, 0x00, 0x7F, 0xF8, 0x07, 0x07, 0xE0, + 0x60, 0x1F, 0x06, 0x00, 0x7C, 0x20, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, + 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xE0, 0x00, 0x0E, 0x00, + 0x00, 0xF0, 0x00, 0x07, 0x00, 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0x70, + 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, 0x03, + 0x00, 0x00, 0x30, 0x00, 0x03, 0x00, 0x00, 0x30, 0x01, 0x03, 0x00, 0x08, + 0x30, 0x00, 0xC3, 0xFF, 0xFC, 0x3F, 0xFF, 0xE3, 0xFF, 0xFE, 0x00, 0x00, + 0x0F, 0xC0, 0x00, 0xFF, 0xC0, 0x06, 0x0F, 0x80, 0x30, 0x1E, 0x01, 0x80, + 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x78, + 0x00, 0x01, 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xF0, 0x00, 0x0E, 0x00, 0x01, + 0xF8, 0x00, 0x3F, 0xF8, 0x00, 0x0F, 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x0F, + 0x80, 0x00, 0x3E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x80, + 0x00, 0x1E, 0x00, 0x00, 0x70, 0x00, 0x01, 0xC0, 0x00, 0x07, 0x00, 0x00, + 0x38, 0x00, 0x00, 0xC0, 0x70, 0x06, 0x03, 0xF8, 0x70, 0x07, 0xFF, 0x00, + 0x0F, 0xF0, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x70, 0x00, 0x03, 0xC0, + 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x37, 0x80, 0x00, + 0xDC, 0x00, 0x06, 0x70, 0x00, 0x33, 0xC0, 0x01, 0x8F, 0x00, 0x0C, 0x38, + 0x00, 0x60, 0xE0, 0x03, 0x07, 0x80, 0x18, 0x1E, 0x00, 0xC0, 0x70, 0x06, + 0x03, 0xC0, 0x30, 0x0F, 0x01, 0x80, 0x38, 0x0C, 0x00, 0xE0, 0x70, 0x07, + 0x81, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFE, 0x00, 0x0F, 0x00, + 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x00, + 0x70, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3F, 0xFC, 0x00, 0xFF, + 0xF0, 0x07, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x40, 0x00, 0x02, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x70, 0x00, 0x01, 0xF8, 0x00, 0x0F, 0xF0, 0x00, 0x3F, + 0xF0, 0x00, 0x1F, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, 0x03, 0x80, 0x00, 0x0E, 0x00, + 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x03, 0x80, 0x00, 0x0C, 0x00, 0x00, + 0x70, 0x00, 0x01, 0xC0, 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, 0x80, + 0x70, 0x0E, 0x03, 0xF0, 0xE0, 0x07, 0xFF, 0x00, 0x0F, 0xE0, 0x00, 0x00, + 0x00, 0x0E, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x03, + 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x7C, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xC0, + 0x00, 0x0F, 0x80, 0x00, 0x3E, 0x00, 0x00, 0xF9, 0xF8, 0x01, 0xFF, 0xFC, + 0x07, 0xE0, 0x7C, 0x0F, 0x80, 0x7C, 0x3E, 0x00, 0x78, 0x78, 0x00, 0x78, + 0xF0, 0x00, 0xF3, 0xC0, 0x01, 0xE7, 0x80, 0x03, 0xCF, 0x00, 0x07, 0x9C, + 0x00, 0x0F, 0x38, 0x00, 0x3E, 0x70, 0x00, 0x78, 0xE0, 0x00, 0xF1, 0xC0, + 0x03, 0xC1, 0x80, 0x07, 0x83, 0x00, 0x1E, 0x03, 0x00, 0x38, 0x06, 0x01, + 0xE0, 0x03, 0x07, 0x00, 0x01, 0xF8, 0x00, 0x1F, 0xFF, 0xF9, 0xFF, 0xFF, + 0xCF, 0xFF, 0xFC, 0xE0, 0x00, 0xCC, 0x00, 0x0E, 0x40, 0x00, 0x60, 0x00, + 0x07, 0x00, 0x00, 0x70, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x01, 0x80, + 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x07, + 0x00, 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0x38, 0x00, 0x03, 0x80, 0x00, + 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, + 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0x78, 0x00, 0x03, 0x80, 0x00, 0x38, + 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x03, 0x83, + 0x80, 0x1C, 0x03, 0x00, 0xE0, 0x0E, 0x07, 0x00, 0x1C, 0x1C, 0x00, 0x70, + 0x70, 0x01, 0xC1, 0xC0, 0x07, 0x07, 0x80, 0x1C, 0x1E, 0x00, 0xE0, 0x3C, + 0x07, 0x80, 0xFC, 0x38, 0x01, 0xFB, 0xC0, 0x03, 0xF8, 0x00, 0x0F, 0xE0, + 0x00, 0x7F, 0xC0, 0x07, 0x1F, 0x80, 0x78, 0x3F, 0x03, 0x80, 0x7C, 0x1E, + 0x00, 0xF8, 0x70, 0x01, 0xE3, 0x80, 0x03, 0xCE, 0x00, 0x07, 0x38, 0x00, + 0x1C, 0xE0, 0x00, 0x73, 0x80, 0x01, 0xCE, 0x00, 0x06, 0x1C, 0x00, 0x38, + 0x70, 0x01, 0xC0, 0xE0, 0x0E, 0x01, 0xE0, 0xE0, 0x01, 0xFE, 0x00, 0x00, + 0x1F, 0x80, 0x03, 0xC3, 0x00, 0x1C, 0x02, 0x00, 0xE0, 0x0C, 0x07, 0x00, + 0x18, 0x3C, 0x00, 0x60, 0xE0, 0x01, 0xC7, 0x80, 0x07, 0x1E, 0x00, 0x1C, + 0xF0, 0x00, 0x73, 0xC0, 0x01, 0xCF, 0x00, 0x07, 0x3C, 0x00, 0x3C, 0xF0, + 0x00, 0xF3, 0xC0, 0x03, 0xCF, 0x00, 0x1E, 0x1E, 0x00, 0x78, 0x7C, 0x03, + 0xE0, 0xF8, 0x3F, 0x01, 0xFF, 0xBC, 0x03, 0xF1, 0xE0, 0x00, 0x0F, 0x80, + 0x00, 0x3C, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x03, + 0xE0, 0x00, 0x1F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x78, 0x00, + 0x0F, 0x80, 0x00, 0xE0, 0x00, 0x00, 0x07, 0x07, 0xC3, 0xE1, 0xF0, 0x70, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x38, 0x3E, 0x1F, 0x0F, 0x83, 0x80, 0x01, 0xC0, 0x7C, 0x0F, 0x81, + 0xF0, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x07, 0x80, 0xF8, 0x1F, 0x01, 0xE0, + 0x1C, 0x03, 0x00, 0xC0, 0x18, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0C, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x3F, 0xC0, + 0x01, 0xFC, 0x00, 0x0F, 0xE0, 0x00, 0xFF, 0x00, 0x07, 0xF8, 0x00, 0x3F, + 0xC0, 0x01, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x1F, 0x80, + 0x00, 0x3F, 0xC0, 0x00, 0x1F, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xF8, + 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x1F, + 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x07, 0x00, 0x00, 0x02, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, + 0xE0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x3F, 0x80, 0x00, + 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x1F, 0xC0, + 0x00, 0x07, 0xF0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x3F, 0x00, 0x00, 0xFE, 0x00, 0x07, 0xF8, 0x00, 0x1F, 0xE0, + 0x00, 0x7F, 0x80, 0x01, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x3F, 0xC0, 0x00, + 0xFF, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x80, 0x00, 0x00, + 0x03, 0xF0, 0x06, 0x1C, 0x0C, 0x0E, 0x1C, 0x06, 0x1C, 0x07, 0x1C, 0x07, + 0x1C, 0x07, 0x00, 0x07, 0x00, 0x0F, 0x00, 0x0E, 0x00, 0x1E, 0x00, 0x3C, + 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x80, 0x03, 0x00, + 0x06, 0x00, 0x04, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xF8, 0x00, + 0xF8, 0x00, 0xF8, 0x00, 0x70, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x1F, + 0xFF, 0x80, 0x00, 0x3F, 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x7C, + 0x00, 0x07, 0x80, 0x7C, 0x00, 0x00, 0xE0, 0x3C, 0x00, 0x00, 0x38, 0x3C, + 0x00, 0x00, 0x0C, 0x3C, 0x00, 0x78, 0x07, 0x1E, 0x00, 0xFE, 0xE1, 0x9E, + 0x00, 0xF1, 0xF0, 0xEF, 0x00, 0xE0, 0xF0, 0x37, 0x80, 0xE0, 0x38, 0x1F, + 0x80, 0x70, 0x1C, 0x0F, 0xC0, 0x70, 0x1E, 0x07, 0xE0, 0x38, 0x0F, 0x03, + 0xF0, 0x18, 0x07, 0x01, 0xF8, 0x1C, 0x03, 0x80, 0xFC, 0x0E, 0x01, 0xC0, + 0xDE, 0x07, 0x01, 0xE0, 0x6F, 0x03, 0x80, 0xE0, 0x73, 0xC1, 0xC0, 0xF0, + 0x31, 0xE0, 0xF0, 0xF8, 0x30, 0xF0, 0x38, 0xDC, 0x30, 0x3C, 0x1F, 0xC7, + 0xF0, 0x0E, 0x07, 0x81, 0xF0, 0x07, 0x80, 0x00, 0x00, 0x01, 0xE0, 0x00, + 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x01, 0x00, 0x03, 0xF0, + 0x0F, 0x80, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, + 0x00, 0x18, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, + 0xF0, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x03, 0xF0, + 0x00, 0x00, 0x37, 0x80, 0x00, 0x03, 0x3C, 0x00, 0x00, 0x19, 0xE0, 0x00, + 0x01, 0x8F, 0x80, 0x00, 0x08, 0x7C, 0x00, 0x00, 0xC3, 0xE0, 0x00, 0x0C, + 0x0F, 0x00, 0x00, 0x60, 0x78, 0x00, 0x06, 0x03, 0xC0, 0x00, 0x20, 0x1F, + 0x00, 0x03, 0x00, 0xF8, 0x00, 0x3F, 0xFF, 0xC0, 0x01, 0xFF, 0xFE, 0x00, + 0x18, 0x00, 0xF0, 0x00, 0xC0, 0x07, 0x80, 0x0C, 0x00, 0x3E, 0x00, 0xE0, + 0x01, 0xF0, 0x06, 0x00, 0x0F, 0x80, 0x70, 0x00, 0x3C, 0x03, 0x00, 0x01, + 0xE0, 0x38, 0x00, 0x0F, 0x83, 0xC0, 0x00, 0x7C, 0x3E, 0x00, 0x07, 0xF3, + 0xFC, 0x01, 0xFF, 0xE0, 0x03, 0xFF, 0xFE, 0x00, 0x07, 0xFF, 0xF8, 0x00, + 0x3E, 0x07, 0xC0, 0x03, 0xE0, 0x3E, 0x00, 0x3E, 0x01, 0xF0, 0x03, 0xC0, + 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x78, 0x01, 0xF0, + 0x07, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x7C, 0x00, 0xF0, + 0x3F, 0x00, 0x1F, 0xFF, 0x80, 0x01, 0xFF, 0xFC, 0x00, 0x1F, 0x07, 0xE0, + 0x01, 0xE0, 0x1F, 0x00, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x07, 0xC0, 0x3C, + 0x00, 0x7C, 0x03, 0xC0, 0x07, 0xC0, 0x7C, 0x00, 0x7C, 0x07, 0xC0, 0x07, + 0xC0, 0x78, 0x00, 0x7C, 0x0F, 0x80, 0x0F, 0x80, 0xF8, 0x00, 0xF8, 0x0F, + 0x00, 0x1F, 0x00, 0xF0, 0x03, 0xE0, 0x1F, 0x81, 0xFC, 0x03, 0xFF, 0xFF, + 0x80, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x01, 0xFE, 0x04, 0x00, 0x3F, 0xFF, + 0xE0, 0x03, 0xF0, 0x1F, 0x80, 0x1F, 0x00, 0x3E, 0x00, 0xF0, 0x00, 0x78, + 0x0F, 0x80, 0x00, 0xE0, 0x3C, 0x00, 0x03, 0x81, 0xF0, 0x00, 0x04, 0x0F, + 0x80, 0x00, 0x10, 0x7C, 0x00, 0x00, 0x41, 0xF0, 0x00, 0x00, 0x0F, 0x80, + 0x00, 0x00, 0x3E, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x07, 0xC0, 0x00, + 0x00, 0x1F, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, + 0x0F, 0x80, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x03, + 0xE0, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0xF8, + 0x00, 0x00, 0x01, 0xF0, 0x00, 0x02, 0x07, 0xC0, 0x00, 0x18, 0x0F, 0x80, + 0x00, 0xC0, 0x3E, 0x00, 0x06, 0x00, 0x7C, 0x00, 0x70, 0x00, 0xFC, 0x07, + 0x00, 0x00, 0xFF, 0xF8, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x03, 0xFF, 0xFF, + 0x00, 0x00, 0x3F, 0xFF, 0xE0, 0x00, 0x0F, 0xC0, 0xFC, 0x00, 0x07, 0xC0, + 0x1F, 0x00, 0x03, 0xE0, 0x07, 0xC0, 0x01, 0xE0, 0x01, 0xF0, 0x01, 0xF0, + 0x00, 0x7C, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x7C, 0x00, 0x0F, 0x00, 0x3C, + 0x00, 0x07, 0xC0, 0x3E, 0x00, 0x03, 0xE0, 0x1F, 0x00, 0x01, 0xF0, 0x0F, + 0x00, 0x00, 0xF8, 0x0F, 0x80, 0x00, 0x7C, 0x07, 0xC0, 0x00, 0x3E, 0x03, + 0xE0, 0x00, 0x1F, 0x01, 0xE0, 0x00, 0x1F, 0x81, 0xF0, 0x00, 0x0F, 0x80, + 0xF8, 0x00, 0x07, 0xC0, 0x78, 0x00, 0x03, 0xE0, 0x3C, 0x00, 0x03, 0xE0, + 0x3E, 0x00, 0x01, 0xF0, 0x1F, 0x00, 0x01, 0xF0, 0x0F, 0x00, 0x01, 0xF0, + 0x0F, 0x80, 0x01, 0xF8, 0x07, 0xC0, 0x01, 0xF0, 0x03, 0xE0, 0x01, 0xF0, + 0x01, 0xE0, 0x03, 0xF0, 0x01, 0xF8, 0x0F, 0xE0, 0x01, 0xFF, 0xFF, 0xC0, + 0x03, 0xFF, 0xFE, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xF8, 0x03, 0xFF, 0xFF, + 0xC0, 0x0F, 0x80, 0x1E, 0x00, 0x7C, 0x00, 0x30, 0x03, 0xE0, 0x01, 0x00, + 0x1E, 0x00, 0x08, 0x01, 0xF0, 0x00, 0x40, 0x0F, 0x80, 0x00, 0x00, 0x78, + 0x00, 0x00, 0x03, 0xC0, 0x10, 0x00, 0x3E, 0x01, 0x80, 0x01, 0xF0, 0x08, + 0x00, 0x0F, 0x01, 0xC0, 0x00, 0xFF, 0xFE, 0x00, 0x07, 0xFF, 0xF0, 0x00, + 0x3E, 0x07, 0x00, 0x01, 0xE0, 0x18, 0x00, 0x1F, 0x00, 0xC0, 0x00, 0xF8, + 0x04, 0x00, 0x07, 0x80, 0x20, 0x00, 0x3C, 0x00, 0x00, 0x03, 0xE0, 0x00, + 0x00, 0x1F, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x08, 0x0F, 0x80, 0x00, 0xC0, + 0x7C, 0x00, 0x0E, 0x03, 0xC0, 0x00, 0xE0, 0x1E, 0x00, 0x0F, 0x01, 0xF8, + 0x03, 0xF8, 0x1F, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0xFC, 0x00, 0x03, 0xFF, + 0xFF, 0xF8, 0x03, 0xFF, 0xFF, 0xC0, 0x0F, 0x80, 0x1E, 0x00, 0x7C, 0x00, + 0x30, 0x03, 0xE0, 0x01, 0x00, 0x1E, 0x00, 0x08, 0x01, 0xF0, 0x00, 0x40, + 0x0F, 0x80, 0x02, 0x00, 0x7C, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x3E, + 0x00, 0x80, 0x01, 0xF0, 0x0C, 0x00, 0x0F, 0x00, 0xC0, 0x00, 0xF8, 0x0E, + 0x00, 0x07, 0xFF, 0xF0, 0x00, 0x3F, 0xFF, 0x00, 0x01, 0xE0, 0x18, 0x00, + 0x1F, 0x00, 0xC0, 0x00, 0xF8, 0x06, 0x00, 0x07, 0xC0, 0x20, 0x00, 0x3C, + 0x01, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0xF0, 0x00, + 0x00, 0x0F, 0x80, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xFF, + 0xC0, 0x00, 0x00, 0x00, 0x01, 0xFE, 0x02, 0x00, 0x1F, 0xFF, 0x8C, 0x00, + 0xFC, 0x07, 0xF8, 0x03, 0xE0, 0x03, 0xF0, 0x0F, 0x00, 0x03, 0xC0, 0x3C, + 0x00, 0x03, 0x80, 0xF0, 0x00, 0x07, 0x03, 0xC0, 0x00, 0x0E, 0x0F, 0x80, + 0x00, 0x08, 0x3E, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x00, 0x01, 0xF0, 0x00, + 0x00, 0x03, 0xE0, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x1F, 0x00, 0x00, + 0x00, 0x3E, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x3F, + 0xFF, 0xE0, 0x00, 0x0F, 0xE7, 0xC0, 0x00, 0x0F, 0x0F, 0x80, 0x00, 0x1E, + 0x1F, 0x00, 0x00, 0x7C, 0x3E, 0x00, 0x00, 0xF0, 0x7C, 0x00, 0x01, 0xE0, + 0x78, 0x00, 0x03, 0xC0, 0xF8, 0x00, 0x0F, 0x01, 0xF0, 0x00, 0x1E, 0x01, + 0xF0, 0x00, 0x3C, 0x01, 0xE0, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xE0, 0x01, + 0xF8, 0x0F, 0x80, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x03, + 0xFF, 0xE0, 0x7F, 0xF0, 0x07, 0xF8, 0x01, 0xFC, 0x00, 0x3E, 0x00, 0x0F, + 0x80, 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, + 0x00, 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, + 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0xF8, 0x00, 0x3E, + 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x1F, 0x00, + 0x03, 0xC0, 0x01, 0xFF, 0xFF, 0xFC, 0x00, 0x1F, 0xFF, 0xFF, 0x80, 0x01, + 0xE0, 0x00, 0x78, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF8, + 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x7C, 0x00, + 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x0F, + 0x80, 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x03, 0xC0, + 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x03, 0xF8, 0x00, + 0xFE, 0x00, 0xFF, 0xE0, 0x7F, 0xFC, 0x00, 0x01, 0xFF, 0xC0, 0x1F, 0xE0, + 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x07, 0xC0, 0x01, + 0xF0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF0, + 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xE0, 0x00, 0xF8, 0x00, + 0x3E, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x1E, + 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x1F, 0x00, + 0x0F, 0xE0, 0x0F, 0xFE, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x07, 0xF0, 0x00, + 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x3C, 0x00, 0x00, + 0xF8, 0x00, 0x01, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1F, + 0x00, 0x00, 0x3C, 0x00, 0x00, 0x78, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xE0, + 0x00, 0x07, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x78, 0x00, + 0x00, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF0, 0x01, 0xC1, 0xE0, 0x07, 0xC7, + 0x80, 0x0F, 0x8F, 0x00, 0x1F, 0x3C, 0x00, 0x1F, 0xF0, 0x00, 0x0F, 0x80, + 0x00, 0x01, 0xFF, 0xE1, 0xFF, 0x80, 0x3F, 0xC0, 0x1F, 0x80, 0x0F, 0x80, + 0x0F, 0x00, 0x07, 0xC0, 0x0F, 0x00, 0x03, 0xC0, 0x0F, 0x00, 0x01, 0xE0, + 0x0E, 0x00, 0x01, 0xF0, 0x0E, 0x00, 0x00, 0xF8, 0x0E, 0x00, 0x00, 0x78, + 0x1C, 0x00, 0x00, 0x3C, 0x1C, 0x00, 0x00, 0x3E, 0x3C, 0x00, 0x00, 0x1F, + 0x38, 0x00, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x07, + 0xFE, 0x00, 0x00, 0x03, 0xDF, 0x00, 0x00, 0x01, 0xE7, 0xC0, 0x00, 0x01, + 0xF3, 0xE0, 0x00, 0x00, 0xF8, 0xF8, 0x00, 0x00, 0x78, 0x3C, 0x00, 0x00, + 0x3C, 0x1F, 0x00, 0x00, 0x3E, 0x07, 0xC0, 0x00, 0x1F, 0x03, 0xE0, 0x00, + 0x0F, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x3C, 0x00, 0x07, 0xC0, 0x1F, 0x00, + 0x03, 0xC0, 0x07, 0x80, 0x01, 0xE0, 0x03, 0xE0, 0x01, 0xF0, 0x01, 0xF8, + 0x01, 0xFC, 0x01, 0xFE, 0x03, 0xFF, 0xC3, 0xFF, 0xE0, 0x03, 0xFF, 0xE0, + 0x00, 0x0F, 0xF0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, + 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x00, + 0x00, 0x78, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, + 0x00, 0x00, 0x0F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, + 0x0F, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x0F, 0x80, + 0x00, 0x01, 0xE0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x01, + 0xF0, 0x00, 0x08, 0x3C, 0x00, 0x03, 0x0F, 0x80, 0x00, 0x41, 0xF0, 0x00, + 0x18, 0x3C, 0x00, 0x07, 0x07, 0x80, 0x01, 0xC1, 0xF8, 0x01, 0xF8, 0x7F, + 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xC0, 0x01, 0xFF, 0x00, 0x00, 0x3F, 0xC0, + 0x0F, 0xC0, 0x00, 0x1F, 0xC0, 0x01, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0xFC, + 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x01, 0xFC, 0x00, 0x0F, 0xC0, 0x00, + 0xFF, 0x00, 0x02, 0xF0, 0x00, 0x37, 0x80, 0x01, 0xBC, 0x00, 0x19, 0xE0, + 0x00, 0x6F, 0x80, 0x0E, 0xF8, 0x00, 0x1B, 0xE0, 0x03, 0x3E, 0x00, 0x04, + 0x78, 0x01, 0x8F, 0x00, 0x03, 0x1E, 0x00, 0xE7, 0xC0, 0x00, 0xC7, 0x80, + 0x31, 0xF0, 0x00, 0x21, 0xE0, 0x18, 0x78, 0x00, 0x18, 0x78, 0x0E, 0x1E, + 0x00, 0x06, 0x1E, 0x03, 0x0F, 0x80, 0x01, 0x87, 0x81, 0x83, 0xE0, 0x00, + 0x41, 0xF0, 0xE0, 0xF0, 0x00, 0x30, 0x7C, 0x30, 0x3C, 0x00, 0x0C, 0x0F, + 0x18, 0x1F, 0x00, 0x03, 0x03, 0xCE, 0x07, 0xC0, 0x01, 0x80, 0xF3, 0x01, + 0xE0, 0x00, 0x60, 0x3D, 0x80, 0xF8, 0x00, 0x18, 0x0F, 0xE0, 0x3E, 0x00, + 0x0C, 0x03, 0xF0, 0x0F, 0x00, 0x03, 0x00, 0xF8, 0x03, 0xC0, 0x00, 0xC0, + 0x3E, 0x01, 0xF0, 0x00, 0x70, 0x0F, 0x00, 0x7C, 0x00, 0x1C, 0x01, 0x80, + 0x3F, 0x00, 0x0F, 0x80, 0x60, 0x1F, 0xC0, 0x0F, 0xF8, 0x10, 0x1F, 0xFE, + 0x00, 0x03, 0xFC, 0x00, 0x3F, 0xE0, 0x1F, 0xC0, 0x01, 0xF8, 0x00, 0xF8, + 0x00, 0x1C, 0x00, 0x1F, 0x00, 0x03, 0x80, 0x03, 0xF0, 0x00, 0x60, 0x00, + 0x7E, 0x00, 0x0C, 0x00, 0x0B, 0xE0, 0x03, 0x80, 0x03, 0x7C, 0x00, 0x60, + 0x00, 0x67, 0x80, 0x0C, 0x00, 0x0C, 0xF8, 0x03, 0x80, 0x03, 0x0F, 0x00, + 0x70, 0x00, 0x61, 0xF0, 0x0C, 0x00, 0x0C, 0x3E, 0x01, 0x80, 0x01, 0x83, + 0xC0, 0x70, 0x00, 0x60, 0x7C, 0x0C, 0x00, 0x0C, 0x07, 0x81, 0x80, 0x01, + 0x80, 0xF8, 0x30, 0x00, 0x60, 0x0F, 0x0E, 0x00, 0x0C, 0x01, 0xE1, 0x80, + 0x01, 0x80, 0x3E, 0x30, 0x00, 0x30, 0x03, 0xCE, 0x00, 0x0C, 0x00, 0x7D, + 0x80, 0x01, 0x80, 0x07, 0xB0, 0x00, 0x30, 0x00, 0xF6, 0x00, 0x0E, 0x00, + 0x1F, 0xC0, 0x01, 0x80, 0x01, 0xF0, 0x00, 0x30, 0x00, 0x3E, 0x00, 0x0E, + 0x00, 0x03, 0xC0, 0x01, 0xC0, 0x00, 0x70, 0x00, 0x7C, 0x00, 0x06, 0x00, + 0x3F, 0xE0, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0xFE, + 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x01, 0xF0, 0x7C, 0x00, 0x0F, 0x00, 0x78, + 0x00, 0x78, 0x00, 0xF0, 0x07, 0xC0, 0x03, 0xE0, 0x3E, 0x00, 0x07, 0x81, + 0xF0, 0x00, 0x1E, 0x07, 0xC0, 0x00, 0x7C, 0x3E, 0x00, 0x01, 0xF1, 0xF0, + 0x00, 0x07, 0xC7, 0xC0, 0x00, 0x1F, 0x3F, 0x00, 0x00, 0x7C, 0xF8, 0x00, + 0x01, 0xF7, 0xE0, 0x00, 0x0F, 0xDF, 0x00, 0x00, 0x3F, 0x7C, 0x00, 0x00, + 0xFB, 0xF0, 0x00, 0x07, 0xEF, 0xC0, 0x00, 0x1F, 0xBE, 0x00, 0x00, 0x7C, + 0xF8, 0x00, 0x03, 0xF3, 0xE0, 0x00, 0x0F, 0x8F, 0x80, 0x00, 0x3E, 0x3E, + 0x00, 0x01, 0xF0, 0xF8, 0x00, 0x0F, 0x81, 0xE0, 0x00, 0x3E, 0x07, 0x80, + 0x01, 0xF0, 0x1F, 0x00, 0x0F, 0x80, 0x3C, 0x00, 0x7C, 0x00, 0x78, 0x03, + 0xC0, 0x00, 0xF8, 0x3E, 0x00, 0x01, 0xFF, 0xE0, 0x00, 0x01, 0xFC, 0x00, + 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x0F, 0x81, 0xF8, + 0x00, 0x7C, 0x03, 0xE0, 0x03, 0xE0, 0x1F, 0x00, 0x1E, 0x00, 0x7C, 0x01, + 0xF0, 0x03, 0xE0, 0x0F, 0x80, 0x1F, 0x00, 0x78, 0x00, 0xF8, 0x03, 0xC0, + 0x07, 0xC0, 0x3E, 0x00, 0x3C, 0x01, 0xF0, 0x03, 0xE0, 0x0F, 0x00, 0x3E, + 0x00, 0xF8, 0x03, 0xF0, 0x07, 0xC0, 0x7E, 0x00, 0x3F, 0xFF, 0xE0, 0x01, + 0xEF, 0xF8, 0x00, 0x1F, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x07, 0x80, + 0x00, 0x00, 0x3C, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x1F, 0x00, 0x00, + 0x00, 0xF0, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x03, + 0xC0, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x1F, 0xC0, + 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, + 0xFE, 0x00, 0x00, 0xF0, 0x7C, 0x00, 0x0F, 0x00, 0x78, 0x00, 0x78, 0x00, + 0xF0, 0x03, 0xC0, 0x03, 0xE0, 0x1E, 0x00, 0x07, 0x80, 0xF0, 0x00, 0x1E, + 0x07, 0xC0, 0x00, 0x7C, 0x3E, 0x00, 0x01, 0xF1, 0xF8, 0x00, 0x07, 0xC7, + 0xC0, 0x00, 0x1F, 0x3F, 0x00, 0x00, 0x7C, 0xF8, 0x00, 0x01, 0xF7, 0xE0, + 0x00, 0x0F, 0xDF, 0x80, 0x00, 0x3F, 0x7C, 0x00, 0x00, 0xFB, 0xF0, 0x00, + 0x03, 0xEF, 0xC0, 0x00, 0x1F, 0xBE, 0x00, 0x00, 0x7C, 0xF8, 0x00, 0x01, + 0xF3, 0xE0, 0x00, 0x0F, 0x8F, 0x80, 0x00, 0x3E, 0x3E, 0x00, 0x01, 0xF0, + 0xF8, 0x00, 0x07, 0xC3, 0xE0, 0x00, 0x3E, 0x07, 0x80, 0x01, 0xF0, 0x1F, + 0x00, 0x07, 0x80, 0x3C, 0x00, 0x3C, 0x00, 0xF8, 0x01, 0xE0, 0x01, 0xE0, + 0x1E, 0x00, 0x01, 0xF3, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x03, 0x00, + 0x00, 0x00, 0x18, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x04, 0x0F, 0xF0, 0x00, + 0x60, 0x7F, 0xFC, 0x07, 0x03, 0xFF, 0xFF, 0xF8, 0x38, 0x1F, 0xFF, 0x80, + 0x00, 0x07, 0xF8, 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x07, 0xFF, 0xF8, 0x00, + 0x3E, 0x0F, 0xC0, 0x03, 0xE0, 0x3E, 0x00, 0x3E, 0x01, 0xF0, 0x03, 0xC0, + 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x78, 0x01, 0xF0, + 0x07, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x7C, 0x00, 0xF0, + 0x1F, 0x80, 0x1F, 0xFF, 0xE0, 0x01, 0xFF, 0xF0, 0x00, 0x1E, 0x1E, 0x00, + 0x01, 0xE1, 0xE0, 0x00, 0x3E, 0x1F, 0x00, 0x03, 0xE0, 0xF0, 0x00, 0x3C, + 0x0F, 0x00, 0x03, 0xC0, 0xF8, 0x00, 0x7C, 0x07, 0x80, 0x07, 0xC0, 0x7C, + 0x00, 0x78, 0x03, 0xC0, 0x0F, 0x80, 0x3C, 0x00, 0xF8, 0x03, 0xE0, 0x0F, + 0x00, 0x1E, 0x00, 0xF0, 0x01, 0xE0, 0x1F, 0x00, 0x1F, 0x03, 0xF8, 0x00, + 0xF8, 0xFF, 0xE0, 0x0F, 0xE0, 0x00, 0x3F, 0x06, 0x01, 0xFF, 0xDC, 0x07, + 0xC1, 0xF0, 0x1E, 0x01, 0xE0, 0x3C, 0x01, 0xC0, 0xF0, 0x03, 0x81, 0xE0, + 0x03, 0x03, 0xC0, 0x04, 0x07, 0x80, 0x08, 0x0F, 0x80, 0x00, 0x1F, 0x00, + 0x00, 0x1F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, + 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, + 0x00, 0x3E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7C, 0x08, 0x00, 0x78, 0x10, + 0x00, 0xF0, 0x20, 0x01, 0xE0, 0xC0, 0x03, 0xC1, 0x80, 0x07, 0x83, 0x80, + 0x1E, 0x07, 0x00, 0x3C, 0x0F, 0x00, 0xF0, 0x1F, 0x87, 0xC0, 0x23, 0xFF, + 0x00, 0x81, 0xF8, 0x00, 0x3F, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xFD, 0xF0, + 0x3E, 0x07, 0xB8, 0x07, 0xC0, 0x76, 0x00, 0xF8, 0x04, 0x80, 0x3E, 0x00, + 0xB0, 0x07, 0xC0, 0x14, 0x00, 0xF8, 0x02, 0x00, 0x1E, 0x00, 0x00, 0x07, + 0xC0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xC0, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0xF8, + 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, + 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x0F, 0x00, + 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x03, + 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x3F, 0xFF, 0x00, + 0x00, 0x7F, 0xFE, 0x03, 0xFE, 0x1F, 0xE0, 0x01, 0xF8, 0x1F, 0x80, 0x01, + 0xC0, 0x3E, 0x00, 0x03, 0x80, 0x7C, 0x00, 0x07, 0x00, 0xF8, 0x00, 0x0C, + 0x03, 0xE0, 0x00, 0x18, 0x07, 0xC0, 0x00, 0x70, 0x0F, 0x80, 0x00, 0xC0, + 0x1F, 0x00, 0x01, 0x80, 0x7C, 0x00, 0x03, 0x00, 0xF8, 0x00, 0x0E, 0x01, + 0xF0, 0x00, 0x18, 0x07, 0xC0, 0x00, 0x30, 0x0F, 0x80, 0x00, 0x60, 0x1F, + 0x00, 0x01, 0x80, 0x3E, 0x00, 0x03, 0x00, 0xF8, 0x00, 0x06, 0x01, 0xF0, + 0x00, 0x18, 0x03, 0xE0, 0x00, 0x30, 0x07, 0xC0, 0x00, 0x60, 0x1F, 0x00, + 0x00, 0xC0, 0x3E, 0x00, 0x03, 0x00, 0x7C, 0x00, 0x06, 0x00, 0xF8, 0x00, + 0x18, 0x01, 0xF0, 0x00, 0x30, 0x03, 0xE0, 0x00, 0xC0, 0x03, 0xE0, 0x03, + 0x80, 0x03, 0xE0, 0x0E, 0x00, 0x03, 0xF0, 0x78, 0x00, 0x03, 0xFF, 0xC0, + 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, 0xE0, 0x0F, 0xF9, 0xFC, 0x00, 0x1F, + 0x07, 0xC0, 0x00, 0x78, 0x3E, 0x00, 0x03, 0x81, 0xF0, 0x00, 0x18, 0x0F, + 0x80, 0x01, 0xC0, 0x7C, 0x00, 0x0C, 0x01, 0xE0, 0x00, 0xC0, 0x0F, 0x80, + 0x06, 0x00, 0x7C, 0x00, 0x60, 0x03, 0xE0, 0x07, 0x00, 0x1F, 0x00, 0x30, + 0x00, 0xF8, 0x03, 0x00, 0x03, 0xC0, 0x18, 0x00, 0x1E, 0x01, 0x80, 0x00, + 0xF8, 0x1C, 0x00, 0x07, 0xC0, 0xC0, 0x00, 0x3E, 0x0C, 0x00, 0x01, 0xF0, + 0x60, 0x00, 0x07, 0x86, 0x00, 0x00, 0x3C, 0x30, 0x00, 0x01, 0xE3, 0x00, + 0x00, 0x0F, 0xB0, 0x00, 0x00, 0x7D, 0x80, 0x00, 0x03, 0xF8, 0x00, 0x00, + 0x0F, 0xC0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x1E, + 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, + 0x00, 0xFF, 0xE3, 0xFF, 0x81, 0xFE, 0x7F, 0x01, 0xFC, 0x00, 0xF8, 0x7C, + 0x01, 0xF0, 0x00, 0xE0, 0xF8, 0x03, 0xE0, 0x01, 0x81, 0xF0, 0x03, 0xC0, + 0x07, 0x03, 0xE0, 0x07, 0x80, 0x0C, 0x03, 0xC0, 0x0F, 0x00, 0x18, 0x07, + 0x80, 0x1E, 0x00, 0x60, 0x0F, 0x00, 0x7E, 0x00, 0xC0, 0x1F, 0x00, 0xFC, + 0x03, 0x00, 0x3E, 0x03, 0xF8, 0x06, 0x00, 0x7C, 0x05, 0xF0, 0x18, 0x00, + 0xF8, 0x1B, 0xE0, 0x30, 0x01, 0xF0, 0x33, 0xC0, 0xC0, 0x01, 0xE0, 0xC7, + 0x83, 0x80, 0x03, 0xC1, 0x8F, 0x06, 0x00, 0x07, 0x86, 0x1E, 0x1C, 0x00, + 0x0F, 0x0C, 0x3C, 0x30, 0x00, 0x1F, 0x30, 0x7C, 0xE0, 0x00, 0x3E, 0x60, + 0xF9, 0x80, 0x00, 0x7D, 0x81, 0xF7, 0x00, 0x00, 0xFB, 0x03, 0xEC, 0x00, + 0x01, 0xFC, 0x03, 0xF8, 0x00, 0x01, 0xF8, 0x07, 0xE0, 0x00, 0x03, 0xE0, + 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x1F, 0x00, 0x00, 0x0F, 0x00, 0x3C, 0x00, + 0x00, 0x1E, 0x00, 0x78, 0x00, 0x00, 0x38, 0x00, 0xE0, 0x00, 0x00, 0x70, + 0x01, 0xC0, 0x00, 0x00, 0xC0, 0x03, 0x00, 0x00, 0x00, 0x80, 0x06, 0x00, + 0x00, 0x07, 0xFF, 0x83, 0xFF, 0x01, 0xFE, 0x00, 0xFE, 0x00, 0x7C, 0x00, + 0x78, 0x00, 0x7C, 0x00, 0x70, 0x00, 0x3C, 0x00, 0xE0, 0x00, 0x3E, 0x01, + 0xC0, 0x00, 0x3E, 0x01, 0x80, 0x00, 0x1F, 0x03, 0x00, 0x00, 0x1F, 0x07, + 0x00, 0x00, 0x0F, 0x0E, 0x00, 0x00, 0x0F, 0x9C, 0x00, 0x00, 0x0F, 0xB8, + 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x03, 0xC0, + 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x07, 0xF0, + 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x1C, 0xF0, 0x00, 0x00, 0x38, 0xF8, + 0x00, 0x00, 0x30, 0xF8, 0x00, 0x00, 0x60, 0x7C, 0x00, 0x00, 0xC0, 0x7C, + 0x00, 0x01, 0xC0, 0x3C, 0x00, 0x03, 0x80, 0x3E, 0x00, 0x07, 0x00, 0x3E, + 0x00, 0x0E, 0x00, 0x1F, 0x00, 0x1E, 0x00, 0x1F, 0x00, 0x7F, 0x00, 0x3F, + 0xC0, 0xFF, 0xC1, 0xFF, 0xF0, 0x7F, 0xF0, 0x7F, 0xC7, 0xF0, 0x03, 0xE0, + 0xF8, 0x00, 0x70, 0x3E, 0x00, 0x38, 0x07, 0x80, 0x0C, 0x01, 0xE0, 0x07, + 0x00, 0x7C, 0x03, 0x80, 0x1F, 0x00, 0xC0, 0x03, 0xC0, 0x60, 0x00, 0xF0, + 0x30, 0x00, 0x3E, 0x1C, 0x00, 0x07, 0x8E, 0x00, 0x01, 0xE3, 0x00, 0x00, + 0x7D, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xF8, 0x00, + 0x00, 0x3C, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, + 0x00, 0x00, 0x78, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, + 0xC0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, 0x00, 0x00, + 0x0F, 0xC0, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0x03, 0xFF, + 0xFF, 0xF8, 0x1F, 0xFF, 0xFF, 0x81, 0xF0, 0x00, 0xFC, 0x0E, 0x00, 0x0F, + 0xC0, 0x60, 0x00, 0xFC, 0x06, 0x00, 0x0F, 0xC0, 0x20, 0x00, 0x7C, 0x00, + 0x00, 0x07, 0xE0, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, + 0x7E, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x03, 0xF0, + 0x00, 0x00, 0x3F, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x1F, 0x00, 0x00, + 0x01, 0xF8, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x1F, + 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0xFC, 0x00, + 0x08, 0x0F, 0xC0, 0x00, 0x80, 0xFC, 0x00, 0x0C, 0x07, 0xC0, 0x00, 0x60, + 0x7E, 0x00, 0x07, 0x07, 0xE0, 0x01, 0xF0, 0x7F, 0xFF, 0xFF, 0x83, 0xFF, + 0xFF, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x3C, 0x00, 0x1C, 0x00, 0x0E, 0x00, + 0x07, 0x00, 0x07, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0xE0, + 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, + 0x00, 0x03, 0x80, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, + 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x07, 0x00, + 0x03, 0x80, 0x01, 0xC0, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x38, + 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x07, 0x80, 0x03, + 0xFC, 0x00, 0xF0, 0x00, 0x38, 0x00, 0x1E, 0x00, 0x07, 0x00, 0x03, 0x80, + 0x01, 0xE0, 0x00, 0x70, 0x00, 0x3C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x03, + 0xC0, 0x00, 0xE0, 0x00, 0x78, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x03, 0x80, + 0x01, 0xC0, 0x00, 0xF0, 0x00, 0x38, 0x00, 0x1E, 0x00, 0x07, 0x00, 0x03, + 0x80, 0x01, 0xE0, 0x00, 0x70, 0x00, 0x3C, 0x00, 0x0E, 0x00, 0x07, 0x00, + 0x03, 0xC0, 0x00, 0xE0, 0x00, 0x78, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, + 0x80, 0x00, 0xFF, 0x80, 0x07, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0xF0, + 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x07, + 0x00, 0x03, 0x80, 0x01, 0xC0, 0x01, 0xE0, 0x00, 0xE0, 0x00, 0x70, 0x00, + 0x38, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x03, 0x80, + 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x78, 0x00, 0x38, + 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 0x80, 0x01, + 0xC0, 0x00, 0xE0, 0x00, 0xF0, 0x00, 0x70, 0x00, 0x38, 0x03, 0xFC, 0x00, + 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x01, 0xF8, 0x00, 0x1F, 0x80, 0x03, 0xBC, + 0x00, 0x39, 0xC0, 0x07, 0x1E, 0x00, 0x70, 0xE0, 0x0E, 0x0F, 0x00, 0xE0, + 0x70, 0x1E, 0x07, 0x81, 0xC0, 0x38, 0x3C, 0x03, 0xC3, 0x80, 0x1C, 0x78, + 0x01, 0xE7, 0x00, 0x0E, 0xF0, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x60, 0xF0, 0xF8, 0x78, 0x3C, 0x1E, 0x0E, 0x07, 0x00, 0x1E, 0x70, + 0x03, 0x0B, 0x80, 0x70, 0x3C, 0x07, 0x01, 0xE0, 0x70, 0x0E, 0x07, 0x00, + 0x70, 0x78, 0x03, 0x83, 0x80, 0x38, 0x3C, 0x01, 0xC1, 0xC0, 0x0E, 0x1E, + 0x00, 0xF0, 0xF0, 0x07, 0x0F, 0x00, 0x78, 0x78, 0x03, 0xC3, 0xC0, 0x3E, + 0x1E, 0x01, 0x70, 0xF0, 0x17, 0x0F, 0x81, 0x38, 0xBE, 0x11, 0xC8, 0xFF, + 0x0F, 0x83, 0xF0, 0x70, 0x00, 0x00, 0xF0, 0x00, 0x7F, 0x00, 0x00, 0x78, + 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x07, 0x00, 0x00, + 0x78, 0x00, 0x03, 0x80, 0x00, 0x1C, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x0F, + 0x80, 0x71, 0xFE, 0x03, 0x98, 0xF8, 0x3D, 0x03, 0xE1, 0xE8, 0x0F, 0x0E, + 0x80, 0x78, 0x78, 0x03, 0xC7, 0xC0, 0x1E, 0x3C, 0x00, 0xF1, 0xE0, 0x0F, + 0x1E, 0x00, 0x78, 0xF0, 0x03, 0xC7, 0x80, 0x3C, 0x38, 0x01, 0xE3, 0xC0, + 0x1E, 0x1E, 0x00, 0xE0, 0xE0, 0x0E, 0x07, 0x00, 0xF0, 0x78, 0x07, 0x03, + 0xC0, 0xE0, 0x0F, 0x0E, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x3F, 0x00, 0x38, + 0x60, 0x38, 0x1C, 0x1C, 0x0F, 0x0E, 0x03, 0x87, 0x80, 0x03, 0xC0, 0x00, + 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x00, 0x03, 0xC0, 0x00, 0xF0, + 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x02, 0x3E, 0x01, + 0x87, 0x80, 0xC1, 0xF0, 0x60, 0x3F, 0xF0, 0x03, 0xF0, 0x00, 0x00, 0x00, + 0x0E, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x1E, 0x00, 0x00, + 0x1C, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x3C, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x38, 0x00, 0x00, 0x78, 0x00, 0x1E, 0x78, 0x00, 0x71, + 0x70, 0x00, 0xC1, 0x70, 0x03, 0x80, 0xF0, 0x07, 0x80, 0xE0, 0x07, 0x01, + 0xE0, 0x0E, 0x01, 0xE0, 0x1E, 0x01, 0xE0, 0x3C, 0x01, 0xC0, 0x3C, 0x01, + 0xC0, 0x78, 0x03, 0xC0, 0x78, 0x03, 0xC0, 0x78, 0x03, 0x80, 0xF0, 0x07, + 0x80, 0xF0, 0x07, 0x80, 0xF0, 0x0F, 0x80, 0xF0, 0x0F, 0x00, 0xF0, 0x17, + 0x08, 0xF0, 0x27, 0x10, 0x78, 0x47, 0x20, 0x7F, 0x87, 0xC0, 0x1E, 0x07, + 0x00, 0x00, 0x1F, 0x00, 0x1C, 0xF0, 0x1C, 0x1C, 0x0E, 0x07, 0x07, 0x01, + 0xC3, 0xC0, 0xF1, 0xE0, 0x38, 0x70, 0x1C, 0x3C, 0x0E, 0x1F, 0x0F, 0x07, + 0x8F, 0x01, 0xFE, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, + 0x00, 0xF0, 0x01, 0x3C, 0x00, 0xC7, 0x80, 0x61, 0xF0, 0x60, 0x3F, 0xF0, + 0x03, 0xE0, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x03, 0x1C, 0x00, 0x00, + 0xC3, 0x80, 0x00, 0x38, 0x70, 0x00, 0x06, 0x00, 0x00, 0x01, 0xC0, 0x00, + 0x00, 0x30, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x78, + 0x00, 0x00, 0x0E, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x07, 0xFF, 0xC0, 0x00, + 0xFF, 0xF8, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x00, + 0x00, 0x01, 0xE0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, + 0xE0, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0xF0, 0x00, + 0x00, 0x1C, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x1E, + 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x70, 0x00, 0x00, 0x0E, 0x00, 0x00, + 0x03, 0xC0, 0x00, 0x00, 0x70, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x01, 0xC0, + 0x00, 0x00, 0x70, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x01, 0x80, 0x00, 0x38, + 0x60, 0x00, 0x07, 0x0C, 0x00, 0x00, 0xE3, 0x00, 0x00, 0x0F, 0x80, 0x00, + 0x00, 0x00, 0x3F, 0x00, 0x07, 0x0E, 0x00, 0x70, 0x3E, 0x07, 0x01, 0xF0, + 0x70, 0x0E, 0x07, 0x80, 0x70, 0x3C, 0x03, 0x81, 0xC0, 0x1C, 0x0E, 0x01, + 0xE0, 0x70, 0x0E, 0x03, 0x80, 0xF0, 0x0E, 0x0F, 0x00, 0x30, 0xE0, 0x00, + 0xFE, 0x00, 0x0C, 0x00, 0x00, 0xC0, 0x00, 0x0E, 0x00, 0x00, 0x7E, 0x00, + 0x03, 0xFE, 0x00, 0x0F, 0xFC, 0x00, 0x8F, 0xF0, 0x18, 0x0F, 0xC1, 0x80, + 0x1F, 0x18, 0x00, 0x78, 0xC0, 0x01, 0xC6, 0x00, 0x0E, 0x30, 0x00, 0x61, + 0xC0, 0x07, 0x06, 0x00, 0x70, 0x1C, 0x0E, 0x00, 0x3F, 0xC0, 0x00, 0x00, + 0xF0, 0x00, 0x7F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, + 0x00, 0xE0, 0x00, 0x07, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1C, + 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x03, 0x80, 0x78, 0x7E, 0x03, 0x86, 0x70, + 0x3C, 0x43, 0x81, 0xE4, 0x1C, 0x0E, 0x40, 0xE0, 0x74, 0x0E, 0x07, 0xA0, + 0x70, 0x3E, 0x03, 0x81, 0xE0, 0x1C, 0x0F, 0x00, 0xE0, 0xF0, 0x0E, 0x07, + 0x80, 0x70, 0x38, 0x03, 0x81, 0xC0, 0x1C, 0x1E, 0x00, 0xC2, 0xF0, 0x0E, + 0x27, 0x00, 0x73, 0x38, 0x03, 0x93, 0xC0, 0x1F, 0x1E, 0x00, 0xE0, 0x03, + 0x81, 0xF0, 0x7C, 0x1F, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x71, 0xFC, 0x1F, 0x07, 0x81, 0xE0, 0x78, 0x1C, 0x07, 0x03, 0xC0, 0xF0, + 0x38, 0x0E, 0x07, 0x81, 0xE0, 0x70, 0x1C, 0x0F, 0x03, 0x84, 0xE2, 0x39, + 0x0F, 0x81, 0xC0, 0x00, 0x01, 0xC0, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, + 0xF0, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x3F, 0xC0, 0x00, 0xF0, 0x00, 0x1E, + 0x00, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x0E, 0x00, 0x03, 0xC0, 0x00, 0x78, + 0x00, 0x0F, 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x0F, 0x00, 0x01, 0xE0, + 0x00, 0x38, 0x00, 0x07, 0x00, 0x01, 0xE0, 0x00, 0x38, 0x00, 0x07, 0x00, + 0x00, 0xE0, 0x00, 0x3C, 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, + 0x07, 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x01, 0xC7, 0x00, 0x38, 0xC0, 0x07, + 0x30, 0x00, 0x7C, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x7F, 0x00, 0x00, 0x78, + 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x07, 0x00, 0x00, + 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x00, + 0x00, 0x70, 0xFF, 0x83, 0x80, 0xF0, 0x3C, 0x06, 0x01, 0xE0, 0x60, 0x0E, + 0x06, 0x00, 0x70, 0xE0, 0x07, 0x8C, 0x00, 0x3C, 0xC0, 0x01, 0xCC, 0x00, + 0x0F, 0xF0, 0x00, 0xFF, 0x80, 0x07, 0x9E, 0x00, 0x38, 0xF0, 0x01, 0xC3, + 0x80, 0x1E, 0x1E, 0x00, 0xF0, 0x70, 0x07, 0x03, 0xC2, 0x78, 0x0E, 0x13, + 0xC0, 0x79, 0x1E, 0x01, 0xF0, 0x00, 0x07, 0x00, 0x00, 0xE1, 0xFC, 0x0F, + 0x80, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1C, 0x07, 0x80, 0xF0, 0x1E, 0x03, + 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x70, 0x1E, 0x03, 0xC0, 0x78, 0x0E, 0x03, + 0xC0, 0x78, 0x0E, 0x01, 0xC0, 0x78, 0x0F, 0x01, 0xC0, 0x38, 0x4F, 0x11, + 0xE4, 0x39, 0x07, 0xC0, 0x70, 0x00, 0x07, 0x81, 0xC0, 0x78, 0xFE, 0x0F, + 0xC1, 0xF8, 0x3C, 0x33, 0x84, 0x70, 0x78, 0x87, 0x10, 0xE0, 0xF2, 0x0E, + 0x41, 0xC1, 0xC8, 0x39, 0x07, 0x87, 0xA0, 0x74, 0x0F, 0x0F, 0x40, 0xE8, + 0x1E, 0x1F, 0x01, 0xE0, 0x38, 0x3C, 0x07, 0xC0, 0xF0, 0xF8, 0x0F, 0x01, + 0xE1, 0xE0, 0x1E, 0x03, 0xC3, 0xC0, 0x38, 0x07, 0x07, 0x00, 0xF0, 0x1E, + 0x1E, 0x01, 0xE0, 0x3C, 0x3C, 0x03, 0x80, 0x79, 0x70, 0x07, 0x00, 0xE2, + 0xE0, 0x1E, 0x03, 0x8B, 0xC0, 0x3C, 0x07, 0x27, 0x80, 0x70, 0x0F, 0x8E, + 0x00, 0xE0, 0x1E, 0x00, 0x07, 0x81, 0xE3, 0xFC, 0x3F, 0x83, 0xC2, 0x3C, + 0x1E, 0x21, 0xE0, 0xF2, 0x0F, 0x07, 0x20, 0x70, 0x39, 0x07, 0x83, 0xD0, + 0x3C, 0x1F, 0x01, 0xE0, 0xE8, 0x0E, 0x0F, 0x80, 0xF0, 0x78, 0x07, 0x83, + 0xC0, 0x38, 0x1C, 0x01, 0xC1, 0xE0, 0x1E, 0x0F, 0x00, 0xF1, 0x70, 0x07, + 0x0B, 0x80, 0x38, 0xBC, 0x01, 0xC9, 0xE0, 0x0F, 0x8E, 0x00, 0x38, 0x00, + 0x00, 0x1F, 0x80, 0x07, 0x8F, 0x00, 0x70, 0x3C, 0x07, 0x00, 0xE0, 0x70, + 0x07, 0x87, 0x80, 0x3C, 0x78, 0x01, 0xE7, 0x80, 0x0F, 0x3C, 0x00, 0x7B, + 0xC0, 0x03, 0xDE, 0x00, 0x3D, 0xF0, 0x01, 0xEF, 0x80, 0x0F, 0x78, 0x00, + 0xF3, 0xC0, 0x07, 0x9E, 0x00, 0x78, 0xF0, 0x03, 0x87, 0x80, 0x38, 0x1C, + 0x03, 0x80, 0xF0, 0x38, 0x03, 0xC3, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x3C, + 0x3F, 0x00, 0x7F, 0x8F, 0xF0, 0x01, 0xF7, 0x3F, 0x00, 0x1D, 0x83, 0xF0, + 0x07, 0xA0, 0x3E, 0x00, 0xF8, 0x07, 0xC0, 0x1E, 0x00, 0xF8, 0x03, 0xC0, + 0x1F, 0x00, 0xF0, 0x03, 0xE0, 0x1E, 0x00, 0x7C, 0x03, 0xC0, 0x1F, 0x00, + 0x70, 0x03, 0xE0, 0x1E, 0x00, 0x78, 0x03, 0xC0, 0x1F, 0x00, 0x70, 0x03, + 0xC0, 0x0E, 0x00, 0xF8, 0x03, 0xC0, 0x1E, 0x00, 0x78, 0x07, 0x80, 0x0F, + 0x01, 0xE0, 0x01, 0xE0, 0x70, 0x00, 0x7C, 0x3C, 0x00, 0x0F, 0x7C, 0x00, + 0x01, 0xC0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x01, 0xE0, + 0x00, 0x00, 0x38, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, + 0x7E, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x03, 0x8D, + 0xC0, 0x38, 0x2E, 0x07, 0x80, 0xF0, 0x78, 0x07, 0x03, 0x80, 0x38, 0x38, + 0x03, 0xC3, 0xC0, 0x1E, 0x3C, 0x00, 0xE1, 0xE0, 0x07, 0x1E, 0x00, 0x78, + 0xF0, 0x03, 0x87, 0x80, 0x3C, 0x78, 0x01, 0xE3, 0xC0, 0x1F, 0x1E, 0x01, + 0x70, 0xF0, 0x17, 0x87, 0x80, 0xBC, 0x3C, 0x09, 0xC0, 0xF1, 0x8E, 0x07, + 0xF8, 0xF0, 0x1F, 0x07, 0x80, 0x00, 0x38, 0x00, 0x03, 0xC0, 0x00, 0x1E, + 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, + 0x3E, 0x00, 0x0F, 0xFE, 0x00, 0x07, 0x87, 0x3F, 0x87, 0xC3, 0xC7, 0xE1, + 0xE6, 0xF0, 0xF6, 0x00, 0x72, 0x00, 0x3A, 0x00, 0x1D, 0x00, 0x1F, 0x00, + 0x0E, 0x80, 0x07, 0x80, 0x03, 0xC0, 0x03, 0xC0, 0x01, 0xE0, 0x00, 0xF0, + 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1C, 0x00, 0x1E, 0x00, 0x0F, + 0x00, 0x00, 0x01, 0xF8, 0x81, 0x87, 0xC1, 0x80, 0xE1, 0xC0, 0x60, 0xE0, + 0x10, 0x70, 0x08, 0x3C, 0x04, 0x1F, 0x00, 0x07, 0xC0, 0x03, 0xE0, 0x00, + 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x03, 0xC1, 0x01, 0xE0, 0x80, 0x70, + 0x40, 0x38, 0x30, 0x1C, 0x38, 0x0C, 0x1C, 0x0E, 0x0F, 0x0E, 0x04, 0x7C, + 0x00, 0x00, 0xC0, 0x18, 0x03, 0x80, 0x78, 0x1F, 0x03, 0xFF, 0x7F, 0xF0, + 0xF0, 0x0E, 0x00, 0xE0, 0x1E, 0x01, 0xE0, 0x1C, 0x01, 0xC0, 0x3C, 0x03, + 0xC0, 0x38, 0x03, 0x80, 0x78, 0x07, 0x80, 0x70, 0x8F, 0x10, 0xF1, 0x0F, + 0x20, 0xFC, 0x07, 0x80, 0x00, 0x00, 0x00, 0xF0, 0x0E, 0x7F, 0x00, 0xE0, + 0xF0, 0x1E, 0x0E, 0x01, 0xE1, 0xE0, 0x3C, 0x1E, 0x03, 0xC1, 0xE0, 0x3C, + 0x1C, 0x07, 0xC3, 0xC0, 0x78, 0x3C, 0x0F, 0x83, 0xC0, 0xB8, 0x38, 0x1F, + 0x87, 0x83, 0x70, 0x78, 0x27, 0x07, 0x86, 0x70, 0x70, 0xC7, 0x1F, 0x08, + 0xE1, 0xE1, 0x0E, 0x2E, 0x60, 0xE4, 0xFC, 0x0F, 0x87, 0x00, 0x70, 0x1C, + 0x03, 0xBF, 0x00, 0xF1, 0xE0, 0x3C, 0x78, 0x07, 0x1E, 0x00, 0xC3, 0x80, + 0x30, 0xE0, 0x08, 0x38, 0x06, 0x0E, 0x01, 0x03, 0x80, 0xC0, 0xF0, 0x20, + 0x3C, 0x10, 0x07, 0x04, 0x01, 0xC2, 0x00, 0x71, 0x00, 0x1C, 0xC0, 0x07, + 0x60, 0x01, 0xF0, 0x00, 0x78, 0x00, 0x1C, 0x00, 0x06, 0x00, 0x01, 0x00, + 0x00, 0x0C, 0x00, 0x40, 0x3B, 0xF8, 0x01, 0x00, 0xF1, 0xE0, 0x0C, 0x03, + 0xC3, 0x80, 0x78, 0x07, 0x0E, 0x01, 0xE0, 0x0C, 0x38, 0x0F, 0x80, 0x20, + 0xE0, 0x6E, 0x00, 0x83, 0x81, 0x38, 0x04, 0x0F, 0x0C, 0xE0, 0x10, 0x1C, + 0x23, 0x80, 0x80, 0x71, 0x8E, 0x06, 0x01, 0xCC, 0x38, 0x10, 0x07, 0x20, + 0xE0, 0x80, 0x1D, 0x83, 0x86, 0x00, 0x7C, 0x07, 0x30, 0x01, 0xF0, 0x1C, + 0x80, 0x07, 0x80, 0x74, 0x00, 0x1E, 0x01, 0xF0, 0x00, 0x70, 0x07, 0x80, + 0x01, 0xC0, 0x1C, 0x00, 0x06, 0x00, 0x60, 0x00, 0x10, 0x01, 0x00, 0x00, + 0x00, 0xE0, 0x38, 0x1F, 0x81, 0xF0, 0x8F, 0x09, 0x80, 0x3C, 0x40, 0x00, + 0x72, 0x00, 0x01, 0xD0, 0x00, 0x07, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0x38, + 0x00, 0x00, 0xE0, 0x00, 0x03, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x7C, 0x00, + 0x01, 0x70, 0x00, 0x09, 0xC0, 0x00, 0x67, 0x00, 0x01, 0x1E, 0x10, 0x08, + 0x38, 0x40, 0x40, 0xE2, 0x39, 0x03, 0xD0, 0xF8, 0x0F, 0x83, 0xC0, 0x1C, + 0x00, 0x07, 0x80, 0x33, 0xFC, 0x03, 0xC1, 0xE0, 0x1E, 0x07, 0x80, 0x70, + 0x3C, 0x01, 0x80, 0xE0, 0x0C, 0x07, 0x80, 0x40, 0x3C, 0x02, 0x00, 0xE0, + 0x20, 0x07, 0x81, 0x00, 0x3C, 0x18, 0x01, 0xE0, 0x80, 0x07, 0x0C, 0x00, + 0x38, 0x40, 0x01, 0xE4, 0x00, 0x0F, 0x60, 0x00, 0x3A, 0x00, 0x01, 0xF0, + 0x00, 0x0F, 0x00, 0x00, 0x70, 0x00, 0x03, 0x80, 0x00, 0x18, 0x00, 0x00, + 0x80, 0x00, 0x0C, 0x00, 0x00, 0x40, 0x00, 0x04, 0x00, 0x00, 0x40, 0x00, + 0x04, 0x00, 0x0E, 0x40, 0x00, 0x7C, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x0F, + 0xFF, 0x87, 0xFF, 0x82, 0x00, 0x83, 0x00, 0xC1, 0x00, 0xC0, 0x00, 0xC0, + 0x00, 0xC0, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x20, + 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x18, 0x00, 0x1E, + 0x00, 0x1F, 0xC0, 0x1F, 0xF0, 0xE8, 0xFC, 0x70, 0x1E, 0x38, 0x03, 0x88, + 0x00, 0x78, 0x00, 0x0F, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x0E, 0x00, 0x0F, + 0x00, 0x07, 0x80, 0x03, 0x80, 0x01, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, + 0x70, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x0F, 0x00, + 0x07, 0x80, 0x07, 0x80, 0x03, 0xC0, 0x07, 0xC0, 0x07, 0xC0, 0x00, 0x80, + 0x00, 0x60, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x0F, 0x00, 0x07, + 0x80, 0x03, 0x80, 0x01, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, 0x70, 0x00, + 0x38, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x01, 0x80, + 0x00, 0x70, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xE0, 0x00, 0x18, 0x00, 0x0E, 0x00, 0x06, 0x00, 0x07, + 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0E, + 0x00, 0x0E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x3C, + 0x00, 0x3C, 0x00, 0x38, 0x00, 0x38, 0x00, 0x18, 0x00, 0x08, 0x00, 0x1C, + 0x00, 0x7E, 0x00, 0x78, 0x00, 0xF0, 0x00, 0xE0, 0x01, 0xE0, 0x01, 0xE0, + 0x01, 0xC0, 0x01, 0xC0, 0x03, 0xC0, 0x03, 0x80, 0x03, 0x80, 0x07, 0x80, + 0x07, 0x80, 0x07, 0x00, 0x07, 0x00, 0x0F, 0x00, 0x0E, 0x00, 0x1C, 0x00, + 0xF8, 0x00, 0x1F, 0x80, 0x00, 0xFF, 0x80, 0xC7, 0xFF, 0x87, 0xBC, 0x3F, + 0xFE, 0x60, 0x3F, 0xF0, 0x00, 0x1F, 0x00}; + +const GFXglyph FreeSerifItalic24pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 12, 0, 1}, // 0x20 ' ' + {0, 12, 32, 16, 2, -30}, // 0x21 '!' + {48, 14, 12, 16, 6, -31}, // 0x22 '"' + {69, 25, 31, 23, 0, -30}, // 0x23 '#' + {166, 21, 38, 24, 2, -33}, // 0x24 '$' + {266, 33, 32, 39, 4, -30}, // 0x25 '%' + {398, 30, 33, 37, 4, -31}, // 0x26 '&' + {522, 5, 12, 9, 6, -31}, // 0x27 ''' + {530, 13, 39, 16, 2, -30}, // 0x28 '(' + {594, 13, 39, 16, 0, -30}, // 0x29 ')' + {658, 16, 20, 23, 7, -31}, // 0x2A '*' + {698, 23, 23, 32, 4, -22}, // 0x2B '+' + {765, 7, 11, 12, -1, -4}, // 0x2C ',' + {775, 11, 3, 16, 2, -11}, // 0x2D '-' + {780, 5, 5, 12, 1, -3}, // 0x2E '.' + {784, 21, 33, 14, 0, -31}, // 0x2F '/' + {871, 21, 31, 23, 2, -30}, // 0x30 '0' + {953, 17, 32, 23, 2, -31}, // 0x31 '1' + {1021, 21, 31, 24, 0, -30}, // 0x32 '2' + {1103, 22, 32, 23, 0, -31}, // 0x33 '3' + {1191, 22, 32, 23, 0, -31}, // 0x34 '4' + {1279, 22, 32, 24, 0, -31}, // 0x35 '5' + {1367, 23, 32, 23, 1, -31}, // 0x36 '6' + {1459, 21, 32, 23, 4, -31}, // 0x37 '7' + {1543, 22, 32, 23, 1, -31}, // 0x38 '8' + {1631, 22, 33, 23, 1, -31}, // 0x39 '9' + {1722, 9, 22, 12, 2, -20}, // 0x3A ':' + {1747, 11, 27, 12, 1, -20}, // 0x3B ';' + {1785, 23, 25, 27, 3, -24}, // 0x3C '<' + {1857, 24, 12, 31, 4, -17}, // 0x3D '=' + {1893, 24, 25, 27, 3, -24}, // 0x3E '>' + {1968, 16, 33, 21, 6, -31}, // 0x3F '?' + {2034, 33, 33, 37, 3, -31}, // 0x40 '@' + {2171, 29, 31, 31, 0, -30}, // 0x41 'A' + {2284, 28, 31, 28, 0, -30}, // 0x42 'B' + {2393, 30, 33, 29, 2, -31}, // 0x43 'C' + {2517, 33, 31, 33, 0, -30}, // 0x44 'D' + {2645, 29, 31, 27, 0, -30}, // 0x45 'E' + {2758, 29, 31, 27, 0, -30}, // 0x46 'F' + {2871, 31, 33, 32, 2, -31}, // 0x47 'G' + {2999, 36, 31, 33, 0, -30}, // 0x48 'H' + {3139, 18, 31, 15, 0, -30}, // 0x49 'I' + {3209, 23, 32, 20, 0, -30}, // 0x4A 'J' + {3301, 33, 31, 30, 0, -30}, // 0x4B 'K' + {3429, 27, 31, 27, 0, -30}, // 0x4C 'L' + {3534, 42, 31, 39, 0, -30}, // 0x4D 'M' + {3697, 35, 32, 32, 0, -30}, // 0x4E 'N' + {3837, 30, 33, 31, 2, -31}, // 0x4F 'O' + {3961, 29, 31, 27, 0, -30}, // 0x50 'P' + {4074, 30, 41, 31, 2, -31}, // 0x51 'Q' + {4228, 28, 31, 29, 0, -30}, // 0x52 'R' + {4337, 23, 33, 21, 0, -31}, // 0x53 'S' + {4432, 27, 31, 28, 4, -30}, // 0x54 'T' + {4537, 31, 32, 33, 5, -30}, // 0x55 'U' + {4661, 29, 32, 31, 6, -30}, // 0x56 'V' + {4777, 39, 32, 42, 6, -30}, // 0x57 'W' + {4933, 32, 31, 31, 0, -30}, // 0x58 'X' + {5057, 26, 31, 28, 5, -30}, // 0x59 'Y' + {5158, 29, 31, 26, 0, -30}, // 0x5A 'Z' + {5271, 17, 39, 18, 1, -31}, // 0x5B '[' + {5354, 17, 33, 23, 5, -31}, // 0x5C '\' + {5425, 17, 39, 18, 1, -31}, // 0x5D ']' + {5508, 20, 17, 20, 0, -31}, // 0x5E '^' + {5551, 24, 2, 23, 0, 5}, // 0x5F '_' + {5557, 8, 8, 12, 6, -31}, // 0x60 '`' + {5565, 21, 21, 23, 1, -20}, // 0x61 'a' + {5621, 21, 33, 22, 1, -31}, // 0x62 'b' + {5708, 18, 22, 19, 1, -20}, // 0x63 'c' + {5758, 24, 33, 23, 1, -31}, // 0x64 'd' + {5857, 18, 22, 19, 1, -20}, // 0x65 'e' + {5907, 27, 42, 20, -4, -31}, // 0x66 'f' + {6049, 21, 31, 21, -1, -20}, // 0x67 'g' + {6131, 21, 32, 23, 1, -31}, // 0x68 'h' + {6215, 10, 32, 12, 2, -30}, // 0x69 'i' + {6255, 19, 41, 13, -3, -30}, // 0x6A 'j' + {6353, 21, 33, 21, 1, -31}, // 0x6B 'k' + {6440, 11, 33, 12, 2, -31}, // 0x6C 'l' + {6486, 31, 21, 34, 1, -20}, // 0x6D 'm' + {6568, 21, 21, 23, 1, -20}, // 0x6E 'n' + {6624, 21, 22, 22, 1, -20}, // 0x6F 'o' + {6682, 27, 31, 22, -4, -20}, // 0x70 'p' + {6787, 21, 31, 23, 1, -20}, // 0x71 'q' + {6869, 17, 21, 17, 1, -20}, // 0x72 'r' + {6914, 17, 22, 16, 0, -20}, // 0x73 's' + {6961, 12, 26, 11, 1, -24}, // 0x74 't' + {7000, 20, 22, 23, 1, -20}, // 0x75 'u' + {7055, 18, 22, 21, 3, -20}, // 0x76 'v' + {7105, 30, 22, 32, 2, -20}, // 0x77 'w' + {7188, 22, 22, 20, -1, -20}, // 0x78 'x' + {7249, 21, 31, 22, 1, -20}, // 0x79 'y' + {7331, 17, 24, 18, 0, -19}, // 0x7A 'z' + {7382, 17, 40, 19, 2, -31}, // 0x7B '{' + {7467, 3, 33, 13, 5, -31}, // 0x7C '|' + {7480, 16, 41, 19, 0, -32}, // 0x7D '}' + {7562, 22, 6, 25, 2, -14}}; // 0x7E '~' + +const GFXfont FreeSerifItalic24pt7b PROGMEM = { + (uint8_t *)FreeSerifItalic24pt7bBitmaps, + (GFXglyph *)FreeSerifItalic24pt7bGlyphs, 0x20, 0x7E, 56}; + +// Approx. 8251 bytes diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifItalic9pt7b.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifItalic9pt7b.h new file mode 100644 index 0000000..be4ad05 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/FreeSerifItalic9pt7b.h @@ -0,0 +1,204 @@ +#pragma once +#include + +const uint8_t FreeSerifItalic9pt7bBitmaps[] PROGMEM = { + 0x11, 0x12, 0x22, 0x24, 0x40, 0x0C, 0xDE, 0xE5, 0x40, 0x04, 0x82, 0x20, + 0x98, 0x24, 0x7F, 0xC4, 0x82, 0x23, 0xFC, 0x24, 0x11, 0x04, 0x83, 0x20, + 0x1C, 0x1B, 0x99, 0x4D, 0x26, 0x81, 0xC0, 0x70, 0x1C, 0x13, 0x49, 0xA4, + 0xDA, 0xC7, 0xC1, 0x00, 0x80, 0x1C, 0x61, 0xCF, 0x0E, 0x28, 0x30, 0xA0, + 0xC5, 0x03, 0x34, 0xE7, 0xAE, 0x40, 0xB1, 0x05, 0x84, 0x26, 0x20, 0x99, + 0x84, 0x3C, 0x03, 0x80, 0x6C, 0x06, 0xC0, 0x78, 0x06, 0x01, 0xEF, 0x66, + 0x24, 0x24, 0xC3, 0x8C, 0x10, 0xE3, 0x87, 0xCE, 0xFA, 0x08, 0x21, 0x08, + 0x61, 0x8C, 0x30, 0xC3, 0x0C, 0x30, 0x41, 0x02, 0x00, 0x10, 0x40, 0x82, + 0x0C, 0x30, 0xC3, 0x0C, 0x61, 0x84, 0x21, 0x08, 0x00, 0x30, 0xCA, 0x5E, + 0x6A, 0x93, 0x08, 0x08, 0x04, 0x02, 0x01, 0x0F, 0xF8, 0x40, 0x20, 0x10, + 0x08, 0x00, 0x56, 0xF0, 0xF0, 0x03, 0x02, 0x06, 0x04, 0x08, 0x08, 0x10, + 0x30, 0x20, 0x60, 0x40, 0xC0, 0x0E, 0x0C, 0x8C, 0x6C, 0x36, 0x1F, 0x0F, + 0x07, 0x87, 0xC3, 0x61, 0xB1, 0x88, 0x83, 0x80, 0x04, 0x70, 0xC3, 0x08, + 0x21, 0x86, 0x10, 0x43, 0x08, 0xF8, 0x1C, 0x67, 0x83, 0x03, 0x02, 0x06, + 0x0C, 0x08, 0x10, 0x20, 0x42, 0xFC, 0x0F, 0x08, 0xC0, 0x60, 0xC1, 0xE0, + 0x38, 0x0C, 0x06, 0x03, 0x01, 0x01, 0x1F, 0x00, 0x01, 0x01, 0x81, 0x41, + 0x61, 0x21, 0x11, 0x18, 0x88, 0xFF, 0x02, 0x03, 0x01, 0x00, 0x0F, 0x84, + 0x04, 0x03, 0x80, 0x60, 0x18, 0x0C, 0x06, 0x03, 0x03, 0x03, 0x1E, 0x00, + 0x01, 0x83, 0x87, 0x07, 0x03, 0x03, 0x73, 0xCD, 0x86, 0xC3, 0x61, 0xB1, + 0x88, 0xC3, 0xC0, 0x7F, 0x40, 0x80, 0x80, 0x40, 0x40, 0x60, 0x20, 0x20, + 0x10, 0x10, 0x18, 0x08, 0x00, 0x1E, 0x19, 0xCC, 0x66, 0x33, 0xB0, 0xE0, + 0x50, 0xCC, 0xC3, 0x61, 0xB0, 0xCC, 0xC3, 0xC0, 0x0E, 0x19, 0x8C, 0x6C, + 0x36, 0x1B, 0x0D, 0x86, 0xE6, 0x3F, 0x03, 0x03, 0x06, 0x0C, 0x00, 0x33, + 0x00, 0x00, 0xCC, 0x33, 0x00, 0x00, 0x44, 0x48, 0x01, 0x83, 0x86, 0x1C, + 0x0C, 0x03, 0x80, 0x30, 0x07, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x00, 0x0F, + 0xF8, 0xC0, 0x1C, 0x03, 0x80, 0x70, 0x18, 0x38, 0x70, 0xC0, 0x80, 0x00, + 0x3C, 0x8C, 0x18, 0x30, 0xC3, 0x0C, 0x20, 0x40, 0x80, 0x06, 0x00, 0x0F, + 0xC0, 0xC3, 0x0C, 0x04, 0xC7, 0xBC, 0x64, 0xE2, 0x27, 0x31, 0x39, 0x91, + 0xCC, 0x93, 0x3B, 0x0E, 0x00, 0x1F, 0x80, 0x01, 0x00, 0x60, 0x14, 0x04, + 0xC0, 0x98, 0x23, 0x07, 0xE1, 0x04, 0x20, 0x88, 0x1B, 0x8F, 0x80, 0x3F, + 0xC1, 0x8C, 0x21, 0x8C, 0x31, 0x8C, 0x3E, 0x04, 0x61, 0x86, 0x30, 0xC4, + 0x19, 0x86, 0x7F, 0x80, 0x07, 0x91, 0x86, 0x30, 0x26, 0x02, 0x60, 0x0C, + 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0x61, 0x83, 0xE0, 0x3F, 0xC0, + 0x63, 0x82, 0x0C, 0x30, 0x31, 0x81, 0x8C, 0x0C, 0x40, 0x66, 0x07, 0x30, + 0x31, 0x03, 0x18, 0x71, 0xFE, 0x00, 0x3F, 0xF0, 0xC2, 0x08, 0x21, 0x80, + 0x19, 0x81, 0xF8, 0x11, 0x03, 0x10, 0x30, 0x02, 0x04, 0x60, 0x8F, 0xF8, + 0x3F, 0xF0, 0xC2, 0x08, 0x21, 0x80, 0x19, 0x81, 0xF8, 0x11, 0x03, 0x10, + 0x30, 0x02, 0x00, 0x60, 0x0F, 0x80, 0x07, 0x91, 0x87, 0x30, 0x26, 0x02, + 0x60, 0x0C, 0x00, 0xC1, 0xFC, 0x0C, 0xC0, 0xCC, 0x0C, 0x60, 0x83, 0xF0, + 0x3E, 0x3C, 0x30, 0x60, 0x81, 0x06, 0x0C, 0x18, 0x30, 0x7F, 0x81, 0x06, + 0x0C, 0x18, 0x30, 0x60, 0x81, 0x06, 0x0C, 0x3C, 0x78, 0x1E, 0x18, 0x20, + 0xC1, 0x83, 0x04, 0x18, 0x30, 0x41, 0x87, 0x80, 0x0F, 0x81, 0x80, 0x80, + 0xC0, 0x60, 0x20, 0x30, 0x18, 0x0C, 0x04, 0x36, 0x1E, 0x00, 0x3E, 0x78, + 0x61, 0x82, 0x10, 0x31, 0x01, 0xB0, 0x0E, 0x00, 0x58, 0x06, 0x60, 0x33, + 0x01, 0x0C, 0x18, 0x61, 0xE7, 0xC0, 0x3E, 0x01, 0x80, 0x20, 0x0C, 0x01, + 0x80, 0x30, 0x04, 0x01, 0x80, 0x30, 0x04, 0x0D, 0x83, 0x7F, 0xE0, 0x1C, + 0x07, 0x0C, 0x0E, 0x0C, 0x14, 0x14, 0x1C, 0x14, 0x2C, 0x16, 0x4C, 0x26, + 0x48, 0x26, 0x98, 0x27, 0x18, 0x27, 0x10, 0x42, 0x30, 0xF4, 0x7C, 0x38, + 0x78, 0x60, 0x83, 0x04, 0x2C, 0x41, 0x22, 0x09, 0x10, 0x4D, 0x84, 0x28, + 0x21, 0x41, 0x06, 0x10, 0x21, 0xE1, 0x00, 0x07, 0x83, 0x18, 0xC1, 0xB0, + 0x36, 0x07, 0xC0, 0xF0, 0x3E, 0x06, 0xC0, 0xD8, 0x31, 0x8C, 0x1E, 0x00, + 0x3F, 0xC1, 0x9C, 0x21, 0x8C, 0x31, 0x86, 0x31, 0x87, 0xE1, 0x80, 0x30, + 0x04, 0x01, 0x80, 0x78, 0x00, 0x07, 0x83, 0x18, 0xC1, 0x98, 0x36, 0x07, + 0xC0, 0xF0, 0x1E, 0x06, 0xC0, 0xD8, 0x31, 0x04, 0x13, 0x01, 0x80, 0x70, + 0xB7, 0xE0, 0x3F, 0xC1, 0x8C, 0x21, 0x8C, 0x31, 0x8C, 0x3F, 0x04, 0xC1, + 0x98, 0x31, 0x84, 0x31, 0x86, 0x78, 0x70, 0x1E, 0x4C, 0x63, 0x08, 0xC0, + 0x38, 0x07, 0x00, 0x60, 0x0C, 0x43, 0x10, 0xC6, 0x62, 0x70, 0x7F, 0xE9, + 0x8E, 0x31, 0x04, 0x01, 0x80, 0x30, 0x06, 0x00, 0x80, 0x30, 0x06, 0x00, + 0x80, 0x7E, 0x00, 0x7C, 0xF3, 0x02, 0x30, 0x46, 0x04, 0x60, 0x46, 0x04, + 0x40, 0x8C, 0x08, 0xC0, 0x8C, 0x10, 0xE3, 0x03, 0xC0, 0xF8, 0xEC, 0x0C, + 0x81, 0x18, 0x43, 0x08, 0x62, 0x0C, 0x81, 0x90, 0x14, 0x03, 0x00, 0x60, + 0x08, 0x00, 0xFB, 0xCE, 0x43, 0x0C, 0x86, 0x11, 0x8C, 0x43, 0x38, 0x86, + 0xB2, 0x0D, 0x24, 0x1C, 0x50, 0x38, 0xA0, 0x21, 0x80, 0x42, 0x01, 0x04, + 0x00, 0x3E, 0x71, 0x82, 0x0C, 0x40, 0xC8, 0x07, 0x00, 0x60, 0x06, 0x00, + 0xB0, 0x13, 0x02, 0x18, 0x61, 0x8F, 0x3E, 0xF9, 0xC8, 0x23, 0x10, 0xC8, + 0x34, 0x05, 0x01, 0x80, 0x40, 0x30, 0x0C, 0x03, 0x03, 0xE0, 0x3F, 0xE4, + 0x19, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0x40, 0x18, 0x06, 0x05, + 0x81, 0x7F, 0xE0, 0x0E, 0x10, 0x20, 0x81, 0x02, 0x04, 0x10, 0x20, 0x40, + 0x82, 0x04, 0x08, 0x1C, 0x00, 0x81, 0x04, 0x18, 0x20, 0xC1, 0x04, 0x08, + 0x20, 0x41, 0x38, 0x20, 0x82, 0x08, 0x41, 0x04, 0x10, 0xC2, 0x08, 0x20, + 0x8C, 0x00, 0x18, 0x18, 0x2C, 0x24, 0x46, 0x42, 0x83, 0xFF, 0x80, 0xD8, + 0x80, 0x1F, 0x98, 0x98, 0x4C, 0x2C, 0x36, 0x33, 0x3A, 0xEE, 0x38, 0x08, + 0x04, 0x02, 0x03, 0x71, 0xCC, 0xC6, 0xC3, 0x63, 0x21, 0x93, 0x8F, 0x00, + 0x1F, 0x33, 0x60, 0xC0, 0xC0, 0xC0, 0xC4, 0x78, 0x01, 0x80, 0x40, 0x60, + 0x20, 0xF1, 0x89, 0x8C, 0xC4, 0xC2, 0x63, 0x33, 0xAE, 0xE0, 0x0E, 0x65, + 0x8B, 0x2F, 0x98, 0x31, 0x3C, 0x01, 0xE0, 0x40, 0x08, 0x02, 0x00, 0x40, + 0x3E, 0x03, 0x00, 0x40, 0x08, 0x01, 0x00, 0x60, 0x0C, 0x01, 0x00, 0x20, + 0x04, 0x01, 0x00, 0xC0, 0x00, 0x1E, 0x19, 0xD8, 0xCC, 0xE1, 0xC3, 0x01, + 0xE0, 0xBC, 0x82, 0x41, 0x31, 0x0F, 0x00, 0x38, 0x08, 0x04, 0x02, 0x03, + 0x39, 0x6C, 0xC6, 0x46, 0x63, 0x21, 0x11, 0xB8, 0xE0, 0x30, 0x00, 0xE2, + 0x44, 0xC8, 0xCE, 0x06, 0x00, 0x00, 0x00, 0xC0, 0x83, 0x04, 0x08, 0x10, + 0x60, 0x81, 0x02, 0x04, 0x70, 0x38, 0x10, 0x10, 0x10, 0x37, 0x22, 0x24, + 0x38, 0x78, 0x48, 0x4D, 0xC6, 0x73, 0x32, 0x26, 0x64, 0x4C, 0xDE, 0x77, + 0x39, 0x5E, 0xCC, 0xCC, 0xCE, 0x66, 0x62, 0x22, 0x11, 0x11, 0xB9, 0x8E, + 0x77, 0x3B, 0x33, 0x62, 0x62, 0x42, 0x4D, 0xCE, 0x0F, 0x18, 0xD8, 0x7C, + 0x3C, 0x3E, 0x1B, 0x18, 0xF0, 0x3B, 0x87, 0x31, 0x8C, 0x43, 0x31, 0x88, + 0x62, 0x30, 0xF0, 0x60, 0x10, 0x04, 0x03, 0x80, 0x0F, 0x18, 0x98, 0x4C, + 0x2C, 0x26, 0x33, 0x38, 0xEC, 0x04, 0x02, 0x03, 0x03, 0xC0, 0x76, 0x50, + 0xC1, 0x06, 0x08, 0x10, 0x60, 0x1A, 0x6C, 0xC8, 0xC0, 0xD1, 0xB3, 0x5C, + 0x23, 0xC8, 0xC4, 0x21, 0x18, 0xE0, 0xC3, 0x42, 0x42, 0xC6, 0x86, 0x8C, + 0x9D, 0xEE, 0x62, 0xC4, 0x89, 0xA3, 0x47, 0x0C, 0x10, 0xE2, 0x2C, 0x44, + 0xD8, 0x9D, 0x23, 0xA4, 0x65, 0x0C, 0xC1, 0x10, 0x19, 0x95, 0x43, 0x01, + 0x80, 0xC0, 0xA0, 0x91, 0x8E, 0x70, 0x88, 0x46, 0x23, 0x20, 0x90, 0x50, + 0x28, 0x18, 0x08, 0x08, 0x08, 0x18, 0x00, 0x3F, 0x42, 0x04, 0x08, 0x10, + 0x20, 0x40, 0x72, 0x0E, 0x08, 0x61, 0x04, 0x30, 0x86, 0x08, 0x61, 0x04, + 0x30, 0xC3, 0x8F, 0x00, 0xFF, 0xF0, 0x1E, 0x0C, 0x10, 0x20, 0xC1, 0x82, + 0x04, 0x1C, 0x30, 0x40, 0x83, 0x04, 0x08, 0x20, 0x60, 0x99, 0x8E}; + +const GFXglyph FreeSerifItalic9pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 5, 0, 1}, // 0x20 ' ' + {0, 4, 12, 6, 1, -11}, // 0x21 '!' + {6, 5, 4, 6, 3, -11}, // 0x22 '"' + {9, 10, 12, 9, 0, -11}, // 0x23 '#' + {24, 9, 15, 9, 1, -12}, // 0x24 '$' + {41, 14, 12, 15, 1, -11}, // 0x25 '%' + {62, 12, 12, 14, 1, -11}, // 0x26 '&' + {80, 2, 4, 4, 3, -11}, // 0x27 ''' + {81, 6, 15, 6, 1, -11}, // 0x28 '(' + {93, 6, 15, 6, 0, -11}, // 0x29 ')' + {105, 6, 8, 9, 3, -11}, // 0x2A '*' + {111, 9, 9, 12, 1, -8}, // 0x2B '+' + {122, 2, 4, 5, 0, -1}, // 0x2C ',' + {123, 4, 1, 6, 1, -3}, // 0x2D '-' + {124, 2, 2, 5, 0, -1}, // 0x2E '.' + {125, 8, 12, 5, 0, -11}, // 0x2F '/' + {137, 9, 13, 9, 1, -12}, // 0x30 '0' + {152, 6, 13, 9, 1, -12}, // 0x31 '1' + {162, 8, 12, 9, 1, -11}, // 0x32 '2' + {174, 9, 12, 9, 0, -11}, // 0x33 '3' + {188, 9, 12, 9, 0, -11}, // 0x34 '4' + {202, 9, 12, 9, 0, -11}, // 0x35 '5' + {216, 9, 13, 9, 1, -12}, // 0x36 '6' + {231, 9, 12, 9, 1, -11}, // 0x37 '7' + {245, 9, 13, 9, 1, -12}, // 0x38 '8' + {260, 9, 13, 9, 0, -12}, // 0x39 '9' + {275, 4, 8, 4, 1, -7}, // 0x3A ':' + {279, 4, 10, 4, 1, -7}, // 0x3B ';' + {284, 9, 9, 10, 1, -8}, // 0x3C '<' + {295, 9, 5, 12, 2, -6}, // 0x3D '=' + {301, 9, 9, 10, 1, -8}, // 0x3E '>' + {312, 7, 12, 8, 2, -11}, // 0x3F '?' + {323, 13, 12, 14, 1, -11}, // 0x40 '@' + {343, 11, 11, 12, 0, -10}, // 0x41 'A' + {359, 11, 12, 11, 0, -11}, // 0x42 'B' + {376, 12, 12, 11, 1, -11}, // 0x43 'C' + {394, 13, 12, 13, 0, -11}, // 0x44 'D' + {414, 12, 12, 10, 0, -11}, // 0x45 'E' + {432, 12, 12, 10, 0, -11}, // 0x46 'F' + {450, 12, 12, 12, 1, -11}, // 0x47 'G' + {468, 14, 12, 13, 0, -11}, // 0x48 'H' + {489, 7, 12, 6, 0, -11}, // 0x49 'I' + {500, 9, 12, 8, 0, -11}, // 0x4A 'J' + {514, 13, 12, 12, 0, -11}, // 0x4B 'K' + {534, 11, 12, 10, 0, -11}, // 0x4C 'L' + {551, 16, 12, 15, 0, -11}, // 0x4D 'M' + {575, 13, 12, 12, 0, -11}, // 0x4E 'N' + {595, 11, 12, 12, 1, -11}, // 0x4F 'O' + {612, 11, 12, 10, 0, -11}, // 0x50 'P' + {629, 11, 15, 12, 1, -11}, // 0x51 'Q' + {650, 11, 12, 11, 0, -11}, // 0x52 'R' + {667, 10, 12, 8, 0, -11}, // 0x53 'S' + {682, 11, 12, 11, 2, -11}, // 0x54 'T' + {699, 12, 12, 13, 2, -11}, // 0x55 'U' + {717, 11, 12, 12, 2, -11}, // 0x56 'V' + {734, 15, 12, 16, 2, -11}, // 0x57 'W' + {757, 12, 12, 12, 0, -11}, // 0x58 'X' + {775, 10, 12, 11, 2, -11}, // 0x59 'Y' + {790, 11, 12, 10, 0, -11}, // 0x5A 'Z' + {807, 7, 15, 7, 0, -11}, // 0x5B '[' + {821, 6, 12, 9, 2, -11}, // 0x5C '\' + {830, 6, 15, 7, 1, -11}, // 0x5D ']' + {842, 8, 7, 8, 0, -11}, // 0x5E '^' + {849, 9, 1, 9, 0, 2}, // 0x5F '_' + {851, 3, 3, 5, 2, -11}, // 0x60 '`' + {853, 9, 8, 9, 0, -7}, // 0x61 'a' + {862, 9, 12, 9, 0, -11}, // 0x62 'b' + {876, 8, 8, 7, 0, -7}, // 0x63 'c' + {884, 9, 12, 9, 0, -11}, // 0x64 'd' + {898, 7, 8, 7, 0, -7}, // 0x65 'e' + {905, 11, 17, 8, -1, -12}, // 0x66 'f' + {929, 9, 12, 8, 0, -7}, // 0x67 'g' + {943, 9, 12, 9, 0, -11}, // 0x68 'h' + {957, 4, 12, 4, 1, -11}, // 0x69 'i' + {963, 7, 16, 5, -1, -11}, // 0x6A 'j' + {977, 8, 12, 8, 0, -11}, // 0x6B 'k' + {989, 4, 12, 5, 1, -11}, // 0x6C 'l' + {995, 13, 8, 13, 0, -7}, // 0x6D 'm' + {1008, 8, 8, 9, 0, -7}, // 0x6E 'n' + {1016, 9, 8, 9, 0, -7}, // 0x6F 'o' + {1025, 10, 12, 8, -1, -7}, // 0x70 'p' + {1040, 9, 12, 9, 0, -7}, // 0x71 'q' + {1054, 7, 8, 7, 0, -7}, // 0x72 'r' + {1061, 7, 8, 6, 0, -7}, // 0x73 's' + {1068, 5, 9, 4, 0, -8}, // 0x74 't' + {1074, 8, 8, 9, 1, -7}, // 0x75 'u' + {1082, 7, 8, 8, 1, -7}, // 0x76 'v' + {1089, 11, 8, 12, 1, -7}, // 0x77 'w' + {1100, 9, 8, 8, -1, -7}, // 0x78 'x' + {1109, 9, 12, 9, 0, -7}, // 0x79 'y' + {1123, 8, 9, 7, 0, -7}, // 0x7A 'z' + {1132, 6, 15, 7, 1, -11}, // 0x7B '{' + {1144, 1, 12, 5, 2, -11}, // 0x7C '|' + {1146, 7, 16, 7, 0, -12}, // 0x7D '}' + {1160, 8, 3, 10, 1, -5}}; // 0x7E '~' + +const GFXfont FreeSerifItalic9pt7b PROGMEM = { + (uint8_t *)FreeSerifItalic9pt7bBitmaps, + (GFXglyph *)FreeSerifItalic9pt7bGlyphs, 0x20, 0x7E, 22}; + +// Approx. 1835 bytes diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/Org_01.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/Org_01.h new file mode 100644 index 0000000..9b80258 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/Org_01.h @@ -0,0 +1,131 @@ +#pragma once +#include + +// Org_v01 by Orgdot (www.orgdot.com/aliasfonts). A tiny, +// stylized font with all characters within a 6 pixel height. + +const uint8_t Org_01Bitmaps[] PROGMEM = { + 0xE8, 0xA0, 0x57, 0xD5, 0xF5, 0x00, 0xFD, 0x3E, 0x5F, 0x80, 0x88, 0x88, + 0x88, 0x80, 0xF4, 0xBF, 0x2E, 0x80, 0x80, 0x6A, 0x40, 0x95, 0x80, 0xAA, + 0x80, 0x5D, 0x00, 0xC0, 0xF0, 0x80, 0x08, 0x88, 0x88, 0x00, 0xFC, 0x63, + 0x1F, 0x80, 0xF8, 0xF8, 0x7F, 0x0F, 0x80, 0xF8, 0x7E, 0x1F, 0x80, 0x8C, + 0x7E, 0x10, 0x80, 0xFC, 0x3E, 0x1F, 0x80, 0xFC, 0x3F, 0x1F, 0x80, 0xF8, + 0x42, 0x10, 0x80, 0xFC, 0x7F, 0x1F, 0x80, 0xFC, 0x7E, 0x1F, 0x80, 0x90, + 0xB0, 0x2A, 0x22, 0xF0, 0xF0, 0x88, 0xA8, 0xF8, 0x4E, 0x02, 0x00, 0xFD, + 0x6F, 0x0F, 0x80, 0xFC, 0x7F, 0x18, 0x80, 0xF4, 0x7D, 0x1F, 0x00, 0xFC, + 0x21, 0x0F, 0x80, 0xF4, 0x63, 0x1F, 0x00, 0xFC, 0x3F, 0x0F, 0x80, 0xFC, + 0x3F, 0x08, 0x00, 0xFC, 0x2F, 0x1F, 0x80, 0x8C, 0x7F, 0x18, 0x80, 0xF9, + 0x08, 0x4F, 0x80, 0x78, 0x85, 0x2F, 0x80, 0x8D, 0xB1, 0x68, 0x80, 0x84, + 0x21, 0x0F, 0x80, 0xFD, 0x6B, 0x5A, 0x80, 0xFC, 0x63, 0x18, 0x80, 0xFC, + 0x63, 0x1F, 0x80, 0xFC, 0x7F, 0x08, 0x00, 0xFC, 0x63, 0x3F, 0x80, 0xFC, + 0x7F, 0x29, 0x00, 0xFC, 0x3E, 0x1F, 0x80, 0xF9, 0x08, 0x42, 0x00, 0x8C, + 0x63, 0x1F, 0x80, 0x8C, 0x62, 0xA2, 0x00, 0xAD, 0x6B, 0x5F, 0x80, 0x8A, + 0x88, 0xA8, 0x80, 0x8C, 0x54, 0x42, 0x00, 0xF8, 0x7F, 0x0F, 0x80, 0xEA, + 0xC0, 0x82, 0x08, 0x20, 0x80, 0xD5, 0xC0, 0x54, 0xF8, 0x80, 0xF1, 0xFF, + 0x8F, 0x99, 0xF0, 0xF8, 0x8F, 0x1F, 0x99, 0xF0, 0xFF, 0x8F, 0x6B, 0xA4, + 0xF9, 0x9F, 0x10, 0x8F, 0x99, 0x90, 0xF0, 0x55, 0xC0, 0x8A, 0xF9, 0x90, + 0xF8, 0xFD, 0x63, 0x10, 0xF9, 0x99, 0xF9, 0x9F, 0xF9, 0x9F, 0x80, 0xF9, + 0x9F, 0x20, 0xF8, 0x88, 0x47, 0x1F, 0x27, 0xC8, 0x42, 0x00, 0x99, 0x9F, + 0x99, 0x97, 0x8C, 0x6B, 0xF0, 0x96, 0x69, 0x99, 0x9F, 0x10, 0x2E, 0x8F, + 0x2B, 0x22, 0xF8, 0x89, 0xA8, 0x0F, 0xE0}; + +const GFXglyph Org_01Glyphs[] PROGMEM = {{0, 0, 0, 6, 0, 1}, // 0x20 ' ' + {0, 1, 5, 2, 0, -4}, // 0x21 '!' + {1, 3, 1, 4, 0, -4}, // 0x22 '"' + {2, 5, 5, 6, 0, -4}, // 0x23 '#' + {6, 5, 5, 6, 0, -4}, // 0x24 '$' + {10, 5, 5, 6, 0, -4}, // 0x25 '%' + {14, 5, 5, 6, 0, -4}, // 0x26 '&' + {18, 1, 1, 2, 0, -4}, // 0x27 ''' + {19, 2, 5, 3, 0, -4}, // 0x28 '(' + {21, 2, 5, 3, 0, -4}, // 0x29 ')' + {23, 3, 3, 4, 0, -3}, // 0x2A '*' + {25, 3, 3, 4, 0, -3}, // 0x2B '+' + {27, 1, 2, 2, 0, 0}, // 0x2C ',' + {28, 4, 1, 5, 0, -2}, // 0x2D '-' + {29, 1, 1, 2, 0, 0}, // 0x2E '.' + {30, 5, 5, 6, 0, -4}, // 0x2F '/' + {34, 5, 5, 6, 0, -4}, // 0x30 '0' + {38, 1, 5, 2, 0, -4}, // 0x31 '1' + {39, 5, 5, 6, 0, -4}, // 0x32 '2' + {43, 5, 5, 6, 0, -4}, // 0x33 '3' + {47, 5, 5, 6, 0, -4}, // 0x34 '4' + {51, 5, 5, 6, 0, -4}, // 0x35 '5' + {55, 5, 5, 6, 0, -4}, // 0x36 '6' + {59, 5, 5, 6, 0, -4}, // 0x37 '7' + {63, 5, 5, 6, 0, -4}, // 0x38 '8' + {67, 5, 5, 6, 0, -4}, // 0x39 '9' + {71, 1, 4, 2, 0, -3}, // 0x3A ':' + {72, 1, 4, 2, 0, -3}, // 0x3B ';' + {73, 3, 5, 4, 0, -4}, // 0x3C '<' + {75, 4, 3, 5, 0, -3}, // 0x3D '=' + {77, 3, 5, 4, 0, -4}, // 0x3E '>' + {79, 5, 5, 6, 0, -4}, // 0x3F '?' + {83, 5, 5, 6, 0, -4}, // 0x40 '@' + {87, 5, 5, 6, 0, -4}, // 0x41 'A' + {91, 5, 5, 6, 0, -4}, // 0x42 'B' + {95, 5, 5, 6, 0, -4}, // 0x43 'C' + {99, 5, 5, 6, 0, -4}, // 0x44 'D' + {103, 5, 5, 6, 0, -4}, // 0x45 'E' + {107, 5, 5, 6, 0, -4}, // 0x46 'F' + {111, 5, 5, 6, 0, -4}, // 0x47 'G' + {115, 5, 5, 6, 0, -4}, // 0x48 'H' + {119, 5, 5, 6, 0, -4}, // 0x49 'I' + {123, 5, 5, 6, 0, -4}, // 0x4A 'J' + {127, 5, 5, 6, 0, -4}, // 0x4B 'K' + {131, 5, 5, 6, 0, -4}, // 0x4C 'L' + {135, 5, 5, 6, 0, -4}, // 0x4D 'M' + {139, 5, 5, 6, 0, -4}, // 0x4E 'N' + {143, 5, 5, 6, 0, -4}, // 0x4F 'O' + {147, 5, 5, 6, 0, -4}, // 0x50 'P' + {151, 5, 5, 6, 0, -4}, // 0x51 'Q' + {155, 5, 5, 6, 0, -4}, // 0x52 'R' + {159, 5, 5, 6, 0, -4}, // 0x53 'S' + {163, 5, 5, 6, 0, -4}, // 0x54 'T' + {167, 5, 5, 6, 0, -4}, // 0x55 'U' + {171, 5, 5, 6, 0, -4}, // 0x56 'V' + {175, 5, 5, 6, 0, -4}, // 0x57 'W' + {179, 5, 5, 6, 0, -4}, // 0x58 'X' + {183, 5, 5, 6, 0, -4}, // 0x59 'Y' + {187, 5, 5, 6, 0, -4}, // 0x5A 'Z' + {191, 2, 5, 3, 0, -4}, // 0x5B '[' + {193, 5, 5, 6, 0, -4}, // 0x5C '\' + {197, 2, 5, 3, 0, -4}, // 0x5D ']' + {199, 3, 2, 4, 0, -4}, // 0x5E '^' + {200, 5, 1, 6, 0, 1}, // 0x5F '_' + {201, 1, 1, 2, 0, -4}, // 0x60 '`' + {202, 4, 4, 5, 0, -3}, // 0x61 'a' + {204, 4, 5, 5, 0, -4}, // 0x62 'b' + {207, 4, 4, 5, 0, -3}, // 0x63 'c' + {209, 4, 5, 5, 0, -4}, // 0x64 'd' + {212, 4, 4, 5, 0, -3}, // 0x65 'e' + {214, 3, 5, 4, 0, -4}, // 0x66 'f' + {216, 4, 5, 5, 0, -3}, // 0x67 'g' + {219, 4, 5, 5, 0, -4}, // 0x68 'h' + {222, 1, 4, 2, 0, -3}, // 0x69 'i' + {223, 2, 5, 3, 0, -3}, // 0x6A 'j' + {225, 4, 5, 5, 0, -4}, // 0x6B 'k' + {228, 1, 5, 2, 0, -4}, // 0x6C 'l' + {229, 5, 4, 6, 0, -3}, // 0x6D 'm' + {232, 4, 4, 5, 0, -3}, // 0x6E 'n' + {234, 4, 4, 5, 0, -3}, // 0x6F 'o' + {236, 4, 5, 5, 0, -3}, // 0x70 'p' + {239, 4, 5, 5, 0, -3}, // 0x71 'q' + {242, 4, 4, 5, 0, -3}, // 0x72 'r' + {244, 4, 4, 5, 0, -3}, // 0x73 's' + {246, 5, 5, 6, 0, -4}, // 0x74 't' + {250, 4, 4, 5, 0, -3}, // 0x75 'u' + {252, 4, 4, 5, 0, -3}, // 0x76 'v' + {254, 5, 4, 6, 0, -3}, // 0x77 'w' + {257, 4, 4, 5, 0, -3}, // 0x78 'x' + {259, 4, 5, 5, 0, -3}, // 0x79 'y' + {262, 4, 4, 5, 0, -3}, // 0x7A 'z' + {264, 3, 5, 4, 0, -4}, // 0x7B '{' + {266, 1, 5, 2, 0, -4}, // 0x7C '|' + {267, 3, 5, 4, 0, -4}, // 0x7D '}' + {269, 5, 3, 6, 0, -3}}; // 0x7E '~' + +const GFXfont Org_01 PROGMEM = {(uint8_t *)Org_01Bitmaps, + (GFXglyph *)Org_01Glyphs, 0x20, 0x7E, 7}; + +// Approx. 943 bytes diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/Picopixel.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/Picopixel.h new file mode 100644 index 0000000..463b1b5 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/Picopixel.h @@ -0,0 +1,123 @@ +#pragma once +#include + +// Picopixel by Sebastian Weber. A tiny font +// with all characters within a 6 pixel height. + +const uint8_t PicopixelBitmaps[] PROGMEM = { + 0xE8, 0xB4, 0x57, 0xD5, 0xF5, 0x00, 0x4E, 0x3E, 0x80, 0xA5, 0x4A, 0x4A, + 0x5A, 0x50, 0xC0, 0x6A, 0x40, 0x95, 0x80, 0xAA, 0x80, 0x5D, 0x00, 0x60, + 0xE0, 0x80, 0x25, 0x48, 0x56, 0xD4, 0x75, 0x40, 0xC5, 0x4E, 0xC5, 0x1C, + 0x97, 0x92, 0xF3, 0x1C, 0x53, 0x54, 0xE5, 0x48, 0x55, 0x54, 0x55, 0x94, + 0xA0, 0x46, 0x64, 0xE3, 0x80, 0x98, 0xC5, 0x04, 0x56, 0xC6, 0x57, 0xDA, + 0xD7, 0x5C, 0x72, 0x46, 0xD6, 0xDC, 0xF3, 0xCE, 0xF3, 0x48, 0x72, 0xD4, + 0xB7, 0xDA, 0xF8, 0x24, 0xD4, 0xBB, 0x5A, 0x92, 0x4E, 0x8E, 0xEB, 0x58, + 0x80, 0x9D, 0xB9, 0x90, 0x56, 0xD4, 0xD7, 0x48, 0x56, 0xD4, 0x40, 0xD7, + 0x5A, 0x71, 0x1C, 0xE9, 0x24, 0xB6, 0xD4, 0xB6, 0xA4, 0x8C, 0x6B, 0x55, + 0x00, 0xB5, 0x5A, 0xB5, 0x24, 0xE5, 0x4E, 0xEA, 0xC0, 0x91, 0x12, 0xD5, + 0xC0, 0x54, 0xF0, 0x90, 0xC7, 0xF0, 0x93, 0x5E, 0x71, 0x80, 0x25, 0xDE, + 0x5E, 0x30, 0x6E, 0x80, 0x77, 0x9C, 0x93, 0x5A, 0xB8, 0x45, 0x60, 0x92, + 0xEA, 0xAA, 0x40, 0xD5, 0x6A, 0xD6, 0x80, 0x55, 0x00, 0xD7, 0x40, 0x75, + 0x90, 0xE8, 0x71, 0xE0, 0xBA, 0x40, 0xB5, 0x80, 0xB5, 0x00, 0x8D, 0x54, + 0xAA, 0x80, 0xAC, 0xE0, 0xE5, 0x70, 0x6A, 0x26, 0xFC, 0xC8, 0xAC, 0x5A}; + +const GFXglyph PicopixelGlyphs[] PROGMEM = {{0, 0, 0, 2, 0, 1}, // 0x20 ' ' + {0, 1, 5, 2, 0, -4}, // 0x21 '!' + {1, 3, 2, 4, 0, -4}, // 0x22 '"' + {2, 5, 5, 6, 0, -4}, // 0x23 '#' + {6, 3, 6, 4, 0, -4}, // 0x24 '$' + {9, 3, 5, 4, 0, -4}, // 0x25 '%' + {11, 4, 5, 5, 0, -4}, // 0x26 '&' + {14, 1, 2, 2, 0, -4}, // 0x27 ''' + {15, 2, 5, 3, 0, -4}, // 0x28 '(' + {17, 2, 5, 3, 0, -4}, // 0x29 ')' + {19, 3, 3, 4, 0, -3}, // 0x2A '*' + {21, 3, 3, 4, 0, -3}, // 0x2B '+' + {23, 2, 2, 3, 0, 0}, // 0x2C ',' + {24, 3, 1, 4, 0, -2}, // 0x2D '-' + {25, 1, 1, 2, 0, 0}, // 0x2E '.' + {26, 3, 5, 4, 0, -4}, // 0x2F '/' + {28, 3, 5, 4, 0, -4}, // 0x30 '0' + {30, 2, 5, 3, 0, -4}, // 0x31 '1' + {32, 3, 5, 4, 0, -4}, // 0x32 '2' + {34, 3, 5, 4, 0, -4}, // 0x33 '3' + {36, 3, 5, 4, 0, -4}, // 0x34 '4' + {38, 3, 5, 4, 0, -4}, // 0x35 '5' + {40, 3, 5, 4, 0, -4}, // 0x36 '6' + {42, 3, 5, 4, 0, -4}, // 0x37 '7' + {44, 3, 5, 4, 0, -4}, // 0x38 '8' + {46, 3, 5, 4, 0, -4}, // 0x39 '9' + {48, 1, 3, 2, 0, -3}, // 0x3A ':' + {49, 2, 4, 3, 0, -3}, // 0x3B ';' + {50, 2, 3, 3, 0, -3}, // 0x3C '<' + {51, 3, 3, 4, 0, -3}, // 0x3D '=' + {53, 2, 3, 3, 0, -3}, // 0x3E '>' + {54, 3, 5, 4, 0, -4}, // 0x3F '?' + {56, 3, 5, 4, 0, -4}, // 0x40 '@' + {58, 3, 5, 4, 0, -4}, // 0x41 'A' + {60, 3, 5, 4, 0, -4}, // 0x42 'B' + {62, 3, 5, 4, 0, -4}, // 0x43 'C' + {64, 3, 5, 4, 0, -4}, // 0x44 'D' + {66, 3, 5, 4, 0, -4}, // 0x45 'E' + {68, 3, 5, 4, 0, -4}, // 0x46 'F' + {70, 3, 5, 4, 0, -4}, // 0x47 'G' + {72, 3, 5, 4, 0, -4}, // 0x48 'H' + {74, 1, 5, 2, 0, -4}, // 0x49 'I' + {75, 3, 5, 4, 0, -4}, // 0x4A 'J' + {77, 3, 5, 4, 0, -4}, // 0x4B 'K' + {79, 3, 5, 4, 0, -4}, // 0x4C 'L' + {81, 5, 5, 6, 0, -4}, // 0x4D 'M' + {85, 4, 5, 5, 0, -4}, // 0x4E 'N' + {88, 3, 5, 4, 0, -4}, // 0x4F 'O' + {90, 3, 5, 4, 0, -4}, // 0x50 'P' + {92, 3, 6, 4, 0, -4}, // 0x51 'Q' + {95, 3, 5, 4, 0, -4}, // 0x52 'R' + {97, 3, 5, 4, 0, -4}, // 0x53 'S' + {99, 3, 5, 4, 0, -4}, // 0x54 'T' + {101, 3, 5, 4, 0, -4}, // 0x55 'U' + {103, 3, 5, 4, 0, -4}, // 0x56 'V' + {105, 5, 5, 6, 0, -4}, // 0x57 'W' + {109, 3, 5, 4, 0, -4}, // 0x58 'X' + {111, 3, 5, 4, 0, -4}, // 0x59 'Y' + {113, 3, 5, 4, 0, -4}, // 0x5A 'Z' + {115, 2, 5, 3, 0, -4}, // 0x5B '[' + {117, 3, 5, 4, 0, -4}, // 0x5C '\' + {119, 2, 5, 3, 0, -4}, // 0x5D ']' + {121, 3, 2, 4, 0, -4}, // 0x5E '^' + {122, 4, 1, 4, 0, 1}, // 0x5F '_' + {123, 2, 2, 3, 0, -4}, // 0x60 '`' + {124, 3, 4, 4, 0, -3}, // 0x61 'a' + {126, 3, 5, 4, 0, -4}, // 0x62 'b' + {128, 3, 3, 4, 0, -2}, // 0x63 'c' + {130, 3, 5, 4, 0, -4}, // 0x64 'd' + {132, 3, 4, 4, 0, -3}, // 0x65 'e' + {134, 2, 5, 3, 0, -4}, // 0x66 'f' + {136, 3, 5, 4, 0, -3}, // 0x67 'g' + {138, 3, 5, 4, 0, -4}, // 0x68 'h' + {140, 1, 5, 2, 0, -4}, // 0x69 'i' + {141, 2, 6, 3, 0, -4}, // 0x6A 'j' + {143, 3, 5, 4, 0, -4}, // 0x6B 'k' + {145, 2, 5, 3, 0, -4}, // 0x6C 'l' + {147, 5, 3, 6, 0, -2}, // 0x6D 'm' + {149, 3, 3, 4, 0, -2}, // 0x6E 'n' + {151, 3, 3, 4, 0, -2}, // 0x6F 'o' + {153, 3, 4, 4, 0, -2}, // 0x70 'p' + {155, 3, 4, 4, 0, -2}, // 0x71 'q' + {157, 2, 3, 3, 0, -2}, // 0x72 'r' + {158, 3, 4, 4, 0, -3}, // 0x73 's' + {160, 2, 5, 3, 0, -4}, // 0x74 't' + {162, 3, 3, 4, 0, -2}, // 0x75 'u' + {164, 3, 3, 4, 0, -2}, // 0x76 'v' + {166, 5, 3, 6, 0, -2}, // 0x77 'w' + {168, 3, 3, 4, 0, -2}, // 0x78 'x' + {170, 3, 4, 4, 0, -2}, // 0x79 'y' + {172, 3, 4, 4, 0, -3}, // 0x7A 'z' + {174, 3, 5, 4, 0, -4}, // 0x7B '{' + {176, 1, 6, 2, 0, -4}, // 0x7C '|' + {177, 3, 5, 4, 0, -4}, // 0x7D '}' + {179, 4, 2, 5, 0, -3}}; // 0x7E '~' + +const GFXfont Picopixel PROGMEM = {(uint8_t *)PicopixelBitmaps, + (GFXglyph *)PicopixelGlyphs, 0x20, 0x7E, 7}; + +// Approx. 852 bytes diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/Tiny3x3a2pt7b.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/Tiny3x3a2pt7b.h new file mode 100644 index 0000000..5b0ba4a --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/Tiny3x3a2pt7b.h @@ -0,0 +1,133 @@ +#pragma once +#include + +/** +** The FontStruction “Tiny3x3a” +** (https://fontstruct.com/fontstructions/show/670512) by “Michaelangel007” is +** licensed under a Creative Commons Attribution Non-commercial Share Alike +*license +** (http://creativecommons.org/licenses/by-nc-sa/3.0/). +** “Tiny3x3a” was originally cloned (copied) from the FontStruction +** “CHECKER” (https://fontstruct.com/fontstructions/show/2391) by Wolf grant +** Grant, which is licensed under a Creative Commons Attribution Non-commercial +** Share Alike license (http://creativecommons.org/licenses/by-nc-sa/3.0/). +* +* Converted by eadmaster with fontconvert +**/ + +const uint8_t Tiny3x3a2pt7bBitmaps[] PROGMEM = { + 0xC0, 0xB4, 0xBF, 0x80, 0x6B, 0x00, 0xDD, 0x80, 0x59, 0x80, 0x80, 0x64, + 0x98, 0xF0, 0x5D, 0x00, 0xC0, 0xE0, 0x80, 0x2A, 0x00, 0x55, 0x00, 0x94, + 0xC9, 0x80, 0xEF, 0x80, 0xBC, 0x80, 0x6B, 0x00, 0x9F, 0x80, 0xE4, 0x80, + 0x7F, 0x00, 0xFC, 0x80, 0xA0, 0x58, 0x64, 0xE3, 0x80, 0x98, 0xD8, 0xD8, + 0x80, 0x5E, 0x80, 0xDF, 0x80, 0x71, 0x80, 0xD7, 0x00, 0xFB, 0x80, 0xFA, + 0x00, 0xD7, 0x80, 0xBE, 0x80, 0xE0, 0x27, 0x00, 0xBA, 0x80, 0x93, 0x80, + 0xFE, 0x80, 0xF6, 0x80, 0xF7, 0x80, 0xFE, 0x00, 0xF7, 0x00, 0xDE, 0x80, + 0x6B, 0x00, 0xE9, 0x00, 0xB7, 0x80, 0xB5, 0x00, 0xBF, 0x80, 0xAA, 0x80, + 0xA9, 0x00, 0xEB, 0x80, 0xEC, 0x88, 0x80, 0xDC, 0x54, 0xE0, 0x90, 0x70, + 0xBC, 0xF0, 0x7C, 0xB0, 0x68, 0xFC, 0xBC, 0xC0, 0x58, 0x9A, 0x80, 0xA4, + 0xDC, 0xD4, 0xF0, 0xF8, 0xF4, 0xE0, 0x60, 0x59, 0x80, 0xBC, 0xA8, 0xEC, + 0xF0, 0xAC, 0x80, 0x90, 0x79, 0x80, 0xF0, 0xCF, 0x00, 0x78}; + +const GFXglyph Tiny3x3a2pt7bGlyphs[] PROGMEM = { + {0, 0, 0, 4, 0, 1}, // 0x20 ' ' + {0, 1, 2, 3, 1, -2}, // 0x21 '!' + {1, 3, 2, 4, 0, -2}, // 0x22 '"' + {2, 3, 3, 4, 0, -2}, // 0x23 '#' + {4, 3, 3, 4, 0, -2}, // 0x24 '$' + {6, 3, 3, 4, 0, -2}, // 0x25 '%' + {8, 3, 3, 4, 0, -2}, // 0x26 '&' + {10, 1, 1, 3, 1, -2}, // 0x27 ''' + {11, 2, 3, 3, 0, -2}, // 0x28 '(' + {12, 2, 3, 4, 1, -2}, // 0x29 ')' + {13, 2, 2, 4, 1, -2}, // 0x2A '*' + {14, 3, 3, 4, 0, -2}, // 0x2B '+' + {16, 1, 2, 2, 0, 0}, // 0x2C ',' + {17, 3, 1, 4, 0, -1}, // 0x2D '-' + {18, 1, 1, 2, 0, 0}, // 0x2E '.' + {19, 3, 3, 4, 0, -2}, // 0x2F '/' + {21, 3, 3, 4, 0, -2}, // 0x30 '0' + {23, 2, 3, 3, 0, -2}, // 0x31 '1' + {24, 3, 3, 4, 0, -2}, // 0x32 '2' + {26, 3, 3, 4, 0, -2}, // 0x33 '3' + {28, 3, 3, 4, 0, -2}, // 0x34 '4' + {30, 3, 3, 4, 0, -2}, // 0x35 '5' + {32, 3, 3, 4, 0, -2}, // 0x36 '6' + {34, 3, 3, 4, 0, -2}, // 0x37 '7' + {36, 3, 3, 4, 0, -2}, // 0x38 '8' + {38, 3, 3, 4, 0, -2}, // 0x39 '9' + {40, 1, 3, 3, 1, -2}, // 0x3A ':' + {41, 2, 3, 3, 0, -1}, // 0x3B ';' + {42, 2, 3, 3, 0, -2}, // 0x3C '<' + {43, 3, 3, 4, 0, -2}, // 0x3D '=' + {45, 2, 3, 4, 1, -2}, // 0x3E '>' + {46, 2, 3, 4, 1, -2}, // 0x3F '?' + {47, 3, 3, 4, 0, -2}, // 0x40 '@' + {49, 3, 3, 4, 0, -2}, // 0x41 'A' + {51, 3, 3, 4, 0, -2}, // 0x42 'B' + {53, 3, 3, 4, 0, -2}, // 0x43 'C' + {55, 3, 3, 4, 0, -2}, // 0x44 'D' + {57, 3, 3, 4, 0, -2}, // 0x45 'E' + {59, 3, 3, 4, 0, -2}, // 0x46 'F' + {61, 3, 3, 4, 0, -2}, // 0x47 'G' + {63, 3, 3, 4, 0, -2}, // 0x48 'H' + {65, 1, 3, 3, 1, -2}, // 0x49 'I' + {66, 3, 3, 4, 0, -2}, // 0x4A 'J' + {68, 3, 3, 4, 0, -2}, // 0x4B 'K' + {70, 3, 3, 4, 0, -2}, // 0x4C 'L' + {72, 3, 3, 4, 0, -2}, // 0x4D 'M' + {74, 3, 3, 4, 0, -2}, // 0x4E 'N' + {76, 3, 3, 4, 0, -2}, // 0x4F 'O' + {78, 3, 3, 4, 0, -2}, // 0x50 'P' + {80, 3, 3, 4, 0, -2}, // 0x51 'Q' + {82, 3, 3, 4, 0, -2}, // 0x52 'R' + {84, 3, 3, 4, 0, -2}, // 0x53 'S' + {86, 3, 3, 4, 0, -2}, // 0x54 'T' + {88, 3, 3, 4, 0, -2}, // 0x55 'U' + {90, 3, 3, 4, 0, -2}, // 0x56 'V' + {92, 3, 3, 4, 0, -2}, // 0x57 'W' + {94, 3, 3, 4, 0, -2}, // 0x58 'X' + {96, 3, 3, 4, 0, -2}, // 0x59 'Y' + {98, 3, 3, 4, 0, -2}, // 0x5A 'Z' + {100, 2, 3, 3, 0, -2}, // 0x5B '[' + {101, 3, 3, 4, 0, -2}, // 0x5C '\' + {103, 2, 3, 4, 1, -2}, // 0x5D ']' + {104, 3, 2, 4, 0, -2}, // 0x5E '^' + {105, 3, 1, 4, 0, 0}, // 0x5F '_' + {106, 2, 2, 3, 0, -2}, // 0x60 '`' + {107, 2, 2, 3, 0, -1}, // 0x61 'a' + {108, 2, 3, 3, 0, -2}, // 0x62 'b' + {109, 2, 2, 3, 0, -1}, // 0x63 'c' + {110, 2, 3, 3, 0, -2}, // 0x64 'd' + {111, 2, 2, 3, 0, -1}, // 0x65 'e' + {112, 2, 3, 3, 0, -2}, // 0x66 'f' + {113, 2, 3, 3, 0, -1}, // 0x67 'g' + {114, 2, 3, 3, 0, -2}, // 0x68 'h' + {115, 1, 2, 2, 0, -1}, // 0x69 'i' + {116, 2, 3, 3, 0, -1}, // 0x6A 'j' + {117, 3, 3, 4, 0, -2}, // 0x6B 'k' + {119, 2, 3, 3, 0, -2}, // 0x6C 'l' + {120, 3, 2, 4, 0, -1}, // 0x6D 'm' + {121, 3, 2, 4, 0, -1}, // 0x6E 'n' + {122, 2, 2, 3, 0, -1}, // 0x6F 'o' + {123, 2, 3, 3, 0, -1}, // 0x70 'p' + {124, 2, 3, 3, 0, -1}, // 0x71 'q' + {125, 2, 2, 3, 0, -1}, // 0x72 'r' + {126, 2, 2, 3, 0, -1}, // 0x73 's' + {127, 3, 3, 4, 0, -2}, // 0x74 't' + {129, 3, 2, 4, 0, -1}, // 0x75 'u' + {130, 3, 2, 4, 0, -1}, // 0x76 'v' + {131, 3, 2, 4, 0, -1}, // 0x77 'w' + {132, 2, 2, 3, 0, -1}, // 0x78 'x' + {133, 3, 3, 4, 0, -1}, // 0x79 'y' + {135, 2, 2, 3, 0, -1}, // 0x7A 'z' + {136, 3, 3, 4, 0, -2}, // 0x7B '{' + {138, 1, 4, 3, 1, -2}, // 0x7C '|' + {139, 3, 3, 4, 0, -2}, // 0x7D '}' + {141, 3, 2, 4, 0, -2}}; // 0x7E '~' + +const GFXfont Tiny3x3a2pt7b PROGMEM = {(uint8_t *)Tiny3x3a2pt7bBitmaps, + (GFXglyph *)Tiny3x3a2pt7bGlyphs, 0x20, + 0x7E, 4}; + +// Approx. 814 bytes diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/TomThumb.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/TomThumb.h new file mode 100644 index 0000000..2155500 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/Fonts/TomThumb.h @@ -0,0 +1,477 @@ +#pragma once +#include + +/** +** The original 3x5 font is licensed under the 3-clause BSD license: +** +** Copyright 1999 Brian J. Swetland +** Copyright 1999 Vassilii Khachaturov +** Portions (of vt100.c/vt100.h) copyright Dan Marks +** +** All rights reserved. +** +** Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions +** are met: +** 1. Redistributions of source code must retain the above copyright +** notice, this list of conditions, and the following disclaimer. +** 2. 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. +** 3. The name of the authors may not be used to endorse or promote products +** derived from this software without specific prior written permission. +** +** THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. +** +** Modifications to Tom Thumb for improved readability are from Robey Pointer, +** see: +** http://robey.lag.net/2010/01/23/tiny-monospace-font.html +** +** The original author does not have any objection to relicensing of Robey +** Pointer's modifications (in this file) in a more permissive license. See +** the discussion at the above blog, and also here: +** http://opengameart.org/forumtopic/how-to-submit-art-using-the-3-clause-bsd-license +** +** Feb 21, 2016: Conversion from Linux BDF --> Adafruit GFX font, +** with the help of this Python script: +** https://gist.github.com/skelliam/322d421f028545f16f6d +** William Skellenger (williamj@skellenger.net) +** Twitter: @skelliam +** +** Jan 09, 2020: Bitmaps now compressed, to fix the bounding box problem, +** because non-compressed the calculated text width were wrong. +** Andreas Merkle (web@blue-andi.de) +*/ + +#define TOMTHUMB_USE_EXTENDED 0 + +const uint8_t TomThumbBitmaps[] PROGMEM = { + 0x00, /* 0x20 space */ + 0xE8, /* 0x21 exclam */ + 0xB4, /* 0x22 quotedbl */ + 0xBE, 0xFA, /* 0x23 numbersign */ + 0x79, 0xE4, /* 0x24 dollar */ + 0x85, 0x42, /* 0x25 percent */ + 0xDB, 0xD6, /* 0x26 ampersand */ + 0xC0, /* 0x27 quotesingle */ + 0x6A, 0x40, /* 0x28 parenleft */ + 0x95, 0x80, /* 0x29 parenright */ + 0xAA, 0x80, /* 0x2A asterisk */ + 0x5D, 0x00, /* 0x2B plus */ + 0x60, /* 0x2C comma */ + 0xE0, /* 0x2D hyphen */ + 0x80, /* 0x2E period */ + 0x25, 0x48, /* 0x2F slash */ + 0x76, 0xDC, /* 0x30 zero */ + 0x75, 0x40, /* 0x31 one */ + 0xC5, 0x4E, /* 0x32 two */ + 0xC5, 0x1C, /* 0x33 three */ + 0xB7, 0x92, /* 0x34 four */ + 0xF3, 0x1C, /* 0x35 five */ + 0x73, 0xDE, /* 0x36 six */ + 0xE5, 0x48, /* 0x37 seven */ + 0xF7, 0xDE, /* 0x38 eight */ + 0xF7, 0x9C, /* 0x39 nine */ + 0xA0, /* 0x3A colon */ + 0x46, /* 0x3B semicolon */ + 0x2A, 0x22, /* 0x3C less */ + 0xE3, 0x80, /* 0x3D equal */ + 0x88, 0xA8, /* 0x3E greater */ + 0xE5, 0x04, /* 0x3F question */ + 0x57, 0xC6, /* 0x40 at */ + 0x57, 0xDA, /* 0x41 A */ + 0xD7, 0x5C, /* 0x42 B */ + 0x72, 0x46, /* 0x43 C */ + 0xD6, 0xDC, /* 0x44 D */ + 0xF3, 0xCE, /* 0x45 E */ + 0xF3, 0xC8, /* 0x46 F */ + 0x73, 0xD6, /* 0x47 G */ + 0xB7, 0xDA, /* 0x48 H */ + 0xE9, 0x2E, /* 0x49 I */ + 0x24, 0xD4, /* 0x4A J */ + 0xB7, 0x5A, /* 0x4B K */ + 0x92, 0x4E, /* 0x4C L */ + 0xBF, 0xDA, /* 0x4D M */ + 0xBF, 0xFA, /* 0x4E N */ + 0x56, 0xD4, /* 0x4F O */ + 0xD7, 0x48, /* 0x50 P */ + 0x56, 0xF6, /* 0x51 Q */ + 0xD7, 0xEA, /* 0x52 R */ + 0x71, 0x1C, /* 0x53 S */ + 0xE9, 0x24, /* 0x54 T */ + 0xB6, 0xD6, /* 0x55 U */ + 0xB6, 0xA4, /* 0x56 V */ + 0xB7, 0xFA, /* 0x57 W */ + 0xB5, 0x5A, /* 0x58 X */ + 0xB5, 0x24, /* 0x59 Y */ + 0xE5, 0x4E, /* 0x5A Z */ + 0xF2, 0x4E, /* 0x5B bracketleft */ + 0x88, 0x80, /* 0x5C backslash */ + 0xE4, 0x9E, /* 0x5D bracketright */ + 0x54, /* 0x5E asciicircum */ + 0xE0, /* 0x5F underscore */ + 0x90, /* 0x60 grave */ + 0xCE, 0xF0, /* 0x61 a */ + 0x9A, 0xDC, /* 0x62 b */ + 0x72, 0x30, /* 0x63 c */ + 0x2E, 0xD6, /* 0x64 d */ + 0x77, 0x30, /* 0x65 e */ + 0x2B, 0xA4, /* 0x66 f */ + 0x77, 0x94, /* 0x67 g */ + 0x9A, 0xDA, /* 0x68 h */ + 0xB8, /* 0x69 i */ + 0x20, 0x9A, 0x80, /* 0x6A j */ + 0x97, 0x6A, /* 0x6B k */ + 0xC9, 0x2E, /* 0x6C l */ + 0xFF, 0xD0, /* 0x6D m */ + 0xD6, 0xD0, /* 0x6E n */ + 0x56, 0xA0, /* 0x6F o */ + 0xD6, 0xE8, /* 0x70 p */ + 0x76, 0xB2, /* 0x71 q */ + 0x72, 0x40, /* 0x72 r */ + 0x79, 0xE0, /* 0x73 s */ + 0x5D, 0x26, /* 0x74 t */ + 0xB6, 0xB0, /* 0x75 u */ + 0xB7, 0xA0, /* 0x76 v */ + 0xBF, 0xF0, /* 0x77 w */ + 0xA9, 0x50, /* 0x78 x */ + 0xB5, 0x94, /* 0x79 y */ + 0xEF, 0x70, /* 0x7A z */ + 0x6A, 0x26, /* 0x7B braceleft */ + 0xD8, /* 0x7C bar */ + 0xC8, 0xAC, /* 0x7D braceright */ + 0x78, /* 0x7E asciitilde */ +#if (TOMTHUMB_USE_EXTENDED) + 0xB8, /* 0xA1 exclamdown */ + 0x5E, 0x74, /* 0xA2 cent */ + 0x6B, 0xAE, /* 0xA3 sterling */ + 0xAB, 0xAA, /* 0xA4 currency */ + 0xB5, 0x74, /* 0xA5 yen */ + 0xD8, /* 0xA6 brokenbar */ + 0x6A, 0xAC, /* 0xA7 section */ + 0xA0, /* 0xA8 dieresis */ + 0x71, 0x80, /* 0xA9 copyright */ + 0x77, 0x8E, /* 0xAA ordfeminine */ + 0x64, /* 0xAB guillemotleft */ + 0xE4, /* 0xAC logicalnot */ + 0xC0, /* 0xAD softhyphen */ + 0xDA, 0x80, /* 0xAE registered */ + 0xE0, /* 0xAF macron */ + 0x55, 0x00, /* 0xB0 degree */ + 0x5D, 0x0E, /* 0xB1 plusminus */ + 0xC9, 0x80, /* 0xB2 twosuperior */ + 0xEF, 0x80, /* 0xB3 threesuperior */ + 0x60, /* 0xB4 acute */ + 0xB6, 0xE8, /* 0xB5 mu */ + 0x75, 0xB6, /* 0xB6 paragraph */ + 0xFF, 0x80, /* 0xB7 periodcentered */ + 0x47, 0x00, /* 0xB8 cedilla */ + 0xE0, /* 0xB9 onesuperior */ + 0x55, 0x0E, /* 0xBA ordmasculine */ + 0x98, /* 0xBB guillemotright */ + 0x90, 0x32, /* 0xBC onequarter */ + 0x90, 0x66, /* 0xBD onehalf */ + 0xD8, 0x32, /* 0xBE threequarters */ + 0x41, 0x4E, /* 0xBF questiondown */ + 0x45, 0x7A, /* 0xC0 Agrave */ + 0x51, 0x7A, /* 0xC1 Aacute */ + 0xE1, 0x7A, /* 0xC2 Acircumflex */ + 0x79, 0x7A, /* 0xC3 Atilde */ + 0xAA, 0xFA, /* 0xC4 Adieresis */ + 0xDA, 0xFA, /* 0xC5 Aring */ + 0x7B, 0xEE, /* 0xC6 AE */ + 0x72, 0x32, 0x80, /* 0xC7 Ccedilla */ + 0x47, 0xEE, /* 0xC8 Egrave */ + 0x53, 0xEE, /* 0xC9 Eacute */ + 0xE3, 0xEE, /* 0xCA Ecircumflex */ + 0xA3, 0xEE, /* 0xCB Edieresis */ + 0x47, 0xAE, /* 0xCC Igrave */ + 0x53, 0xAE, /* 0xCD Iacute */ + 0xE3, 0xAE, /* 0xCE Icircumflex */ + 0xA3, 0xAE, /* 0xCF Idieresis */ + 0xD7, 0xDC, /* 0xD0 Eth */ + 0xCE, 0xFA, /* 0xD1 Ntilde */ + 0x47, 0xDE, /* 0xD2 Ograve */ + 0x53, 0xDE, /* 0xD3 Oacute */ + 0xE3, 0xDE, /* 0xD4 Ocircumflex */ + 0xCF, 0xDE, /* 0xD5 Otilde */ + 0xA3, 0xDE, /* 0xD6 Odieresis */ + 0xAA, 0x80, /* 0xD7 multiply */ + 0x77, 0xDC, /* 0xD8 Oslash */ + 0x8A, 0xDE, /* 0xD9 Ugrave */ + 0x2A, 0xDE, /* 0xDA Uacute */ + 0xE2, 0xDE, /* 0xDB Ucircumflex */ + 0xA2, 0xDE, /* 0xDC Udieresis */ + 0x2A, 0xF4, /* 0xDD Yacute */ + 0x9E, 0xF8, /* 0xDE Thorn */ + 0x77, 0x5D, 0x00, /* 0xDF germandbls */ + 0x45, 0xDE, /* 0xE0 agrave */ + 0x51, 0xDE, /* 0xE1 aacute */ + 0xE1, 0xDE, /* 0xE2 acircumflex */ + 0x79, 0xDE, /* 0xE3 atilde */ + 0xA1, 0xDE, /* 0xE4 adieresis */ + 0x6D, 0xDE, /* 0xE5 aring */ + 0x7F, 0xE0, /* 0xE6 ae */ + 0x71, 0x94, /* 0xE7 ccedilla */ + 0x45, 0xF6, /* 0xE8 egrave */ + 0x51, 0xF6, /* 0xE9 eacute */ + 0xE1, 0xF6, /* 0xEA ecircumflex */ + 0xA1, 0xF6, /* 0xEB edieresis */ + 0x9A, 0x80, /* 0xEC igrave */ + 0x65, 0x40, /* 0xED iacute */ + 0xE1, 0x24, /* 0xEE icircumflex */ + 0xA1, 0x24, /* 0xEF idieresis */ + 0x79, 0xD6, /* 0xF0 eth */ + 0xCF, 0x5A, /* 0xF1 ntilde */ + 0x45, 0x54, /* 0xF2 ograve */ + 0x51, 0x54, /* 0xF3 oacute */ + 0xE1, 0x54, /* 0xF4 ocircumflex */ + 0xCD, 0x54, /* 0xF5 otilde */ + 0xA1, 0x54, /* 0xF6 odieresis */ + 0x43, 0x84, /* 0xF7 divide */ + 0x7E, 0xE0, /* 0xF8 oslash */ + 0x8A, 0xD6, /* 0xF9 ugrave */ + 0x2A, 0xD6, /* 0xFA uacute */ + 0xE2, 0xD6, /* 0xFB ucircumflex */ + 0xA2, 0xD6, /* 0xFC udieresis */ + 0x2A, 0xB2, 0x80, /* 0xFD yacute */ + 0x9A, 0xE8, /* 0xFE thorn */ + 0xA2, 0xB2, 0x80, /* 0xFF ydieresis */ + 0x00, /* 0x11D gcircumflex */ + 0x7B, 0xE6, /* 0x152 OE */ + 0x7F, 0x70, /* 0x153 oe */ + 0xAF, 0x3C, /* 0x160 Scaron */ + 0xAF, 0x3C, /* 0x161 scaron */ + 0xA2, 0xA4, /* 0x178 Ydieresis */ + 0xBD, 0xEE, /* 0x17D Zcaron */ + 0xBD, 0xEE, /* 0x17E zcaron */ + 0x00, /* 0xEA4 uni0EA4 */ + 0x00, /* 0x13A0 uni13A0 */ + 0x80, /* 0x2022 bullet */ + 0xA0, /* 0x2026 ellipsis */ + 0x7F, 0xE6, /* 0x20AC Euro */ + 0xEA, 0xAA, 0xE0, /* 0xFFFD uniFFFD */ +#endif /* (TOMTHUMB_USE_EXTENDED) */ +}; + +/* {offset, width, height, advance cursor, x offset, y offset} */ +const GFXglyph TomThumbGlyphs[] PROGMEM = { + {0, 1, 1, 2, 0, -5}, /* 0x20 space */ + {1, 1, 5, 2, 0, -5}, /* 0x21 exclam */ + {2, 3, 2, 4, 0, -5}, /* 0x22 quotedbl */ + {3, 3, 5, 4, 0, -5}, /* 0x23 numbersign */ + {5, 3, 5, 4, 0, -5}, /* 0x24 dollar */ + {7, 3, 5, 4, 0, -5}, /* 0x25 percent */ + {9, 3, 5, 4, 0, -5}, /* 0x26 ampersand */ + {11, 1, 2, 2, 0, -5}, /* 0x27 quotesingle */ + {12, 2, 5, 3, 0, -5}, /* 0x28 parenleft */ + {14, 2, 5, 3, 0, -5}, /* 0x29 parenright */ + {16, 3, 3, 4, 0, -5}, /* 0x2A asterisk */ + {18, 3, 3, 4, 0, -4}, /* 0x2B plus */ + {20, 2, 2, 3, 0, -2}, /* 0x2C comma */ + {21, 3, 1, 4, 0, -3}, /* 0x2D hyphen */ + {22, 1, 1, 2, 0, -1}, /* 0x2E period */ + {23, 3, 5, 4, 0, -5}, /* 0x2F slash */ + {25, 3, 5, 4, 0, -5}, /* 0x30 zero */ + {27, 2, 5, 3, 0, -5}, /* 0x31 one */ + {29, 3, 5, 4, 0, -5}, /* 0x32 two */ + {31, 3, 5, 4, 0, -5}, /* 0x33 three */ + {33, 3, 5, 4, 0, -5}, /* 0x34 four */ + {35, 3, 5, 4, 0, -5}, /* 0x35 five */ + {37, 3, 5, 4, 0, -5}, /* 0x36 six */ + {39, 3, 5, 4, 0, -5}, /* 0x37 seven */ + {41, 3, 5, 4, 0, -5}, /* 0x38 eight */ + {43, 3, 5, 4, 0, -5}, /* 0x39 nine */ + {45, 1, 3, 2, 0, -4}, /* 0x3A colon */ + {46, 2, 4, 3, 0, -4}, /* 0x3B semicolon */ + {47, 3, 5, 4, 0, -5}, /* 0x3C less */ + {49, 3, 3, 4, 0, -4}, /* 0x3D equal */ + {51, 3, 5, 4, 0, -5}, /* 0x3E greater */ + {53, 3, 5, 4, 0, -5}, /* 0x3F question */ + {55, 3, 5, 4, 0, -5}, /* 0x40 at */ + {57, 3, 5, 4, 0, -5}, /* 0x41 A */ + {59, 3, 5, 4, 0, -5}, /* 0x42 B */ + {61, 3, 5, 4, 0, -5}, /* 0x43 C */ + {63, 3, 5, 4, 0, -5}, /* 0x44 D */ + {65, 3, 5, 4, 0, -5}, /* 0x45 E */ + {67, 3, 5, 4, 0, -5}, /* 0x46 F */ + {69, 3, 5, 4, 0, -5}, /* 0x47 G */ + {71, 3, 5, 4, 0, -5}, /* 0x48 H */ + {73, 3, 5, 4, 0, -5}, /* 0x49 I */ + {75, 3, 5, 4, 0, -5}, /* 0x4A J */ + {77, 3, 5, 4, 0, -5}, /* 0x4B K */ + {79, 3, 5, 4, 0, -5}, /* 0x4C L */ + {81, 3, 5, 4, 0, -5}, /* 0x4D M */ + {83, 3, 5, 4, 0, -5}, /* 0x4E N */ + {85, 3, 5, 4, 0, -5}, /* 0x4F O */ + {87, 3, 5, 4, 0, -5}, /* 0x50 P */ + {89, 3, 5, 4, 0, -5}, /* 0x51 Q */ + {91, 3, 5, 4, 0, -5}, /* 0x52 R */ + {93, 3, 5, 4, 0, -5}, /* 0x53 S */ + {95, 3, 5, 4, 0, -5}, /* 0x54 T */ + {97, 3, 5, 4, 0, -5}, /* 0x55 U */ + {99, 3, 5, 4, 0, -5}, /* 0x56 V */ + {101, 3, 5, 4, 0, -5}, /* 0x57 W */ + {103, 3, 5, 4, 0, -5}, /* 0x58 X */ + {105, 3, 5, 4, 0, -5}, /* 0x59 Y */ + {107, 3, 5, 4, 0, -5}, /* 0x5A Z */ + {109, 3, 5, 4, 0, -5}, /* 0x5B bracketleft */ + {111, 3, 3, 4, 0, -4}, /* 0x5C backslash */ + {113, 3, 5, 4, 0, -5}, /* 0x5D bracketright */ + {115, 3, 2, 4, 0, -5}, /* 0x5E asciicircum */ + {116, 3, 1, 4, 0, -1}, /* 0x5F underscore */ + {117, 2, 2, 3, 0, -5}, /* 0x60 grave */ + {118, 3, 4, 4, 0, -4}, /* 0x61 a */ + {120, 3, 5, 4, 0, -5}, /* 0x62 b */ + {122, 3, 4, 4, 0, -4}, /* 0x63 c */ + {124, 3, 5, 4, 0, -5}, /* 0x64 d */ + {126, 3, 4, 4, 0, -4}, /* 0x65 e */ + {128, 3, 5, 4, 0, -5}, /* 0x66 f */ + {130, 3, 5, 4, 0, -4}, /* 0x67 g */ + {132, 3, 5, 4, 0, -5}, /* 0x68 h */ + {134, 1, 5, 2, 0, -5}, /* 0x69 i */ + {135, 3, 6, 4, 0, -5}, /* 0x6A j */ + {138, 3, 5, 4, 0, -5}, /* 0x6B k */ + {140, 3, 5, 4, 0, -5}, /* 0x6C l */ + {142, 3, 4, 4, 0, -4}, /* 0x6D m */ + {144, 3, 4, 4, 0, -4}, /* 0x6E n */ + {146, 3, 4, 4, 0, -4}, /* 0x6F o */ + {148, 3, 5, 4, 0, -4}, /* 0x70 p */ + {150, 3, 5, 4, 0, -4}, /* 0x71 q */ + {152, 3, 4, 4, 0, -4}, /* 0x72 r */ + {154, 3, 4, 4, 0, -4}, /* 0x73 s */ + {156, 3, 5, 4, 0, -5}, /* 0x74 t */ + {158, 3, 4, 4, 0, -4}, /* 0x75 u */ + {160, 3, 4, 4, 0, -4}, /* 0x76 v */ + {162, 3, 4, 4, 0, -4}, /* 0x77 w */ + {164, 3, 4, 4, 0, -4}, /* 0x78 x */ + {166, 3, 5, 4, 0, -4}, /* 0x79 y */ + {168, 3, 4, 4, 0, -4}, /* 0x7A z */ + {170, 3, 5, 4, 0, -5}, /* 0x7B braceleft */ + {172, 1, 5, 2, 0, -5}, /* 0x7C bar */ + {173, 3, 5, 4, 0, -5}, /* 0x7D braceright */ + {175, 3, 2, 4, 0, -5}, /* 0x7E asciitilde */ +#if (TOMTHUMB_USE_EXTENDED) + {176, 1, 5, 2, 0, -5}, /* 0xA1 exclamdown */ + {177, 3, 5, 4, 0, -5}, /* 0xA2 cent */ + {179, 3, 5, 4, 0, -5}, /* 0xA3 sterling */ + {181, 3, 5, 4, 0, -5}, /* 0xA4 currency */ + {183, 3, 5, 4, 0, -5}, /* 0xA5 yen */ + {185, 1, 5, 2, 0, -5}, /* 0xA6 brokenbar */ + {186, 3, 5, 4, 0, -5}, /* 0xA7 section */ + {188, 3, 1, 4, 0, -5}, /* 0xA8 dieresis */ + {189, 3, 3, 4, 0, -5}, /* 0xA9 copyright */ + {191, 3, 5, 4, 0, -5}, /* 0xAA ordfeminine */ + {193, 2, 3, 3, 0, -5}, /* 0xAB guillemotleft */ + {194, 3, 2, 4, 0, -4}, /* 0xAC logicalnot */ + {195, 2, 1, 3, 0, -3}, /* 0xAD softhyphen */ + {196, 3, 3, 4, 0, -5}, /* 0xAE registered */ + {198, 3, 1, 4, 0, -5}, /* 0xAF macron */ + {199, 3, 3, 4, 0, -5}, /* 0xB0 degree */ + {201, 3, 5, 4, 0, -5}, /* 0xB1 plusminus */ + {203, 3, 3, 4, 0, -5}, /* 0xB2 twosuperior */ + {205, 3, 3, 4, 0, -5}, /* 0xB3 threesuperior */ + {207, 2, 2, 3, 0, -5}, /* 0xB4 acute */ + {208, 3, 5, 4, 0, -5}, /* 0xB5 mu */ + {210, 3, 5, 4, 0, -5}, /* 0xB6 paragraph */ + {212, 3, 3, 4, 0, -4}, /* 0xB7 periodcentered */ + {214, 3, 3, 4, 0, -3}, /* 0xB8 cedilla */ + {216, 1, 3, 2, 0, -5}, /* 0xB9 onesuperior */ + {217, 3, 5, 4, 0, -5}, /* 0xBA ordmasculine */ + {219, 2, 3, 3, 0, -5}, /* 0xBB guillemotright */ + {220, 3, 5, 4, 0, -5}, /* 0xBC onequarter */ + {222, 3, 5, 4, 0, -5}, /* 0xBD onehalf */ + {224, 3, 5, 4, 0, -5}, /* 0xBE threequarters */ + {226, 3, 5, 4, 0, -5}, /* 0xBF questiondown */ + {228, 3, 5, 4, 0, -5}, /* 0xC0 Agrave */ + {230, 3, 5, 4, 0, -5}, /* 0xC1 Aacute */ + {232, 3, 5, 4, 0, -5}, /* 0xC2 Acircumflex */ + {234, 3, 5, 4, 0, -5}, /* 0xC3 Atilde */ + {236, 3, 5, 4, 0, -5}, /* 0xC4 Adieresis */ + {238, 3, 5, 4, 0, -5}, /* 0xC5 Aring */ + {240, 3, 5, 4, 0, -5}, /* 0xC6 AE */ + {242, 3, 6, 4, 0, -5}, /* 0xC7 Ccedilla */ + {245, 3, 5, 4, 0, -5}, /* 0xC8 Egrave */ + {247, 3, 5, 4, 0, -5}, /* 0xC9 Eacute */ + {249, 3, 5, 4, 0, -5}, /* 0xCA Ecircumflex */ + {251, 3, 5, 4, 0, -5}, /* 0xCB Edieresis */ + {253, 3, 5, 4, 0, -5}, /* 0xCC Igrave */ + {255, 3, 5, 4, 0, -5}, /* 0xCD Iacute */ + {257, 3, 5, 4, 0, -5}, /* 0xCE Icircumflex */ + {259, 3, 5, 4, 0, -5}, /* 0xCF Idieresis */ + {261, 3, 5, 4, 0, -5}, /* 0xD0 Eth */ + {263, 3, 5, 4, 0, -5}, /* 0xD1 Ntilde */ + {265, 3, 5, 4, 0, -5}, /* 0xD2 Ograve */ + {267, 3, 5, 4, 0, -5}, /* 0xD3 Oacute */ + {269, 3, 5, 4, 0, -5}, /* 0xD4 Ocircumflex */ + {271, 3, 5, 4, 0, -5}, /* 0xD5 Otilde */ + {273, 3, 5, 4, 0, -5}, /* 0xD6 Odieresis */ + {275, 3, 3, 4, 0, -4}, /* 0xD7 multiply */ + {277, 3, 5, 4, 0, -5}, /* 0xD8 Oslash */ + {279, 3, 5, 4, 0, -5}, /* 0xD9 Ugrave */ + {281, 3, 5, 4, 0, -5}, /* 0xDA Uacute */ + {283, 3, 5, 4, 0, -5}, /* 0xDB Ucircumflex */ + {285, 3, 5, 4, 0, -5}, /* 0xDC Udieresis */ + {287, 3, 5, 4, 0, -5}, /* 0xDD Yacute */ + {289, 3, 5, 4, 0, -5}, /* 0xDE Thorn */ + {291, 3, 6, 4, 0, -5}, /* 0xDF germandbls */ + {294, 3, 5, 4, 0, -5}, /* 0xE0 agrave */ + {296, 3, 5, 4, 0, -5}, /* 0xE1 aacute */ + {298, 3, 5, 4, 0, -5}, /* 0xE2 acircumflex */ + {300, 3, 5, 4, 0, -5}, /* 0xE3 atilde */ + {302, 3, 5, 4, 0, -5}, /* 0xE4 adieresis */ + {304, 3, 5, 4, 0, -5}, /* 0xE5 aring */ + {306, 3, 4, 4, 0, -4}, /* 0xE6 ae */ + {308, 3, 5, 4, 0, -4}, /* 0xE7 ccedilla */ + {310, 3, 5, 4, 0, -5}, /* 0xE8 egrave */ + {312, 3, 5, 4, 0, -5}, /* 0xE9 eacute */ + {314, 3, 5, 4, 0, -5}, /* 0xEA ecircumflex */ + {316, 3, 5, 4, 0, -5}, /* 0xEB edieresis */ + {318, 2, 5, 3, 0, -5}, /* 0xEC igrave */ + {320, 2, 5, 3, 0, -5}, /* 0xED iacute */ + {322, 3, 5, 4, 0, -5}, /* 0xEE icircumflex */ + {324, 3, 5, 4, 0, -5}, /* 0xEF idieresis */ + {326, 3, 5, 4, 0, -5}, /* 0xF0 eth */ + {328, 3, 5, 4, 0, -5}, /* 0xF1 ntilde */ + {330, 3, 5, 4, 0, -5}, /* 0xF2 ograve */ + {332, 3, 5, 4, 0, -5}, /* 0xF3 oacute */ + {334, 3, 5, 4, 0, -5}, /* 0xF4 ocircumflex */ + {336, 3, 5, 4, 0, -5}, /* 0xF5 otilde */ + {338, 3, 5, 4, 0, -5}, /* 0xF6 odieresis */ + {340, 3, 5, 4, 0, -5}, /* 0xF7 divide */ + {342, 3, 4, 4, 0, -4}, /* 0xF8 oslash */ + {344, 3, 5, 4, 0, -5}, /* 0xF9 ugrave */ + {346, 3, 5, 4, 0, -5}, /* 0xFA uacute */ + {348, 3, 5, 4, 0, -5}, /* 0xFB ucircumflex */ + {350, 3, 5, 4, 0, -5}, /* 0xFC udieresis */ + {352, 3, 6, 4, 0, -5}, /* 0xFD yacute */ + {355, 3, 5, 4, 0, -4}, /* 0xFE thorn */ + {357, 3, 6, 4, 0, -5}, /* 0xFF ydieresis */ + {360, 1, 1, 2, 0, -1}, /* 0x11D gcircumflex */ + {361, 3, 5, 4, 0, -5}, /* 0x152 OE */ + {363, 3, 4, 4, 0, -4}, /* 0x153 oe */ + {365, 3, 5, 4, 0, -5}, /* 0x160 Scaron */ + {367, 3, 5, 4, 0, -5}, /* 0x161 scaron */ + {369, 3, 5, 4, 0, -5}, /* 0x178 Ydieresis */ + {371, 3, 5, 4, 0, -5}, /* 0x17D Zcaron */ + {373, 3, 5, 4, 0, -5}, /* 0x17E zcaron */ + {375, 1, 1, 2, 0, -1}, /* 0xEA4 uni0EA4 */ + {376, 1, 1, 2, 0, -1}, /* 0x13A0 uni13A0 */ + {377, 1, 1, 2, 0, -3}, /* 0x2022 bullet */ + {378, 3, 1, 4, 0, -1}, /* 0x2026 ellipsis */ + {379, 3, 5, 4, 0, -5}, /* 0x20AC Euro */ + {381, 4, 5, 5, 0, -5}, /* 0xFFFD uniFFFD */ +#endif /* (TOMTHUMB_USE_EXTENDED) */ +}; + +const GFXfont TomThumb PROGMEM = {(uint8_t *)TomThumbBitmaps, + (GFXglyph *)TomThumbGlyphs, 0x20, 0x7E, 6}; diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/README.md b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/README.md new file mode 100644 index 0000000..6f36460 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/README.md @@ -0,0 +1,47 @@ +# Adafruit GFX Library ![Build Status](https://github.com/adafruit/Adafruit-GFX-Library/workflows/Arduino%20Library%20CI/badge.svg) + +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 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 must be included in any redistribution. + +Recent Arduino IDE releases include the Library Manager for easy installation. Otherwise, to download, click the DOWNLOAD ZIP button, uncompress and rename the uncompressed folder Adafruit_GFX. Confirm that the Adafruit_GFX folder contains Adafruit_GFX.cpp and Adafruit_GFX.h. Place the Adafruit_GFX library folder your ArduinoSketchFolder/Libraries/ folder. You may need to create the Libraries subfolder if its your first library. Restart the IDE. + +**You will also need to install the latest Adafruit BusIO library.** Search for "Adafruit BusIO" in the library manager, or install by hand from https://github.com/adafruit/Adafruit_BusIO + +# Useful Resources + +- Image2Code: This is a handy Java GUI utility to convert a BMP file into the array code necessary to display the image with the drawBitmap function. Check out the code at ehubin's GitHub repository: https://github.com/ehubin/Adafruit-GFX-Library/tree/master/Img2Code + +- drawXBitmap function: You can use the GIMP photo editor to save a .xbm file and use the array saved in the file to draw a bitmap with the drawXBitmap function. See the pull request here for more details: https://github.com/adafruit/Adafruit-GFX-Library/pull/31 + +- 'Fonts' folder contains bitmap fonts for use with recent (1.1 and later) Adafruit_GFX. 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. + +- 'fontconvert' folder contains a command-line tool for converting TTF fonts to Adafruit_GFX header format. + +- You can also use [this GFX Font Customiser tool](https://github.com/tchapi/Adafruit-GFX-Font-Customiser) (_web version [here](https://tchapi.github.io/Adafruit-GFX-Font-Customiser/)_) to customize or correct the output from [fontconvert](https://github.com/adafruit/Adafruit-GFX-Library/tree/master/fontconvert), and create fonts with only a subset of characters to optimize size. + +--- + +### Roadmap + +The PRIME DIRECTIVE is to maintain backward compatibility with existing Arduino sketches -- many are hosted elsewhere and don't track changes here, some are in print and can never be changed! This "little" library has grown organically over time and sometimes we paint ourselves into a design corner and just have to live with it or add progressively more ungainly workarounds. + +**We are grateful for everyone's contributions, but pull requests for the following will NOT be merged:** + +- Additional or incompatible font formats (see Prime Directive above). There are already two formats and the code is quite bloaty there as it is. This also creates liabilities for tools and documentation. What's there isn't perfect but it does the job. + +- Additional or incompatible bitmap formats, for similar reasons. It's getting messy. + +- Adding background color to custom fonts to erase prior screen contents. The ONLY acceptable methods are to clear the area with a filled rect, or (to avoid flicker) draw text into a GFXcanvas1 and copy to screen with drawBitmap() w/background color. This is on purpose and by design. We've discussed this. Glyphs can overlap. + +- Scrolling, whether hardware- or software-based. Such implementations tend to rely on hardware-specific features (not universally available), read access to the screen's framebuffer (ditto) and/or the addition of virtual functions in GFX which them must be added in *every* subclass, of which there are many. The GFX API is largely "set" at this point and this is just a limitation we live with now. + +- Please don't reformat code for the sake of reformatting code. The resulting large "visual diff" makes it impossible to untangle actual bug fixes from merely rearranged lines. clang-format will be the final arbiter. + +- Please no more pentagram-drawing PRs. Any oddly-specific drawing functions can go in your own code and aren't helpful in a library context. + +If you *must* have one of these features, consider creating a fork with the features required for your project...it's easy to keep synced with the upstream code. diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/component.mk b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/component.mk new file mode 100644 index 0000000..049f190 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/component.mk @@ -0,0 +1 @@ +COMPONENT_ADD_INCLUDEDIRS = . diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/examples/GFXcanvas/GFXcanvas.ino b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/examples/GFXcanvas/GFXcanvas.ino new file mode 100644 index 0000000..d4e3370 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/examples/GFXcanvas/GFXcanvas.ino @@ -0,0 +1,113 @@ +/*** +This example is intended to demonstrate the use of getPixel() versus +getRawPixel() and the fast horizontal and vertical drawing routines +in the GFXcanvas family of classes, + +When using the GFXcanvas* classes as the image buffer for a hardware driver, +there is a need to get individual pixel color values at given physical +coordinates. Rather than subclasses or client classes call getBuffer() and +reinterpret the byte layout of the buffer, two methods are added to each of the +GFXcanvas* classes that allow fetching of specific pixel values. + + * getPixel(x, y) : Gets the pixel color value at the rotated coordinates in +the image. + * getRawPixel(x,y) : Gets the pixel color value at the unrotated coordinates +in the image. This is useful for getting the pixel value to map to a hardware +pixel location. This method was made protected as only the hardware driver +should be accessing it. + +The GFXcanvas*SerialDemo classes in this example will print to Serial the +contents of the underlying GFXcanvas buffer in both the current rotated layout +and the underlying physical layout. +***/ + +#include "GFXcanvasSerialDemo.h" +#include + +void setup() { + Serial.begin(115200); + + // first create a rectangular GFXcanvas8SerialDemo object and draw to it + GFXcanvas8SerialDemo demo8(21, 11); + + demo8.fillScreen(0x00); + demo8.setRotation(1); // now canvas is 11x21 + demo8.fillCircle(5, 10, 5, 0xAA); + demo8.writeFastHLine(0, 0, 11, 0x11); + demo8.writeFastHLine(10, 10, -11, 0x22); + demo8.writeFastHLine(0, 20, 11, 0x33); + demo8.writeFastVLine(0, 0, 21, 0x44); + demo8.writeFastVLine(10, 20, -21, 0x55); + + Serial.println("Demonstrating GFXcanvas rotated and raw pixels.\n"); + + // print it out rotated + + Serial.println("The canvas's content in the rotation of '0':\n"); + demo8.setRotation(0); + demo8.print(true); + Serial.println("\n"); + + Serial.println("The canvas's content in the rotation of '1' (which is what " + "it was drawn in):\n"); + demo8.setRotation(1); + demo8.print(true); + Serial.println("\n"); + + Serial.println("The canvas's content in the rotation of '2':\n"); + demo8.setRotation(2); + demo8.print(true); + Serial.println("\n"); + + Serial.println("The canvas's content in the rotation of '3':\n"); + demo8.setRotation(3); + demo8.print(true); + Serial.println("\n"); + + // print it out unrotated + Serial.println("The canvas's content in it's raw, physical layout:\n"); + demo8.print(false); + Serial.println("\n"); + + // Demonstrate GFXcanvas1SerialDemo + + GFXcanvas1SerialDemo demo1(21, 11); + demo1.fillScreen(0); + demo1.setRotation(0); + demo1.writeFastHLine(0, 0, 9, 1); + demo1.setRotation(1); + demo1.writeFastHLine(0, 0, 9, 1); + demo1.setRotation(2); + demo1.writeFastHLine(0, 0, 9, 1); + demo1.setRotation(3); + demo1.writeFastHLine(0, 0, 9, 1); + demo1.setRotation(1); + demo1.fillRect(3, 8, 5, 5, 1); + + Serial.println("\nThe GFXcanvas1 raw content after drawing a fast horizontal " + "line in each rotation:\n"); + demo1.print(false); + Serial.println("\n"); + + // Demonstrate GFXcanvas16SerialDemo + + GFXcanvas16SerialDemo demo16(21, 11); + demo16.fillScreen(0); + demo16.setRotation(0); + demo16.writeFastHLine(0, 0, 9, 0x1111); + demo16.setRotation(1); + demo16.writeFastHLine(0, 0, 9, 0x2222); + demo16.setRotation(2); + demo16.writeFastHLine(0, 0, 9, 0x3333); + demo16.setRotation(3); + demo16.writeFastHLine(0, 0, 9, 0x4444); + demo16.setRotation(1); + demo16.fillRect(3, 8, 5, 5, 0x8888); + + Serial.println("\nThe GFXcanvas16 raw content after drawing a fast " + "horizontal line in each rotation:\n"); + demo16.print(false); + Serial.println("\n"); +} + +void loop() {} diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/examples/GFXcanvas/GFXcanvasSerialDemo.cpp b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/examples/GFXcanvas/GFXcanvasSerialDemo.cpp new file mode 100644 index 0000000..ed83a96 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/examples/GFXcanvas/GFXcanvasSerialDemo.cpp @@ -0,0 +1,92 @@ +#include "GFXcanvasSerialDemo.h" +#include + +GFXcanvas1SerialDemo::GFXcanvas1SerialDemo(uint16_t w, uint16_t h) + : GFXcanvas1(w, h) {} + +void GFXcanvas1SerialDemo::print(bool rotated) { + char pixel_buffer[8]; + uint16_t width, height; + + if (rotated) { + width = this->width(); + height = this->height(); + } else { + width = this->WIDTH; + height = this->HEIGHT; + } + + for (uint16_t y = 0; y < height; y++) { + for (uint16_t x = 0; x < width; x++) { + bool pixel; + if (rotated) { + pixel = this->getPixel(x, y); + } else { + pixel = this->getRawPixel(x, y); + } + sprintf(pixel_buffer, " %d", pixel); + Serial.print(pixel_buffer); + } + Serial.print("\n"); + } +} + +GFXcanvas8SerialDemo::GFXcanvas8SerialDemo(uint16_t w, uint16_t h) + : GFXcanvas8(w, h) {} + +void GFXcanvas8SerialDemo::print(bool rotated) { + char pixel_buffer[8]; + uint16_t width, height; + + if (rotated) { + width = this->width(); + height = this->height(); + } else { + width = this->WIDTH; + height = this->HEIGHT; + } + + for (uint16_t y = 0; y < height; y++) { + for (uint16_t x = 0; x < width; x++) { + uint8_t pixel; + if (rotated) { + pixel = this->getPixel(x, y); + } else { + pixel = this->getRawPixel(x, y); + } + sprintf(pixel_buffer, " %02x", pixel); + Serial.print(pixel_buffer); + } + Serial.print("\n"); + } +} + +GFXcanvas16SerialDemo::GFXcanvas16SerialDemo(uint16_t w, uint16_t h) + : GFXcanvas16(w, h) {} + +void GFXcanvas16SerialDemo::print(bool rotated) { + char pixel_buffer[8]; + uint16_t width, height; + + if (rotated) { + width = this->width(); + height = this->height(); + } else { + width = this->WIDTH; + height = this->HEIGHT; + } + + for (uint16_t y = 0; y < height; y++) { + for (uint16_t x = 0; x < width; x++) { + uint16_t pixel; + if (rotated) { + pixel = this->getPixel(x, y); + } else { + pixel = this->getRawPixel(x, y); + } + sprintf(pixel_buffer, " %04x", pixel); + Serial.print(pixel_buffer); + } + Serial.print("\n"); + } +} diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/examples/GFXcanvas/GFXcanvasSerialDemo.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/examples/GFXcanvas/GFXcanvasSerialDemo.h new file mode 100644 index 0000000..80589d9 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/examples/GFXcanvas/GFXcanvasSerialDemo.h @@ -0,0 +1,65 @@ +#ifndef __GFXcanvasSerialDemo__ +#define __GFXcanvasSerialDemo__ +#include + +/**********************************************************************/ +/*! + @brief Demonstrates using the GFXconvas classes as the backing store + for a device driver. +*/ +/**********************************************************************/ +class GFXcanvas1SerialDemo : public GFXcanvas1 { +public: + GFXcanvas1SerialDemo(uint16_t w, uint16_t h); + + /**********************************************************************/ + /*! + @brief Prints the current contents of the canvas to Serial + @param rotated true to print according to the current GFX rotation, + false to print to the native rotation of the canvas (or unrotated). + */ + /**********************************************************************/ + void print(bool rotated); +}; + +/**********************************************************************/ +/*! + @brief Demonstrates using the GFXconvas classes as the backing store + for a device driver. +*/ +/**********************************************************************/ +class GFXcanvas8SerialDemo : public GFXcanvas8 { +public: + GFXcanvas8SerialDemo(uint16_t w, uint16_t h); + + /**********************************************************************/ + /*! + @brief Prints the current contents of the canvas to Serial + @param rotated true to print according to the current GFX rotation, + false to print to the native rotation of the canvas (or unrotated). + */ + /**********************************************************************/ + void print(bool rotated); +}; + +/**********************************************************************/ +/*! + @brief Demonstrates using the GFXconvas classes as the backing store + for a device driver. +*/ +/**********************************************************************/ +class GFXcanvas16SerialDemo : public GFXcanvas16 { +public: + GFXcanvas16SerialDemo(uint16_t w, uint16_t h); + + /**********************************************************************/ + /*! + @brief Prints the current contents of the canvas to Serial + @param rotated true to print according to the current GFX rotation, + false to print to the native rotation of the canvas (or unrotated). + */ + /**********************************************************************/ + void print(bool rotated); +}; + +#endif // __GFXcanvasSerialDemo__ diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/examples/mock_ili9341/mock_ili9341.ino b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/examples/mock_ili9341/mock_ili9341.ino new file mode 100644 index 0000000..d141839 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/examples/mock_ili9341/mock_ili9341.ino @@ -0,0 +1,365 @@ +/*************************************************** + This is our GFX example for the Adafruit ILI9341 Breakout and Shield + ----> http://www.adafruit.com/products/1651 + + Check out the links above for our tutorials and wiring diagrams + These displays use SPI to communicate, 4 or 5 pins are required to + interface (RST is optional) + 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. + MIT license, all text above must be included in any redistribution + ****************************************************/ + + +#include "SPI.h" +#include "Adafruit_GFX.h" +#include "Adafruit_ILI9341.h" + +// For the Adafruit shield, these are the default. +#define TFT_DC 9 +#define TFT_CS 10 + +// Use hardware SPI (on Uno, #13, #12, #11) and the above for CS/DC +Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC); +// If using the breakout, change pins as desired +//Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_MOSI, TFT_CLK, TFT_RST, TFT_MISO); + +void setup() { + Serial.begin(9600); + Serial.println("ILI9341 Test!"); + + tft.begin(); + + // read diagnostics (optional but can help debug problems) + uint8_t x = tft.readcommand8(ILI9341_RDMODE); + Serial.print("Display Power Mode: 0x"); Serial.println(x, HEX); + x = tft.readcommand8(ILI9341_RDMADCTL); + Serial.print("MADCTL Mode: 0x"); Serial.println(x, HEX); + x = tft.readcommand8(ILI9341_RDPIXFMT); + Serial.print("Pixel Format: 0x"); Serial.println(x, HEX); + x = tft.readcommand8(ILI9341_RDIMGFMT); + Serial.print("Image Format: 0x"); Serial.println(x, HEX); + x = tft.readcommand8(ILI9341_RDSELFDIAG); + Serial.print("Self Diagnostic: 0x"); Serial.println(x, HEX); + + Serial.println(F("Benchmark Time (microseconds)")); + delay(10); + Serial.print(F("Screen fill ")); + Serial.println(testFillScreen()); + delay(500); + + Serial.print(F("Text ")); + Serial.println(testText()); + delay(3000); + + Serial.print(F("Lines ")); + Serial.println(testLines(ILI9341_CYAN)); + delay(500); + + Serial.print(F("Horiz/Vert Lines ")); + Serial.println(testFastLines(ILI9341_RED, ILI9341_BLUE)); + delay(500); + + Serial.print(F("Rectangles (outline) ")); + Serial.println(testRects(ILI9341_GREEN)); + delay(500); + + Serial.print(F("Rectangles (filled) ")); + Serial.println(testFilledRects(ILI9341_YELLOW, ILI9341_MAGENTA)); + delay(500); + + Serial.print(F("Circles (filled) ")); + Serial.println(testFilledCircles(10, ILI9341_MAGENTA)); + + Serial.print(F("Circles (outline) ")); + Serial.println(testCircles(10, ILI9341_WHITE)); + delay(500); + + Serial.print(F("Triangles (outline) ")); + Serial.println(testTriangles()); + delay(500); + + Serial.print(F("Triangles (filled) ")); + Serial.println(testFilledTriangles()); + delay(500); + + Serial.print(F("Rounded rects (outline) ")); + Serial.println(testRoundRects()); + delay(500); + + Serial.print(F("Rounded rects (filled) ")); + Serial.println(testFilledRoundRects()); + delay(500); + + Serial.println(F("Done!")); + +} + + +void loop(void) { + for(uint8_t rotation=0; rotation<4; rotation++) { + tft.setRotation(rotation); + testText(); + delay(1000); + } +} + +unsigned long testFillScreen() { + unsigned long start = micros(); + tft.fillScreen(ILI9341_BLACK); + yield(); + tft.fillScreen(ILI9341_RED); + yield(); + tft.fillScreen(ILI9341_GREEN); + yield(); + tft.fillScreen(ILI9341_BLUE); + yield(); + tft.fillScreen(ILI9341_BLACK); + yield(); + return micros() - start; +} + +unsigned long testText() { + tft.fillScreen(ILI9341_BLACK); + unsigned long start = micros(); + tft.setCursor(0, 0); + tft.setTextColor(ILI9341_WHITE); tft.setTextSize(1); + tft.println("Hello World!"); + tft.setTextColor(ILI9341_YELLOW); tft.setTextSize(2); + tft.println(1234.56); + tft.setTextColor(ILI9341_RED); tft.setTextSize(3); + tft.println(0xDEADBEEF, HEX); + tft.println(); + tft.setTextColor(ILI9341_GREEN); + tft.setTextSize(5); + tft.println("Groop"); + tft.setTextSize(2); + tft.println("I implore thee,"); + tft.setTextSize(1); + tft.println("my foonting turlingdromes."); + tft.println("And hooptiously drangle me"); + tft.println("with crinkly bindlewurdles,"); + tft.println("Or I will rend thee"); + tft.println("in the gobberwarts"); + tft.println("with my blurglecruncheon,"); + tft.println("see if I don't!"); + return micros() - start; +} + +unsigned long testLines(uint16_t color) { + unsigned long start, t; + int x1, y1, x2, y2, + w = tft.width(), + h = tft.height(); + + tft.fillScreen(ILI9341_BLACK); + yield(); + + x1 = y1 = 0; + y2 = h - 1; + start = micros(); + for(x2=0; x20; i-=6) { + i2 = i / 2; + start = micros(); + tft.fillRect(cx-i2, cy-i2, i, i, color1); + t += micros() - start; + // Outlines are not included in timing results + tft.drawRect(cx-i2, cy-i2, i, i, color2); + yield(); + } + + return t; +} + +unsigned long testFilledCircles(uint8_t radius, uint16_t color) { + unsigned long start; + int x, y, w = tft.width(), h = tft.height(), r2 = radius * 2; + + tft.fillScreen(ILI9341_BLACK); + start = micros(); + for(x=radius; x10; i-=5) { + start = micros(); + tft.fillTriangle(cx, cy - i, cx - i, cy + i, cx + i, cy + i, + tft.color565(0, i*10, i*10)); + t += micros() - start; + tft.drawTriangle(cx, cy - i, cx - i, cy + i, cx + i, cy + i, + tft.color565(i*10, i*10, 0)); + yield(); + } + + return t; +} + +unsigned long testRoundRects() { + unsigned long start; + int w, i, i2, + cx = tft.width() / 2 - 1, + cy = tft.height() / 2 - 1; + + tft.fillScreen(ILI9341_BLACK); + w = min(tft.width(), tft.height()); + start = micros(); + for(i=0; i20; i-=6) { + i2 = i / 2; + tft.fillRoundRect(cx-i2, cy-i2, i, i, i/8, tft.color565(0, i, 0)); + yield(); + } + + return micros() - start; +} diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/fontconvert/Makefile b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/fontconvert/Makefile new file mode 100644 index 0000000..47f5a0e --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/fontconvert/Makefile @@ -0,0 +1,12 @@ +all: fontconvert + +CC = gcc +CFLAGS = -Wall -I/usr/local/include/freetype2 -I/usr/include/freetype2 -I/usr/include +LIBS = -lfreetype + +fontconvert: fontconvert.c + $(CC) $(CFLAGS) $< $(LIBS) -o $@ + strip $@ + +clean: + rm -f fontconvert diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/fontconvert/bdf2adafruit.py b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/fontconvert/bdf2adafruit.py new file mode 100644 index 0000000..9d9ee8a --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/fontconvert/bdf2adafruit.py @@ -0,0 +1,135 @@ +#!/usr/bin/python2 + +# MIT License. + +# Copyright (c) 2016 William Skellenger +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +# IN THE SOFTWARE. + +# This small script is designed to mostly take a BDF file and convert it to a +# format that can largely be cut/pasted as an Adafruit-format font. +# It was written in an hour or so and did what I needed it to do. +# I used it for one file. Maybe it bombs on other files. +# William Skellenger, Feb 2016 +# (email: williamj@skellenger.net) +# (Twitter: @skelliam) +# +# Usage: bdf2adafruit.py > out.txt +# +# Once you have out.txt you can cut/paste the contents into a new font +# header file as part of the Adafruit GFX library. + +import sys + +myfile = open(sys.argv[1]) + +processing = 0 +getting_rows = 0 + +chars = [] +bitmapData = [] + +class Glyph: + encoding = -1 + rows = [] + comment = "" + offset = -1 + width = 0 + height = 0 + advance = 0 + xoffs = 0 + yoffs = 0 + def __init__(self, comment): + self.comment = comment + self.rows = [] + +for line in myfile.readlines(): + if 'STARTCHAR' in line: + processing = 1 + vals = line.split() + g = Glyph(vals[1]) + #g.width = 8 #in this example always 8 bits wide + elif 'ENDCHAR' in line: + dataByteCompressed = 0 + dataByteCompressedIndex = 8 + g.height = len(bitmapData) + for value in bitmapData: + bitIndex = 0 + while bitIndex < g.width: + bit = (value >> (7 - bitIndex)) & 0x01 + dataByteCompressed |= bit << (dataByteCompressedIndex - 1) + dataByteCompressedIndex -= 1 + if dataByteCompressedIndex == 0: + dataByteCompressedIndex = 8 + g.rows.append(dataByteCompressed) + dataByteCompressed = 0 + bitIndex += 1 + if 8 != dataByteCompressedIndex: + g.rows.append(dataByteCompressed) + + chars.append(g) #append the completed glyph into list + processing = 0 + getting_rows = 0 + bitmapData.clear() + + if processing: + if 'ENCODING' in line: + vals = line.split() + g.encoding = int(vals[1]) + elif 'DWIDTH' in line: + vals = line.split() + #g.advance = int(vals[1]) #cursor advance seems to be the first number in DWIDTH + elif 'BBX' in line: + vals = line.split() + g.xoffs = 0 + g.yoffs = -(int(vals[2]) + int(vals[4])) + g.advance = (int(vals[1]) + 1) #x bounding box + 1 + g.width = int(vals[1]) + elif 'BITMAP' in line: + getting_rows = 1 + elif getting_rows: + #g.rows.append(int(line, 16)) #append pixel rows into glyph's list of rows + bitmapData.append(int(line, 16)) + +print + +i=0 +for char in chars: + char.offset = i + print("\t", end='') + num = 3 + for row in char.rows: + if num != 3: + print(" ", end = '') + print("0x%02X," %(row), end = ''), + i+=1 + num-=1 + + if num == 1: + print("\t\t", end = '') + if num == 2: + print("\t\t\t", end = '') + print("\t/* 0x%02X %s */" %(char.encoding, char.comment)) + +for char in chars: + # offset, bit-width, bit-height, advance cursor, x offset, y offset + print("\t{ %d, %d, %d, %d, %d, %d }, /* 0x%02X %s */" %( + char.offset, char.width, char.height, + char.advance, char.xoffs, char.yoffs, + char.encoding, char.comment)) diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/fontconvert/fontconvert.c b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/fontconvert/fontconvert.c new file mode 100644 index 0000000..302d1da --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/fontconvert/fontconvert.c @@ -0,0 +1,291 @@ +/* +TrueType to Adafruit_GFX font converter. Derived from Peter Jakobs' +Adafruit_ftGFX fork & makefont tool, and Paul Kourany's Adafruit_mfGFX. + +NOT AN ARDUINO SKETCH. This is a command-line tool for preprocessing +fonts to be used with the Adafruit_GFX Arduino library. + +For UNIX-like systems. Outputs to stdout; redirect to header file, e.g.: + ./fontconvert ~/Library/Fonts/FreeSans.ttf 18 > FreeSans18pt7b.h + +REQUIRES FREETYPE LIBRARY. www.freetype.org + +Currently this only extracts the printable 7-bit ASCII chars of a font. +Will eventually extend with some int'l chars a la ftGFX, not there yet. +Keep 7-bit fonts around as an option in that case, more compact. + +See notes at end for glyph nomenclature & other tidbits. +*/ +#ifndef ARDUINO + +#include +#include +#include +#include +#include FT_GLYPH_H +#include FT_MODULE_H +#include FT_TRUETYPE_DRIVER_H +#include "../gfxfont.h" // Adafruit_GFX font structures + +#define DPI 141 // Approximate res. of Adafruit 2.8" TFT + +// Accumulate bits for output, with periodic hexadecimal byte write +void enbit(uint8_t value) { + static uint8_t row = 0, sum = 0, bit = 0x80, firstCall = 1; + if (value) + sum |= bit; // Set bit if needed + if (!(bit >>= 1)) { // Advance to next bit, end of byte reached? + if (!firstCall) { // Format output table nicely + if (++row >= 12) { // Last entry on line? + printf(",\n "); // Newline format output + row = 0; // Reset row counter + } else { // Not end of line + printf(", "); // Simple comma delim + } + } + printf("0x%02X", sum); // Write byte value + sum = 0; // Clear for next byte + bit = 0x80; // Reset bit counter + firstCall = 0; // Formatting flag + } +} + +int main(int argc, char *argv[]) { + int i, j, err, size, first = ' ', last = '~', bitmapOffset = 0, x, y, byte; + char *fontName, c, *ptr; + FT_Library library; + FT_Face face; + FT_Glyph glyph; + FT_Bitmap *bitmap; + FT_BitmapGlyphRec *g; + GFXglyph *table; + uint8_t bit; + + // Parse command line. Valid syntaxes are: + // fontconvert [filename] [size] + // fontconvert [filename] [size] [last char] + // fontconvert [filename] [size] [first char] [last char] + // Unless overridden, default first and last chars are + // ' ' (space) and '~', respectively + + if (argc < 3) { + fprintf(stderr, "Usage: %s fontfile size [first] [last]\n", argv[0]); + return 1; + } + + size = atoi(argv[2]); + + if (argc == 4) { + last = atoi(argv[3]); + } else if (argc == 5) { + first = atoi(argv[3]); + last = atoi(argv[4]); + } + + if (last < first) { + i = first; + first = last; + last = i; + } + + ptr = strrchr(argv[1], '/'); // Find last slash in filename + if (ptr) + ptr++; // First character of filename (path stripped) + else + ptr = argv[1]; // No path; font in local dir. + + // Allocate space for font name and glyph table + if ((!(fontName = malloc(strlen(ptr) + 20))) || + (!(table = (GFXglyph *)malloc((last - first + 1) * sizeof(GFXglyph))))) { + fprintf(stderr, "Malloc error\n"); + return 1; + } + + // Derive font table names from filename. Period (filename + // extension) is truncated and replaced with the font size & bits. + strcpy(fontName, ptr); + ptr = strrchr(fontName, '.'); // Find last period (file ext) + if (!ptr) + ptr = &fontName[strlen(fontName)]; // If none, append + // Insert font size and 7/8 bit. fontName was alloc'd w/extra + // space to allow this, we're not sprintfing into Forbidden Zone. + sprintf(ptr, "%dpt%db", size, (last > 127) ? 8 : 7); + // Space and punctuation chars in name replaced w/ underscores. + for (i = 0; (c = fontName[i]); i++) { + if (isspace(c) || ispunct(c)) + fontName[i] = '_'; + } + + // Init FreeType lib, load font + if ((err = FT_Init_FreeType(&library))) { + fprintf(stderr, "FreeType init error: %d", err); + return err; + } + + // Use TrueType engine version 35, without subpixel rendering. + // This improves clarity of fonts since this library does not + // support rendering multiple levels of gray in a glyph. + // See https://github.com/adafruit/Adafruit-GFX-Library/issues/103 + FT_UInt interpreter_version = TT_INTERPRETER_VERSION_35; + FT_Property_Set(library, "truetype", "interpreter-version", + &interpreter_version); + + if ((err = FT_New_Face(library, argv[1], 0, &face))) { + fprintf(stderr, "Font load error: %d", err); + FT_Done_FreeType(library); + return err; + } + + // << 6 because '26dot6' fixed-point format + FT_Set_Char_Size(face, size << 6, 0, DPI, 0); + + // Currently all symbols from 'first' to 'last' are processed. + // Fonts may contain WAY more glyphs than that, but this code + // will need to handle encoding stuff to deal with extracting + // the right symbols, and that's not done yet. + // fprintf(stderr, "%ld glyphs\n", face->num_glyphs); + + printf("const uint8_t %sBitmaps[] PROGMEM = {\n ", fontName); + + // Process glyphs and output huge bitmap data array + for (i = first, j = 0; i <= last; i++, j++) { + // MONO renderer provides clean image with perfect crop + // (no wasted pixels) via bitmap struct. + if ((err = FT_Load_Char(face, i, FT_LOAD_TARGET_MONO))) { + fprintf(stderr, "Error %d loading char '%c'\n", err, i); + continue; + } + + if ((err = FT_Render_Glyph(face->glyph, FT_RENDER_MODE_MONO))) { + fprintf(stderr, "Error %d rendering char '%c'\n", err, i); + continue; + } + + if ((err = FT_Get_Glyph(face->glyph, &glyph))) { + fprintf(stderr, "Error %d getting glyph '%c'\n", err, i); + continue; + } + + bitmap = &face->glyph->bitmap; + g = (FT_BitmapGlyphRec *)glyph; + + // Minimal font and per-glyph information is stored to + // reduce flash space requirements. Glyph bitmaps are + // fully bit-packed; no per-scanline pad, though end of + // each character may be padded to next byte boundary + // when needed. 16-bit offset means 64K max for bitmaps, + // code currently doesn't check for overflow. (Doesn't + // check that size & offsets are within bounds either for + // that matter...please convert fonts responsibly.) + table[j].bitmapOffset = bitmapOffset; + table[j].width = bitmap->width; + table[j].height = bitmap->rows; + table[j].xAdvance = face->glyph->advance.x >> 6; + table[j].xOffset = g->left; + table[j].yOffset = 1 - g->top; + + for (y = 0; y < bitmap->rows; y++) { + for (x = 0; x < bitmap->width; x++) { + byte = x / 8; + bit = 0x80 >> (x & 7); + enbit(bitmap->buffer[y * bitmap->pitch + byte] & bit); + } + } + + // Pad end of char bitmap to next byte boundary if needed + int n = (bitmap->width * bitmap->rows) & 7; + if (n) { // Pixel count not an even multiple of 8? + n = 8 - n; // # bits to next multiple + while (n--) + enbit(0); + } + bitmapOffset += (bitmap->width * bitmap->rows + 7) / 8; + + FT_Done_Glyph(glyph); + } + + printf(" };\n\n"); // End bitmap array + + // Output glyph attributes table (one per character) + printf("const GFXglyph %sGlyphs[] PROGMEM = {\n", fontName); + for (i = first, j = 0; i <= last; i++, j++) { + printf(" { %5d, %3d, %3d, %3d, %4d, %4d }", table[j].bitmapOffset, + table[j].width, table[j].height, table[j].xAdvance, table[j].xOffset, + table[j].yOffset); + if (i < last) { + printf(", // 0x%02X", i); + if ((i >= ' ') && (i <= '~')) { + printf(" '%c'", i); + } + putchar('\n'); + } + } + printf(" }; // 0x%02X", last); + if ((last >= ' ') && (last <= '~')) + printf(" '%c'", last); + printf("\n\n"); + + // Output font structure + printf("const GFXfont %s PROGMEM = {\n", fontName); + printf(" (uint8_t *)%sBitmaps,\n", fontName); + printf(" (GFXglyph *)%sGlyphs,\n", fontName); + if (face->size->metrics.height == 0) { + // No face height info, assume fixed width and get from a glyph. + printf(" 0x%02X, 0x%02X, %d };\n\n", first, last, table[0].height); + } else { + printf(" 0x%02X, 0x%02X, %ld };\n\n", first, last, + face->size->metrics.height >> 6); + } + printf("// Approx. %d bytes\n", bitmapOffset + (last - first + 1) * 7 + 7); + // Size estimate is based on AVR struct and pointer sizes; + // actual size may vary. + + FT_Done_FreeType(library); + + return 0; +} + +/* ------------------------------------------------------------------------- + +Character metrics are slightly different from classic GFX & ftGFX. +In classic GFX: cursor position is the upper-left pixel of each 5x7 +character; lower extent of most glyphs (except those w/descenders) +is +6 pixels in Y direction. +W/new GFX fonts: cursor position is on baseline, where baseline is +'inclusive' (containing the bottom-most row of pixels in most symbols, +except those with descenders; ftGFX is one pixel lower). + +Cursor Y will be moved automatically when switching between classic +and new fonts. If you switch fonts, any print() calls will continue +along the same baseline. + + ...........#####.. -- yOffset + ..........######.. + ..........######.. + .........#######.. + ........#########. + * = Cursor pos. ........#########. + .......##########. + ......#####..####. + ......#####..####. + *.#.. .....#####...####. + .#.#. ....############## + #...# ...############### + #...# ...############### + ##### ..#####......##### + #...# .#####.......##### +====== #...# ====== #*###.........#### ======= Baseline + || xOffset + +glyph->xOffset and yOffset are pixel offsets, in GFX coordinate space +(+Y is down), from the cursor position to the top-left pixel of the +glyph bitmap. i.e. yOffset is typically negative, xOffset is typically +zero but a few glyphs will have other values (even negative xOffsets +sometimes, totally normal). glyph->xAdvance is the distance to move +the cursor on the X axis after drawing the corresponding symbol. + +There's also some changes with regard to 'background' color and new GFX +fonts (classic fonts unchanged). See Adafruit_GFX.cpp for explanation. +*/ + +#endif /* !ARDUINO */ diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/fontconvert/fontconvert_win.md b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/fontconvert/fontconvert_win.md new file mode 100644 index 0000000..1932841 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/fontconvert/fontconvert_win.md @@ -0,0 +1,88 @@ +### A short guide to use fontconvert.c to create your own fonts using MinGW. + +#### STEP 1: INSTALL MinGW + +Install MinGW (Minimalist GNU for Windows) from [MinGW.org](http://www.mingw.org/). +Please read carefully the instructions found on [Getting started page](http://www.mingw.org/wiki/Getting_Started). +I suggest installing with the "Graphical User Interface Installer". +To complete your initial installation you should further install some "packages". +For our purpose you should only install the "Basic Setup" packages. +To do that: + +1. Open the MinGW Installation Manager +2. From the left panel click "Basic Setup". +3. On the right panel choose "mingw32-base", "mingw-gcc-g++", "mingw-gcc-objc" and "msys-base" +and click "Mark for installation" +4. From the Menu click "Installation" and then "Apply changes". In the pop-up window select "Apply". + + +#### STEP 2: INSTALL Freetype Library + +To read about the freetype project visit [freetype.org](https://www.freetype.org/). +To Download the latest version of freetype go to [download page](http://download.savannah.gnu.org/releases/freetype/) +and choose "freetype-2.7.tar.gz" file (or a newer version if available). +To avoid long cd commands later in the command prompt, I suggest you unzip the file in the C:\ directory. +(I also renamed the folder to "ft27") +Before you build the library it's good to read these articles: +* [Using MSYS with MinGW](http://www.mingw.org/wiki/MSYS) +* [Installation and Use of Supplementary Libraries with MinGW](http://www.mingw.org/wiki/LibraryPathHOWTO) +* [Include Path](http://www.mingw.org/wiki/IncludePathHOWTO) + +Inside the unzipped folder there is another folder named "docs". Open it and read the INSTALL.UNIX (using notepad). +Pay attention to paragraph 3 (Build and Install the Library). So, let's begin the installation. +To give the appropriate commands we will use the MSYS command prompt (not cmd.exe of windows) which is UNIX like. +Follow the path C:\MinGW\msys\1.0 and double click "msys.bat". The command prompt environment appears. +Enter "ft27" directory using the cd commands: +``` +cd /c +cd ft27 +``` + +and then type one by one the commands: +``` +./configure --prefix=/mingw +make +make install +``` +Once you're finished, go inside "C:\MinGW\include" and there should be a new folder named "freetype2". +That, hopefully, means that you have installed the library correctly !! + +#### STEP 3: Build fontconvert.c + +Before proceeding I suggest you make a copy of Adafruit_GFX_library folder in C:\ directory. +Then, inside "fontconvert" folder open the "makefile" with an editor ( I used notepad++). +Change the commands so in the end the program looks like : +``` +all: fontconvert + +CC = gcc +CFLAGS = -Wall -I c:/mingw/include/freetype2 +LIBS = -lfreetype + +fontconvert: fontconvert.c + $(CC) $(CFLAGS) $< $(LIBS) -o $@ + +clean: + rm -f fontconvert +``` +Go back in the command prompt and with a cd command enter the fontconvert directory. +``` +cd /c/adafruit_gfx_library\fontconvert +``` +Give the command: +``` +make +``` +This command will, eventually, create a "fontconvert.exe" file inside fontconvert directory. + +#### STEP 4: Create your own font header files + +Now that you have an executable file, you can use it to create your own fonts to work with Adafruit GFX lib. +So, if we suppose that you already have a .ttf file with your favorite fonts, jump to the command prompt and type: +``` +./fontconvert yourfonts.ttf 9 > yourfonts9pt7b.h +``` +You can read more details at: [learn.adafruit](https://learn.adafruit.com/adafruit-gfx-graphics-library/using-fonts). + +Taraaaaaammm !! you've just created your new font header file. Put it inside the "Fonts" folder, grab a cup of coffee +and start playing with your Arduino (or whatever else ....)+ display module project. diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/fontconvert/makefonts.sh b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/fontconvert/makefonts.sh new file mode 100755 index 0000000..35f07ea --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/fontconvert/makefonts.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +# Ugly little Bash script, generates a set of .h files for GFX using +# GNU FreeFont sources. There are three fonts: 'Mono' (Courier-like), +# 'Sans' (Helvetica-like) and 'Serif' (Times-like); four styles: regular, +# bold, oblique or italic, and bold+oblique or bold+italic; and four +# sizes: 9, 12, 18 and 24 point. No real error checking or anything, +# this just powers through all the combinations, calling the fontconvert +# utility and redirecting the output to a .h file for each combo. + +# Adafruit_GFX repository does not include the source outline fonts +# (huge zipfile, different license) but they're easily acquired: +# http://savannah.gnu.org/projects/freefont/ + +convert=./fontconvert +inpath=~/Desktop/freefont/ +outpath=../Fonts/ +fonts=(FreeMono FreeSans FreeSerif) +styles=("" Bold Italic BoldItalic Oblique BoldOblique) +sizes=(9 12 18 24) + +for f in ${fonts[*]} +do + for index in ${!styles[*]} + do + st=${styles[$index]} + for si in ${sizes[*]} + do + infile=$inpath$f$st".ttf" + if [ -f $infile ] # Does source combination exist? + then + outfile=$outpath$f$st$si"pt7b.h" +# printf "%s %s %s > %s\n" $convert $infile $si $outfile + $convert $infile $si > $outfile + fi + done + done +done diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/gfxfont.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/gfxfont.h new file mode 100644 index 0000000..175bad6 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/gfxfont.h @@ -0,0 +1,29 @@ +// 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_ + +/// Font data stored PER GLYPH +typedef struct { + uint16_t bitmapOffset; ///< Pointer into GFXfont->bitmap + uint8_t width; ///< Bitmap dimensions in pixels + uint8_t height; ///< Bitmap dimensions in pixels + uint8_t xAdvance; ///< Distance to advance cursor (x axis) + int8_t xOffset; ///< X dist from cursor pos to UL corner + int8_t yOffset; ///< Y dist from cursor pos to UL corner +} GFXglyph; + +/// Data stored for FONT AS A WHOLE +typedef struct { + uint8_t *bitmap; ///< Glyph bitmaps, concatenated + GFXglyph *glyph; ///< Glyph array + uint16_t first; ///< ASCII extents (first char) + uint16_t last; ///< ASCII extents (last char) + uint8_t yAdvance; ///< Newline distance (y axis) +} GFXfont; + +#endif // _GFXFONT_H_ diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/glcdfont.c b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/glcdfont.c new file mode 100644 index 0000000..535da3a --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/glcdfont.c @@ -0,0 +1,143 @@ +// 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 +#elif defined(__IMXRT1052__) || defined(__IMXRT1062__) +// PROGMEM is defefind for T4 to place data in specific memory section +#undef PROGMEM +#define PROGMEM +#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 +}; + +// allow clean compilation with [-Wunused-const-variable=] and [-Wall] +static inline void avoid_unused_const_variable_compiler_warning(void) { + (void)font; +} + +#endif // FONT5X7_H diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/library.properties b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/library.properties new file mode 100644 index 0000000..3bbb3ff --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/library.properties @@ -0,0 +1,10 @@ +name=Adafruit GFX Library +version=1.12.6 +author=Adafruit +maintainer=Adafruit +sentence=Adafruit GFX graphics core library, this is the 'core' class that all our other graphics libraries derive from. +paragraph=Install this library in addition to the display library for your hardware. +category=Display +url=https://github.com/adafruit/Adafruit-GFX-Library +architectures=* +depends=Adafruit BusIO diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/license.txt b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/license.txt new file mode 100644 index 0000000..7492e93 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit GFX Library/license.txt @@ -0,0 +1,24 @@ +Software License Agreement (BSD License) + +Copyright (c) 2012 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. diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/.github/ISSUE_TEMPLATE.md b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/.github/ISSUE_TEMPLATE.md new file mode 100644 index 0000000..f0e2614 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,46 @@ +Thank you for opening an issue on an Adafruit Arduino library repository. To +improve the speed of resolution please review the following guidelines and +common troubleshooting steps below before creating the issue: + +- **Do not use GitHub issues for troubleshooting projects and issues.** Instead use + the forums at http://forums.adafruit.com to ask questions and troubleshoot why + something isn't working as expected. In many cases the problem is a common issue + that you will more quickly receive help from the forum community. GitHub issues + are meant for known defects in the code. If you don't know if there is a defect + in the code then start with troubleshooting on the forum first. + +- **If following a tutorial or guide be sure you didn't miss a step.** Carefully + check all of the steps and commands to run have been followed. Consult the + forum if you're unsure or have questions about steps in a guide/tutorial. + +- **For Arduino projects check these very common issues to ensure they don't apply**: + + - For uploading sketches or communicating with the board make sure you're using + a **USB data cable** and **not** a **USB charge-only cable**. It is sometimes + very hard to tell the difference between a data and charge cable! Try using the + cable with other devices or swapping to another cable to confirm it is not + the problem. + + - **Be sure you are supplying adequate power to the board.** Check the specs of + your board and plug in an external power supply. In many cases just + plugging a board into your computer is not enough to power it and other + peripherals. + + - **Double check all soldering joints and connections.** Flakey connections + cause many mysterious problems. See the [guide to excellent soldering](https://learn.adafruit.com/adafruit-guide-excellent-soldering/tools) for examples of good solder joints. + + - **Ensure you are using an official Arduino or Adafruit board.** We can't + guarantee a clone board will have the same functionality and work as expected + with this code and don't support them. + +If you're sure this issue is a defect in the code and checked the steps above +please fill in the following fields to provide enough troubleshooting information. +You may delete the guideline and text above to just leave the following details: + +- Arduino board: **INSERT ARDUINO BOARD NAME/TYPE HERE** + +- Arduino IDE version (found in Arduino -> About Arduino menu): **INSERT ARDUINO + VERSION HERE** + +- List the steps to reproduce the problem below (if possible attach a sketch or + copy the sketch code in too): **LIST REPRO STEPS BELOW** diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/.github/PULL_REQUEST_TEMPLATE.md b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..7b641eb --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,26 @@ +Thank you for creating a pull request to contribute to Adafruit's GitHub code! +Before you open the request please review the following guidelines and tips to +help it be more easily integrated: + +- **Describe the scope of your change--i.e. what the change does and what parts + of the code were modified.** This will help us understand any risks of integrating + the code. + +- **Describe any known limitations with your change.** For example if the change + doesn't apply to a supported platform of the library please mention it. + +- **Please run any tests or examples that can exercise your modified code.** We + strive to not break users of the code and running tests/examples helps with this + process. + +Thank you again for contributing! We will try to test and integrate the change +as soon as we can, but be aware we have many GitHub repositories to manage and +can't immediately respond to every request. There is no need to bump or check in +on a pull request (it will clutter the discussion of the request). + +Also don't be worried if the request is closed or not integrated--sometimes the +priorities of Adafruit's GitHub code (education, ease of use) might not match the +priorities of the pull request. Don't fret, the open source community thrives on +forks and GitHub makes it easy to keep your changes in a forked repo. + +After reviewing the guidelines above you can delete this text from the pull request. diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/.github/workflows/githubci.yml b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/.github/workflows/githubci.yml new file mode 100644 index 0000000..32d54d9 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/.github/workflows/githubci.yml @@ -0,0 +1,32 @@ +name: Arduino Library CI + +on: [pull_request, push, repository_dispatch] + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/setup-python@v4 + with: + python-version: '3.x' + - uses: actions/checkout@v3 + - uses: actions/checkout@v3 + with: + repository: adafruit/ci-arduino + path: ci + + - name: pre-install + run: bash ci/actions_install.sh + + - name: test platforms + run: python3 ci/build_platform.py main_platforms + + - name: clang + run: python3 ci/run-clang-format.py -e "ci/*" -e "bin/*" -r . + + - name: doxygen + env: + GH_REPO_TOKEN: ${{ secrets.GH_REPO_TOKEN }} + PRETTYNAME : "Adafruit IS31FL3731 Library" + run: bash ci/doxy_gen_and_deploy.sh diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/.piopm b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/.piopm new file mode 100644 index 0000000..ccf819e --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/.piopm @@ -0,0 +1 @@ +{"type": "library", "name": "Adafruit IS31FL3731 Library", "version": "2.0.2", "spec": {"owner": "adafruit", "id": 1241, "name": "Adafruit IS31FL3731 Library", "requirements": null, "uri": null}} \ No newline at end of file diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/Adafruit_IS31FL3731.cpp b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/Adafruit_IS31FL3731.cpp new file mode 100644 index 0000000..fb1a347 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/Adafruit_IS31FL3731.cpp @@ -0,0 +1,273 @@ +#include + +#ifndef _swap_int16_t +#define _swap_int16_t(a, b) \ + { \ + int16_t t = a; \ + a = b; \ + b = t; \ + } +#endif + +/**************************************************************************/ +/*! + @brief Constructor for breakout version + @param width Desired width of led display + @param height Desired height of led display +*/ +/**************************************************************************/ + +Adafruit_IS31FL3731::Adafruit_IS31FL3731(uint8_t width, uint8_t height) + : Adafruit_GFX(width, height) {} + +/**************************************************************************/ +/*! + @brief Constructor for FeatherWing version (15x7 LEDs) +*/ +/**************************************************************************/ +Adafruit_IS31FL3731_Wing::Adafruit_IS31FL3731_Wing(void) + : Adafruit_IS31FL3731(15, 7) {} + +/**************************************************************************/ +/*! + @brief Initialize hardware and clear display + @param addr The I2C address we expect to find the chip at + @param theWire The TwoWire I2C bus device to use, defaults to &Wire + @returns True on success, false if chip isnt found +*/ +/**************************************************************************/ +bool Adafruit_IS31FL3731::begin(uint8_t addr, TwoWire *theWire) { + if (_i2c_dev) { + delete _i2c_dev; + } + _i2c_dev = new Adafruit_I2CDevice(addr, theWire); + + if (!_i2c_dev->begin()) { + return false; + } + + _i2c_dev->setSpeed(400000); + _frame = 0; + + // shutdown + writeRegister8(ISSI_BANK_FUNCTIONREG, ISSI_REG_SHUTDOWN, 0x00); + + delay(10); + + // out of shutdown + writeRegister8(ISSI_BANK_FUNCTIONREG, ISSI_REG_SHUTDOWN, 0x01); + + // picture mode + writeRegister8(ISSI_BANK_FUNCTIONREG, ISSI_REG_CONFIG, + ISSI_REG_CONFIG_PICTUREMODE); + + displayFrame(_frame); + + // all LEDs on & 0 PWM + clear(); // set each led to 0 PWM + + for (uint8_t f = 0; f < 8; f++) { + for (uint8_t i = 0; i <= 0x11; i++) + writeRegister8(f, i, 0xff); // each 8 LEDs on + } + + audioSync(false); + + return true; +} + +/**************************************************************************/ +/*! + @brief Sets all LEDs on & 0 PWM for current frame. +*/ +/**************************************************************************/ +void Adafruit_IS31FL3731::clear(void) { + selectBank(_frame); + uint8_t erasebuf[25]; + + memset(erasebuf, 0, 25); + + for (uint8_t i = 0; i < 6; i++) { + erasebuf[0] = 0x24 + i * 24; + _i2c_dev->write(erasebuf, 25); + } +} + +/**************************************************************************/ +/*! + @brief Low level accesssor - sets a 8-bit PWM pixel value to a bank location + does not handle rotation, x/y or any rearrangements! + @param lednum The offset into the bank that corresponds to the LED + @param bank The bank/frame we will set the data in + @param pwm brightnes, from 0 (off) to 255 (max on) +*/ +/**************************************************************************/ +void Adafruit_IS31FL3731::setLEDPWM(uint8_t lednum, uint8_t pwm, uint8_t bank) { + if (lednum >= 144) + return; + writeRegister8(bank, 0x24 + lednum, pwm); +} + +/**************************************************************************/ +/*! + @brief Adafruit GFX low level accesssor - sets a 8-bit PWM pixel value + handles rotation and pixel arrangement, unlike setLEDPWM + @param x The x position, starting with 0 for left-most side + @param y The y position, starting with 0 for top-most side + @param color Despite being a 16-bit value, takes 0 (off) to 255 (max on) +*/ +/**************************************************************************/ +void Adafruit_IS31FL3731_Wing::drawPixel(int16_t x, int16_t y, uint16_t color) { + // check rotation, move pixel around if necessary + switch (getRotation()) { + case 1: + _swap_int16_t(x, y); + x = 15 - x - 1; + break; + case 2: + x = 15 - x - 1; + y = 7 - y - 1; + break; + case 3: + _swap_int16_t(x, y); + y = 9 - y - 1; + break; + } + + // charlie wing is smaller: + if ((x < 0) || (x >= 16) || (y < 0) || (y >= 7)) + return; + + if (x > 7) { + x = 15 - x; + y += 8; + } else { + y = 7 - y; + } + + _swap_int16_t(x, y); + + if (color > 255) + color = 255; // PWM 8bit max + + setLEDPWM(x + y * 16, color, _frame); + return; +} + +/**************************************************************************/ +/*! + @brief Adafruit GFX low level accesssor - sets a 8-bit PWM pixel value + handles rotation and pixel arrangement, unlike setLEDPWM + @param x The x position, starting with 0 for left-most side + @param y The y position, starting with 0 for top-most side + @param color Despite being a 16-bit value, takes 0 (off) to 255 (max on) +*/ +/**************************************************************************/ +void Adafruit_IS31FL3731::drawPixel(int16_t x, int16_t y, uint16_t color) { + // check rotation, move pixel around if necessary + switch (getRotation()) { + case 1: + _swap_int16_t(x, y); + x = 16 - x - 1; + break; + case 2: + x = 16 - x - 1; + y = 9 - y - 1; + break; + case 3: + _swap_int16_t(x, y); + y = 9 - y - 1; + break; + } + + if ((x < 0) || (x >= 16)) + return; + if ((y < 0) || (y >= 9)) + return; + if (color > 255) + color = 255; // PWM 8bit max + + setLEDPWM(x + y * 16, color, _frame); + return; +} + +/**************************************************************************/ +/*! + @brief Set's this object's frame tracker (does not talk to the chip) + @param frame Ranges from 0 - 7 for the 8 frames +*/ +/**************************************************************************/ +void Adafruit_IS31FL3731::setFrame(uint8_t frame) { _frame = frame; } + +/**************************************************************************/ +/*! + @brief Have the chip set the display to the contents of a frame + @param frame Ranges from 0 - 7 for the 8 frames +*/ +/**************************************************************************/ +void Adafruit_IS31FL3731::displayFrame(uint8_t frame) { + if (frame > 7) + frame = 0; + writeRegister8(ISSI_BANK_FUNCTIONREG, ISSI_REG_PICTUREFRAME, frame); +} + +/**************************************************************************/ +/*! + @brief Switch to a given bank in the chip memory for future reads + @param bank The IS31 bank to switch to + @returns False if I2C command failed to be ack'd +*/ +/**************************************************************************/ +bool Adafruit_IS31FL3731::selectBank(uint8_t bank) { + uint8_t cmd[2] = {ISSI_COMMANDREGISTER, bank}; + return _i2c_dev->write(cmd, 2); +} + +/**************************************************************************/ +/*! + @brief Enable the audio 'sync' for brightness pulsing (not really tested) + @param sync True to enable, False to disable +*/ +/**************************************************************************/ +void Adafruit_IS31FL3731::audioSync(bool sync) { + if (sync) { + writeRegister8(ISSI_BANK_FUNCTIONREG, ISSI_REG_AUDIOSYNC, 0x1); + } else { + writeRegister8(ISSI_BANK_FUNCTIONREG, ISSI_REG_AUDIOSYNC, 0x0); + } +} + +/**************************************************************************/ +/*! + @brief Write one byte to a register located in a given bank + @param bank The IS31 bank to write the register location + @param reg the offset into the bank to write + @param data The byte value + @returns False if I2C command failed to be ack'd +*/ +/**************************************************************************/ +bool Adafruit_IS31FL3731::writeRegister8(uint8_t bank, uint8_t reg, + uint8_t data) { + selectBank(bank); + + uint8_t cmd[2] = {reg, data}; + return _i2c_dev->write(cmd, 2); +} + +/**************************************************************************/ +/*! + @brief Read one byte from a register located in a given bank + @param bank The IS31 bank to read the register location + @param reg the offset into the bank to read + @return 1 byte value +*/ +/**************************************************************************/ +uint8_t Adafruit_IS31FL3731::readRegister8(uint8_t bank, uint8_t reg) { + uint8_t val = 0xFF; + + selectBank(bank); + + _i2c_dev->write_then_read(®, 1, &val, 1); + + return val; +} diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/Adafruit_IS31FL3731.h b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/Adafruit_IS31FL3731.h new file mode 100644 index 0000000..f530253 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/Adafruit_IS31FL3731.h @@ -0,0 +1,65 @@ +#ifndef _ADAFRUIT_IS31FL3731_H_ +#define _ADAFRUIT_IS31FL3731_H_ + +#include +#include +#include + +#define ISSI_ADDR_DEFAULT 0x74 + +#define ISSI_REG_CONFIG 0x00 +#define ISSI_REG_CONFIG_PICTUREMODE 0x00 +#define ISSI_REG_CONFIG_AUTOPLAYMODE 0x08 +#define ISSI_REG_CONFIG_AUDIOPLAYMODE 0x18 + +#define ISSI_CONF_PICTUREMODE 0x00 +#define ISSI_CONF_AUTOFRAMEMODE 0x04 +#define ISSI_CONF_AUDIOMODE 0x08 + +#define ISSI_REG_PICTUREFRAME 0x01 + +#define ISSI_REG_SHUTDOWN 0x0A +#define ISSI_REG_AUDIOSYNC 0x06 + +#define ISSI_COMMANDREGISTER 0xFD +#define ISSI_BANK_FUNCTIONREG 0x0B // helpfully called 'page nine' + +/**************************************************************************/ +/*! + @brief Constructor for generic IS31FL3731 breakout version +*/ +/**************************************************************************/ +class Adafruit_IS31FL3731 : public Adafruit_GFX { +public: + Adafruit_IS31FL3731(uint8_t x = 16, uint8_t y = 9); + bool begin(uint8_t addr = ISSI_ADDR_DEFAULT, TwoWire *theWire = &Wire); + void drawPixel(int16_t x, int16_t y, uint16_t color); + void clear(void); + + void setLEDPWM(uint8_t lednum, uint8_t pwm, uint8_t bank = 0); + void audioSync(bool sync); + void setFrame(uint8_t b); + void displayFrame(uint8_t frame); + +protected: + bool selectBank(uint8_t bank); + bool writeRegister8(uint8_t bank, uint8_t reg, uint8_t data); + uint8_t readRegister8(uint8_t bank, uint8_t reg); + uint8_t _frame; ///< The frame (of 8) we are currently addressing + +private: + Adafruit_I2CDevice *_i2c_dev = NULL; +}; + +/**************************************************************************/ +/*! + @brief Constructor for FeatherWing IS31FL3731 version +*/ +/**************************************************************************/ +class Adafruit_IS31FL3731_Wing : public Adafruit_IS31FL3731 { +public: + Adafruit_IS31FL3731_Wing(void); + void drawPixel(int16_t x, int16_t y, uint16_t color); +}; + +#endif diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/CODE_OF_CONDUCT.md b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..d885b36 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/CODE_OF_CONDUCT.md @@ -0,0 +1,137 @@ + +# Adafruit Community Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as +contributors and leaders pledge to making participation in our project and +our community a harassment-free experience for everyone, regardless of age, body +size, disability, ethnicity, gender identity and expression, level or type of +experience, education, socio-economic status, nationality, personal appearance, +race, religion, or sexual identity and orientation. + +## Our Standards + +We are committed to providing a friendly, safe and welcoming environment for +all. + +Examples of behavior that contributes to creating a positive environment +include: + +* Be kind and courteous to others +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Collaborating with other community members +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and sexual attention or advances +* The use of inappropriate images, including in a community member's avatar +* The use of inappropriate language, including in a community member's nickname +* Any spamming, flaming, baiting or other attention-stealing behavior +* Excessive or unwelcome helping; answering outside the scope of the question + asked +* Trolling, insulting/derogatory comments, and personal or political attacks +* Promoting or spreading disinformation, lies, or conspiracy theories against + a person, group, organisation, project, or community +* Public or private harassment +* Publishing others' private information, such as a physical or electronic + address, without explicit permission +* Other conduct which could reasonably be considered inappropriate + +The goal of the standards and moderation guidelines outlined here is to build +and maintain a respectful community. We ask that you don’t just aim to be +"technically unimpeachable", but rather try to be your best self. + +We value many things beyond technical expertise, including collaboration and +supporting others within our community. Providing a positive experience for +other community members can have a much more significant impact than simply +providing the correct answer. + +## Our Responsibilities + +Project leaders are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior. + +Project leaders have the right and responsibility to remove, edit, or +reject messages, comments, commits, code, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any community member for other behaviors that they deem +inappropriate, threatening, offensive, or harmful. + +## Moderation + +Instances of behaviors that violate the Adafruit Community Code of Conduct +may be reported by any member of the community. Community members are +encouraged to report these situations, including situations they witness +involving other community members. + +You may report in the following ways: + +In any situation, you may send an email to . + +On the Adafruit Discord, you may send an open message from any channel +to all Community Moderators by tagging @community moderators. You may +also send an open message from any channel, or a direct message to +@kattni#1507, @tannewt#4653, @danh#1614, @cater#2442, +@sommersoft#0222, @Mr. Certainly#0472 or @Andon#8175. + +Email and direct message reports will be kept confidential. + +In situations on Discord where the issue is particularly egregious, possibly +illegal, requires immediate action, or violates the Discord terms of service, +you should also report the message directly to Discord. + +These are the steps for upholding our community’s standards of conduct. + +1. Any member of the community may report any situation that violates the +Adafruit Community Code of Conduct. All reports will be reviewed and +investigated. +2. If the behavior is an egregious violation, the community member who +committed the violation may be banned immediately, without warning. +3. Otherwise, moderators will first respond to such behavior with a warning. +4. Moderators follow a soft "three strikes" policy - the community member may +be given another chance, if they are receptive to the warning and change their +behavior. +5. If the community member is unreceptive or unreasonable when warned by a +moderator, or the warning goes unheeded, they may be banned for a first or +second offense. Repeated offenses will result in the community member being +banned. + +## Scope + +This Code of Conduct and the enforcement policies listed above apply to all +Adafruit Community venues. This includes but is not limited to any community +spaces (both public and private), the entire Adafruit Discord server, and +Adafruit GitHub repositories. Examples of Adafruit Community spaces include +but are not limited to meet-ups, audio chats on the Adafruit Discord, or +interaction at a conference. + +This Code of Conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. As a community +member, you are representing our community, and are expected to behave +accordingly. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant], +version 1.4, available at +, +and the [Rust Code of Conduct](https://www.rust-lang.org/en-US/conduct.html). + +For other projects adopting the Adafruit Community Code of +Conduct, please contact the maintainers of those projects for enforcement. +If you wish to use this code of conduct for your own project, consider +explicitly mentioning your moderation policy or making a copy with your +own moderation policy so as to avoid confusion. + +[Contributor Covenant]: https://www.contributor-covenant.org diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/LICENSE b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/LICENSE new file mode 100644 index 0000000..3f50677 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2020 Ladyada for Adafruit Industries + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/README.md b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/README.md new file mode 100644 index 0000000..7f58723 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/README.md @@ -0,0 +1 @@ +# Adafruit IS31FL3731 [![Build Status](https://github.com/adafruit/Adafruit_IS31FL3731/workflows/Arduino%20Library%20CI/badge.svg)](https://github.com/adafruit/Adafruit_IS31FL3731/actions)[![Documentation](https://github.com/adafruit/ci-arduino/blob/master/assets/doxygen_badge.svg)](http://adafruit.github.io/Adafruit_IS31FL3731/html/index.html) diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/examples/gfxdemo/gfxdemo.ino b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/examples/gfxdemo/gfxdemo.ino new file mode 100644 index 0000000..a0fdcc2 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/examples/gfxdemo/gfxdemo.ino @@ -0,0 +1,107 @@ +#include +#include +#include + +// If you're using the full breakout... +Adafruit_IS31FL3731 matrix = Adafruit_IS31FL3731(); +// If you're using the FeatherWing version +//Adafruit_IS31FL3731_Wing matrix = Adafruit_IS31FL3731_Wing(); + +static const uint8_t PROGMEM + smile_bmp[] = + { 0b00111100, + 0b01000010, + 0b10100101, + 0b10000001, + 0b10100101, + 0b10011001, + 0b01000010, + 0b00111100 }, + neutral_bmp[] = + { 0b00111100, + 0b01000010, + 0b10100101, + 0b10000001, + 0b10111101, + 0b10000001, + 0b01000010, + 0b00111100 }, + frown_bmp[] = + { 0b00111100, + 0b01000010, + 0b10100101, + 0b10000001, + 0b10011001, + 0b10100101, + 0b01000010, + 0b00111100 }; + + +void setup() { + + Serial.begin(9600); + Serial.println("ISSI manual animation test"); + if (! matrix.begin()) { + Serial.println("IS31 not found"); + while (1); + } + Serial.println("IS31 Found!"); + +} + + +void loop() { + matrix.setRotation(0); + + matrix.clear(); + matrix.drawBitmap(3, 0, smile_bmp, 8, 8, 255); + delay(500); + + matrix.clear(); + matrix.drawBitmap(3, 0, neutral_bmp, 8, 8, 64); + delay(500); + + matrix.clear(); + matrix.drawBitmap(3, 0, frown_bmp, 8, 8, 32); + delay(500); + + matrix.clear(); + matrix.drawPixel(0, 0, 255); + delay(500); + + matrix.clear(); + matrix.drawLine(0,0, matrix.width()-1, matrix.height()-1, 127); + delay(500); + + matrix.clear(); + matrix.drawRect(0,0, matrix.width(), matrix.height(), 255); + matrix.fillRect(2,2, matrix.width()-4, matrix.height()-4, 20); + delay(500); + + matrix.clear(); + matrix.drawCircle(8,4, 4, 64); + matrix.drawCircle(8,4, 2, 32); + delay(500); + + + matrix.setTextSize(1); + matrix.setTextWrap(false); // we dont want text to wrap so it scrolls nicely + matrix.setTextColor(100); + for (int8_t x=0; x>=-32; x--) { + matrix.clear(); + matrix.setCursor(x,0); + matrix.print("Hello"); + delay(100); + } + + matrix.setTextSize(2); + matrix.setTextWrap(false); // we dont want text to wrap so it scrolls nicely + matrix.setTextColor(32); + matrix.setRotation(1); + for (int8_t x=7; x>=-64; x--) { + matrix.clear(); + matrix.setCursor(x,0); + matrix.print("World"); + delay(100); + } +} \ No newline at end of file diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/examples/manualanim/manualanim.ino b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/examples/manualanim/manualanim.ino new file mode 100644 index 0000000..2612930 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/examples/manualanim/manualanim.ino @@ -0,0 +1,43 @@ +#include +#include +#include + +// If you're using the full breakout... +Adafruit_IS31FL3731 ledmatrix = Adafruit_IS31FL3731(); +// If you're using the FeatherWing version +//Adafruit_IS31FL3731_Wing ledmatrix = Adafruit_IS31FL3731_Wing(); + +void setup() { + + Serial.begin(9600); + Serial.println("ISSI manual animation test"); + if (! ledmatrix.begin()) { + Serial.println("IS31 not found"); + while (1); + } + Serial.println("IS31 Found!"); + + ledmatrix.setTextWrap(false); + ledmatrix.setTextColor(64); // quarter brightness + ledmatrix.setTextSize(1); + + // fill all 8 frames with some text + for (uint8_t frame = 0; frame < 8; frame++) { + ledmatrix.setFrame(frame); + ledmatrix.clear(); + ledmatrix.setCursor(0,0); + ledmatrix.write('a'+frame*3); + ledmatrix.write('b'+frame*3); + ledmatrix.write('c'+frame*3); + } +} + +int x = 0; + +void loop() { + // display each frame for 250 milliseconds + for (uint8_t frame = 0; frame < 8; frame++) { + ledmatrix.displayFrame(frame); + delay(250); + } +} \ No newline at end of file diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/examples/swirldemo/swirldemo.ino b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/examples/swirldemo/swirldemo.ino new file mode 100644 index 0000000..7b17084 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/examples/swirldemo/swirldemo.ino @@ -0,0 +1,32 @@ +#include +#include +#include + +// If you're using the full breakout... +Adafruit_IS31FL3731 ledmatrix = Adafruit_IS31FL3731(); +// If you're using the FeatherWing version +//Adafruit_IS31FL3731_Wing ledmatrix = Adafruit_IS31FL3731_Wing(); + + +// The lookup table to make the brightness changes be more visible +uint8_t sweep[] = {1, 2, 3, 4, 6, 8, 10, 15, 20, 30, 40, 60, 60, 40, 30, 20, 15, 10, 8, 6, 4, 3, 2, 1}; + +void setup() { + Serial.begin(9600); + Serial.println("ISSI swirl test"); + + if (! ledmatrix.begin()) { + Serial.println("IS31 not found"); + while (1); + } + Serial.println("IS31 found!"); +} + +void loop() { + // animate over all the pixels, and set the brightness from the sweep table + for (uint8_t incr = 0; incr < 24; incr++) + for (uint8_t x = 0; x < 16; x++) + for (uint8_t y = 0; y < 9; y++) + ledmatrix.drawPixel(x, y, sweep[(x+y+incr)%24]); + delay(20); +} \ No newline at end of file diff --git a/hardware_test/pioold/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/library.properties b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/library.properties new file mode 100644 index 0000000..86f5f31 --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/Adafruit IS31FL3731 Library/library.properties @@ -0,0 +1,10 @@ +name=Adafruit IS31FL3731 Library +version=2.0.2 +author=Adafruit +maintainer=Adafruit +sentence=Arduino library for the Adafruit IS31FL3731 Charlieplex LED driver and CharliePlex FeatherWing. +paragraph=Arduino library for the Adafruit IS31FL3731 Charlieplex LED driver and CharliePlex FeatherWing. +category=Display +url=https://github.com/adafruit/Adafruit_IS31FL3731 +architectures=* +depends=Adafruit GFX Library, Adafruit BusIO diff --git a/hardware_test/pioold/libdeps/rp2040_swd/integrity.dat b/hardware_test/pioold/libdeps/rp2040_swd/integrity.dat new file mode 100644 index 0000000..98f8eeb --- /dev/null +++ b/hardware_test/pioold/libdeps/rp2040_swd/integrity.dat @@ -0,0 +1,2 @@ +adafruit/Adafruit IS31FL3731 Library +adafruit/Adafruit BusIO \ No newline at end of file diff --git a/hardware_test/platformio.ini b/hardware_test/platformio.ini new file mode 100644 index 0000000..68a0a7b --- /dev/null +++ b/hardware_test/platformio.ini @@ -0,0 +1,16 @@ +[env:rp2040_usb] +platform = https://github.com/maxgerhardt/platform-raspberrypi.git +board = pico +framework = arduino +board_build.core = earlephilhower +monitor_speed = 115200 + +upload_protocol = picotool + +lib_deps = + adafruit/Adafruit IS31FL3731 Library + adafruit/Adafruit BusIO + +build_flags = + -D PICO_SCAN_I2C_FOR_WIRE + -I src diff --git a/hardware_test/src/main.cpp b/hardware_test/src/main.cpp new file mode 100644 index 0000000..02d6887 --- /dev/null +++ b/hardware_test/src/main.cpp @@ -0,0 +1,329 @@ +// Secfest 2026 Badge — Hardware Test Sketch +// Tests: buttons, front LEDs, flashlight LED, IS31FL3731 9x9 matrix, I2C bus scan + +#include +#include +#include + +// --- Buttons (active LOW, internal pull-ups) --- +// Per schematic: BTN_A=GP8, B=GP9, UP=GP10, DWN=GP11, LFT=GP12, RGT=GP13 +#define BTN_A 8 +#define BTN_B 9 +#define BTN_UP 10 +#define BTN_DOWN 11 +#define BTN_LEFT 12 +#define BTN_RIGHT 13 + +const int BUTTONS[] = { BTN_A, BTN_B, BTN_UP, BTN_DOWN, BTN_LEFT, BTN_RIGHT }; +const char* BTN_NAMES[] = { "A", "B", "Up", "Down", "Left", "Right" }; +const int NUM_BUTTONS = 6; + +// --- LEDs --- +#define LED_FLASHLIGHT 15 // MOSFET gate, HIGH = on +#define LED_FRONT_1 23 +#define LED_FRONT_2 24 +#define LED_FRONT_3 25 +#define LED_FRONT_4 26 + +const int FRONT_LEDS[] = { LED_FRONT_1, LED_FRONT_2, LED_FRONT_3, LED_FRONT_4 }; +const int NUM_LEDS = 4; + +// Front LEDs are wired active-low (anode to 3V3, cathode to GPIO via series R). +// Drive LOW to light them; HIGH (or open-drain Hi-Z) to turn them off. +const int FRONT_LED_ON = LOW; +const int FRONT_LED_OFF = HIGH; + +// --- IS31FL3731 LED matrix --- +// Dedicated I2C bus per schematic: SDA_LED=GPIO4, SCL_LED=GPIO5, address 0x74. +// GP4/GP5 are I2C0 pins on the RP2040, so the matrix uses `Wire`. +#define LED_MATRIX_SDA 4 +#define LED_MATRIX_SCL 5 +#define IS31_ADDR 0x74 + +// --- Main I2C bus (user / SAO) --- +// Per schematic: SDA=GPIO2, SCL=GPIO3. +// GP2/GP3 are I2C1 pins on the RP2040, so the SAO bus uses `Wire1`. +#define MAIN_SDA 2 +#define MAIN_SCL 3 + +// Wire = LED matrix bus (GPIO4/5, I2C0) +// Wire1 = main / SAO bus (GPIO2/3, I2C1) +Adafruit_IS31FL3731 matrix(9, 16); + +// --- Matrix orientation / placement --- +// Logical coordinate system for the rest of the code: +// x = 0..8 left-to-right as you look at the badge front +// y = 0..8 top-to-bottom as you look at the badge front +// +// Empirically: only the vertical axis is flipped between schematic and +// physical (top<->bottom). Horizontal axis already matches. So the helper +// just mirrors Y. +// +// NOTE: the badge appears to be charlieplex-wired (9 pins → 72 LEDs). +// The 9 LEDs along the main diagonal — logical (0,0), (1,1), … (8,8) — +// are not physically driveable and will always stay dark, regardless of +// what we write to the chip. +static const int MATRIX_W = 9; +static const int MATRIX_H = 16; + +// Observed-dead pixels: the schematic shows 18 dedicated chip pins +// (CA1..9 + CB1..9) wired to 81 independent LEDs, so all positions should +// be addressable in principle. Empirically, the 9 LEDs on the main +// physical diagonal stay dark — root cause not yet identified (could be +// PCB defect, soldering issue on those 9 specific parts, or something +// subtle in the IS31FL3731's matrix scan). For now the helper just marks +// them so test patterns can skip drawing there until we know more. +static inline bool matrixPixelIsDead(int x, int y) { + return x == y; +} + +static inline void matrixSetPixel(int x, int y, uint8_t brightness) { + if (x < 0 || x >= MATRIX_W || y < 0 || y >= MATRIX_H) return; + matrix.drawPixel(x, (MATRIX_H - 1) - y, brightness); +} + +static void matrixFill(uint8_t brightness) { + for (int y = 0; y < MATRIX_H; y++) + for (int x = 0; x < MATRIX_W; x++) + matrixSetPixel(x, y, brightness); +} + +// ------------------------------------------------------------------ helpers -- + +void blinkFrontLeds(int times, int ms) { + for (int i = 0; i < times; i++) { + for (int p : FRONT_LEDS) digitalWrite(p, FRONT_LED_ON); + delay(ms); + for (int p : FRONT_LEDS) digitalWrite(p, FRONT_LED_OFF); + delay(ms); + } +} + +void scanI2C(TwoWire& bus, const char* label) { + Serial.print("\nI2C scan — "); + Serial.print(label); + Serial.println(":"); + int found = 0; + for (uint8_t addr = 1; addr < 127; addr++) { + bus.beginTransmission(addr); + if (bus.endTransmission() == 0) { + Serial.print(" Device at 0x"); + if (addr < 16) Serial.print('0'); + Serial.println(addr, HEX); + found++; + } + } + if (!found) Serial.println(" (none found)"); +} + +// ------------------------------------------------------------------- setup --- + +void setup() { + Serial.begin(115200); + delay(2000); // wait for USB CDC to enumerate + Serial.println("\n=== Secfest 2026 Badge Hardware Test ===\n"); + + // Buttons + for (int pin : BUTTONS) pinMode(pin, INPUT_PULLUP); + Serial.println("[Buttons] GP8-GP13 configured with pull-ups"); + + // LEDs + for (int pin : FRONT_LEDS) { pinMode(pin, OUTPUT); digitalWrite(pin, FRONT_LED_OFF); } + pinMode(LED_FLASHLIGHT, OUTPUT); + digitalWrite(LED_FLASHLIGHT, LOW); + Serial.println("[LEDs] GPIO 15, 23-26 configured"); + + // --- Front LED sweep (both polarities, diagnostic mode) --- + // We don't yet know whether the front LEDs are wired active-high + // (anode-to-GPIO) or active-low (anode-to-3V3). Drive each pin HIGH + // for ~600 ms then LOW for ~600 ms so whichever polarity is correct + // will produce visible light. The pin is set to INPUT (Hi-Z) between + // tests so a wrongly polarized previous LED can't keep current flowing. + Serial.println("\n[Test] Front LEDs — sweeping both polarities"); + for (int i = 0; i < NUM_LEDS; i++) { + int pin = FRONT_LEDS[i]; + Serial.print(" FRONT_LED_"); Serial.print(i + 1); + Serial.print(" on GP"); Serial.println(pin); + + pinMode(pin, OUTPUT); + Serial.println(" -> HIGH (lights active-high wiring)"); + digitalWrite(pin, HIGH); + delay(600); + Serial.println(" -> LOW (lights active-low wiring)"); + digitalWrite(pin, LOW); + delay(600); + + // Release the pin between LEDs so a wrong-polarity LED can't stay lit + pinMode(pin, INPUT); + delay(200); + pinMode(pin, OUTPUT); + digitalWrite(pin, FRONT_LED_OFF); + } + + // --- Flashlight LED --- + Serial.println("[Test] Flashlight LED — 3 pulses"); + for (int i = 0; i < 3; i++) { + digitalWrite(LED_FLASHLIGHT, HIGH); + delay(150); + digitalWrite(LED_FLASHLIGHT, LOW); + delay(150); + } + + // --- IS31FL3731 matrix (on Wire / I2C0, GP4 = SDA_LED, GP5 = SCL_LED) --- + Wire.setSDA(LED_MATRIX_SDA); + Wire.setSCL(LED_MATRIX_SCL); + Wire.begin(); + + Serial.println("\n[Test] IS31FL3731 LED matrix (9x9) on GP4/GP5"); + if (!matrix.begin(IS31_ADDR, &Wire)) { + Serial.println(" ERROR: IS31FL3731 not found at 0x74 — check wiring on GP4/GP5"); + } else { + Serial.println(" Found! Running orientation test..."); + + // 1. All-on, confirms every LED in the 9x9 lights at all. + Serial.println(" [1/5] All 81 LEDs on (dim)"); + matrix.clear(); + matrixFill(50); + delay(800); + matrix.clear(); + + // 2. Corners one at a time — visually confirms the orientation map. + // If the helper is correct, each label below should light the LED + // you'd expect to see in that corner of the badge front. + struct Corner { int x, y; const char* name; }; + const Corner corners[] = { + { 0, 0, "top-left (x=0, y=0)" }, + { MATRIX_W - 1, 0, "top-right (x=8, y=0)" }, + { 0, MATRIX_H - 1, "bottom-left (x=0, y=8)" }, + { MATRIX_W - 1, MATRIX_H - 1, "bottom-right (x=8, y=8)" }, + }; + Serial.println(" [2/5] Corner check"); + for (const Corner& c : corners) { + Serial.print(" "); + Serial.println(c.name); + matrix.clear(); + matrixSetPixel(c.x, c.y, 220); + delay(900); + } + matrix.clear(); + + // 3. Row sweep, top -> bottom. Should look like a horizontal bar + // moving downward. + Serial.println(" [3/5] Row sweep, top -> bottom"); + for (int y = 0; y < MATRIX_H; y++) { + matrix.clear(); + for (int x = 0; x < MATRIX_W; x++) matrixSetPixel(x, y, 180); + delay(200); + } + matrix.clear(); + + // 4. Column sweep, left -> right. Vertical bar moving rightward. + Serial.println(" [4/5] Column sweep, left -> right"); + for (int x = 0; x < MATRIX_W; x++) { + matrix.clear(); + for (int y = 0; y < MATRIX_H; y++) matrixSetPixel(x, y, 180); + delay(200); + } + matrix.clear(); + + // 5. Anti-diagonal chevron — every lit pixel is OFF the dead diagonal, + // so this pattern displays without any holes. It also points + // visually from top-right toward bottom-left, which is a strong + // asymmetric cue for orientation (mirror or rotation would be + // obvious immediately). + Serial.println(" [5/5] Chevron along anti-diagonal (no diagonal slash)"); + const uint8_t chevron[MATRIX_H][MATRIX_W] = { + {0,0,0,0,0,0,0,1,0}, + {0,0,0,0,0,0,1,0,1}, + {0,0,0,0,0,1,0,1,0}, + {0,0,0,0,1,0,1,0,0}, + {0,0,0,1,0,1,0,0,0}, + {0,0,1,0,1,0,0,0,0}, + {0,1,0,1,0,0,0,0,0}, + {1,0,1,0,0,0,0,0,0}, + {0,1,0,0,0,0,0,0,0}, + }; + for (int y = 0; y < MATRIX_H; y++) + for (int x = 0; x < MATRIX_W; x++) + //matrixSetPixel(x, y, chevron[y][x] ? 200 : 0); + matrixSetPixel(x,y,200); + delay(1500); + matrix.clear(); + + // 6. Final pass: solid fill, but only on driveable pixels. Demonstrates + // matrixPixelIsDead being used to skip the diagonal cleanly. + Serial.println(" [bonus] All driveable LEDs on (72/81)"); + for (int y = 0; y < MATRIX_H; y++) + for (int x = 0; x < MATRIX_W; x++) + if (!matrixPixelIsDead(x, y)) matrixSetPixel(x, y, 60); + delay(1500); + matrix.clear(); + + // 7. Chip register sweep — lights PWM registers 0..143 one at a time + // so you can physically map chip register -> badge LED position. + // Watch the badge AND the serial monitor; for each "reg = N" line + // note which physical LED lit (or "none" if it stayed dark). + // The 9 registers that never light tell us exactly what's wrong + // with the diagonal LEDs. ~400 ms per register, total ~60 s. + Serial.println(" [diag] Chip register sweep — write your observations"); + for (uint8_t reg = 0; reg < 144; reg++) { + // Only sweep the 81 registers our 9x9 layout actually uses; the + // other 63 (x=9..15 for each row) drive CB10..CB16, which aren't + // wired on this badge. + uint8_t cb = reg % 16; // x in chip space (CB index) + uint8_t ca = reg / 16; // y in chip space (CA index) + if (cb > 8 || ca > 8) continue; + + matrix.clear(); + matrix.setLEDPWM(reg, 220); + Serial.print(" reg "); + if (reg < 100) Serial.print(' '); + if (reg < 10) Serial.print(' '); + Serial.print(reg); + Serial.print(" (CA"); Serial.print(ca + 1); + Serial.print(", CB"); Serial.print(cb + 1); + Serial.println(")"); + delay(400); + } + matrix.clear(); + Serial.println(" [diag] Sweep done."); + + Serial.println(" Matrix test done."); + } + + // --- Main / SAO I2C bus (on Wire1 / I2C1, GP2 = SDA, GP3 = SCL) --- + Wire1.setSDA(MAIN_SDA); + Wire1.setSCL(MAIN_SCL); + Wire1.begin(); + + // --- I2C bus scan --- + scanI2C(Wire, "matrix bus (SDA=GP4, SCL=GP5)"); + scanI2C(Wire1, "main bus (SDA=GP2, SCL=GP3)"); + + // Signal setup complete + Serial.println("\n[Ready] Entering button-test loop. Press any button.\n"); + blinkFrontLeds(3, 100); +} + +// -------------------------------------------------------------------- loop --- + +bool prevState[NUM_BUTTONS] = {}; + +void loop() { + for (int i = 0; i < NUM_BUTTONS; i++) { + bool pressed = (digitalRead(BUTTONS[i]) == LOW); + if (pressed && !prevState[i]) { + Serial.print("[Button] "); + Serial.println(BTN_NAMES[i]); + // brief flash on button press — fires both polarities back-to-back + // so it's visible regardless of how the front LEDs are wired + for (int p : FRONT_LEDS) digitalWrite(p, HIGH); + delay(60); + for (int p : FRONT_LEDS) digitalWrite(p, LOW); + delay(60); + for (int p : FRONT_LEDS) digitalWrite(p, FRONT_LED_OFF); + } + prevState[i] = pressed; + } + delay(10); +}